@infonomic/uikit 1.5.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/dist/components/button/button-group.d.ts +1 -1
  2. package/dist/components/button/button-group.d.ts.map +1 -1
  3. package/dist/components/button/button-group.js +1 -1
  4. package/dist/components/button/button.d.ts.map +1 -1
  5. package/dist/components/button/button.js +1 -1
  6. package/dist/components/button/control-buttons.d.ts.map +1 -1
  7. package/dist/components/button/control-buttons.js +3 -3
  8. package/dist/components/button/copy-button.d.ts.map +1 -1
  9. package/dist/components/button/copy-button.js +2 -2
  10. package/dist/components/button/icon-button.d.ts.map +1 -1
  11. package/dist/components/button/icon-button.js +1 -1
  12. package/dist/components/button/index.js +17 -1
  13. package/dist/components/card/card.d.ts.map +1 -1
  14. package/dist/components/dropdown/dropdown.d.ts +1 -1
  15. package/dist/components/dropdown/dropdown.d.ts.map +1 -1
  16. package/dist/components/input/checkbox.d.ts.map +1 -1
  17. package/dist/components/input/checkbox.js +4 -4
  18. package/dist/components/input/error-text.d.ts.map +1 -1
  19. package/dist/components/input/error-text.js +1 -1
  20. package/dist/components/input/help-text.d.ts.map +1 -1
  21. package/dist/components/input/help-text.js +1 -1
  22. package/dist/components/input/input-adornment.d.ts.map +1 -1
  23. package/dist/components/input/input-adornment.js +1 -1
  24. package/dist/components/input/input.d.ts.map +1 -1
  25. package/dist/components/input/input.js +3 -3
  26. package/dist/components/input/label.d.ts.map +1 -1
  27. package/dist/components/input/label.js +1 -1
  28. package/dist/components/input/radio-group.js +1 -1
  29. package/dist/components/input/select.d.ts +1 -1
  30. package/dist/components/input/select.d.ts.map +1 -1
  31. package/dist/components/input/select.js +3 -3
  32. package/dist/components/input/text-area.d.ts.map +1 -1
  33. package/dist/components/input/text-area.js +3 -3
  34. package/dist/components/notifications/alert.d.ts.map +1 -1
  35. package/dist/components/notifications/alert.js +2 -2
  36. package/dist/components/notifications/toast.js +4 -4
  37. package/dist/components/pager/ellipses.d.ts.map +1 -1
  38. package/dist/components/pager/ellipses.js +1 -1
  39. package/dist/components/pager/first-button.d.ts.map +1 -1
  40. package/dist/components/pager/first-button.js +2 -2
  41. package/dist/components/pager/last-button.d.ts.map +1 -1
  42. package/dist/components/pager/last-button.js +2 -2
  43. package/dist/components/pager/next-button.d.ts.map +1 -1
  44. package/dist/components/pager/next-button.js +2 -2
  45. package/dist/components/pager/number-button.d.ts.map +1 -1
  46. package/dist/components/pager/number-button.js +2 -2
  47. package/dist/components/pager/pagination.d.ts +1 -1
  48. package/dist/components/pager/pagination.d.ts.map +1 -1
  49. package/dist/components/pager/pagination.js +5 -5
  50. package/dist/components/pager/previous-button.d.ts.map +1 -1
  51. package/dist/components/pager/previous-button.js +2 -2
  52. package/dist/components/scroll-area/scroll-area.js +1 -1
  53. package/dist/components/table/table.d.ts.map +1 -1
  54. package/dist/components/table/table.js +2 -2
  55. package/dist/components/tabs/tabs.d.ts +1 -1
  56. package/dist/components/tabs/tabs.d.ts.map +1 -1
  57. package/dist/components/tabs/tabs.js +1 -1
  58. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  59. package/dist/icons/index.js +1 -17
  60. package/package.json +9 -5
  61. package/src/astro.d.ts +43 -0
  62. package/src/astro.js +2 -2
  63. package/src/components/@types/shared.ts +24 -0
  64. package/src/components/accordion/accordion.module.css +60 -0
  65. package/src/components/accordion/accordion.stories.tsx +117 -0
  66. package/src/components/accordion/accordion.tsx +105 -0
  67. package/src/components/animation/fade-in-lift.stories.tsx +81 -0
  68. package/src/components/animation/fade-in-lift.tsx +42 -0
  69. package/src/components/avatar/avatar.module.css +54 -0
  70. package/src/components/avatar/avatar.stories.tsx +28 -0
  71. package/src/components/avatar/avatar.tsx +19 -0
  72. package/src/components/button/@types/button.ts +17 -0
  73. package/src/components/button/button-group.module.css +17 -0
  74. package/src/components/button/button-group.stories.tsx +45 -0
  75. package/src/components/button/button-group.tsx +132 -0
  76. package/src/components/button/button-icon.stories.tsx +145 -0
  77. package/src/components/button/button-intents.stories.tsx +50 -0
  78. package/src/components/button/button-variants.stories.tsx +60 -0
  79. package/src/components/button/button.astro +86 -0
  80. package/src/components/button/button.module.css +533 -0
  81. package/src/components/button/button.tsx +81 -0
  82. package/src/components/button/control-buttons.module.css +144 -0
  83. package/src/components/button/control-buttons.stories.tsx +60 -0
  84. package/src/components/button/control-buttons.tsx +137 -0
  85. package/src/components/button/copy-button.module.css +31 -0
  86. package/src/components/button/copy-button.stories.tsx +50 -0
  87. package/src/components/button/copy-button.tsx +92 -0
  88. package/src/components/button/icon-button.astro +47 -0
  89. package/src/components/button/icon-button.tsx +44 -0
  90. package/src/components/button/index.ts +5 -0
  91. package/src/components/calendar/calendar.module.css +315 -0
  92. package/src/components/calendar/calendar.stories.tsx +139 -0
  93. package/src/components/calendar/calendar.tsx +173 -0
  94. package/src/components/card/card-content.astro +14 -0
  95. package/src/components/card/card-description.astro +14 -0
  96. package/src/components/card/card-footer.astro +14 -0
  97. package/src/components/card/card-header.astro +14 -0
  98. package/src/components/card/card-title.astro +14 -0
  99. package/src/components/card/card.astro +41 -0
  100. package/src/components/card/card.module.css +67 -0
  101. package/src/components/card/card.stories.tsx +61 -0
  102. package/src/components/card/card.tsx +86 -0
  103. package/src/components/container/container.astro +13 -0
  104. package/src/components/container/container.module.css +28 -0
  105. package/src/components/container/container.stories.tsx +42 -0
  106. package/src/components/container/container.tsx +23 -0
  107. package/src/components/dropdown/dropdown.module.css +131 -0
  108. package/src/components/dropdown/dropdown.stories.tsx +103 -0
  109. package/src/components/dropdown/dropdown.tsx +193 -0
  110. package/src/components/hamburger/hamburger.astro +30 -0
  111. package/src/components/hamburger/hamburger.tsx +66 -0
  112. package/src/components/input/@types/checkbox.ts +20 -0
  113. package/src/components/input/@types/input.ts +20 -0
  114. package/src/components/input/checkbox-group.tsx +78 -0
  115. package/src/components/input/checkbox.module.css +267 -0
  116. package/src/components/input/checkbox.stories.tsx +240 -0
  117. package/src/components/input/checkbox.tsx +95 -0
  118. package/src/components/input/error-text.astro +14 -0
  119. package/src/components/input/error-text.module.css +19 -0
  120. package/src/components/input/error-text.tsx +18 -0
  121. package/src/components/input/errors.tsx +37 -0
  122. package/src/components/input/help-text.astro +13 -0
  123. package/src/components/input/help-text.module.css +19 -0
  124. package/src/components/input/help-text.tsx +13 -0
  125. package/src/components/input/index.tsx +8 -0
  126. package/src/components/input/input-adornment.astro +26 -0
  127. package/src/components/input/input-adornment.module.css +18 -0
  128. package/src/components/input/input-adornment.tsx +36 -0
  129. package/src/components/input/input.astro +99 -0
  130. package/src/components/input/input.module.css +310 -0
  131. package/src/components/input/input.stories.tsx +174 -0
  132. package/src/components/input/input.tsx +103 -0
  133. package/src/components/input/label.astro +24 -0
  134. package/src/components/input/label.module.css +28 -0
  135. package/src/components/input/label.tsx +25 -0
  136. package/src/components/input/radio-group.module.css +219 -0
  137. package/src/components/input/radio-group.stories.tsx +73 -0
  138. package/src/components/input/radio-group.tsx +67 -0
  139. package/src/components/input/select.module.css +75 -0
  140. package/src/components/input/select.stories.tsx +34 -0
  141. package/src/components/input/select.tsx +115 -0
  142. package/src/components/input/text-area.module.css +9 -0
  143. package/src/components/input/text-area.stories.tsx +51 -0
  144. package/src/components/input/text-area.tsx +81 -0
  145. package/src/components/input/utils.ts +21 -0
  146. package/src/components/notifications/@types/alert.ts +12 -0
  147. package/src/components/notifications/@types/toast.ts +12 -0
  148. package/src/components/notifications/alert.module.css +114 -0
  149. package/src/components/notifications/alert.stories.tsx +39 -0
  150. package/src/components/notifications/alert.tsx +117 -0
  151. package/src/components/notifications/index.ts +2 -0
  152. package/src/components/notifications/toast.module.css +237 -0
  153. package/src/components/notifications/toast.stories.tsx +42 -0
  154. package/src/components/notifications/toast.tsx +124 -0
  155. package/src/components/overlay/index.stories.tsx +29 -0
  156. package/src/components/overlay/index.ts +2 -0
  157. package/src/components/overlay/overlay.module.css +41 -0
  158. package/src/components/overlay/overlay.tsx +61 -0
  159. package/src/components/pager/@types/index.ts +2 -0
  160. package/src/components/pager/ellipses.tsx +18 -0
  161. package/src/components/pager/event-pager.tsx +18 -0
  162. package/src/components/pager/first-button.tsx +53 -0
  163. package/src/components/pager/hooks/types/usePagination.ts +80 -0
  164. package/src/components/pager/hooks/usePagination.ts +140 -0
  165. package/src/components/pager/icons/first.tsx +33 -0
  166. package/src/components/pager/icons/index.tsx +4 -0
  167. package/src/components/pager/icons/last.tsx +33 -0
  168. package/src/components/pager/icons/next.tsx +20 -0
  169. package/src/components/pager/icons/previous.tsx +20 -0
  170. package/src/components/pager/index.ts +4 -0
  171. package/src/components/pager/last-button.tsx +57 -0
  172. package/src/components/pager/next-button.tsx +55 -0
  173. package/src/components/pager/number-button.tsx +83 -0
  174. package/src/components/pager/pagination.module.css +165 -0
  175. package/src/components/pager/pagination.stories.tsx +190 -0
  176. package/src/components/pager/pagination.tsx +266 -0
  177. package/src/components/pager/previous-button.tsx +51 -0
  178. package/src/components/scroll-area/scroll-area.module.css +80 -0
  179. package/src/components/scroll-area/scroll-area.stories.tsx +33 -0
  180. package/src/components/scroll-area/scroll-area.tsx +22 -0
  181. package/src/components/scroll-to-top/scroll-to-top.tsx +59 -0
  182. package/src/components/section/section.astro +13 -0
  183. package/src/components/section/section.module.css +7 -0
  184. package/src/components/section/section.tsx +23 -0
  185. package/src/components/shimmer/shimmer.module.css +53 -0
  186. package/src/components/shimmer/shimmer.stories.tsx +24 -0
  187. package/src/components/shimmer/shimmer.tsx +70 -0
  188. package/src/components/table/table.module.css +100 -0
  189. package/src/components/table/table.stories.tsx +95 -0
  190. package/src/components/table/table.tsx +165 -0
  191. package/src/components/tabs/tabs.module.css +64 -0
  192. package/src/components/tabs/tabs.stories.tsx +47 -0
  193. package/src/components/tabs/tabs.tsx +75 -0
  194. package/src/components/timeline/timeline.module.css +87 -0
  195. package/src/components/timeline/timeline.stories.tsx +50 -0
  196. package/src/components/timeline/timeline.tsx +177 -0
  197. package/src/components/tooltip/tooltip.module.css +55 -0
  198. package/src/components/tooltip/tooltip.stories.tsx +59 -0
  199. package/src/components/tooltip/tooltip.tsx +51 -0
  200. package/src/declarations.d.ts +4 -0
  201. package/src/hooks/use-media-query.ts +20 -0
  202. package/src/icons/activity-icon.tsx +40 -0
  203. package/src/icons/calendar-icon.tsx +39 -0
  204. package/src/icons/check-icon.tsx +33 -0
  205. package/src/icons/chevron-down-icon.tsx +39 -0
  206. package/src/icons/chevron-left-double-icon.tsx +58 -0
  207. package/src/icons/chevron-left-icon.tsx +58 -0
  208. package/src/icons/chevron-right-double-icon.tsx +58 -0
  209. package/src/icons/chevron-right-icon.tsx +58 -0
  210. package/src/icons/chevrons-up-down.tsx +37 -0
  211. package/src/icons/close-icon.astro +38 -0
  212. package/src/icons/close-icon.tsx +30 -0
  213. package/src/icons/copy-icon.tsx +35 -0
  214. package/src/icons/danger-icon.tsx +18 -0
  215. package/src/icons/dashboard-icon.tsx +41 -0
  216. package/src/icons/delete-icon.tsx +34 -0
  217. package/src/icons/document-icon.tsx +38 -0
  218. package/src/icons/download-icon.tsx +39 -0
  219. package/src/icons/edit-icon.tsx +35 -0
  220. package/src/icons/ellipsis-icon.tsx +38 -0
  221. package/src/icons/email-icon.tsx +33 -0
  222. package/src/icons/external-link-icon.tsx +39 -0
  223. package/src/icons/github-icon.tsx +27 -0
  224. package/src/icons/globe-icon.tsx +50 -0
  225. package/src/icons/google-icon.tsx +44 -0
  226. package/src/icons/gripper-vertical-icon.tsx +43 -0
  227. package/src/icons/history-icon.tsx +32 -0
  228. package/src/icons/home-icon.tsx +34 -0
  229. package/src/icons/icon-element.astro +27 -0
  230. package/src/icons/icon-element.tsx +32 -0
  231. package/src/icons/icon-sprite.tsx +18 -0
  232. package/src/icons/icons.module.css +147 -0
  233. package/src/icons/index.stories.tsx +25 -0
  234. package/src/icons/index.ts +39 -0
  235. package/src/icons/info-icon.tsx +18 -0
  236. package/src/icons/infonomic-icon.tsx +173 -0
  237. package/src/icons/light-icon.astro +36 -0
  238. package/src/icons/light-icon.tsx +29 -0
  239. package/src/icons/location-pin-icon.tsx +36 -0
  240. package/src/icons/moon-icon.astro +38 -0
  241. package/src/icons/moon-icon.tsx +42 -0
  242. package/src/icons/plus-icon.tsx +34 -0
  243. package/src/icons/primary-icon.tsx +22 -0
  244. package/src/icons/refresh-icon.tsx +33 -0
  245. package/src/icons/return-icon.tsx +36 -0
  246. package/src/icons/roles-icon.tsx +34 -0
  247. package/src/icons/search-icon.astro +40 -0
  248. package/src/icons/search-icon.tsx +29 -0
  249. package/src/icons/search-menu-icon.tsx +42 -0
  250. package/src/icons/settings-gear-icon.tsx +36 -0
  251. package/src/icons/settings-sliders-icon.tsx +43 -0
  252. package/src/icons/sign-out-icon.tsx +35 -0
  253. package/src/icons/source/icon-calendar.svg +1 -0
  254. package/src/icons/source/icon-check.svg +4 -0
  255. package/src/icons/source/icon-close.svg +3 -0
  256. package/src/icons/source/icon-coinbase.svg +9 -0
  257. package/src/icons/source/icon-copy.svg +4 -0
  258. package/src/icons/source/icon-document.svg +5 -0
  259. package/src/icons/source/icon-download.svg +4 -0
  260. package/src/icons/source/icon-edit.svg +6 -0
  261. package/src/icons/source/icon-eth-purple.svg +15 -0
  262. package/src/icons/source/icon-etherscan.svg +5 -0
  263. package/src/icons/source/icon-external-link.svg +4 -0
  264. package/src/icons/source/icon-globe.svg +7 -0
  265. package/src/icons/source/icon-gripper-vertical.svg +9 -0
  266. package/src/icons/source/icon-info.svg +4 -0
  267. package/src/icons/source/icon-infonomic.svg +43 -0
  268. package/src/icons/source/icon-ledger.svg +4 -0
  269. package/src/icons/source/icon-light.svg +3 -0
  270. package/src/icons/source/icon-location-pin.svg +8 -0
  271. package/src/icons/source/icon-logout.svg +6 -0
  272. package/src/icons/source/icon-metamask.svg +32 -0
  273. package/src/icons/source/icon-moon.svg +3 -0
  274. package/src/icons/source/icon-plus.svg +4 -0
  275. package/src/icons/source/icon-refresh.svg +4 -0
  276. package/src/icons/source/icon-return.svg +4 -0
  277. package/src/icons/source/icon-search-menu.svg +13 -0
  278. package/src/icons/source/icon-search.svg +3 -0
  279. package/src/icons/source/icon-settings-gear.svg +5 -0
  280. package/src/icons/source/icon-settings.svg +12 -0
  281. package/src/icons/source/icon-wallet.svg +3 -0
  282. package/src/icons/source/icon-walletconnect.svg +4 -0
  283. package/src/icons/source/icon-x.svg +4 -0
  284. package/src/icons/stopwatch-icon.tsx +39 -0
  285. package/src/icons/success-icon.tsx +18 -0
  286. package/src/icons/types/icon.ts +8 -0
  287. package/src/icons/user-icon.tsx +33 -0
  288. package/src/icons/users-icon.tsx +35 -0
  289. package/src/icons/wallet-icon.tsx +29 -0
  290. package/src/icons/warning-icon.tsx +18 -0
  291. package/src/icons/x-icon.tsx +33 -0
  292. package/src/loaders/ellipses.tsx +36 -0
  293. package/src/loaders/loaders.stories.tsx +46 -0
  294. package/src/loaders/ring.tsx +33 -0
  295. package/src/loaders/spinner.tsx +28 -0
  296. package/src/loaders/types/index.ts +6 -0
  297. package/src/react.ts +99 -0
  298. package/src/styles/base/animations.css +143 -0
  299. package/src/styles/base/base.css +5 -0
  300. package/src/styles/base/colors.css +163 -0
  301. package/src/styles/base/colors.stories.tsx +671 -0
  302. package/src/styles/base/reset.css +464 -0
  303. package/src/styles/base/typography.css +25 -0
  304. package/src/styles/base/vars.css +188 -0
  305. package/src/styles/components/card.css +20 -0
  306. package/src/styles/components/checkbox.css +55 -0
  307. package/src/styles/components/components.css +11 -0
  308. package/src/styles/components/directional-button.css +92 -0
  309. package/src/styles/components/dropdown.css +19 -0
  310. package/src/styles/components/fade-in-lift.css +13 -0
  311. package/src/styles/components/hamburger.css +107 -0
  312. package/src/styles/components/icon-element.css +4 -0
  313. package/src/styles/components/list-checkbox.css +60 -0
  314. package/src/styles/components/loaders.css +196 -0
  315. package/src/styles/components/popover.css +15 -0
  316. package/src/styles/components/scroll-to-top.css +89 -0
  317. package/src/styles/components/toast.css +18 -0
  318. package/src/styles/styles.css +6 -0
  319. package/src/styles/theme/autofill.css +58 -0
  320. package/src/styles/theme/scrollers.css +52 -0
  321. package/src/styles/theme/theme.css +130 -0
  322. package/src/styles/theme/theme.stories.tsx +33 -0
  323. package/src/styles/typography/code.stories.tsx +76 -0
  324. package/src/styles/typography/default.stories.tsx +51 -0
  325. package/src/styles/typography/fonts.css +30 -0
  326. package/src/styles/typography/lists.stories.tsx +50 -0
  327. package/src/styles/typography/prose.css +404 -0
  328. package/src/styles/typography/quote.stories.tsx +37 -0
  329. package/src/styles/typography.css +24 -0
  330. package/src/styles/utils/scroll-layout-shift.css +9 -0
  331. package/src/styles/utils/utility-classes.css +1278 -0
  332. package/src/styles/utils/utils.css +2 -0
  333. package/src/theme/theme-provider/index.ts +1 -0
  334. package/src/theme/theme-provider/provider.tsx +44 -0
  335. package/src/utils/capitalize.ts +6 -0
  336. package/src/utils/externalLinkProps.ts +6 -0
  337. package/src/utils/findMatch.ts +7 -0
  338. package/src/utils/getPortalRoot.ts +3 -0
  339. package/src/utils/isTouchDevice.ts +11 -0
  340. package/src/utils/objectsToArray.ts +15 -0
  341. package/src/utils/objectsToString.ts +5 -0
  342. package/src/utils/polymorphic.ts +16 -0
  343. package/src/utils/to-kebab-case.ts +5 -0
  344. package/src/widgets/datepicker/datepicker.module.css +189 -0
  345. package/src/widgets/datepicker/datepicker.stories.tsx +25 -0
  346. package/src/widgets/datepicker/datepicker.tsx +310 -0
  347. package/src/widgets/drawer/drawer-container.tsx +26 -0
  348. package/src/widgets/drawer/drawer-content.tsx +26 -0
  349. package/src/widgets/drawer/drawer-context.tsx +49 -0
  350. package/src/widgets/drawer/drawer-header.tsx +27 -0
  351. package/src/widgets/drawer/drawer-top-actions.tsx +27 -0
  352. package/src/widgets/drawer/drawer-wrapper.tsx +54 -0
  353. package/src/widgets/drawer/drawer.module.css +116 -0
  354. package/src/widgets/drawer/drawer.stories.tsx +224 -0
  355. package/src/widgets/drawer/drawer.tsx +115 -0
  356. package/src/widgets/drawer/motionDomAnimation.ts +4 -0
  357. package/src/widgets/drawer/motionDomMax.ts +4 -0
  358. package/src/widgets/modal/modal-actions.tsx +26 -0
  359. package/src/widgets/modal/modal-container.tsx +26 -0
  360. package/src/widgets/modal/modal-content.tsx +26 -0
  361. package/src/widgets/modal/modal-header.tsx +27 -0
  362. package/src/widgets/modal/modal-wrapper.tsx +50 -0
  363. package/src/widgets/modal/modal.module.css +85 -0
  364. package/src/widgets/modal/modal.stories.tsx +71 -0
  365. package/src/widgets/modal/modal.tsx +110 -0
  366. package/src/widgets/modal/motionDomAnimation.ts +4 -0
  367. package/src/widgets/modal/motionDomMax.ts +4 -0
  368. package/src/widgets/search/index.ts +1 -0
  369. package/src/widgets/search/search.stories.tsx +18 -0
  370. package/src/widgets/search/search.tsx +186 -0
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Byline CMS
3
+ *
4
+ * Copyright © 2025 Anthony Bouch and contributors.
5
+ *
6
+ * This file is part of Byline CMS.
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU Affero General Public License as
10
+ * published by the Free Software Foundation, either version 3 of the
11
+ * License, or (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ * GNU Affero General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public License
19
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
20
+ */
21
+
22
+ import cx from 'classnames'
23
+ import type React from 'react'
24
+
25
+ import { IconElement } from './icon-element.jsx'
26
+ import styles from './icons.module.css'
27
+ import type { IconProps } from './types/icon.js'
28
+
29
+ export const ChevronLeftIcon = ({
30
+ className,
31
+ svgClassName,
32
+ ...rest
33
+ }: IconProps): React.JSX.Element => {
34
+ const applied = cx(styles['fill-contrast'], svgClassName)
35
+
36
+ return (
37
+ <IconElement className={cx('chevron-left-icon', className)} {...rest}>
38
+ <svg
39
+ xmlns="http://www.w3.org/2000/svg"
40
+ className={applied}
41
+ role="presentation"
42
+ focusable="false"
43
+ aria-hidden="true"
44
+ viewBox="0 0 15 15"
45
+ strokeWidth={1}
46
+ >
47
+ <path
48
+ d="M8.84182 3.13514C9.04327 3.32401 9.05348 3.64042 8.86462 3.84188L5.43521 7.49991L8.86462 11.1579C9.05348 11.3594 9.04327 11.6758 8.84182 11.8647C8.64036 12.0535 8.32394 12.0433 8.13508 11.8419L4.38508 7.84188C4.20477 7.64955 4.20477 7.35027 4.38508 7.15794L8.13508 3.15794C8.32394 2.95648 8.64036 2.94628 8.84182 3.13514Z"
49
+ fill="currentColor"
50
+ fillRule="evenodd"
51
+ clipRule="evenodd"
52
+ ></path>
53
+ </svg>
54
+ </IconElement>
55
+ )
56
+ }
57
+
58
+ ChevronLeftIcon.displayName = 'ChevronLeftIcon'
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Byline CMS
3
+ *
4
+ * Copyright © 2025 Anthony Bouch and contributors.
5
+ *
6
+ * This file is part of Byline CMS.
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU Affero General Public License as
10
+ * published by the Free Software Foundation, either version 3 of the
11
+ * License, or (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ * GNU Affero General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public License
19
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
20
+ */
21
+
22
+ import cx from 'classnames'
23
+ import type React from 'react'
24
+
25
+ import { IconElement } from './icon-element.jsx'
26
+ import styles from './icons.module.css'
27
+ import type { IconProps } from './types/icon.js'
28
+
29
+ export const ChevronRightDoubleIcon = ({
30
+ className,
31
+ svgClassName,
32
+ ...rest
33
+ }: IconProps): React.JSX.Element => {
34
+ const applied = cx(styles['fill-contrast'], svgClassName)
35
+
36
+ return (
37
+ <IconElement className={cx('chevron-right-double-icon', className)} {...rest}>
38
+ <svg
39
+ xmlns="http://www.w3.org/2000/svg"
40
+ className={applied}
41
+ role="presentation"
42
+ focusable="false"
43
+ aria-hidden="true"
44
+ viewBox="0 0 15 15"
45
+ strokeWidth={1}
46
+ >
47
+ <path
48
+ d="M2.14645 11.1464C1.95118 11.3417 1.95118 11.6583 2.14645 11.8536C2.34171 12.0488 2.65829 12.0488 2.85355 11.8536L6.85355 7.85355C7.04882 7.65829 7.04882 7.34171 6.85355 7.14645L2.85355 3.14645C2.65829 2.95118 2.34171 2.95118 2.14645 3.14645C1.95118 3.34171 1.95118 3.65829 2.14645 3.85355L5.79289 7.5L2.14645 11.1464ZM8.14645 11.1464C7.95118 11.3417 7.95118 11.6583 8.14645 11.8536C8.34171 12.0488 8.65829 12.0488 8.85355 11.8536L12.8536 7.85355C13.0488 7.65829 13.0488 7.34171 12.8536 7.14645L8.85355 3.14645C8.65829 2.95118 8.34171 2.95118 8.14645 3.14645C7.95118 3.34171 7.95118 3.65829 8.14645 3.85355L11.7929 7.5L8.14645 11.1464Z"
49
+ fill="currentColor"
50
+ fillRule="evenodd"
51
+ clipRule="evenodd"
52
+ ></path>
53
+ </svg>
54
+ </IconElement>
55
+ )
56
+ }
57
+
58
+ ChevronRightDoubleIcon.displayName = 'ChevronRightDoubleIcon'
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Byline CMS
3
+ *
4
+ * Copyright © 2025 Anthony Bouch and contributors.
5
+ *
6
+ * This file is part of Byline CMS.
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU Affero General Public License as
10
+ * published by the Free Software Foundation, either version 3 of the
11
+ * License, or (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ * GNU Affero General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public License
19
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
20
+ */
21
+
22
+ import cx from 'classnames'
23
+ import type React from 'react'
24
+
25
+ import { IconElement } from './icon-element.jsx'
26
+ import styles from './icons.module.css'
27
+ import type { IconProps } from './types/icon.js'
28
+
29
+ export const ChevronRightIcon = ({
30
+ className,
31
+ svgClassName,
32
+ ...rest
33
+ }: IconProps): React.JSX.Element => {
34
+ const applied = cx(styles['fill-contrast'], svgClassName)
35
+
36
+ return (
37
+ <IconElement className={cx('chevron-right-icon', className)} {...rest}>
38
+ <svg
39
+ xmlns="http://www.w3.org/2000/svg"
40
+ className={applied}
41
+ role="presentation"
42
+ focusable="false"
43
+ aria-hidden="true"
44
+ viewBox="0 0 15 15"
45
+ strokeWidth={1}
46
+ >
47
+ <path
48
+ d="M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z"
49
+ fill="currentColor"
50
+ fillRule="evenodd"
51
+ clipRule="evenodd"
52
+ ></path>
53
+ </svg>
54
+ </IconElement>
55
+ )
56
+ }
57
+
58
+ ChevronRightIcon.displayName = 'ChevronRightIcon'
@@ -0,0 +1,37 @@
1
+ import cx from 'classnames'
2
+ import type React from 'react'
3
+
4
+ import { IconElement } from './icon-element.jsx'
5
+ import styles from './icons.module.css'
6
+ import type { IconProps } from './types/icon.js'
7
+
8
+ export const ChevronsUpDown = ({
9
+ className,
10
+ svgClassName,
11
+ ...rest
12
+ }: IconProps): React.JSX.Element => {
13
+ const applied = cx(styles['stroke-contrast'], svgClassName)
14
+
15
+ return (
16
+ <IconElement className={cx('chevrons-up-down', className)} {...rest}>
17
+ <svg
18
+ xmlns="http://www.w3.org/2000/svg"
19
+ className={applied}
20
+ role="presentation"
21
+ focusable="false"
22
+ aria-hidden="true"
23
+ viewBox="0 0 24 24"
24
+ fill="none"
25
+ stroke="currentColor"
26
+ strokeWidth={2}
27
+ strokeLinecap="round"
28
+ strokeLinejoin="round"
29
+ >
30
+ <path d="m7 15 5 5 5-5" />
31
+ <path d="m7 9 5-5 5 5" />
32
+ </svg>
33
+ </IconElement>
34
+ )
35
+ }
36
+
37
+ ChevronsUpDown.displayName = 'ChevronsUpDown'
@@ -0,0 +1,38 @@
1
+ ---
2
+ import type { HTMLAttributes } from 'astro/types'
3
+
4
+ interface Props extends HTMLAttributes<'div'> {
5
+ class?: string
6
+ width?: string
7
+ height?: string
8
+ menuItem?: boolean
9
+ svgClass?: string
10
+ }
11
+
12
+ import IconElement from './icon-element.astro'
13
+ import styles from './icons.module.css'
14
+
15
+ const { class: className, width, height, svgClass: svgClassName, menuItem, ...rest } = Astro.props
16
+ ---
17
+
18
+ <IconElement
19
+ class:list={['close-icon', className]}
20
+ width={width}
21
+ height={height}
22
+ menuItem={menuItem}
23
+ {...rest}
24
+ >
25
+ <svg
26
+ xmlns="http://www.w3.org/2000/svg"
27
+ viewBox="0 0 15 15"
28
+ class:list={[styles['fill-contrast'], svgClassName]}
29
+ focusable="false"
30
+ aria-hidden="true"
31
+ {...rest}
32
+ >
33
+ <path
34
+ d="M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z"
35
+ fill-rule="evenodd"
36
+ clip-rule="evenodd"></path>
37
+ </svg>
38
+ </IconElement>
@@ -0,0 +1,30 @@
1
+ import cx from 'classnames'
2
+ import type React from 'react'
3
+
4
+ import { IconElement } from './icon-element.js'
5
+ import styles from './icons.module.css'
6
+ import type { IconProps } from './types/icon.js'
7
+
8
+ export const CloseIcon = ({ className, svgClassName, ...rest }: IconProps): React.JSX.Element => {
9
+ const applied = cx(styles['fill-contrast'], svgClassName)
10
+
11
+ return (
12
+ <IconElement className={cx('close-icon', className)} {...rest}>
13
+ <svg
14
+ className={applied}
15
+ xmlns="http://www.w3.org/2000/svg"
16
+ focusable="false"
17
+ aria-hidden="true"
18
+ viewBox="0 0 15 15"
19
+ >
20
+ <path
21
+ d="M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z"
22
+ fillRule="evenodd"
23
+ clipRule="evenodd"
24
+ ></path>
25
+ </svg>
26
+ </IconElement>
27
+ )
28
+ }
29
+
30
+ CloseIcon.displayName = 'CloseIcon'
@@ -0,0 +1,35 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.js'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const CopyIcon = ({ className, svgClassName, ...rest }: IconProps): React.JSX.Element => {
12
+ const applied = cx(styles['fill-gray'], svgClassName)
13
+
14
+ return (
15
+ <IconElement className={cx('copy-icon', className)} {...rest}>
16
+ <svg
17
+ className={applied}
18
+ xmlns="http://www.w3.org/2000/svg"
19
+ focusable="false"
20
+ aria-hidden="true"
21
+ viewBox="0 0 15 15"
22
+ strokeWidth="0"
23
+ >
24
+ <path
25
+ d="M1 9.50006C1 10.3285 1.67157 11.0001 2.5 11.0001H4L4 10.0001H2.5C2.22386 10.0001 2 9.7762 2 9.50006L2 2.50006C2 2.22392 2.22386 2.00006 2.5 2.00006L9.5 2.00006C9.77614 2.00006 10 2.22392 10 2.50006V4.00002H5.5C4.67158 4.00002 4 4.67159 4 5.50002V12.5C4 13.3284 4.67158 14 5.5 14H12.5C13.3284 14 14 13.3284 14 12.5V5.50002C14 4.67159 13.3284 4.00002 12.5 4.00002H11V2.50006C11 1.67163 10.3284 1.00006 9.5 1.00006H2.5C1.67157 1.00006 1 1.67163 1 2.50006V9.50006ZM5 5.50002C5 5.22388 5.22386 5.00002 5.5 5.00002H12.5C12.7761 5.00002 13 5.22388 13 5.50002V12.5C13 12.7762 12.7761 13 12.5 13H5.5C5.22386 13 5 12.7762 5 12.5V5.50002Z"
26
+ // fill="currentColor"
27
+ fillRule="evenodd"
28
+ clipRule="evenodd"
29
+ />
30
+ </svg>
31
+ </IconElement>
32
+ )
33
+ }
34
+
35
+ CopyIcon.displayName = 'CopyIcon'
@@ -0,0 +1,18 @@
1
+ import cx from 'classnames'
2
+ import type React from 'react'
3
+
4
+ import { IconElement } from './icon-element.js'
5
+ import styles from './icons.module.css'
6
+ import type { IconProps } from './types/icon.js'
7
+
8
+ export const DangerIcon = ({ className, svgClassName, ...rest }: IconProps): React.JSX.Element => {
9
+ const applied = cx(styles['fill-danger'], svgClassName)
10
+
11
+ return (
12
+ <IconElement className={cx('danger-icon', className)} {...rest}>
13
+ <svg className={applied} focusable="false" aria-hidden="true" viewBox="0 0 24 24">
14
+ <path d="M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z" />
15
+ </svg>
16
+ </IconElement>
17
+ )
18
+ }
@@ -0,0 +1,41 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.jsx'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const DashboardIcon = ({
12
+ className,
13
+ svgClassName,
14
+ ...rest
15
+ }: IconProps): React.JSX.Element => {
16
+ const applied = cx(styles['fill-none'], styles['stroke-contrast'], svgClassName)
17
+
18
+ return (
19
+ <IconElement className={cx('dashboard-icon', className)} {...rest}>
20
+ <svg
21
+ xmlns="http://www.w3.org/2000/svg"
22
+ className={applied}
23
+ focusable="false"
24
+ aria-hidden="true"
25
+ viewBox="0 0 24 24"
26
+ fill="none"
27
+ strokeLinecap="round"
28
+ strokeLinejoin="round"
29
+ strokeWidth={2}
30
+ >
31
+ {' '}
32
+ <path d="M5 4h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1"></path>{' '}
33
+ <path d="M5 16h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1"></path>{' '}
34
+ <path d="M15 12h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1"></path>{' '}
35
+ <path d="M15 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1"></path>{' '}
36
+ </svg>
37
+ </IconElement>
38
+ )
39
+ }
40
+
41
+ DashboardIcon.displayName = 'DashboardIcon'
@@ -0,0 +1,34 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.js'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const DeleteIcon = ({ className, svgClassName, ...rest }: IconProps): React.JSX.Element => {
12
+ const applied = cx(styles['fill-none'], styles['stroke-danger'], svgClassName)
13
+
14
+ return (
15
+ <IconElement className={cx('delete-icon', className)} {...rest}>
16
+ <svg
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ className={applied}
19
+ viewBox="0 0 24 24"
20
+ strokeLinecap="round"
21
+ strokeLinejoin="round"
22
+ focusable="false"
23
+ aria-hidden="true"
24
+ strokeWidth={1.5}
25
+ >
26
+ <path d="M4 7l16 0"></path> <path d="M10 11l0 6"></path> <path d="M14 11l0 6"></path>
27
+ <path d="M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12"></path>
28
+ <path d="M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3"></path>
29
+ </svg>
30
+ </IconElement>
31
+ )
32
+ }
33
+
34
+ DeleteIcon.displayName = 'DeleteIcon'
@@ -0,0 +1,38 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.js'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const DocumentIcon = ({
12
+ className,
13
+ svgClassName,
14
+ ...rest
15
+ }: IconProps): React.JSX.Element => {
16
+ const applied = cx(styles['fill-none'], styles['stroke-contrast'], svgClassName)
17
+
18
+ return (
19
+ <IconElement className={cx('document-icon', className)} {...rest}>
20
+ <svg
21
+ className={applied}
22
+ xmlns="http://www.w3.org/2000/svg"
23
+ focusable="false"
24
+ aria-hidden="true"
25
+ viewBox="0 0 24 24"
26
+ strokeWidth="1.5"
27
+ strokeLinecap="round"
28
+ strokeLinejoin="round"
29
+ >
30
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
31
+ <path d="M14 3v4a1 1 0 0 0 1 1h4" />
32
+ <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z" />
33
+ </svg>
34
+ </IconElement>
35
+ )
36
+ }
37
+
38
+ DocumentIcon.displayName = 'DocumentIcon'
@@ -0,0 +1,39 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.js'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const DownloadIcon = ({
12
+ className,
13
+ svgClassName,
14
+ ...rest
15
+ }: IconProps): React.JSX.Element => {
16
+ const applied = cx(styles['fill-contrast'], svgClassName)
17
+
18
+ return (
19
+ <IconElement className={cx('download-icon', className)} {...rest}>
20
+ <svg
21
+ className={applied}
22
+ xmlns="http://www.w3.org/2000/svg"
23
+ focusable="false"
24
+ aria-hidden="true"
25
+ viewBox="0 0 15 15"
26
+ strokeWidth="0"
27
+ >
28
+ <path
29
+ d="M7.50005 1.04999C7.74858 1.04999 7.95005 1.25146 7.95005 1.49999V8.41359L10.1819 6.18179C10.3576 6.00605 10.6425 6.00605 10.8182 6.18179C10.994 6.35753 10.994 6.64245 10.8182 6.81819L7.81825 9.81819C7.64251 9.99392 7.35759 9.99392 7.18185 9.81819L4.18185 6.81819C4.00611 6.64245 4.00611 6.35753 4.18185 6.18179C4.35759 6.00605 4.64251 6.00605 4.81825 6.18179L7.05005 8.41359V1.49999C7.05005 1.25146 7.25152 1.04999 7.50005 1.04999ZM2.5 10C2.77614 10 3 10.2239 3 10.5V12C3 12.5539 3.44565 13 3.99635 13H11.0012C11.5529 13 12 12.5528 12 12V10.5C12 10.2239 12.2239 10 12.5 10C12.7761 10 13 10.2239 13 10.5V12C13 13.1041 12.1062 14 11.0012 14H3.99635C2.89019 14 2 13.103 2 12V10.5C2 10.2239 2.22386 10 2.5 10Z"
30
+ fill="currentColor"
31
+ fillRule="evenodd"
32
+ clipRule="evenodd"
33
+ ></path>
34
+ </svg>
35
+ </IconElement>
36
+ )
37
+ }
38
+
39
+ DownloadIcon.displayName = 'DownloadIcon'
@@ -0,0 +1,35 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.js'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const EditIcon = ({ className, svgClassName, ...rest }: IconProps): React.JSX.Element => {
12
+ const applied = cx(styles['fill-none'], styles['stroke-contrast'], svgClassName)
13
+
14
+ return (
15
+ <IconElement className={cx('edit-icon', className)} {...rest}>
16
+ <svg
17
+ className={applied}
18
+ xmlns="http://www.w3.org/2000/svg"
19
+ focusable="false"
20
+ aria-hidden="true"
21
+ viewBox="0 0 24 24"
22
+ strokeLinecap="round"
23
+ strokeLinejoin="round"
24
+ strokeWidth={1.5}
25
+ >
26
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
27
+ <path d="M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1" />
28
+ <path d="M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z" />
29
+ <path d="M16 5l3 3" />
30
+ </svg>
31
+ </IconElement>
32
+ )
33
+ }
34
+
35
+ EditIcon.displayName = 'EditIcon'
@@ -0,0 +1,38 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.js'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const EllipsisIcon = ({
12
+ className,
13
+ svgClassName,
14
+ ...rest
15
+ }: IconProps): React.JSX.Element => {
16
+ const applied = cx(styles['fill-none'], styles['stroke-contrast'], svgClassName)
17
+
18
+ return (
19
+ <IconElement className={cx('ellipsis-icon', className)} {...rest}>
20
+ <svg
21
+ xmlns="http://www.w3.org/2000/svg"
22
+ className={applied}
23
+ strokeLinecap="round"
24
+ strokeLinejoin="round"
25
+ focusable="false"
26
+ aria-hidden="true"
27
+ viewBox="0 0 24 24"
28
+ strokeWidth={2}
29
+ >
30
+ <circle cx="12" cy="12" r="1" />
31
+ <circle cx="19" cy="12" r="1" />
32
+ <circle cx="5" cy="12" r="1" />
33
+ </svg>
34
+ </IconElement>
35
+ )
36
+ }
37
+
38
+ EllipsisIcon.displayName = 'EllipsisIcon'
@@ -0,0 +1,33 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.js'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const EmailIcon = ({ className, svgClassName, ...rest }: IconProps): React.JSX.Element => {
12
+ const applied = cx(styles['fill-none'], styles['stroke-contrast'], svgClassName)
13
+
14
+ return (
15
+ <IconElement className={cx('email-icon', className)} {...rest}>
16
+ <svg
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ className={applied}
19
+ viewBox="0 0 24 24"
20
+ strokeLinecap="round"
21
+ strokeLinejoin="round"
22
+ focusable="false"
23
+ aria-hidden="true"
24
+ strokeWidth={1.5}
25
+ >
26
+ <path d="M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10z"></path>
27
+ <path d="M3 7l9 6l9 -6"></path>
28
+ </svg>
29
+ </IconElement>
30
+ )
31
+ }
32
+
33
+ EmailIcon.displayName = 'UserIcon'
@@ -0,0 +1,39 @@
1
+ import type React from 'react'
2
+
3
+ import cx from 'classnames'
4
+
5
+ import { IconElement } from './icon-element.js'
6
+
7
+ import type { IconProps } from './types/icon.js'
8
+
9
+ import styles from './icons.module.css'
10
+
11
+ export const ExternalLinkIcon = ({
12
+ className,
13
+ svgClassName,
14
+ ...rest
15
+ }: IconProps): React.JSX.Element => {
16
+ const applied = cx(styles['fill-current'], svgClassName)
17
+
18
+ return (
19
+ <IconElement className={cx('external-link-icon', className)} {...rest}>
20
+ <svg
21
+ className={applied}
22
+ xmlns="http://www.w3.org/2000/svg"
23
+ focusable="false"
24
+ aria-hidden="true"
25
+ viewBox="0 0 15 15"
26
+ strokeWidth="0"
27
+ >
28
+ <path
29
+ d="M3 2C2.44772 2 2 2.44772 2 3V12C2 12.5523 2.44772 13 3 13H12C12.5523 13 13 12.5523 13 12V8.5C13 8.22386 12.7761 8 12.5 8C12.2239 8 12 8.22386 12 8.5V12H3V3L6.5 3C6.77614 3 7 2.77614 7 2.5C7 2.22386 6.77614 2 6.5 2H3ZM12.8536 2.14645C12.9015 2.19439 12.9377 2.24964 12.9621 2.30861C12.9861 2.36669 12.9996 2.4303 13 2.497L13 2.5V2.50049V5.5C13 5.77614 12.7761 6 12.5 6C12.2239 6 12 5.77614 12 5.5V3.70711L6.85355 8.85355C6.65829 9.04882 6.34171 9.04882 6.14645 8.85355C5.95118 8.65829 5.95118 8.34171 6.14645 8.14645L11.2929 3H9.5C9.22386 3 9 2.77614 9 2.5C9 2.22386 9.22386 2 9.5 2H12.4999H12.5C12.5678 2 12.6324 2.01349 12.6914 2.03794C12.7504 2.06234 12.8056 2.09851 12.8536 2.14645Z"
30
+ fill="currentColor"
31
+ fillRule="evenodd"
32
+ clipRule="evenodd"
33
+ ></path>
34
+ </svg>
35
+ </IconElement>
36
+ )
37
+ }
38
+
39
+ ExternalLinkIcon.displayName = 'ExternalLinkIcon'
@@ -0,0 +1,27 @@
1
+ import cx from 'classnames'
2
+ import type React from 'react'
3
+
4
+ import { IconElement } from './icon-element.js'
5
+ import styles from './icons.module.css'
6
+ import type { IconProps } from './types/icon.js'
7
+
8
+ export const GithubIcon = ({ className, svgClassName, ...rest }: IconProps): React.JSX.Element => {
9
+ const applied = cx(styles['fill-contrast'], svgClassName)
10
+
11
+ return (
12
+ <IconElement className={cx('github-icon', className)} {...rest}>
13
+ <svg
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ viewBox="0 0 24 24"
16
+ className={applied}
17
+ focusable="false"
18
+ aria-hidden="true"
19
+ strokeWidth={1.75}
20
+ >
21
+ <path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" />
22
+ </svg>
23
+ </IconElement>
24
+ )
25
+ }
26
+
27
+ GithubIcon.displayName = 'GithubIcon'