@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
@@ -0,0 +1,16 @@
1
+ declare const _default: import("vue-demi").DefineComponent<{
2
+ bold: {
3
+ type: BooleanConstructor;
4
+ default: boolean;
5
+ };
6
+ }, {
7
+ classNames: import("vue-demi").ComputedRef<string[]>;
8
+ }, 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<{
9
+ bold: {
10
+ type: BooleanConstructor;
11
+ default: boolean;
12
+ };
13
+ }>>, {
14
+ bold: boolean;
15
+ }>;
16
+ export default _default;
@@ -0,0 +1,247 @@
1
+ <template>
2
+ <component
3
+ :is="elementNames"
4
+ v-if="show"
5
+ data-testid="card"
6
+ :class="classNames">
7
+ <header
8
+ v-if="$slots.header"
9
+ data-testid="card-header"
10
+ class="card__header">
11
+ <slot name="header" />
12
+ </header>
13
+
14
+ <header
15
+ v-else-if="title"
16
+ class="card__header card__header--default">
17
+ <Heading element="h6">
18
+ {{ title }}
19
+ </Heading>
20
+
21
+ <span
22
+ v-if="$slots.action && !callout"
23
+ data-testid="card-header-action"
24
+ class="card__header__action">
25
+ <slot name="action" />
26
+ </span>
27
+
28
+ <span
29
+ v-if="dismissable && callout"
30
+ data-testid="card-callout-dismiss"
31
+ class="card__header__dismiss"
32
+ @click="close()">
33
+ <IconClose />
34
+ </span>
35
+ </header>
36
+
37
+ <div
38
+ v-if="!sectioned"
39
+ class="card__body">
40
+ <slot />
41
+ </div>
42
+ <slot v-else />
43
+
44
+ <footer
45
+ v-if="$slots.footer"
46
+ data-testid="card-footer"
47
+ class="card__footer">
48
+ <slot name="footer" />
49
+ </footer>
50
+ </component>
51
+ </template>
52
+
53
+ <script>
54
+ import {
55
+ computed,
56
+ defineComponent,
57
+ ref
58
+ } from "vue-demi";
59
+ import IconClose from "@carbon/icons-vue/lib/close/16";
60
+ import Heading from "../heading/Heading.vue";
61
+ export default defineComponent({
62
+ components: { Heading, IconClose },
63
+ props: {
64
+ element: {
65
+ type: String,
66
+ default: "section"
67
+ },
68
+ title: {
69
+ type: String,
70
+ default: void 0
71
+ },
72
+ sectioned: {
73
+ type: Boolean,
74
+ default: false
75
+ },
76
+ disabled: {
77
+ type: Boolean,
78
+ default: false
79
+ },
80
+ callout: {
81
+ type: Boolean,
82
+ default: false
83
+ },
84
+ dismissable: {
85
+ type: Boolean,
86
+ default: true
87
+ }
88
+ },
89
+ emits: ["dismissed"],
90
+ setup(props, { emit }) {
91
+ const show = ref(true);
92
+ const classNames = computed(() => {
93
+ const result = ["card"];
94
+ if (props.sectioned)
95
+ result.push("card--sectioned");
96
+ if (props.disabled)
97
+ result.push("card--disabled");
98
+ if (props.callout)
99
+ result.push("card--callout");
100
+ return result;
101
+ });
102
+ const elementNames = computed(() => {
103
+ return props.element;
104
+ });
105
+ function close() {
106
+ show.value = false;
107
+ emit("dismissed");
108
+ }
109
+ return {
110
+ classNames,
111
+ elementNames,
112
+ show,
113
+ close
114
+ };
115
+ }
116
+ });
117
+ </script>
118
+
119
+ <style lang="postcss">
120
+ /**
121
+ * Component Name: Card
122
+ * Component URI : https : //www.figma.com/file/JIYmbyRYZHc9bnVp6Npm9K/B-A-S-E-%2F-Components?node-id=294%3A5079
123
+ * Date Created : May 22, 2022
124
+ * Last Update : May 23, 2022
125
+ */
126
+ .card {
127
+ @apply border bg-white border-secondary-5 rounded-md;
128
+
129
+ /*
130
+ * Card Body & Card Header
131
+ * by default have 24px (1.5rem) padding
132
+ */
133
+ &__header,
134
+ &__body {
135
+ @apply pt-6 px-6;
136
+ }
137
+
138
+ &__body {
139
+ @apply pb-6;
140
+
141
+ > .card__section {
142
+ @apply pt-0;
143
+ }
144
+
145
+ .card__section {
146
+ @apply border-b border-black border-opacity-10;
147
+
148
+ /**
149
+ * Adding border-top in the first element
150
+ * of Card Sub-Section and provide 24px (1.5rem)
151
+ * of margin-top
152
+ */
153
+ &:first-child {
154
+ @apply border-t mt-6;
155
+ }
156
+
157
+ &:last-child {
158
+ /**
159
+ * Remove padding-bottom of Card Body
160
+ * from the last element of Card Sub-Section
161
+ */
162
+ .card__body {
163
+ @apply pb-0;
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Remove padding-left-right Card Body
169
+ * in Card Sub-Section
170
+ */
171
+ .card__body {
172
+ @apply px-0;
173
+ }
174
+ }
175
+ }
176
+
177
+ /**
178
+ * If Card have Section,
179
+ * padding of card-body-top-parent set to 0
180
+ */
181
+ &&--sectioned {
182
+ > .card__body {
183
+ @apply p-0;
184
+ }
185
+ }
186
+
187
+ /**
188
+ * Give background background-100 (#f5f5f5)
189
+ * If Card disabled
190
+ */
191
+ &&--disabled {
192
+ @apply bg-background-100;
193
+ }
194
+
195
+ /**
196
+ * Provide box-shadow when
197
+ * Card Callout is enable
198
+ */
199
+ &&--callout {
200
+ @apply shadow;
201
+ }
202
+
203
+ &__header {
204
+ &&--default {
205
+ @apply flex justify-between items-center;
206
+ }
207
+
208
+ &,
209
+ &__action {
210
+ a {
211
+ &:not(.btn) {
212
+ @apply text-xs;
213
+ }
214
+
215
+ + a {
216
+ @apply pl-3;
217
+ }
218
+ }
219
+ }
220
+
221
+ &__dismiss {
222
+ @apply text-secondary-50 hover:text-secondary-100 hover:cursor-pointer;
223
+ }
224
+ }
225
+
226
+ &__section {
227
+ @apply border-b border-black border-opacity-10;
228
+
229
+ &:last-child {
230
+ @apply border-b-0;
231
+ }
232
+
233
+ &&--disabled,
234
+ &.card--disabled {
235
+ @apply bg-background-100;
236
+ }
237
+
238
+ &.card--disabled {
239
+ @apply px-6 pb-6;
240
+ }
241
+ }
242
+
243
+ &__footer {
244
+ @apply pb-6 px-6 pt-3;
245
+ }
246
+ }
247
+ </style>
@@ -0,0 +1,68 @@
1
+ import { PropType } from 'vue-demi';
2
+ declare type ElementVariant = 'div' | 'section' | 'article';
3
+ declare const _default: import("vue-demi").DefineComponent<{
4
+ element: {
5
+ type: PropType<ElementVariant>;
6
+ default: string;
7
+ };
8
+ title: {
9
+ type: StringConstructor;
10
+ default: any;
11
+ };
12
+ sectioned: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ disabled: {
17
+ type: BooleanConstructor;
18
+ default: boolean;
19
+ };
20
+ callout: {
21
+ type: BooleanConstructor;
22
+ default: boolean;
23
+ };
24
+ dismissable: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ }, {
29
+ classNames: import("vue-demi").ComputedRef<string[]>;
30
+ elementNames: import("vue-demi").ComputedRef<ElementVariant>;
31
+ show: import("vue-demi").Ref<boolean>;
32
+ close: () => void;
33
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, "dismissed"[], "dismissed", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
34
+ element: {
35
+ type: PropType<ElementVariant>;
36
+ default: string;
37
+ };
38
+ title: {
39
+ type: StringConstructor;
40
+ default: any;
41
+ };
42
+ sectioned: {
43
+ type: BooleanConstructor;
44
+ default: boolean;
45
+ };
46
+ disabled: {
47
+ type: BooleanConstructor;
48
+ default: boolean;
49
+ };
50
+ callout: {
51
+ type: BooleanConstructor;
52
+ default: boolean;
53
+ };
54
+ dismissable: {
55
+ type: BooleanConstructor;
56
+ default: boolean;
57
+ };
58
+ }>> & {
59
+ onDismissed?: (...args: any[]) => any;
60
+ }, {
61
+ dismissable: boolean;
62
+ disabled: boolean;
63
+ title: string;
64
+ element: ElementVariant;
65
+ sectioned: boolean;
66
+ callout: boolean;
67
+ }>;
68
+ export default _default;
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <div
3
+ data-testid="card-section"
4
+ :class="classNames">
5
+ <div
6
+ v-if="$slots.header"
7
+ data-testid="card-header"
8
+ class="card__header">
9
+ <slot name="header" />
10
+ </div>
11
+
12
+ <div
13
+ v-else-if="title"
14
+ class="card__header card__header--default">
15
+ <Subheading
16
+ overline="medium">
17
+ {{ title }}
18
+ </Subheading>
19
+
20
+ <span
21
+ v-if="$slots.action"
22
+ data-testid="card-header-action"
23
+ class="card__header__action">
24
+ <slot name="action" />
25
+ </span>
26
+ </div>
27
+
28
+ <div class="card__body">
29
+ <slot />
30
+ </div>
31
+
32
+ <footer
33
+ v-if="$slots.footer"
34
+ data-testid="card-footer"
35
+ class="card__footer">
36
+ <slot name="footer" />
37
+ </footer>
38
+ </div>
39
+ </template>
40
+
41
+ <script>
42
+ import Subheading from "../subheading/Subheading.vue";
43
+ import { defineComponent, computed } from "vue-demi";
44
+ export default defineComponent({
45
+ components: { Subheading },
46
+ props: {
47
+ title: {
48
+ type: String,
49
+ default: void 0
50
+ },
51
+ disabled: {
52
+ type: Boolean,
53
+ default: false
54
+ }
55
+ },
56
+ setup(props) {
57
+ const classNames = computed(() => {
58
+ const result = ["card__section"];
59
+ if (props.disabled)
60
+ result.push("card__section--disabled");
61
+ return result;
62
+ });
63
+ return { classNames };
64
+ }
65
+ });
66
+ </script>
@@ -0,0 +1,25 @@
1
+ declare const _default: import("vue-demi").DefineComponent<{
2
+ title: {
3
+ type: StringConstructor;
4
+ default: any;
5
+ };
6
+ disabled: {
7
+ type: BooleanConstructor;
8
+ default: boolean;
9
+ };
10
+ }, {
11
+ classNames: import("vue-demi").ComputedRef<String[]>;
12
+ }, 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<{
13
+ title: {
14
+ type: StringConstructor;
15
+ default: any;
16
+ };
17
+ disabled: {
18
+ type: BooleanConstructor;
19
+ default: boolean;
20
+ };
21
+ }>>, {
22
+ disabled: boolean;
23
+ title: string;
24
+ }>;
25
+ export default _default;
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="121" height="128" fill="none" viewBox="0 0 121 128"><g clip-path="url(#clip0_644_13029)"><g clip-path="url(#clip1_644_13029)"><rect width="121" height="121" y="6.5" fill="url(#paint0_linear_644_13029)" rx="60.124"/><rect width="121" height="121" y="6.5" fill="#fff" fill-opacity=".8" rx="60.124"/><path fill="#8AAED8" d="M9 54.5001H61H113V123.369C113 125.641 111.158 127.483 108.886 127.483H13.1138C10.8418 127.483 9 125.641 9 123.369V54.5001Z"/><rect width="104" height="25" x="9" y="29.5" fill="#BFD6F0"/><rect width="84" height="54" x="22" y="18.5" fill="#DDE6F4" rx="4.509"/><path fill="#fff" d="M9 54.5H11C13.7614 54.5 16 56.7386 16 59.5V127.5H9V54.5Z"/><path fill="#fff" d="M113 54.5H111C108.239 54.5 106 56.7386 106 59.5V127.5H113V54.5Z"/><path fill="#F5F7F9" d="M9 64.5C9 62.2909 10.7909 60.5 13 60.5H109C111.209 60.5 113 62.2909 113 64.5V127.5H9V64.5Z"/><path fill="url(#paint1_radial_644_13029)" d="M9 64.5C9 62.2909 10.7909 60.5 13 60.5H57C59.2091 60.5 61 62.2909 61 64.5V127.5H9V64.5Z"/><path fill="url(#paint2_radial_644_13029)" d="M113 64.5C113 62.2909 111.209 60.5 109 60.5H65C62.7909 60.5 61 62.2909 61 64.5V127.5H113V64.5Z"/></g><path fill="#BFD6F0" d="M9 30.5C9 28.2909 10.7909 26.5 13 26.5H109C111.209 26.5 113 28.2909 113 30.5V41.5H9V30.5Z"/><rect width="80" height="35" x="26" y="12.5" fill="#DDE6F4" rx="4.509"/><g filter="url(#filter0_f_644_13029)"><circle cx="9.5" cy="12" r="8.5" fill="#91ACF1"/><path fill="#fff" d="M12.9098 15.8141H6.09022C6.03664 15.8141 5.98367 15.8028 5.93475 15.781C5.88583 15.7591 5.84206 15.7272 5.80629 15.6873C5.77052 15.6475 5.74355 15.6005 5.72714 15.5495C5.71073 15.4985 5.70524 15.4446 5.71104 15.3914C5.81463 14.4589 6.25842 13.5974 6.95749 12.9717C7.65656 12.346 8.56181 12 9.5 12C10.4382 12 11.3434 12.346 12.0425 12.9717C12.7416 13.5974 13.1854 14.4589 13.289 15.3914C13.2948 15.4446 13.2893 15.4985 13.2729 15.5495C13.2565 15.6005 13.2295 15.6475 13.1937 15.6873C13.1579 15.7272 13.1142 15.7591 13.0653 15.781C13.0163 15.8028 12.9634 15.8141 12.9098 15.8141Z"/><path fill="#fff" d="M9.77006 14.4054L11.5649 12.6072C10.9488 12.2105 10.2316 11.9998 9.49887 12C8.76618 12.0002 8.04905 12.2115 7.43323 12.6085L9.23037 14.4056C9.30188 14.4771 9.39888 14.5173 9.50002 14.5174H9.50021C9.60144 14.5173 9.69849 14.477 9.77006 14.4054Z"/><path fill="#fff" d="M9.49818 12.7628C9.04556 12.7628 8.60311 12.6286 8.22678 12.3771C7.85044 12.1256 7.55712 11.7682 7.38392 11.3501C7.21071 10.9319 7.16539 10.4718 7.25369 10.0279C7.34199 9.58394 7.55995 9.17617 7.87999 8.85613C8.20004 8.53608 8.6078 8.31813 9.05172 8.22983C9.49564 8.14152 9.95577 8.18684 10.3739 8.36005C10.7921 8.53326 11.1495 8.82658 11.401 9.20291C11.6524 9.57925 11.7866 10.0217 11.7866 10.4743C11.786 11.081 11.5447 11.6627 11.1156 12.0918C10.6866 12.5208 10.1049 12.7621 9.49818 12.7628Z"/><path fill="#fff" d="M7.24591 10.8558C7.33546 11.3889 7.61105 11.873 8.02374 12.2221C8.43642 12.5712 8.95948 12.7628 9.50005 12.7628C10.0406 12.7628 10.5637 12.5712 10.9764 12.2221C11.389 11.873 11.6646 11.3889 11.7542 10.8558H7.24591Z"/></g><g filter="url(#filter1_d_644_13029)"><rect width="86" height="66" x="18" y=".5" fill="#fff" rx="4.509"/><rect width="85.248" height="65.248" x="18.376" y=".876" stroke="#F4F6F7" stroke-width=".752" rx="4.134"/></g><path fill="#F5F7F9" d="M9 64.5C9 62.2909 10.7909 60.5 13 60.5H109C111.209 60.5 113 62.2909 113 64.5V87.5H9V64.5Z"/><path stroke="#EAECF0" d="M61 60.5V127"/><rect width="12" height="12" x="55" y="80.5" fill="#235AE3" rx="6"/><rect width="4" height="4" x="59" y="84.5" fill="#C8D6F8" rx="2"/><rect width="2" height="2" x="60" y="85.5" fill="#fff" rx="1"/><rect width="32.107" height="4" x="25" y="8.5" fill="#AAB8C5" rx="1.503"/><rect width="51.6" height="4" x="25" y="15.5" fill="#D7DDE2" rx="1.503"/><rect width="72" height="4" x="25" y="29.5" fill="#D7DDE2" rx="1.503"/><rect width="72" height="4" x="25" y="37.5" fill="#D7DDE2" rx="1.503"/><rect width="72" height="4" x="25" y="45.5" fill="#D7DDE2" rx="1.503"/><rect width="72" height="4" x="25" y="53.5" fill="#D7DDE2" rx="1.503"/><g filter="url(#filter2_f_644_13029)"><circle cx="106.5" cy="20" r="8.5" fill="#F6D789"/><path fill="#fff" d="M109.91 23.8141H103.09C103.037 23.8141 102.984 23.8028 102.935 23.781C102.886 23.7591 102.842 23.7272 102.806 23.6873C102.771 23.6475 102.744 23.6005 102.727 23.5495C102.711 23.4985 102.705 23.4446 102.711 23.3914C102.815 22.4589 103.258 21.5974 103.957 20.9717C104.657 20.346 105.562 20 106.5 20C107.438 20 108.343 20.346 109.043 20.9717C109.742 21.5974 110.185 22.4589 110.289 23.3914C110.295 23.4446 110.289 23.4985 110.273 23.5495C110.256 23.6005 110.229 23.6475 110.194 23.6873C110.158 23.7272 110.114 23.7591 110.065 23.781C110.016 23.8028 109.963 23.8141 109.91 23.8141Z"/><path fill="#fff" d="M106.77 22.4054L108.565 20.6072C107.949 20.2105 107.232 19.9998 106.499 20C105.766 20.0002 105.049 20.2115 104.433 20.6085L106.23 22.4056C106.302 22.4771 106.399 22.5173 106.5 22.5174H106.5C106.601 22.5173 106.698 22.477 106.77 22.4054Z"/><path fill="#fff" d="M106.498 20.7628C106.046 20.7628 105.603 20.6286 105.227 20.3771C104.85 20.1256 104.557 19.7682 104.384 19.3501C104.211 18.9319 104.165 18.4718 104.254 18.0279C104.342 17.5839 104.56 17.1762 104.88 16.8561C105.2 16.5361 105.608 16.3181 106.052 16.2298C106.496 16.1415 106.956 16.1868 107.374 16.3601C107.792 16.5333 108.15 16.8266 108.401 17.2029C108.652 17.5792 108.787 18.0217 108.787 18.4743C108.786 19.081 108.545 19.6627 108.116 20.0918C107.687 20.5208 107.105 20.7621 106.498 20.7628Z"/><path fill="#fff" d="M104.246 18.8558C104.335 19.3889 104.611 19.873 105.024 20.2221C105.436 20.5712 105.959 20.7628 106.5 20.7628C107.041 20.7628 107.564 20.5712 107.976 20.2221C108.389 19.873 108.665 19.3889 108.754 18.8558H104.246Z"/></g><g filter="url(#filter3_d_644_13029)"><path fill="#fff" d="M39.2355 35.8645C38.9692 35.6491 38.6581 35.4962 38.325 35.4168C37.9918 35.3375 37.6452 35.3339 37.3105 35.4062C34.8617 35.9194 32.3337 35.9259 29.8823 35.4254C27.4309 34.9248 25.1079 33.9278 23.0563 32.4957C22.6727 32.2296 22.2169 32.087 21.75 32.087C21.2831 32.087 20.8274 32.2296 20.4438 32.4957C18.3922 33.9278 16.0692 34.9248 13.6177 35.4254C11.1663 35.9259 8.63841 35.9194 6.18962 35.4062C5.85489 35.3339 5.50822 35.3375 5.1751 35.4168C4.84197 35.4962 4.53085 35.6491 4.26462 35.8645C3.99874 36.0802 3.78456 36.3527 3.63783 36.662C3.4911 36.9714 3.41554 37.3096 3.4167 37.652V54.7249C3.41466 58.0106 4.19764 61.2492 5.70043 64.1711C7.20321 67.0929 9.38232 69.6135 12.0563 71.5228L20.4209 77.4812C20.809 77.7575 21.2736 77.906 21.75 77.906C22.2265 77.906 22.6911 77.7575 23.0792 77.4812L31.4438 71.5228C34.1177 69.6135 36.2969 67.0929 37.7996 64.1711C39.3024 61.2492 40.0854 58.0106 40.0834 54.7249V37.652C40.0845 37.3096 40.009 36.9714 39.8622 36.662C39.7155 36.3527 39.5013 36.0802 39.2355 35.8645Z"/></g><path fill="#5AC571" d="M34.8002 62.7084C36.0729 60.2324 36.7359 57.4883 36.734 54.7044V38.9713C31.4985 39.4194 26.2551 38.2047 21.75 35.5C17.245 38.2047 12.0016 39.4194 6.76612 38.9713V54.7044C6.7642 57.4883 7.42719 60.2324 8.69992 62.7084C10.3004 65.5592 11.4661 66.9373 14.0833 68.9391L21.75 74.4083L29.4168 68.9391C32.1196 66.7259 33.2884 65.3445 34.8002 62.7084Z"/><path fill="#fff" d="M29.6571 48.8529C29.2 48.3824 28.5143 48.3824 28.0571 48.8529L19.4857 57.6765L15.9429 54.0294C15.4857 53.5588 14.8 53.5588 14.3429 54.0294C13.8857 54.5 13.8857 55.2059 14.3429 55.6765L18.6857 60.1471C18.9143 60.3824 19.1429 60.5 19.4857 60.5C19.8286 60.5 20.0571 60.3824 20.2857 60.1471L29.6571 50.5C30.1143 50.0294 30.1143 49.3235 29.6571 48.8529Z"/></g><defs><filter id="filter0_f_644_13029" width="23" height="23" x="-2" y=".5" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" mode="normal" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_644_13029" stdDeviation="1.5"/></filter><filter id="filter1_d_644_13029" width="110" height="90" x="6" y="-3.5" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feMorphology in="SourceAlpha" operator="erode" radius="5" result="effect1_dropShadow_644_13029"/><feOffset dy="8"/><feGaussianBlur stdDeviation="8.5"/><feColorMatrix type="matrix" values="0 0 0 0 0.568627 0 0 0 0 0.592157 0 0 0 0 0.639216 0 0 0 0.5 0"/><feBlend in2="BackgroundImageFix" mode="normal" result="effect1_dropShadow_644_13029"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_644_13029" mode="normal" result="shape"/></filter><filter id="filter2_f_644_13029" width="19" height="19" x="97" y="10.5" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" mode="normal" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_644_13029" stdDeviation=".5"/></filter><filter id="filter3_d_644_13029" width="48.667" height="57.819" x="-2.583" y="28.087" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" result="hardAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"/><feOffset dy="2"/><feGaussianBlur stdDeviation="3"/><feColorMatrix type="matrix" values="0 0 0 0 0.155625 0 0 0 0 0.273375 0 0 0 0 0.45 0 0 0 0.21 0"/><feBlend in2="BackgroundImageFix" mode="normal" result="effect1_dropShadow_644_13029"/><feBlend in="SourceGraphic" in2="effect1_dropShadow_644_13029" mode="normal" result="shape"/></filter><linearGradient id="paint0_linear_644_13029" x1="60.5" x2="60.5" y1="6.5" y2="127.5" gradientUnits="userSpaceOnUse"><stop stop-color="#BCCEDF"/><stop offset="1" stop-color="#2869A5"/></linearGradient><radialGradient id="paint1_radial_644_13029" cx="0" cy="0" r="1" gradientTransform="translate(61 77) rotate(160.229) scale(115.296 89.4837)" gradientUnits="userSpaceOnUse"><stop offset=".418" stop-color="#C4C4C4" stop-opacity="0"/><stop offset="1" stop-color="#C4C4C4"/></radialGradient><radialGradient id="paint2_radial_644_13029" cx="0" cy="0" r="1" gradientTransform="translate(61 77) rotate(19.7708) scale(115.296 89.4837)" gradientUnits="userSpaceOnUse"><stop offset=".418" stop-color="#C4C4C4" stop-opacity="0"/><stop offset="1" stop-color="#C4C4C4"/></radialGradient><clipPath id="clip0_644_13029"><rect width="121" height="127" fill="#fff" transform="translate(0 0.5)"/></clipPath><clipPath id="clip1_644_13029"><rect width="121" height="121" y="6.5" fill="#fff" rx="60.124"/></clipPath></defs></svg>
@@ -0,0 +1,109 @@
1
+ <template>
2
+ <div
3
+ class="chart"
4
+ data-testid="chart"
5
+ :class="classNames">
6
+ <slot />
7
+ <canvas
8
+ ref="canvas"
9
+ data-testid="chart-canvas"
10
+ class="chart__canvas" />
11
+ </div>
12
+ </template>
13
+
14
+ <script>
15
+ import { templateRef, watchPausable } from "@vueuse/core";
16
+ import {
17
+ defineComponent,
18
+ onMounted,
19
+ watch,
20
+ shallowRef,
21
+ onBeforeUnmount,
22
+ toRef,
23
+ computed,
24
+ nextTick
25
+ } from "vue-demi";
26
+ import getAdapter from "./adapter/index";
27
+ import { createChart } from "./use-chart";
28
+ export default defineComponent({
29
+ props: {
30
+ variant: {
31
+ type: String,
32
+ default: "line"
33
+ },
34
+ legend: {
35
+ type: String,
36
+ default: "bottom"
37
+ }
38
+ },
39
+ setup(props, { slots }) {
40
+ const instance = shallowRef();
41
+ const canvas = templateRef("canvas");
42
+ const variant = toRef(props, "variant");
43
+ const legend = toRef(props, "legend");
44
+ const classNames = computed(() => {
45
+ const result = [];
46
+ if (props.variant)
47
+ result.push(`chart--${props.variant}`);
48
+ if (props.legend)
49
+ result.push(`chart--${props.legend}`);
50
+ return result;
51
+ });
52
+ const data = computed(() => {
53
+ return getAdapter(variant.value).getDatasets(slots.default());
54
+ });
55
+ async function initChart() {
56
+ if (instance.value)
57
+ instance.value.destroy();
58
+ instance.value = await createChart(
59
+ canvas.value,
60
+ variant.value,
61
+ data.value,
62
+ {
63
+ plugins: {
64
+ legend: {
65
+ display: legend.value !== "none",
66
+ position: legend.value !== "none" ? legend.value : void 0,
67
+ labels: {
68
+ color: "#9CA3AF",
69
+ font: {
70
+ family: "DM Sans",
71
+ size: 12,
72
+ weight: "600"
73
+ }
74
+ }
75
+ }
76
+ },
77
+ ...getAdapter(variant.value).getStyle()
78
+ }
79
+ );
80
+ }
81
+ const dataWatcher = watchPausable(data, (newData) => {
82
+ if (instance.value) {
83
+ instance.value.data = newData;
84
+ instance.value.update();
85
+ }
86
+ });
87
+ watch([variant, legend], async () => {
88
+ dataWatcher.pause();
89
+ await initChart();
90
+ await nextTick();
91
+ dataWatcher.resume();
92
+ }, { flush: "pre" });
93
+ onMounted(() => {
94
+ initChart();
95
+ });
96
+ onBeforeUnmount(() => {
97
+ if (instance.value)
98
+ instance.value.destroy();
99
+ });
100
+ return { canvas, classNames };
101
+ }
102
+ });
103
+ </script>
104
+
105
+ <style lang="postcss">
106
+ .chart {
107
+ @apply w-full aspect-video bg-white;
108
+ }
109
+ </style>
@@ -0,0 +1,30 @@
1
+ import type { LayoutPosition } from 'chart.js/auto';
2
+ import { PropType } from 'vue-demi';
3
+ import { ChartType } from './adapter/index';
4
+ export declare type LegendPosition = 'none' | LayoutPosition;
5
+ declare const _default: import("vue-demi").DefineComponent<{
6
+ variant: {
7
+ type: PropType<ChartType>;
8
+ default: string;
9
+ };
10
+ legend: {
11
+ type: PropType<LegendPosition>;
12
+ default: string;
13
+ };
14
+ }, {
15
+ canvas: Readonly<import("vue-demi").Ref<HTMLCanvasElement>>;
16
+ classNames: import("vue-demi").ComputedRef<string[]>;
17
+ }, 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<{
18
+ variant: {
19
+ type: PropType<ChartType>;
20
+ default: string;
21
+ };
22
+ legend: {
23
+ type: PropType<LegendPosition>;
24
+ default: string;
25
+ };
26
+ }>>, {
27
+ variant: ChartType;
28
+ legend: LegendPosition;
29
+ }>;
30
+ export default _default;
@@ -0,0 +1,16 @@
1
+ <template>
2
+ <slot />
3
+ </template>
4
+
5
+ <script>
6
+ import { defineComponent } from "vue-demi";
7
+ export default defineComponent({
8
+ name: "ChartSet",
9
+ props: {
10
+ name: {
11
+ type: [String, Number],
12
+ required: true
13
+ }
14
+ }
15
+ });
16
+ </script>
@@ -0,0 +1,12 @@
1
+ declare const _default: import("vue-demi").DefineComponent<{
2
+ name: {
3
+ type: (StringConstructor | NumberConstructor)[];
4
+ required: true;
5
+ };
6
+ }, unknown, 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<{
7
+ name: {
8
+ type: (StringConstructor | NumberConstructor)[];
9
+ required: true;
10
+ };
11
+ }>>, {}>;
12
+ export default _default;
@@ -0,0 +1,24 @@
1
+ <template>
2
+ <slot />
3
+ </template>
4
+
5
+ <script>
6
+ import { defineComponent } from "vue-demi";
7
+ export default defineComponent({
8
+ name: "ChartVal",
9
+ props: {
10
+ name: {
11
+ type: [String, Number],
12
+ required: true
13
+ },
14
+ value: {
15
+ type: [String, Number],
16
+ required: true
17
+ },
18
+ color: {
19
+ type: String,
20
+ default: void 0
21
+ }
22
+ }
23
+ });
24
+ </script>
@@ -0,0 +1,30 @@
1
+ declare const _default: import("vue-demi").DefineComponent<{
2
+ name: {
3
+ type: (StringConstructor | NumberConstructor)[];
4
+ required: true;
5
+ };
6
+ value: {
7
+ type: (StringConstructor | NumberConstructor)[];
8
+ required: true;
9
+ };
10
+ color: {
11
+ type: StringConstructor;
12
+ default: any;
13
+ };
14
+ }, unknown, 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<{
15
+ name: {
16
+ type: (StringConstructor | NumberConstructor)[];
17
+ required: true;
18
+ };
19
+ value: {
20
+ type: (StringConstructor | NumberConstructor)[];
21
+ required: true;
22
+ };
23
+ color: {
24
+ type: StringConstructor;
25
+ default: any;
26
+ };
27
+ }>>, {
28
+ color: string;
29
+ }>;
30
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import type { ChartData, ChartOptions } from 'chart.js/auto';
2
+ import { VNode } from 'vue-demi';
3
+ export interface ChartAdapter {
4
+ getStyle: () => ChartOptions;
5
+ getDatasets: (vnodes: VNode[]) => ChartData;
6
+ }
7
+ export declare function defineAdapter(adapter: ChartAdapter): ChartAdapter;