@cling-se/widget 0.14.6 → 1.0.0-beta.1

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 (127) hide show
  1. package/.eslintrc.cjs +4 -4
  2. package/README.md +40 -40
  3. package/dist/{AddClientCallout-C7abPZ87.js → AddClientCallout-BWnvyBcK.js} +3 -3
  4. package/dist/{AnswerModal-CsA2pl2P.js → AnswerModal-CLGRdSnK.js} +7 -7
  5. package/dist/{AttachmentItem-Da1-7xwf.js → AttachmentItem-BPS0-wyc.js} +3 -3
  6. package/dist/{BaseDatePicker-k9zlSi5J.js → BaseDatePicker-BbmV_GdD.js} +2 -2
  7. package/dist/{BaseUpload-BUrXX3fT.js → BaseUpload-9gPgI7r6.js} +3 -3
  8. package/dist/{BlockMedia-CYI07qAn.js → BlockMedia-DkPFWiYL.js} +2 -2
  9. package/dist/{CCallout-Qwae66vo.js → CCallout-T26jwUby.js} +4 -4
  10. package/dist/{CCurrencyDropdown-Y_u0hgBx.js → CCurrencyDropdown-qH-3m2eP.js} +4 -4
  11. package/dist/{CDropdownItem-CXJ4xD8W.js → CDropdownItem-BE8BAMD1.js} +167 -69
  12. package/dist/{CFormField--m3PvQuT.js → CFormField-DECEfoVq.js} +1 -1
  13. package/dist/{CPhoneFormat-Qg6MkDVP.js → CPhoneFormat-CfQayFxw.js} +1 -1
  14. package/dist/{CPriceInput-Dlx44UrR.js → CPriceInput-C4SOB-P5.js} +2 -2
  15. package/dist/{ClientAutocomplete-BKKc_br6.js → ClientAutocomplete-DSebA1Mx.js} +3 -3
  16. package/dist/{ClientModal-CVZFb1Br.js → ClientModal-BXFYvYCF.js} +6 -6
  17. package/dist/{ColorPicker-Bo3s3Esp.js → ColorPicker-CZ_bJabP.js} +2 -2
  18. package/dist/{CompanyModal-DadjAioS.js → CompanyModal-CDr3t28n.js} +5 -5
  19. package/dist/{ContentWrapper-BC3ZBQW9.js → ContentWrapper-BwmMoe4W.js} +9 -9
  20. package/dist/{CoverBlockSettings-B484eE4g.js → CoverBlockSettings-_F11-DGc.js} +11 -11
  21. package/dist/{DocAnswer-CcYryOWI.js → DocAnswer-BR59xzkT.js} +2 -2
  22. package/dist/{DocDetails-BigsoEWL.js → DocDetails-D1qbCbps.js} +43 -30
  23. package/dist/{DocForm-DlN0eNWt.js → DocForm-DBc2a7z5.js} +91 -92
  24. package/dist/{DocFormSend-TqKo210I.js → DocFormSend-Casix-yG.js} +4 -3
  25. package/dist/{DocLinks-DSo54vDn.js → DocLinks-DGTaewyX.js} +2 -2
  26. package/dist/{DocModalBase-XlM1SThW.js → DocModalBase-BbS_qvSv.js} +2 -2
  27. package/dist/{DocPrint-tD0Vd9Sw.js → DocPrint-0PqX3mbJ.js} +2 -2
  28. package/dist/{DocReceipt-CDHPrhXM.js → DocReceipt-CU3VD5pt.js} +1 -1
  29. package/dist/{DocSendReminder-C62RhltH.js → DocSendReminder-CuycBspr.js} +1 -1
  30. package/dist/{DocTextEditor-VjhV9IRp.js → DocTextEditor-CntS2Bd-.js} +21 -22
  31. package/dist/{DocTimeline-LcW4z3nC.js → DocTimeline-DJuv3yBe.js} +1 -1
  32. package/dist/{DocumentClient-CqbTRdpB.js → DocumentClient-C25XXzz6.js} +5 -5
  33. package/dist/{DocumentLayout-Dbf8_01r.js → DocumentLayout-B7afHRMr.js} +6 -6
  34. package/dist/{DocumentLogotype-DXYnBedV.js → DocumentLogotype-sqI51wvM.js} +4 -4
  35. package/dist/{DocumentVoided-vH1Ti5lZ.js → DocumentVoided-TahdTSMn.js} +1 -1
  36. package/dist/{EmbedInput-D9qP8OnY.js → EmbedInput-BY-wHSfc.js} +2 -2
  37. package/dist/{EmbedSettings-DISuNqJT.js → EmbedSettings-8pfjk4NP.js} +3 -3
  38. package/dist/{ErrorCallout-CCtCVwSh.js → ErrorCallout-Dsr8PNsU.js} +5 -5
  39. package/dist/{FilePreviewModal-BjhNyb6L.js → FilePreviewModal-CcEinEFg.js} +3 -3
  40. package/dist/{Flag-Dhukv9_J.js → Flag-PJKrghi9.js} +1 -1
  41. package/dist/{HeaderSettings-CK4SkB1x.js → HeaderSettings-BqczIOsG.js} +9 -9
  42. package/dist/{ImageSelectModal-DnvPZzXx.js → ImageSelectModal-Cd-HhKnH.js} +4 -4
  43. package/dist/{ImageUploadWrapper-B7cNMu5a.js → ImageUploadWrapper-Dv43rGdb.js} +3 -3
  44. package/dist/{Index-CPJVx14x.js → Index--qPMWUMT.js} +4 -4
  45. package/dist/{Index-Bh0kMSsA.js → Index-6b5VBKE-.js} +5 -5
  46. package/dist/{Index-B3HoK_cZ.js → Index-B4pRJnbw.js} +9 -9
  47. package/dist/{Index-B9H5MMHb.js → Index-B69f8qgZ.js} +5 -5
  48. package/dist/{Index-dyWK9jgr.js → Index-B79YN9RO.js} +4 -4
  49. package/dist/{Index-Bs8wprXw.js → Index-BBrlPoe8.js} +4 -4
  50. package/dist/{Index-D6bc7lg4.js → Index-BXfWJCuq.js} +3 -3
  51. package/dist/{Index-DtSSgtxB.js → Index-Bd76vb37.js} +5 -5
  52. package/dist/{Index-lKk_XKJ3.js → Index-BmbtQO5F.js} +5 -5
  53. package/dist/{Index-CNvp5K3L.js → Index-Bu0MGrj6.js} +8 -8
  54. package/dist/{Index-DuTw9vhb.js → Index-ByV_kJaH.js} +15 -15
  55. package/dist/{Index-CWrDtcfT.js → Index-CDV5rhWS.js} +4 -4
  56. package/dist/{Index-BlQSM7tC.js → Index-CIx4OOK-.js} +9 -9
  57. package/dist/{Index-CyJnSvDR.js → Index-CL1OWLt6.js} +38 -38
  58. package/dist/{Index-Dw26jtGV.js → Index-Caow0eZu.js} +5 -5
  59. package/dist/{Index-S-FHG7_k.js → Index-Cd3-3PEK.js} +316 -316
  60. package/dist/{Index-BY1UKGEO.js → Index-CdpZBEKU.js} +7 -7
  61. package/dist/{Index-BAYdvT-t.js → Index-CmU3Sys-.js} +2 -2
  62. package/dist/{Index-OxN73_fO.js → Index-CtRtgnpm.js} +5 -5
  63. package/dist/{Index-CQ325eVT.js → Index-Cukkr33D.js} +4 -4
  64. package/dist/{Index-gb11ngPS.js → Index-Cuqw0ios.js} +3 -3
  65. package/dist/{Index-B3aucNji.js → Index-Czm_WdqC.js} +4 -4
  66. package/dist/{Index-Dm8xMFGg.js → Index-D4XgxmbD.js} +2 -2
  67. package/dist/{Index-D_rfst8y.js → Index-DIOiMm9f.js} +2 -2
  68. package/dist/{Index-DCR8ev4U.js → Index-DNdYXHgr.js} +4 -4
  69. package/dist/{Index-BLeQprjq.js → Index-DcQbh-z2.js} +2 -2
  70. package/dist/{Index-BpcJBGGd.js → Index-DcuBxutp.js} +59 -59
  71. package/dist/{Index-DXAvlq74.js → Index-DpWNWiyY.js} +13 -14
  72. package/dist/{Index-DGQSB9cH.js → Index-DzS1rZdF.js} +3 -3
  73. package/dist/{Index-CFo-3Y5Q.js → Index-N6s5pZxv.js} +7 -7
  74. package/dist/{Index-ZFkitzfq.js → Index-g_DNu4mt.js} +5 -5
  75. package/dist/{Index-BOyvQlng.js → Index-mJ8F41GY.js} +6 -6
  76. package/dist/{Index-BvZZAvFd.js → Index-q7W9KA8m.js} +2 -2
  77. package/dist/{Index-BVsw2tak.js → Index-rtzblZp4.js} +6 -6
  78. package/dist/{InputToggleRow-DSSvhPKA.js → InputToggleRow-CZjxsDOQ.js} +2 -2
  79. package/dist/{ManualPopover-lpJYSkw5.js → ManualPopover-CZrWiT-P.js} +1 -1
  80. package/dist/{MediaWrapper-BQ22FA2B.js → MediaWrapper-D37qK4KR.js} +3 -3
  81. package/dist/{NotBindingText-JxwzZLPP.js → NotBindingText-CNV2Wmdx.js} +2 -2
  82. package/dist/{PackageGroup-BLSMSUDz.js → PackageGroup-Heo_s8ct.js} +10 -10
  83. package/dist/{PdfTerms-DtutjM5Y.js → PdfTerms-AB9tXAtU.js} +3 -3
  84. package/dist/{PdfViewer-BsxcZI_x.js → PdfViewer-CIVkvOBr.js} +12 -13
  85. package/dist/{PlainHtml-BMPZs2fT.js → PlainHtml-CPmIebjY.js} +1 -1
  86. package/dist/{PriceHeader-BRYY01H2.js → PriceHeader-DhDAruwX.js} +13 -13
  87. package/dist/{SearchApi-6001iFxU.js → SearchApi-BMgdaI4s.js} +2 -2
  88. package/dist/{Setup-cw6jMI9M.js → Setup-VIaIV9uT.js} +1 -1
  89. package/dist/{SmartList-q6H-uLbm.js → SmartList-Qgu0rMrI.js} +1 -1
  90. package/dist/{TermsSettings-DWvaPneu.js → TermsSettings-CE3h_xkm.js} +4 -4
  91. package/dist/{ThemeColorRow-BXWnvfz-.js → ThemeColorRow-DYJNgk6S.js} +4 -4
  92. package/dist/{ToggleBinding-DydtwpNG.js → ToggleBinding-CuwCeYpO.js} +3 -3
  93. package/dist/{UploadModal-D_EDKHGD.js → UploadModal-BITcxG-J.js} +3 -3
  94. package/dist/{VideoPlayerInput-B9yzUeBW.js → VideoPlayerInput-8szEX_8L.js} +3 -3
  95. package/dist/{VideoPlayerSettings-Bvp9l0yj.js → VideoPlayerSettings-BIPytm6w.js} +3 -3
  96. package/dist/{VideoSelectModal-DY3N4JiS.js → VideoSelectModal-B-Pe34nb.js} +4 -4
  97. package/dist/{answerDocumentMixin-BYZPU_R-.js → answerDocumentMixin-W7vE1Gp4.js} +3 -3
  98. package/dist/{debounce-BPnlzNwd.js → debounce-C1AuSpOZ.js} +1 -1
  99. package/dist/{focusDrawerMixin-DC9Oa1i7.js → focusDrawerMixin-Be6BAK8-.js} +1 -1
  100. package/dist/{formComponentsInstall-CEW6TK6z.js → formComponentsInstall-Bm3VMOh6.js} +51 -43
  101. package/dist/{formDrawerState-CAzvSMiQ.js → formDrawerState-DRbg5rVI.js} +1 -1
  102. package/dist/{formValidationMixin-D7zXxCpC.js → formValidationMixin-COkY8COk.js} +2 -2
  103. package/dist/{index-BbscgdRg.js → index-BFvjENMH.js} +1 -1
  104. package/dist/{index-BDMI4NVY.js → index-BV2nGWay.js} +1 -1
  105. package/dist/{index-B9WDC3Xe.js → index-BgJ05dYc.js} +10 -11
  106. package/dist/{index-CLUljEDI.js → index-CMPAXxzs.js} +8 -8
  107. package/dist/{index-BCMaUC5r.js → index-DNDjI5uI.js} +7 -7
  108. package/dist/{index-SxyZvewN.js → index-aoff9oUi.js} +2 -2
  109. package/dist/index.es.js +3 -3
  110. package/dist/index.umd.js +106 -106
  111. package/dist/{main-CQBEuZk9.js → main-WKzC-Dnu.js} +879 -878
  112. package/dist/{mapFormMixin-DlFcgwhm.js → mapFormMixin-QbevCwJK.js} +1 -1
  113. package/dist/{omit-BWy0Zhd3.js → omit-CTp9CXoU.js} +1 -1
  114. package/dist/{publicSenderState-CvOcFv2U.js → publicSenderState-BujjYsZZ.js} +1 -1
  115. package/dist/style.css +2 -2
  116. package/dist/{throttle-BrC8eGjQ.js → throttle-CWPJmFid.js} +2 -2
  117. package/dist/{tinycolor-PhFP695w.js → tinycolor-kTl0yxzz.js} +1 -1
  118. package/dist/{tippy.esm-7dmKOUvu.js → tippy.esm-sS5koDSU.js} +6 -6
  119. package/dist/{utils-NBLgNGHR.js → utils-CA_Zy6u1.js} +1 -1
  120. package/dist/{vuedraggable.umd-ByfH7ZxC.js → vuedraggable.umd-BA3ZDRAp.js} +1 -1
  121. package/package.json +1 -1
  122. package/tsconfig.json +26 -26
  123. package/tsconfig.node.json +10 -10
  124. package/tsconfig.paths.json +17 -17
  125. package/vite.config.ts +60 -60
  126. package/dist/dom-CJxkno7i.js +0 -91
  127. /package/dist/{CTabs.vue_vue_type_style_index_0_scoped_b7262014_lang-l0sNRNKZ.js → CTabs.vue_vue_type_style_index_0_scoped_e02a6440_lang-l0sNRNKZ.js} +0 -0
package/.eslintrc.cjs CHANGED
@@ -1,4 +1,4 @@
1
- // eslint-disable-next-line no-undef
2
- module.exports = {
3
- extends: ['../.eslintrc.cjs']
4
- }
1
+ // eslint-disable-next-line no-undef
2
+ module.exports = {
3
+ extends: ['../.eslintrc.cjs']
4
+ }
package/README.md CHANGED
@@ -1,40 +1,40 @@
1
- # Publish to @cling-se/widget
2
-
3
- [NPM directory - @cling-se/widget](https://www.npmjs.com/package/@cling-se/widget)
4
-
5
- ### Prerequisites
6
-
7
- 1. Authenticated to NPM
8
- 2. Publishing rights to `@cling-se/widget`
9
-
10
- ### Publishing to NPM
11
-
12
- **Bumping the version**
13
-
14
- - Stand on `dev/master`. Using `dev` is fine as long as the branch is stable.
15
- - Navigate to `widget/package.json` and change version according to semantic versioning (_see table below_)
16
- - Commit and push version change to `dev/master`
17
- - Commit message: `chore(widget): bumps version to <version>`
18
-
19
- **Publishing**
20
-
21
- - Navigate to root and run "pnpm widget:publish"
22
- - If not publishing from master you will be prompted with a confirm dialog. Press yes if the dev branch is stable
23
- - Post a message in **#cling-release-notes** channel:
24
-
25
- New Cling Widget published <npmVersion>
26
- - Specify your changes in a bullet list
27
-
28
- ### Resources and definitions
29
-
30
- <!-- Definition table -->
31
- <details>
32
- <summary>Semantic versioning definitions</summary>
33
-
34
- | Version | Description |
35
- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
36
- | MAJOR | When you make incompatible API changes. _At the time of writing we only change this if we plan on long term maintainance of a version_ |
37
- | MINOR | When you add functionality in a backwards compatible manner. |
38
- | PATCH | When you make backwards compatible bug fixes. |
39
-
40
- </details>
1
+ # Publish to @cling-se/widget
2
+
3
+ [NPM directory - @cling-se/widget](https://www.npmjs.com/package/@cling-se/widget)
4
+
5
+ ### Prerequisites
6
+
7
+ 1. Authenticated to NPM
8
+ 2. Publishing rights to `@cling-se/widget`
9
+
10
+ ### Publishing to NPM
11
+
12
+ **Bumping the version**
13
+
14
+ - Stand on `dev/master`. Using `dev` is fine as long as the branch is stable.
15
+ - Navigate to `widget/package.json` and change version according to semantic versioning (_see table below_)
16
+ - Commit and push version change to `dev/master`
17
+ - Commit message: `chore(widget): bumps version to <version>`
18
+
19
+ **Publishing**
20
+
21
+ - Navigate to root and run "pnpm widget:publish"
22
+ - If not publishing from master you will be prompted with a confirm dialog. Press yes if the dev branch is stable
23
+ - Post a message in **#cling-release-notes** channel:
24
+
25
+ New Cling Widget published <npmVersion>
26
+ - Specify your changes in a bullet list
27
+
28
+ ### Resources and definitions
29
+
30
+ <!-- Definition table -->
31
+ <details>
32
+ <summary>Semantic versioning definitions</summary>
33
+
34
+ | Version | Description |
35
+ | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
36
+ | MAJOR | When you make incompatible API changes. _At the time of writing we only change this if we plan on long term maintainance of a version_ |
37
+ | MINOR | When you add functionality in a backwards compatible manner. |
38
+ | PATCH | When you make backwards compatible bug fixes. |
39
+
40
+ </details>
@@ -1,6 +1,6 @@
1
- import { m as o } from "./mapFormMixin-DlFcgwhm.js";
2
- import { C as s } from "./ClientAutocomplete-BKKc_br6.js";
3
- import { n as r } from "./main-CQBEuZk9.js";
1
+ import { m as o } from "./mapFormMixin-QbevCwJK.js";
2
+ import { C as s } from "./ClientAutocomplete-DSebA1Mx.js";
3
+ import { n as r } from "./main-WKzC-Dnu.js";
4
4
  const a = {
5
5
  i18nOptions: {
6
6
  namespaces: "components",
@@ -1,8 +1,8 @@
1
- import { m as ft } from "./mapFormMixin-DlFcgwhm.js";
2
- import { at as It, O as Tt, h as Et, au as Mt, av as Rt, aw as $t, n as ot, ax as Dt, g as yt, e as At, M as Bt } from "./main-CQBEuZk9.js";
1
+ import { m as ft } from "./mapFormMixin-QbevCwJK.js";
2
+ import { at as It, O as Tt, h as Et, au as Mt, av as Rt, aw as $t, n as ot, ax as Dt, g as yt, e as At, M as Bt } from "./main-WKzC-Dnu.js";
3
3
  import { a as nt } from "./anime.es-BrPTThYb.js";
4
4
  import { a as Ut } from "./vuex.esm-DKGl8mcw.js";
5
- import { C as Lt } from "./CFormField--m3PvQuT.js";
5
+ import { C as Lt } from "./CFormField-DECEfoVq.js";
6
6
  /*!
7
7
  * vue-qrcode v1.0.2
8
8
  * https://fengyuanchen.github.io/vue-qrcode
@@ -2877,7 +2877,7 @@ var Ht = function() {
2877
2877
  jt,
2878
2878
  !1,
2879
2879
  null,
2880
- "091e7765"
2880
+ "0a367679"
2881
2881
  );
2882
2882
  const Kt = Gt.exports, Vt = {
2883
2883
  name: "DenyAnswer",
@@ -3516,7 +3516,7 @@ var he = function() {
3516
3516
  fe,
3517
3517
  !1,
3518
3518
  null,
3519
- "e30cd56b"
3519
+ "388a42cf"
3520
3520
  );
3521
3521
  const ge = de.exports, pe = () => {
3522
3522
  const v = window.location.host.split(".");
@@ -3681,7 +3681,7 @@ var ye = function() {
3681
3681
  xe,
3682
3682
  !1,
3683
3683
  null,
3684
- "b3b609e2"
3684
+ "fcbefbe7"
3685
3685
  );
3686
3686
  const Ce = _e.exports, Ee = {
3687
3687
  components: {
@@ -3866,7 +3866,7 @@ var be = function() {
3866
3866
  Pe,
3867
3867
  !1,
3868
3868
  null,
3869
- "67dcb365"
3869
+ "e9b32dd5"
3870
3870
  );
3871
3871
  const Me = Se.exports;
3872
3872
  export {
@@ -1,5 +1,5 @@
1
- import a from "./Index-BAYdvT-t.js";
2
- import { n as i } from "./main-CQBEuZk9.js";
1
+ import a from "./Index-CmU3Sys-.js";
2
+ import { n as i } from "./main-WKzC-Dnu.js";
3
3
  const r = {
4
4
  name: "AttachmentsItem",
5
5
  components: {
@@ -70,7 +70,7 @@ var s = function() {
70
70
  o,
71
71
  !1,
72
72
  null,
73
- "347ae175"
73
+ "455eb81b"
74
74
  );
75
75
  const p = c.exports;
76
76
  export {
@@ -1,5 +1,5 @@
1
- import { a4 as ki, a5 as vi, k as Mi, n as Si, q as bi, ak as Yi, al as Oi, ac as xi } from "./main-CQBEuZk9.js";
2
- import { w as Ti } from "./CDropdownItem-CXJ4xD8W.js";
1
+ import { a4 as ki, a5 as vi, k as Mi, n as Si, q as bi, ak as Yi, al as Oi, ac as xi } from "./main-WKzC-Dnu.js";
2
+ import { w as Ti } from "./CDropdownItem-BE8BAMD1.js";
3
3
  var fs = { exports: {} };
4
4
  //! moment.js
5
5
  //! version : 2.29.4
@@ -1,4 +1,4 @@
1
- import { a5 as Ue, k as De, n as $e, af as ye, O as ve } from "./main-CQBEuZk9.js";
1
+ import { a5 as Ue, k as De, n as $e, af as ye, O as ve } from "./main-WKzC-Dnu.js";
2
2
  /*!
3
3
  * Compressor.js v1.1.1
4
4
  * https://fengyuanchen.github.io/compressorjs
@@ -1697,7 +1697,7 @@ const Ve = /* @__PURE__ */ De(Ye), Qe = {
1697
1697
  name: "BaseUpload",
1698
1698
  components: {
1699
1699
  FileUpload: Ve,
1700
- UploadModal: () => import("./UploadModal-D_EDKHGD.js")
1700
+ UploadModal: () => import("./UploadModal-BITcxG-J.js")
1701
1701
  },
1702
1702
  props: {
1703
1703
  // Optional function to handle any errors
@@ -1969,7 +1969,7 @@ var Ze = function() {
1969
1969
  et,
1970
1970
  !1,
1971
1971
  null,
1972
- "fbb556fb"
1972
+ "7d0db589"
1973
1973
  );
1974
1974
  const nt = tt.exports;
1975
1975
  export {
@@ -1,5 +1,5 @@
1
1
  import { g as d } from "./color-TdtKxwVa.js";
2
- import { n, b as i, x as c } from "./main-CQBEuZk9.js";
2
+ import { n, b as i, x as c } from "./main-WKzC-Dnu.js";
3
3
  const u = {
4
4
  name: "BlockMedia",
5
5
  inject: {
@@ -68,7 +68,7 @@ var m = function() {
68
68
  p,
69
69
  !1,
70
70
  null,
71
- "020e4498"
71
+ "0b04f7d1"
72
72
  );
73
73
  const g = v.exports;
74
74
  export {
@@ -1,5 +1,5 @@
1
- import { n as a, f as s } from "./main-CQBEuZk9.js";
2
- import "./CTabs.vue_vue_type_style_index_0_scoped_b7262014_lang-l0sNRNKZ.js";
1
+ import { n as a, f as s } from "./main-WKzC-Dnu.js";
2
+ import "./CTabs.vue_vue_type_style_index_0_scoped_e02a6440_lang-l0sNRNKZ.js";
3
3
  const i = {
4
4
  name: "CCallout",
5
5
  components: {
@@ -38,7 +38,7 @@ const i = {
38
38
  };
39
39
  var l = function() {
40
40
  var t = this, e = t._self._c;
41
- return e("transition", { attrs: { name: "fade" } }, [t.legacy ? e("article", { staticClass: "message", class: [`is-${t.type}`, `is-${t.size}`] }, [e("section", { staticClass: "message-body", style: { padding: t.padding } }, [t.title ? e("header", { staticClass: "message-header" }, [t._v(" " + t._s(t.title) + " ")]) : t._e(), e("div", { staticClass: "media" }, [e("div", { staticClass: "media-content" }, [t._t("default")], 2)])]), t.closable ? e("CButton", { staticStyle: { right: "calc(0.5 * var(--rem))", position: "absolute", top: "calc(0.5 * var(--rem))" }, attrs: { type: t.type, size: "small", pattern: "secondary", circle: "", icon: "x" }, on: { click: function(c) {
41
+ return e("transition", { attrs: { name: "fade" } }, [t.legacy ? e("article", { staticClass: "message", class: [`is-${t.type}`, `is-${t.size}`] }, [e("section", { staticClass: "message-body", style: { padding: t.padding } }, [t.title ? e("header", { staticClass: "message-header" }, [t._v(" " + t._s(t.title) + " ")]) : t._e(), e("div", { staticClass: "media" }, [e("div", { staticClass: "media-content" }, [t._t("default")], 2)])]), t.closable ? e("CButton", { staticStyle: { right: "calc(0.5 * var(--rem))", position: "absolute", top: "calc(0.5 * var(--rem))" }, attrs: { type: t.type, size: "small", pattern: "secondary", circle: "", icon: "x" }, on: { click: function(o) {
42
42
  return t.$emit("close");
43
43
  } } }) : t._e()], 1) : e("div", { staticClass: "flex rounded-md border border-gray-200 bg-gray-50 p-4" }, [t.icon ? e("div", { staticClass: "-mt-px mr-3" }, [e("CIcon", { attrs: { type: t.icon, size: "16" } })], 1) : t._e(), e("div", [e("div", [t._t("title", function() {
44
44
  return [e("div", { staticClass: "font-medium" }, [t._v(t._s(t.title))])];
@@ -51,7 +51,7 @@ var l = function() {
51
51
  n,
52
52
  !1,
53
53
  null,
54
- "fa2899aa"
54
+ "2e9e865c"
55
55
  );
56
56
  const p = r.exports;
57
57
  export {
@@ -1,6 +1,6 @@
1
- import { C as t, a as l } from "./CDropdownItem-CXJ4xD8W.js";
2
- import { n as s, q as u, r } from "./main-CQBEuZk9.js";
3
- import { S as c } from "./SmartList-q6H-uLbm.js";
1
+ import { C as t, a as l } from "./CDropdownItem-BE8BAMD1.js";
2
+ import { n as s, q as u, r } from "./main-WKzC-Dnu.js";
3
+ import { S as c } from "./SmartList-Qgu0rMrI.js";
4
4
  const d = {
5
5
  AED: "United Arab Emirates Dirham",
6
6
  AFN: "Afghan Afghani",
@@ -238,7 +238,7 @@ var S = function() {
238
238
  C,
239
239
  !1,
240
240
  null,
241
- "a3166a8a"
241
+ "6508b8fc"
242
242
  );
243
243
  const R = m.exports;
244
244
  export {
@@ -1,5 +1,89 @@
1
- import { V as f, k as m, n as p } from "./main-CQBEuZk9.js";
2
- class b {
1
+ import { V as g, k as y, n as b } from "./main-WKzC-Dnu.js";
2
+ const d = {}, h = {};
3
+ function v(t) {
4
+ if (h[t])
5
+ return;
6
+ if (d[t])
7
+ return d[t];
8
+ let e;
9
+ const i = new Promise((o, s) => {
10
+ e = window.setTimeout(() => {
11
+ d[t] = null, s(new Error(`Failed to load ${t} in 20s`));
12
+ }, 2e4), import(
13
+ /* @vite-ignore */
14
+ t
15
+ ).then(() => {
16
+ e && window.clearTimeout(e), h[t] = !0, d[t] = null, o();
17
+ }).catch((a) => {
18
+ e && window.clearTimeout(e), d[t] = null, s(a);
19
+ });
20
+ });
21
+ return d[t] = i, i;
22
+ }
23
+ function W(t) {
24
+ if (t.endsWith(".mjs"))
25
+ return v(t);
26
+ if (h[t])
27
+ return;
28
+ if (d[t])
29
+ return d[t];
30
+ const e = new Promise((i, o) => {
31
+ const s = document.createElement("script"), a = window.setTimeout(() => {
32
+ d[t] = null, o(new Error(`Failed to load ${t} in 20s`));
33
+ }, 2e4);
34
+ s.onload = (l) => {
35
+ a && window.clearTimeout(a), h[t] = !0, d[t] = null, i();
36
+ }, s.onerror = (l) => {
37
+ a && window.clearTimeout(a), d[t] = null, o(l);
38
+ }, s.src = t, document.body.appendChild(s);
39
+ });
40
+ return d[t] = e, e;
41
+ }
42
+ function q(t) {
43
+ const e = t.getBoundingClientRect(), i = window.innerHeight || document.documentElement.clientHeight, o = window.innerWidth || document.documentElement.clientWidth, s = e.top <= i && e.top + e.height >= 0, a = e.left <= o && e.left + e.width >= 0;
44
+ return s && a;
45
+ }
46
+ const _ = (t) => {
47
+ const e = /(auto|scroll)/, i = (n, r) => n.parentNode === null ? r : i(n.parentNode, r.concat([n])), o = (n, r) => getComputedStyle(n, null).getPropertyValue(r), s = (n) => o(n, "overflow") + o(n, "overflow-y") + o(n, "overflow-x"), a = (n) => e.test(s(n));
48
+ return ((n) => {
49
+ if (!(n instanceof HTMLElement || n instanceof SVGElement))
50
+ return null;
51
+ const r = i(n.parentNode, []);
52
+ for (let c = 0; c < r.length; c += 1)
53
+ if (a(r[c]))
54
+ return r[c];
55
+ return document.scrollingElement || document.documentElement;
56
+ })(t);
57
+ }, C = (t) => {
58
+ let e = 0;
59
+ for (; t; )
60
+ e += t.offsetTop, t = t.offsetParent;
61
+ return e;
62
+ };
63
+ function V(t, e) {
64
+ let i = t;
65
+ typeof i == "string" && (i = document.querySelector(i));
66
+ const o = {
67
+ offset: 0,
68
+ behavior: "smooth",
69
+ body: _(i),
70
+ // custom option used for choosing parent scroll element
71
+ ...e
72
+ }, s = C(i);
73
+ HTMLElement.prototype.scrollTo ? o.body.scrollTo({
74
+ behavior: o.behavior,
75
+ top: s - o.offset
76
+ }) : o.body.scrollTop = s - o.offset;
77
+ }
78
+ const w = (t) => {
79
+ var o;
80
+ const e = (o = t == null ? void 0 : t.getRootNode) == null ? void 0 : o.call(t), i = (e == null ? void 0 : e.toString()) === "[object ShadowRoot]";
81
+ return {
82
+ isShadow: i,
83
+ el: i ? e : document
84
+ };
85
+ };
86
+ class x {
3
87
  constructor({ defaults: e = { width: 800, height: 600 }, delay: i = 50 } = {}) {
4
88
  this._width = e.width, this._height = e.height, this._delay = i, this._timer = null, this._initialized = !1, this._handler = this._handleResize.bind(this);
5
89
  }
@@ -30,16 +114,16 @@ class b {
30
114
  return this.initialized ? (window.removeEventListener("resize", this._handler, { passive: !0 }), this._initialized = !1, this) : this;
31
115
  }
32
116
  }
33
- const v = new b().init(), c = new f({ data: { windowSize: v } }), y = {
117
+ const S = new x().init(), p = new g({ data: { windowSize: S } }), $ = {
34
118
  computed: {
35
119
  windowWidth() {
36
- return c.windowSize.width;
120
+ return p.windowSize.width;
37
121
  },
38
122
  windowHeight() {
39
- return c.windowSize.height;
123
+ return p.windowSize.height;
40
124
  },
41
125
  mq() {
42
- const { width: t } = c.windowSize, e = {
126
+ const { width: t } = p.windowSize, e = {
43
127
  sm: 640,
44
128
  md: 768,
45
129
  lg: 1024,
@@ -54,7 +138,7 @@ const v = new b().init(), c = new f({ data: { windowSize: v } }), y = {
54
138
  }
55
139
  }
56
140
  };
57
- var h = { exports: {} };
141
+ var f = { exports: {} };
58
142
  (function(t, e) {
59
143
  Object.defineProperty(e, "__esModule", {
60
144
  value: !0
@@ -63,26 +147,26 @@ var h = { exports: {} };
63
147
  return !!(typeof window < "u" && ("ontouchstart" in window || window.DocumentTouch && typeof document < "u" && document instanceof window.DocumentTouch)) || !!(typeof navigator < "u" && (navigator.maxTouchPoints || navigator.msMaxTouchPoints));
64
148
  }
65
149
  t.exports = e.default;
66
- })(h, h.exports);
67
- var g = h.exports;
68
- const w = /* @__PURE__ */ m(g), T = w();
69
- function M(t, e) {
150
+ })(f, f.exports);
151
+ var k = f.exports;
152
+ const E = /* @__PURE__ */ y(k), K = E();
153
+ function Y(t, e) {
70
154
  return e.split(".").reduce((o, s) => o ? o[s] : null, t);
71
155
  }
72
- function _(t) {
156
+ function T(t) {
73
157
  typeof t.remove < "u" ? t.remove() : typeof t.parentNode < "u" && t.parentNode !== null && t.parentNode.removeChild(t);
74
158
  }
75
- function C(t) {
76
- var n;
77
- const e = (n = t.getRootNode) == null ? void 0 : n.call(t), o = (e == null ? void 0 : e.toString()) === "[object ShadowRoot]" ? e : document.body, s = document.createElement("div");
159
+ function L(t) {
160
+ var l;
161
+ const e = (l = t.getRootNode) == null ? void 0 : l.call(t), o = (e == null ? void 0 : e.toString()) === "[object ShadowRoot]" ? e : document.body, s = document.createElement("div");
78
162
  s.style.position = "absolute", s.style.left = "0px", s.style.top = "0px";
79
163
  const a = document.createElement("div");
80
164
  return s.appendChild(a), a.appendChild(t), o.appendChild(s), s;
81
165
  }
82
- function D(t, e, i) {
166
+ function G(t, e, i) {
83
167
  return Math.max(e, Math.min(i, t));
84
168
  }
85
- const r = (t, e = !1) => t ? e ? t.querySelectorAll('*[tabindex="-1"]') : t.querySelectorAll(`a[href]:not([tabindex="-1"]),
169
+ const u = (t, e = !1) => t ? e ? t.querySelectorAll('*[tabindex="-1"]') : t.querySelectorAll(`a[href]:not([tabindex="-1"]),
86
170
  area[href],
87
171
  input:not([disabled]),
88
172
  select:not([disabled]),
@@ -93,27 +177,27 @@ const r = (t, e = !1) => t ? e ? t.querySelectorAll('*[tabindex="-1"]') : t.quer
93
177
  embed,
94
178
  *[tabindex]:not([tabindex="-1"]),
95
179
  *[contenteditable]`) : null;
96
- let u;
97
- const x = (t, { value: e = !0 }) => {
180
+ let m;
181
+ const O = (t, { value: e = !0 }) => {
98
182
  if (e) {
99
- let i = r(t), o = r(t, !0);
100
- i && i.length > 0 && (u = (s) => {
101
- i = r(t), o = r(t, !0);
102
- const a = i[0], n = i[i.length - 1];
103
- s.target === a && s.shiftKey && s.key === "Tab" ? (s.preventDefault(), n.focus()) : (s.target === n || Array.from(o).indexOf(s.target) >= 0) && !s.shiftKey && s.key === "Tab" && (s.preventDefault(), a.focus());
104
- }, t.addEventListener("keydown", u));
183
+ let i = u(t), o = u(t, !0);
184
+ i && i.length > 0 && (m = (s) => {
185
+ i = u(t), o = u(t, !0);
186
+ const a = i[0], l = i[i.length - 1];
187
+ s.target === a && s.shiftKey && s.key === "Tab" ? (s.preventDefault(), l.focus()) : (s.target === l || Array.from(o).indexOf(s.target) >= 0) && !s.shiftKey && s.key === "Tab" && (s.preventDefault(), a.focus());
188
+ }, t.addEventListener("keydown", m));
105
189
  }
106
- }, $ = (t) => {
107
- t.removeEventListener("keydown", u);
108
- }, k = {
109
- bind: x,
110
- unbind: $
111
- }, S = ["escape", "outside"], A = {
190
+ }, A = (t) => {
191
+ t.removeEventListener("keydown", m);
192
+ }, B = {
193
+ bind: O,
194
+ unbind: A
195
+ }, I = ["escape", "outside"], P = {
112
196
  name: "CDropdown",
113
197
  directives: {
114
- trapFocus: k
198
+ trapFocus: B
115
199
  },
116
- mixins: [y],
200
+ mixins: [$],
117
201
  props: {
118
202
  value: {
119
203
  type: [String, Number, Boolean, Object, Array, Function],
@@ -241,7 +325,7 @@ const x = (t, { value: e = !0 }) => {
241
325
  return this.mobileModal && this.mq === "sm";
242
326
  },
243
327
  cancelOptions() {
244
- return typeof this.canClose == "boolean" ? this.canClose ? S : [] : this.canClose;
328
+ return typeof this.canClose == "boolean" ? this.canClose ? I : [] : this.canClose;
245
329
  },
246
330
  contentStyle() {
247
331
  return {
@@ -268,12 +352,20 @@ const x = (t, { value: e = !0 }) => {
268
352
  }
269
353
  },
270
354
  mounted() {
271
- typeof window < "u" && (this.getRootElm().addEventListener("click", this.clickedOutside), document.addEventListener("keyup", this.keyPress)), this.appendToBody && (this.$data._bodyEl = C(this.$refs.dropdownMenu), this.$data._bodyEl.style.zIndex = Number(
355
+ if (typeof window < "u") {
356
+ const { el: t, isShadow: e } = w(this.$el);
357
+ t.addEventListener("click", this.clickedOutside), e && document.addEventListener("click", this.clickedOutsideShadow(t)), document.addEventListener("keyup", this.keyPress);
358
+ }
359
+ this.appendToBody && (this.$data._bodyEl = L(this.$refs.dropdownMenu), this.$data._bodyEl.style.zIndex = Number(
272
360
  window.getComputedStyle(this.$el).getPropertyValue("--app-z-index")
273
361
  ) + 9999, this.isMobileModal && this.$data._bodyEl.appendChild(this.$refs.mobileBackground), this.updateAppendToBody());
274
362
  },
275
363
  beforeDestroy() {
276
- typeof window < "u" && (this.getRootElm().removeEventListener("click", this.clickedOutside), document.removeEventListener("keyup", this.keyPress)), this.appendToBody && _(this.$data._bodyEl);
364
+ if (typeof window < "u") {
365
+ const { el: t, isShadow: e } = w(this.$el);
366
+ t.removeEventListener("click", this.clickedOutside(t)), e && document.removeEventListener("click", this.clickedOutsideShadow(t)), document.removeEventListener("keyup", this.keyPress);
367
+ }
368
+ this.appendToBody && T(this.$data._bodyEl);
277
369
  },
278
370
  methods: {
279
371
  /**
@@ -324,6 +416,11 @@ const x = (t, { value: e = !0 }) => {
324
416
  const e = ((i = t.path) == null ? void 0 : i[0]) || t.target;
325
417
  this.isInWhiteList(e) || (this.isActive = !1);
326
418
  },
419
+ clickedOutsideShadow(t) {
420
+ return (e) => {
421
+ e != null && e.target && e.target !== (t == null ? void 0 : t.host) && (this.isActive = !1);
422
+ };
423
+ },
327
424
  /**
328
425
  * Keypress event that is bound to the document
329
426
  */
@@ -350,14 +447,14 @@ const x = (t, { value: e = !0 }) => {
350
447
  const t = this.$refs.dropdownMenu, e = this.$refs.trigger;
351
448
  if (t && e) {
352
449
  const i = this.$data._bodyEl.children[0];
353
- if (i.classList.forEach((n) => i.classList.remove(n)), i.classList.add("dropdown"), i.classList.add("dropdown-menu-animation"), this.$vnode && this.$vnode.data && this.$vnode.data.staticClass && i.classList.add(this.$vnode.data.staticClass), this.rootClasses.forEach((n) => {
354
- if (n && typeof n == "object")
355
- for (const l in n)
356
- n[l] && i.classList.add(l);
450
+ if (i.classList.forEach((l) => i.classList.remove(l)), i.classList.add("dropdown"), i.classList.add("dropdown-menu-animation"), this.$vnode && this.$vnode.data && this.$vnode.data.staticClass && i.classList.add(this.$vnode.data.staticClass), this.rootClasses.forEach((l) => {
451
+ if (l && typeof l == "object")
452
+ for (const n in l)
453
+ l[n] && i.classList.add(n);
357
454
  }), this.appendToBodyCopyParent) {
358
- const n = this.$refs.dropdown.parentNode, l = this.$data._bodyEl;
359
- l.classList.forEach((d) => l.classList.remove(d)), n.classList.forEach((d) => {
360
- l.classList.add(d);
455
+ const l = this.$refs.dropdown.parentNode, n = this.$data._bodyEl;
456
+ n.classList.forEach((r) => n.classList.remove(r)), l.classList.forEach((r) => {
457
+ n.classList.add(r);
361
458
  });
362
459
  }
363
460
  const o = e.getBoundingClientRect();
@@ -366,18 +463,14 @@ const x = (t, { value: e = !0 }) => {
366
463
  position: "absolute",
367
464
  top: `${s}px`,
368
465
  left: `${a}px`,
369
- zIndex: "1001"
466
+ zIndex: "1001",
467
+ ...this.expanded && { width: `${e.clientWidth}px` }
370
468
  };
371
469
  }
372
- },
373
- getRootElm() {
374
- var i, o;
375
- const t = (o = (i = this.$el).getRootNode) == null ? void 0 : o.call(i);
376
- return (t == null ? void 0 : t.toString()) === "[object ShadowRoot]" ? t : document;
377
470
  }
378
471
  }
379
472
  };
380
- var B = function() {
473
+ var M = function() {
381
474
  var e = this, i = e._self._c;
382
475
  return i("div", { ref: "dropdown", staticClass: "dropdown dropdown-menu-animation", class: e.rootClasses }, [e.inline ? e._e() : i("div", { ref: "trigger", staticClass: "dropdown-trigger", attrs: { role: "button", "aria-haspopup": "true" }, on: { click: e.toggle, mouseenter: e.checkHoverable } }, [e._t("trigger", null, { active: e.isActive })], 2), i("transition", { attrs: { name: "fade-in" } }, [e.isMobileModal ? i("div", { directives: [{ name: "show", rawName: "v-show", value: e.isActive, expression: "isActive" }], ref: "mobileBackground", staticClass: "fixed inset-0 z-40 bg-black/40", attrs: { "aria-hidden": !e.isActive } }) : e._e()]), i("transition", { attrs: { name: e.isMobileModal ? "slide-in-bottom" : e.animation } }, [i("div", { directives: [{ name: "show", rawName: "v-show", value: !e.disabled && (e.isActive || e.isHoverable) || e.inline, expression: "(!disabled && (isActive || isHoverable)) || inline" }, { name: "trap-focus", rawName: "v-trap-focus", value: e.trapFocus, expression: "trapFocus" }], ref: "dropdownMenu", staticClass: "dropdown-menu", style: {
383
476
  ...e.style,
@@ -385,15 +478,15 @@ var B = function() {
385
478
  }, attrs: { "aria-hidden": !e.isActive } }, [e.isActive ? [e._t("header"), i("div", { staticClass: "dropdown-content", class: `${e.uniquePopoverClass}`, style: e.contentStyle, attrs: { role: e.ariaRole } }, [e.isMobileModal && e.mobileLabel ? e._t("mobileLabel", function() {
386
479
  return [i("div", { staticClass: "dropdown-content-label" }, [e._v(e._s(e.mobileLabel))])];
387
480
  }) : e._e(), e._t("default")], 2), e._t("footer")] : e._e()], 2)])], 1);
388
- }, L = [], O = /* @__PURE__ */ p(
389
- A,
390
- B,
391
- L,
481
+ }, z = [], H = /* @__PURE__ */ b(
482
+ P,
483
+ M,
484
+ z,
392
485
  !1,
393
486
  null,
394
487
  null
395
488
  );
396
- const H = O.exports, E = {
489
+ const U = H.exports, R = {
397
490
  name: "CDropdownItem",
398
491
  props: {
399
492
  value: {
@@ -514,25 +607,30 @@ const H = O.exports, E = {
514
607
  }
515
608
  }
516
609
  };
517
- var I = function() {
610
+ var D = function() {
518
611
  var e = this, i = e._self._c;
519
612
  return e.separator ? i("hr", { staticClass: "dropdown-divider" }) : !e.custom && !e.hasLink ? i(e.to && !e.disabled ? "router-link" : "a", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: e.tooltipItem, expression: "tooltipItem" }], tag: "component", staticClass: "dropdown-item truncate-text", class: [e.anchorClasses, `is-${e.type}`], attrs: { to: e.to, role: e.ariaRoleItem, tabindex: e.isFocusable ? 0 : null }, on: { click: e.selectItem } }, [e.iconLeft ? i("CIcon", e._b({ staticClass: "icon dropdown-item-icon", attrs: { type: e.iconLeft } }, "CIcon", { size: 18, ...e.iconProps }, !1)) : e._e(), e._t("default"), e.toggle ? i("CSwitch", { directives: [{ name: "tooltip", rawName: "v-tooltip", value: e.tooltipItem, expression: "tooltipItem" }], staticStyle: { display: "inline-flex", "pointer-events": "none", position: "absolute", right: "0", top: "50%", transform: "translateY(-50%)", "margin-right": "0" }, attrs: { value: e.value, size: "tiny", type: "success" } }) : e._e(), e.iconRight ? i("CIcon", e._b({ staticClass: "icon dropdown-item-icon is-right", attrs: { type: e.iconRight || "chevron-up-down" } }, "CIcon", { size: 18, ...e.iconProps }, !1)) : e._e()], 2) : i("div", { staticClass: "truncate-text", class: [e.itemClasses, `is-${e.type}`], attrs: { role: e.ariaRoleItem, tabindex: e.isFocusable ? 0 : null }, on: { click: e.selectItem } }, [e.iconLeft ? i("CIcon", e._b({ staticClass: "icon dropdown-item-icon", attrs: { type: e.iconLeft } }, "CIcon", { size: 18, ...e.iconProps }, !1)) : e._e(), e._t("default"), e.iconRight ? i("CIcon", e._b({ staticClass: "icon dropdown-item-icon is-right", attrs: { type: e.iconRight } }, "CIcon", { size: 18, ...e.iconProps }, !1)) : e._e()], 2);
520
- }, z = [], P = /* @__PURE__ */ p(
521
- E,
522
- I,
523
- z,
613
+ }, N = [], F = /* @__PURE__ */ b(
614
+ R,
615
+ D,
616
+ N,
524
617
  !1,
525
618
  null,
526
619
  null
527
620
  );
528
- const N = P.exports;
621
+ const X = F.exports;
529
622
  export {
530
- H as C,
531
- N as a,
532
- D as b,
533
- C as c,
534
- M as g,
535
- T as i,
536
- _ as r,
537
- y as w
623
+ U as C,
624
+ X as a,
625
+ G as b,
626
+ L as c,
627
+ K as d,
628
+ W as e,
629
+ w as f,
630
+ Y as g,
631
+ _ as h,
632
+ q as i,
633
+ T as r,
634
+ V as s,
635
+ $ as w
538
636
  };
@@ -1,4 +1,4 @@
1
- import { n as i, Q as l } from "./main-CQBEuZk9.js";
1
+ import { n as i, Q as l } from "./main-WKzC-Dnu.js";
2
2
  import "./CField.vue_vue_type_style_index_0_lang-l0sNRNKZ.js";
3
3
  const n = {
4
4
  name: "CFieldBody",
@@ -1,4 +1,4 @@
1
- import { u as e, v as o, n } from "./main-CQBEuZk9.js";
1
+ import { u as e, v as o, n } from "./main-WKzC-Dnu.js";
2
2
  const r = {
3
3
  name: "CPhoneFormat",
4
4
  props: {
@@ -1,5 +1,5 @@
1
- import { C as s } from "./CCurrencyDropdown-Y_u0hgBx.js";
2
- import { n as i, q as u, r as a } from "./main-CQBEuZk9.js";
1
+ import { C as s } from "./CCurrencyDropdown-qH-3m2eP.js";
2
+ import { n as i, q as u, r as a } from "./main-WKzC-Dnu.js";
3
3
  const l = {
4
4
  name: "CPriceInput",
5
5
  components: {