@privyid/persona 0.3.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 (298) hide show
  1. package/README.md +12 -0
  2. package/dist/components/app/App.vue +29 -0
  3. package/dist/components/avatar/Avatar.vue +144 -0
  4. package/dist/components/avatar/Avatar.vue.d.ts +69 -0
  5. package/dist/components/avatar/assets/avatar.png +0 -0
  6. package/dist/components/avatar/utils/color-hash.d.ts +2 -0
  7. package/dist/components/avatar/utils/color-hash.mjs +22 -0
  8. package/dist/components/avatar/utils/create-image.d.ts +5 -0
  9. package/dist/components/avatar/utils/create-image.mjs +19 -0
  10. package/dist/components/avatar/utils/load-image.d.ts +1 -0
  11. package/dist/components/avatar/utils/load-image.mjs +22 -0
  12. package/dist/components/badge/Badge.vue +185 -0
  13. package/dist/components/badge/Badge.vue.d.ts +28 -0
  14. package/dist/components/badge/assets/images/img-guide-badge.svg +1 -0
  15. package/dist/components/banner/Banner.vue +112 -0
  16. package/dist/components/banner/Banner.vue.d.ts +32 -0
  17. package/dist/components/button/Button.vue +247 -0
  18. package/dist/components/button/Button.vue.d.ts +56 -0
  19. package/dist/components/button-group/ButtonGroup.vue +161 -0
  20. package/dist/components/button-group/ButtonGroup.vue.d.ts +26 -0
  21. package/dist/components/calendar/Calendar.vue +279 -0
  22. package/dist/components/calendar/Calendar.vue.d.ts +141 -0
  23. package/dist/components/calendar/adapter/adapter.d.ts +25 -0
  24. package/dist/components/calendar/adapter/adapter.mjs +8 -0
  25. package/dist/components/calendar/adapter/date.d.ts +2 -0
  26. package/dist/components/calendar/adapter/date.mjs +75 -0
  27. package/dist/components/calendar/adapter/month.d.ts +2 -0
  28. package/dist/components/calendar/adapter/month.mjs +58 -0
  29. package/dist/components/calendar/adapter/year.d.ts +2 -0
  30. package/dist/components/calendar/adapter/year.mjs +58 -0
  31. package/dist/components/caption/Caption.vue +38 -0
  32. package/dist/components/caption/Caption.vue.d.ts +16 -0
  33. package/dist/components/card/Card.vue +247 -0
  34. package/dist/components/card/Card.vue.d.ts +68 -0
  35. package/dist/components/card/CardSection.vue +66 -0
  36. package/dist/components/card/CardSection.vue.d.ts +25 -0
  37. package/dist/components/card/assets/images/img-card-callout-01.svg +1 -0
  38. package/dist/components/chart/Chart.vue +109 -0
  39. package/dist/components/chart/Chart.vue.d.ts +30 -0
  40. package/dist/components/chart/ChartSet.vue +16 -0
  41. package/dist/components/chart/ChartSet.vue.d.ts +12 -0
  42. package/dist/components/chart/ChartVal.vue +24 -0
  43. package/dist/components/chart/ChartVal.vue.d.ts +30 -0
  44. package/dist/components/chart/adapter/adapter.d.ts +7 -0
  45. package/dist/components/chart/adapter/adapter.mjs +3 -0
  46. package/dist/components/chart/adapter/index.d.ts +3 -0
  47. package/dist/components/chart/adapter/index.mjs +10 -0
  48. package/dist/components/chart/adapter/line.d.ts +2 -0
  49. package/dist/components/chart/adapter/line.mjs +63 -0
  50. package/dist/components/chart/adapter/pie.d.ts +2 -0
  51. package/dist/components/chart/adapter/pie.mjs +33 -0
  52. package/dist/components/chart/use-chart.d.ts +2 -0
  53. package/dist/components/chart/use-chart.mjs +9 -0
  54. package/dist/components/checkbox/Checkbox.vue +176 -0
  55. package/dist/components/checkbox/Checkbox.vue.d.ts +88 -0
  56. package/dist/components/checkbox/use-checkbox.d.ts +7 -0
  57. package/dist/components/checkbox/use-checkbox.mjs +37 -0
  58. package/dist/components/datepicker/Datepicker.vue +143 -0
  59. package/dist/components/datepicker/Datepicker.vue.d.ts +88 -0
  60. package/dist/components/dialog/Dialog.vue +75 -0
  61. package/dist/components/dialog/Dialog.vue.d.ts +11 -0
  62. package/dist/components/dialog/DialogFooter.vue +126 -0
  63. package/dist/components/dialog/DialogFooter.vue.d.ts +114 -0
  64. package/dist/components/dialog/index.d.ts +6 -0
  65. package/dist/components/dialog/index.mjs +5 -0
  66. package/dist/components/dialog/use-dialog.d.ts +28 -0
  67. package/dist/components/dialog/use-dialog.mjs +31 -0
  68. package/dist/components/divider/Divider.vue +9 -0
  69. package/dist/components/dot/Dot.vue +83 -0
  70. package/dist/components/dot/Dot.vue.d.ts +18 -0
  71. package/dist/components/dropdown/Dropdown.vue +231 -0
  72. package/dist/components/dropdown/Dropdown.vue.d.ts +113 -0
  73. package/dist/components/dropdown/DropdownItem.vue +44 -0
  74. package/dist/components/dropdown/DropdownItem.vue.d.ts +18 -0
  75. package/dist/components/dropdown/utils/use-focus.d.ts +5 -0
  76. package/dist/components/dropdown/utils/use-focus.mjs +20 -0
  77. package/dist/components/dropdown/utils/use-popper.d.ts +6 -0
  78. package/dist/components/dropdown/utils/use-popper.mjs +32 -0
  79. package/dist/components/dropdown-subitem/DropdownSubitem.vue +168 -0
  80. package/dist/components/dropdown-subitem/DropdownSubitem.vue.d.ts +35 -0
  81. package/dist/components/dropdown-subitem/use-dropdown-subitem.d.ts +12 -0
  82. package/dist/components/dropdown-subitem/use-dropdown-subitem.mjs +1 -0
  83. package/dist/components/filterbar/Filterbar.vue +100 -0
  84. package/dist/components/filterbar/Filterbar.vue.d.ts +33 -0
  85. package/dist/components/filterbar/pinned/Date.vue +99 -0
  86. package/dist/components/filterbar/pinned/Date.vue.d.ts +67 -0
  87. package/dist/components/filterbar/pinned/Multiselect.vue +109 -0
  88. package/dist/components/filterbar/pinned/Multiselect.vue.d.ts +42 -0
  89. package/dist/components/filterbar/pinned/Select.vue +95 -0
  90. package/dist/components/filterbar/pinned/Select.vue.d.ts +42 -0
  91. package/dist/components/filterbar/pinned/Toggle.vue +76 -0
  92. package/dist/components/filterbar/pinned/Toggle.vue.d.ts +57 -0
  93. package/dist/components/filterbar/use-filterbar.d.ts +45 -0
  94. package/dist/components/filterbar/use-filterbar.mjs +7 -0
  95. package/dist/components/global/use-singleton.d.ts +6 -0
  96. package/dist/components/global/use-singleton.mjs +52 -0
  97. package/dist/components/heading/Heading.vue +59 -0
  98. package/dist/components/heading/Heading.vue.d.ts +19 -0
  99. package/dist/components/input/Input.vue +54 -0
  100. package/dist/components/input/Input.vue.d.ts +32 -0
  101. package/dist/components/input/InputGroup.vue +25 -0
  102. package/dist/components/input/use-input.d.ts +5 -0
  103. package/dist/components/input/use-input.mjs +20 -0
  104. package/dist/components/label/Label.vue +221 -0
  105. package/dist/components/label/Label.vue.d.ts +51 -0
  106. package/dist/components/modal/Modal.vue +217 -0
  107. package/dist/components/modal/Modal.vue.d.ts +75 -0
  108. package/dist/components/modal/assets/images/img-modal-banner-sheet.jpg +0 -0
  109. package/dist/components/nav/Nav.vue +324 -0
  110. package/dist/components/nav/Nav.vue.d.ts +73 -0
  111. package/dist/components/nav/NavItem.vue +149 -0
  112. package/dist/components/nav/NavItem.vue.d.ts +47 -0
  113. package/dist/components/nav/NavItemDropdown.vue +56 -0
  114. package/dist/components/nav/NavItemDropdown.vue.d.ts +23 -0
  115. package/dist/components/nav/NavSubItem.vue +137 -0
  116. package/dist/components/nav/NavSubItem.vue.d.ts +26 -0
  117. package/dist/components/overlay/Overlay.vue +61 -0
  118. package/dist/components/overlay/Overlay.vue.d.ts +7 -0
  119. package/dist/components/overlay/assets/icon-white.svg +1 -0
  120. package/dist/components/overlay/use-overlay.d.ts +2 -0
  121. package/dist/components/overlay/use-overlay.mjs +8 -0
  122. package/dist/components/overlay/utils/use-loading.d.ts +4 -0
  123. package/dist/components/overlay/utils/use-loading.mjs +27 -0
  124. package/dist/components/radio/Radio.vue +194 -0
  125. package/dist/components/radio/Radio.vue.d.ts +81 -0
  126. package/dist/components/radio/use-radio.d.ts +3 -0
  127. package/dist/components/radio/use-radio.mjs +17 -0
  128. package/dist/components/select/Select.vue +282 -0
  129. package/dist/components/select/Select.vue.d.ts +110 -0
  130. package/dist/components/select/adapter/adapter.d.ts +16 -0
  131. package/dist/components/select/adapter/adapter.mjs +20 -0
  132. package/dist/components/select/adapter/async-adapter.d.ts +5 -0
  133. package/dist/components/select/adapter/async-adapter.mjs +67 -0
  134. package/dist/components/select/adapter/basic-adapter.d.ts +5 -0
  135. package/dist/components/select/adapter/basic-adapter.mjs +13 -0
  136. package/dist/components/select/adapter/fuzzy-adapter.d.ts +2 -0
  137. package/dist/components/select/adapter/fuzzy-adapter.mjs +24 -0
  138. package/dist/components/select/demo/api/province.d.ts +5 -0
  139. package/dist/components/select/demo/api/province.mjs +138 -0
  140. package/dist/components/select/demo/api/regencies/11.d.ts +6 -0
  141. package/dist/components/select/demo/api/regencies/11.mjs +117 -0
  142. package/dist/components/select/demo/api/regencies/12.d.ts +6 -0
  143. package/dist/components/select/demo/api/regencies/12.mjs +167 -0
  144. package/dist/components/select/demo/api/regencies/13.d.ts +6 -0
  145. package/dist/components/select/demo/api/regencies/13.mjs +97 -0
  146. package/dist/components/select/demo/api/regencies/14.d.ts +6 -0
  147. package/dist/components/select/demo/api/regencies/14.mjs +62 -0
  148. package/dist/components/select/demo/api/regencies/15.d.ts +6 -0
  149. package/dist/components/select/demo/api/regencies/15.mjs +57 -0
  150. package/dist/components/select/demo/api/regencies/16.d.ts +6 -0
  151. package/dist/components/select/demo/api/regencies/16.mjs +87 -0
  152. package/dist/components/select/demo/api/regencies/17.d.ts +6 -0
  153. package/dist/components/select/demo/api/regencies/17.mjs +52 -0
  154. package/dist/components/select/demo/api/regencies/18.d.ts +6 -0
  155. package/dist/components/select/demo/api/regencies/18.mjs +77 -0
  156. package/dist/components/select/demo/api/regencies/19.d.ts +6 -0
  157. package/dist/components/select/demo/api/regencies/19.mjs +37 -0
  158. package/dist/components/select/demo/api/regencies/21.d.ts +6 -0
  159. package/dist/components/select/demo/api/regencies/21.mjs +37 -0
  160. package/dist/components/select/demo/api/regencies/31.d.ts +6 -0
  161. package/dist/components/select/demo/api/regencies/31.mjs +32 -0
  162. package/dist/components/select/demo/api/regencies/32.d.ts +6 -0
  163. package/dist/components/select/demo/api/regencies/32.mjs +137 -0
  164. package/dist/components/select/demo/api/regencies/33.d.ts +6 -0
  165. package/dist/components/select/demo/api/regencies/33.mjs +177 -0
  166. package/dist/components/select/demo/api/regencies/34.d.ts +6 -0
  167. package/dist/components/select/demo/api/regencies/34.mjs +27 -0
  168. package/dist/components/select/demo/api/regencies/35.d.ts +6 -0
  169. package/dist/components/select/demo/api/regencies/35.mjs +192 -0
  170. package/dist/components/select/demo/api/regencies/36.d.ts +6 -0
  171. package/dist/components/select/demo/api/regencies/36.mjs +42 -0
  172. package/dist/components/select/demo/api/regencies/51.d.ts +6 -0
  173. package/dist/components/select/demo/api/regencies/51.mjs +47 -0
  174. package/dist/components/select/demo/api/regencies/52.d.ts +6 -0
  175. package/dist/components/select/demo/api/regencies/52.mjs +52 -0
  176. package/dist/components/select/demo/api/regencies/53.d.ts +6 -0
  177. package/dist/components/select/demo/api/regencies/53.mjs +112 -0
  178. package/dist/components/select/demo/api/regencies/61.d.ts +6 -0
  179. package/dist/components/select/demo/api/regencies/61.mjs +72 -0
  180. package/dist/components/select/demo/api/regencies/62.d.ts +6 -0
  181. package/dist/components/select/demo/api/regencies/62.mjs +72 -0
  182. package/dist/components/select/demo/api/regencies/63.d.ts +6 -0
  183. package/dist/components/select/demo/api/regencies/63.mjs +67 -0
  184. package/dist/components/select/demo/api/regencies/64.d.ts +6 -0
  185. package/dist/components/select/demo/api/regencies/64.mjs +52 -0
  186. package/dist/components/select/demo/api/regencies/65.d.ts +6 -0
  187. package/dist/components/select/demo/api/regencies/65.mjs +27 -0
  188. package/dist/components/select/demo/api/regencies/71.d.ts +6 -0
  189. package/dist/components/select/demo/api/regencies/71.mjs +77 -0
  190. package/dist/components/select/demo/api/regencies/72.d.ts +6 -0
  191. package/dist/components/select/demo/api/regencies/72.mjs +67 -0
  192. package/dist/components/select/demo/api/regencies/73.d.ts +6 -0
  193. package/dist/components/select/demo/api/regencies/73.mjs +122 -0
  194. package/dist/components/select/demo/api/regencies/74.d.ts +6 -0
  195. package/dist/components/select/demo/api/regencies/74.mjs +87 -0
  196. package/dist/components/select/demo/api/regencies/75.d.ts +6 -0
  197. package/dist/components/select/demo/api/regencies/75.mjs +32 -0
  198. package/dist/components/select/demo/api/regencies/76.d.ts +6 -0
  199. package/dist/components/select/demo/api/regencies/76.mjs +32 -0
  200. package/dist/components/select/demo/api/regencies/81.d.ts +6 -0
  201. package/dist/components/select/demo/api/regencies/81.mjs +57 -0
  202. package/dist/components/select/demo/api/regencies/82.d.ts +6 -0
  203. package/dist/components/select/demo/api/regencies/82.mjs +52 -0
  204. package/dist/components/select/demo/api/regencies/91.d.ts +6 -0
  205. package/dist/components/select/demo/api/regencies/91.mjs +67 -0
  206. package/dist/components/select/demo/api/regencies/94.d.ts +6 -0
  207. package/dist/components/select/demo/api/regencies/94.mjs +147 -0
  208. package/dist/components/select/demo/get-region.d.ts +11 -0
  209. package/dist/components/select/demo/get-region.mjs +19 -0
  210. package/dist/components/select/use-select.d.ts +10 -0
  211. package/dist/components/select/use-select.mjs +3 -0
  212. package/dist/components/select/utils/use-on-scroll.d.ts +2 -0
  213. package/dist/components/select/utils/use-on-scroll.mjs +9 -0
  214. package/dist/components/select/utils/use-on-typing.d.ts +3 -0
  215. package/dist/components/select/utils/use-on-typing.mjs +8 -0
  216. package/dist/components/sidebar/Sidebar.vue +92 -0
  217. package/dist/components/sidebar/Sidebar.vue.d.ts +51 -0
  218. package/dist/components/sidebar/SidebarBrand.vue +53 -0
  219. package/dist/components/sidebar/SidebarBrand.vue.d.ts +14 -0
  220. package/dist/components/sidebar/SidebarNav.vue +151 -0
  221. package/dist/components/sidebar/SidebarNav.vue.d.ts +36 -0
  222. package/dist/components/sidebar/assets/images/icon-flag.svg +1 -0
  223. package/dist/components/sidebar/assets/images/logo-privy-icon.svg +1 -0
  224. package/dist/components/sidebar/assets/images/logo-privy.svg +1 -0
  225. package/dist/components/sidebar-menu/SidebarMenu.vue +94 -0
  226. package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +43 -0
  227. package/dist/components/sidebar-menu/assets/images/img-flag.svg +1 -0
  228. package/dist/components/sidebar-menu/use-sidebar-menu.d.ts +21 -0
  229. package/dist/components/sidebar-menu/use-sidebar-menu.mjs +3 -0
  230. package/dist/components/signature-draw/SignatureDraw.vue +69 -0
  231. package/dist/components/signature-draw/SignatureDraw.vue.d.ts +82 -0
  232. package/dist/components/signature-draw/SignatureDrawDesktop.vue +152 -0
  233. package/dist/components/signature-draw/SignatureDrawDesktop.vue.d.ts +66 -0
  234. package/dist/components/signature-draw/SignatureDrawMobile.vue +203 -0
  235. package/dist/components/signature-draw/SignatureDrawMobile.vue.d.ts +89 -0
  236. package/dist/components/signature-draw/assets/empty-img.png +0 -0
  237. package/dist/components/signature-draw/utils/canvas.d.ts +35 -0
  238. package/dist/components/signature-draw/utils/canvas.mjs +47 -0
  239. package/dist/components/signature-draw/utils/rotate-image.d.ts +6 -0
  240. package/dist/components/signature-draw/utils/rotate-image.mjs +12 -0
  241. package/dist/components/signature-draw/utils/smooth-line.d.ts +36 -0
  242. package/dist/components/signature-draw/utils/smooth-line.mjs +36 -0
  243. package/dist/components/signature-draw/utils/straight-line.d.ts +8 -0
  244. package/dist/components/signature-draw/utils/straight-line.mjs +22 -0
  245. package/dist/components/signature-draw/utils/use-draw.d.ts +7 -0
  246. package/dist/components/signature-draw/utils/use-draw.mjs +24 -0
  247. package/dist/components/signature-text/SignatureText.vue +104 -0
  248. package/dist/components/signature-text/SignatureText.vue.d.ts +70 -0
  249. package/dist/components/signature-text/sample/sample-signature.png +0 -0
  250. package/dist/components/signature-text/utils/formatter.d.ts +2 -0
  251. package/dist/components/signature-text/utils/formatter.mjs +8 -0
  252. package/dist/components/signature-text/utils/generate-text.d.ts +8 -0
  253. package/dist/components/signature-text/utils/generate-text.mjs +33 -0
  254. package/dist/components/signature-text/utils/load-font.d.ts +1 -0
  255. package/dist/components/signature-text/utils/load-font.mjs +14 -0
  256. package/dist/components/spinner/Spinner.vue +141 -0
  257. package/dist/components/spinner/Spinner.vue.d.ts +2 -0
  258. package/dist/components/spinner/SpinnerRing.vue +28 -0
  259. package/dist/components/spinner/SpinnerRing.vue.d.ts +2 -0
  260. package/dist/components/subheading/Subheading.vue +66 -0
  261. package/dist/components/subheading/Subheading.vue.d.ts +28 -0
  262. package/dist/components/table/Table.vue +257 -0
  263. package/dist/components/table/Table.vue.d.ts +71 -0
  264. package/dist/components/table/use-table.d.ts +23 -0
  265. package/dist/components/table/use-table.mjs +16 -0
  266. package/dist/components/tabs/Tab.vue +28 -0
  267. package/dist/components/tabs/Tab.vue.d.ts +23 -0
  268. package/dist/components/tabs/TabContent.vue +27 -0
  269. package/dist/components/tabs/TabContent.vue.d.ts +14 -0
  270. package/dist/components/tabs/Tabs.vue +194 -0
  271. package/dist/components/tabs/Tabs.vue.d.ts +79 -0
  272. package/dist/components/textarea/Textarea.vue +158 -0
  273. package/dist/components/textarea/Textarea.vue.d.ts +95 -0
  274. package/dist/components/toast/Toast.vue +228 -0
  275. package/dist/components/toast/Toast.vue.d.ts +56 -0
  276. package/dist/components/toast/ToastContainer.vue +63 -0
  277. package/dist/components/toast/ToastContainer.vue.d.ts +15 -0
  278. package/dist/components/toast/use-toast.d.ts +11 -0
  279. package/dist/components/toast/use-toast.mjs +5 -0
  280. package/dist/components/toggle/Toggle.vue +220 -0
  281. package/dist/components/toggle/Toggle.vue.d.ts +104 -0
  282. package/dist/components/truncate/Truncate.vue +75 -0
  283. package/dist/components/truncate/Truncate.vue.d.ts +64 -0
  284. package/dist/components/utils/color.d.ts +12 -0
  285. package/dist/components/utils/color.mjs +10 -0
  286. package/dist/components/utils/value.d.ts +8 -0
  287. package/dist/components/utils/value.mjs +6 -0
  288. package/dist/components/utils/vnode.d.ts +2 -0
  289. package/dist/components/utils/vnode.mjs +15 -0
  290. package/dist/core/index.cjs +75 -0
  291. package/dist/core/index.d.ts +8 -0
  292. package/dist/core/index.mjs +25 -0
  293. package/dist/module.cjs +5 -0
  294. package/dist/module.d.ts +5 -0
  295. package/dist/module.json +5 -0
  296. package/dist/module.mjs +25 -0
  297. package/dist/types.d.ts +6 -0
  298. package/package.json +40 -0
package/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # @privyid/persona
2
+
3
+ > Persona core package
4
+
5
+ Learn more about this package: https://privy-open-source.github.io/design-system/
6
+
7
+ ## Contributing
8
+
9
+ ### Local Development
10
+
11
+ - Run `npm run dev:prepare` to generate type stubs.
12
+ - Use `npm run dev` to start [playground](./playground) in development mode.
@@ -0,0 +1,29 @@
1
+ <template>
2
+ <div class="app">
3
+ <slot />
4
+ </div>
5
+ </template>
6
+
7
+ <style lang="postcss">
8
+ /**
9
+ * Global Styling
10
+ *
11
+ *
12
+ */
13
+ .app {
14
+ /**
15
+ * Hyperlink
16
+ */
17
+ a {
18
+ @apply underline text-primary-100 hover:text-primary-hovered;
19
+ }
20
+
21
+ /**
22
+ * Caption
23
+ */
24
+ caption {
25
+ @apply text-xs text-subtext-100;
26
+ }
27
+
28
+ }
29
+ </style>
@@ -0,0 +1,144 @@
1
+ <template>
2
+ <div
3
+ data-testid="avatar"
4
+ :class="classNames">
5
+ <slot>
6
+ <img
7
+ data-testid="avatar-image"
8
+ class="avatar__image"
9
+ :class="imgClass"
10
+ :data-type="type"
11
+ :src="imageSrc"
12
+ alt="Avatar Image">
13
+ </slot>
14
+ </div>
15
+ </template>
16
+
17
+ <script>
18
+ import {
19
+ computed,
20
+ defineComponent,
21
+ onMounted,
22
+ ref,
23
+ watch
24
+ } from "vue-demi";
25
+ import {
26
+ createAlias,
27
+ createSpinner,
28
+ dummyAvatar
29
+ } from "./utils/create-image";
30
+ import loadImage from "./utils/load-image";
31
+ export default defineComponent({
32
+ props: {
33
+ variant: {
34
+ type: String,
35
+ default: void 0
36
+ },
37
+ src: {
38
+ type: String,
39
+ default: void 0
40
+ },
41
+ fallbackSrc: {
42
+ type: String,
43
+ default: dummyAvatar()
44
+ },
45
+ name: {
46
+ type: String,
47
+ default: void 0
48
+ },
49
+ size: {
50
+ type: String,
51
+ default: "md"
52
+ },
53
+ imgClass: {
54
+ type: [
55
+ String,
56
+ Array,
57
+ Object
58
+ ],
59
+ default: void 0
60
+ }
61
+ },
62
+ emits: ["imgloaded", "imgerror"],
63
+ setup(props, { emit }) {
64
+ const imageSrc = ref(createSpinner(50));
65
+ const classNames = computed(() => {
66
+ const result = ["avatar"];
67
+ if (props.size)
68
+ result.push(`avatar--${props.size}`);
69
+ return result;
70
+ });
71
+ const type = computed(() => {
72
+ if (props.variant)
73
+ return props.variant;
74
+ if (!props.src && props.name)
75
+ return "alias";
76
+ return "image";
77
+ });
78
+ function init() {
79
+ if (type.value === "alias")
80
+ loadAlias();
81
+ else
82
+ load();
83
+ }
84
+ function load() {
85
+ imageSrc.value = createSpinner(50);
86
+ loadImage(props.src).then(() => {
87
+ imageSrc.value = props.src;
88
+ emit("imgloaded", props.src);
89
+ }).catch((error) => {
90
+ imageSrc.value = props.fallbackSrc;
91
+ emit("imgerror", error);
92
+ });
93
+ }
94
+ function loadAlias() {
95
+ imageSrc.value = createAlias(props.name);
96
+ }
97
+ watch(() => [
98
+ props.src,
99
+ props.name,
100
+ props.variant
101
+ ], () => {
102
+ init();
103
+ });
104
+ onMounted(() => {
105
+ init();
106
+ });
107
+ return {
108
+ classNames,
109
+ type,
110
+ imageSrc
111
+ };
112
+ }
113
+ });
114
+ </script>
115
+
116
+ <style lang="postcss">
117
+ .avatar {
118
+ @apply rounded-full inline-flex items-center justify-center overflow-hidden bg-primary-5;
119
+
120
+ &__image {
121
+ @apply w-full h-full object-cover;
122
+ }
123
+
124
+ &--xs {
125
+ @apply w-6 h-6;
126
+ }
127
+
128
+ &--sm {
129
+ @apply w-8 h-8;
130
+ }
131
+
132
+ &--md {
133
+ @apply w-10 h-10;
134
+ }
135
+
136
+ &--lg {
137
+ @apply w-14 h-14;
138
+ }
139
+
140
+ &--xl {
141
+ @apply w-24 h-24;
142
+ }
143
+ }
144
+ </style>
@@ -0,0 +1,69 @@
1
+ import { PropType } from 'vue-demi';
2
+ declare type TypeVariant = 'image' | 'alias';
3
+ declare type SizeVariant = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ declare const _default: import("vue-demi").DefineComponent<{
5
+ variant: {
6
+ type: PropType<TypeVariant>;
7
+ default: any;
8
+ };
9
+ src: {
10
+ type: StringConstructor;
11
+ default: any;
12
+ };
13
+ fallbackSrc: {
14
+ type: StringConstructor;
15
+ default: string;
16
+ };
17
+ name: {
18
+ type: StringConstructor;
19
+ default: any;
20
+ };
21
+ size: {
22
+ type: PropType<SizeVariant>;
23
+ default: string;
24
+ };
25
+ imgClass: {
26
+ type: (ObjectConstructor | StringConstructor | ArrayConstructor)[];
27
+ default: any;
28
+ };
29
+ }, {
30
+ classNames: import("vue-demi").ComputedRef<string[]>;
31
+ type: import("vue-demi").ComputedRef<TypeVariant>;
32
+ imageSrc: import("vue-demi").Ref<string>;
33
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("imgloaded" | "imgerror")[], "imgloaded" | "imgerror", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
34
+ variant: {
35
+ type: PropType<TypeVariant>;
36
+ default: any;
37
+ };
38
+ src: {
39
+ type: StringConstructor;
40
+ default: any;
41
+ };
42
+ fallbackSrc: {
43
+ type: StringConstructor;
44
+ default: string;
45
+ };
46
+ name: {
47
+ type: StringConstructor;
48
+ default: any;
49
+ };
50
+ size: {
51
+ type: PropType<SizeVariant>;
52
+ default: string;
53
+ };
54
+ imgClass: {
55
+ type: (ObjectConstructor | StringConstructor | ArrayConstructor)[];
56
+ default: any;
57
+ };
58
+ }>> & {
59
+ onImgloaded?: (...args: any[]) => any;
60
+ onImgerror?: (...args: any[]) => any;
61
+ }, {
62
+ src: string;
63
+ name: string;
64
+ variant: TypeVariant;
65
+ fallbackSrc: string;
66
+ size: SizeVariant;
67
+ imgClass: string | unknown[] | Record<string, any>;
68
+ }>;
69
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export declare function colorHash(text: string): [string, string];
2
+ export declare function colorRandom(): [string, string];
@@ -0,0 +1,22 @@
1
+ const COLOR_SEED = [
2
+ ["#F2F7FD", "#0065D1"],
3
+ ["#F8F8F8", "#737373"],
4
+ ["#F4FBF6", "#23B242"],
5
+ ["#F2FBFC", "#02AEC5"],
6
+ ["#FFFBF4", "#F5A623"],
7
+ ["#FEF5F4", "#E42E2C"],
8
+ ["#FBFAF2", "#B79A00"],
9
+ ["#FEFDF4", "#EFD52C"],
10
+ ["#FAFEF5", "#A3E635"],
11
+ ["#F3FBFA", "#12B89C"],
12
+ ["#F7F2FD", "#5E00D1"]
13
+ ];
14
+ export function colorHash(text) {
15
+ let hash = 0;
16
+ for (let index = 0; index < text.length; ++index)
17
+ hash = (hash << 5) - hash + text.charCodeAt(index) | 0;
18
+ return COLOR_SEED.at(Math.abs(hash) % COLOR_SEED.length);
19
+ }
20
+ export function colorRandom() {
21
+ return COLOR_SEED.at(Math.floor(Math.random() * COLOR_SEED.length));
22
+ }
@@ -0,0 +1,5 @@
1
+ export declare function createText(text: string, size: number, bgColor: string, textColor: string): string;
2
+ export declare function createSpinner(width?: number, height?: number): string;
3
+ export declare function getAlias(name: string): string;
4
+ export declare function createAlias(name?: string, size?: number): string;
5
+ export declare function dummyAvatar(): string;
@@ -0,0 +1,19 @@
1
+ import avatarImg from "../assets/avatar.png";
2
+ import { colorHash, colorRandom } from "./color-hash.mjs";
3
+ export function createText(text, size, bgColor, textColor) {
4
+ return `data:image/svg+xml,<svg height="${size}" width="${size}" xmlns="http://www.w3.org/2000/svg"><rect fill="${encodeURIComponent(bgColor)}" x="0" y="0" height="${size}" width="${size}"></rect><text fill="${encodeURIComponent(textColor)}" dominant-baseline="central" text-anchor="middle" x="50%" y="50%" font-family="sans-serif" font-weight="600">${encodeURIComponent(text)}</text></svg>`;
5
+ }
6
+ export function createSpinner(width = 50, height = width) {
7
+ return `data:image/svg+xml,<svg class="lds-spinner" width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" style="background:0 0"><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.9166666666666666s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(30 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.8333333333333334s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(60 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.75s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(90 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.6666666666666666s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(120 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.5833333333333334s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(150 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.5s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(180 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.4166666666666667s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(210 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.3333333333333333s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(240 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.25s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(270 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.16666666666666666s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(300 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="-0.08333333333333333s" repeatCount="indefinite"/></rect><rect x="47" y="24" rx="9.4" ry="4.8" width="6" height="12" fill="%23ebecf0" transform="rotate(330 50 50)"><animate attributeName="opacity" values="1;0" keyTimes="0;1" dur="1s" begin="0s" repeatCount="indefinite"/></rect></svg>`;
8
+ }
9
+ export function getAlias(name) {
10
+ return name.split(" ").slice(0, 2).map((c) => c.at(0)).join("").toUpperCase();
11
+ }
12
+ export function createAlias(name, size = 50) {
13
+ const alias = name ? getAlias(name) : "\uFF65\u1D17\uFF65";
14
+ const [bgColor, textColor] = name ? colorHash(name) : colorRandom();
15
+ return createText(alias, size, bgColor, textColor);
16
+ }
17
+ export function dummyAvatar() {
18
+ return avatarImg;
19
+ }
@@ -0,0 +1 @@
1
+ export default function loadImage(url?: string | null): Promise<HTMLImageElement>;
@@ -0,0 +1,22 @@
1
+ export default function loadImage(url) {
2
+ if (!url)
3
+ return Promise.reject(new Error("ERR_INVALID_IMAGE_SRC"));
4
+ return new Promise((resolve, reject) => {
5
+ const image = new globalThis.Image();
6
+ const onLoad = () => {
7
+ onFinish();
8
+ resolve(image);
9
+ };
10
+ const onError = () => {
11
+ onFinish();
12
+ reject(new Error("ERR_FAILED_LOAD_IMAGE"));
13
+ };
14
+ const onFinish = () => {
15
+ image.removeEventListener("load", onLoad);
16
+ image.removeEventListener("error", onError);
17
+ };
18
+ image.addEventListener("load", onLoad);
19
+ image.addEventListener("error", onError);
20
+ image.src = url;
21
+ });
22
+ }
@@ -0,0 +1,185 @@
1
+ <template>
2
+ <span
3
+ data-testid="badge"
4
+ :class="classNames">
5
+ <slot />
6
+ </span>
7
+ </template>
8
+
9
+ <script>
10
+ import {
11
+ defineComponent,
12
+ computed
13
+ } from "vue-demi";
14
+ export default defineComponent({
15
+ props: {
16
+ color: {
17
+ type: String,
18
+ default: "primary"
19
+ },
20
+ variant: {
21
+ type: String,
22
+ default: "default"
23
+ }
24
+ },
25
+ setup(props) {
26
+ const classNames = computed(() => {
27
+ const result = ["badge"];
28
+ if (props.color)
29
+ result.push(`badge--${props.color}`);
30
+ if (props.variant)
31
+ result.push(`badge--${props.variant}`);
32
+ return result;
33
+ });
34
+ return { classNames };
35
+ }
36
+ });
37
+ </script>
38
+
39
+ <style lang="postcss">
40
+ /**
41
+ * Component Name: Badge
42
+ * Component URI : https://www.figma.com/file/JIYmbyRYZHc9bnVp6Npm9K/B-A-S-E-%2F-Components?node-id=278%3A3456
43
+ * Date Created : May 30, 2022
44
+ * Last Update : May 31, 2022
45
+ */
46
+ .badge {
47
+ /**
48
+ * Set global style
49
+ * of badge
50
+ */
51
+ @apply inline-block font-bold text-xs px-2 py-0.5 text-white rounded-full;
52
+
53
+ /**
54
+ * Provide colors variant
55
+ * 7 colors variant available
56
+ * primary, secondary, success
57
+ * info, warning, danger, & gold
58
+ */
59
+ &--default {
60
+ &.badge {
61
+ &--primary {
62
+ @apply bg-primary-100;
63
+ }
64
+
65
+ &--secondary {
66
+ @apply bg-secondary-100;
67
+ }
68
+
69
+ &--success {
70
+ @apply bg-success-100;
71
+ }
72
+
73
+ &--info {
74
+ @apply bg-info-100;
75
+ }
76
+
77
+ &--warning {
78
+ @apply bg-warning-100;
79
+ }
80
+
81
+ &--danger {
82
+ @apply bg-danger-100;
83
+ }
84
+
85
+ &--gold {
86
+ @apply bg-gold-100;
87
+ }
88
+ }
89
+ }
90
+
91
+ /**
92
+ * Set color of Badge
93
+ * in light and inverse variant
94
+ */
95
+ &--light,
96
+ &--inverse {
97
+ &.badge {
98
+ &--primary {
99
+ @apply text-primary-100;
100
+ }
101
+
102
+ &--secondary {
103
+ @apply text-body-75;
104
+ }
105
+
106
+ &--success {
107
+ @apply text-success-100;
108
+ }
109
+
110
+ &--info {
111
+ @apply text-info-100;
112
+ }
113
+
114
+ &--warning {
115
+ @apply text-warning-100;
116
+ }
117
+
118
+ &--danger {
119
+ @apply text-danger-100;
120
+ }
121
+
122
+ &--gold {
123
+ @apply text-gold-100;
124
+ }
125
+ }
126
+ }
127
+
128
+ /**
129
+ * Set background
130
+ * in light variant
131
+ */
132
+ &--light {
133
+ &.badge {
134
+ &--primary {
135
+ @apply bg-primary-5;
136
+ }
137
+
138
+ &--secondary {
139
+ @apply bg-secondary-5;
140
+ }
141
+
142
+ &--success {
143
+ @apply bg-success-5;
144
+ }
145
+
146
+ &--info {
147
+ @apply bg-info-5;
148
+ }
149
+
150
+ &--warning {
151
+ @apply bg-warning-5;
152
+ }
153
+
154
+ &--danger {
155
+ @apply bg-danger-5;
156
+ }
157
+
158
+ &--gold {
159
+ @apply bg-gold-5;
160
+ }
161
+ }
162
+ }
163
+
164
+ /**
165
+ * Remove background
166
+ * in inverse and dot variant
167
+ */
168
+ &--inverse,
169
+ &--dot {
170
+ @apply bg-transparent;
171
+ }
172
+
173
+ /**
174
+ * Reset box-model of
175
+ * dot variant
176
+ */
177
+ &--dot {
178
+ @apply p-0 m-0 tracking-[0];
179
+
180
+ .dot {
181
+ @apply align-middle;
182
+ }
183
+ }
184
+ }
185
+ </style>
@@ -0,0 +1,28 @@
1
+ import { PropType } from 'vue-demi';
2
+ declare type ColorVariant = 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'danger' | 'gold';
3
+ declare type StyleVariant = 'default' | 'light' | 'inverse';
4
+ declare const _default: import("vue-demi").DefineComponent<{
5
+ color: {
6
+ type: PropType<ColorVariant>;
7
+ default: string;
8
+ };
9
+ variant: {
10
+ type: PropType<StyleVariant>;
11
+ default: string;
12
+ };
13
+ }, {
14
+ classNames: import("vue-demi").ComputedRef<string[]>;
15
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
16
+ color: {
17
+ type: PropType<ColorVariant>;
18
+ default: string;
19
+ };
20
+ variant: {
21
+ type: PropType<StyleVariant>;
22
+ default: string;
23
+ };
24
+ }>>, {
25
+ variant: StyleVariant;
26
+ color: ColorVariant;
27
+ }>;
28
+ export default _default;
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" fill="none" viewBox="0 0 96 96"><g clip-path="url(#clip0_101_5004)"><rect width="96" height="96" fill="#464C59"/><path fill="#fff" d="M24 48C24 36.9543 32.9543 28 44 28H83C94.0457 28 103 36.9543 103 48C103 59.0457 94.0457 68 83 68H44C32.9543 68 24 59.0457 24 48Z"/><path fill="#0065D1" d="M47.368 56.288C46.2 56.288 45.216 56.064 44.416 55.616C43.616 55.152 42.992 54.552 42.544 53.816C42.096 53.08 41.832 52.288 41.752 51.44H44.608C44.736 52.176 45.04 52.744 45.52 53.144C46.016 53.544 46.64 53.744 47.392 53.744C48.464 53.744 49.328 53.256 49.984 52.28C50.64 51.288 50.992 49.784 51.04 47.768C50.656 48.424 50.072 48.968 49.288 49.4C48.52 49.832 47.672 50.048 46.744 50.048C45.816 50.048 44.944 49.824 44.128 49.376C43.312 48.928 42.648 48.296 42.136 47.48C41.624 46.664 41.368 45.704 41.368 44.6C41.368 43.592 41.616 42.656 42.112 41.792C42.608 40.928 43.296 40.232 44.176 39.704C45.056 39.176 46.088 38.912 47.272 38.912C48.536 38.912 49.6 39.144 50.464 39.608C51.328 40.072 52.016 40.696 52.528 41.48C53.056 42.264 53.432 43.136 53.656 44.096C53.896 45.056 54.016 46.04 54.016 47.048C54.016 48.92 53.752 50.552 53.224 51.944C52.712 53.32 51.952 54.392 50.944 55.16C49.952 55.912 48.76 56.288 47.368 56.288ZM47.464 47.456C48.056 47.456 48.592 47.328 49.072 47.072C49.552 46.8 49.928 46.448 50.2 46.016C50.472 45.568 50.608 45.072 50.608 44.528C50.608 43.664 50.304 42.952 49.696 42.392C49.104 41.832 48.352 41.552 47.44 41.552C46.544 41.552 45.8 41.832 45.208 42.392C44.616 42.936 44.32 43.632 44.32 44.48C44.32 45.376 44.616 46.096 45.208 46.64C45.8 47.184 46.552 47.456 47.464 47.456ZM63.3789 56.288C62.2109 56.288 61.2269 56.064 60.4269 55.616C59.6269 55.152 59.0029 54.552 58.5549 53.816C58.1069 53.08 57.8429 52.288 57.7629 51.44H60.6189C60.7469 52.176 61.0509 52.744 61.5309 53.144C62.0269 53.544 62.6509 53.744 63.4029 53.744C64.4749 53.744 65.3389 53.256 65.9949 52.28C66.6509 51.288 67.0029 49.784 67.0509 47.768C66.6669 48.424 66.0829 48.968 65.2989 49.4C64.5309 49.832 63.6829 50.048 62.7549 50.048C61.8269 50.048 60.9549 49.824 60.1389 49.376C59.3229 48.928 58.6589 48.296 58.1469 47.48C57.6349 46.664 57.3789 45.704 57.3789 44.6C57.3789 43.592 57.6269 42.656 58.1229 41.792C58.6189 40.928 59.3069 40.232 60.1869 39.704C61.0669 39.176 62.0989 38.912 63.2829 38.912C64.5469 38.912 65.6109 39.144 66.4749 39.608C67.3389 40.072 68.0269 40.696 68.5389 41.48C69.0669 42.264 69.4429 43.136 69.6669 44.096C69.9069 45.056 70.0269 46.04 70.0269 47.048C70.0269 48.92 69.7629 50.552 69.2349 51.944C68.7229 53.32 67.9629 54.392 66.9549 55.16C65.9629 55.912 64.7709 56.288 63.3789 56.288ZM63.4749 47.456C64.0669 47.456 64.6029 47.328 65.0829 47.072C65.5629 46.8 65.9389 46.448 66.2109 46.016C66.4829 45.568 66.6189 45.072 66.6189 44.528C66.6189 43.664 66.3149 42.952 65.7069 42.392C65.1149 41.832 64.3629 41.552 63.4509 41.552C62.5549 41.552 61.8109 41.832 61.2189 42.392C60.6269 42.936 60.3309 43.632 60.3309 44.48C60.3309 45.376 60.6269 46.096 61.2189 46.64C61.8109 47.184 62.5629 47.456 63.4749 47.456ZM73.3659 50.336V47.768H77.8779V43.616H80.4939V47.768H84.9819V50.336H80.4939V54.488H77.8779V50.336H73.3659Z"/></g><defs><clipPath id="clip0_101_5004"><rect width="96" height="96" fill="#fff"/></clipPath></defs></svg>
@@ -0,0 +1,112 @@
1
+ <template>
2
+ <div
3
+ v-if="show"
4
+ data-testid="banner"
5
+ :class="classNames">
6
+ <div class="banner__icon">
7
+ <component
8
+ :is="icon"
9
+ v-if="icon" />
10
+ </div>
11
+ <div class="banner__body">
12
+ <slot :close="close" />
13
+ </div>
14
+ <div
15
+ v-if="dismissable"
16
+ data-testid="banner-close"
17
+ class="banner__close"
18
+ @click="close()">
19
+ <IconClose />
20
+ </div>
21
+ </div>
22
+ </template>
23
+
24
+ <script>
25
+ import IconInfo from "@carbon/icons-vue/lib/information--filled/20";
26
+ import IconDanger from "@carbon/icons-vue/lib/warning--filled/20";
27
+ import IconClose from "@carbon/icons-vue/lib/close/16";
28
+ import {
29
+ defineComponent,
30
+ ref,
31
+ computed
32
+ } from "vue-demi";
33
+ const BannerIcons = {
34
+ danger: IconDanger,
35
+ info: IconInfo
36
+ };
37
+ export default defineComponent({
38
+ components: {
39
+ IconInfo,
40
+ IconClose,
41
+ IconDanger
42
+ },
43
+ props: {
44
+ variant: {
45
+ type: String,
46
+ default: "info"
47
+ },
48
+ dismissable: {
49
+ type: Boolean,
50
+ default: true
51
+ }
52
+ },
53
+ emits: ["dismissed"],
54
+ setup(props, { emit }) {
55
+ const show = ref(true);
56
+ const classNames = computed(() => {
57
+ const result = ["banner"];
58
+ if (props.variant)
59
+ result.push(`banner--${props.variant}`);
60
+ return result;
61
+ });
62
+ const icon = computed(() => {
63
+ return BannerIcons[props.variant];
64
+ });
65
+ function close() {
66
+ show.value = false;
67
+ emit("dismissed");
68
+ }
69
+ return {
70
+ classNames,
71
+ show,
72
+ icon,
73
+ close
74
+ };
75
+ }
76
+ });
77
+ </script>
78
+
79
+ <style lang="postcss">
80
+ .banner {
81
+ @apply p-4 flex gap-2 rounded text-body-100;
82
+
83
+ &--info {
84
+ @apply bg-background-100;
85
+
86
+ .banner__icon {
87
+ @apply text-primary-100;
88
+ }
89
+ }
90
+
91
+ &--danger {
92
+ @apply bg-danger-5;
93
+
94
+ .banner__icon {
95
+ @apply text-danger-100;
96
+ }
97
+ }
98
+
99
+ &__body {
100
+ @apply flex-grow;
101
+ }
102
+
103
+ &__icon,
104
+ &__close {
105
+ @apply flex-shrink-0;
106
+ }
107
+
108
+ &__close {
109
+ @apply cursor-pointer text-black text-opacity-30 hover:text-opacity-50;
110
+ }
111
+ }
112
+ </style>