@foxy.io/elements 1.23.0 → 1.24.0-beta.2

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 (271) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +2 -2
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-admin-subscription-card.js +1 -1
  5. package/dist/cdn/foxy-api-browser.js +1 -1
  6. package/dist/cdn/foxy-applied-coupon-code-card.js +1 -1
  7. package/dist/cdn/foxy-applied-coupon-code-form.js +1 -1
  8. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  9. package/dist/cdn/foxy-attribute-card.js +1 -1
  10. package/dist/cdn/foxy-attribute-form.js +1 -1
  11. package/dist/cdn/foxy-cancellation-form.js +1 -1
  12. package/dist/cdn/foxy-cart-card.js +1 -1
  13. package/dist/cdn/foxy-cart-form.js +1 -1
  14. package/dist/cdn/foxy-client-card.js +1 -0
  15. package/dist/cdn/foxy-client-form.js +1 -0
  16. package/dist/cdn/foxy-collection-page.js +1 -1
  17. package/dist/cdn/foxy-collection-pages.js +1 -1
  18. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  19. package/dist/cdn/foxy-coupon-card.js +1 -1
  20. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  21. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  22. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  23. package/dist/cdn/foxy-coupon-form.js +1 -1
  24. package/dist/cdn/foxy-custom-field-card.js +1 -1
  25. package/dist/cdn/foxy-custom-field-form.js +1 -1
  26. package/dist/cdn/foxy-customer-api.js +1 -1
  27. package/dist/cdn/foxy-customer-card.js +1 -1
  28. package/dist/cdn/foxy-customer-form.js +1 -1
  29. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  30. package/dist/cdn/foxy-customer-portal.js +1 -1
  31. package/dist/cdn/foxy-customer.js +1 -1
  32. package/dist/cdn/foxy-customers-table.js +1 -1
  33. package/dist/cdn/foxy-discount-builder.js +1 -1
  34. package/dist/cdn/foxy-discount-card.js +1 -1
  35. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  36. package/dist/cdn/foxy-donation.js +1 -1
  37. package/dist/cdn/foxy-downloadable-card.js +1 -1
  38. package/dist/cdn/foxy-downloadable-form.js +1 -1
  39. package/dist/cdn/foxy-email-template-card.js +1 -1
  40. package/dist/cdn/foxy-email-template-form.js +1 -1
  41. package/dist/cdn/foxy-error-entry-card.js +1 -1
  42. package/dist/cdn/foxy-filter-attribute-card.js +1 -0
  43. package/dist/cdn/foxy-filter-attribute-form.js +1 -0
  44. package/dist/cdn/foxy-form-dialog.js +1 -1
  45. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  46. package/dist/cdn/foxy-gift-card-card.js +1 -1
  47. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  48. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  49. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  50. package/dist/cdn/foxy-gift-card-form.js +1 -1
  51. package/dist/cdn/foxy-i18n-editor.js +2 -2
  52. package/dist/cdn/foxy-i18n.js +1 -1
  53. package/dist/cdn/foxy-integration-card.js +1 -1
  54. package/dist/cdn/foxy-integration-form.js +1 -1
  55. package/dist/cdn/foxy-item-card.js +1 -1
  56. package/dist/cdn/foxy-item-category-card.js +1 -1
  57. package/dist/cdn/foxy-item-category-form.js +1 -1
  58. package/dist/cdn/foxy-item-form.js +1 -1
  59. package/dist/cdn/foxy-item-option-card.js +1 -1
  60. package/dist/cdn/foxy-item-option-form.js +1 -1
  61. package/dist/cdn/foxy-items-form.js +1 -1
  62. package/dist/cdn/foxy-nucleon-element.js +1 -1
  63. package/dist/cdn/foxy-pagination.js +1 -1
  64. package/dist/cdn/foxy-passkey-card.js +1 -0
  65. package/dist/cdn/foxy-passkey-form.js +1 -0
  66. package/dist/cdn/foxy-payment-card.js +1 -1
  67. package/dist/cdn/foxy-payment-method-card.js +1 -1
  68. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  69. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  70. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  71. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  72. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  73. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  74. package/dist/cdn/foxy-payments-api.js +1 -1
  75. package/dist/cdn/foxy-query-builder.js +1 -1
  76. package/dist/cdn/foxy-report-form.js +1 -1
  77. package/dist/cdn/foxy-reports-table.js +1 -1
  78. package/dist/cdn/foxy-shipment-card.js +1 -1
  79. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  80. package/dist/cdn/foxy-sign-in-form.js +1 -1
  81. package/dist/cdn/foxy-spinner.js +2 -2
  82. package/dist/cdn/foxy-store-card.js +1 -1
  83. package/dist/cdn/foxy-store-form.js +1 -1
  84. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  85. package/dist/cdn/foxy-subscription-card.js +1 -1
  86. package/dist/cdn/foxy-subscription-form.js +3 -3
  87. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  88. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  89. package/dist/cdn/foxy-table.js +1 -1
  90. package/dist/cdn/foxy-tax-card.js +1 -1
  91. package/dist/cdn/foxy-tax-form.js +1 -1
  92. package/dist/cdn/foxy-template-config-form.js +1 -1
  93. package/dist/cdn/foxy-template-form.js +1 -1
  94. package/dist/cdn/foxy-template-set-card.js +1 -1
  95. package/dist/cdn/foxy-template-set-form.js +1 -1
  96. package/dist/cdn/foxy-transaction-card.js +1 -1
  97. package/dist/cdn/foxy-transaction.js +1 -1
  98. package/dist/cdn/foxy-transactions-table.js +1 -1
  99. package/dist/cdn/foxy-user-card.js +1 -1
  100. package/dist/cdn/foxy-user-form.js +1 -1
  101. package/dist/cdn/foxy-users-table.js +1 -1
  102. package/dist/cdn/foxy-webhook-card.js +1 -1
  103. package/dist/cdn/foxy-webhook-form.js +1 -1
  104. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  105. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  106. package/dist/cdn/{shared-16b542bc.js → shared-09d4fbb8.js} +2 -2
  107. package/dist/cdn/{shared-5dd31b4e.js → shared-0a248c0d.js} +1 -1
  108. package/dist/cdn/{shared-c40d85dc.js → shared-17d0db7f.js} +1 -1
  109. package/dist/cdn/{shared-7c5754a4.js → shared-1b060170.js} +1 -1
  110. package/dist/cdn/shared-1d08a5ad.js +1 -0
  111. package/dist/cdn/{shared-03b39ec4.js → shared-1d28220a.js} +1 -1
  112. package/dist/cdn/{shared-daf52401.js → shared-1eac92fa.js} +1 -1
  113. package/dist/cdn/{shared-6fb923d5.js → shared-25f64060.js} +1 -1
  114. package/dist/cdn/{shared-98755831.js → shared-307262a1.js} +1 -1
  115. package/dist/cdn/{shared-4c9f96ec.js → shared-31651a9c.js} +1 -1
  116. package/dist/cdn/{shared-a89cb472.js → shared-332f2997.js} +1 -1
  117. package/dist/cdn/shared-36725fe3.js +1 -0
  118. package/dist/cdn/{shared-6b53ef85.js → shared-379b37e6.js} +2 -2
  119. package/dist/cdn/{shared-b5517c1b.js → shared-39f3b48d.js} +1 -1
  120. package/dist/cdn/{shared-f3f5e87e.js → shared-432c5183.js} +1 -1
  121. package/dist/cdn/{shared-e28f16db.js → shared-4674063d.js} +1 -1
  122. package/dist/cdn/{shared-6f465111.js → shared-479ad951.js} +1 -1
  123. package/dist/cdn/{shared-08ff9a8d.js → shared-4904bca4.js} +1 -1
  124. package/dist/cdn/{shared-a8cf402a.js → shared-4b67d699.js} +1 -1
  125. package/dist/cdn/{shared-bd81cc08.js → shared-4bbd600d.js} +1 -1
  126. package/dist/cdn/{shared-ad396f3c.js → shared-4c956a8e.js} +1 -1
  127. package/dist/cdn/{shared-fbfb0943.js → shared-4dc58b73.js} +1 -1
  128. package/dist/cdn/{shared-39761436.js → shared-4dee79d4.js} +1 -1
  129. package/dist/cdn/{shared-b88e35b7.js → shared-51d28e6d.js} +1 -1
  130. package/dist/cdn/shared-53061389.js +1 -0
  131. package/dist/cdn/{shared-7a290f36.js → shared-59042137.js} +1 -1
  132. package/dist/cdn/{shared-068480a3.js → shared-64f98a0f.js} +1 -1
  133. package/dist/cdn/{shared-23923638.js → shared-65318cc1.js} +1 -1
  134. package/dist/cdn/shared-65ba8b39.js +1 -0
  135. package/dist/cdn/{shared-380db651.js → shared-665d6cc4.js} +1 -1
  136. package/dist/cdn/{shared-7bf46d6d.js → shared-69a21b9d.js} +1 -1
  137. package/dist/cdn/{shared-8349938a.js → shared-6abdfcf2.js} +1 -1
  138. package/dist/cdn/{shared-0dc1d012.js → shared-6dc64a17.js} +1 -1
  139. package/dist/cdn/shared-6f84ac3e.js +1 -0
  140. package/dist/cdn/{shared-86768244.js → shared-77a4d8e8.js} +1 -1
  141. package/dist/cdn/{shared-a6518411.js → shared-7995407d.js} +1 -1
  142. package/dist/cdn/shared-7f5618ba.js +1 -0
  143. package/dist/cdn/{shared-61a510d8.js → shared-8474bc4a.js} +1 -1
  144. package/dist/cdn/{shared-0543c6e0.js → shared-88e36564.js} +1 -1
  145. package/dist/cdn/{shared-ca5e1c6b.js → shared-92f27a38.js} +1 -1
  146. package/dist/cdn/{shared-e5c19ea3.js → shared-984fcdf5.js} +3 -3
  147. package/dist/cdn/{shared-43520428.js → shared-9c626d58.js} +1 -1
  148. package/dist/cdn/{shared-8b73191b.js → shared-9caffb4d.js} +1 -1
  149. package/dist/cdn/{shared-1e5292a1.js → shared-a3c73e91.js} +1 -1
  150. package/dist/cdn/{shared-3a252ccd.js → shared-a92ae606.js} +1 -1
  151. package/dist/cdn/{shared-ee13d1a6.js → shared-b0f534ef.js} +1 -1
  152. package/dist/cdn/{shared-d493355a.js → shared-b3ac59eb.js} +1 -1
  153. package/dist/cdn/{shared-e6066f46.js → shared-b48a83b0.js} +1 -1
  154. package/dist/cdn/{shared-939fc890.js → shared-ba658670.js} +1 -1
  155. package/dist/cdn/{shared-85bc54a6.js → shared-bafcab47.js} +1 -1
  156. package/dist/cdn/{shared-cd096e97.js → shared-bdb51db9.js} +1 -1
  157. package/dist/cdn/{shared-9048c076.js → shared-be24dd36.js} +1 -1
  158. package/dist/cdn/shared-bf62a65b.js +1 -0
  159. package/dist/cdn/{shared-eb900735.js → shared-c2d3b32b.js} +1 -1
  160. package/dist/cdn/{shared-3a82d3f5.js → shared-c4240bc6.js} +1 -1
  161. package/dist/cdn/{shared-ca58ef47.js → shared-c6c6ba69.js} +1 -1
  162. package/dist/cdn/{shared-de790de9.js → shared-c7f2f1ab.js} +1 -1
  163. package/dist/cdn/{shared-53fee01f.js → shared-c97e0d6e.js} +1 -1
  164. package/dist/cdn/{shared-bd819b5b.js → shared-cf269a17.js} +1 -1
  165. package/dist/cdn/{shared-4db2c7b1.js → shared-d14c2060.js} +3 -3
  166. package/dist/cdn/{shared-dcbaa1c5.js → shared-db21f6db.js} +1 -1
  167. package/dist/cdn/{shared-2756a4f0.js → shared-dccf0420.js} +1 -1
  168. package/dist/cdn/{shared-0c02b4ee.js → shared-dfe2602a.js} +1 -1
  169. package/dist/cdn/{shared-4abfda9b.js → shared-e10052d0.js} +1 -1
  170. package/dist/cdn/{shared-b95ef318.js → shared-e6828dbf.js} +1 -1
  171. package/dist/cdn/{shared-cb6f2388.js → shared-e6997950.js} +1 -1
  172. package/dist/cdn/{shared-eb4b4597.js → shared-e7c3b7b6.js} +1 -1
  173. package/dist/cdn/{shared-6eb7dc77.js → shared-e84fa0ea.js} +1 -1
  174. package/dist/cdn/{shared-6bfa699d.js → shared-e8e92fe3.js} +1 -1
  175. package/dist/cdn/shared-fe54babe.js +1 -0
  176. package/dist/cdn/{shared-aeec3cab.js → shared-fef9ecc1.js} +1 -1
  177. package/dist/cdn/{shared-c3c67413.js → shared-ff992ead.js} +1 -1
  178. package/dist/cdn/translations/client-card/en.json +10 -0
  179. package/dist/cdn/translations/client-form/en.json +74 -0
  180. package/dist/cdn/translations/filter-attribute-card/en.json +8 -0
  181. package/dist/cdn/translations/filter-attribute-form/en.json +49 -0
  182. package/dist/cdn/translations/passkey-card/en.json +9 -0
  183. package/dist/cdn/translations/passkey-form/en.json +34 -0
  184. package/dist/cdn/translations/transaction-card/en.json +8 -0
  185. package/dist/elements/private/Dialog/Dialog.js +10 -1
  186. package/dist/elements/private/Dialog/Dialog.js.map +1 -1
  187. package/dist/elements/public/ClientCard/ClientCard.d.ts +17 -0
  188. package/dist/elements/public/ClientCard/ClientCard.js +46 -0
  189. package/dist/elements/public/ClientCard/ClientCard.js.map +1 -0
  190. package/dist/elements/public/ClientCard/index.d.ts +3 -0
  191. package/dist/elements/public/ClientCard/index.js +5 -0
  192. package/dist/elements/public/ClientCard/index.js.map +1 -0
  193. package/dist/elements/public/ClientCard/types.d.ts +3 -0
  194. package/dist/elements/public/ClientCard/types.js +2 -0
  195. package/dist/elements/public/ClientCard/types.js.map +1 -0
  196. package/dist/elements/public/ClientForm/ClientForm.d.ts +62 -0
  197. package/dist/elements/public/ClientForm/ClientForm.js +108 -0
  198. package/dist/elements/public/ClientForm/ClientForm.js.map +1 -0
  199. package/dist/elements/public/ClientForm/index.d.ts +5 -0
  200. package/dist/elements/public/ClientForm/index.js +7 -0
  201. package/dist/elements/public/ClientForm/index.js.map +1 -0
  202. package/dist/elements/public/ClientForm/types.d.ts +35 -0
  203. package/dist/elements/public/ClientForm/types.js +2 -0
  204. package/dist/elements/public/ClientForm/types.js.map +1 -0
  205. package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.d.ts +31 -0
  206. package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js +113 -0
  207. package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js.map +1 -0
  208. package/dist/elements/public/FilterAttributeCard/index.d.ts +4 -0
  209. package/dist/elements/public/FilterAttributeCard/index.js +6 -0
  210. package/dist/elements/public/FilterAttributeCard/index.js.map +1 -0
  211. package/dist/elements/public/FilterAttributeCard/types.d.ts +3 -0
  212. package/dist/elements/public/FilterAttributeCard/types.js +2 -0
  213. package/dist/elements/public/FilterAttributeCard/types.js.map +1 -0
  214. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.d.ts +46 -0
  215. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js +131 -0
  216. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js.map +1 -0
  217. package/dist/elements/public/FilterAttributeForm/index.d.ts +6 -0
  218. package/dist/elements/public/FilterAttributeForm/index.js +8 -0
  219. package/dist/elements/public/FilterAttributeForm/index.js.map +1 -0
  220. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.d.ts +5 -0
  221. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js +34 -0
  222. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js.map +1 -0
  223. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.d.ts +5 -0
  224. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js +7 -0
  225. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js.map +1 -0
  226. package/dist/elements/public/FilterAttributeForm/types.d.ts +14 -0
  227. package/dist/elements/public/FilterAttributeForm/types.js +2 -0
  228. package/dist/elements/public/FilterAttributeForm/types.js.map +1 -0
  229. package/dist/elements/public/PasskeyCard/PasskeyCard.d.ts +22 -0
  230. package/dist/elements/public/PasskeyCard/PasskeyCard.js +42 -0
  231. package/dist/elements/public/PasskeyCard/PasskeyCard.js.map +1 -0
  232. package/dist/elements/public/PasskeyCard/index.d.ts +3 -0
  233. package/dist/elements/public/PasskeyCard/index.js +5 -0
  234. package/dist/elements/public/PasskeyCard/index.js.map +1 -0
  235. package/dist/elements/public/PasskeyCard/types.d.ts +33 -0
  236. package/dist/elements/public/PasskeyCard/types.js +2 -0
  237. package/dist/elements/public/PasskeyCard/types.js.map +1 -0
  238. package/dist/elements/public/PasskeyForm/PasskeyForm.d.ts +36 -0
  239. package/dist/elements/public/PasskeyForm/PasskeyForm.js +52 -0
  240. package/dist/elements/public/PasskeyForm/PasskeyForm.js.map +1 -0
  241. package/dist/elements/public/PasskeyForm/index.d.ts +6 -0
  242. package/dist/elements/public/PasskeyForm/index.js +8 -0
  243. package/dist/elements/public/PasskeyForm/index.js.map +1 -0
  244. package/dist/elements/public/PasskeyForm/types.d.ts +17 -0
  245. package/dist/elements/public/PasskeyForm/types.js +2 -0
  246. package/dist/elements/public/PasskeyForm/types.js.map +1 -0
  247. package/dist/elements/public/TransactionCard/TransactionCard.js +26 -4
  248. package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
  249. package/dist/elements/public/TransactionCard/types.d.ts +4 -1
  250. package/dist/elements/public/TransactionCard/types.js.map +1 -1
  251. package/dist/elements/public/WebhookCard/WebhookCard.js +5 -17
  252. package/dist/elements/public/WebhookCard/WebhookCard.js.map +1 -1
  253. package/dist/elements/public/WebhookCard/index.d.ts +0 -2
  254. package/dist/elements/public/WebhookCard/index.js +0 -2
  255. package/dist/elements/public/WebhookCard/index.js.map +1 -1
  256. package/dist/elements/public/index.d.ts +6 -0
  257. package/dist/elements/public/index.defined.d.ts +6 -0
  258. package/dist/elements/public/index.defined.js +6 -0
  259. package/dist/elements/public/index.defined.js.map +1 -1
  260. package/dist/elements/public/index.js +6 -0
  261. package/dist/elements/public/index.js.map +1 -1
  262. package/dist/mixins/themeable.js +4 -0
  263. package/dist/mixins/themeable.js.map +1 -1
  264. package/package.json +5 -3
  265. package/dist/cdn/shared-49d978e1.js +0 -1
  266. package/dist/cdn/shared-509a2f52.js +0 -1
  267. package/dist/cdn/shared-9e60ef60.js +0 -1
  268. package/dist/cdn/shared-bb009254.js +0 -1
  269. package/dist/cdn/shared-bfdbd733.js +0 -1
  270. package/dist/cdn/shared-c7f56c90.js +0 -1
  271. package/dist/cdn/shared-e41e53c0.js +0 -1
@@ -0,0 +1,42 @@
1
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
+ import { TwoLineCard } from "../CustomFieldCard/TwoLineCard.js";
3
+ import { html } from 'lit-html';
4
+ import uainfer from 'uainfer/src/uainfer.js';
5
+ const NS = 'passkey-card';
6
+ const Base = TranslatableMixin(TwoLineCard, NS);
7
+ /**
8
+ * Basic card displaying a saved passkey.
9
+ *
10
+ * @slot title:before
11
+ * @slot title:after
12
+ *
13
+ * @slot subtitle:before
14
+ * @slot subtitle:after
15
+ *
16
+ * @element foxy-passkey-card
17
+ * @since 1.24.0
18
+ */
19
+ export class PasskeyCard extends Base {
20
+ renderBody() {
21
+ return super.renderBody({
22
+ title: data => html `${data.credential_id}`,
23
+ subtitle: data => {
24
+ let options;
25
+ let key;
26
+ if (data.last_login_date && data.last_login_ua) {
27
+ options = {
28
+ last_login_date: new Date(data.last_login_date),
29
+ last_login_ua: uainfer.analyze(data.last_login_ua).toString(),
30
+ };
31
+ key = 'subtitle';
32
+ }
33
+ else {
34
+ options = {};
35
+ key = 'subtitle_no_data';
36
+ }
37
+ return html `<foxy-i18n infer="" key=${key} .options=${options}></foxy-i18n>`;
38
+ },
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=PasskeyCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasskeyCard.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyCard/PasskeyCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,WAAW,EAAE,0CAAuC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAE7C,MAAM,EAAE,GAAG,cAAc,CAAC;AAC1B,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAU;IACzC,UAAU;QACR,OAAO,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,aAAa,EAAE;YAC1C,QAAQ,EAAE,IAAI,CAAC,EAAE;gBACf,IAAI,OAAY,CAAC;gBACjB,IAAI,GAAW,CAAC;gBAEhB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE;oBAC9C,OAAO,GAAG;wBACR,eAAe,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;wBAC/C,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;qBAC9D,CAAC;oBACF,GAAG,GAAG,UAAU,CAAC;iBAClB;qBAAM;oBACL,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,GAAG,kBAAkB,CAAC;iBAC1B;gBAED,OAAO,IAAI,CAAA,2BAA2B,GAAG,aAAa,OAAO,eAAe,CAAC;YAC/E,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-element';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { TwoLineCard } from '../CustomFieldCard/TwoLineCard';\nimport { html } from 'lit-html';\n\nimport uainfer from 'uainfer/src/uainfer.js';\n\nconst NS = 'passkey-card';\nconst Base = TranslatableMixin(TwoLineCard, NS);\n\n/**\n * Basic card displaying a saved passkey.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @element foxy-passkey-card\n * @since 1.24.0\n */\nexport class PasskeyCard extends Base<Data> {\n renderBody(): TemplateResult {\n return super.renderBody({\n title: data => html`${data.credential_id}`,\n subtitle: data => {\n let options: any;\n let key: string;\n\n if (data.last_login_date && data.last_login_ua) {\n options = {\n last_login_date: new Date(data.last_login_date),\n last_login_ua: uainfer.analyze(data.last_login_ua).toString(),\n };\n key = 'subtitle';\n } else {\n options = {};\n key = 'subtitle_no_data';\n }\n\n return html`<foxy-i18n infer=\"\" key=${key} .options=${options}></foxy-i18n>`;\n },\n });\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import '../../internal/InternalCard/index';
2
+ import { PasskeyCard } from './PasskeyCard';
3
+ export { PasskeyCard };
@@ -0,0 +1,5 @@
1
+ import "../../internal/InternalCard/index.js";
2
+ import { PasskeyCard } from "./PasskeyCard.js";
3
+ customElements.define('foxy-passkey-card', PasskeyCard);
4
+ export { PasskeyCard };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyCard/index.ts"],"names":[],"mappings":"AAAA,8CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import '../../internal/InternalCard/index';\n\nimport { PasskeyCard } from './PasskeyCard';\n\ncustomElements.define('foxy-passkey-card', PasskeyCard);\n\nexport { PasskeyCard };\n"]}
@@ -0,0 +1,33 @@
1
+ import type { CollectionGraphLinks, CollectionGraphProps } from '@foxy.io/sdk/dist/types/core/defaults';
2
+ import type { Graph, Resource } from '@foxy.io/sdk/core';
3
+ import type { PasskeyCard } from './PasskeyCard';
4
+ import type { Renderer } from '../../../mixins/configurable';
5
+ import type { Rels } from '@foxy.io/sdk/backend';
6
+ export interface Passkeys extends Graph {
7
+ curie: 'fx:passkeys';
8
+ links: CollectionGraphLinks<Passkeys>;
9
+ props: CollectionGraphProps;
10
+ child: Passkey;
11
+ }
12
+ export interface Passkey extends Graph {
13
+ curie: 'fx:passkey';
14
+ links: {
15
+ 'self': Passkey;
16
+ 'fx:user': Rels.User;
17
+ 'fx:passkeys': Passkeys;
18
+ };
19
+ props: {
20
+ last_login_date: string | null;
21
+ last_login_ua: string | null;
22
+ credential_id: string;
23
+ date_created: string | null;
24
+ date_modified: string | null;
25
+ };
26
+ }
27
+ export declare type Data = Resource<Passkey>;
28
+ export declare type Templates = {
29
+ 'title:before'?: Renderer<PasskeyCard>;
30
+ 'title:after'?: Renderer<PasskeyCard>;
31
+ 'subtitle:before'?: Renderer<PasskeyCard>;
32
+ 'subtitle:after'?: Renderer<PasskeyCard>;
33
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n CollectionGraphLinks,\n CollectionGraphProps,\n} from '@foxy.io/sdk/dist/types/core/defaults';\n\nimport type { Graph, Resource } from '@foxy.io/sdk/core';\nimport type { PasskeyCard } from './PasskeyCard';\nimport type { Renderer } from '../../../mixins/configurable';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nexport interface Passkeys extends Graph {\n curie: 'fx:passkeys';\n links: CollectionGraphLinks<Passkeys>;\n props: CollectionGraphProps;\n child: Passkey;\n}\n\nexport interface Passkey extends Graph {\n curie: 'fx:passkey';\n links: {\n 'self': Passkey;\n 'fx:user': Rels.User;\n 'fx:passkeys': Passkeys;\n };\n props: {\n last_login_date: string | null;\n last_login_ua: string | null;\n credential_id: string;\n date_created: string | null;\n date_modified: string | null;\n };\n}\n\nexport type Data = Resource<Passkey>;\n\nexport type Templates = {\n 'title:before'?: Renderer<PasskeyCard>;\n 'title:after'?: Renderer<PasskeyCard>;\n 'subtitle:before'?: Renderer<PasskeyCard>;\n 'subtitle:after'?: Renderer<PasskeyCard>;\n};\n"]}
@@ -0,0 +1,36 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ import type { Data } from './types';
3
+ import { InternalForm } from '../../internal/InternalForm/InternalForm';
4
+ import { BooleanSelector } from '@foxy.io/sdk/core';
5
+ declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
6
+ defaultNS: string;
7
+ };
8
+ /**
9
+ * Form element for viewing and deleting passkeys (`fx:passkey`).
10
+ *
11
+ * @slot credential-id:before
12
+ * @slot credential-id:after
13
+ *
14
+ * @slot last-login-date:before
15
+ * @slot last-login-date:after
16
+ *
17
+ * @slot last-login-ua:before
18
+ * @slot last-login-ua:after
19
+ *
20
+ * @slot timestamps:before
21
+ * @slot timestamps:after
22
+ *
23
+ * @slot create:before
24
+ * @slot create:after
25
+ *
26
+ * @slot delete:before
27
+ * @slot delete:after
28
+ *
29
+ * @element foxy-passkey-form
30
+ * @since 1.24.0
31
+ */
32
+ export declare class PasskeyForm extends Base<Data> {
33
+ get readonlySelector(): BooleanSelector;
34
+ renderBody(): TemplateResult;
35
+ }
36
+ export {};
@@ -0,0 +1,52 @@
1
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
+ import { ResponsiveMixin } from "../../../mixins/responsive.js";
3
+ import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
4
+ import { html } from 'lit-element';
5
+ import { BooleanSelector } from '@foxy.io/sdk/core';
6
+ const NS = 'passkey-form';
7
+ const Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));
8
+ /**
9
+ * Form element for viewing and deleting passkeys (`fx:passkey`).
10
+ *
11
+ * @slot credential-id:before
12
+ * @slot credential-id:after
13
+ *
14
+ * @slot last-login-date:before
15
+ * @slot last-login-date:after
16
+ *
17
+ * @slot last-login-ua:before
18
+ * @slot last-login-ua:after
19
+ *
20
+ * @slot timestamps:before
21
+ * @slot timestamps:after
22
+ *
23
+ * @slot create:before
24
+ * @slot create:after
25
+ *
26
+ * @slot delete:before
27
+ * @slot delete:after
28
+ *
29
+ * @element foxy-passkey-form
30
+ * @since 1.24.0
31
+ */
32
+ export class PasskeyForm extends Base {
33
+ get readonlySelector() {
34
+ return new BooleanSelector(`credential-id last-login-date last-login-ua ${super.readonlySelector.toString()}`);
35
+ }
36
+ renderBody() {
37
+ if (!this.data) {
38
+ return html `
39
+ <div class="p-xl flex items-center justify-center">
40
+ <foxy-spinner infer="spinner" state="empty" layout="vertical"></foxy-spinner>
41
+ </div>
42
+ `;
43
+ }
44
+ return html `
45
+ <foxy-internal-text-control infer="credential-id"></foxy-internal-text-control>
46
+ <foxy-internal-text-control infer="last-login-date"></foxy-internal-text-control>
47
+ <foxy-internal-text-area-control infer="last-login-ua"></foxy-internal-text-area-control>
48
+ ${super.renderBody()}
49
+ `;
50
+ }
51
+ }
52
+ //# sourceMappingURL=PasskeyForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasskeyForm.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyForm/PasskeyForm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,EAAE,GAAG,cAAc,CAAC;AAC1B,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAU;IACzC,IAAI,gBAAgB;QAClB,OAAO,IAAI,eAAe,CACxB,+CAA+C,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CACnF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO,IAAI,CAAA;;;;OAIV,CAAC;SACH;QAED,OAAO,IAAI,CAAA;;;;QAIP,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-element';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\n\nconst NS = 'passkey-form';\nconst Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));\n\n/**\n * Form element for viewing and deleting passkeys (`fx:passkey`).\n *\n * @slot credential-id:before\n * @slot credential-id:after\n *\n * @slot last-login-date:before\n * @slot last-login-date:after\n *\n * @slot last-login-ua:before\n * @slot last-login-ua:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @element foxy-passkey-form\n * @since 1.24.0\n */\nexport class PasskeyForm extends Base<Data> {\n get readonlySelector(): BooleanSelector {\n return new BooleanSelector(\n `credential-id last-login-date last-login-ua ${super.readonlySelector.toString()}`\n );\n }\n\n renderBody(): TemplateResult {\n if (!this.data) {\n return html`\n <div class=\"p-xl flex items-center justify-center\">\n <foxy-spinner infer=\"spinner\" state=\"empty\" layout=\"vertical\"></foxy-spinner>\n </div>\n `;\n }\n\n return html`\n <foxy-internal-text-control infer=\"credential-id\"></foxy-internal-text-control>\n <foxy-internal-text-control infer=\"last-login-date\"></foxy-internal-text-control>\n <foxy-internal-text-area-control infer=\"last-login-ua\"></foxy-internal-text-area-control>\n ${super.renderBody()}\n `;\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import '../../internal/InternalTextAreaControl/index';
2
+ import '../../internal/InternalTextControl/index';
3
+ import '../../internal/InternalForm/index';
4
+ import '../Spinner/index';
5
+ import { PasskeyForm } from './PasskeyForm';
6
+ export { PasskeyForm };
@@ -0,0 +1,8 @@
1
+ import "../../internal/InternalTextAreaControl/index.js";
2
+ import "../../internal/InternalTextControl/index.js";
3
+ import "../../internal/InternalForm/index.js";
4
+ import "../Spinner/index.js";
5
+ import { PasskeyForm } from "./PasskeyForm.js";
6
+ customElements.define('foxy-passkey-form', PasskeyForm);
7
+ export { PasskeyForm };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyForm/index.ts"],"names":[],"mappings":"AAAA,yDAAsD;AACtD,qDAAkD;AAClD,8CAA2C;AAC3C,6BAA0B;AAE1B,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import '../../internal/InternalTextAreaControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\nimport '../Spinner/index';\n\nimport { PasskeyForm } from './PasskeyForm';\n\ncustomElements.define('foxy-passkey-form', PasskeyForm);\n\nexport { PasskeyForm };\n"]}
@@ -0,0 +1,17 @@
1
+ import type { PasskeyForm } from './PasskeyForm';
2
+ import type { Renderer } from '../../../mixins/configurable';
3
+ export type { Data } from '../PasskeyCard/types';
4
+ export declare type Templates = {
5
+ 'credential-id:before'?: Renderer<PasskeyForm>;
6
+ 'credential-id:after'?: Renderer<PasskeyForm>;
7
+ 'last-login-date:before'?: Renderer<PasskeyForm>;
8
+ 'last-login-date:after'?: Renderer<PasskeyForm>;
9
+ 'last-login-ua:before'?: Renderer<PasskeyForm>;
10
+ 'last-login-ua:after'?: Renderer<PasskeyForm>;
11
+ 'timestamps:before'?: Renderer<PasskeyForm>;
12
+ 'timestamps:after'?: Renderer<PasskeyForm>;
13
+ 'create:before'?: Renderer<PasskeyForm>;
14
+ 'create:after'?: Renderer<PasskeyForm>;
15
+ 'delete:before'?: Renderer<PasskeyForm>;
16
+ 'delete:after'?: Renderer<PasskeyForm>;
17
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/PasskeyForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { PasskeyForm } from './PasskeyForm';\nimport type { Renderer } from '../../../mixins/configurable';\n\nexport type { Data } from '../PasskeyCard/types';\n\nexport type Templates = {\n 'credential-id:before'?: Renderer<PasskeyForm>;\n 'credential-id:after'?: Renderer<PasskeyForm>;\n 'last-login-date:before'?: Renderer<PasskeyForm>;\n 'last-login-date:after'?: Renderer<PasskeyForm>;\n 'last-login-ua:before'?: Renderer<PasskeyForm>;\n 'last-login-ua:after'?: Renderer<PasskeyForm>;\n 'timestamps:before'?: Renderer<PasskeyForm>;\n 'timestamps:after'?: Renderer<PasskeyForm>;\n 'create:before'?: Renderer<PasskeyForm>;\n 'create:after'?: Renderer<PasskeyForm>;\n 'delete:before'?: Renderer<PasskeyForm>;\n 'delete:after'?: Renderer<PasskeyForm>;\n};\n"]}
@@ -87,7 +87,20 @@ class TransactionCard extends Base {
87
87
  if (data) {
88
88
  const amount = `${data.total_order} ${data.currency_code}`;
89
89
  const currencyDisplay = this.__currencyDisplay;
90
+ const apiTypes = [
91
+ 'subscription_cancellation',
92
+ 'subscription_modification',
93
+ 'subscription_renewal',
94
+ 'updateinfo',
95
+ ];
96
+ const type = apiTypes.includes(data.type)
97
+ ? data.type
98
+ : 'fx:subscription' in data._links
99
+ ? 'new_subscription'
100
+ : 'new_order';
90
101
  content = html `
102
+ <foxy-i18n lang=${this.lang} key="type_${type}" ns=${this.ns}></foxy-i18n>
103
+ <span> &bull; </span>
91
104
  <foxy-i18n
92
105
  options=${JSON.stringify({ amount, currencyDisplay })}
93
106
  lang=${this.lang}
@@ -109,7 +122,7 @@ class TransactionCard extends Base {
109
122
  `;
110
123
  }
111
124
  __renderStatus() {
112
- var _a, _b, _c, _d;
125
+ var _a, _b, _c, _d, _e;
113
126
  const specialIcons = {
114
127
  completed: 'icons:done-all',
115
128
  refunded: 'icons:restore',
@@ -123,13 +136,22 @@ class TransactionCard extends Base {
123
136
  declined: 'text-error',
124
137
  };
125
138
  const status = ((_a = this.data) === null || _a === void 0 ? void 0 : _a.status) || 'completed';
139
+ const source = (_b = this.data) === null || _b === void 0 ? void 0 : _b.source.substring(0, 3).toUpperCase();
126
140
  return html `
127
141
  <div data-testid="status">
128
142
  ${this.renderTemplateOrSlot('status:before')}
129
143
 
130
144
  <div class="text-tertiary text-s flex items-center space-x-s">
145
+ ${source
146
+ ? html `
147
+ <div class="bg-contrast-5 rounded-s px-xs" title=${this.t(`source_${source}`)}>
148
+ ${source}
149
+ </div>
150
+ `
151
+ : ''}
152
+
131
153
  <foxy-i18n
132
- options=${JSON.stringify({ value: (_b = this.data) === null || _b === void 0 ? void 0 : _b.transaction_date })}
154
+ options=${JSON.stringify({ value: (_c = this.data) === null || _c === void 0 ? void 0 : _c.transaction_date })}
133
155
  lang=${this.lang}
134
156
  key="time"
135
157
  ns=${this.ns}
@@ -138,9 +160,9 @@ class TransactionCard extends Base {
138
160
 
139
161
  <iron-icon
140
162
  data-testid="status-icon"
141
- class="icon-inline text-l ${(_c = specialColors[status]) !== null && _c !== void 0 ? _c : 'text-tertiary'}"
163
+ class="icon-inline text-l ${(_d = specialColors[status]) !== null && _d !== void 0 ? _d : 'text-tertiary'}"
142
164
  title=${this.t(`transaction_${status}`)}
143
- icon=${(_d = specialIcons[status]) !== null && _d !== void 0 ? _d : 'icons:schedule'}
165
+ icon=${(_e = specialIcons[status]) !== null && _e !== void 0 ? _e : 'icons:schedule'}
144
166
  >
145
167
  </iron-icon>
146
168
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/TransactionCard/TransactionCard.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,cAAc,EAAE,4CAAyC;AAGlE,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAEpD,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAC9B,MAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEtF;;;;;;;;;;;;;;GAcG;AACH,MAAM,eAAgB,SAAQ,IAAU;IAAxC;;QACE,cAAS,GAAc,EAAE,CAAC;QAElB,sBAAiB,GAAG,EAAE,CAAC;IAmLjC,CAAC;IAjLC,MAAM;;QACJ,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE1D,OAAO,IAAI,CAAA;;oBAEK,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;;;;qBAId,QAAQ,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1E,QAAQ,IAAI,SAAS;YACrB,CAAC,CAAC,IAAI,CAAA;;oBAEE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE;;eAEnF;YACH,CAAC,CAAC,EAAE;YACJ,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7E,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE;;;;kBAIjE,QAAQ,CAAC;YACf,8DAA8D,EAAE,IAAI;YACpE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SACzB,CAAC;;;;oBAIQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;;mBAE7E,IAAI,CAAC,IAAI;kBACV,IAAI,CAAC,EAAE,IAAI,YAAA,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,0CAAE,SAAS,mCAAI,EAAE;;;;;KAK3E,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,QAAQ;;QACtB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,SAAS,SAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,0CAAE,IAAI,CAAC;QAEvD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACjC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAuB,SAAS,CAAC,CAAC;YAClE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;SACtF;aAAM;YACL,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;SACnC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,aAAa;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAuB,CAAC;QAE5B,IAAI,IAAI,EAAE;YACR,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAE/C,OAAO,GAAG,IAAI,CAAA;;oBAEA,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;iBAC9C,IAAI,CAAC,IAAI;;eAEX,IAAI,CAAC,EAAE;;;OAGf,CAAC;SACH;aAAM;YACL,OAAO,GAAG,IAAI,CAAA,kBAAkB,CAAC;SAClC;QAED,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;4CACP,OAAO;UACzC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;;KAE7C,CAAC;IACJ,CAAC;IAEO,cAAc;;QACpB,MAAM,YAAY,GAA2B;YAC3C,SAAS,EAAE,gBAAgB;YAC3B,QAAQ,EAAE,eAAe;YACzB,QAAQ,EAAE,qBAAqB;YAC/B,QAAQ,EAAE,qBAAqB;YAC/B,MAAM,EAAE,6BAA6B;SACtC,CAAC;QAEF,MAAM,aAAa,GAA2B;YAC5C,SAAS,EAAE,cAAc;YACzB,QAAQ,EAAE,YAAY;YACtB,QAAQ,EAAE,YAAY;SACvB,CAAC;QAEF,MAAM,MAAM,GAAG,OAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,KAAI,WAAW,CAAC;QAEhD,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;;;;sBAI9B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,QAAE,IAAI,CAAC,IAAI,0CAAE,gBAAgB,EAAE,CAAC;mBACzD,IAAI,CAAC,IAAI;;iBAEX,IAAI,CAAC,EAAE;;;;;;wCAMgB,MAAA,aAAa,CAAC,MAAM,CAAC,mCAAI,eAAe;oBAC5D,IAAI,CAAC,CAAC,CAAC,eAAe,MAAM,EAAE,CAAC;mBAChC,MAAA,YAAY,CAAC,MAAM,CAAC,mCAAI,gBAAgB;;;;;UAKjD,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;;KAE9C,CAAC;IACJ,CAAC;IAEO,mBAAmB;;QACzB,MAAM,KAAK,eAAG,IAAI,CAAC,IAAI,0CAAE,SAAS,0CAAG,UAAU,CAAC,CAAC;QACjD,IAAI,OAAuB,CAAC;QAE5B,IAAI,KAAK,EAAE;YACT,MAAM,OAAO,GAAG;gBACd,mBAAmB,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpE,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;gBACjC,KAAK,EAAE,KAAK,CAAC,MAAM;aACpB,CAAC;YAEF,OAAO,GAAG,IAAI,CAAA;;oBAEA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;iBAC1B,IAAI,CAAC,IAAI;;eAEX,IAAI,CAAC,EAAE;;;OAGf,CAAC;SACH;aAAM;YACL,OAAO,GAAG,IAAI,CAAA,kBAAkB,CAAC;SAClC;QAED,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC;sDACH,OAAO;UACnD,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC;;KAEnD,CAAC;IACJ,CAAC;IAEO,gBAAgB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI;YAClB,CAAC,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,cAAc,GAAG;YACvF,CAAC,CAAC,IAAI,CAAA,kBAAkB,CAAC;QAE3B,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;qDACD,OAAO;UAClD,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;;KAEhD,CAAC;IACJ,CAAC;CACF;AAED,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["import { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'transaction-card';\nconst Base = ThemeableMixin(ConfigurableMixin(TranslatableMixin(NucleonElement, NS)));\n\n/**\n * Basic card displaying a transaction.\n *\n * @slot total:before\n * @slot total:after\n * @slot status:before\n * @slot status:after\n * @slot description:before\n * @slot description:after\n * @slot customer:before\n * @slot customer:after\n *\n * @element foxy-transaction-card\n * @since 1.12.0\n */\nclass TransactionCard extends Base<Data> {\n templates: Templates = {};\n\n private __currencyDisplay = '';\n\n render(): TemplateResult {\n const hiddenSelector = this.hiddenSelector;\n const hasTotal = !hiddenSelector.matches('total', true);\n const hasStatus = !hiddenSelector.matches('status', true);\n\n return html`\n <div\n aria-busy=${this.in('busy')}\n aria-live=\"polite\"\n class=\"relative leading-s font-lumo text-m\"\n >\n <div class=${classMap({ 'transition-opacity': true, 'opacity-0': !this.data })}>\n ${hasTotal || hasStatus\n ? html`\n <div class=\"flex items-center justify-between\">\n ${hasTotal ? this.__renderTotal() : ''} ${hasStatus ? this.__renderStatus() : ''}\n </div>\n `\n : ''}\n ${hiddenSelector.matches('description', true) ? '' : this.__renderDescription()}\n ${hiddenSelector.matches('customer', true) ? '' : this.__renderCustomer()}\n </div>\n\n <div\n class=${classMap({\n 'pointer-events-none absolute inset-0 flex transition-opacity': true,\n 'opacity-0': !!this.data,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n class=\"m-auto\"\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n const transaction = await super._sendGet();\n const storeLink = transaction._links['fx:store']?.href;\n\n if (typeof storeLink === 'string') {\n const store = await super._fetch<Resource<Rels.Store>>(storeLink);\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n } else {\n this.__currencyDisplay = 'symbol';\n }\n\n return transaction;\n }\n\n private __renderTotal() {\n const data = this.data;\n let content: TemplateResult;\n\n if (data) {\n const amount = `${data.total_order} ${data.currency_code}`;\n const currencyDisplay = this.__currencyDisplay;\n\n content = html`\n <foxy-i18n\n options=${JSON.stringify({ amount, currencyDisplay })}\n lang=${this.lang}\n key=\"price\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n } else {\n content = html`&ZeroWidthSpace;`;\n }\n\n return html`\n <div data-testid=\"total\">\n ${this.renderTemplateOrSlot('total:before')}\n <div class=\"font-medium truncate\">${content}</div>\n ${this.renderTemplateOrSlot('total:after')}\n </div>\n `;\n }\n\n private __renderStatus() {\n const specialIcons: Record<string, string> = {\n completed: 'icons:done-all',\n refunded: 'icons:restore',\n rejected: 'icons:highlight-off',\n declined: 'icons:highlight-off',\n voided: 'icons:remove-circle-outline',\n };\n\n const specialColors: Record<string, string> = {\n completed: 'text-success',\n rejected: 'text-error',\n declined: 'text-error',\n };\n\n const status = this.data?.status || 'completed';\n\n return html`\n <div data-testid=\"status\">\n ${this.renderTemplateOrSlot('status:before')}\n\n <div class=\"text-tertiary text-s flex items-center space-x-s\">\n <foxy-i18n\n options=${JSON.stringify({ value: this.data?.transaction_date })}\n lang=${this.lang}\n key=\"time\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <iron-icon\n data-testid=\"status-icon\"\n class=\"icon-inline text-l ${specialColors[status] ?? 'text-tertiary'}\"\n title=${this.t(`transaction_${status}`)}\n icon=${specialIcons[status] ?? 'icons:schedule'}\n >\n </iron-icon>\n </div>\n\n ${this.renderTemplateOrSlot('status:after')}\n </div>\n `;\n }\n\n private __renderDescription() {\n const items = this.data?._embedded?.['fx:items'];\n let content: TemplateResult;\n\n if (items) {\n const options = {\n most_expensive_item: [...items].sort((a, b) => a.price - b.price)[0],\n count_minus_one: items.length - 1,\n count: items.length,\n };\n\n content = html`\n <foxy-i18n\n options=${JSON.stringify(options)}\n lang=${this.lang}\n key=\"transaction_summary\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n } else {\n content = html`&ZeroWidthSpace;`;\n }\n\n return html`\n <div data-testid=\"description\">\n ${this.renderTemplateOrSlot('description:before')}\n <div class=\"text-s text-secondary truncate\">${content}</div>\n ${this.renderTemplateOrSlot('description:after')}\n </div>\n `;\n }\n\n private __renderCustomer() {\n const data = this.data;\n const content = data\n ? html`${data.customer_first_name} ${data.customer_last_name} (${data.customer_email})`\n : html`&ZeroWidthSpace;`;\n\n return html`\n <div data-testid=\"customer\">\n ${this.renderTemplateOrSlot('customer:before')}\n <div class=\"text-tertiary truncate text-s\">${content}</div>\n ${this.renderTemplateOrSlot('customer:after')}\n </div>\n `;\n }\n}\n\nexport { TransactionCard };\n"]}
1
+ {"version":3,"file":"TransactionCard.js","sourceRoot":"","sources":["../../../../src/elements/public/TransactionCard/TransactionCard.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'transaction-card';\nconst Base = ThemeableMixin(ConfigurableMixin(TranslatableMixin(NucleonElement, NS)));\n\n/**\n * Basic card displaying a transaction.\n *\n * @slot total:before\n * @slot total:after\n * @slot status:before\n * @slot status:after\n * @slot description:before\n * @slot description:after\n * @slot customer:before\n * @slot customer:after\n *\n * @element foxy-transaction-card\n * @since 1.12.0\n */\nclass TransactionCard extends Base<Data> {\n templates: Templates = {};\n\n private __currencyDisplay = '';\n\n render(): TemplateResult {\n const hiddenSelector = this.hiddenSelector;\n const hasTotal = !hiddenSelector.matches('total', true);\n const hasStatus = !hiddenSelector.matches('status', true);\n\n return html`\n <div\n aria-busy=${this.in('busy')}\n aria-live=\"polite\"\n class=\"relative leading-s font-lumo text-m\"\n >\n <div class=${classMap({ 'transition-opacity': true, 'opacity-0': !this.data })}>\n ${hasTotal || hasStatus\n ? html`\n <div class=\"flex items-center justify-between\">\n ${hasTotal ? this.__renderTotal() : ''} ${hasStatus ? this.__renderStatus() : ''}\n </div>\n `\n : ''}\n ${hiddenSelector.matches('description', true) ? '' : this.__renderDescription()}\n ${hiddenSelector.matches('customer', true) ? '' : this.__renderCustomer()}\n </div>\n\n <div\n class=${classMap({\n 'pointer-events-none absolute inset-0 flex transition-opacity': true,\n 'opacity-0': !!this.data,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n class=\"m-auto\"\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n const transaction = await super._sendGet();\n const storeLink = transaction._links['fx:store']?.href;\n\n if (typeof storeLink === 'string') {\n const store = await super._fetch<Resource<Rels.Store>>(storeLink);\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n } else {\n this.__currencyDisplay = 'symbol';\n }\n\n return transaction;\n }\n\n private __renderTotal() {\n const data = this.data;\n let content: TemplateResult;\n\n if (data) {\n const amount = `${data.total_order} ${data.currency_code}`;\n const currencyDisplay = this.__currencyDisplay;\n const apiTypes = [\n 'subscription_cancellation',\n 'subscription_modification',\n 'subscription_renewal',\n 'updateinfo',\n ];\n\n const type = apiTypes.includes(data.type)\n ? data.type\n : 'fx:subscription' in data._links\n ? 'new_subscription'\n : 'new_order';\n\n content = html`\n <foxy-i18n lang=${this.lang} key=\"type_${type}\" ns=${this.ns}></foxy-i18n>\n <span> &bull; </span>\n <foxy-i18n\n options=${JSON.stringify({ amount, currencyDisplay })}\n lang=${this.lang}\n key=\"price\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n } else {\n content = html`&ZeroWidthSpace;`;\n }\n\n return html`\n <div data-testid=\"total\">\n ${this.renderTemplateOrSlot('total:before')}\n <div class=\"font-medium truncate\">${content}</div>\n ${this.renderTemplateOrSlot('total:after')}\n </div>\n `;\n }\n\n private __renderStatus() {\n const specialIcons: Record<string, string> = {\n completed: 'icons:done-all',\n refunded: 'icons:restore',\n rejected: 'icons:highlight-off',\n declined: 'icons:highlight-off',\n voided: 'icons:remove-circle-outline',\n };\n\n const specialColors: Record<string, string> = {\n completed: 'text-success',\n rejected: 'text-error',\n declined: 'text-error',\n };\n\n const status = this.data?.status || 'completed';\n const source = this.data?.source.substring(0, 3).toUpperCase();\n\n return html`\n <div data-testid=\"status\">\n ${this.renderTemplateOrSlot('status:before')}\n\n <div class=\"text-tertiary text-s flex items-center space-x-s\">\n ${source\n ? html`\n <div class=\"bg-contrast-5 rounded-s px-xs\" title=${this.t(`source_${source}`)}>\n ${source}\n </div>\n `\n : ''}\n\n <foxy-i18n\n options=${JSON.stringify({ value: this.data?.transaction_date })}\n lang=${this.lang}\n key=\"time\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <iron-icon\n data-testid=\"status-icon\"\n class=\"icon-inline text-l ${specialColors[status] ?? 'text-tertiary'}\"\n title=${this.t(`transaction_${status}`)}\n icon=${specialIcons[status] ?? 'icons:schedule'}\n >\n </iron-icon>\n </div>\n\n ${this.renderTemplateOrSlot('status:after')}\n </div>\n `;\n }\n\n private __renderDescription() {\n const items = this.data?._embedded?.['fx:items'];\n let content: TemplateResult;\n\n if (items) {\n const options = {\n most_expensive_item: [...items].sort((a, b) => a.price - b.price)[0],\n count_minus_one: items.length - 1,\n count: items.length,\n };\n\n content = html`\n <foxy-i18n\n options=${JSON.stringify(options)}\n lang=${this.lang}\n key=\"transaction_summary\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n } else {\n content = html`&ZeroWidthSpace;`;\n }\n\n return html`\n <div data-testid=\"description\">\n ${this.renderTemplateOrSlot('description:before')}\n <div class=\"text-s text-secondary truncate\">${content}</div>\n ${this.renderTemplateOrSlot('description:after')}\n </div>\n `;\n }\n\n private __renderCustomer() {\n const data = this.data;\n const content = data\n ? html`${data.customer_first_name} ${data.customer_last_name} (${data.customer_email})`\n : html`&ZeroWidthSpace;`;\n\n return html`\n <div data-testid=\"customer\">\n ${this.renderTemplateOrSlot('customer:before')}\n <div class=\"text-tertiary truncate text-s\">${content}</div>\n ${this.renderTemplateOrSlot('customer:after')}\n </div>\n `;\n }\n}\n\nexport { TransactionCard };\n"]}
@@ -4,7 +4,10 @@ import { Resource } from '@foxy.io/sdk/core';
4
4
  import { TransactionCard } from './TransactionCard';
5
5
  export declare type Data = Resource<Rels.Transaction, {
6
6
  zoom: 'items';
7
- }>;
7
+ }> & {
8
+ source: string;
9
+ type: string;
10
+ };
8
11
  export declare type Templates = Partial<{
9
12
  'total:before': Renderer<TransactionCard>;
10
13
  'total:after': Renderer<TransactionCard>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/TransactionCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Rels } from '@foxy.io/sdk/backend';\nimport { Renderer } from '../../../mixins/configurable';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { TransactionCard } from './TransactionCard';\n\nexport type Data = Resource<Rels.Transaction, { zoom: 'items' }>;\n\nexport type Templates = Partial<{\n 'total:before': Renderer<TransactionCard>;\n 'total:after': Renderer<TransactionCard>;\n 'status:before': Renderer<TransactionCard>;\n 'status:after': Renderer<TransactionCard>;\n 'description:before': Renderer<TransactionCard>;\n 'description:after': Renderer<TransactionCard>;\n 'customer:before': Renderer<TransactionCard>;\n 'customer:after': Renderer<TransactionCard>;\n}>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/TransactionCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Rels } from '@foxy.io/sdk/backend';\nimport { Renderer } from '../../../mixins/configurable';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { TransactionCard } from './TransactionCard';\n\nexport type Data = Resource<Rels.Transaction, { zoom: 'items' }> & { source: string; type: string };\n\nexport type Templates = Partial<{\n 'total:before': Renderer<TransactionCard>;\n 'total:after': Renderer<TransactionCard>;\n 'status:before': Renderer<TransactionCard>;\n 'status:after': Renderer<TransactionCard>;\n 'description:before': Renderer<TransactionCard>;\n 'description:after': Renderer<TransactionCard>;\n 'customer:before': Renderer<TransactionCard>;\n 'customer:after': Renderer<TransactionCard>;\n}>;\n"]}
@@ -11,24 +11,12 @@ export class WebhookCard extends TranslatableMixin(InternalCard, 'webhook-card')
11
11
  renderBody() {
12
12
  var _a, _b, _c, _d;
13
13
  return html `
14
- <div class="grid grid-cols-1 gap-s leading-none">
15
- <p class="flex justify-between items-center font-medium">
16
- <span class="truncate">${(_a = this.data) === null || _a === void 0 ? void 0 : _a.name}&ZeroWidthSpace;</span>
17
- <span class="uppercase inline-block text-xs bg-contrast-5 rounded p-xs flex-shrink-0">
18
- ${(_b = this.data) === null || _b === void 0 ? void 0 : _b.format}&ZeroWidthSpace;
19
- </span>
14
+ <div class="grid grid-cols-1 leading-s -my-xs">
15
+ <p class="text-m truncate text-body font-medium">${(_a = this.data) === null || _a === void 0 ? void 0 : _a.name}&ZeroWidthSpace;</p>
16
+ <p class="text-s truncate text-secondary">${(_b = this.data) === null || _b === void 0 ? void 0 : _b.url}&ZeroWidthSpace;</p>
17
+ <p class="text-s truncate text-tertiary">
18
+ ${(_c = this.data) === null || _c === void 0 ? void 0 : _c.format} &bull; ${(_d = this.data) === null || _d === void 0 ? void 0 : _d.event_resource}&ZeroWidthSpace;
20
19
  </p>
21
-
22
- <div class="flex items-center gap-s text-secondary">
23
- <iron-icon class="icon-inline flex-shrink-0" icon="icons:language"></iron-icon>
24
- <p class="truncate">${(_c = this.data) === null || _c === void 0 ? void 0 : _c.url}&ZeroWidthSpace;</p>
25
- </div>
26
-
27
- <div class="flex items-center gap-s text-secondary">
28
- <iron-icon class="icon-inline flex-shrink-0" icon="icons:settings-input-antenna">
29
- </iron-icon>
30
- <p class="truncate">${(_d = this.data) === null || _d === void 0 ? void 0 : _d.event_resource}&ZeroWidthSpace;</p>
31
- </div>
32
20
  </div>
33
21
  `;
34
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WebhookCard.js","sourceRoot":"","sources":["../../../../src/elements/public/WebhookCard/WebhookCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AAEjE;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAO;IACpF,UAAU;;QACR,OAAO,IAAI,CAAA;;;mCAGoB,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI;;cAEpC,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM;;;;;;gCAMC,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG;;;;;;gCAMd,MAAA,IAAI,CAAC,IAAI,0CAAE,cAAc;;;KAGpD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { html } from 'lit-html';\nimport { TranslatableMixin } from '../../../mixins/translatable';\n\n/**\n * Basic card displaying webhook (`fx:webhook`) info.\n *\n * @element foxy-webhook-card\n * @since 1.17.0\n */\nexport class WebhookCard extends TranslatableMixin(InternalCard, 'webhook-card')<Data> {\n renderBody(): TemplateResult {\n return html`\n <div class=\"grid grid-cols-1 gap-s leading-none\">\n <p class=\"flex justify-between items-center font-medium\">\n <span class=\"truncate\">${this.data?.name}&ZeroWidthSpace;</span>\n <span class=\"uppercase inline-block text-xs bg-contrast-5 rounded p-xs flex-shrink-0\">\n ${this.data?.format}&ZeroWidthSpace;\n </span>\n </p>\n\n <div class=\"flex items-center gap-s text-secondary\">\n <iron-icon class=\"icon-inline flex-shrink-0\" icon=\"icons:language\"></iron-icon>\n <p class=\"truncate\">${this.data?.url}&ZeroWidthSpace;</p>\n </div>\n\n <div class=\"flex items-center gap-s text-secondary\">\n <iron-icon class=\"icon-inline flex-shrink-0\" icon=\"icons:settings-input-antenna\">\n </iron-icon>\n <p class=\"truncate\">${this.data?.event_resource}&ZeroWidthSpace;</p>\n </div>\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"WebhookCard.js","sourceRoot":"","sources":["../../../../src/elements/public/WebhookCard/WebhookCard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AAEjE;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAO;IACpF,UAAU;;QACR,OAAO,IAAI,CAAA;;2DAE4C,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI;oDACtB,MAAA,IAAI,CAAC,IAAI,0CAAE,GAAG;;YAEtD,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAM,WAAW,MAAA,IAAI,CAAC,IAAI,0CAAE,cAAc;;;KAG5D,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { Data } from './types';\n\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { html } from 'lit-html';\nimport { TranslatableMixin } from '../../../mixins/translatable';\n\n/**\n * Basic card displaying webhook (`fx:webhook`) info.\n *\n * @element foxy-webhook-card\n * @since 1.17.0\n */\nexport class WebhookCard extends TranslatableMixin(InternalCard, 'webhook-card')<Data> {\n renderBody(): TemplateResult {\n return html`\n <div class=\"grid grid-cols-1 leading-s -my-xs\">\n <p class=\"text-m truncate text-body font-medium\">${this.data?.name}&ZeroWidthSpace;</p>\n <p class=\"text-s truncate text-secondary\">${this.data?.url}&ZeroWidthSpace;</p>\n <p class=\"text-s truncate text-tertiary\">\n ${this.data?.format} &bull; ${this.data?.event_resource}&ZeroWidthSpace;\n </p>\n </div>\n `;\n }\n}\n"]}
@@ -1,5 +1,3 @@
1
- import '@polymer/iron-icons';
2
- import '@polymer/iron-icon';
3
1
  import '../../internal/InternalCard/index';
4
2
  import { WebhookCard } from './WebhookCard';
5
3
  export { WebhookCard };
@@ -1,5 +1,3 @@
1
- import '@polymer/iron-icons';
2
- import '@polymer/iron-icon';
3
1
  import "../../internal/InternalCard/index.js";
4
2
  import { WebhookCard } from "./WebhookCard.js";
5
3
  customElements.define('foxy-webhook-card', WebhookCard);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/WebhookCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAE5B,8CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import '@polymer/iron-icons';\nimport '@polymer/iron-icon';\n\nimport '../../internal/InternalCard/index';\n\nimport { WebhookCard } from './WebhookCard';\n\ncustomElements.define('foxy-webhook-card', WebhookCard);\n\nexport { WebhookCard };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/WebhookCard/index.ts"],"names":[],"mappings":"AAAA,8CAA2C;AAE3C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAE5C,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import '../../internal/InternalCard/index';\n\nimport { WebhookCard } from './WebhookCard';\n\ncustomElements.define('foxy-webhook-card', WebhookCard);\n\nexport { WebhookCard };\n"]}
@@ -11,6 +11,8 @@ export { AttributeForm } from './AttributeForm/AttributeForm';
11
11
  export { CancellationForm } from './CancellationForm/CancellationForm';
12
12
  export { CartCard } from './CartCard/CartCard';
13
13
  export { CartForm } from './CartForm/CartForm';
14
+ export { ClientCard } from './ClientCard/ClientCard';
15
+ export { ClientForm } from './ClientForm/ClientForm';
14
16
  export { CollectionPage } from './CollectionPage/CollectionPage';
15
17
  export { CollectionPages } from './CollectionPages/CollectionPages';
16
18
  export { CopyToClipboard } from './CopyToClipboard/CopyToClipboard';
@@ -39,6 +41,8 @@ export { DownloadableForm } from './DownloadableForm/DownloadableForm';
39
41
  export { EmailTemplateCard } from './EmailTemplateCard/EmailTemplateCard';
40
42
  export { EmailTemplateForm } from './EmailTemplateForm/EmailTemplateForm';
41
43
  export { ErrorEntryCard } from './ErrorEntryCard/ErrorEntryCard';
44
+ export { FilterAttributeCard } from './FilterAttributeCard/FilterAttributeCard';
45
+ export { FilterAttributeForm } from './FilterAttributeForm/FilterAttributeForm';
42
46
  export { FormDialog } from './FormDialog/FormDialog';
43
47
  export { GenerateCodesForm } from './GenerateCodesForm/GenerateCodesForm';
44
48
  export { GiftCardCard } from './GiftCardCard/GiftCardCard';
@@ -59,6 +63,8 @@ export { ItemOptionForm } from './ItemOptionForm/ItemOptionForm';
59
63
  export { ItemsForm, Item } from './ItemsForm/ItemsForm';
60
64
  export { NucleonElement } from './NucleonElement/NucleonElement';
61
65
  export { Pagination } from './Pagination/Pagination';
66
+ export { PasskeyCard } from './PasskeyCard/PasskeyCard';
67
+ export { PasskeyForm } from './PasskeyForm/PasskeyForm';
62
68
  export { PaymentCard } from './PaymentCard/PaymentCard';
63
69
  export { ShipmentCard } from './ShipmentCard/ShipmentCard';
64
70
  export { ShippingMethodCard } from './ShippingMethodCard/ShippingMethodCard';
@@ -11,6 +11,8 @@ export { AttributeForm } from './AttributeForm/index';
11
11
  export { CancellationForm } from './CancellationForm/index';
12
12
  export { CartCard } from './CartCard/index';
13
13
  export { CartForm } from './CartForm/index';
14
+ export { ClientCard } from './ClientCard/index';
15
+ export { ClientForm } from './ClientForm/index';
14
16
  export { CollectionPage } from './CollectionPage/index';
15
17
  export { CollectionPages } from './CollectionPages/index';
16
18
  export { CopyToClipboard } from './CopyToClipboard/index';
@@ -39,6 +41,8 @@ export { DownloadableForm } from './DownloadableForm/index';
39
41
  export { EmailTemplateCard } from './EmailTemplateCard/index';
40
42
  export { EmailTemplateForm } from './EmailTemplateForm/index';
41
43
  export { ErrorEntryCard } from './ErrorEntryCard/index';
44
+ export { FilterAttributeCard } from './FilterAttributeCard/index';
45
+ export { FilterAttributeForm } from './FilterAttributeForm/index';
42
46
  export { FormDialog } from './FormDialog/index';
43
47
  export { GenerateCodesForm } from './GenerateCodesForm/index';
44
48
  export { GiftCardCard } from './GiftCardCard/index';
@@ -59,6 +63,8 @@ export { ItemOptionForm } from './ItemOptionForm/index';
59
63
  export { ItemsForm, Item } from './ItemsForm/index';
60
64
  export { NucleonElement } from './NucleonElement/index';
61
65
  export { Pagination } from './Pagination/index';
66
+ export { PasskeyCard } from './PasskeyCard/index';
67
+ export { PasskeyForm } from './PasskeyForm/index';
62
68
  export { PaymentCard } from './PaymentCard/index';
63
69
  export { ShipmentCard } from './ShipmentCard/index';
64
70
  export { ShippingMethodCard } from './ShippingMethodCard/index';
@@ -11,6 +11,8 @@ export { AttributeForm } from "./AttributeForm/index.js";
11
11
  export { CancellationForm } from "./CancellationForm/index.js";
12
12
  export { CartCard } from "./CartCard/index.js";
13
13
  export { CartForm } from "./CartForm/index.js";
14
+ export { ClientCard } from "./ClientCard/index.js";
15
+ export { ClientForm } from "./ClientForm/index.js";
14
16
  export { CollectionPage } from "./CollectionPage/index.js";
15
17
  export { CollectionPages } from "./CollectionPages/index.js";
16
18
  export { CopyToClipboard } from "./CopyToClipboard/index.js";
@@ -39,6 +41,8 @@ export { DownloadableForm } from "./DownloadableForm/index.js";
39
41
  export { EmailTemplateCard } from "./EmailTemplateCard/index.js";
40
42
  export { EmailTemplateForm } from "./EmailTemplateForm/index.js";
41
43
  export { ErrorEntryCard } from "./ErrorEntryCard/index.js";
44
+ export { FilterAttributeCard } from "./FilterAttributeCard/index.js";
45
+ export { FilterAttributeForm } from "./FilterAttributeForm/index.js";
42
46
  export { FormDialog } from "./FormDialog/index.js";
43
47
  export { GenerateCodesForm } from "./GenerateCodesForm/index.js";
44
48
  export { GiftCardCard } from "./GiftCardCard/index.js";
@@ -59,6 +63,8 @@ export { ItemOptionForm } from "./ItemOptionForm/index.js";
59
63
  export { ItemsForm, Item } from "./ItemsForm/index.js";
60
64
  export { NucleonElement } from "./NucleonElement/index.js";
61
65
  export { Pagination } from "./Pagination/index.js";
66
+ export { PasskeyCard } from "./PasskeyCard/index.js";
67
+ export { PasskeyForm } from "./PasskeyForm/index.js";
62
68
  export { PaymentCard } from "./PaymentCard/index.js";
63
69
  export { ShipmentCard } from "./ShipmentCard/index.js";
64
70
  export { ShippingMethodCard } from "./ShippingMethodCard/index.js";