@pantheon-systems/pds-toolkit-react 2.0.0-alpha.3 → 2.0.0-alpha.4

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 (288) hide show
  1. package/README.md +3 -3
  2. package/dist/components/ComparisonList/ComparisonList.d.ts +5 -1
  3. package/dist/components/SiteDashboardHeading/SiteDashboardHeading.d.ts +1 -1
  4. package/dist/components/Table/Table.d.ts +1 -1
  5. package/dist/components/badges/IndicatorBadge/IndicatorBadge.d.ts +4 -4
  6. package/dist/components/icons/Icon/Icon.d.ts +10 -730
  7. package/dist/components/icons/Icon/IconSearch.d.ts +1 -0
  8. package/dist/components/icons/Icon/custom-icons.d.ts +46 -0
  9. package/dist/components/icons/Icon/generated-icon-data.d.ts +1422 -0
  10. package/dist/components/icons/Icon/icon-registry.d.ts +34 -0
  11. package/dist/components/inputs/ComboboxMultiselect/ComboboxMultiselect.d.ts +27 -5
  12. package/dist/components/inputs/TagsInput/TagsInput.d.ts +100 -0
  13. package/dist/components/notifications/Banner/Banner.d.ts +26 -10
  14. package/dist/components/notifications/Toaster/Toast.d.ts +1 -1
  15. package/dist/components/panels/ExpansionPanel/ExpansionPanel.d.ts +5 -1
  16. package/dist/css/component-css/pds-banner.css +1 -1
  17. package/dist/css/component-css/pds-breadcrumb.css +1 -1
  18. package/dist/css/component-css/pds-button-link.css +1 -1
  19. package/dist/css/component-css/pds-button-nav.css +1 -1
  20. package/dist/css/component-css/pds-button.css +8 -2
  21. package/dist/css/component-css/pds-callout.css +1 -1
  22. package/dist/css/component-css/pds-card-select-group.css +1 -1
  23. package/dist/css/component-css/pds-combobox-multiselect.css +2 -2
  24. package/dist/css/component-css/pds-compact-empty-state.css +1 -1
  25. package/dist/css/component-css/pds-comparison-list.css +1 -1
  26. package/dist/css/component-css/pds-cta-link.css +1 -1
  27. package/dist/css/component-css/pds-dashboard-nav.css +2 -2
  28. package/dist/css/component-css/pds-datepicker.css +1 -1
  29. package/dist/css/component-css/pds-expansion-panel.css +1 -1
  30. package/dist/css/component-css/pds-file-upload.css +1 -1
  31. package/dist/css/component-css/pds-flow-steps.css +1 -1
  32. package/dist/css/component-css/pds-footer-links.css +1 -1
  33. package/dist/css/component-css/pds-horizontal-empty-state.css +1 -1
  34. package/dist/css/component-css/pds-icon-story-only.css +1 -1
  35. package/dist/css/component-css/pds-icon.css +1 -0
  36. package/dist/css/component-css/pds-index.css +23 -17
  37. package/dist/css/component-css/pds-indicator-badge.css +1 -1
  38. package/dist/css/component-css/pds-inline-message.css +1 -1
  39. package/dist/css/component-css/pds-menu-button.css +1 -1
  40. package/dist/css/component-css/pds-pagination.css +1 -1
  41. package/dist/css/component-css/pds-pantheon-logo.css +1 -1
  42. package/dist/css/component-css/pds-pricing-card.css +1 -1
  43. package/dist/css/component-css/pds-progress-bar.css +1 -1
  44. package/dist/css/component-css/pds-pull-quote.css +1 -1
  45. package/dist/css/component-css/pds-refresh-checker.css +1 -1
  46. package/dist/css/component-css/pds-section-message.css +1 -1
  47. package/dist/css/component-css/pds-segmented-button.css +1 -1
  48. package/dist/css/component-css/pds-select.css +1 -1
  49. package/dist/css/component-css/pds-side-nav-compact.css +1 -1
  50. package/dist/css/component-css/pds-side-nav-global.css +2 -2
  51. package/dist/css/component-css/pds-side-nav.css +1 -1
  52. package/dist/css/component-css/pds-site-footer.css +1 -1
  53. package/dist/css/component-css/pds-spinner.css +1 -1
  54. package/dist/css/component-css/pds-sso-button.css +1 -1
  55. package/dist/css/component-css/pds-status-indicator.css +1 -1
  56. package/dist/css/component-css/pds-stepper.css +1 -1
  57. package/dist/css/component-css/pds-tab-menu.css +1 -1
  58. package/dist/css/component-css/pds-table-of-contents.css +1 -1
  59. package/dist/css/component-css/pds-tabs.css +1 -1
  60. package/dist/css/component-css/pds-tag.css +1 -1
  61. package/dist/css/component-css/pds-tags-input.css +1 -0
  62. package/dist/css/component-css/pds-toaster.css +1 -1
  63. package/dist/css/component-css/pds-tooltip.css +1 -1
  64. package/dist/css/component-css/pds-vertical-empty-state.css +1 -1
  65. package/dist/css/component-css/pds-workspace-selector.css +1 -1
  66. package/dist/css/design-tokens/fonts.css +1 -1
  67. package/dist/css/design-tokens/variables.dark.css +35 -6
  68. package/dist/css/design-tokens/variables.light.css +32 -3
  69. package/dist/css/design-tokens/variables.typography.css +6 -5
  70. package/dist/css/layout-css/pds-app-layout.css +2 -0
  71. package/dist/css/layout-css/pds-dashboard-global.css +8 -0
  72. package/dist/css/layout-css/pds-dashboard-inner.css +1 -0
  73. package/dist/css/layout-css/pds-docs-layout.css +1 -0
  74. package/dist/css/layout-css/pds-flex-container.css +1 -0
  75. package/dist/css/layout-css/pds-index.css +9 -0
  76. package/dist/css/layout-css/pds-stepper-layout.css +1 -0
  77. package/dist/css/layout-css/pds-three-item-layout.css +1 -0
  78. package/dist/css/layout-css/pds-two-item-layout.css +1 -0
  79. package/dist/css/pds-components.css +23 -17
  80. package/dist/css/pds-core.css +2 -2
  81. package/dist/index.css +1 -1
  82. package/dist/index.d.ts +5 -0
  83. package/dist/index.js +3108 -1560
  84. package/dist/index.js.map +1 -1
  85. package/dist/index.source.d.ts +1 -0
  86. package/dist/libs/types/custom-types.d.ts +1 -1
  87. package/dist/svg/angleDown.svg +3 -0
  88. package/dist/svg/angleLeft.svg +3 -0
  89. package/dist/svg/angleRight.svg +3 -0
  90. package/dist/svg/angleUp.svg +3 -0
  91. package/dist/svg/anglesLeft.svg +3 -0
  92. package/dist/svg/anglesRight.svg +3 -0
  93. package/dist/svg/arrowDownToLine.svg +3 -0
  94. package/dist/svg/arrowLeft.svg +3 -0
  95. package/dist/svg/arrowRight.svg +3 -0
  96. package/dist/svg/arrowsRetweet.svg +3 -0
  97. package/dist/svg/asterisk.svg +3 -0
  98. package/dist/svg/banBug.svg +3 -0
  99. package/dist/svg/bars.svg +3 -0
  100. package/dist/svg/barsFilter.svg +3 -0
  101. package/dist/svg/bell.svg +3 -0
  102. package/dist/svg/billboard.svg +3 -0
  103. package/dist/svg/bitbucket.svg +3 -0
  104. package/dist/svg/bluesky.svg +3 -0
  105. package/dist/svg/bolt.svg +3 -0
  106. package/dist/svg/boltPantheon.svg +3 -0
  107. package/dist/svg/boltSolid.svg +3 -0
  108. package/dist/svg/book.svg +3 -0
  109. package/dist/svg/books.svg +3 -0
  110. package/dist/svg/bracketRight.svg +3 -0
  111. package/dist/svg/bracketsSquare.svg +3 -0
  112. package/dist/svg/brainCircuit.svg +3 -0
  113. package/dist/svg/broomWide.svg +3 -0
  114. package/dist/svg/building.svg +3 -0
  115. package/dist/svg/buildings.svg +3 -0
  116. package/dist/svg/bullhorn.svg +3 -0
  117. package/dist/svg/calendarDays.svg +3 -0
  118. package/dist/svg/caretDown.svg +3 -0
  119. package/dist/svg/caretLeft.svg +3 -0
  120. package/dist/svg/caretRight.svg +3 -0
  121. package/dist/svg/caretUp.svg +3 -0
  122. package/dist/svg/ccAmex.svg +3 -0
  123. package/dist/svg/ccApplePay.svg +3 -0
  124. package/dist/svg/ccDiscover.svg +3 -0
  125. package/dist/svg/ccGeneric.svg +3 -0
  126. package/dist/svg/ccMC.svg +3 -0
  127. package/dist/svg/ccPaypal.svg +3 -0
  128. package/dist/svg/ccVisa.svg +3 -0
  129. package/dist/svg/chartLine.svg +3 -0
  130. package/dist/svg/chartNetwork.svg +3 -0
  131. package/dist/svg/chartSimple.svg +3 -0
  132. package/dist/svg/check.svg +3 -0
  133. package/dist/svg/circle.svg +3 -0
  134. package/dist/svg/circleCheck.svg +3 -0
  135. package/dist/svg/circleExclamation.svg +3 -0
  136. package/dist/svg/circleInfo.svg +3 -0
  137. package/dist/svg/circleMinus.svg +3 -0
  138. package/dist/svg/circleNotch.svg +3 -0
  139. package/dist/svg/circlePlus.svg +3 -0
  140. package/dist/svg/circleQuestion.svg +3 -0
  141. package/dist/svg/circleUser.svg +3 -0
  142. package/dist/svg/circleXmark.svg +3 -0
  143. package/dist/svg/cloud.svg +3 -0
  144. package/dist/svg/cloudArrowDown.svg +3 -0
  145. package/dist/svg/cloudArrowUp.svg +3 -0
  146. package/dist/svg/cloudPlus.svg +3 -0
  147. package/dist/svg/code.svg +3 -0
  148. package/dist/svg/codeBranch.svg +3 -0
  149. package/dist/svg/codeMerge.svg +3 -0
  150. package/dist/svg/command.svg +3 -0
  151. package/dist/svg/comment.svg +3 -0
  152. package/dist/svg/copy.svg +3 -0
  153. package/dist/svg/desktop.svg +3 -0
  154. package/dist/svg/diamondExclamation.svg +3 -0
  155. package/dist/svg/diamonds4.svg +3 -0
  156. package/dist/svg/discourse.svg +3 -0
  157. package/dist/svg/display.svg +3 -0
  158. package/dist/svg/dollarSign.svg +3 -0
  159. package/dist/svg/download.svg +3 -0
  160. package/dist/svg/drupal.svg +3 -0
  161. package/dist/svg/ellipsis.svg +3 -0
  162. package/dist/svg/ellipsisVertical.svg +3 -0
  163. package/dist/svg/emptySet.svg +3 -0
  164. package/dist/svg/envelope.svg +3 -0
  165. package/dist/svg/envelopeOpen.svg +3 -0
  166. package/dist/svg/exclamation.svg +3 -0
  167. package/dist/svg/expand.svg +3 -0
  168. package/dist/svg/expandFromCenter.svg +3 -0
  169. package/dist/svg/externalLink.svg +3 -0
  170. package/dist/svg/eye.svg +3 -0
  171. package/dist/svg/eyeSlash.svg +3 -0
  172. package/dist/svg/facebook.svg +3 -0
  173. package/dist/svg/file.svg +3 -0
  174. package/dist/svg/fileCSV.svg +3 -0
  175. package/dist/svg/fileCheck.svg +3 -0
  176. package/dist/svg/fileContract.svg +3 -0
  177. package/dist/svg/fileDiff.svg +3 -0
  178. package/dist/svg/fileExport.svg +3 -0
  179. package/dist/svg/fileImport.svg +3 -0
  180. package/dist/svg/fileLines.svg +3 -0
  181. package/dist/svg/filePDF.svg +3 -0
  182. package/dist/svg/fileZip.svg +3 -0
  183. package/dist/svg/folder.svg +3 -0
  184. package/dist/svg/folderTree.svg +3 -0
  185. package/dist/svg/gear.svg +3 -0
  186. package/dist/svg/gem.svg +3 -0
  187. package/dist/svg/github.svg +3 -0
  188. package/dist/svg/gitlab.svg +3 -0
  189. package/dist/svg/globe.svg +3 -0
  190. package/dist/svg/graduationCap.svg +3 -0
  191. package/dist/svg/grid.svg +3 -0
  192. package/dist/svg/gripDots.svg +3 -0
  193. package/dist/svg/gripDotsVertical.svg +3 -0
  194. package/dist/svg/heart.svg +3 -0
  195. package/dist/svg/heartSolid.svg +3 -0
  196. package/dist/svg/house.svg +3 -0
  197. package/dist/svg/idCard.svg +3 -0
  198. package/dist/svg/image.svg +3 -0
  199. package/dist/svg/inputText.svg +3 -0
  200. package/dist/svg/instagram.svg +3 -0
  201. package/dist/svg/keySkeleton.svg +3 -0
  202. package/dist/svg/laptop.svg +3 -0
  203. package/dist/svg/laptopCode.svg +3 -0
  204. package/dist/svg/leaf.svg +3 -0
  205. package/dist/svg/lifeRing.svg +3 -0
  206. package/dist/svg/linkSimple.svg +3 -0
  207. package/dist/svg/linkSimpleSlash.svg +3 -0
  208. package/dist/svg/linkedin.svg +3 -0
  209. package/dist/svg/listCheck.svg +3 -0
  210. package/dist/svg/lock.svg +3 -0
  211. package/dist/svg/lockOpen.svg +3 -0
  212. package/dist/svg/magnifyingGlass.svg +3 -0
  213. package/dist/svg/medal.svg +3 -0
  214. package/dist/svg/memo.svg +3 -0
  215. package/dist/svg/messages.svg +3 -0
  216. package/dist/svg/minus.svg +3 -0
  217. package/dist/svg/moon.svg +3 -0
  218. package/dist/svg/nextJs.svg +3 -0
  219. package/dist/svg/paperPlane.svg +3 -0
  220. package/dist/svg/paperclip.svg +3 -0
  221. package/dist/svg/pen.svg +3 -0
  222. package/dist/svg/penField.svg +3 -0
  223. package/dist/svg/phone.svg +3 -0
  224. package/dist/svg/play.svg +3 -0
  225. package/dist/svg/plus.svg +3 -0
  226. package/dist/svg/question.svg +3 -0
  227. package/dist/svg/quotesLeft.svg +3 -0
  228. package/dist/svg/quotesRight.svg +3 -0
  229. package/dist/svg/rectangleList.svg +3 -0
  230. package/dist/svg/reply.svg +3 -0
  231. package/dist/svg/robot.svg +3 -0
  232. package/dist/svg/rocketLaunch.svg +3 -0
  233. package/dist/svg/rotate.svg +3 -0
  234. package/dist/svg/rotateClock.svg +3 -0
  235. package/dist/svg/rotateLeft.svg +3 -0
  236. package/dist/svg/rotateRight.svg +3 -0
  237. package/dist/svg/rss.svg +3 -0
  238. package/dist/svg/save.svg +3 -0
  239. package/dist/svg/server.svg +3 -0
  240. package/dist/svg/shareNodes.svg +3 -0
  241. package/dist/svg/shield.svg +3 -0
  242. package/dist/svg/shieldQuartered.svg +3 -0
  243. package/dist/svg/shovel.svg +3 -0
  244. package/dist/svg/siren.svg +3 -0
  245. package/dist/svg/sirenOn.svg +3 -0
  246. package/dist/svg/sitemap.svg +3 -0
  247. package/dist/svg/slack.svg +3 -0
  248. package/dist/svg/slashForward.svg +3 -0
  249. package/dist/svg/slidersSimple.svg +3 -0
  250. package/dist/svg/snowflake.svg +3 -0
  251. package/dist/svg/sparkles.svg +3 -0
  252. package/dist/svg/squareCheck.svg +3 -0
  253. package/dist/svg/squareCode.svg +3 -0
  254. package/dist/svg/squareMinus.svg +3 -0
  255. package/dist/svg/squarePen.svg +3 -0
  256. package/dist/svg/squareQuestion.svg +3 -0
  257. package/dist/svg/squareTerminal.svg +3 -0
  258. package/dist/svg/star.svg +3 -0
  259. package/dist/svg/starSolid.svg +3 -0
  260. package/dist/svg/sun.svg +3 -0
  261. package/dist/svg/sunBright.svg +3 -0
  262. package/dist/svg/table.svg +3 -0
  263. package/dist/svg/tableRows.svg +3 -0
  264. package/dist/svg/terminal.svg +3 -0
  265. package/dist/svg/text.svg +3 -0
  266. package/dist/svg/threads.svg +3 -0
  267. package/dist/svg/thumbsDown.svg +3 -0
  268. package/dist/svg/thumbsUp.svg +3 -0
  269. package/dist/svg/trash.svg +3 -0
  270. package/dist/svg/triangleExclamation.svg +3 -0
  271. package/dist/svg/twitter.svg +3 -0
  272. package/dist/svg/upload.svg +3 -0
  273. package/dist/svg/user.svg +3 -0
  274. package/dist/svg/userAstronaut.svg +3 -0
  275. package/dist/svg/userGear.svg +3 -0
  276. package/dist/svg/userPlus.svg +3 -0
  277. package/dist/svg/users.svg +3 -0
  278. package/dist/svg/video.svg +3 -0
  279. package/dist/svg/wavePulse.svg +3 -0
  280. package/dist/svg/windowRestore.svg +3 -0
  281. package/dist/svg/wordpress.svg +3 -0
  282. package/dist/svg/wreathLaurel.svg +3 -0
  283. package/dist/svg/wrench.svg +3 -0
  284. package/dist/svg/xTwitter.svg +3 -0
  285. package/dist/svg/xmark.svg +3 -0
  286. package/dist/svg/xmarkLarge.svg +3 -0
  287. package/dist/svg/youtube.svg +3 -0
  288. package/package.json +31 -19
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/libs/components/utils.js","../src/components/badges/Tally/Tally.tsx","../src/libs/components/utility-components.tsx","../node_modules/@pantheon-systems/pds-design-tokens/build/js/variables.global.js","../src/components/icons/Icon/Icon.tsx","../node_modules/@pantheon-systems/pds-design-tokens/build/js/variables.typography.js","../src/utilities/context-providers/OverlayContext/OverlayContext.tsx","../src/utilities/hooks/useKeyPress/useKeyPress.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/inputs/input-utilities.tsx","../src/components/loading-indicators/Spinner/Spinner.tsx","../src/components/buttons/Button/Button.tsx","../src/components/buttons/ButtonLink/ButtonLink.tsx","../src/utilities/hooks/useClipboard/useClipboard.ts","../src/components/buttons/IconButton/IconButton.tsx","../src/components/buttons/ClipboardButton/ClipboardButton.tsx","../src/components/buttons/CloseButton/CloseButton.tsx","../src/libs/types/custom-types.tsx","../src/utilities/hooks/useWindowWidth/useWindowWidth.ts","../src/utilities/context-providers/ResponsiveContext/ResponsiveContext.tsx","../src/components/buttons/MenuButton/MenuButton.tsx","../src/components/buttons/SegmentedButton/SegmentedButton.tsx","../src/components/buttons/SplitButton/SplitButton.tsx","../src/components/icons/PlatformIcon/PlatformIcon.tsx","../src/components/buttons/SSOButton/SSOButton.tsx","../src/components/buttons/UtilityButton/UtilityButton.tsx","../src/components/navigation/navigation-utilities.tsx","../src/components/navigation/ButtonNav/ButtonNav.tsx","../src/components/notifications/Toaster/Toast.tsx","../src/components/notifications/Toaster/useToast.tsx","../src/components/panels/PanelList/PanelRow.tsx","../src/components/Picture/Picture.tsx","../src/components/VideoEmbed/VideoEmbed.tsx","../src/components/badges/StatusBadge/StatusBadge.tsx","../src/libs/components/SiteOptionDisplay/SiteOptionDisplay.tsx","../src/layouts/Container/Container.tsx","../src/layouts/DocsLayout/DocsLayout.tsx","../src/layouts/FlexContainer/FlexContainer.tsx","../src/layouts/GlobalWrapper/GlobalWrapper.tsx","../src/layouts/ThreeItemLayout/ThreeItemLayout.tsx","../src/layouts/TwoItemLayout/TwoItemLayout.tsx","../src/utilities/hooks/useBreakpoint/useBreakpoint.ts","../src/utilities/hooks/useMediaQuery/useMediaQuery.ts"],"sourcesContent":["import { Children, isValidElement } from 'react';\n\n// Function to generate a random ID.\nexport const createRandomID = () => {\n\treturn Math.random().toString(32).substring(2, 13);\n};\n\n// Function to collect all descendants of an element.\nexport const getDescendants = (node, collect) => {\n\t// Check for children first.\n\tif (!node?.childNodes) {\n\t\treturn;\n\t}\n\n\t// Collect all children.\n\tlet i;\n\tcollect = collect || [];\n\tfor (i = 0; i < node.childNodes.length; i++) {\n\t\tcollect.push(node.childNodes[i]);\n\t\tgetDescendants(node.childNodes[i], collect);\n\t}\n\treturn collect;\n};\n\n// Function to initiate slots from a children prop.\nexport const initiateSlots = (children) => {\n\tconst slots = {};\n\tconst unslotted = [];\n\n\tChildren.forEach(children, (child) => {\n\t\tif (isValidElement(child)) {\n\t\t\tconst slotName = child.props.slot;\n\t\t\tif (slotName) {\n\t\t\t\tif (slots[slotName]) {\n\t\t\t\t\tslots[slotName].push(child);\n\t\t\t\t} else {\n\t\t\t\t\tslots[slotName] = [child];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tunslotted.push(child);\n\t\t\t}\n\t\t} else {\n\t\t\t// Handle non-React elements (strings, numbers, etc.)\n\t\t\tunslotted.push(child);\n\t\t}\n\t});\n\n\t// Add unslotted children to the slots object with a special key\n\tif (unslotted.length > 0) {\n\t\tslots['__unslotted'] = unslotted;\n\t}\n\n\treturn slots;\n};\n\n// Function to merge css classes\nexport const mergeClasses = (styles) =>\n\tstyles.join(' ').trim().replace(/\\s+/g, ' ');\n\n/**\n * Function to validate if image src is valid, restricts base64 to data image types and excludes svg + xml\n */\nexport const isValidImageSrc = (uri) => {\n\tif (!uri) return false;\n\n\tif (!uri.startsWith('data:')) return true;\n\n\tconst regex =\n\t\t/^data:image\\/(png|jpeg|jpg|gif|bmp|webp);base64,[A-Za-z0-9+/]+=*$/;\n\treturn regex.test(uri);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './tally.css';\n\ntype TypeLabelsType = {\n\tcritical?: string;\n\tinfo?: string;\n\tneutral?: string;\n\tsuccess?: string;\n\twarning?: string;\n};\n\n/**\n * Prop types for Tally\n */\nexport interface TallyProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Label text\n\t */\n\tlabel: string | number;\n\t/**\n\t * Size of the tally\n\t */\n\tsize?: 'xs' | 's' | 'm';\n\t/**\n\t * Notification type\n\t */\n\ttype: 'neutral' | 'critical' | 'warning' | 'info' | 'success';\n\t/**\n\t * Message type labels.\n\t */\n\ttypeLabels?: TypeLabelsType;\n}\n\n/**\n * Tally UI component\n */\nexport const Tally = ({\n\tclassName,\n\tlabel,\n\tsize = 's',\n\ttype = 'neutral',\n\ttypeLabels = {\n\t\tinfo: 'Information',\n\t\tsuccess: 'Success',\n\t\twarning: 'Warning',\n\t\tcritical: 'Critical',\n\t\tneutral: '',\n\t},\n\t...props\n}: TallyProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-tally';\n\tconst colorClass = `${baseClass}--${type}`;\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Label by type\n\tconst messageTypeLabel = `${typeLabels[type]}: `;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcolorClass,\n\t\t\t\tsizeClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__label`}>\n\t\t\t\t<span className='visually-hidden'>{messageTypeLabel}</span>\n\t\t\t\t{label}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nTally.displayName = 'Tally';\n","import { Children, createElement, isValidElement, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { HeadingLevel } from '@libs/types/custom-types';\n\n// Heading level utility component.\n// This is used for elements that need to render as a heading (h2, h3, h4) or span.\ninterface HxProps {\n\tbaseClass?: string;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tid?: string;\n\tlevel: HeadingLevel;\n}\n\nexport const Hx = ({\n\tbaseClass,\n\tchildren,\n\tclassName,\n\tid,\n\tlevel,\n\t...props\n}: HxProps) => {\n\t// Set up classes.\n\tconst headingClass = baseClass ? `${baseClass}__heading` : null;\n\n\t// Preprocess heading element type.\n\tconst HxElement = level;\n\n\t// Render the appropriate heading level\n\treturn createElement(\n\t\tHxElement,\n\t\t{ className: mergeClasses([headingClass, className]), id, ...props },\n\t\tchildren,\n\t);\n};\n\n// Extract text if it's a ReactNode, convert it if it's a number\nexport const extractText = (node: ReactNode): string => {\n\tif (typeof node === 'string' || typeof node === 'number') {\n\t\treturn String(node);\n\t}\n\tif (isValidElement(node)) {\n\t\tconst props = node.props as { children?: ReactNode };\n\t\treturn Children.toArray(props.children).map(extractText).join('');\n\t}\n\treturn '';\n};\n","/**\n * Do not edit directly, this file was auto-generated.\n */\n\nexport const ANIMATION_DURATION_DEFAULT = \"200ms\";\nexport const ANIMATION_DURATION_REVEAL = \"300ms\";\nexport const ANIMATION_TIMING_FUNCTION_DEFAULT = \"cubic-bezier(.2, 0, 0, 1)\";\nexport const ANIMATION_TRANSITION_BUTTON = \"background-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, border-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, box-shadow 200ms cubic-bezier(.2, 0, 0, 1) 0ms, transform 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_DEFAULT = \"all 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_FOCUS = \"outline 200ms cubic-bezier(.2, 0, 0, 1) 0ms, outline-offset 200ms cubic-bezier(.2, 0, 0, 1) 0ms, box-shadow 200ms cubic-bezier(.2, 0, 0, 1) 0ms, border-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_INPUT = \"border-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, background-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, box-shadow 200ms cubic-bezier(.2, 0, 0, 1) 0ms, outline 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_LINK = \"color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, text-decoration-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_REVEAL = \"height 300ms cubic-bezier(.2, 0, 0, 1) 0ms, opacity 300ms cubic-bezier(.2, 0, 0, 1) 0ms, padding 300ms cubic-bezier(.2, 0, 0, 1) 0ms, width 300ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_ROTATION = \"transform 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const BORDER_WIDTH_STEPPER = \"3px\";\nexport const BORDER_WIDTH_DEFAULT = \"1px\";\nexport const BORDER_WIDTH_THICKER = \"2px\";\nexport const BORDER_WIDTH_OUTLINE = \"1px\";\nexport const BORDER_RADIUS_DEFAULT = \"0.1875rem\";\nexport const BORDER_RADIUS_BAR = \"3.5rem\";\nexport const BORDER_RADIUS_BUTTON = \"3.5rem\";\nexport const BORDER_RADIUS_CONTAINER = \"0.375rem\";\nexport const BORDER_RADIUS_INPUT = \"0.25rem\";\nexport const BP_S = 0;\nexport const BP_M = 768;\nexport const BP_L = 1280;\nexport const BP_XL = 1440;\nexport const CONTAINER_MODAL_WIDTH_S = \"25rem\";\nexport const CONTAINER_MODAL_WIDTH_M = \"37.5rem\";\nexport const CONTAINER_MODAL_WIDTH_L = \"47.5rem\";\nexport const CONTAINER_MODAL_WIDTH_XL = \"67.5rem\";\nexport const CONTAINER_TOOLTIP_MAX_WIDTH = \"12.5rem\";\nexport const CONTAINER_DASHBOARD_NAVBAR_MAX_WIDTH = \"1440px\";\nexport const CONTAINER_PADDING_BASE = \"1.5rem\";\nexport const CONTAINER_PADDING_NARROW_BP_M = \"12%\";\nexport const CONTAINER_PADDING_NARROW_BP_L = \"20%\";\nexport const CONTAINER_PADDING_STANDARD_BP_M = \"6%\";\nexport const CONTAINER_PADDING_STANDARD_BP_L = \"8%\";\nexport const CONTAINER_PADDING_WIDE_BP_M = \"5%\";\nexport const CONTAINER_PADDING_WIDE_BP_L = \"4%\";\nexport const CONTAINER_MAX_WIDTH_NARROW = \"1024px\";\nexport const CONTAINER_MAX_WIDTH_STANDARD = \"1200px\";\nexport const CONTAINER_MAX_WIDTH_WIDE = \"1440px\";\nexport const CONTAINER_MAX_WIDTH_X_WIDE = \"1600px\";\nexport const GRID_COLUMNS_4_GAP = \"1.25rem\";\nexport const GRID_COLUMNS_12_BP_M_GAP_NARROW = \"1.25rem\";\nexport const GRID_COLUMNS_12_BP_M_GAP_STANDARD = \"1.5rem\";\nexport const GRID_COLUMNS_12_BP_M_GAP_WIDE = \"2rem\";\nexport const GRID_COLUMNS_12_BP_L_GAP_NARROW = \"1.5rem\";\nexport const GRID_COLUMNS_12_BP_L_GAP_STANDARD = \"2rem\";\nexport const GRID_COLUMNS_12_BP_L_GAP_WIDE = \"2.5rem\";\nexport const SPACING_DASHBOARD_NAV_ITEM_HEIGHT = \"2.25rem\";\nexport const SPACING_DASHBOARD_NAV_ITEM_PADDING = \"0.625rem\";\nexport const SPACING_STEPPER_INDICATOR_SIZE = \"1.25rem\";\nexport const SPACING_STEPPER_STEP_CONTENT_WIDTH = \"7rem\";\nexport const SPACING_9XL = \"10rem\";\nexport const SPACING_8XL = \"8rem\";\nexport const SPACING_7XL = \"6rem\";\nexport const SPACING_6XL = \"5rem\";\nexport const SPACING_5XL = \"4rem\";\nexport const SPACING_4XL = \"3rem\";\nexport const SPACING_3XL = \"2.5rem\";\nexport const SPACING_2XL = \"2rem\";\nexport const SPACING_XL = \"1.5rem\";\nexport const SPACING_L = \"1.25rem\";\nexport const SPACING_M = \"1rem\";\nexport const SPACING_S = \"0.75rem\";\nexport const SPACING_XS = \"0.625rem\";\nexport const SPACING_2XS = \"0.5rem\";\nexport const SPACING_3XS = \"0.375rem\";\nexport const SPACING_4XS = \"0.25rem\";\nexport const SPACING_5XS = \"0.125rem\";\nexport const SPACING_BUTTON_HEIGHT_XS = \"1.5rem\";\nexport const SPACING_BUTTON_HEIGHT_S = \"2rem\";\nexport const SPACING_BUTTON_HEIGHT_M = \"2.5rem\";\nexport const SPACING_BUTTON_HEIGHT_L = \"3rem\";\nexport const SPACING_BUTTON_HEIGHT_XL = \"3.5rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_XS = \"0.75rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_S = \"1rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_M = \"1.25rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_L = \"1.5rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_XL = \"2.25rem\";\nexport const SPACING_BUTTON_GAP_INLINE_XS = \"0.5rem\";\nexport const SPACING_BUTTON_GAP_INLINE_S = \"0.5rem\";\nexport const SPACING_BUTTON_GAP_INLINE_M = \"0.625rem\";\nexport const SPACING_BUTTON_GAP_INLINE_L = \"0.625rem\";\nexport const SPACING_BUTTON_GAP_INLINE_XL = \"0.625rem\";\nexport const SPACING_INPUT_HEIGHT_S = \"2rem\";\nexport const SPACING_INPUT_HEIGHT_M = \"2.5rem\";\nexport const Z_INDEX_NAVIGATION = 100;\nexport const Z_INDEX_DROPDOWN = 300;\nexport const Z_INDEX_NOTIFICATIONS = 500;\nexport const Z_INDEX_OVERLAY = 700;\nexport const Z_INDEX_MODAL = 900;\nexport const Z_INDEX_MAX = 9999;\nexport const Z_INDEX_RESET = 0;\n\nexport const SPACING = {\n SPACING_5XS,\n SPACING_4XS,\n SPACING_3XS,\n SPACING_2XS,\n SPACING_XS,\n SPACING_S,\n SPACING_M,\n SPACING_L,\n SPACING_XL,\n SPACING_2XL,\n SPACING_3XL,\n SPACING_4XL,\n SPACING_5XL,\n SPACING_6XL,\n SPACING_7XL,\n SPACING_8XL,\n SPACING_9XL,\n};\n","import React from 'react';\n\nimport {\n\tSPACING_2XL,\n\tSPACING_3XL,\n\tSPACING_L,\n\tSPACING_M,\n\tSPACING_S,\n\tSPACING_XL,\n\tSPACING_XS,\n} from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { Display, IconSize } from '@libs/types/custom-types';\n\n/**\n * PDS Icon type.\n */\nexport type PDSIcon = keyof typeof svgData;\n\n/**\n * Icon component prop types\n */\nexport interface IconProps {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Display value\n\t */\n\tdisplay?: Display;\n\t/**\n\t * Which icon to render\n\t */\n\ticonName: PDSIcon;\n\t/**\n\t * Which size of icon to render\n\t */\n\ticonSize?: IconSize;\n\t/**\n\t * Vertical align value\n\t */\n\tverticalAlign?: string;\n}\n\n/**\n * A component used to display an icon\n */\nexport const Icon = ({\n\tclassName,\n\tdisplay = 'inline-block',\n\ticonName,\n\ticonSize = 'l',\n\tverticalAlign = 'middle',\n\t...props\n}: IconProps) => {\n\tconst iconClasses =\n\t\t`pds-icon pds-icon--${iconSize} pds-icon--${iconName}` as const;\n\tconst iconWidth = `0 0 ${svgData[iconName].width} 512` as const;\n\n\tconst iconSizes: Record<IconSize, string> = {\n\t\txs: SPACING_XS,\n\t\ts: SPACING_S,\n\t\tm: SPACING_M,\n\t\tl: SPACING_L,\n\t\txl: SPACING_XL,\n\t\t'2xl': SPACING_2XL,\n\t\t'3xl': SPACING_3XL,\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<svg\n\t\t\taria-hidden='true'\n\t\t\tclassName={mergeClasses([iconClasses, className])}\n\t\t\tfill='none'\n\t\t\tfocusable='false'\n\t\t\theight={iconSizes[iconSize]}\n\t\t\tpreserveAspectRatio='xMidYMid meet'\n\t\t\trole='img'\n\t\t\tstyle={{\n\t\t\t\tdisplay: display,\n\t\t\t\tflexShrink: 0,\n\t\t\t\toverflow: 'visible',\n\t\t\t\tverticalAlign: verticalAlign,\n\t\t\t}}\n\t\t\tviewBox={iconWidth}\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t{...props}\n\t\t>\n\t\t\t<path d={svgData[iconName].path} fill='currentColor' />\n\t\t</svg>\n\t);\n};\n\n// SVG Paths for each icon.\nconst svgData = {\n\tangleDown: {\n\t\tpath: 'M201.4 387.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 319.7 86.6 182.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z',\n\t\twidth: '440',\n\t},\n\tangleLeft: {\n\t\tpath: 'M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z',\n\t\twidth: '320',\n\t},\n\tangleRight: {\n\t\tpath: 'M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z',\n\t\twidth: '320',\n\t},\n\tangleUp: {\n\t\tpath: 'M201.4 153.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 221.3 86.6 358.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z',\n\t\twidth: '440',\n\t},\n\tanglesLeft: {\n\t\tpath: 'M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z',\n\t\twidth: '512',\n\t},\n\tanglesRight: {\n\t\tpath: 'M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z',\n\t\twidth: '512',\n\t},\n\tarrowDownToLine: {\n\t\tpath: 'M32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32zM214.6 342.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 242.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V242.7l73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128z',\n\t\twidth: '384',\n\t},\n\tarrowLeft: {\n\t\tpath: 'M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z',\n\t\twidth: '448',\n\t},\n\tarrowRight: {\n\t\tpath: 'M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z',\n\t\twidth: '448',\n\t},\n\tasterisk: {\n\t\tpath: 'M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z',\n\t\twidth: '384',\n\t},\n\tbanBug: {\n\t\tpath: 'M256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2L367.2 412.5C335.9 434.9 297.5 448 256 448zm89-148.3l19.9 4c8.7 1.7 17.1-3.9 18.8-12.6s-3.9-17.1-12.6-18.8l-35.1-7V246.7l35.1-7c8.7-1.7 14.3-10.2 12.6-18.8s-10.2-14.3-18.8-12.6l-29.5 5.9c-1.1-9.2-3.8-17.8-7.7-25.8l24.5-14.7c7.6-4.5 10-14.4 5.5-22s-14.4-10-22-5.5L307.8 163c-14-11.9-32.1-19-51.8-19c-18.7 0-35.9 6.4-49.6 17.2L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L345 299.7zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM140.9 272.3c-8.7 1.7-14.3 10.2-12.6 18.8s10.2 14.3 18.8 12.6l29.5-5.9c1.1 9.2 3.8 17.8 7.7 25.8l-24.5 14.7c-7.6 4.5-10 14.4-5.5 22s14.4 10 22 5.5L204.2 349c14 11.9 32.1 19 51.8 19c6.6 0 13-.8 19.2-2.3L175 265.5l-34.1 6.8z',\n\t\twidth: '512',\n\t},\n\tbars: {\n\t\tpath: 'M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z',\n\t\twidth: '460',\n\t},\n\tbarsFilter: {\n\t\tpath: 'M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM288 416c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c17.7 0 32 14.3 32 32z',\n\t\twidth: '460',\n\t},\n\tbell: {\n\t\tpath: 'M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416l384 0c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8l0-18.8c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z',\n\t\twidth: '448',\n\t},\n\tbillboard: {\n\t\tpath: 'M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32H256c0-17.7-14.3-32-32-32s-32 14.3-32 32H80C53.5 32 32 53.5 32 80V352c-17.7 0-32 14.3-32 32s14.3 32 32 32H80 288v64c0 17.7 14.3 32 32 32s32-14.3 32-32V416H560h48c17.7 0 32-14.3 32-32s-14.3-32-32-32V80c0-26.5-21.5-48-48-48H448zM320 352H96V96h96v32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V96H384v32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V96h96V352H320z',\n\t\twidth: '640',\n\t},\n\tbitbucket: {\n\t\tpath: 'M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z',\n\t\twidth: '512',\n\t},\n\tbluesky: {\n\t\tpath: 'M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z',\n\t\twidth: '512',\n\t},\n\tbolt: {\n\t\tpath: 'M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z',\n\t\twidth: '448',\n\t},\n\tboltPantheon: {\n\t\tpath: 'M183.215 0L254.271 277.176H204.614L302 512L46.228 187.779H135.272L0 0.434418L144.526 0.459972L145.968 0H183.215Z',\n\t\twidth: '304',\n\t},\n\tbook: {\n\t\tpath: 'M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z',\n\t\twidth: '448',\n\t},\n\tbooks: {\n\t\tpath: 'M0 32C0 14.3 14.3 0 32 0L96 0c17.7 0 32 14.3 32 32l0 64L0 96 0 32zm0 96l128 0 0 256L0 384 0 128zM0 416l128 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64zM160 32c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64L160 96l0-64zm0 96l128 0 0 256-128 0 0-256zm0 288l128 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64zm203.6-19.9L320 232.6l0-89.9 100.4-26.9 66 247.4L363.6 396.1zM412.2 85L320 109.6 320 11l36.9-9.9c16.9-4.6 34.4 5.5 38.9 22.6L412.2 85zM371.8 427l122.8-32.9 16.3 61.1c4.5 17-5.5 34.5-22.5 39.1l-61.4 16.5c-16.9 4.6-34.4-5.5-38.9-22.6L371.8 427z',\n\t\twidth: '512',\n\t},\n\tbracketRight: {\n\t\tpath: 'M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z',\n\t\twidth: '548',\n\t},\n\tbroomWide: {\n\t\tpath: 'M502.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128-15.8-15.8c-15.2-15.2-38.5-18.4-57.3-8l-32.5 18L380.4 288.1l18-32.5c10.4-18.7 7.1-42.1-8-57.3l-15.8-15.8 128-128c12.5-12.5 12.5-32.8 0-45.3zM187.5 151.8L16.4 246.9C6.3 252.5 0 263.2 0 274.8c0 8.5 3.4 16.6 9.3 22.6l43.2 43.2c2.1 2.1 5.3 2.9 8.2 1.9l52.1-17.4c6.3-2.1 12.2 3.9 10.1 10.1l-17.4 52.1c-1 2.9-.2 6 1.9 8.2L214.7 502.7c6 6 14.1 9.3 22.6 9.3c11.6 0 22.3-6.3 27.9-16.4l95.1-171.1L187.5 151.8z',\n\t\twidth: '512',\n\t},\n\tbuilding: {\n\t\tpath: 'M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z',\n\t\twidth: '400',\n\t},\n\tbuildings: {\n\t\tpath: 'M256 0c-35.3 0-64 28.7-64 64v64H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256 448c35.3 0 64-28.7 64-64V192 64c0-35.3-28.7-64-64-64H256zM64 304c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V304zm208 16c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272zm112-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 192h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zM256 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V80zM400 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM256 208V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zm144 16c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H400z',\n\t\twidth: '512',\n\t},\n\tcalendarDays: {\n\t\tpath: 'M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z',\n\t\twidth: '448',\n\t},\n\tccAmex: {\n\t\tpath: 'M48 480C21.49 480 0 458.5 0 432V80C0 53.49 21.49 32 48 32H528C554.5 32 576 53.49 576 80V82.43H500.5L483.5 130L466.6 82.43H369.4V145.6L341.3 82.43H262.7L181 267.1H246.8V430.9H450.5L482.4 395.8L514.3 430.9H576V432C576 458.5 554.5 480 528 480H48zM482.6 364L440.4 410.3H390.5L458 338.6L390.5 266.1H441.9L483.4 312.8L525.4 266.1H576L508 338.2L576 410.3H524.6L482.6 364zM576 296.9V380.2L536.7 338.3L576 296.9zM307.6 377.1H390.6V410.3H268.6V267.1H390.6V300.2H307.6V322.6H388.5V354.9H307.6V377.2V377.1zM537.3 145.7L500.4 246.3H466L429.2 146V246.3H390.5V103H451.7L483.6 192.3L515.8 103H576V246.3H537.3V145.7zM334.5 217.6H268.6L256.7 246.3H213.7L276.1 103H327.3L390.6 246.3H346.5L334.5 217.6zM301.5 138.5L282 185.4H320.9L301.5 138.5z',\n\t\twidth: '600',\n\t},\n\tccDiscover: {\n\t\tpath: 'M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z',\n\t\twidth: '600',\n\t},\n\tccGeneric: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z',\n\t\twidth: '600',\n\t},\n\tccMC: {\n\t\tpath: 'M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z',\n\t\twidth: '600',\n\t},\n\tccVisa: {\n\t\tpath: 'M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z',\n\t\twidth: '600',\n\t},\n\tchartSimple: {\n\t\tpath: 'M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z',\n\t\twidth: '500',\n\t},\n\tcloud: {\n\t\tpath: 'M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z',\n\t\twidth: '640',\n\t},\n\tcloudArrowUp: {\n\t\tpath: 'M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z',\n\t\twidth: '640',\n\t},\n\tcloudPlus: {\n\t\tpath: 'M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zM296 376c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z',\n\t\twidth: '640',\n\t},\n\tcode: {\n\t\tpath: 'M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z',\n\t\twidth: '640',\n\t},\n\tcodeBranch: {\n\t\tpath: 'M80 112a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm80-32c0 35.8-23.5 66.1-56 76.3V256c20.1-15.1 45-24 72-24h96c39.8 0 72-32.2 72-72v-3.7c-32.5-10.2-56-40.5-56-76.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 35.8-23.5 66.1-56 76.3V160c0 66.3-53.7 120-120 120H176c-39.8 0-72 32.2-72 72v3.7c32.5 10.2 56 40.5 56 76.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-35.8 23.5-66.1 56-76.3V352 156.3C23.5 146.1 0 115.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm240 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM80 464a32 32 0 1 0 0-64 32 32 0 1 0 0 64z',\n\t\twidth: '490',\n\t},\n\tcodeMerge: {\n\t\tpath: 'M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z',\n\t\twidth: '480',\n\t},\n\tcaretDown: {\n\t\tpath: 'M137.4 362.3c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 179.7c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z',\n\t\twidth: '320',\n\t},\n\tcaretLeft: {\n\t\tpath: 'M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z',\n\t\twidth: '256',\n\t},\n\tcaretRight: {\n\t\tpath: 'M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z',\n\t\twidth: '256',\n\t},\n\tcaretUp: {\n\t\tpath: 'M182.6 164.7c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z',\n\t\twidth: '320',\n\t},\n\tchartLine: {\n\t\tpath: 'M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z',\n\t\twidth: '512',\n\t},\n\tchartNetwork: {\n\t\tpath: 'M288 64c0 13.7-4.3 26.3-11.6 36.7l29.2 62.5c9.8-2.1 20-3.2 30.4-3.2c36.1 0 69 13.3 94.3 35.2L512.4 135c-.2-2.3-.4-4.6-.4-7c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-9.2 0-17.9-1.9-25.8-5.4l-82 60.2c7.6 17.5 11.8 36.9 11.8 57.2c0 15.6-2.5 30.7-7.1 44.8l72 43.2c9.2-5.1 19.8-8 31.1-8c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64l0-1.1-72.1-43.3C413.7 431 376.8 448 336 448c-68.5 0-125.9-47.9-140.4-112H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64s28.7-64 64-64c23.7 0 44.4 12.9 55.4 32h76.1c7.5-33 26.3-61.6 52.1-81.7l-29.2-62.5C185.7 124.9 160 97.5 160 64c0-35.3 28.7-64 64-64s64 28.7 64 64zm48 288a48 48 0 1 0 0-96 48 48 0 1 0 0 96z',\n\t\twidth: '640',\n\t},\n\tcheck: {\n\t\tpath: 'M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z',\n\t\twidth: '448',\n\t},\n\tcircle: {\n\t\tpath: 'M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z',\n\t\twidth: '512',\n\t},\n\tcircleExclamation: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: '512',\n\t},\n\tcircleCheck: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z',\n\t\twidth: '512',\n\t},\n\tcircleInfo: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z',\n\t\twidth: '512',\n\t},\n\tcircleMinus: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z',\n\t\twidth: '512',\n\t},\n\tcircleMinusOutline: {\n\t\tpath: 'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z',\n\t\twidth: '512',\n\t},\n\tcircleNotch: {\n\t\tpath: 'M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z',\n\t\twidth: '512',\n\t},\n\tcirclePlus: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z',\n\t\twidth: '512',\n\t},\n\tcirclePlusOutline: {\n\t\tpath: 'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z',\n\t\twidth: '512',\n\t},\n\tcircleQuestion: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: '512',\n\t},\n\tcircleXmark: {\n\t\tpath: 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z',\n\t\twidth: '512',\n\t},\n\tcommand: {\n\t\tpath: 'M0 96C0 43 43 0 96 0s96 43 96 96v32H320V96c0-53 43-96 96-96s96 43 96 96s-43 96-96 96H384V320h32c53 0 96 43 96 96s-43 96-96 96s-96-43-96-96V384H192v32c0 53-43 96-96 96s-96-43-96-96s43-96 96-96h32V192H96C43 192 0 149 0 96zm128 32V96c0-17.7-14.3-32-32-32S64 78.3 64 96s14.3 32 32 32h32zm64 192H320V192H192V320zm-64 64H96c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32V384zm256 0v32c0 17.7 14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32H384zm0-256h32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32v32z',\n\t\twidth: '512',\n\t},\n\tcomment: {\n\t\tpath: 'M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z',\n\t\twidth: '512',\n\t},\n\tcopy: {\n\t\tpath: 'M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z',\n\t\twidth: '480',\n\t},\n\tdesktop: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 224L64 288 64 64l448 0z',\n\t\twidth: '576',\n\t},\n\tdiamondExclamation: {\n\t\tpath: 'M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zM256 128c-13.3 0-24 10.7-24 24V264c0 13.3 10.7 24 24 24s24-10.7 24-24V152c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z',\n\t\twidth: '512',\n\t},\n\tdiamonds4: {\n\t\tpath: 'M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l74.1 74.1c12.5 12.5 12.5 32.8 0 45.3l-79.7 79.7c-12.5 12.5-32.8 12.5-45.3 0L153.7 131c-12.5-12.5-12.5-32.8 0-45.3l74.1-74.1zM131 153.7l79.7 79.7c12.5 12.5 12.5 32.8 0 45.3L131 358.3c-12.5 12.5-32.8 12.5-45.3 0L11.7 284.3c-15.6-15.6-15.6-40.9 0-56.6l74.1-74.1c12.5-12.5 32.8-12.5 45.3 0zM153.7 381l79.7-79.7c12.5-12.5 32.8-12.5 45.3 0L358.3 381c12.5 12.5 12.5 32.8 0 45.3l-74.1 74.1c-15.6 15.6-40.9 15.6-56.6 0l-74.1-74.1c-12.5-12.5-12.5-32.8 0-45.3zM381 358.3l-79.7-79.7c-12.5-12.5-12.5-32.8 0-45.3L381 153.7c12.5-12.5 32.8-12.5 45.3 0l74.1 74.1c15.6 15.6 15.6 40.9 0 56.6l-74.1 74.1c-12.5 12.5-32.8 12.5-45.3 0z',\n\t\twidth: '512',\n\t},\n\tdiscourse: {\n\t\tpath: 'M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z',\n\t\twidth: '512',\n\t},\n\tdollarSign: {\n\t\tpath: 'M160 0c17.7 0 32 14.3 32 32l0 35.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11l0 33.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.9c-.4-.1-.9-.1-1.3-.2l-.2 0s0 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7s0 0 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11L128 32c0-17.7 14.3-32 32-32z',\n\t\twidth: '320',\n\t},\n\tdownload: {\n\t\tpath: 'M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z',\n\t\twidth: '520',\n\t},\n\tdrupal: {\n\t\tpath: 'M303.973,108.136C268.2,72.459,234.187,38.35,224.047,0c-9.957,38.35-44.25,72.459-80.019,108.136C90.467,161.7,29.716,222.356,29.716,313.436c-2.337,107.3,82.752,196.18,190.053,198.517S415.948,429.2,418.285,321.9q.091-4.231,0-8.464C418.285,222.356,357.534,161.7,303.973,108.136Zm-174.326,223a130.282,130.282,0,0,0-15.211,24.153,4.978,4.978,0,0,1-3.319,2.766h-1.659c-4.333,0-9.219-8.481-9.219-8.481h0c-1.29-2.028-2.489-4.149-3.687-6.361l-.83-1.752c-11.247-25.72-1.475-62.318-1.475-62.318h0a160.585,160.585,0,0,1,23.231-49.873A290.8,290.8,0,0,1,138.5,201.613l9.219,9.219,43.512,44.434a4.979,4.979,0,0,1,0,6.638L145.78,312.33h0Zm96.612,127.311a67.2,67.2,0,0,1-49.781-111.915c14.2-16.871,31.528-33.464,50.334-55.313,22.309,23.785,36.875,40.1,51.164,57.986a28.413,28.413,0,0,1,2.95,4.425,65.905,65.905,0,0,1,11.984,37.981,66.651,66.651,0,0,1-66.466,66.836ZM352.371,351.6h0a7.743,7.743,0,0,1-6.176,5.347H344.9a11.249,11.249,0,0,1-6.269-5.07h0a348.21,348.21,0,0,0-39.456-48.952L281.387,284.49,222.3,223.185a497.888,497.888,0,0,1-35.4-36.322,12.033,12.033,0,0,0-.922-1.382,35.4,35.4,0,0,1-4.7-9.219V174.51a31.346,31.346,0,0,1,9.218-27.656c11.432-11.431,22.955-22.954,33.833-34.939,11.984,13.275,24.8,26,37.428,38.627h0a530.991,530.991,0,0,1,69.6,79.1,147.494,147.494,0,0,1,27.011,83.8A134.109,134.109,0,0,1,352.371,351.6Z',\n\t\twidth: '440',\n\t},\n\tellipsis: {\n\t\tpath: 'M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z',\n\t\twidth: '448',\n\t},\n\tellipsisVertical: {\n\t\tpath: 'M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z',\n\t\twidth: '120',\n\t},\n\temptySet: {\n\t\tpath: 'M435.4 121.9l67.2-67.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L390.2 76.6C352.8 48.6 306.3 32 256 32C132.3 32 32 132.3 32 256c0 50.3 16.6 96.8 44.6 134.2L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l67.2-67.2c37.4 28 83.8 44.6 134.1 44.6c123.7 0 224-100.3 224-224c0-50.3-16.6-96.8-44.6-134.1zm-91.2 .7L122.5 344.2C105.8 318.9 96 288.6 96 256c0-88.4 71.6-160 160-160c32.6 0 62.9 9.8 88.2 26.5zm-176.5 267L389.5 167.8C406.2 193.1 416 223.4 416 256c0 88.4-71.6 160-160 160c-32.6 0-62.9-9.8-88.2-26.5z',\n\t\twidth: '512',\n\t},\n\tenvelope: {\n\t\tpath: 'M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z',\n\t\twidth: '512',\n\t},\n\tenvelopeOpen: {\n\t\tpath: 'M64 208.1L256 65.9 448 208.1l0 47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5l0-47.4zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-239.9c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z',\n\t\twidth: '512',\n\t},\n\texclamation: {\n\t\tpath: 'M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z',\n\t\twidth: '100',\n\t},\n\texpand: {\n\t\tpath: 'M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z',\n\t\twidth: '448',\n\t},\n\texternalLink: {\n\t\tpath: 'M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z',\n\t\twidth: '512',\n\t},\n\teye: {\n\t\tpath: 'M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z',\n\t\twidth: '576',\n\t},\n\teyeSlash: {\n\t\tpath: 'M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z',\n\t\twidth: '640',\n\t},\n\tfacebook: {\n\t\tpath: 'M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z',\n\t\twidth: '512',\n\t},\n\tfile: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z',\n\t\twidth: '384',\n\t},\n\tfileCheck: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zm49 281L177 409c-9.4 9.4-24.6 9.4-33.9 0L79 345c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 247c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z',\n\t\twidth: '384',\n\t},\n\tfileContract: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z',\n\t\twidth: '400',\n\t},\n\tfileCSV: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z',\n\t\twidth: '512',\n\t},\n\tfileDiff: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM208 208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16zM128 384l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z',\n\t\twidth: '384',\n\t},\n\tfileExport: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z',\n\t\twidth: '576',\n\t},\n\tfileImport: {\n\t\tpath: 'M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z',\n\t\twidth: '512',\n\t},\n\tfileLines: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM112 256l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z',\n\t\twidth: '384',\n\t},\n\tfilePDF: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z',\n\t\twidth: '512',\n\t},\n\tfileZip: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-144 0c-35.3 0-64 28.7-64 64l0 144L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM240 352l64 0c5.5 0 10.7 2.9 13.6 7.6s3.2 10.6 .7 15.6L265.9 480l38.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-5.5 0-10.7-2.9-13.6-7.6s-3.2-10.6-.7-15.6L278.1 384 240 384c-8.8 0-16-7.2-16-16s7.2-16 16-16zm144 16l0 128c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16s16 7.2 16 16zm32 0c0-8.8 7.2-16 16-16l24 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-8 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80zm32 64l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 48z',\n\t\twidth: '512',\n\t},\n\tfolder: {\n\t\tpath: 'M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z',\n\t\twidth: '512',\n\t},\n\tfolderTree: {\n\t\tpath: 'M60 67.375V123.375H228H228V179.375H60V375.375H228V431.375H60C28.5 431.375 4 406.875 4 375.375V151.375V67.375C4 52.9 20.25 39.375 32 39.375C46.875 39.375 60 52.9 60 67.375ZM256 207.375V67.375C256 52.9 272.25 39.375 284 39.375H341.75C350.5 39.375 357.625 43.875 362 48.25L373.25 59.5C377.625 63.875 384.75 67.375 393.5 67.375H480C494.875 67.375 508 80.9 508 95.375V207.375C508 222.25 494.875 235.375 480 235.375H284C272.25 235.375 256 222.25 256 207.375ZM256 459.375V319.375C256 304.9 272.25 291.375 284 291.375H341.75C350.5 291.375 357.625 295.875 362 300.25L373.25 311.5C377.625 315.875 384.75 319.375 393.5 319.375H480C494.875 319.375 508 332.9 508 347.375V459.375C508 474.25 494.875 487.375 480 487.375H284C272.25 487.375 256 474.25 256 459.375Z',\n\t\twidth: '512',\n\t},\n\tgear: {\n\t\tpath: 'M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z',\n\t\twidth: '512',\n\t},\n\tgithub: {\n\t\tpath: 'M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2',\n\t\twidth: '512',\n\t},\n\tgitlab: {\n\t\tpath: 'M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z',\n\t\twidth: '512',\n\t},\n\tglobe: {\n\t\tpath: 'M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z',\n\t\twidth: '512',\n\t},\n\tglobeLine: {\n\t\tpath: 'M256 480c16.7 0 40.4-14.4 61.9-57.3c9.9-19.8 18.2-43.7 24.1-70.7H170c5.9 27 14.2 50.9 24.1 70.7C215.6 465.6 239.3 480 256 480zM164.3 320H347.7c2.8-20.2 4.3-41.7 4.3-64s-1.5-43.8-4.3-64H164.3c-2.8 20.2-4.3 41.7-4.3 64s1.5 43.8 4.3 64zM170 160H342c-5.9-27-14.2-50.9-24.1-70.7C296.4 46.4 272.7 32 256 32s-40.4 14.4-61.9 57.3C184.2 109.1 175.9 133 170 160zm210 32c2.6 20.5 4 41.9 4 64s-1.4 43.5-4 64h90.8c6-20.3 9.3-41.8 9.3-64s-3.2-43.7-9.3-64H380zm78.5-32c-25.9-54.5-73.1-96.9-130.9-116.3c21 28.3 37.6 68.8 47.2 116.3h83.8zm-321.1 0c9.6-47.6 26.2-88 47.2-116.3C126.7 63.1 79.4 105.5 53.6 160h83.7zm-96 32c-6 20.3-9.3 41.8-9.3 64s3.2 43.7 9.3 64H132c-2.6-20.5-4-41.9-4-64s1.4-43.5 4-64H41.3zM327.5 468.3c57.8-19.5 105-61.8 130.9-116.3H374.7c-9.6 47.6-26.2 88-47.2 116.3zm-143 0c-21-28.3-37.5-68.8-47.2-116.3H53.6c25.9 54.5 73.1 96.9 130.9 116.3zM256 512A256 256 0 1 1 256 0a256 256 0 1 1 0 512z',\n\t\twidth: '512',\n\t},\n\tgraduationCap: {\n\t\tpath: 'M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z',\n\t\twidth: '640',\n\t},\n\tgrid: {\n\t\tpath: 'M224 80c0-26.5-21.5-48-48-48H80C53.5 32 32 53.5 32 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80zm0 256c0-26.5-21.5-48-48-48H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336zM288 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zM480 336c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336z',\n\t\twidth: '512',\n\t},\n\tgripDots: {\n\t\tpath: 'M336 176a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zm-160 0a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zM64 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM336 336a48 48 0 1 0 96 0 48 48 0 1 0 -96 0zM224 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM16 336a48 48 0 1 0 96 0 48 48 0 1 0 -96 0z',\n\t\twidth: '448',\n\t},\n\tgripDotsVertical: {\n\t\tpath: 'M48 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm0 160a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM96 416A48 48 0 1 0 0 416a48 48 0 1 0 96 0zM208 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 112a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96z',\n\t\twidth: '280',\n\t},\n\theart: {\n\t\tpath: 'M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z',\n\t\twidth: '532',\n\t},\n\thouse: {\n\t\tpath: 'M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z',\n\t\twidth: '600',\n\t},\n\tidCard: {\n\t\tpath: 'M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z',\n\t\twidth: '575',\n\t},\n\tinstagram: {\n\t\tpath: 'M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z',\n\t\twidth: '480',\n\t},\n\timage: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z',\n\t\twidth: '512',\n\t},\n\tinputText: {\n\t\tpath: 'M64 128l0 256 512 0 0-256L64 128zM0 128C0 92.7 28.7 64 64 64l512 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm184 32c9.5 0 18.1 5.6 21.9 14.3l64 144c5.4 12.1-.1 26.3-12.2 31.7s-26.3-.1-31.7-12.2l-4.3-9.7-75.5 0-4.3 9.7c-5.4 12.1-19.6 17.6-31.7 12.2s-17.6-19.6-12.2-31.7l64-144c3.9-8.7 12.4-14.3 21.9-14.3zm0 83.1L167.6 280l32.8 0L184 243.1zM304 184c0-13.3 10.7-24 24-24l52 0c33.1 0 60 26.9 60 60c0 9.2-2.1 17.9-5.8 25.7c13.3 11 21.8 27.6 21.8 46.3c0 33.1-26.9 60-60 60l-68 0c-13.3 0-24-10.7-24-24l0-8 0-64 0-64 0-8zm48 24l0 24 28 0c6.6 0 12-5.4 12-12s-5.4-12-12-12l-28 0zm0 96l44 0c6.6 0 12-5.4 12-12s-5.4-12-12-12l-16 0-28 0 0 24z',\n\t\twidth: '640',\n\t},\n\tkeySkeleton: {\n\t\tpath: 'M304 64a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 224c79.5 0 144-64.5 144-144S383.5 0 304 0S160 64.5 160 144c0 28.2 8.1 54.5 22.1 76.7L9.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 416 96 397.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L141.3 352l86.1-86.1c22.2 14 48.5 22.1 76.7 22.1z',\n\t\twidth: '480',\n\t},\n\tlaptop: {\n\t\tpath: 'M128 32C92.7 32 64 60.7 64 96l0 256 64 0 0-256 384 0 0 256 64 0 0-256c0-35.3-28.7-64-64-64L128 32zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480l486.4 0c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2L19.2 384z',\n\t\twidth: '640',\n\t},\n\tlaptopCode: {\n\t\tpath: 'M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z',\n\t\twidth: '640',\n\t},\n\tleaf: {\n\t\tpath: 'M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.2 5.4c-25.9 5.9-50 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z',\n\t\twidth: '512',\n\t},\n\tlifeRing: {\n\t\tpath: 'M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z',\n\t\twidth: '512',\n\t},\n\tlinkedin: {\n\t\tpath: 'M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z',\n\t\twidth: '480',\n\t},\n\tlinkSimple: {\n\t\tpath: 'M0 256C0 167.6 71.6 96 160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-53 0-96 43-96 96s43 96 96 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H160C71.6 416 0 344.4 0 256zm576 0c0 88.4-71.6 160-160 160H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c53 0 96-43 96-96s-43-96-96-96H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h64c88.4 0 160 71.6 160 160zM192 224H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32z',\n\t\twidth: '600',\n\t},\n\tlinkSimpleSlash: {\n\t\tpath: 'M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L532.4 392c45.4-28.2 75.6-78.6 75.6-136c0-88.4-71.6-160-160-160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c53 0 96 43 96 96c0 43.3-28.6 79.8-67.9 91.8L399.7 288H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H318.1l-81.7-64H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-11.3 0-22.3 1.2-32.9 3.4L38.8 5.1zM121 191.4L70.7 151.7C46.6 179.7 32 216.1 32 256c0 88.4 71.6 160 160 160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-53 0-96-43-96-96c0-24.9 9.5-47.6 25-64.6z',\n\t\twidth: '640',\n\t},\n\tlistCheck: {\n\t\tpath: 'M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z',\n\t\twidth: '512',\n\t},\n\tlock: {\n\t\tpath: 'M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z',\n\t\twidth: '448',\n\t},\n\tlockOpen: {\n\t\tpath: 'M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z',\n\t\twidth: '576',\n\t},\n\tmagnifyingGlass: {\n\t\tpath: 'M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z',\n\t\twidth: '512',\n\t},\n\tmemo: {\n\t\tpath: 'M0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm64 80c0 8.8 7.2 16 16 16l224 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L80 128c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16s7.2 16 16 16l224 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L80 224zm0 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L80 320z',\n\t\twidth: '384',\n\t},\n\tmessages: {\n\t\tpath: 'M64 0C28.7 0 0 28.7 0 64V256c0 35.3 28.7 64 64 64H96v48c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L202.7 320H352c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM352 352H256v32c0 35.3 28.7 64 64 64H437.3l81.1 60.8c4.8 3.6 11.3 4.2 16.8 1.5s8.8-8.2 8.8-14.3V448h32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H448V256c0 53-43 96-96 96z',\n\t\twidth: '640',\n\t},\n\tminus: {\n\t\tpath: 'M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z',\n\t\twidth: '448',\n\t},\n\tmoon: {\n\t\tpath: 'M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z',\n\t\twidth: '384',\n\t},\n\tpaperclip: {\n\t\tpath: 'M375 73c-26-26-68.1-26-94.1 0L89 265C45.3 308.6 45.3 379.4 89 423s114.4 43.6 158.1 0L399 271c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L281 457c-62.4 62.4-163.5 62.4-225.9 0S-7.4 293.4 55 231L247 39C291.7-5.7 364.3-5.7 409 39s44.7 117.2 0 161.9L225.2 384.7c-31.6 31.6-83.6 28.7-111.5-6.2c-23.8-29.8-21.5-72.8 5.5-99.8L271 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L153.2 312.7c-9.7 9.7-10.6 25.1-2 35.8c10 12.5 28.7 13.6 40 2.2L375 167c26-26 26-68.1 0-94.1z',\n\t\twidth: '448',\n\t},\n\tpaperPlane: {\n\t\tpath: 'M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z',\n\t\twidth: '512',\n\t},\n\tpen: {\n\t\tpath: 'M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z',\n\t\twidth: '512',\n\t},\n\tpenField: {\n\t\tpath: 'M534.4 48C553.1 29.2 583.5 29.2 602.3 48L624.2 69.9C643.1 88.8 642.9 119.5 623.8 138.1L584 177L494.7 87.7L534.4 48zM472.1 110.4L561.2 199.5L416 341.6C409.1 348.4 400.7 353.5 391.5 356.6L320 380.5C311.4 383.4 301.9 381.1 295.4 374.7C288.9 368.3 286.7 358.8 289.6 350.1L313.4 278.8C316.5 269.4 321.8 260.8 328.8 253.8L472.1 110.4zM64.4 240C64.4 195.8 100.2 160 144.4 160L256.4 160C274.1 160 288.4 174.3 288.4 192C288.4 209.7 274.1 224 256.4 224L144.4 224C135.6 224 128.4 231.2 128.4 240L128.4 464C128.4 472.8 135.6 480 144.4 480L496.4 480C505.2 480 512.4 472.8 512.4 464L512.4 352C512.4 334.3 526.7 320 544.4 320C562.1 320 576.4 334.3 576.4 352L576.4 464C576.4 508.2 540.6 544 496.4 544L144.4 544C100.2 544 64.4 508.2 64.4 464L64.4 240zM224.4 320C242.1 320 256.4 334.3 256.4 352C256.4 369.7 242.1 384 224.4 384C206.7 384 192.4 369.7 192.4 352C192.4 334.3 206.7 320 224.4 320z',\n\t\twidth: '640',\n\t},\n\tphone: {\n\t\tpath: 'M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z',\n\t\twidth: '512',\n\t},\n\tplay: {\n\t\tpath: 'M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z',\n\t\twidth: '440',\n\t},\n\tplus: {\n\t\tpath: 'M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z',\n\t\twidth: '448',\n\t},\n\tquotesLeft: {\n\t\tpath: 'M232.896 226.425C228.749 226.425 225.964 231.118 227.632 235.301L286.746 413.714L116.988 224.541C113.406 220.543 102.507 208.132 99.9534 203.926L11.645 108.127C9.0914 103.92 11.8346 98.2854 16.4278 98.2854H227.018C227.811 98.2854 228.592 98.3754 229.349 98.5481C229.87 98.3779 230.428 98.2854 231.017 98.2854H441.605C446.22 98.2854 450.387 101.323 452.187 106.003L495.176 217.627C496.786 221.801 494.005 226.425 489.888 226.425H447.484C443.338 226.425 440.551 231.118 442.221 235.301L501.333 413.714L331.576 224.541C327.995 220.543 317.095 208.132 314.542 203.926L247.159 130.829L280.589 217.627C282.198 221.801 279.418 226.425 275.3 226.425H232.896Z',\n\t\twidth: '512',\n\t},\n\tquotesRight: {\n\t\tpath: 'M289.771 226.425C293.918 226.425 296.703 231.118 295.035 235.301L235.921 413.714L405.679 224.541C409.261 220.543 420.16 208.132 422.713 203.926L511.022 108.127C513.575 103.92 510.832 98.2854 506.239 98.2854H295.649C294.855 98.2854 294.075 98.3754 293.317 98.5481C292.797 98.3779 292.239 98.2854 291.65 98.2854H81.0613C76.4469 98.2854 72.2795 101.323 70.48 106.003L27.4902 217.627C25.8806 221.801 28.6614 226.425 32.7787 226.425H75.183C79.3291 226.425 82.1152 231.118 80.4459 235.301L21.3334 413.714L191.09 224.541C194.672 220.543 205.571 208.132 208.125 203.926L275.507 130.829L242.078 217.627C240.468 221.801 243.249 226.425 247.366 226.425H289.771Z',\n\t\twidth: '512',\n\t},\n\trectangleList: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z',\n\t\twidth: '575',\n\t},\n\trocketLaunch: {\n\t\tpath: 'M117.8 128l89.3 0C286.9-3.7 409.5-8.5 483.9 5.3c11.6 2.2 20.7 11.2 22.8 22.8c13.8 74.4 9 197-122.7 276.9l0 89.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9l0-114.7c0-22.6-9-44.3-25-60.3s-37.7-25-60.3-25L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3zM424 128a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM166.5 470C132.3 504.3 66 511 28.3 511.9c-16 .4-28.6-12.2-28.2-28.2C1 446 7.7 379.7 42 345.5c34.4-34.4 90.1-34.4 124.5 0s34.4 90.1 0 124.5zm-46.7-36.4c11.4-11.4 11.4-30 0-41.4s-30-11.4-41.4 0c-10.1 10.1-13 28.5-13.7 41.3c-.5 8 5.9 14.3 13.9 13.9c12.8-.7 31.2-3.7 41.3-13.7z',\n\t\twidth: '512',\n\t},\n\trobot: {\n\t\tpath: 'M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z',\n\t\twidth: '640',\n\t},\n\trotate: {\n\t\tpath: 'M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z',\n\t\twidth: '512',\n\t},\n\trotateClock: {\n\t\tpath: 'M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z',\n\t\twidth: '512',\n\t},\n\trotateLeft: {\n\t\tpath: 'M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z',\n\t\twidth: '512',\n\t},\n\trotateRight: {\n\t\tpath: 'M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z',\n\t\twidth: '512',\n\t},\n\trss: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: '448',\n\t},\n\tsave: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z',\n\t\twidth: '448',\n\t},\n\tserver: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z',\n\t\twidth: '512',\n\t},\n\tshield: {\n\t\tpath: 'M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM80 141.4L256 66.8V224H90.1c-6.9-30-9.8-58.5-10.1-82.6zM256 444.8V224H422c-18.5 80.5-65.5 172.2-166 220.8z',\n\t\twidth: '512',\n\t},\n\tshovel: {\n\t\tpath: 'M361.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-44.1 44.1c-18.7 18.7-44.1 29.3-70.6 29.3c-15.9 0-30.9-3.7-44.3-10.3l-97 97 50.7 50.7c12.5 12.5 12.5 32.8 0 45.3l-58.5 58.5c-30 30-70.7 46.9-113.1 46.9H32c-17.7 0-32-14.3-32-32V386.3c0-42.4 16.9-83.1 46.9-113.1l58.5-58.5c12.5-12.5 32.8-12.5 45.3 0l50.7 50.7 97-97C291.7 155.1 288 140 288 124.1c0-26.5 10.5-51.9 29.3-70.6L361.4 9.4zM384 77.3L362.5 98.7c-6.7 6.7-10.5 15.9-10.5 25.4c0 19.8 16.1 35.9 35.9 35.9c9.5 0 18.6-3.8 25.4-10.5L434.7 128 384 77.3z',\n\t\twidth: '512',\n\t},\n\tsiren: {\n\t\tpath: 'M69.3 36l48 32c11 7.4 14 22.3 6.7 33.3s-22.3 14-33.3 6.7l-48-32c-11-7.4-14-22.3-6.7-33.3s22.3-14 33.3-6.7zM597.3 76l-48 32c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l48-32c11-7.4 25.9-4.4 33.3 6.7s4.4 25.9-6.7 33.3zM24 192H88c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm528 0h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552c-13.3 0-24-10.7-24-24s10.7-24 24-24zM144 352l25-199.9c4-32 31.2-56.1 63.5-56.1h175c32.3 0 59.5 24 63.5 56.1L496 352H234.1l21.8-174c1.1-8.8-5.1-16.8-13.9-17.9s-16.8 5.1-17.9 13.9L201.9 352H144zM96 416c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416z',\n\t\twidth: '640',\n\t},\n\tsitemap: {\n\t\tpath: 'M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z',\n\t\twidth: '600',\n\t},\n\tslack: {\n\t\tpath: 'M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z',\n\t\twidth: '480',\n\t},\n\tslashForward: {\n\t\tpath: 'M303.9 4.2c15.3 8.8 20.7 28.3 11.9 43.7l-256 448c-8.8 15.3-28.3 20.7-43.7 11.9S-4.6 479.5 4.2 464.1l256-448C269 .8 288.5-4.6 303.9 4.2z',\n\t\twidth: '320',\n\t},\n\tslidersSimple: {\n\t\tpath: 'M96 320a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm90.5 0L480 320c17.7 0 32 14.3 32 32s-14.3 32-32 32l-293.5 0c-13.2 37.3-48.7 64-90.5 64c-53 0-96-43-96-96s43-96 96-96c41.8 0 77.4 26.7 90.5 64zM384 160a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-58.5-32c13.2-37.3 48.7-64 90.5-64c53 0 96 43 96 96s-43 96-96 96c-41.8 0-77.4-26.7-90.5-64L32 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l293.5 0z',\n\t\twidth: '512',\n\t},\n\tsnowflake: {\n\t\tpath: 'M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z',\n\t\twidth: '470',\n\t},\n\tsparkles: {\n\t\tpath: 'M327.5 85.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L384 128l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L448 128l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L448 64 426.8 7.5C425.1 3 420.8 0 416 0s-9.1 3-10.8 7.5L384 64 327.5 85.2zM205.1 73.3c-2.6-5.7-8.3-9.3-14.5-9.3s-11.9 3.6-14.5 9.3L123.3 187.3 9.3 240C3.6 242.6 0 248.3 0 254.6s3.6 11.9 9.3 14.5l114.1 52.7L176 435.8c2.6 5.7 8.3 9.3 14.5 9.3s11.9-3.6 14.5-9.3l52.7-114.1 114.1-52.7c5.7-2.6 9.3-8.3 9.3-14.5s-3.6-11.9-9.3-14.5L257.8 187.4 205.1 73.3zM384 384l-56.5 21.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L384 448l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L448 448l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L448 384l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L384 384z',\n\t\twidth: '512',\n\t},\n\tsquareCheck: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z',\n\t\twidth: '448',\n\t},\n\tsquareCode: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm262.2 71.9c-8.9 9.9-8.1 25 1.8 33.9L324.1 256l-60.2 54.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72c-9.9-8.9-25-8.1-33.9 1.8zm-78.1 33.9c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72c-5.1 4.6-7.9 11-7.9 17.8s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L123.9 256l60.2-54.2z',\n\t\twidth: '448',\n\t},\n\tsquareMinus: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z',\n\t\twidth: '448',\n\t},\n\tsquarePen: {\n\t\tpath: 'M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z',\n\t\twidth: '512',\n\t},\n\tsquareQuestion: {\n\t\tpath: 'M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm73.8 133.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L248 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H190.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM192 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: '448',\n\t},\n\tsquareTerminal: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm70.3 55.8c-9 9.8-8.3 25 1.5 33.9L148.5 256 71.8 326.3c-9.8 9-10.4 24.1-1.5 33.9s24.1 10.4 33.9 1.5l96-88c5-4.5 7.8-11 7.8-17.7s-2.8-13.1-7.8-17.7l-96-88c-9.8-9-25-8.3-33.9 1.5zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z',\n\t\twidth: '448',\n\t},\n\tstar: {\n\t\tpath: 'M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z',\n\t\twidth: '576',\n\t},\n\tsun: {\n\t\tpath: 'M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z',\n\t\twidth: '512',\n\t},\n\ttable: {\n\t\tpath: 'M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm128 0V224H448V96H128zM448 288H128V416H448V288z',\n\t\twidth: '512',\n\t},\n\tterminal: {\n\t\tpath: 'M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z',\n\t\twidth: '576',\n\t},\n\ttext: {\n\t\tpath: 'M64 96l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 80C0 53.5 21.5 32 48 32l176 0 176 0c26.5 0 48 21.5 48 48l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32L256 96l0 320 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 0-320L64 96z',\n\t\twidth: '448',\n\t},\n\tthreads: {\n\t\tpath: 'M331.5 235.7c2.2 .9 4.2 1.9 6.3 2.8c29.2 14.1 50.6 35.2 61.8 61.4c15.7 36.5 17.2 95.8-30.3 143.2c-36.2 36.2-80.3 52.5-142.6 53h-.3c-70.2-.5-124.1-24.1-160.4-70.2c-32.3-41-48.9-98.1-49.5-169.6V256v-.2C17 184.3 33.6 127.2 65.9 86.2C102.2 40.1 156.2 16.5 226.4 16h.3c70.3 .5 124.9 24 162.3 69.9c18.4 22.7 32 50 40.6 81.7l-40.4 10.8c-7.1-25.8-17.8-47.8-32.2-65.4c-29.2-35.8-73-54.2-130.5-54.6c-57 .5-100.1 18.8-128.2 54.4C72.1 146.1 58.5 194.3 58 256c.5 61.7 14.1 109.9 40.3 143.3c28 35.6 71.2 53.9 128.2 54.4c51.4-.4 85.4-12.6 113.7-40.9c32.3-32.2 31.7-71.8 21.4-95.9c-6.1-14.2-17.1-26-31.9-34.9c-3.7 26.9-11.8 48.3-24.7 64.8c-17.1 21.8-41.4 33.6-72.7 35.3c-23.6 1.3-46.3-4.4-63.9-16c-20.8-13.8-33-34.8-34.3-59.3c-2.5-48.3 35.7-83 95.2-86.4c21.1-1.2 40.9-.3 59.2 2.8c-2.4-14.8-7.3-26.6-14.6-35.2c-10-11.7-25.6-17.7-46.2-17.8H227c-16.6 0-39 4.6-53.3 26.3l-34.4-23.6c19.2-29.1 50.3-45.1 87.8-45.1h.8c62.6 .4 99.9 39.5 103.7 107.7l-.2 .2zm-156 68.8c1.3 25.1 28.4 36.8 54.6 35.3c25.6-1.4 54.6-11.4 59.5-73.2c-13.2-2.9-27.8-4.4-43.4-4.4c-4.8 0-9.6 .1-14.4 .4c-42.9 2.4-57.2 23.2-56.2 41.8l-.1 .1z',\n\t\twidth: '440',\n\t},\n\tthumbsDown: {\n\t\tpath: 'M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2l144 0c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48l-97.5 0c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7l0 38.3 0 48 0 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384l64 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128L0 352c0 17.7 14.3 32 32 32z',\n\t\twidth: '512',\n\t},\n\tthumbsUp: {\n\t\tpath: 'M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2l144 0c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48l-97.5 0c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3l0-38.3 0-48 0-24.9c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192l64 0c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32L0 224c0-17.7 14.3-32 32-32z',\n\t\twidth: '512',\n\t},\n\ttrash: {\n\t\tpath: 'M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z',\n\t\twidth: '448',\n\t},\n\ttriangleExclamation: {\n\t\tpath: 'M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z',\n\t\twidth: '512',\n\t},\n\ttwitter: {\n\t\tpath: 'M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z',\n\t\twidth: '512',\n\t},\n\tupload: {\n\t\tpath: 'M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z',\n\t\twidth: '512',\n\t},\n\tuser: {\n\t\tpath: 'M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z',\n\t\twidth: '448',\n\t},\n\tuserGear: {\n\t\tpath: 'M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z',\n\t\twidth: '640',\n\t},\n\tuserPlus: {\n\t\tpath: 'M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z',\n\t\twidth: '640',\n\t},\n\tusers: {\n\t\tpath: 'M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z',\n\t\twidth: '640',\n\t},\n\tvideo: {\n\t\tpath: 'M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z',\n\t\twidth: '576',\n\t},\n\twavePulse: {\n\t\tpath: 'M319.1 0c14.8-.4 27.9 9.3 31.8 23.6l74 271.2 17.7-35.4c10.8-21.7 33-35.4 57.2-35.4H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H499.8L444.6 398.3c-5.9 11.9-18.6 18.8-31.8 17.5s-24.2-10.6-27.7-23.4L323.7 167.3 255.3 486.7c-3.1 14.4-15.5 24.8-30.2 25.3s-27.8-9.1-31.8-23.2L135.9 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H135.9c28.6 0 53.7 18.9 61.5 46.4L219.6 348 288.7 25.3C291.8 10.9 304.4 .4 319.1 0z',\n\t\twidth: '640',\n\t},\n\twindowRestore: {\n\t\tpath: 'M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z',\n\t\twidth: '512',\n\t},\n\twordpress: {\n\t\tpath: 'M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8 .9 0 1.8 .1 2.8 .2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7 .3 13.7 .3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z',\n\t\twidth: '512',\n\t},\n\twrench: {\n\t\tpath: 'M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z',\n\t\twidth: '512',\n\t},\n\txmark: {\n\t\tpath: 'M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z',\n\t\twidth: '384',\n\t},\n\txmarkLarge: {\n\t\tpath: 'M41 39C31.6 29.7 16.4 29.7 7 39S-2.3 63.6 7 73l183 183L7 439c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l183-183L407 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-183-183L441 73c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-183 183L41 39z',\n\t\twidth: '454',\n\t},\n\txTwitter: {\n\t\tpath: 'M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z',\n\t\twidth: '500',\n\t},\n\tyoutube: {\n\t\tpath: 'M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z',\n\t\twidth: '576',\n\t},\n} as const;\n\nexport const iconList = Object.keys(svgData) as PDSIcon[];\n","/**\n * Do not edit directly, this file was auto-generated.\n */\n\nexport const TYPOGRAPHY_FF_SANS = \"'Inter', sans-serif\";\nexport const TYPOGRAPHY_FF_SERIF = \"'IBM Plex Serif', serif\";\nexport const TYPOGRAPHY_FF_MONO = \"'Source Code Pro', monospace\";\nexport const TYPOGRAPHY_FW_LIGHT = 300;\nexport const TYPOGRAPHY_FW_REGULAR = 400;\nexport const TYPOGRAPHY_FW_MEDIUM = 500;\nexport const TYPOGRAPHY_FW_SEMIBOLD = 600;\nexport const TYPOGRAPHY_FW_BOLD = 700;\nexport const TYPOGRAPHY_FONT_CSS_IMPORT = \"'https://fonts.googleapis.com/css2?family=IBM+Plex+Serif:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&display=swap'\";\nexport const TYPOGRAPHY_LS_XL = \"6%\";\nexport const TYPOGRAPHY_LS_L = \"4%\";\nexport const TYPOGRAPHY_LS_M = \"2%\";\nexport const TYPOGRAPHY_LS_S = \"1%\";\nexport const TYPOGRAPHY_LH_XL = \"195%\";\nexport const TYPOGRAPHY_LH_L = \"165%\";\nexport const TYPOGRAPHY_LH_M = \"150%\";\nexport const TYPOGRAPHY_LH_S = \"130%\";\nexport const TYPOGRAPHY_LH_XS = \"120%\";\nexport const TYPOGRAPHY_LH_CODE = \"180%\";\nexport const TYPOGRAPHY_SIZE_2XS = \"0.625rem\"; // 10px - Metadata, tiny labels\nexport const TYPOGRAPHY_SIZE_XS = \"0.75rem\"; // 12px - Small UI text, captions\nexport const TYPOGRAPHY_SIZE_S = \"0.875rem\"; // 14px - Product default body text, forms, navigation, labels\nexport const TYPOGRAPHY_SIZE_M = \"1rem\"; // 16px - h5/h6 in product, default body in marketing, prose body\nexport const TYPOGRAPHY_SIZE_L = \"1.125rem\"; // 18px - h4 in product, hero body/h6 in marketing, h5/blockquote in prose\nexport const TYPOGRAPHY_SIZE_XL = \"1.25rem\"; // 20px - h3 in product, h5/blog body in marketing, h4 in prose\nexport const TYPOGRAPHY_SIZE_2XL = \"1.5rem\"; // 24px - h2 in product, h4 in marketing, h3 in prose\nexport const TYPOGRAPHY_SIZE_3XL = \"1.75rem\"; // 28px - h1 in product, h2 in prose\nexport const TYPOGRAPHY_SIZE_4XL = \"2rem\"; // 32px - h3 in marketing, h1 in prose\nexport const TYPOGRAPHY_SIZE_5XL = \"2.25rem\"; // 36px - h1 hero/empty states in product, h2 in marketing\nexport const TYPOGRAPHY_SIZE_6XL = \"3rem\"; // 48px - Blog h1, large h2 in marketing\nexport const TYPOGRAPHY_SIZE_7XL = \"3.75rem\"; // 60px - Hero h1 in marketing\nexport const TYPOGRAPHY_SIZE_8XL = \"5rem\"; // 80px - Jumbo h1 in marketing\n\nexport const TYPOGRAPHY_SIZE = {\n TYPOGRAPHY_SIZE_2XS,\n TYPOGRAPHY_SIZE_XS,\n TYPOGRAPHY_SIZE_S,\n TYPOGRAPHY_SIZE_M,\n TYPOGRAPHY_SIZE_L,\n TYPOGRAPHY_SIZE_XL,\n TYPOGRAPHY_SIZE_2XL,\n TYPOGRAPHY_SIZE_3XL,\n TYPOGRAPHY_SIZE_4XL,\n TYPOGRAPHY_SIZE_5XL,\n TYPOGRAPHY_SIZE_6XL,\n TYPOGRAPHY_SIZE_7XL,\n TYPOGRAPHY_SIZE_8XL,\n};\n","import React, {\n\tcreateContext,\n\tReactNode,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n} from 'react';\n\ninterface OverlayContextType {\n\tcloseOverlay: () => void;\n\thasOpenOverlay: boolean;\n\topenOverlay: () => void;\n}\n\nexport const OverlayContext = createContext<OverlayContextType | null>(null);\n\nexport const OverlayContextProvider = ({\n\tchildren,\n}: {\n\tchildren: ReactNode;\n}) => {\n\tconst [overlayCount, setOverlayCount] = useState(0);\n\n\tconst openOverlay = useCallback(() => {\n\t\tsetOverlayCount((prev) => prev + 1);\n\t}, []);\n\n\tconst closeOverlay = useCallback(() => {\n\t\tsetOverlayCount((prev) => Math.max(0, prev - 1));\n\t}, []);\n\n\tconst hasOpenOverlay = overlayCount > 0;\n\n\t// Block keyboard shortcuts when overlay is open to prevent them from triggering.\n\t// Add additional keys to the blockedKeys array as needed.\n\tuseEffect(() => {\n\t\tif (!hasOpenOverlay) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\t// List of keys to block when overlays are open\n\t\t\tconst blockedKeys = ['/'];\n\n\t\t\tif (blockedKeys.includes(e.key)) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\t\t};\n\n\t\t// Use capture phase to intercept before other handlers\n\t\tdocument.addEventListener('keydown', handleKeyDown, { capture: true });\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', handleKeyDown, { capture: true });\n\t\t};\n\t}, [hasOpenOverlay]);\n\n\tconst contextValue: OverlayContextType = {\n\t\tcloseOverlay,\n\t\thasOpenOverlay,\n\t\topenOverlay,\n\t};\n\n\treturn (\n\t\t<OverlayContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</OverlayContext.Provider>\n\t);\n};\n\nexport const useOverlayContext = () => {\n\tconst context = useContext(OverlayContext);\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'useOverlayContext must be used within OverlayContextProvider',\n\t\t);\n\t}\n\treturn context;\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport interface UseKeyPressOptions {\n\t/**\n\t * Whether the Alt key must be pressed. Defaults to false.\n\t */\n\taltKey?: boolean;\n\t/**\n\t * Whether the Ctrl key (or Cmd on Mac) must be pressed. Defaults to false.\n\t */\n\tctrlKey?: boolean;\n\t/**\n\t * Whether the hotkey is enabled. Defaults to true.\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Whether the Meta key (Cmd on Mac, Win on Windows) must be pressed. Defaults to false.\n\t */\n\tmetaKey?: boolean;\n\t/**\n\t * Whether the Shift key must be pressed. Defaults to false.\n\t */\n\tshiftKey?: boolean;\n}\n\nexport const useKeyPress = (\n\ttargetKey: string,\n\tcallback?: (event: KeyboardEvent) => void,\n\toptions?: UseKeyPressOptions,\n) => {\n\tconst {\n\t\taltKey = false,\n\t\tctrlKey = false,\n\t\tenabled = true,\n\t\tmetaKey = false,\n\t\tshiftKey = false,\n\t} = options ?? {};\n\tconst [keyPressed, setKeyPressed] = useState(false);\n\n\t// Check if modifier keys match the requirements\n\tconst modifiersMatch = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\treturn (\n\t\t\t\tevent.altKey === altKey &&\n\t\t\t\tevent.ctrlKey === ctrlKey &&\n\t\t\t\tevent.metaKey === metaKey &&\n\t\t\t\tevent.shiftKey === shiftKey\n\t\t\t);\n\t\t},\n\t\t[altKey, ctrlKey, metaKey, shiftKey],\n\t);\n\n\t// Memoized handler for key down events\n\tconst downHandler = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\t// Check if the pressed key matches the target key and modifiers match\n\t\t\tif (event.key === targetKey && modifiersMatch(event)) {\n\t\t\t\tsetKeyPressed(true);\n\n\t\t\t\t// Execute optional callback if provided\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(event);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[targetKey, callback, modifiersMatch],\n\t);\n\n\t// Memoized handler for key up events\n\tconst upHandler = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\tif (event.key === targetKey && modifiersMatch(event)) {\n\t\t\t\tsetKeyPressed(false);\n\t\t\t}\n\t\t},\n\t\t[targetKey, modifiersMatch],\n\t);\n\n\tuseEffect(() => {\n\t\t// Only add event listeners when enabled\n\t\tif (!enabled) return;\n\n\t\t// Add event listeners when the component mounts\n\t\twindow.addEventListener('keydown', downHandler);\n\t\twindow.addEventListener('keyup', upHandler);\n\n\t\t// Cleanup function to remove event listeners when component unmounts\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keydown', downHandler);\n\t\t\twindow.removeEventListener('keyup', upHandler);\n\t\t};\n\t}, [downHandler, upHandler, enabled]);\n\n\t// Return whether the key is currently pressed\n\treturn keyPressed;\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useState } from 'react';\n\nimport {\n\tautoUpdate,\n\tflip,\n\tFloatingPortal,\n\toffset,\n\tPlacement,\n\tshift,\n\tuseDismiss,\n\tuseFloating,\n\tuseFocus,\n\tuseHover,\n\tuseInteractions,\n\tuseRole,\n} from '@floating-ui/react';\nimport { Z_INDEX_OVERLAY } from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { FuiOffset } from '@libs/types/custom-types';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './tooltip.css';\n\ninterface TooltipProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Text to display in tooltip container.\n\t */\n\tcontent: string;\n\t/**\n\t * String or HTML content to use as the trigger instead of an icon. Leave null to use the icon.\n\t */\n\tcustomTrigger?: ReactNode;\n\t/**\n\t * The spacing between the trigger and the tooltip in pixels. Use the default value (in most cases) when using an icon trigger.\n\t */\n\toffsetValue?: FuiOffset;\n\t/**\n\t * The preferred placement of the tooltip relative to the trigger.\n\t */\n\tpreferredPlacement?: Placement;\n\t/**\n\t * The accessible text for the trigger. Only necessary when the trigger is an icon.\n\t */\n\ttriggerAccessibleText?: string;\n\t/**\n\t * Icon to trigger tooltip\n\t */\n\ttriggerIcon?: 'circleInfo' | 'circleQuestion' | 'circleExclamation';\n\t/**\n\t * Color of the trigger icon. Uses PDS default text color options.\n\t */\n\ttriggerIconColor?: 'default' | 'default-secondary' | 'critical';\n\t/**\n\t * Size of the trigger icon. Uses PDS Icon sizing.\n\t */\n\ttriggerIconSize?: 's' | 'm' | 'l';\n\t/**\n\t * Z-index value for the tooltip container. In most cases, the default value should be retained.\n\t */\n\tzIndex?: number;\n}\n\n/**\n * Tooltip UI component\n */\nexport const Tooltip = ({\n\tclassName,\n\tcontent,\n\tcustomTrigger = null,\n\toffsetValue = 8,\n\tpreferredPlacement = 'top',\n\ttriggerAccessibleText = 'Show more information',\n\ttriggerIcon = 'circleInfo',\n\ttriggerIconColor = 'default',\n\ttriggerIconSize = 's',\n\tzIndex = Z_INDEX_OVERLAY,\n\t...props\n}: TooltipProps) => {\n\t// Set up state.\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\t// Get type of custom trigger.\n\tconst triggerType = typeof customTrigger;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-tooltip';\n\tconst customTriggerClasses = mergeClasses([\n\t\t`${baseClass}__trigger-custom`,\n\t\ttriggerType === 'string' ? `${baseClass}__trigger-text` : null,\n\t]);\n\tconst iconTriggerClasses = mergeClasses([\n\t\t`${baseClass}__trigger`,\n\t\t`${baseClass}__trigger--${triggerIconColor}`,\n\t]);\n\n\t// FUI config.\n\tconst { context, floatingStyles, refs } = useFloating({\n\t\tplacement: preferredPlacement,\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\tmiddleware: [offset(offsetValue), flip(), shift()],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst hover = useHover(context, {\n\t\trestMs: 300,\n\t\tdelay: { open: 100, close: 0 },\n\t\tmove: false,\n\t});\n\tconst focus = useFocus(context);\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'tooltip' });\n\n\tconst { getFloatingProps, getReferenceProps } = useInteractions([\n\t\thover,\n\t\tfocus,\n\t\tdismiss,\n\t\trole,\n\t]);\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{customTrigger ? (\n\t\t\t\t<span\n\t\t\t\t\tref={refs.setReference}\n\t\t\t\t\tclassName={customTriggerClasses}\n\t\t\t\t\t{...getReferenceProps()}\n\t\t\t\t>\n\t\t\t\t\t{customTrigger}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\t<button\n\t\t\t\t\tref={refs.setReference}\n\t\t\t\t\taria-label={triggerAccessibleText}\n\t\t\t\t\tclassName={iconTriggerClasses}\n\t\t\t\t\ttype='button'\n\t\t\t\t\t{...getReferenceProps()}\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\ticonName={triggerIcon}\n\t\t\t\t\t\ticonSize={triggerIconSize}\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t)}\n\t\t\t<FloatingPortal>\n\t\t\t\t<div\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\taria-hidden={!isOpen}\n\t\t\t\t\tclassName={`${baseClass}__container`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\tzIndex: zIndex,\n\t\t\t\t\t\topacity: isOpen ? 1 : 0,\n\t\t\t\t\t\tpointerEvents: isOpen ? 'auto' : 'none',\n\t\t\t\t\t\ttransition: 'var(--pds-animation-transition-reveal)',\n\t\t\t\t\t}}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</div>\n\t\t\t</FloatingPortal>\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tforwardRef,\n\tMouseEventHandler,\n\tReactNode,\n\tRef,\n} from 'react';\n\nimport { useId } from '@floating-ui/react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { useOverlayContext } from '@utilities/context-providers/OverlayContext/OverlayContext';\nimport { useKeyPress } from '@utilities/hooks/useKeyPress/useKeyPress';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport { SelectOptionGroupType, SelectOptionType } from './Select/Select';\n\nimport './input-utilities.css';\n\n// Input conditional field classes.\nexport const inputCommonClasses = {\n\tbase: 'pds-input',\n\tdisabled: 'pds-is-disabled',\n\trequired: 'pds-is-required',\n\terror: 'pds-has-error',\n\tsuccess: 'pds-has-success',\n\treadonly: 'pds-is-readonly',\n};\n\n// Process input width. Convert to rems.\nexport const getInputWidthStyle = (inputWidth: number) =>\n\tinputWidth ? { maxWidth: `${inputWidth / 16}rem` } : null;\n\n// Function to strip http:// or https:// from input value\nexport const stripUrlProtocol = (value: string): string => {\n\treturn value.replace(/^(https?:\\/\\/)/, '');\n};\n\n// Required Icon.\nexport const RequiredIcon = () => (\n\t<span className='pds-input-label__required'>\n\t\t<Icon\n\t\t\tclassName='pds-input-label__required-icon'\n\t\t\ticonName='asterisk'\n\t\t\ticonSize='s'\n\t\t/>\n\t</span>\n);\n\n// InputLabel component.\ninterface InputLabelProps {\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled: boolean;\n\t/**\n\t * Input ID.\n\t */\n\tid: string;\n\t/**\n\t * Is the label a legend? Should be used when the input is a fieldset.\n\t */\n\tisLegend?: boolean;\n\t/**\n\t * Not a true `label`, but a description of the field.\n\t * Used for inputs that have their label built into the element itself.\n\t */\n\tisPseudoLabel?: boolean;\n\t/**\n\t * Label text.\n\t */\n\tlabel: string;\n\t/**\n\t * Is the field required?\n\t */\n\trequired: boolean;\n\t/**\n\t * Should the label be visible?\n\t */\n\tshowLabel: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string;\n}\n\nexport const InputLabel = ({\n\tclassName,\n\tdisabled,\n\tid,\n\tisLegend,\n\tisPseudoLabel,\n\tlabel,\n\trequired,\n\tshowLabel = true,\n\ttooltipText = null,\n}: InputLabelProps) => {\n\tconst labelClasses = mergeClasses([\n\t\t'pds-input-label',\n\t\t!showLabel ? 'visually-hidden' : null,\n\t\tclassName ?? '',\n\t]);\n\n\tconst labelContent = (\n\t\t<>\n\t\t\t{label}\n\t\t\t{required && !disabled && <RequiredIcon />}\n\t\t\t{tooltipText && (\n\t\t\t\t<Tooltip content={tooltipText}>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<Icon iconName='circleInfo' iconSize='s' />\n\t\t\t\t\t</span>\n\t\t\t\t</Tooltip>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// If it's a legend, return a legend element.\n\tif (isLegend) {\n\t\treturn (\n\t\t\t<legend className={labelClasses} id={`${id}-legend`}>\n\t\t\t\t{labelContent}\n\t\t\t</legend>\n\t\t);\n\t}\n\n\t// If it's a pseudo label, return a span element.\n\tif (isPseudoLabel) {\n\t\treturn (\n\t\t\t<span className={labelClasses} id={`${id}-field-label`}>\n\t\t\t\t{labelContent}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t// Otherwise, return a label element.\n\treturn (\n\t\t<label className={labelClasses} htmlFor={id} id={`${id}-label`}>\n\t\t\t{labelContent}\n\t\t</label>\n\t);\n};\n\n// InputMessage component.\nexport const InputMessage = ({\n\tclassName,\n\tforInputGroup = false,\n\thasValidationMessage,\n\tid,\n\tmessage,\n\tvalidationMessageHasDecorators,\n\tvalidationStatus,\n}: {\n\tclassName?: string;\n\tforInputGroup?: boolean;\n\thasValidationMessage?: boolean;\n\tid: string;\n\tmessage?: string | ReactNode;\n\tvalidationMessageHasDecorators?: boolean;\n\tvalidationStatus?: string;\n}) => {\n\tconst baseClass = 'pds-input-message';\n\tconst statusClass =\n\t\tvalidationStatus && hasValidationMessage\n\t\t\t? `${baseClass}--${validationStatus}`\n\t\t\t: null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, statusClass, className ?? ''])}\n\t\t\tid={forInputGroup ? `${id}__message-hidden` : `${id}__message`}\n\t\t\trole={validationStatus === 'error' ? 'alert' : null}\n\t\t>\n\t\t\t{validationMessageHasDecorators && validationStatus && (\n\t\t\t\t<InputDecorator variant={validationStatus as DecoratorVariants} />\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__text`}>{message}</div>\n\t\t</div>\n\t);\n};\n\n// InputDecorator component.\ntype DecoratorVariants = 'search' | 'error' | 'success' | 'filter';\n\nconst iconVariants: Record<DecoratorVariants, PDSIcon> = {\n\tsearch: 'magnifyingGlass',\n\terror: 'triangleExclamation',\n\tsuccess: 'check',\n\tfilter: 'barsFilter',\n};\n\nexport const InputDecorator = ({ variant }: { variant: DecoratorVariants }) => {\n\tconst baseClass = 'pds-input-decorator';\n\n\treturn (\n\t\t<div className={mergeClasses([baseClass, `${baseClass}--${variant}`])}>\n\t\t\t<Icon\n\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\ticonName={iconVariants[variant]}\n\t\t\t\ticonSize='m'\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\n// SearchShortcut component.\nexport const SearchShortcut = ({\n\tinputId,\n\tshortcutLabel,\n}: {\n\tinputId: string;\n\tshortcutLabel: string;\n}) => {\n\t// Get overlay context.\n\tconst { hasOpenOverlay } = useOverlayContext();\n\n\t// Handle search shortcut.\n\tconst handleSearchShortcut = (e: KeyboardEvent) => {\n\t\tconst element = document.getElementById(inputId);\n\t\tif (element) {\n\t\t\telement.focus();\n\t\t}\n\t\te.preventDefault();\n\t};\n\n\t// Set up search shortcut hotkey.\n\t// Disabled when an overlay (modal, mobile menu, etc.) is open.\n\t// The \"/\" key is globally blocked at the OverlayContext level when overlays are open.\n\tuseKeyPress('/', handleSearchShortcut, {\n\t\tenabled: !hasOpenOverlay,\n\t});\n\n\treturn (\n\t\t<div className='pds-input-search-shortcut'>\n\t\t\t<span className='visually-hidden'>{shortcutLabel}</span>\n\t\t\t<Icon iconName='slashForward' iconSize='m' />\n\t\t</div>\n\t);\n};\n\n// ClearButton component.\nexport const ClearButton = ({\n\tclearLabel,\n\thandleClearInput,\n\tid,\n}: {\n\tclearLabel: string;\n\thandleClearInput: MouseEventHandler<HTMLButtonElement>;\n\tid: string;\n}) => {\n\treturn (\n\t\t<button\n\t\t\taria-controls={id}\n\t\t\tclassName='pds-input-clear-button'\n\t\t\tonClick={handleClearInput}\n\t\t\ttitle={clearLabel}\n\t\t\ttype='button'\n\t\t>\n\t\t\t<Icon iconName='xmark' iconSize='m' />\n\t\t</button>\n\t);\n};\n\n// CharacterCounter component.\nexport const CharacterCounter = ({\n\tcurrentLength,\n\tid,\n\tmaxLength,\n\toverLimitMessage = 'Character limit exceeded by',\n}: {\n\tcurrentLength: number;\n\tid: string;\n\tmaxLength: number;\n\toverLimitMessage: string;\n}) => {\n\tconst isOverLimit = currentLength > maxLength;\n\tconst overLimitCount = currentLength - maxLength;\n\n\tconst baseClass = 'pds-input-character-counter';\n\tconst overLimitClass = isOverLimit ? `${baseClass}--overLimit` : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, overLimitClass])}\n\t\t\tid={`${id}__counter`}\n\t\t>\n\t\t\t{currentLength}/{maxLength}\n\t\t\t<span aria-live='polite' className='visually-hidden'>\n\t\t\t\t{isOverLimit && `${overLimitMessage} ${overLimitCount}`}\n\t\t\t</span>\n\t\t</div>\n\t);\n};\n\n// HiddenLabel component.\nexport const HiddenLabel = ({ label, ...props }) => (\n\t<span className='visually-hidden' {...props}>\n\t\t{label}\n\t</span>\n);\n\n// Select option group component.\nexport const isOptionGroup = (\n\toption: SelectOptionType | SelectOptionGroupType,\n): option is SelectOptionGroupType => {\n\treturn 'options' in option;\n};\n\n// Select option component.\n// For use with Combobox and Select components.\ninterface SelectOptionProps extends ComponentPropsWithoutRef<'li'> {\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tisActive?: boolean;\n}\n\nexport const SelectOption = forwardRef(\n\t(\n\t\t{ children, className, isActive, ...props }: SelectOptionProps,\n\t\tref: Ref<HTMLLIElement>,\n\t) => {\n\t\tconst id = useId();\n\n\t\tconst baseClass = 'pds-input__select-option';\n\t\tconst activeClass = isActive ? `${baseClass}--active` : null;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tref={ref}\n\t\t\t\taria-selected={isActive}\n\t\t\t\tclassName={mergeClasses([baseClass, activeClass, className ?? ''])}\n\t\t\t\tid={id}\n\t\t\t\trole='option'\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</li>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef, CSSProperties } from 'react';\n\nimport {\n\tSPACING_2XL,\n\tSPACING_3XL,\n\tSPACING_4XL,\n\tSPACING_5XL,\n\tSPACING_6XL,\n\tSPACING_L,\n\tSPACING_M,\n\tSPACING_S,\n\tSPACING_XL,\n\tSPACING_XS,\n} from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\nimport {\n\tTYPOGRAPHY_SIZE_M,\n\tTYPOGRAPHY_SIZE_S,\n\tTYPOGRAPHY_SIZE_XS,\n} from '@pantheon-systems/pds-design-tokens/build/js/variables.typography.js';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { HiddenLabel } from '@components/inputs/input-utilities';\n\nexport type SpinnerSize =\n\t| 's'\n\t| 'm'\n\t| 'l'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| '6xl';\n\nexport type SpinnerColorType =\n\t| 'full-color'\n\t| 'monochromatic'\n\t| 'monochromatic-reverse';\n\nimport './spinner.css';\n\nexport interface SpinnerProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Spinner color\n\t */\n\tcolorType?: SpinnerColorType;\n\t/**\n\t * Should the spinner be an inline element? If true, it will be displayed inline-block without a visible label.\n\t */\n\tisInline?: boolean;\n\t/**\n\t * Spinner label. Will be displayed below the Spinner if `showLabel` is true.\n\t */\n\tlabel?: string;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Spinner size\n\t */\n\tsize?: SpinnerSize;\n}\n\n// Size mapping for spinner dimensions\nconst spinnerSizes: Record<SpinnerSize, string> = {\n\ts: SPACING_S,\n\tm: SPACING_M,\n\tl: SPACING_L,\n\txl: SPACING_XL,\n\t'2xl': SPACING_2XL,\n\t'3xl': SPACING_3XL,\n\t'4xl': SPACING_4XL,\n\t'5xl': SPACING_5XL,\n\t'6xl': SPACING_6XL,\n};\n\n// Font size mapping for labels\nconst labelFontSizes: Record<SpinnerSize, string> = {\n\ts: TYPOGRAPHY_SIZE_XS,\n\tm: TYPOGRAPHY_SIZE_XS,\n\tl: TYPOGRAPHY_SIZE_XS,\n\txl: TYPOGRAPHY_SIZE_XS,\n\t'2xl': TYPOGRAPHY_SIZE_XS,\n\t'3xl': TYPOGRAPHY_SIZE_S,\n\t'4xl': TYPOGRAPHY_SIZE_S,\n\t'5xl': TYPOGRAPHY_SIZE_M,\n\t'6xl': TYPOGRAPHY_SIZE_M,\n};\n\n// Label margin mapping\nconst labelMargins: Record<SpinnerSize, string> = {\n\ts: SPACING_XS,\n\tm: SPACING_XS,\n\tl: SPACING_XS,\n\txl: SPACING_XS,\n\t'2xl': SPACING_XS,\n\t'3xl': SPACING_S,\n\t'4xl': SPACING_S,\n\t'5xl': SPACING_M,\n\t'6xl': SPACING_L,\n};\n\n/**\n * Spinner UI component\n */\nexport const Spinner = ({\n\tclassName = '',\n\tcolorType = 'full-color',\n\tisInline = false,\n\tlabel = 'Loading',\n\tshowLabel = false,\n\tsize = '3xl',\n\t...props\n}: SpinnerProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-spinner';\n\tconst colorClass =\n\t\tcolorType !== 'full-color' ? `${baseClass}--${colorType}` : null;\n\tconst displayClass = isInline ? `${baseClass}--inline` : null;\n\n\t// Get size values\n\tconst spinnerSize = spinnerSizes[size];\n\tconst fontSize = labelFontSizes[size];\n\tconst labelMargin = labelMargins[size];\n\n\t// Calculate line width: 12% of size, rounded up to nearest pixel\n\tconst lineWidth = Math.ceil(parseFloat(spinnerSize) * 16 * 0.13);\n\n\t// Create inline styles for sizing\n\tconst spinnerStyles = {\n\t\t'--spinner-size': spinnerSize,\n\t\t'--spinner-line': `${lineWidth}px`,\n\t} as CSSProperties;\n\n\tconst labelStyles = {\n\t\tfontSize: fontSize,\n\t\tmarginBlockStart: labelMargin,\n\t} as CSSProperties;\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\taria-hidden='true'\n\t\t\tclassName={mergeClasses([baseClass, colorClass, displayClass, className])}\n\t\t\trole='status'\n\t\t\tstyle={spinnerStyles}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className={`${baseClass}__icon`}></span>\n\t\t\t{showLabel && !isInline ? (\n\t\t\t\t<span className={`${baseClass}__label`} style={labelStyles}>\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\t<HiddenLabel label={label} />\n\t\t\t)}\n\t\t</span>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tforwardRef,\n\tMouseEvent,\n\tReactNode,\n\tRef,\n} from 'react';\n\nimport { extractText } from '@libs/components/utility-components';\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tButtonDisplayType,\n\tButtonSize,\n\tButtonType,\n\tButtonVariant,\n\tIconSize,\n} from '@libs/types/custom-types';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport {\n\tSpinner,\n\tSpinnerColorType,\n\tSpinnerSize,\n} from '@components/loading-indicators/Spinner/Spinner';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './button.css';\n\ninterface ButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Type of button\n\t */\n\tbuttonType?: ButtonType;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * How the button is displayed.\n\t */\n\tdisplayType?: ButtonDisplayType;\n\t/**\n\t * Which icon to render\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * is the button full width?\n\t */\n\tisFullWidth?: boolean;\n\t/**\n\t * Is the button in the process of an initial load?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Will this be used for a split button?\n\t */\n\tisSplitButton?: boolean;\n\t/**\n\t * Is the button in a working state?\n\t */\n\tisWorking?: boolean;\n\t/**\n\t * The text of the button\n\t */\n\tlabel: ReactNode;\n\t/**\n\t * Click event handler callback\n\t */\n\tonClick?: (e: MouseEvent<HTMLElement>) => void;\n\t/**\n\t * Which size of button to render\n\t * @default 's'\n\t */\n\tsize?: ButtonSize;\n\t/**\n\t * Text for an optional tooltip to be displayed when the button is `disabled`, `isLoading`, or `isWorking`.\n\t */\n\ttooltipText?: string;\n\n\t/**\n\t * Which variant of button to render\n\t */\n\tvariant?: ButtonVariant;\n}\n\n/**\n * A Component used to render a Button\n */\nexport const Button = forwardRef(\n\t(\n\t\t{\n\t\t\tariaLabel,\n\t\t\tbuttonType = 'button',\n\t\t\tclassName = '',\n\t\t\tdisabled = false,\n\t\t\tdisplayType = 'label-only',\n\t\t\ticonName,\n\t\t\tisFullWidth = false,\n\t\t\tisLoading = false,\n\t\t\tisSplitButton = false,\n\t\t\tisWorking = false,\n\t\t\tlabel,\n\t\t\tonClick,\n\t\t\tsize = 's',\n\t\t\ttooltipText,\n\t\t\tvariant = 'primary',\n\t\t\t...props\n\t\t}: ButtonProps,\n\t\tref: Ref<HTMLButtonElement>,\n\t) => {\n\t\t// The xl size is only supported for primary and secondary variants\n\t\t// For other variants, automatically fallback to l size\n\t\tlet effectiveSize = size;\n\t\tif (size === 'xl' && variant !== 'primary' && variant !== 'secondary') {\n\t\t\teffectiveSize = 'l';\n\t\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`Button: The 'xl' size is only supported for 'primary' and 'secondary' variants. Falling back to 'l' size for variant '${variant}'.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-button';\n\t\tconst sizeClass = `${baseClass}--${effectiveSize}`;\n\t\tconst variantClass = `${baseClass}--${variant}`;\n\t\tconst fullWidthClass = isFullWidth ? `${baseClass}--full-width` : null;\n\t\tconst loadingClass = isLoading ? `${baseClass}--loading` : null;\n\t\tconst pulseClass = isLoading ? 'pds-pulse' : null;\n\n\t\t// Map button sizes to icon and spinner sizes.\n\t\tlet setIconSize: IconSize;\n\t\tlet setSpinnerSize: SpinnerSize;\n\t\tswitch (effectiveSize) {\n\t\t\tcase 'xs':\n\t\t\t\tsetIconSize = 's';\n\t\t\t\tsetSpinnerSize = 's';\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetSpinnerSize = 'm';\n\t\t\t\tbreak;\n\t\t\tcase 'm':\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetSpinnerSize = 'm';\n\t\t\t\tbreak;\n\t\t\tcase 'l':\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetSpinnerSize = 'l';\n\t\t\t\tbreak;\n\t\t\tcase 'xl':\n\t\t\t\tsetIconSize = 'l';\n\t\t\t\tsetSpinnerSize = 'l';\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Map spinner colors based on button variant.\n\t\tlet setSpinnerColor: SpinnerColorType = 'monochromatic';\n\t\tconst reverseVariants: ButtonVariant[] = ['primary'];\n\t\tif (reverseVariants.includes(variant)) {\n\t\t\tsetSpinnerColor = 'monochromatic-reverse';\n\t\t}\n\n\t\t// Render the chosen icon\n\t\tconst renderedIcon = (\n\t\t\t<Icon\n\t\t\t\tkey='icon'\n\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\ticonName={iconName}\n\t\t\t\ticonSize={setIconSize}\n\t\t\t/>\n\t\t);\n\n\t\t// Set content of the button based on displayType.\n\t\tlet buttonContent = [label];\n\n\t\tif (displayType == 'icon-start' && iconName) {\n\t\t\tbuttonContent.unshift(renderedIcon);\n\t\t}\n\t\tif (displayType == 'icon-end' && iconName) {\n\t\t\tbuttonContent.push(renderedIcon);\n\t\t}\n\n\t\t// Use label as aria-label when used as a split button.\n\t\tif (isSplitButton) {\n\t\t\tbuttonContent = [renderedIcon];\n\t\t\tariaLabel = extractText(label);\n\t\t}\n\n\t\t// Preprocess the button element.\n\t\tconst buttonElement = (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tvariantClass,\n\t\t\t\t\tfullWidthClass,\n\t\t\t\t\tloadingClass,\n\t\t\t\t\tpulseClass,\n\t\t\t\t\tclassName,\n\t\t\t\t])}\n\t\t\t\tdisabled={disabled || isLoading || isWorking}\n\t\t\t\tonClick={onClick}\n\t\t\t\ttype={buttonType}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isWorking && !isLoading && (\n\t\t\t\t\t<Spinner\n\t\t\t\t\t\tclassName={`${baseClass}__working-indicator`}\n\t\t\t\t\t\tcolorType={setSpinnerColor}\n\t\t\t\t\t\tsize={setSpinnerSize}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{buttonContent}\n\t\t\t</button>\n\t\t);\n\n\t\treturn (disabled || isLoading || isWorking) && tooltipText ? (\n\t\t\t<Tooltip content={tooltipText} customTrigger={buttonElement} />\n\t\t) : (\n\t\t\t<>{buttonElement}</>\n\t\t);\n\t},\n);\n","import React, {\n\tcloneElement,\n\tComponentPropsWithoutRef,\n\tisValidElement,\n\tReactElement,\n\tReactNode,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tButtonDisplayType,\n\tButtonSize,\n\tButtonVariant,\n\tIconSize,\n} from '@libs/types/custom-types';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport '../Button/button.css';\nimport './button-link.css';\n\ntype ButtonLinkVariant = Exclude<ButtonVariant, 'navbar' | 'inline'>;\n\n/**\n * Prop types for ButtonLink\n */\nexport interface ButtonLinkProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the link disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Display type of the button.\n\t */\n\tdisplayType?: ButtonDisplayType;\n\t/**\n\t * Icon to render in the button. Only necessary if `displayType` is 'icon-start' or 'icon-end'.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * A link element using the router of your choice.\n\t */\n\tlinkContent: ReactNode;\n\t/**\n\t * Size of the button.\n\t */\n\tsize?: ButtonSize;\n\t/**\n\t * Text for an optional tooltip to be displayed when the button is `disabled`.\n\t */\n\ttooltipText?: string;\n\t/**\n\t * Variant of the button.\n\t */\n\tvariant?: ButtonLinkVariant;\n}\n\n/**\n * ButtonLink UI component\n */\nexport const ButtonLink = ({\n\tclassName,\n\tdisabled = false,\n\tdisplayType = 'label-only',\n\ticonName,\n\tlinkContent,\n\tsize = 's',\n\ttooltipText,\n\tvariant = 'primary',\n\t...props\n}: ButtonLinkProps) => {\n\t// The xl size is only supported for primary and secondary variants\n\t// For other variants, automatically fallback to l size\n\tlet effectiveSize = size;\n\tif (size === 'xl' && variant !== 'primary' && variant !== 'secondary') {\n\t\teffectiveSize = 'l';\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.warn(\n\t\t\t\t`ButtonLink: The 'xl' size is only supported for 'primary' and 'secondary' variants. Falling back to 'l' size for variant '${variant}'.`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-button-link';\n\tconst buttonBaseClass = 'pds-button';\n\tconst sizeClass = `${buttonBaseClass}--${effectiveSize}`;\n\tconst variantClass = `${buttonBaseClass}--${variant}`;\n\tconst buttonModifierClasses = mergeClasses([\n\t\tbuttonBaseClass,\n\t\tsizeClass,\n\t\tvariantClass,\n\t]);\n\n\t// Get the label text from the link element.\n\tconst linkText = isValidElement(linkContent)\n\t\t? (linkContent.props as { children: ReactNode }).children\n\t\t: null;\n\n\t// Map button sizes to icon sizes.\n\tlet setIconSize: IconSize;\n\tswitch (effectiveSize) {\n\t\tcase 'xs':\n\t\t\tsetIconSize = 's';\n\t\t\tbreak;\n\t\tcase 's':\n\t\t\tsetIconSize = 'm';\n\t\t\tbreak;\n\t\tcase 'm':\n\t\t\tsetIconSize = 'm';\n\t\t\tbreak;\n\t\tcase 'l':\n\t\t\tsetIconSize = 'm';\n\t\t\tbreak;\n\t\tcase 'xl':\n\t\t\tsetIconSize = 'l';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tsetIconSize = 'm';\n\t\t\tbreak;\n\t}\n\n\t// Render the chosen icon\n\tconst renderedIcon = (\n\t\t<Icon\n\t\t\tkey={iconName}\n\t\t\tclassName={`${baseClass}__icon`}\n\t\t\ticonName={iconName}\n\t\t\ticonSize={setIconSize}\n\t\t/>\n\t);\n\n\t// Add the icon to the button if necessary.\n\tlet linkLabel = [linkText];\n\tif (displayType === 'icon-start' && iconName) {\n\t\tlinkLabel = [renderedIcon, linkText];\n\t} else if (displayType === 'icon-end' && iconName) {\n\t\tlinkLabel = [linkText, renderedIcon];\n\t}\n\n\t// Clone the original link element so that we can add the appropriate classes and children to it.\n\tconst processedLink = isValidElement(linkContent)\n\t\t? cloneElement(\n\t\t\t\tlinkContent as ReactElement,\n\t\t\t\tObject.assign({}, linkContent.props, {\n\t\t\t\t\tclassName: buttonModifierClasses,\n\t\t\t\t\tchildren: linkLabel,\n\t\t\t\t}),\n\t\t\t)\n\t\t: null;\n\n\t// If the ButtonLink is disabled, render a disabled regular button.\n\tif (disabled) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tdisabled\n\t\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t\tlabel={linkLabel}\n\t\t\t\tsize={size}\n\t\t\t\ttooltipText={tooltipText ?? null}\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// If not disabled, render the output.\n\treturn (\n\t\t<span className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{processedLink}\n\t\t</span>\n\t);\n};\n","import { useEffect, useState } from 'react';\n\ninterface ClipboardOptions {\n\tduration?: number;\n}\n\ntype UseClipboardReturn = [boolean, () => Promise<void>];\n\nexport const useClipboard = (\n\ttext: string,\n\toptions?: ClipboardOptions,\n): UseClipboardReturn => {\n\tconst [isCopied, setIsCopied] = useState<boolean>(false);\n\tconst duration = options?.duration;\n\n\tuseEffect(() => {\n\t\tlet id: NodeJS.Timeout | undefined;\n\n\t\tif (isCopied && duration) {\n\t\t\tid = setTimeout(() => {\n\t\t\t\tsetIsCopied(false);\n\t\t\t}, duration);\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (id) {\n\t\t\t\tclearTimeout(id);\n\t\t\t}\n\t\t};\n\t}, [isCopied, duration]);\n\n\tconst doCopy = async () => {\n\t\tif (navigator.clipboard) {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(text);\n\t\t\t\tsetIsCopied(true);\n\t\t\t} catch {\n\t\t\t\t// Intentionally ignore clipboard write errors\n\t\t\t}\n\t\t}\n\t};\n\n\treturn [isCopied, doCopy];\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tforwardRef,\n\tMouseEvent,\n\tRef,\n\tuseRef,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ButtonType, IconSize } from '@libs/types/custom-types';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './icon-button.css';\n\ntype IconButtonSize = 's' | 'm';\n\ninterface IconButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Type of button\n\t */\n\tbuttonType?: ButtonType;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Show tooltip on hover. If false, the title attribute will be used.\n\t */\n\thasTooltip?: boolean;\n\t/**\n\t * Which icon to render second. If this is set, the button will be animated.\n\t */\n\ticon2Name?: PDSIcon;\n\t/**\n\t * Which icon to render.\n\t */\n\ticonName: PDSIcon;\n\t/**\n\t * Click event handler callback.\n\t */\n\tonClick?: (e: MouseEvent<HTMLElement>) => void;\n\t/**\n\t * Which size of button to render.\n\t */\n\tsize?: IconButtonSize;\n\t/**\n\t * Which variant of button to render.\n\t */\n\tvariant?: 'standard' | 'reverse' | 'critical';\n}\n\n/**\n * IconButton UI component\n */\nexport const IconButton = forwardRef(\n\t(\n\t\t{\n\t\t\tariaLabel,\n\t\t\tbuttonType = 'button',\n\t\t\tclassName,\n\t\t\tdisabled = false,\n\t\t\thasTooltip = true,\n\t\t\ticon2Name = null,\n\t\t\ticonName,\n\t\t\tonClick,\n\t\t\tsize = 's',\n\t\t\tvariant = 'standard',\n\t\t\t...props\n\t\t}: IconButtonProps,\n\t\tref: Ref<HTMLButtonElement>,\n\t) => {\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-icon-button';\n\t\tconst sizeClass = size !== 's' ? `${baseClass}--${size}` : null;\n\t\tconst variantClass =\n\t\t\tvariant !== 'standard' ? `${baseClass}--${variant}` : null;\n\n\t\tconst animationClasses = {\n\t\t\tfadeOut: `${baseClass}--fadeOut`,\n\t\t\thide: `${baseClass}--hide`,\n\t\t\tscaleIn: `${baseClass}--scaleIn`,\n\t\t};\n\n\t\t// Map button sizes to icon sizes and offset values.\n\t\tlet setOffsetValue: number;\n\t\tlet setIconSize: IconSize;\n\t\tswitch (size) {\n\t\t\tcase 's':\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetOffsetValue = 8;\n\t\t\t\tbreak;\n\t\t\tcase 'm':\n\t\t\t\tsetIconSize = 'l';\n\t\t\t\tsetOffsetValue = 11;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetOffsetValue = 8;\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// If there is a second icon, the button will be animated.\n\t\tconst isAnimated = icon2Name !== null;\n\n\t\t// Set up refs for the two icons.\n\t\tconst icon1Ref = useRef(null);\n\t\tconst icon2Ref = useRef(null);\n\n\t\t// Set up the animation transitions.\n\t\tconst handleAnimation = () => {\n\t\t\ticon1Ref.current.classList.add(animationClasses.fadeOut);\n\t\t\ticon1Ref.current.classList.add(animationClasses.hide);\n\n\t\t\ticon2Ref.current.classList.remove(animationClasses.hide);\n\t\t\ticon2Ref.current.classList.add(animationClasses.scaleIn);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\ticon1Ref.current.classList.remove(\n\t\t\t\t\tanimationClasses.fadeOut,\n\t\t\t\t\tanimationClasses.hide,\n\t\t\t\t);\n\t\t\t\ticon1Ref.current.classList.add(animationClasses.scaleIn);\n\n\t\t\t\ticon2Ref.current.classList.remove(animationClasses.scaleIn);\n\t\t\t\ticon2Ref.current.classList.add(animationClasses.hide);\n\t\t\t}, 2000);\n\t\t};\n\n\t\t// Handle click.\n\t\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\t\tif (isAnimated) {\n\t\t\t\thandleAnimation();\n\t\t\t}\n\n\t\t\tif (onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t};\n\n\t\t// Preprocess button content.\n\t\tconst buttonContent = isAnimated ? (\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<div ref={icon1Ref} className={`${baseClass}__icon-wrapper`}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\ticonName={iconName}\n\t\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tref={icon2Ref}\n\t\t\t\t\tclassName={`${baseClass}__icon-wrapper ${animationClasses.hide}`}\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\ticonName={icon2Name}\n\t\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t) : (\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\ticonName={iconName}\n\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tvariantClass,\n\t\t\t\t\tclassName,\n\t\t\t\t])}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={handleClick}\n\t\t\t\ttitle={hasTooltip && !disabled ? null : ariaLabel}\n\t\t\t\ttype={buttonType}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{hasTooltip && !disabled ? (\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tclassName={`${baseClass}__tooltip`}\n\t\t\t\t\t\tcontent={ariaLabel}\n\t\t\t\t\t\tcustomTrigger={buttonContent}\n\t\t\t\t\t\toffsetValue={setOffsetValue}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\tbuttonContent\n\t\t\t\t)}\n\t\t\t</button>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { useClipboard } from '@utilities/hooks/useClipboard/useClipboard';\n\nimport { IconButton } from '@components/buttons/IconButton/IconButton';\n\n/**\n * Prop types for ClipboardButton\n */\nexport interface ClipboardButtonProps\n\textends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Translation string for aria-label attribute and tooltip text.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Text to copy to clipboard.\n\t */\n\tclipboardText?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Which variant of button to render.\n\t */\n\tvariant?: 'standard' | 'reverse';\n}\n\n/**\n * ClipboardButton UI component\n */\nexport const ClipboardButton = ({\n\tariaLabel = 'Copy to clipboard',\n\tclassName,\n\tclipboardText = '',\n\tdisabled,\n\tvariant = 'standard',\n\t...props\n}: ClipboardButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-clipboard-button';\n\n\t// Set up clipboard hook.\n\tconst [_isCopied, setIsCopied] = useClipboard(clipboardText);\n\n\t// Render the output\n\treturn (\n\t\t<IconButton\n\t\t\tariaLabel={ariaLabel}\n\t\t\tbuttonType='button'\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\tdisabled={disabled}\n\t\t\ticon2Name='check'\n\t\t\ticonName='copy'\n\t\t\tonClick={setIsCopied}\n\t\t\tsize='m'\n\t\t\tvariant={variant}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './close-button.css';\n\n/**\n * Prop types for CloseButton\n */\nexport interface CloseButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Click event callback function.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Size of the icon.\n\t */\n\tsize?: 'm' | 'l' | 'xl';\n}\n\n/**\n * CloseButton UI component\n */\nexport const CloseButton = ({\n\tariaLabel = 'Close',\n\tclassName,\n\tonClick,\n\tsize = 'l',\n\t...props\n}: CloseButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-close-button';\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Render the output\n\treturn (\n\t\t<button\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, sizeClass, className ?? ''])}\n\t\t\tonClick={onClick}\n\t\t\ttype='button'\n\t\t\t{...props}\n\t\t>\n\t\t\t<Icon className={`${baseClass}__icon`} iconName='xmarkLarge' />\n\t\t</button>\n\t);\n};\n","import { ReactNode } from 'react';\n\nimport { PDSIcon } from '@components/icons/Icon/Icon';\n\n// Badge color options.\nexport type BadgeColor =\n\t| 'success'\n\t| 'critical'\n\t| 'info'\n\t| 'warning'\n\t| 'neutral'\n\t| 'brand'\n\t| 'silver'\n\t| 'gold'\n\t| 'platinum'\n\t| 'diamond';\n\n// Common button types.\nexport type ButtonDisplayType = 'label-only' | 'icon-start' | 'icon-end';\n\nexport type ButtonSize = 'xs' | 's' | 'm' | 'l' | 'xl';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\nexport type ButtonVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'subtle'\n\t| 'brand'\n\t| 'accent'\n\t| 'reverse'\n\t| 'critical'\n\t| 'critical-secondary'\n\t| 'navbar'\n\t| 'inline';\n\n// Standard container width options.\nexport type ContainerWidth = 'narrow' | 'standard' | 'wide' | 'x-wide' | 'full';\n\nexport type Display =\n\t| 'block'\n\t| 'inline'\n\t| 'inline-block'\n\t| 'flex'\n\t| 'inline-flex'\n\t| 'grid'\n\t| 'inline-grid'\n\t| 'flow-root'\n\t| 'none'\n\t| 'contents'\n\t| 'table'\n\t| 'table-row'\n\t| 'table-cell'\n\t| 'table-caption'\n\t| 'table-column'\n\t| 'table-column-group'\n\t| 'table-footer-group'\n\t| 'table-header-group'\n\t| 'table-row-group'\n\t| 'list-item'\n\t| 'inherit'\n\t| 'initial'\n\t| 'revert'\n\t| 'unset';\n\n// Standard status type options (matches CODESTYLE status conventions).\nexport type StatusType =\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'critical'\n\t| 'discovery';\n\n// Extended status type with common additions.\nexport type StatusTypeExtended = StatusType | 'neutral' | 'working';\n\n// Standard labels for status types (default English labels for accessibility).\n// Components allow these to be overridden via typeLabels prop for i18n/translation.\nexport const StatusTypeLabels: Record<StatusType, string> = {\n\tinfo: 'Information',\n\tsuccess: 'Success',\n\twarning: 'Warning',\n\tcritical: 'Critical',\n\tdiscovery: 'Discovery',\n};\n\n// Floating UI component offset options.\nexport type FuiOffset =\n\t| number\n\t| {\n\t\t\talignmentAxis?: number | null;\n\t\t\tcrossAxis?: number;\n\t\t\tmainAxis?: number;\n\t };\n\n// Floating UI placement options.\nexport type FuiPlacement =\n\t| 'top'\n\t| 'top-start'\n\t| 'top-end'\n\t| 'right'\n\t| 'right-start'\n\t| 'right-end'\n\t| 'bottom'\n\t| 'bottom-start'\n\t| 'bottom-end'\n\t| 'left'\n\t| 'left-start'\n\t| 'left-end';\n\nexport type HeadingItemType = {\n\t/**\n\t * Is the item a heading?\n\t */\n\tisHeading: boolean;\n\t/**\n\t * Label for a menu item\n\t */\n\tlabel: string;\n};\n\n// Heading levels for Hx component.\nexport type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span';\nexport type HeadingLevelCommon = Exclude<HeadingLevel, 'h1' | 'h5' | 'h6'>;\n\n// Icon size options\nexport type IconSize = 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl';\n\nexport type LinkItemType = {\n\t/**\n\t * Screen reader label for critical items. Only used when isCritical is true.\n\t */\n\tcriticalLabel?: string;\n\t/**\n\t * Description of the item\n\t */\n\tdescription?: string;\n\t/**\n\t * Is this item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Optional icon for this item. Choose from available icons in the Icon component.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Is this a critical action item?\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Is the item a link?\n\t */\n\tisLink: boolean;\n\t/**\n\t * The content of the link.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Optional `data-testid` value for this item.\n\t */\n\ttestId?: string;\n};\n\nexport type MenuItemType = {\n\t/**\n\t * (optional) Callback function to execute when menu item is activated.\n\t * Receives the menu item as an optional parameter.\n\t */\n\tcallback?: (item?: MenuItemType) => void;\n\t/**\n\t * Screen reader label for critical items. Only used when isCritical is true.\n\t */\n\tcriticalLabel?: string;\n\t/**\n\t * Description of the item\n\t */\n\tdescription?: string;\n\t/**\n\t * Is this item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Optional icon for this item. Choose from available icons in the Icon component.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Optional ID value for this item.\n\t */\n\tid?: string;\n\t/**\n\t * Is this a critical action item?\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Label for a menu item\n\t */\n\tlabel: string;\n\t/**\n\t * Optional `data-testid` value for this item.\n\t */\n\ttestId?: string;\n};\n\nexport type NodeItemType = {\n\t/**\n\t * Screen reader label for critical items. Only used when isCritical is true.\n\t */\n\tcriticalLabel?: string;\n\t/**\n\t * Is this item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Is this a critical action item?\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Is the item a node?\n\t */\n\tisNode: boolean;\n\t/**\n\t * The content of the node.\n\t */\n\tnodeContent?: ReactNode;\n};\n\nexport type SeparatorItemType = {\n\t/**\n\t * Is the item a separator?\n\t */\n\tisSeparator: boolean;\n};\n\n// Menu item union type\nexport type MenuItem =\n\t| HeadingItemType\n\t| LinkItemType\n\t| MenuItemType\n\t| NodeItemType\n\t| SeparatorItemType;\n\n// Menu item type guard functions\nexport const isSeparatorItemType = (\n\titem: MenuItem,\n): item is SeparatorItemType => {\n\treturn 'isSeparator' in item && item.isSeparator;\n};\n\nexport const isHeadingItemType = (item: MenuItem): item is HeadingItemType => {\n\treturn 'isHeading' in item && item.isHeading;\n};\n\nexport const isLinkItemType = (item: MenuItem): item is LinkItemType => {\n\treturn 'isLink' in item && item.isLink;\n};\n\nexport const isNodeItemType = (item: MenuItem): item is NodeItemType => {\n\treturn 'isNode' in item && item.isNode;\n};\n\n// Site plan level options.\nexport type SitePlanLevel =\n\t| 'sandbox'\n\t| 'basic'\n\t| 'performance-small'\n\t| 'performance-medium'\n\t| 'performance-large'\n\t| 'performance-xl'\n\t| 'performance-2xl'\n\t| 'elite'\n\t| 'pro'\n\t| 'business'\n\t| 'flagship-performance';\n\nexport const SitePlanLevelLabel: Record<SitePlanLevel, string> = {\n\tsandbox: 'Sandbox',\n\tbasic: 'Basic',\n\t'performance-small': 'Performance Small',\n\t'performance-medium': 'Performance Medium',\n\t'performance-large': 'Performance Large',\n\t'performance-xl': 'Performance XL',\n\t'performance-2xl': 'Performance 2XL',\n\telite: 'Elite',\n\tpro: 'Professional',\n\tbusiness: 'Business',\n\t'flagship-performance': 'Flagship Performance',\n};\n\n// Site status options.\nexport type SiteStatus = 'active' | 'frozen' | 'restricted';\n\n// Site type options.\nexport type SiteType = 'drupal' | 'wordpress' | 'gatsby' | 'nextjs';\n\nexport const SiteTypeLabel: Record<SiteType, string> = {\n\tdrupal: 'Drupal',\n\twordpress: 'WordPress',\n\tgatsby: 'Gatsby',\n\tnextjs: 'Next.js',\n};\n\nexport const SiteTypeIcon: Record<SiteType, PDSIcon> = {\n\tdrupal: 'drupal',\n\twordpress: 'wordpress',\n\tgatsby: 'bolt',\n\tnextjs: 'bolt',\n};\n\nexport type SpacingScaleOptions =\n\t| '6xs'\n\t| '5xs'\n\t| '4xs'\n\t| '3xs'\n\t| '2xs'\n\t| 'xs'\n\t| 's'\n\t| 'm'\n\t| 'l'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| '6xl'\n\t| '7xl'\n\t| '8xl';\n\nexport type TypeScaleOptions =\n\t| 'xs'\n\t| 's'\n\t| 'm'\n\t| 'l'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| '6xl'\n\t| '7xl'\n\t| '8xl'\n\t| '9xl';\n","import { useEffect, useState } from 'react';\n\nexport const useWindowWidth = () => {\n\tconst isBrowser = typeof window !== 'undefined';\n\n\tconst [windowWidth, setWindowWidth] = useState(\n\t\tisBrowser && window.innerWidth !== undefined ? window.innerWidth : 1024,\n\t);\n\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tsetWindowWidth(window.innerWidth);\n\n\t\tconst handleResize = () => {\n\t\t\tsetWindowWidth(window.innerWidth);\n\t\t};\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t};\n\t}, []);\n\n\treturn windowWidth;\n};\n","import React, { createContext, useEffect } from 'react';\n\nimport { useWindowWidth } from '@utilities/hooks/useWindowWidth/useWindowWidth';\n\nexport const ResponsiveContext = createContext(null);\n\nexport const ResponsiveContextProvider = ({\n\tchildren,\n\tmobileMenuMaxWidth = 640,\n}) => {\n\t// Get window width.\n\tconst windowWidth = useWindowWidth();\n\n\t// Check if mobile.\n\tconst isMobile = windowWidth <= mobileMenuMaxWidth;\n\n\t// Prepare the context value.\n\tconst contextValue = {\n\t\tisMobile: isMobile,\n\t\tmobileMenuMaxWidth: mobileMenuMaxWidth,\n\t\twindowWidth: windowWidth,\n\t};\n\n\t// Disallow horizontal scrolling on mobile.\n\tuseEffect(() => {\n\t\tif (isMobile) {\n\t\t\tdocument.body.classList.add('pds-no-scroll-x');\n\t\t} else {\n\t\t\tdocument.body.classList.remove('pds-no-scroll-x');\n\t\t}\n\t}, [isMobile]);\n\n\treturn (\n\t\t<ResponsiveContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ResponsiveContext.Provider>\n\t);\n};\n","import React, {\n\tComponentPropsWithRef,\n\tJSXElementConstructor,\n\tKeyboardEvent,\n\tMouseEvent,\n\tReactElement,\n\tReactNode,\n\tuseContext,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport { autoUpdate, flip, useFloating } from '@floating-ui/react';\n\nimport { extractText } from '@libs/components/utility-components';\nimport { createRandomID, mergeClasses } from '@libs/components/utils';\nimport {\n\tButtonVariant,\n\tHeadingItemType,\n\tisHeadingItemType,\n\tisLinkItemType,\n\tisNodeItemType,\n\tisSeparatorItemType,\n\tLinkItemType,\n\tMenuItem,\n\tMenuItemType,\n\tNodeItemType,\n\tSeparatorItemType,\n} from '@libs/types/custom-types';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { IconButton } from '@components/buttons/IconButton/IconButton';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './menu-button.css';\n\ntype MenuButtonSize = 's' | 'm';\n\n/**\n * Prop types for MenuButton\n */\nexport interface MenuButtonProps extends ComponentPropsWithRef<'span'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * How the button is displayed.\n\t */\n\tdisplayType?: 'icon-end' | 'icon-only';\n\t/**\n\t * Icon name for icon-only buttons.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * ID value for this component.\n\t */\n\tid: string;\n\t/**\n\t * Will this be used for a split button?\n\t */\n\tisSplitButton?: boolean;\n\t/**\n\t * The text of the button\n\t */\n\tlabel: ReactNode;\n\t/**\n\t * Array of menu items\n\t */\n\tmenuItems: Array<\n\t\t| HeadingItemType\n\t\t| LinkItemType\n\t\t| MenuItemType\n\t\t| NodeItemType\n\t\t| SeparatorItemType\n\t>;\n\t/**\n\t * Horizontal position of the menu relative to the button. Applies to breakpoints `md` and up.\n\t */\n\tmenuPosition?: 'start' | 'end';\n\t/**\n\t * Optional callback function for when the button is clicked or activated by the keyboard.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Which size of button to render.\n\t */\n\tsize?: MenuButtonSize;\n\t/**\n\t * Optional `data-testid` value for this component.\n\t */\n\ttestId?: string;\n\t/**\n\t * Translatable string for description of unlabeled group of menu items.\n\t */\n\tundefinedLabel?: string;\n\t/**\n\t * Which variant of button to render — only valid for icon-end (default) display type.\n\t */\n\tvariant?: Extract<ButtonVariant, 'primary' | 'secondary' | 'navbar'>;\n\t/**\n\t * Is this button located with the Navbar component?\n\t * This will adjust the styling and position of the dropdown.\n\t * Omit this prop for the Dashboard application. It only applies to the standard Navbar component with a bottom border.\n\t */\n\twithinNavbar?: boolean;\n}\n\n/**\n * MenuButton UI component\n */\nexport const MenuButton = ({\n\tclassName,\n\tdisabled,\n\tdisplayType = 'icon-end',\n\ticonName = 'ellipsisVertical',\n\tid,\n\tisSplitButton = false,\n\tlabel,\n\tmenuItems,\n\tmenuPosition = 'start',\n\tonClick,\n\tsize = 's',\n\ttestId,\n\tundefinedLabel = 'Unlabeled group',\n\tvariant = 'primary',\n\twithinNavbar,\n\t...props\n}: MenuButtonProps) => {\n\t// Floating UI support\n\tconst { placement, refs, strategy, x, y } = useFloating({\n\t\tplacement: 'bottom-start',\n\t\tmiddleware: [flip()],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Is it used in a mobile navbar?\n\tconst isMobileNavbar = variant === 'navbar' && isMobile;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-menu-button';\n\tconst mobileClass = isMobileNavbar ? `${baseClass}--isMobile` : null;\n\tconst navbarClass = withinNavbar ? `${baseClass}--navbar` : null;\n\n\t// Generate a short unique ID to add to ID attributes.\n\tconst triggerID = id;\n\tconst [listboxID] = useState(`menu-button-${id}`);\n\n\tconst menuRefActual = refs.floating;\n\tconst nodeRef = useRef(null);\n\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [focusMenu, setFocusMenu] = useState(false);\n\tconst [activeDescendant, setActiveDescendant] = useState('');\n\tconst [activeMenuItemIndex, setActiveMenuItemIndex] = useState(0);\n\n\t// Non-state instance trackers\n\tconst groupIDs = useRef([]);\n\tconst menuItemIDs = useRef([]);\n\tconst focusableMenuItems = useRef([]);\n\n\tuseLayoutEffect(() => {\n\t\t// setup the onClick outside handler\n\t\twindow.addEventListener('mousedown', handleClickOutside, true);\n\n\t\t// Add the Floating UI data attribute\n\t\tconst menuElem = menuRefActual.current;\n\n\t\tif (menuElem) {\n\t\t\tmenuElem.dataset.fuiPlacement = placement;\n\t\t}\n\n\t\t// only focus the menu when state instructs us to\n\t\tif (focusMenu) {\n\t\t\t// focus the menu element\n\t\t\t// NOTE: setTimeout is used to prevent focus change from conflicting with Floating UI\n\t\t\tsetTimeout(() => {\n\t\t\t\tmenuElem.focus();\n\t\t\t}, 0);\n\t\t\t// reset state\n\t\t\tsetFocusMenu(false);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('mousedown', handleClickOutside, true);\n\t\t};\n\t}, [isOpen, placement]);\n\n\t// Internal/support methods\n\tconst setActiveMenuItem = (elemID: string | undefined, index: number) => {\n\t\tsetActiveDescendant(elemID);\n\t\tsetActiveMenuItemIndex(index);\n\t};\n\n\tconst openMenu = () => {\n\t\tsetIsOpen(true);\n\t\tsetFocusMenu(true);\n\t};\n\n\tconst closeMenu = () => {\n\t\tsetIsOpen(false);\n\t\tsetActiveMenuItem(undefined, -1); // remove current selection to reset menu\n\t\tconst triggerElement = nodeRef.current?.querySelector(\n\t\t\t`#${triggerID}`,\n\t\t) as HTMLElement | null;\n\t\ttriggerElement?.focus();\n\t};\n\n\tconst setFocusByFirstCharacter = (char: string) => {\n\t\t// ensure lowercase for easier comparison\n\t\tchar = char.toLowerCase();\n\t\t// track if we've found an item yet\n\t\tlet itemFound = false;\n\n\t\t// loop from current active index to end of focusable items\n\t\tfor (\n\t\t\tlet i = activeMenuItemIndex + 1;\n\t\t\ti < focusableMenuItems.current.length;\n\t\t\ti++\n\t\t) {\n\t\t\tconst item = focusableMenuItems.current[i];\n\n\t\t\tif (item.label.toLowerCase().startsWith(char)) {\n\t\t\t\tsetActiveMenuItem(menuItemIDs.current[i], i);\n\t\t\t\t// report that we found an item\n\t\t\t\titemFound = true;\n\t\t\t\t// break out of loop\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// loop from beginning of focusable items to item prior to current active index\n\t\t// !! Continue search only if we haven't found an item yet\n\t\tif (itemFound === false) {\n\t\t\tfor (let i = 0; i < activeMenuItemIndex; i++) {\n\t\t\t\tconst item = focusableMenuItems.current[i];\n\n\t\t\t\tif (item.label.toLowerCase().startsWith(char)) {\n\t\t\t\t\tsetActiveMenuItem(menuItemIDs.current[i], i);\n\t\t\t\t\t// break out of loop\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst activateMenuItem = (itemID: string) => {\n\t\tconst itemIndex = menuItemIDs.current.indexOf(itemID);\n\t\tconst item = focusableMenuItems.current[itemIndex];\n\n\t\t// only execute callback if there is one and the item is not disabled\n\t\tif (item.callback && !item.disabled) {\n\t\t\titem.callback(item);\n\t\t}\n\n\t\t// Activate link if it exists and is not disabled\n\t\tif (item.linkContent && !item.disabled) {\n\t\t\tconst linkElement = nodeRef.current?.querySelector(\n\t\t\t\t`#${itemID} a`,\n\t\t\t) as HTMLAnchorElement | null;\n\t\t\tlinkElement?.click();\n\t\t}\n\t};\n\n\tconst activateCurrentMenuItem = () => {\n\t\tconst currentItemID = menuItemIDs.current[activeMenuItemIndex];\n\t\tactivateMenuItem(currentItemID);\n\t};\n\n\t// Event handler functions\n\tconst handleTriggerClick = (event: MouseEvent<HTMLButtonElement>) => {\n\t\tif (isOpen) {\n\t\t\tcloseMenu();\n\t\t} else {\n\t\t\topenMenu();\n\t\t}\n\n\t\tif (onClick) {\n\t\t\tonClick();\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t};\n\n\tconst handleMenuItemClick = (event: MouseEvent<HTMLLIElement>) => {\n\t\tactivateMenuItem(event.currentTarget.id);\n\n\t\tif (!isMobileNavbar) {\n\t\t\tcloseMenu();\n\t\t}\n\t};\n\n\tconst handleButtonKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n\t\tconst key = event.key;\n\t\tlet flag = false;\n\n\t\tswitch (key) {\n\t\t\t// open menu and focus on first menu item\n\t\t\tcase ' ':\n\t\t\tcase 'Enter':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'Down': {\n\t\t\t\topenMenu();\n\t\t\t\t// Find the first non-disabled item\n\t\t\t\tlet firstEnabledIndex = 0;\n\t\t\t\tfor (let i = 0; i < focusableMenuItems.current.length; i++) {\n\t\t\t\t\tif (!focusableMenuItems.current[i]?.disabled) {\n\t\t\t\t\t\tfirstEnabledIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetActiveMenuItem(\n\t\t\t\t\tmenuItemIDs.current[firstEnabledIndex],\n\t\t\t\t\tfirstEnabledIndex,\n\t\t\t\t);\n\t\t\t\tflag = true;\n\n\t\t\t\tif (onClick) {\n\t\t\t\t\tonClick();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// close menu\n\t\t\tcase 'Esc':\n\t\t\tcase 'Escape':\n\t\t\t\tcloseMenu();\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\t// open menu and focus on last menu item\n\t\t\tcase 'Up':\n\t\t\tcase 'ArrowUp': {\n\t\t\t\topenMenu();\n\t\t\t\t// Find the last non-disabled item\n\t\t\t\tlet lastEnabledIndex = menuItemIDs.current.length - 1;\n\t\t\t\tfor (let i = menuItemIDs.current.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (!focusableMenuItems.current[i]?.disabled) {\n\t\t\t\t\t\tlastEnabledIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetActiveMenuItem(\n\t\t\t\t\tmenuItemIDs.current[lastEnabledIndex],\n\t\t\t\t\tlastEnabledIndex,\n\t\t\t\t);\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// do nothing\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// if something desired happened prevent default behavior\n\t\tif (flag) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst handleMenuKeydown = (event: KeyboardEvent<HTMLElement>) => {\n\t\tconst key = event.key;\n\t\tlet flag = false,\n\t\t\tmoveToItemID = '',\n\t\t\tmoveToIndex = 0;\n\n\t\tfunction isPrintableCharacter(str: string) {\n\t\t\treturn str.length === 1 && str.match(/\\S/);\n\t\t}\n\n\t\tif (event.ctrlKey || event.altKey || event.metaKey) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.shiftKey) {\n\t\t\tif (isPrintableCharacter(key)) {\n\t\t\t\tsetFocusByFirstCharacter(key);\n\t\t\t\tflag = true;\n\t\t\t}\n\n\t\t\tif (event.key === 'Tab') {\n\t\t\t\tcloseMenu();\n\t\t\t\tflag = true;\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (key) {\n\t\t\t\tcase ' ':\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tcloseMenu();\n\t\t\t\t\tactivateCurrentMenuItem();\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Esc':\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tcloseMenu();\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Up':\n\t\t\t\tcase 'ArrowUp': {\n\t\t\t\t\t// Find the next non-disabled item going backwards\n\t\t\t\t\tlet attempts = 0;\n\t\t\t\t\tconst maxAttempts = menuItemIDs.current.length;\n\t\t\t\t\tmoveToIndex = activeMenuItemIndex - 1;\n\n\t\t\t\t\twhile (attempts < maxAttempts) {\n\t\t\t\t\t\tif (moveToIndex < 0) {\n\t\t\t\t\t\t\tmoveToIndex = menuItemIDs.current.length - 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if the item at this index is disabled\n\t\t\t\t\t\tconst item = focusableMenuItems.current[moveToIndex];\n\t\t\t\t\t\tif (!item?.disabled) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmoveToIndex--;\n\t\t\t\t\t\tattempts++;\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveToItemID = menuItemIDs.current[moveToIndex];\n\t\t\t\t\tsetActiveMenuItem(moveToItemID, moveToIndex);\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\tcase 'Down': {\n\t\t\t\t\t// Find the next non-disabled item going forwards\n\t\t\t\t\tlet attempts = 0;\n\t\t\t\t\tconst maxAttempts = menuItemIDs.current.length;\n\t\t\t\t\tmoveToIndex = activeMenuItemIndex + 1;\n\n\t\t\t\t\twhile (attempts < maxAttempts) {\n\t\t\t\t\t\tif (moveToIndex > menuItemIDs.current.length - 1) {\n\t\t\t\t\t\t\tmoveToIndex = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if the item at this index is disabled\n\t\t\t\t\t\tconst item = focusableMenuItems.current[moveToIndex];\n\t\t\t\t\t\tif (!item?.disabled) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmoveToIndex++;\n\t\t\t\t\t\tattempts++;\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveToItemID = menuItemIDs.current[moveToIndex];\n\t\t\t\t\tsetActiveMenuItem(moveToItemID, moveToIndex);\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'Home':\n\t\t\t\tcase 'PageUp': {\n\t\t\t\t\t// Find the first non-disabled item\n\t\t\t\t\tlet firstEnabledIndex = 0;\n\t\t\t\t\tfor (let i = 0; i < focusableMenuItems.current.length; i++) {\n\t\t\t\t\t\tif (!focusableMenuItems.current[i]?.disabled) {\n\t\t\t\t\t\t\tfirstEnabledIndex = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetActiveMenuItem(\n\t\t\t\t\t\tmenuItemIDs.current[firstEnabledIndex],\n\t\t\t\t\t\tfirstEnabledIndex,\n\t\t\t\t\t);\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'End':\n\t\t\t\tcase 'PageDown': {\n\t\t\t\t\t// Find the last non-disabled item\n\t\t\t\t\tlet lastEnabledIndex = menuItemIDs.current.length - 1;\n\t\t\t\t\tfor (let i = menuItemIDs.current.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (!focusableMenuItems.current[i]?.disabled) {\n\t\t\t\t\t\t\tlastEnabledIndex = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetActiveMenuItem(\n\t\t\t\t\t\tmenuItemIDs.current[lastEnabledIndex],\n\t\t\t\t\t\tlastEnabledIndex,\n\t\t\t\t\t);\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tcloseMenu();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (isPrintableCharacter(key)) {\n\t\t\t\t\t\tsetFocusByFirstCharacter(key);\n\t\t\t\t\t\tflag = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (flag) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\t// Handle click outside event to close menu if open\n\tconst handleClickOutside = (event: Event) => {\n\t\tif (nodeRef.current && !nodeRef.current.contains(event.target as Node)) {\n\t\t\tif (isOpen) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t}\n\t};\n\n\t// function to render each menu item correctly\n\tconst renderItem = (\n\t\titem: MenuItem,\n\t\tindex: number,\n\t\tgroupID: string = '',\n\t\tgroupHeadingID: string = '',\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t...props: any[]\n\t) => {\n\t\tconst groupIDString = groupID ? `-group-${groupID}` : '';\n\t\tconst fallbackItemID = triggerID + groupIDString + '-item-' + (index + 1);\n\n\t\t// If ID is not passed into menu item, generate one.\n\t\tconst itemID = 'id' in item && item.id ? item.id : fallbackItemID;\n\n\t\t// render a separator if found\n\t\tif (isSeparatorItemType(item)) {\n\t\t\treturn <li key={itemID} role='separator'></li>;\n\t\t}\n\n\t\t// render a heading if found\n\t\tif (isHeadingItemType(item)) {\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\tkey={groupHeadingID}\n\t\t\t\t\tclassName={`${baseClass}__listbox-heading`}\n\t\t\t\t\tid={groupHeadingID ? groupHeadingID : null}\n\t\t\t\t\trole='presentation'\n\t\t\t\t>\n\t\t\t\t\t{item.label}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\n\t\t// render a node if found\n\t\tif (isNodeItemType(item)) {\n\t\t\treturn (\n\t\t\t\t<li key={itemID} role='presentation'>\n\t\t\t\t\t{item.nodeContent}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\n\t\t// Render a link item or regular menu item\n\t\tif (isLinkItemType(item) || ('label' in item && item.label)) {\n\t\t\tmenuItemIDs.current.push(itemID);\n\t\t\tfocusableMenuItems.current.push(item);\n\n\t\t\t// decide if this item should be shown to have focus\n\t\t\tlet shouldFocus = false;\n\t\t\tif (activeDescendant !== '' && !item.disabled) {\n\t\t\t\tshouldFocus = activeDescendant === itemID;\n\t\t\t}\n\n\t\t\t// Check if this is a critical item\n\t\t\tconst isCritical = 'isCritical' in item && item.isCritical;\n\t\t\tconst criticalLabel =\n\t\t\t\t'criticalLabel' in item ? item.criticalLabel : undefined;\n\n\t\t\t// Set item label\n\t\t\tlet itemLabel: ReactNode[] = [];\n\n\t\t\t// if a regular menu item, use the label\n\t\t\tif ('label' in item && item.label) {\n\t\t\t\titemLabel = [item.label];\n\t\t\t}\n\n\t\t\t// if a link item, use the link content\n\t\t\tif (isLinkItemType(item) && item.linkContent) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tconst linkElement = item.linkContent as ReactElement<any>;\n\t\t\t\titemLabel = [linkElement.props.children];\n\t\t\t}\n\n\t\t\tif (item.iconName) {\n\t\t\t\t// Render the chosen icon\n\t\t\t\tconst renderedIcon = (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tkey={`icon-${triggerID}`}\n\t\t\t\t\t\ticonName={item.iconName}\n\t\t\t\t\t\ticonSize='m'\n\t\t\t\t\t/>\n\t\t\t\t);\n\n\t\t\t\titemLabel.unshift(renderedIcon);\n\t\t\t}\n\n\t\t\t// Add visually-hidden critical label if needed\n\t\t\tif (isCritical && criticalLabel) {\n\t\t\t\titemLabel.unshift(\n\t\t\t\t\t<span key={`critical-${triggerID}`} className='visually-hidden'>\n\t\t\t\t\t\t{criticalLabel}\n\t\t\t\t\t</span>,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet itemDescription: ReactNode;\n\t\t\tif (item.description) {\n\t\t\t\titemDescription = (\n\t\t\t\t\t<span className={`${baseClass}__item-description`}>\n\t\t\t\t\t\t{item.description}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Render the item content based on type\n\t\t\tlet itemContent: ReactNode;\n\n\t\t\tif (isLinkItemType(item) && item.linkContent) {\n\t\t\t\t// Set link element based on the type of link element passed in.\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tconst linkElement = item.linkContent as ReactElement<\n\t\t\t\t\tany, // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\t\t\t\tJSXElementConstructor<any> // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\t\t\t>;\n\t\t\t\tconst LinkElement = linkElement.type;\n\n\t\t\t\titemContent = (\n\t\t\t\t\t<LinkElement tabIndex={-1} {...linkElement.props}>\n\t\t\t\t\t\t<span className={`${baseClass}__item-label`}>{itemLabel}</span>\n\t\t\t\t\t\t{itemDescription}\n\t\t\t\t\t</LinkElement>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\titemContent = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span className={`${baseClass}__item-label`}>{itemLabel}</span>\n\t\t\t\t\t\t{itemDescription}\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Build class name for the menu item\n\t\t\tconst menuItemClasses = mergeClasses([\n\t\t\t\tshouldFocus ? `${baseClass}__item-focused` : null,\n\t\t\t\tisCritical ? `${baseClass}__item-critical` : null,\n\t\t\t]);\n\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\tkey={itemID}\n\t\t\t\t\taria-disabled={item.disabled ? true : null}\n\t\t\t\t\tclassName={menuItemClasses}\n\t\t\t\t\tdata-testid={item.testId}\n\t\t\t\t\tid={itemID}\n\t\t\t\t\tonClick={handleMenuItemClick}\n\t\t\t\t\trole='menuitem'\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{itemContent}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\t};\n\n\t// Function to render grouped items\n\tconst renderMenuItemsGrouped = (\n\t\titems: MenuItem[],\n\t\tmenuItemBreaks: MenuItem[],\n\t) => {\n\t\tconst groupedItems: MenuItem[][] = [];\n\n\t\t// Copy the array to avoid mutation\n\t\tconst breaks = [...menuItemBreaks];\n\n\t\t// get the first break item\n\t\tlet breakItem = breaks.shift();\n\n\t\t// setup our temporary storage for this group\n\t\tlet group: MenuItem[] = [];\n\n\t\t// iterate over all menu items\n\t\titems.map((item: MenuItem, index: number) => {\n\t\t\t// if the item isn't the first break item then add it to the group\n\t\t\tif (item !== breakItem) {\n\t\t\t\tgroup.push(item);\n\n\t\t\t\t// if this is the last item then add it to the group\n\t\t\t\tif (index + 1 === items.length) {\n\t\t\t\t\tgroupedItems.push(group);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// if we have a break item then add the group to the overall items data,\n\t\t\t\t// reset the temporary group storage,\n\t\t\t\t// add the break item to the new group,\n\t\t\t\t// get the next break item\n\t\t\t\tgroupedItems.push(group);\n\t\t\t\tgroup = [];\n\t\t\t\tgroup.push(item);\n\t\t\t\tbreakItem = breaks.shift();\n\t\t\t}\n\t\t});\n\n\t\t// filter out empty groups\n\t\treturn groupedItems.filter((group) => group.length > 0);\n\t};\n\n\t// Function to render the items\n\tconst renderMenuItems = (items: MenuItem[]) => {\n\t\t// reset tracking variables\n\t\tmenuItemIDs.current = [];\n\t\tfocusableMenuItems.current = [];\n\n\t\t// Chunk menu items into groups if needed\n\t\tconst itemsData = items;\n\t\t// check if we have any separators or headings in the dataset\n\t\tconst menuItemBreaks = items.filter(\n\t\t\tisHeadingItemType || isSeparatorItemType,\n\t\t);\n\t\tconst haveBreaks = menuItemBreaks.length > 0;\n\n\t\t// Set up listbox classes.\n\t\tlet listboxClasses: string[] = [`${baseClass}__listbox`];\n\n\t\tif (withinNavbar) {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--navbar`);\n\t\t}\n\n\t\tif (menuPosition === 'end') {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--end`);\n\t\t}\n\n\t\tif (displayType === 'icon-only') {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--icon-only`);\n\t\t}\n\n\t\tlistboxClasses = mergeClasses(listboxClasses);\n\n\t\t// if we have breaks then split into groups at each marker\n\t\tif (haveBreaks) {\n\t\t\t// group the items together\n\t\t\tconst groupedItemsData = renderMenuItemsGrouped(items, menuItemBreaks);\n\n\t\t\t// setup group IDs\n\t\t\tgroupedItemsData.forEach(() => {\n\t\t\t\tgroupIDs.current.push(createRandomID());\n\t\t\t});\n\t\t\tlet currentGroupID = groupIDs.current[0];\n\n\t\t\t// locate first valid item to properly set initial value for aria-activedescendant on menu/listbox\n\t\t\tconst firstMenuItemIndex = groupedItemsData[0].findIndex(\n\t\t\t\t(item: MenuItem) =>\n\t\t\t\t\t!isSeparatorItemType(item) && !isHeadingItemType(item),\n\t\t\t);\n\n\t\t\t// set active descendant ID value in component state\n\t\t\tconst initialDescendant = `${triggerID}-group-${currentGroupID}-item-${\n\t\t\t\tfirstMenuItemIndex + 1\n\t\t\t}`;\n\n\t\t\t// Render grouped items in listbox\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\taria-activedescendant={\n\t\t\t\t\t\tactiveDescendant !== '' ? activeDescendant : initialDescendant\n\t\t\t\t\t}\n\t\t\t\t\taria-labelledby={triggerID}\n\t\t\t\t\tclassName={listboxClasses.toString()}\n\t\t\t\t\tid={listboxID}\n\t\t\t\t\tonKeyDown={handleMenuKeydown}\n\t\t\t\t\trole='menu'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tvisibility: isOpen ? 'visible' : 'hidden',\n\t\t\t\t\t\topacity: isOpen ? '1' : '0',\n\t\t\t\t\t\ttransition: 'var(--pds-animation-transition-reveal)',\n\t\t\t\t\t\tposition: strategy,\n\t\t\t\t\t\ttransform: `translate(${Math.round(x)}px,${Math.round(y)}px)`,\n\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t}}\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t>\n\t\t\t\t\t{groupedItemsData.map((group: MenuItem[], index: number) => {\n\t\t\t\t\t\tcurrentGroupID = groupIDs.current[index];\n\t\t\t\t\t\tconst hasHeading = 'isHeading' in group[0] && group[0].isHeading;\n\t\t\t\t\t\tconst groupHeadingID = hasHeading\n\t\t\t\t\t\t\t? `${triggerID}-group-${currentGroupID}-heading`\n\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\tconst keyID = `${triggerID}-group-${currentGroupID}`;\n\n\t\t\t\t\t\tconst groupLabel = hasHeading\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: `${undefinedLabel} ${index + 1}`;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\tkey={keyID}\n\t\t\t\t\t\t\t\taria-label={groupLabel}\n\t\t\t\t\t\t\t\taria-labelledby={groupHeadingID}\n\t\t\t\t\t\t\t\trole='group'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{group.map((item: MenuItem, index: number) => {\n\t\t\t\t\t\t\t\t\treturn renderItem(\n\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\tcurrentGroupID,\n\t\t\t\t\t\t\t\t\t\tgroupHeadingID,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\t// Render plain listbox without any groups\n\n\t\t\t// set initial active descendant ID value\n\t\t\tconst initialDescendant = `${triggerID}-item-1`;\n\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<ul\n\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\taria-activedescendant={\n\t\t\t\t\t\t\tactiveDescendant !== '' ? activeDescendant : initialDescendant\n\t\t\t\t\t\t}\n\t\t\t\t\t\taria-labelledby={triggerID}\n\t\t\t\t\t\tclassName={listboxClasses.toString()}\n\t\t\t\t\t\tid={listboxID}\n\t\t\t\t\t\tonKeyDown={handleMenuKeydown}\n\t\t\t\t\t\trole='menu'\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tvisibility: isOpen ? 'visible' : 'hidden',\n\t\t\t\t\t\t\topacity: isOpen ? '1' : '0',\n\t\t\t\t\t\t\ttransition: 'var(--pds-animation-transition-reveal)',\n\t\t\t\t\t\t\tposition: strategy,\n\t\t\t\t\t\t\ttransform: `translate(${Math.round(x)}px,${Math.round(y)}px)`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t>\n\t\t\t\t\t\t{itemsData.map((item: MenuItem, index: number) => {\n\t\t\t\t\t\t\treturn renderItem(item, index);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</ul>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t};\n\n\t// Preprocess button\n\tlet menuButtonDisplayType: React.JSX.Element | undefined;\n\n\t// Display type based on regular buttons.\n\tif (displayType === 'icon-end') {\n\t\tmenuButtonDisplayType = (\n\t\t\t<Button\n\t\t\t\tref={refs.setReference}\n\t\t\t\taria-controls={listboxID}\n\t\t\t\taria-expanded={isOpen}\n\t\t\t\taria-haspopup='true'\n\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tdisplayType={displayType}\n\t\t\t\ticonName='angleDown'\n\t\t\t\tid={triggerID}\n\t\t\t\tisSplitButton={isSplitButton}\n\t\t\t\tlabel={label}\n\t\t\t\tonClick={handleTriggerClick}\n\t\t\t\tonKeyDown={handleButtonKeyDown}\n\t\t\t\tsize={size}\n\t\t\t\ttype='button'\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Display type based on icon buttons.\n\tif (displayType === 'icon-only') {\n\t\tconst labelText = extractText(label);\n\n\t\tmenuButtonDisplayType = (\n\t\t\t<IconButton\n\t\t\t\tref={refs.setReference}\n\t\t\t\taria-controls={listboxID}\n\t\t\t\taria-expanded={isOpen}\n\t\t\t\taria-haspopup='true'\n\t\t\t\tariaLabel={labelText}\n\t\t\t\tclassName={`${baseClass}__trigger ${baseClass}__trigger--icon-only`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\thasTooltip={false}\n\t\t\t\ticonName={iconName}\n\t\t\t\tid={triggerID}\n\t\t\t\tonClick={handleTriggerClick}\n\t\t\t\tonKeyDown={handleButtonKeyDown}\n\t\t\t\tsize={size}\n\t\t\t\ttype='button'\n\t\t\t\tvariant='standard'\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Accommodations for mobile navbar usage.\n\n\t// Handle the expand/collapse within mobile Navbar.\n\tconst handleExpand = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t// Control button classes and aria-expanded attribute.\n\t\tconst button = e.target as HTMLButtonElement;\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`);\n\t\tbutton.setAttribute(\n\t\t\t'aria-expanded',\n\t\t\tbutton.getAttribute('aria-expanded') === 'true' ? 'false' : 'true',\n\t\t);\n\n\t\t// Control menu classes.\n\t\tconst menu = button.nextElementSibling as HTMLElement;\n\t\tmenu.classList.toggle(`${baseClass}__mobile-menu--expanded`);\n\t};\n\n\t// Process menu items for mobile navbar.\n\tconst MobileMenuItems = () => {\n\t\treturn (\n\t\t\t<ul className={`${baseClass}__mobile-menu`} role='menu'>\n\t\t\t\t{menuItems.map((item, index) => {\n\t\t\t\t\treturn renderItem(item, index);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t);\n\t};\n\n\t// Process buttons for mobile navbar.\n\tlet menuButtonMobileDisplayType: React.JSX.Element | undefined;\n\n\tconst buttonVariant =\n\t\tdisplayType === 'icon-end' ? 'pds-button pds-button--navbar' : null;\n\tconst mobileButtonClasses = mergeClasses([\n\t\t`${baseClass}__toggle`,\n\t\tbuttonVariant,\n\t]);\n\n\tif (isMobileNavbar) {\n\t\tmenuButtonMobileDisplayType = (\n\t\t\t<button\n\t\t\t\taria-expanded={false}\n\t\t\t\tclassName={mobileButtonClasses}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tid={triggerID}\n\t\t\t\tonClick={handleExpand}\n\t\t\t\ttype='button'\n\t\t\t>\n\t\t\t\t{displayType === 'icon-only' ? (\n\t\t\t\t\t<span className={`${baseClass}__icon-label`}>\n\t\t\t\t\t\t<Icon iconName={iconName} /> {label}\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tlabel\n\t\t\t\t)}\n\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={`${baseClass}__toggle-icon ${baseClass}__toggle-icon--${displayType}`}\n\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\ticonSize='m'\n\t\t\t\t/>\n\t\t\t</button>\n\t\t);\n\t}\n\n\t// Markup for when in a navbar mobile view.\n\tconst navbarMobileMarkup = menuButtonMobileDisplayType;\n\n\t// Set up expanded class.\n\tconst expandedClass = isOpen ? `${baseClass}--expanded` : null;\n\n\t// Render the output.\n\treturn (\n\t\t<span\n\t\t\tref={nodeRef}\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tnavbarClass,\n\t\t\t\tmobileClass,\n\t\t\t\texpandedClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\tdata-testid={testId}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobileNavbar ? (\n\t\t\t\t<>\n\t\t\t\t\t{navbarMobileMarkup}\n\t\t\t\t\t<MobileMenuItems />\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{menuButtonDisplayType}\n\t\t\t\t\t{renderMenuItems(menuItems)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n","import React, { MouseEvent, useState } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Tally } from '@components/badges/Tally/Tally';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './segmented-button.css';\n\n/**\n * Structure for each option in the SegmentedButton component.\n */\ninterface OptionType {\n\tdisabled?: boolean;\n\ticonName?: PDSIcon;\n\tid?: string;\n\tlabel: string;\n\ttally?: {\n\t\tlabel: string | number;\n\t\ttype: 'neutral' | 'critical' | 'warning' | 'info' | 'success';\n\t};\n\tvalue: string;\n}\n\n/**\n * Interface for handling selection events.\n */\ninterface HandleSelectionEvent extends MouseEvent<HTMLInputElement> {\n\ttarget: HTMLInputElement;\n}\n\n/**\n * Prop types for SegmentedButton\n */\nexport interface SegmentedButtonProps {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Optional initial selected option value.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Is the SegmentedButton disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Unique ID for the SegmentedButton.\n\t */\n\tid: string;\n\t/**\n\t * Label for the SegmentedButton — visually hidden, used for screen readers only.\n\t */\n\tlabel: string;\n\t/**\n\t * Callback function that will return the updated value from the instance when it changes.\n\t */\n\tonChange?: (value: string) => void;\n\t/**\n\t * Array of button options — must be between 2 and 6 options.\n\t */\n\toptions: OptionType[];\n\t/**\n\t * Size of the SegmentedButton.\n\t */\n\tsize?: 's' | 'm';\n\t/**\n\t * Value of the Segmented Button. Used to set the value of the field when controlled. Cannot be used in conjunction with the `defaultValue` prop.\n\t */\n\tvalue?: string;\n}\n\n/**\n * SegmentedButton UI component\n */\nexport const SegmentedButton = ({\n\tclassName,\n\tdefaultValue,\n\tdisabled = false,\n\tid,\n\tlabel,\n\tonChange,\n\toptions,\n\tsize = 's',\n\tvalue,\n\t...props\n}: SegmentedButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-segmented-button';\n\tconst disabledClass = disabled ? 'pds-is-disabled' : null;\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Map button sizes to icon sizes.\n\tconst iconSize = size === 's' ? 's' : 'm';\n\n\t// Determine if the input is controlled.\n\tconst isControlled = typeof value != 'undefined';\n\n\t// When a component is not controlled, it can have a defaultValue.\n\tconst hasDefaultValue = typeof defaultValue != 'undefined';\n\n\t// If the input is uncontrolled, use state within the component to manage the value.\n\tconst [internalValue, setInternalValue] = useState(\n\t\thasDefaultValue ? defaultValue : '',\n\t);\n\n\t// Handle selection changes.\n\tconst handleSelection = (e: HandleSelectionEvent) => {\n\t\tsetInternalValue(e.target.value);\n\n\t\tif (onChange) {\n\t\t\tonChange(e.target.value);\n\t\t}\n\t};\n\n\t// Render the output\n\tif (options.length >= 2 && options.length <= 6) {\n\t\treturn (\n\t\t\t<fieldset\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<legend className='visually-hidden'>{label}</legend>\n\n\t\t\t\t<div className={`${baseClass}__options`}>\n\t\t\t\t\t{options.map((radio, idx) => {\n\t\t\t\t\t\t// Determine if the option is checked.\n\t\t\t\t\t\tconst isChecked = isControlled\n\t\t\t\t\t\t\t? value === radio.value\n\t\t\t\t\t\t\t: internalValue === radio.value;\n\n\t\t\t\t\t\t// Option classes.\n\t\t\t\t\t\tconst optionClass = `${baseClass}__option`;\n\t\t\t\t\t\tconst checkedClass = isChecked ? `${optionClass}--checked` : null;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={`${id}-option-${idx}`}\n\t\t\t\t\t\t\t\tclassName={mergeClasses([optionClass, checkedClass])}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tchecked={isChecked}\n\t\t\t\t\t\t\t\t\tclassName='visually-hidden'\n\t\t\t\t\t\t\t\t\tdisabled={disabled || radio.disabled}\n\t\t\t\t\t\t\t\t\tid={radio.id ? radio.id : `${id}-option-${idx}`}\n\t\t\t\t\t\t\t\t\tname={id}\n\t\t\t\t\t\t\t\t\tonChange={handleSelection}\n\t\t\t\t\t\t\t\t\ttype='radio'\n\t\t\t\t\t\t\t\t\tvalue={radio.value}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\thtmlFor={radio.id ? radio.id : `${id}-option-${idx}`}\n\t\t\t\t\t\t\t\t\ttitle={radio.label}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{radio.iconName && (\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\t\t\t\t\t\ticonName={radio.iconName}\n\t\t\t\t\t\t\t\t\t\t\ticonSize={iconSize}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<span className={`${baseClass}__label-text`}>\n\t\t\t\t\t\t\t\t\t\t{radio.label}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{radio.tally && (\n\t\t\t\t\t\t\t\t\t\t<Tally\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__tally`}\n\t\t\t\t\t\t\t\t\t\t\tlabel={radio.tally.label}\n\t\t\t\t\t\t\t\t\t\t\ttype={radio.tally.type}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</fieldset>\n\t\t);\n\t}\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tButtonVariant,\n\tLinkItemType,\n\tMenuItemType,\n} from '@libs/types/custom-types';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { ButtonLink } from '@components/buttons/ButtonLink/ButtonLink';\nimport { MenuButton } from '@components/buttons/MenuButton/MenuButton';\n\nimport './split-button.css';\n\ntype SplitButtonSize = 's' | 'm';\n\n/**\n * Prop types for SplitButton\n */\ninterface SplitButtonProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Array of menu items\n\t */\n\tactionItems: Array<LinkItemType | MenuItemType>;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * ID value for this component.\n\t */\n\tid: string;\n\t/**\n\t * Label for the buttons additional actions menu.\n\t */\n\tmoreActionsLabel?: string;\n\t/**\n\t * Which size of button to render\n\t */\n\tsize?: SplitButtonSize;\n\t/**\n\t * Which variant of button to render\n\t */\n\tvariant?: Extract<ButtonVariant, 'primary' | 'secondary'>;\n}\n\n/**\n * A component used to render a button with a primary action and a menu of additional options\n */\nexport const SplitButton = ({\n\tactionItems,\n\tclassName,\n\tdisabled,\n\tid,\n\tmoreActionsLabel = 'More actions',\n\tsize = 's',\n\tvariant = 'primary',\n\t...props\n}: SplitButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-split-button';\n\tconst variantClass = `${baseClass}--${variant}`;\n\n\t// Separate the primary action from the rest.\n\tconst primaryAction = actionItems[0];\n\tconst moreActions = actionItems.slice(1);\n\n\t// Preprocess the first item based on its type.\n\tlet primaryActionElement = null;\n\n\tif ('isLink' in primaryAction && primaryAction.isLink === true) {\n\t\tprimaryActionElement = (\n\t\t\t<ButtonLink\n\t\t\t\tclassName={`${baseClass}__primary-action`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tdisplayType='label-only'\n\t\t\t\tlinkContent={primaryAction.linkContent}\n\t\t\t\tsize={size}\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t} else if ('label' in primaryAction) {\n\t\tprimaryActionElement = (\n\t\t\t<Button\n\t\t\t\tclassName={`${baseClass}__primary-action`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tlabel={primaryAction.label}\n\t\t\t\tonClick={() => primaryAction.callback()}\n\t\t\t\tsize={size}\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\tclassName={mergeClasses([baseClass, variantClass, className])}\n\t\t\tid={id}\n\t\t\t{...props}\n\t\t>\n\t\t\t{primaryActionElement}\n\t\t\t<MenuButton\n\t\t\t\tisSplitButton\n\t\t\t\tclassName={`${baseClass}__menu-button`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tdisplayType='icon-end'\n\t\t\t\tid={`${id}-menu`}\n\t\t\t\tlabel={moreActionsLabel}\n\t\t\t\tmenuItems={moreActions}\n\t\t\t\tsize={size}\n\t\t\t\ttestId={null}\n\t\t\t\tvariant={variant}\n\t\t\t\twithinNavbar={false}\n\t\t\t/>\n\t\t</span>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './platform-icon.css';\n\ntype PlatformType =\n\t| 'drupal'\n\t| 'drupal7'\n\t| 'front-end-sites'\n\t| 'gatsby'\n\t| 'gatsby-wp'\n\t| 'google'\n\t| 'import-custom'\n\t| 'microsoft'\n\t| 'next'\n\t| 'next-drupal'\n\t| 'next-wp'\n\t| 'splunk'\n\t| 'sumo-logic'\n\t| 'wordpress';\n\ninterface PlatformIconProps extends ComponentPropsWithoutRef<'div'> {\n\tclassName?: string;\n\t/**\n\t * Which size of icon to render\n\t */\n\ticonSize?: 'm' | 'l' | 'xl' | '2xl';\n\tplatformType: PlatformType;\n}\n\n/**\n * PlatformIcon UI component\n */\nexport const PlatformIcon = ({\n\tclassName,\n\ticonSize = '2xl',\n\tplatformType,\n\t...props\n}: PlatformIconProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-platform-icon';\n\tconst platformClass = `pds-platform-icon--${platformType}`;\n\tconst sizeClass = `pds-platform-icon--${iconSize}`;\n\n\t// Preprocess icon.\n\tlet processedIcon;\n\n\t// Icon pairs get rendered from single platform svgs.\n\tconst iconPairs = ['front-end-sites', 'gatsby-wp', 'next-drupal', 'next-wp'];\n\n\tif (iconPairs.includes(platformType)) {\n\t\t// Map icon pairs to a single element.\n\t\tlet iconPair = [];\n\t\tswitch (platformType) {\n\t\t\tcase 'front-end-sites':\n\t\t\t\ticonPair = ['next', 'gatsby'];\n\t\t\t\tbreak;\n\t\t\tcase 'next-drupal':\n\t\t\t\ticonPair = ['next', 'drupal'];\n\t\t\t\tbreak;\n\t\t\tcase 'gatsby-wp':\n\t\t\t\ticonPair = ['gatsby', 'wordpress'];\n\t\t\t\tbreak;\n\t\t\tcase 'next-wp':\n\t\t\t\ticonPair = ['next', 'wordpress'];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tprocessedIcon = (\n\t\t\t<span className={`${baseClass}__group`}>\n\t\t\t\t{svgData[iconPair[0]]}\n\t\t\t\t{svgData[iconPair[1]]}\n\t\t\t</span>\n\t\t);\n\t} else {\n\t\tprocessedIcon = svgData[platformType];\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, platformClass, sizeClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{processedIcon}\n\t\t</div>\n\t);\n};\n\n// SVG Paths for each icon.\nconst svgData = {\n\tdrupal: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect\n\t\t\t\tfill='var(--pds-color-partner-drupal)'\n\t\t\t\theight='32'\n\t\t\t\trx='16'\n\t\t\t\twidth='32'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M23.027 12.9858C23.027 12.9602 23.0016 12.9474 22.9762 12.9218C21.7311 11.5139 19.9652 9.51725 18.6948 8.09655C18.301 7.67418 17.9071 7.25181 17.5387 6.81664C17.4498 6.71425 17.3736 6.61185 17.2846 6.50946C17.2084 6.43267 17.1703 6.38147 17.1703 6.38147C16.7383 5.8695 16.3953 5.29354 16.1539 4.67919L16.0904 4.5384C16.0904 4.5384 16.0904 4.5384 16.065 4.5128C16.065 4.5128 16.0269 4.5 16.0142 4.5C15.9888 4.5 15.9761 4.5128 15.9634 4.5128C15.9634 4.52133 15.9549 4.52986 15.938 4.5384L15.8745 4.67919C15.6204 5.29354 15.2773 5.8695 14.8581 6.38147C14.8581 6.38147 14.82 6.43267 14.7438 6.50946C14.6548 6.61185 14.5786 6.71425 14.4897 6.81664C14.1086 7.25181 13.7274 7.67418 13.3336 8.09655C12.0632 9.51725 10.2846 11.5139 9.03954 12.9218C9.02683 12.9474 9.01413 12.9602 8.98872 12.9858C4.28813 19.2958 9.39526 24.441 9.39526 24.441H9.38256C10.8944 26.2073 13.0414 27.2952 15.3409 27.4616C15.5441 27.4872 15.7601 27.5 15.9888 27.5C16.2048 27.5 16.4207 27.4872 16.6367 27.4616C18.9489 27.2952 21.0832 26.2073 22.595 24.441C22.595 24.441 27.7149 19.2958 23.0143 12.9858H23.027ZM12.0886 17.4271L11.9742 17.6063C11.1103 18.6686 10.6022 19.7949 10.437 20.9085C10.4116 21.0492 10.2846 21.1388 10.1575 21.1132C10.0686 21.1004 10.0051 21.0365 9.96695 20.9597C9.73828 20.4221 9.58582 19.8589 9.5096 19.283C9.2174 17.2479 9.82721 15.4688 11.123 13.9457C11.6439 13.3442 12.1648 12.7426 12.6857 12.1411C12.7746 12.0387 12.9271 12.0259 13.0287 12.1155L13.0541 12.1411C13.4733 12.6274 14.0196 13.2546 14.6294 13.9713C14.7057 14.0609 14.7057 14.2017 14.6294 14.3041C13.7909 15.3152 12.9016 16.3904 12.1013 17.4143L12.0886 17.4271ZM19.3046 22.7003C18.8218 23.9802 17.869 24.7482 16.5224 24.9658C14.604 25.2602 12.8127 23.9418 12.5205 22.0092C12.5205 21.9836 12.5205 21.9708 12.5205 21.9452C12.3681 20.8573 12.6984 19.8973 13.3971 19.0782C14.2102 18.1183 16.0015 15.8912 16.0269 15.8528C16.065 15.8912 17.9707 18.2846 18.6821 19.1294C19.5841 20.1917 19.8001 21.4076 19.3173 22.7003H19.3046ZM22.1377 20.6909C22.1377 20.7293 22.0996 20.7805 22.0869 20.8189C22.036 20.9469 21.8963 21.0109 21.7692 20.9597C21.693 20.9213 21.6295 20.8573 21.6168 20.7677C21.4389 19.6925 20.9308 18.6174 20.105 17.6063L20.0288 17.4783L19.9779 17.4143C19.3173 16.5696 15.8236 12.4482 14.2991 10.6436C14.2229 10.554 14.2229 10.4132 14.2991 10.3108C14.8073 9.74764 15.3155 9.18447 15.8109 8.60851C15.8999 8.50612 16.0523 8.50612 16.1539 8.60851C16.3826 8.8645 16.5986 9.10768 16.8146 9.36366C18.1993 10.9252 19.5968 12.461 20.9435 14.0353C22.6458 16.0192 23.0397 18.2974 22.1377 20.7037V20.6909Z'\n\t\t\t\tfill='white'\n\t\t\t/>\n\t\t</svg>\n\t),\n\tdrupal7: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect\n\t\t\t\tfill='var(--pds-color-partner-drupal)'\n\t\t\t\theight='32'\n\t\t\t\trx='16'\n\t\t\t\twidth='32'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M20.2634 9.37661C19.2723 8.72036 18.3214 8.46255 17.375 7.8063C16.7946 7.3938 15.9777 6.40005 15.2991 5.54224C15.1786 6.91567 14.7857 7.47349 14.317 7.86255C13.3661 8.65942 12.7634 8.90317 11.9286 9.37661C11.2232 9.76567 7.42857 12.5079 7.42857 17.6172C7.42857 22.736 11.5268 26.5 16.0804 26.5C20.6205 26.5 24.5714 23.0313 24.5714 17.7813C24.5714 12.5172 20.8661 9.76567 20.2634 9.37661ZM20.375 24.6391C19.4777 25.5813 16.3527 25.9844 15.1652 24.836C14.9509 24.611 15.1786 24.2735 15.4554 24.2735C15.4554 24.2735 16.2143 24.8969 17.7545 24.8969C18.9598 24.8969 19.808 24.536 20.1875 24.2407C20.4598 24.025 20.5625 24.4422 20.375 24.6391ZM17.942 22.1735C18.3304 22.0047 19.2366 21.9954 19.5848 22.2344C19.7679 22.3657 20.3036 23.1157 19.8616 23.3454C19.4866 23.5422 19.808 22.6094 18.6786 22.6094C18.0223 22.6094 17.808 22.8532 17.4866 23.125C17.1741 23.4063 17.0491 23.5 16.942 23.3454C16.6741 22.961 17.6518 22.3 17.942 22.1735ZM22.0714 22.9844C21.3929 22.9375 20.0402 20.6969 19.1696 20.6641C17.7902 20.6219 14.5223 24.4469 11.9688 22.6329C10.2366 21.386 11.317 17.7204 14.2813 17.7016C16.4911 17.6782 18.0223 19.9985 19.125 19.975C20.0759 19.961 21.8839 18.0157 22.7768 18.0157C24.9509 18.0157 23.817 23.1391 22.0714 22.9844Z'\n\t\t\t\tfill='white'\n\t\t\t/>\n\t\t</svg>\n\t),\n\twordpress: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<circle cx='16' cy='16' fill='white' r='16' />\n\t\t\t<path\n\t\t\t\td='M16 0.96001C18.0309 0.96001 20.0004 1.35745 21.8541 2.14178C22.745 2.51859 23.6047 2.98515 24.4087 3.52852C25.2055 4.0666 25.9543 4.68485 26.6355 5.36549C27.3161 6.04614 27.9344 6.79543 28.4724 7.59224C29.0158 8.39624 29.4819 9.25545 29.8592 10.1468C30.643 12.0006 31.041 13.9701 31.041 16.001C31.041 18.0319 30.6435 20.0013 29.8592 21.8551C29.4824 22.746 29.0158 23.6057 28.4724 24.4097C27.9344 25.2065 27.3161 25.9553 26.6355 26.6364C25.9548 27.3171 25.2055 27.9353 24.4087 28.4734C23.6047 29.0168 22.7455 29.4829 21.8541 29.8601C20.0004 30.644 18.0309 31.0419 16 31.0419C13.9691 31.0419 11.9996 30.6445 10.1459 29.8601C9.25497 29.4833 8.39528 29.0168 7.59128 28.4734C6.79447 27.9353 6.04566 27.3171 5.36453 26.6364C4.68389 25.9558 4.06564 25.2065 3.52756 24.4097C2.98419 23.6057 2.51811 22.7465 2.14082 21.8551C1.35697 20.0013 0.95905 18.0319 0.95905 16.001C0.95905 13.9701 1.35649 12.0006 2.14082 10.1468C2.51763 9.25593 2.98419 8.39624 3.52756 7.59224C4.06564 6.79543 4.68389 6.04662 5.36453 5.36549C6.04518 4.68485 6.79447 4.0666 7.59128 3.52852C8.39528 2.98515 9.25449 2.51907 10.1459 2.14178C11.9996 1.35793 13.9691 0.96001 16 0.96001ZM16 0C7.16359 0 0 7.16359 0 16C0 24.8364 7.16359 32 16 32C24.8364 32 32 24.8364 32 16C32 7.16359 24.8369 0 16 0Z'\n\t\t\t\tfill='var(--pds-color-partner-wordpress)'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M2.6669 15.9996C2.6669 21.2772 5.73365 25.8382 10.1819 27.9992L3.82131 10.5736C3.08162 12.2316 2.6669 14.0666 2.6669 15.9996ZM25.0015 15.3271C25.0015 13.6788 24.4097 12.5378 23.9023 11.6498C23.2265 10.5511 22.5924 9.62129 22.5924 8.52255C22.5924 7.2971 23.5217 6.15613 24.8316 6.15613C24.8906 6.15613 24.9468 6.16333 25.0044 6.16669C22.6322 3.99323 19.4714 2.66602 16.0005 2.66602C11.342 2.66602 7.24423 5.05644 4.86004 8.67568C5.17301 8.68576 5.46821 8.692 5.71829 8.692C7.11271 8.692 9.27177 8.52255 9.27177 8.52255C9.99033 8.48031 10.0753 9.53632 9.35721 9.62129C9.35721 9.62129 8.6348 9.70577 7.83127 9.74801L12.6865 24.1904L15.605 15.4394L13.528 9.74801C12.8094 9.70577 12.1297 9.62129 12.1297 9.62129C11.4111 9.57904 11.4952 8.48031 12.2142 8.52255C12.2142 8.52255 14.4155 8.692 15.7259 8.692C17.1203 8.692 19.2799 8.52255 19.2799 8.52255C19.9984 8.48031 20.0834 9.53632 19.3648 9.62129C19.3648 9.62129 18.6415 9.70577 17.8389 9.74801L22.6577 24.0805L24.0334 19.722C24.6444 17.8174 25.0025 16.4676 25.0025 15.3266L25.0015 15.3271ZM16.2342 17.166L12.2329 28.7903C13.4276 29.1416 14.691 29.3336 16 29.3336C17.5528 29.3336 19.0423 29.0658 20.428 28.5776C20.3925 28.5205 20.3594 28.46 20.3325 28.3938L16.2342 17.166ZM27.7006 9.60353C27.7577 10.0283 27.7904 10.4839 27.7904 10.9744C27.7904 12.3271 27.5369 13.8477 26.7761 15.75L22.7037 27.5245C26.6676 25.2133 29.3336 20.9192 29.3336 16.0001C29.3336 13.6821 28.7412 11.5024 27.7006 9.60353Z'\n\t\t\t\tfill='var(--pds-color-partner-wordpress)'\n\t\t\t/>\n\t\t</svg>\n\t),\n\tgatsby: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_14628_82557)'>\n\t\t\t\t<path\n\t\t\t\t\td='M16 32C24.8366 32 32 24.8366 32 16C32 7.16344 24.8366 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8366 7.16344 32 16 32Z'\n\t\t\t\t\tfill='var(--pds-color-partner-gatsby)'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M7.0857 24.9142C4.6857 22.5142 3.42856 19.3142 3.42856 16.2285L15.8857 28.5714C12.6857 28.4571 9.4857 27.3142 7.0857 24.9142Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M18.7429 28.2285L3.77142 13.257C5.02857 7.65704 10.0571 3.42847 16 3.42847C20.2286 3.42847 23.8857 5.48561 26.1714 8.57132L24.4571 10.057C22.5143 7.42847 19.4286 5.71418 16 5.71418C11.5429 5.71418 7.77142 8.57132 6.28571 12.5713L19.4286 25.7142C22.7429 24.5713 25.2571 21.7142 26.0571 18.2856H20.5714V15.9999H28.5714C28.5714 21.9428 24.3429 26.9713 18.7429 28.2285Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_14628_82557'>\n\t\t\t\t\t<rect fill='white' height='32' width='32' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tgoogle: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='30'\n\t\t\tviewBox='0 0 30 30'\n\t\t\twidth='30'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<path\n\t\t\t\td='M15.306 12.2727V18.0818H23.5436C23.1819 19.95 22.0964 21.5319 20.4684 22.5955L25.4359 26.3728C28.3302 23.7547 30 19.9092 30 15.341C30 14.2774 29.9026 13.2546 29.7217 12.2729L15.306 12.2727Z'\n\t\t\t\tfill='#4285F4'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M6.72795 17.855L5.60757 18.6955L1.64178 21.7227C4.16036 26.6181 9.32237 30 15.3057 30C19.4383 30 22.903 28.6636 25.4356 26.3728L20.468 22.5955C19.1044 23.4955 17.365 24.041 15.3057 24.041C11.3261 24.041 7.94488 21.4092 6.7342 17.8637L6.72795 17.855Z'\n\t\t\t\tfill='#34A853'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M1.64183 8.27734C0.598274 10.2954 0 12.5727 0 15C0 17.4272 0.598274 19.7045 1.64183 21.7226C1.64183 21.7362 6.73474 17.8499 6.73474 17.8499C6.42861 16.9499 6.24767 15.9954 6.24767 14.9998C6.24767 14.0042 6.42861 13.0498 6.73474 12.1498L1.64183 8.27734Z'\n\t\t\t\tfill='#FBBC05'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M15.3624 5.97272C17.6166 5.97272 19.6203 6.73634 21.2205 8.20909L25.6037 3.91369C22.9459 1.48646 19.4952 0 15.3624 0C9.37908 0 4.21676 3.36818 1.69818 8.27728L6.79093 12.15C8.00145 8.60452 11.3828 5.97272 15.3624 5.97272Z'\n\t\t\t\tfill='#EA4335'\n\t\t\t/>\n\t\t</svg>\n\t),\n\tmicrosoft: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='30'\n\t\t\tviewBox='0 0 30 30'\n\t\t\twidth='30'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_627_542)'>\n\t\t\t\t<path d='M30 0H15.6295V14.3705H30V0Z' fill='#80BC06' />\n\t\t\t\t<path d='M14.3705 0H0V14.3705H14.3705V0Z' fill='#F25325' />\n\t\t\t\t<path d='M14.3705 15.6295H0V30.0001H14.3705V15.6295Z' fill='#05A6F0' />\n\t\t\t\t<path d='M15.6295 15.6295H30V30.0001H15.6295V15.6295Z' fill='#FEBA08' />\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_627_542'>\n\t\t\t\t\t<rect fill='white' height='30' width='30' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tnext: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect\n\t\t\t\tfill='var(--pds-color-partner-nextjs)'\n\t\t\t\theight='32'\n\t\t\t\trx='16'\n\t\t\t\twidth='32'\n\t\t\t></rect>\n\t\t\t<g clipPath='url(#clip0_3906_4409)'>\n\t\t\t\t<mask\n\t\t\t\t\theight='24'\n\t\t\t\t\tid='mask0_3906_4409'\n\t\t\t\t\tmaskUnits='userSpaceOnUse'\n\t\t\t\t\tstyle={{ maskType: 'alpha' }}\n\t\t\t\t\twidth='24'\n\t\t\t\t\tx='4'\n\t\t\t\t\ty='4'\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M16 28c6.627 0 12-5.373 12-12S22.627 4 16 4 4 9.373 4 16s5.373 12 12 12z'\n\t\t\t\t\t\tfill='var(--pds-color-fg-default)'\n\t\t\t\t\t></path>\n\t\t\t\t</mask>\n\t\t\t\t<g mask='url(#mask0_3906_4409)'>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M16 28c6.627 0 12-5.373 12-12S22.627 4 16 4 4 9.373 4 16s5.373 12 12 12z'\n\t\t\t\t\t\tfill='var(--pds-color-fg-default)'\n\t\t\t\t\t\tstroke='var(--pds-color-fg-reverse)'\n\t\t\t\t\t\tstrokeWidth='1.333'\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M23.934 25.003L13.22 11.2H11.2v9.596h1.615v-7.545l9.851 12.728c.445-.297.869-.624 1.268-.976z'\n\t\t\t\t\t\tfill='url(#paint0_linear_3906_4409)'\n\t\t\t\t\t></path>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M20.933 11.2h-1.6v9.6h1.6v-9.6z'\n\t\t\t\t\t\tfill='url(#paint1_linear_3906_4409)'\n\t\t\t\t\t></path>\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\tid='paint0_linear_3906_4409'\n\t\t\t\t\tx1='18.533'\n\t\t\t\t\tx2='23.267'\n\t\t\t\t\ty1='19.533'\n\t\t\t\t\ty2='25.4'\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor='var(--pds-color-fg-reverse)'></stop>\n\t\t\t\t\t<stop\n\t\t\t\t\t\toffset='1'\n\t\t\t\t\t\tstopColor='var(--pds-color-fg-reverse)'\n\t\t\t\t\t\tstopOpacity='0'\n\t\t\t\t\t></stop>\n\t\t\t\t</linearGradient>\n\t\t\t\t<linearGradient\n\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\tid='paint1_linear_3906_4409'\n\t\t\t\t\tx1='20.133'\n\t\t\t\t\tx2='20.107'\n\t\t\t\t\ty1='11.2'\n\t\t\t\t\ty2='18.25'\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor='var(--pds-color-fg-reverse)'></stop>\n\t\t\t\t\t<stop\n\t\t\t\t\t\toffset='1'\n\t\t\t\t\t\tstopColor='var(--pds-color-fg-reverse)'\n\t\t\t\t\t\tstopOpacity='0'\n\t\t\t\t\t></stop>\n\t\t\t\t</linearGradient>\n\t\t\t\t<clipPath id='clip0_3906_4409'>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M0 0H24V24H0z'\n\t\t\t\t\t\tfill='var(--pds-color-fg-reverse)'\n\t\t\t\t\t\ttransform='translate(4 4)'\n\t\t\t\t\t></path>\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tsplunk: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g transform='scale(0.6667)'>\n\t\t\t\t<path\n\t\t\t\t\td='M37.5,4h-27A6.5,6.5,0,0,0,4,10.5v27A6.5,6.5,0,0,0,10.5,44h27A6.5,6.5,0,0,0,44,37.5v-27A6.5,6.5,0,0,0,37.5,4ZM33.6,26.1c0,.1,0,.2-.2.3L14.7,35.8c-.1.1-.3-.1-.3-.2V30.8c0-.1,0-.2.1-.2l13.6-6.8L14.5,16.9c-.1,0-.1-.1-.1-.2V11.9c0-.1.2-.3.3-.2l18.7,9.4a.5.5,0,0,1,.2.4Z'\n\t\t\t\t\tfill='#000000'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</svg>\n\t),\n\t'sumo-logic': (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g transform='scale(0.03125)'>\n\t\t\t\t<circle cx='512' cy='512' fill='#000099' r='512' />\n\t\t\t\t<path\n\t\t\t\t\td='M352.9 361.4c-12.7-2.7-21.8-5.1-26.9-6.3-6.3-1.8-11.2-4.2-13.6-7.6v-13.9c4.2-6.6 14.5-10.9 28.7-10.9 19.6 0 33.2 4.5 54.7 21.5l25.1-30.2c-25.4-21.2-47.1-28.7-78.6-28.7-36.3 0-61.3 14.8-71.3 36v45.9c7.9 15.4 26 24.2 62.2 32 13 3 21.8 5.1 26.9 6 6.6 2.1 12.7 4.8 16 9.7v16c-4.5 7.3-15.4 11.2-29.6 11.2-10.3.3-20.2-1.8-29.6-5.7-9.1-3.6-19.6-10.6-32.9-21.5l-26.9 29.9c29 25.7 53.5 34.4 88.2 34.4 37.2 0 63.5-14.2 73.4-36.9v-46.2c-8.4-17.2-28.7-26.2-65.8-34.7zm401.5-70.1v182.5h-42.6v-19.3c-9.7 15.7-27.5 24.8-53.5 24.8-43.2 0-64.7-22.4-64.7-58v-130h46.5v117.5c0 19 10.3 30.2 30.2 30.2 23.3 0 37.5-13.3 37.5-37.8v-110h46.6zM531.8 606.9v127.5h-46.5V620.8c0-21.8-8.8-35.1-29-35.1s-32 15.1-32 36.3v112.4h-46.5V620.8c0-23.3-9.7-35.1-29-35.1-20.5 0-32 15.1-32 36.3v112.4h-46.5V551.9h43.2v20.2c10.6-17.5 28.1-26.3 52-26.3 23.3 0 40.8 9.7 50.8 26.9 12.4-17.8 30.8-26.9 54.7-26.9 38.8.1 60.8 23.4 60.8 61.1zm139.8-62.8c-42 0-74.9 22.7-88.5 58.9v76.8c13.3 36.3 46.5 58.9 88.5 58.9s74.6-22.7 87.9-58.6v-77.4c-13.5-35.9-46.5-58.6-87.9-58.6zm43 124.2c-7.3 19.3-22.7 30.8-43.2 30.8-20.2 0-36.3-11.5-43.5-30.8v-53.8c7.3-19.3 22.7-31.1 43.5-31.1 20.5 0 35.7 11.8 42.9 31.1l.3 53.8z'\n\t\t\t\t\tfill='#FFFFFF'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</svg>\n\t),\n\t'import-custom': (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect fill='var(--pds-color-fg-default)' height='32' rx='16' width='32' />\n\t\t\t<path\n\t\t\t\td='M17 10.5V15H21.5C22.0312 15 22.5 15.4688 22.5 16C22.5 16.5625 22.0312 17 21.5 17H17V21.5C17 22.0625 16.5312 22.5 16 22.5C15.4375 22.5 15 22.0625 15 21.5V17H10.5C9.9375 17 9.5 16.5625 9.5 16C9.5 15.4688 9.9375 15 10.5 15H15V10.5C15 9.96875 15.4375 9.5 16 9.5C16.5312 9.5 17 9.96875 17 10.5Z'\n\t\t\t\tfill='var(--pds-color-fg-reverse)'\n\t\t\t/>\n\t\t</svg>\n\t),\n};\n","import React, { ComponentPropsWithoutRef, MouseEvent } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ButtonType } from '@libs/types/custom-types';\n\nimport { PlatformIcon } from '@components/icons/PlatformIcon/PlatformIcon';\n\nimport './sso-button.css';\n\ntype SSOButtonSize = 'm' | 'l';\n\ntype PlatformType = 'google' | 'microsoft';\n\ninterface SSOButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Type of button\n\t */\n\tbuttonType?: ButtonType;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * The text of the button\n\t */\n\tlabel: string;\n\t/**\n\t * Click event handler callback\n\t */\n\tonClick?: (e: MouseEvent<HTMLElement>) => void;\n\t/**\n\t * Which platform to render\n\t */\n\tplatform: PlatformType;\n\t/**\n\t * Which size of button to render\n\t * @default 'm'\n\t */\n\tsize?: SSOButtonSize;\n}\n\n/**\n * A Component used to render an SSO Button\n */\nexport const SSOButton = ({\n\tbuttonType = 'button',\n\tclassName = '',\n\tdisabled = false,\n\tlabel,\n\tonClick,\n\tplatform,\n\tsize = 'm',\n\t...props\n}: SSOButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-sso-button';\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Map button sizes to icon sizes.\n\tconst iconSize = size === 'm' ? 'l' : '2xl';\n\n\t// Render the chosen icon\n\tconst renderedIcon = (\n\t\t<PlatformIcon\n\t\t\tclassName={`${baseClass}__icon`}\n\t\t\ticonSize={iconSize}\n\t\t\tplatformType={platform}\n\t\t/>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<button\n\t\t\tclassName={mergeClasses([baseClass, sizeClass, className])}\n\t\t\tdisabled={disabled}\n\t\t\tonClick={onClick}\n\t\t\ttype={buttonType}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderedIcon}\n\t\t\t{label}\n\t\t</button>\n\t);\n};\n","import React, {\n\tcloneElement,\n\tComponentPropsWithoutRef,\n\tisValidElement,\n\tReactElement,\n\tReactNode,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './utility-button.css';\n\n/**\n * Prop types for UtilityButton\n */\nexport interface UtilityButtonProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional props for the button element.\n\t */\n\tbuttonProps?: ComponentPropsWithoutRef<'button'>;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Should the button have a border?\n\t */\n\thasBorder?: boolean;\n\t/**\n\t * Which icon to render.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Position of the icon relative to the label.\n\t */\n\ticonPosition?: 'before' | 'after';\n\t/**\n\t * Is the button critical? If true, the button will be styled as critical on hover and focus.\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Is the button in the process of an initial load?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Should the button label use the monospace font?\n\t */\n\tisMonospace?: boolean;\n\t/**\n\t * Is the button in the process of performing a task and should be disabled?\n\t */\n\tisWorking?: boolean;\n\t/**\n\t * The text of the button.\n\t */\n\tlabel?: string;\n\t/**\n\t * A link element using the router of your choice.\n\t * Use `linkContent` to render a link instead of text.\n\t * In this case, the `buttonProps`, `label`, and `onClick` props will be ignored.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Click event handler callback.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Tooltip text.\n\t */\n\ttooltipText?: string;\n}\n\n/**\n * UtilityButton UI component\n */\nexport const UtilityButton = ({\n\tbuttonProps,\n\tclassName,\n\tdisabled = false,\n\thasBorder = false,\n\ticonName,\n\ticonPosition = 'before',\n\tisCritical = false,\n\tisLoading,\n\tisMonospace = false,\n\tisWorking,\n\tlabel,\n\tlinkContent,\n\tonClick,\n\ttooltipText,\n\t...props\n}: UtilityButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-utility-button';\n\tconst pulseClass = isLoading ? 'pds-pulse' : null;\n\n\t// Helper to render icon\n\tconst renderIcon = (key: string) =>\n\t\ticonName && !isWorking ? (\n\t\t\t<Icon key={key} className={`${baseClass}__icon`} iconName={iconName} />\n\t\t) : null;\n\n\t// Helper to render spinner\n\tconst renderSpinner = () =>\n\t\tisWorking ? (\n\t\t\t<Spinner\n\t\t\t\tkey='spinner'\n\t\t\t\tclassName={`${baseClass}__spinner`}\n\t\t\t\tcolorType='monochromatic'\n\t\t\t\tsize='s'\n\t\t\t/>\n\t\t) : null;\n\n\t// Helper to build content array (icon, spinner, label)\n\tconst buildContent = (text: ReactNode) => {\n\t\tconst content = [];\n\n\t\tif (iconPosition === 'before') {\n\t\t\tcontent.push(renderIcon('icon-before'));\n\t\t}\n\n\t\tcontent.push(renderSpinner());\n\n\t\tcontent.push(\n\t\t\t<span key='label' className={`${baseClass}__label`}>\n\t\t\t\t{text}\n\t\t\t</span>,\n\t\t);\n\n\t\tif (iconPosition === 'after') {\n\t\t\tcontent.push(renderIcon('icon-after'));\n\t\t}\n\n\t\treturn content.filter(Boolean);\n\t};\n\n\t// Extract label text from linkContent or use label prop\n\tconst extractedLabel =\n\t\tlinkContent && isValidElement(linkContent)\n\t\t\t? (linkContent.props as { children: ReactNode }).children\n\t\t\t: label;\n\n\t// Wrapper classes used by both link and button\n\tconst wrapperClasses = mergeClasses([\n\t\tbaseClass,\n\t\thasBorder ? `${baseClass}--border` : null,\n\t\tisCritical ? `${baseClass}--critical` : null,\n\t\tdisabled ? `${baseClass}--disabled` : null,\n\t\tisLoading ? `${baseClass}--loading` : null,\n\t\tisWorking ? `${baseClass}--working` : null,\n\t\tisMonospace ? `${baseClass}--monospace` : null,\n\t\tclassName ?? '',\n\t]);\n\n\t// Helper to wrap content with optional tooltip\n\tconst wrapWithTooltip = (content: ReactNode) =>\n\t\ttooltipText ? (\n\t\t\t<Tooltip content={tooltipText} customTrigger={content} />\n\t\t) : (\n\t\t\tcontent\n\t\t);\n\n\t// If linkContent is provided and not disabled, render as a link\n\tif (linkContent && !disabled) {\n\t\tconst processedLink = isValidElement(linkContent)\n\t\t\t? cloneElement(\n\t\t\t\t\tlinkContent as ReactElement,\n\t\t\t\t\tObject.assign({}, linkContent.props, {\n\t\t\t\t\t\tclassName: mergeClasses([\n\t\t\t\t\t\t\t`${baseClass}__button`,\n\t\t\t\t\t\t\tpulseClass,\n\t\t\t\t\t\t\t(linkContent.props as { className?: string }).className ?? '',\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tchildren: buildContent(extractedLabel),\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: null;\n\n\t\treturn (\n\t\t\t<div className={wrapperClasses} {...props}>\n\t\t\t\t{wrapWithTooltip(processedLink)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Render as button\n\tconst buttonContent = (\n\t\t<button\n\t\t\taria-disabled={disabled || isLoading || isWorking}\n\t\t\tclassName={mergeClasses([`${baseClass}__button`, pulseClass])}\n\t\t\tonClick={disabled ? undefined : onClick}\n\t\t\ttype='button'\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t{buildContent(extractedLabel)}\n\t\t</button>\n\t);\n\n\treturn (\n\t\t<div className={wrapperClasses} {...props}>\n\t\t\t{wrapWithTooltip(buttonContent)}\n\t\t</div>\n\t);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, {\n\tcloneElement,\n\tisValidElement,\n\tReactElement,\n\tReactNode,\n} from 'react';\n\nimport { NavigationItem } from '@libs/types/navigation-types';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\n/**\n * Recursively searches through navigation items to find the first active link\n * @param items - Array of navigation items to search through\n * @returns The active link element, or null if no active link is found or if the active item is a string\n * @example\n * const activeLink = getActiveLink(menuItems);\n */\nexport const getActiveLink = (items: NavigationItem[]): ReactElement | null => {\n\tif (!items) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < items.length; i++) {\n\t\tif (isActiveItem(items[i])) {\n\t\t\t// If the linkContent is a string, return null.\n\t\t\t// Otherwise, return the linkContent.\n\t\t\treturn typeof items[i].linkContent === 'string'\n\t\t\t\t? null\n\t\t\t\t: (items[i].linkContent as ReactElement);\n\t\t}\n\t\tif (items[i].links) {\n\t\t\tconst activeLink = getActiveLink(items[i].links);\n\t\t\tif (activeLink) {\n\t\t\t\treturn activeLink;\n\t\t\t}\n\t\t}\n\t}\n\t// If no active link is found, return null.\n\treturn null;\n};\n\n/**\n * Extracts a string representation from linkContent, whether it's a string or React element\n * @param linkContent - The link content to extract string from (string or React element)\n * @returns String representation of the link content\n * @example\n * const linkText = getLinkContentString(<Link>Home</Link>); // Returns \"Home\"\n * const linkText = getLinkContentString(\"About\"); // Returns \"About\"\n */\nexport const getLinkContentString = (\n\tlinkContent: ReactElement | string,\n): string => {\n\t// If it's already a string, return it\n\tif (typeof linkContent === 'string') {\n\t\treturn linkContent;\n\t}\n\n\t// Otherwise it's a ReactElement, get the children\n\treturn (linkContent.props as any).children as string;\n};\n\n/**\n * Determines if a navigation item is currently active\n * @param item - The navigation item to check\n * @returns True if the item is active, false otherwise\n * @description Checks for active state via:\n * - The `isActive` property on the item\n * - The presence of 'pds-isActive' class on the link element\n * - Returns false for string-based items\n * @example\n * const isActive = isActiveItem(navigationItem);\n */\nexport const isActiveItem = (item: NavigationItem): boolean => {\n\t// If the type is not a string, determine if the item is active.\n\tif (typeof item.linkContent !== 'string') {\n\t\t// Via the isActive property on the item.\n\t\tif (item.isActive) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Via the pds-isActive class on the link.\n\t\tif (\n\t\t\t(item.linkContent.props as { className?: string }).className &&\n\t\t\t(item.linkContent.props as { className?: string }).className.includes(\n\t\t\t\t'pds-isActive',\n\t\t\t)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If not active, return false.\n\t\treturn false;\n\t}\n\n\t// If the type is a string, return false.\n\treturn false;\n};\n\n/**\n * Determines if a navigation item or any of its children are in the active trail\n * @param item - The navigation item to check (including its children)\n * @returns True if the item or any child is active, false otherwise\n * @description Recursively checks the item and all child items for active state\n * @example\n * const inActiveTrail = isActiveTrail(parentItem); // True if parent or any child is active\n */\nexport const isActiveTrail = (item: NavigationItem): boolean => {\n\tif (isActiveItem(item)) {\n\t\treturn true;\n\t}\n\n\t// Repeat for child links.\n\tif (item.links) {\n\t\tfor (let i = 0; i < item.links.length; i++) {\n\t\t\tif (isActiveTrail(item.links[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n};\n\n/**\n * Checks if the provided content is an interactive element (link, button, etc.)\n * @param content - The React content to examine\n * @returns True if the content is an interactive element, false otherwise\n * @description Currently detects:\n * - Native anchor elements (`<a>`)\n * - React Router Link components (by displayName)\n * @example\n * const isInteractive = isInteractiveElement(<Link to=\"/home\">Home</Link>); // true\n * const isInteractive = isInteractiveElement(<span>Label</span>); // false\n * const isInteractive = isInteractiveElement(\"Plain text\"); // false\n */\nexport const isInteractiveElement = (content: ReactNode): boolean => {\n\tif (isValidElement(content)) {\n\t\tconst elementType = content.type;\n\n\t\t// Check for native anchor elements\n\t\tif (\n\t\t\telementType === 'a' ||\n\t\t\t(typeof elementType === 'string' && elementType.toLowerCase() === 'a')\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check for Link components by displayName (with proper type checking)\n\t\tif (typeof elementType === 'function' || typeof elementType === 'object') {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst typeWithDisplayName = elementType as any;\n\t\t\tif (typeWithDisplayName?.displayName === 'Link') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\treturn false;\n};\n\n/**\n * Processes navigation link content based on its type and available child links\n * @param linkContent - The link content to process (string or React element)\n * @param links - Optional array of child navigation items\n * @returns Processed link content\n * @description\n * - If linkContent is a string and child links exist, clones the first child link with the string as label\n * - Otherwise returns the linkContent as-is\n * @example\n * // With string and child links - uses first child as template\n * const processed = processNavLinkContent(\"Home\", [{ linkContent: <Link to=\"/home\" /> }]);\n *\n * // With React element - returns as-is\n * const processed = processNavLinkContent(<Link to=\"/about\">About</Link>);\n */\nexport const processNavLinkContent = (\n\tlinkContent: ReactElement | string,\n\tlinks?: NavigationItem[],\n): ReactElement | string => {\n\tlet processedNavLink: ReactElement | string = null;\n\n\t// If the link content is a string and there are child links,\n\t// use the first child link with the string as the label.\n\tif (typeof linkContent === 'string' && links) {\n\t\t// Get the first child link.\n\t\tconst firstChildLink = links ? links[0].linkContent : null;\n\n\t\t// Check that the link is a valid React element.\n\t\tif (isValidElement(firstChildLink)) {\n\t\t\t// Clone the first child link and set the string as its children.\n\t\t\tprocessedNavLink = cloneElement(firstChildLink, {\n\t\t\t\t...(typeof linkContent === 'string' ? { children: linkContent } : {}),\n\t\t\t});\n\t\t}\n\t} else {\n\t\t// Otherwise, use the link content as-is.\n\t\tprocessedNavLink = linkContent;\n\t}\n\n\treturn processedNavLink;\n};\n\n/**\n * Processes side navigation global items with optional icons and specialized markup structure\n * @param baseClass - Base CSS class for styling\n * @param linkContent - The link content to process (string or React element)\n * @param links - Optional array of child navigation items\n * @param icon - Optional PDS icon to include\n * @returns Processed navigation item with icon and proper markup structure, or null\n * @description\n * Creates a structured navigation item with:\n * - Icon support with proper CSS classes\n * - Consistent markup structure for global navigation\n * - Template behavior for string content with child links\n * @example\n * // String with icon and child links\n * const item = processSideNavGlobalLinkContent('nav', 'Home', childLinks, 'home');\n *\n * // React element with icon\n * const item = processSideNavGlobalLinkContent('nav', <Link to=\"/about\">About</Link>, null, 'info');\n */\nexport const processSideNavGlobalLinkContent = (\n\tbaseClass: string,\n\tlinkContent: ReactElement | string,\n\tlinks?: NavigationItem[],\n\ticon?: PDSIcon,\n) => {\n\t// Result will be a JSX element.\n\tlet processedSideNavGlobalItem: ReactElement = null;\n\n\t// If the linkContent is a string and has child links, create a link element from the first child link.\n\t// Append the icon if it exists.\n\t// Return null if the linkContent is a string and there are no child links.\n\tif (typeof linkContent === 'string') {\n\t\t// Prep new link children for strings with or without an icon.\n\t\tconst newLinkChildrenForString = icon\n\t\t\t? [\n\t\t\t\t\t<span key={linkContent} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t<span className={`${baseClass}__link-icon`}>\n\t\t\t\t\t\t\t<Icon iconName={icon} iconSize='m' />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>{linkContent}</span>\n\t\t\t\t\t</span>,\n\t\t\t\t]\n\t\t\t: [\n\t\t\t\t\t<span key={linkContent} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>{linkContent}</span>\n\t\t\t\t\t</span>,\n\t\t\t\t];\n\n\t\tif (links) {\n\t\t\t// Get the first child link.\n\t\t\tconst firstChildLink = links[0].linkContent;\n\t\t\tif (isValidElement(firstChildLink)) {\n\t\t\t\tprocessedSideNavGlobalItem = cloneElement(firstChildLink, {\n\t\t\t\t\t...(typeof linkContent === 'string'\n\t\t\t\t\t\t? { children: newLinkChildrenForString }\n\t\t\t\t\t\t: {}),\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tprocessedSideNavGlobalItem = null;\n\t\t}\n\t}\n\n\t// If the linkContent is a JSX element and has an icon, clone it and append the icon.\n\t// Return the linkContent as is if the linkContent is a JSX element but there is no icon.\n\tif (isValidElement(linkContent)) {\n\t\tif (icon) {\n\t\t\tprocessedSideNavGlobalItem = cloneElement(\n\t\t\t\tlinkContent,\n\t\t\t\tObject.assign({}, linkContent.props, {\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t<span key={icon} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t\t<span className={`${baseClass}__link-icon`}>\n\t\t\t\t\t\t\t\t<Icon iconName={icon} iconSize='m' />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>\n\t\t\t\t\t\t\t\t{(linkContent.props as { children?: ReactNode }).children}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</span>,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t);\n\t\t} else {\n\t\t\tprocessedSideNavGlobalItem = linkContent;\n\t\t}\n\t}\n\n\treturn processedSideNavGlobalItem;\n};\n","import React, {\n\tComponentPropsWithRef,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n} from 'react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\n// Types.\nimport { NavigationItem } from '@libs/types/navigation-types';\n\n// Contexts.\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n// Components.\nimport { SplitButton } from '@components/buttons/SplitButton/SplitButton';\n\nimport { isActiveTrail } from '../navigation-utilities';\n\nimport './button-nav.css';\n\n// Extend the NavigationItem type to not allow child links.\nexport type ButtonNavItem = Omit<NavigationItem, 'links'>;\n\n/**\n * Prop types for ButtonNav\n */\nexport interface ButtonNavProps extends ComponentPropsWithRef<'nav'> {\n\t/**\n\t * Aria label for the navigation.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems?: ButtonNavItem[];\n\t/**\n\t * Size of the Buttons.\n\t */\n\tsize?: 's' | 'm';\n}\n\n/**\n * ButtonNav UI component\n */\nexport const ButtonNav = ({\n\tariaLabel,\n\tclassName,\n\tmenuItems,\n\tsize = 's',\n\t...props\n}: ButtonNavProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Reference to the navigation element\n\tconst navRef = useRef<HTMLElement>(null);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-button-nav';\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Handle keyboard navigation\n\tuseEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\t// Only process if not in mobile view\n\t\t\tif (isMobile) return;\n\n\t\t\t// Get all focusable elements within the navigation\n\t\t\tconst nav = navRef.current;\n\t\t\tif (!nav) return;\n\n\t\t\t// Find all focusable elements within the navigation\n\t\t\tconst focusableElements = Array.from(\n\t\t\t\tnav.querySelectorAll('a, button, [tabindex]:not([tabindex=\"-1\"])'),\n\t\t\t) as HTMLElement[];\n\n\t\t\t// If no focusable elements, return\n\t\t\tif (focusableElements.length === 0) return;\n\n\t\t\t// Get the currently focused element\n\t\t\tconst focusedElement = document.activeElement as HTMLElement;\n\t\t\tconst currentIndex = focusableElements.indexOf(focusedElement);\n\n\t\t\t// Only process if one of our navigation elements has focus\n\t\t\tif (currentIndex === -1) return;\n\n\t\t\t// Handle arrow keys\n\t\t\tif (event.key === 'ArrowRight') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = (currentIndex + 1) % focusableElements.length;\n\t\t\t\tfocusableElements[nextIndex].focus();\n\t\t\t} else if (event.key === 'ArrowLeft') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst prevIndex =\n\t\t\t\t\t(currentIndex - 1 + focusableElements.length) %\n\t\t\t\t\tfocusableElements.length;\n\t\t\t\tfocusableElements[prevIndex].focus();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handleKeyDown);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', handleKeyDown);\n\t\t};\n\t}, [isMobile]);\n\n\t// Render each menu item for the default view.\n\tconst ButtonMenuItem = ({ isActive, linkContent }: ButtonNavItem) => {\n\t\t// Define item class.\n\t\tconst itemClass = `${baseClass}__item`;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\titemClass,\n\t\t\t\t\tisActive ? `${itemClass}--active` : null,\n\t\t\t\t])}\n\t\t\t>\n\t\t\t\t{linkContent}\n\t\t\t</li>\n\t\t);\n\t};\n\n\t// Preprocess the default menu markup.\n\tconst defaultMarkup =\n\t\tmenuItems.length > 0 ? (\n\t\t\t<ul className={`${baseClass}__menu`}>\n\t\t\t\t{menuItems.map((item, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ButtonMenuItem\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tisActive={isActiveTrail(item)}\n\t\t\t\t\t\t\tlinkContent={item.linkContent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t) : null;\n\n\t// Process the mobile menu items.\n\tconst mobileMenuItems = [];\n\n\tmenuItems.map((item) => {\n\t\tif (item.linkContent) {\n\t\t\tif (!isActiveTrail(item)) {\n\t\t\t\tmobileMenuItems.push({\n\t\t\t\t\tlinkContent: item.linkContent,\n\t\t\t\t\tisLink: true,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tmobileMenuItems.unshift({\n\t\t\t\t\tlinkContent: item.linkContent,\n\t\t\t\t\tisLink: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t// Preprocess the mobile markup.\n\tconst mobileMarkup =\n\t\tmobileMenuItems.length > 0 ? (\n\t\t\t<SplitButton\n\t\t\t\tactionItems={mobileMenuItems}\n\t\t\t\tid='mobile-nav-split-button'\n\t\t\t\tsize={size}\n\t\t\t\tvariant='secondary'\n\t\t\t/>\n\t\t) : null;\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\tref={navRef}\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tsizeClass,\n\t\t\t\tmobileClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileMarkup : defaultMarkup}\n\t\t</nav>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\n\nimport './toaster.css';\n\nconst iconTypes = {\n\tinfo: 'circleInfo',\n\tsuccess: 'check',\n\twarning: 'triangleExclamation',\n\tcritical: 'diamondExclamation',\n} as const;\n\ntype IconType = keyof typeof iconTypes;\n\nconst defaultTypeLabels = {\n\tinfo: 'Information',\n\tsuccess: 'Success',\n\twarning: 'Warning',\n\tcritical: 'Critical',\n\tworking: 'Working...',\n} as const;\n\n/**\n * Prop types for Toast\n */\ninterface ToastProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Toast message content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * ID of individual toast.\n\t */\n\tid?: string;\n\t/**\n\t * Type of toast to show.\n\t */\n\ttype?: IconType | 'working';\n\t/**\n\t * Toast type labels. Provide translation strings if needed.\n\t */\n\ttypeLabels?: Partial<typeof defaultTypeLabels>;\n}\n\n/**\n * Toast UI component\n */\nexport const Toast = ({\n\tchildren,\n\tclassName,\n\tid,\n\ttype = 'info',\n\ttypeLabels = defaultTypeLabels,\n}: ToastProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-toast';\n\tconst cssClasses = {\n\t\tinfo: `${baseClass}--info`,\n\t\tsuccess: `${baseClass}--success`,\n\t\twarning: `${baseClass}--warning`,\n\t\tcritical: `${baseClass}--critical`,\n\t\tworking: `${baseClass}--working`,\n\t\tdismissing: `${baseClass}--dismissing`,\n\t\tdismissed: `${baseClass}--dismissed`,\n\t\ttransition: `${baseClass}--transition`,\n\t};\n\n\t// Label by type.\n\tconst toastTypeLabel = `${typeLabels[type]} `;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, cssClasses[type], className])}\n\t\t\tid={id}\n\t\t>\n\t\t\t<div className={`${baseClass}__icon-container`}>\n\t\t\t\t{type === 'working' ? (\n\t\t\t\t\t<Spinner colorType='monochromatic' size='l' />\n\t\t\t\t) : (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon ${baseClass}__icon--${type}`}\n\t\t\t\t\t\ticonName={`${type}` in iconTypes ? iconTypes[type] : iconTypes.info}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className={`${baseClass}__message`}>\n\t\t\t\t<span className='visually-hidden'>{toastTypeLabel}</span>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ReactElement, ReactNode } from 'react';\n\nimport { cssTransition, toast as toastApi, ToastOptions } from 'react-toastify';\n\nimport { Toast } from './Toast';\n\nexport enum ToastType {\n\tCritical = 'critical',\n\tInfo = 'info',\n\tSuccess = 'success',\n\tWarning = 'warning',\n\tWorking = 'working',\n}\n\nexport const useToast = (): [\n\t(\n\t\ttype: ToastType,\n\t\tmessage: string | ReactElement,\n\t\toptions?: ToastOptions,\n\t) => string | number,\n\ttypeof toastApi,\n\tReturnType<typeof cssTransition>,\n] => {\n\tconst addToast = (\n\t\ttype: ToastType,\n\t\tmessage: string | ReactElement,\n\t\toptions: ToastOptions = {},\n\t): string | number => {\n\t\tconst toastContent: ReactNode = <Toast type={type}>{message}</Toast>;\n\n\t\tlet toastOptions: ToastOptions = {\n\t\t\t...options,\n\t\t};\n\n\t\tif (type === ToastType.Critical || type === ToastType.Warning) {\n\t\t\ttoastOptions = {\n\t\t\t\t...toastOptions,\n\t\t\t\tautoClose: false,\n\t\t\t\trole: 'alert',\n\t\t\t};\n\t\t}\n\n\t\tif (type === ToastType.Working) {\n\t\t\ttoastOptions = {\n\t\t\t\t...toastOptions,\n\t\t\t\tautoClose: false,\n\t\t\t\tcloseButton: false,\n\t\t\t\tcloseOnClick: false,\n\t\t\t};\n\t\t}\n\n\t\treturn toastApi(toastContent, toastOptions);\n\t};\n\n\tconst workingTransition = cssTransition({\n\t\tcollapse: false,\n\t\tenter: 'pds-toast--bounceInPlace',\n\t\texit: 'pds-toast--slideOut',\n\t});\n\n\treturn [addToast, toastApi, workingTransition];\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './panel-list.css';\n\n/**\n * Prop types for PanelRow\n */\nexport interface PanelRowProps extends ComponentPropsWithoutRef<'li'> {\n\t/**\n\t * Child elements to be assigned to named slots.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Aria-label for the expand button.\n\t */\n\texpandButtonAriaLabel?: string;\n\t/**\n\t * Whether the panel row is expandable.\n\t */\n\tisExpandable?: boolean;\n}\n\n/**\n * PanelRow UI component\n */\nexport const PanelRow = ({\n\tchildren,\n\tclassName,\n\texpandButtonAriaLabel,\n\tisExpandable = false,\n\t...props\n}: PanelRowProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-panel-row';\n\tconst [isExpanded, setIsExpanded] = useState(false);\n\tconst liRef = useRef<HTMLLIElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst itemsLeftSlot = slots['items-left'];\n\tconst itemsRightSlot = slots['items-right'];\n\tconst itemsBelowSlot = slots['items-below'];\n\n\tconst handleExpand = () => {\n\t\tconst content = contentRef.current;\n\t\tconst li = liRef.current;\n\t\tif (!content || !li) return;\n\n\t\tconst isExpanding = !isExpanded;\n\t\tsetIsExpanded(isExpanding);\n\n\t\tif (isExpanding) {\n\t\t\tObject.assign(content.style, {\n\t\t\t\tdisplay: 'block',\n\t\t\t\theight: 'auto',\n\t\t\t\topacity: '1',\n\t\t\t});\n\t\t\tli.classList.add('is-expanded');\n\t\t} else {\n\t\t\tObject.assign(content.style, {\n\t\t\t\theight: '0',\n\t\t\t\topacity: '0',\n\t\t\t\tdisplay: 'none',\n\t\t\t});\n\t\t\tli.classList.remove('is-expanded');\n\t\t}\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<li\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t{...props}\n\t\t\tref={liRef}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t`${baseClass}__main`,\n\t\t\t\t\tisExpandable ? 'is-expandable' : '',\n\t\t\t\t])}\n\t\t\t>\n\t\t\t\t{itemsLeftSlot && (\n\t\t\t\t\t<div className={`${baseClass}__items ${baseClass}__items--left`}>\n\t\t\t\t\t\t{itemsLeftSlot}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{itemsRightSlot && (\n\t\t\t\t\t<div className={`${baseClass}__items ${baseClass}__items--right`}>\n\t\t\t\t\t\t{itemsRightSlot}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{isExpandable && (\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-expanded={isExpanded}\n\t\t\t\t\t\taria-label={expandButtonAriaLabel}\n\t\t\t\t\t\tclassName={`${baseClass}__expand-button`}\n\t\t\t\t\t\tonClick={handleExpand}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tclassName={`${baseClass}__expand-icon ${isExpanded ? 'rotated' : ''}`}\n\t\t\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\t\t/>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{isExpandable && itemsBelowSlot && (\n\t\t\t\t<div\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tclassName={`${baseClass}__items ${baseClass}__items--below`}\n\t\t\t\t\tstyle={{ display: 'none', height: '0', opacity: '0' }}\n\t\t\t\t>\n\t\t\t\t\t<div className={`${baseClass}__items-inside`}>{itemsBelowSlot}</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</li>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './picture.css';\n\n/**\n * Prop types for Picture\n */\nexport interface PictureProps extends ComponentPropsWithoutRef<'img'> {\n\t/**\n\t * Alt text for the image. Defaults to empty string for decorative images.\n\t */\n\talt?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Optional height for the image (CSS value, e.g., '100px', '50%', 'auto').\n\t * If not provided, the image will be sized responsively by its container.\n\t */\n\theight?: string | number;\n\t/**\n\t * The fallback image source (e.g., PNG or JPG)\n\t */\n\tsrcFallback: string;\n\t/**\n\t * The WebP image source (preferred for modern browsers)\n\t */\n\tsrcWebp: string;\n\t/**\n\t * Optional width for the image (CSS value, e.g., '100px', '50%', 'auto').\n\t * If not provided, the image will be sized responsively by its container.\n\t */\n\twidth?: string | number;\n}\n\n/**\n * Picture UI component\n */\nexport const Picture = ({\n\talt = '',\n\tclassName,\n\theight,\n\tsrcFallback,\n\tsrcWebp,\n\twidth,\n\t...props\n}: PictureProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-picture';\n\n\t// Render the output\n\treturn (\n\t\t<picture className={mergeClasses([baseClass, className ?? ''])}>\n\t\t\t<source srcSet={srcWebp} type='image/webp' />\n\t\t\t<img\n\t\t\t\talt={alt}\n\t\t\t\tclassName={`${baseClass}__img`}\n\t\t\t\theight={height}\n\t\t\t\tsrc={srcFallback}\n\t\t\t\twidth={width}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</picture>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './video-embed.css';\n\n/**\n * Prop types for VideoEmbed\n */\nexport interface VideoEmbedProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Video hosting platform.\n\t */\n\tplatform: 'vimeo' | 'wistia' | 'youtube';\n\t/**\n\t * Video ID to embed.\n\t */\n\tvideoId: string;\n\t/**\n\t * Video title to display. This is for the title prop on the video iframe.\n\t * If none is provided it will default to `\"[platform] video player\"`\n\t */\n\tvideoTitle?: string;\n}\n\n/**\n * VideoEmbed UI component\n */\nexport const VideoEmbed = ({\n\tclassName,\n\tplatform,\n\tvideoId,\n\tvideoTitle,\n\t...props\n}: VideoEmbedProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-video-embed';\n\n\tconst wistiaFrame = (\n\t\t<iframe\n\t\t\tallow='autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media'\n\t\t\tsrc={`https://fast.wistia.net/embed/iframe/${videoId}`}\n\t\t\ttitle={`Wistia video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t></iframe>\n\t);\n\n\tconst vimeoFrame = (\n\t\t<iframe\n\t\t\tallow='autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media'\n\t\t\tsrc={`https://player.vimeo.com/video/${videoId}`}\n\t\t\ttitle={`Vimeo video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t></iframe>\n\t);\n\n\tconst youTubeFrame = (\n\t\t<iframe\n\t\t\tallowFullScreen\n\t\t\tallow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'\n\t\t\treferrerPolicy='strict-origin-when-cross-origin'\n\t\t\tsrc={`https://www.youtube.com/embed/${videoId}`}\n\t\t\ttitle={`YouTube video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t></iframe>\n\t);\n\n\tlet frameToRender: ReactNode;\n\tswitch (platform) {\n\t\tcase 'vimeo':\n\t\t\tframeToRender = vimeoFrame;\n\t\t\tbreak;\n\t\tcase 'wistia':\n\t\t\tframeToRender = wistiaFrame;\n\t\t\tbreak;\n\t\tcase 'youtube':\n\t\tdefault:\n\t\t\tframeToRender = youTubeFrame;\n\t\t\tbreak;\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{frameToRender}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { StatusType } from '@libs/types/custom-types';\n\nimport './status-badge.css';\n\n/**\n * StatusBadge component props\n */\nexport interface StatusBadgeProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Background color for badge\n\t */\n\tcolor?: 'transparent' | 'neutral' | 'reverse';\n\t/**\n\t * Should the badge show a status indicator.\n\t */\n\thasStatusIndicator?: boolean;\n\t/**\n\t * Text for badge.\n\t */\n\tlabel: string;\n\t/**\n\t * Translatable text for status indicator — for screen readers.\n\t */\n\tstatusIndicatorText?: string;\n\t/**\n\t * Status type for badge. Only renders if `hasStatusIndicator` is true.\n\t */\n\tstatusType?: StatusType | 'frozen' | 'disabled';\n}\n\n/**\n * StatusBadge UI component\n */\nexport const StatusBadge = ({\n\tclassName,\n\tcolor = 'transparent',\n\thasStatusIndicator = false,\n\tlabel,\n\tstatusIndicatorText = 'Status indicator: ',\n\tstatusType,\n\t...props\n}: StatusBadgeProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-status-badge';\n\tconst colorClass = `${baseClass}--${color}`;\n\tconst statusClass = `${baseClass}__status`;\n\tconst statusClassMod = statusType ? `${statusClass}--${statusType}` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, colorClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{hasStatusIndicator === true && (\n\t\t\t\t<span className={mergeClasses([statusClass, statusClassMod])}>\n\t\t\t\t\t{statusType && (\n\t\t\t\t\t\t<span className='visually-hidden'>\n\t\t\t\t\t\t\t{statusIndicatorText} {statusType}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<span className={`${baseClass}__label`}>{label}</span>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, useRef } from 'react';\n\nimport { useMeasure } from '@reactuses/core';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { SiteStatus, SiteType, SiteTypeIcon } from '@libs/types/custom-types';\n\nimport { StatusBadge } from '@components/badges/StatusBadge/StatusBadge';\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './site-option-display.css';\n\n/**\n * Site option item type.\n */\nexport type SiteOption = {\n\t/**\n\t * ID of the site.\n\t */\n\tid: string;\n\t/**\n\t * Machine name of the site.\n\t */\n\tmachineName?: string;\n\t/**\n\t * Name of the site.\n\t */\n\tname: string;\n\t/**\n\t * Site active status.\n\t */\n\tstatus?: SiteStatus;\n\t/**\n\t * Site type.\n\t */\n\ttype?: SiteType;\n};\n\n/** Site option display props. */\nexport interface SiteOptionDisplayProps\n\textends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Site option to display.\n\t */\n\toption: SiteOption;\n}\n\n/**\n * UI component to display site options.\n */\nexport const SiteOptionDisplay = ({\n\tclassName,\n\toption,\n\t...props\n}: SiteOptionDisplayProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-site-option-display';\n\n\tconst iconType = option.type ? SiteTypeIcon[option.type] : 'bolt';\n\n\t// Get the width of the component.\n\tconst optionRef = useRef<HTMLDivElement | null>(null);\n\tconst [rect] = useMeasure(optionRef);\n\n\t// Calculate label truncation based on the width of the component.\n\tconst labelMaxWidth = rect.width / 16 - 7.5;\n\n\t// Preprocess status badge.\n\tlet siteStatusLabel: string;\n\tlet siteStatusIndicatorType: 'success' | 'frozen' | 'critical';\n\tif (option.status === 'active') {\n\t\tsiteStatusLabel = 'Active';\n\t\tsiteStatusIndicatorType = 'success';\n\t}\n\tif (option.status === 'frozen') {\n\t\tsiteStatusLabel = 'Frozen';\n\t\tsiteStatusIndicatorType = 'frozen';\n\t}\n\tif (option.status === 'restricted') {\n\t\tsiteStatusLabel = 'Restricted';\n\t\tsiteStatusIndicatorType = 'critical';\n\t}\n\tconst statusBadge = (\n\t\t<StatusBadge\n\t\t\thasStatusIndicator\n\t\t\tlabel={siteStatusLabel}\n\t\t\tstatusType={siteStatusIndicatorType}\n\t\t/>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={optionRef}\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\ttitle={option.name}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__inner`} style={{ pointerEvents: 'none' }}>\n\t\t\t\t<div className={`${baseClass}__icon`}>\n\t\t\t\t\t<Icon iconName={iconType} />\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__label`}\n\t\t\t\t\tstyle={{ maxWidth: `${labelMaxWidth}rem` }}\n\t\t\t\t>\n\t\t\t\t\t{option.name}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className={`${baseClass}__status`} style={{ pointerEvents: 'none' }}>\n\t\t\t\t{statusBadge}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ContainerWidth } from '@libs/types/custom-types';\n\nimport '../../utilities/container.css';\n\n/**\n * Prop types for Container\n */\ninterface ContainerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Container content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Width of the container.\n\t */\n\twidth?: ContainerWidth;\n}\n\n/**\n * Container UI component\n */\nexport const Container = ({\n\tchildren,\n\tclassName,\n\twidth = 'standard',\n\t...props\n}: ContainerProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-container';\n\tconst widthClass = width !== 'standard' ? `${baseClass}--${width}` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, widthClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport './docs-layout.css';\n\n/**\n * Prop types for DocsLayout\n */\ninterface DocsLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Children to render in the layout.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Minimum width of the sidebar when expanded in rems.\n\t * This is also the min-width of the sidebar when it is not collapsable (hasSidebarToggle is false).\n\t */\n\tsidebarMinWidth?: number;\n\t/**\n\t * Width of the sidebar when expanded as a percentage.\n\t * This is also the width of the sidebar when it is not collapsable (hasSidebarToggle is false).\n\t */\n\tsidebarWidth?: string;\n}\n\n/**\n * DocsLayout UI component\n */\nexport const DocsLayout = ({\n\tchildren,\n\tclassName,\n\tsidebarMinWidth = 14.5,\n\tsidebarWidth = '18%',\n\t...props\n}: DocsLayoutProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext) as {\n\t\tisMobile: boolean;\n\t};\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-docs-layout';\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\n\t// Sidebar styles for non-mobile.\n\tconst sidebarStyles = {\n\t\twidth: sidebarWidth,\n\t\tminWidth: `${sidebarMinWidth}rem`,\n\t};\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst mainContent = slots['__unslotted'] || slots['content'];\n\tconst sidebarContent = slots['sidebar'];\n\n\t// Prepare mobile markup.\n\tconst mobileContent = (\n\t\t<>\n\t\t\t{sidebarContent && (\n\t\t\t\t<aside className={`${baseClass}__sidebar`}>{sidebarContent}</aside>\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__content`}>{mainContent}</div>\n\t\t</>\n\t);\n\n\t// Prepare default markup.\n\tconst defaultContent = (\n\t\t<>\n\t\t\t{sidebarContent && (\n\t\t\t\t<aside className={`${baseClass}__sidebar`} style={sidebarStyles}>\n\t\t\t\t\t<div className={`${baseClass}__sidebar-inner`}>{sidebarContent}</div>\n\t\t\t\t</aside>\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__content`}>{mainContent}</div>\n\t\t</>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tmobileClass,\n\t\t\t\t'pds-container pds-container--x-wide',\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileContent : defaultContent}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { GridGapOptions } from '@libs/types/layout-types';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\nimport { useWindowWidth } from '@utilities/hooks/useWindowWidth/useWindowWidth';\n\nimport './flex-container.css';\n\ntype FlexAlignContent =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'space-between'\n\t| 'space-around'\n\t| 'stretch';\n\ntype FlexAlignItems =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'stretch'\n\t| 'baseline';\n\ntype FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\ntype FlexJustifyContent =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'space-between'\n\t| 'space-around'\n\t| 'space-evenly';\n\ntype FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\ntype FlexGapOptions = GridGapOptions | 'minimal' | 'none';\n\ninterface FlexContainerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Aligns content when there is extra space in the cross-axis.\n\t */\n\talignContent?: FlexAlignContent;\n\t/**\n\t * Aligns items on the cross axis.\n\t */\n\talignItems?: FlexAlignItems;\n\t/**\n\t * Container content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Establishes the main-axis, thus defining the direction flex items are placed in the flex container.\n\t */\n\tflexDirection?: FlexDirection;\n\t/**\n\t * If the items do not fit in one line (row or column, depending on flexDirection), how should they wrap.\n\t */\n\tflexWrap?: FlexWrap;\n\t/**\n\t * Gap between items.\n\t */\n\tgap?: FlexGapOptions;\n\t/**\n\t * Alignment along the main axis.\n\t */\n\tjustifyContent?: FlexJustifyContent;\n\t/**\n\t * Align content on mobile. If not set, will default to the same value as `alignContent`.\n\t */\n\tmobileAlignContent?: FlexAlignContent;\n\t/**\n\t * Align items on mobile. If not set, will default to the same value as `alignItems`.\n\t */\n\tmobileAlignItems?: FlexAlignItems;\n\t/**\n\t * Flex direction for mobile.\n\t */\n\tmobileFlexDirection?: FlexDirection;\n\t/**\n\t * Flex wrap for mobile. If not set, will default to the same value as `flexWrap`.\n\t */\n\tmobileFlexWrap?: FlexWrap;\n\t/**\n\t * Gap between items on mobile. If not set, will default to the same value as `gap`.\n\t */\n\tmobileGap?: FlexGapOptions;\n\t/**\n\t * Justify content for mobile. If not set, will default to the same value as `justifyContent`.\n\t */\n\tmobileJustifyContent?: FlexJustifyContent;\n}\n\n/**\n * Flex Container UI component\n */\nexport const FlexContainer = ({\n\talignContent = 'flex-start',\n\talignItems = 'stretch',\n\tchildren,\n\tclassName,\n\tflexDirection = 'row',\n\tflexWrap = 'nowrap',\n\tgap = 'standard',\n\tjustifyContent = 'flex-start',\n\tmobileAlignContent,\n\tmobileAlignItems,\n\tmobileFlexDirection = 'column',\n\tmobileFlexWrap,\n\tmobileGap,\n\tmobileJustifyContent,\n\t...props\n}: FlexContainerProps) => {\n\t// Get window width.\n\tconst windowWidth = useWindowWidth();\n\n\t// Set isMobile fallback.\n\tlet isMobile = windowWidth <= 640;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-flex';\n\tconst containerClass = `${baseClass}-container`;\n\tconst mobileClass = isMobile ? `${containerClass}--mobile` : null;\n\n\tlet flexDirectionClass = null;\n\tif (isMobile) {\n\t\tflexDirectionClass = `${baseClass}-direction--${mobileFlexDirection}`;\n\t} else {\n\t\tif (flexDirection !== 'row') {\n\t\t\tflexDirectionClass = `${baseClass}-direction--${flexDirection}`;\n\t\t}\n\t}\n\n\tlet flexWrapClass = null;\n\tif (isMobile) {\n\t\t// If mobileFlexWrap is set, use that value.\n\t\tif (mobileFlexWrap) {\n\t\t\tif (mobileFlexWrap !== 'nowrap') {\n\t\t\t\tflexWrapClass = `${baseClass}-wrap--${mobileFlexWrap}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileFlexWrap is not set, default to flexWrap value.\n\t\t\tif (flexWrap !== 'nowrap') {\n\t\t\t\tflexWrapClass = `${baseClass}-wrap--${flexWrap}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (flexWrap !== 'nowrap') {\n\t\t\tflexWrapClass = `${baseClass}-wrap--${flexWrap}`;\n\t\t}\n\t}\n\n\tlet justifyContentClass = null;\n\tif (isMobile) {\n\t\t// If mobileJustifyContent is set, use that value.\n\t\tif (mobileJustifyContent) {\n\t\t\tif (mobileJustifyContent !== 'flex-start') {\n\t\t\t\tjustifyContentClass = `${baseClass}-justify--${mobileJustifyContent}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileJustifyContent is not set, default to justifyContent value.\n\t\t\tif (justifyContent !== 'flex-start') {\n\t\t\t\tjustifyContentClass = `${baseClass}-justify--${justifyContent}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (justifyContent !== 'flex-start') {\n\t\t\tjustifyContentClass = `${baseClass}-justify--${justifyContent}`;\n\t\t}\n\t}\n\n\tlet alignItemsClass = null;\n\tif (isMobile) {\n\t\t// If mobileAlignItems is set, use that value.\n\t\tif (mobileAlignItems) {\n\t\t\tif (mobileAlignItems !== 'stretch') {\n\t\t\t\talignItemsClass = `${baseClass}-align-items--${mobileAlignItems}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileAlignItems is not set, default to alignItems value.\n\t\t\tif (alignItems !== 'stretch') {\n\t\t\t\talignItemsClass = `${baseClass}-align-items--${alignItems}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (alignItems !== 'stretch') {\n\t\t\talignItemsClass = `${baseClass}-align-items--${alignItems}`;\n\t\t}\n\t}\n\n\tlet alignContentClass = null;\n\tif (isMobile) {\n\t\t// If mobileAlignContent is set, use that value.\n\t\tif (mobileAlignContent) {\n\t\t\tif (mobileAlignContent !== 'flex-start') {\n\t\t\t\talignContentClass = `${baseClass}-align-content--${mobileAlignContent}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileAlignContent is not set, default to alignContent value.\n\t\t\tif (alignContent !== 'flex-start') {\n\t\t\t\talignContentClass = `${baseClass}-align-content--${alignContent}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (alignContent !== 'flex-start') {\n\t\t\talignContentClass = `${baseClass}-align-content--${alignContent}`;\n\t\t}\n\t}\n\n\tlet gapClass = null;\n\tif (isMobile) {\n\t\t// If mobileGap is set, use that value.\n\t\tif (mobileGap) {\n\t\t\tif (mobileGap !== 'none') {\n\t\t\t\tgapClass = `${baseClass}-gap--${mobileGap}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileGap is not set, default to gap value.\n\t\t\tif (gap !== 'none') {\n\t\t\t\tgapClass = `${baseClass}-gap--${gap}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (gap !== 'none') {\n\t\t\tgapClass = `${baseClass}-gap--${gap}`;\n\t\t}\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tcontainerClass,\n\t\t\t\tmobileClass,\n\t\t\t\tflexDirectionClass,\n\t\t\t\tflexWrapClass,\n\t\t\t\tjustifyContentClass,\n\t\t\t\talignItemsClass,\n\t\t\t\talignContentClass,\n\t\t\t\tgapClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n","import React, { ReactNode } from 'react';\n\nimport { OverlayContextProvider } from '@utilities/context-providers/OverlayContext/OverlayContext';\nimport { ResponsiveContextProvider } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n/**\n * Prop types for GlobalWrapper\n */\ninterface GlobalWrapperProps {\n\t/**\n\t * Child components\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Mobile menu will be enabled when viewport is at or below this number in pixels.\n\t */\n\tmobileMenuMaxWidth?: number;\n}\n\n/**\n * GlobalWrapper wrapper component.\n */\nexport const GlobalWrapper = ({\n\tchildren,\n\tmobileMenuMaxWidth = 640,\n}: GlobalWrapperProps) => {\n\treturn (\n\t\t<ResponsiveContextProvider mobileMenuMaxWidth={mobileMenuMaxWidth}>\n\t\t\t<OverlayContextProvider>{children}</OverlayContextProvider>\n\t\t</ResponsiveContextProvider>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { GridGapOptions, VerticalAlignOptions } from '@libs/types/layout-types';\n\nimport '../../utilities/grid/grid.css';\nimport './three-item-layout.css';\n\n/**\n * Prop types for TwoItemLayout\n */\ninterface TwoItemLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Item content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Width of gap between items.\n\t */\n\tgridGap?: GridGapOptions;\n\t/**\n\t * Vertical alignment of items.\n\t */\n\tverticalAlign?: VerticalAlignOptions;\n}\n\n/**\n * ThreeItemLayout UI component.\n */\nexport const ThreeItemLayout = ({\n\tchildren,\n\tclassName,\n\tgridGap = 'standard',\n\tverticalAlign = 'start',\n\t...props\n}: TwoItemLayoutProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-three-item-layout';\n\tconst gridGapClass =\n\t\tgridGap === 'standard' ? 'pds-grid' : `pds-grid pds-grid--${gridGap}`;\n\tconst vertAlignClass = `${baseClass}--${verticalAlign}`;\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\tconst columns = [\n\t\tslots['first-item'],\n\t\tslots['second-item'],\n\t\tslots['third-item'],\n\t];\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tgridGapClass,\n\t\t\t\tvertAlignClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{columns.map((column, idx) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={idx}\n\t\t\t\t\tclassName='pds-grid-item pds-grid-item--sm-12 pds-grid-item--md-4 pds-grid-item--lg-4'\n\t\t\t\t>\n\t\t\t\t\t{column}\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { GridGapOptions, VerticalAlignOptions } from '@libs/types/layout-types';\n\nimport '../../utilities/grid/grid.css';\nimport './two-item-layout.css';\n\n/**\n * Prop types for TwoItemLayout\n */\ninterface TwoItemLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Item content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Width of gap between items.\n\t */\n\tgridGap?: GridGapOptions;\n\t/**\n\t * Layout variant for column widths.\n\t */\n\tlayoutVariant?: 'equal' | 'one-third-start' | 'one-third-end';\n\t/**\n\t * Vertical alignment of items.\n\t */\n\tverticalAlign?: VerticalAlignOptions;\n}\n\n/**\n * TwoItemLayout UI component.\n */\nexport const TwoItemLayout = ({\n\tchildren,\n\tclassName,\n\tgridGap = 'standard',\n\tlayoutVariant = 'equal',\n\tverticalAlign = 'start',\n\t...props\n}: TwoItemLayoutProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-two-item-layout';\n\tconst gridGapClass =\n\t\tgridGap === 'standard' ? 'pds-grid' : `pds-grid pds-grid--${gridGap}`;\n\tconst vertAlignClass = `${baseClass}--${verticalAlign}`;\n\n\t// Pre-defined class arrays based on column width.\n\tconst halfClasses = ['pds-grid-item--md-6'];\n\tconst oneThirdClasses = ['pds-grid-item--md-4', 'pds-grid-item--lg-3'];\n\tconst twoThirdsClasses = ['pds-grid-item--md-8', 'pds-grid-item--lg-9'];\n\n\t// Base classes array.\n\tconst itemBaseClasses = ['pds-grid-item', 'pds-grid-item--sm-4'];\n\n\t// Establish vars for each item's classes array.\n\tinterface ItemClasses {\n\t\tfirstItemClasses: string[];\n\t\tsecondItemClasses: string[];\n\t}\n\n\tlet firstItemClasses: ItemClasses['firstItemClasses'];\n\tlet secondItemClasses: ItemClasses['secondItemClasses'];\n\n\t// Alter items' class arrays based on layoutVariant.\n\tswitch (layoutVariant) {\n\t\tcase 'equal':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(halfClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(halfClasses);\n\t\t\tbreak;\n\t\tcase 'one-third-start':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(oneThirdClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(twoThirdsClasses);\n\t\t\tbreak;\n\t\tcase 'one-third-end':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(twoThirdsClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(oneThirdClasses);\n\t}\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots for this component.\n\tconst firstItemContent = slots['first-item'];\n\tconst secondItemContent = slots['second-item'];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tgridGapClass,\n\t\t\t\tvertAlignClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={firstItemClasses.join(' ').trim()}>\n\t\t\t\t{firstItemContent}\n\t\t\t</div>\n\t\t\t<div className={secondItemClasses.join(' ').trim()}>\n\t\t\t\t{secondItemContent}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { useEffect, useState } from 'react';\n\nimport {\n\tBP_L,\n\tBP_M,\n\tBP_XL,\n} from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n\nexport type Breakpoint = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Returns the current breakpoint based on window width.\n *\n * Breakpoints:\n * - sm: 0-767px (mobile)\n * - md: 768-1279px (tablet)\n * - lg: 1280-1439px (desktop)\n * - xl: 1440px+ (large desktop)\n *\n * @returns {Breakpoint} Current breakpoint name\n *\n * @example\n * const breakpoint = useBreakpoint();\n * const isMobile = breakpoint === 'sm';\n */\nexport const useBreakpoint = (): Breakpoint => {\n\tconst isBrowser = typeof window !== 'undefined';\n\n\tconst getBreakpoint = (width: number): Breakpoint => {\n\t\tif (width >= BP_XL) return 'xl';\n\t\tif (width >= BP_L) return 'lg';\n\t\tif (width >= BP_M) return 'md';\n\t\treturn 'sm';\n\t};\n\n\tconst [breakpoint, setBreakpoint] = useState<Breakpoint>(\n\t\tisBrowser ? getBreakpoint(window.innerWidth) : 'lg',\n\t);\n\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tconst handleResize = () => {\n\t\t\tsetBreakpoint(getBreakpoint(window.innerWidth));\n\t\t};\n\n\t\t// Set initial value\n\t\thandleResize();\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t};\n\t}, []);\n\n\treturn breakpoint;\n};\n","import { useEffect, useState } from 'react';\n\n/**\n * Hook for matching CSS media queries in JavaScript.\n *\n * @param {string} query - CSS media query string (e.g., \"(min-width: 768px)\")\n * @returns {boolean} Whether the media query currently matches\n *\n * @example\n * // Using with breakpoint constants\n * import { BP_M } from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n * const isTabletOrLarger = useMediaQuery(`(min-width: ${BP_M}px)`);\n *\n * @example\n * // Using with custom query\n * const prefersReducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)');\n * const isDarkMode = useMediaQuery('(prefers-color-scheme: dark)');\n */\nexport const useMediaQuery = (query: string): boolean => {\n\tconst isBrowser = typeof window !== 'undefined';\n\n\tconst getMatches = (mediaQuery: string): boolean => {\n\t\tif (!isBrowser) return false;\n\t\treturn window.matchMedia(mediaQuery).matches;\n\t};\n\n\tconst [matches, setMatches] = useState<boolean>(getMatches(query));\n\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tconst mediaQueryList = window.matchMedia(query);\n\t\tconst handleChange = () => {\n\t\t\tsetMatches(mediaQueryList.matches);\n\t\t};\n\n\t\t// Set initial value\n\t\tsetMatches(mediaQueryList.matches);\n\n\t\t// Modern browsers\n\t\tif (mediaQueryList.addEventListener) {\n\t\t\tmediaQueryList.addEventListener('change', handleChange);\n\t\t\treturn () => mediaQueryList.removeEventListener('change', handleChange);\n\t\t} else {\n\t\t\t// Legacy browsers (Safari < 14)\n\t\t\tmediaQueryList.addListener(handleChange);\n\t\t\treturn () => mediaQueryList.removeListener(handleChange);\n\t\t}\n\t}, [query]);\n\n\treturn matches;\n};\n"],"names":["createRandomID","initiateSlots","children","slots","unslotted","Children","child","isValidElement","slotName","mergeClasses","styles","Tally","className","label","size","type","typeLabels","props","baseClass","colorClass","sizeClass","messageTypeLabel","React","extractText","node","BP_M","BP_L","BP_XL","SPACING_6XL","SPACING_5XL","SPACING_4XL","SPACING_3XL","SPACING_2XL","SPACING_XL","SPACING_L","SPACING_M","SPACING_S","SPACING_XS","Z_INDEX_OVERLAY","Icon","display","iconName","iconSize","verticalAlign","iconClasses","iconWidth","svgData","iconSizes","iconList","TYPOGRAPHY_SIZE_XS","TYPOGRAPHY_SIZE_S","TYPOGRAPHY_SIZE_M","OverlayContext","createContext","OverlayContextProvider","overlayCount","setOverlayCount","useState","openOverlay","useCallback","prev","closeOverlay","hasOpenOverlay","useEffect","handleKeyDown","e","contextValue","useKeyPress","targetKey","callback","options","altKey","ctrlKey","enabled","metaKey","shiftKey","keyPressed","setKeyPressed","modifiersMatch","event","downHandler","upHandler","Tooltip","content","customTrigger","offsetValue","preferredPlacement","triggerAccessibleText","triggerIcon","triggerIconColor","triggerIconSize","zIndex","isOpen","setIsOpen","triggerType","customTriggerClasses","iconTriggerClasses","context","floatingStyles","refs","useFloating","offset","flip","shift","autoUpdate","hover","useHover","focus","useFocus","dismiss","useDismiss","role","useRole","getFloatingProps","getReferenceProps","useInteractions","FloatingPortal","HiddenLabel","forwardRef","isActive","ref","id","useId","activeClass","spinnerSizes","labelFontSizes","labelMargins","Spinner","colorType","isInline","showLabel","displayClass","spinnerSize","fontSize","labelMargin","lineWidth","spinnerStyles","labelStyles","Button","ariaLabel","buttonType","disabled","displayType","isFullWidth","isLoading","isSplitButton","isWorking","onClick","tooltipText","variant","effectiveSize","variantClass","fullWidthClass","loadingClass","pulseClass","setIconSize","setSpinnerSize","setSpinnerColor","renderedIcon","buttonContent","buttonElement","ButtonLink","linkContent","buttonBaseClass","buttonModifierClasses","linkText","linkLabel","processedLink","cloneElement","useClipboard","text","isCopied","setIsCopied","duration","IconButton","hasTooltip","icon2Name","animationClasses","setOffsetValue","isAnimated","icon1Ref","useRef","icon2Ref","handleAnimation","handleClick","ClipboardButton","clipboardText","_isCopied","CloseButton","StatusTypeLabels","isSeparatorItemType","item","isHeadingItemType","isLinkItemType","isNodeItemType","SitePlanLevelLabel","SiteTypeLabel","SiteTypeIcon","useWindowWidth","isBrowser","windowWidth","setWindowWidth","handleResize","ResponsiveContext","ResponsiveContextProvider","mobileMenuMaxWidth","isMobile","MenuButton","menuItems","menuPosition","testId","undefinedLabel","withinNavbar","placement","strategy","x","y","responsiveContext","useContext","isMobileNavbar","mobileClass","navbarClass","triggerID","listboxID","menuRefActual","nodeRef","focusMenu","setFocusMenu","activeDescendant","setActiveDescendant","activeMenuItemIndex","setActiveMenuItemIndex","groupIDs","menuItemIDs","focusableMenuItems","useLayoutEffect","handleClickOutside","menuElem","setActiveMenuItem","elemID","index","openMenu","closeMenu","setFocusByFirstCharacter","char","itemFound","i","activateMenuItem","itemID","itemIndex","activateCurrentMenuItem","currentItemID","handleTriggerClick","handleMenuItemClick","handleButtonKeyDown","key","flag","firstEnabledIndex","lastEnabledIndex","handleMenuKeydown","moveToItemID","moveToIndex","isPrintableCharacter","str","attempts","maxAttempts","renderItem","groupID","groupHeadingID","groupIDString","fallbackItemID","shouldFocus","isCritical","criticalLabel","itemLabel","itemDescription","itemContent","linkElement","LinkElement","menuItemClasses","renderMenuItemsGrouped","items","menuItemBreaks","groupedItems","breaks","breakItem","group","renderMenuItems","itemsData","haveBreaks","listboxClasses","groupedItemsData","currentGroupID","firstMenuItemIndex","initialDescendant","hasHeading","keyID","groupLabel","menuButtonDisplayType","labelText","handleExpand","button","MobileMenuItems","menuButtonMobileDisplayType","buttonVariant","mobileButtonClasses","navbarMobileMarkup","expandedClass","SegmentedButton","defaultValue","onChange","value","disabledClass","isControlled","hasDefaultValue","internalValue","setInternalValue","handleSelection","radio","idx","isChecked","optionClass","checkedClass","SplitButton","actionItems","moreActionsLabel","primaryAction","moreActions","primaryActionElement","PlatformIcon","platformType","platformClass","processedIcon","iconPair","SSOButton","platform","UtilityButton","buttonProps","hasBorder","iconPosition","isMonospace","renderIcon","renderSpinner","buildContent","extractedLabel","wrapperClasses","wrapWithTooltip","isActiveItem","isActiveTrail","ButtonNav","navRef","nav","focusableElements","focusedElement","currentIndex","nextIndex","prevIndex","ButtonMenuItem","itemClass","defaultMarkup","mobileMenuItems","mobileMarkup","iconTypes","defaultTypeLabels","Toast","cssClasses","toastTypeLabel","ToastType","useToast","addToast","message","toastContent","toastOptions","toastApi","workingTransition","cssTransition","PanelRow","expandButtonAriaLabel","isExpandable","isExpanded","setIsExpanded","liRef","contentRef","itemsLeftSlot","itemsRightSlot","itemsBelowSlot","li","isExpanding","Picture","alt","height","srcFallback","srcWebp","width","VideoEmbed","videoId","videoTitle","wistiaFrame","vimeoFrame","youTubeFrame","frameToRender","StatusBadge","color","hasStatusIndicator","statusIndicatorText","statusType","statusClass","statusClassMod","SiteOptionDisplay","option","iconType","optionRef","rect","useMeasure","labelMaxWidth","siteStatusLabel","siteStatusIndicatorType","statusBadge","Container","widthClass","DocsLayout","sidebarMinWidth","sidebarWidth","sidebarStyles","mainContent","sidebarContent","mobileContent","defaultContent","FlexContainer","alignContent","alignItems","flexDirection","flexWrap","gap","justifyContent","mobileAlignContent","mobileAlignItems","mobileFlexDirection","mobileFlexWrap","mobileGap","mobileJustifyContent","containerClass","flexDirectionClass","flexWrapClass","justifyContentClass","alignItemsClass","alignContentClass","gapClass","GlobalWrapper","ThreeItemLayout","gridGap","gridGapClass","vertAlignClass","columns","column","TwoItemLayout","layoutVariant","halfClasses","oneThirdClasses","twoThirdsClasses","itemBaseClasses","firstItemClasses","secondItemClasses","firstItemContent","secondItemContent","useBreakpoint","getBreakpoint","breakpoint","setBreakpoint","useMediaQuery","query","getMatches","mediaQuery","matches","setMatches","mediaQueryList","handleChange"],"mappings":"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","x_google_ignoreList":[3,5]}
1
+ {"version":3,"file":"index.js","sources":["../src/libs/components/utils.js","../src/components/badges/Tally/Tally.tsx","../src/libs/components/utility-components.tsx","../node_modules/@pantheon-systems/pds-design-tokens/build/js/variables.global.js","../src/components/icons/Icon/custom-icons.tsx","../src/components/icons/Icon/generated-icon-data.ts","../src/components/icons/Icon/Icon.tsx","../node_modules/@pantheon-systems/pds-design-tokens/build/js/variables.typography.js","../src/utilities/context-providers/OverlayContext/OverlayContext.tsx","../src/utilities/hooks/useKeyPress/useKeyPress.ts","../src/components/Tooltip/Tooltip.tsx","../src/components/inputs/input-utilities.tsx","../src/components/loading-indicators/Spinner/Spinner.tsx","../src/components/buttons/Button/Button.tsx","../src/components/buttons/ButtonLink/ButtonLink.tsx","../src/utilities/hooks/useClipboard/useClipboard.ts","../src/components/buttons/IconButton/IconButton.tsx","../src/components/buttons/ClipboardButton/ClipboardButton.tsx","../src/components/buttons/CloseButton/CloseButton.tsx","../src/libs/types/custom-types.tsx","../src/utilities/hooks/useWindowWidth/useWindowWidth.ts","../src/utilities/context-providers/ResponsiveContext/ResponsiveContext.tsx","../src/components/buttons/MenuButton/MenuButton.tsx","../src/components/buttons/SegmentedButton/SegmentedButton.tsx","../src/components/buttons/SplitButton/SplitButton.tsx","../src/components/icons/PlatformIcon/PlatformIcon.tsx","../src/components/buttons/SSOButton/SSOButton.tsx","../src/components/buttons/UtilityButton/UtilityButton.tsx","../src/components/inputs/TagsInput/TagsInput.tsx","../src/components/navigation/navigation-utilities.tsx","../src/components/navigation/ButtonNav/ButtonNav.tsx","../src/components/notifications/Banner/Banner.tsx","../src/components/notifications/InlineMessage/InlineMessage.tsx","../src/components/notifications/SectionMessage/SectionMessage.tsx","../src/components/notifications/Toaster/Toast.tsx","../src/components/notifications/Toaster/Toaster.tsx","../src/components/notifications/Toaster/useToast.tsx","../src/components/panels/PanelList/PanelRow.tsx","../src/components/Picture/Picture.tsx","../src/components/VideoEmbed/VideoEmbed.tsx","../src/components/badges/StatusBadge/StatusBadge.tsx","../src/libs/components/SiteOptionDisplay/SiteOptionDisplay.tsx","../src/layouts/Container/Container.tsx","../src/layouts/DocsLayout/DocsLayout.tsx","../src/layouts/FlexContainer/FlexContainer.tsx","../src/layouts/GlobalWrapper/GlobalWrapper.tsx","../src/layouts/ThreeItemLayout/ThreeItemLayout.tsx","../src/layouts/TwoItemLayout/TwoItemLayout.tsx","../src/utilities/hooks/useBreakpoint/useBreakpoint.ts","../src/utilities/hooks/useMediaQuery/useMediaQuery.ts"],"sourcesContent":["import { Children, isValidElement } from 'react';\n\n// Function to generate a random ID.\nexport const createRandomID = () => {\n\treturn Math.random().toString(32).substring(2, 13);\n};\n\n// Function to collect all descendants of an element.\nexport const getDescendants = (node, collect) => {\n\t// Check for children first.\n\tif (!node?.childNodes) {\n\t\treturn;\n\t}\n\n\t// Collect all children.\n\tlet i;\n\tcollect = collect || [];\n\tfor (i = 0; i < node.childNodes.length; i++) {\n\t\tcollect.push(node.childNodes[i]);\n\t\tgetDescendants(node.childNodes[i], collect);\n\t}\n\treturn collect;\n};\n\n// Function to initiate slots from a children prop.\nexport const initiateSlots = (children) => {\n\tconst slots = {};\n\tconst unslotted = [];\n\n\tChildren.forEach(children, (child) => {\n\t\tif (isValidElement(child)) {\n\t\t\tconst slotName = child.props.slot;\n\t\t\tif (slotName) {\n\t\t\t\tif (slots[slotName]) {\n\t\t\t\t\tslots[slotName].push(child);\n\t\t\t\t} else {\n\t\t\t\t\tslots[slotName] = [child];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tunslotted.push(child);\n\t\t\t}\n\t\t} else {\n\t\t\t// Handle non-React elements (strings, numbers, etc.)\n\t\t\tunslotted.push(child);\n\t\t}\n\t});\n\n\t// Add unslotted children to the slots object with a special key\n\tif (unslotted.length > 0) {\n\t\tslots['__unslotted'] = unslotted;\n\t}\n\n\treturn slots;\n};\n\n// Function to merge css classes\nexport const mergeClasses = (styles) =>\n\tstyles.join(' ').trim().replace(/\\s+/g, ' ');\n\n/**\n * Function to validate if image src is valid, restricts base64 to data image types and excludes svg + xml\n */\nexport const isValidImageSrc = (uri) => {\n\tif (!uri) return false;\n\n\tif (!uri.startsWith('data:')) return true;\n\n\tconst regex =\n\t\t/^data:image\\/(png|jpeg|jpg|gif|bmp|webp);base64,[A-Za-z0-9+/]+=*$/;\n\treturn regex.test(uri);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './tally.css';\n\ntype TypeLabelsType = {\n\tcritical?: string;\n\tinfo?: string;\n\tneutral?: string;\n\tsuccess?: string;\n\twarning?: string;\n};\n\n/**\n * Prop types for Tally\n */\nexport interface TallyProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Label text\n\t */\n\tlabel: string | number;\n\t/**\n\t * Size of the tally\n\t */\n\tsize?: 'xs' | 's' | 'm';\n\t/**\n\t * Notification type\n\t */\n\ttype: 'neutral' | 'critical' | 'warning' | 'info' | 'success';\n\t/**\n\t * Message type labels.\n\t */\n\ttypeLabels?: TypeLabelsType;\n}\n\n/**\n * Tally UI component\n */\nexport const Tally = ({\n\tclassName,\n\tlabel,\n\tsize = 's',\n\ttype = 'neutral',\n\ttypeLabels = {\n\t\tinfo: 'Information',\n\t\tsuccess: 'Success',\n\t\twarning: 'Warning',\n\t\tcritical: 'Critical',\n\t\tneutral: '',\n\t},\n\t...props\n}: TallyProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-tally';\n\tconst colorClass = `${baseClass}--${type}`;\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Label by type\n\tconst messageTypeLabel = `${typeLabels[type]}: `;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcolorClass,\n\t\t\t\tsizeClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__label`}>\n\t\t\t\t<span className='visually-hidden'>{messageTypeLabel}</span>\n\t\t\t\t{label}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nTally.displayName = 'Tally';\n","import { Children, createElement, isValidElement, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { HeadingLevel } from '@libs/types/custom-types';\n\n// Heading level utility component.\n// This is used for elements that need to render as a heading (h2, h3, h4) or span.\ninterface HxProps {\n\tbaseClass?: string;\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tid?: string;\n\tlevel: HeadingLevel;\n}\n\nexport const Hx = ({\n\tbaseClass,\n\tchildren,\n\tclassName,\n\tid,\n\tlevel,\n\t...props\n}: HxProps) => {\n\t// Set up classes.\n\tconst headingClass = baseClass ? `${baseClass}__heading` : null;\n\n\t// Preprocess heading element type.\n\tconst HxElement = level;\n\n\t// Render the appropriate heading level\n\treturn createElement(\n\t\tHxElement,\n\t\t{ className: mergeClasses([headingClass, className]), id, ...props },\n\t\tchildren,\n\t);\n};\n\n// Extract text if it's a ReactNode, convert it if it's a number\nexport const extractText = (node: ReactNode): string => {\n\tif (typeof node === 'string' || typeof node === 'number') {\n\t\treturn String(node);\n\t}\n\tif (isValidElement(node)) {\n\t\tconst props = node.props as { children?: ReactNode };\n\t\treturn Children.toArray(props.children).map(extractText).join('');\n\t}\n\treturn '';\n};\n","/**\n * Do not edit directly, this file was auto-generated.\n */\n\nexport const ANIMATION_DURATION_DEFAULT = \"200ms\";\nexport const ANIMATION_DURATION_REVEAL = \"300ms\";\nexport const ANIMATION_TIMING_FUNCTION_DEFAULT = \"cubic-bezier(.2, 0, 0, 1)\";\nexport const ANIMATION_TRANSITION_BUTTON = \"background-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, border-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, box-shadow 200ms cubic-bezier(.2, 0, 0, 1) 0ms, transform 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_DEFAULT = \"all 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_FOCUS = \"outline 200ms cubic-bezier(.2, 0, 0, 1) 0ms, outline-offset 200ms cubic-bezier(.2, 0, 0, 1) 0ms, box-shadow 200ms cubic-bezier(.2, 0, 0, 1) 0ms, border-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_INPUT = \"border-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, background-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, box-shadow 200ms cubic-bezier(.2, 0, 0, 1) 0ms, outline 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_LINK = \"color 200ms cubic-bezier(.2, 0, 0, 1) 0ms, text-decoration-color 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_REVEAL = \"height 300ms cubic-bezier(.2, 0, 0, 1) 0ms, opacity 300ms cubic-bezier(.2, 0, 0, 1) 0ms, padding 300ms cubic-bezier(.2, 0, 0, 1) 0ms, width 300ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const ANIMATION_TRANSITION_ROTATION = \"transform 200ms cubic-bezier(.2, 0, 0, 1) 0ms\";\nexport const BORDER_WIDTH_STEPPER = \"3px\";\nexport const BORDER_WIDTH_DEFAULT = \"1px\";\nexport const BORDER_WIDTH_THICKER = \"2px\";\nexport const BORDER_WIDTH_OUTLINE = \"1px\";\nexport const BORDER_RADIUS_DEFAULT = \"0.1875rem\";\nexport const BORDER_RADIUS_BAR = \"3.5rem\";\nexport const BORDER_RADIUS_BUTTON = \"3.5rem\";\nexport const BORDER_RADIUS_CONTAINER = \"0.375rem\";\nexport const BORDER_RADIUS_INPUT = \"0.25rem\";\nexport const BP_S = 0;\nexport const BP_M = 768;\nexport const BP_L = 1280;\nexport const BP_XL = 1440;\nexport const CONTAINER_MODAL_WIDTH_S = \"25rem\";\nexport const CONTAINER_MODAL_WIDTH_M = \"37.5rem\";\nexport const CONTAINER_MODAL_WIDTH_L = \"47.5rem\";\nexport const CONTAINER_MODAL_WIDTH_XL = \"67.5rem\";\nexport const CONTAINER_TOOLTIP_MAX_WIDTH = \"12.5rem\";\nexport const CONTAINER_DASHBOARD_NAVBAR_MAX_WIDTH = \"1440px\";\nexport const CONTAINER_PADDING_BASE = \"1.5rem\";\nexport const CONTAINER_PADDING_NARROW_BP_M = \"12%\";\nexport const CONTAINER_PADDING_NARROW_BP_L = \"20%\";\nexport const CONTAINER_PADDING_STANDARD_BP_M = \"6%\";\nexport const CONTAINER_PADDING_STANDARD_BP_L = \"8%\";\nexport const CONTAINER_PADDING_WIDE_BP_M = \"5%\";\nexport const CONTAINER_PADDING_WIDE_BP_L = \"4%\";\nexport const CONTAINER_MAX_WIDTH_NARROW = \"1024px\";\nexport const CONTAINER_MAX_WIDTH_STANDARD = \"1200px\";\nexport const CONTAINER_MAX_WIDTH_WIDE = \"1440px\";\nexport const CONTAINER_MAX_WIDTH_X_WIDE = \"1600px\";\nexport const GRID_COLUMNS_4_GAP = \"1.25rem\";\nexport const GRID_COLUMNS_12_BP_M_GAP_NARROW = \"1.25rem\";\nexport const GRID_COLUMNS_12_BP_M_GAP_STANDARD = \"1.5rem\";\nexport const GRID_COLUMNS_12_BP_M_GAP_WIDE = \"2rem\";\nexport const GRID_COLUMNS_12_BP_L_GAP_NARROW = \"1.5rem\";\nexport const GRID_COLUMNS_12_BP_L_GAP_STANDARD = \"2rem\";\nexport const GRID_COLUMNS_12_BP_L_GAP_WIDE = \"2.5rem\";\nexport const SPACING_DASHBOARD_NAV_ITEM_HEIGHT = \"2.25rem\";\nexport const SPACING_DASHBOARD_NAV_ITEM_PADDING = \"0.625rem\";\nexport const SPACING_STEPPER_INDICATOR_SIZE = \"1.25rem\";\nexport const SPACING_STEPPER_STEP_CONTENT_WIDTH = \"7rem\";\nexport const SPACING_9XL = \"10rem\";\nexport const SPACING_8XL = \"8rem\";\nexport const SPACING_7XL = \"6rem\";\nexport const SPACING_6XL = \"5rem\";\nexport const SPACING_5XL = \"4rem\";\nexport const SPACING_4XL = \"3rem\";\nexport const SPACING_3XL = \"2.5rem\";\nexport const SPACING_2XL = \"2rem\";\nexport const SPACING_XL = \"1.5rem\";\nexport const SPACING_L = \"1.25rem\";\nexport const SPACING_M = \"1rem\";\nexport const SPACING_S = \"0.75rem\";\nexport const SPACING_XS = \"0.625rem\";\nexport const SPACING_2XS = \"0.5rem\";\nexport const SPACING_3XS = \"0.375rem\";\nexport const SPACING_4XS = \"0.25rem\";\nexport const SPACING_5XS = \"0.125rem\";\nexport const SPACING_BUTTON_HEIGHT_XS = \"1.5rem\";\nexport const SPACING_BUTTON_HEIGHT_S = \"2rem\";\nexport const SPACING_BUTTON_HEIGHT_M = \"2.5rem\";\nexport const SPACING_BUTTON_HEIGHT_L = \"3rem\";\nexport const SPACING_BUTTON_HEIGHT_XL = \"3.5rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_XS = \"0.75rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_S = \"1rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_M = \"1.25rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_L = \"1.5rem\";\nexport const SPACING_BUTTON_PADDING_INLINE_XL = \"2.25rem\";\nexport const SPACING_BUTTON_GAP_INLINE_XS = \"0.5rem\";\nexport const SPACING_BUTTON_GAP_INLINE_S = \"0.5rem\";\nexport const SPACING_BUTTON_GAP_INLINE_M = \"0.625rem\";\nexport const SPACING_BUTTON_GAP_INLINE_L = \"0.625rem\";\nexport const SPACING_BUTTON_GAP_INLINE_XL = \"0.625rem\";\nexport const SPACING_INPUT_HEIGHT_S = \"2rem\";\nexport const SPACING_INPUT_HEIGHT_M = \"2.5rem\";\nexport const TYPOGRAPHY_FONT_CSS_IMPORT = \"'https://fonts.googleapis.com/css2?family=IBM+Plex+Serif:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Inter+Tight:ital,wght@0,100..900;1,100..900&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&display=swap'\";\nexport const Z_INDEX_NAVIGATION = 100;\nexport const Z_INDEX_DROPDOWN = 300;\nexport const Z_INDEX_NOTIFICATIONS = 500;\nexport const Z_INDEX_OVERLAY = 700;\nexport const Z_INDEX_MODAL = 900;\nexport const Z_INDEX_MAX = 9999;\nexport const Z_INDEX_RESET = 0;\n\nexport const SPACING = {\n SPACING_5XS,\n SPACING_4XS,\n SPACING_3XS,\n SPACING_2XS,\n SPACING_XS,\n SPACING_S,\n SPACING_M,\n SPACING_L,\n SPACING_XL,\n SPACING_2XL,\n SPACING_3XL,\n SPACING_4XL,\n SPACING_5XL,\n SPACING_6XL,\n SPACING_7XL,\n SPACING_8XL,\n SPACING_9XL,\n};\n","/**\n * Custom icon SVG data for icons without a Font Awesome equivalent.\n *\n * Two types:\n * - 'path': Simple SVG path data (renders as <path d={svgPathData} />)\n * - 'complex': JSX content for icons needing masks, gradients, etc.\n *\n * Creating custom icons:\n *\n * ViewBox dimensions:\n * - Use 512 height to match FA's standard. Width can vary by aspect ratio.\n * - Exception: brand logos with fixed aspect ratios (e.g. nextJs at 180x180)\n * can use their native dimensions.\n *\n * Preparing SVG path data from Figma/Illustrator:\n * 1. Flatten all layers into a single path\n * 2. Set artboard to target dimensions (e.g. Nx512)\n * 3. Export as SVG, copy the `d` attribute from the <path> element\n * 4. Remove any fill, stroke, or transform attributes — the component\n * applies fill=\"currentColor\" at render time\n * 5. Ensure path coordinates start at 0,0 (no negative coords or offsets)\n *\n * When to use 'complex':\n * - Only when the icon requires multiple elements (masks, gradients,\n * multiple colors). Avoid if possible since complex icons can't be\n * serialized by the generate script.\n *\n * Testing:\n * - Check the icon at all sizes (xs through 3xl) in Storybook\n * - Verify it looks balanced next to FA icons at the same size\n */\n\nimport React from 'react';\n\nexport interface SimpleCustomIcon {\n\theight: number;\n\tsvgPathData: string;\n\ttype: 'path';\n\twidth: number;\n}\n\nexport interface ComplexCustomIcon {\n\theight: number;\n\trender: () => React.ReactNode;\n\ttype: 'complex';\n\twidth: number;\n}\n\nexport type CustomIconData = ComplexCustomIcon | SimpleCustomIcon;\n\nexport const customIcons: Record<string, CustomIconData> = {\n\tboltPantheon: {\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M183.215 0L254.271 277.176H204.614L302 512L46.228 187.779H135.272L0 0.434418L144.526 0.459972L145.968 0H183.215Z',\n\t\ttype: 'path',\n\t\twidth: 304,\n\t},\n\tnextJs: {\n\t\theight: 180,\n\t\trender: () => (\n\t\t\t<>\n\t\t\t\t<mask\n\t\t\t\t\theight='180'\n\t\t\t\t\tid='icon_nextjs_mask'\n\t\t\t\t\tmaskUnits='userSpaceOnUse'\n\t\t\t\t\tstyle={{ maskType: 'alpha' }}\n\t\t\t\t\twidth='180'\n\t\t\t\t\tx='0'\n\t\t\t\t\ty='0'\n\t\t\t\t>\n\t\t\t\t\t<circle cx='90' cy='90' fill='black' r='90' />\n\t\t\t\t</mask>\n\t\t\t\t<g mask='url(#icon_nextjs_mask)'>\n\t\t\t\t\t<circle cx='90' cy='90' fill='currentColor' r='90' />\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M149.508 157.52L69.142 54H54V125.97H66.1136V69.3836L139.999 164.845C143.333 162.614 146.509 160.165 149.508 157.52Z'\n\t\t\t\t\t\tfill='url(#icon_nextjs_gradient_diagonal)'\n\t\t\t\t\t/>\n\t\t\t\t\t<rect\n\t\t\t\t\t\tfill='url(#icon_nextjs_gradient_vertical)'\n\t\t\t\t\t\theight='72'\n\t\t\t\t\t\twidth='12'\n\t\t\t\t\t\tx='115'\n\t\t\t\t\t\ty='54'\n\t\t\t\t\t/>\n\t\t\t\t</g>\n\t\t\t\t<defs>\n\t\t\t\t\t<linearGradient\n\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\tid='icon_nextjs_gradient_diagonal'\n\t\t\t\t\t\tx1='109'\n\t\t\t\t\t\tx2='144.5'\n\t\t\t\t\t\ty1='116.5'\n\t\t\t\t\t\ty2='160.5'\n\t\t\t\t\t>\n\t\t\t\t\t\t<stop stopColor='var(--icon-detail-color)' />\n\t\t\t\t\t\t<stop\n\t\t\t\t\t\t\toffset='1'\n\t\t\t\t\t\t\tstopColor='var(--icon-detail-color)'\n\t\t\t\t\t\t\tstopOpacity='0'\n\t\t\t\t\t\t/>\n\t\t\t\t\t</linearGradient>\n\t\t\t\t\t<linearGradient\n\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\tid='icon_nextjs_gradient_vertical'\n\t\t\t\t\t\tx1='121'\n\t\t\t\t\t\tx2='120.799'\n\t\t\t\t\t\ty1='54'\n\t\t\t\t\t\ty2='106.875'\n\t\t\t\t\t>\n\t\t\t\t\t\t<stop stopColor='var(--icon-detail-color)' />\n\t\t\t\t\t\t<stop\n\t\t\t\t\t\t\toffset='1'\n\t\t\t\t\t\t\tstopColor='var(--icon-detail-color)'\n\t\t\t\t\t\t\tstopOpacity='0'\n\t\t\t\t\t\t/>\n\t\t\t\t\t</linearGradient>\n\t\t\t\t</defs>\n\t\t\t</>\n\t\t),\n\t\ttype: 'complex',\n\t\twidth: 180,\n\t},\n\tquotesLeft: {\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M232.896 226.425C228.749 226.425 225.964 231.118 227.632 235.301L286.746 413.714L116.988 224.541C113.406 220.543 102.507 208.132 99.9534 203.926L11.645 108.127C9.0914 103.92 11.8346 98.2854 16.4278 98.2854H227.018C227.811 98.2854 228.592 98.3754 229.349 98.5481C229.87 98.3779 230.428 98.2854 231.017 98.2854H441.605C446.22 98.2854 450.387 101.323 452.187 106.003L495.176 217.627C496.786 221.801 494.005 226.425 489.888 226.425H447.484C443.338 226.425 440.551 231.118 442.221 235.301L501.333 413.714L331.576 224.541C327.995 220.543 317.095 208.132 314.542 203.926L247.159 130.829L280.589 217.627C282.198 221.801 279.418 226.425 275.3 226.425H232.896Z',\n\t\ttype: 'path',\n\t\twidth: 512,\n\t},\n\tquotesRight: {\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M289.771 226.425C293.918 226.425 296.703 231.118 295.035 235.301L235.921 413.714L405.679 224.541C409.261 220.543 420.16 208.132 422.713 203.926L511.022 108.127C513.575 103.92 510.832 98.2854 506.239 98.2854H295.649C294.855 98.2854 294.075 98.3754 293.317 98.5481C292.797 98.3779 292.239 98.2854 291.65 98.2854H81.0613C76.4469 98.2854 72.2795 101.323 70.48 106.003L27.4902 217.627C25.8806 221.801 28.6614 226.425 32.7787 226.425H75.183C79.3291 226.425 82.1152 231.118 80.4459 235.301L21.3334 413.714L191.09 224.541C194.672 220.543 205.571 208.132 208.125 203.926L275.507 130.829L242.078 217.627C240.468 221.801 243.249 226.425 247.366 226.425H289.771Z',\n\t\ttype: 'path',\n\t\twidth: 512,\n\t},\n};\n","/**\n * Auto-generated icon data - DO NOT EDIT MANUALLY\n *\n * Generated by: npm run generate:icon-data\n * Source: icon-registry.ts + Font Awesome packages + custom-icons.tsx\n * Generated: 2026-02-20T03:07:23.257Z\n */\n\nimport { customIcons } from './custom-icons';\n\nexport { customIcons };\n\nexport const iconData = {\n\tangleDown: {\n\t\taliases: ['chevron down', 'dropdown'],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M209.5 369c-9.4 9.4-24.6 9.4-33.9 0L15.5 209c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l143 143 143-143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-160 160z',\n\t\twidth: 384,\n\t},\n\tangleLeft: {\n\t\taliases: ['chevron left'],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M15.5 239c-9.4 9.4-9.4 24.6 0 33.9l160 160c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-143-143 143-143c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L15.5 239z',\n\t\twidth: 256,\n\t},\n\tangleRight: {\n\t\taliases: ['chevron right'],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M241.5 239c9.4 9.4 9.4 24.6 0 33.9L81.5 433c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l143-143-143-143c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l160 160z',\n\t\twidth: 256,\n\t},\n\tanglesLeft: {\n\t\taliases: ['chevrons left', 'double left'],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M15.5 239c-9.4 9.4-9.4 24.6 0 33.9l160 160c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-143-143 143-143c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L15.5 239zm352-160l-160 160c-9.4 9.4-9.4 24.6 0 33.9l160 160c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-143-143 143-143c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z',\n\t\twidth: 448,\n\t},\n\tanglesRight: {\n\t\taliases: ['chevrons right', 'double right'],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M81.5 433l160-160c9.4-9.4 9.4-24.6 0-33.9L81.5 79c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l143 143-143 143c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0zm192 0l160-160c9.4-9.4 9.4-24.6 0-33.9L273.5 79c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l143 143-143 143c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0z',\n\t\twidth: 448,\n\t},\n\tangleUp: {\n\t\taliases: ['chevron up'],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M175.5 143c9.4-9.4 24.6-9.4 33.9 0l160 160c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-143-143-143 143c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l160-160z',\n\t\twidth: 384,\n\t},\n\tarrowDownToLine: {\n\t\taliases: ['download', 'save to'],\n\t\tcategories: ['actions', 'arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M360 512c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0zM175 377c9.4 9.4 24.6 9.4 33.9 0L345 241c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95 0-278.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 278.1-95-95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L175 377z',\n\t\twidth: 384,\n\t},\n\tarrowLeft: {\n\t\taliases: ['back', 'previous'],\n\t\tcategories: ['arrows', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M7 239c-9.4 9.4-9.4 24.6 0 33.9L175 441c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L81.9 280 488 280c13.3 0 24-10.7 24-24s-10.7-24-24-24L81.9 232 209 105c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 239z',\n\t\twidth: 512,\n\t},\n\tarrowRight: {\n\t\taliases: ['forward', 'next'],\n\t\tcategories: ['arrows', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M505 273c9.4-9.4 9.4-24.6 0-33.9L337 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l127 127-406.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l406.1 0-127 127c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L505 273z',\n\t\twidth: 512,\n\t},\n\tarrowsRetweet: {\n\t\taliases: ['retweet', 'swap', 'exchange'],\n\t\tcategories: ['actions', 'arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M463 473c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-31 31 0-270.1c0-53-43-96-96-96L280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l128 0c26.5 0 48 21.5 48 48l0 270.1-31-31c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM113 39c-9.4-9.4-24.6-9.4-33.9 0L7 111c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l31-31 0 270.1c0 53 43 96 96 96l128 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-128 0c-26.5 0-48-21.5-48-48l0-270.1 31 31c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L113 39z',\n\t\twidth: 576,\n\t},\n\tasterisk: {\n\t\taliases: ['required', 'star'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M224 0c13.3 0 24 10.7 24 24l0 190.3 164-95.1c11.5-6.7 26.2-2.7 32.8 8.7s2.7 26.2-8.7 32.8L271.8 256 436 351.2c11.5 6.6 15.4 21.3 8.7 32.8s-21.3 15.4-32.8 8.7L248 297.7 248 488c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-190.3-164 95.1c-11.5 6.7-26.2 2.7-32.8-8.7S.5 357.9 12 351.2L176.2 256 12 160.8C.5 154.1-3.4 139.4 3.2 128s21.3-15.4 32.8-8.7L200 214.3 200 24c0-13.3 10.7-24 24-24z',\n\t\twidth: 448,\n\t},\n\tbanBug: {\n\t\taliases: ['no bugs', 'debug'],\n\t\tcategories: ['development', 'security'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 464c-114.9 0-208-93.1-208-208 0-48.8 16.8-93.7 44.9-129.1L385.1 419.1C349.7 447.2 304.8 464 256 464zm85.2-156.7l31.4 4.5c13.1 1.9 25.3-7.2 27.2-20.4s-7.2-25.3-20.4-27.2l-43.4-6.2 0-4.1 43.4-6.2c13.1-1.9 22.2-14 20.4-27.2s-14-22.2-27.2-20.4L336 205.5c-.1-4.1-.6-8.1-1.3-12l37-20.5c11.6-6.4 15.8-21 9.3-32.6s-21-15.8-32.6-9.3l-36.1 20.1c-14.5-14.3-34.3-23.1-56.2-23.1-25.7 0-48.5 12.1-63.2 30.9l-66-66c35.5-28.1 80.3-44.9 129.1-44.9 114.9 0 208 93.1 208 208 0 48.8-16.8 93.7-44.9 129.1l-77.9-77.9zM256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM132.6 264.2c-13.1 1.9-22.2 14-20.4 27.2s14 22.2 27.2 20.4l36.6-5.2c.1 4.1 .6 8.1 1.3 12l-37 20.5c-11.6 6.4-15.8 21-9.3 32.6s21 15.8 32.6 9.3l36.1-20.1c14.4 14.3 34.3 23.1 56.2 23.1 7.9 0 15.6-1.2 22.9-3.3l-120.2-120.2-26.1 3.7z',\n\t\twidth: 512,\n\t},\n\tbars: {\n\t\taliases: ['menu', 'hamburger', 'nav'],\n\t\tcategories: ['navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M0 88C0 74.7 10.7 64 24 64l400 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 112C10.7 112 0 101.3 0 88zM0 256c0-13.3 10.7-24 24-24l400 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 280c-13.3 0-24-10.7-24-24zM448 424c0 13.3-10.7 24-24 24L24 448c-13.3 0-24-10.7-24-24s10.7-24 24-24l400 0c13.3 0 24 10.7 24 24z',\n\t\twidth: 448,\n\t},\n\tbarsFilter: {\n\t\taliases: ['filter', 'sort'],\n\t\tcategories: ['actions', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M0 88C0 74.7 10.7 64 24 64l464 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 112C10.7 112 0 101.3 0 88zM96 256c0-13.3 10.7-24 24-24l272 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-272 0c-13.3 0-24-10.7-24-24zM320 424c0 13.3-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l80 0c13.3 0 24 10.7 24 24z',\n\t\twidth: 512,\n\t},\n\tbell: {\n\t\taliases: ['notification', 'alert', 'reminder'],\n\t\tcategories: ['communication', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M224 0c-13.3 0-24 10.7-24 24l0 9.7C118.6 45.3 56 115.4 56 200l0 14.5c0 37.7-10 74.7-29 107.3L5.1 359.2C1.8 365 0 371.5 0 378.2 0 399.1 16.9 416 37.8 416l372.4 0c20.9 0 37.8-16.9 37.8-37.8 0-6.7-1.8-13.3-5.1-19L421 321.7c-19-32.6-29-69.6-29-107.3l0-14.5c0-84.6-62.6-154.7-144-166.3l0-9.7c0-13.3-10.7-24-24-24zM392.4 368l-336.9 0 12.9-22.1C91.7 306 104 260.6 104 214.5l0-14.5c0-66.3 53.7-120 120-120s120 53.7 120 120l0 14.5c0 46.2 12.3 91.5 35.5 131.4L392.4 368zM156.1 464c9.9 28 36.6 48 67.9 48s58-20 67.9-48l-135.8 0z',\n\t\twidth: 448,\n\t},\n\tbillboard: {\n\t\taliases: [],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M384 32c13.3 0 24 10.7 24 24l0 8 72 0c35.3 0 64 28.7 64 64l0 240 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-240 0 0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-72-240 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-240c0-35.3 28.7-64 64-64l72 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 144 0 0-8c0-13.3 10.7-24 24-24zm112 96c0-8.8-7.2-16-16-16l-72 0 0 32 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-32-144 0 0 32 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-32-72 0c-8.8 0-16 7.2-16 16l0 240 416 0 0-240z',\n\t\twidth: 576,\n\t},\n\tbitbucket: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M22.2 32c-2.1 0-4.2 .4-6.1 1.1s-3.7 1.9-5.2 3.4-2.7 3.2-3.5 5.1-1.3 4-1.3 6.1c0 .9 .1 1.9 .2 2.8L74.1 462.7c.8 5.1 3.4 9.7 7.3 13s8.8 5.2 14 5.2l325.7 0c3.8 .1 7.5-1.3 10.5-3.7s4.9-5.9 5.5-9.7L505 50.7c.7-4.2-.3-8.4-2.8-11.9s-6.2-5.7-10.4-6.4c-.9-.1-1.9-.2-2.8-.2L22.2 32zM308.1 329.8l-104 0-28.1-147 157.3 0-25.2 147z',\n\t\twidth: 512,\n\t},\n\tbluesky: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M407.8 294.7c-3.3-.4-6.7-.8-10-1.3 3.4 .4 6.7 .9 10 1.3zM288 227.1C261.9 176.4 190.9 81.9 124.9 35.3 61.6-9.4 37.5-1.7 21.6 5.5 3.3 13.8 0 41.9 0 58.4S9.1 194 15 213.9c19.5 65.7 89.1 87.9 153.2 80.7 3.3-.5 6.6-.9 10-1.4-3.3 .5-6.6 1-10 1.4-93.9 14-177.3 48.2-67.9 169.9 120.3 124.6 164.8-26.7 187.7-103.4 22.9 76.7 49.2 222.5 185.6 103.4 102.4-103.4 28.1-156-65.8-169.9-3.3-.4-6.7-.8-10-1.3 3.4 .4 6.7 .9 10 1.3 64.1 7.1 133.6-15.1 153.2-80.7 5.9-19.9 15-138.9 15-155.5s-3.3-44.7-21.6-52.9c-15.8-7.1-40-14.9-103.2 29.8-66.1 46.6-137.1 141.1-163.2 191.8z',\n\t\twidth: 576,\n\t},\n\tbolt: {\n\t\taliases: ['lightning', 'power', 'flash'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M341.2-12.1c9.1 6 13 17.3 9.6 27.6L292 192 412.9 192c19.4 0 35.1 15.7 35.1 35.1 0 10-4.2 19.5-11.7 26.1L136 521.9c-8.1 7.3-20.1 8.2-29.2 2.2s-13-17.3-9.6-27.6L156 320 35.1 320C15.7 320 0 304.3 0 284.9 0 275 4.2 265.5 11.7 258.8L312-9.9c8.1-7.3 20.1-8.1 29.2-2.2zM68.9 272l120.4 0c7.7 0 15 3.7 19.5 10s5.7 14.3 3.3 21.6L171.3 425.9 379.1 240 258.7 240c-7.7 0-15-3.7-19.5-10s-5.7-14.3-3.3-21.6L276.7 86.1 68.9 272z',\n\t\twidth: 448,\n\t},\n\tboltPantheon: {\n\t\taliases: ['lightning', 'pantheon bolt'],\n\t\tcategories: ['brands', 'custom', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M183.215 0L254.271 277.176H204.614L302 512L46.228 187.779H135.272L0 0.434418L144.526 0.459972L145.968 0H183.215Z',\n\t\twidth: 304,\n\t},\n\tboltSolid: {\n\t\taliases: ['lightning', 'power', 'flash'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M338.8-9.9c11.9 8.6 16.3 24.2 10.9 37.8L271.3 224 416 224c13.5 0 25.5 8.4 30.1 21.1s.7 26.9-9.6 35.5l-288 240c-11.3 9.4-27.4 9.9-39.3 1.3s-16.3-24.2-10.9-37.8L176.7 288 32 288c-13.5 0-25.5-8.4-30.1-21.1s-.7-26.9 9.6-35.5l288-240c11.3-9.4 27.4-9.9 39.3-1.3z',\n\t\twidth: 448,\n\t},\n\tbook: {\n\t\taliases: ['docs', 'documentation', 'manual'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M88 0C39.4 0 0 39.4 0 88L0 432c0 44.2 35.8 80 80 80l344 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-76.1C435.3 375 448 353 448 328l0-256c0-39.8-32.2-72-72-72L88 0zM368 400l0 64-288 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l288 0zM80 352c-11.4 0-22.2 2.4-32 6.7L48 88c0-22.1 17.9-40 40-40l288 0c13.3 0 24 10.7 24 24l0 256c0 13.3-10.7 24-24 24L80 352zm48-200c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24zm24 72c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z',\n\t\twidth: 448,\n\t},\n\tbooks: {\n\t\taliases: ['library', 'documentation'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M96.3 48l48 0c8.8 0 16 7.2 16 16l0 32-80 0 0-32c0-8.8 7.2-16 16-16zm-16 96l80 0 0 224-80 0 0-224zm128-78l0-2c0-35.3-28.7-64-64-64l-48 0c-35.3 0-64 28.7-64 64l0 384c0 35.3 28.7 64 64 64l48 0c15.1 0 29-5.3 40-14 11 8.8 24.9 14 40 14l48 0c35.3 0 64-28.7 64-64l0-164.4 48.6 181.2c9.1 34.1 44.2 54.4 78.4 45.3l46.4-12.4c34.1-9.1 54.4-44.2 45.3-78.4L455.4 48.3C446.3 14.2 411.2-6.1 377 3.1L330.7 15.5c-24.4 6.5-41.8 26.4-46.3 49.7-3.9-.8-8-1.1-12.1-1.1l-48 0c-5.5 0-10.9 .7-16 2zm0 62c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-320zm-48 320c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-32 80 0 0 32zM389.5 49.4c8.5-2.3 17.3 2.8 19.6 11.3l8.3 30.9-77.3 20.7-8.3-30.9c-2.3-8.5 2.8-17.3 11.3-19.6l46.4-12.4zm21 325.7l-58-216.4 77.3-20.7 58 216.4-77.3 20.7zm12.4 46.4l77.3-20.7 8.3 30.9c2.3 8.5-2.8 17.3-11.3 19.6l-46.4 12.4c-8.5 2.3-17.3-2.8-19.6-11.3l-8.3-30.9z',\n\t\twidth: 576,\n\t},\n\tbracketRight: {\n\t\taliases: ['sign out', 'logout', 'exit'],\n\t\tcategories: ['arrows', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M168 80c13.3 0 24-10.7 24-24s-10.7-24-24-24L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-72 0c-26.5 0-48-21.5-48-48l0-256c0-26.5 21.5-48 48-48l72 0zM505 273c9.4-9.4 9.4-24.6 0-33.9L369 103c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l95 95-246.1 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l246.1 0-95 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L505 273z',\n\t\twidth: 512,\n\t},\n\tbracketsSquare: {\n\t\taliases: ['array', 'brackets'],\n\t\tcategories: ['development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M56 32C25.1 32 0 57.1 0 88L0 424c0 30.9 25.1 56 56 56l64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0c-4.4 0-8-3.6-8-8L48 88c0-4.4 3.6-8 8-8l64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L56 32zm336 0l-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0c4.4 0 8 3.6 8 8l0 336c0 4.4-3.6 8-8 8l-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0c30.9 0 56-25.1 56-56l0-336c0-30.9-25.1-56-56-56z',\n\t\twidth: 448,\n\t},\n\tbrainCircuit: {\n\t\taliases: ['ai', 'machine learning', 'neural'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M123 58.1c9.5-33.5 40.4-58.1 77-58.1 21.8 0 41.6 8.7 56 22.9 14.4-14.1 34.2-22.9 56-22.9 36.6 0 67.4 24.6 77 58.1 47.4 9.7 83 51.6 83 101.9 0 11.3-1.8 22.2-5.1 32.3 22.7 19.1 37.1 47.7 37.1 79.7 0 23.7-8 45.6-21.3 63.1 3.5 10.4 5.3 21.4 5.3 32.9 0 54-41.2 98.5-93.9 103.5-15.6 24.3-42.9 40.5-74.1 40.5-25.2 0-48-10.6-64-27.6-16 17-38.8 27.6-64 27.6-31.1 0-58.4-16.2-74.1-40.5-52.7-5.1-93.9-49.5-93.9-103.5 0-11.5 1.9-22.5 5.3-32.9-13.4-17.5-21.3-39.4-21.3-63.1 0-32 14.5-60.6 37.1-79.7-3.3-10.2-5.1-21.1-5.1-32.3 0-50.3 35.6-92.2 83-101.9zM200 48c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24-30.9 0-56 25.1-56 56 0 10.5 2.9 20.3 7.9 28.6 3.4 5.7 4.3 12.5 2.5 18.9s-6.2 11.7-12 14.7c-18 9.3-30.3 28.1-30.3 49.8 0 16.1 6.8 30.7 17.8 40.9 7.9 7.4 9.9 19.2 4.8 28.8-4.2 7.8-6.5 16.7-6.5 26.3 0 30.9 25.1 56 56 56 1.1 0 2.2 0 3.2-.1 10.3-.6 19.8 5.5 23.6 15 5.9 14.7 20.4 25.1 37.1 25.1 20.4 0 37.2-15.3 39.7-35 .1-.6 .2-1.3 .3-1.9l0-135.1-40 0c-6.6 0-12 5.4-12 12l0 4.4c16.5 7.6 28 24.3 28 43.6 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-19.4 11.5-36.1 28-43.6l0-4.4c0-28.7 23.3-52 52-52l40 0 0-56-12.4 0c-7.6 16.5-24.3 28-43.6 28-26.5 0-48-21.5-48-48s21.5-48 48-48c19.4 0 36.1 11.5 43.6 28l12.4 0 0-76c0-17.7-14.3-32-32-32zm80 148l0 152 40 0c6.6 0 12-5.4 12-12l0-4.4c-16.5-7.6-28-24.3-28-43.6 0-26.5 21.5-48 48-48s48 21.5 48 48c0 19.4-11.5 36.1-28 43.6l0 4.4c0 28.7-23.3 52-52 52l-40 0 0 39.1c.1 .6 .2 1.2 .3 1.9 2.5 19.7 19.3 35 39.7 35 16.8 0 31.2-10.3 37.1-25.1 3.8-9.6 13.3-15.6 23.6-15 1.1 .1 2.2 .1 3.2 .1 30.9 0 56-25.1 56-56 0-9.5-2.4-18.5-6.5-26.3-5.1-9.6-3.1-21.4 4.8-28.8 11-10.2 17.8-24.8 17.8-40.9 0-21.6-12.2-40.4-30.3-49.8-5.9-3-10.2-8.4-12-14.7s-.9-13.2 2.5-18.9c5-8.4 7.9-18.1 7.9-28.6 0-30.9-25.1-56-56-56-13.3 0-24-10.7-24-24 0-17.7-14.3-32-32-32s-32 14.3-32 32l0 76 12.4 0c7.6-16.5 24.3-28 43.6-28 26.5 0 48 21.5 48 48s-21.5 48-48 48c-19.4 0-36.1-11.5-43.6-28L280 196zm56-36a16 16 0 1 0 0 32 16 16 0 1 0 0-32zm0 128a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zM144 352a16 16 0 1 0 32 0 16 16 0 1 0 -32 0zm16-176a16 16 0 1 0 32 0 16 16 0 1 0 -32 0z',\n\t\twidth: 512,\n\t},\n\tbroomWide: {\n\t\taliases: ['clean', 'sweep', 'clear'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M569 9c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-200 200-12.9-12.9c-20.2-20.2-51.4-24.6-76.3-10.7L16.4 278.9C6.3 284.5 0 295.2 0 306.8 0 315.2 3.4 323.4 9.3 329.3L214.7 534.7c6 6 14.1 9.3 22.6 9.3 11.6 0 22.3-6.3 27.9-16.4L392.6 298.2c13.9-25 9.5-56.1-10.7-76.3L369 209 569 9zM288.2 196.1l59.7 59.7c5.1 5.1 6.1 12.8 2.7 19.1l-14.9 26.8-93.4-93.4 26.8-14.9c6.2-3.5 14-2.4 19.1 2.7zm-89.6 36.5l112.8 112.8-77.9 140.3-96.5-96.5 18-53.9c2.1-6.3-3.9-12.2-10.1-10.1l-53.9 18-32.5-32.5 140.3-77.9z',\n\t\twidth: 576,\n\t},\n\tbuilding: {\n\t\taliases: ['organization', 'company', 'office'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l80 0 0-80c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 80 80 0c8.8 0 16-7.2 16-16l0-384c0-8.8-7.2-16-16-16L64 48zM0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm96 48c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM240 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM96 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm144-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z',\n\t\twidth: 384,\n\t},\n\tbuildings: {\n\t\taliases: ['organizations', 'companies'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 0c-35.3 0-64 28.7-64 64l0 32-128 0C28.7 96 0 124.7 0 160L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L256 0zM194 464L64 464c-8.8 0-16-7.2-16-16l0-288c0-8.8 7.2-16 16-16l128 0 0 304c0 5.5 .7 10.9 2 16zm62 0c-8.8 0-16-7.2-16-16l0-384c0-8.8 7.2-16 16-16l192 0c8.8 0 16 7.2 16 16l0 384c0 8.8-7.2 16-16 16l-192 0zM112 192c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM96 304l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM368 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM288 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm-80-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM272 304l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0z',\n\t\twidth: 512,\n\t},\n\tbullhorn: {\n\t\taliases: ['announcement', 'megaphone', 'promote'],\n\t\tcategories: ['communication', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M466.2 18.3c8.4 4 13.8 12.4 13.8 21.7l0 432c0 9.3-5.4 17.7-13.8 21.7s-18.3 2.7-25.5-3.2l-56.2-46.3c-41.2-34-91.7-54.5-144.5-59.2l0 79c0 26.5-21.5 48-48 48l-48 0c-26.5 0-48-21.5-48-48l0-84C40.8 365.8 0 315.6 0 256 0 185.3 57.3 128 128 128l89.4 0c61-.2 120-21.4 167.1-60.2l56.2-46.3c7.2-5.9 17.1-7.1 25.5-3.2zM240 336l0 .9c64 4.8 125.2 29.2 175 70.3l17 14 0-330.3-17 14c-49.8 41-111 65.5-175 70.3L240 336zm-48 48l-48 0 0 80 48 0 0-80zM128 176c-44.2 0-80 35.8-80 80s35.8 80 80 80l64 0 0-160-64 0z',\n\t\twidth: 512,\n\t},\n\tcalendarDays: {\n\t\taliases: ['date', 'schedule', 'calendar'],\n\t\tcategories: ['data', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M120 0c13.3 0 24 10.7 24 24l0 40 160 0 0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 32 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64l32 0 0-40c0-13.3 10.7-24 24-24zM384 432c8.8 0 16-7.2 16-16l0-64-88 0 0 80 72 0zm16-128l0-80-88 0 0 80 88 0zm-136 0l0-80-80 0 0 80 80 0zm-128 0l0-80-88 0 0 80 88 0zM48 352l0 64c0 8.8 7.2 16 16 16l72 0 0-80-88 0zm136 0l0 80 80 0 0-80-80 0zM120 112l-56 0c-8.8 0-16 7.2-16 16l0 48 352 0 0-48c0-8.8-7.2-16-16-16l-264 0z',\n\t\twidth: 448,\n\t},\n\tcaretDown: {\n\t\taliases: ['dropdown', 'expand'],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M140.3 376.8c12.6 10.2 31.1 9.5 42.8-2.2l128-128c9.2-9.2 11.9-22.9 6.9-34.9S301.4 192 288.5 192l-256 0c-12.9 0-24.6 7.8-29.6 19.8S.7 237.5 9.9 246.6l128 128 2.4 2.2z',\n\t\twidth: 320,\n\t},\n\tcaretLeft: {\n\t\taliases: [],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M7.7 235.8c-10.3 12.6-9.5 31.1 2.2 42.8l128 128c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-256c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-128 128-2.2 2.4z',\n\t\twidth: 256,\n\t},\n\tcaretRight: {\n\t\taliases: [],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M249.3 235.8c10.2 12.6 9.5 31.1-2.2 42.8l-128 128c-9.2 9.2-22.9 11.9-34.9 6.9S64.5 396.9 64.5 384l0-256c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l128 128 2.2 2.4z',\n\t\twidth: 256,\n\t},\n\tcaretUp: {\n\t\taliases: ['collapse'],\n\t\tcategories: ['arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M140.3 135.2c12.6-10.3 31.1-9.5 42.8 2.2l128 128c9.2 9.2 11.9 22.9 6.9 34.9S301.4 320 288.5 320l-256 0c-12.9 0-24.6-7.8-29.6-19.8S.7 274.5 9.9 265.4l128-128 2.4-2.2z',\n\t\twidth: 320,\n\t},\n\tccAmex: {\n\t\taliases: [],\n\t\tcategories: ['financial'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M0 432c0 26.5 21.5 48 48 48l480 0c26.5 0 48-21.5 48-48l0-1.1-61.7 0-31.9-35.1-31.9 35.1-203.7 0 0-163.8-65.8 0 81.7-184.7 78.6 0 28.1 63.2 0-63.2 97.2 0 16.9 47.6 17-47.6 75.5 0 0-2.4c0-26.5-21.5-48-48-48L48 32C21.5 32 0 53.5 0 80L0 432zm440.4-21.7l42.2-46.3 42 46.3 51.4 0-68-72.1 68-72.1-50.6 0-42 46.7-41.5-46.7-51.4 0 67.5 72.5-67.4 71.6 0-33.1-83 0 0-22.2 80.9 0 0-32.3-80.9 0 0-22.4 83 0 0-33.1-122 0 0 143.2 171.8 0zm96.3-72l39.3 41.9 0-83.3-39.3 41.4zm-36.3-92l36.9-100.6 0 100.6 38.7 0 0-143.3-60.2 0-32.2 89.3-31.9-89.3-61.2 0 0 143.1-63.2-143.1-51.2 0-62.4 143.3 43 0 11.9-28.7 65.9 0 12 28.7 82.7 0 0-100.3 36.8 100.3 34.4 0zM282 185.4l19.5-46.9 19.4 46.9-38.9 0z',\n\t\twidth: 576,\n\t},\n\tccApplePay: {\n\t\taliases: [],\n\t\tcategories: ['financial'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M302.2 218.4c0 17.2-10.5 27.1-29 27.1l-24.3 0 0-54.2 24.4 0c18.4 0 28.9 9.8 28.9 27.1zM349.7 281c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9l0-7.7-23.5 1.5c-13.3 .9-20.2 5.8-20.2 14.4zM576 79l0 352c0 26.5-21.5 48-48 48L48 479c-26.5 0-48-21.5-48-48L0 79C0 52.5 21.5 31 48 31l480 0c26.5 0 48 21.5 48 48zM127.8 197.2c8.4 .7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4 .3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5 .2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8l-51.2 0 0 136.4 21.2 0 0-46.6 29.3 0c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5l19.1 0c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2l0 7.5-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4l.4 0 0 16.4 19.6 0 0-68 .1 0zM516 210.9l-21.5 0-24.9 80.6-.4 0-24.9-80.6-22.3 0 35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3l0 16.4c1.2 .4 6.5 .5 8.1 .5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z',\n\t\twidth: 576,\n\t},\n\tccDiscover: {\n\t\taliases: [],\n\t\tcategories: ['financial'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1l-4.9 0 0 24.9 4.7 0c10.3 0 15.8-4.4 15.8-12.8zM528 32L48 32C21.5 32 0 53.5 0 80L0 432c0 26.5 21.5 48 48 48l480 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48zM483.9 170.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4-19.6 0-22.2-32.8-2.2 0 0 32.8-16 0 0-82zM428 171l45.3 0 0 14-29.3 0 0 18.2 28.3 0 0 13.8-28.3 0 0 22.2 29.3 0 0 13.8-45.3 0 0-82zm-68.7 0l21.9 55.2 22.2-55.2 17.5 0-35.5 84.2-8.6 0-35-84.2 17.5 0zm-55.9 86.2a44.6 44.6 0 1 1 0-89.2 44.6 44.6 0 1 1 0 89.2zm-49.3-83.1l0 19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2l0 19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253l-23.4 0 0-82 23.4 0c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0l-16 0 0-82 16 0 0 82zM544 433c0 8.2-6.8 15-15 15l-401 0c189.6-35.6 382.7-139.2 416-160l0 145zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6l-4.2 0 0 54.2 4.2 0c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z',\n\t\twidth: 576,\n\t},\n\tccGeneric: {\n\t\taliases: ['credit card', 'payment', 'card'],\n\t\tcategories: ['financial'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M448 112c8.8 0 16 7.2 16 16l0 32-416 0 0-32c0-8.8 7.2-16 16-16l384 0zm16 112l0 160c0 8.8-7.2 16-16 16L64 400c-8.8 0-16-7.2-16-16l0-160 416 0zM64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM80 344c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zm144 0c0 13.3 10.7 24 24 24l64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0c-13.3 0-24 10.7-24 24z',\n\t\twidth: 512,\n\t},\n\tccMC: {\n\t\taliases: ['mastercard'],\n\t\tcategories: ['financial'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7s4.4-11.7 11.2-11.7c6.6 0 11.2 5.2 11.2 11.7zM172.1 398.6c-7.1 0-11.2 5.2-11.2 11.7S165 422 172.1 422c6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7l19.1 0c-.9-5.7-4.4-8.7-9.6-8.7zm107.8 .3c-6.8 0-10.9 5.2-10.9 11.7s4.1 11.7 10.9 11.7 11.2-4.9 11.2-11.7c0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3 .3 .5 .3 1.1 0 .3-.3 .5-.3 1.1-.3 .3-.3 .5-.5 .8-.3 .3-.5 .5-1.1 .5-.3 .3-.5 .3-1.1 .3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8 .3-1.1 0-.5 .3-.8 .5-1.1 .3-.3 .5-.3 .8-.5 .5-.3 .8-.3 1.1-.3 .5 0 .8 0 1.1 .3 .5 .3 .8 .3 1.1 .5s.2 .6 .5 1.1zm-2.2 1.4c.5 0 .5-.3 .8-.3 .3-.3 .3-.5 .3-.8s0-.5-.3-.8c-.3 0-.5-.3-1.1-.3l-1.6 0 0 3.5 .8 0 0-1.4 .3 0 1.1 1.4 .8 0-1.1-1.3zM576 81l0 352c0 26.5-21.5 48-48 48L48 481c-26.5 0-48-21.5-48-48L0 81C0 54.5 21.5 33 48 33l480 0c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zM288 329.4c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zM145.7 405.7c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4l0-4.4-8.2 0 0 36.7 8.2 0c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2l7.9 0c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2l8.2 0 0-23-.2 0zM190.6 392l-7.9 0 0 4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4l0 4.6 7.9 0 0-36.8zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7 .8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1l0-16.6 13.1 0 0-7.4-13.1 0 0-11.2-8.2 0 0 11.2-7.6 0 0 7.3 7.6 0 0 16.7c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4l27.5 0c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zM338.9 392c-4.6-2-11.6-1.8-15.2 4.4l0-4.4-8.2 0 0 36.7 8.2 0 0-20.7c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zM416.2 392l-8.2 0 0 4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9l0 4.6 8.2 0 0-36.8zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4l0-4.4-7.9 0 0 36.7 7.9 0 0-20.7c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9l-7.9 0 0 19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9l0 4.6 7.9 0 0-51.7zm7.6-75.1l0 4.6 .8 0 0-4.6 1.9 0 0-.8-4.6 0 0 .8 1.9 0zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1s-.8-.5-1.1-.8c-.5 0-1.1-.3-1.6-.3-.3 0-.8 .3-1.4 .3-.5 .3-.8 .5-1.1 .8-.5 .3-.8 .8-.8 1.1-.3 .5-.3 1.1-.3 1.6 0 .3 0 .8 .3 1.4 0 .3 .3 .8 .8 1.1 .3 .3 .5 .5 1.1 .8 .5 .3 1.1 .3 1.4 .3 .5 0 1.1 0 1.6-.3 .3-.3 .8-.5 1.1-.8s.5-.8 .8-1.1c.3-.6 .3-1.1 .3-1.4zm3.2-124.7l-1.4 0-1.6 3.5-1.6-3.5-1.4 0 0 5.4 .8 0 0-4.1 1.6 3.5 1.1 0 1.4-3.5 0 4.1 1.1 0 0-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4 .1 138.5-61.9 138.5-138.4z',\n\t\twidth: 576,\n\t},\n\tccPaypal: {\n\t\taliases: [],\n\t\tcategories: ['financial'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7l-4.7 0c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0l-4.5 0c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80l0 352c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48L0 80C0 53.5 21.5 32 48 32l480 0c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28l-40 0c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4l19 0c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8l-19 0c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4l17.2 0c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zM253 322.1l63.7-92.6c.5-.5 .5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5l-19.2 0c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4l-18.7 0c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2l19.2 0c1.8-.1 3.5-1.1 4.5-2.6zM412.3 215.4c0-21-16.2-28-34.7-28l-39.7 0c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4l20.5 0c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8l-19 0c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4l17.3 0c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zM544 190.9c0-2-1.5-3.5-3.2-3.5l-18.5 0c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3 .5c0 1.8 1.5 3.5 3.5 3.5l16.5 0c2.5 0 5-2.9 5.2-5.7l16.2-101.2 0-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5 .1-9.8-6.9-15.5-16.2-15.5z',\n\t\twidth: 576,\n\t},\n\tccVisa: {\n\t\taliases: [],\n\t\tcategories: ['financial'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M470.1 231.3s7.6 37.2 9.3 45l-33.4 0c3.3-8.9 16-43.5 16-43.5-.2 .3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80l0 352c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48L0 80C0 53.5 21.5 32 48 32l480 0c26.5 0 48 21.5 48 48zM152.5 331.2l63.2-155.2-42.5 0-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1l-64.7 0-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135 42.5 0zm94.4 .2l25.2-155.4-40.2 0-25.1 155.4 40.1 0zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2 .2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2 .1 69.7-20.8 70-53zM528 331.4l-32.4-155.4-31.1 0c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5 42.2 0s6.9-19.2 8.4-23.3l51.6 0c1.2 5.5 4.8 23.3 4.8 23.3l37.2 0z',\n\t\twidth: 576,\n\t},\n\tchartLine: {\n\t\taliases: ['graph', 'analytics', 'trend'],\n\t\tcategories: ['data'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M48 56c0-13.3-10.7-24-24-24S0 42.7 0 56L0 400c0 44.2 35.8 80 80 80l408 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L80 432c-17.7 0-32-14.3-32-32L48 56zM473 169c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-119 119-79-79c-9.4-9.4-24.6-9.4-33.9 0L103 279c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l87-87 79 79c9.4 9.4 24.6 9.4 33.9 0L473 169z',\n\t\twidth: 512,\n\t},\n\tchartNetwork: {\n\t\taliases: ['network', 'topology'],\n\t\tcategories: ['data'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M224 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0 88c1.1 0 2.2 0 3.3-.1l26.9 57.6c-31.3 21.7-53.7 55.4-60.2 94.5l-70.6 0c-9.5-23.5-32.5-40-59.3-40-35.3 0-64 28.7-64 64s28.7 64 64 64c26.9 0 49.9-16.5 59.3-40l70.6 0c11.4 68.1 70.7 120 142 120 43.8 0 83-19.5 109.4-50.4l67.4 40.4c-.5 3.2-.8 6.6-.8 9.9 0 35.3 28.7 64 64 64s64-28.7 64-64-28.7-64-64-64c-14.5 0-27.8 4.8-38.5 12.9l-67.3-40.4c6.4-16.3 9.9-34 9.9-52.5 0-23.2-5.5-45.2-15.3-64.6l77.6-56.9c9.8 6.1 21.3 9.6 33.7 9.6 35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64c0 5.4 .7 10.7 1.9 15.7l-77.6 56.9c-25.9-25.2-61.3-40.7-100.3-40.7-13.3 0-26.1 1.8-38.3 5.2l-26.9-57.5C281.5 96.2 288 80.9 288 64 288 28.7 259.3 0 224 0s-64 28.7-64 64 28.7 64 64 64zm352-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM552 448a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 280a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm272-72a96 96 0 1 1 0 192 96 96 0 1 1 0-192z',\n\t\twidth: 640,\n\t},\n\tchartSimple: {\n\t\taliases: ['bar chart', 'analytics', 'stats'],\n\t\tcategories: ['data'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M304 80l0 352-48 0 0-352 48 0zM256 32c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l48 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-48 0zM112 272l0 160-48 0 0-160 48 0zM64 224c-26.5 0-48 21.5-48 48l0 160c0 26.5 21.5 48 48 48l48 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-48 0zm384-80l48 0 0 288-48 0 0-288zm-48 0l0 288c0 26.5 21.5 48 48 48l48 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-48 0c-26.5 0-48 21.5-48 48z',\n\t\twidth: 576,\n\t},\n\tcheck: {\n\t\taliases: ['confirm', 'done', 'complete', 'checkmark'],\n\t\tcategories: ['actions', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M438 68.5c10.8 7.7 13.2 22.7 5.5 33.5l-264 368c-4.1 5.7-10.5 9.4-17.5 9.9S148 478 143 473L7 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L157 419 404.5 74c7.7-10.8 22.7-13.2 33.5-5.5z',\n\t\twidth: 448,\n\t},\n\tcircle: {\n\t\taliases: ['dot', 'bullet'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M464 256a208 208 0 1 0 -416 0 208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0z',\n\t\twidth: 512,\n\t},\n\tcircleCheck: {\n\t\taliases: ['success', 'verified', 'approved'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 512a256 256 0 1 1 0-512 256 256 0 1 1 0 512zm0-464a208 208 0 1 0 0 416 208 208 0 1 0 0-416zm70.7 121.9c7.8-10.7 22.8-13.1 33.5-5.3 10.7 7.8 13.1 22.8 5.3 33.5L243.4 366.1c-4.1 5.7-10.5 9.3-17.5 9.8-7 .5-13.9-2-18.8-6.9l-55.9-55.9c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l36 36 105.6-145.2z',\n\t\twidth: 512,\n\t},\n\tcircleExclamation: {\n\t\taliases: ['warning', 'error', 'alert'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 512a256 256 0 1 1 0-512 256 256 0 1 1 0 512zm0-464a208 208 0 1 0 0 416 208 208 0 1 0 0-416zm0 336a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256c18.2 0 32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3-12.6 0-23-9.7-23.9-22.3l-7.4-104C223.3 143.5 237.8 128 256 128z',\n\t\twidth: 512,\n\t},\n\tcircleInfo: {\n\t\taliases: ['info', 'information', 'about'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-88c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 64-24 0zm40-144a32 32 0 1 0 0-64 32 32 0 1 0 0 64z',\n\t\twidth: 512,\n\t},\n\tcircleMinus: {\n\t\taliases: ['remove', 'subtract'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM168 232c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0z',\n\t\twidth: 512,\n\t},\n\tcircleNotch: {\n\t\taliases: ['loading', 'spinner'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M223.2 25C226.4 37.9 218.6 50.9 205.7 54.1 115.1 76.6 48 158.5 48 256 48 370.9 141.1 464 256 464s208-93.1 208-208c0-97.5-67.1-179.4-157.7-201.9-12.9-3.2-20.7-16.2-17.5-29.1S305 4.3 317.9 7.5C429.4 35.2 512 135.9 512 256 512 397.4 397.4 512 256 512S0 397.4 0 256C0 135.9 82.6 35.2 194.1 7.5 207 4.3 220 12.2 223.2 25z',\n\t\twidth: 512,\n\t},\n\tcirclePlus: {\n\t\taliases: ['add', 'create', 'new'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z',\n\t\twidth: 512,\n\t},\n\tcircleQuestion: {\n\t\taliases: ['help', 'faq', 'support'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M464 256a208 208 0 1 0 -416 0 208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zm256-80c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 47.2-36 67.2-56 74.5l0 3.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8.1c0-20.5 14.8-35.2 30.1-40.2 6.4-2.1 13.2-5.5 18.2-10.3 4.3-4.2 7.7-10 7.7-19.6 0-17.7-14.3-32-32-32zM224 368a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: 512,\n\t},\n\tcircleUser: {\n\t\taliases: ['avatar', 'profile', 'account'],\n\t\tcategories: ['users'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M406.5 399.6C387.4 352.9 341.5 320 288 320l-64 0c-53.5 0-99.4 32.9-118.5 79.6-35.6-37.3-57.5-87.9-57.5-143.6 0-114.9 93.1-208 208-208s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3l64 0c38.8 0 71.2 27.6 78.5 64.3zM256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z',\n\t\twidth: 512,\n\t},\n\tcircleXmark: {\n\t\taliases: ['error', 'failed', 'denied'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM167 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z',\n\t\twidth: 512,\n\t},\n\tcloud: {\n\t\taliases: ['hosting', 'server'],\n\t\tcategories: ['development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M80 192c0-88.4 71.6-160 160-160 47.1 0 89.4 20.4 118.7 52.7 10.6-3.1 21.8-4.7 33.3-4.7 66.3 0 120 53.7 120 120 0 13.2-2.1 25.9-6.1 37.8 41.6 21.1 70.1 64.3 70.1 114.2 0 70.7-57.3 128-128 128l-304 0c-79.5 0-144-64.5-144-144 0-56.8 32.9-105.9 80.7-129.4-.4-4.8-.7-9.7-.7-14.6zM240 80c-61.9 0-112 50.1-112 112 0 8.4 .9 16.6 2.7 24.5 2.7 12.1-4.3 24.3-16.1 28.1-38.7 12.4-66.6 48.7-66.6 91.4 0 53 43 96 96 96l304 0c44.2 0 80-35.8 80-80 0-37.4-25.7-68.9-60.5-77.6-7.5-1.9-13.6-7.2-16.5-14.3s-2.1-15.2 2-21.7c7-11.1 11-24.2 11-38.3 0-39.8-32.2-72-72-72-11.1 0-21.5 2.5-30.8 6.9-10.5 5-23.1 1.7-29.8-7.8-20.3-28.6-53.7-47.1-91.3-47.1z',\n\t\twidth: 576,\n\t},\n\tcloudArrowDown: {\n\t\taliases: ['download'],\n\t\tcategories: ['development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M240 32c-88.4 0-160 71.6-160 160 0 4.9 .2 9.8 .7 14.6-47.8 23.4-80.7 72.5-80.7 129.4 0 79.5 64.5 144 144 144l304 0c70.7 0 128-57.3 128-128 0-49.9-28.5-93-70.1-114.2 4-11.9 6.1-24.6 6.1-37.8 0-66.3-53.7-120-120-120-11.5 0-22.7 1.6-33.3 4.7-29.3-32.3-71.6-52.7-118.7-52.7zM128 192c0-61.9 50.1-112 112-112 37.7 0 71 18.6 91.3 47.1 6.7 9.5 19.3 12.8 29.8 7.8 9.3-4.4 19.7-6.9 30.8-6.9 39.8 0 72 32.2 72 72 0 14.1-4 27.2-11 38.3-4.1 6.5-4.8 14.6-2 21.7s9 12.5 16.5 14.3c34.8 8.7 60.5 40.2 60.5 77.6 0 44.2-35.8 80-80 80l-304 0c-53 0-96-43-96-96 0-42.7 27.9-79 66.6-91.4 11.8-3.8 18.8-16 16.1-28.1-1.8-7.9-2.7-16.1-2.7-24.5zM305 377l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23 0-86.1c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 86.1-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0z',\n\t\twidth: 576,\n\t},\n\tcloudArrowUp: {\n\t\taliases: ['deploy', 'upload', 'publish'],\n\t\tcategories: ['development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M240 32c-88.4 0-160 71.6-160 160 0 4.9 .2 9.8 .7 14.6-47.8 23.4-80.7 72.5-80.7 129.4 0 79.5 64.5 144 144 144l304 0c70.7 0 128-57.3 128-128 0-49.9-28.5-93-70.1-114.2 4-11.9 6.1-24.6 6.1-37.8 0-66.3-53.7-120-120-120-11.5 0-22.7 1.6-33.3 4.7-29.3-32.3-71.6-52.7-118.7-52.7zM128 192c0-61.9 50.1-112 112-112 37.7 0 71 18.6 91.3 47.1 6.7 9.5 19.3 12.8 29.8 7.8 9.3-4.4 19.7-6.9 30.8-6.9 39.8 0 72 32.2 72 72 0 14.1-4 27.2-11 38.3-4.1 6.5-4.8 14.6-2 21.7s9 12.5 16.5 14.3c34.8 8.7 60.5 40.2 60.5 77.6 0 44.2-35.8 80-80 80l-304 0c-53 0-96-43-96-96 0-42.7 27.9-79 66.6-91.4 11.8-3.8 18.8-16 16.1-28.1-1.8-7.9-2.7-16.1-2.7-24.5zm177 7c-9.4-9.4-24.6-9.4-33.9 0l-64 64c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l23-23 0 86.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-86.1 23 23c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-64-64z',\n\t\twidth: 576,\n\t},\n\tcloudPlus: {\n\t\taliases: ['add cloud', 'new environment'],\n\t\tcategories: ['development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M240 32c-88.4 0-160 71.6-160 160 0 4.9 .2 9.8 .7 14.6-47.8 23.4-80.7 72.5-80.7 129.4 0 79.5 64.5 144 144 144l304 0c70.7 0 128-57.3 128-128 0-49.9-28.5-93-70.1-114.2 4-11.9 6.1-24.6 6.1-37.8 0-66.3-53.7-120-120-120-11.5 0-22.7 1.6-33.3 4.7-29.3-32.3-71.6-52.7-118.7-52.7zM128 192c0-61.9 50.1-112 112-112 37.7 0 71 18.6 91.3 47.1 6.7 9.5 19.3 12.8 29.8 7.8 9.3-4.4 19.7-6.9 30.8-6.9 39.8 0 72 32.2 72 72 0 14.1-4 27.2-11 38.3-4.1 6.5-4.8 14.6-2 21.7s9 12.5 16.5 14.3c34.8 8.7 60.5 40.2 60.5 77.6 0 44.2-35.8 80-80 80l-304 0c-53 0-96-43-96-96 0-42.7 27.9-79 66.6-91.4 11.8-3.8 18.8-16 16.1-28.1-1.8-7.9-2.7-16.1-2.7-24.5zm160 0c-13.3 0-24 10.7-24 24l0 48-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0 0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48 48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-48c0-13.3-10.7-24-24-24z',\n\t\twidth: 576,\n\t},\n\tcode: {\n\t\taliases: ['source', 'html', 'develop'],\n\t\tcategories: ['development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M337.1 16.9c3.9-12.7 17.4-19.7 30-15.8s19.7 17.4 15.8 30l-144 464c-3.9 12.7-17.4 19.7-30 15.8s-19.7-17.4-15.8-30l144-464zM145 135c9.4 9.4 9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L111 135c9.4-9.4 24.6-9.4 33.9 0zM431 135c9.4-9.4 24.6-9.4 33.9 0L569 239c9.4 9.4 9.4 24.6 0 33.9L465 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9z',\n\t\twidth: 576,\n\t},\n\tcodeBranch: {\n\t\taliases: ['branch', 'git branch', 'fork'],\n\t\tcategories: ['development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M80 112a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm80-32c0 35.8-23.5 66.1-56 76.3l0 75.7 184 0c30.9 0 56-25.1 56-56l0-19.7c-32.5-10.2-56-40.5-56-76.3 0-44.2 35.8-80 80-80s80 35.8 80 80c0 35.8-23.5 66.1-56 76.3l0 19.7c0 57.4-46.6 104-104 104l-184 0 0 75.7c32.5 10.2 56 40.5 56 76.3 0 44.2-35.8 80-80 80S0 476.2 0 432c0-35.8 23.5-66.1 56-76.3l0-199.3C23.5 146.1 0 115.8 0 80 0 35.8 35.8 0 80 0s80 35.8 80 80zm240 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM80 464a32 32 0 1 0 0-64 32 32 0 1 0 0 64z',\n\t\twidth: 448,\n\t},\n\tcodeMerge: {\n\t\taliases: ['merge', 'git merge', 'pull request'],\n\t\tcategories: ['development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm24.7 108.1C136.8 145.7 160 115.6 160 80 160 35.8 124.2 0 80 0S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3l0 199.3c-32.5 10.2-56 40.5-56 76.3 0 44.2 35.8 80 80 80s80-35.8 80-80c0-35.8-23.5-66.1-56-76.3l0-100.8c27.2 25.5 63.8 41.1 104 41.1l83.7 0c10.2 32.5 40.5 56 76.3 56 44.2 0 80-35.8 80-80s-35.8-80-80-80c-35.8 0-66.1 23.5-76.3 56L208 248c-53.3 0-97.3-40.2-103.3-91.9zM80 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM336 272a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: 448,\n\t},\n\tcommand: {\n\t\taliases: ['cmd', 'keyboard'],\n\t\tcategories: ['development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M96 192l48 0 0 128-48 0c-53 0-96 43-96 96s43 96 96 96 96-43 96-96l0-48 128 0 0 48c0 53 43 96 96 96s96-43 96-96-43-96-96-96l-48 0 0-128 48 0c53 0 96-43 96-96s-43-96-96-96-96 43-96 96l0 48-128 0 0-48c0-53-43-96-96-96S0 43 0 96 43 192 96 192zM256 320l-64 0 0-128 128 0 0 128-64 0zM96 144c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48l0 48-48 0zm48 272c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48l48 0 0 48zM368 144l0-48c0-26.5 21.5-48 48-48s48 21.5 48 48-21.5 48-48 48l-48 0zm48 224c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48l0-48 48 0z',\n\t\twidth: 512,\n\t},\n\tcomment: {\n\t\taliases: ['message', 'chat', 'speech bubble'],\n\t\tcategories: ['communication', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M51.9 384.9C19.3 344.6 0 294.4 0 240 0 107.5 114.6 0 256 0S512 107.5 512 240 397.4 480 256 480c-36.5 0-71.2-7.2-102.6-20L37 509.9c-3.7 1.6-7.5 2.1-11.5 2.1-14.1 0-25.5-11.4-25.5-25.5 0-4.3 1.1-8.5 3.1-12.2l48.8-89.4zm37.3-30.2c12.2 15.1 14.1 36.1 4.8 53.2l-18 33.1 58.5-25.1c11.8-5.1 25.2-5.2 37.1-.3 25.7 10.5 54.2 16.4 84.3 16.4 117.8 0 208-88.8 208-192S373.8 48 256 48 48 136.8 48 240c0 42.8 15.1 82.4 41.2 114.7z',\n\t\twidth: 512,\n\t},\n\tcopy: {\n\t\taliases: ['duplicate', 'clipboard', 'paste'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M384 336l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l133.5 0c4.2 0 8.3 1.7 11.3 4.7l58.5 58.5c3 3 4.7 7.1 4.7 11.3L400 320c0 8.8-7.2 16-16 16zM192 384l192 0c35.3 0 64-28.7 64-64l0-197.5c0-17-6.7-33.3-18.7-45.3L370.7 18.7C358.7 6.7 342.5 0 325.5 0L192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-16-48 0 0 16c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l16 0 0-48-16 0z',\n\t\twidth: 448,\n\t},\n\tdesktop: {\n\t\taliases: ['monitor', 'screen', 'computer'],\n\t\tcategories: ['media'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M448 80c8.8 0 16 7.2 16 16l0 176-416 0 0-176c0-8.8 7.2-16 16-16l384 0zm16 240l0 32c0 8.8-7.2 16-16 16L64 368c-8.8 0-16-7.2-16-16l0-32 416 0zM64 32C28.7 32 0 60.7 0 96L0 352c0 35.3 28.7 64 64 64l115.7 0-8 48-51.7 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-51.7 0-8-48 115.7 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 32zM220.3 464l8-48 55.3 0 8 48-71.3 0z',\n\t\twidth: 512,\n\t},\n\tdiamondExclamation: {\n\t\taliases: ['critical', 'danger', 'error'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 0c15.4 0 30.1 6.1 41 17L495 215c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L297 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17L17 297C6.1 286.1 0 271.4 0 256s6.1-30.1 17-41L215 17C225.9 6.1 240.6 0 256 0zm0 48c-2.6 0-5.2 1-7 2.9L50.9 249c-1.9 1.9-2.9 4.4-2.9 7s1 5.2 2.9 7L249 461.1c1.9 1.9 4.4 2.9 7 2.9s5.2-1 7-2.9L461.1 263c1.9-1.9 2.9-4.4 2.9-7s-1-5.2-2.9-7L263 50.9c-1.9-1.9-4.4-2.9-7-2.9zm0 336a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256c18.2 0 32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3-12.6 0-23-9.7-23.9-22.3l-7.4-104C223.3 143.5 237.8 128 256 128z',\n\t\twidth: 512,\n\t},\n\tdiamonds4: {\n\t\taliases: [],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M345.1 133c18.7-18.7 18.7-49.1 0-67.9L297 17C286.1 6.1 271.4 0 256 0s-30.1 6.1-41 17L166.9 65.1c-18.7 18.7-18.7 49.1 0 67.9l55.1 55.1c18.7 18.7 49.1 18.7 67.9 0L345.1 133zM249 50.9c1.9-1.9 4.4-2.9 7-2.9s5.2 1 7 2.9L311.1 99 256 154.2 200.9 99 249 50.9zm-116 116c-18.7-18.7-49.1-18.7-67.9 0L17 215C6.1 225.9 0 240.6 0 256s6.1 30.1 17 41l48.1 48.1c18.7 18.7 49.1 18.7 67.9 0l55.1-55.1c18.7-18.7 18.7-49.1 0-67.9L133 166.9zM50.9 249l48.1-48.1 55.1 55.1-55.1 55.1-48.1-48.1 0 0c-1.9-1.9-2.9-4.4-2.9-7s1-5.2 2.9-7zM200.9 413L256 357.8 311.1 413 263 461.1c-1.9 1.9-4.4 2.9-7 2.9s-5.2-1-7-2.9L200.9 413zm89.1-89.1c-18.7-18.7-49.1-18.7-67.9 0L166.9 379c-18.7 18.7-18.7 49.1 0 67.9L215 495c10.9 10.9 25.6 17 41 17s30.1-6.1 41-17l48.1-48.1c18.7-18.7 18.7-49.1 0-67.9l-55.1-55.1zm157-157c-18.7-18.7-49.1-18.7-67.9 0l-55.1 55.1c-18.7 18.7-18.7 49.1 0 67.9L379 345.1c18.7 18.7 49.1 18.7 67.9 0L495 297c10.9-10.9 17-25.6 17-41s-6.1-30.1-17-41l-48.1-48.1zM461.1 249c1.9 1.9 2.9 4.4 2.9 7s-1 5.2-2.9 7L413 311.1 357.8 256 413 200.9 461.1 249z',\n\t\twidth: 512,\n\t},\n\tdiscourse: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2C348.6 479.8 448 377.5 448 255.9S348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392 111.4 317c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z',\n\t\twidth: 448,\n\t},\n\tdisplay: {\n\t\taliases: ['monitor', 'screen'],\n\t\tcategories: ['media'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 80c-8.8 0-16 7.2-16 16l0 256c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-115.7 0 8 48 51.7 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-272 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l51.7 0 8-48-115.7 0c-35.3 0-64-28.7-64-64L0 96zM228.3 416l-8 48 71.3 0-8-48-55.3 0z',\n\t\twidth: 512,\n\t},\n\tdollarSign: {\n\t\taliases: ['money', 'price', 'currency', 'cost'],\n\t\tcategories: ['data', 'financial'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M136 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-130 0c-29.8 0-54 24.2-54 54 0 26.4 19.1 48.9 45.1 53.2l106.1 17.7c51.3 8.5 88.8 52.9 88.8 104.8 0 58.7-47.6 106.3-106.3 106.3l-13.7 0 0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l141.7 0c32.2 0 58.3-26.1 58.3-58.3 0-28.5-20.6-52.8-48.7-57.5L101.2 266.5C52 258.3 16 215.8 16 166 16 109.6 61.6 64 118 64l18 0 0-40z',\n\t\twidth: 320,\n\t},\n\tdownload: {\n\t\taliases: ['save', 'export'],\n\t\tcategories: ['actions', 'development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M248 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 246.1-63-63c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L207 345c9.4 9.4 24.6 9.4 33.9 0L345 241c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-63 63 0-246.1zM66.2 272L64 272c-35.3 0-64 28.7-64 64l0 80c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-80c0-35.3-28.7-64-64-64l-2.2 0-48 48 50.2 0c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16l50.2 0-48-48zM368 376a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z',\n\t\twidth: 448,\n\t},\n\tdrupal: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M272.3 108.1C236.5 72.5 202.5 38.4 192.4 0 182.4 38.4 148.1 72.5 112.4 108.1 58.8 161.7-1.9 222.4-1.9 313.4-4.3 420.7 80.8 509.6 188.1 512s196.2-82.8 198.5-190.1c.1-2.8 .1-5.6 0-8.5 0-91.1-60.8-151.7-114.3-205.3zM98 331.1c-5.9 7.5-11 15.6-15.2 24.2-.3 .7-.8 1.3-1.3 1.8s-1.2 .8-2 1l-1.7 0c-4.3 0-9.2-8.5-9.2-8.5-1.3-2-2.5-4.2-3.7-6.4l-.8-1.8c-11.2-25.7-1.5-62.3-1.5-62.3 4.8-17.8 12.7-34.7 23.2-49.9 6.4-9.6 13.5-18.9 21-27.7l9.2 9.2 43.5 44.4c.8 .9 1.3 2.1 1.3 3.3s-.5 2.4-1.3 3.3L114.1 312.3 98 331.1zm96.6 127.3c-12.9-.1-25.6-3.9-36.4-11s-19.4-17.1-24.6-28.9-7-24.9-5-37.7 7.6-24.7 16.2-34.4c14.2-16.9 31.5-33.5 50.3-55.3 22.3 23.8 36.9 40.1 51.2 58 1.1 1.4 2.1 2.9 3 4.4 7.8 11.1 12 24.4 12 38 0 8.8-1.7 17.4-5 25.5s-8.2 15.5-14.4 21.7-13.5 11.1-21.6 14.5-16.7 5.1-25.5 5.1l-.2 0zM320.7 351.6c-.4 1.4-1.2 2.6-2.3 3.6s-2.4 1.6-3.8 1.8l-1.3 0c-2.6-.9-4.9-2.7-6.3-5.1-11.6-17.5-24.9-33.9-39.5-49l-17.8-18.4-59.1-61.3c-12.4-11.5-24.2-23.6-35.4-36.3-.3-.5-.6-.9-.9-1.4-2-2.8-3.6-5.9-4.7-9.2l0-1.8c-.8-5-.4-10.1 1.2-15s4.4-9.2 8-12.7c11.4-11.4 23-23 33.8-34.9 12 13.3 24.8 26 37.4 38.6 25.8 24 49.1 50.5 69.6 79.1 17.3 24.5 26.7 53.8 27 83.8-.1 12.9-2.2 25.8-6 38.2z',\n\t\twidth: 384,\n\t},\n\tellipsis: {\n\t\taliases: ['more', 'options', 'dots'],\n\t\tcategories: ['development', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M448 256a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-176 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zM48 304a48 48 0 1 1 0-96 48 48 0 1 1 0 96z',\n\t\twidth: 448,\n\t},\n\tellipsisVertical: {\n\t\taliases: ['more', 'options', 'kebab menu'],\n\t\tcategories: ['development', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M112 80a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zM16 256c0-26.5 21.5-48 48-48s48 21.5 48 48-21.5 48-48 48-48-21.5-48-48zm96 176c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48 48 21.5 48 48z',\n\t\twidth: 128,\n\t},\n\temptySet: {\n\t\taliases: ['none', 'null', 'no data'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M464 256c0-48.8-16.8-93.7-44.9-129.1L126.9 419.1c35.5 28.1 80.3 44.9 129.1 44.9 114.9 0 208-93.1 208-208zM453.2 92.7c36.7 44.3 58.8 101.2 58.8 163.3 0 141.4-114.6 256-256 256-62.1 0-118.9-22.1-163.3-58.8L41 505c-9.4 9.4-24.6 9.4-33.9 0S-2.3 480.4 7 471l51.8-51.8C22.1 374.9 0 318.1 0 256 0 114.6 114.6 0 256 0 318.1 0 374.9 22.1 419.3 58.8L471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L453.2 92.7zM92.9 385.1L385.1 92.9C349.7 64.8 304.8 48 256 48 141.1 48 48 141.1 48 256 48 304.8 64.8 349.7 92.9 385.1z',\n\t\twidth: 512,\n\t},\n\tenvelope: {\n\t\taliases: ['email', 'mail', 'message'],\n\t\tcategories: ['communication', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M61.4 64C27.5 64 0 91.5 0 125.4 0 126.3 0 127.1 .1 128L0 128 0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256-.1 0c0-.9 .1-1.7 .1-2.6 0-33.9-27.5-61.4-61.4-61.4L61.4 64zM464 192.3L464 384c0 8.8-7.2 16-16 16L64 400c-8.8 0-16-7.2-16-16l0-191.7 154.8 117.4c31.4 23.9 74.9 23.9 106.4 0L464 192.3zM48 125.4C48 118 54 112 61.4 112l389.2 0c7.4 0 13.4 6 13.4 13.4 0 4.2-2 8.2-5.3 10.7L280.2 271.5c-14.3 10.8-34.1 10.8-48.4 0L53.3 136.1c-3.3-2.5-5.3-6.5-5.3-10.7z',\n\t\twidth: 512,\n\t},\n\tenvelopeOpen: {\n\t\taliases: ['email read', 'mail open'],\n\t\tcategories: ['communication', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M512 416c0 35.3-28.5 64-63.9 64L64 480c-35.4 0-64-28.7-64-64L0 164c.1-15.5 7.8-30 20.5-38.8L206-2.7c30.1-20.7 69.8-20.7 99.9 0L491.5 125.2c12.8 8.8 20.4 23.3 20.5 38.8l0 252zM64 432l384.1 0c8.8 0 15.9-7.1 15.9-16l0-191.7-154.8 117.4c-31.4 23.9-74.9 23.9-106.4 0L48 224.3 48 416c0 8.9 7.2 16 16 16zM463.6 164.4L278.7 36.8c-13.7-9.4-31.7-9.4-45.4 0L48.4 164.4 231.8 303.5c14.3 10.8 34.1 10.8 48.4 0L463.6 164.4z',\n\t\twidth: 512,\n\t},\n\texclamation: {\n\t\taliases: ['alert', 'warning', 'attention'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M32.3 448c17.7 0 32 14.3 32 32s-14.3 32-32 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zM36.2 .2c18.8 2 33.2 18.2 32.5 37.5L56.3 360.9c-.5 12.9-11.1 23.1-24 23.1s-23.5-10.2-24-23.1L-4 37.7C-4.8 17.1 11.7 0 32.3 0l3.8 .2z',\n\t\twidth: 64,\n\t},\n\texpand: {\n\t\taliases: ['fullscreen', 'maximize', 'enlarge'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M136 32c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0 0 88c0 13.3-10.7 24-24 24S0 181.3 0 168L0 56C0 42.7 10.7 32 24 32l112 0zM0 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 88 88 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 480c-13.3 0-24-10.7-24-24L0 344zM424 32c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-88-88 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l112 0zM400 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 112c0 13.3-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l88 0 0-88z',\n\t\twidth: 448,\n\t},\n\texpandFromCenter: {\n\t\taliases: ['resize', 'scale', 'expand arrows'],\n\t\tcategories: ['actions', 'arrows'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M295 183c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135 0 86.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-144c0-13.3-10.7-24-24-24L344 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l86.1 0-135 135zM217 329c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L48 430.1 48 344c0-13.3-10.7-24-24-24S0 330.7 0 344L0 488c0 13.3 10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.1 0 135-135z',\n\t\twidth: 512,\n\t},\n\texternalLink: {\n\t\taliases: ['open in new', 'new window', 'new tab'],\n\t\tcategories: ['arrows', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M288 24c0 13.3 10.7 24 24 24l118.1 0-231 231c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l231-231 0 118.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-176c0-13.3-10.7-24-24-24L312 0c-13.3 0-24 10.7-24 24zM80 96C35.8 96 0 131.8 0 176L0 432c0 44.2 35.8 80 80 80l256 0c44.2 0 80-35.8 80-80l0-88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 88c0 17.7-14.3 32-32 32L80 464c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L80 96z',\n\t\twidth: 512,\n\t},\n\teye: {\n\t\taliases: ['show', 'visible', 'view', 'preview'],\n\t\tcategories: ['actions', 'security', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M288 80C222.8 80 169.2 109.6 128.1 147.7 89.6 183.5 63 226 49.4 256 63 286 89.6 328.5 128.1 364.3 169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256 513 226 486.4 183.5 447.9 147.7 406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1 3.3 7.9 3.3 16.7 0 24.6-14.9 35.7-46.2 87.7-93 131.1-47.1 43.7-111.8 80.6-192.6 80.6S142.5 443.2 95.4 399.4c-46.8-43.5-78.1-95.4-93-131.1-3.3-7.9-3.3-16.7 0-24.6 14.9-35.7 46.2-87.7 93-131.1zM288 336c44.2 0 80-35.8 80-80 0-29.6-16.1-55.5-40-69.3-1.4 59.7-49.6 107.9-109.3 109.3 13.8 23.9 39.7 40 69.3 40zm-79.6-88.4c2.5 .3 5 .4 7.6 .4 35.3 0 64-28.7 64-64 0-2.6-.2-5.1-.4-7.6-37.4 3.9-67.2 33.7-71.1 71.1zm45.6-115c10.8-3 22.2-4.5 33.9-4.5 8.8 0 17.5 .9 25.8 2.6 .3 .1 .5 .1 .8 .2 57.9 12.2 101.4 63.7 101.4 125.2 0 70.7-57.3 128-128 128-61.6 0-113-43.5-125.2-101.4-1.8-8.6-2.8-17.5-2.8-26.6 0-11 1.4-21.8 4-32 .2-.7 .3-1.3 .5-1.9 11.9-43.4 46.1-77.6 89.5-89.5z',\n\t\twidth: 576,\n\t},\n\teyeSlash: {\n\t\taliases: ['hide', 'hidden', 'invisible'],\n\t\tcategories: ['actions', 'security', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-96.4-96.4c2.7-2.4 5.4-4.8 8-7.2 46.8-43.5 78.1-95.4 93-131.1 3.3-7.9 3.3-16.7 0-24.6-14.9-35.7-46.2-87.7-93-131.1-47.1-43.7-111.8-80.6-192.6-80.6-56.8 0-105.6 18.2-146 44.2L41-24.9zM176.9 111.1c32.1-18.9 69.2-31.1 111.1-31.1 65.2 0 118.8 29.6 159.9 67.7 38.5 35.7 65.1 78.3 78.6 108.3-13.6 30-40.2 72.5-78.6 108.3-3.1 2.8-6.2 5.6-9.4 8.4L393.8 328c14-20.5 22.2-45.3 22.2-72 0-70.7-57.3-128-128-128-26.7 0-51.5 8.2-72 22.2l-39.1-39.1zm182 182l-108-108c11.1-5.8 23.7-9.1 37.1-9.1 44.2 0 80 35.8 80 80 0 13.4-3.3 26-9.1 37.1zM103.4 173.2l-34-34c-32.6 36.8-55 75.8-66.9 104.5-3.3 7.9-3.3 16.7 0 24.6 14.9 35.7 46.2 87.7 93 131.1 47.1 43.7 111.8 80.6 192.6 80.6 37.3 0 71.2-7.9 101.5-20.6L352.2 422c-20 6.4-41.4 10-64.2 10-65.2 0-118.8-29.6-159.9-67.7-38.5-35.7-65.1-78.3-78.6-108.3 10.4-23.1 28.6-53.6 54-82.8z',\n\t\twidth: 576,\n\t},\n\tfacebook: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5l0-170.3-52.8 0 0-78.2 52.8 0 0-33.7c0-87.1 39.4-127.5 125-127.5 16.2 0 44.2 3.2 55.7 6.4l0 70.8c-6-.6-16.5-1-29.6-1-42 0-58.2 15.9-58.2 57.2l0 27.8 83.6 0-14.4 78.2-69.3 0 0 175.9C413.8 494.8 512 386.9 512 256z',\n\t\twidth: 512,\n\t},\n\tfile: {\n\t\taliases: ['document', 'page'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M176 48L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-240-88 0c-39.8 0-72-32.2-72-72l0-88zM316.1 160L224 67.9 224 136c0 13.3 10.7 24 24 24l68.1 0zM0 64C0 28.7 28.7 0 64 0L197.5 0c17 0 33.3 6.7 45.3 18.7L365.3 141.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64z',\n\t\twidth: 384,\n\t},\n\tfileCheck: {\n\t\taliases: ['file approved', 'verified file'],\n\t\tcategories: ['documents', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M197.5 0c17 0 33.2 6.8 45.2 18.8L365.3 141.2c12 12 18.7 28.3 18.7 45.2L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L197.5 0zM64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-240-88 0c-39.8 0-72-32.2-72-72l0-88-112 0zM228.7 263.9c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5L191.4 396.8c-4.2 5.7-10.7 9.3-17.8 9.8-7.1 .5-14-2.2-18.9-7.3l-35.9-37.2c-9.2-9.5-8.9-24.7 .6-33.9 9.5-9.2 24.7-9 33.9 .6l16.1 16.6 59.3-81.6zM224 136c0 13.3 10.7 24 24 24l68.1 0-92.1-92.1 0 68.1z',\n\t\twidth: 384,\n\t},\n\tfileContract: {\n\t\taliases: ['agreement', 'terms', 'legal'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M176 48L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-240-88 0c-39.8 0-72-32.2-72-72l0-88zM316.1 160L224 67.9 224 136c0 13.3 10.7 24 24 24l68.1 0zM0 64C0 28.7 28.7 0 64 0L197.5 0c17 0 33.3 6.7 45.3 18.7L365.3 141.3c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM145.3 301.9c7-8.8 17.7-13.9 28.9-13.9 16.4 0 30.8 10.7 35.5 26.4l16.1 53.6 54.1 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-72 0c-10.6 0-19.9-7-23-17.1l-15.2-50.7-47.1 58.8c-8.3 10.4-23.4 12-33.7 3.8S77 387.4 85.3 377l60.1-75.1zM104 80l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z',\n\t\twidth: 384,\n\t},\n\tfileCSV: {\n\t\taliases: ['spreadsheet', 'csv'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M208 48L96 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l80 0 0 48-80 0c-35.3 0-64-28.7-64-64L32 64C32 28.7 60.7 0 96 0L229.5 0c17 0 33.3 6.7 45.3 18.7L397.3 141.3c12 12 18.7 28.3 18.7 45.3l0 149.5-48 0 0-128-88 0c-39.8 0-72-32.2-72-72l0-88zM348.1 160L256 67.9 256 136c0 13.3 10.7 24 24 24l68.1 0zM264 380l16 0c24.3 0 44 19.7 44 44l0 8c0 11-9 20-20 20s-20-9-20-20l0-8c0-2.2-1.8-4-4-4l-16 0c-2.2 0-4 1.8-4 4l0 80c0 2.2 1.8 4 4 4l16 0c2.2 0 4-1.8 4-4l0-8c0-11 9-20 20-20s20 9 20 20l0 8c0 24.3-19.7 44-44 44l-16 0c-24.3 0-44-19.7-44-44l0-80c0-24.3 19.7-44 44-44zm136 0l24 0c11 0 20 9 20 20s-9 20-20 20l-24 0c-6.6 0-12 5.4-12 12s5.4 12 12 12c28.7 0 52 23.3 52 52s-23.3 52-52 52l-32 0c-11 0-20-9-20-20s9-20 20-20l32 0c6.6 0 12-5.4 12-12s-5.4-12-12-12c-28.7 0-52-23.3-52-52s23.3-52 52-52zm96 0c11 0 20 9 20 20l0 31.6c0 19.6 4.1 38.9 12 56.7 7.9-17.8 12-37.1 12-56.7l0-31.6c0-11 9-20 20-20s20 9 20 20l0 31.6c0 35.5-10.5 70.3-30.2 99.8l-5.1 7.7c-3.7 5.6-10 8.9-16.6 8.9s-12.9-3.3-16.6-8.9l-5.1-7.7c-19.7-29.6-30.2-64.3-30.2-99.8l0-31.6c0-11 9-20 20-20z',\n\t\twidth: 576,\n\t},\n\tfileDiff: {\n\t\taliases: ['file changes', 'diff', 'compare'],\n\t\tcategories: ['development', 'documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 48l112 0 0 88c0 39.8 32.2 72 72 72l88 0 0 240c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16zM224 67.9l92.1 92.1-68.1 0c-13.3 0-24-10.7-24-24l0-68.1zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-261.5c0-17-6.7-33.3-18.7-45.3L242.7 18.7C230.7 6.7 214.5 0 197.5 0L64 0zM216 240c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 24 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24 0 0-24zM144 384c-13.3 0-24 10.7-24 24s10.7 24 24 24l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-96 0z',\n\t\twidth: 384,\n\t},\n\tfileExport: {\n\t\taliases: ['export', 'send file'],\n\t\tcategories: ['actions', 'documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M208.5 48l-112 0c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-48 48 0 0 48c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64l0-384c0-35.3 28.7-64 64-64L230 0c17 0 33.3 6.7 45.3 18.7L397.8 141.3c12 12 18.7 28.3 18.7 45.3l0 69.5-48 0 0-48-88 0c-39.8 0-72-32.2-72-72l0-88zm72 256l214.1 0-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-214.1 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm68.1-144l-92.1-92.1 0 68.1c0 13.3 10.7 24 24 24l68.1 0z',\n\t\twidth: 576,\n\t},\n\tfileImport: {\n\t\taliases: ['import', 'receive file'],\n\t\tcategories: ['actions', 'documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M128 48l112 0 0 88c0 39.8 32.2 72 72 72l88 0 0 240c0 8.8-7.2 16-16 16l-256 0c-8.8 0-16-7.2-16-16l0-48-48 0 0 48c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-261.5c0-17-6.7-33.3-18.7-45.3L306.7 18.7C294.7 6.7 278.5 0 261.5 0L128 0C92.7 0 64 28.7 64 64l0 192 48 0 0-192c0-8.8 7.2-16 16-16zM288 67.9l92.1 92.1-68.1 0c-13.3 0-24-10.7-24-24l0-68.1zM0 328c0 13.3 10.7 24 24 24l222.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-222.1 0c-13.3 0-24 10.7-24 24z',\n\t\twidth: 512,\n\t},\n\tfileLines: {\n\t\taliases: ['text file', 'document'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 48l112 0 0 88c0 39.8 32.2 72 72 72l88 0 0 240c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16zM224 67.9l92.1 92.1-68.1 0c-13.3 0-24-10.7-24-24l0-68.1zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-261.5c0-17-6.7-33.3-18.7-45.3L242.7 18.7C230.7 6.7 214.5 0 197.5 0L64 0zm56 256c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z',\n\t\twidth: 384,\n\t},\n\tfilePDF: {\n\t\taliases: ['pdf', 'document'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M208 48L96 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l80 0 0 48-80 0c-35.3 0-64-28.7-64-64L32 64C32 28.7 60.7 0 96 0L229.5 0c17 0 33.3 6.7 45.3 18.7L397.3 141.3c12 12 18.7 28.3 18.7 45.3l0 149.5-48 0 0-128-88 0c-39.8 0-72-32.2-72-72l0-88zM348.1 160L256 67.9 256 136c0 13.3 10.7 24 24 24l68.1 0zM240 380l32 0c33.1 0 60 26.9 60 60s-26.9 60-60 60l-12 0 0 28c0 11-9 20-20 20s-20-9-20-20l0-128c0-11 9-20 20-20zm32 80c11 0 20-9 20-20s-9-20-20-20l-12 0 0 40 12 0zm96-80l32 0c28.7 0 52 23.3 52 52l0 64c0 28.7-23.3 52-52 52l-32 0c-11 0-20-9-20-20l0-128c0-11 9-20 20-20zm32 128c6.6 0 12-5.4 12-12l0-64c0-6.6-5.4-12-12-12l-12 0 0 88 12 0zm76-108c0-11 9-20 20-20l48 0c11 0 20 9 20 20s-9 20-20 20l-28 0 0 24 28 0c11 0 20 9 20 20s-9 20-20 20l-28 0 0 44c0 11-9 20-20 20s-20-9-20-20l0-128z',\n\t\twidth: 576,\n\t},\n\tfileZip: {\n\t\taliases: ['archive', 'compressed', 'zip'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 48l112 0 0 88c0 39.8 32.2 72 72 72l88 0 0 240c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16zM224 67.9l92.1 92.1-68.1 0c-13.3 0-24-10.7-24-24l0-68.1zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-261.5c0-17-6.7-33.3-18.7-45.3L242.7 18.7C230.7 6.7 214.5 0 197.5 0L64 0zM80 104c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0c-13.3 0-24 10.7-24 24zm0 80c0 13.3 10.7 24 24 24l32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0c-13.3 0-24 10.7-24 24zm64 56l-32 0c-17.7 0-32 14.3-32 32l0 48c0 26.5 21.5 48 48 48s48-21.5 48-48l0-48c0-17.7-14.3-32-32-32zm-16 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z',\n\t\twidth: 384,\n\t},\n\tfolder: {\n\t\taliases: ['directory'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 400l384 0c8.8 0 16-7.2 16-16l0-240c0-8.8-7.2-16-16-16l-149.3 0c-17.3 0-34.2-5.6-48-16L212.3 83.2c-2.8-2.1-6.1-3.2-9.6-3.2L64 80c-8.8 0-16 7.2-16 16l0 288c0 8.8 7.2 16 16 16zm384 48L64 448c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l138.7 0c13.8 0 27.3 4.5 38.4 12.8l38.4 28.8c5.5 4.2 12.3 6.4 19.2 6.4L448 80c35.3 0 64 28.7 64 64l0 240c0 35.3-28.7 64-64 64z',\n\t\twidth: 512,\n\t},\n\tfolderTree: {\n\t\taliases: ['file tree', 'directory tree'],\n\t\tcategories: ['development', 'documents', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24L0 392c0 30.9 25.1 56 56 56l184 0 0-48-184 0c-4.4 0-8-3.6-8-8l0-232 192 0 0-48-192 0 0-88zM385.5 48l31.9 21.3c10.5 7 22.9 10.7 35.5 10.7l75.2 0 0 96-192 0 0-128 49.5 0zM288 48l0 128c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-75.2 0c-3.2 0-6.2-.9-8.9-2.7L412.1 8.1C404.2 2.8 394.9 0 385.5 0L336 0c-26.5 0-48 21.5-48 48zm97.5 288l33.9 22.6c9.2 6.1 20 9.4 31.1 9.4l77.6 0 0 96-192 0 0-128 49.5 0zM288 336l0 128c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-77.6 0c-1.6 0-3.1-.5-4.4-1.3l-33.9-22.6c-7.9-5.3-17.1-8.1-26.6-8.1L336 288c-26.5 0-48 21.5-48 48z',\n\t\twidth: 576,\n\t},\n\tgear: {\n\t\taliases: ['settings', 'preferences', 'config'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M205.5 92.7l13.7-60.7 73.6 0 13.7 60.7c1.7 7.4 6.8 13.6 13.8 16.7 10.8 4.8 21 10.7 30.4 17.6 6.1 4.5 14.1 5.9 21.4 3.6l59.5-18.5 36.8 63.8-45.8 42.3c-5.6 5.2-8.4 12.7-7.6 20.2 1.3 11.5 1.3 23.7 0 35.2-.8 7.6 2 15.1 7.6 20.2l45.8 42.3-36.8 63.8-59.5-18.5c-7.3-2.3-15.2-.9-21.4 3.6-9.4 6.9-19.6 12.9-30.4 17.6-7 3.1-12.1 9.3-13.8 16.7l-13.7 60.7-73.6 0-13.7-60.7c-1.7-7.4-6.8-13.6-13.8-16.7-10.8-4.8-21-10.7-30.4-17.6-6.1-4.5-14.1-5.9-21.4-3.6l-59.5 18.5-36.8-63.8 45.8-42.3c5.6-5.2 8.4-12.7 7.6-20.2-1.3-11.5-1.3-23.7 0-35.2 .8-7.6-2-15.1-7.6-20.2l-45.8-42.3 36.8-63.8 59.5 18.5c7.3 2.3 15.2 .9 21.4-3.6 9.4-6.9 19.6-12.9 30.4-17.6 7-3.1 12.1-9.3 13.8-16.7zM212.8-16c-18.7 0-34.9 13-39 31.2L161.2 70.8c-6.3 3.2-12.3 6.7-18.2 10.5L88.6 64.4c-17.9-5.6-37.2 2-46.5 18.2L-1.1 157.4c-9.3 16.2-6.2 36.7 7.5 49.4l41.9 38.7c-.3 6.9-.3 14 0 21L6.4 305.2c-13.7 12.7-16.9 33.2-7.5 49.4l43.2 74.8c9.3 16.2 28.7 23.7 46.5 18.2l54.5-16.9c5.9 3.8 11.9 7.3 18.2 10.5l12.6 55.6c4.1 18.2 20.3 31.2 39 31.2l86.4 0c18.7 0 34.9-13 39-31.2l12.6-55.6c6.3-3.2 12.3-6.7 18.2-10.5l54.5 16.9c17.9 5.6 37.2-2 46.5-18.2l43.2-74.8c9.3-16.2 6.2-36.7-7.5-49.4l-41.9-38.7c.3-6.9 .3-14 0-21l41.9-38.7c13.7-12.7 16.8-33.2 7.5-49.4L470 82.6c-9.4-16.2-28.7-23.7-46.5-18.2L369 81.3c-5.9-3.8-11.9-7.3-18.2-10.5L338.3 15.2C334.1-3 317.9-16 299.2-16l-86.4 0zM304 256a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-96a96 96 0 1 0 0 192 96 96 0 1 0 0-192z',\n\t\twidth: 512,\n\t},\n\tgem: {\n\t\taliases: ['diamond', 'jewel', 'premium'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M168.5 72l87.5 93 87.5-93-175 0zM383.9 99.1l-72.3 76.9 129 0-56.6-76.9zm50 124.9L78.1 224 256 420.3 433.9 224zM71.5 176l129 0-72.3-76.9-56.6 76.9zm434.3 40.1l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8l240 0c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z',\n\t\twidth: 512,\n\t},\n\tgithub: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM252.8 8c-138.7 0-244.8 105.3-244.8 244 0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1 100-33.2 167.8-128.1 167.8-239 0-138.7-112.5-244-251.2-244zM105.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z',\n\t\twidth: 512,\n\t},\n\tgitlab: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M504 204.6l-.7-1.8-69.7-181.8c-1.4-3.6-3.9-6.6-7.2-8.6-2.4-1.6-5.1-2.5-8-2.8s-5.7 .1-8.4 1.1-5.1 2.7-7.1 4.8c-1.9 2.1-3.3 4.7-4.1 7.4l-47 144-190.5 0-47.1-144c-.8-2.8-2.2-5.3-4.1-7.4-2-2.1-4.4-3.7-7.1-4.8-2.6-1-5.5-1.4-8.4-1.1s-5.6 1.2-8 2.8c-3.2 2-5.8 5.1-7.2 8.6L9.8 202.8 9 204.6c-10 26.2-11.3 55-3.5 82 7.7 26.9 24 50.7 46.4 67.6l.3 .2 .6 .4 106 79.5c38.5 29.1 66.7 50.3 84.6 63.9 3.7 1.9 8.3 4.3 13 4.3s9.3-2.4 13-4.3c17.9-13.5 46.1-34.9 84.6-63.9l106.7-79.9 .3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82z',\n\t\twidth: 512,\n\t},\n\tglobe: {\n\t\taliases: ['world', 'website', 'internet', 'language'],\n\t\tcategories: ['navigation', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M303.2 413c-21.5 43.7-41.4 51-47.2 51s-25.7-7.3-47.2-51c-17-34.5-29.2-81.6-32.1-133l158.6 0c-3 51.5-15.2 98.6-32.1 133zm32.1-181l-158.6 0c3-51.5 15.2-98.6 32.1-133 21.5-43.7 41.4-51 47.2-51s25.7 7.3 47.2 51c17 34.5 29.2 81.6 32.1 133zm48.1 48l79.2 0c-8.6 74.6-56.7 137.3-122.8 166.4 24-42.8 40.3-102.4 43.6-166.4zm79.2-48l-79.2 0c-3.3-64-19.6-123.6-43.6-166.4 66.1 29.2 114.2 91.8 122.8 166.4zm-334 0l-79.2 0c8.6-74.6 56.7-137.3 122.8-166.4-24 42.8-40.3 102.4-43.6 166.4zM49.4 280l79.2 0c3.3 64 19.6 123.6 43.6 166.4-66.1-29.2-114.2-91.8-122.8-166.4zM256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512z',\n\t\twidth: 512,\n\t},\n\tgraduationCap: {\n\t\taliases: ['education', 'learning', 'academy'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M318.8 38.1C309 34.1 298.6 32 288 32s-21 2.1-30.8 6.1L14.8 137.9C5.8 141.6 0 150.3 0 160L0 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-260.2 48 19.8 0 168.5c0 53 86 96 192 96s192-43 192-96l0-168.5 81.2-33.4c9-3.7 14.8-12.4 14.8-22.1s-5.8-18.4-14.8-22.1L318.8 38.1zM144 384l0-148.7 113.2 46.6c9.8 4 20.2 6.1 30.8 6.1s21-2.1 30.8-6.1L432 235.3 432 384c0 .1 0 .1 0 .3s-.1 .4-.3 .9c-.4 .9-1.3 2.7-3.4 5.2-4.4 5.2-12.6 11.9-26 18.6-26.8 13.4-67.1 23-114.3 23s-87.5-9.7-114.3-23c-13.4-6.7-21.6-13.4-26-18.6-2.1-2.5-3-4.3-3.4-5.2-.2-.5-.3-.8-.3-.9s0-.2 0-.3zM87.2 160L275.5 82.5c4-1.6 8.2-2.5 12.5-2.5s8.5 .8 12.5 2.5L488.8 160 300.5 237.5c-4 1.6-8.2 2.5-12.5 2.5s-8.5-.8-12.5-2.5L87.2 160z',\n\t\twidth: 576,\n\t},\n\tgrid: {\n\t\taliases: ['tiles', 'gallery', 'grid view'],\n\t\tcategories: ['navigation', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M0 64C0 46.3 14.3 32 32 32l48 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32L0 64zM0 232c0-17.7 14.3-32 32-32l48 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-48zM112 400l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM168 64c0-17.7 14.3-32 32-32l48 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-48zM280 232l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM168 400c0-17.7 14.3-32 32-32l48 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-48zM448 64l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM336 232c0-17.7 14.3-32 32-32l48 0c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-48zM448 400l0 48c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32l48 0c17.7 0 32 14.3 32 32z',\n\t\twidth: 448,\n\t},\n\tgripDots: {\n\t\taliases: ['drag', 'reorder', 'handle'],\n\t\tcategories: ['actions', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 224a64 64 0 1 1 0-128 64 64 0 1 1 0 128zM256 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm192 0a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm0 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM256 416a64 64 0 1 1 0-128 64 64 0 1 1 0 128zM64 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z',\n\t\twidth: 512,\n\t},\n\tgripDotsVertical: {\n\t\taliases: ['drag', 'reorder', 'handle'],\n\t\tcategories: ['actions', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M128 64A64 64 0 1 0 0 64 64 64 0 1 0 128 64zm0 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM0 448c0 35.3 28.7 64 64 64s64-28.7 64-64-28.7-64-64-64-64 28.7-64 64zM320 64a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM192 256a64 64 0 1 0 128 0 64 64 0 1 0 -128 0zM320 448c0-35.3-28.7-64-64-64s-64 28.7-64 64 28.7 64 64 64 64-28.7 64-64z',\n\t\twidth: 320,\n\t},\n\theart: {\n\t\taliases: ['favorite', 'like', 'love'],\n\t\tcategories: ['actions', 'objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M378.9 80c-27.3 0-53 13.1-69 35.2l-34.4 47.6c-4.5 6.2-11.7 9.9-19.4 9.9s-14.9-3.7-19.4-9.9l-34.4-47.6c-16-22.1-41.7-35.2-69-35.2-47 0-85.1 38.1-85.1 85.1 0 49.9 32 98.4 68.1 142.3 41.1 50 91.4 94 125.9 120.3 3.2 2.4 7.9 4.2 14 4.2s10.8-1.8 14-4.2c34.5-26.3 84.8-70.4 125.9-120.3 36.2-43.9 68.1-92.4 68.1-142.3 0-47-38.1-85.1-85.1-85.1zM271 87.1c25-34.6 65.2-55.1 107.9-55.1 73.5 0 133.1 59.6 133.1 133.1 0 68.6-42.9 128.9-79.1 172.8-44.1 53.6-97.3 100.1-133.8 127.9-12.3 9.4-27.5 14.1-43.1 14.1s-30.8-4.7-43.1-14.1C176.4 438 123.2 391.5 79.1 338 42.9 294.1 0 233.7 0 165.1 0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1l15 20.7 15-20.7z',\n\t\twidth: 512,\n\t},\n\theartSolid: {\n\t\taliases: ['favorited', 'liked', 'loved'],\n\t\tcategories: ['actions', 'objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M241 87.1l15 20.7 15-20.7C296 52.5 336.2 32 378.9 32 452.4 32 512 91.6 512 165.1l0 2.6c0 112.2-139.9 242.5-212.9 298.2-12.4 9.4-27.6 14.1-43.1 14.1s-30.8-4.6-43.1-14.1C139.9 410.2 0 279.9 0 167.7l0-2.6C0 91.6 59.6 32 133.1 32 175.8 32 216 52.5 241 87.1z',\n\t\twidth: 512,\n\t},\n\thouse: {\n\t\taliases: ['home', 'homepage', 'dashboard'],\n\t\tcategories: ['navigation', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M240 6.1c9.1-8.2 22.9-8.2 32 0l232 208c9.9 8.8 10.7 24 1.8 33.9s-24 10.7-33.9 1.8l-8-7.2 0 205.3c0 35.3-28.7 64-64 64l-288 0c-35.3 0-64-28.7-64-64l0-205.3-8 7.2c-9.9 8.8-25 8-33.9-1.8s-8-25 1.8-33.9L240 6.1zm16 50.1L96 199.7 96 448c0 8.8 7.2 16 16 16l48 0 0-104c0-39.8 32.2-72 72-72l48 0c39.8 0 72 32.2 72 72l0 104 48 0c8.8 0 16-7.2 16-16l0-248.3-160-143.4zM208 464l96 0 0-104c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 104z',\n\t\twidth: 512,\n\t},\n\tidCard: {\n\t\taliases: ['badge', 'identity', 'profile card'],\n\t\tcategories: ['objects', 'users'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M48 416l0-256 480 0 0 256c0 8.8-7.2 16-16 16l-192 0c0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80l-32 0c-8.8 0-16-7.2-16-16zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM208 312a56 56 0 1 0 0-112 56 56 0 1 0 0 112zM376 208c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0z',\n\t\twidth: 576,\n\t},\n\timage: {\n\t\taliases: ['photo', 'picture', 'thumbnail'],\n\t\tcategories: ['media'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm128 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm136 72c8.5 0 16.4 4.5 20.7 11.8l80 136c4.4 7.4 4.4 16.6 .1 24.1S352.6 384 344 384l-240 0c-8.9 0-17.2-5-21.3-12.9s-3.5-17.5 1.6-24.8l56-80c4.5-6.4 11.8-10.2 19.7-10.2s15.2 3.8 19.7 10.2l17.2 24.6 46.5-79c4.3-7.3 12.2-11.8 20.7-11.8z',\n\t\twidth: 448,\n\t},\n\tinputText: {\n\t\taliases: ['text field', 'form field'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M512 112c8.8 0 16 7.2 16 16l0 256c0 8.8-7.2 16-16 16L64 400c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l448 0zM64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM96 224l0 104c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 32 0 0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-35.3-28.7-64-64-64s-64 28.7-64 64zm80 32l-32 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32zm96-72l0 144c0 13.3 10.7 24 24 24l52 0c33.1 0 60-26.9 60-60 0-16-6.3-30.5-16.5-41.3 5.4-9 8.5-19.5 8.5-30.7 0-33.1-26.9-60-60-60l-44 0c-13.3 0-24 10.7-24 24zm80 36c0 6.6-5.4 12-12 12l-20 0 0-24 20 0c6.6 0 12 5.4 12 12zm-32 84l0-24 28 0c6.6 0 12 5.4 12 12s-5.4 12-12 12l-28 0z',\n\t\twidth: 576,\n\t},\n\tinstagram: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M224.3 141a115 115 0 1 0 -.6 230 115 115 0 1 0 .6-230zm-.6 40.4a74.6 74.6 0 1 1 .6 149.2 74.6 74.6 0 1 1 -.6-149.2zm93.4-45.1a26.8 26.8 0 1 1 53.6 0 26.8 26.8 0 1 1 -53.6 0zm129.7 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM399 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z',\n\t\twidth: 448,\n\t},\n\tkeySkeleton: {\n\t\taliases: ['key', 'password', 'access', 'api key'],\n\t\tcategories: ['actions', 'objects', 'security'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M304 48a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 240c79.5 0 144-64.5 144-144S383.5 0 304 0 160 64.5 160 144c0 31.1 9.9 59.9 26.6 83.4L7 407c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 30.1-30.1 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 98.6-98.6C244.1 278.1 272.9 288 304 288z',\n\t\twidth: 448,\n\t},\n\tlaptop: {\n\t\taliases: ['computer', 'device'],\n\t\tcategories: ['media'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M512 80L128 80c-8.8 0-16 7.2-16 16l0 208-48 0 0-208c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 208-48 0 0-208c0-8.8-7.2-16-16-16zM102.4 432l435.2 0c22.1 0 41.1-13.1 49.6-32L52.8 400c8.5 18.9 27.5 32 49.6 32zM0 377.6C0 363.5 11.5 352 25.6 352l588.8 0c14.1 0 25.6 11.5 25.6 25.6 0 56.6-45.8 102.4-102.4 102.4l-435.2 0C45.8 480 0 434.2 0 377.6z',\n\t\twidth: 640,\n\t},\n\tlaptopCode: {\n\t\taliases: ['development', 'coding'],\n\t\tcategories: ['development', 'media'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M128 80l384 0c8.8 0 16 7.2 16 16l0 208 48 0 0-208c0-35.3-28.7-64-64-64L128 32C92.7 32 64 60.7 64 96l0 208 48 0 0-208c0-8.8 7.2-16 16-16zM52.8 400l534.4 0c-8.5 18.9-27.5 32-49.6 32l-435.2 0c-22.1 0-41.1-13.1-49.6-32zM25.6 352C11.5 352 0 363.5 0 377.6 0 434.2 45.8 480 102.4 480l435.2 0c56.6 0 102.4-45.8 102.4-102.4 0-14.1-11.5-25.6-25.6-25.6L25.6 352zM281 169c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-48 48c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM393 135c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z',\n\t\twidth: 640,\n\t},\n\tleaf: {\n\t\taliases: ['nature', 'eco', 'green'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M471.3 6.7C477.7 .6 487-1.6 495.6 1.2 505.4 4.5 512 13.7 512 24l0 186.9C512 342.1 403.9 448 273.2 448 191.7 448 121.9 392.4 101.8 316.8 68.7 347.4 48 391.3 48 440l0 16c0 13.3-10.7 24-24 24S0 469.2 0 456l0-16c0-75.1 38.3-141.2 96.4-179.9 6.1-91.7 82.4-164.1 175.6-164.1 66.4 0 115.8-22.1 148.7-44 19.2-12.8 35.5-28.1 50.7-45.3zM464 79.9c-38.3 29.5-102.4 64.1-192 64.1-57.6 0-106.4 38.1-122.4 90.4 20.9-6.8 43.2-10.4 66.4-10.4l80 0c13.3 0 24 10.8 24 24s-10.7 24-24 24l-80 0c-25.4 0-49.4 5.7-71 15.8 7.9 63.1 62.6 112.2 128.2 112.2 104.7 0 190.8-84.9 190.8-189.1l0-131z',\n\t\twidth: 512,\n\t},\n\tlifeRing: {\n\t\taliases: ['help', 'support', 'rescue'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M385.1 419.1C349.7 447.2 304.8 464 256 464s-93.7-16.8-129.1-44.9l80.4-80.4c14.3 8.4 31 13.3 48.8 13.3s34.5-4.8 48.8-13.3l80.4 80.4zm68.1 .2C489.9 374.9 512 318.1 512 256S489.9 137.1 453.2 92.7L465 81c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L419.3 58.8C374.9 22.1 318.1 0 256 0S137.1 22.1 92.7 58.8L81 47c-9.4-9.4-24.6-9.4-33.9 0S37.7 71.6 47 81L58.8 92.7C22.1 137.1 0 193.9 0 256S22.1 374.9 58.8 419.3L47 431c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l11.8-11.8C137.1 489.9 193.9 512 256 512s118.9-22.1 163.3-58.8L431 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.8-11.8zm-34.1-34.1l-80.4-80.4c8.4-14.3 13.3-31 13.3-48.8s-4.8-34.5-13.3-48.8l80.4-80.4C447.2 162.3 464 207.2 464 256s-16.8 93.7-44.9 129.1zM385.1 92.9l-80.4 80.4c-14.3-8.4-31-13.3-48.8-13.3s-34.5 4.8-48.8 13.3L126.9 92.9C162.3 64.8 207.2 48 256 48s93.7 16.8 129.1 44.9zM173.3 304.8L92.9 385.1C64.8 349.7 48 304.8 48 256s16.8-93.7 44.9-129.1l80.4 80.4c-8.4 14.3-13.3 31-13.3 48.8s4.8 34.5 13.3 48.8zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z',\n\t\twidth: 512,\n\t},\n\tlinkedin: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M416 32L31.9 32C14.3 32 0 46.5 0 64.3L0 447.7C0 465.5 14.3 480 31.9 480L416 480c17.6 0 32-14.5 32-32.3l0-383.4C448 46.5 433.6 32 416 32zM135.4 416l-66.4 0 0-213.8 66.5 0 0 213.8-.1 0zM102.2 96a38.5 38.5 0 1 1 0 77 38.5 38.5 0 1 1 0-77zM384.3 416l-66.4 0 0-104c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9l0 105.8-66.4 0 0-213.8 63.7 0 0 29.2 .9 0c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9l0 117.2z',\n\t\twidth: 448,\n\t},\n\tlinkSimple: {\n\t\taliases: ['link', 'url', 'chain'],\n\t\tcategories: ['actions', 'development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M0 256C0 150 86 64 192 64l40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0c-79.5 0-144 64.5-144 144s64.5 144 144 144l40 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-40 0C86 448 0 362 0 256zm160 0c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zM384 64c106 0 192 86 192 192S490 448 384 448l-40 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l40 0c79.5 0 144-64.5 144-144S463.5 112 384 112l-40 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l40 0z',\n\t\twidth: 576,\n\t},\n\tlinkSimpleSlash: {\n\t\taliases: ['unlink', 'broken link'],\n\t\tcategories: ['actions', 'development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M41-24.9c-9.4-9.4-24.6-9.4-33.9 0S-2.3-.3 7 9.1l528 528c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-83.9-83.9C539.7 385.4 576 324.9 576 256 576 150 490 64 384 64l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c79.5 0 144 64.5 144 144 0 55.8-31.7 104.1-78.1 128.1L345.8 280 392 280c13.3 0 24-10.7 24-24s-10.7-24-24-24l-94.2 0-119.4-119.4c4.5-.4 9-.6 13.5-.6l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0c-18.9 0-37.1 2.7-54.4 7.8L41-24.9zm46.3 182l-34-34C20.3 157.7 0 204.5 0 256 0 362 86 448 192 448l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0c-79.5 0-144-64.5-144-144 0-38.3 14.9-73.1 39.3-98.9z',\n\t\twidth: 576,\n\t},\n\tlistCheck: {\n\t\taliases: ['checklist', 'todo', 'tasks'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M139.7 69.8c7.6-10.9 5-25.8-5.9-33.4s-25.8-5-33.4 5.9L60.7 98.8 41 79C31.6 69.7 16.4 69.7 7 79S-2.3 103.6 7 113l40 40c5 5 12 7.6 19.1 6.9s13.5-4.3 17.6-10.1l56-80zm0 160c7.6-10.9 5-25.8-5.9-33.4s-25.8-5-33.4 5.9L60.7 258.8 41 239c-9.4-9.4-24.6-9.4-33.9 0S-2.3 263.6 7 273l40 40c5 5 12 7.6 19.1 6.9s13.5-4.3 17.6-10.1l56-80zM192 96c0 13.3 10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L216 72c-13.3 0-24 10.7-24 24zm0 160c0 13.3 10.7 24 24 24l272 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-272 0c-13.3 0-24 10.7-24 24zM160 416c0 13.3 10.7 24 24 24l304 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-304 0c-13.3 0-24 10.7-24 24zm-64 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z',\n\t\twidth: 512,\n\t},\n\tlock: {\n\t\taliases: ['locked', 'password', 'secure', 'private'],\n\t\tcategories: ['actions', 'security', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M112 96l0 64 160 0 0-64c0-44.2-35.8-80-80-80s-80 35.8-80 80zM64 160l0-64C64 25.3 121.3-32 192-32S320 25.3 320 96l0 64c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64zm208 48l-160 0 0 0-48 0 0 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16l0 0-48 0 0 0z',\n\t\twidth: 384,\n\t},\n\tlockOpen: {\n\t\taliases: ['unlocked', 'unsecure', 'public'],\n\t\tcategories: ['actions', 'security', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M368 96c0-44.2 35.8-80 80-80s80 35.8 80 80l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-70.7-57.3-128-128-128S320 25.3 320 96l0 64-160 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64l-48 0 0-64zM320 208l0 0 48 0 0 0 48 0c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-256 0c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16l160 0z',\n\t\twidth: 576,\n\t},\n\tmagnifyingGlass: {\n\t\taliases: ['search', 'find', 'lookup'],\n\t\tcategories: ['actions', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M368 208a160 160 0 1 0 -320 0 160 160 0 1 0 320 0zM337.1 371.1C301.7 399.2 256.8 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208c0 48.8-16.8 93.7-44.9 129.1L505 471c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L337.1 371.1z',\n\t\twidth: 512,\n\t},\n\tmedal: {\n\t\taliases: ['award', 'achievement', 'prize'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M21.6 64.2L96.4 213.8c-20.2 30.4-32 67-32 106.2 0 106 86 192 192 192s192-86 192-192c0-39.3-11.8-75.8-32-106.2L491 64.2c11.9-23.7 2.2-52.5-21.5-64.4L383.8-43.1c-23.1-11.6-51.2-2.7-63.6 19.9l-63.8 117-63.8-117C180.1-45.8 152-54.7 128.9-43.1L43-.2C19.3 11.7 9.7 40.5 21.6 64.2zm269.1 66.9L362.3-.2 448.1 42.7 382 174.9c-25.5-22.1-56.8-37.6-91.3-43.8zm-68.8 0c-34.5 6.2-65.9 21.7-91.3 43.8L64.5 42.7 150.3-.2 221.9 131.1zM112.3 320a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm174.8-49.5l-22.4-45.4c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1l-50.1 7.3c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.1 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9L252 378.7c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.5-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1z',\n\t\twidth: 512,\n\t},\n\tmemo: {\n\t\taliases: ['note', 'sticky note'],\n\t\tcategories: ['documents'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-384c0-8.8-7.2-16-16-16L64 48zM0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm120 64l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z',\n\t\twidth: 384,\n\t},\n\tmessages: {\n\t\taliases: ['chat', 'conversation', 'discuss'],\n\t\tcategories: ['communication', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M48 40l0 192c0 13.3 10.7 24 24 24l32 0c13.3 0 24 10.7 24 24l0 31.3 54.6-42c11.2-8.6 24.9-13.3 39-13.3l90.4 0c13.3 0 24-10.7 24-24l0-192c0-13.3-10.7-24-24-24L72 16C58.7 16 48 26.7 48 40zM72-32l240 0c39.8 0 72 32.2 72 72l0 192c0 39.8-32.2 72-72 72l-90.4 0c-3.5 0-7 1.2-9.8 3.3L118.6 379c-7.2 5.6-17 6.5-25.2 2.5S80 369.1 80 360l0-56-8 0c-39.8 0-72-32.2-72-72L0 40C0 .2 32.2-32 72-32zM240 352l0 40c0 13.3 10.7 24 24 24l90.4 0c14.1 0 27.8 4.7 39 13.3l54.6 42 0-31.3c0-13.3 10.7-24 24-24l32 0c13.3 0 24-10.7 24-24l0-192c0-13.3-10.7-24-24-24l-72 0 0-48 72 0c39.8 0 72 32.2 72 72l0 192c0 39.8-32.2 72-72 72l-8 0 0 56c0 9.1-5.2 17.5-13.4 21.5s-18 3.1-25.2-2.5l-93.2-71.7c-2.8-2.2-6.2-3.3-9.8-3.3L264 464c-39.8 0-72-32.2-72-72l0-8.9 40.5-31.1 7.5 0z',\n\t\twidth: 576,\n\t},\n\tminus: {\n\t\taliases: ['remove', 'subtract', 'collapse'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M0 256c0-13.3 10.7-24 24-24l400 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 280c-13.3 0-24-10.7-24-24z',\n\t\twidth: 448,\n\t},\n\tmoon: {\n\t\taliases: ['dark mode', 'night'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M239.3 48.7c-107.1 8.5-191.3 98.1-191.3 207.3 0 114.9 93.1 208 208 208 33.3 0 64.7-7.8 92.6-21.7-103.4-23.4-180.6-115.8-180.6-226.3 0-65.8 27.4-125.1 71.3-167.3zM0 256c0-141.4 114.6-256 256-256 19.4 0 38.4 2.2 56.7 6.3 9.9 2.2 17.3 10.5 18.5 20.5s-4 19.8-13.1 24.4c-60.6 30.2-102.1 92.7-102.1 164.8 0 101.6 82.4 184 184 184 5 0 9.9-.2 14.8-.6 10.1-.8 19.6 4.8 23.8 14.1s2 20.1-5.3 27.1C387.3 484.8 324.8 512 256 512 114.6 512 0 397.4 0 256z',\n\t\twidth: 512,\n\t},\n\tnextJs: {\n\t\taliases: ['next.js', 'vercel'],\n\t\tcategories: ['brands', 'custom'],\n\t\theight: 180,\n\t\tsvgPathData: '',\n\t\twidth: 180,\n\t},\n\tpaperclip: {\n\t\taliases: ['attachment', 'attach'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M241.4 18.4c53.1-53.1 139.2-53.1 192.3 0s53.1 139.2 0 192.3L264 380.5c-34.4 34.4-90.1 34.4-124.5 0s-34.4-90.1 0-124.5L298 97.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L173.5 289.9c-15.6 15.6-15.6 40.9 0 56.6s40.9 15.6 56.6 0L399.8 176.8c34.4-34.4 34.4-90.1 0-124.5s-90.1-34.4-124.4 0l-181 181c-53.1 53.1-53.1 139.2 0 192.3s139.2 53.1 192.3 0L428.1 284.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L320.6 459.6c-71.9 71.9-188.4 71.9-260.2 0s-71.9-188.4 0-260.2l181-181z',\n\t\twidth: 512,\n\t},\n\tpaperPlane: {\n\t\taliases: ['send', 'submit'],\n\t\tcategories: ['communication', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M290.5 287.7L491.4 86.9 359 456.3 290.5 287.7zM457.4 53L256.6 253.8 88 185.3 457.4 53zM38.1 216.8l205.8 83.6 83.6 205.8c5.3 13.1 18.1 21.7 32.3 21.7 14.7 0 27.8-9.2 32.8-23.1L570.6 8c3.5-9.8 1-20.6-6.3-28s-18.2-9.8-28-6.3L39.4 151.7c-13.9 5-23.1 18.1-23.1 32.8 0 14.2 8.6 27 21.7 32.3z',\n\t\twidth: 576,\n\t},\n\tpen: {\n\t\taliases: ['edit', 'write', 'modify'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M36.4 353.8c4.1-14.6 11.8-27.9 22.6-38.7l294-294C366.4 7.6 384.8 0 404 0s37.6 7.6 51.1 21.2l35.7 35.7C504.4 70.4 512 88.8 512 108s-7.6 37.6-21.2 51.1l-294 294c-10.7 10.7-24.1 18.5-38.7 22.6L30.4 511.1c-8.3 2.3-17.3 0-23.4-6.2s-8.5-15.1-6.2-23.4L36.4 353.8zM386.8 55.1l-52.9 52.9 70.1 70.1 52.9-52.9c4.6-4.6 7.1-10.7 7.1-17.2s-2.6-12.6-7.1-17.2L421.2 55.1C416.6 50.6 410.4 48 404 48s-12.6 2.6-17.2 7.1zM300 141.9L92.9 349.1c-4.9 4.9-8.4 10.9-10.3 17.6l-24.1 86.9 86.9-24.1c6.6-1.8 12.7-5.4 17.6-10.3L370.1 212 300 141.9z',\n\t\twidth: 512,\n\t},\n\tpenField: {\n\t\taliases: ['edit field', 'inline edit'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M569.3 27.1c-9.4-9.4-24.7-9.4-34.1 .1L514.4 48.4 560.1 94.1 581.2 73c9.4-9.4 9.4-24.6 0-33.9L569.3 27.1zM360 204.8c-3.2 3.3-5.5 7.4-6.4 11.9l-10.4 49.7 49.5-10.4c4.6-1 8.7-3.2 12-6.5L526.2 128 480.7 82.5 360 204.8zM501.1-6.5c28.1-28.4 73.9-28.6 102.2-.3L615.2 5.1c28.1 28.1 28.1 73.7 0 101.8L438.7 283.5c-9.9 9.9-22.4 16.7-36.1 19.6L317.1 321c-7.9 1.7-16.2-.8-21.9-6.5s-8.2-14-6.5-21.9l18-85.7c2.8-13.5 9.5-26 19.2-35.8L501.1-6.5zM64.1 168c0-39.8 32.2-72 72-72l128 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-128 0c-13.3 0-24 10.7-24 24l0 240c0 13.3 10.7 24 24 24l368 0c13.3 0 24-10.7 24-24l0-128c0-13.3 10.7-24 24-24s24 10.7 24 24l0 128c0 39.8-32.2 72-72 72l-368 0c-39.8 0-72-32.2-72-72l0-240zm112 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z',\n\t\twidth: 640,\n\t},\n\tphone: {\n\t\taliases: ['call', 'telephone', 'contact'],\n\t\tcategories: ['communication'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M112.8 10.9c27.3-9.1 57 3.9 68.9 30l39.7 87.3c10.6 23.4 4 51-16 67.1l-24.2 19.3c25.5 50 65.5 91.4 114.4 118.8l21.2-26.6c16.1-20.1 43.7-26.7 67.1-16l87.3 39.7c26.2 11.9 39.1 41.6 30 68.9-20.7 62.3-83.7 116.2-160.9 102.6-173.7-30.6-299.6-156.5-330.2-330.2-13.6-77.2 40.4-140.1 102.6-160.9zm25.2 49.9c-1.7-3.8-6-5.7-10-4.4-45.2 15.1-79.1 58.6-70.5 107 27.1 153.8 137.4 264.2 291.2 291.3 48.4 8.5 91.9-25.3 107-70.5 1.3-4-.6-8.3-4.4-10L364 334.4c-3.4-1.5-7.4-.6-9.7 2.3l-33.5 41.9c-7 8.7-19 11.5-29 6.7-72.5-34.4-130.5-94.3-162.4-168.2-4.3-9.9-1.4-21.5 7-28.2l38.9-31.1c2.9-2.3 3.9-6.3 2.3-9.7L137.9 60.7z',\n\t\twidth: 512,\n\t},\n\tplay: {\n\t\taliases: ['start', 'video', 'begin'],\n\t\tcategories: ['actions', 'media'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M51.6 37.6C39.5 44.8 32 57.9 32 72l0 368c0 14.1 7.5 27.2 19.6 34.4s27.2 7.5 39.6 .7l336-184c12.8-7 20.8-20.5 20.8-35.1s-8-28.1-20.8-35.1l-336-184c-12.4-6.8-27.4-6.5-39.6 .7zM80 426.5L80 85.5 391.3 256 80 426.5z',\n\t\twidth: 448,\n\t},\n\tplus: {\n\t\taliases: ['add', 'create', 'new'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M248 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 176-176 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0 0 176c0 13.3 10.7 24 24 24s24-10.7 24-24l0-176 176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0 0-176z',\n\t\twidth: 448,\n\t},\n\tquestion: {\n\t\taliases: ['help', 'unknown'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M48 160C48 98.1 98.1 48 160 48S272 98.1 272 160c0 48.2-30.5 89.4-73.3 105.1-29.4 10.8-62.7 37.9-62.7 78.9l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-12.1 11-26.3 31.3-33.8 61.1-22.5 104.7-81.2 104.7-150.2 0-88.4-71.6-160-160-160S0 71.6 0 160l0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8zM160 512c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z',\n\t\twidth: 320,\n\t},\n\tquotesLeft: {\n\t\taliases: ['quote', 'blockquote'],\n\t\tcategories: ['custom', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M232.896 226.425C228.749 226.425 225.964 231.118 227.632 235.301L286.746 413.714L116.988 224.541C113.406 220.543 102.507 208.132 99.9534 203.926L11.645 108.127C9.0914 103.92 11.8346 98.2854 16.4278 98.2854H227.018C227.811 98.2854 228.592 98.3754 229.349 98.5481C229.87 98.3779 230.428 98.2854 231.017 98.2854H441.605C446.22 98.2854 450.387 101.323 452.187 106.003L495.176 217.627C496.786 221.801 494.005 226.425 489.888 226.425H447.484C443.338 226.425 440.551 231.118 442.221 235.301L501.333 413.714L331.576 224.541C327.995 220.543 317.095 208.132 314.542 203.926L247.159 130.829L280.589 217.627C282.198 221.801 279.418 226.425 275.3 226.425H232.896Z',\n\t\twidth: 512,\n\t},\n\tquotesRight: {\n\t\taliases: ['quote', 'blockquote'],\n\t\tcategories: ['custom', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M289.771 226.425C293.918 226.425 296.703 231.118 295.035 235.301L235.921 413.714L405.679 224.541C409.261 220.543 420.16 208.132 422.713 203.926L511.022 108.127C513.575 103.92 510.832 98.2854 506.239 98.2854H295.649C294.855 98.2854 294.075 98.3754 293.317 98.5481C292.797 98.3779 292.239 98.2854 291.65 98.2854H81.0613C76.4469 98.2854 72.2795 101.323 70.48 106.003L27.4902 217.627C25.8806 221.801 28.6614 226.425 32.7787 226.425H75.183C79.3291 226.425 82.1152 231.118 80.4459 235.301L21.3334 413.714L191.09 224.541C194.672 220.543 205.571 208.132 208.125 203.926L275.507 130.829L242.078 217.627C240.468 221.801 243.249 226.425 247.366 226.425H289.771Z',\n\t\twidth: 512,\n\t},\n\trectangleList: {\n\t\taliases: ['list view', 'list'],\n\t\tcategories: ['documents', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 112c-8.8 0-16 7.2-16 16l0 256c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16L64 112zM0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM160 320a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-32-96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm104-56l160 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 128l160 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z',\n\t\twidth: 512,\n\t},\n\treply: {\n\t\taliases: ['respond', 'answer'],\n\t\tcategories: ['actions', 'communication'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M176 128l0 24c0 13.3 10.7 24 24 24l136 0c70.7 0 128 57.3 128 128 0 15.3-1.9 29.1-5.2 41.5-16.8-60.9-72.6-105.5-138.8-105.5l-120 0c-13.3 0-24 10.7-24 24L176 329.4 54.6 208 176 86.6 176 128zm80 160l64 0c53 0 96 43 96 96 0 17.3-4.2 30.5-9.5 40.2-1.6 2.9-3.3 5.5-5 7.9-2.6 3.5-5.3 6.4-7.7 8.6-.5 .5-1 .9-1.4 1.4-4.8 4.9-8.3 11.3-8.3 18.1 0 10.9 8.8 19.7 19.7 19.7 2.8 0 5.6-.6 8.1-1.9 2.6-1.4 6.3-3.5 10.8-6.5 2.7-1.8 5.7-3.8 8.9-6.2 3.7-2.7 7.6-5.8 11.7-9.3 30.2-25.8 68.7-74.1 68.7-152.1 0-97.2-78.8-176-176-176l-112 0 0-80c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c9.2 9.2 22.9 11.9 34.9 6.9S224 380.9 224 368l0-80 32 0z',\n\t\twidth: 512,\n\t},\n\trobot: {\n\t\taliases: ['bot', 'automation', 'ai'],\n\t\tcategories: ['development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M344-8c0-13.3-10.7-24-24-24S296-21.3 296-8l0 72-104 0c-53 0-96 43-96 96l0 224c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-224c0-53-43-96-96-96l-104 0 0-72zM320 112l128 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48l0-224c0-26.5 21.5-48 48-48l128 0zM176 360c0 13.3 10.7 24 24 24l32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0c-13.3 0-24 10.7-24 24zm112 0c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0c-13.3 0-24 10.7-24 24zm96 0c0 13.3 10.7 24 24 24l32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0c-13.3 0-24 10.7-24 24zM240 288a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm208-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 216c0-13.3-10.7-24-24-24S0 202.7 0 216L0 328c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112zm568-24c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24z',\n\t\twidth: 640,\n\t},\n\trocketLaunch: {\n\t\taliases: ['launch', 'deploy', 'go live'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M511.9 19.3c-1.9-9.5-9.3-16.9-18.8-18.8-45-9-114-14.7-180.7 19.7-40 20.7-77.3 54.8-107.7 107.8l-81.1 0c-16.9 0-32.5 8.8-41.2 23.3L29.5 239.5C16.7 260.9 32.1 288 56.9 288l103.5 0c35.3 0 64 28.7 64 64l0 103.5c0 24.9 27.1 40.2 48.5 27.4L361.1 430c14.5-8.7 23.3-24.3 23.3-41.2l0-81.1c53.1-30.4 87.2-67.7 107.8-107.7 34.4-66.7 28.7-135.7 19.7-180.7zM336.4 331.1l0 57.8-64 38.4 0-74.5c23.3-6.4 44.6-13.6 64-21.6zm-74-25.4c-11.2-24.6-31-44.5-55.7-55.7 30.6-109.9 79.9-162.5 127.7-187.2 45.9-23.7 94.6-23.8 133.2-18.1 5.8 38.6 5.6 87.3-18.1 133.2-24.7 47.8-77.3 97.1-187.2 127.7zM159.7 240l-74.5 0 38.4-64 57.8 0c-8 19.4-15.2 40.7-21.6 64zm248.7-96a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM152.8 473.6c31.5-31.5 31.5-82.5 0-114s-82.5-31.5-114 0c-31.3 31.3-37.5 92-38.3 126.4-.4 14.6 11.2 26.2 25.9 25.9 34.5-.8 95.1-7 126.4-38.3zm-40.6-32c-10.1 10.1-28.5 13-41.3 13.7-8 .5-14.3-5.9-13.9-13.9 .7-12.8 3.7-31.2 13.7-41.3 11.4-11.4 30-11.4 41.4 0s11.4 30 0 41.4z',\n\t\twidth: 512,\n\t},\n\trotate: {\n\t\taliases: ['refresh', 'reload', 'sync'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M512.2 24c0-9.7-5.8-18.5-14.8-22.2S478.1 .2 471.2 7L419.4 58.8C318.8-24.7 169.3-19.3 75.1 75 31.9 118.2 7.3 173.1 1.5 229.5 .1 242.7 9.7 254.5 22.9 255.9s25-8.2 26.3-21.4c4.7-45.9 24.7-90.4 59.8-125.5 75.5-75.5 194.6-80.8 276.2-16L335.1 143c-6.9 6.9-8.9 17.2-5.2 26.2S342.4 184 352.1 184l136.1 0c13.3 0 24-10.7 24-24l0-136zm-75.1 85l27.1-27.1 0 54.1-54.1 0 27-27zm73.6 173.6c1.4-13.2-8.2-25-21.4-26.3s-25 8.2-26.3 21.4c-4.7 45.8-24.7 90.4-59.8 125.5-75.5 75.5-194.6 80.8-276.2 16L177.1 369c6.9-6.9 8.9-17.2 5.2-26.2S169.8 328 160.1 328L24 328c-13.3 0-24 10.7-24 24L0 488c0 9.7 5.8 18.5 14.8 22.2S34.1 511.8 41 505l51.8-51.8c100.6 83.5 250.1 78.1 344.3-16.2 43.2-43.2 67.8-98.1 73.6-154.5zM48 430.1l0-54.1 54.1 0-54.1 54.1z',\n\t\twidth: 512,\n\t},\n\trotateClock: {\n\t\taliases: ['history', 'recent', 'time machine'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M48 106.7L48 56c0-13.3-10.7-24-24-24S0 42.7 0 56L0 168c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-55.3 0c37-57.8 101.7-96 175.3-96 114.9 0 208 93.1 208 208S370.9 464 256 464c-42.5 0-81.9-12.7-114.7-34.5-11-7.3-25.9-4.3-33.3 6.7s-4.3 25.9 6.7 33.3c40.5 26.8 89.1 42.5 141.3 42.5 141.4 0 256-114.6 256-256S397.4 0 256 0C170.3 0 94.4 42.1 48 106.7zM256 128c-13.3 0-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1c0-13.3-10.7-24-24-24z',\n\t\twidth: 512,\n\t},\n\trotateLeft: {\n\t\taliases: ['undo', 'revert'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M14.8 1.8C23.8-1.9 34.1 .2 41 7L92.8 58.8c100.6-83.5 250.1-78.1 344.3 16.2 100 100 100 262.1 0 362s-262.1 100-362 0c-14.9-14.9-27.6-31.2-38.1-48.5-6.9-11.3-3.2-26.1 8.1-33s26.1-3.2 33 8.1c8.5 14 18.8 27.3 31 39.4 81.2 81.2 212.9 81.2 294.2 0s81.2-212.9 0-294.2c-75.5-75.5-194.6-80.8-276.2-16L177.1 143c6.9 6.9 8.9 17.2 5.2 26.2S169.8 184 160.1 184L24 184c-13.3 0-24-10.7-24-24L0 24C0 14.3 5.8 5.5 14.8 1.8zM48 81.9l0 54.1 54.1 0-54.1-54.1z',\n\t\twidth: 512,\n\t},\n\trotateRight: {\n\t\taliases: ['redo', 'repeat'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M497.4 1.8c-9-3.7-19.3-1.7-26.2 5.2L419.4 58.8C318.8-24.7 169.3-19.3 75.1 75-24.9 175-24.9 337 75.1 437s262.1 100 362 0c14.9-14.9 27.6-31.2 38.1-48.5 6.9-11.3 3.2-26.1-8.1-33s-26.1-3.2-33 8.1c-8.5 14-18.8 27.3-31 39.4-81.2 81.2-212.9 81.2-294.2 0s-81.2-212.9 0-294.2c75.5-75.5 194.6-80.8 276.2-16L335.1 143c-6.9 6.9-8.9 17.2-5.2 26.2S342.4 184 352.1 184l136.1 0c13.3 0 24-10.7 24-24l0-136c0-9.7-5.8-18.5-14.8-22.2zM464.2 81.9l0 54.1-54.1 0 54.1-54.1z',\n\t\twidth: 512,\n\t},\n\trss: {\n\t\taliases: ['feed', 'subscribe'],\n\t\tcategories: ['communication'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 160c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32z',\n\t\twidth: 448,\n\t},\n\tsave: {\n\t\taliases: ['floppy disk', 'persist', 'store'],\n\t\tcategories: ['actions', 'development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-242.7c0-4.2-1.7-8.3-4.7-11.3L320 86.6 320 176c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-96-32 0zm80 0l0 80 128 0 0-80-128 0zM0 96C0 60.7 28.7 32 64 32l242.7 0c17 0 33.3 6.7 45.3 18.7L429.3 128c12 12 18.7 28.3 18.7 45.3L448 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM160 320a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z',\n\t\twidth: 448,\n\t},\n\tserver: {\n\t\taliases: ['hosting', 'backend', 'infrastructure'],\n\t\tcategories: ['development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 80c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96zm264 8a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 336c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16L64 336zM0 352c0-35.3 28.7-64 64-64l320 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64zm240 32a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z',\n\t\twidth: 448,\n\t},\n\tshareNodes: {\n\t\taliases: ['share', 'distribute', 'network'],\n\t\tcategories: ['actions', 'communication'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M432 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm48 0c0 53-43 96-96 96-27.4 0-52.1-11.5-69.6-29.9L188.9 231.8c2 7.7 3.1 15.8 3.1 24.2s-1.1 16.5-3.1 24.2l125.5 69.7c17.5-18.4 42.2-29.9 69.6-29.9 53 0 96 43 96 96s-43 96-96 96-96-43-96-96c0-8.3 1.1-16.5 3.1-24.2L165.6 322.1C148.1 340.5 123.4 352 96 352 43 352 0 309 0 256s43-96 96-96c27.4 0 52.1 11.5 69.6 29.9l125.5-69.7c-2-7.7-3.1-15.8-3.1-24.2 0-53 43-96 96-96s96 43 96 96zM144 256a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM384 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96z',\n\t\twidth: 512,\n\t},\n\tshield: {\n\t\taliases: ['security', 'protection', 'safe'],\n\t\tcategories: ['objects', 'security', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256 49.4L73.1 127c-5.9 2.5-9.1 7.8-9 12.8 .5 91.4 38.4 249.3 186.4 320.1 3.6 1.7 7.8 1.7 11.3 0 148-70.8 185.9-228.7 186.3-320.1 0-5-3.1-10.2-9-12.8L256 49.4zM269.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.2-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0s9.2 1 13.4 2.9z',\n\t\twidth: 512,\n\t},\n\tshieldQuartered: {\n\t\taliases: ['security sections', 'protection'],\n\t\tcategories: ['objects', 'security'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M73.1 127c-5.9 2.5-9.1 7.8-9 12.8 .1 17.9 1.6 38.4 5.1 60.3l162.9 0 0-140.4-159 67.4zm6.7 121c20.9 73.9 65.9 153.7 152.3 202.3l0-202.3-152.3 0zM280 248l0 202.4C366.5 401.8 411.4 322 432.3 248L280 248zm162.9-48c3.5-21.9 5-42.3 5.1-60.3 0-5-3.1-10.2-9-12.8l-159-67.4 0 140.4 162.9 0zM269.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.2-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0s9.2 1 13.4 2.9z',\n\t\twidth: 512,\n\t},\n\tshovel: {\n\t\taliases: ['dig', 'build'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M431-17c9.4-9.4 24.6-9.4 33.9 0l96 96c9.4 9.4 9.4 24.6 0 33.9l-44.1 44.1c-17.2 17.2-40.6 26.9-65 26.9-16.7 0-32.3-4.4-45.8-12.2L273 305 318.1 350.1c18.7 18.7 18.7 49.1 0 67.9l-84.8 84.8C206.8 529.2 171 544 133.7 544 59.9 544 0 484.1 0 410.3 0 373 14.8 337.2 41.2 310.8l84.8-84.8c18.7-18.7 49.1-18.7 67.9 0L239 271 372.2 137.9c-7.8-13.5-12.2-29.1-12.2-45.8 0-24.4 9.7-47.7 26.9-65L431-17zm17 50.9L420.9 61.1c-8.2 8.2-12.9 19.4-12.9 31 0 24.2 19.6 43.9 43.9 43.9 11.6 0 22.8-4.6 31-12.9L510.1 96 448 33.9zM75.2 344.7c-17.4 17.4-27.2 41-27.2 65.6 0 47.3 38.4 85.7 85.7 85.7 24.6 0 48.2-9.8 65.6-27.2L284.1 384 160 259.9 75.2 344.7z',\n\t\twidth: 576,\n\t},\n\tsiren: {\n\t\taliases: ['emergency', 'alert', 'alarm'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M147.5 320l12.6-138.2c1.2-13.2 12.9-22.9 26.1-21.7s22.9 12.9 21.7 26.1L195.7 320 358.8 320 328 93.8c-1.1-7.9-7.8-13.8-15.9-13.8L135.9 80c-8 0-14.8 5.9-15.9 13.8L89.2 320 147.5 320zm228-232.6l31.8 233.2c23 3.5 40.6 23.4 40.6 47.4l0 64c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-64c0-24 17.6-43.9 40.7-47.4L72.5 87.4C76.8 55.6 103.9 32 135.9 32l176.3 0c32 0 59.1 23.6 63.4 55.4zM400 368l-352 0 0 64 352 0 0-64z',\n\t\twidth: 448,\n\t},\n\tsirenOn: {\n\t\taliases: ['emergency active', 'alert active', 'alarm on'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M69.3 36c-11-7.4-25.9-4.4-33.3 6.7S31.7 68.6 42.7 76l48 32c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3l-48-32zM597.3 76c11-7.4 14-22.3 6.7-33.3s-22.3-14-33.3-6.7l-48 32c-11 7.4-14 22.3-6.7 33.3s22.3 14 33.3 6.7l48-32zM24 192c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0zm528 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0zM185.2 320L216 93.8c1.1-7.9 7.9-13.8 15.9-13.8l176.3 0c8 0 14.8 5.9 15.9 13.8l30.8 226.2-163.1 0 12.2-133.8c1.2-13.2-8.5-24.9-21.7-26.1s-24.9 8.5-26.1 21.7l-12.6 138.2-58.4 0zm318.2 .6L471.5 87.4C467.2 55.6 440.1 32 408.1 32L231.9 32c-32 0-59.1 23.6-63.4 55.4L136.7 320.6C113.6 324.1 96 344 96 368l0 64c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-64c0-24-17.6-43.9-40.6-47.4zM144 368l352 0 0 64-352 0 0-64z',\n\t\twidth: 640,\n\t},\n\tsitemap: {\n\t\taliases: ['structure', 'hierarchy', 'tree'],\n\t\tcategories: ['development', 'navigation'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M240 80l32 0 0 32-32 0 0-32zM224 32c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l8 0 0 64-120 0c-39.8 0-72 32.2-72 72l0 56-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-56c0-13.3 10.7-24 24-24l120 0 0 80-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-80 120 0c13.3 0 24 10.7 24 24l0 56-8 0c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-8 0 0-56c0-39.8-32.2-72-72-72l-120 0 0-64 8 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM48 432l0-32 32 0 0 32-32 0zm192 0l0-32 32 0 0 32-32 0zm192 0l0-32 32 0 0 32-32 0z',\n\t\twidth: 512,\n\t},\n\tslack: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M94.1 315.1c0 25.9-21.2 47.1-47.1 47.1S0 341 0 315.1 21.2 268 47.1 268l47.1 0 0 47.1zm23.7 0c0-25.9 21.2-47.1 47.1-47.1S212 289.2 212 315.1l0 117.8c0 25.9-21.2 47.1-47.1 47.1s-47.1-21.2-47.1-47.1l0-117.8zm47.1-189c-25.9 0-47.1-21.2-47.1-47.1S139 32 164.9 32 212 53.2 212 79.1l0 47.1-47.1 0zm0 23.7c25.9 0 47.1 21.2 47.1 47.1S190.8 244 164.9 244L47.1 244C21.2 244 0 222.8 0 196.9s21.2-47.1 47.1-47.1l117.8 0zm189 47.1c0-25.9 21.2-47.1 47.1-47.1S448 171 448 196.9 426.8 244 400.9 244l-47.1 0 0-47.1zm-23.7 0c0 25.9-21.2 47.1-47.1 47.1S236 222.8 236 196.9l0-117.8C236 53.2 257.2 32 283.1 32s47.1 21.2 47.1 47.1l0 117.8zm-47.1 189c25.9 0 47.1 21.2 47.1 47.1S309 480 283.1 480 236 458.8 236 432.9l0-47.1 47.1 0zm0-23.7c-25.9 0-47.1-21.2-47.1-47.1S257.2 268 283.1 268l117.8 0c25.9 0 47.1 21.2 47.1 47.1s-21.2 47.1-47.1 47.1l-117.8 0z',\n\t\twidth: 448,\n\t},\n\tslashForward: {\n\t\taliases: ['divider', 'separator'],\n\t\tcategories: ['development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M308.1 3.3c11.4 6.7 15.3 21.4 8.6 32.8l-272 464c-6.7 11.4-21.4 15.3-32.8 8.6s-15.3-21.4-8.6-32.8l272-464C282 .4 296.7-3.4 308.1 3.3z',\n\t\twidth: 320,\n\t},\n\tslidersSimple: {\n\t\taliases: ['controls', 'adjustments', 'tune'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M80 400a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm76.3-56c-10.2-32.5-40.5-56-76.3-56-44.2 0-80 35.8-80 80s35.8 80 80 80c35.8 0 66.1-23.5 76.3-56L488 392c13.3 0 24-10.7 24-24s-10.7-24-24-24l-331.7 0zM464 144a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM355.7 120L24 120c-13.3 0-24 10.7-24 24s10.7 24 24 24l331.7 0c10.2 32.5 40.5 56 76.3 56 44.2 0 80-35.8 80-80s-35.8-80-80-80c-35.8 0-66.1 23.5-76.3 56z',\n\t\twidth: 512,\n\t},\n\tsnowflake: {\n\t\taliases: ['freeze', 'frozen', 'cold'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M280.1-8c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 78.1-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l57 57 0 76.5-66.2-38.2-20.9-77.8c-3.4-12.8-16.6-20.4-29.4-17S95.2 98 98.7 110.8l8.4 31.5-67.6-39C28 96.6 13.3 100.5 6.7 112S4 138.2 15.5 144.8l67.6 39-31.5 8.4c-12.8 3.4-20.4 16.6-17 29.4s16.6 20.4 29.4 17l77.8-20.9 66.2 38.2-66.2 38.2-77.8-20.9c-12.8-3.4-26 4.2-29.4 17s4.2 26 17 29.4l31.5 8.4-67.6 39C4 373.8 .1 388.5 6.7 400s21.3 15.4 32.8 8.8l67.6-39-8.4 31.5c-3.4 12.8 4.2 26 17 29.4s26-4.2 29.4-17l20.9-77.8 66.2-38.2 0 76.5-57 57c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l23-23 0 78.1c0 13.3 10.7 24 24 24s24-10.7 24-24l0-78.1 23 23c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-57-57 0-76.5 66.2 38.2 20.9 77.8c3.4 12.8 16.6 20.4 29.4 17s20.4-16.6 17-29.4l-8.4-31.5 67.6 39c11.5 6.6 26.2 2.7 32.8-8.8s2.7-26.2-8.8-32.8l-67.6-39 31.5-8.4c12.8-3.4 20.4-16.6 17-29.4s-16.6-20.4-29.4-17l-77.8 20.9-66.2-38.2 66.2-38.2 77.8 20.9c12.8 3.4 26-4.2 29.4-17s-4.2-26-17-29.4l-31.5-8.4 67.6-39c11.5-6.6 15.4-21.3 8.8-32.8s-21.3-15.4-32.8-8.8l-67.6 39 8.4-31.5c3.4-12.8-4.2-26-17-29.4s-26 4.2-29.4 17l-20.9 77.8-66.2 38.2 0-76.5 57-57c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23 0-78.1z',\n\t\twidth: 512,\n\t},\n\tsparkles: {\n\t\taliases: ['ai', 'magic', 'new', 'highlight'],\n\t\tcategories: ['actions', 'development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M391.5 53.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L448 96 469.2 152.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L512 96 568.5 74.8c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L512 32 490.8-24.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L448 32 391.5 53.2zM167.9 208.5l24.1-52.1 24.1 52.1c4.8 10.4 13.1 18.7 23.5 23.5l52.1 24.1-52.1 24.1c-10.4 4.8-18.7 13.1-23.5 23.5l-24.1 52.1-24.1-52.1c-4.8-10.4-13.1-18.7-23.5-23.5L92.3 256 144.5 231.9c10.4-4.8 18.7-13.1 23.5-23.5zM165.6 99.1l-41.2 89.3-89.3 41.2-.6 .3c-3.9 1.8-12.3 5.7-25.2 11.6-5.7 2.6-9.3 8.3-9.3 14.5s3.6 11.9 9.3 14.5c12.9 5.9 21.2 9.8 25.2 11.6l.6 .3 89.3 41.2 41.2 89.3 .3 .6c1.8 3.9 5.7 12.3 11.6 25.2 2.6 5.7 8.3 9.3 14.5 9.3s11.9-3.6 14.5-9.3c14.4-31.1 15.1-32.7 53.1-115l89.3-41.2 .6-.3c3.9-1.8 12.3-5.7 25.2-11.6 5.7-2.6 9.3-8.3 9.3-14.5s-3.6-11.9-9.3-14.5c-31.1-14.4-32.7-15.1-115-53.1l-41.2-89.3-.3-.6c-1.8-3.9-5.7-12.3-11.6-25.2-2.6-5.7-8.3-9.3-14.5-9.3s-11.9 3.6-14.5 9.3c-13.8 29.8-11.5 25-11.9 25.8zM416 416l-56.5 21.2c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 480 437.2 536.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 480 536.5 458.8c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 416 458.8 359.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 416z',\n\t\twidth: 576,\n\t},\n\tsquareCheck: {\n\t\taliases: ['checkbox', 'checked', 'selected'],\n\t\tcategories: ['actions', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zm230.7 89.9c7.8-10.7 22.8-13.1 33.5-5.3 10.7 7.8 13.1 22.8 5.3 33.5L211.4 366.1c-4.1 5.7-10.5 9.3-17.5 9.8-7 .5-13.9-2-18.8-6.9l-55.9-55.9c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l36 36 105.6-145.2z',\n\t\twidth: 448,\n\t},\n\tsquareCode: {\n\t\taliases: ['embed', 'code block'],\n\t\tcategories: ['development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M384 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l320 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM255 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9l-64-64c-9.4-9.4-24.6-9.4-33.9 0zM193 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L95 239c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z',\n\t\twidth: 448,\n\t},\n\tsquareMinus: {\n\t\taliases: ['collapse', 'remove'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM136 232l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z',\n\t\twidth: 448,\n\t},\n\tsquarePen: {\n\t\taliases: ['edit', 'compose', 'write'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm325.8 43.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-23.8 23.8-71-71 23.8-23.8c15.6-15.6 40.9-15.6 56.6 0zM119.9 289l91.5-91.6 71 71-91.6 91.5c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z',\n\t\twidth: 448,\n\t},\n\tsquareQuestion: {\n\t\taliases: ['help', 'unknown'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm224 88c-16.1 0-29.2 13.1-29.2 29.2 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-42.6 34.6-77.2 77.2-77.2s77.2 34.6 77.2 77.2c0 45.5-34.5 64.7-53.7 71.8-2.3 10.8-11.9 19-23.5 19-13.3 0-24-10.7-24-24 0-20.2 14.6-34.6 29.5-39.5 6-2 12.3-5.1 16.8-9.5 3.9-3.8 6.9-9 6.9-17.7 0-16.1-13.1-29.2-29.2-29.2zM196 352a28 28 0 1 1 56 0 28 28 0 1 1 -56 0z',\n\t\twidth: 448,\n\t},\n\tsquareTerminal: {\n\t\taliases: ['cli', 'console', 'command line'],\n\t\tcategories: ['development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M384 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l320 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm39 127c-9.4 9.4-9.4 24.6 0 33.9l63 63-63 63c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0zM216 336c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0z',\n\t\twidth: 448,\n\t},\n\tstar: {\n\t\taliases: ['favorite', 'rating', 'bookmark'],\n\t\tcategories: ['actions', 'objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M288.1-32c9 0 17.3 5.1 21.4 13.1L383 125.3 542.9 150.7c8.9 1.4 16.3 7.7 19.1 16.3s.5 18-5.8 24.4L441.7 305.9 467 465.8c1.4 8.9-2.3 17.9-9.6 23.2s-17 6.1-25 2L288.1 417.6 143.8 491c-8 4.1-17.7 3.3-25-2s-11-14.2-9.6-23.2L134.4 305.9 20 191.4c-6.4-6.4-8.6-15.8-5.8-24.4s10.1-14.9 19.1-16.3l159.9-25.4 73.6-144.2c4.1-8 12.4-13.1 21.4-13.1zm0 76.8L230.3 158c-3.5 6.8-10 11.6-17.6 12.8l-125.5 20 89.8 89.9c5.4 5.4 7.9 13.1 6.7 20.7l-19.8 125.5 113.3-57.6c6.8-3.5 14.9-3.5 21.8 0l113.3 57.6-19.8-125.5c-1.2-7.6 1.3-15.3 6.7-20.7l89.8-89.9-125.5-20c-7.6-1.2-14.1-6-17.6-12.8L288.1 44.8z',\n\t\twidth: 576,\n\t},\n\tstarSolid: {\n\t\taliases: ['favorited', 'rated', 'bookmarked'],\n\t\tcategories: ['actions', 'objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M309.5-18.9c-4.1-8-12.4-13.1-21.4-13.1s-17.3 5.1-21.4 13.1L193.1 125.3 33.2 150.7c-8.9 1.4-16.3 7.7-19.1 16.3s-.5 18 5.8 24.4l114.4 114.5-25.2 159.9c-1.4 8.9 2.3 17.9 9.6 23.2s16.9 6.1 25 2L288.1 417.6 432.4 491c8 4.1 17.7 3.3 25-2s11-14.2 9.6-23.2L441.7 305.9 556.1 191.4c6.4-6.4 8.6-15.8 5.8-24.4s-10.1-14.9-19.1-16.3L383 125.3 309.5-18.9z',\n\t\twidth: 576,\n\t},\n\tsun: {\n\t\taliases: ['light mode', 'day', 'brightness'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M288-32c8 0 15.4 4 19.9 10.6l58.8 87.4 103.4-20.2c7.8-1.5 15.9 .9 21.6 6.6s8.1 13.8 6.6 21.6L478 177.3 565.4 236.1C572 240.5 576 248 576 256s-4 15.4-10.6 19.9L478 334.7 498.2 438c1.5 7.8-.9 15.9-6.6 21.6s-13.8 8.1-21.6 6.6L366.7 446 307.9 533.4C303.4 540 296 544 288 544s-15.4-4-19.9-10.6L209.3 446 105.9 466.2c-7.8 1.5-15.9-.9-21.6-6.6s-8.1-13.8-6.6-21.6L98 334.7 10.6 275.9C4 271.4 0 264 0 256s4-15.4 10.6-19.9L98 177.3 77.8 73.9c-1.5-7.8 .9-15.9 6.6-21.6s13.8-8.1 21.6-6.6l103.3 20.2 58.8-87.4 1.8-2.3C274.4-29 281-32 288-32zm-47.8 138c-5.4 8-15 12-24.5 10.2l-84-16.4 16.4 84c1.8 9.5-2.2 19.1-10.2 24.5L67 256 138 303.8c8 5.4 12 15 10.2 24.5l-16.4 84 84-16.4 3.5-.4c8.3-.4 16.3 3.6 21 10.6l47.8 71 47.8-71 2.2-2.8c5.6-6.1 14-9 22.3-7.3l84 16.4-16.4-84c-1.8-9.5 2.2-19.1 10.2-24.5l71-47.8-71-47.8c-8-5.4-12-15-10.2-24.5l16.4-84-84 16.4c-9.5 1.8-19.1-2.2-24.5-10.2l-47.8-71-47.8 71zM288 376a120 120 0 1 1 0-240 120 120 0 1 1 0 240zm0-192a72 72 0 1 0 0 144 72 72 0 1 0 0-144z',\n\t\twidth: 576,\n\t},\n\tsunBright: {\n\t\taliases: ['bright', 'light', 'sunny'],\n\t\tcategories: ['objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M288 432c13.3 0 24 10.7 24 24l0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-64c0-13.3 10.7-24 24-24zM129.6 380.4c9.4-9.4 24.6-9.4 34 0s9.4 24.6 0 34l-45.3 45.3c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l45.2-45.3zm282.8 0c9.4-9.4 24.6-9.4 34 0l45.3 45.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-45.3-45.3c-9.4-9.4-9.4-24.6 0-34zM288 384a128 128 0 1 1 0-256 128 128 0 1 1 0 256zm0-208a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM88 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0zm464 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0zM84.3 52.3c9.4-9.4 24.6-9.4 33.9 0l45.3 45.2c9.4 9.4 9.4 24.6 0 34s-24.6 9.4-34 0L84.3 86.3c-9.4-9.4-9.4-24.6 0-33.9zm373.4 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-45.3 45.3c-9.4 9.4-24.6 9.4-34 0s-9.4-24.6 0-34l45.3-45.2zM288-32c13.3 0 24 10.7 24 24l0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-64c0-13.3 10.7-24 24-24z',\n\t\twidth: 576,\n\t},\n\ttable: {\n\t\taliases: ['spreadsheet', 'data grid'],\n\t\tcategories: ['data'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64l-320 0-6.5-.3C25.2 476.4 0 449.1 0 416L0 96C0 60.7 28.7 32 64 32l320 0zM48 312l0 104c0 8.8 7.2 16 16 16l136 0 0-120-152 0zm200 0l0 120 136 0c8.8 0 16-7.2 16-16l0-104-152 0zM48 264l152 0 0-104-152 0 0 104zm200 0l152 0 0-104-152 0 0 104z',\n\t\twidth: 448,\n\t},\n\ttableRows: {\n\t\taliases: ['rows', 'list', 'data rows'],\n\t\tcategories: ['data'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M384 432l-256 0 0-152 272 0 0 136c0 8.8-7.2 16-16 16zm16-200l-272 0 0-152 256 0c8.8 0 16 7.2 16 16l0 136zM0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416z',\n\t\twidth: 448,\n\t},\n\tterminal: {\n\t\taliases: ['cli', 'console', 'shell', 'command line'],\n\t\tcategories: ['actions', 'development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M7 105C-2.3 95.6-2.3 80.4 7 71S31.6 61.7 41 71L209 239c9.4 9.4 9.4 24.6 0 33.9L41 441c-9.4 9.4-24.6 9.4-33.9 0S-2.3 416.4 7 407L158.1 256 7 105zM488 400c13.3 0 24 10.7 24 24s-10.7 24-24 24l-272 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l272 0z',\n\t\twidth: 512,\n\t},\n\ttext: {\n\t\taliases: ['typography', 'font', 'content'],\n\t\tcategories: ['actions', 'development', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M48 136l0-56 120 0 0 352-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-352 120 0 0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-22.1-17.9-40-40-40L40 32C17.9 32 0 49.9 0 72l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24z',\n\t\twidth: 384,\n\t},\n\tthreads: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M331.5 235.7c2.2 .9 4.2 1.9 6.3 2.8 29.2 14.1 50.6 35.2 61.8 61.4 15.7 36.5 17.2 95.8-30.3 143.2-36.2 36.2-80.3 52.5-142.6 53l-.3 0c-70.2-.5-124.1-24.1-160.4-70.2-32.3-41-48.9-98.1-49.5-169.6l0-.5C17 184.3 33.6 127.2 65.9 86.2 102.2 40.1 156.2 16.5 226.4 16l.3 0c70.3 .5 124.9 24 162.3 69.9 18.4 22.7 32 50 40.6 81.7l-40.4 10.8c-7.1-25.8-17.8-47.8-32.2-65.4-29.2-35.8-73-54.2-130.5-54.6-57 .5-100.1 18.8-128.2 54.4-26.2 33.3-39.8 81.5-40.3 143.2 .5 61.7 14.1 109.9 40.3 143.3 28 35.6 71.2 53.9 128.2 54.4 51.4-.4 85.4-12.6 113.7-40.9 32.3-32.2 31.7-71.8 21.4-95.9-6.1-14.2-17.1-26-31.9-34.9-3.7 26.9-11.8 48.3-24.7 64.8-17.1 21.8-41.4 33.6-72.7 35.3-23.6 1.3-46.3-4.4-63.9-16-20.8-13.8-33-34.8-34.3-59.3-2.5-48.3 35.7-83 95.2-86.4 21.1-1.2 40.9-.3 59.2 2.8-2.4-14.8-7.3-26.6-14.6-35.2-10-11.7-25.6-17.7-46.2-17.8l-.7 0c-16.6 0-39 4.6-53.3 26.3l-34.4-23.6c19.2-29.1 50.3-45.1 87.8-45.1l.8 0c62.6 .4 99.9 39.5 103.7 107.7l-.2 .2 .1 0zm-156 68.8c1.3 25.1 28.4 36.8 54.6 35.3 25.6-1.4 54.6-11.4 59.5-73.2-13.2-2.9-27.8-4.4-43.4-4.4-4.8 0-9.6 .1-14.4 .4-42.9 2.4-57.2 23.2-56.2 41.8l-.1 .1z',\n\t\twidth: 448,\n\t},\n\tthumbsDown: {\n\t\taliases: ['dislike', 'reject', 'downvote'],\n\t\tcategories: ['actions', 'objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M360 32l7.4 .4c35 3.6 62.5 32.2 64.4 67.7 17.8 11.8 30.1 31.4 32 53.9l.2 6c0 5.7-.7 11.2-2 16.5 10.2 11.5 16.8 26.3 17.8 42.7l.2 4.8c0 13.2-3.6 25.4-9.8 36 4.9 8.4 8.2 17.9 9.3 28l.4 8c0 37.3-28.3 67.9-64.6 71.6l-7.4 .4-109.7 0 14.1 30 3.1 7.6c12.5 35.7-1.8 75.5-34.2 95l-7.2 3.9c-37.5 17.6-81.7 3.6-102.6-31.2l-.6-.9-2.7-5-.6-1.2-30.1-64c-9.4 17.8-28 29.9-49.5 29.9l-32 0c-30.9 0-56-25.1-56-56L0 152c0-30.9 25.1-56 56-56l32 0c12.4 0 23.9 4.1 33.2 11 13.2-21.4 32-39.4 55-51.6l12.2-6.5 .7-.3 6.6-3.2 .7-.3 7.1-3c16.7-6.6 34.5-9.9 52.6-9.9L360 32zM255.9 80c-12 0-23.9 2.3-35.1 6.6l-4.7 2-5.3 2.6 0 0-12.2 6.5c-29.2 15.5-48.3 44.9-50.7 77.6l-.2 8 0 112.9 .1 4.1c.5 8.2 2.5 16.2 6 23.7l56.8 120.9 2.1 3.8c8.4 13.7 26 19.1 40.8 12.2l2.9-1.6c13-7.8 18.7-23.7 13.7-38l-1.2-3-30.2-64.2c-3.5-7.4-2.9-16.1 1.5-23.1s12-11.1 20.2-11.1l147.5 0 2.4-.1c11.3-1.1 20.3-10.1 21.4-21.4l.1-2.5c0-7.1-3.1-13.5-8.2-18-5.2-4.6-8.2-11.1-8.2-18s3-13.4 8.2-18c4.4-3.9 7.4-9.3 8-15.3l.2-2.7c0-8.4-4.4-15.9-11.2-20.2-10.7-6.9-14.2-20.9-8-32 1.5-2.6 2.5-5.6 2.9-8.6l.2-3.2c0-10.6-6.9-19.6-16.6-22.8-11.7-3.8-18.7-15.9-16-28 .2-.9 .3-1.8 .4-2.6l.2-2.6c0-12.4-9.5-22.6-21.6-23.8L360 80 255.9 80zM56 144c-4.4 0-8 3.6-8 8l0 224c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-224c0-4.4-3.6-8-8-8l-32 0z',\n\t\twidth: 512,\n\t},\n\tthumbsUp: {\n\t\taliases: ['like', 'approve', 'upvote'],\n\t\tcategories: ['actions', 'objects', 'status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M171.5 38.8C192.3 4 236.5-10 274 7.6l7.2 3.8C316 32.3 330 76.5 312.4 114l0 0-14.1 30 109.7 0 7.4 .4c36.3 3.7 64.6 34.4 64.6 71.6 0 13.2-3.6 25.4-9.8 36 6.1 10.6 9.7 22.8 9.8 36 0 18.3-6.9 34.8-18 47.5 1.3 5.3 2 10.8 2 16.5 0 25.1-12.9 47-32.2 59.9-1.9 35.5-29.4 64.2-64.4 67.7l-7.4 .4-104.1 0c-18 0-35.9-3.4-52.6-9.9l-7.1-3-.7-.3-6.6-3.2-.7-.3-12.2-6.5c-12.3-6.5-23.3-14.7-32.9-24.1-4.1 26.9-27.3 47.4-55.3 47.4l-32 0c-30.9 0-56-25.1-56-56L0 200c0-30.9 25.1-56 56-56l32 0c10.8 0 20.9 3.1 29.5 8.5l50.1-106.5 .6-1.2 2.7-5 .6-.9zM56 192c-4.4 0-8 3.6-8 8l0 224c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-224c0-4.4-3.6-8-8-8l-32 0zM253.6 51c-14.8-6.9-32.3-1.6-40.7 12l-2.2 4-56.8 120.9c-3.5 7.5-5.5 15.5-6 23.7l-.1 4.2 0 112.9 .2 7.9c2.4 32.7 21.4 62.1 50.7 77.7l11.5 6.1 6.3 3.1c12.4 5.6 25.8 8.5 39.4 8.5l104.1 0 2.4-.1c12.1-1.2 21.6-11.5 21.6-23.9l-.2-2.6c-.1-.9-.2-1.7-.4-2.6-2.7-12.1 4.3-24.2 16-28 9.7-3.1 16.6-12.2 16.6-22.8 0-4.3-1.1-8.2-3.1-11.8-6.3-11.1-2.8-25.2 8-32 6.8-4.3 11.2-11.8 11.2-20.2 0-7.1-3.1-13.5-8.2-18-5.2-4.6-8.2-11.1-8.2-18s3-13.4 8.2-18c5.1-4.5 8.2-10.9 8.2-18l-.1-2.4c-1.1-11.3-10.1-20.3-21.4-21.4l-2.4-.1-147.5 0c-8.2 0-15.8-4.2-20.2-11.1-4.4-6.9-5-15.7-1.5-23.1L269 93.6c7-15 1.4-32.7-12.5-41L253.6 51z',\n\t\twidth: 512,\n\t},\n\ttrash: {\n\t\taliases: ['delete', 'remove', 'bin', 'discard'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M136.2 4.8c4.7-12.5 16.6-20.8 30-20.8l115.6 0c13.3 0 25.3 8.3 30 20.8L328 48 424 48c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 96C10.7 96 0 85.3 0 72S10.7 48 24 48l96 0 16.2-43.2zm-84.6 448L28.7 144 76.9 144 99.5 449.2c.6 8.4 7.6 14.8 16 14.8l217.1 0c8.4 0 15.3-6.5 16-14.8l22.6-305.2 48.1 0-22.9 308.7c-2.5 33.4-30.3 59.3-63.8 59.3l-217.1 0c-33.5 0-61.3-25.9-63.8-59.3z',\n\t\twidth: 448,\n\t},\n\ttriangleExclamation: {\n\t\taliases: ['warning', 'caution', 'danger'],\n\t\tcategories: ['status'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M256.5 0c14.7 0 28.2 8.1 35.2 21l216 400c6.7 12.4 6.4 27.4-.8 39.5S486.6 480 472.5 480l-432 0c-14.1 0-27.1-7.4-34.3-19.5s-7.5-27.1-.8-39.5l216-400c7-12.9 20.5-21 35.2-21zM53.9 432L459.1 432 256.5 56.8 53.9 432zm202.6-40a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-208c18.6 0 33 16.1 31 34.6l-7.1 64.1C279 294.8 268.7 304 256.5 304s-22.5-9.2-23.8-21.3l-7.1-64.1c-2-18.5 12.4-34.6 31-34.6z',\n\t\twidth: 512,\n\t},\n\ttwitter: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M459.4 151.7c.3 4.5 .3 9.1 .3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103l0-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53 51.7 63.7 129.3 105.3 216.4 109.8-1.6-7.8-2.6-15.9-2.6-24 0-57.8 46.8-104.9 104.9-104.9 30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3z',\n\t\twidth: 512,\n\t},\n\tupload: {\n\t\taliases: ['import', 'send'],\n\t\tcategories: ['actions', 'development'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M248 328c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-246.1-63 63c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L207 7c9.4-9.4 24.6-9.4 33.9 0L345 111c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-63-63 0 246.1zm-96-8l-88 0c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-80c0-8.8-7.2-16-16-16l-88 0 0-48 88 0c35.3 0 64 28.7 64 64l0 80c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-80c0-35.3 28.7-64 64-64l88 0 0 48zm168 56a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z',\n\t\twidth: 448,\n\t},\n\tuser: {\n\t\taliases: ['person', 'account', 'profile'],\n\t\tcategories: ['users'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M144 128a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zm208 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM48 480c0-70.7 57.3-128 128-128l96 0c70.7 0 128 57.3 128 128l0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8c0-97.2-78.8-176-176-176l-96 0C78.8 304 0 382.8 0 480l0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8z',\n\t\twidth: 448,\n\t},\n\tuserAstronaut: {\n\t\taliases: ['space', 'astronaut'],\n\t\tcategories: ['users'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M352 160a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM224-16c74.6 0 138.4 46.4 164 112l4 0c13.3 0 24 10.7 24 24l0 80c0 13.3-10.7 24-24 24l-4 0c-25.6 65.6-89.4 112-164 112S85.6 289.6 60 224l-4 0c-13.3 0-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24l4 0C85.6 30.4 149.4-16 224-16zM128 176c0-44.2 35.8-80 80-80l32 0c44.2 0 80 35.8 80 80s-35.8 80-80 80l-32 0c-44.2 0-80-35.8-80-80zm85.3-13.3l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM89.7 339.3c17 12.8 35.9 23.2 56.2 30.7-55.7 10.4-97.9 59.2-97.9 118 0 13.3-10.7 24-24 24S0 501.3 0 488c0-64.5 36.4-120.5 89.7-148.7zM302.1 370c20.3-7.5 39.2-17.9 56.2-30.7 53.4 28.1 89.7 84.2 89.7 148.7 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-58.7-42.2-107.6-97.9-118zM128 432l192 0c17.7 0 32 14.3 32 32l0 48-56 0 0-24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24-48 0 0-24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24-56 0 0-48c0-17.7 14.3-32 32-32z',\n\t\twidth: 448,\n\t},\n\tuserGear: {\n\t\taliases: ['user settings', 'account settings'],\n\t\tcategories: ['users'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M336.5 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-208 0a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zm-48 352l0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8c0-97.2 78.8-176 176-176l79.2 0c-7.4 15.4-8.9 32.3-5.1 48l-74.1 0c-70.7 0-128 57.3-128 128zM432.6 247.6c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 6.1c0 18.9 24.1 32.8 40.5 23.4l5-2.9c11.6-6.7 26.5-2.6 33 9.1l22.4 40.2c6.2 11.2 2.6 25.2-8.2 32l-4.7 2.9c-16.2 10.1-16.2 39.9 0 50.1l4.6 2.9c10.8 6.8 14.5 20.8 8.3 32L607 483.8c-6.5 11.7-21.4 15.9-33 9.1l-4.9-2.9c-16.4-9.5-40.5 4.5-40.5 23.4l0 6.1c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-5.9c0-19-24.2-33-40.7-23.5l-4.8 2.8c-11.6 6.7-26.4 2.6-33-9.1l-22.6-40.4c-6.2-11.2-2.6-25.3 8.3-32.1l4.4-2.7c16.3-10.1 16.3-40.1 0-50.2l-4.5-2.8c-10.9-6.8-14.5-20.9-8.3-32.1l22.5-40.3c6.5-11.7 21.4-15.8 32.9-9.1l4.8 2.8c16.5 9.5 40.7-4.5 40.7-23.5l0-5.9zm99.9 136.2a52 52 0 1 0 -104 0 52 52 0 1 0 104 0z',\n\t\twidth: 640,\n\t},\n\tuserPlus: {\n\t\taliases: ['add user', 'invite', 'new user'],\n\t\tcategories: ['users'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M304 304c97.2 0 176 78.8 176 176l0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8c0-70.7-57.3-128-128-128l-96 0c-70.7 0-128 57.3-128 128l0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8c0-97.2 78.8-176 176-176l96 0zM528 80c13.3 0 24 10.7 24 24l0 48 48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0 0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0 0-48c0-13.3 10.7-24 24-24zM256 256a128 128 0 1 1 0-256 128 128 0 1 1 0 256zm0-208a80 80 0 1 0 0 160 80 80 0 1 0 0-160z',\n\t\twidth: 640,\n\t},\n\tusers: {\n\t\taliases: ['people', 'team', 'group'],\n\t\tcategories: ['users'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm0-176a112 112 0 1 1 0 224 112 112 0 1 1 0-224zM296 336c-57.4 0-104 46.6-104 104l0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16c0-83.9 68.1-152 152-152l48 0c83.9 0 152 68.1 152 152l0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16c0-57.4-46.6-104-104-104l-48 0zm135.4-93.2c11.7-11.3 21.6-24.4 29.4-38.8 5.9 2.6 12.4 4 19.2 4 26.5 0 48-21.5 48-48s-21.5-48-48-48l-.8 0c-1.6-16.6-5.8-32.4-12.1-47.1 4.2-.6 8.6-.9 12.9-.9 53 0 96 43 96 96s-43 96-96 96c-17.7 0-34.3-4.8-48.6-13.2zM160 64c4.4 0 8.7 .3 12.9 .9-6.3 14.7-10.5 30.6-12.1 47.1l-.8 0c-26.5 0-48 21.5-48 48s21.5 48 48 48c6.8 0 13.3-1.4 19.2-4 7.8 14.4 17.7 27.5 29.4 38.8-14.2 8.4-30.8 13.2-48.6 13.2-53 0-96-43-96-96s43-96 96-96zM149.3 304c-15.1 16.3-27.5 35-36.5 55.6-38 15.5-64.8 52.8-64.8 96.4 0 13.3-10.7 24-24 24S0 469.3 0 456c0-83.1 66.6-150.6 149.3-152zm377.9 55.6c-9-20.6-21.5-39.4-36.5-55.6 82.7 1.4 149.3 68.9 149.3 152 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-43.6-26.8-80.9-64.8-96.4z',\n\t\twidth: 640,\n\t},\n\tvideo: {\n\t\taliases: ['camera', 'recording', 'webcam'],\n\t\tcategories: ['media'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M96 112c-8.8 0-16 7.2-16 16l0 256c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16L96 112zM32 128c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L96 448c-35.3 0-64-28.7-64-64l0-256zm505.6-11.2c4.2-3.1 9.2-4.8 14.4-4.8 13.3 0 24 10.7 24 24l0 240c0 13.3-10.7 24-24 24-5.2 0-10.2-1.7-14.4-4.8l-73.6-55.2 0-60 64 48 0-144-64 48 0-60 73.6-55.2z',\n\t\twidth: 576,\n\t},\n\twavePulse: {\n\t\taliases: ['activity', 'heartbeat', 'health'],\n\t\tcategories: ['data', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M287.4 0c11.1-.3 21 7.1 23.8 17.9l78.7 301.7 36.2-81.3c3.9-8.7 12.4-14.3 21.9-14.3l104 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88.4 0-57.7 129.7c-4.1 9.3-13.7 15-23.9 14.2s-18.7-8-21.3-17.9l-70.1-268.6-75.2 363.4c-2.3 10.9-11.7 18.8-22.8 19.1s-21-7.1-23.9-17.8L109.6 272 24 272c-13.3 0-24-10.7-24-24s10.7-24 24-24l104 0c10.9 0 20.4 7.3 23.2 17.8l37.9 142 75.4-364.7C266.8 8.2 276.2 .3 287.4 0z',\n\t\twidth: 576,\n\t},\n\twindowRestore: {\n\t\taliases: ['restore', 'minimize', 'window'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M512 80L224 80c-8.8 0-16 7.2-16 16l0 16-48 0 0-16c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64l-48 0 0-48 48 0c8.8 0 16-7.2 16-16l0-192c0-8.8-7.2-16-16-16zM368 288l-320 0 0 128c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-128zM64 160l288 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z',\n\t\twidth: 576,\n\t},\n\twordpress: {\n\t\taliases: ['wp'],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M61.7 169.4l101.5 278c-71-34.4-119.9-107.2-119.9-191.4 0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8 .9 0 1.8 .1 2.8 .2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7 .3 13.7 .3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4 46.6-139.6-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zM259.7 274.6L195.9 460.1c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9L259.7 274.6zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9c63.3-36.9 105.8-105.4 105.8-183.9 0-37-9.4-71.8-26-102.1zM8 256a248 248 0 1 1 496 0 248 248 0 1 1 -496 0zm484.6 0a236.6 236.6 0 1 0 -473.2 0 236.6 236.6 0 1 0 473.2 0z',\n\t\twidth: 512,\n\t},\n\twreathLaurel: {\n\t\taliases: ['award', 'victory', 'achievement'],\n\t\tcategories: ['objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M237.6 50.9l-11.8 .7c-20.3 1.1-36.6 17.4-37.7 37.7l-.7 11.8 11.8-.7c20.3-1.1 36.6-17.4 37.7-37.7l.7-11.8zM43.6 177.7c-11.4-30.3-9.7-65.3 7.8-95.6L72 46.4c6.3-10.9 20.2-14.6 31-8.3 15.9 9.2 28.9 21.4 38.8 35.5 8-38.5 41-67.7 81.3-70l38.6-2.1c14.3-.8 26.1 11 25.3 25.3l-2.1 38.6c-2.5 44.8-38.2 80.5-83 83l-24.6 1.4c-21.2 31.1-32.8 68.1-32.8 106.3 0 97.2 78.8 176 176 176l11.6 0c43.5 0 86.3 10.1 125.2 29.6l9.9 5c11.9 5.9 16.7 20.3 10.7 32.2s-20.3 16.7-32.2 10.7l-9.9-5C403.6 488.4 368.1 480 332.1 480l-23.1 0c-36 0-71.5 8.4-103.8 24.5l-9.9 5c-11.9 5.9-26.3 1.1-32.2-10.7s-1.1-26.3 10.7-32.2l9.9-5c8.3-4.2 16.8-7.9 25.4-11.2-5.5-3.1-10.8-6.5-15.9-10.1l-4.8 2.8-.3 .2c-4.6 2.7-9.4 4.9-14.2 6.9-50.9 20.4-110.3 .8-138.5-48L14.7 366.4c-6.3-10.9-2.6-24.8 8.3-31 6-3.5 12.2-6.4 18.5-8.7-25.1-20.5-41.1-51.7-41.1-86.7l0-41.2c0-12.6 10.2-22.7 22.7-22.7 7 0 13.8 .6 20.4 1.7zM417.9 3.6c40.3 2.2 73.3 31.5 81.3 70 9.9-14.1 22.9-26.3 38.8-35.5 10.9-6.3 24.8-2.6 31 8.3l20.6 35.7c17.5 30.3 19.2 65.3 7.8 95.6 6.6-1.1 13.4-1.7 20.4-1.7 12.6 0 22.7 10.2 22.7 22.7l0 41.2c0 34.9-16 66.1-41.1 86.7 6.3 2.3 12.5 5.2 18.5 8.7 10.9 6.3 14.6 20.2 8.3 31l-20.6 35.7c-21.6 37.4-61.5 57.6-101.8 55.9-5.3-8.3-12.8-15.4-22.3-20.1l-9.9-5c-13.1-6.5-26.6-12.1-40.3-16.7l0 0c-7.9-2.7-15.9-5-24-7 53.3-30.2 89.3-87.5 89.3-153.2 0-38.2-11.6-75.2-32.8-106.3l-24.6-1.4c-44.8-2.5-80.5-38.2-83-83L354 26.8c-.8-14.3 11-26.1 25.3-25.3l38.6 2.1zm-2.7 47.9l-11.8-.7 .7 11.8c1.1 20.3 17.4 36.6 37.7 37.7l11.8 .7-.7-11.8c-1.1-20.3-17.4-36.6-37.7-37.7zM96.5 301.9l0-4.7c0-31.6-20-58.5-48-68.8l0 11.5c0 29.8 20.4 54.9 48 62zm448.1-4.7l0 4.7c27.6-7.1 48-32.2 48-62l0-11.5c-28 10.3-48 37.2-48 68.8zM149.5 407.8l-2.4-4.1c-15.8-27.3-46.5-40.6-75.9-35.6l5.7 9.9c14.9 25.8 45.1 37.3 72.5 29.7zM105.9 179.7c15.8-27.3 11.9-60.6-7.2-83.5L93 106.1c-14.9 25.8-9.8 57.7 10.6 77.7l2.4-4.1zm431.6 4.1c20.3-20 25.5-51.8 10.6-77.7l-5.7-9.9c-19.1 22.9-22.9 56.2-7.2 83.5l2.4 4.1zm-45.9 224c27.4 7.6 57.6-3.9 72.5-29.7l5.7-9.9c-29.4-5.1-60.1 8.2-75.9 35.6l-2.4 4.1z',\n\t\twidth: 640,\n\t},\n\twrench: {\n\t\taliases: ['tools', 'fix', 'repair', 'configure'],\n\t\tcategories: ['actions', 'objects'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M208 168c0-92.8 75.2-168 168-168 27.1 0 52.8 6.4 75.5 17.9 6.9 3.5 11.7 10 12.9 17.6s-1.3 15.3-6.7 20.8l-73.7 73.7 0 30.1 30.1 0 73.7-73.7c5.4-5.4 13.2-7.9 20.8-6.7s14.2 6 17.6 12.9c11.4 22.7 17.9 48.4 17.9 75.5 0 92.8-75.2 168-168 168-16.6 0-32.7-2.4-47.9-6.9L152.6 504.6c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1L214.9 215.9c-4.5-15.2-6.9-31.3-6.9-47.9zM376 48c-66.3 0-120 53.7-120 120 0 16 3.1 31.3 8.8 45.2 3.6 8.9 1.6 19.2-5.3 26l-186.2 186.2 0 0c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L304.8 284.5c6.8-6.8 17.1-8.9 26-5.3 13.9 5.7 29.2 8.8 45.2 8.8 66.3 0 120-53.7 120-120 0-6.9-.6-13.7-1.7-20.3L441 201c-4.5 4.5-10.6 7-17 7l-64 0c-13.3 0-24-10.7-24-24l0-64c0-6.4 2.5-12.5 7-17l53.3-53.3C389.7 48.6 382.9 48 376 48z',\n\t\twidth: 576,\n\t},\n\txmark: {\n\t\taliases: ['close', 'dismiss', 'cancel', 'x'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M7.5 105c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l151 151 151-151c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-151 151 151 151c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-151-151-151 151c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l151-151-151-151z',\n\t\twidth: 384,\n\t},\n\txmarkLarge: {\n\t\taliases: ['close', 'dismiss', 'cancel', 'x'],\n\t\tcategories: ['actions'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M7.5 41C-1.8 31.6-1.8 16.4 7.5 7S32.1-2.3 41.5 7l215 215 215-215c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-215 215 215 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-215-215-215 215c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l215-215-215-215z',\n\t\twidth: 512,\n\t},\n\txTwitter: {\n\t\taliases: ['x', 'twitter'],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M357.2 48L427.8 48 273.6 224.2 455 464 313 464 201.7 318.6 74.5 464 3.8 464 168.7 275.5-5.2 48 140.4 48 240.9 180.9 357.2 48zM332.4 421.8l39.1 0-252.4-333.8-42 0 255.3 333.8z',\n\t\twidth: 448,\n\t},\n\tyoutube: {\n\t\taliases: [],\n\t\tcategories: ['brands'],\n\t\theight: 512,\n\t\tsvgPathData:\n\t\t\t'M549.7 124.1C543.5 100.4 524.9 81.8 501.4 75.5 458.9 64 288.1 64 288.1 64S117.3 64 74.7 75.5C51.2 81.8 32.7 100.4 26.4 124.1 15 167 15 256.4 15 256.4s0 89.4 11.4 132.3c6.3 23.6 24.8 41.5 48.3 47.8 42.6 11.5 213.4 11.5 213.4 11.5s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232.2 337.6l0-162.4 142.7 81.2-142.7 81.2z',\n\t\twidth: 576,\n\t},\n} as const;\n\nexport const iconList = [\n\t'angleDown',\n\t'angleLeft',\n\t'angleRight',\n\t'anglesLeft',\n\t'anglesRight',\n\t'angleUp',\n\t'arrowDownToLine',\n\t'arrowLeft',\n\t'arrowRight',\n\t'arrowsRetweet',\n\t'asterisk',\n\t'banBug',\n\t'bars',\n\t'barsFilter',\n\t'bell',\n\t'billboard',\n\t'bitbucket',\n\t'bluesky',\n\t'bolt',\n\t'boltPantheon',\n\t'boltSolid',\n\t'book',\n\t'books',\n\t'bracketRight',\n\t'bracketsSquare',\n\t'brainCircuit',\n\t'broomWide',\n\t'building',\n\t'buildings',\n\t'bullhorn',\n\t'calendarDays',\n\t'caretDown',\n\t'caretLeft',\n\t'caretRight',\n\t'caretUp',\n\t'ccAmex',\n\t'ccApplePay',\n\t'ccDiscover',\n\t'ccGeneric',\n\t'ccMC',\n\t'ccPaypal',\n\t'ccVisa',\n\t'chartLine',\n\t'chartNetwork',\n\t'chartSimple',\n\t'check',\n\t'circle',\n\t'circleCheck',\n\t'circleExclamation',\n\t'circleInfo',\n\t'circleMinus',\n\t'circleNotch',\n\t'circlePlus',\n\t'circleQuestion',\n\t'circleUser',\n\t'circleXmark',\n\t'cloud',\n\t'cloudArrowDown',\n\t'cloudArrowUp',\n\t'cloudPlus',\n\t'code',\n\t'codeBranch',\n\t'codeMerge',\n\t'command',\n\t'comment',\n\t'copy',\n\t'desktop',\n\t'diamondExclamation',\n\t'diamonds4',\n\t'discourse',\n\t'display',\n\t'dollarSign',\n\t'download',\n\t'drupal',\n\t'ellipsis',\n\t'ellipsisVertical',\n\t'emptySet',\n\t'envelope',\n\t'envelopeOpen',\n\t'exclamation',\n\t'expand',\n\t'expandFromCenter',\n\t'externalLink',\n\t'eye',\n\t'eyeSlash',\n\t'facebook',\n\t'file',\n\t'fileCheck',\n\t'fileContract',\n\t'fileCSV',\n\t'fileDiff',\n\t'fileExport',\n\t'fileImport',\n\t'fileLines',\n\t'filePDF',\n\t'fileZip',\n\t'folder',\n\t'folderTree',\n\t'gear',\n\t'gem',\n\t'github',\n\t'gitlab',\n\t'globe',\n\t'graduationCap',\n\t'grid',\n\t'gripDots',\n\t'gripDotsVertical',\n\t'heart',\n\t'heartSolid',\n\t'house',\n\t'idCard',\n\t'image',\n\t'inputText',\n\t'instagram',\n\t'keySkeleton',\n\t'laptop',\n\t'laptopCode',\n\t'leaf',\n\t'lifeRing',\n\t'linkedin',\n\t'linkSimple',\n\t'linkSimpleSlash',\n\t'listCheck',\n\t'lock',\n\t'lockOpen',\n\t'magnifyingGlass',\n\t'medal',\n\t'memo',\n\t'messages',\n\t'minus',\n\t'moon',\n\t'nextJs',\n\t'paperclip',\n\t'paperPlane',\n\t'pen',\n\t'penField',\n\t'phone',\n\t'play',\n\t'plus',\n\t'question',\n\t'quotesLeft',\n\t'quotesRight',\n\t'rectangleList',\n\t'reply',\n\t'robot',\n\t'rocketLaunch',\n\t'rotate',\n\t'rotateClock',\n\t'rotateLeft',\n\t'rotateRight',\n\t'rss',\n\t'save',\n\t'server',\n\t'shareNodes',\n\t'shield',\n\t'shieldQuartered',\n\t'shovel',\n\t'siren',\n\t'sirenOn',\n\t'sitemap',\n\t'slack',\n\t'slashForward',\n\t'slidersSimple',\n\t'snowflake',\n\t'sparkles',\n\t'squareCheck',\n\t'squareCode',\n\t'squareMinus',\n\t'squarePen',\n\t'squareQuestion',\n\t'squareTerminal',\n\t'star',\n\t'starSolid',\n\t'sun',\n\t'sunBright',\n\t'table',\n\t'tableRows',\n\t'terminal',\n\t'text',\n\t'threads',\n\t'thumbsDown',\n\t'thumbsUp',\n\t'trash',\n\t'triangleExclamation',\n\t'twitter',\n\t'upload',\n\t'user',\n\t'userAstronaut',\n\t'userGear',\n\t'userPlus',\n\t'users',\n\t'video',\n\t'wavePulse',\n\t'windowRestore',\n\t'wordpress',\n\t'wreathLaurel',\n\t'wrench',\n\t'xmark',\n\t'xmarkLarge',\n\t'xTwitter',\n\t'youtube',\n] as const;\n\nexport type PDSIconName = (typeof iconList)[number];\n\nexport const categoryList = [\n\t'actions',\n\t'arrows',\n\t'brands',\n\t'communication',\n\t'custom',\n\t'data',\n\t'development',\n\t'documents',\n\t'financial',\n\t'media',\n\t'navigation',\n\t'objects',\n\t'security',\n\t'status',\n\t'users',\n] as const;\n\nexport type IconCategory = (typeof categoryList)[number];\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport {\n\tSPACING_2XL,\n\tSPACING_3XL,\n\tSPACING_L,\n\tSPACING_M,\n\tSPACING_S,\n\tSPACING_XL,\n\tSPACING_XS,\n} from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { Display, IconSize } from '@libs/types/custom-types';\n\nimport {\n\tcustomIcons,\n\ticonData,\n\ticonList,\n\ttype PDSIconName,\n} from './generated-icon-data';\n\nimport './icon.css';\n\n/**\n * PDS Icon type - union of all available icon names.\n */\nexport type PDSIcon = PDSIconName;\n\n// Re-export for external consumers (Storybook, etc.)\nexport { iconList };\n\n/**\n * Map of icon size tokens to design token values.\n */\nconst iconSizes: Record<IconSize, string> = {\n\t'2xl': SPACING_2XL,\n\t'3xl': SPACING_3XL,\n\tl: SPACING_L,\n\tm: SPACING_M,\n\ts: SPACING_S,\n\txl: SPACING_XL,\n\txs: SPACING_XS,\n};\n\n/**\n * Icon component prop types.\n */\nexport interface IconProps extends ComponentPropsWithoutRef<'svg'> {\n\t/**\n\t * Display value\n\t */\n\tdisplay?: Display;\n\t/**\n\t * Which icon to render\n\t */\n\ticonName: PDSIcon;\n\t/**\n\t * Which size of icon to render\n\t */\n\ticonSize?: IconSize;\n\t/**\n\t * Vertical align value\n\t */\n\tverticalAlign?: string;\n}\n\n/**\n * A component used to display an icon.\n */\nexport const Icon = ({\n\tclassName,\n\tdisplay = 'inline-block',\n\ticonName,\n\ticonSize = 'l',\n\tstyle,\n\tverticalAlign = 'middle',\n\t...props\n}: IconProps) => {\n\tconst baseClass = 'pds-icon';\n\tconst iconClasses = `${baseClass} ${baseClass}--${iconSize} ${baseClass}--${iconName}`;\n\tconst data = iconData[iconName];\n\tconst viewBox = `0 0 ${data.width} ${data.height}`;\n\n\t// Check if this is a complex custom icon (e.g. nextJs with masks/gradients)\n\tconst customIcon =\n\t\ticonName in customIcons\n\t\t\t? customIcons[iconName as keyof typeof customIcons]\n\t\t\t: null;\n\n\t// Determine icon content\n\tlet iconContent: React.ReactNode;\n\n\tif (customIcon?.type === 'complex') {\n\t\ticonContent = customIcon.render();\n\t} else {\n\t\tconst pathData =\n\t\t\tcustomIcon?.type === 'path' ? customIcon.svgPathData : data.svgPathData;\n\n\t\ticonContent = Array.isArray(pathData) ? (\n\t\t\tpathData.map((d, i) => <path key={i} d={d} fill='currentColor' />)\n\t\t) : (\n\t\t\t<path d={pathData} fill='currentColor' />\n\t\t);\n\t}\n\n\treturn (\n\t\t<svg\n\t\t\taria-hidden='true'\n\t\t\tclassName={mergeClasses([iconClasses, className ?? ''])}\n\t\t\tfill='none'\n\t\t\tfocusable='false'\n\t\t\theight={iconSizes[iconSize]}\n\t\t\tpreserveAspectRatio='xMidYMid meet'\n\t\t\trole='img'\n\t\t\tstyle={{\n\t\t\t\tdisplay: display,\n\t\t\t\tflexShrink: 0,\n\t\t\t\toverflow: 'visible',\n\t\t\t\tverticalAlign: verticalAlign,\n\t\t\t\t...style,\n\t\t\t}}\n\t\t\tviewBox={viewBox}\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t{...props}\n\t\t>\n\t\t\t{iconContent}\n\t\t</svg>\n\t);\n};\n","/**\n * Do not edit directly, this file was auto-generated.\n */\n\nexport const TYPOGRAPHY_FF_DEFAULT = \"'Inter', sans-serif\";\nexport const TYPOGRAPHY_FF_COMPACT = \"'Inter Tight', sans-serif\";\nexport const TYPOGRAPHY_FF_SECONDARY = \"'IBM Plex Serif', serif\";\nexport const TYPOGRAPHY_FF_CODE = \"'Source Code Pro', monospace\";\nexport const TYPOGRAPHY_FW_LIGHT = 300;\nexport const TYPOGRAPHY_FW_REGULAR = 400;\nexport const TYPOGRAPHY_FW_MEDIUM = 500;\nexport const TYPOGRAPHY_FW_SEMIBOLD = 600;\nexport const TYPOGRAPHY_FW_BOLD = 700;\nexport const TYPOGRAPHY_FW_EXTRABOLD = 800;\nexport const TYPOGRAPHY_LS_XL = \"5%\";\nexport const TYPOGRAPHY_LS_L = \"4%\";\nexport const TYPOGRAPHY_LS_M = \"2%\";\nexport const TYPOGRAPHY_LS_S = \"1%\";\nexport const TYPOGRAPHY_LH_XL = \"195%\";\nexport const TYPOGRAPHY_LH_L = \"165%\";\nexport const TYPOGRAPHY_LH_M = \"150%\";\nexport const TYPOGRAPHY_LH_S = \"130%\";\nexport const TYPOGRAPHY_LH_XS = \"120%\";\nexport const TYPOGRAPHY_LH_CODE = \"180%\";\nexport const TYPOGRAPHY_SIZE_2XS = \"0.625rem\"; // 10px - Metadata, tiny labels\nexport const TYPOGRAPHY_SIZE_XS = \"0.75rem\"; // 12px - Small UI text, captions\nexport const TYPOGRAPHY_SIZE_S = \"0.875rem\"; // 14px - Product default body text, forms, navigation, labels\nexport const TYPOGRAPHY_SIZE_M = \"1rem\"; // 16px - h5/h6 in product, default body in marketing, prose body\nexport const TYPOGRAPHY_SIZE_L = \"1.125rem\"; // 18px - h4 in product, hero body/h6 in marketing, h5/blockquote in prose\nexport const TYPOGRAPHY_SIZE_XL = \"1.25rem\"; // 20px - h3 in product, h5/blog body in marketing, h4 in prose\nexport const TYPOGRAPHY_SIZE_2XL = \"1.5rem\"; // 24px - h2 in product, h4 in marketing, h3 in prose\nexport const TYPOGRAPHY_SIZE_3XL = \"1.75rem\"; // 28px - h1 in product, h2 in prose\nexport const TYPOGRAPHY_SIZE_4XL = \"2rem\"; // 32px - h3 in marketing, h1 in prose\nexport const TYPOGRAPHY_SIZE_5XL = \"2.25rem\"; // 36px - h1 hero/empty states in product, h2 in marketing\nexport const TYPOGRAPHY_SIZE_6XL = \"3rem\"; // 48px - Blog h1, large h2 in marketing\nexport const TYPOGRAPHY_SIZE_7XL = \"3.75rem\"; // 60px - Hero h1 in marketing\nexport const TYPOGRAPHY_SIZE_8XL = \"5rem\"; // 80px - Jumbo h1 in marketing\n\nexport const TYPOGRAPHY_SIZE = {\n TYPOGRAPHY_SIZE_2XS,\n TYPOGRAPHY_SIZE_XS,\n TYPOGRAPHY_SIZE_S,\n TYPOGRAPHY_SIZE_M,\n TYPOGRAPHY_SIZE_L,\n TYPOGRAPHY_SIZE_XL,\n TYPOGRAPHY_SIZE_2XL,\n TYPOGRAPHY_SIZE_3XL,\n TYPOGRAPHY_SIZE_4XL,\n TYPOGRAPHY_SIZE_5XL,\n TYPOGRAPHY_SIZE_6XL,\n TYPOGRAPHY_SIZE_7XL,\n TYPOGRAPHY_SIZE_8XL,\n};\n","import React, {\n\tcreateContext,\n\tReactNode,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseState,\n} from 'react';\n\ninterface OverlayContextType {\n\tcloseOverlay: () => void;\n\thasOpenOverlay: boolean;\n\topenOverlay: () => void;\n}\n\nexport const OverlayContext = createContext<OverlayContextType | null>(null);\n\nexport const OverlayContextProvider = ({\n\tchildren,\n}: {\n\tchildren: ReactNode;\n}) => {\n\tconst [overlayCount, setOverlayCount] = useState(0);\n\n\tconst openOverlay = useCallback(() => {\n\t\tsetOverlayCount((prev) => prev + 1);\n\t}, []);\n\n\tconst closeOverlay = useCallback(() => {\n\t\tsetOverlayCount((prev) => Math.max(0, prev - 1));\n\t}, []);\n\n\tconst hasOpenOverlay = overlayCount > 0;\n\n\t// Block keyboard shortcuts when overlay is open to prevent them from triggering.\n\t// Add additional keys to the blockedKeys array as needed.\n\tuseEffect(() => {\n\t\tif (!hasOpenOverlay) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\t// List of keys to block when overlays are open\n\t\t\tconst blockedKeys = ['/'];\n\n\t\t\tif (blockedKeys.includes(e.key)) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\t\t};\n\n\t\t// Use capture phase to intercept before other handlers\n\t\tdocument.addEventListener('keydown', handleKeyDown, { capture: true });\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', handleKeyDown, { capture: true });\n\t\t};\n\t}, [hasOpenOverlay]);\n\n\tconst contextValue: OverlayContextType = {\n\t\tcloseOverlay,\n\t\thasOpenOverlay,\n\t\topenOverlay,\n\t};\n\n\treturn (\n\t\t<OverlayContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</OverlayContext.Provider>\n\t);\n};\n\nexport const useOverlayContext = () => {\n\tconst context = useContext(OverlayContext);\n\tif (!context) {\n\t\tthrow new Error(\n\t\t\t'useOverlayContext must be used within OverlayContextProvider',\n\t\t);\n\t}\n\treturn context;\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nexport interface UseKeyPressOptions {\n\t/**\n\t * Whether the Alt key must be pressed. Defaults to false.\n\t */\n\taltKey?: boolean;\n\t/**\n\t * Whether the Ctrl key (or Cmd on Mac) must be pressed. Defaults to false.\n\t */\n\tctrlKey?: boolean;\n\t/**\n\t * Whether the hotkey is enabled. Defaults to true.\n\t */\n\tenabled?: boolean;\n\t/**\n\t * Whether the Meta key (Cmd on Mac, Win on Windows) must be pressed. Defaults to false.\n\t */\n\tmetaKey?: boolean;\n\t/**\n\t * Whether the Shift key must be pressed. Defaults to false.\n\t */\n\tshiftKey?: boolean;\n}\n\nexport const useKeyPress = (\n\ttargetKey: string,\n\tcallback?: (event: KeyboardEvent) => void,\n\toptions?: UseKeyPressOptions,\n) => {\n\tconst {\n\t\taltKey = false,\n\t\tctrlKey = false,\n\t\tenabled = true,\n\t\tmetaKey = false,\n\t\tshiftKey = false,\n\t} = options ?? {};\n\tconst [keyPressed, setKeyPressed] = useState(false);\n\n\t// Check if modifier keys match the requirements\n\tconst modifiersMatch = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\treturn (\n\t\t\t\tevent.altKey === altKey &&\n\t\t\t\tevent.ctrlKey === ctrlKey &&\n\t\t\t\tevent.metaKey === metaKey &&\n\t\t\t\tevent.shiftKey === shiftKey\n\t\t\t);\n\t\t},\n\t\t[altKey, ctrlKey, metaKey, shiftKey],\n\t);\n\n\t// Memoized handler for key down events\n\tconst downHandler = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\t// Check if the pressed key matches the target key and modifiers match\n\t\t\tif (event.key === targetKey && modifiersMatch(event)) {\n\t\t\t\tsetKeyPressed(true);\n\n\t\t\t\t// Execute optional callback if provided\n\t\t\t\tif (callback) {\n\t\t\t\t\tcallback(event);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[targetKey, callback, modifiersMatch],\n\t);\n\n\t// Memoized handler for key up events\n\tconst upHandler = useCallback(\n\t\t(event: KeyboardEvent) => {\n\t\t\tif (event.key === targetKey && modifiersMatch(event)) {\n\t\t\t\tsetKeyPressed(false);\n\t\t\t}\n\t\t},\n\t\t[targetKey, modifiersMatch],\n\t);\n\n\tuseEffect(() => {\n\t\t// Only add event listeners when enabled\n\t\tif (!enabled) return;\n\n\t\t// Add event listeners when the component mounts\n\t\twindow.addEventListener('keydown', downHandler);\n\t\twindow.addEventListener('keyup', upHandler);\n\n\t\t// Cleanup function to remove event listeners when component unmounts\n\t\treturn () => {\n\t\t\twindow.removeEventListener('keydown', downHandler);\n\t\t\twindow.removeEventListener('keyup', upHandler);\n\t\t};\n\t}, [downHandler, upHandler, enabled]);\n\n\t// Return whether the key is currently pressed\n\treturn keyPressed;\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useState } from 'react';\n\nimport {\n\tautoUpdate,\n\tflip,\n\tFloatingPortal,\n\toffset,\n\tPlacement,\n\tshift,\n\tuseDismiss,\n\tuseFloating,\n\tuseFocus,\n\tuseHover,\n\tuseInteractions,\n\tuseRole,\n} from '@floating-ui/react';\nimport { Z_INDEX_OVERLAY } from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { FuiOffset } from '@libs/types/custom-types';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './tooltip.css';\n\ninterface TooltipProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Text to display in tooltip container.\n\t */\n\tcontent: string;\n\t/**\n\t * String or HTML content to use as the trigger instead of an icon. Leave null to use the icon.\n\t */\n\tcustomTrigger?: ReactNode;\n\t/**\n\t * The spacing between the trigger and the tooltip in pixels. Use the default value (in most cases) when using an icon trigger.\n\t */\n\toffsetValue?: FuiOffset;\n\t/**\n\t * The preferred placement of the tooltip relative to the trigger.\n\t */\n\tpreferredPlacement?: Placement;\n\t/**\n\t * The accessible text for the trigger. Only necessary when the trigger is an icon.\n\t */\n\ttriggerAccessibleText?: string;\n\t/**\n\t * Icon to trigger tooltip\n\t */\n\ttriggerIcon?: 'circleInfo' | 'circleQuestion' | 'circleExclamation';\n\t/**\n\t * Color of the trigger icon. Uses PDS default text color options.\n\t */\n\ttriggerIconColor?: 'default' | 'default-secondary' | 'critical';\n\t/**\n\t * Size of the trigger icon. Uses PDS Icon sizing.\n\t */\n\ttriggerIconSize?: 's' | 'm' | 'l';\n\t/**\n\t * Z-index value for the tooltip container. In most cases, the default value should be retained.\n\t */\n\tzIndex?: number;\n}\n\n/**\n * Tooltip UI component\n */\nexport const Tooltip = ({\n\tclassName,\n\tcontent,\n\tcustomTrigger = null,\n\toffsetValue = 8,\n\tpreferredPlacement = 'top',\n\ttriggerAccessibleText = 'Show more information',\n\ttriggerIcon = 'circleInfo',\n\ttriggerIconColor = 'default',\n\ttriggerIconSize = 's',\n\tzIndex = Z_INDEX_OVERLAY,\n\t...props\n}: TooltipProps) => {\n\t// Set up state.\n\tconst [isOpen, setIsOpen] = useState(false);\n\n\t// Get type of custom trigger.\n\tconst triggerType = typeof customTrigger;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-tooltip';\n\tconst customTriggerClasses = mergeClasses([\n\t\t`${baseClass}__trigger-custom`,\n\t\ttriggerType === 'string' ? `${baseClass}__trigger-text` : null,\n\t]);\n\tconst iconTriggerClasses = mergeClasses([\n\t\t`${baseClass}__trigger`,\n\t\t`${baseClass}__trigger--${triggerIconColor}`,\n\t]);\n\n\t// FUI config.\n\tconst { context, floatingStyles, refs } = useFloating({\n\t\tplacement: preferredPlacement,\n\t\topen: isOpen,\n\t\tonOpenChange: setIsOpen,\n\t\tmiddleware: [offset(offsetValue), flip(), shift()],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\tconst hover = useHover(context, {\n\t\trestMs: 300,\n\t\tdelay: { open: 100, close: 0 },\n\t\tmove: false,\n\t});\n\tconst focus = useFocus(context);\n\tconst dismiss = useDismiss(context);\n\tconst role = useRole(context, { role: 'tooltip' });\n\n\tconst { getFloatingProps, getReferenceProps } = useInteractions([\n\t\thover,\n\t\tfocus,\n\t\tdismiss,\n\t\trole,\n\t]);\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{customTrigger ? (\n\t\t\t\t<span\n\t\t\t\t\tref={refs.setReference}\n\t\t\t\t\tclassName={customTriggerClasses}\n\t\t\t\t\t{...getReferenceProps()}\n\t\t\t\t>\n\t\t\t\t\t{customTrigger}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\t<button\n\t\t\t\t\tref={refs.setReference}\n\t\t\t\t\taria-label={triggerAccessibleText}\n\t\t\t\t\tclassName={iconTriggerClasses}\n\t\t\t\t\ttype='button'\n\t\t\t\t\t{...getReferenceProps()}\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\ticonName={triggerIcon}\n\t\t\t\t\t\ticonSize={triggerIconSize}\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t)}\n\t\t\t<FloatingPortal>\n\t\t\t\t<div\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\taria-hidden={!isOpen}\n\t\t\t\t\tclassName={`${baseClass}__container`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...floatingStyles,\n\t\t\t\t\t\tzIndex: zIndex,\n\t\t\t\t\t\topacity: isOpen ? 1 : 0,\n\t\t\t\t\t\tpointerEvents: isOpen ? 'auto' : 'none',\n\t\t\t\t\t\ttransition: 'var(--pds-animation-transition-reveal)',\n\t\t\t\t\t}}\n\t\t\t\t\t{...getFloatingProps()}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</div>\n\t\t\t</FloatingPortal>\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tforwardRef,\n\tMouseEventHandler,\n\tReactNode,\n\tRef,\n} from 'react';\n\nimport { useId } from '@floating-ui/react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { useOverlayContext } from '@utilities/context-providers/OverlayContext/OverlayContext';\nimport { useKeyPress } from '@utilities/hooks/useKeyPress/useKeyPress';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport { SelectOptionGroupType, SelectOptionType } from './Select/Select';\n\nimport './input-utilities.css';\n\n// Input conditional field classes.\nexport const inputCommonClasses = {\n\tbase: 'pds-input',\n\tdisabled: 'pds-is-disabled',\n\trequired: 'pds-is-required',\n\terror: 'pds-has-error',\n\tsuccess: 'pds-has-success',\n\treadonly: 'pds-is-readonly',\n};\n\n// Process input width. Convert to rems.\nexport const getInputWidthStyle = (inputWidth: number) =>\n\tinputWidth ? { maxWidth: `${inputWidth / 16}rem` } : null;\n\n// Function to strip http:// or https:// from input value\nexport const stripUrlProtocol = (value: string): string => {\n\treturn value.replace(/^(https?:\\/\\/)/, '');\n};\n\n// Required Icon.\nexport const RequiredIcon = () => (\n\t<span className='pds-input-label__required'>\n\t\t<Icon\n\t\t\tclassName='pds-input-label__required-icon'\n\t\t\ticonName='asterisk'\n\t\t\ticonSize='s'\n\t\t/>\n\t</span>\n);\n\n// InputLabel component.\ninterface InputLabelProps {\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled: boolean;\n\t/**\n\t * Input ID.\n\t */\n\tid: string;\n\t/**\n\t * Is the label a legend? Should be used when the input is a fieldset.\n\t */\n\tisLegend?: boolean;\n\t/**\n\t * Not a true `label`, but a description of the field.\n\t * Used for inputs that have their label built into the element itself.\n\t */\n\tisPseudoLabel?: boolean;\n\t/**\n\t * Label text.\n\t */\n\tlabel: string;\n\t/**\n\t * Is the field required?\n\t */\n\trequired: boolean;\n\t/**\n\t * Should the label be visible?\n\t */\n\tshowLabel: boolean;\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string;\n}\n\nexport const InputLabel = ({\n\tclassName,\n\tdisabled,\n\tid,\n\tisLegend,\n\tisPseudoLabel,\n\tlabel,\n\trequired,\n\tshowLabel = true,\n\ttooltipText = null,\n}: InputLabelProps) => {\n\tconst labelClasses = mergeClasses([\n\t\t'pds-input-label',\n\t\t!showLabel ? 'visually-hidden' : null,\n\t\tclassName ?? '',\n\t]);\n\n\tconst labelContent = (\n\t\t<>\n\t\t\t{label}\n\t\t\t{required && !disabled && <RequiredIcon />}\n\t\t\t{tooltipText && (\n\t\t\t\t<Tooltip content={tooltipText}>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<Icon iconName='circleInfo' iconSize='s' />\n\t\t\t\t\t</span>\n\t\t\t\t</Tooltip>\n\t\t\t)}\n\t\t</>\n\t);\n\n\t// If it's a legend, return a legend element.\n\tif (isLegend) {\n\t\treturn (\n\t\t\t<legend className={labelClasses} id={`${id}-legend`}>\n\t\t\t\t{labelContent}\n\t\t\t</legend>\n\t\t);\n\t}\n\n\t// If it's a pseudo label, return a span element.\n\tif (isPseudoLabel) {\n\t\treturn (\n\t\t\t<span className={labelClasses} id={`${id}-field-label`}>\n\t\t\t\t{labelContent}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t// Otherwise, return a label element.\n\treturn (\n\t\t<label className={labelClasses} htmlFor={id} id={`${id}-label`}>\n\t\t\t{labelContent}\n\t\t</label>\n\t);\n};\n\n// InputMessage component.\nexport const InputMessage = ({\n\tclassName,\n\tforInputGroup = false,\n\thasValidationMessage,\n\tid,\n\tmessage,\n\tvalidationMessageHasDecorators,\n\tvalidationStatus,\n}: {\n\tclassName?: string;\n\tforInputGroup?: boolean;\n\thasValidationMessage?: boolean;\n\tid: string;\n\tmessage?: string | ReactNode;\n\tvalidationMessageHasDecorators?: boolean;\n\tvalidationStatus?: string;\n}) => {\n\tconst baseClass = 'pds-input-message';\n\tconst statusClass =\n\t\tvalidationStatus && hasValidationMessage\n\t\t\t? `${baseClass}--${validationStatus}`\n\t\t\t: null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, statusClass, className ?? ''])}\n\t\t\tid={forInputGroup ? `${id}__message-hidden` : `${id}__message`}\n\t\t\trole={validationStatus === 'error' ? 'alert' : null}\n\t\t>\n\t\t\t{validationMessageHasDecorators && validationStatus && (\n\t\t\t\t<InputDecorator variant={validationStatus as DecoratorVariants} />\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__text`}>{message}</div>\n\t\t</div>\n\t);\n};\n\n// InputDecorator component.\ntype DecoratorVariants = 'search' | 'error' | 'success' | 'filter';\n\nconst iconVariants: Record<DecoratorVariants, PDSIcon> = {\n\tsearch: 'magnifyingGlass',\n\terror: 'triangleExclamation',\n\tsuccess: 'check',\n\tfilter: 'barsFilter',\n};\n\nexport const InputDecorator = ({ variant }: { variant: DecoratorVariants }) => {\n\tconst baseClass = 'pds-input-decorator';\n\n\treturn (\n\t\t<div className={mergeClasses([baseClass, `${baseClass}--${variant}`])}>\n\t\t\t<Icon\n\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\ticonName={iconVariants[variant]}\n\t\t\t\ticonSize='m'\n\t\t\t/>\n\t\t</div>\n\t);\n};\n\n// SearchShortcut component.\nexport const SearchShortcut = ({\n\tinputId,\n\tshortcutLabel,\n}: {\n\tinputId: string;\n\tshortcutLabel: string;\n}) => {\n\t// Get overlay context.\n\tconst { hasOpenOverlay } = useOverlayContext();\n\n\t// Handle search shortcut.\n\tconst handleSearchShortcut = (e: KeyboardEvent) => {\n\t\tconst element = document.getElementById(inputId);\n\t\tif (element) {\n\t\t\telement.focus();\n\t\t}\n\t\te.preventDefault();\n\t};\n\n\t// Set up search shortcut hotkey.\n\t// Disabled when an overlay (modal, mobile menu, etc.) is open.\n\t// The \"/\" key is globally blocked at the OverlayContext level when overlays are open.\n\tuseKeyPress('/', handleSearchShortcut, {\n\t\tenabled: !hasOpenOverlay,\n\t});\n\n\treturn (\n\t\t<div className='pds-input-search-shortcut'>\n\t\t\t<span className='visually-hidden'>{shortcutLabel}</span>\n\t\t\t<Icon iconName='slashForward' iconSize='m' />\n\t\t</div>\n\t);\n};\n\n// ClearButton component.\nexport const ClearButton = ({\n\tclearLabel,\n\thandleClearInput,\n\tid,\n}: {\n\tclearLabel: string;\n\thandleClearInput: MouseEventHandler<HTMLButtonElement>;\n\tid: string;\n}) => {\n\treturn (\n\t\t<button\n\t\t\taria-controls={id}\n\t\t\tclassName='pds-input-clear-button'\n\t\t\tonClick={handleClearInput}\n\t\t\ttitle={clearLabel}\n\t\t\ttype='button'\n\t\t>\n\t\t\t<Icon iconName='xmark' iconSize='m' />\n\t\t</button>\n\t);\n};\n\n// CharacterCounter component.\nexport const CharacterCounter = ({\n\tcurrentLength,\n\tid,\n\tmaxLength,\n\toverLimitMessage = 'Character limit exceeded by',\n}: {\n\tcurrentLength: number;\n\tid: string;\n\tmaxLength: number;\n\toverLimitMessage: string;\n}) => {\n\tconst isOverLimit = currentLength > maxLength;\n\tconst overLimitCount = currentLength - maxLength;\n\n\tconst baseClass = 'pds-input-character-counter';\n\tconst overLimitClass = isOverLimit ? `${baseClass}--overLimit` : null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, overLimitClass])}\n\t\t\tid={`${id}__counter`}\n\t\t>\n\t\t\t{currentLength}/{maxLength}\n\t\t\t<span aria-live='polite' className='visually-hidden'>\n\t\t\t\t{isOverLimit && `${overLimitMessage} ${overLimitCount}`}\n\t\t\t</span>\n\t\t</div>\n\t);\n};\n\n// HiddenLabel component.\nexport const HiddenLabel = ({ label, ...props }) => (\n\t<span className='visually-hidden' {...props}>\n\t\t{label}\n\t</span>\n);\n\n// Select option group component.\nexport const isOptionGroup = (\n\toption: SelectOptionType | SelectOptionGroupType,\n): option is SelectOptionGroupType => {\n\treturn 'options' in option;\n};\n\n// Select option component.\n// For use with Combobox and Select components.\ninterface SelectOptionProps extends ComponentPropsWithoutRef<'li'> {\n\tchildren?: ReactNode;\n\tclassName?: string;\n\tisActive?: boolean;\n}\n\nexport const SelectOption = forwardRef(\n\t(\n\t\t{ children, className, isActive, ...props }: SelectOptionProps,\n\t\tref: Ref<HTMLLIElement>,\n\t) => {\n\t\tconst id = useId();\n\n\t\tconst baseClass = 'pds-input__select-option';\n\t\tconst activeClass = isActive ? `${baseClass}--active` : null;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tref={ref}\n\t\t\t\taria-selected={isActive}\n\t\t\t\tclassName={mergeClasses([baseClass, activeClass, className ?? ''])}\n\t\t\t\tid={id}\n\t\t\t\trole='option'\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</li>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef, CSSProperties } from 'react';\n\nimport {\n\tSPACING_2XL,\n\tSPACING_3XL,\n\tSPACING_4XL,\n\tSPACING_5XL,\n\tSPACING_6XL,\n\tSPACING_L,\n\tSPACING_M,\n\tSPACING_S,\n\tSPACING_XL,\n\tSPACING_XS,\n} from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\nimport {\n\tTYPOGRAPHY_SIZE_M,\n\tTYPOGRAPHY_SIZE_S,\n\tTYPOGRAPHY_SIZE_XS,\n} from '@pantheon-systems/pds-design-tokens/build/js/variables.typography.js';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { HiddenLabel } from '@components/inputs/input-utilities';\n\nexport type SpinnerSize =\n\t| 's'\n\t| 'm'\n\t| 'l'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| '6xl';\n\nexport type SpinnerColorType =\n\t| 'full-color'\n\t| 'monochromatic'\n\t| 'monochromatic-reverse';\n\nimport './spinner.css';\n\nexport interface SpinnerProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Spinner color\n\t */\n\tcolorType?: SpinnerColorType;\n\t/**\n\t * Should the spinner be an inline element? If true, it will be displayed inline-block without a visible label.\n\t */\n\tisInline?: boolean;\n\t/**\n\t * Spinner label. Will be displayed below the Spinner if `showLabel` is true.\n\t */\n\tlabel?: string;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Spinner size\n\t */\n\tsize?: SpinnerSize;\n}\n\n// Size mapping for spinner dimensions\nconst spinnerSizes: Record<SpinnerSize, string> = {\n\ts: SPACING_S,\n\tm: SPACING_M,\n\tl: SPACING_L,\n\txl: SPACING_XL,\n\t'2xl': SPACING_2XL,\n\t'3xl': SPACING_3XL,\n\t'4xl': SPACING_4XL,\n\t'5xl': SPACING_5XL,\n\t'6xl': SPACING_6XL,\n};\n\n// Font size mapping for labels\nconst labelFontSizes: Record<SpinnerSize, string> = {\n\ts: TYPOGRAPHY_SIZE_XS,\n\tm: TYPOGRAPHY_SIZE_XS,\n\tl: TYPOGRAPHY_SIZE_XS,\n\txl: TYPOGRAPHY_SIZE_XS,\n\t'2xl': TYPOGRAPHY_SIZE_XS,\n\t'3xl': TYPOGRAPHY_SIZE_S,\n\t'4xl': TYPOGRAPHY_SIZE_S,\n\t'5xl': TYPOGRAPHY_SIZE_M,\n\t'6xl': TYPOGRAPHY_SIZE_M,\n};\n\n// Label margin mapping\nconst labelMargins: Record<SpinnerSize, string> = {\n\ts: SPACING_XS,\n\tm: SPACING_XS,\n\tl: SPACING_XS,\n\txl: SPACING_XS,\n\t'2xl': SPACING_XS,\n\t'3xl': SPACING_S,\n\t'4xl': SPACING_S,\n\t'5xl': SPACING_M,\n\t'6xl': SPACING_L,\n};\n\n/**\n * Spinner UI component\n */\nexport const Spinner = ({\n\tclassName = '',\n\tcolorType = 'full-color',\n\tisInline = false,\n\tlabel = 'Loading',\n\tshowLabel = false,\n\tsize = '3xl',\n\t...props\n}: SpinnerProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-spinner';\n\tconst colorClass =\n\t\tcolorType !== 'full-color' ? `${baseClass}--${colorType}` : null;\n\tconst displayClass = isInline ? `${baseClass}--inline` : null;\n\n\t// Get size values\n\tconst spinnerSize = spinnerSizes[size];\n\tconst fontSize = labelFontSizes[size];\n\tconst labelMargin = labelMargins[size];\n\n\t// Calculate line width: 12% of size, rounded up to nearest pixel\n\tconst lineWidth = Math.ceil(parseFloat(spinnerSize) * 16 * 0.13);\n\n\t// Create inline styles for sizing\n\tconst spinnerStyles = {\n\t\t'--spinner-size': spinnerSize,\n\t\t'--spinner-line': `${lineWidth}px`,\n\t} as CSSProperties;\n\n\tconst labelStyles = {\n\t\tfontSize: fontSize,\n\t\tmarginBlockStart: labelMargin,\n\t} as CSSProperties;\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\taria-hidden='true'\n\t\t\tclassName={mergeClasses([baseClass, colorClass, displayClass, className])}\n\t\t\trole='status'\n\t\t\tstyle={spinnerStyles}\n\t\t\t{...props}\n\t\t>\n\t\t\t<span className={`${baseClass}__icon`}></span>\n\t\t\t{showLabel && !isInline ? (\n\t\t\t\t<span className={`${baseClass}__label`} style={labelStyles}>\n\t\t\t\t\t{label}\n\t\t\t\t</span>\n\t\t\t) : (\n\t\t\t\t<HiddenLabel label={label} />\n\t\t\t)}\n\t\t</span>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tforwardRef,\n\tMouseEvent,\n\tReactNode,\n\tRef,\n} from 'react';\n\nimport { extractText } from '@libs/components/utility-components';\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tButtonDisplayType,\n\tButtonSize,\n\tButtonType,\n\tButtonVariant,\n\tIconSize,\n} from '@libs/types/custom-types';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport {\n\tSpinner,\n\tSpinnerColorType,\n\tSpinnerSize,\n} from '@components/loading-indicators/Spinner/Spinner';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './button.css';\n\ninterface ButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Type of button\n\t */\n\tbuttonType?: ButtonType;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * How the button is displayed.\n\t */\n\tdisplayType?: ButtonDisplayType;\n\t/**\n\t * Which icon to render\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * is the button full width?\n\t */\n\tisFullWidth?: boolean;\n\t/**\n\t * Is the button in the process of an initial load?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Will this be used for a split button?\n\t */\n\tisSplitButton?: boolean;\n\t/**\n\t * Is the button in a working state?\n\t */\n\tisWorking?: boolean;\n\t/**\n\t * The text of the button\n\t */\n\tlabel: ReactNode;\n\t/**\n\t * Click event handler callback\n\t */\n\tonClick?: (e: MouseEvent<HTMLElement>) => void;\n\t/**\n\t * Which size of button to render\n\t * @default 's'\n\t */\n\tsize?: ButtonSize;\n\t/**\n\t * Text for an optional tooltip to be displayed when the button is `disabled`, `isLoading`, or `isWorking`.\n\t */\n\ttooltipText?: string;\n\n\t/**\n\t * Which variant of button to render\n\t */\n\tvariant?: ButtonVariant;\n}\n\n/**\n * A Component used to render a Button\n */\nexport const Button = forwardRef(\n\t(\n\t\t{\n\t\t\tariaLabel,\n\t\t\tbuttonType = 'button',\n\t\t\tclassName = '',\n\t\t\tdisabled = false,\n\t\t\tdisplayType = 'label-only',\n\t\t\ticonName,\n\t\t\tisFullWidth = false,\n\t\t\tisLoading = false,\n\t\t\tisSplitButton = false,\n\t\t\tisWorking = false,\n\t\t\tlabel,\n\t\t\tonClick,\n\t\t\tsize = 's',\n\t\t\ttooltipText,\n\t\t\tvariant = 'primary',\n\t\t\t...props\n\t\t}: ButtonProps,\n\t\tref: Ref<HTMLButtonElement>,\n\t) => {\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-button';\n\t\tconst sizeClass = `${baseClass}--${size}`;\n\t\tconst variantClass = `${baseClass}--${variant}`;\n\t\tconst fullWidthClass = isFullWidth ? `${baseClass}--full-width` : null;\n\t\tconst loadingClass = isLoading ? `${baseClass}--loading` : null;\n\t\tconst pulseClass = isLoading ? 'pds-pulse' : null;\n\n\t\t// Map button sizes to icon and spinner sizes.\n\t\tlet setIconSize: IconSize;\n\t\tlet setSpinnerSize: SpinnerSize;\n\t\tswitch (size) {\n\t\t\tcase 'xs':\n\t\t\t\tsetIconSize = 's';\n\t\t\t\tsetSpinnerSize = 's';\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetSpinnerSize = 'm';\n\t\t\t\tbreak;\n\t\t\tcase 'm':\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetSpinnerSize = 'm';\n\t\t\t\tbreak;\n\t\t\tcase 'l':\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetSpinnerSize = 'l';\n\t\t\t\tbreak;\n\t\t\tcase 'xl':\n\t\t\t\tsetIconSize = 'l';\n\t\t\t\tsetSpinnerSize = 'l';\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Map spinner colors based on button variant.\n\t\tlet setSpinnerColor: SpinnerColorType = 'monochromatic';\n\t\tconst reverseVariants: ButtonVariant[] = ['primary'];\n\t\tif (reverseVariants.includes(variant)) {\n\t\t\tsetSpinnerColor = 'monochromatic-reverse';\n\t\t}\n\n\t\t// Render the chosen icon\n\t\tconst renderedIcon = (\n\t\t\t<Icon\n\t\t\t\tkey='icon'\n\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\ticonName={iconName}\n\t\t\t\ticonSize={setIconSize}\n\t\t\t/>\n\t\t);\n\n\t\t// Set content of the button based on displayType.\n\t\tlet buttonContent = [label];\n\n\t\tif (displayType == 'icon-start' && iconName) {\n\t\t\tbuttonContent.unshift(renderedIcon);\n\t\t}\n\t\tif (displayType == 'icon-end' && iconName) {\n\t\t\tbuttonContent.push(renderedIcon);\n\t\t}\n\n\t\t// Use label as aria-label when used as a split button.\n\t\tif (isSplitButton) {\n\t\t\tbuttonContent = [renderedIcon];\n\t\t\tariaLabel = extractText(label);\n\t\t}\n\n\t\t// Preprocess the button element.\n\t\tconst buttonElement = (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tvariantClass,\n\t\t\t\t\tfullWidthClass,\n\t\t\t\t\tloadingClass,\n\t\t\t\t\tpulseClass,\n\t\t\t\t\tclassName,\n\t\t\t\t])}\n\t\t\t\tdisabled={disabled || isLoading || isWorking}\n\t\t\t\tonClick={onClick}\n\t\t\t\ttype={buttonType}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isWorking && !isLoading && (\n\t\t\t\t\t<Spinner\n\t\t\t\t\t\tclassName={`${baseClass}__working-indicator`}\n\t\t\t\t\t\tcolorType={setSpinnerColor}\n\t\t\t\t\t\tsize={setSpinnerSize}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{buttonContent}\n\t\t\t</button>\n\t\t);\n\n\t\treturn (disabled || isLoading || isWorking) && tooltipText ? (\n\t\t\t<Tooltip content={tooltipText} customTrigger={buttonElement} />\n\t\t) : (\n\t\t\t<>{buttonElement}</>\n\t\t);\n\t},\n);\n","import React, {\n\tcloneElement,\n\tComponentPropsWithoutRef,\n\tisValidElement,\n\tReactElement,\n\tReactNode,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tButtonDisplayType,\n\tButtonSize,\n\tButtonVariant,\n\tIconSize,\n} from '@libs/types/custom-types';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport '../Button/button.css';\nimport './button-link.css';\n\ntype ButtonLinkVariant = Exclude<ButtonVariant, 'navbar' | 'inline'>;\n\n/**\n * Prop types for ButtonLink\n */\nexport interface ButtonLinkProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the link disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Display type of the button.\n\t */\n\tdisplayType?: ButtonDisplayType;\n\t/**\n\t * Icon to render in the button. Only necessary if `displayType` is 'icon-start' or 'icon-end'.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * A link element using the router of your choice.\n\t */\n\tlinkContent: ReactNode;\n\t/**\n\t * Size of the button.\n\t */\n\tsize?: ButtonSize;\n\t/**\n\t * Text for an optional tooltip to be displayed when the button is `disabled`.\n\t */\n\ttooltipText?: string;\n\t/**\n\t * Variant of the button.\n\t */\n\tvariant?: ButtonLinkVariant;\n}\n\n/**\n * ButtonLink UI component\n */\nexport const ButtonLink = ({\n\tclassName,\n\tdisabled = false,\n\tdisplayType = 'label-only',\n\ticonName,\n\tlinkContent,\n\tsize = 's',\n\ttooltipText,\n\tvariant = 'primary',\n\t...props\n}: ButtonLinkProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-button-link';\n\tconst buttonBaseClass = 'pds-button';\n\tconst sizeClass = `${buttonBaseClass}--${size}`;\n\tconst variantClass = `${buttonBaseClass}--${variant}`;\n\tconst buttonModifierClasses = mergeClasses([\n\t\tbuttonBaseClass,\n\t\tsizeClass,\n\t\tvariantClass,\n\t]);\n\n\t// Get the label text from the link element.\n\tconst linkText = isValidElement(linkContent)\n\t\t? (linkContent.props as { children: ReactNode }).children\n\t\t: null;\n\n\t// Map button sizes to icon sizes.\n\tlet setIconSize: IconSize;\n\tswitch (size) {\n\t\tcase 'xs':\n\t\t\tsetIconSize = 's';\n\t\t\tbreak;\n\t\tcase 's':\n\t\t\tsetIconSize = 'm';\n\t\t\tbreak;\n\t\tcase 'm':\n\t\t\tsetIconSize = 'm';\n\t\t\tbreak;\n\t\tcase 'l':\n\t\t\tsetIconSize = 'm';\n\t\t\tbreak;\n\t\tcase 'xl':\n\t\t\tsetIconSize = 'l';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tsetIconSize = 'm';\n\t\t\tbreak;\n\t}\n\n\t// Render the chosen icon\n\tconst renderedIcon = (\n\t\t<Icon\n\t\t\tkey={iconName}\n\t\t\tclassName={`${baseClass}__icon`}\n\t\t\ticonName={iconName}\n\t\t\ticonSize={setIconSize}\n\t\t/>\n\t);\n\n\t// Add the icon to the button if necessary.\n\tlet linkLabel = [linkText];\n\tif (displayType === 'icon-start' && iconName) {\n\t\tlinkLabel = [renderedIcon, linkText];\n\t} else if (displayType === 'icon-end' && iconName) {\n\t\tlinkLabel = [linkText, renderedIcon];\n\t}\n\n\t// Clone the original link element so that we can add the appropriate classes and children to it.\n\tconst processedLink = isValidElement(linkContent)\n\t\t? cloneElement(\n\t\t\t\tlinkContent as ReactElement,\n\t\t\t\tObject.assign({}, linkContent.props, {\n\t\t\t\t\tclassName: buttonModifierClasses,\n\t\t\t\t\tchildren: linkLabel,\n\t\t\t\t}),\n\t\t\t)\n\t\t: null;\n\n\t// If the ButtonLink is disabled, render a disabled regular button.\n\tif (disabled) {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tdisabled\n\t\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t\tlabel={linkLabel}\n\t\t\t\tsize={size}\n\t\t\t\ttooltipText={tooltipText ?? null}\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// If not disabled, render the output.\n\treturn (\n\t\t<span className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{processedLink}\n\t\t</span>\n\t);\n};\n","import { useEffect, useState } from 'react';\n\ninterface ClipboardOptions {\n\tduration?: number;\n}\n\ntype UseClipboardReturn = [boolean, () => Promise<void>];\n\nexport const useClipboard = (\n\ttext: string,\n\toptions?: ClipboardOptions,\n): UseClipboardReturn => {\n\tconst [isCopied, setIsCopied] = useState<boolean>(false);\n\tconst duration = options?.duration;\n\n\tuseEffect(() => {\n\t\tlet id: NodeJS.Timeout | undefined;\n\n\t\tif (isCopied && duration) {\n\t\t\tid = setTimeout(() => {\n\t\t\t\tsetIsCopied(false);\n\t\t\t}, duration);\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (id) {\n\t\t\t\tclearTimeout(id);\n\t\t\t}\n\t\t};\n\t}, [isCopied, duration]);\n\n\tconst doCopy = async () => {\n\t\tif (navigator.clipboard) {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(text);\n\t\t\t\tsetIsCopied(true);\n\t\t\t} catch {\n\t\t\t\t// Intentionally ignore clipboard write errors\n\t\t\t}\n\t\t}\n\t};\n\n\treturn [isCopied, doCopy];\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tforwardRef,\n\tMouseEvent,\n\tRef,\n\tuseRef,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ButtonType, IconSize } from '@libs/types/custom-types';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './icon-button.css';\n\ntype IconButtonSize = 's' | 'm';\n\ninterface IconButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Type of button\n\t */\n\tbuttonType?: ButtonType;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Show tooltip on hover. If false, the title attribute will be used.\n\t */\n\thasTooltip?: boolean;\n\t/**\n\t * Which icon to render second. If this is set, the button will be animated.\n\t */\n\ticon2Name?: PDSIcon;\n\t/**\n\t * Which icon to render.\n\t */\n\ticonName: PDSIcon;\n\t/**\n\t * Click event handler callback.\n\t */\n\tonClick?: (e: MouseEvent<HTMLElement>) => void;\n\t/**\n\t * Which size of button to render.\n\t */\n\tsize?: IconButtonSize;\n\t/**\n\t * Which variant of button to render.\n\t */\n\tvariant?: 'standard' | 'reverse' | 'critical';\n}\n\n/**\n * IconButton UI component\n */\nexport const IconButton = forwardRef(\n\t(\n\t\t{\n\t\t\tariaLabel,\n\t\t\tbuttonType = 'button',\n\t\t\tclassName,\n\t\t\tdisabled = false,\n\t\t\thasTooltip = true,\n\t\t\ticon2Name = null,\n\t\t\ticonName,\n\t\t\tonClick,\n\t\t\tsize = 's',\n\t\t\tvariant = 'standard',\n\t\t\t...props\n\t\t}: IconButtonProps,\n\t\tref: Ref<HTMLButtonElement>,\n\t) => {\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-icon-button';\n\t\tconst sizeClass = size !== 's' ? `${baseClass}--${size}` : null;\n\t\tconst variantClass =\n\t\t\tvariant !== 'standard' ? `${baseClass}--${variant}` : null;\n\n\t\tconst animationClasses = {\n\t\t\tfadeOut: `${baseClass}--fadeOut`,\n\t\t\thide: `${baseClass}--hide`,\n\t\t\tscaleIn: `${baseClass}--scaleIn`,\n\t\t};\n\n\t\t// Map button sizes to icon sizes and offset values.\n\t\tlet setOffsetValue: number;\n\t\tlet setIconSize: IconSize;\n\t\tswitch (size) {\n\t\t\tcase 's':\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetOffsetValue = 8;\n\t\t\t\tbreak;\n\t\t\tcase 'm':\n\t\t\t\tsetIconSize = 'l';\n\t\t\t\tsetOffsetValue = 11;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tsetIconSize = 'm';\n\t\t\t\tsetOffsetValue = 8;\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// If there is a second icon, the button will be animated.\n\t\tconst isAnimated = icon2Name !== null;\n\n\t\t// Set up refs for the two icons.\n\t\tconst icon1Ref = useRef(null);\n\t\tconst icon2Ref = useRef(null);\n\n\t\t// Set up the animation transitions.\n\t\tconst handleAnimation = () => {\n\t\t\ticon1Ref.current.classList.add(animationClasses.fadeOut);\n\t\t\ticon1Ref.current.classList.add(animationClasses.hide);\n\n\t\t\ticon2Ref.current.classList.remove(animationClasses.hide);\n\t\t\ticon2Ref.current.classList.add(animationClasses.scaleIn);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\ticon1Ref.current.classList.remove(\n\t\t\t\t\tanimationClasses.fadeOut,\n\t\t\t\t\tanimationClasses.hide,\n\t\t\t\t);\n\t\t\t\ticon1Ref.current.classList.add(animationClasses.scaleIn);\n\n\t\t\t\ticon2Ref.current.classList.remove(animationClasses.scaleIn);\n\t\t\t\ticon2Ref.current.classList.add(animationClasses.hide);\n\t\t\t}, 2000);\n\t\t};\n\n\t\t// Handle click.\n\t\tconst handleClick = (e: MouseEvent<HTMLElement>) => {\n\t\t\tif (isAnimated) {\n\t\t\t\thandleAnimation();\n\t\t\t}\n\n\t\t\tif (onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t};\n\n\t\t// Preprocess button content.\n\t\tconst buttonContent = isAnimated ? (\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<div ref={icon1Ref} className={`${baseClass}__icon-wrapper`}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\ticonName={iconName}\n\t\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tref={icon2Ref}\n\t\t\t\t\tclassName={`${baseClass}__icon-wrapper ${animationClasses.hide}`}\n\t\t\t\t>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\ticonName={icon2Name}\n\t\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t) : (\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\ticonName={iconName}\n\t\t\t\t\ticonSize={setIconSize}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tvariantClass,\n\t\t\t\t\tclassName,\n\t\t\t\t])}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={handleClick}\n\t\t\t\ttitle={hasTooltip && !disabled ? null : ariaLabel}\n\t\t\t\ttype={buttonType}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{hasTooltip && !disabled ? (\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tclassName={`${baseClass}__tooltip`}\n\t\t\t\t\t\tcontent={ariaLabel}\n\t\t\t\t\t\tcustomTrigger={buttonContent}\n\t\t\t\t\t\toffsetValue={setOffsetValue}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\tbuttonContent\n\t\t\t\t)}\n\t\t\t</button>\n\t\t);\n\t},\n);\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { useClipboard } from '@utilities/hooks/useClipboard/useClipboard';\n\nimport { IconButton } from '@components/buttons/IconButton/IconButton';\n\n/**\n * Prop types for ClipboardButton\n */\nexport interface ClipboardButtonProps\n\textends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Translation string for aria-label attribute and tooltip text.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Text to copy to clipboard.\n\t */\n\tclipboardText?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Which variant of button to render.\n\t */\n\tvariant?: 'standard' | 'reverse';\n}\n\n/**\n * ClipboardButton UI component\n */\nexport const ClipboardButton = ({\n\tariaLabel = 'Copy to clipboard',\n\tclassName,\n\tclipboardText = '',\n\tdisabled,\n\tvariant = 'standard',\n\t...props\n}: ClipboardButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-clipboard-button';\n\n\t// Set up clipboard hook.\n\tconst [_isCopied, setIsCopied] = useClipboard(clipboardText);\n\n\t// Render the output\n\treturn (\n\t\t<IconButton\n\t\t\tariaLabel={ariaLabel}\n\t\t\tbuttonType='button'\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\tdisabled={disabled}\n\t\t\ticon2Name='check'\n\t\t\ticonName='copy'\n\t\t\tonClick={setIsCopied}\n\t\t\tsize='m'\n\t\t\tvariant={variant}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './close-button.css';\n\n/**\n * Prop types for CloseButton\n */\nexport interface CloseButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Aria-label attribute.\n\t */\n\tariaLabel?: string;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Click event callback function.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Size of the icon.\n\t */\n\tsize?: 'm' | 'l' | 'xl';\n}\n\n/**\n * CloseButton UI component\n */\nexport const CloseButton = ({\n\tariaLabel = 'Close',\n\tclassName,\n\tonClick,\n\tsize = 'l',\n\t...props\n}: CloseButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-close-button';\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Render the output\n\treturn (\n\t\t<button\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([baseClass, sizeClass, className ?? ''])}\n\t\t\tonClick={onClick}\n\t\t\ttype='button'\n\t\t\t{...props}\n\t\t>\n\t\t\t<Icon className={`${baseClass}__icon`} iconName='xmarkLarge' />\n\t\t</button>\n\t);\n};\n","import { ReactNode } from 'react';\n\nimport { PDSIcon } from '@components/icons/Icon/Icon';\n\n// Badge color options.\nexport type BadgeColor =\n\t| 'success'\n\t| 'critical'\n\t| 'info'\n\t| 'warning'\n\t| 'neutral'\n\t| 'brand'\n\t| 'silver'\n\t| 'gold'\n\t| 'platinum'\n\t| 'diamond';\n\n// Common button types.\nexport type ButtonDisplayType = 'label-only' | 'icon-start' | 'icon-end';\n\nexport type ButtonSize = 'xs' | 's' | 'm' | 'l' | 'xl';\n\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\nexport type ButtonVariant =\n\t| 'primary'\n\t| 'secondary'\n\t| 'subtle'\n\t| 'brand'\n\t| 'accent'\n\t| 'reverse'\n\t| 'reverse-secondary'\n\t| 'critical'\n\t| 'critical-secondary'\n\t| 'navbar'\n\t| 'inline';\n\n// Standard container width options.\nexport type ContainerWidth = 'narrow' | 'standard' | 'wide' | 'x-wide' | 'full';\n\nexport type Display =\n\t| 'block'\n\t| 'inline'\n\t| 'inline-block'\n\t| 'flex'\n\t| 'inline-flex'\n\t| 'grid'\n\t| 'inline-grid'\n\t| 'flow-root'\n\t| 'none'\n\t| 'contents'\n\t| 'table'\n\t| 'table-row'\n\t| 'table-cell'\n\t| 'table-caption'\n\t| 'table-column'\n\t| 'table-column-group'\n\t| 'table-footer-group'\n\t| 'table-header-group'\n\t| 'table-row-group'\n\t| 'list-item'\n\t| 'inherit'\n\t| 'initial'\n\t| 'revert'\n\t| 'unset';\n\n// Standard status type options (matches CODESTYLE status conventions).\nexport type StatusType =\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'critical'\n\t| 'discovery';\n\n// Extended status type with common additions.\nexport type StatusTypeExtended = StatusType | 'neutral' | 'working';\n\n// Standard labels for status types (default English labels for accessibility).\n// Components allow these to be overridden via typeLabels prop for i18n/translation.\nexport const StatusTypeLabels: Record<StatusType, string> = {\n\tinfo: 'Information',\n\tsuccess: 'Success',\n\twarning: 'Warning',\n\tcritical: 'Critical',\n\tdiscovery: 'Discovery',\n};\n\n// Floating UI component offset options.\nexport type FuiOffset =\n\t| number\n\t| {\n\t\t\talignmentAxis?: number | null;\n\t\t\tcrossAxis?: number;\n\t\t\tmainAxis?: number;\n\t };\n\n// Floating UI placement options.\nexport type FuiPlacement =\n\t| 'top'\n\t| 'top-start'\n\t| 'top-end'\n\t| 'right'\n\t| 'right-start'\n\t| 'right-end'\n\t| 'bottom'\n\t| 'bottom-start'\n\t| 'bottom-end'\n\t| 'left'\n\t| 'left-start'\n\t| 'left-end';\n\nexport type HeadingItemType = {\n\t/**\n\t * Is the item a heading?\n\t */\n\tisHeading: boolean;\n\t/**\n\t * Label for a menu item\n\t */\n\tlabel: string;\n};\n\n// Heading levels for Hx component.\nexport type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span';\nexport type HeadingLevelCommon = Exclude<HeadingLevel, 'h1' | 'h5' | 'h6'>;\n\n// Icon size options\nexport type IconSize = 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl';\n\nexport type LinkItemType = {\n\t/**\n\t * Screen reader label for critical items. Only used when isCritical is true.\n\t */\n\tcriticalLabel?: string;\n\t/**\n\t * Description of the item\n\t */\n\tdescription?: string;\n\t/**\n\t * Is this item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Optional icon for this item. Choose from available icons in the Icon component.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Is this a critical action item?\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Is the item a link?\n\t */\n\tisLink: boolean;\n\t/**\n\t * The content of the link.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Optional `data-testid` value for this item.\n\t */\n\ttestId?: string;\n};\n\nexport type MenuItemType = {\n\t/**\n\t * (optional) Callback function to execute when menu item is activated.\n\t * Receives the menu item as an optional parameter.\n\t */\n\tcallback?: (item?: MenuItemType) => void;\n\t/**\n\t * Screen reader label for critical items. Only used when isCritical is true.\n\t */\n\tcriticalLabel?: string;\n\t/**\n\t * Description of the item\n\t */\n\tdescription?: string;\n\t/**\n\t * Is this item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Optional icon for this item. Choose from available icons in the Icon component.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Optional ID value for this item.\n\t */\n\tid?: string;\n\t/**\n\t * Is this a critical action item?\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Label for a menu item\n\t */\n\tlabel: string;\n\t/**\n\t * Optional `data-testid` value for this item.\n\t */\n\ttestId?: string;\n};\n\nexport type NodeItemType = {\n\t/**\n\t * Screen reader label for critical items. Only used when isCritical is true.\n\t */\n\tcriticalLabel?: string;\n\t/**\n\t * Is this item disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Is this a critical action item?\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Is the item a node?\n\t */\n\tisNode: boolean;\n\t/**\n\t * The content of the node.\n\t */\n\tnodeContent?: ReactNode;\n};\n\nexport type SeparatorItemType = {\n\t/**\n\t * Is the item a separator?\n\t */\n\tisSeparator: boolean;\n};\n\n// Menu item union type\nexport type MenuItem =\n\t| HeadingItemType\n\t| LinkItemType\n\t| MenuItemType\n\t| NodeItemType\n\t| SeparatorItemType;\n\n// Menu item type guard functions\nexport const isSeparatorItemType = (\n\titem: MenuItem,\n): item is SeparatorItemType => {\n\treturn 'isSeparator' in item && item.isSeparator;\n};\n\nexport const isHeadingItemType = (item: MenuItem): item is HeadingItemType => {\n\treturn 'isHeading' in item && item.isHeading;\n};\n\nexport const isLinkItemType = (item: MenuItem): item is LinkItemType => {\n\treturn 'isLink' in item && item.isLink;\n};\n\nexport const isNodeItemType = (item: MenuItem): item is NodeItemType => {\n\treturn 'isNode' in item && item.isNode;\n};\n\n// Site plan level options.\nexport type SitePlanLevel =\n\t| 'sandbox'\n\t| 'basic'\n\t| 'performance-small'\n\t| 'performance-medium'\n\t| 'performance-large'\n\t| 'performance-xl'\n\t| 'performance-2xl'\n\t| 'elite'\n\t| 'pro'\n\t| 'business'\n\t| 'flagship-performance';\n\nexport const SitePlanLevelLabel: Record<SitePlanLevel, string> = {\n\tsandbox: 'Sandbox',\n\tbasic: 'Basic',\n\t'performance-small': 'Performance Small',\n\t'performance-medium': 'Performance Medium',\n\t'performance-large': 'Performance Large',\n\t'performance-xl': 'Performance XL',\n\t'performance-2xl': 'Performance 2XL',\n\telite: 'Elite',\n\tpro: 'Professional',\n\tbusiness: 'Business',\n\t'flagship-performance': 'Flagship Performance',\n};\n\n// Site status options.\nexport type SiteStatus = 'active' | 'frozen' | 'restricted';\n\n// Site type options.\nexport type SiteType = 'drupal' | 'wordpress' | 'gatsby' | 'nextjs';\n\nexport const SiteTypeLabel: Record<SiteType, string> = {\n\tdrupal: 'Drupal',\n\twordpress: 'WordPress',\n\tgatsby: 'Gatsby',\n\tnextjs: 'Next.js',\n};\n\nexport const SiteTypeIcon: Record<SiteType, PDSIcon> = {\n\tdrupal: 'drupal',\n\twordpress: 'wordpress',\n\tgatsby: 'bolt',\n\tnextjs: 'bolt',\n};\n\nexport type SpacingScaleOptions =\n\t| '6xs'\n\t| '5xs'\n\t| '4xs'\n\t| '3xs'\n\t| '2xs'\n\t| 'xs'\n\t| 's'\n\t| 'm'\n\t| 'l'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| '6xl'\n\t| '7xl'\n\t| '8xl';\n\nexport type TypeScaleOptions =\n\t| 'xs'\n\t| 's'\n\t| 'm'\n\t| 'l'\n\t| 'xl'\n\t| '2xl'\n\t| '3xl'\n\t| '4xl'\n\t| '5xl'\n\t| '6xl'\n\t| '7xl'\n\t| '8xl'\n\t| '9xl';\n","import { useEffect, useState } from 'react';\n\nexport const useWindowWidth = () => {\n\tconst isBrowser = typeof window !== 'undefined';\n\n\tconst [windowWidth, setWindowWidth] = useState(\n\t\tisBrowser && window.innerWidth !== undefined ? window.innerWidth : 1024,\n\t);\n\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tsetWindowWidth(window.innerWidth);\n\n\t\tconst handleResize = () => {\n\t\t\tsetWindowWidth(window.innerWidth);\n\t\t};\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t};\n\t}, []);\n\n\treturn windowWidth;\n};\n","import React, { createContext, useEffect } from 'react';\n\nimport { useWindowWidth } from '@utilities/hooks/useWindowWidth/useWindowWidth';\n\nexport const ResponsiveContext = createContext(null);\n\nexport const ResponsiveContextProvider = ({\n\tchildren,\n\tmobileMenuMaxWidth = 640,\n}) => {\n\t// Get window width.\n\tconst windowWidth = useWindowWidth();\n\n\t// Check if mobile.\n\tconst isMobile = windowWidth <= mobileMenuMaxWidth;\n\n\t// Prepare the context value.\n\tconst contextValue = {\n\t\tisMobile: isMobile,\n\t\tmobileMenuMaxWidth: mobileMenuMaxWidth,\n\t\twindowWidth: windowWidth,\n\t};\n\n\t// Disallow horizontal scrolling on mobile.\n\tuseEffect(() => {\n\t\tif (isMobile) {\n\t\t\tdocument.body.classList.add('pds-no-scroll-x');\n\t\t} else {\n\t\t\tdocument.body.classList.remove('pds-no-scroll-x');\n\t\t}\n\t}, [isMobile]);\n\n\treturn (\n\t\t<ResponsiveContext.Provider value={contextValue}>\n\t\t\t{children}\n\t\t</ResponsiveContext.Provider>\n\t);\n};\n","import React, {\n\tComponentPropsWithRef,\n\tJSXElementConstructor,\n\tKeyboardEvent,\n\tMouseEvent,\n\tReactElement,\n\tReactNode,\n\tuseContext,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport { autoUpdate, flip, useFloating } from '@floating-ui/react';\n\nimport { extractText } from '@libs/components/utility-components';\nimport { createRandomID, mergeClasses } from '@libs/components/utils';\nimport {\n\tButtonVariant,\n\tHeadingItemType,\n\tisHeadingItemType,\n\tisLinkItemType,\n\tisNodeItemType,\n\tisSeparatorItemType,\n\tLinkItemType,\n\tMenuItem,\n\tMenuItemType,\n\tNodeItemType,\n\tSeparatorItemType,\n} from '@libs/types/custom-types';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { IconButton } from '@components/buttons/IconButton/IconButton';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './menu-button.css';\n\ntype MenuButtonSize = 's' | 'm';\n\n/**\n * Prop types for MenuButton\n */\nexport interface MenuButtonProps extends ComponentPropsWithRef<'span'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * How the button is displayed.\n\t */\n\tdisplayType?: 'icon-end' | 'icon-only';\n\t/**\n\t * Icon name for icon-only buttons.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * ID value for this component.\n\t */\n\tid: string;\n\t/**\n\t * Will this be used for a split button?\n\t */\n\tisSplitButton?: boolean;\n\t/**\n\t * The text of the button\n\t */\n\tlabel: ReactNode;\n\t/**\n\t * Array of menu items\n\t */\n\tmenuItems: Array<\n\t\t| HeadingItemType\n\t\t| LinkItemType\n\t\t| MenuItemType\n\t\t| NodeItemType\n\t\t| SeparatorItemType\n\t>;\n\t/**\n\t * Horizontal position of the menu relative to the button. Applies to breakpoints `md` and up.\n\t */\n\tmenuPosition?: 'start' | 'end';\n\t/**\n\t * Optional callback function for when the button is clicked or activated by the keyboard.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Which size of button to render.\n\t */\n\tsize?: MenuButtonSize;\n\t/**\n\t * Optional `data-testid` value for this component.\n\t */\n\ttestId?: string;\n\t/**\n\t * Translatable string for description of unlabeled group of menu items.\n\t */\n\tundefinedLabel?: string;\n\t/**\n\t * Which variant of button to render — only valid for icon-end (default) display type.\n\t */\n\tvariant?: Extract<ButtonVariant, 'primary' | 'secondary' | 'navbar'>;\n\t/**\n\t * Is this button located with the Navbar component?\n\t * This will adjust the styling and position of the dropdown.\n\t * Omit this prop for the Dashboard application. It only applies to the standard Navbar component with a bottom border.\n\t */\n\twithinNavbar?: boolean;\n}\n\n/**\n * MenuButton UI component\n */\nexport const MenuButton = ({\n\tclassName,\n\tdisabled,\n\tdisplayType = 'icon-end',\n\ticonName = 'ellipsisVertical',\n\tid,\n\tisSplitButton = false,\n\tlabel,\n\tmenuItems,\n\tmenuPosition = 'start',\n\tonClick,\n\tsize = 's',\n\ttestId,\n\tundefinedLabel = 'Unlabeled group',\n\tvariant = 'primary',\n\twithinNavbar,\n\t...props\n}: MenuButtonProps) => {\n\t// Floating UI support\n\tconst { placement, refs, strategy, x, y } = useFloating({\n\t\tplacement: 'bottom-start',\n\t\tmiddleware: [flip()],\n\t\twhileElementsMounted: autoUpdate,\n\t});\n\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Is it used in a mobile navbar?\n\tconst isMobileNavbar = variant === 'navbar' && isMobile;\n\n\t// Set up classes.\n\tconst baseClass = 'pds-menu-button';\n\tconst mobileClass = isMobileNavbar ? `${baseClass}--isMobile` : null;\n\tconst navbarClass = withinNavbar ? `${baseClass}--navbar` : null;\n\n\t// Generate a short unique ID to add to ID attributes.\n\tconst triggerID = id;\n\tconst [listboxID] = useState(`menu-button-${id}`);\n\n\tconst menuRefActual = refs.floating;\n\tconst nodeRef = useRef(null);\n\n\tconst [isOpen, setIsOpen] = useState(false);\n\tconst [focusMenu, setFocusMenu] = useState(false);\n\tconst [activeDescendant, setActiveDescendant] = useState('');\n\tconst [activeMenuItemIndex, setActiveMenuItemIndex] = useState(0);\n\n\t// Non-state instance trackers\n\tconst groupIDs = useRef([]);\n\tconst menuItemIDs = useRef([]);\n\tconst focusableMenuItems = useRef([]);\n\n\tuseLayoutEffect(() => {\n\t\t// setup the onClick outside handler\n\t\twindow.addEventListener('mousedown', handleClickOutside, true);\n\n\t\t// Add the Floating UI data attribute\n\t\tconst menuElem = menuRefActual.current;\n\n\t\tif (menuElem) {\n\t\t\tmenuElem.dataset.fuiPlacement = placement;\n\t\t}\n\n\t\t// only focus the menu when state instructs us to\n\t\tif (focusMenu) {\n\t\t\t// focus the menu element\n\t\t\t// NOTE: setTimeout is used to prevent focus change from conflicting with Floating UI\n\t\t\tsetTimeout(() => {\n\t\t\t\tmenuElem.focus();\n\t\t\t}, 0);\n\t\t\t// reset state\n\t\t\tsetFocusMenu(false);\n\t\t}\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('mousedown', handleClickOutside, true);\n\t\t};\n\t}, [isOpen, placement]);\n\n\t// Internal/support methods\n\tconst setActiveMenuItem = (elemID: string | undefined, index: number) => {\n\t\tsetActiveDescendant(elemID);\n\t\tsetActiveMenuItemIndex(index);\n\t};\n\n\tconst openMenu = () => {\n\t\tsetIsOpen(true);\n\t\tsetFocusMenu(true);\n\t};\n\n\tconst closeMenu = () => {\n\t\tsetIsOpen(false);\n\t\tsetActiveMenuItem(undefined, -1); // remove current selection to reset menu\n\t\tconst triggerElement = nodeRef.current?.querySelector(\n\t\t\t`#${triggerID}`,\n\t\t) as HTMLElement | null;\n\t\ttriggerElement?.focus();\n\t};\n\n\tconst setFocusByFirstCharacter = (char: string) => {\n\t\t// ensure lowercase for easier comparison\n\t\tchar = char.toLowerCase();\n\t\t// track if we've found an item yet\n\t\tlet itemFound = false;\n\n\t\t// loop from current active index to end of focusable items\n\t\tfor (\n\t\t\tlet i = activeMenuItemIndex + 1;\n\t\t\ti < focusableMenuItems.current.length;\n\t\t\ti++\n\t\t) {\n\t\t\tconst item = focusableMenuItems.current[i];\n\n\t\t\tif (item.label.toLowerCase().startsWith(char)) {\n\t\t\t\tsetActiveMenuItem(menuItemIDs.current[i], i);\n\t\t\t\t// report that we found an item\n\t\t\t\titemFound = true;\n\t\t\t\t// break out of loop\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// loop from beginning of focusable items to item prior to current active index\n\t\t// !! Continue search only if we haven't found an item yet\n\t\tif (itemFound === false) {\n\t\t\tfor (let i = 0; i < activeMenuItemIndex; i++) {\n\t\t\t\tconst item = focusableMenuItems.current[i];\n\n\t\t\t\tif (item.label.toLowerCase().startsWith(char)) {\n\t\t\t\t\tsetActiveMenuItem(menuItemIDs.current[i], i);\n\t\t\t\t\t// break out of loop\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst activateMenuItem = (itemID: string) => {\n\t\tconst itemIndex = menuItemIDs.current.indexOf(itemID);\n\t\tconst item = focusableMenuItems.current[itemIndex];\n\n\t\t// only execute callback if there is one and the item is not disabled\n\t\tif (item.callback && !item.disabled) {\n\t\t\titem.callback(item);\n\t\t}\n\n\t\t// Activate link if it exists and is not disabled\n\t\tif (item.linkContent && !item.disabled) {\n\t\t\tconst linkElement = nodeRef.current?.querySelector(\n\t\t\t\t`#${itemID} a`,\n\t\t\t) as HTMLAnchorElement | null;\n\t\t\tlinkElement?.click();\n\t\t}\n\t};\n\n\tconst activateCurrentMenuItem = () => {\n\t\tconst currentItemID = menuItemIDs.current[activeMenuItemIndex];\n\t\tactivateMenuItem(currentItemID);\n\t};\n\n\t// Event handler functions\n\tconst handleTriggerClick = (event: MouseEvent<HTMLButtonElement>) => {\n\t\tif (isOpen) {\n\t\t\tcloseMenu();\n\t\t} else {\n\t\t\topenMenu();\n\t\t}\n\n\t\tif (onClick) {\n\t\t\tonClick();\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t};\n\n\tconst handleMenuItemClick = (event: MouseEvent<HTMLLIElement>) => {\n\t\tactivateMenuItem(event.currentTarget.id);\n\n\t\tif (!isMobileNavbar) {\n\t\t\tcloseMenu();\n\t\t}\n\t};\n\n\tconst handleButtonKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n\t\tconst key = event.key;\n\t\tlet flag = false;\n\n\t\tswitch (key) {\n\t\t\t// open menu and focus on first menu item\n\t\t\tcase ' ':\n\t\t\tcase 'Enter':\n\t\t\tcase 'ArrowDown':\n\t\t\tcase 'Down': {\n\t\t\t\topenMenu();\n\t\t\t\t// Find the first non-disabled item\n\t\t\t\tlet firstEnabledIndex = 0;\n\t\t\t\tfor (let i = 0; i < focusableMenuItems.current.length; i++) {\n\t\t\t\t\tif (!focusableMenuItems.current[i]?.disabled) {\n\t\t\t\t\t\tfirstEnabledIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetActiveMenuItem(\n\t\t\t\t\tmenuItemIDs.current[firstEnabledIndex],\n\t\t\t\t\tfirstEnabledIndex,\n\t\t\t\t);\n\t\t\t\tflag = true;\n\n\t\t\t\tif (onClick) {\n\t\t\t\t\tonClick();\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// close menu\n\t\t\tcase 'Esc':\n\t\t\tcase 'Escape':\n\t\t\t\tcloseMenu();\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\n\t\t\t// open menu and focus on last menu item\n\t\t\tcase 'Up':\n\t\t\tcase 'ArrowUp': {\n\t\t\t\topenMenu();\n\t\t\t\t// Find the last non-disabled item\n\t\t\t\tlet lastEnabledIndex = menuItemIDs.current.length - 1;\n\t\t\t\tfor (let i = menuItemIDs.current.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (!focusableMenuItems.current[i]?.disabled) {\n\t\t\t\t\t\tlastEnabledIndex = i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetActiveMenuItem(\n\t\t\t\t\tmenuItemIDs.current[lastEnabledIndex],\n\t\t\t\t\tlastEnabledIndex,\n\t\t\t\t);\n\t\t\t\tflag = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// do nothing\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// if something desired happened prevent default behavior\n\t\tif (flag) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst handleMenuKeydown = (event: KeyboardEvent<HTMLElement>) => {\n\t\tconst key = event.key;\n\t\tlet flag = false,\n\t\t\tmoveToItemID = '',\n\t\t\tmoveToIndex = 0;\n\n\t\tfunction isPrintableCharacter(str: string) {\n\t\t\treturn str.length === 1 && str.match(/\\S/);\n\t\t}\n\n\t\tif (event.ctrlKey || event.altKey || event.metaKey) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.shiftKey) {\n\t\t\tif (isPrintableCharacter(key)) {\n\t\t\t\tsetFocusByFirstCharacter(key);\n\t\t\t\tflag = true;\n\t\t\t}\n\n\t\t\tif (event.key === 'Tab') {\n\t\t\t\tcloseMenu();\n\t\t\t\tflag = true;\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (key) {\n\t\t\t\tcase ' ':\n\t\t\t\tcase 'Enter':\n\t\t\t\t\tcloseMenu();\n\t\t\t\t\tactivateCurrentMenuItem();\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Esc':\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tcloseMenu();\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'Up':\n\t\t\t\tcase 'ArrowUp': {\n\t\t\t\t\t// Find the next non-disabled item going backwards\n\t\t\t\t\tlet attempts = 0;\n\t\t\t\t\tconst maxAttempts = menuItemIDs.current.length;\n\t\t\t\t\tmoveToIndex = activeMenuItemIndex - 1;\n\n\t\t\t\t\twhile (attempts < maxAttempts) {\n\t\t\t\t\t\tif (moveToIndex < 0) {\n\t\t\t\t\t\t\tmoveToIndex = menuItemIDs.current.length - 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if the item at this index is disabled\n\t\t\t\t\t\tconst item = focusableMenuItems.current[moveToIndex];\n\t\t\t\t\t\tif (!item?.disabled) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmoveToIndex--;\n\t\t\t\t\t\tattempts++;\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveToItemID = menuItemIDs.current[moveToIndex];\n\t\t\t\t\tsetActiveMenuItem(moveToItemID, moveToIndex);\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\tcase 'Down': {\n\t\t\t\t\t// Find the next non-disabled item going forwards\n\t\t\t\t\tlet attempts = 0;\n\t\t\t\t\tconst maxAttempts = menuItemIDs.current.length;\n\t\t\t\t\tmoveToIndex = activeMenuItemIndex + 1;\n\n\t\t\t\t\twhile (attempts < maxAttempts) {\n\t\t\t\t\t\tif (moveToIndex > menuItemIDs.current.length - 1) {\n\t\t\t\t\t\t\tmoveToIndex = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check if the item at this index is disabled\n\t\t\t\t\t\tconst item = focusableMenuItems.current[moveToIndex];\n\t\t\t\t\t\tif (!item?.disabled) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmoveToIndex++;\n\t\t\t\t\t\tattempts++;\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveToItemID = menuItemIDs.current[moveToIndex];\n\t\t\t\t\tsetActiveMenuItem(moveToItemID, moveToIndex);\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'Home':\n\t\t\t\tcase 'PageUp': {\n\t\t\t\t\t// Find the first non-disabled item\n\t\t\t\t\tlet firstEnabledIndex = 0;\n\t\t\t\t\tfor (let i = 0; i < focusableMenuItems.current.length; i++) {\n\t\t\t\t\t\tif (!focusableMenuItems.current[i]?.disabled) {\n\t\t\t\t\t\t\tfirstEnabledIndex = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetActiveMenuItem(\n\t\t\t\t\t\tmenuItemIDs.current[firstEnabledIndex],\n\t\t\t\t\t\tfirstEnabledIndex,\n\t\t\t\t\t);\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'End':\n\t\t\t\tcase 'PageDown': {\n\t\t\t\t\t// Find the last non-disabled item\n\t\t\t\t\tlet lastEnabledIndex = menuItemIDs.current.length - 1;\n\t\t\t\t\tfor (let i = menuItemIDs.current.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (!focusableMenuItems.current[i]?.disabled) {\n\t\t\t\t\t\t\tlastEnabledIndex = i;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetActiveMenuItem(\n\t\t\t\t\t\tmenuItemIDs.current[lastEnabledIndex],\n\t\t\t\t\t\tlastEnabledIndex,\n\t\t\t\t\t);\n\t\t\t\t\tflag = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase 'Tab':\n\t\t\t\t\tcloseMenu();\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (isPrintableCharacter(key)) {\n\t\t\t\t\t\tsetFocusByFirstCharacter(key);\n\t\t\t\t\t\tflag = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (flag) {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\t// Handle click outside event to close menu if open\n\tconst handleClickOutside = (event: Event) => {\n\t\tif (nodeRef.current && !nodeRef.current.contains(event.target as Node)) {\n\t\t\tif (isOpen) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t}\n\t};\n\n\t// function to render each menu item correctly\n\tconst renderItem = (\n\t\titem: MenuItem,\n\t\tindex: number,\n\t\tgroupID: string = '',\n\t\tgroupHeadingID: string = '',\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t...props: any[]\n\t) => {\n\t\tconst groupIDString = groupID ? `-group-${groupID}` : '';\n\t\tconst fallbackItemID = triggerID + groupIDString + '-item-' + (index + 1);\n\n\t\t// If ID is not passed into menu item, generate one.\n\t\tconst itemID = 'id' in item && item.id ? item.id : fallbackItemID;\n\n\t\t// render a separator if found\n\t\tif (isSeparatorItemType(item)) {\n\t\t\treturn <li key={itemID} role='separator'></li>;\n\t\t}\n\n\t\t// render a heading if found\n\t\tif (isHeadingItemType(item)) {\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\tkey={groupHeadingID}\n\t\t\t\t\tclassName={`${baseClass}__listbox-heading`}\n\t\t\t\t\tid={groupHeadingID ? groupHeadingID : null}\n\t\t\t\t\trole='presentation'\n\t\t\t\t>\n\t\t\t\t\t{item.label}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\n\t\t// render a node if found\n\t\tif (isNodeItemType(item)) {\n\t\t\treturn (\n\t\t\t\t<li key={itemID} role='presentation'>\n\t\t\t\t\t{item.nodeContent}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\n\t\t// Render a link item or regular menu item\n\t\tif (isLinkItemType(item) || ('label' in item && item.label)) {\n\t\t\tmenuItemIDs.current.push(itemID);\n\t\t\tfocusableMenuItems.current.push(item);\n\n\t\t\t// decide if this item should be shown to have focus\n\t\t\tlet shouldFocus = false;\n\t\t\tif (activeDescendant !== '' && !item.disabled) {\n\t\t\t\tshouldFocus = activeDescendant === itemID;\n\t\t\t}\n\n\t\t\t// Check if this is a critical item\n\t\t\tconst isCritical = 'isCritical' in item && item.isCritical;\n\t\t\tconst criticalLabel =\n\t\t\t\t'criticalLabel' in item ? item.criticalLabel : undefined;\n\n\t\t\t// Set item label\n\t\t\tlet itemLabel: ReactNode[] = [];\n\n\t\t\t// if a regular menu item, use the label\n\t\t\tif ('label' in item && item.label) {\n\t\t\t\titemLabel = [item.label];\n\t\t\t}\n\n\t\t\t// if a link item, use the link content\n\t\t\tif (isLinkItemType(item) && item.linkContent) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tconst linkElement = item.linkContent as ReactElement<any>;\n\t\t\t\titemLabel = [linkElement.props.children];\n\t\t\t}\n\n\t\t\tif (item.iconName) {\n\t\t\t\t// Render the chosen icon\n\t\t\t\tconst renderedIcon = (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tkey={`icon-${triggerID}`}\n\t\t\t\t\t\ticonName={item.iconName}\n\t\t\t\t\t\ticonSize='m'\n\t\t\t\t\t/>\n\t\t\t\t);\n\n\t\t\t\titemLabel.unshift(renderedIcon);\n\t\t\t}\n\n\t\t\t// Add visually-hidden critical label if needed\n\t\t\tif (isCritical && criticalLabel) {\n\t\t\t\titemLabel.unshift(\n\t\t\t\t\t<span key={`critical-${triggerID}`} className='visually-hidden'>\n\t\t\t\t\t\t{criticalLabel}\n\t\t\t\t\t</span>,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet itemDescription: ReactNode;\n\t\t\tif (item.description) {\n\t\t\t\titemDescription = (\n\t\t\t\t\t<span className={`${baseClass}__item-description`}>\n\t\t\t\t\t\t{item.description}\n\t\t\t\t\t</span>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Render the item content based on type\n\t\t\tlet itemContent: ReactNode;\n\n\t\t\tif (isLinkItemType(item) && item.linkContent) {\n\t\t\t\t// Set link element based on the type of link element passed in.\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tconst linkElement = item.linkContent as ReactElement<\n\t\t\t\t\tany, // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\t\t\t\tJSXElementConstructor<any> // eslint-disable-line @typescript-eslint/no-explicit-any\n\t\t\t\t>;\n\t\t\t\tconst LinkElement = linkElement.type;\n\n\t\t\t\titemContent = (\n\t\t\t\t\t<LinkElement tabIndex={-1} {...linkElement.props}>\n\t\t\t\t\t\t<span className={`${baseClass}__item-label`}>{itemLabel}</span>\n\t\t\t\t\t\t{itemDescription}\n\t\t\t\t\t</LinkElement>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\titemContent = (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<span className={`${baseClass}__item-label`}>{itemLabel}</span>\n\t\t\t\t\t\t{itemDescription}\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Build class name for the menu item\n\t\t\tconst menuItemClasses = mergeClasses([\n\t\t\t\tshouldFocus ? `${baseClass}__item-focused` : null,\n\t\t\t\tisCritical ? `${baseClass}__item-critical` : null,\n\t\t\t]);\n\n\t\t\treturn (\n\t\t\t\t<li\n\t\t\t\t\tkey={itemID}\n\t\t\t\t\taria-disabled={item.disabled ? true : null}\n\t\t\t\t\tclassName={menuItemClasses}\n\t\t\t\t\tdata-testid={item.testId}\n\t\t\t\t\tid={itemID}\n\t\t\t\t\tonClick={handleMenuItemClick}\n\t\t\t\t\trole='menuitem'\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{itemContent}\n\t\t\t\t</li>\n\t\t\t);\n\t\t}\n\t};\n\n\t// Function to render grouped items\n\tconst renderMenuItemsGrouped = (\n\t\titems: MenuItem[],\n\t\tmenuItemBreaks: MenuItem[],\n\t) => {\n\t\tconst groupedItems: MenuItem[][] = [];\n\n\t\t// Copy the array to avoid mutation\n\t\tconst breaks = [...menuItemBreaks];\n\n\t\t// get the first break item\n\t\tlet breakItem = breaks.shift();\n\n\t\t// setup our temporary storage for this group\n\t\tlet group: MenuItem[] = [];\n\n\t\t// iterate over all menu items\n\t\titems.map((item: MenuItem, index: number) => {\n\t\t\t// if the item isn't the first break item then add it to the group\n\t\t\tif (item !== breakItem) {\n\t\t\t\tgroup.push(item);\n\n\t\t\t\t// if this is the last item then add it to the group\n\t\t\t\tif (index + 1 === items.length) {\n\t\t\t\t\tgroupedItems.push(group);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// if we have a break item then add the group to the overall items data,\n\t\t\t\t// reset the temporary group storage,\n\t\t\t\t// add the break item to the new group,\n\t\t\t\t// get the next break item\n\t\t\t\tgroupedItems.push(group);\n\t\t\t\tgroup = [];\n\t\t\t\tgroup.push(item);\n\t\t\t\tbreakItem = breaks.shift();\n\t\t\t}\n\t\t});\n\n\t\t// filter out empty groups\n\t\treturn groupedItems.filter((group) => group.length > 0);\n\t};\n\n\t// Function to render the items\n\tconst renderMenuItems = (items: MenuItem[]) => {\n\t\t// reset tracking variables\n\t\tmenuItemIDs.current = [];\n\t\tfocusableMenuItems.current = [];\n\n\t\t// Chunk menu items into groups if needed\n\t\tconst itemsData = items;\n\t\t// check if we have any separators or headings in the dataset\n\t\tconst menuItemBreaks = items.filter(\n\t\t\tisHeadingItemType || isSeparatorItemType,\n\t\t);\n\t\tconst haveBreaks = menuItemBreaks.length > 0;\n\n\t\t// Set up listbox classes.\n\t\tlet listboxClasses: string[] = [`${baseClass}__listbox`];\n\n\t\tif (withinNavbar) {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--navbar`);\n\t\t}\n\n\t\tif (menuPosition === 'end') {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--end`);\n\t\t}\n\n\t\tif (displayType === 'icon-only') {\n\t\t\tlistboxClasses.push(`${baseClass}__listbox--icon-only`);\n\t\t}\n\n\t\tlistboxClasses = mergeClasses(listboxClasses);\n\n\t\t// if we have breaks then split into groups at each marker\n\t\tif (haveBreaks) {\n\t\t\t// group the items together\n\t\t\tconst groupedItemsData = renderMenuItemsGrouped(items, menuItemBreaks);\n\n\t\t\t// setup group IDs\n\t\t\tgroupedItemsData.forEach(() => {\n\t\t\t\tgroupIDs.current.push(createRandomID());\n\t\t\t});\n\t\t\tlet currentGroupID = groupIDs.current[0];\n\n\t\t\t// locate first valid item to properly set initial value for aria-activedescendant on menu/listbox\n\t\t\tconst firstMenuItemIndex = groupedItemsData[0].findIndex(\n\t\t\t\t(item: MenuItem) =>\n\t\t\t\t\t!isSeparatorItemType(item) && !isHeadingItemType(item),\n\t\t\t);\n\n\t\t\t// set active descendant ID value in component state\n\t\t\tconst initialDescendant = `${triggerID}-group-${currentGroupID}-item-${\n\t\t\t\tfirstMenuItemIndex + 1\n\t\t\t}`;\n\n\t\t\t// Render grouped items in listbox\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\taria-activedescendant={\n\t\t\t\t\t\tactiveDescendant !== '' ? activeDescendant : initialDescendant\n\t\t\t\t\t}\n\t\t\t\t\taria-labelledby={triggerID}\n\t\t\t\t\tclassName={listboxClasses.toString()}\n\t\t\t\t\tid={listboxID}\n\t\t\t\t\tonKeyDown={handleMenuKeydown}\n\t\t\t\t\trole='menu'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tvisibility: isOpen ? 'visible' : 'hidden',\n\t\t\t\t\t\topacity: isOpen ? '1' : '0',\n\t\t\t\t\t\ttransition: 'var(--pds-animation-transition-reveal)',\n\t\t\t\t\t\tposition: strategy,\n\t\t\t\t\t\ttransform: `translate(${Math.round(x)}px,${Math.round(y)}px)`,\n\t\t\t\t\t\tzIndex: 'var(--pds-z-index-dropdown)',\n\t\t\t\t\t}}\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t>\n\t\t\t\t\t{groupedItemsData.map((group: MenuItem[], index: number) => {\n\t\t\t\t\t\tcurrentGroupID = groupIDs.current[index];\n\t\t\t\t\t\tconst hasHeading = 'isHeading' in group[0] && group[0].isHeading;\n\t\t\t\t\t\tconst groupHeadingID = hasHeading\n\t\t\t\t\t\t\t? `${triggerID}-group-${currentGroupID}-heading`\n\t\t\t\t\t\t\t: '';\n\t\t\t\t\t\tconst keyID = `${triggerID}-group-${currentGroupID}`;\n\n\t\t\t\t\t\tconst groupLabel = hasHeading\n\t\t\t\t\t\t\t? null\n\t\t\t\t\t\t\t: `${undefinedLabel} ${index + 1}`;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ul\n\t\t\t\t\t\t\t\tkey={keyID}\n\t\t\t\t\t\t\t\taria-label={groupLabel}\n\t\t\t\t\t\t\t\taria-labelledby={groupHeadingID}\n\t\t\t\t\t\t\t\trole='group'\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{group.map((item: MenuItem, index: number) => {\n\t\t\t\t\t\t\t\t\treturn renderItem(\n\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\tcurrentGroupID,\n\t\t\t\t\t\t\t\t\t\tgroupHeadingID,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else {\n\t\t\t// Render plain listbox without any groups\n\n\t\t\t// set initial active descendant ID value\n\t\t\tconst initialDescendant = `${triggerID}-item-1`;\n\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<ul\n\t\t\t\t\t\tref={refs.setFloating}\n\t\t\t\t\t\taria-activedescendant={\n\t\t\t\t\t\t\tactiveDescendant !== '' ? activeDescendant : initialDescendant\n\t\t\t\t\t\t}\n\t\t\t\t\t\taria-labelledby={triggerID}\n\t\t\t\t\t\tclassName={listboxClasses.toString()}\n\t\t\t\t\t\tid={listboxID}\n\t\t\t\t\t\tonKeyDown={handleMenuKeydown}\n\t\t\t\t\t\trole='menu'\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tvisibility: isOpen ? 'visible' : 'hidden',\n\t\t\t\t\t\t\topacity: isOpen ? '1' : '0',\n\t\t\t\t\t\t\ttransition: 'var(--pds-animation-transition-reveal)',\n\t\t\t\t\t\t\tposition: strategy,\n\t\t\t\t\t\t\ttransform: `translate(${Math.round(x)}px,${Math.round(y)}px)`,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t>\n\t\t\t\t\t\t{itemsData.map((item: MenuItem, index: number) => {\n\t\t\t\t\t\t\treturn renderItem(item, index);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</ul>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t};\n\n\t// Preprocess button\n\tlet menuButtonDisplayType: React.JSX.Element | undefined;\n\n\t// Display type based on regular buttons.\n\tif (displayType === 'icon-end') {\n\t\tmenuButtonDisplayType = (\n\t\t\t<Button\n\t\t\t\tref={refs.setReference}\n\t\t\t\taria-controls={listboxID}\n\t\t\t\taria-expanded={isOpen}\n\t\t\t\taria-haspopup='true'\n\t\t\t\tclassName={`${baseClass}__trigger`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tdisplayType={displayType}\n\t\t\t\ticonName='angleDown'\n\t\t\t\tid={triggerID}\n\t\t\t\tisSplitButton={isSplitButton}\n\t\t\t\tlabel={label}\n\t\t\t\tonClick={handleTriggerClick}\n\t\t\t\tonKeyDown={handleButtonKeyDown}\n\t\t\t\tsize={size}\n\t\t\t\ttype='button'\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Display type based on icon buttons.\n\tif (displayType === 'icon-only') {\n\t\tconst labelText = extractText(label);\n\n\t\tmenuButtonDisplayType = (\n\t\t\t<IconButton\n\t\t\t\tref={refs.setReference}\n\t\t\t\taria-controls={listboxID}\n\t\t\t\taria-expanded={isOpen}\n\t\t\t\taria-haspopup='true'\n\t\t\t\tariaLabel={labelText}\n\t\t\t\tclassName={`${baseClass}__trigger ${baseClass}__trigger--icon-only`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\thasTooltip={false}\n\t\t\t\ticonName={iconName}\n\t\t\t\tid={triggerID}\n\t\t\t\tonClick={handleTriggerClick}\n\t\t\t\tonKeyDown={handleButtonKeyDown}\n\t\t\t\tsize={size}\n\t\t\t\ttype='button'\n\t\t\t\tvariant='standard'\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Accommodations for mobile navbar usage.\n\n\t// Handle the expand/collapse within mobile Navbar.\n\tconst handleExpand = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t// Control button classes and aria-expanded attribute.\n\t\tconst button = e.target as HTMLButtonElement;\n\t\tbutton.classList.toggle(`${baseClass}__toggle--expanded`);\n\t\tbutton.setAttribute(\n\t\t\t'aria-expanded',\n\t\t\tbutton.getAttribute('aria-expanded') === 'true' ? 'false' : 'true',\n\t\t);\n\n\t\t// Control menu classes.\n\t\tconst menu = button.nextElementSibling as HTMLElement;\n\t\tmenu.classList.toggle(`${baseClass}__mobile-menu--expanded`);\n\t};\n\n\t// Process menu items for mobile navbar.\n\tconst MobileMenuItems = () => {\n\t\treturn (\n\t\t\t<ul className={`${baseClass}__mobile-menu`} role='menu'>\n\t\t\t\t{menuItems.map((item, index) => {\n\t\t\t\t\treturn renderItem(item, index);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t);\n\t};\n\n\t// Process buttons for mobile navbar.\n\tlet menuButtonMobileDisplayType: React.JSX.Element | undefined;\n\n\tconst buttonVariant =\n\t\tdisplayType === 'icon-end' ? 'pds-button pds-button--navbar' : null;\n\tconst mobileButtonClasses = mergeClasses([\n\t\t`${baseClass}__toggle`,\n\t\tbuttonVariant,\n\t]);\n\n\tif (isMobileNavbar) {\n\t\tmenuButtonMobileDisplayType = (\n\t\t\t<button\n\t\t\t\taria-expanded={false}\n\t\t\t\tclassName={mobileButtonClasses}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tid={triggerID}\n\t\t\t\tonClick={handleExpand}\n\t\t\t\ttype='button'\n\t\t\t>\n\t\t\t\t{displayType === 'icon-only' ? (\n\t\t\t\t\t<span className={`${baseClass}__icon-label`}>\n\t\t\t\t\t\t<Icon iconName={iconName} /> {label}\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tlabel\n\t\t\t\t)}\n\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={`${baseClass}__toggle-icon ${baseClass}__toggle-icon--${displayType}`}\n\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\ticonSize='m'\n\t\t\t\t/>\n\t\t\t</button>\n\t\t);\n\t}\n\n\t// Markup for when in a navbar mobile view.\n\tconst navbarMobileMarkup = menuButtonMobileDisplayType;\n\n\t// Set up expanded class.\n\tconst expandedClass = isOpen ? `${baseClass}--expanded` : null;\n\n\t// Render the output.\n\treturn (\n\t\t<span\n\t\t\tref={nodeRef}\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tnavbarClass,\n\t\t\t\tmobileClass,\n\t\t\t\texpandedClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\tdata-testid={testId}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobileNavbar ? (\n\t\t\t\t<>\n\t\t\t\t\t{navbarMobileMarkup}\n\t\t\t\t\t<MobileMenuItems />\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t{menuButtonDisplayType}\n\t\t\t\t\t{renderMenuItems(menuItems)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</span>\n\t);\n};\n","import React, { MouseEvent, useState } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Tally } from '@components/badges/Tally/Tally';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './segmented-button.css';\n\n/**\n * Structure for each option in the SegmentedButton component.\n */\ninterface OptionType {\n\tdisabled?: boolean;\n\ticonName?: PDSIcon;\n\tid?: string;\n\tlabel: string;\n\ttally?: {\n\t\tlabel: string | number;\n\t\ttype: 'neutral' | 'critical' | 'warning' | 'info' | 'success';\n\t};\n\tvalue: string;\n}\n\n/**\n * Interface for handling selection events.\n */\ninterface HandleSelectionEvent extends MouseEvent<HTMLInputElement> {\n\ttarget: HTMLInputElement;\n}\n\n/**\n * Prop types for SegmentedButton\n */\nexport interface SegmentedButtonProps {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Optional initial selected option value.\n\t */\n\tdefaultValue?: string;\n\t/**\n\t * Is the SegmentedButton disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Unique ID for the SegmentedButton.\n\t */\n\tid: string;\n\t/**\n\t * Label for the SegmentedButton — visually hidden, used for screen readers only.\n\t */\n\tlabel: string;\n\t/**\n\t * Callback function that will return the updated value from the instance when it changes.\n\t */\n\tonChange?: (value: string) => void;\n\t/**\n\t * Array of button options — must be between 2 and 6 options.\n\t */\n\toptions: OptionType[];\n\t/**\n\t * Size of the SegmentedButton.\n\t */\n\tsize?: 's' | 'm';\n\t/**\n\t * Value of the Segmented Button. Used to set the value of the field when controlled. Cannot be used in conjunction with the `defaultValue` prop.\n\t */\n\tvalue?: string;\n}\n\n/**\n * SegmentedButton UI component\n */\nexport const SegmentedButton = ({\n\tclassName,\n\tdefaultValue,\n\tdisabled = false,\n\tid,\n\tlabel,\n\tonChange,\n\toptions,\n\tsize = 's',\n\tvalue,\n\t...props\n}: SegmentedButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-segmented-button';\n\tconst disabledClass = disabled ? 'pds-is-disabled' : null;\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Map button sizes to icon sizes.\n\tconst iconSize = size === 's' ? 's' : 'm';\n\n\t// Determine if the input is controlled.\n\tconst isControlled = typeof value != 'undefined';\n\n\t// When a component is not controlled, it can have a defaultValue.\n\tconst hasDefaultValue = typeof defaultValue != 'undefined';\n\n\t// If the input is uncontrolled, use state within the component to manage the value.\n\tconst [internalValue, setInternalValue] = useState(\n\t\thasDefaultValue ? defaultValue : '',\n\t);\n\n\t// Handle selection changes.\n\tconst handleSelection = (e: HandleSelectionEvent) => {\n\t\tsetInternalValue(e.target.value);\n\n\t\tif (onChange) {\n\t\t\tonChange(e.target.value);\n\t\t}\n\t};\n\n\t// Render the output\n\tif (options.length >= 2 && options.length <= 6) {\n\t\treturn (\n\t\t\t<fieldset\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tsizeClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<legend className='visually-hidden'>{label}</legend>\n\n\t\t\t\t<div className={`${baseClass}__options`}>\n\t\t\t\t\t{options.map((radio, idx) => {\n\t\t\t\t\t\t// Determine if the option is checked.\n\t\t\t\t\t\tconst isChecked = isControlled\n\t\t\t\t\t\t\t? value === radio.value\n\t\t\t\t\t\t\t: internalValue === radio.value;\n\n\t\t\t\t\t\t// Option classes.\n\t\t\t\t\t\tconst optionClass = `${baseClass}__option`;\n\t\t\t\t\t\tconst checkedClass = isChecked ? `${optionClass}--checked` : null;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={`${id}-option-${idx}`}\n\t\t\t\t\t\t\t\tclassName={mergeClasses([optionClass, checkedClass])}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tchecked={isChecked}\n\t\t\t\t\t\t\t\t\tclassName='visually-hidden'\n\t\t\t\t\t\t\t\t\tdisabled={disabled || radio.disabled}\n\t\t\t\t\t\t\t\t\tid={radio.id ? radio.id : `${id}-option-${idx}`}\n\t\t\t\t\t\t\t\t\tname={id}\n\t\t\t\t\t\t\t\t\tonChange={handleSelection}\n\t\t\t\t\t\t\t\t\ttype='radio'\n\t\t\t\t\t\t\t\t\tvalue={radio.value}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\thtmlFor={radio.id ? radio.id : `${id}-option-${idx}`}\n\t\t\t\t\t\t\t\t\ttitle={radio.label}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{radio.iconName && (\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__icon`}\n\t\t\t\t\t\t\t\t\t\t\ticonName={radio.iconName}\n\t\t\t\t\t\t\t\t\t\t\ticonSize={iconSize}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<span className={`${baseClass}__label-text`}>\n\t\t\t\t\t\t\t\t\t\t{radio.label}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{radio.tally && (\n\t\t\t\t\t\t\t\t\t\t<Tally\n\t\t\t\t\t\t\t\t\t\t\tclassName={`${baseClass}__tally`}\n\t\t\t\t\t\t\t\t\t\t\tlabel={radio.tally.label}\n\t\t\t\t\t\t\t\t\t\t\ttype={radio.tally.type}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</fieldset>\n\t\t);\n\t}\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport {\n\tButtonVariant,\n\tLinkItemType,\n\tMenuItemType,\n} from '@libs/types/custom-types';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { ButtonLink } from '@components/buttons/ButtonLink/ButtonLink';\nimport { MenuButton } from '@components/buttons/MenuButton/MenuButton';\n\nimport './split-button.css';\n\ntype SplitButtonSize = 's' | 'm';\n\n/**\n * Prop types for SplitButton\n */\ninterface SplitButtonProps extends ComponentPropsWithoutRef<'span'> {\n\t/**\n\t * Array of menu items\n\t */\n\tactionItems: Array<LinkItemType | MenuItemType>;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * ID value for this component.\n\t */\n\tid: string;\n\t/**\n\t * Label for the buttons additional actions menu.\n\t */\n\tmoreActionsLabel?: string;\n\t/**\n\t * Which size of button to render\n\t */\n\tsize?: SplitButtonSize;\n\t/**\n\t * Which variant of button to render\n\t */\n\tvariant?: Extract<ButtonVariant, 'primary' | 'secondary'>;\n}\n\n/**\n * A component used to render a button with a primary action and a menu of additional options\n */\nexport const SplitButton = ({\n\tactionItems,\n\tclassName,\n\tdisabled,\n\tid,\n\tmoreActionsLabel = 'More actions',\n\tsize = 's',\n\tvariant = 'primary',\n\t...props\n}: SplitButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-split-button';\n\tconst variantClass = `${baseClass}--${variant}`;\n\n\t// Separate the primary action from the rest.\n\tconst primaryAction = actionItems[0];\n\tconst moreActions = actionItems.slice(1);\n\n\t// Preprocess the first item based on its type.\n\tlet primaryActionElement = null;\n\n\tif ('isLink' in primaryAction && primaryAction.isLink === true) {\n\t\tprimaryActionElement = (\n\t\t\t<ButtonLink\n\t\t\t\tclassName={`${baseClass}__primary-action`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tdisplayType='label-only'\n\t\t\t\tlinkContent={primaryAction.linkContent}\n\t\t\t\tsize={size}\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t} else if ('label' in primaryAction) {\n\t\tprimaryActionElement = (\n\t\t\t<Button\n\t\t\t\tclassName={`${baseClass}__primary-action`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tlabel={primaryAction.label}\n\t\t\t\tonClick={() => primaryAction.callback()}\n\t\t\t\tsize={size}\n\t\t\t\tvariant={variant}\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<span\n\t\t\tclassName={mergeClasses([baseClass, variantClass, className])}\n\t\t\tid={id}\n\t\t\t{...props}\n\t\t>\n\t\t\t{primaryActionElement}\n\t\t\t<MenuButton\n\t\t\t\tisSplitButton\n\t\t\t\tclassName={`${baseClass}__menu-button`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tdisplayType='icon-end'\n\t\t\t\tid={`${id}-menu`}\n\t\t\t\tlabel={moreActionsLabel}\n\t\t\t\tmenuItems={moreActions}\n\t\t\t\tsize={size}\n\t\t\t\ttestId={null}\n\t\t\t\tvariant={variant}\n\t\t\t\twithinNavbar={false}\n\t\t\t/>\n\t\t</span>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './platform-icon.css';\n\ntype PlatformType =\n\t| 'drupal'\n\t| 'drupal7'\n\t| 'front-end-sites'\n\t| 'gatsby'\n\t| 'gatsby-wp'\n\t| 'google'\n\t| 'import-custom'\n\t| 'microsoft'\n\t| 'next'\n\t| 'next-drupal'\n\t| 'next-wp'\n\t| 'splunk'\n\t| 'sumo-logic'\n\t| 'wordpress';\n\ninterface PlatformIconProps extends ComponentPropsWithoutRef<'div'> {\n\tclassName?: string;\n\t/**\n\t * Which size of icon to render\n\t */\n\ticonSize?: 'm' | 'l' | 'xl' | '2xl';\n\tplatformType: PlatformType;\n}\n\n/**\n * PlatformIcon UI component\n */\nexport const PlatformIcon = ({\n\tclassName,\n\ticonSize = '2xl',\n\tplatformType,\n\t...props\n}: PlatformIconProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-platform-icon';\n\tconst platformClass = `pds-platform-icon--${platformType}`;\n\tconst sizeClass = `pds-platform-icon--${iconSize}`;\n\n\t// Preprocess icon.\n\tlet processedIcon;\n\n\t// Icon pairs get rendered from single platform svgs.\n\tconst iconPairs = ['front-end-sites', 'gatsby-wp', 'next-drupal', 'next-wp'];\n\n\tif (iconPairs.includes(platformType)) {\n\t\t// Map icon pairs to a single element.\n\t\tlet iconPair = [];\n\t\tswitch (platformType) {\n\t\t\tcase 'front-end-sites':\n\t\t\t\ticonPair = ['next', 'gatsby'];\n\t\t\t\tbreak;\n\t\t\tcase 'next-drupal':\n\t\t\t\ticonPair = ['next', 'drupal'];\n\t\t\t\tbreak;\n\t\t\tcase 'gatsby-wp':\n\t\t\t\ticonPair = ['gatsby', 'wordpress'];\n\t\t\t\tbreak;\n\t\t\tcase 'next-wp':\n\t\t\t\ticonPair = ['next', 'wordpress'];\n\t\t\t\tbreak;\n\t\t}\n\n\t\tprocessedIcon = (\n\t\t\t<span className={`${baseClass}__group`}>\n\t\t\t\t{svgData[iconPair[0]]}\n\t\t\t\t{svgData[iconPair[1]]}\n\t\t\t</span>\n\t\t);\n\t} else {\n\t\tprocessedIcon = svgData[platformType];\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, platformClass, sizeClass, className])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{processedIcon}\n\t\t</div>\n\t);\n};\n\n// SVG Paths for each icon.\nconst svgData = {\n\tdrupal: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect\n\t\t\t\tfill='var(--pds-color-partner-drupal)'\n\t\t\t\theight='32'\n\t\t\t\trx='16'\n\t\t\t\twidth='32'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M23.027 12.9858C23.027 12.9602 23.0016 12.9474 22.9762 12.9218C21.7311 11.5139 19.9652 9.51725 18.6948 8.09655C18.301 7.67418 17.9071 7.25181 17.5387 6.81664C17.4498 6.71425 17.3736 6.61185 17.2846 6.50946C17.2084 6.43267 17.1703 6.38147 17.1703 6.38147C16.7383 5.8695 16.3953 5.29354 16.1539 4.67919L16.0904 4.5384C16.0904 4.5384 16.0904 4.5384 16.065 4.5128C16.065 4.5128 16.0269 4.5 16.0142 4.5C15.9888 4.5 15.9761 4.5128 15.9634 4.5128C15.9634 4.52133 15.9549 4.52986 15.938 4.5384L15.8745 4.67919C15.6204 5.29354 15.2773 5.8695 14.8581 6.38147C14.8581 6.38147 14.82 6.43267 14.7438 6.50946C14.6548 6.61185 14.5786 6.71425 14.4897 6.81664C14.1086 7.25181 13.7274 7.67418 13.3336 8.09655C12.0632 9.51725 10.2846 11.5139 9.03954 12.9218C9.02683 12.9474 9.01413 12.9602 8.98872 12.9858C4.28813 19.2958 9.39526 24.441 9.39526 24.441H9.38256C10.8944 26.2073 13.0414 27.2952 15.3409 27.4616C15.5441 27.4872 15.7601 27.5 15.9888 27.5C16.2048 27.5 16.4207 27.4872 16.6367 27.4616C18.9489 27.2952 21.0832 26.2073 22.595 24.441C22.595 24.441 27.7149 19.2958 23.0143 12.9858H23.027ZM12.0886 17.4271L11.9742 17.6063C11.1103 18.6686 10.6022 19.7949 10.437 20.9085C10.4116 21.0492 10.2846 21.1388 10.1575 21.1132C10.0686 21.1004 10.0051 21.0365 9.96695 20.9597C9.73828 20.4221 9.58582 19.8589 9.5096 19.283C9.2174 17.2479 9.82721 15.4688 11.123 13.9457C11.6439 13.3442 12.1648 12.7426 12.6857 12.1411C12.7746 12.0387 12.9271 12.0259 13.0287 12.1155L13.0541 12.1411C13.4733 12.6274 14.0196 13.2546 14.6294 13.9713C14.7057 14.0609 14.7057 14.2017 14.6294 14.3041C13.7909 15.3152 12.9016 16.3904 12.1013 17.4143L12.0886 17.4271ZM19.3046 22.7003C18.8218 23.9802 17.869 24.7482 16.5224 24.9658C14.604 25.2602 12.8127 23.9418 12.5205 22.0092C12.5205 21.9836 12.5205 21.9708 12.5205 21.9452C12.3681 20.8573 12.6984 19.8973 13.3971 19.0782C14.2102 18.1183 16.0015 15.8912 16.0269 15.8528C16.065 15.8912 17.9707 18.2846 18.6821 19.1294C19.5841 20.1917 19.8001 21.4076 19.3173 22.7003H19.3046ZM22.1377 20.6909C22.1377 20.7293 22.0996 20.7805 22.0869 20.8189C22.036 20.9469 21.8963 21.0109 21.7692 20.9597C21.693 20.9213 21.6295 20.8573 21.6168 20.7677C21.4389 19.6925 20.9308 18.6174 20.105 17.6063L20.0288 17.4783L19.9779 17.4143C19.3173 16.5696 15.8236 12.4482 14.2991 10.6436C14.2229 10.554 14.2229 10.4132 14.2991 10.3108C14.8073 9.74764 15.3155 9.18447 15.8109 8.60851C15.8999 8.50612 16.0523 8.50612 16.1539 8.60851C16.3826 8.8645 16.5986 9.10768 16.8146 9.36366C18.1993 10.9252 19.5968 12.461 20.9435 14.0353C22.6458 16.0192 23.0397 18.2974 22.1377 20.7037V20.6909Z'\n\t\t\t\tfill='white'\n\t\t\t/>\n\t\t</svg>\n\t),\n\tdrupal7: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect\n\t\t\t\tfill='var(--pds-color-partner-drupal)'\n\t\t\t\theight='32'\n\t\t\t\trx='16'\n\t\t\t\twidth='32'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M20.2634 9.37661C19.2723 8.72036 18.3214 8.46255 17.375 7.8063C16.7946 7.3938 15.9777 6.40005 15.2991 5.54224C15.1786 6.91567 14.7857 7.47349 14.317 7.86255C13.3661 8.65942 12.7634 8.90317 11.9286 9.37661C11.2232 9.76567 7.42857 12.5079 7.42857 17.6172C7.42857 22.736 11.5268 26.5 16.0804 26.5C20.6205 26.5 24.5714 23.0313 24.5714 17.7813C24.5714 12.5172 20.8661 9.76567 20.2634 9.37661ZM20.375 24.6391C19.4777 25.5813 16.3527 25.9844 15.1652 24.836C14.9509 24.611 15.1786 24.2735 15.4554 24.2735C15.4554 24.2735 16.2143 24.8969 17.7545 24.8969C18.9598 24.8969 19.808 24.536 20.1875 24.2407C20.4598 24.025 20.5625 24.4422 20.375 24.6391ZM17.942 22.1735C18.3304 22.0047 19.2366 21.9954 19.5848 22.2344C19.7679 22.3657 20.3036 23.1157 19.8616 23.3454C19.4866 23.5422 19.808 22.6094 18.6786 22.6094C18.0223 22.6094 17.808 22.8532 17.4866 23.125C17.1741 23.4063 17.0491 23.5 16.942 23.3454C16.6741 22.961 17.6518 22.3 17.942 22.1735ZM22.0714 22.9844C21.3929 22.9375 20.0402 20.6969 19.1696 20.6641C17.7902 20.6219 14.5223 24.4469 11.9688 22.6329C10.2366 21.386 11.317 17.7204 14.2813 17.7016C16.4911 17.6782 18.0223 19.9985 19.125 19.975C20.0759 19.961 21.8839 18.0157 22.7768 18.0157C24.9509 18.0157 23.817 23.1391 22.0714 22.9844Z'\n\t\t\t\tfill='white'\n\t\t\t/>\n\t\t</svg>\n\t),\n\twordpress: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<circle cx='16' cy='16' fill='white' r='16' />\n\t\t\t<path\n\t\t\t\td='M16 0.96001C18.0309 0.96001 20.0004 1.35745 21.8541 2.14178C22.745 2.51859 23.6047 2.98515 24.4087 3.52852C25.2055 4.0666 25.9543 4.68485 26.6355 5.36549C27.3161 6.04614 27.9344 6.79543 28.4724 7.59224C29.0158 8.39624 29.4819 9.25545 29.8592 10.1468C30.643 12.0006 31.041 13.9701 31.041 16.001C31.041 18.0319 30.6435 20.0013 29.8592 21.8551C29.4824 22.746 29.0158 23.6057 28.4724 24.4097C27.9344 25.2065 27.3161 25.9553 26.6355 26.6364C25.9548 27.3171 25.2055 27.9353 24.4087 28.4734C23.6047 29.0168 22.7455 29.4829 21.8541 29.8601C20.0004 30.644 18.0309 31.0419 16 31.0419C13.9691 31.0419 11.9996 30.6445 10.1459 29.8601C9.25497 29.4833 8.39528 29.0168 7.59128 28.4734C6.79447 27.9353 6.04566 27.3171 5.36453 26.6364C4.68389 25.9558 4.06564 25.2065 3.52756 24.4097C2.98419 23.6057 2.51811 22.7465 2.14082 21.8551C1.35697 20.0013 0.95905 18.0319 0.95905 16.001C0.95905 13.9701 1.35649 12.0006 2.14082 10.1468C2.51763 9.25593 2.98419 8.39624 3.52756 7.59224C4.06564 6.79543 4.68389 6.04662 5.36453 5.36549C6.04518 4.68485 6.79447 4.0666 7.59128 3.52852C8.39528 2.98515 9.25449 2.51907 10.1459 2.14178C11.9996 1.35793 13.9691 0.96001 16 0.96001ZM16 0C7.16359 0 0 7.16359 0 16C0 24.8364 7.16359 32 16 32C24.8364 32 32 24.8364 32 16C32 7.16359 24.8369 0 16 0Z'\n\t\t\t\tfill='var(--pds-color-partner-wordpress)'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M2.6669 15.9996C2.6669 21.2772 5.73365 25.8382 10.1819 27.9992L3.82131 10.5736C3.08162 12.2316 2.6669 14.0666 2.6669 15.9996ZM25.0015 15.3271C25.0015 13.6788 24.4097 12.5378 23.9023 11.6498C23.2265 10.5511 22.5924 9.62129 22.5924 8.52255C22.5924 7.2971 23.5217 6.15613 24.8316 6.15613C24.8906 6.15613 24.9468 6.16333 25.0044 6.16669C22.6322 3.99323 19.4714 2.66602 16.0005 2.66602C11.342 2.66602 7.24423 5.05644 4.86004 8.67568C5.17301 8.68576 5.46821 8.692 5.71829 8.692C7.11271 8.692 9.27177 8.52255 9.27177 8.52255C9.99033 8.48031 10.0753 9.53632 9.35721 9.62129C9.35721 9.62129 8.6348 9.70577 7.83127 9.74801L12.6865 24.1904L15.605 15.4394L13.528 9.74801C12.8094 9.70577 12.1297 9.62129 12.1297 9.62129C11.4111 9.57904 11.4952 8.48031 12.2142 8.52255C12.2142 8.52255 14.4155 8.692 15.7259 8.692C17.1203 8.692 19.2799 8.52255 19.2799 8.52255C19.9984 8.48031 20.0834 9.53632 19.3648 9.62129C19.3648 9.62129 18.6415 9.70577 17.8389 9.74801L22.6577 24.0805L24.0334 19.722C24.6444 17.8174 25.0025 16.4676 25.0025 15.3266L25.0015 15.3271ZM16.2342 17.166L12.2329 28.7903C13.4276 29.1416 14.691 29.3336 16 29.3336C17.5528 29.3336 19.0423 29.0658 20.428 28.5776C20.3925 28.5205 20.3594 28.46 20.3325 28.3938L16.2342 17.166ZM27.7006 9.60353C27.7577 10.0283 27.7904 10.4839 27.7904 10.9744C27.7904 12.3271 27.5369 13.8477 26.7761 15.75L22.7037 27.5245C26.6676 25.2133 29.3336 20.9192 29.3336 16.0001C29.3336 13.6821 28.7412 11.5024 27.7006 9.60353Z'\n\t\t\t\tfill='var(--pds-color-partner-wordpress)'\n\t\t\t/>\n\t\t</svg>\n\t),\n\tgatsby: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_14628_82557)'>\n\t\t\t\t<path\n\t\t\t\t\td='M16 32C24.8366 32 32 24.8366 32 16C32 7.16344 24.8366 0 16 0C7.16344 0 0 7.16344 0 16C0 24.8366 7.16344 32 16 32Z'\n\t\t\t\t\tfill='var(--pds-color-partner-gatsby)'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M7.0857 24.9142C4.6857 22.5142 3.42856 19.3142 3.42856 16.2285L15.8857 28.5714C12.6857 28.4571 9.4857 27.3142 7.0857 24.9142Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td='M18.7429 28.2285L3.77142 13.257C5.02857 7.65704 10.0571 3.42847 16 3.42847C20.2286 3.42847 23.8857 5.48561 26.1714 8.57132L24.4571 10.057C22.5143 7.42847 19.4286 5.71418 16 5.71418C11.5429 5.71418 7.77142 8.57132 6.28571 12.5713L19.4286 25.7142C22.7429 24.5713 25.2571 21.7142 26.0571 18.2856H20.5714V15.9999H28.5714C28.5714 21.9428 24.3429 26.9713 18.7429 28.2285Z'\n\t\t\t\t\tfill='white'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_14628_82557'>\n\t\t\t\t\t<rect fill='white' height='32' width='32' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tgoogle: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='30'\n\t\t\tviewBox='0 0 30 30'\n\t\t\twidth='30'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<path\n\t\t\t\td='M15.306 12.2727V18.0818H23.5436C23.1819 19.95 22.0964 21.5319 20.4684 22.5955L25.4359 26.3728C28.3302 23.7547 30 19.9092 30 15.341C30 14.2774 29.9026 13.2546 29.7217 12.2729L15.306 12.2727Z'\n\t\t\t\tfill='#4285F4'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M6.72795 17.855L5.60757 18.6955L1.64178 21.7227C4.16036 26.6181 9.32237 30 15.3057 30C19.4383 30 22.903 28.6636 25.4356 26.3728L20.468 22.5955C19.1044 23.4955 17.365 24.041 15.3057 24.041C11.3261 24.041 7.94488 21.4092 6.7342 17.8637L6.72795 17.855Z'\n\t\t\t\tfill='#34A853'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M1.64183 8.27734C0.598274 10.2954 0 12.5727 0 15C0 17.4272 0.598274 19.7045 1.64183 21.7226C1.64183 21.7362 6.73474 17.8499 6.73474 17.8499C6.42861 16.9499 6.24767 15.9954 6.24767 14.9998C6.24767 14.0042 6.42861 13.0498 6.73474 12.1498L1.64183 8.27734Z'\n\t\t\t\tfill='#FBBC05'\n\t\t\t/>\n\t\t\t<path\n\t\t\t\td='M15.3624 5.97272C17.6166 5.97272 19.6203 6.73634 21.2205 8.20909L25.6037 3.91369C22.9459 1.48646 19.4952 0 15.3624 0C9.37908 0 4.21676 3.36818 1.69818 8.27728L6.79093 12.15C8.00145 8.60452 11.3828 5.97272 15.3624 5.97272Z'\n\t\t\t\tfill='#EA4335'\n\t\t\t/>\n\t\t</svg>\n\t),\n\tmicrosoft: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='30'\n\t\t\tviewBox='0 0 30 30'\n\t\t\twidth='30'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g clipPath='url(#clip0_627_542)'>\n\t\t\t\t<path d='M30 0H15.6295V14.3705H30V0Z' fill='#80BC06' />\n\t\t\t\t<path d='M14.3705 0H0V14.3705H14.3705V0Z' fill='#F25325' />\n\t\t\t\t<path d='M14.3705 15.6295H0V30.0001H14.3705V15.6295Z' fill='#05A6F0' />\n\t\t\t\t<path d='M15.6295 15.6295H30V30.0001H15.6295V15.6295Z' fill='#FEBA08' />\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<clipPath id='clip0_627_542'>\n\t\t\t\t\t<rect fill='white' height='30' width='30' />\n\t\t\t\t</clipPath>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tnext: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 180 180'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<mask\n\t\t\t\theight='180'\n\t\t\t\tid='nextjs_mask'\n\t\t\t\tmaskUnits='userSpaceOnUse'\n\t\t\t\tstyle={{ maskType: 'alpha' }}\n\t\t\t\twidth='180'\n\t\t\t\tx='0'\n\t\t\t\ty='0'\n\t\t\t>\n\t\t\t\t<circle cx='90' cy='90' fill='black' r='90' />\n\t\t\t</mask>\n\t\t\t<g mask='url(#nextjs_mask)'>\n\t\t\t\t<circle cx='90' cy='90' fill='var(--pds-color-partner-nextjs)' r='90' />\n\t\t\t\t<path\n\t\t\t\t\td='M149.508 157.52L69.142 54H54V125.97H66.1136V69.3836L139.999 164.845C143.333 162.614 146.509 160.165 149.508 157.52Z'\n\t\t\t\t\tfill='url(#nextjs_gradient_diagonal)'\n\t\t\t\t/>\n\t\t\t\t<rect\n\t\t\t\t\tfill='url(#nextjs_gradient_vertical)'\n\t\t\t\t\theight='72'\n\t\t\t\t\twidth='12'\n\t\t\t\t\tx='115'\n\t\t\t\t\ty='54'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t\t<defs>\n\t\t\t\t<linearGradient\n\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\tid='nextjs_gradient_diagonal'\n\t\t\t\t\tx1='109'\n\t\t\t\t\tx2='144.5'\n\t\t\t\t\ty1='116.5'\n\t\t\t\t\ty2='160.5'\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor='white' />\n\t\t\t\t\t<stop offset='1' stopColor='white' stopOpacity='0' />\n\t\t\t\t</linearGradient>\n\t\t\t\t<linearGradient\n\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\tid='nextjs_gradient_vertical'\n\t\t\t\t\tx1='121'\n\t\t\t\t\tx2='120.799'\n\t\t\t\t\ty1='54'\n\t\t\t\t\ty2='106.875'\n\t\t\t\t>\n\t\t\t\t\t<stop stopColor='white' />\n\t\t\t\t\t<stop offset='1' stopColor='white' stopOpacity='0' />\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\t),\n\tsplunk: (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g transform='scale(0.6667)'>\n\t\t\t\t<path\n\t\t\t\t\td='M37.5,4h-27A6.5,6.5,0,0,0,4,10.5v27A6.5,6.5,0,0,0,10.5,44h27A6.5,6.5,0,0,0,44,37.5v-27A6.5,6.5,0,0,0,37.5,4ZM33.6,26.1c0,.1,0,.2-.2.3L14.7,35.8c-.1.1-.3-.1-.3-.2V30.8c0-.1,0-.2.1-.2l13.6-6.8L14.5,16.9c-.1,0-.1-.1-.1-.2V11.9c0-.1.2-.3.3-.2l18.7,9.4a.5.5,0,0,1,.2.4Z'\n\t\t\t\t\tfill='#000000'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</svg>\n\t),\n\t'sumo-logic': (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<g transform='scale(0.03125)'>\n\t\t\t\t<circle cx='512' cy='512' fill='#000099' r='512' />\n\t\t\t\t<path\n\t\t\t\t\td='M352.9 361.4c-12.7-2.7-21.8-5.1-26.9-6.3-6.3-1.8-11.2-4.2-13.6-7.6v-13.9c4.2-6.6 14.5-10.9 28.7-10.9 19.6 0 33.2 4.5 54.7 21.5l25.1-30.2c-25.4-21.2-47.1-28.7-78.6-28.7-36.3 0-61.3 14.8-71.3 36v45.9c7.9 15.4 26 24.2 62.2 32 13 3 21.8 5.1 26.9 6 6.6 2.1 12.7 4.8 16 9.7v16c-4.5 7.3-15.4 11.2-29.6 11.2-10.3.3-20.2-1.8-29.6-5.7-9.1-3.6-19.6-10.6-32.9-21.5l-26.9 29.9c29 25.7 53.5 34.4 88.2 34.4 37.2 0 63.5-14.2 73.4-36.9v-46.2c-8.4-17.2-28.7-26.2-65.8-34.7zm401.5-70.1v182.5h-42.6v-19.3c-9.7 15.7-27.5 24.8-53.5 24.8-43.2 0-64.7-22.4-64.7-58v-130h46.5v117.5c0 19 10.3 30.2 30.2 30.2 23.3 0 37.5-13.3 37.5-37.8v-110h46.6zM531.8 606.9v127.5h-46.5V620.8c0-21.8-8.8-35.1-29-35.1s-32 15.1-32 36.3v112.4h-46.5V620.8c0-23.3-9.7-35.1-29-35.1-20.5 0-32 15.1-32 36.3v112.4h-46.5V551.9h43.2v20.2c10.6-17.5 28.1-26.3 52-26.3 23.3 0 40.8 9.7 50.8 26.9 12.4-17.8 30.8-26.9 54.7-26.9 38.8.1 60.8 23.4 60.8 61.1zm139.8-62.8c-42 0-74.9 22.7-88.5 58.9v76.8c13.3 36.3 46.5 58.9 88.5 58.9s74.6-22.7 87.9-58.6v-77.4c-13.5-35.9-46.5-58.6-87.9-58.6zm43 124.2c-7.3 19.3-22.7 30.8-43.2 30.8-20.2 0-36.3-11.5-43.5-30.8v-53.8c7.3-19.3 22.7-31.1 43.5-31.1 20.5 0 35.7 11.8 42.9 31.1l.3 53.8z'\n\t\t\t\t\tfill='#FFFFFF'\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</svg>\n\t),\n\t'import-custom': (\n\t\t<svg\n\t\t\tfill='none'\n\t\t\theight='32'\n\t\t\tviewBox='0 0 32 32'\n\t\t\twidth='32'\n\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t>\n\t\t\t<rect fill='var(--pds-color-fg-default)' height='32' rx='16' width='32' />\n\t\t\t<path\n\t\t\t\td='M17 10.5V15H21.5C22.0312 15 22.5 15.4688 22.5 16C22.5 16.5625 22.0312 17 21.5 17H17V21.5C17 22.0625 16.5312 22.5 16 22.5C15.4375 22.5 15 22.0625 15 21.5V17H10.5C9.9375 17 9.5 16.5625 9.5 16C9.5 15.4688 9.9375 15 10.5 15H15V10.5C15 9.96875 15.4375 9.5 16 9.5C16.5312 9.5 17 9.96875 17 10.5Z'\n\t\t\t\tfill='var(--pds-color-fg-reverse)'\n\t\t\t/>\n\t\t</svg>\n\t),\n};\n","import React, { ComponentPropsWithoutRef, MouseEvent } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ButtonType } from '@libs/types/custom-types';\n\nimport { PlatformIcon } from '@components/icons/PlatformIcon/PlatformIcon';\n\nimport './sso-button.css';\n\ntype SSOButtonSize = 'm' | 'l';\n\ntype PlatformType = 'google' | 'microsoft';\n\ninterface SSOButtonProps extends ComponentPropsWithoutRef<'button'> {\n\t/**\n\t * Type of button\n\t */\n\tbuttonType?: ButtonType;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * The text of the button\n\t */\n\tlabel: string;\n\t/**\n\t * Click event handler callback\n\t */\n\tonClick?: (e: MouseEvent<HTMLElement>) => void;\n\t/**\n\t * Which platform to render\n\t */\n\tplatform: PlatformType;\n\t/**\n\t * Which size of button to render\n\t * @default 'm'\n\t */\n\tsize?: SSOButtonSize;\n}\n\n/**\n * A Component used to render an SSO Button\n */\nexport const SSOButton = ({\n\tbuttonType = 'button',\n\tclassName = '',\n\tdisabled = false,\n\tlabel,\n\tonClick,\n\tplatform,\n\tsize = 'm',\n\t...props\n}: SSOButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-sso-button';\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Map button sizes to icon sizes.\n\tconst iconSize = size === 'm' ? 'l' : '2xl';\n\n\t// Render the chosen icon\n\tconst renderedIcon = (\n\t\t<PlatformIcon\n\t\t\tclassName={`${baseClass}__icon`}\n\t\t\ticonSize={iconSize}\n\t\t\tplatformType={platform}\n\t\t/>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<button\n\t\t\tclassName={mergeClasses([baseClass, sizeClass, className])}\n\t\t\tdisabled={disabled}\n\t\t\tonClick={onClick}\n\t\t\ttype={buttonType}\n\t\t\t{...props}\n\t\t>\n\t\t\t{renderedIcon}\n\t\t\t{label}\n\t\t</button>\n\t);\n};\n","import React, {\n\tcloneElement,\n\tComponentPropsWithoutRef,\n\tisValidElement,\n\tReactElement,\n\tReactNode,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\nimport { Tooltip } from '@components/Tooltip/Tooltip';\n\nimport './utility-button.css';\n\n/**\n * Prop types for UtilityButton\n */\nexport interface UtilityButtonProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional props for the button element.\n\t */\n\tbuttonProps?: ComponentPropsWithoutRef<'button'>;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the button disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Should the button have a border?\n\t */\n\thasBorder?: boolean;\n\t/**\n\t * Which icon to render.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Position of the icon relative to the label.\n\t */\n\ticonPosition?: 'before' | 'after';\n\t/**\n\t * Is the button critical? If true, the button will be styled as critical on hover and focus.\n\t */\n\tisCritical?: boolean;\n\t/**\n\t * Is the button in the process of an initial load?\n\t */\n\tisLoading?: boolean;\n\t/**\n\t * Should the button label use the monospace font?\n\t */\n\tisMonospace?: boolean;\n\t/**\n\t * Is the button in the process of performing a task and should be disabled?\n\t */\n\tisWorking?: boolean;\n\t/**\n\t * The text of the button.\n\t */\n\tlabel?: string;\n\t/**\n\t * A link element using the router of your choice.\n\t * Use `linkContent` to render a link instead of text.\n\t * In this case, the `buttonProps`, `label`, and `onClick` props will be ignored.\n\t */\n\tlinkContent?: ReactNode;\n\t/**\n\t * Click event handler callback.\n\t */\n\tonClick?: () => void;\n\t/**\n\t * Tooltip text.\n\t */\n\ttooltipText?: string;\n}\n\n/**\n * UtilityButton UI component\n */\nexport const UtilityButton = ({\n\tbuttonProps,\n\tclassName,\n\tdisabled = false,\n\thasBorder = false,\n\ticonName,\n\ticonPosition = 'before',\n\tisCritical = false,\n\tisLoading,\n\tisMonospace = false,\n\tisWorking,\n\tlabel,\n\tlinkContent,\n\tonClick,\n\ttooltipText,\n\t...props\n}: UtilityButtonProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-utility-button';\n\tconst pulseClass = isLoading ? 'pds-pulse' : null;\n\n\t// Helper to render icon\n\tconst renderIcon = (key: string) =>\n\t\ticonName && !isWorking ? (\n\t\t\t<Icon key={key} className={`${baseClass}__icon`} iconName={iconName} />\n\t\t) : null;\n\n\t// Helper to render spinner\n\tconst renderSpinner = () =>\n\t\tisWorking ? (\n\t\t\t<Spinner\n\t\t\t\tkey='spinner'\n\t\t\t\tclassName={`${baseClass}__spinner`}\n\t\t\t\tcolorType='monochromatic'\n\t\t\t\tsize='s'\n\t\t\t/>\n\t\t) : null;\n\n\t// Helper to build content array (icon, spinner, label)\n\tconst buildContent = (text: ReactNode) => {\n\t\tconst content = [];\n\n\t\tif (iconPosition === 'before') {\n\t\t\tcontent.push(renderIcon('icon-before'));\n\t\t}\n\n\t\tcontent.push(renderSpinner());\n\n\t\tcontent.push(\n\t\t\t<span key='label' className={`${baseClass}__label`}>\n\t\t\t\t{text}\n\t\t\t</span>,\n\t\t);\n\n\t\tif (iconPosition === 'after') {\n\t\t\tcontent.push(renderIcon('icon-after'));\n\t\t}\n\n\t\treturn content.filter(Boolean);\n\t};\n\n\t// Extract label text from linkContent or use label prop\n\tconst extractedLabel =\n\t\tlinkContent && isValidElement(linkContent)\n\t\t\t? (linkContent.props as { children: ReactNode }).children\n\t\t\t: label;\n\n\t// Wrapper classes used by both link and button\n\tconst wrapperClasses = mergeClasses([\n\t\tbaseClass,\n\t\thasBorder ? `${baseClass}--border` : null,\n\t\tisCritical ? `${baseClass}--critical` : null,\n\t\tdisabled ? `${baseClass}--disabled` : null,\n\t\tisLoading ? `${baseClass}--loading` : null,\n\t\tisWorking ? `${baseClass}--working` : null,\n\t\tisMonospace ? `${baseClass}--monospace` : null,\n\t\tclassName ?? '',\n\t]);\n\n\t// Helper to wrap content with optional tooltip\n\tconst wrapWithTooltip = (content: ReactNode) =>\n\t\ttooltipText ? (\n\t\t\t<Tooltip content={tooltipText} customTrigger={content} />\n\t\t) : (\n\t\t\tcontent\n\t\t);\n\n\t// If linkContent is provided and not disabled, render as a link\n\tif (linkContent && !disabled) {\n\t\tconst processedLink = isValidElement(linkContent)\n\t\t\t? cloneElement(\n\t\t\t\t\tlinkContent as ReactElement,\n\t\t\t\t\tObject.assign({}, linkContent.props, {\n\t\t\t\t\t\tclassName: mergeClasses([\n\t\t\t\t\t\t\t`${baseClass}__button`,\n\t\t\t\t\t\t\tpulseClass,\n\t\t\t\t\t\t\t(linkContent.props as { className?: string }).className ?? '',\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tchildren: buildContent(extractedLabel),\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: null;\n\n\t\treturn (\n\t\t\t<div className={wrapperClasses} {...props}>\n\t\t\t\t{wrapWithTooltip(processedLink)}\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Render as button\n\tconst buttonContent = (\n\t\t<button\n\t\t\taria-disabled={disabled || isLoading || isWorking}\n\t\t\tclassName={mergeClasses([`${baseClass}__button`, pulseClass])}\n\t\t\tonClick={disabled ? undefined : onClick}\n\t\t\ttype='button'\n\t\t\t{...buttonProps}\n\t\t>\n\t\t\t{buildContent(extractedLabel)}\n\t\t</button>\n\t);\n\n\treturn (\n\t\t<div className={wrapperClasses} {...props}>\n\t\t\t{wrapWithTooltip(buttonContent)}\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tDragEvent,\n\tforwardRef,\n\tKeyboardEvent,\n\tReactNode,\n\tRef,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ValidationStatus } from '@libs/types/input-types';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport {\n\tgetInputWidthStyle,\n\tinputCommonClasses,\n\tInputLabel,\n\tInputMessage,\n} from '../input-utilities';\n\nimport './tags-input.css';\n\n// Label strings type.\ntype LabelStrings = {\n\tinputInstructions: string;\n\ttagAriaLabel: string;\n\ttagAriaLabelSimple: string;\n\ttagRemove: string;\n\ttagsListLabel: string;\n};\n\n/**\n * Tag type\n */\nexport type TagType = {\n\tid: string;\n\tvalue: string;\n};\n\ntype DivProps = Omit<ComponentPropsWithoutRef<'div'>, 'onChange'>;\n\n/**\n * Prop types for TagsInput\n */\nexport interface TagsInputProps extends DivProps {\n\t/**\n\t * Optional placeholder text to display when the input field is empty and there are existing tags.\n\t */\n\taddMorePlaceholder?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Is the field disabled?\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * Input ID.\n\t */\n\tid: string;\n\t/**\n\t * Minimum height in pixels for the tags input wrapper box (not including label or message). Defaults to 80px.\n\t */\n\tinputMinHeight?: number;\n\t/**\n\t * Max-width of the input field. Accepts a number in pixels. Leave blank for width: 100%.\n\t */\n\tinputWidth?: number;\n\t/**\n\t * Should tags be sortable via drag-and-drop and keyboard shortcuts? Defaults to false.\n\t */\n\tisSortable?: boolean;\n\t/**\n\t * Input label.\n\t */\n\tlabel: string;\n\t/**\n\t * Input message. Used to provide supplemental text. Will be displayed below the input field.\n\t */\n\tmessage?: string | ReactNode;\n\t/**\n\t * onChange event handler. Called when tags change.\n\t */\n\tonChange: (tags: TagType[]) => void;\n\t/**\n\t * Optional placeholder text to display when the input field is empty and there are no tags yet.\n\t */\n\tplaceholder?: string;\n\t/**\n\t * Is this field required?\n\t */\n\trequired?: boolean;\n\t/**\n\t * Should the label be visible? If false, it will render for screen readers only.\n\t */\n\tshowLabel?: boolean;\n\t/**\n\t * Tags array. The component is controlled and requires managing state externally.\n\t */\n\ttags: TagType[];\n\t/**\n\t * Optional tooltip text to display additional information.\n\t */\n\ttooltipText?: string | null;\n\t/**\n\t * Translation strings for various labels or other visually-hidden text.\n\t */\n\ttranslationStrings?: LabelStrings;\n\t/**\n\t * Validation message for the input field based on the validation status.\n\t */\n\tvalidationMessage?: string;\n\t/**\n\t * Validation status of the input field.\n\t */\n\tvalidationStatus?: ValidationStatus;\n}\n\n/**\n * Individual Tag component\n */\ninterface TagProps {\n\tdisabled?: boolean;\n\tdropTargetDirection: 'before' | 'after' | null;\n\tfocusedIndex: number | null;\n\tindex: number;\n\tisDragging: boolean;\n\tisSortable: boolean;\n\tonDragEnd: () => void;\n\tonDragOver: (id: string, side: 'before' | 'after') => void;\n\tonDragStart: (id: string) => void;\n\tonKeyboardMove: (fromIndex: number, toIndex: number) => void;\n\tonRemove: (id: string) => void;\n\tsetFocusedIndex: (index: number | null) => void;\n\ttag: TagType;\n\ttotalTags: number;\n\ttranslationStrings: LabelStrings;\n}\n\nconst Tag = ({\n\tdisabled,\n\tdropTargetDirection,\n\tfocusedIndex,\n\tindex,\n\tisDragging,\n\tisSortable,\n\tonDragEnd,\n\tonDragOver,\n\tonDragStart,\n\tonKeyboardMove,\n\tonRemove,\n\tsetFocusedIndex,\n\ttag,\n\ttotalTags,\n\ttranslationStrings,\n}: TagProps) => {\n\tconst tagRef = useRef<HTMLDivElement>(null);\n\tconst baseClass = 'pds-tags-input__tag';\n\n\tuseEffect(() => {\n\t\tif (focusedIndex === index && tagRef.current) {\n\t\t\ttagRef.current.focus();\n\t\t}\n\t}, [focusedIndex, index]);\n\n\tconst handleDragStart = (e: DragEvent<HTMLDivElement>) => {\n\t\tif (!isSortable || !tagRef.current) return;\n\n\t\t// Get the root element where CSS variables are defined\n\t\tconst rootStyles = window.getComputedStyle(\n\t\t\ttagRef.current.closest('.pds-tags-input') || document.documentElement,\n\t\t);\n\n\t\t// Resolve CSS variables to actual color values\n\t\tconst hoverBg = rootStyles\n\t\t\t.getPropertyValue('--tag-hover-background')\n\t\t\t.trim();\n\t\tconst hoverColor = rootStyles\n\t\t\t.getPropertyValue('--tag-text-hover-color')\n\t\t\t.trim();\n\t\tconst selectedOutline = rootStyles\n\t\t\t.getPropertyValue('--tag-selected-outline')\n\t\t\t.trim();\n\n\t\t// Save original inline styles\n\t\tconst originalBg = tagRef.current.style.backgroundColor;\n\t\tconst originalColor = tagRef.current.style.color;\n\t\tconst originalOutline = tagRef.current.style.outline;\n\t\tconst originalOutlineOffset = tagRef.current.style.outlineOffset;\n\n\t\t// Apply resolved styles inline for drag snapshot\n\t\ttagRef.current.style.backgroundColor = hoverBg;\n\t\ttagRef.current.style.color = hoverColor;\n\t\ttagRef.current.style.outline = selectedOutline;\n\t\ttagRef.current.style.outlineOffset = '-1px';\n\n\t\t// Force immediate reflow\n\t\tvoid tagRef.current.offsetHeight;\n\n\t\te.dataTransfer.effectAllowed = 'move';\n\t\te.dataTransfer.setData('text/html', e.currentTarget.innerHTML);\n\n\t\t// Restore and add dragging class\n\t\tsetTimeout(() => {\n\t\t\tif (tagRef.current) {\n\t\t\t\ttagRef.current.style.backgroundColor = originalBg;\n\t\t\t\ttagRef.current.style.color = originalColor;\n\t\t\t\ttagRef.current.style.outline = originalOutline;\n\t\t\t\ttagRef.current.style.outlineOffset = originalOutlineOffset;\n\t\t\t\ttagRef.current.classList.add(`${baseClass}--dragging`);\n\t\t\t}\n\t\t}, 0);\n\n\t\tonDragStart(tag.id);\n\t};\n\n\tconst handleDragOver = (e: DragEvent<HTMLDivElement>) => {\n\t\tif (!isSortable || !tagRef.current) return;\n\t\te.preventDefault();\n\t\te.dataTransfer.dropEffect = 'move';\n\n\t\t// Determine which side of the tag the mouse is on\n\t\tconst rect = tagRef.current.getBoundingClientRect();\n\t\tconst mouseX = e.clientX;\n\t\tconst tagCenter = rect.left + rect.width / 2;\n\t\tconst side: 'before' | 'after' = mouseX < tagCenter ? 'before' : 'after';\n\n\t\tonDragOver(tag.id, side);\n\t};\n\n\tconst handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (disabled) return;\n\n\t\t// Only allow reordering if sortable\n\t\tif (isSortable) {\n\t\t\t// Move tag left with Shift+Left or Shift+Up\n\t\t\tif (\n\t\t\t\t(e.key === 'ArrowLeft' || e.key === 'ArrowUp') &&\n\t\t\t\te.shiftKey &&\n\t\t\t\tindex > 0\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tonKeyboardMove(index, index - 1);\n\t\t\t\tsetFocusedIndex(index - 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Move tag right with Shift+Right or Shift+Down\n\t\t\telse if (\n\t\t\t\t(e.key === 'ArrowRight' || e.key === 'ArrowDown') &&\n\t\t\t\te.shiftKey &&\n\t\t\t\tindex < totalTags - 1\n\t\t\t) {\n\t\t\t\te.preventDefault();\n\t\t\t\tonKeyboardMove(index, index + 1);\n\t\t\t\tsetFocusedIndex(index + 1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Delete with Delete key (always available)\n\t\tif (e.key === 'Delete') {\n\t\t\te.preventDefault();\n\t\t\tonRemove(tag.id);\n\t\t\t// Focus previous tag or input\n\t\t\tif (index > 0) {\n\t\t\t\tsetFocusedIndex(index - 1);\n\t\t\t}\n\t\t}\n\t\t// Navigate between tags with arrow keys (always available)\n\t\telse if (e.key === 'ArrowLeft' && !e.shiftKey && index > 0) {\n\t\t\te.preventDefault();\n\t\t\tsetFocusedIndex(index - 1);\n\t\t} else if (e.key === 'ArrowRight' && !e.shiftKey && index < totalTags - 1) {\n\t\t\te.preventDefault();\n\t\t\tsetFocusedIndex(index + 1);\n\t\t}\n\t};\n\n\tconst indexStr = String(index + 1);\n\tconst totalStr = String(totalTags);\n\tconst ariaTemplate = isSortable\n\t\t? translationStrings.tagAriaLabel\n\t\t: translationStrings.tagAriaLabelSimple;\n\tconst ariaLabel = `${tag.value}, ${ariaTemplate\n\t\t.replace('{index}', indexStr)\n\t\t.replace('{total}', totalStr)}`;\n\n\tconst draggingClass = isDragging ? `${baseClass}--dragging` : null;\n\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\tconst dropTargetClass = dropTargetDirection\n\t\t? `${baseClass}--drop-target-${dropTargetDirection}`\n\t\t: null;\n\n\treturn (\n\t\t<div\n\t\t\tref={tagRef}\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tdraggingClass,\n\t\t\t\tdisabledClass,\n\t\t\t\tdropTargetClass,\n\t\t\t])}\n\t\t\tdraggable={isSortable && !disabled}\n\t\t\tonDragEnd={isSortable ? onDragEnd : undefined}\n\t\t\tonDragOver={isSortable ? handleDragOver : undefined}\n\t\t\tonDragStart={isSortable ? handleDragStart : undefined}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\trole='button'\n\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t>\n\t\t\t{isSortable && (\n\t\t\t\t<span aria-hidden='true' className={`${baseClass}-grip`}>\n\t\t\t\t\t<Icon iconName='gripDotsVertical' iconSize='s' />\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<span className={`${baseClass}-text`}>{tag.value}</span>\n\t\t\t<button\n\t\t\t\taria-label={translationStrings.tagRemove.replace('{value}', tag.value)}\n\t\t\t\tclassName={`${baseClass}-remove`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tonRemove(tag.id);\n\t\t\t\t}}\n\t\t\t\ttabIndex={0}\n\t\t\t\ttype='button'\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\tclassName={`${baseClass}-remove-icon`}\n\t\t\t\t\ticonName='xmark'\n\t\t\t\t\ticonSize='m'\n\t\t\t\t/>\n\t\t\t</button>\n\t\t</div>\n\t);\n};\n\n/**\n * TagsInput UI component\n */\nexport const TagsInput = forwardRef(\n\t(\n\t\t{\n\t\t\taddMorePlaceholder = 'Add another',\n\t\t\tclassName,\n\t\t\tdisabled = false,\n\t\t\tid,\n\t\t\tinputMinHeight = 80,\n\t\t\tinputWidth,\n\t\t\tisSortable = false,\n\t\t\tlabel,\n\t\t\tmessage,\n\t\t\tonChange,\n\t\t\tplaceholder,\n\t\t\trequired = false,\n\t\t\tshowLabel = true,\n\t\t\ttags,\n\t\t\ttooltipText = null,\n\t\t\ttranslationStrings = {\n\t\t\t\tinputInstructions:\n\t\t\t\t\t'Type a tag name and press Enter to add. Press Backspace on empty input to remove last tag. Press left arrow on empty input to navigate to tags.',\n\t\t\t\ttagAriaLabel:\n\t\t\t\t\t'tag {index} of {total}. Press Shift plus arrow keys to reorder, Delete to remove.',\n\t\t\t\ttagAriaLabelSimple: 'tag {index} of {total}. Press Delete to remove.',\n\t\t\t\ttagRemove: 'Remove {value}',\n\t\t\t\ttagsListLabel: 'Current tags',\n\t\t\t},\n\t\t\tvalidationMessage,\n\t\t\tvalidationStatus,\n\t\t\t...props\n\t\t}: TagsInputProps,\n\t\tref: Ref<HTMLInputElement>,\n\t) => {\n\t\t// Determine input width style.\n\t\tconst inputWidthStyle = getInputWidthStyle(inputWidth);\n\n\t\t// Set up classes.\n\t\tconst baseClass = 'pds-tags-input';\n\t\tconst disabledClass = disabled ? inputCommonClasses.disabled : null;\n\t\tconst requiredClass =\n\t\t\trequired && !disabled ? inputCommonClasses.required : null;\n\t\tconst errorClass =\n\t\t\tvalidationStatus === 'error' ? inputCommonClasses.error : null;\n\t\tconst successClass =\n\t\t\tvalidationStatus === 'success' ? inputCommonClasses.success : null;\n\n\t\t// If there is a validation message, use that. Otherwise, use the message prop.\n\t\tconst processedMessage = validationMessage || message;\n\n\t\t// Input value state\n\t\tconst [inputValue, setInputValue] = useState('');\n\t\tconst [draggedId, setDraggedId] = useState<string | null>(null);\n\t\tconst [dropTargetId, setDropTargetId] = useState<string | null>(null);\n\t\tconst [dropSide, setDropSide] = useState<'before' | 'after' | null>(null);\n\t\tconst [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n\t\tconst [announcement, setAnnouncement] = useState('');\n\t\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\t\t// Determine which placeholder to use\n\t\tconst activePlaceholder =\n\t\t\ttags.length > 0 ? addMorePlaceholder : placeholder;\n\n\t\tconst announce = (message: string) => {\n\t\t\tsetAnnouncement(message);\n\t\t\tsetTimeout(() => setAnnouncement(''), 1000);\n\t\t};\n\n\t\tconst handleTagsChange = (newTags: TagType[]) => {\n\t\t\tonChange(newTags);\n\t\t};\n\n\t\tconst handleDragStart = (id: string) => {\n\t\t\tsetDraggedId(id);\n\t\t};\n\n\t\tconst handleDragEnd = () => {\n\t\t\tsetDraggedId(null);\n\t\t\tsetDropTargetId(null);\n\t\t\tsetDropSide(null);\n\t\t};\n\n\t\tconst handleDragOver = (id: string, side: 'before' | 'after') => {\n\t\t\tif (draggedId === null || draggedId === id) return;\n\t\t\tsetDropTargetId(id);\n\t\t\tsetDropSide(side);\n\t\t};\n\n\t\tconst handleDrop = (e: DragEvent<HTMLDivElement>) => {\n\t\t\te.preventDefault();\n\n\t\t\tif (draggedId === null || dropTargetId === null || dropSide === null)\n\t\t\t\treturn;\n\n\t\t\tconst draggedIndex = tags.findIndex((item) => item.id === draggedId);\n\t\t\tconst targetIndex = tags.findIndex((item) => item.id === dropTargetId);\n\n\t\t\tif (draggedIndex === -1 || targetIndex === -1) return;\n\n\t\t\tconst newTags = [...tags];\n\t\t\tconst [draggedItem] = newTags.splice(draggedIndex, 1);\n\n\t\t\t// Calculate insertion index based on which side of the target we're dropping\n\t\t\tlet insertIndex = targetIndex;\n\n\t\t\tif (dropSide === 'after') {\n\t\t\t\t// Insert after the target\n\t\t\t\t// If we removed an item before the target, targetIndex is already correct\n\t\t\t\t// If we removed an item after the target, we need to add 1\n\t\t\t\tinsertIndex =\n\t\t\t\t\tdraggedIndex < targetIndex ? targetIndex : targetIndex + 1;\n\t\t\t} else {\n\t\t\t\t// Insert before the target\n\t\t\t\t// If we removed an item before the target, targetIndex stays the same\n\t\t\t\t// If we removed an item after the target, targetIndex is already correct\n\t\t\t\tinsertIndex = draggedIndex < targetIndex ? targetIndex : targetIndex;\n\t\t\t}\n\n\t\t\tnewTags.splice(insertIndex, 0, draggedItem);\n\n\t\t\thandleTagsChange(newTags);\n\t\t\tannounce('Tag reordered');\n\n\t\t\tsetDraggedId(null);\n\t\t\tsetDropTargetId(null);\n\t\t\tsetDropSide(null);\n\t\t};\n\n\t\tconst handleKeyboardMove = (fromIndex: number, toIndex: number) => {\n\t\t\tconst newTags = [...tags];\n\t\t\tconst [movedItem] = newTags.splice(fromIndex, 1);\n\t\t\tnewTags.splice(toIndex, 0, movedItem);\n\n\t\t\tannounce(\n\t\t\t\t`${movedItem.value} moved to position ${toIndex + 1} of ${tags.length}`,\n\t\t\t);\n\t\t\thandleTagsChange(newTags);\n\t\t};\n\n\t\tconst handleRemove = (id: string) => {\n\t\t\tconst tag = tags.find((t) => t.id === id);\n\t\t\tconst newTags = tags.filter((item) => item.id !== id);\n\t\t\thandleTagsChange(newTags);\n\t\t\tif (tag) {\n\t\t\t\tannounce(`${tag.value} removed`);\n\t\t\t}\n\n\t\t\t// Return focus to input after removal\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (inputRef.current) {\n\t\t\t\t\tinputRef.current.focus();\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t};\n\n\t\tconst handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n\t\t\tif (disabled) return;\n\n\t\t\tif (e.key === 'Enter' && inputValue.trim()) {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst newTag: TagType = {\n\t\t\t\t\tid: Date.now().toString(),\n\t\t\t\t\tvalue: inputValue.trim(),\n\t\t\t\t};\n\t\t\t\thandleTagsChange([...tags, newTag]);\n\t\t\t\tannounce(`${inputValue.trim()} added`);\n\t\t\t\tsetInputValue('');\n\t\t\t} else if (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n\t\t\t\tconst lastTag = tags[tags.length - 1];\n\t\t\t\thandleTagsChange(tags.slice(0, -1));\n\t\t\t\tannounce(`${lastTag.value} removed`);\n\t\t\t} else if (e.key === 'ArrowLeft' && !inputValue && tags.length > 0) {\n\t\t\t\te.preventDefault();\n\t\t\t\tsetFocusedIndex(tags.length - 1);\n\t\t\t}\n\t\t};\n\n\t\t// Render the output\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tinputCommonClasses.base,\n\t\t\t\t\tbaseClass,\n\t\t\t\t\tdisabledClass,\n\t\t\t\t\trequiredClass,\n\t\t\t\t\terrorClass,\n\t\t\t\t\tsuccessClass,\n\t\t\t\t\tclassName ?? '',\n\t\t\t\t])}\n\t\t\t\tstyle={inputWidth ? inputWidthStyle : null}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<InputLabel\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tid={id}\n\t\t\t\t\tlabel={label}\n\t\t\t\t\trequired={required}\n\t\t\t\t\tshowLabel={showLabel}\n\t\t\t\t\ttooltipText={tooltipText}\n\t\t\t\t/>\n\n\t\t\t\t{/* Screen reader announcements */}\n\t\t\t\t<div aria-atomic='true' aria-live='polite' className='visually-hidden'>\n\t\t\t\t\t{announcement}\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\taria-labelledby={`${id}-label`}\n\t\t\t\t\tclassName={`${baseClass}__input-wrapper`}\n\t\t\t\t\trole='group'\n\t\t\t\t\tstyle={{ minHeight: `${inputMinHeight}px` }}\n\t\t\t\t>\n\t\t\t\t\t{/* Tags list */}\n\t\t\t\t\t{tags.length > 0 && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\taria-label={translationStrings.tagsListLabel}\n\t\t\t\t\t\t\tclassName={`${baseClass}__tags`}\n\t\t\t\t\t\t\tonDrop={isSortable ? handleDrop : undefined}\n\t\t\t\t\t\t\trole='list'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{tags.map((tag, index) => {\n\t\t\t\t\t\t\t\t// Show drop indicator - convert \"after\" to \"before\" on next tag to avoid duplicates\n\t\t\t\t\t\t\t\tlet dropDirection: 'before' | 'after' | null = null;\n\n\t\t\t\t\t\t\t\tif (draggedId && draggedId !== tag.id) {\n\t\t\t\t\t\t\t\t\tif (dropTargetId === tag.id && dropSide === 'before') {\n\t\t\t\t\t\t\t\t\t\tdropDirection = 'before';\n\t\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\t\tdropTargetId === tag.id &&\n\t\t\t\t\t\t\t\t\t\tdropSide === 'after' &&\n\t\t\t\t\t\t\t\t\t\tindex === tags.length - 1\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Show \"after\" on the last tag\n\t\t\t\t\t\t\t\t\t\tdropDirection = 'after';\n\t\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\t\tindex > 0 &&\n\t\t\t\t\t\t\t\t\t\tdropTargetId === tags[index - 1].id &&\n\t\t\t\t\t\t\t\t\t\tdropSide === 'after'\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t// Show \"after\" from previous tag as \"before\" on this tag\n\t\t\t\t\t\t\t\t\t\tdropDirection = 'before';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<div key={tag.id} role='listitem'>\n\t\t\t\t\t\t\t\t\t\t<Tag\n\t\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\t\tdropTargetDirection={dropDirection}\n\t\t\t\t\t\t\t\t\t\t\tfocusedIndex={focusedIndex}\n\t\t\t\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\t\t\t\tisDragging={draggedId === tag.id}\n\t\t\t\t\t\t\t\t\t\t\tisSortable={isSortable}\n\t\t\t\t\t\t\t\t\t\t\tonDragEnd={handleDragEnd}\n\t\t\t\t\t\t\t\t\t\t\tonDragOver={handleDragOver}\n\t\t\t\t\t\t\t\t\t\t\tonDragStart={handleDragStart}\n\t\t\t\t\t\t\t\t\t\t\tonKeyboardMove={handleKeyboardMove}\n\t\t\t\t\t\t\t\t\t\t\tonRemove={handleRemove}\n\t\t\t\t\t\t\t\t\t\t\tsetFocusedIndex={setFocusedIndex}\n\t\t\t\t\t\t\t\t\t\t\ttag={tag}\n\t\t\t\t\t\t\t\t\t\t\ttotalTags={tags.length}\n\t\t\t\t\t\t\t\t\t\t\ttranslationStrings={translationStrings}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Input field */}\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={(node) => {\n\t\t\t\t\t\t\tinputRef.current = node;\n\t\t\t\t\t\t\tif (typeof ref === 'function') {\n\t\t\t\t\t\t\t\tref(node);\n\t\t\t\t\t\t\t} else if (ref) {\n\t\t\t\t\t\t\t\tref.current = node;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\taria-describedby={`${id}__instructions`}\n\t\t\t\t\t\taria-invalid={validationStatus === 'error' ? true : null}\n\t\t\t\t\t\tclassName={`${baseClass}__input`}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tname={id}\n\t\t\t\t\t\tonChange={(e) => setInputValue(e.target.value)}\n\t\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t\tplaceholder={activePlaceholder}\n\t\t\t\t\t\trequired={required}\n\t\t\t\t\t\ttype='text'\n\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className='visually-hidden' id={`${id}__instructions`}>\n\t\t\t\t\t\t{translationStrings.inputInstructions}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{processedMessage && (\n\t\t\t\t\t<InputMessage\n\t\t\t\t\t\thasValidationMessage={validationMessage ? true : false}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\tmessage={processedMessage}\n\t\t\t\t\t\tvalidationMessageHasDecorators={false}\n\t\t\t\t\t\tvalidationStatus={validationStatus}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, {\n\tcloneElement,\n\tisValidElement,\n\tReactElement,\n\tReactNode,\n} from 'react';\n\nimport { NavigationItem } from '@libs/types/navigation-types';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\n/**\n * Recursively searches through navigation items to find the first active link\n * @param items - Array of navigation items to search through\n * @returns The active link element, or null if no active link is found or if the active item is a string\n * @example\n * const activeLink = getActiveLink(menuItems);\n */\nexport const getActiveLink = (items: NavigationItem[]): ReactElement | null => {\n\tif (!items) {\n\t\treturn null;\n\t}\n\tfor (let i = 0; i < items.length; i++) {\n\t\tif (isActiveItem(items[i])) {\n\t\t\t// If the linkContent is a string, return null.\n\t\t\t// Otherwise, return the linkContent.\n\t\t\treturn typeof items[i].linkContent === 'string'\n\t\t\t\t? null\n\t\t\t\t: (items[i].linkContent as ReactElement);\n\t\t}\n\t\tif (items[i].links) {\n\t\t\tconst activeLink = getActiveLink(items[i].links);\n\t\t\tif (activeLink) {\n\t\t\t\treturn activeLink;\n\t\t\t}\n\t\t}\n\t}\n\t// If no active link is found, return null.\n\treturn null;\n};\n\n/**\n * Extracts a string representation from linkContent, whether it's a string or React element\n * @param linkContent - The link content to extract string from (string or React element)\n * @returns String representation of the link content\n * @example\n * const linkText = getLinkContentString(<Link>Home</Link>); // Returns \"Home\"\n * const linkText = getLinkContentString(\"About\"); // Returns \"About\"\n */\nexport const getLinkContentString = (\n\tlinkContent: ReactElement | string,\n): string => {\n\t// If it's already a string, return it\n\tif (typeof linkContent === 'string') {\n\t\treturn linkContent;\n\t}\n\n\t// Otherwise it's a ReactElement, get the children\n\treturn (linkContent.props as any).children as string;\n};\n\n/**\n * Determines if a navigation item is currently active\n * @param item - The navigation item to check\n * @returns True if the item is active, false otherwise\n * @description Checks for active state via:\n * - The `isActive` property on the item\n * - The presence of 'pds-isActive' class on the link element\n * - Returns false for string-based items\n * @example\n * const isActive = isActiveItem(navigationItem);\n */\nexport const isActiveItem = (item: NavigationItem): boolean => {\n\t// If the type is not a string, determine if the item is active.\n\tif (typeof item.linkContent !== 'string') {\n\t\t// Via the isActive property on the item.\n\t\tif (item.isActive) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Via the pds-isActive class on the link.\n\t\tif (\n\t\t\t(item.linkContent.props as { className?: string }).className &&\n\t\t\t(item.linkContent.props as { className?: string }).className.includes(\n\t\t\t\t'pds-isActive',\n\t\t\t)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If not active, return false.\n\t\treturn false;\n\t}\n\n\t// If the type is a string, return false.\n\treturn false;\n};\n\n/**\n * Determines if a navigation item or any of its children are in the active trail\n * @param item - The navigation item to check (including its children)\n * @returns True if the item or any child is active, false otherwise\n * @description Recursively checks the item and all child items for active state\n * @example\n * const inActiveTrail = isActiveTrail(parentItem); // True if parent or any child is active\n */\nexport const isActiveTrail = (item: NavigationItem): boolean => {\n\tif (isActiveItem(item)) {\n\t\treturn true;\n\t}\n\n\t// Repeat for child links.\n\tif (item.links) {\n\t\tfor (let i = 0; i < item.links.length; i++) {\n\t\t\tif (isActiveTrail(item.links[i])) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n};\n\n/**\n * Checks if the provided content is an interactive element (link, button, etc.)\n * @param content - The React content to examine\n * @returns True if the content is an interactive element, false otherwise\n * @description Currently detects:\n * - Native anchor elements (`<a>`)\n * - React Router Link components (by displayName)\n * @example\n * const isInteractive = isInteractiveElement(<Link to=\"/home\">Home</Link>); // true\n * const isInteractive = isInteractiveElement(<span>Label</span>); // false\n * const isInteractive = isInteractiveElement(\"Plain text\"); // false\n */\nexport const isInteractiveElement = (content: ReactNode): boolean => {\n\tif (isValidElement(content)) {\n\t\tconst elementType = content.type;\n\n\t\t// Check for native anchor elements\n\t\tif (\n\t\t\telementType === 'a' ||\n\t\t\t(typeof elementType === 'string' && elementType.toLowerCase() === 'a')\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Check for Link components by displayName (with proper type checking)\n\t\tif (typeof elementType === 'function' || typeof elementType === 'object') {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst typeWithDisplayName = elementType as any;\n\t\t\tif (typeWithDisplayName?.displayName === 'Link') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\treturn false;\n};\n\n/**\n * Processes navigation link content based on its type and available child links\n * @param linkContent - The link content to process (string or React element)\n * @param links - Optional array of child navigation items\n * @returns Processed link content\n * @description\n * - If linkContent is a string and child links exist, clones the first child link with the string as label\n * - Otherwise returns the linkContent as-is\n * @example\n * // With string and child links - uses first child as template\n * const processed = processNavLinkContent(\"Home\", [{ linkContent: <Link to=\"/home\" /> }]);\n *\n * // With React element - returns as-is\n * const processed = processNavLinkContent(<Link to=\"/about\">About</Link>);\n */\nexport const processNavLinkContent = (\n\tlinkContent: ReactElement | string,\n\tlinks?: NavigationItem[],\n): ReactElement | string => {\n\tlet processedNavLink: ReactElement | string = null;\n\n\t// If the link content is a string and there are child links,\n\t// use the first child link with the string as the label.\n\tif (typeof linkContent === 'string' && links) {\n\t\t// Get the first child link.\n\t\tconst firstChildLink = links ? links[0].linkContent : null;\n\n\t\t// Check that the link is a valid React element.\n\t\tif (isValidElement(firstChildLink)) {\n\t\t\t// Clone the first child link and set the string as its children.\n\t\t\tprocessedNavLink = cloneElement(firstChildLink, {\n\t\t\t\t...(typeof linkContent === 'string' ? { children: linkContent } : {}),\n\t\t\t});\n\t\t}\n\t} else {\n\t\t// Otherwise, use the link content as-is.\n\t\tprocessedNavLink = linkContent;\n\t}\n\n\treturn processedNavLink;\n};\n\n/**\n * Processes side navigation global items with optional icons and specialized markup structure\n * @param baseClass - Base CSS class for styling\n * @param linkContent - The link content to process (string or React element)\n * @param links - Optional array of child navigation items\n * @param icon - Optional PDS icon to include\n * @returns Processed navigation item with icon and proper markup structure, or null\n * @description\n * Creates a structured navigation item with:\n * - Icon support with proper CSS classes\n * - Consistent markup structure for global navigation\n * - Template behavior for string content with child links\n * @example\n * // String with icon and child links\n * const item = processSideNavGlobalLinkContent('nav', 'Home', childLinks, 'home');\n *\n * // React element with icon\n * const item = processSideNavGlobalLinkContent('nav', <Link to=\"/about\">About</Link>, null, 'info');\n */\nexport const processSideNavGlobalLinkContent = (\n\tbaseClass: string,\n\tlinkContent: ReactElement | string,\n\tlinks?: NavigationItem[],\n\ticon?: PDSIcon,\n) => {\n\t// Result will be a JSX element.\n\tlet processedSideNavGlobalItem: ReactElement = null;\n\n\t// If the linkContent is a string and has child links, create a link element from the first child link.\n\t// Append the icon if it exists.\n\t// Return null if the linkContent is a string and there are no child links.\n\tif (typeof linkContent === 'string') {\n\t\t// Prep new link children for strings with or without an icon.\n\t\tconst newLinkChildrenForString = icon\n\t\t\t? [\n\t\t\t\t\t<span key={linkContent} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t<span className={`${baseClass}__link-icon`}>\n\t\t\t\t\t\t\t<Icon iconName={icon} iconSize='m' />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>{linkContent}</span>\n\t\t\t\t\t</span>,\n\t\t\t\t]\n\t\t\t: [\n\t\t\t\t\t<span key={linkContent} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>{linkContent}</span>\n\t\t\t\t\t</span>,\n\t\t\t\t];\n\n\t\tif (links) {\n\t\t\t// Get the first child link.\n\t\t\tconst firstChildLink = links[0].linkContent;\n\t\t\tif (isValidElement(firstChildLink)) {\n\t\t\t\tprocessedSideNavGlobalItem = cloneElement(firstChildLink, {\n\t\t\t\t\t...(typeof linkContent === 'string'\n\t\t\t\t\t\t? { children: newLinkChildrenForString }\n\t\t\t\t\t\t: {}),\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tprocessedSideNavGlobalItem = null;\n\t\t}\n\t}\n\n\t// If the linkContent is a JSX element and has an icon, clone it and append the icon.\n\t// Return the linkContent as is if the linkContent is a JSX element but there is no icon.\n\tif (isValidElement(linkContent)) {\n\t\tif (icon) {\n\t\t\tprocessedSideNavGlobalItem = cloneElement(\n\t\t\t\tlinkContent,\n\t\t\t\tObject.assign({}, linkContent.props, {\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t<span key={icon} className={`${baseClass}__item-inner`}>\n\t\t\t\t\t\t\t<span className={`${baseClass}__link-icon`}>\n\t\t\t\t\t\t\t\t<Icon iconName={icon} iconSize='m' />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span className={`${baseClass}__link-label`}>\n\t\t\t\t\t\t\t\t{(linkContent.props as { children?: ReactNode }).children}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</span>,\n\t\t\t\t\t],\n\t\t\t\t}),\n\t\t\t);\n\t\t} else {\n\t\t\tprocessedSideNavGlobalItem = linkContent;\n\t\t}\n\t}\n\n\treturn processedSideNavGlobalItem;\n};\n","import React, {\n\tComponentPropsWithRef,\n\tuseContext,\n\tuseEffect,\n\tuseRef,\n} from 'react';\n\n// Local utilities.\nimport { mergeClasses } from '@libs/components/utils';\n// Types.\nimport { NavigationItem } from '@libs/types/navigation-types';\n\n// Contexts.\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n// Components.\nimport { SplitButton } from '@components/buttons/SplitButton/SplitButton';\n\nimport { isActiveTrail } from '../navigation-utilities';\n\nimport './button-nav.css';\n\n// Extend the NavigationItem type to not allow child links.\nexport type ButtonNavItem = Omit<NavigationItem, 'links'>;\n\n/**\n * Prop types for ButtonNav\n */\nexport interface ButtonNavProps extends ComponentPropsWithRef<'nav'> {\n\t/**\n\t * Aria label for the navigation.\n\t */\n\tariaLabel: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Menu items to render.\n\t */\n\tmenuItems?: ButtonNavItem[];\n\t/**\n\t * Size of the Buttons.\n\t */\n\tsize?: 's' | 'm';\n}\n\n/**\n * ButtonNav UI component\n */\nexport const ButtonNav = ({\n\tariaLabel,\n\tclassName,\n\tmenuItems,\n\tsize = 's',\n\t...props\n}: ButtonNavProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Reference to the navigation element\n\tconst navRef = useRef<HTMLElement>(null);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-button-nav';\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\tconst sizeClass = `${baseClass}--${size}`;\n\n\t// Handle keyboard navigation\n\tuseEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\t// Only process if not in mobile view\n\t\t\tif (isMobile) return;\n\n\t\t\t// Get all focusable elements within the navigation\n\t\t\tconst nav = navRef.current;\n\t\t\tif (!nav) return;\n\n\t\t\t// Find all focusable elements within the navigation\n\t\t\tconst focusableElements = Array.from(\n\t\t\t\tnav.querySelectorAll('a, button, [tabindex]:not([tabindex=\"-1\"])'),\n\t\t\t) as HTMLElement[];\n\n\t\t\t// If no focusable elements, return\n\t\t\tif (focusableElements.length === 0) return;\n\n\t\t\t// Get the currently focused element\n\t\t\tconst focusedElement = document.activeElement as HTMLElement;\n\t\t\tconst currentIndex = focusableElements.indexOf(focusedElement);\n\n\t\t\t// Only process if one of our navigation elements has focus\n\t\t\tif (currentIndex === -1) return;\n\n\t\t\t// Handle arrow keys\n\t\t\tif (event.key === 'ArrowRight') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = (currentIndex + 1) % focusableElements.length;\n\t\t\t\tfocusableElements[nextIndex].focus();\n\t\t\t} else if (event.key === 'ArrowLeft') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst prevIndex =\n\t\t\t\t\t(currentIndex - 1 + focusableElements.length) %\n\t\t\t\t\tfocusableElements.length;\n\t\t\t\tfocusableElements[prevIndex].focus();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener('keydown', handleKeyDown);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', handleKeyDown);\n\t\t};\n\t}, [isMobile]);\n\n\t// Render each menu item for the default view.\n\tconst ButtonMenuItem = ({ isActive, linkContent }: ButtonNavItem) => {\n\t\t// Define item class.\n\t\tconst itemClass = `${baseClass}__item`;\n\n\t\treturn (\n\t\t\t<li\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\titemClass,\n\t\t\t\t\tisActive ? `${itemClass}--active` : null,\n\t\t\t\t])}\n\t\t\t>\n\t\t\t\t{linkContent}\n\t\t\t</li>\n\t\t);\n\t};\n\n\t// Preprocess the default menu markup.\n\tconst defaultMarkup =\n\t\tmenuItems.length > 0 ? (\n\t\t\t<ul className={`${baseClass}__menu`}>\n\t\t\t\t{menuItems.map((item, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ButtonMenuItem\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tisActive={isActiveTrail(item)}\n\t\t\t\t\t\t\tlinkContent={item.linkContent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ul>\n\t\t) : null;\n\n\t// Process the mobile menu items.\n\tconst mobileMenuItems = [];\n\n\tmenuItems.map((item) => {\n\t\tif (item.linkContent) {\n\t\t\tif (!isActiveTrail(item)) {\n\t\t\t\tmobileMenuItems.push({\n\t\t\t\t\tlinkContent: item.linkContent,\n\t\t\t\t\tisLink: true,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tmobileMenuItems.unshift({\n\t\t\t\t\tlinkContent: item.linkContent,\n\t\t\t\t\tisLink: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t// Preprocess the mobile markup.\n\tconst mobileMarkup =\n\t\tmobileMenuItems.length > 0 ? (\n\t\t\t<SplitButton\n\t\t\t\tactionItems={mobileMenuItems}\n\t\t\t\tid='mobile-nav-split-button'\n\t\t\t\tsize={size}\n\t\t\t\tvariant='secondary'\n\t\t\t/>\n\t\t) : null;\n\n\t// Render the output\n\treturn (\n\t\t<nav\n\t\t\tref={navRef}\n\t\t\taria-label={ariaLabel}\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tsizeClass,\n\t\t\t\tmobileClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileMarkup : defaultMarkup}\n\t\t</nav>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tMouseEvent,\n\tReactNode,\n\tuseEffect,\n\tuseState,\n} from 'react';\n\nimport { Z_INDEX_NOTIFICATIONS } from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { StatusType, StatusTypeLabels } from '@libs/types/custom-types';\n\nimport { IconButton } from '@components/buttons/IconButton/IconButton';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './banner.css';\n\ntype BannerVariant = Exclude<StatusType, 'success'> | 'neutral';\n\nconst iconTypes: Record<Exclude<BannerVariant, 'neutral'>, PDSIcon> = {\n\tinfo: 'circleInfo',\n\twarning: 'triangleExclamation',\n\tcritical: 'diamondExclamation',\n\tdiscovery: 'bullhorn',\n};\n\nconst ANIMATION_DURATION = 200;\nconst REVERSE_DELAY = 50;\n\nexport interface BannerItemType {\n\t/**\n\t * Icon to display. Required for neutral type, ignored for other types.\n\t */\n\ticonName?: PDSIcon;\n\t/**\n\t * Unique identifier for the banner.\n\t */\n\tid: string;\n\t/**\n\t * Whether the banner can be dismissed by the user.\n\t */\n\tisDismissible?: boolean;\n\t/**\n\t * The message content of the banner.\n\t */\n\tmessage: string | ReactNode;\n\t/**\n\t * Callback function called when the banner is dismissed.\n\t */\n\tonDismiss?: () => void;\n\t/**\n\t * The type of banner, which determines icon and color.\n\t */\n\ttype?: BannerVariant;\n}\n\n/**\n * Prop types for Banner\n */\nexport interface BannerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Array of banner objects\n\t */\n\tbanners: BannerItemType[];\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Label for the dismiss button\n\t */\n\tdismissLabel?: string;\n\t/**\n\t * Label for the next message button\n\t */\n\tlabelNext?: string;\n\t/**\n\t * Label for the previous message button\n\t */\n\tlabelPrevious?: string;\n\t/**\n\t * Type labels\n\t */\n\ttypeLabels?: Record<BannerVariant, string>;\n}\n\n/**\n * Banner UI component\n */\nexport const Banner = ({\n\tbanners,\n\tclassName,\n\tdismissLabel = 'Dismiss',\n\tlabelNext = 'Go to next message',\n\tlabelPrevious = 'Go to previous message',\n\ttypeLabels = { ...StatusTypeLabels, neutral: 'Notice' },\n\t...props\n}: BannerProps) => {\n\tconst [bannerGroup, setBannerGroup] = useState(banners);\n\tconst [fadingId, setFadingId] = useState<string | null>(null);\n\tconst [dismissingId, setDismissingId] = useState<string | null>(null);\n\tconst [zIndexOverrides, setZIndexOverrides] = useState<\n\t\tRecord<string, number>\n\t>({});\n\n\t// Keep bannerGroup in sync with banners prop.\n\tuseEffect(() => {\n\t\tsetBannerGroup(banners);\n\t}, [banners]);\n\n\tconst totalBanners = bannerGroup.length;\n\n\tif (totalBanners === 0) {\n\t\treturn null;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-banner';\n\tconst multipleClass =\n\t\ttotalBanners > 1 ? `${baseClass}-group--multiple` : null;\n\tconst typeClasses = {\n\t\tcritical: `${baseClass}--critical`,\n\t\tdiscovery: `${baseClass}--discovery`,\n\t\tinfo: `${baseClass}--info`,\n\t\tneutral: `${baseClass}--neutral`,\n\t\twarning: `${baseClass}--warning`,\n\t};\n\n\t// Get type of active banner and add class to parent element.\n\tconst activeBannerType = bannerGroup[0].type;\n\tconst activeBannerTypeClass = activeBannerType\n\t\t? `${baseClass}-group--${activeBannerType}`\n\t\t: null;\n\n\tconst getZIndex = (index: number) => Z_INDEX_NOTIFICATIONS - index;\n\n\tconst getTabIndex = (index: number) => (index === 0 ? 0 : -1);\n\n\t// Navigate to the next banner.\n\tconst showNextBanner = () => {\n\t\tsetFadingId(bannerGroup[0].id);\n\n\t\tsetTimeout(() => {\n\t\t\tsetBannerGroup((prevBanners) => [\n\t\t\t\t...prevBanners.slice(1),\n\t\t\t\tprevBanners[0],\n\t\t\t]);\n\t\t\tsetFadingId(null);\n\t\t}, ANIMATION_DURATION);\n\t};\n\n\t// Navigate to the previous banner.\n\tconst showPreviousBanner = () => {\n\t\t// Temporarily bump z-index of first and last banners for the reverse animation.\n\t\tsetZIndexOverrides({\n\t\t\t[bannerGroup[0].id]: Z_INDEX_NOTIFICATIONS + 2,\n\t\t\t[bannerGroup[totalBanners - 1].id]: Z_INDEX_NOTIFICATIONS + 1,\n\t\t});\n\n\t\tsetTimeout(() => {\n\t\t\tsetFadingId(bannerGroup[0].id);\n\t\t}, REVERSE_DELAY);\n\n\t\tsetTimeout(() => {\n\t\t\tsetBannerGroup((prevBanners) => [\n\t\t\t\tprevBanners[prevBanners.length - 1],\n\t\t\t\t...prevBanners.slice(0, prevBanners.length - 1),\n\t\t\t]);\n\t\t\tsetFadingId(null);\n\t\t\tsetZIndexOverrides({});\n\t\t}, ANIMATION_DURATION);\n\t};\n\n\t// Function to render a banner.\n\tconst renderBanner = (banner: BannerItemType, index: number) => {\n\t\tconst { iconName, id, isDismissible, message, onDismiss, type } = banner;\n\n\t\tconst roleType = type === 'critical' ? 'alert' : 'status';\n\t\tconst bannerTypeLabel = `${typeLabels[type]}: `;\n\n\t\tconst handleDismiss = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t\te.preventDefault();\n\t\t\tsetDismissingId(id);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tonDismiss?.();\n\t\t\t\tsetDismissingId(null);\n\n\t\t\t\tsetBannerGroup((prevBanners) => {\n\t\t\t\t\tconst remaining = prevBanners.filter(\n\t\t\t\t\t\t(prevBanner) => prevBanner.id !== id,\n\t\t\t\t\t);\n\t\t\t\t\treturn remaining;\n\t\t\t\t});\n\t\t\t}, ANIMATION_DURATION);\n\t\t};\n\n\t\tconst zIndex = zIndexOverrides[id] ?? getZIndex(index);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tkey={id}\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\tbaseClass,\n\t\t\t\t\ttypeClasses[type],\n\t\t\t\t\tfadingId === id ? `${baseClass}--fading` : null,\n\t\t\t\t\tdismissingId === id ? `${baseClass}--dismissing` : null,\n\t\t\t\t])}\n\t\t\t\tid={id}\n\t\t\t\trole={roleType}\n\t\t\t\tstyle={{ zIndex }}\n\t\t\t>\n\t\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon ${baseClass}__icon--${banner.type}`}\n\t\t\t\t\t\ticonName={type === 'neutral' ? iconName : iconTypes[type]}\n\t\t\t\t\t\ticonSize='m'\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={`${baseClass}__message`}>\n\t\t\t\t\t\t<span className='visually-hidden'>{bannerTypeLabel} </span>\n\t\t\t\t\t\t{message}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{isDismissible && (\n\t\t\t\t\t<button\n\t\t\t\t\t\tclassName={`${baseClass}__dismiss-button`}\n\t\t\t\t\t\tonClick={handleDismiss}\n\t\t\t\t\t\ttabIndex={getTabIndex(index)}\n\t\t\t\t\t\ttype='button'\n\t\t\t\t\t>\n\t\t\t\t\t\t{dismissLabel}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\t`${baseClass}-group`,\n\t\t\t\tactiveBannerTypeClass,\n\t\t\t\tmultipleClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{totalBanners > 1 ? (\n\t\t\t\t<div className={`${baseClass}__navigation`}>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tariaLabel={labelPrevious}\n\t\t\t\t\t\tclassName={`${baseClass}__nav-button ${baseClass}__nav-button--prev`}\n\t\t\t\t\t\ticonName='angleLeft'\n\t\t\t\t\t\tonClick={showPreviousBanner}\n\t\t\t\t\t\tsize='m'\n\t\t\t\t\t/>\n\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tariaLabel={labelNext}\n\t\t\t\t\t\tclassName={`${baseClass}__nav-button ${baseClass}__nav-button--next`}\n\t\t\t\t\t\ticonName='angleRight'\n\t\t\t\t\t\tonClick={showNextBanner}\n\t\t\t\t\t\tsize='m'\n\t\t\t\t\t/>\n\t\t\t\t\t{bannerGroup.map((banner, index) => renderBanner(banner, index))}\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\trenderBanner(bannerGroup[0], 0)\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { StatusType, StatusTypeLabels } from '@libs/types/custom-types';\n\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\n\nimport './inline-message.css';\n\n/**\n * The type of message to display.\n */\nexport type InlineMessageType = Exclude<StatusType, 'discovery'> | 'working';\n/**\n * Labels for each message type.\n */\ntype TypeLabels = Record<InlineMessageType, string>;\n\nexport interface InlineMessageProps\n\textends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Message body.\n\t */\n\tmessage?: ReactNode;\n\t/**\n\t * Title text.\n\t */\n\ttitle: ReactNode;\n\t/**\n\t * Message type.\n\t */\n\ttype: InlineMessageType;\n\t/**\n\t * Message type labels. Provide translation strings if needed.\n\t */\n\ttypeLabels?: TypeLabels;\n}\n\nconst iconTypes: Record<Exclude<InlineMessageType, 'working'>, PDSIcon> = {\n\tinfo: 'circleInfo',\n\twarning: 'triangleExclamation',\n\tsuccess: 'circleCheck',\n\tcritical: 'diamondExclamation',\n};\n\n/**\n * InlineMessage UI component\n */\nexport const InlineMessage = ({\n\tclassName,\n\tmessage,\n\ttitle,\n\ttype,\n\ttypeLabels = {\n\t\t...StatusTypeLabels,\n\t\tworking: 'Working',\n\t},\n\t...props\n}: InlineMessageProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-inline-message';\n\tconst cssClasses = {\n\t\terror: `${baseClass}--error`,\n\t\tsuccess: `${baseClass}--success`,\n\t\twarning: `${baseClass}--warning`,\n\t\tinfo: `${baseClass}--info`,\n\t\tcritical: `${baseClass}--critical`,\n\t\tworking: `${baseClass}--working`,\n\t};\n\n\t// Configure role based on type.\n\tconst roleType = type === 'critical' ? 'alert' : 'status';\n\n\t// Label by type.\n\tconst messageTypeLabel = `${typeLabels[type]}: `;\n\n\t// Preprocess secondary text by prop type.\n\tconst processedMessage =\n\t\ttypeof message === 'string' ? <p>{message}</p> : message;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, cssClasses[type], className ?? ''])}\n\t\t\trole={roleType}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__icon ${baseClass}__icon-${type}`}>\n\t\t\t\t{type === 'working' ? (\n\t\t\t\t\t<Spinner colorType='monochromatic' size='m' />\n\t\t\t\t) : (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={`${type}` in iconTypes ? iconTypes[type] : iconTypes.info}\n\t\t\t\t\t\ticonSize='m'\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className={`${baseClass}__text`}>\n\t\t\t\t<span className='visually-hidden'>{messageTypeLabel}</span>\n\t\t\t\t<div className={`${baseClass}__title`}>{title}</div>\n\t\t\t\t<div className={`${baseClass}__message`}>{processedMessage}</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tMouseEvent,\n\tReactNode,\n\tuseRef,\n} from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { StatusType, StatusTypeLabels } from '@libs/types/custom-types';\n\nimport { Button } from '@components/buttons/Button/Button';\nimport { CloseButton } from '@components/buttons/CloseButton/CloseButton';\nimport { Icon, PDSIcon } from '@components/icons/Icon/Icon';\n\nimport './section-message.css';\n\nexport type SectionMessageType = StatusType;\n\ntype TypeLabels = Record<SectionMessageType, string>;\n\nconst iconTypes: Record<SectionMessageType, PDSIcon> = {\n\tinfo: 'circleInfo',\n\twarning: 'triangleExclamation',\n\tsuccess: 'circleCheck',\n\tcritical: 'diamondExclamation',\n\tdiscovery: 'squareQuestion',\n};\n\nexport interface SectionMessageProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Props for optional call to action button.\n\t * Can include any Button props except for size and variant.\n\t */\n\tctaButton?: ComponentPropsWithoutRef<typeof Button>;\n\t/**\n\t * Label for dismiss button. Provide a translation string if needed.\n\t */\n\tdismissLabel?: string;\n\t/**\n\t * Unique id of message.\n\t */\n\tid?: string;\n\t/**\n\t * Includes dismiss functionality.\n\t */\n\tisDismissible?: boolean;\n\t/**\n\t * Message text.\n\t */\n\tmessage: ReactNode;\n\t/**\n\t * Callback function when message is dismissed.\n\t */\n\tonDismiss?: (event: MouseEvent<HTMLButtonElement>, id: string) => void;\n\t/**\n\t * Message title.\n\t */\n\ttitle?: string;\n\t/**\n\t * Message type.\n\t */\n\ttype: SectionMessageType;\n\t/**\n\t * Message type labels. Provide translation strings if needed.\n\t */\n\ttypeLabels?: TypeLabels;\n}\n\n/**\n * SectionMessage UI component\n */\nexport const SectionMessage = ({\n\tclassName,\n\tctaButton,\n\tdismissLabel = 'Dismiss',\n\tid,\n\tisDismissible,\n\tmessage,\n\tonDismiss,\n\ttitle,\n\ttype = 'info',\n\ttypeLabels = StatusTypeLabels,\n\t...props\n}: SectionMessageProps) => {\n\tconst messageRef = useRef(null);\n\n\t// Set up classes.\n\tconst baseClass = 'pds-section-message';\n\tconst cssClasses = {\n\t\terror: `${baseClass}--error`,\n\t\tsuccess: `${baseClass}--success`,\n\t\twarning: `${baseClass}--warning`,\n\t\tinfo: `${baseClass}--info`,\n\t\tcritical: `${baseClass}--critical`,\n\t\tdiscovery: `${baseClass}--discovery`,\n\t\tdismissing: `${baseClass}--dismissing`,\n\t\tdismissed: `${baseClass}--dismissed`,\n\t};\n\tconst hasDismissClass = isDismissible ? `${baseClass}--hasDismiss` : null;\n\tconst hasTitleClass = title ? `${baseClass}--hasTitle` : null;\n\n\t// Configure role based on type.\n\tconst roleType = type === 'critical' ? 'alert' : 'status';\n\n\t// Label by type.\n\tconst messageTypeLabel = `${typeLabels[type]}: `;\n\n\t// Preprocess message by prop type.\n\tconst processedMessage =\n\t\ttypeof message === 'string' ? <p>{message}</p> : message;\n\n\t// Set up dismiss functionality.\n\tconst dismissAnimationEndEventHandler = () => {\n\t\tmessageRef.current.addEventListener('animationend', triggerOnDismiss, {\n\t\t\tonce: true,\n\t\t});\n\t};\n\n\tconst triggerOnDismiss = (event) => {\n\t\tonDismiss(event, id);\n\t};\n\n\tconst handleDismiss = () => {\n\t\tdismissAnimationEndEventHandler();\n\t\tmessageRef.current.classList.toggle(cssClasses.dismissing);\n\n\t\tsetTimeout(() => {\n\t\t\tmessageRef.current.classList.toggle(cssClasses.dismissing);\n\t\t\tmessageRef.current.classList.toggle(cssClasses.dismissed);\n\t\t}, 400);\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tref={messageRef}\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tcssClasses[type],\n\t\t\t\thasDismissClass,\n\t\t\t\thasTitleClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\tid={id}\n\t\t\trole={roleType}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__content`}>\n\t\t\t\t<div className={`${baseClass}__icon ${baseClass}__icon-${type}`}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticonName={`${type}` in iconTypes ? iconTypes[type] : iconTypes.info}\n\t\t\t\t\t\ticonSize='m'\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className={`${baseClass}__text`}>\n\t\t\t\t\t<span className='visually-hidden'>{messageTypeLabel}</span>\n\t\t\t\t\t{title && <div className={`${baseClass}__title`}>{title}</div>}\n\t\t\t\t\t<div className={`${baseClass}__message`}>{processedMessage}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{(ctaButton || isDismissible) && (\n\t\t\t\t<div className={`${baseClass}__actions`}>\n\t\t\t\t\t{ctaButton && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{...ctaButton}\n\t\t\t\t\t\t\tclassName={`${baseClass}__cta`}\n\t\t\t\t\t\t\tsize='s'\n\t\t\t\t\t\t\tvariant='secondary'\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{isDismissible && (\n\t\t\t\t\t\t<CloseButton\n\t\t\t\t\t\t\tariaLabel={dismissLabel}\n\t\t\t\t\t\t\tclassName={`${baseClass}__dismiss`}\n\t\t\t\t\t\t\tonClick={handleDismiss}\n\t\t\t\t\t\t\tsize='l'\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\nimport { Spinner } from '@components/loading-indicators/Spinner/Spinner';\n\nimport './toaster.css';\n\nconst iconTypes = {\n\tinfo: 'circleInfo',\n\tsuccess: 'circleCheck',\n\twarning: 'triangleExclamation',\n\tcritical: 'diamondExclamation',\n} as const;\n\ntype IconType = keyof typeof iconTypes;\n\nconst defaultTypeLabels = {\n\tinfo: 'Information',\n\tsuccess: 'Success',\n\twarning: 'Warning',\n\tcritical: 'Critical',\n\tworking: 'Working...',\n} as const;\n\n/**\n * Prop types for Toast\n */\ninterface ToastProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Toast message content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * ID of individual toast.\n\t */\n\tid?: string;\n\t/**\n\t * Type of toast to show.\n\t */\n\ttype?: IconType | 'working';\n\t/**\n\t * Toast type labels. Provide translation strings if needed.\n\t */\n\ttypeLabels?: Partial<typeof defaultTypeLabels>;\n}\n\n/**\n * Toast UI component\n */\nexport const Toast = ({\n\tchildren,\n\tclassName,\n\tid,\n\ttype = 'info',\n\ttypeLabels = defaultTypeLabels,\n}: ToastProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-toast';\n\tconst cssClasses = {\n\t\tcritical: `${baseClass}--critical`,\n\t\tinfo: `${baseClass}--info`,\n\t\tsuccess: `${baseClass}--success`,\n\t\twarning: `${baseClass}--warning`,\n\t\tworking: `${baseClass}--working`,\n\t};\n\n\t// Label by type.\n\tconst toastTypeLabel = `${typeLabels[type]} `;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, cssClasses[type], className])}\n\t\t\tid={id}\n\t\t>\n\t\t\t<div className={`${baseClass}__icon-container`}>\n\t\t\t\t{type === 'working' ? (\n\t\t\t\t\t<Spinner colorType='monochromatic-reverse' size='l' />\n\t\t\t\t) : (\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tclassName={`${baseClass}__icon ${baseClass}__icon--${type}`}\n\t\t\t\t\t\ticonName={iconTypes[type]}\n\t\t\t\t\t\ticonSize='m'\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className={`${baseClass}__message`}>\n\t\t\t\t<span className='visually-hidden'>{toastTypeLabel}</span>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport type { CloseButtonProps as ToastifyCloseButtonProps } from 'react-toastify';\nimport { Slide, ToastContainer } from 'react-toastify';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport { CloseButton } from '@components/buttons/CloseButton/CloseButton';\n\nimport 'react-toastify/dist/ReactToastify.css';\nimport './toaster.css';\n\n/**\n * Prop types for Toast\n */\ninterface ToasterProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Duration in milliseconds before the toast will auto-close.\n\t */\n\tautoCloseDuration?: number;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Maximum number of toasts that can be displayed at once.\n\t */\n\tlimit?: number;\n\t/**\n\t * Location toast objects will show in the UI.\n\t */\n\tposition?: 'bottom-right' | 'top-right';\n}\n\nconst ToastCloseButton = ({\n\tariaLabel,\n\tcloseToast,\n}: ToastifyCloseButtonProps) => (\n\t<CloseButton\n\t\tariaLabel={ariaLabel || 'Close'}\n\t\tclassName='pds-toaster__close-button'\n\t\tonClick={() => closeToast(null)}\n\t\tsize='l'\n\t/>\n);\n\n/**\n * Toaster UI component\n */\nexport const Toaster = ({\n\tautoCloseDuration = 5000,\n\tclassName,\n\tlimit = 5,\n\tposition = 'bottom-right',\n}: ToasterProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-toaster';\n\tconst toasterClasses = mergeClasses([baseClass, className]);\n\n\t// Render the output\n\treturn (\n\t\t<ToastContainer\n\t\t\tnewestOnTop\n\t\t\tautoClose={autoCloseDuration}\n\t\t\tclassName={toasterClasses}\n\t\t\tcloseButton={ToastCloseButton}\n\t\t\tdraggable={false}\n\t\t\ticon={false}\n\t\t\tlimit={limit}\n\t\t\tposition={position}\n\t\t\trole='status'\n\t\t\ttransition={Slide}\n\t\t/>\n\t);\n};\n","import React, { ReactElement, ReactNode } from 'react';\n\nimport { cssTransition, toast as toastApi, ToastOptions } from 'react-toastify';\n\nimport { Toast } from './Toast';\n\nexport enum ToastType {\n\tCritical = 'critical',\n\tInfo = 'info',\n\tSuccess = 'success',\n\tWarning = 'warning',\n\tWorking = 'working',\n}\n\nexport const useToast = (): [\n\t(\n\t\ttype: ToastType,\n\t\tmessage: string | ReactElement,\n\t\toptions?: ToastOptions,\n\t) => string | number,\n\ttypeof toastApi,\n\tReturnType<typeof cssTransition>,\n] => {\n\tconst addToast = (\n\t\ttype: ToastType,\n\t\tmessage: string | ReactElement,\n\t\toptions: ToastOptions = {},\n\t): string | number => {\n\t\tconst toastContent: ReactNode = <Toast type={type}>{message}</Toast>;\n\n\t\tlet toastOptions: ToastOptions = {\n\t\t\t...options,\n\t\t};\n\n\t\tif (type === ToastType.Critical) {\n\t\t\ttoastOptions = {\n\t\t\t\t...toastOptions,\n\t\t\t\tautoClose: false,\n\t\t\t\trole: 'alert',\n\t\t\t};\n\t\t}\n\n\t\tif (type === ToastType.Warning) {\n\t\t\ttoastOptions = {\n\t\t\t\t...toastOptions,\n\t\t\t\tautoClose: false,\n\t\t\t};\n\t\t}\n\n\t\tif (type === ToastType.Working) {\n\t\t\ttoastOptions = {\n\t\t\t\t...toastOptions,\n\t\t\t\tautoClose: false,\n\t\t\t\tcloseButton: false,\n\t\t\t\tcloseOnClick: false,\n\t\t\t};\n\t\t}\n\n\t\treturn toastApi(toastContent, toastOptions);\n\t};\n\n\tconst workingTransition = cssTransition({\n\t\tcollapse: false,\n\t\tenter: 'pds-toast--bounceInPlace',\n\t\texit: 'pds-toast--slideOut',\n\t});\n\n\treturn [addToast, toastApi, workingTransition];\n};\n","import React, {\n\tComponentPropsWithoutRef,\n\tReactNode,\n\tuseRef,\n\tuseState,\n} from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './panel-list.css';\n\n/**\n * Prop types for PanelRow\n */\nexport interface PanelRowProps extends ComponentPropsWithoutRef<'li'> {\n\t/**\n\t * Child elements to be assigned to named slots.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Additional class names.\n\t */\n\tclassName?: string;\n\t/**\n\t * Aria-label for the expand button.\n\t */\n\texpandButtonAriaLabel?: string;\n\t/**\n\t * Whether the panel row is expandable.\n\t */\n\tisExpandable?: boolean;\n}\n\n/**\n * PanelRow UI component\n */\nexport const PanelRow = ({\n\tchildren,\n\tclassName,\n\texpandButtonAriaLabel,\n\tisExpandable = false,\n\t...props\n}: PanelRowProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-panel-row';\n\tconst [isExpanded, setIsExpanded] = useState(false);\n\tconst liRef = useRef<HTMLLIElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst itemsLeftSlot = slots['items-left'];\n\tconst itemsRightSlot = slots['items-right'];\n\tconst itemsBelowSlot = slots['items-below'];\n\n\tconst handleExpand = () => {\n\t\tconst content = contentRef.current;\n\t\tconst li = liRef.current;\n\t\tif (!content || !li) return;\n\n\t\tconst isExpanding = !isExpanded;\n\t\tsetIsExpanded(isExpanding);\n\n\t\tif (isExpanding) {\n\t\t\tObject.assign(content.style, {\n\t\t\t\tdisplay: 'block',\n\t\t\t\theight: 'auto',\n\t\t\t\topacity: '1',\n\t\t\t});\n\t\t\tli.classList.add('is-expanded');\n\t\t} else {\n\t\t\tObject.assign(content.style, {\n\t\t\t\theight: '0',\n\t\t\t\topacity: '0',\n\t\t\t\tdisplay: 'none',\n\t\t\t});\n\t\t\tli.classList.remove('is-expanded');\n\t\t}\n\t};\n\n\t// Render the output\n\treturn (\n\t\t<li\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\t{...props}\n\t\t\tref={liRef}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={mergeClasses([\n\t\t\t\t\t`${baseClass}__main`,\n\t\t\t\t\tisExpandable ? 'is-expandable' : '',\n\t\t\t\t])}\n\t\t\t>\n\t\t\t\t{itemsLeftSlot && (\n\t\t\t\t\t<div className={`${baseClass}__items ${baseClass}__items--left`}>\n\t\t\t\t\t\t{itemsLeftSlot}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{itemsRightSlot && (\n\t\t\t\t\t<div className={`${baseClass}__items ${baseClass}__items--right`}>\n\t\t\t\t\t\t{itemsRightSlot}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{isExpandable && (\n\t\t\t\t\t<button\n\t\t\t\t\t\taria-expanded={isExpanded}\n\t\t\t\t\t\taria-label={expandButtonAriaLabel}\n\t\t\t\t\t\tclassName={`${baseClass}__expand-button`}\n\t\t\t\t\t\tonClick={handleExpand}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tclassName={`${baseClass}__expand-icon ${isExpanded ? 'rotated' : ''}`}\n\t\t\t\t\t\t\ticonName='angleDown'\n\t\t\t\t\t\t/>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{isExpandable && itemsBelowSlot && (\n\t\t\t\t<div\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tclassName={`${baseClass}__items ${baseClass}__items--below`}\n\t\t\t\t\tstyle={{ display: 'none', height: '0', opacity: '0' }}\n\t\t\t\t>\n\t\t\t\t\t<div className={`${baseClass}__items-inside`}>{itemsBelowSlot}</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</li>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './picture.css';\n\n/**\n * Prop types for Picture\n */\nexport interface PictureProps extends ComponentPropsWithoutRef<'img'> {\n\t/**\n\t * Alt text for the image. Defaults to empty string for decorative images.\n\t */\n\talt?: string;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Optional height for the image (CSS value, e.g., '100px', '50%', 'auto').\n\t * If not provided, the image will be sized responsively by its container.\n\t */\n\theight?: string | number;\n\t/**\n\t * The fallback image source (e.g., PNG or JPG)\n\t */\n\tsrcFallback: string;\n\t/**\n\t * The WebP image source (preferred for modern browsers)\n\t */\n\tsrcWebp: string;\n\t/**\n\t * Optional width for the image (CSS value, e.g., '100px', '50%', 'auto').\n\t * If not provided, the image will be sized responsively by its container.\n\t */\n\twidth?: string | number;\n}\n\n/**\n * Picture UI component\n */\nexport const Picture = ({\n\talt = '',\n\tclassName,\n\theight,\n\tsrcFallback,\n\tsrcWebp,\n\twidth,\n\t...props\n}: PictureProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-picture';\n\n\t// Render the output\n\treturn (\n\t\t<picture className={mergeClasses([baseClass, className ?? ''])}>\n\t\t\t<source srcSet={srcWebp} type='image/webp' />\n\t\t\t<img\n\t\t\t\talt={alt}\n\t\t\t\tclassName={`${baseClass}__img`}\n\t\t\t\theight={height}\n\t\t\t\tsrc={srcFallback}\n\t\t\t\twidth={width}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</picture>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\n\nimport './video-embed.css';\n\n/**\n * Prop types for VideoEmbed\n */\nexport interface VideoEmbedProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Video hosting platform.\n\t */\n\tplatform: 'vimeo' | 'wistia' | 'youtube';\n\t/**\n\t * Video ID to embed.\n\t */\n\tvideoId: string;\n\t/**\n\t * Video title to display. This is for the title prop on the video iframe.\n\t * If none is provided it will default to `\"[platform] video player\"`\n\t */\n\tvideoTitle?: string;\n}\n\n/**\n * VideoEmbed UI component\n */\nexport const VideoEmbed = ({\n\tclassName,\n\tplatform,\n\tvideoId,\n\tvideoTitle,\n\t...props\n}: VideoEmbedProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-video-embed';\n\n\tconst wistiaFrame = (\n\t\t<iframe\n\t\t\tallow='autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media'\n\t\t\tsrc={`https://fast.wistia.net/embed/iframe/${videoId}`}\n\t\t\ttitle={`Wistia video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t></iframe>\n\t);\n\n\tconst vimeoFrame = (\n\t\t<iframe\n\t\t\tallow='autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media'\n\t\t\tsrc={`https://player.vimeo.com/video/${videoId}`}\n\t\t\ttitle={`Vimeo video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t></iframe>\n\t);\n\n\tconst youTubeFrame = (\n\t\t<iframe\n\t\t\tallowFullScreen\n\t\t\tallow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'\n\t\t\treferrerPolicy='strict-origin-when-cross-origin'\n\t\t\tsrc={`https://www.youtube.com/embed/${videoId}`}\n\t\t\ttitle={`YouTube video player${videoTitle ? `: ${videoTitle}` : ''}`}\n\t\t></iframe>\n\t);\n\n\tlet frameToRender: ReactNode;\n\tswitch (platform) {\n\t\tcase 'vimeo':\n\t\t\tframeToRender = vimeoFrame;\n\t\t\tbreak;\n\t\tcase 'wistia':\n\t\t\tframeToRender = wistiaFrame;\n\t\t\tbreak;\n\t\tcase 'youtube':\n\t\tdefault:\n\t\t\tframeToRender = youTubeFrame;\n\t\t\tbreak;\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div className={mergeClasses([baseClass, className ?? ''])} {...props}>\n\t\t\t{frameToRender}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { StatusType } from '@libs/types/custom-types';\n\nimport './status-badge.css';\n\n/**\n * StatusBadge component props\n */\nexport interface StatusBadgeProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Background color for badge\n\t */\n\tcolor?: 'transparent' | 'neutral' | 'reverse';\n\t/**\n\t * Should the badge show a status indicator.\n\t */\n\thasStatusIndicator?: boolean;\n\t/**\n\t * Text for badge.\n\t */\n\tlabel: string;\n\t/**\n\t * Translatable text for status indicator — for screen readers.\n\t */\n\tstatusIndicatorText?: string;\n\t/**\n\t * Status type for badge. Only renders if `hasStatusIndicator` is true.\n\t */\n\tstatusType?: StatusType | 'frozen' | 'disabled';\n}\n\n/**\n * StatusBadge UI component\n */\nexport const StatusBadge = ({\n\tclassName,\n\tcolor = 'transparent',\n\thasStatusIndicator = false,\n\tlabel,\n\tstatusIndicatorText = 'Status indicator: ',\n\tstatusType,\n\t...props\n}: StatusBadgeProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-status-badge';\n\tconst colorClass = `${baseClass}--${color}`;\n\tconst statusClass = `${baseClass}__status`;\n\tconst statusClassMod = statusType ? `${statusClass}--${statusType}` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, colorClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{hasStatusIndicator === true && (\n\t\t\t\t<span className={mergeClasses([statusClass, statusClassMod])}>\n\t\t\t\t\t{statusType && (\n\t\t\t\t\t\t<span className='visually-hidden'>\n\t\t\t\t\t\t\t{statusIndicatorText} {statusType}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)}\n\t\t\t\t</span>\n\t\t\t)}\n\t\t\t<span className={`${baseClass}__label`}>{label}</span>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, useRef } from 'react';\n\nimport { useMeasure } from '@reactuses/core';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { SiteStatus, SiteType, SiteTypeIcon } from '@libs/types/custom-types';\n\nimport { StatusBadge } from '@components/badges/StatusBadge/StatusBadge';\nimport { Icon } from '@components/icons/Icon/Icon';\n\nimport './site-option-display.css';\n\n/**\n * Site option item type.\n */\nexport type SiteOption = {\n\t/**\n\t * ID of the site.\n\t */\n\tid: string;\n\t/**\n\t * Machine name of the site.\n\t */\n\tmachineName?: string;\n\t/**\n\t * Name of the site.\n\t */\n\tname: string;\n\t/**\n\t * Site active status.\n\t */\n\tstatus?: SiteStatus;\n\t/**\n\t * Site type.\n\t */\n\ttype?: SiteType;\n};\n\n/** Site option display props. */\nexport interface SiteOptionDisplayProps\n\textends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Site option to display.\n\t */\n\toption: SiteOption;\n}\n\n/**\n * UI component to display site options.\n */\nexport const SiteOptionDisplay = ({\n\tclassName,\n\toption,\n\t...props\n}: SiteOptionDisplayProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-site-option-display';\n\n\tconst iconType = option.type ? SiteTypeIcon[option.type] : 'bolt';\n\n\t// Get the width of the component.\n\tconst optionRef = useRef<HTMLDivElement | null>(null);\n\tconst [rect] = useMeasure(optionRef);\n\n\t// Calculate label truncation based on the width of the component.\n\tconst labelMaxWidth = rect.width / 16 - 7.5;\n\n\t// Preprocess status badge.\n\tlet siteStatusLabel: string;\n\tlet siteStatusIndicatorType: 'success' | 'frozen' | 'critical';\n\tif (option.status === 'active') {\n\t\tsiteStatusLabel = 'Active';\n\t\tsiteStatusIndicatorType = 'success';\n\t}\n\tif (option.status === 'frozen') {\n\t\tsiteStatusLabel = 'Frozen';\n\t\tsiteStatusIndicatorType = 'frozen';\n\t}\n\tif (option.status === 'restricted') {\n\t\tsiteStatusLabel = 'Restricted';\n\t\tsiteStatusIndicatorType = 'critical';\n\t}\n\tconst statusBadge = (\n\t\t<StatusBadge\n\t\t\thasStatusIndicator\n\t\t\tlabel={siteStatusLabel}\n\t\t\tstatusType={siteStatusIndicatorType}\n\t\t/>\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={optionRef}\n\t\t\tclassName={mergeClasses([baseClass, className ?? ''])}\n\t\t\ttitle={option.name}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={`${baseClass}__inner`} style={{ pointerEvents: 'none' }}>\n\t\t\t\t<div className={`${baseClass}__icon`}>\n\t\t\t\t\t<Icon iconName={iconType} />\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${baseClass}__label`}\n\t\t\t\t\tstyle={{ maxWidth: `${labelMaxWidth}rem` }}\n\t\t\t\t>\n\t\t\t\t\t{option.name}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className={`${baseClass}__status`} style={{ pointerEvents: 'none' }}>\n\t\t\t\t{statusBadge}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { ContainerWidth } from '@libs/types/custom-types';\n\nimport '../../utilities/container.css';\n\n/**\n * Prop types for Container\n */\ninterface ContainerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Container content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Width of the container.\n\t */\n\twidth?: ContainerWidth;\n}\n\n/**\n * Container UI component\n */\nexport const Container = ({\n\tchildren,\n\tclassName,\n\twidth = 'standard',\n\t...props\n}: ContainerProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-container';\n\tconst widthClass = width !== 'standard' ? `${baseClass}--${width}` : null;\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([baseClass, widthClass, className ?? ''])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\nimport './docs-layout.css';\n\n/**\n * Prop types for DocsLayout\n */\ninterface DocsLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Children to render in the layout.\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Minimum width of the sidebar when expanded in rems.\n\t * This is also the min-width of the sidebar when it is not collapsable (hasSidebarToggle is false).\n\t */\n\tsidebarMinWidth?: number;\n\t/**\n\t * Width of the sidebar when expanded as a percentage.\n\t * This is also the width of the sidebar when it is not collapsable (hasSidebarToggle is false).\n\t */\n\tsidebarWidth?: string;\n}\n\n/**\n * DocsLayout UI component\n */\nexport const DocsLayout = ({\n\tchildren,\n\tclassName,\n\tsidebarMinWidth = 14.5,\n\tsidebarWidth = '18%',\n\t...props\n}: DocsLayoutProps) => {\n\t// Set isMobile fallback.\n\tlet isMobile = false;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext) as {\n\t\tisMobile: boolean;\n\t};\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-docs-layout';\n\tconst mobileClass = isMobile ? `${baseClass}--isMobile` : null;\n\n\t// Sidebar styles for non-mobile.\n\tconst sidebarStyles = {\n\t\twidth: sidebarWidth,\n\t\tminWidth: `${sidebarMinWidth}rem`,\n\t};\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots.\n\tconst mainContent = slots['__unslotted'] || slots['content'];\n\tconst sidebarContent = slots['sidebar'];\n\n\t// Prepare mobile markup.\n\tconst mobileContent = (\n\t\t<>\n\t\t\t{sidebarContent && (\n\t\t\t\t<aside className={`${baseClass}__sidebar`}>{sidebarContent}</aside>\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__content`}>{mainContent}</div>\n\t\t</>\n\t);\n\n\t// Prepare default markup.\n\tconst defaultContent = (\n\t\t<>\n\t\t\t{sidebarContent && (\n\t\t\t\t<aside className={`${baseClass}__sidebar`} style={sidebarStyles}>\n\t\t\t\t\t<div className={`${baseClass}__sidebar-inner`}>{sidebarContent}</div>\n\t\t\t\t</aside>\n\t\t\t)}\n\t\t\t<div className={`${baseClass}__content`}>{mainContent}</div>\n\t\t</>\n\t);\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tmobileClass,\n\t\t\t\t'pds-container pds-container--x-wide',\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isMobile ? mobileContent : defaultContent}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode, useContext } from 'react';\n\nimport { mergeClasses } from '@libs/components/utils';\nimport { GridGapOptions } from '@libs/types/layout-types';\n\nimport { ResponsiveContext } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\nimport { useWindowWidth } from '@utilities/hooks/useWindowWidth/useWindowWidth';\n\nimport './flex-container.css';\n\ntype FlexAlignContent =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'space-between'\n\t| 'space-around'\n\t| 'stretch';\n\ntype FlexAlignItems =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'stretch'\n\t| 'baseline';\n\ntype FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\ntype FlexJustifyContent =\n\t| 'flex-start'\n\t| 'flex-end'\n\t| 'center'\n\t| 'space-between'\n\t| 'space-around'\n\t| 'space-evenly';\n\ntype FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\ntype FlexGapOptions = GridGapOptions | 'minimal' | 'none';\n\ninterface FlexContainerProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Aligns content when there is extra space in the cross-axis.\n\t */\n\talignContent?: FlexAlignContent;\n\t/**\n\t * Aligns items on the cross axis.\n\t */\n\talignItems?: FlexAlignItems;\n\t/**\n\t * Container content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Establishes the main-axis, thus defining the direction flex items are placed in the flex container.\n\t */\n\tflexDirection?: FlexDirection;\n\t/**\n\t * If the items do not fit in one line (row or column, depending on flexDirection), how should they wrap.\n\t */\n\tflexWrap?: FlexWrap;\n\t/**\n\t * Gap between items.\n\t */\n\tgap?: FlexGapOptions;\n\t/**\n\t * Alignment along the main axis.\n\t */\n\tjustifyContent?: FlexJustifyContent;\n\t/**\n\t * Align content on mobile. If not set, will default to the same value as `alignContent`.\n\t */\n\tmobileAlignContent?: FlexAlignContent;\n\t/**\n\t * Align items on mobile. If not set, will default to the same value as `alignItems`.\n\t */\n\tmobileAlignItems?: FlexAlignItems;\n\t/**\n\t * Flex direction for mobile.\n\t */\n\tmobileFlexDirection?: FlexDirection;\n\t/**\n\t * Flex wrap for mobile. If not set, will default to the same value as `flexWrap`.\n\t */\n\tmobileFlexWrap?: FlexWrap;\n\t/**\n\t * Gap between items on mobile. If not set, will default to the same value as `gap`.\n\t */\n\tmobileGap?: FlexGapOptions;\n\t/**\n\t * Justify content for mobile. If not set, will default to the same value as `justifyContent`.\n\t */\n\tmobileJustifyContent?: FlexJustifyContent;\n}\n\n/**\n * Flex Container UI component\n */\nexport const FlexContainer = ({\n\talignContent = 'flex-start',\n\talignItems = 'stretch',\n\tchildren,\n\tclassName,\n\tflexDirection = 'row',\n\tflexWrap = 'nowrap',\n\tgap = 'standard',\n\tjustifyContent = 'flex-start',\n\tmobileAlignContent,\n\tmobileAlignItems,\n\tmobileFlexDirection = 'column',\n\tmobileFlexWrap,\n\tmobileGap,\n\tmobileJustifyContent,\n\t...props\n}: FlexContainerProps) => {\n\t// Get window width.\n\tconst windowWidth = useWindowWidth();\n\n\t// Set isMobile fallback.\n\tlet isMobile = windowWidth <= 640;\n\n\t// Get responsive context.\n\tconst responsiveContext = useContext(ResponsiveContext);\n\tif (responsiveContext) {\n\t\tisMobile = responsiveContext.isMobile;\n\t}\n\n\t// Set up classes.\n\tconst baseClass = 'pds-flex';\n\tconst containerClass = `${baseClass}-container`;\n\tconst mobileClass = isMobile ? `${containerClass}--mobile` : null;\n\n\tlet flexDirectionClass = null;\n\tif (isMobile) {\n\t\tflexDirectionClass = `${baseClass}-direction--${mobileFlexDirection}`;\n\t} else {\n\t\tif (flexDirection !== 'row') {\n\t\t\tflexDirectionClass = `${baseClass}-direction--${flexDirection}`;\n\t\t}\n\t}\n\n\tlet flexWrapClass = null;\n\tif (isMobile) {\n\t\t// If mobileFlexWrap is set, use that value.\n\t\tif (mobileFlexWrap) {\n\t\t\tif (mobileFlexWrap !== 'nowrap') {\n\t\t\t\tflexWrapClass = `${baseClass}-wrap--${mobileFlexWrap}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileFlexWrap is not set, default to flexWrap value.\n\t\t\tif (flexWrap !== 'nowrap') {\n\t\t\t\tflexWrapClass = `${baseClass}-wrap--${flexWrap}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (flexWrap !== 'nowrap') {\n\t\t\tflexWrapClass = `${baseClass}-wrap--${flexWrap}`;\n\t\t}\n\t}\n\n\tlet justifyContentClass = null;\n\tif (isMobile) {\n\t\t// If mobileJustifyContent is set, use that value.\n\t\tif (mobileJustifyContent) {\n\t\t\tif (mobileJustifyContent !== 'flex-start') {\n\t\t\t\tjustifyContentClass = `${baseClass}-justify--${mobileJustifyContent}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileJustifyContent is not set, default to justifyContent value.\n\t\t\tif (justifyContent !== 'flex-start') {\n\t\t\t\tjustifyContentClass = `${baseClass}-justify--${justifyContent}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (justifyContent !== 'flex-start') {\n\t\t\tjustifyContentClass = `${baseClass}-justify--${justifyContent}`;\n\t\t}\n\t}\n\n\tlet alignItemsClass = null;\n\tif (isMobile) {\n\t\t// If mobileAlignItems is set, use that value.\n\t\tif (mobileAlignItems) {\n\t\t\tif (mobileAlignItems !== 'stretch') {\n\t\t\t\talignItemsClass = `${baseClass}-align-items--${mobileAlignItems}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileAlignItems is not set, default to alignItems value.\n\t\t\tif (alignItems !== 'stretch') {\n\t\t\t\talignItemsClass = `${baseClass}-align-items--${alignItems}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (alignItems !== 'stretch') {\n\t\t\talignItemsClass = `${baseClass}-align-items--${alignItems}`;\n\t\t}\n\t}\n\n\tlet alignContentClass = null;\n\tif (isMobile) {\n\t\t// If mobileAlignContent is set, use that value.\n\t\tif (mobileAlignContent) {\n\t\t\tif (mobileAlignContent !== 'flex-start') {\n\t\t\t\talignContentClass = `${baseClass}-align-content--${mobileAlignContent}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileAlignContent is not set, default to alignContent value.\n\t\t\tif (alignContent !== 'flex-start') {\n\t\t\t\talignContentClass = `${baseClass}-align-content--${alignContent}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (alignContent !== 'flex-start') {\n\t\t\talignContentClass = `${baseClass}-align-content--${alignContent}`;\n\t\t}\n\t}\n\n\tlet gapClass = null;\n\tif (isMobile) {\n\t\t// If mobileGap is set, use that value.\n\t\tif (mobileGap) {\n\t\t\tif (mobileGap !== 'none') {\n\t\t\t\tgapClass = `${baseClass}-gap--${mobileGap}`;\n\t\t\t}\n\t\t} else {\n\t\t\t// If mobileGap is not set, default to gap value.\n\t\t\tif (gap !== 'none') {\n\t\t\t\tgapClass = `${baseClass}-gap--${gap}`;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (gap !== 'none') {\n\t\t\tgapClass = `${baseClass}-gap--${gap}`;\n\t\t}\n\t}\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tcontainerClass,\n\t\t\t\tmobileClass,\n\t\t\t\tflexDirectionClass,\n\t\t\t\tflexWrapClass,\n\t\t\t\tjustifyContentClass,\n\t\t\t\talignItemsClass,\n\t\t\t\talignContentClass,\n\t\t\t\tgapClass,\n\t\t\t\tclassName ?? '',\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n","import React, { ReactNode } from 'react';\n\nimport { OverlayContextProvider } from '@utilities/context-providers/OverlayContext/OverlayContext';\nimport { ResponsiveContextProvider } from '@utilities/context-providers/ResponsiveContext/ResponsiveContext';\n\n/**\n * Prop types for GlobalWrapper\n */\ninterface GlobalWrapperProps {\n\t/**\n\t * Child components\n\t */\n\tchildren: ReactNode;\n\t/**\n\t * Mobile menu will be enabled when viewport is at or below this number in pixels.\n\t */\n\tmobileMenuMaxWidth?: number;\n}\n\n/**\n * GlobalWrapper wrapper component.\n */\nexport const GlobalWrapper = ({\n\tchildren,\n\tmobileMenuMaxWidth = 640,\n}: GlobalWrapperProps) => {\n\treturn (\n\t\t<ResponsiveContextProvider mobileMenuMaxWidth={mobileMenuMaxWidth}>\n\t\t\t<OverlayContextProvider>{children}</OverlayContextProvider>\n\t\t</ResponsiveContextProvider>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { GridGapOptions, VerticalAlignOptions } from '@libs/types/layout-types';\n\nimport '../../utilities/grid/grid.css';\nimport './three-item-layout.css';\n\n/**\n * Prop types for TwoItemLayout\n */\ninterface TwoItemLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Item content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Width of gap between items.\n\t */\n\tgridGap?: GridGapOptions;\n\t/**\n\t * Vertical alignment of items.\n\t */\n\tverticalAlign?: VerticalAlignOptions;\n}\n\n/**\n * ThreeItemLayout UI component.\n */\nexport const ThreeItemLayout = ({\n\tchildren,\n\tclassName,\n\tgridGap = 'standard',\n\tverticalAlign = 'start',\n\t...props\n}: TwoItemLayoutProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-three-item-layout';\n\tconst gridGapClass =\n\t\tgridGap === 'standard' ? 'pds-grid' : `pds-grid pds-grid--${gridGap}`;\n\tconst vertAlignClass = `${baseClass}--${verticalAlign}`;\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\tconst columns = [\n\t\tslots['first-item'],\n\t\tslots['second-item'],\n\t\tslots['third-item'],\n\t];\n\n\t// Render the output\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tgridGapClass,\n\t\t\t\tvertAlignClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t{columns.map((column, idx) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={idx}\n\t\t\t\t\tclassName='pds-grid-item pds-grid-item--sm-12 pds-grid-item--md-4 pds-grid-item--lg-4'\n\t\t\t\t>\n\t\t\t\t\t{column}\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\n\nimport { initiateSlots, mergeClasses } from '@libs/components/utils';\nimport { GridGapOptions, VerticalAlignOptions } from '@libs/types/layout-types';\n\nimport '../../utilities/grid/grid.css';\nimport './two-item-layout.css';\n\n/**\n * Prop types for TwoItemLayout\n */\ninterface TwoItemLayoutProps extends ComponentPropsWithoutRef<'div'> {\n\t/**\n\t * Item content.\n\t */\n\tchildren?: ReactNode;\n\t/**\n\t * Additional class names\n\t */\n\tclassName?: string;\n\t/**\n\t * Width of gap between items.\n\t */\n\tgridGap?: GridGapOptions;\n\t/**\n\t * Layout variant for column widths.\n\t */\n\tlayoutVariant?: 'equal' | 'one-third-start' | 'one-third-end';\n\t/**\n\t * Vertical alignment of items.\n\t */\n\tverticalAlign?: VerticalAlignOptions;\n}\n\n/**\n * TwoItemLayout UI component.\n */\nexport const TwoItemLayout = ({\n\tchildren,\n\tclassName,\n\tgridGap = 'standard',\n\tlayoutVariant = 'equal',\n\tverticalAlign = 'start',\n\t...props\n}: TwoItemLayoutProps) => {\n\t// Set up classes.\n\tconst baseClass = 'pds-two-item-layout';\n\tconst gridGapClass =\n\t\tgridGap === 'standard' ? 'pds-grid' : `pds-grid pds-grid--${gridGap}`;\n\tconst vertAlignClass = `${baseClass}--${verticalAlign}`;\n\n\t// Pre-defined class arrays based on column width.\n\tconst halfClasses = ['pds-grid-item--md-6'];\n\tconst oneThirdClasses = ['pds-grid-item--md-4', 'pds-grid-item--lg-3'];\n\tconst twoThirdsClasses = ['pds-grid-item--md-8', 'pds-grid-item--lg-9'];\n\n\t// Base classes array.\n\tconst itemBaseClasses = ['pds-grid-item', 'pds-grid-item--sm-4'];\n\n\t// Establish vars for each item's classes array.\n\tinterface ItemClasses {\n\t\tfirstItemClasses: string[];\n\t\tsecondItemClasses: string[];\n\t}\n\n\tlet firstItemClasses: ItemClasses['firstItemClasses'];\n\tlet secondItemClasses: ItemClasses['secondItemClasses'];\n\n\t// Alter items' class arrays based on layoutVariant.\n\tswitch (layoutVariant) {\n\t\tcase 'equal':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(halfClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(halfClasses);\n\t\t\tbreak;\n\t\tcase 'one-third-start':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(oneThirdClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(twoThirdsClasses);\n\t\t\tbreak;\n\t\tcase 'one-third-end':\n\t\t\tfirstItemClasses = itemBaseClasses.concat(twoThirdsClasses);\n\t\t\tsecondItemClasses = itemBaseClasses.concat(oneThirdClasses);\n\t}\n\n\t// Initiate slots.\n\tconst slots = initiateSlots(children);\n\n\t// Assign content to named slots for this component.\n\tconst firstItemContent = slots['first-item'];\n\tconst secondItemContent = slots['second-item'];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={mergeClasses([\n\t\t\t\tbaseClass,\n\t\t\t\tgridGapClass,\n\t\t\t\tvertAlignClass,\n\t\t\t\tclassName,\n\t\t\t])}\n\t\t\t{...props}\n\t\t>\n\t\t\t<div className={firstItemClasses.join(' ').trim()}>\n\t\t\t\t{firstItemContent}\n\t\t\t</div>\n\t\t\t<div className={secondItemClasses.join(' ').trim()}>\n\t\t\t\t{secondItemContent}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { useEffect, useState } from 'react';\n\nimport {\n\tBP_L,\n\tBP_M,\n\tBP_XL,\n} from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n\nexport type Breakpoint = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Returns the current breakpoint based on window width.\n *\n * Breakpoints:\n * - sm: 0-767px (mobile)\n * - md: 768-1279px (tablet)\n * - lg: 1280-1439px (desktop)\n * - xl: 1440px+ (large desktop)\n *\n * @returns {Breakpoint} Current breakpoint name\n *\n * @example\n * const breakpoint = useBreakpoint();\n * const isMobile = breakpoint === 'sm';\n */\nexport const useBreakpoint = (): Breakpoint => {\n\tconst isBrowser = typeof window !== 'undefined';\n\n\tconst getBreakpoint = (width: number): Breakpoint => {\n\t\tif (width >= BP_XL) return 'xl';\n\t\tif (width >= BP_L) return 'lg';\n\t\tif (width >= BP_M) return 'md';\n\t\treturn 'sm';\n\t};\n\n\tconst [breakpoint, setBreakpoint] = useState<Breakpoint>(\n\t\tisBrowser ? getBreakpoint(window.innerWidth) : 'lg',\n\t);\n\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tconst handleResize = () => {\n\t\t\tsetBreakpoint(getBreakpoint(window.innerWidth));\n\t\t};\n\n\t\t// Set initial value\n\t\thandleResize();\n\n\t\twindow.addEventListener('resize', handleResize);\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', handleResize);\n\t\t};\n\t}, []);\n\n\treturn breakpoint;\n};\n","import { useEffect, useState } from 'react';\n\n/**\n * Hook for matching CSS media queries in JavaScript.\n *\n * @param {string} query - CSS media query string (e.g., \"(min-width: 768px)\")\n * @returns {boolean} Whether the media query currently matches\n *\n * @example\n * // Using with breakpoint constants\n * import { BP_M } from '@pantheon-systems/pds-design-tokens/build/js/variables.global.js';\n * const isTabletOrLarger = useMediaQuery(`(min-width: ${BP_M}px)`);\n *\n * @example\n * // Using with custom query\n * const prefersReducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)');\n * const isDarkMode = useMediaQuery('(prefers-color-scheme: dark)');\n */\nexport const useMediaQuery = (query: string): boolean => {\n\tconst isBrowser = typeof window !== 'undefined';\n\n\tconst getMatches = (mediaQuery: string): boolean => {\n\t\tif (!isBrowser) return false;\n\t\treturn window.matchMedia(mediaQuery).matches;\n\t};\n\n\tconst [matches, setMatches] = useState<boolean>(getMatches(query));\n\n\tuseEffect(() => {\n\t\tif (!isBrowser) return;\n\n\t\tconst mediaQueryList = window.matchMedia(query);\n\t\tconst handleChange = () => {\n\t\t\tsetMatches(mediaQueryList.matches);\n\t\t};\n\n\t\t// Set initial value\n\t\tsetMatches(mediaQueryList.matches);\n\n\t\t// Modern browsers\n\t\tif (mediaQueryList.addEventListener) {\n\t\t\tmediaQueryList.addEventListener('change', handleChange);\n\t\t\treturn () => mediaQueryList.removeEventListener('change', handleChange);\n\t\t} else {\n\t\t\t// Legacy browsers (Safari < 14)\n\t\t\tmediaQueryList.addListener(handleChange);\n\t\t\treturn () => mediaQueryList.removeListener(handleChange);\n\t\t}\n\t}, [query]);\n\n\treturn matches;\n};\n"],"names":["createRandomID","initiateSlots","children","slots","unslotted","Children","child","isValidElement","slotName","mergeClasses","styles","Tally","className","label","size","type","typeLabels","props","baseClass","colorClass","sizeClass","messageTypeLabel","React","extractText","node","BP_M","BP_L","BP_XL","SPACING_6XL","SPACING_5XL","SPACING_4XL","SPACING_3XL","SPACING_2XL","SPACING_XL","SPACING_L","SPACING_M","SPACING_S","SPACING_XS","Z_INDEX_NOTIFICATIONS","Z_INDEX_OVERLAY","customIcons","iconData","iconList","iconSizes","Icon","display","iconName","iconSize","style","verticalAlign","iconClasses","data","viewBox","customIcon","iconContent","pathData","d","i","TYPOGRAPHY_SIZE_XS","TYPOGRAPHY_SIZE_S","TYPOGRAPHY_SIZE_M","OverlayContext","createContext","OverlayContextProvider","overlayCount","setOverlayCount","useState","openOverlay","useCallback","prev","closeOverlay","hasOpenOverlay","useEffect","handleKeyDown","e","contextValue","useKeyPress","targetKey","callback","options","altKey","ctrlKey","enabled","metaKey","shiftKey","keyPressed","setKeyPressed","modifiersMatch","event","downHandler","upHandler","Tooltip","content","customTrigger","offsetValue","preferredPlacement","triggerAccessibleText","triggerIcon","triggerIconColor","triggerIconSize","zIndex","isOpen","setIsOpen","triggerType","customTriggerClasses","iconTriggerClasses","context","floatingStyles","refs","useFloating","offset","flip","shift","autoUpdate","hover","useHover","focus","useFocus","dismiss","useDismiss","role","useRole","getFloatingProps","getReferenceProps","useInteractions","FloatingPortal","inputCommonClasses","getInputWidthStyle","inputWidth","RequiredIcon","InputLabel","disabled","id","isLegend","isPseudoLabel","required","showLabel","tooltipText","labelClasses","labelContent","InputMessage","forInputGroup","hasValidationMessage","message","validationMessageHasDecorators","validationStatus","statusClass","InputDecorator","iconVariants","variant","HiddenLabel","forwardRef","isActive","ref","useId","activeClass","spinnerSizes","labelFontSizes","labelMargins","Spinner","colorType","isInline","displayClass","spinnerSize","fontSize","labelMargin","lineWidth","spinnerStyles","labelStyles","Button","ariaLabel","buttonType","displayType","isFullWidth","isLoading","isSplitButton","isWorking","onClick","variantClass","fullWidthClass","loadingClass","pulseClass","setIconSize","setSpinnerSize","setSpinnerColor","renderedIcon","buttonContent","buttonElement","ButtonLink","linkContent","buttonBaseClass","buttonModifierClasses","linkText","linkLabel","processedLink","cloneElement","useClipboard","text","isCopied","setIsCopied","duration","IconButton","hasTooltip","icon2Name","animationClasses","setOffsetValue","isAnimated","icon1Ref","useRef","icon2Ref","handleAnimation","handleClick","ClipboardButton","clipboardText","_isCopied","CloseButton","StatusTypeLabels","isSeparatorItemType","item","isHeadingItemType","isLinkItemType","isNodeItemType","SitePlanLevelLabel","SiteTypeLabel","SiteTypeIcon","useWindowWidth","isBrowser","windowWidth","setWindowWidth","handleResize","ResponsiveContext","ResponsiveContextProvider","mobileMenuMaxWidth","isMobile","MenuButton","menuItems","menuPosition","testId","undefinedLabel","withinNavbar","placement","strategy","x","y","responsiveContext","useContext","isMobileNavbar","mobileClass","navbarClass","triggerID","listboxID","menuRefActual","nodeRef","focusMenu","setFocusMenu","activeDescendant","setActiveDescendant","activeMenuItemIndex","setActiveMenuItemIndex","groupIDs","menuItemIDs","focusableMenuItems","useLayoutEffect","handleClickOutside","menuElem","setActiveMenuItem","elemID","index","openMenu","closeMenu","setFocusByFirstCharacter","char","itemFound","activateMenuItem","itemID","itemIndex","activateCurrentMenuItem","currentItemID","handleTriggerClick","handleMenuItemClick","handleButtonKeyDown","key","flag","firstEnabledIndex","lastEnabledIndex","handleMenuKeydown","moveToItemID","moveToIndex","isPrintableCharacter","str","attempts","maxAttempts","renderItem","groupID","groupHeadingID","groupIDString","fallbackItemID","shouldFocus","isCritical","criticalLabel","itemLabel","itemDescription","itemContent","linkElement","LinkElement","menuItemClasses","renderMenuItemsGrouped","items","menuItemBreaks","groupedItems","breaks","breakItem","group","renderMenuItems","itemsData","haveBreaks","listboxClasses","groupedItemsData","currentGroupID","firstMenuItemIndex","initialDescendant","hasHeading","keyID","groupLabel","menuButtonDisplayType","labelText","handleExpand","button","MobileMenuItems","menuButtonMobileDisplayType","buttonVariant","mobileButtonClasses","navbarMobileMarkup","expandedClass","SegmentedButton","defaultValue","onChange","value","disabledClass","isControlled","hasDefaultValue","internalValue","setInternalValue","handleSelection","radio","idx","isChecked","optionClass","checkedClass","SplitButton","actionItems","moreActionsLabel","primaryAction","moreActions","primaryActionElement","PlatformIcon","platformType","platformClass","processedIcon","iconPair","svgData","SSOButton","platform","UtilityButton","buttonProps","hasBorder","iconPosition","isMonospace","renderIcon","renderSpinner","buildContent","extractedLabel","wrapperClasses","wrapWithTooltip","Tag","dropTargetDirection","focusedIndex","isDragging","isSortable","onDragEnd","onDragOver","onDragStart","onKeyboardMove","onRemove","setFocusedIndex","tag","totalTags","translationStrings","tagRef","handleDragStart","rootStyles","hoverBg","hoverColor","selectedOutline","originalBg","originalColor","originalOutline","originalOutlineOffset","handleDragOver","rect","mouseX","tagCenter","side","indexStr","totalStr","ariaTemplate","draggingClass","dropTargetClass","TagsInput","addMorePlaceholder","inputMinHeight","placeholder","tags","validationMessage","inputWidthStyle","requiredClass","errorClass","successClass","processedMessage","inputValue","setInputValue","draggedId","setDraggedId","dropTargetId","setDropTargetId","dropSide","setDropSide","announcement","setAnnouncement","inputRef","activePlaceholder","announce","handleTagsChange","newTags","handleDragEnd","handleDrop","draggedIndex","targetIndex","draggedItem","insertIndex","handleKeyboardMove","fromIndex","toIndex","movedItem","handleRemove","t","newTag","lastTag","dropDirection","isActiveItem","isActiveTrail","ButtonNav","navRef","nav","focusableElements","focusedElement","currentIndex","nextIndex","prevIndex","ButtonMenuItem","itemClass","defaultMarkup","mobileMenuItems","mobileMarkup","iconTypes","ANIMATION_DURATION","REVERSE_DELAY","Banner","banners","dismissLabel","labelNext","labelPrevious","bannerGroup","setBannerGroup","fadingId","setFadingId","dismissingId","setDismissingId","zIndexOverrides","setZIndexOverrides","totalBanners","multipleClass","typeClasses","activeBannerType","activeBannerTypeClass","getZIndex","getTabIndex","showNextBanner","prevBanners","showPreviousBanner","renderBanner","banner","isDismissible","onDismiss","roleType","bannerTypeLabel","handleDismiss","prevBanner","InlineMessage","title","cssClasses","SectionMessage","ctaButton","messageRef","hasDismissClass","hasTitleClass","dismissAnimationEndEventHandler","triggerOnDismiss","defaultTypeLabels","Toast","toastTypeLabel","ToastCloseButton","closeToast","Toaster","autoCloseDuration","limit","position","toasterClasses","ToastContainer","Slide","ToastType","useToast","addToast","toastContent","toastOptions","toastApi","workingTransition","cssTransition","PanelRow","expandButtonAriaLabel","isExpandable","isExpanded","setIsExpanded","liRef","contentRef","itemsLeftSlot","itemsRightSlot","itemsBelowSlot","li","isExpanding","Picture","alt","height","srcFallback","srcWebp","width","VideoEmbed","videoId","videoTitle","wistiaFrame","vimeoFrame","youTubeFrame","frameToRender","StatusBadge","color","hasStatusIndicator","statusIndicatorText","statusType","statusClassMod","SiteOptionDisplay","option","iconType","optionRef","useMeasure","labelMaxWidth","siteStatusLabel","siteStatusIndicatorType","statusBadge","Container","widthClass","DocsLayout","sidebarMinWidth","sidebarWidth","sidebarStyles","mainContent","sidebarContent","mobileContent","defaultContent","FlexContainer","alignContent","alignItems","flexDirection","flexWrap","gap","justifyContent","mobileAlignContent","mobileAlignItems","mobileFlexDirection","mobileFlexWrap","mobileGap","mobileJustifyContent","containerClass","flexDirectionClass","flexWrapClass","justifyContentClass","alignItemsClass","alignContentClass","gapClass","GlobalWrapper","ThreeItemLayout","gridGap","gridGapClass","vertAlignClass","columns","column","TwoItemLayout","layoutVariant","halfClasses","oneThirdClasses","twoThirdsClasses","itemBaseClasses","firstItemClasses","secondItemClasses","firstItemContent","secondItemContent","useBreakpoint","getBreakpoint","breakpoint","setBreakpoint","useMediaQuery","query","getMatches","mediaQuery","matches","setMatches","mediaQueryList","handleChange"],"mappings":"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,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GC7vDMC,KAAsC;AAAA,EAC3C,OAAOX;AAAA,EACP,OAAOD;AAAA,EACP,GAAGG;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,IAAIH;AAAA,EACJ,IAAII;AACL,GA2BaO,IAAO,CAAC;AAAA,EACpB,WAAAhC;AAAA,EACA,SAAAiC,IAAU;AAAA,EACV,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,GAAGhC;AACJ,MAAiB;AAChB,QAAMC,IAAY,YACZgC,IAAc,GAAGhC,CAAS,IAAIA,CAAS,KAAK6B,CAAQ,IAAI7B,CAAS,KAAK4B,CAAQ,IAC9EK,IAAOV,GAASK,CAAQ,GACxBM,IAAU,OAAOD,EAAK,KAAK,IAAIA,EAAK,MAAM,IAG1CE,IACLP,KAAYN,KACTA,GAAYM,CAAoC,IAChD;AAGJ,MAAIQ;AAEJ,MAAID,GAAY,SAAS;AACxB,IAAAC,IAAcD,EAAW,OAAA;AAAA,OACnB;AACN,UAAME,IACLF,GAAY,SAAS,SAASA,EAAW,cAAcF,EAAK;AAE7D,IAAAG,IAAc,MAAM,QAAQC,CAAQ,IACnCA,EAAS,IAAI,CAACC,GAAGC,MAAM,gBAAAnC,EAAA,cAAC,QAAA,EAAK,KAAKmC,GAAG,GAAAD,GAAM,MAAK,eAAA,CAAe,CAAE,oCAEhE,QAAA,EAAK,GAAGD,GAAU,MAAK,eAAA,CAAe;AAAA,EAEzC;AAEA,SACC,gBAAAjC,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,eAAY;AAAA,MACZ,WAAWb,EAAa,CAACyC,GAAatC,KAAa,EAAE,CAAC;AAAA,MACtD,MAAK;AAAA,MACL,WAAU;AAAA,MACV,QAAQ+B,GAAUI,CAAQ;AAAA,MAC1B,qBAAoB;AAAA,MACpB,MAAK;AAAA,MACL,OAAO;AAAA,QACN,SAAAF;AAAA,QACA,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAAI;AAAA,QACA,GAAGD;AAAA,MAAA;AAAA,MAEJ,SAAAI;AAAA,MACA,OAAM;AAAA,MACL,GAAGnC;AAAA,IAAA;AAAA,IAEHqC;AAAA,EAAA;AAGJ,GCxGaI,KAAqB,WACrBC,KAAoB,YACpBC,KAAoB,QCZpBC,KAAiBC,GAAyC,IAAI,GAE9DC,KAAyB,CAAC;AAAA,EACtC,UAAA7D;AACD,MAEM;AACL,QAAM,CAAC8D,GAAcC,CAAe,IAAIC,EAAS,CAAC,GAE5CC,IAAcC,GAAY,MAAM;AACrC,IAAAH,EAAgB,CAACI,MAASA,IAAO,CAAC;AAAA,EACnC,GAAG,CAAA,CAAE,GAECC,IAAeF,GAAY,MAAM;AACtC,IAAAH,EAAgB,CAACI,MAAS,KAAK,IAAI,GAAGA,IAAO,CAAC,CAAC;AAAA,EAChD,GAAG,CAAA,CAAE,GAECE,IAAiBP,IAAe;AAItC,EAAAQ,GAAU,MAAM;AACf,QAAI,CAACD;AACJ;AAGD,UAAME,IAAgB,CAACC,MAAqB;AAI3C,MAFoB,CAAC,GAAG,EAER,SAASA,EAAE,GAAG,MAC7BA,EAAE,eAAA,GACFA,EAAE,gBAAA,GACFA,EAAE,yBAAA;AAAA,IAEJ;AAGA,oBAAS,iBAAiB,WAAWD,GAAe,EAAE,SAAS,IAAM,GAE9D,MAAM;AACZ,eAAS,oBAAoB,WAAWA,GAAe,EAAE,SAAS,IAAM;AAAA,IACzE;AAAA,EACD,GAAG,CAACF,CAAc,CAAC;AAEnB,QAAMI,IAAmC;AAAA,IACxC,cAAAL;AAAA,IACA,gBAAAC;AAAA,IACA,aAAAJ;AAAA,EAAA;AAGD,yCACEN,GAAe,UAAf,EAAwB,OAAOc,KAC9BzE,CACF;AAEF,GC9Ca0E,KAAc,CAC1BC,GACAC,GACAC,MACI;AACJ,QAAM;AAAA,IACL,QAAAC,IAAS;AAAA,IACT,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,UAAAC,IAAW;AAAA,EAAA,IACRL,KAAW,CAAA,GACT,CAACM,GAAYC,CAAa,IAAIpB,EAAS,EAAK,GAG5CqB,IAAiBnB;AAAA,IACtB,CAACoB,MAECA,EAAM,WAAWR,KACjBQ,EAAM,YAAYP,KAClBO,EAAM,YAAYL,KAClBK,EAAM,aAAaJ;AAAA,IAGrB,CAACJ,GAAQC,GAASE,GAASC,CAAQ;AAAA,EAAA,GAI9BK,IAAcrB;AAAA,IACnB,CAACoB,MAAyB;AAEzB,MAAIA,EAAM,QAAQX,KAAaU,EAAeC,CAAK,MAClDF,EAAc,EAAI,GAGdR,KACHA,EAASU,CAAK;AAAA,IAGjB;AAAA,IACA,CAACX,GAAWC,GAAUS,CAAc;AAAA,EAAA,GAI/BG,IAAYtB;AAAA,IACjB,CAACoB,MAAyB;AACzB,MAAIA,EAAM,QAAQX,KAAaU,EAAeC,CAAK,KAClDF,EAAc,EAAK;AAAA,IAErB;AAAA,IACA,CAACT,GAAWU,CAAc;AAAA,EAAA;AAG3B,SAAAf,GAAU,MAAM;AAEf,QAAKU;AAGL,oBAAO,iBAAiB,WAAWO,CAAW,GAC9C,OAAO,iBAAiB,SAASC,CAAS,GAGnC,MAAM;AACZ,eAAO,oBAAoB,WAAWD,CAAW,GACjD,OAAO,oBAAoB,SAASC,CAAS;AAAA,MAC9C;AAAA,EACD,GAAG,CAACD,GAAaC,GAAWR,CAAO,CAAC,GAG7BG;AACR,GCxBaM,KAAU,CAAC;AAAA,EACvB,WAAA/E;AAAA,EACA,SAAAgF;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,aAAAC,IAAc;AAAA,EACd,oBAAAC,IAAqB;AAAA,EACrB,uBAAAC,IAAwB;AAAA,EACxB,aAAAC,IAAc;AAAA,EACd,kBAAAC,IAAmB;AAAA,EACnB,iBAAAC,IAAkB;AAAA,EAClB,QAAAC,IAAS7D;AAAA,EACT,GAAGtB;AACJ,MAAoB;AAEnB,QAAM,CAACoF,GAAQC,CAAS,IAAIpC,EAAS,EAAK,GAGpCqC,IAAc,OAAOV,GAGrB3E,IAAY,eACZsF,IAAuB/F,EAAa;AAAA,IACzC,GAAGS,CAAS;AAAA,IACZqF,MAAgB,WAAW,GAAGrF,CAAS,mBAAmB;AAAA,EAAA,CAC1D,GACKuF,IAAqBhG,EAAa;AAAA,IACvC,GAAGS,CAAS;AAAA,IACZ,GAAGA,CAAS,cAAcgF,CAAgB;AAAA,EAAA,CAC1C,GAGK,EAAE,SAAAQ,GAAS,gBAAAC,GAAgB,MAAAC,EAAA,IAASC,GAAY;AAAA,IACrD,WAAWd;AAAA,IACX,MAAMM;AAAA,IACN,cAAcC;AAAA,IACd,YAAY,CAACQ,GAAOhB,CAAW,GAAGiB,GAAA,GAAQC,IAAO;AAAA,IACjD,sBAAsBC;AAAA,EAAA,CACtB,GAEKC,IAAQC,GAAST,GAAS;AAAA,IAC/B,QAAQ;AAAA,IACR,OAAO,EAAE,MAAM,KAAK,OAAO,EAAA;AAAA,IAC3B,MAAM;AAAA,EAAA,CACN,GACKU,IAAQC,GAASX,CAAO,GACxBY,IAAUC,GAAWb,CAAO,GAC5Bc,IAAOC,GAAQf,GAAS,EAAE,MAAM,WAAW,GAE3C,EAAE,kBAAAgB,GAAkB,mBAAAC,EAAA,IAAsBC,GAAgB;AAAA,IAC/DV;AAAA,IACAE;AAAA,IACAE;AAAA,IACAE;AAAA,EAAA,CACA;AAGD,SACC,gBAAAlG,EAAA,cAAC,OAAA,EAAI,WAAWb,EAAa,CAACS,GAAWN,KAAa,EAAE,CAAC,GAAI,GAAGK,EAAA,GAC9D4E,IACA,gBAAAvE,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAKsF,EAAK;AAAA,MACV,WAAWJ;AAAA,MACV,GAAGmB,EAAA;AAAA,IAAkB;AAAA,IAErB9B;AAAA,EAAA,IAGF,gBAAAvE,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAKsF,EAAK;AAAA,MACV,cAAYZ;AAAA,MACZ,WAAWS;AAAA,MACX,MAAK;AAAA,MACJ,GAAGkB,EAAA;AAAA,IAAkB;AAAA,IAEtB,gBAAArG,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACA,WAAW,GAAG1B,CAAS;AAAA,QACvB,UAAU+E;AAAA,QACV,UAAUE;AAAA,MAAA;AAAA,IAAA;AAAA,EACX,mCAGD0B,IAAA,MACA,gBAAAvG,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAKsF,EAAK;AAAA,MACV,eAAa,CAACP;AAAA,MACd,WAAW,GAAGnF,CAAS;AAAA,MACvB,OAAO;AAAA,QACN,GAAGyF;AAAA,QACH,QAAAP;AAAA,QACA,SAASC,IAAS,IAAI;AAAA,QACtB,eAAeA,IAAS,SAAS;AAAA,QACjC,YAAY;AAAA,MAAA;AAAA,MAEZ,GAAGqB,EAAA;AAAA,IAAiB;AAAA,IAEpB9B;AAAA,EAAA,CAEH,CACD;AAEF,GCpJakC,KAAqB;AAAA,EACjC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAEV,GAGaC,KAAqB,CAACC,MAClCA,IAAa,EAAE,UAAU,GAAGA,IAAa,EAAE,MAAA,IAAU,MAQzCC,KAAe,MAC3B,gBAAA3G,EAAA,cAAC,QAAA,EAAK,WAAU,+BACf,gBAAAA,EAAA;AAAA,EAACsB;AAAA,EAAA;AAAA,IACA,WAAU;AAAA,IACV,UAAS;AAAA,IACT,UAAS;AAAA,EAAA;AACV,CACD,GA4CYsF,KAAa,CAAC;AAAA,EAC1B,WAAAtH;AAAA,EACA,UAAAuH;AAAA,EACA,IAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAzH;AAAA,EACA,UAAA0H;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,aAAAC,IAAc;AACf,MAAuB;AACtB,QAAMC,IAAejI,EAAa;AAAA,IACjC;AAAA,IACC+H,IAAgC,OAApB;AAAA,IACb5H,KAAa;AAAA,EAAA,CACb,GAEK+H,IACL,gBAAArH,EAAA,cAAAA,EAAA,UAAA,MACET,GACA0H,KAAY,CAACJ,KAAY,gBAAA7G,EAAA,cAAC2G,IAAA,IAAa,GACvCQ,KACA,gBAAAnH,EAAA,cAACqE,IAAA,EAAQ,SAAS8C,EAAA,GACjB,gBAAAnH,EAAA,cAAC,QAAA,MACA,gBAAAA,EAAA,cAACsB,GAAA,EAAK,UAAS,cAAa,UAAS,IAAA,CAAI,CAC1C,CACD,CAEF;AAID,SAAIyF,IAEF,gBAAA/G,EAAA,cAAC,YAAO,WAAWoH,GAAc,IAAI,GAAGN,CAAE,aACxCO,CACF,IAKEL,IAEF,gBAAAhH,EAAA,cAAC,UAAK,WAAWoH,GAAc,IAAI,GAAGN,CAAE,kBACtCO,CACF,IAMD,gBAAArH,EAAA,cAAC,SAAA,EAAM,WAAWoH,GAAc,SAASN,GAAI,IAAI,GAAGA,CAAE,SAAA,GACpDO,CACF;AAEF,GAGaC,KAAe,CAAC;AAAA,EAC5B,WAAAhI;AAAA,EACA,eAAAiI,IAAgB;AAAA,EAChB,sBAAAC;AAAA,EACA,IAAAV;AAAA,EACA,SAAAW;AAAA,EACA,gCAAAC;AAAA,EACA,kBAAAC;AACD,MAQM;AACL,QAAM/H,IAAY,qBACZgI,IACLD,KAAoBH,IACjB,GAAG5H,CAAS,KAAK+H,CAAgB,KACjC;AAEJ,SACC,gBAAA3H,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWgI,GAAatI,KAAa,EAAE,CAAC;AAAA,MACjE,IAAIiI,IAAgB,GAAGT,CAAE,qBAAqB,GAAGA,CAAE;AAAA,MACnD,MAAMa,MAAqB,UAAU,UAAU;AAAA,IAAA;AAAA,IAE9CD,KAAkCC,KAClC,gBAAA3H,EAAA,cAAC6H,IAAA,EAAe,SAASF,GAAuC;AAAA,oCAEhE,OAAA,EAAI,WAAW,GAAG/H,CAAS,YAAW6H,CAAQ;AAAA,EAAA;AAGlD,GAKMK,KAAmD;AAAA,EACxD,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACT,GAEaD,KAAiB,CAAC,EAAE,SAAAE,QAA8C;AAC9E,QAAMnI,IAAY;AAElB,SACC,gBAAAI,EAAA,cAAC,OAAA,EAAI,WAAWb,EAAa,CAACS,GAAW,GAAGA,CAAS,KAAKmI,CAAO,EAAE,CAAC,EAAA,GACnE,gBAAA/H,EAAA;AAAA,IAACsB;AAAA,IAAA;AAAA,MACA,WAAW,GAAG1B,CAAS;AAAA,MACvB,UAAUkI,GAAaC,CAAO;AAAA,MAC9B,UAAS;AAAA,IAAA;AAAA,EAAA,CAEX;AAEF,GA4FaC,KAAc,CAAC,EAAE,OAAAzI,GAAO,GAAGI,EAAA,MACvC,gBAAAK,EAAA,cAAC,QAAA,EAAK,WAAU,mBAAmB,GAAGL,KACpCJ,CACF;AAkB2B0I;AAAA,EAC3B,CACC,EAAE,UAAArJ,GAAU,WAAAU,GAAW,UAAA4I,GAAU,GAAGvI,EAAA,GACpCwI,MACI;AACJ,UAAMrB,IAAKsB,GAAA,GAELxI,IAAY,4BACZyI,IAAcH,IAAW,GAAGtI,CAAS,aAAa;AAExD,WACC,gBAAAI,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,KAAAmI;AAAA,QACA,iBAAeD;AAAA,QACf,WAAW/I,EAAa,CAACS,GAAWyI,GAAa/I,KAAa,EAAE,CAAC;AAAA,QACjE,IAAAwH;AAAA,QACA,MAAK;AAAA,QACJ,GAAGnH;AAAA,MAAA;AAAA,MAEHf;AAAA,IAAA;AAAA,EAGJ;AACD;ACpRA,MAAM0J,KAA4C;AAAA,EACjD,GAAGxH;AAAA,EACH,GAAGD;AAAA,EACH,GAAGD;AAAA,EACH,IAAID;AAAA,EACJ,OAAOD;AAAA,EACP,OAAOD;AAAA,EACP,OAAOD;AAAA,EACP,OAAOD;AAAA,EACP,OAAOD;AACR,GAGMiI,KAA8C;AAAA,EACnD,GAAGnG;AAAA,EACH,GAAGA;AAAA,EACH,GAAGA;AAAA,EACH,IAAIA;AAAA,EACJ,OAAOA;AAAA,EACP,OAAOC;AAAA,EACP,OAAOA;AAAA,EACP,OAAOC;AAAA,EACP,OAAOA;AACR,GAGMkG,KAA4C;AAAA,EACjD,GAAGzH;AAAA,EACH,GAAGA;AAAA,EACH,GAAGA;AAAA,EACH,IAAIA;AAAA,EACJ,OAAOA;AAAA,EACP,OAAOD;AAAA,EACP,OAAOA;AAAA,EACP,OAAOD;AAAA,EACP,OAAOD;AACR,GAKa6H,KAAU,CAAC;AAAA,EACvB,WAAAnJ,IAAY;AAAA,EACZ,WAAAoJ,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,OAAApJ,IAAQ;AAAA,EACR,WAAA2H,IAAY;AAAA,EACZ,MAAA1H,IAAO;AAAA,EACP,GAAGG;AACJ,MAAoB;AAEnB,QAAMC,IAAY,eACZC,IACL6I,MAAc,eAAe,GAAG9I,CAAS,KAAK8I,CAAS,KAAK,MACvDE,IAAeD,IAAW,GAAG/I,CAAS,aAAa,MAGnDiJ,IAAcP,GAAa9I,CAAI,GAC/BsJ,IAAWP,GAAe/I,CAAI,GAC9BuJ,IAAcP,GAAahJ,CAAI,GAG/BwJ,IAAY,KAAK,KAAK,WAAWH,CAAW,IAAI,KAAK,IAAI,GAGzDI,IAAgB;AAAA,IACrB,kBAAkBJ;AAAA,IAClB,kBAAkB,GAAGG,CAAS;AAAA,EAAA,GAGzBE,IAAc;AAAA,IACnB,UAAAJ;AAAA,IACA,kBAAkBC;AAAA,EAAA;AAInB,SACC,gBAAA/I,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,eAAY;AAAA,MACZ,WAAWb,EAAa,CAACS,GAAWC,GAAY+I,GAActJ,CAAS,CAAC;AAAA,MACxE,MAAK;AAAA,MACL,OAAO2J;AAAA,MACN,GAAGtJ;AAAA,IAAA;AAAA,IAEJ,gBAAAK,EAAA,cAAC,QAAA,EAAK,WAAW,GAAGJ,CAAS,UAAU;AAAA,IACtCsH,KAAa,CAACyB,IACd,gBAAA3I,EAAA,cAAC,UAAK,WAAW,GAAGJ,CAAS,WAAW,OAAOsJ,EAAA,GAC7C3J,CACF,IAEA,gBAAAS,EAAA,cAACgI,MAAY,OAAAzI,EAAA,CAAc;AAAA,EAAA;AAI/B,GCpEa4J,KAASlB;AAAA,EACrB,CACC;AAAA,IACC,WAAAmB;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,WAAA/J,IAAY;AAAA,IACZ,UAAAuH,IAAW;AAAA,IACX,aAAAyC,IAAc;AAAA,IACd,UAAA9H;AAAA,IACA,aAAA+H,IAAc;AAAA,IACd,WAAAC,IAAY;AAAA,IACZ,eAAAC,IAAgB;AAAA,IAChB,WAAAC,IAAY;AAAA,IACZ,OAAAnK;AAAA,IACA,SAAAoK;AAAA,IACA,MAAAnK,IAAO;AAAA,IACP,aAAA2H;AAAA,IACA,SAAAY,IAAU;AAAA,IACV,GAAGpI;AAAA,EAAA,GAEJwI,MACI;AAEJ,UAAMvI,IAAY,cACZE,IAAY,GAAGF,CAAS,KAAKJ,CAAI,IACjCoK,IAAe,GAAGhK,CAAS,KAAKmI,CAAO,IACvC8B,IAAiBN,IAAc,GAAG3J,CAAS,iBAAiB,MAC5DkK,IAAeN,IAAY,GAAG5J,CAAS,cAAc,MACrDmK,IAAaP,IAAY,cAAc;AAG7C,QAAIQ,GACAC;AACJ,YAAQzK,GAAA;AAAA,MACP,KAAK;AACJ,QAAAwK,IAAc,KACdC,IAAiB;AACjB;AAAA,MACD,KAAK;AACJ,QAAAD,IAAc,KACdC,IAAiB;AACjB;AAAA,MACD,KAAK;AACJ,QAAAD,IAAc,KACdC,IAAiB;AACjB;AAAA,MACD,KAAK;AACJ,QAAAD,IAAc,KACdC,IAAiB;AACjB;AAAA,MACD,KAAK;AACJ,QAAAD,IAAc,KACdC,IAAiB;AACjB;AAAA,IAAA;AAIF,QAAIC,IAAoC;AAExC,IADyC,CAAC,SAAS,EAC/B,SAASnC,CAAO,MACnCmC,IAAkB;AAInB,UAAMC,IACL,gBAAAnK,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACA,KAAI;AAAA,QACJ,WAAW,GAAG1B,CAAS;AAAA,QACvB,UAAA4B;AAAA,QACA,UAAUwI;AAAA,MAAA;AAAA,IAAA;AAKZ,QAAII,IAAgB,CAAC7K,CAAK;AAE1B,IAAI+J,KAAe,gBAAgB9H,KAClC4I,EAAc,QAAQD,CAAY,GAE/Bb,KAAe,cAAc9H,KAChC4I,EAAc,KAAKD,CAAY,GAI5BV,MACHW,IAAgB,CAACD,CAAY,GAC7Bf,IAAYnJ,GAAYV,CAAK;AAI9B,UAAM8K,IACL,gBAAArK,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,KAAAmI;AAAA,QACA,cAAYiB;AAAA,QACZ,WAAWjK,EAAa;AAAA,UACvBS;AAAA,UACAE;AAAA,UACA8J;AAAA,UACAC;AAAA,UACAC;AAAA,UACAC;AAAA,UACAzK;AAAA,QAAA,CACA;AAAA,QACD,UAAUuH,KAAY2C,KAAaE;AAAA,QACnC,SAAAC;AAAA,QACA,MAAMN;AAAA,QACL,GAAG1J;AAAA,MAAA;AAAA,MAEH+J,KAAa,CAACF,KACd,gBAAAxJ,EAAA;AAAA,QAACyI;AAAA,QAAA;AAAA,UACA,WAAW,GAAG7I,CAAS;AAAA,UACvB,WAAWsK;AAAA,UACX,MAAMD;AAAA,QAAA;AAAA,MAAA;AAAA,MAGPG;AAAA,IAAA;AAIH,YAAQvD,KAAY2C,KAAaE,MAAcvC,IAC9C,gBAAAnH,EAAA,cAACqE,IAAA,EAAQ,SAAS8C,GAAa,eAAekD,EAAA,CAAe,IAE7D,gBAAArK,EAAA,cAAAA,EAAA,UAAA,MAAGqK,CAAc;AAAA,EAEnB;AACD,GC5JaC,KAAa,CAAC;AAAA,EAC1B,WAAAhL;AAAA,EACA,UAAAuH,IAAW;AAAA,EACX,aAAAyC,IAAc;AAAA,EACd,UAAA9H;AAAA,EACA,aAAA+I;AAAA,EACA,MAAA/K,IAAO;AAAA,EACP,aAAA2H;AAAA,EACA,SAAAY,IAAU;AAAA,EACV,GAAGpI;AACJ,MAAuB;AAEtB,QAAMC,IAAY,mBACZ4K,IAAkB,cAClB1K,IAAY,GAAG0K,CAAe,KAAKhL,CAAI,IACvCoK,IAAe,GAAGY,CAAe,KAAKzC,CAAO,IAC7C0C,IAAwBtL,EAAa;AAAA,IAC1CqL;AAAA,IACA1K;AAAA,IACA8J;AAAA,EAAA,CACA,GAGKc,IAAWzL,GAAesL,CAAW,IACvCA,EAAY,MAAkC,WAC/C;AAGH,MAAIP;AACJ,UAAQxK,GAAA;AAAA,IACP,KAAK;AACJ,MAAAwK,IAAc;AACd;AAAA,IACD,KAAK;AACJ,MAAAA,IAAc;AACd;AAAA,IACD,KAAK;AACJ,MAAAA,IAAc;AACd;AAAA,IACD,KAAK;AACJ,MAAAA,IAAc;AACd;AAAA,IACD,KAAK;AACJ,MAAAA,IAAc;AACd;AAAA,IACD;AACC,MAAAA,IAAc;AACd;AAAA,EAAA;AAIF,QAAMG,IACL,gBAAAnK,EAAA;AAAA,IAACsB;AAAA,IAAA;AAAA,MACA,KAAKE;AAAA,MACL,WAAW,GAAG5B,CAAS;AAAA,MACvB,UAAA4B;AAAA,MACA,UAAUwI;AAAA,IAAA;AAAA,EAAA;AAKZ,MAAIW,IAAY,CAACD,CAAQ;AACzB,EAAIpB,MAAgB,gBAAgB9H,IACnCmJ,IAAY,CAACR,GAAcO,CAAQ,IACzBpB,MAAgB,cAAc9H,MACxCmJ,IAAY,CAACD,GAAUP,CAAY;AAIpC,QAAMS,IAAgB3L,GAAesL,CAAW,IAC7CM;AAAA,IACAN;AAAA,IACA,OAAO,OAAO,IAAIA,EAAY,OAAO;AAAA,MACpC,WAAWE;AAAA,MACX,UAAUE;AAAA,IAAA,CACV;AAAA,EAAA,IAED;AAGH,SAAI9D,IAEF,gBAAA7G,EAAA;AAAA,IAACmJ;AAAA,IAAA;AAAA,MACA,UAAQ;AAAA,MACR,WAAWhK,EAAa,CAACS,GAAWN,KAAa,EAAE,CAAC;AAAA,MACpD,OAAOqL;AAAA,MACP,MAAAnL;AAAA,MACA,aAAa2H,KAAe;AAAA,MAC5B,SAAAY;AAAA,IAAA;AAAA,EAAA,IAOF,gBAAA/H,EAAA,cAAC,QAAA,EAAK,WAAWb,EAAa,CAACS,GAAWN,KAAa,EAAE,CAAC,GAAI,GAAGK,EAAA,GAC/DiL,CACF;AAEF,GC5JaE,KAAe,CAC3BC,GACAtH,MACwB;AACxB,QAAM,CAACuH,GAAUC,CAAW,IAAIrI,EAAkB,EAAK,GACjDsI,IAAWzH,GAAS;AAE1B,SAAAP,GAAU,MAAM;AACf,QAAI4D;AAEJ,WAAIkE,KAAYE,MACfpE,IAAK,WAAW,MAAM;AACrB,MAAAmE,EAAY,EAAK;AAAA,IAClB,GAAGC,CAAQ,IAGL,MAAM;AACZ,MAAIpE,KACH,aAAaA,CAAE;AAAA,IAEjB;AAAA,EACD,GAAG,CAACkE,GAAUE,CAAQ,CAAC,GAahB,CAACF,GAXO,YAAY;AAC1B,QAAI,UAAU;AACb,UAAI;AACH,cAAM,UAAU,UAAU,UAAUD,CAAI,GACxCE,EAAY,EAAI;AAAA,MACjB,QAAQ;AAAA,MAER;AAAA,EAEF,CAEwB;AACzB,GCqBaE,KAAalD;AAAA,EACzB,CACC;AAAA,IACC,WAAAmB;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,WAAA/J;AAAA,IACA,UAAAuH,IAAW;AAAA,IACX,YAAAuE,IAAa;AAAA,IACb,WAAAC,IAAY;AAAA,IACZ,UAAA7J;AAAA,IACA,SAAAmI;AAAA,IACA,MAAAnK,IAAO;AAAA,IACP,SAAAuI,IAAU;AAAA,IACV,GAAGpI;AAAA,EAAA,GAEJwI,MACI;AAEJ,UAAMvI,IAAY,mBACZE,IAAYN,MAAS,MAAM,GAAGI,CAAS,KAAKJ,CAAI,KAAK,MACrDoK,IACL7B,MAAY,aAAa,GAAGnI,CAAS,KAAKmI,CAAO,KAAK,MAEjDuD,IAAmB;AAAA,MACxB,SAAS,GAAG1L,CAAS;AAAA,MACrB,MAAM,GAAGA,CAAS;AAAA,MAClB,SAAS,GAAGA,CAAS;AAAA,IAAA;AAItB,QAAI2L,GACAvB;AACJ,YAAQxK,GAAA;AAAA,MACP,KAAK;AACJ,QAAAwK,IAAc,KACduB,IAAiB;AACjB;AAAA,MACD,KAAK;AACJ,QAAAvB,IAAc,KACduB,IAAiB;AACjB;AAAA,MACD;AACC,QAAAvB,IAAc,KACduB,IAAiB;AACjB;AAAA,IAAA;AAIF,UAAMC,IAAaH,MAAc,MAG3BI,IAAWC,EAAO,IAAI,GACtBC,IAAWD,EAAO,IAAI,GAGtBE,IAAkB,MAAM;AAC7B,MAAAH,EAAS,QAAQ,UAAU,IAAIH,EAAiB,OAAO,GACvDG,EAAS,QAAQ,UAAU,IAAIH,EAAiB,IAAI,GAEpDK,EAAS,QAAQ,UAAU,OAAOL,EAAiB,IAAI,GACvDK,EAAS,QAAQ,UAAU,IAAIL,EAAiB,OAAO,GAEvD,WAAW,MAAM;AAChB,QAAAG,EAAS,QAAQ,UAAU;AAAA,UAC1BH,EAAiB;AAAA,UACjBA,EAAiB;AAAA,QAAA,GAElBG,EAAS,QAAQ,UAAU,IAAIH,EAAiB,OAAO,GAEvDK,EAAS,QAAQ,UAAU,OAAOL,EAAiB,OAAO,GAC1DK,EAAS,QAAQ,UAAU,IAAIL,EAAiB,IAAI;AAAA,MACrD,GAAG,GAAI;AAAA,IACR,GAGMO,IAAc,CAACzI,MAA+B;AACnD,MAAIoI,KACHI,EAAA,GAGGjC,KACHA,EAAQvG,CAAC;AAAA,IAEX,GAGMgH,IAAgBoB,IACrB,gBAAAxL,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,YAAA,GAC3B,gBAAAI,EAAA,cAAC,SAAI,KAAKyL,GAAU,WAAW,GAAG7L,CAAS,iBAAA,GAC1C,gBAAAI,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACA,WAAW,GAAG1B,CAAS;AAAA,QACvB,UAAA4B;AAAA,QACA,UAAUwI;AAAA,MAAA;AAAA,IAAA,CAEZ,GACA,gBAAAhK,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,KAAK2L;AAAA,QACL,WAAW,GAAG/L,CAAS,kBAAkB0L,EAAiB,IAAI;AAAA,MAAA;AAAA,MAE9D,gBAAAtL,EAAA;AAAA,QAACsB;AAAA,QAAA;AAAA,UACA,WAAW,GAAG1B,CAAS;AAAA,UACvB,UAAUyL;AAAA,UACV,UAAUrB;AAAA,QAAA;AAAA,MAAA;AAAA,IACX,CAEF,IAEA,gBAAAhK,EAAA,cAAC,SAAI,WAAW,GAAGJ,CAAS,YAAA,GAC3B,gBAAAI,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACA,WAAW,GAAG1B,CAAS;AAAA,QACvB,UAAA4B;AAAA,QACA,UAAUwI;AAAA,MAAA;AAAA,IAAA,CAEZ;AAID,WACC,gBAAAhK,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,KAAAmI;AAAA,QACA,cAAYiB;AAAA,QACZ,WAAWjK,EAAa;AAAA,UACvBS;AAAA,UACAE;AAAA,UACA8J;AAAA,UACAtK;AAAA,QAAA,CACA;AAAA,QACD,UAAAuH;AAAA,QACA,SAASgF;AAAA,QACT,OAAOT,KAAc,CAACvE,IAAW,OAAOuC;AAAA,QACxC,MAAMC;AAAA,QACL,GAAG1J;AAAA,MAAA;AAAA,MAEHyL,KAAc,CAACvE,IACf,gBAAA7G,EAAA;AAAA,QAACqE;AAAA,QAAA;AAAA,UACA,WAAW,GAAGzE,CAAS;AAAA,UACvB,SAASwJ;AAAA,UACT,eAAegB;AAAA,UACf,aAAamB;AAAA,QAAA;AAAA,MAAA,IAGdnB;AAAA,IAAA;AAAA,EAIJ;AACD,GC5Ka0B,KAAkB,CAAC;AAAA,EAC/B,WAAA1C,IAAY;AAAA,EACZ,WAAA9J;AAAA,EACA,eAAAyM,IAAgB;AAAA,EAChB,UAAAlF;AAAA,EACA,SAAAkB,IAAU;AAAA,EACV,GAAGpI;AACJ,MAA4B;AAE3B,QAAMC,IAAY,wBAGZ,CAACoM,GAAWf,CAAW,IAAIH,GAAaiB,CAAa;AAG3D,SACC,gBAAA/L,EAAA;AAAA,IAACmL;AAAA,IAAA;AAAA,MACA,WAAA/B;AAAA,MACA,YAAW;AAAA,MACX,WAAWjK,EAAa,CAACS,GAAWN,KAAa,EAAE,CAAC;AAAA,MACpD,UAAAuH;AAAA,MACA,WAAU;AAAA,MACV,UAAS;AAAA,MACT,SAASoE;AAAA,MACT,MAAK;AAAA,MACL,SAAAlD;AAAA,MACC,GAAGpI;AAAA,IAAA;AAAA,EAAA;AAGP,GClCasM,KAAc,CAAC;AAAA,EAC3B,WAAA7C,IAAY;AAAA,EACZ,WAAA9J;AAAA,EACA,SAAAqK;AAAA,EACA,MAAAnK,IAAO;AAAA,EACP,GAAGG;AACJ,MAAwB;AAEvB,QAAMC,IAAY,oBACZE,IAAY,GAAGF,CAAS,KAAKJ,CAAI;AAGvC,SACC,gBAAAQ,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,cAAYoJ;AAAA,MACZ,WAAWjK,EAAa,CAACS,GAAWE,GAAWR,KAAa,EAAE,CAAC;AAAA,MAC/D,SAAAqK;AAAA,MACA,MAAK;AAAA,MACJ,GAAGhK;AAAA,IAAA;AAAA,oCAEH2B,GAAA,EAAK,WAAW,GAAG1B,CAAS,UAAU,UAAS,aAAA,CAAa;AAAA,EAAA;AAGhE,GCuBasM,KAA+C;AAAA,EAC3D,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AACZ,GA8JaC,KAAsB,CAClCC,MAEO,iBAAiBA,KAAQA,EAAK,aAGzBC,KAAoB,CAACD,MAC1B,eAAeA,KAAQA,EAAK,WAGvBE,KAAiB,CAACF,MACvB,YAAYA,KAAQA,EAAK,QAGpBG,KAAiB,CAACH,MACvB,YAAYA,KAAQA,EAAK,QAiBpBI,KAAoD;AAAA,EAChE,SAAS;AAAA,EACT,OAAO;AAAA,EACP,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP,KAAK;AAAA,EACL,UAAU;AAAA,EACV,wBAAwB;AACzB,GAQaC,KAA0C;AAAA,EACtD,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AACT,GAEaC,KAA0C;AAAA,EACtD,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AACT,GCjTaC,KAAiB,MAAM;AACnC,QAAMC,IAAY,OAAO,SAAW,KAE9B,CAACC,GAAaC,CAAc,IAAIlK;AAAA,IACrCgK,KAAa,OAAO,eAAe,SAAY,OAAO,aAAa;AAAA,EAAA;AAGpE,SAAA1J,GAAU,MAAM;AACf,QAAI,CAAC0J,EAAW;AAEhB,IAAAE,EAAe,OAAO,UAAU;AAEhC,UAAMC,IAAe,MAAM;AAC1B,MAAAD,EAAe,OAAO,UAAU;AAAA,IACjC;AAEA,kBAAO,iBAAiB,UAAUC,CAAY,GAEvC,MAAM;AACZ,aAAO,oBAAoB,UAAUA,CAAY;AAAA,IAClD;AAAA,EACD,GAAG,CAAA,CAAE,GAEEF;AACR,GCtBaG,KAAoBxK,GAAc,IAAI,GAEtCyK,KAA4B,CAAC;AAAA,EACzC,UAAArO;AAAA,EACA,oBAAAsO,IAAqB;AACtB,MAAM;AAEL,QAAML,IAAcF,GAAA,GAGdQ,IAAWN,KAAeK,GAG1B7J,IAAe;AAAA,IACpB,UAAA8J;AAAA,IACA,oBAAAD;AAAA,IACA,aAAAL;AAAA,EAAA;AAID,SAAA3J,GAAU,MAAM;AACf,IAAIiK,IACH,SAAS,KAAK,UAAU,IAAI,iBAAiB,IAE7C,SAAS,KAAK,UAAU,OAAO,iBAAiB;AAAA,EAElD,GAAG,CAACA,CAAQ,CAAC,mCAGXH,GAAkB,UAAlB,EAA2B,OAAO3J,KACjCzE,CACF;AAEF,GCiFawO,KAAa,CAAC;AAAA,EAC1B,WAAA9N;AAAA,EACA,UAAAuH;AAAA,EACA,aAAAyC,IAAc;AAAA,EACd,UAAA9H,IAAW;AAAA,EACX,IAAAsF;AAAA,EACA,eAAA2C,IAAgB;AAAA,EAChB,OAAAlK;AAAA,EACA,WAAA8N;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,SAAA3D;AAAA,EACA,MAAAnK,IAAO;AAAA,EACP,QAAA+N;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,SAAAzF,IAAU;AAAA,EACV,cAAA0F;AAAA,EACA,GAAG9N;AACJ,MAAuB;AAEtB,QAAM,EAAE,WAAA+N,GAAW,MAAApI,GAAM,UAAAqI,GAAU,GAAAC,GAAG,GAAAC,EAAA,IAAMtI,GAAY;AAAA,IACvD,WAAW;AAAA,IACX,YAAY,CAACE,IAAM;AAAA,IACnB,sBAAsBE;AAAA,EAAA,CACtB;AAGD,MAAIwH,IAAW;AAGf,QAAMW,IAAoBC,GAAWf,EAAiB;AACtD,EAAIc,MACHX,IAAWW,EAAkB;AAI9B,QAAME,IAAiBjG,MAAY,YAAYoF,GAGzCvN,IAAY,mBACZqO,IAAcD,IAAiB,GAAGpO,CAAS,eAAe,MAC1DsO,IAAcT,IAAe,GAAG7N,CAAS,aAAa,MAGtDuO,IAAYrH,GACZ,CAACsH,CAAS,IAAIxL,EAAS,eAAekE,CAAE,EAAE,GAE1CuH,IAAgB/I,EAAK,UACrBgJ,IAAU5C,EAAO,IAAI,GAErB,CAAC3G,GAAQC,EAAS,IAAIpC,EAAS,EAAK,GACpC,CAAC2L,GAAWC,EAAY,IAAI5L,EAAS,EAAK,GAC1C,CAAC6L,GAAkBC,EAAmB,IAAI9L,EAAS,EAAE,GACrD,CAAC+L,IAAqBC,EAAsB,IAAIhM,EAAS,CAAC,GAG1DiM,KAAWnD,EAAO,EAAE,GACpBoD,IAAcpD,EAAO,EAAE,GACvBqD,IAAqBrD,EAAO,EAAE;AAEpC,EAAAsD,GAAgB,MAAM;AAErB,WAAO,iBAAiB,aAAaC,GAAoB,EAAI;AAG7D,UAAMC,IAAWb,EAAc;AAE/B,WAAIa,MACHA,EAAS,QAAQ,eAAexB,IAI7Ba,MAGH,WAAW,MAAM;AAChB,MAAAW,EAAS,MAAA;AAAA,IACV,GAAG,CAAC,GAEJV,GAAa,EAAK,IAGZ,MAAM;AACZ,aAAO,oBAAoB,aAAaS,GAAoB,EAAI;AAAA,IACjE;AAAA,EACD,GAAG,CAAClK,GAAQ2I,CAAS,CAAC;AAGtB,QAAMyB,IAAoB,CAACC,GAA4BC,MAAkB;AACxE,IAAAX,GAAoBU,CAAM,GAC1BR,GAAuBS,CAAK;AAAA,EAC7B,GAEMC,KAAW,MAAM;AACtB,IAAAtK,GAAU,EAAI,GACdwJ,GAAa,EAAI;AAAA,EAClB,GAEMe,KAAY,MAAM;AACvB,IAAAvK,GAAU,EAAK,GACfmK,EAAkB,QAAW,EAAE,GACRb,EAAQ,SAAS;AAAA,MACvC,IAAIH,CAAS;AAAA,IAAA,GAEE,MAAA;AAAA,EACjB,GAEMqB,KAA2B,CAACC,MAAiB;AAElD,IAAAA,IAAOA,EAAK,YAAA;AAEZ,QAAIC,IAAY;AAGhB,aACKvN,IAAIwM,KAAsB,GAC9BxM,IAAI4M,EAAmB,QAAQ,QAC/B5M;AAIA,UAFa4M,EAAmB,QAAQ5M,CAAC,EAEhC,MAAM,YAAA,EAAc,WAAWsN,CAAI,GAAG;AAC9C,QAAAN,EAAkBL,EAAY,QAAQ3M,CAAC,GAAGA,CAAC,GAE3CuN,IAAY;AAEZ;AAAA,MACD;AAKD,QAAIA,MAAc;AACjB,eAASvN,IAAI,GAAGA,IAAIwM,IAAqBxM;AAGxC,YAFa4M,EAAmB,QAAQ5M,CAAC,EAEhC,MAAM,YAAA,EAAc,WAAWsN,CAAI,GAAG;AAC9C,UAAAN,EAAkBL,EAAY,QAAQ3M,CAAC,GAAGA,CAAC;AAE3C;AAAA,QACD;AAAA;AAAA,EAGH,GAEMwN,KAAmB,CAACC,MAAmB;AAC5C,UAAMC,IAAYf,EAAY,QAAQ,QAAQc,CAAM,GAC9CxD,IAAO2C,EAAmB,QAAQc,CAAS;AAGjD,IAAIzD,EAAK,YAAY,CAACA,EAAK,YAC1BA,EAAK,SAASA,CAAI,GAIfA,EAAK,eAAe,CAACA,EAAK,YACTkC,EAAQ,SAAS;AAAA,MACpC,IAAIsB,CAAM;AAAA,IAAA,GAEE,MAAA;AAAA,EAEf,GAEME,KAA0B,MAAM;AACrC,UAAMC,IAAgBjB,EAAY,QAAQH,EAAmB;AAC7D,IAAAgB,GAAiBI,CAAa;AAAA,EAC/B,GAGMC,KAAqB,CAAC9L,MAAyC;AACpE,IAAIa,IACHwK,GAAA,IAEAD,GAAA,GAGG3F,KACHA,EAAA,GAGDzF,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,EACP,GAEM+L,KAAsB,CAAC/L,MAAqC;AACjE,IAAAyL,GAAiBzL,EAAM,cAAc,EAAE,GAElC8J,KACJuB,GAAA;AAAA,EAEF,GAEMW,IAAsB,CAAChM,MAA4C;AACxE,UAAMiM,IAAMjM,EAAM;AAClB,QAAIkM,IAAO;AAEX,YAAQD,GAAA;AAAA;AAAA,MAEP,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,QAAQ;AACZ,QAAAb,GAAA;AAEA,YAAIe,IAAoB;AACxB,iBAASlO,IAAI,GAAGA,IAAI4M,EAAmB,QAAQ,QAAQ5M;AACtD,cAAI,CAAC4M,EAAmB,QAAQ5M,CAAC,GAAG,UAAU;AAC7C,YAAAkO,IAAoBlO;AACpB;AAAA,UACD;AAED,QAAAgN;AAAA,UACCL,EAAY,QAAQuB,CAAiB;AAAA,UACrCA;AAAA,QAAA,GAEDD,IAAO,IAEHzG,KACHA,EAAA;AAGD;AAAA,MACD;AAAA;AAAA,MAGA,KAAK;AAAA,MACL,KAAK;AACJ,QAAA4F,GAAA,GACAa,IAAO;AACP;AAAA;AAAA,MAGD,KAAK;AAAA,MACL,KAAK,WAAW;AACf,QAAAd,GAAA;AAEA,YAAIgB,IAAmBxB,EAAY,QAAQ,SAAS;AACpD,iBAAS3M,IAAI2M,EAAY,QAAQ,SAAS,GAAG3M,KAAK,GAAGA;AACpD,cAAI,CAAC4M,EAAmB,QAAQ5M,CAAC,GAAG,UAAU;AAC7C,YAAAmO,IAAmBnO;AACnB;AAAA,UACD;AAED,QAAAgN;AAAA,UACCL,EAAY,QAAQwB,CAAgB;AAAA,UACpCA;AAAA,QAAA,GAEDF,IAAO;AACP;AAAA,MACD;AAAA,IAIC;AAIF,IAAIA,MACHlM,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,EAER,GAEMqM,IAAoB,CAACrM,MAAsC;AAChE,UAAMiM,IAAMjM,EAAM;AAClB,QAAIkM,IAAO,IACVI,IAAe,IACfC,IAAc;AAEf,aAASC,EAAqBC,GAAa;AAC1C,aAAOA,EAAI,WAAW,KAAKA,EAAI,MAAM,IAAI;AAAA,IAC1C;AAEA,QAAI,EAAAzM,EAAM,WAAWA,EAAM,UAAUA,EAAM,UAI3C;AAAA,UAAIA,EAAM;AACT,QAAIwM,EAAqBP,CAAG,MAC3BX,GAAyBW,CAAG,GAC5BC,IAAO,KAGJlM,EAAM,QAAQ,UACjBqL,GAAA,GACAa,IAAO;AAAA;AAGR,gBAAQD,GAAA;AAAA,UACP,KAAK;AAAA,UACL,KAAK;AACJ,YAAAZ,GAAA,GACAO,GAAA,GACAM,IAAO;AACP;AAAA,UAED,KAAK;AAAA,UACL,KAAK;AACJ,YAAAb,GAAA,GACAa,IAAO;AACP;AAAA,UAED,KAAK;AAAA,UACL,KAAK,WAAW;AAEf,gBAAIQ,IAAW;AACf,kBAAMC,IAAc/B,EAAY,QAAQ;AAGxC,iBAFA2B,IAAc9B,KAAsB,GAE7BiC,IAAWC,MACbJ,IAAc,MACjBA,IAAc3B,EAAY,QAAQ,SAAS,IAKxC,EADSC,EAAmB,QAAQ0B,CAAW,GACxC;AAIX,cAAAA,KACAG;AAGD,YAAAJ,IAAe1B,EAAY,QAAQ2B,CAAW,GAC9CtB,EAAkBqB,GAAcC,CAAW,GAC3CL,IAAO;AACP;AAAA,UACD;AAAA,UAEA,KAAK;AAAA,UACL,KAAK,QAAQ;AAEZ,gBAAIQ,IAAW;AACf,kBAAMC,IAAc/B,EAAY,QAAQ;AAGxC,iBAFA2B,IAAc9B,KAAsB,GAE7BiC,IAAWC,MACbJ,IAAc3B,EAAY,QAAQ,SAAS,MAC9C2B,IAAc,IAKX,EADS1B,EAAmB,QAAQ0B,CAAW,GACxC;AAIX,cAAAA,KACAG;AAGD,YAAAJ,IAAe1B,EAAY,QAAQ2B,CAAW,GAC9CtB,EAAkBqB,GAAcC,CAAW,GAC3CL,IAAO;AACP;AAAA,UACD;AAAA,UAEA,KAAK;AAAA,UACL,KAAK,UAAU;AAEd,gBAAIC,IAAoB;AACxB,qBAASlO,IAAI,GAAGA,IAAI4M,EAAmB,QAAQ,QAAQ5M;AACtD,kBAAI,CAAC4M,EAAmB,QAAQ5M,CAAC,GAAG,UAAU;AAC7C,gBAAAkO,IAAoBlO;AACpB;AAAA,cACD;AAED,YAAAgN;AAAA,cACCL,EAAY,QAAQuB,CAAiB;AAAA,cACrCA;AAAA,YAAA,GAEDD,IAAO;AACP;AAAA,UACD;AAAA,UAEA,KAAK;AAAA,UACL,KAAK,YAAY;AAEhB,gBAAIE,IAAmBxB,EAAY,QAAQ,SAAS;AACpD,qBAAS3M,IAAI2M,EAAY,QAAQ,SAAS,GAAG3M,KAAK,GAAGA;AACpD,kBAAI,CAAC4M,EAAmB,QAAQ5M,CAAC,GAAG,UAAU;AAC7C,gBAAAmO,IAAmBnO;AACnB;AAAA,cACD;AAED,YAAAgN;AAAA,cACCL,EAAY,QAAQwB,CAAgB;AAAA,cACpCA;AAAA,YAAA,GAEDF,IAAO;AACP;AAAA,UACD;AAAA,UAEA,KAAK;AACJ,YAAAb,GAAA;AACA;AAAA,UAED;AACC,YAAImB,EAAqBP,CAAG,MAC3BX,GAAyBW,CAAG,GAC5BC,IAAO;AAER;AAAA,QAAA;AAIH,MAAIA,MACHlM,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA;AAAA,EAER,GAGM+K,IAAqB,CAAC/K,MAAiB;AAC5C,IAAIoK,EAAQ,WAAW,CAACA,EAAQ,QAAQ,SAASpK,EAAM,MAAc,KAChEa,KACHwK,GAAA;AAAA,EAGH,GAGMuB,IAAa,CAClB1E,GACAiD,GACA0B,IAAkB,IAClBC,IAAyB,OAEtBrR,MACC;AACJ,UAAMsR,IAAgBF,IAAU,UAAUA,CAAO,KAAK,IAChDG,IAAiB/C,IAAY8C,IAAgB,YAAY5B,IAAQ,IAGjEO,IAAS,QAAQxD,KAAQA,EAAK,KAAKA,EAAK,KAAK8E;AAGnD,QAAI/E,GAAoBC,CAAI;AAC3B,aAAO,gBAAApM,EAAA,cAAC,MAAA,EAAG,KAAK4P,GAAQ,MAAK,aAAY;AAI1C,QAAIvD,GAAkBD,CAAI;AACzB,aACC,gBAAApM,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,KAAKgR;AAAA,UACL,WAAW,GAAGpR,CAAS;AAAA,UACvB,IAAIoR,KAAkC;AAAA,UACtC,MAAK;AAAA,QAAA;AAAA,QAEJ5E,EAAK;AAAA,MAAA;AAMT,QAAIG,GAAeH,CAAI;AACtB,6CACE,MAAA,EAAG,KAAKwD,GAAQ,MAAK,eAAA,GACpBxD,EAAK,WACP;AAKF,QAAIE,GAAeF,CAAI,KAAM,WAAWA,KAAQA,EAAK,OAAQ;AAC5D,MAAA0C,EAAY,QAAQ,KAAKc,CAAM,GAC/Bb,EAAmB,QAAQ,KAAK3C,CAAI;AAGpC,UAAI+E,KAAc;AAClB,MAAI1C,MAAqB,MAAM,CAACrC,EAAK,aACpC+E,KAAc1C,MAAqBmB;AAIpC,YAAMwB,KAAa,gBAAgBhF,KAAQA,EAAK,YAC1CiF,KACL,mBAAmBjF,IAAOA,EAAK,gBAAgB;AAGhD,UAAIkF,KAAyB,CAAA;AAc7B,UAXI,WAAWlF,KAAQA,EAAK,UAC3BkF,KAAY,CAAClF,EAAK,KAAK,IAIpBE,GAAeF,CAAI,KAAKA,EAAK,gBAGhCkF,KAAY,CADQlF,EAAK,YACA,MAAM,QAAQ,IAGpCA,EAAK,UAAU;AAElB,cAAMjC,KACL,gBAAAnK,EAAA;AAAA,UAACsB;AAAA,UAAA;AAAA,YACA,KAAK,QAAQ6M,CAAS;AAAA,YACtB,UAAU/B,EAAK;AAAA,YACf,UAAS;AAAA,UAAA;AAAA,QAAA;AAIX,QAAAkF,GAAU,QAAQnH,EAAY;AAAA,MAC/B;AAGA,MAAIiH,MAAcC,MACjBC,GAAU;AAAA,QACT,gBAAAtR,EAAA,cAAC,UAAK,KAAK,YAAYmO,CAAS,IAAI,WAAU,qBAC5CkD,EACF;AAAA,MAAA;AAIF,UAAIE;AACJ,MAAInF,EAAK,gBACRmF,qCACE,QAAA,EAAK,WAAW,GAAG3R,CAAS,wBAC3BwM,EAAK,WACP;AAKF,UAAIoF;AAEJ,UAAIlF,GAAeF,CAAI,KAAKA,EAAK,aAAa;AAG7C,cAAMqF,KAAcrF,EAAK,aAInBsF,KAAcD,GAAY;AAEhC,QAAAD,KACC,gBAAAxR,EAAA,cAAC0R,IAAA,EAAY,UAAU,IAAK,GAAGD,GAAY,SAC1C,gBAAAzR,EAAA,cAAC,QAAA,EAAK,WAAW,GAAGJ,CAAS,eAAA,GAAiB0R,EAAU,GACvDC,EACF;AAAA,MAEF;AACC,QAAAC,KACC,gBAAAxR,EAAA,cAAAA,EAAA,UAAA,sCACE,QAAA,EAAK,WAAW,GAAGJ,CAAS,kBAAiB0R,EAAU,GACvDC,EACF;AAKF,YAAMI,KAAkBxS,EAAa;AAAA,QACpCgS,KAAc,GAAGvR,CAAS,mBAAmB;AAAA,QAC7CwR,KAAa,GAAGxR,CAAS,oBAAoB;AAAA,MAAA,CAC7C;AAED,aACC,gBAAAI,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,KAAK4P;AAAA,UACL,iBAAexD,EAAK,WAAW,KAAO;AAAA,UACtC,WAAWuF;AAAA,UACX,eAAavF,EAAK;AAAA,UAClB,IAAIwD;AAAA,UACJ,SAASK;AAAA,UACT,MAAK;AAAA,UACL,UAAU;AAAA,UACT,GAAGtQ;AAAAA,QAAA;AAAA,QAEH6R;AAAA,MAAA;AAAA,IAGJ;AAAA,EACD,GAGMI,KAAyB,CAC9BC,GACAC,MACI;AACJ,UAAMC,IAA6B,CAAA,GAG7BC,IAAS,CAAC,GAAGF,CAAc;AAGjC,QAAIG,IAAYD,EAAO,MAAA,GAGnBE,IAAoB,CAAA;AAGxB,WAAAL,EAAM,IAAI,CAACzF,GAAgBiD,MAAkB;AAE5C,MAAIjD,MAAS6F,KACZC,EAAM,KAAK9F,CAAI,GAGXiD,IAAQ,MAAMwC,EAAM,UACvBE,EAAa,KAAKG,CAAK,MAOxBH,EAAa,KAAKG,CAAK,GACvBA,IAAQ,CAAA,GACRA,EAAM,KAAK9F,CAAI,GACf6F,IAAYD,EAAO,MAAA;AAAA,IAErB,CAAC,GAGMD,EAAa,OAAO,CAACG,MAAUA,EAAM,SAAS,CAAC;AAAA,EACvD,GAGMC,KAAkB,CAACN,MAAsB;AAE9C,IAAA/C,EAAY,UAAU,CAAA,GACtBC,EAAmB,UAAU,CAAA;AAG7B,UAAMqD,IAAYP,GAEZC,IAAiBD,EAAM;AAAA,MAC5BxF,MAAqBF;AAAA,IAAA,GAEhBkG,IAAaP,EAAe,SAAS;AAG3C,QAAIQ,IAA2B,CAAC,GAAG1S,CAAS,WAAW;AAiBvD,QAfI6N,KACH6E,EAAe,KAAK,GAAG1S,CAAS,mBAAmB,GAGhD0N,MAAiB,SACpBgF,EAAe,KAAK,GAAG1S,CAAS,gBAAgB,GAG7C0J,MAAgB,eACnBgJ,EAAe,KAAK,GAAG1S,CAAS,sBAAsB,GAGvD0S,IAAiBnT,EAAamT,CAAc,GAGxCD,GAAY;AAEf,YAAME,IAAmBX,GAAuBC,GAAOC,CAAc;AAGrE,MAAAS,EAAiB,QAAQ,MAAM;AAC9B,QAAA1D,GAAS,QAAQ,KAAKnQ,IAAgB;AAAA,MACvC,CAAC;AACD,UAAI8T,IAAiB3D,GAAS,QAAQ,CAAC;AAGvC,YAAM4D,IAAqBF,EAAiB,CAAC,EAAE;AAAA,QAC9C,CAACnG,OACA,CAACD,GAAoBC,EAAI,KAAK,CAACC,GAAkBD,EAAI;AAAA,MAAA,GAIjDsG,KAAoB,GAAGvE,CAAS,UAAUqE,CAAc,SAC7DC,IAAqB,CACtB;AAGA,aACC,gBAAAzS,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,KAAKsF,EAAK;AAAA,UACV,yBACCmJ,MAAqB,KAAKA,IAAmBiE;AAAA,UAE9C,mBAAiBvE;AAAA,UACjB,WAAWmE,EAAe,SAAA;AAAA,UAC1B,IAAIlE;AAAA,UACJ,WAAWmC;AAAA,UACX,MAAK;AAAA,UACL,OAAO;AAAA,YACN,YAAYxL,IAAS,YAAY;AAAA,YACjC,SAASA,IAAS,MAAM;AAAA,YACxB,YAAY;AAAA,YACZ,UAAU4I;AAAA,YACV,WAAW,aAAa,KAAK,MAAMC,CAAC,CAAC,MAAM,KAAK,MAAMC,CAAC,CAAC;AAAA,YACxD,QAAQ;AAAA,UAAA;AAAA,UAET,UAAU;AAAA,QAAA;AAAA,QAET0E,EAAiB,IAAI,CAACL,IAAmB7C,OAAkB;AAC3D,UAAAmD,IAAiB3D,GAAS,QAAQQ,EAAK;AACvC,gBAAMsD,KAAa,eAAeT,GAAM,CAAC,KAAKA,GAAM,CAAC,EAAE,WACjDlB,KAAiB2B,KACpB,GAAGxE,CAAS,UAAUqE,CAAc,aACpC,IACGI,KAAQ,GAAGzE,CAAS,UAAUqE,CAAc,IAE5CK,KAAaF,KAChB,OACA,GAAGnF,CAAc,IAAI6B,KAAQ,CAAC;AAEjC,iBACC,gBAAArP,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,KAAK4S;AAAA,cACL,cAAYC;AAAA,cACZ,mBAAiB7B;AAAA,cACjB,MAAK;AAAA,YAAA;AAAA,YAEJkB,GAAM,IAAI,CAAC9F,IAAgBiD,OACpByB;AAAA,cACN1E;AAAA,cACAiD;AAAAA,cACAmD;AAAA,cACAxB;AAAA,YAAA,CAED;AAAA,UAAA;AAAA,QAGJ,CAAC;AAAA,MAAA;AAAA,IAGJ,OAAO;AAIN,YAAM0B,IAAoB,GAAGvE,CAAS;AAEtC,aACC,gBAAAnO,EAAA,cAAAA,EAAA,UAAA,MACC,gBAAAA,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,KAAKsF,EAAK;AAAA,UACV,yBACCmJ,MAAqB,KAAKA,IAAmBiE;AAAA,UAE9C,mBAAiBvE;AAAA,UACjB,WAAWmE,EAAe,SAAA;AAAA,UAC1B,IAAIlE;AAAA,UACJ,WAAWmC;AAAA,UACX,MAAK;AAAA,UACL,OAAO;AAAA,YACN,YAAYxL,IAAS,YAAY;AAAA,YACjC,SAASA,IAAS,MAAM;AAAA,YACxB,YAAY;AAAA,YACZ,UAAU4I;AAAA,YACV,WAAW,aAAa,KAAK,MAAMC,CAAC,CAAC,MAAM,KAAK,MAAMC,CAAC,CAAC;AAAA,UAAA;AAAA,UAEzD,UAAU;AAAA,QAAA;AAAA,QAETuE,EAAU,IAAI,CAAChG,GAAgBiD,MACxByB,EAAW1E,GAAMiD,CAAK,CAC7B;AAAA,MAAA,CAEH;AAAA,IAEF;AAAA,EACD;AAGA,MAAIyD;AA2BJ,MAxBIxJ,MAAgB,eACnBwJ,KACC,gBAAA9S,EAAA;AAAA,IAACmJ;AAAA,IAAA;AAAA,MACA,KAAK7D,EAAK;AAAA,MACV,iBAAe8I;AAAA,MACf,iBAAerJ;AAAA,MACf,iBAAc;AAAA,MACd,WAAW,GAAGnF,CAAS;AAAA,MACvB,UAAAiH;AAAA,MACA,aAAAyC;AAAA,MACA,UAAS;AAAA,MACT,IAAI6E;AAAA,MACJ,eAAA1E;AAAA,MACA,OAAAlK;AAAA,MACA,SAASyQ;AAAA,MACT,WAAWE;AAAA,MACX,MAAA1Q;AAAA,MACA,MAAK;AAAA,MACL,SAAAuI;AAAA,IAAA;AAAA,EAAA,IAMCuB,MAAgB,aAAa;AAChC,UAAMyJ,IAAY9S,GAAYV,CAAK;AAEnC,IAAAuT,KACC,gBAAA9S,EAAA;AAAA,MAACmL;AAAA,MAAA;AAAA,QACA,KAAK7F,EAAK;AAAA,QACV,iBAAe8I;AAAA,QACf,iBAAerJ;AAAA,QACf,iBAAc;AAAA,QACd,WAAWgO;AAAA,QACX,WAAW,GAAGnT,CAAS,aAAaA,CAAS;AAAA,QAC7C,UAAAiH;AAAA,QACA,YAAY;AAAA,QACZ,UAAArF;AAAA,QACA,IAAI2M;AAAA,QACJ,SAAS6B;AAAA,QACT,WAAWE;AAAA,QACX,MAAA1Q;AAAA,QACA,MAAK;AAAA,QACL,SAAQ;AAAA,MAAA;AAAA,IAAA;AAAA,EAGX;AAKA,QAAMwT,KAAe,CAAC5P,MAAqC;AAE1D,UAAM6P,IAAS7P,EAAE;AACjB,IAAA6P,EAAO,UAAU,OAAO,GAAGrT,CAAS,oBAAoB,GACxDqT,EAAO;AAAA,MACN;AAAA,MACAA,EAAO,aAAa,eAAe,MAAM,SAAS,UAAU;AAAA,IAAA,GAIhDA,EAAO,mBACf,UAAU,OAAO,GAAGrT,CAAS,yBAAyB;AAAA,EAC5D,GAGMsT,KAAkB,MAEtB,gBAAAlT,EAAA,cAAC,MAAA,EAAG,WAAW,GAAGJ,CAAS,iBAAiB,MAAK,OAAA,GAC/CyN,EAAU,IAAI,CAACjB,GAAMiD,MACdyB,EAAW1E,GAAMiD,CAAK,CAC7B,CACF;AAKF,MAAI8D;AAEJ,QAAMC,KACL9J,MAAgB,aAAa,kCAAkC,MAC1D+J,KAAsBlU,EAAa;AAAA,IACxC,GAAGS,CAAS;AAAA,IACZwT;AAAA,EAAA,CACA;AAED,EAAIpF,MACHmF,KACC,gBAAAnT,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,iBAAe;AAAA,MACf,WAAWqT;AAAA,MACX,UAAAxM;AAAA,MACA,IAAIsH;AAAA,MACJ,SAAS6E;AAAA,MACT,MAAK;AAAA,IAAA;AAAA,IAEJ1J,MAAgB,cAChB,gBAAAtJ,EAAA,cAAC,QAAA,EAAK,WAAW,GAAGJ,CAAS,eAAA,GAC5B,gBAAAI,EAAA,cAACsB,GAAA,EAAK,UAAAE,EAAA,CAAoB,GAAE,KAAEjC,CAC/B,IAEAA;AAAA,IAGD,gBAAAS,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACA,WAAW,GAAG1B,CAAS,iBAAiBA,CAAS,kBAAkB0J,CAAW;AAAA,QAC9E,UAAS;AAAA,QACT,UAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EACV;AAMH,QAAMgK,KAAqBH,IAGrBI,KAAgBxO,IAAS,GAAGnF,CAAS,eAAe;AAG1D,SACC,gBAAAI,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAKsO;AAAA,MACL,WAAWnP,EAAa;AAAA,QACvBS;AAAA,QACAsO;AAAA,QACAD;AAAA,QACAsF;AAAA,QACAjU;AAAA,MAAA,CACA;AAAA,MACD,eAAaiO;AAAA,MACZ,GAAG5N;AAAA,IAAA;AAAA,IAEHqO,IACA,gBAAAhO,EAAA,cAAAA,EAAA,UAAA,MACEsT,IACD,gBAAAtT,EAAA,cAACkT,IAAA,IAAgB,CAClB,IAEA,gBAAAlT,EAAA,cAAAA,EAAA,UAAA,MACE8S,IACAX,GAAgB9E,CAAS,CAC3B;AAAA,EAAA;AAIJ,GC17BamG,KAAkB,CAAC;AAAA,EAC/B,WAAAlU;AAAA,EACA,cAAAmU;AAAA,EACA,UAAA5M,IAAW;AAAA,EACX,IAAAC;AAAA,EACA,OAAAvH;AAAA,EACA,UAAAmU;AAAA,EACA,SAAAjQ;AAAA,EACA,MAAAjE,IAAO;AAAA,EACP,OAAAmU;AAAA,EACA,GAAGhU;AACJ,MAA4B;AAE3B,QAAMC,IAAY,wBACZgU,IAAgB/M,IAAW,oBAAoB,MAC/C/G,IAAY,GAAGF,CAAS,KAAKJ,CAAI,IAGjCiC,IAAWjC,MAAS,MAAM,MAAM,KAGhCqU,IAAe,OAAOF,IAAS,KAG/BG,IAAkB,OAAOL,IAAgB,KAGzC,CAACM,GAAeC,CAAgB,IAAIpR;AAAA,IACzCkR,IAAkBL,IAAe;AAAA,EAAA,GAI5BQ,IAAkB,CAAC7Q,MAA4B;AACpD,IAAA4Q,EAAiB5Q,EAAE,OAAO,KAAK,GAE3BsQ,KACHA,EAAStQ,EAAE,OAAO,KAAK;AAAA,EAEzB;AAGA,MAAIK,EAAQ,UAAU,KAAKA,EAAQ,UAAU;AAC5C,WACC,gBAAAzD,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWb,EAAa;AAAA,UACvBS;AAAA,UACAE;AAAA,UACA8T;AAAA,UACAtU,KAAa;AAAA,QAAA,CACb;AAAA,QACA,GAAGK;AAAA,MAAA;AAAA,MAEJ,gBAAAK,EAAA,cAAC,UAAA,EAAO,WAAU,kBAAA,GAAmBT,CAAM;AAAA,MAE3C,gBAAAS,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,eAC1B6D,EAAQ,IAAI,CAACyQ,GAAOC,MAAQ;AAE5B,cAAMC,IAAYP,IACfF,MAAUO,EAAM,QAChBH,MAAkBG,EAAM,OAGrBG,IAAc,GAAGzU,CAAS,YAC1B0U,IAAeF,IAAY,GAAGC,CAAW,cAAc;AAE7D,eACC,gBAAArU,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,KAAK,GAAG8G,CAAE,WAAWqN,CAAG;AAAA,YACxB,WAAWhV,EAAa,CAACkV,GAAaC,CAAY,CAAC;AAAA,UAAA;AAAA,UAEnD,gBAAAtU,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAASoU;AAAA,cACT,WAAU;AAAA,cACV,UAAUvN,KAAYqN,EAAM;AAAA,cAC5B,IAAIA,EAAM,KAAKA,EAAM,KAAK,GAAGpN,CAAE,WAAWqN,CAAG;AAAA,cAC7C,MAAMrN;AAAA,cACN,UAAUmN;AAAA,cACV,MAAK;AAAA,cACL,OAAOC,EAAM;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd,gBAAAlU,EAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAASkU,EAAM,KAAKA,EAAM,KAAK,GAAGpN,CAAE,WAAWqN,CAAG;AAAA,cAClD,OAAOD,EAAM;AAAA,YAAA;AAAA,YAEZA,EAAM,YACN,gBAAAlU,EAAA;AAAA,cAACsB;AAAA,cAAA;AAAA,gBACA,WAAW,GAAG1B,CAAS;AAAA,gBACvB,UAAUsU,EAAM;AAAA,gBAChB,UAAAzS;AAAA,cAAA;AAAA,YAAA;AAAA,4CAGD,QAAA,EAAK,WAAW,GAAG7B,CAAS,eAAA,GAC3BsU,EAAM,KACR;AAAA,YACCA,EAAM,SACN,gBAAAlU,EAAA;AAAA,cAACX;AAAA,cAAA;AAAA,gBACA,WAAW,GAAGO,CAAS;AAAA,gBACvB,OAAOsU,EAAM,MAAM;AAAA,gBACnB,MAAMA,EAAM,MAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UACnB;AAAA,QAEF;AAAA,MAGH,CAAC,CACF;AAAA,IAAA;AAIJ,GCnIaK,KAAc,CAAC;AAAA,EAC3B,aAAAC;AAAA,EACA,WAAAlV;AAAA,EACA,UAAAuH;AAAA,EACA,IAAAC;AAAA,EACA,kBAAA2N,IAAmB;AAAA,EACnB,MAAAjV,IAAO;AAAA,EACP,SAAAuI,IAAU;AAAA,EACV,GAAGpI;AACJ,MAAwB;AAEvB,QAAMC,IAAY,oBACZgK,IAAe,GAAGhK,CAAS,KAAKmI,CAAO,IAGvC2M,IAAgBF,EAAY,CAAC,GAC7BG,IAAcH,EAAY,MAAM,CAAC;AAGvC,MAAII,IAAuB;AAE3B,SAAI,YAAYF,KAAiBA,EAAc,WAAW,KACzDE,IACC,gBAAA5U,EAAA;AAAA,IAACsK;AAAA,IAAA;AAAA,MACA,WAAW,GAAG1K,CAAS;AAAA,MACvB,UAAAiH;AAAA,MACA,aAAY;AAAA,MACZ,aAAa6N,EAAc;AAAA,MAC3B,MAAAlV;AAAA,MACA,SAAAuI;AAAA,IAAA;AAAA,EAAA,IAGQ,WAAW2M,MACrBE,IACC,gBAAA5U,EAAA;AAAA,IAACmJ;AAAA,IAAA;AAAA,MACA,WAAW,GAAGvJ,CAAS;AAAA,MACvB,UAAAiH;AAAA,MACA,OAAO6N,EAAc;AAAA,MACrB,SAAS,MAAMA,EAAc,SAAA;AAAA,MAC7B,MAAAlV;AAAA,MACA,SAAAuI;AAAA,IAAA;AAAA,EAAA,IAOF,gBAAA/H,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWgK,GAActK,CAAS,CAAC;AAAA,MAC5D,IAAAwH;AAAA,MACC,GAAGnH;AAAA,IAAA;AAAA,IAEHiV;AAAA,IACD,gBAAA5U,EAAA;AAAA,MAACoN;AAAA,MAAA;AAAA,QACA,eAAa;AAAA,QACb,WAAW,GAAGxN,CAAS;AAAA,QACvB,UAAAiH;AAAA,QACA,aAAY;AAAA,QACZ,IAAI,GAAGC,CAAE;AAAA,QACT,OAAO2N;AAAA,QACP,WAAWE;AAAA,QACX,MAAAnV;AAAA,QACA,QAAQ;AAAA,QACR,SAAAuI;AAAA,QACA,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EACf;AAGH,GCxFa8M,KAAe,CAAC;AAAA,EAC5B,WAAAvV;AAAA,EACA,UAAAmC,IAAW;AAAA,EACX,cAAAqT;AAAA,EACA,GAAGnV;AACJ,MAAyB;AAExB,QAAMC,IAAY,qBACZmV,IAAgB,sBAAsBD,CAAY,IAClDhV,IAAY,sBAAsB2B,CAAQ;AAGhD,MAAIuT;AAKJ,MAFkB,CAAC,mBAAmB,aAAa,eAAe,SAAS,EAE7D,SAASF,CAAY,GAAG;AAErC,QAAIG,IAAW,CAAA;AACf,YAAQH,GAAA;AAAA,MACP,KAAK;AACJ,QAAAG,IAAW,CAAC,QAAQ,QAAQ;AAC5B;AAAA,MACD,KAAK;AACJ,QAAAA,IAAW,CAAC,QAAQ,QAAQ;AAC5B;AAAA,MACD,KAAK;AACJ,QAAAA,IAAW,CAAC,UAAU,WAAW;AACjC;AAAA,MACD,KAAK;AACJ,QAAAA,IAAW,CAAC,QAAQ,WAAW;AAC/B;AAAA,IAAA;AAGF,IAAAD,IACC,gBAAAhV,EAAA,cAAC,QAAA,EAAK,WAAW,GAAGJ,CAAS,UAAA,GAC3BsV,GAAQD,EAAS,CAAC,CAAC,GACnBC,GAAQD,EAAS,CAAC,CAAC,CACrB;AAAA,EAEF;AACC,IAAAD,IAAgBE,GAAQJ,CAAY;AAIrC,SACC,gBAAA9U,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWmV,GAAejV,GAAWR,CAAS,CAAC;AAAA,MACvE,GAAGK;AAAA,IAAA;AAAA,IAEHqV;AAAA,EAAA;AAGJ,GAGME,KAAU;AAAA,EACf,QACC,gBAAAlV,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,QAAO;AAAA,QACP,IAAG;AAAA,QACH,OAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AAAA,EAGF,SACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,QAAO;AAAA,QACP,IAAG;AAAA,QACH,OAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AAAA,EAGF,WACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA,cAAC,YAAO,IAAG,MAAK,IAAG,MAAK,MAAK,SAAQ,GAAE,KAAA,CAAK;AAAA,IAC5C,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AAAA,EAGF,QACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA,cAAC,KAAA,EAAE,UAAS,0BAAA,GACX,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA,GAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA,GAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA,CAEP;AAAA,IACA,gBAAAA,EAAA,cAAC,QAAA,MACA,gBAAAA,EAAA,cAAC,YAAA,EAAS,IAAG,oBAAA,GACZ,gBAAAA,EAAA,cAAC,QAAA,EAAK,MAAK,SAAQ,QAAO,MAAK,OAAM,KAAA,CAAK,CAC3C,CACD;AAAA,EAAA;AAAA,EAGF,QACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AAAA,EAGF,WACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA,cAAC,KAAA,EAAE,UAAS,yBACX,gBAAAA,EAAA,cAAC,QAAA,EAAK,GAAE,+BAA8B,MAAK,UAAA,CAAU,GACrD,gBAAAA,EAAA,cAAC,UAAK,GAAE,mCAAkC,MAAK,UAAA,CAAU,GACzD,gBAAAA,EAAA,cAAC,QAAA,EAAK,GAAE,+CAA8C,MAAK,UAAA,CAAU,GACrE,gBAAAA,EAAA,cAAC,QAAA,EAAK,GAAE,gDAA+C,MAAK,WAAU,CACvE;AAAA,IACA,gBAAAA,EAAA,cAAC,QAAA,MACA,gBAAAA,EAAA,cAAC,YAAA,EAAS,IAAG,gBAAA,GACZ,gBAAAA,EAAA,cAAC,QAAA,EAAK,MAAK,SAAQ,QAAO,MAAK,OAAM,KAAA,CAAK,CAC3C,CACD;AAAA,EAAA;AAAA,EAGF,MACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,QAAO;AAAA,QACP,IAAG;AAAA,QACH,WAAU;AAAA,QACV,OAAO,EAAE,UAAU,QAAA;AAAA,QACnB,OAAM;AAAA,QACN,GAAE;AAAA,QACF,GAAE;AAAA,MAAA;AAAA,MAEF,gBAAAA,EAAA,cAAC,YAAO,IAAG,MAAK,IAAG,MAAK,MAAK,SAAQ,GAAE,KAAA,CAAK;AAAA,IAAA;AAAA,IAE7C,gBAAAA,EAAA,cAAC,KAAA,EAAE,MAAK,uDACN,UAAA,EAAO,IAAG,MAAK,IAAG,MAAK,MAAK,mCAAkC,GAAE,MAAK,GACtE,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA,GAEN,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,QAAO;AAAA,QACP,OAAM;AAAA,QACN,GAAE;AAAA,QACF,GAAE;AAAA,MAAA;AAAA,IAAA,CAEJ;AAAA,oCACC,QAAA,MACA,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,eAAc;AAAA,QACd,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,MAAA;AAAA,MAEH,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,QAAA,CAAQ;AAAA,sCACvB,QAAA,EAAK,QAAO,KAAI,WAAU,SAAQ,aAAY,IAAA,CAAI;AAAA,IAAA,GAEpD,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,eAAc;AAAA,QACd,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA,MAAA;AAAA,MAEH,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,QAAA,CAAQ;AAAA,sCACvB,QAAA,EAAK,QAAO,KAAI,WAAU,SAAQ,aAAY,IAAA,CAAI;AAAA,IAAA,CAErD;AAAA,EAAA;AAAA,EAGF,QACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA,cAAC,KAAA,EAAE,WAAU,gBAAA,GACZ,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA,CAEP;AAAA,EAAA;AAAA,EAGF,cACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA,cAAC,KAAA,EAAE,WAAU,oDACX,UAAA,EAAO,IAAG,OAAM,IAAG,OAAM,MAAK,WAAU,GAAE,OAAM,GACjD,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA,CAEP;AAAA,EAAA;AAAA,EAGF,iBACC,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAM;AAAA,IAAA;AAAA,IAEN,gBAAAA,EAAA,cAAC,UAAK,MAAK,+BAA8B,QAAO,MAAK,IAAG,MAAK,OAAM,KAAA,CAAK;AAAA,IACxE,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACN;AAGH,GC9RamV,KAAY,CAAC;AAAA,EACzB,YAAA9L,IAAa;AAAA,EACb,WAAA/J,IAAY;AAAA,EACZ,UAAAuH,IAAW;AAAA,EACX,OAAAtH;AAAA,EACA,SAAAoK;AAAA,EACA,UAAAyL;AAAA,EACA,MAAA5V,IAAO;AAAA,EACP,GAAGG;AACJ,MAAsB;AAErB,QAAMC,IAAY,kBACZE,IAAY,GAAGF,CAAS,KAAKJ,CAAI,IAGjCiC,IAAWjC,MAAS,MAAM,MAAM,OAGhC2K,IACL,gBAAAnK,EAAA;AAAA,IAAC6U;AAAA,IAAA;AAAA,MACA,WAAW,GAAGjV,CAAS;AAAA,MACvB,UAAA6B;AAAA,MACA,cAAc2T;AAAA,IAAA;AAAA,EAAA;AAKhB,SACC,gBAAApV,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWE,GAAWR,CAAS,CAAC;AAAA,MACzD,UAAAuH;AAAA,MACA,SAAA8C;AAAA,MACA,MAAMN;AAAA,MACL,GAAG1J;AAAA,IAAA;AAAA,IAEHwK;AAAA,IACA5K;AAAA,EAAA;AAGJ,GCJa8V,KAAgB,CAAC;AAAA,EAC7B,aAAAC;AAAA,EACA,WAAAhW;AAAA,EACA,UAAAuH,IAAW;AAAA,EACX,WAAA0O,IAAY;AAAA,EACZ,UAAA/T;AAAA,EACA,cAAAgU,IAAe;AAAA,EACf,YAAApE,IAAa;AAAA,EACb,WAAA5H;AAAA,EACA,aAAAiM,IAAc;AAAA,EACd,WAAA/L;AAAA,EACA,OAAAnK;AAAA,EACA,aAAAgL;AAAA,EACA,SAAAZ;AAAA,EACA,aAAAxC;AAAA,EACA,GAAGxH;AACJ,MAA0B;AAEzB,QAAMC,IAAY,sBACZmK,IAAaP,IAAY,cAAc,MAGvCkM,IAAa,CAACvF,MACnB3O,KAAY,CAACkI,IACZ,gBAAA1J,EAAA,cAACsB,GAAA,EAAK,KAAA6O,GAAU,WAAW,GAAGvQ,CAAS,UAAU,UAAA4B,GAAoB,IAClE,MAGCmU,IAAgB,MACrBjM,IACC,gBAAA1J,EAAA;AAAA,IAACyI;AAAA,IAAA;AAAA,MACA,KAAI;AAAA,MACJ,WAAW,GAAG7I,CAAS;AAAA,MACvB,WAAU;AAAA,MACV,MAAK;AAAA,IAAA;AAAA,EAAA,IAEH,MAGCgW,IAAe,CAAC7K,MAAoB;AACzC,UAAMzG,IAAU,CAAA;AAEhB,WAAIkR,MAAiB,YACpBlR,EAAQ,KAAKoR,EAAW,aAAa,CAAC,GAGvCpR,EAAQ,KAAKqR,GAAe,GAE5BrR,EAAQ;AAAA,MACP,gBAAAtE,EAAA,cAAC,UAAK,KAAI,SAAQ,WAAW,GAAGJ,CAAS,aACvCmL,CACF;AAAA,IAAA,GAGGyK,MAAiB,WACpBlR,EAAQ,KAAKoR,EAAW,YAAY,CAAC,GAG/BpR,EAAQ,OAAO,OAAO;AAAA,EAC9B,GAGMuR,IACLtL,KAAetL,GAAesL,CAAW,IACrCA,EAAY,MAAkC,WAC/ChL,GAGEuW,IAAiB3W,EAAa;AAAA,IACnCS;AAAA,IACA2V,IAAY,GAAG3V,CAAS,aAAa;AAAA,IACrCwR,IAAa,GAAGxR,CAAS,eAAe;AAAA,IACxCiH,IAAW,GAAGjH,CAAS,eAAe;AAAA,IACtC4J,IAAY,GAAG5J,CAAS,cAAc;AAAA,IACtC8J,IAAY,GAAG9J,CAAS,cAAc;AAAA,IACtC6V,IAAc,GAAG7V,CAAS,gBAAgB;AAAA,IAC1CN,KAAa;AAAA,EAAA,CACb,GAGKyW,IAAkB,CAACzR,MACxB6C,IACC,gBAAAnH,EAAA,cAACqE,MAAQ,SAAS8C,GAAa,eAAe7C,EAAA,CAAS,IAEvDA;AAIF,MAAIiG,KAAe,CAAC1D,GAAU;AAC7B,UAAM+D,IAAgB3L,GAAesL,CAAW,IAC7CM;AAAA,MACAN;AAAA,MACA,OAAO,OAAO,IAAIA,EAAY,OAAO;AAAA,QACpC,WAAWpL,EAAa;AAAA,UACvB,GAAGS,CAAS;AAAA,UACZmK;AAAA,UACCQ,EAAY,MAAiC,aAAa;AAAA,QAAA,CAC3D;AAAA,QACD,UAAUqL,EAAaC,CAAc;AAAA,MAAA,CACrC;AAAA,IAAA,IAED;AAEH,WACC,gBAAA7V,EAAA,cAAC,SAAI,WAAW8V,GAAiB,GAAGnW,EAAA,GAClCoW,EAAgBnL,CAAa,CAC/B;AAAA,EAEF;AAGA,QAAMR,IACL,gBAAApK,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,iBAAe6G,KAAY2C,KAAaE;AAAA,MACxC,WAAWvK,EAAa,CAAC,GAAGS,CAAS,YAAYmK,CAAU,CAAC;AAAA,MAC5D,SAASlD,IAAW,SAAY8C;AAAA,MAChC,MAAK;AAAA,MACJ,GAAG2L;AAAA,IAAA;AAAA,IAEHM,EAAaC,CAAc;AAAA,EAAA;AAI9B,SACC,gBAAA7V,EAAA,cAAC,SAAI,WAAW8V,GAAiB,GAAGnW,EAAA,GAClCoW,EAAgB3L,CAAa,CAC/B;AAEF,GCnEM4L,KAAM,CAAC;AAAA,EACZ,UAAAnP;AAAA,EACA,qBAAAoP;AAAA,EACA,cAAAC;AAAA,EACA,OAAA7G;AAAA,EACA,YAAA8G;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,KAAAC;AAAA,EACA,WAAAC;AAAA,EACA,oBAAAC;AACD,MAAgB;AACf,QAAMC,IAASpL,EAAuB,IAAI,GACpC9L,IAAY;AAElB,EAAAsD,GAAU,MAAM;AACf,IAAIgT,MAAiB7G,KAASyH,EAAO,WACpCA,EAAO,QAAQ,MAAA;AAAA,EAEjB,GAAG,CAACZ,GAAc7G,CAAK,CAAC;AAExB,QAAM0H,IAAkB,CAAC3T,MAAiC;AACzD,QAAI,CAACgT,KAAc,CAACU,EAAO,QAAS;AAGpC,UAAME,IAAa,OAAO;AAAA,MACzBF,EAAO,QAAQ,QAAQ,iBAAiB,KAAK,SAAS;AAAA,IAAA,GAIjDG,IAAUD,EACd,iBAAiB,wBAAwB,EACzC,KAAA,GACIE,IAAaF,EACjB,iBAAiB,wBAAwB,EACzC,KAAA,GACIG,IAAkBH,EACtB,iBAAiB,wBAAwB,EACzC,KAAA,GAGII,KAAaN,EAAO,QAAQ,MAAM,iBAClCO,IAAgBP,EAAO,QAAQ,MAAM,OACrCQ,KAAkBR,EAAO,QAAQ,MAAM,SACvCS,IAAwBT,EAAO,QAAQ,MAAM;AAGnD,IAAAA,EAAO,QAAQ,MAAM,kBAAkBG,GACvCH,EAAO,QAAQ,MAAM,QAAQI,GAC7BJ,EAAO,QAAQ,MAAM,UAAUK,GAC/BL,EAAO,QAAQ,MAAM,gBAAgB,QAGhCA,EAAO,QAAQ,cAEpB1T,EAAE,aAAa,gBAAgB,QAC/BA,EAAE,aAAa,QAAQ,aAAaA,EAAE,cAAc,SAAS,GAG7D,WAAW,MAAM;AAChB,MAAI0T,EAAO,YACVA,EAAO,QAAQ,MAAM,kBAAkBM,IACvCN,EAAO,QAAQ,MAAM,QAAQO,GAC7BP,EAAO,QAAQ,MAAM,UAAUQ,IAC/BR,EAAO,QAAQ,MAAM,gBAAgBS,GACrCT,EAAO,QAAQ,UAAU,IAAI,GAAGlX,CAAS,YAAY;AAAA,IAEvD,GAAG,CAAC,GAEJ2W,EAAYI,EAAI,EAAE;AAAA,EACnB,GAEMa,IAAiB,CAACpU,MAAiC;AACxD,QAAI,CAACgT,KAAc,CAACU,EAAO,QAAS;AACpC,IAAA1T,EAAE,eAAA,GACFA,EAAE,aAAa,aAAa;AAG5B,UAAMqU,IAAOX,EAAO,QAAQ,sBAAA,GACtBY,IAAStU,EAAE,SACXuU,IAAYF,EAAK,OAAOA,EAAK,QAAQ,GACrCG,IAA2BF,IAASC,IAAY,WAAW;AAEjE,IAAArB,EAAWK,EAAI,IAAIiB,CAAI;AAAA,EACxB,GAEMzU,IAAgB,CAACC,MAAqC;AAC3D,QAAI,CAAAyD,GAGJ;AAAA,UAAIuP;AAEH,aACEhT,EAAE,QAAQ,eAAeA,EAAE,QAAQ,cACpCA,EAAE,YACFiM,IAAQ,GACP;AACD,UAAAjM,EAAE,eAAA,GACFoT,EAAenH,GAAOA,IAAQ,CAAC,GAC/BqH,EAAgBrH,IAAQ,CAAC;AACzB;AAAA,QACD,YAGEjM,EAAE,QAAQ,gBAAgBA,EAAE,QAAQ,gBACrCA,EAAE,YACFiM,IAAQuH,IAAY,GACnB;AACD,UAAAxT,EAAE,eAAA,GACFoT,EAAenH,GAAOA,IAAQ,CAAC,GAC/BqH,EAAgBrH,IAAQ,CAAC;AACzB;AAAA,QACD;AAAA;AAID,MAAIjM,EAAE,QAAQ,YACbA,EAAE,eAAA,GACFqT,EAASE,EAAI,EAAE,GAEXtH,IAAQ,KACXqH,EAAgBrH,IAAQ,CAAC,KAIlBjM,EAAE,QAAQ,eAAe,CAACA,EAAE,YAAYiM,IAAQ,KACxDjM,EAAE,eAAA,GACFsT,EAAgBrH,IAAQ,CAAC,KACfjM,EAAE,QAAQ,gBAAgB,CAACA,EAAE,YAAYiM,IAAQuH,IAAY,MACvExT,EAAE,eAAA,GACFsT,EAAgBrH,IAAQ,CAAC;AAAA;AAAA,EAE3B,GAEMwI,IAAW,OAAOxI,IAAQ,CAAC,GAC3ByI,IAAW,OAAOlB,CAAS,GAC3BmB,IAAe3B,IAClBS,EAAmB,eACnBA,EAAmB,oBAChBzN,IAAY,GAAGuN,EAAI,KAAK,KAAKoB,EACjC,QAAQ,WAAWF,CAAQ,EAC3B,QAAQ,WAAWC,CAAQ,CAAC,IAExBE,IAAgB7B,IAAa,GAAGvW,CAAS,eAAe,MACxDgU,IAAgB/M,IAAWL,GAAmB,WAAW,MACzDyR,IAAkBhC,IACrB,GAAGrW,CAAS,iBAAiBqW,CAAmB,KAChD;AAEH,SACC,gBAAAjW,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAK8W;AAAA,MACL,cAAY1N;AAAA,MACZ,WAAWjK,EAAa;AAAA,QACvBS;AAAA,QACAoY;AAAA,QACApE;AAAA,QACAqE;AAAA,MAAA,CACA;AAAA,MACD,WAAW7B,KAAc,CAACvP;AAAA,MAC1B,WAAWuP,IAAaC,IAAY;AAAA,MACpC,YAAYD,IAAaoB,IAAiB;AAAA,MAC1C,aAAapB,IAAaW,IAAkB;AAAA,MAC5C,WAAW5T;AAAA,MACX,MAAK;AAAA,MACL,UAAU0D,IAAW,KAAK;AAAA,IAAA;AAAA,IAEzBuP,KACA,gBAAApW,EAAA,cAAC,QAAA,EAAK,eAAY,QAAO,WAAW,GAAGJ,CAAS,2CAC9C0B,GAAA,EAAK,UAAS,oBAAmB,UAAS,KAAI,CAChD;AAAA,oCAEA,QAAA,EAAK,WAAW,GAAG1B,CAAS,QAAA,GAAU+W,EAAI,KAAM;AAAA,IACjD,gBAAA3W,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,cAAY6W,EAAmB,UAAU,QAAQ,WAAWF,EAAI,KAAK;AAAA,QACrE,WAAW,GAAG/W,CAAS;AAAA,QACvB,UAAAiH;AAAA,QACA,SAAS,CAACzD,MAAM;AACf,UAAAA,EAAE,gBAAA,GACFqT,EAASE,EAAI,EAAE;AAAA,QAChB;AAAA,QACA,UAAU;AAAA,QACV,MAAK;AAAA,MAAA;AAAA,MAEL,gBAAA3W,EAAA;AAAA,QAACsB;AAAA,QAAA;AAAA,UACA,WAAW,GAAG1B,CAAS;AAAA,UACvB,UAAS;AAAA,UACT,UAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IACV;AAAA,EACD;AAGH,GAKasY,KAAYjQ;AAAA,EACxB,CACC;AAAA,IACC,oBAAAkQ,IAAqB;AAAA,IACrB,WAAA7Y;AAAA,IACA,UAAAuH,IAAW;AAAA,IACX,IAAAC;AAAA,IACA,gBAAAsR,IAAiB;AAAA,IACjB,YAAA1R;AAAA,IACA,YAAA0P,IAAa;AAAA,IACb,OAAA7W;AAAA,IACA,SAAAkI;AAAA,IACA,UAAAiM;AAAA,IACA,aAAA2E;AAAA,IACA,UAAApR,IAAW;AAAA,IACX,WAAAC,IAAY;AAAA,IACZ,MAAAoR;AAAA,IACA,aAAAnR,IAAc;AAAA,IACd,oBAAA0P,IAAqB;AAAA,MACpB,mBACC;AAAA,MACD,cACC;AAAA,MACD,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,eAAe;AAAA,IAAA;AAAA,IAEhB,mBAAA0B;AAAA,IACA,kBAAA5Q;AAAA,IACA,GAAGhI;AAAA,EAAA,GAEJwI,MACI;AAEJ,UAAMqQ,IAAkB/R,GAAmBC,CAAU,GAG/C9G,IAAY,kBACZgU,IAAgB/M,IAAWL,GAAmB,WAAW,MACzDiS,IACLxR,KAAY,CAACJ,IAAWL,GAAmB,WAAW,MACjDkS,IACL/Q,MAAqB,UAAUnB,GAAmB,QAAQ,MACrDmS,IACLhR,MAAqB,YAAYnB,GAAmB,UAAU,MAGzDoS,IAAmBL,KAAqB9Q,GAGxC,CAACoR,GAAYC,CAAa,IAAIlW,EAAS,EAAE,GACzC,CAACmW,GAAWC,CAAY,IAAIpW,EAAwB,IAAI,GACxD,CAACqW,GAAcC,EAAe,IAAItW,EAAwB,IAAI,GAC9D,CAACuW,GAAUC,EAAW,IAAIxW,EAAoC,IAAI,GAClE,CAACsT,GAAcQ,EAAe,IAAI9T,EAAwB,IAAI,GAC9D,CAACyW,IAAcC,EAAe,IAAI1W,EAAS,EAAE,GAC7C2W,KAAW7N,EAAyB,IAAI,GAGxC8N,IACLlB,EAAK,SAAS,IAAIH,IAAqBE,GAElCoB,IAAW,CAAChS,MAAoB;AACrC,MAAA6R,GAAgB7R,CAAO,GACvB,WAAW,MAAM6R,GAAgB,EAAE,GAAG,GAAI;AAAA,IAC3C,GAEMI,IAAmB,CAACC,MAAuB;AAChD,MAAAjG,EAASiG,CAAO;AAAA,IACjB,GAEM5C,KAAkB,CAACjQ,MAAe;AACvC,MAAAkS,EAAalS,CAAE;AAAA,IAChB,GAEM8S,KAAgB,MAAM;AAC3B,MAAAZ,EAAa,IAAI,GACjBE,GAAgB,IAAI,GACpBE,GAAY,IAAI;AAAA,IACjB,GAEM5B,KAAiB,CAAC1Q,GAAY8Q,MAA6B;AAChE,MAAImB,MAAc,QAAQA,MAAcjS,MACxCoS,GAAgBpS,CAAE,GAClBsS,GAAYxB,CAAI;AAAA,IACjB,GAEMiC,KAAa,CAACzW,MAAiC;AAGpD,UAFAA,EAAE,eAAA,GAEE2V,MAAc,QAAQE,MAAiB,QAAQE,MAAa;AAC/D;AAED,YAAMW,IAAexB,EAAK,UAAU,CAAClM,OAASA,GAAK,OAAO2M,CAAS,GAC7DgB,IAAczB,EAAK,UAAU,CAAClM,OAASA,GAAK,OAAO6M,CAAY;AAErE,UAAIa,MAAiB,MAAMC,MAAgB,GAAI;AAE/C,YAAMJ,IAAU,CAAC,GAAGrB,CAAI,GAClB,CAAC0B,EAAW,IAAIL,EAAQ,OAAOG,GAAc,CAAC;AAGpD,UAAIG,KAAcF;AAElB,MAAIZ,MAAa,UAIhBc,KACCH,IAAeC,IAAcA,IAAcA,IAAc,IAK1DE,MAAcH,IAAeC,GAAcA,IAG5CJ,EAAQ,OAAOM,IAAa,GAAGD,EAAW,GAE1CN,EAAiBC,CAAO,GACxBF,EAAS,eAAe,GAExBT,EAAa,IAAI,GACjBE,GAAgB,IAAI,GACpBE,GAAY,IAAI;AAAA,IACjB,GAEMc,KAAqB,CAACC,GAAmBC,MAAoB;AAClE,YAAMT,IAAU,CAAC,GAAGrB,CAAI,GAClB,CAAC+B,CAAS,IAAIV,EAAQ,OAAOQ,GAAW,CAAC;AAC/C,MAAAR,EAAQ,OAAOS,GAAS,GAAGC,CAAS,GAEpCZ;AAAA,QACC,GAAGY,EAAU,KAAK,sBAAsBD,IAAU,CAAC,OAAO9B,EAAK,MAAM;AAAA,MAAA,GAEtEoB,EAAiBC,CAAO;AAAA,IACzB,GAEMW,KAAe,CAACxT,MAAe;AACpC,YAAM6P,IAAM2B,EAAK,KAAK,CAACiC,MAAMA,EAAE,OAAOzT,CAAE,GAClC6S,IAAUrB,EAAK,OAAO,CAAClM,MAASA,EAAK,OAAOtF,CAAE;AACpD,MAAA4S,EAAiBC,CAAO,GACpBhD,KACH8C,EAAS,GAAG9C,EAAI,KAAK,UAAU,GAIhC,WAAW,MAAM;AAChB,QAAI4C,GAAS,WACZA,GAAS,QAAQ,MAAA;AAAA,MAEnB,GAAG,CAAC;AAAA,IACL,GAEMpW,KAAgB,CAACC,MAAuC;AAC7D,UAAI,CAAAyD;AAEJ,YAAIzD,EAAE,QAAQ,WAAWyV,EAAW,QAAQ;AAC3C,UAAAzV,EAAE,eAAA;AACF,gBAAMoX,IAAkB;AAAA,YACvB,IAAI,KAAK,IAAA,EAAM,SAAA;AAAA,YACf,OAAO3B,EAAW,KAAA;AAAA,UAAK;AAExB,UAAAa,EAAiB,CAAC,GAAGpB,GAAMkC,CAAM,CAAC,GAClCf,EAAS,GAAGZ,EAAW,KAAA,CAAM,QAAQ,GACrCC,EAAc,EAAE;AAAA,QACjB,WAAW1V,EAAE,QAAQ,eAAe,CAACyV,KAAcP,EAAK,SAAS,GAAG;AACnE,gBAAMmC,IAAUnC,EAAKA,EAAK,SAAS,CAAC;AACpC,UAAAoB,EAAiBpB,EAAK,MAAM,GAAG,EAAE,CAAC,GAClCmB,EAAS,GAAGgB,EAAQ,KAAK,UAAU;AAAA,QACpC,MAAA,CAAWrX,EAAE,QAAQ,eAAe,CAACyV,KAAcP,EAAK,SAAS,MAChElV,EAAE,eAAA,GACFsT,GAAgB4B,EAAK,SAAS,CAAC;AAAA,IAEjC;AAGA,WACC,gBAAAtY,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWb,EAAa;AAAA,UACvBqH,GAAmB;AAAA,UACnB5G;AAAA,UACAgU;AAAA,UACA6E;AAAA,UACAC;AAAA,UACAC;AAAA,UACArZ,KAAa;AAAA,QAAA,CACb;AAAA,QACD,OAAOoH,IAAa8R,IAAkB;AAAA,QACrC,GAAG7Y;AAAA,MAAA;AAAA,MAEJ,gBAAAK,EAAA;AAAA,QAAC4G;AAAA,QAAA;AAAA,UACA,UAAAC;AAAA,UACA,IAAAC;AAAA,UACA,OAAAvH;AAAA,UACA,UAAA0H;AAAA,UACA,WAAAC;AAAA,UACA,aAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,MAID,gBAAAnH,EAAA,cAAC,SAAI,eAAY,QAAO,aAAU,UAAS,WAAU,qBACnDqZ,EACF;AAAA,MAEA,gBAAArZ,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,mBAAiB,GAAG8G,CAAE;AAAA,UACtB,WAAW,GAAGlH,CAAS;AAAA,UACvB,MAAK;AAAA,UACL,OAAO,EAAE,WAAW,GAAGwY,CAAc,KAAA;AAAA,QAAK;AAAA,QAGzCE,EAAK,SAAS,KACd,gBAAAtY,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,cAAY6W,EAAmB;AAAA,YAC/B,WAAW,GAAGjX,CAAS;AAAA,YACvB,QAAQwW,IAAayD,KAAa;AAAA,YAClC,MAAK;AAAA,UAAA;AAAA,UAEJvB,EAAK,IAAI,CAAC3B,GAAKtH,MAAU;AAEzB,gBAAIqL,IAA2C;AAE/C,mBAAI3B,KAAaA,MAAcpC,EAAI,OAC9BsC,MAAiBtC,EAAI,MAAMwC,MAAa,WAC3CuB,IAAgB,WAEhBzB,MAAiBtC,EAAI,MACrBwC,MAAa,WACb9J,MAAUiJ,EAAK,SAAS,IAGxBoC,IAAgB,UAEhBrL,IAAQ,KACR4J,MAAiBX,EAAKjJ,IAAQ,CAAC,EAAE,MACjC8J,MAAa,YAGbuB,IAAgB,4CAKhB,OAAA,EAAI,KAAK/D,EAAI,IAAI,MAAK,WAAA,GACtB,gBAAA3W,EAAA;AAAA,cAACgW;AAAA,cAAA;AAAA,gBACA,UAAAnP;AAAA,gBACA,qBAAqB6T;AAAA,gBACrB,cAAAxE;AAAA,gBACA,OAAA7G;AAAA,gBACA,YAAY0J,MAAcpC,EAAI;AAAA,gBAC9B,YAAAP;AAAA,gBACA,WAAWwD;AAAA,gBACX,YAAYpC;AAAA,gBACZ,aAAaT;AAAA,gBACb,gBAAgBmD;AAAA,gBAChB,UAAUI;AAAA,gBACV,iBAAA5D;AAAA,gBACA,KAAAC;AAAA,gBACA,WAAW2B,EAAK;AAAA,gBAChB,oBAAAzB;AAAA,cAAA;AAAA,YAAA,CAEF;AAAA,UAEF,CAAC;AAAA,QAAA;AAAA,QAKH,gBAAA7W,EAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,KAAK,CAACE,MAAS;AACd,cAAAqZ,GAAS,UAAUrZ,GACf,OAAOiI,KAAQ,aAClBA,EAAIjI,CAAI,IACEiI,MACVA,EAAI,UAAUjI;AAAA,YAEhB;AAAA,YACA,oBAAkB,GAAG4G,CAAE;AAAA,YACvB,gBAAca,MAAqB,UAAU,KAAO;AAAA,YACpD,WAAW,GAAG/H,CAAS;AAAA,YACvB,UAAAiH;AAAA,YACA,IAAAC;AAAA,YACA,MAAMA;AAAA,YACN,UAAU,CAAC1D,MAAM0V,EAAc1V,EAAE,OAAO,KAAK;AAAA,YAC7C,WAAWD;AAAA,YACX,aAAaqW;AAAA,YACb,UAAAvS;AAAA,YACA,MAAK;AAAA,YACL,OAAO4R;AAAA,UAAA;AAAA,QAAA;AAAA,QAER,gBAAA7Y,EAAA,cAAC,SAAI,WAAU,mBAAkB,IAAI,GAAG8G,CAAE,iBAAA,GACxC+P,EAAmB,iBACrB;AAAA,MAAA;AAAA,MAGA+B,KACA,gBAAA5Y,EAAA;AAAA,QAACsH;AAAA,QAAA;AAAA,UACA,sBAAsB,EAAAiR;AAAA,UACtB,IAAAzR;AAAA,UACA,SAAS8R;AAAA,UACT,gCAAgC;AAAA,UAChC,kBAAAjR;AAAA,QAAA;AAAA,MAAA;AAAA,IACD;AAAA,EAIJ;AACD,GCrkBagT,KAAe,CAACvO,MAExB,OAAOA,EAAK,eAAgB,WAE3B,GAAAA,EAAK,YAMPA,EAAK,YAAY,MAAiC,aAClDA,EAAK,YAAY,MAAiC,UAAU;AAAA,EAC5D;AAAA,KAWI,IAWKwO,KAAgB,CAACxO,MAAkC;AAC/D,MAAIuO,GAAavO,CAAI;AACpB,WAAO;AAIR,MAAIA,EAAK;AACR,aAASjK,IAAI,GAAGA,IAAIiK,EAAK,MAAM,QAAQjK;AACtC,UAAIyY,GAAcxO,EAAK,MAAMjK,CAAC,CAAC;AAC9B,eAAO;AAAA;AAKV,SAAO;AACR,GCxEa0Y,KAAY,CAAC;AAAA,EACzB,WAAAzR;AAAA,EACA,WAAA9J;AAAA,EACA,WAAA+N;AAAA,EACA,MAAA7N,IAAO;AAAA,EACP,GAAGG;AACJ,MAAsB;AAErB,MAAIwN,IAAW;AAGf,QAAMW,IAAoBC,GAAWf,EAAiB;AACtD,EAAIc,MACHX,IAAWW,EAAkB;AAI9B,QAAMgN,IAASpP,EAAoB,IAAI,GAGjC9L,IAAY,kBACZqO,IAAcd,IAAW,GAAGvN,CAAS,eAAe,MACpDE,IAAY,GAAGF,CAAS,KAAKJ,CAAI;AAGvC,EAAA0D,GAAU,MAAM;AACf,UAAMC,IAAgB,CAACe,MAAyB;AAE/C,UAAIiJ,EAAU;AAGd,YAAM4N,IAAMD,EAAO;AACnB,UAAI,CAACC,EAAK;AAGV,YAAMC,IAAoB,MAAM;AAAA,QAC/BD,EAAI,iBAAiB,4CAA4C;AAAA,MAAA;AAIlE,UAAIC,EAAkB,WAAW,EAAG;AAGpC,YAAMC,IAAiB,SAAS,eAC1BC,IAAeF,EAAkB,QAAQC,CAAc;AAG7D,UAAIC,MAAiB;AAGrB,YAAIhX,EAAM,QAAQ,cAAc;AAC/B,UAAAA,EAAM,eAAA;AACN,gBAAMiX,KAAaD,IAAe,KAAKF,EAAkB;AACzD,UAAAA,EAAkBG,CAAS,EAAE,MAAA;AAAA,QAC9B,WAAWjX,EAAM,QAAQ,aAAa;AACrC,UAAAA,EAAM,eAAA;AACN,gBAAMkX,KACJF,IAAe,IAAIF,EAAkB,UACtCA,EAAkB;AACnB,UAAAA,EAAkBI,CAAS,EAAE,MAAA;AAAA,QAC9B;AAAA;AAAA,IACD;AAEA,oBAAS,iBAAiB,WAAWjY,CAAa,GAE3C,MAAM;AACZ,eAAS,oBAAoB,WAAWA,CAAa;AAAA,IACtD;AAAA,EACD,GAAG,CAACgK,CAAQ,CAAC;AAGb,QAAMkO,IAAiB,CAAC,EAAE,UAAAnT,GAAU,aAAAqC,QAAiC;AAEpE,UAAM+Q,IAAY,GAAG1b,CAAS;AAE9B,WACC,gBAAAI,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWb,EAAa;AAAA,UACvBmc;AAAA,UACApT,IAAW,GAAGoT,CAAS,aAAa;AAAA,QAAA,CACpC;AAAA,MAAA;AAAA,MAEA/Q;AAAA,IAAA;AAAA,EAGJ,GAGMgR,IACLlO,EAAU,SAAS,oCACjB,MAAA,EAAG,WAAW,GAAGzN,CAAS,SAAA,GACzByN,EAAU,IAAI,CAACjB,GAAMiD,MAEpB,gBAAArP,EAAA;AAAA,IAACqb;AAAA,IAAA;AAAA,MACA,KAAKhM;AAAA,MACL,UAAUuL,GAAcxO,CAAI;AAAA,MAC5B,aAAaA,EAAK;AAAA,IAAA;AAAA,EAAA,CAGpB,CACF,IACG,MAGCoP,IAAkB,CAAA;AAExB,EAAAnO,EAAU,IAAI,CAACjB,MAAS;AACvB,IAAIA,EAAK,gBACHwO,GAAcxO,CAAI,IAMtBoP,EAAgB,QAAQ;AAAA,MACvB,aAAapP,EAAK;AAAA,MAClB,QAAQ;AAAA,IAAA,CACR,IARDoP,EAAgB,KAAK;AAAA,MACpB,aAAapP,EAAK;AAAA,MAClB,QAAQ;AAAA,IAAA,CACR;AAAA,EAQJ,CAAC;AAGD,QAAMqP,IACLD,EAAgB,SAAS,IACxB,gBAAAxb,EAAA;AAAA,IAACuU;AAAA,IAAA;AAAA,MACA,aAAaiH;AAAA,MACb,IAAG;AAAA,MACH,MAAAhc;AAAA,MACA,SAAQ;AAAA,IAAA;AAAA,EAAA,IAEN;AAGL,SACC,gBAAAQ,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAK8a;AAAA,MACL,cAAY1R;AAAA,MACZ,WAAWjK,EAAa;AAAA,QACvBS;AAAA,QACAE;AAAA,QACAmO;AAAA,QACA3O,KAAa;AAAA,MAAA,CACb;AAAA,MACA,GAAGK;AAAA,IAAA;AAAA,IAEHwN,IAAWsO,IAAeF;AAAA,EAAA;AAG9B,GCnLMG,KAAgE;AAAA,EACrE,MAAM;AAAA,EACN,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AACZ,GAEMC,KAAqB,KACrBC,KAAgB,IA8DTC,KAAS,CAAC;AAAA,EACtB,SAAAC;AAAA,EACA,WAAAxc;AAAA,EACA,cAAAyc,IAAe;AAAA,EACf,WAAAC,IAAY;AAAA,EACZ,eAAAC,IAAgB;AAAA,EAChB,YAAAvc,IAAa,EAAE,GAAGwM,IAAkB,SAAS,SAAA;AAAA,EAC7C,GAAGvM;AACJ,MAAmB;AAClB,QAAM,CAACuc,GAAaC,CAAc,IAAIvZ,EAASkZ,CAAO,GAChD,CAACM,GAAUC,CAAW,IAAIzZ,EAAwB,IAAI,GACtD,CAAC0Z,GAAcC,CAAe,IAAI3Z,EAAwB,IAAI,GAC9D,CAAC4Z,GAAiBC,CAAkB,IAAI7Z,EAE5C,CAAA,CAAE;AAGJ,EAAAM,GAAU,MAAM;AACf,IAAAiZ,EAAeL,CAAO;AAAA,EACvB,GAAG,CAACA,CAAO,CAAC;AAEZ,QAAMY,IAAeR,EAAY;AAEjC,MAAIQ,MAAiB;AACpB,WAAO;AAIR,QAAM9c,IAAY,cACZ+c,IACLD,IAAe,IAAI,GAAG9c,CAAS,qBAAqB,MAC/Cgd,IAAc;AAAA,IACnB,UAAU,GAAGhd,CAAS;AAAA,IACtB,WAAW,GAAGA,CAAS;AAAA,IACvB,MAAM,GAAGA,CAAS;AAAA,IAClB,SAAS,GAAGA,CAAS;AAAA,IACrB,SAAS,GAAGA,CAAS;AAAA,EAAA,GAIhBid,IAAmBX,EAAY,CAAC,EAAE,MAClCY,IAAwBD,IAC3B,GAAGjd,CAAS,WAAWid,CAAgB,KACvC,MAEGE,IAAY,CAAC1N,MAAkBrO,KAAwBqO,GAEvD2N,IAAc,CAAC3N,MAAmBA,MAAU,IAAI,IAAI,IAGpD4N,IAAiB,MAAM;AAC5B,IAAAZ,EAAYH,EAAY,CAAC,EAAE,EAAE,GAE7B,WAAW,MAAM;AAChB,MAAAC,EAAe,CAACe,MAAgB;AAAA,QAC/B,GAAGA,EAAY,MAAM,CAAC;AAAA,QACtBA,EAAY,CAAC;AAAA,MAAA,CACb,GACDb,EAAY,IAAI;AAAA,IACjB,GAAGV,EAAkB;AAAA,EACtB,GAGMwB,IAAqB,MAAM;AAEhC,IAAAV,EAAmB;AAAA,MAClB,CAACP,EAAY,CAAC,EAAE,EAAE,GAAGlb,KAAwB;AAAA,MAC7C,CAACkb,EAAYQ,IAAe,CAAC,EAAE,EAAE,GAAG1b,KAAwB;AAAA,IAAA,CAC5D,GAED,WAAW,MAAM;AAChB,MAAAqb,EAAYH,EAAY,CAAC,EAAE,EAAE;AAAA,IAC9B,GAAGN,EAAa,GAEhB,WAAW,MAAM;AAChB,MAAAO,EAAe,CAACe,MAAgB;AAAA,QAC/BA,EAAYA,EAAY,SAAS,CAAC;AAAA,QAClC,GAAGA,EAAY,MAAM,GAAGA,EAAY,SAAS,CAAC;AAAA,MAAA,CAC9C,GACDb,EAAY,IAAI,GAChBI,EAAmB,CAAA,CAAE;AAAA,IACtB,GAAGd,EAAkB;AAAA,EACtB,GAGMyB,IAAe,CAACC,GAAwBhO,MAAkB;AAC/D,UAAM,EAAE,UAAA7N,GAAU,IAAAsF,GAAI,eAAAwW,GAAe,SAAA7V,GAAS,WAAA8V,IAAW,MAAA9d,MAAS4d,GAE5DG,KAAW/d,MAAS,aAAa,UAAU,UAC3Cge,IAAkB,GAAG/d,EAAWD,CAAI,CAAC,OAErCie,KAAgB,CAACta,OAAqC;AAC3D,MAAAA,GAAE,eAAA,GACFmZ,EAAgBzV,CAAE,GAElB,WAAW,MAAM;AAChB,QAAAyW,KAAA,GACAhB,EAAgB,IAAI,GAEpBJ,EAAe,CAACe,OACGA,GAAY;AAAA,UAC7B,CAACS,MAAeA,EAAW,OAAO7W;AAAA,QAAA,CAGnC;AAAA,MACF,GAAG6U,EAAkB;AAAA,IACtB,GAEM7W,KAAS0X,EAAgB1V,CAAE,KAAKiW,EAAU1N,CAAK;AAErD,WACC,gBAAArP,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,KAAK8G;AAAA,QACL,WAAW3H,EAAa;AAAA,UACvBS;AAAA,UACAgd,EAAYnd,CAAI;AAAA,UAChB2c,MAAatV,IAAK,GAAGlH,CAAS,aAAa;AAAA,UAC3C0c,MAAiBxV,IAAK,GAAGlH,CAAS,iBAAiB;AAAA,QAAA,CACnD;AAAA,QACD,IAAAkH;AAAA,QACA,MAAM0W;AAAA,QACN,OAAO,EAAE,QAAA1Y,GAAA;AAAA,MAAO;AAAA,MAEhB,gBAAA9E,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,eAC3B,gBAAAI,EAAA;AAAA,QAACsB;AAAA,QAAA;AAAA,UACA,WAAW,GAAG1B,CAAS,UAAUA,CAAS,WAAWyd,EAAO,IAAI;AAAA,UAChE,UAAU5d,MAAS,YAAY+B,IAAWka,GAAUjc,CAAI;AAAA,UACxD,UAAS;AAAA,QAAA;AAAA,MAAA,GAEV,gBAAAO,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,YAAA,GAC3B,gBAAAI,EAAA,cAAC,QAAA,EAAK,WAAU,kBAAA,GAAmByd,GAAgB,GAAC,GACnDhW,CACF,CACD;AAAA,MACC6V,KACA,gBAAAtd,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,WAAW,GAAGJ,CAAS;AAAA,UACvB,SAAS8d;AAAA,UACT,UAAUV,EAAY3N,CAAK;AAAA,UAC3B,MAAK;AAAA,QAAA;AAAA,QAEJ0M;AAAA,MAAA;AAAA,IACF;AAAA,EAIJ;AAEA,SACC,gBAAA/b,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa;AAAA,QACvB,GAAGS,CAAS;AAAA,QACZkd;AAAA,QACAH;AAAA,QACArd,KAAa;AAAA,MAAA,CACb;AAAA,MACA,GAAGK;AAAA,IAAA;AAAA,IAEH+c,IAAe,IACf,gBAAA1c,EAAA,cAAC,SAAI,WAAW,GAAGJ,CAAS,eAAA,GAC3B,gBAAAI,EAAA;AAAA,MAACmL;AAAA,MAAA;AAAA,QACA,WAAW8Q;AAAA,QACX,WAAW,GAAGrc,CAAS,gBAAgBA,CAAS;AAAA,QAChD,UAAS;AAAA,QACT,SAASud;AAAA,QACT,MAAK;AAAA,MAAA;AAAA,IAAA,GAGN,gBAAAnd,EAAA;AAAA,MAACmL;AAAA,MAAA;AAAA,QACA,WAAW6Q;AAAA,QACX,WAAW,GAAGpc,CAAS,gBAAgBA,CAAS;AAAA,QAChD,UAAS;AAAA,QACT,SAASqd;AAAA,QACT,MAAK;AAAA,MAAA;AAAA,IAAA,GAELf,EAAY,IAAI,CAACmB,GAAQhO,MAAU+N,EAAaC,GAAQhO,CAAK,CAAC,CAChE,IAEA+N,EAAalB,EAAY,CAAC,GAAG,CAAC;AAAA,EAAA;AAIlC,GCrOMR,KAAoE;AAAA,EACzE,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AACX,GAKakC,KAAgB,CAAC;AAAA,EAC7B,WAAAte;AAAA,EACA,SAAAmI;AAAA,EACA,OAAAoW;AAAA,EACA,MAAApe;AAAA,EACA,YAAAC,IAAa;AAAA,IACZ,GAAGwM;AAAA,IACH,SAAS;AAAA,EAAA;AAAA,EAEV,GAAGvM;AACJ,MAA0B;AAEzB,QAAMC,IAAY,sBACZke,IAAa;AAAA,IAClB,OAAO,GAAGle,CAAS;AAAA,IACnB,SAAS,GAAGA,CAAS;AAAA,IACrB,SAAS,GAAGA,CAAS;AAAA,IACrB,MAAM,GAAGA,CAAS;AAAA,IAClB,UAAU,GAAGA,CAAS;AAAA,IACtB,SAAS,GAAGA,CAAS;AAAA,EAAA,GAIhB4d,IAAW/d,MAAS,aAAa,UAAU,UAG3CM,IAAmB,GAAGL,EAAWD,CAAI,CAAC,MAGtCmZ,IACL,OAAOnR,KAAY,WAAW,gBAAAzH,EAAA,cAAC,KAAA,MAAGyH,CAAQ,IAAOA;AAGlD,SACC,gBAAAzH,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWke,EAAWre,CAAI,GAAGH,KAAa,EAAE,CAAC;AAAA,MACtE,MAAMke;AAAA,MACL,GAAG7d;AAAA,IAAA;AAAA,oCAEH,OAAA,EAAI,WAAW,GAAGC,CAAS,UAAUA,CAAS,UAAUH,CAAI,GAAA,GAC3DA,MAAS,YACT,gBAAAO,EAAA,cAACyI,IAAA,EAAQ,WAAU,iBAAgB,MAAK,KAAI,IAE5C,gBAAAzI,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACA,UAAU,GAAG7B,CAAI,MAAMic,KAAYA,GAAUjc,CAAI,IAAIic,GAAU;AAAA,QAC/D,UAAS;AAAA,MAAA;AAAA,IAAA,CAGZ;AAAA,IACA,gBAAA1b,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,SAAA,GAC3B,gBAAAI,EAAA,cAAC,QAAA,EAAK,WAAU,qBAAmBD,CAAiB,GACpD,gBAAAC,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,UAAA,GAAYie,CAAM,GAC9C,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,YAAA,GAAcgZ,CAAiB,CAC5D;AAAA,EAAA;AAGH,GCzFM8C,KAAiD;AAAA,EACtD,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AACZ,GAiDaqC,KAAiB,CAAC;AAAA,EAC9B,WAAAze;AAAA,EACA,WAAA0e;AAAA,EACA,cAAAjC,IAAe;AAAA,EACf,IAAAjV;AAAA,EACA,eAAAwW;AAAA,EACA,SAAA7V;AAAA,EACA,WAAA8V;AAAA,EACA,OAAAM;AAAA,EACA,MAAApe,IAAO;AAAA,EACP,YAAAC,IAAawM;AAAA,EACb,GAAGvM;AACJ,MAA2B;AAC1B,QAAMse,IAAavS,EAAO,IAAI,GAGxB9L,IAAY,uBACZke,IAAa;AAAA,IAClB,OAAO,GAAGle,CAAS;AAAA,IACnB,SAAS,GAAGA,CAAS;AAAA,IACrB,SAAS,GAAGA,CAAS;AAAA,IACrB,MAAM,GAAGA,CAAS;AAAA,IAClB,UAAU,GAAGA,CAAS;AAAA,IACtB,WAAW,GAAGA,CAAS;AAAA,IACvB,YAAY,GAAGA,CAAS;AAAA,IACxB,WAAW,GAAGA,CAAS;AAAA,EAAA,GAElBse,IAAkBZ,IAAgB,GAAG1d,CAAS,iBAAiB,MAC/Due,IAAgBN,IAAQ,GAAGje,CAAS,eAAe,MAGnD4d,IAAW/d,MAAS,aAAa,UAAU,UAG3CM,IAAmB,GAAGL,EAAWD,CAAI,CAAC,MAGtCmZ,IACL,OAAOnR,KAAY,WAAW,gBAAAzH,EAAA,cAAC,KAAA,MAAGyH,CAAQ,IAAOA,GAG5C2W,IAAkC,MAAM;AAC7C,IAAAH,EAAW,QAAQ,iBAAiB,gBAAgBI,GAAkB;AAAA,MACrE,MAAM;AAAA,IAAA,CACN;AAAA,EACF,GAEMA,IAAmB,CAACna,MAAU;AACnC,IAAAqZ,EAAUrZ,GAAO4C,CAAE;AAAA,EACpB,GAEM4W,IAAgB,MAAM;AAC3B,IAAAU,EAAA,GACAH,EAAW,QAAQ,UAAU,OAAOH,EAAW,UAAU,GAEzD,WAAW,MAAM;AAChB,MAAAG,EAAW,QAAQ,UAAU,OAAOH,EAAW,UAAU,GACzDG,EAAW,QAAQ,UAAU,OAAOH,EAAW,SAAS;AAAA,IACzD,GAAG,GAAG;AAAA,EACP;AAGA,SACC,gBAAA9d,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAKie;AAAA,MACL,WAAW9e,EAAa;AAAA,QACvBS;AAAA,QACAke,EAAWre,CAAI;AAAA,QACfye;AAAA,QACAC;AAAA,QACA7e,KAAa;AAAA,MAAA,CACb;AAAA,MACD,IAAAwH;AAAA,MACA,MAAM0W;AAAA,MACL,GAAG7d;AAAA,IAAA;AAAA,IAEJ,gBAAAK,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,eAC3B,gBAAAI,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,UAAUA,CAAS,UAAUH,CAAI,MAC5D,gBAAAO,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACA,UAAU,GAAG7B,CAAI,MAAMic,KAAYA,GAAUjc,CAAI,IAAIic,GAAU;AAAA,QAC/D,UAAS;AAAA,MAAA;AAAA,IAAA,CAEX,GACA,gBAAA1b,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,SAAA,GAC3B,gBAAAI,EAAA,cAAC,QAAA,EAAK,WAAU,kBAAA,GAAmBD,CAAiB,GACnD8d,KAAS,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,UAAA,GAAYie,CAAM,GACxD,gBAAA7d,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,YAAA,GAAcgZ,CAAiB,CAC5D,CACD;AAAA,KACEoF,KAAaV,MACd,gBAAAtd,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,eAC1Boe,KACA,gBAAAhe,EAAA;AAAA,MAACmJ;AAAA,MAAA;AAAA,QACC,GAAG6U;AAAA,QACJ,WAAW,GAAGpe,CAAS;AAAA,QACvB,MAAK;AAAA,QACL,SAAQ;AAAA,MAAA;AAAA,IAAA,GAGT0d,KACA,gBAAAtd,EAAA;AAAA,MAACiM;AAAA,MAAA;AAAA,QACA,WAAW8P;AAAA,QACX,WAAW,GAAGnc,CAAS;AAAA,QACvB,SAAS8d;AAAA,QACT,MAAK;AAAA,MAAA;AAAA,IAAA,CAGR;AAAA,EAAA;AAIJ,GCjLMhC,KAAY;AAAA,EACjB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AACX,GAIM4C,KAAoB;AAAA,EACzB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AACV,GA+BaC,KAAQ,CAAC;AAAA,EACrB,UAAA3f;AAAA,EACA,WAAAU;AAAA,EACA,IAAAwH;AAAA,EACA,MAAArH,IAAO;AAAA,EACP,YAAAC,IAAa4e;AACd,MAAkB;AAEjB,QAAM1e,IAAY,aACZke,IAAa;AAAA,IAClB,UAAU,GAAGle,CAAS;AAAA,IACtB,MAAM,GAAGA,CAAS;AAAA,IAClB,SAAS,GAAGA,CAAS;AAAA,IACrB,SAAS,GAAGA,CAAS;AAAA,IACrB,SAAS,GAAGA,CAAS;AAAA,EAAA,GAIhB4e,IAAiB,GAAG9e,EAAWD,CAAI,CAAC;AAG1C,SACC,gBAAAO,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWke,EAAWre,CAAI,GAAGH,CAAS,CAAC;AAAA,MAChE,IAAAwH;AAAA,IAAA;AAAA,IAEA,gBAAA9G,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,mBAAA,GAC1BH,MAAS,YACT,gBAAAO,EAAA,cAACyI,IAAA,EAAQ,WAAU,yBAAwB,MAAK,KAAI,IAEpD,gBAAAzI,EAAA;AAAA,MAACsB;AAAA,MAAA;AAAA,QACA,WAAW,GAAG1B,CAAS,UAAUA,CAAS,WAAWH,CAAI;AAAA,QACzD,UAAUic,GAAUjc,CAAI;AAAA,QACxB,UAAS;AAAA,MAAA;AAAA,IAAA,CAGZ;AAAA,IACA,gBAAAO,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,YAAA,GAC3B,gBAAAI,EAAA,cAAC,QAAA,EAAK,WAAU,kBAAA,GAAmBwe,CAAe,GACjD5f,CACF;AAAA,EAAA;AAGH,GChEM6f,KAAmB,CAAC;AAAA,EACzB,WAAArV;AAAA,EACA,YAAAsV;AACD,MACC,gBAAA1e,EAAA;AAAA,EAACiM;AAAA,EAAA;AAAA,IACA,WAAW7C,KAAa;AAAA,IACxB,WAAU;AAAA,IACV,SAAS,MAAMsV,EAAW,IAAI;AAAA,IAC9B,MAAK;AAAA,EAAA;AACN,GAMYC,KAAU,CAAC;AAAA,EACvB,mBAAAC,IAAoB;AAAA,EACpB,WAAAtf;AAAA,EACA,OAAAuf,IAAQ;AAAA,EACR,UAAAC,IAAW;AACZ,MAAoB;AAGnB,QAAMC,IAAiB5f,EAAa,CADlB,eAC8BG,CAAS,CAAC;AAG1D,SACC,gBAAAU,EAAA;AAAA,IAACgf;AAAA,IAAA;AAAA,MACA,aAAW;AAAA,MACX,WAAWJ;AAAA,MACX,WAAWG;AAAA,MACX,aAAaN;AAAA,MACb,WAAW;AAAA,MACX,MAAM;AAAA,MACN,OAAAI;AAAA,MACA,UAAAC;AAAA,MACA,MAAK;AAAA,MACL,YAAYG;AAAA,IAAA;AAAA,EAAA;AAGf;ACpEO,IAAKC,uBAAAA,OACXA,EAAA,WAAW,YACXA,EAAA,OAAO,QACPA,EAAA,UAAU,WACVA,EAAA,UAAU,WACVA,EAAA,UAAU,WALCA,IAAAA,MAAA,CAAA,CAAA;AAQL,MAAMC,KAAW,MAQnB;AACJ,QAAMC,IAAW,CAChB3f,GACAgI,GACAhE,IAAwB,CAAA,MACH;AACrB,UAAM4b,IAA0B,gBAAArf,EAAA,cAACue,IAAA,EAAM,MAAA9e,EAAA,GAAagI,CAAQ;AAE5D,QAAI6X,IAA6B;AAAA,MAChC,GAAG7b;AAAA,IAAA;AAGJ,WAAIhE,MAAS,eACZ6f,IAAe;AAAA,MACd,GAAGA;AAAA,MACH,WAAW;AAAA,MACX,MAAM;AAAA,IAAA,IAIJ7f,MAAS,cACZ6f,IAAe;AAAA,MACd,GAAGA;AAAA,MACH,WAAW;AAAA,IAAA,IAIT7f,MAAS,cACZ6f,IAAe;AAAA,MACd,GAAGA;AAAA,MACH,WAAW;AAAA,MACX,aAAa;AAAA,MACb,cAAc;AAAA,IAAA,IAITC,GAASF,GAAcC,CAAY;AAAA,EAC3C,GAEME,IAAoBC,GAAc;AAAA,IACvC,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EAAA,CACN;AAED,SAAO,CAACL,GAAUG,IAAUC,CAAiB;AAC9C,GC9BaE,KAAW,CAAC;AAAA,EACxB,UAAA9gB;AAAA,EACA,WAAAU;AAAA,EACA,uBAAAqgB;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,GAAGjgB;AACJ,MAAqB;AAEpB,QAAMC,IAAY,iBACZ,CAACigB,GAAYC,CAAa,IAAIld,EAAS,EAAK,GAC5Cmd,IAAQrU,EAAsB,IAAI,GAClCsU,IAAatU,EAAuB,IAAI,GAGxC7M,IAAQF,GAAcC,CAAQ,GAG9BqhB,IAAgBphB,EAAM,YAAY,GAClCqhB,IAAiBrhB,EAAM,aAAa,GACpCshB,IAAiBthB,EAAM,aAAa,GAEpCmU,IAAe,MAAM;AAC1B,UAAM1O,IAAU0b,EAAW,SACrBI,IAAKL,EAAM;AACjB,QAAI,CAACzb,KAAW,CAAC8b,EAAI;AAErB,UAAMC,IAAc,CAACR;AACrB,IAAAC,EAAcO,CAAW,GAErBA,KACH,OAAO,OAAO/b,EAAQ,OAAO;AAAA,MAC5B,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA,CACT,GACD8b,EAAG,UAAU,IAAI,aAAa,MAE9B,OAAO,OAAO9b,EAAQ,OAAO;AAAA,MAC5B,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,IAAA,CACT,GACD8b,EAAG,UAAU,OAAO,aAAa;AAAA,EAEnC;AAGA,SACC,gBAAApgB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWN,KAAa,EAAE,CAAC;AAAA,MACnD,GAAGK;AAAA,MACJ,KAAKogB;AAAA,IAAA;AAAA,IAEL,gBAAA/f,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWb,EAAa;AAAA,UACvB,GAAGS,CAAS;AAAA,UACZggB,IAAe,kBAAkB;AAAA,QAAA,CACjC;AAAA,MAAA;AAAA,MAEAK,qCACC,OAAA,EAAI,WAAW,GAAGrgB,CAAS,WAAWA,CAAS,gBAAA,GAC9CqgB,CACF;AAAA,MAEAC,qCACC,OAAA,EAAI,WAAW,GAAGtgB,CAAS,WAAWA,CAAS,iBAAA,GAC9CsgB,CACF;AAAA,MAEAN,KACA,gBAAA5f,EAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,iBAAe6f;AAAA,UACf,cAAYF;AAAA,UACZ,WAAW,GAAG/f,CAAS;AAAA,UACvB,SAASoT;AAAA,QAAA;AAAA,QAET,gBAAAhT,EAAA;AAAA,UAACsB;AAAA,UAAA;AAAA,YACA,WAAW,GAAG1B,CAAS,iBAAiBigB,IAAa,YAAY,EAAE;AAAA,YACnE,UAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MACV;AAAA,IACD;AAAA,IAGDD,KAAgBO,KAChB,gBAAAngB,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,KAAKggB;AAAA,QACL,WAAW,GAAGpgB,CAAS,WAAWA,CAAS;AAAA,QAC3C,OAAO,EAAE,SAAS,QAAQ,QAAQ,KAAK,SAAS,IAAA;AAAA,MAAI;AAAA,sCAEnD,OAAA,EAAI,WAAW,GAAGA,CAAS,oBAAmBugB,CAAe;AAAA,IAAA;AAAA,EAC/D;AAIJ,GC3FaG,KAAU,CAAC;AAAA,EACvB,KAAAC,IAAM;AAAA,EACN,WAAAjhB;AAAA,EACA,QAAAkhB;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGhhB;AACJ,MAAoB;AAEnB,QAAMC,IAAY;AAGlB,yCACE,WAAA,EAAQ,WAAWT,EAAa,CAACS,GAAWN,KAAa,EAAE,CAAC,EAAA,mCAC3D,UAAA,EAAO,QAAQohB,GAAS,MAAK,cAAa,GAC3C,gBAAA1gB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAAugB;AAAA,MACA,WAAW,GAAG3gB,CAAS;AAAA,MACvB,QAAA4gB;AAAA,MACA,KAAKC;AAAA,MACL,OAAAE;AAAA,MACC,GAAGhhB;AAAA,IAAA;AAAA,EAAA,CAEN;AAEF,GCnCaihB,KAAa,CAAC;AAAA,EAC1B,WAAAthB;AAAA,EACA,UAAA8V;AAAA,EACA,SAAAyL;AAAA,EACA,YAAAC;AAAA,EACA,GAAGnhB;AACJ,MAAuB;AAEtB,QAAMC,IAAY,mBAEZmhB,IACL,gBAAA/gB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,OAAM;AAAA,MACN,KAAK,wCAAwC6gB,CAAO;AAAA,MACpD,OAAO,sBAAsBC,IAAa,KAAKA,CAAU,KAAK,EAAE;AAAA,IAAA;AAAA,EAAA,GAI5DE,IACL,gBAAAhhB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,OAAM;AAAA,MACN,KAAK,kCAAkC6gB,CAAO;AAAA,MAC9C,OAAO,qBAAqBC,IAAa,KAAKA,CAAU,KAAK,EAAE;AAAA,IAAA;AAAA,EAAA,GAI3DG,IACL,gBAAAjhB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,iBAAe;AAAA,MACf,OAAM;AAAA,MACN,gBAAe;AAAA,MACf,KAAK,iCAAiC6gB,CAAO;AAAA,MAC7C,OAAO,uBAAuBC,IAAa,KAAKA,CAAU,KAAK,EAAE;AAAA,IAAA;AAAA,EAAA;AAInE,MAAII;AACJ,UAAQ9L,GAAA;AAAA,IACP,KAAK;AACJ,MAAA8L,IAAgBF;AAChB;AAAA,IACD,KAAK;AACJ,MAAAE,IAAgBH;AAChB;AAAA,IACD,KAAK;AAAA,IACL;AACC,MAAAG,IAAgBD;AAChB;AAAA,EAAA;AAIF,SACC,gBAAAjhB,EAAA,cAAC,OAAA,EAAI,WAAWb,EAAa,CAACS,GAAWN,KAAa,EAAE,CAAC,GAAI,GAAGK,EAAA,GAC9DuhB,CACF;AAEF,GChDaC,KAAc,CAAC;AAAA,EAC3B,WAAA7hB;AAAA,EACA,OAAA8hB,IAAQ;AAAA,EACR,oBAAAC,IAAqB;AAAA,EACrB,OAAA9hB;AAAA,EACA,qBAAA+hB,IAAsB;AAAA,EACtB,YAAAC;AAAA,EACA,GAAG5hB;AACJ,MAAwB;AAEvB,QAAMC,IAAY,oBACZC,IAAa,GAAGD,CAAS,KAAKwhB,CAAK,IACnCxZ,IAAc,GAAGhI,CAAS,YAC1B4hB,IAAiBD,IAAa,GAAG3Z,CAAW,KAAK2Z,CAAU,KAAK;AAGtE,SACC,gBAAAvhB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWC,GAAYP,KAAa,EAAE,CAAC;AAAA,MAC/D,GAAGK;AAAA,IAAA;AAAA,IAEH0hB,MAAuB,MACvB,gBAAArhB,EAAA,cAAC,UAAK,WAAWb,EAAa,CAACyI,GAAa4Z,CAAc,CAAC,KACzDD,qCACC,QAAA,EAAK,WAAU,qBACdD,GAAoB,KAAEC,CACxB,CAEF;AAAA,oCAEA,QAAA,EAAK,WAAW,GAAG3hB,CAAS,aAAYL,CAAM;AAAA,EAAA;AAGlD,GCnBakiB,KAAoB,CAAC;AAAA,EACjC,WAAAniB;AAAA,EACA,QAAAoiB;AAAA,EACA,GAAG/hB;AACJ,MAA8B;AAE7B,QAAMC,IAAY,2BAEZ+hB,IAAWD,EAAO,OAAOhV,GAAagV,EAAO,IAAI,IAAI,QAGrDE,IAAYlW,EAA8B,IAAI,GAC9C,CAAC+L,CAAI,IAAIoK,GAAWD,CAAS,GAG7BE,IAAgBrK,EAAK,QAAQ,KAAK;AAGxC,MAAIsK,GACAC;AACJ,EAAIN,EAAO,WAAW,aACrBK,IAAkB,UAClBC,IAA0B,YAEvBN,EAAO,WAAW,aACrBK,IAAkB,UAClBC,IAA0B,WAEvBN,EAAO,WAAW,iBACrBK,IAAkB,cAClBC,IAA0B;AAE3B,QAAMC,IACL,gBAAAjiB,EAAA;AAAA,IAACmhB;AAAA,IAAA;AAAA,MACA,oBAAkB;AAAA,MAClB,OAAOY;AAAA,MACP,YAAYC;AAAA,IAAA;AAAA,EAAA;AAId,SACC,gBAAAhiB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,KAAK4hB;AAAA,MACL,WAAWziB,EAAa,CAACS,GAAWN,KAAa,EAAE,CAAC;AAAA,MACpD,OAAOoiB,EAAO;AAAA,MACb,GAAG/hB;AAAA,IAAA;AAAA,IAEJ,gBAAAK,EAAA,cAAC,SAAI,WAAW,GAAGJ,CAAS,WAAW,OAAO,EAAE,eAAe,OAAA,EAAO,mCACpE,OAAA,EAAI,WAAW,GAAGA,CAAS,SAAA,mCAC1B0B,GAAA,EAAK,UAAUqgB,EAAA,CAAU,CAC3B,GACA,gBAAA3hB,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAW,GAAGJ,CAAS;AAAA,QACvB,OAAO,EAAE,UAAU,GAAGkiB,CAAa,MAAA;AAAA,MAAM;AAAA,MAExCJ,EAAO;AAAA,IAAA,CAEV;AAAA,IACA,gBAAA1hB,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,YAAY,OAAO,EAAE,eAAe,OAAA,EAAO,GACrEqiB,CACF;AAAA,EAAA;AAGH,GCzFaC,KAAY,CAAC;AAAA,EACzB,UAAAtjB;AAAA,EACA,WAAAU;AAAA,EACA,OAAAqhB,IAAQ;AAAA,EACR,GAAGhhB;AACJ,MAAsB;AAErB,QAAMC,IAAY,iBACZuiB,IAAaxB,MAAU,aAAa,GAAG/gB,CAAS,KAAK+gB,CAAK,KAAK;AAGrE,SACC,gBAAA3gB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa,CAACS,GAAWuiB,GAAY7iB,KAAa,EAAE,CAAC;AAAA,MAC/D,GAAGK;AAAA,IAAA;AAAA,IAEHf;AAAA,EAAA;AAGJ,GCZawjB,KAAa,CAAC;AAAA,EAC1B,UAAAxjB;AAAA,EACA,WAAAU;AAAA,EACA,iBAAA+iB,IAAkB;AAAA,EAClB,cAAAC,IAAe;AAAA,EACf,GAAG3iB;AACJ,MAAuB;AAEtB,MAAIwN,IAAW;AAGf,QAAMW,IAAoBC,GAAWf,EAAiB;AAGtD,EAAIc,MACHX,IAAWW,EAAkB;AAI9B,QAAMlO,IAAY,mBACZqO,IAAcd,IAAW,GAAGvN,CAAS,eAAe,MAGpD2iB,IAAgB;AAAA,IACrB,OAAOD;AAAA,IACP,UAAU,GAAGD,CAAe;AAAA,EAAA,GAIvBxjB,IAAQF,GAAcC,CAAQ,GAG9B4jB,IAAc3jB,EAAM,eAAkBA,EAAM,SAC5C4jB,IAAiB5jB,EAAM,SAGvB6jB,IACL,gBAAA1iB,EAAA,cAAAA,EAAA,UAAA,MACEyiB,qCACC,SAAA,EAAM,WAAW,GAAG7iB,CAAS,YAAA,GAAc6iB,CAAe,mCAE3D,OAAA,EAAI,WAAW,GAAG7iB,CAAS,YAAA,GAAc4iB,CAAY,CACvD,GAIKG,IACL,gBAAA3iB,EAAA,cAAAA,EAAA,UAAA,MACEyiB,KACA,gBAAAziB,EAAA,cAAC,SAAA,EAAM,WAAW,GAAGJ,CAAS,aAAa,OAAO2iB,EAAA,GACjD,gBAAAviB,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,kBAAA,GAAoB6iB,CAAe,CAChE,GAED,gBAAAziB,EAAA,cAAC,OAAA,EAAI,WAAW,GAAGJ,CAAS,YAAA,GAAc4iB,CAAY,CACvD;AAID,SACC,gBAAAxiB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa;AAAA,QACvBS;AAAA,QACAqO;AAAA,QACA;AAAA,QACA3O,KAAa;AAAA,MAAA,CACb;AAAA,MACA,GAAGK;AAAA,IAAA;AAAA,IAEHwN,IAAWuV,IAAgBC;AAAA,EAAA;AAG/B,GCLaC,KAAgB,CAAC;AAAA,EAC7B,cAAAC,IAAe;AAAA,EACf,YAAAC,IAAa;AAAA,EACb,UAAAlkB;AAAA,EACA,WAAAU;AAAA,EACA,eAAAyjB,IAAgB;AAAA,EAChB,UAAAC,IAAW;AAAA,EACX,KAAAC,IAAM;AAAA,EACN,gBAAAC,IAAiB;AAAA,EACjB,oBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,qBAAAC,IAAsB;AAAA,EACtB,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,GAAG7jB;AACJ,MAA0B;AAKzB,MAAIwN,IAHgBR,GAAA,KAGU;AAG9B,QAAMmB,IAAoBC,GAAWf,EAAiB;AACtD,EAAIc,MACHX,IAAWW,EAAkB;AAI9B,QAAMlO,IAAY,YACZ6jB,IAAiB,GAAG7jB,CAAS,cAC7BqO,IAAcd,IAAW,GAAGsW,CAAc,aAAa;AAE7D,MAAIC,IAAqB;AACzB,EAAIvW,IACHuW,IAAqB,GAAG9jB,CAAS,eAAeyjB,CAAmB,KAE/DN,MAAkB,UACrBW,IAAqB,GAAG9jB,CAAS,eAAemjB,CAAa;AAI/D,MAAIY,IAAgB;AACpB,EAAIxW,IAECmW,IACCA,MAAmB,aACtBK,IAAgB,GAAG/jB,CAAS,UAAU0jB,CAAc,MAIjDN,MAAa,aAChBW,IAAgB,GAAG/jB,CAAS,UAAUojB,CAAQ,MAI5CA,MAAa,aAChBW,IAAgB,GAAG/jB,CAAS,UAAUojB,CAAQ;AAIhD,MAAIY,IAAsB;AAC1B,EAAIzW,IAECqW,IACCA,MAAyB,iBAC5BI,IAAsB,GAAGhkB,CAAS,aAAa4jB,CAAoB,MAIhEN,MAAmB,iBACtBU,IAAsB,GAAGhkB,CAAS,aAAasjB,CAAc,MAI3DA,MAAmB,iBACtBU,IAAsB,GAAGhkB,CAAS,aAAasjB,CAAc;AAI/D,MAAIW,IAAkB;AACtB,EAAI1W,IAECiW,IACCA,MAAqB,cACxBS,IAAkB,GAAGjkB,CAAS,iBAAiBwjB,CAAgB,MAI5DN,MAAe,cAClBe,IAAkB,GAAGjkB,CAAS,iBAAiBkjB,CAAU,MAIvDA,MAAe,cAClBe,IAAkB,GAAGjkB,CAAS,iBAAiBkjB,CAAU;AAI3D,MAAIgB,IAAoB;AACxB,EAAI3W,IAECgW,IACCA,MAAuB,iBAC1BW,IAAoB,GAAGlkB,CAAS,mBAAmBujB,CAAkB,MAIlEN,MAAiB,iBACpBiB,IAAoB,GAAGlkB,CAAS,mBAAmBijB,CAAY,MAI7DA,MAAiB,iBACpBiB,IAAoB,GAAGlkB,CAAS,mBAAmBijB,CAAY;AAIjE,MAAIkB,IAAW;AACf,SAAI5W,IAECoW,IACCA,MAAc,WACjBQ,IAAW,GAAGnkB,CAAS,SAAS2jB,CAAS,MAItCN,MAAQ,WACXc,IAAW,GAAGnkB,CAAS,SAASqjB,CAAG,MAIjCA,MAAQ,WACXc,IAAW,GAAGnkB,CAAS,SAASqjB,CAAG,KAMpC,gBAAAjjB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa;AAAA,QACvBskB;AAAA,QACAxV;AAAA,QACAyV;AAAA,QACAC;AAAA,QACAC;AAAA,QACAC;AAAA,QACAC;AAAA,QACAC;AAAA,QACAzkB,KAAa;AAAA,MAAA,CACb;AAAA,MACA,GAAGK;AAAA,IAAA;AAAA,IAEHf;AAAA,EAAA;AAGJ,GC5OaolB,KAAgB,CAAC;AAAA,EAC7B,UAAAplB;AAAA,EACA,oBAAAsO,IAAqB;AACtB,sCAEGD,IAAA,EAA0B,oBAAAC,EAAA,GAC1B,gBAAAlN,EAAA,cAACyC,IAAA,MAAwB7D,CAAS,CACnC,GCIWqlB,KAAkB,CAAC;AAAA,EAC/B,UAAArlB;AAAA,EACA,WAAAU;AAAA,EACA,SAAA4kB,IAAU;AAAA,EACV,eAAAviB,IAAgB;AAAA,EAChB,GAAGhC;AACJ,MAA0B;AAEzB,QAAMC,IAAY,yBACZukB,IACLD,MAAY,aAAa,aAAa,sBAAsBA,CAAO,IAC9DE,IAAiB,GAAGxkB,CAAS,KAAK+B,CAAa,IAG/C9C,IAAQF,GAAcC,CAAQ,GAE9BylB,IAAU;AAAA,IACfxlB,EAAM,YAAY;AAAA,IAClBA,EAAM,aAAa;AAAA,IACnBA,EAAM,YAAY;AAAA,EAAA;AAInB,SACC,gBAAAmB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa;AAAA,QACvBS;AAAA,QACAukB;AAAA,QACAC;AAAA,QACA9kB;AAAA,MAAA,CACA;AAAA,MACA,GAAGK;AAAA,IAAA;AAAA,IAEH0kB,EAAQ,IAAI,CAACC,GAAQnQ,MACrB,gBAAAnU,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,KAAKmU;AAAA,QACL,WAAU;AAAA,MAAA;AAAA,MAETmQ;AAAA,IAAA,CAEF;AAAA,EAAA;AAGJ,GCvCaC,KAAgB,CAAC;AAAA,EAC7B,UAAA3lB;AAAA,EACA,WAAAU;AAAA,EACA,SAAA4kB,IAAU;AAAA,EACV,eAAAM,IAAgB;AAAA,EAChB,eAAA7iB,IAAgB;AAAA,EAChB,GAAGhC;AACJ,MAA0B;AAEzB,QAAMC,IAAY,uBACZukB,IACLD,MAAY,aAAa,aAAa,sBAAsBA,CAAO,IAC9DE,IAAiB,GAAGxkB,CAAS,KAAK+B,CAAa,IAG/C8iB,IAAc,CAAC,qBAAqB,GACpCC,IAAkB,CAAC,uBAAuB,qBAAqB,GAC/DC,IAAmB,CAAC,uBAAuB,qBAAqB,GAGhEC,IAAkB,CAAC,iBAAiB,qBAAqB;AAQ/D,MAAIC,GACAC;AAGJ,UAAQN,GAAA;AAAA,IACP,KAAK;AACJ,MAAAK,IAAmBD,EAAgB,OAAOH,CAAW,GACrDK,IAAoBF,EAAgB,OAAOH,CAAW;AACtD;AAAA,IACD,KAAK;AACJ,MAAAI,IAAmBD,EAAgB,OAAOF,CAAe,GACzDI,IAAoBF,EAAgB,OAAOD,CAAgB;AAC3D;AAAA,IACD,KAAK;AACJ,MAAAE,IAAmBD,EAAgB,OAAOD,CAAgB,GAC1DG,IAAoBF,EAAgB,OAAOF,CAAe;AAAA,EAAA;AAI5D,QAAM7lB,IAAQF,GAAcC,CAAQ,GAG9BmmB,IAAmBlmB,EAAM,YAAY,GACrCmmB,IAAoBnmB,EAAM,aAAa;AAE7C,SACC,gBAAAmB,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWb,EAAa;AAAA,QACvBS;AAAA,QACAukB;AAAA,QACAC;AAAA,QACA9kB;AAAA,MAAA,CACA;AAAA,MACA,GAAGK;AAAA,IAAA;AAAA,IAEJ,gBAAAK,EAAA,cAAC,SAAI,WAAW6kB,EAAiB,KAAK,GAAG,EAAE,KAAA,EAAK,GAC9CE,CACF;AAAA,IACA,gBAAA/kB,EAAA,cAAC,SAAI,WAAW8kB,EAAkB,KAAK,GAAG,EAAE,KAAA,EAAK,GAC/CE,CACF;AAAA,EAAA;AAGH,GCnFaC,KAAgB,MAAkB;AAC9C,QAAMrY,IAAY,OAAO,SAAW,KAE9BsY,IAAgB,CAACvE,MAClBA,KAAStgB,KAAc,OACvBsgB,KAASvgB,KAAa,OACtBugB,KAASxgB,KAAa,OACnB,MAGF,CAACglB,GAAYC,CAAa,IAAIxiB;AAAA,IACnCgK,IAAYsY,EAAc,OAAO,UAAU,IAAI;AAAA,EAAA;AAGhD,SAAAhiB,GAAU,MAAM;AACf,QAAI,CAAC0J,EAAW;AAEhB,UAAMG,IAAe,MAAM;AAC1B,MAAAqY,EAAcF,EAAc,OAAO,UAAU,CAAC;AAAA,IAC/C;AAGA,WAAAnY,EAAA,GAEA,OAAO,iBAAiB,UAAUA,CAAY,GAEvC,MAAM;AACZ,aAAO,oBAAoB,UAAUA,CAAY;AAAA,IAClD;AAAA,EACD,GAAG,CAAA,CAAE,GAEEoY;AACR,GCvCaE,KAAgB,CAACC,MAA2B;AACxD,QAAM1Y,IAAY,OAAO,SAAW,KAE9B2Y,IAAa,CAACC,MACd5Y,IACE,OAAO,WAAW4Y,CAAU,EAAE,UADd,IAIlB,CAACC,GAASC,CAAU,IAAI9iB,EAAkB2iB,EAAWD,CAAK,CAAC;AAEjE,SAAApiB,GAAU,MAAM;AACf,QAAI,CAAC0J,EAAW;AAEhB,UAAM+Y,IAAiB,OAAO,WAAWL,CAAK,GACxCM,IAAe,MAAM;AAC1B,MAAAF,EAAWC,EAAe,OAAO;AAAA,IAClC;AAMA,WAHAD,EAAWC,EAAe,OAAO,GAG7BA,EAAe,oBAClBA,EAAe,iBAAiB,UAAUC,CAAY,GAC/C,MAAMD,EAAe,oBAAoB,UAAUC,CAAY,MAGtED,EAAe,YAAYC,CAAY,GAChC,MAAMD,EAAe,eAAeC,CAAY;AAAA,EAEzD,GAAG,CAACN,CAAK,CAAC,GAEHG;AACR;","x_google_ignoreList":[3,7]}