@unidy.io/sdk 1.1.4 → 1.2.0-alpha2

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 (398) hide show
  1. package/dist/cjs/app-globals-DSKjcXX_.js.map +1 -1
  2. package/dist/cjs/{auth-store-BaxuIp4z.js → auth-store-DC9EVec8.js} +2 -3
  3. package/dist/cjs/auth-store-DC9EVec8.js.map +1 -0
  4. package/dist/cjs/{i18n-BoDZ8kd2.js → i18n-BAZB-eHh.js} +2 -8
  5. package/dist/cjs/{i18n-BoDZ8kd2.js.map → i18n-BAZB-eHh.js.map} +1 -1
  6. package/dist/cjs/{index-R2MKLaem.js → index-CvFbf5-D.js} +1477 -1105
  7. package/dist/cjs/index-CvFbf5-D.js.map +1 -0
  8. package/dist/cjs/index.cjs.js +6 -5
  9. package/dist/cjs/index.cjs.js.map +1 -1
  10. package/dist/cjs/{newsletter-helpers-DR0vsegt.js → newsletter-helpers-Dj0yYHZf.js} +61 -74
  11. package/dist/cjs/newsletter-helpers-Dj0yYHZf.js.map +1 -0
  12. package/dist/cjs/{profile-helpers-B2h2III_.js → profile-helpers-D66Ycaft.js} +3 -3
  13. package/dist/cjs/{profile-helpers-B2h2III_.js.map → profile-helpers-D66Ycaft.js.map} +1 -1
  14. package/dist/cjs/u-conditional-render.cjs.entry.js +5 -6
  15. package/dist/cjs/u-conditional-render.entry.cjs.js.map +1 -1
  16. package/dist/cjs/u-config.cjs.entry.js +5 -6
  17. package/dist/cjs/u-config.entry.cjs.js.map +1 -1
  18. package/dist/cjs/u-email-field.cjs.entry.js +2 -2
  19. package/dist/cjs/u-error-message.cjs.entry.js +3 -3
  20. package/dist/cjs/u-error-message.entry.cjs.js.map +1 -1
  21. package/dist/cjs/u-field.u-raw-field.entry.cjs.js.map +1 -1
  22. package/dist/cjs/u-field_2.cjs.entry.js +2 -2
  23. package/dist/cjs/u-full-profile.cjs.entry.js +1 -1
  24. package/dist/cjs/u-logout-button.cjs.entry.js +6 -7
  25. package/dist/cjs/u-logout-button.entry.cjs.js.map +1 -1
  26. package/dist/cjs/u-magic-code-field.cjs.entry.js +5 -6
  27. package/dist/cjs/u-magic-code-field.entry.cjs.js.map +1 -1
  28. package/dist/cjs/u-missing-field.cjs.entry.js +1 -1
  29. package/dist/cjs/u-missing-fields-submit-button.cjs.entry.js +9 -5
  30. package/dist/cjs/u-missing-fields-submit-button.entry.cjs.js.map +1 -1
  31. package/dist/cjs/u-newsletter-checkbox.cjs.entry.js +5 -6
  32. package/dist/cjs/u-newsletter-checkbox.entry.cjs.js.map +1 -1
  33. package/dist/cjs/u-newsletter-logout-button.cjs.entry.js +6 -7
  34. package/dist/cjs/u-newsletter-logout-button.entry.cjs.js.map +1 -1
  35. package/dist/cjs/u-newsletter-preference-checkbox.cjs.entry.js +5 -6
  36. package/dist/cjs/u-newsletter-preference-checkbox.entry.cjs.js.map +1 -1
  37. package/dist/cjs/u-newsletter-resend-doi-button.cjs.entry.js +4 -5
  38. package/dist/cjs/u-newsletter-resend-doi-button.entry.cjs.js.map +1 -1
  39. package/dist/cjs/u-newsletter-root.cjs.entry.js +5 -6
  40. package/dist/cjs/u-newsletter-root.entry.cjs.js.map +1 -1
  41. package/dist/cjs/u-newsletter-toggle-subscription-button.cjs.entry.js +4 -5
  42. package/dist/cjs/u-newsletter-toggle-subscription-button.entry.cjs.js.map +1 -1
  43. package/dist/cjs/u-passkey.cjs.entry.js +5 -6
  44. package/dist/cjs/u-passkey.entry.cjs.js.map +1 -1
  45. package/dist/cjs/u-password-field.cjs.entry.js +2 -2
  46. package/dist/cjs/u-profile.u-submit-button.entry.cjs.js.map +1 -1
  47. package/dist/cjs/u-profile_2.cjs.entry.js +35 -55
  48. package/dist/cjs/u-registration-button.cjs.entry.js +2 -2
  49. package/dist/cjs/u-reset-password-button.cjs.entry.js +4 -5
  50. package/dist/cjs/u-reset-password-button.entry.cjs.js.map +1 -1
  51. package/dist/cjs/u-send-magic-code-button.cjs.entry.js +5 -6
  52. package/dist/cjs/u-send-magic-code-button.entry.cjs.js.map +1 -1
  53. package/dist/cjs/u-signed-in.cjs.entry.js +1 -1
  54. package/dist/cjs/u-signin-root.cjs.entry.js +1 -1
  55. package/dist/cjs/u-signin-step.cjs.entry.js +5 -6
  56. package/dist/cjs/u-signin-step.entry.cjs.js.map +1 -1
  57. package/dist/cjs/u-signin-strategy.cjs.entry.js +1 -1
  58. package/dist/cjs/u-social-login-button.cjs.entry.js +2 -2
  59. package/dist/cjs/u-spinner.cjs.entry.js +1 -1
  60. package/dist/cjs/u-spinner.entry.cjs.js.map +1 -1
  61. package/dist/cjs/u-ticketable-list.cjs.entry.js +39 -29
  62. package/dist/cjs/u-ticketable-list.entry.cjs.js.map +1 -1
  63. package/dist/collection/api/base-client.js +129 -0
  64. package/dist/collection/api/base-client.js.map +1 -0
  65. package/dist/collection/api/base-service.js +72 -0
  66. package/dist/collection/api/base-service.js.map +1 -0
  67. package/dist/collection/api/client.js +18 -139
  68. package/dist/collection/api/client.js.map +1 -1
  69. package/dist/collection/api/index.js +25 -5
  70. package/dist/collection/api/index.js.map +1 -1
  71. package/dist/collection/api/shared.js +11 -2
  72. package/dist/collection/api/shared.js.map +1 -1
  73. package/dist/collection/api/standalone.js +88 -0
  74. package/dist/collection/api/standalone.js.map +1 -0
  75. package/dist/collection/auth/api/auth.js +66 -124
  76. package/dist/collection/auth/api/auth.js.map +1 -1
  77. package/dist/collection/auth/api/schemas.js +78 -0
  78. package/dist/collection/auth/api/schemas.js.map +1 -0
  79. package/dist/collection/auth/auth-helpers.js +47 -36
  80. package/dist/collection/auth/auth-helpers.js.map +1 -1
  81. package/dist/collection/auth/components/missing-fields-submit-button/missing-fields-submit-button.js +4 -1
  82. package/dist/collection/auth/components/missing-fields-submit-button/missing-fields-submit-button.js.map +1 -1
  83. package/dist/collection/auth/components/password-field/password-field.js +1 -1
  84. package/dist/collection/auth/passkey-auth.js +8 -6
  85. package/dist/collection/auth/passkey-auth.js.map +1 -1
  86. package/dist/collection/auth/store/auth-store.js +0 -1
  87. package/dist/collection/auth/store/auth-store.js.map +1 -1
  88. package/dist/collection/locales/de.json +0 -1
  89. package/dist/collection/locales/en.json +0 -1
  90. package/dist/collection/locales/fr.json +0 -1
  91. package/dist/collection/locales/it.json +0 -1
  92. package/dist/collection/locales/nl_be.json +0 -1
  93. package/dist/collection/locales/ro.json +0 -1
  94. package/dist/collection/newsletter/api/newsletters.js +192 -167
  95. package/dist/collection/newsletter/api/newsletters.js.map +1 -1
  96. package/dist/collection/newsletter/api/schemas.js +112 -0
  97. package/dist/collection/newsletter/api/schemas.js.map +1 -0
  98. package/dist/collection/newsletter/newsletter-helpers.js +57 -70
  99. package/dist/collection/newsletter/newsletter-helpers.js.map +1 -1
  100. package/dist/collection/profile/api/profile.js +56 -155
  101. package/dist/collection/profile/api/profile.js.map +1 -1
  102. package/dist/collection/profile/api/schemas.js +120 -0
  103. package/dist/collection/profile/api/schemas.js.map +1 -0
  104. package/dist/collection/profile/components/field/field.css +1 -1
  105. package/dist/collection/profile/components/profile/profile.js +35 -101
  106. package/dist/collection/profile/components/profile/profile.js.map +1 -1
  107. package/dist/collection/shared/components/config/config.js +2 -2
  108. package/dist/collection/shared/components/error-message/error-message.js +3 -3
  109. package/dist/collection/shared/components/error-message/error-message.js.map +1 -1
  110. package/dist/collection/shared/components/spinner/spinner.css +1 -1
  111. package/dist/collection/shared/components/submit-button/submit-button.css +1 -1
  112. package/dist/collection/ticketable/api/schemas.js +58 -9
  113. package/dist/collection/ticketable/api/schemas.js.map +1 -1
  114. package/dist/collection/ticketable/api/subscriptions.js +13 -44
  115. package/dist/collection/ticketable/api/subscriptions.js.map +1 -1
  116. package/dist/collection/ticketable/api/ticketable-service.js +74 -0
  117. package/dist/collection/ticketable/api/ticketable-service.js.map +1 -0
  118. package/dist/collection/ticketable/api/tickets.js +13 -45
  119. package/dist/collection/ticketable/api/tickets.js.map +1 -1
  120. package/dist/collection/ticketable/components/ticketable-list/ticketable-list.js +37 -77
  121. package/dist/collection/ticketable/components/ticketable-list/ticketable-list.js.map +1 -1
  122. package/dist/components/auth-store.js +0 -1
  123. package/dist/components/auth-store.js.map +1 -1
  124. package/dist/components/field.js +1 -1
  125. package/dist/components/field.js.map +1 -1
  126. package/dist/components/i18n.js +0 -6
  127. package/dist/components/i18n.js.map +1 -1
  128. package/dist/components/index.js +1 -2
  129. package/dist/components/index.js.map +1 -1
  130. package/dist/components/index2.js +1475 -1106
  131. package/dist/components/index2.js.map +1 -1
  132. package/dist/components/newsletter-helpers.js +57 -70
  133. package/dist/components/newsletter-helpers.js.map +1 -1
  134. package/dist/components/profile.js +34 -54
  135. package/dist/components/profile.js.map +1 -1
  136. package/dist/components/spinner.js +1 -1
  137. package/dist/components/spinner.js.map +1 -1
  138. package/dist/components/submit-button.js +1 -1
  139. package/dist/components/submit-button.js.map +1 -1
  140. package/dist/components/u-config.js +1 -2
  141. package/dist/components/u-config.js.map +1 -1
  142. package/dist/components/u-error-message.js +2 -2
  143. package/dist/components/u-error-message.js.map +1 -1
  144. package/dist/components/u-logout-button.js +1 -1
  145. package/dist/components/u-magic-code-field.js +1 -1
  146. package/dist/components/u-missing-fields-submit-button.js +4 -1
  147. package/dist/components/u-missing-fields-submit-button.js.map +1 -1
  148. package/dist/components/u-newsletter-root.js +1 -1
  149. package/dist/components/u-passkey.js +1 -1
  150. package/dist/components/u-reset-password-button.js +1 -1
  151. package/dist/components/u-send-magic-code-button.js +1 -1
  152. package/dist/components/u-signin-step.js +1 -1
  153. package/dist/components/u-ticketable-list.js +36 -29
  154. package/dist/components/u-ticketable-list.js.map +1 -1
  155. package/dist/esm/app-globals-CPU9ZcqZ.js.map +1 -1
  156. package/dist/esm/{auth-store-CVvBlKGv.js → auth-store-BMqUdTpC.js} +2 -3
  157. package/dist/esm/auth-store-BMqUdTpC.js.map +1 -0
  158. package/dist/esm/{i18n-CLdWzy5J.js → i18n-BANodpxG.js} +2 -8
  159. package/dist/esm/{i18n-CLdWzy5J.js.map → i18n-BANodpxG.js.map} +1 -1
  160. package/dist/esm/{index-DSDkaHWI.js → index-2p1QEJrx.js} +1477 -1108
  161. package/dist/esm/index-2p1QEJrx.js.map +1 -0
  162. package/dist/esm/index.js +3 -4
  163. package/dist/esm/index.js.map +1 -1
  164. package/dist/esm/{newsletter-helpers-Dc_24im3.js → newsletter-helpers-D64LTcSM.js} +61 -74
  165. package/dist/esm/newsletter-helpers-D64LTcSM.js.map +1 -0
  166. package/dist/esm/{profile-helpers-CglNd6Nw.js → profile-helpers-DAvXZ9Uj.js} +3 -3
  167. package/dist/esm/{profile-helpers-CglNd6Nw.js.map → profile-helpers-DAvXZ9Uj.js.map} +1 -1
  168. package/dist/esm/u-conditional-render.entry.js +5 -6
  169. package/dist/esm/u-conditional-render.entry.js.map +1 -1
  170. package/dist/esm/u-config.entry.js +4 -5
  171. package/dist/esm/u-config.entry.js.map +1 -1
  172. package/dist/esm/u-email-field.entry.js +2 -2
  173. package/dist/esm/u-error-message.entry.js +3 -3
  174. package/dist/esm/u-error-message.entry.js.map +1 -1
  175. package/dist/esm/u-field.u-raw-field.entry.js.map +1 -1
  176. package/dist/esm/u-field_2.entry.js +2 -2
  177. package/dist/esm/u-full-profile.entry.js +1 -1
  178. package/dist/esm/u-logout-button.entry.js +5 -6
  179. package/dist/esm/u-logout-button.entry.js.map +1 -1
  180. package/dist/esm/u-magic-code-field.entry.js +4 -5
  181. package/dist/esm/u-magic-code-field.entry.js.map +1 -1
  182. package/dist/esm/u-missing-field.entry.js +1 -1
  183. package/dist/esm/u-missing-fields-submit-button.entry.js +9 -5
  184. package/dist/esm/u-missing-fields-submit-button.entry.js.map +1 -1
  185. package/dist/esm/u-newsletter-checkbox.entry.js +5 -6
  186. package/dist/esm/u-newsletter-checkbox.entry.js.map +1 -1
  187. package/dist/esm/u-newsletter-logout-button.entry.js +6 -7
  188. package/dist/esm/u-newsletter-logout-button.entry.js.map +1 -1
  189. package/dist/esm/u-newsletter-preference-checkbox.entry.js +5 -6
  190. package/dist/esm/u-newsletter-preference-checkbox.entry.js.map +1 -1
  191. package/dist/esm/u-newsletter-resend-doi-button.entry.js +4 -5
  192. package/dist/esm/u-newsletter-resend-doi-button.entry.js.map +1 -1
  193. package/dist/esm/u-newsletter-root.entry.js +4 -5
  194. package/dist/esm/u-newsletter-root.entry.js.map +1 -1
  195. package/dist/esm/u-newsletter-toggle-subscription-button.entry.js +4 -5
  196. package/dist/esm/u-newsletter-toggle-subscription-button.entry.js.map +1 -1
  197. package/dist/esm/u-passkey.entry.js +4 -5
  198. package/dist/esm/u-passkey.entry.js.map +1 -1
  199. package/dist/esm/u-password-field.entry.js +2 -2
  200. package/dist/esm/u-profile.u-submit-button.entry.js.map +1 -1
  201. package/dist/esm/u-profile_2.entry.js +36 -56
  202. package/dist/esm/u-registration-button.entry.js +2 -2
  203. package/dist/esm/u-reset-password-button.entry.js +3 -4
  204. package/dist/esm/u-reset-password-button.entry.js.map +1 -1
  205. package/dist/esm/u-send-magic-code-button.entry.js +4 -5
  206. package/dist/esm/u-send-magic-code-button.entry.js.map +1 -1
  207. package/dist/esm/u-signed-in.entry.js +1 -1
  208. package/dist/esm/u-signin-root.entry.js +1 -1
  209. package/dist/esm/u-signin-step.entry.js +4 -5
  210. package/dist/esm/u-signin-step.entry.js.map +1 -1
  211. package/dist/esm/u-signin-strategy.entry.js +1 -1
  212. package/dist/esm/u-social-login-button.entry.js +2 -2
  213. package/dist/esm/u-spinner.entry.js +1 -1
  214. package/dist/esm/u-spinner.entry.js.map +1 -1
  215. package/dist/esm/u-ticketable-list.entry.js +40 -30
  216. package/dist/esm/u-ticketable-list.entry.js.map +1 -1
  217. package/dist/sdk/index.esm.js +1 -1
  218. package/dist/sdk/index.esm.js.map +1 -1
  219. package/dist/sdk/locales/de.json +0 -1
  220. package/dist/sdk/locales/en.json +0 -1
  221. package/dist/sdk/locales/fr.json +0 -1
  222. package/dist/sdk/locales/it.json +0 -1
  223. package/dist/sdk/locales/nl_be.json +0 -1
  224. package/dist/sdk/locales/ro.json +0 -1
  225. package/dist/sdk/{p-5babee6b.entry.js → p-098eef67.entry.js} +2 -2
  226. package/dist/sdk/p-0e74de96.entry.js +2 -0
  227. package/dist/sdk/p-0e74de96.entry.js.map +1 -0
  228. package/dist/sdk/p-0ed36cbb.entry.js +2 -0
  229. package/dist/sdk/p-0ed36cbb.entry.js.map +1 -0
  230. package/dist/sdk/p-1149e044.entry.js +2 -0
  231. package/dist/sdk/p-1149e044.entry.js.map +1 -0
  232. package/dist/sdk/p-16d763fd.entry.js +2 -0
  233. package/dist/sdk/p-16d763fd.entry.js.map +1 -0
  234. package/dist/sdk/p-1d404c36.entry.js +2 -0
  235. package/dist/sdk/p-1d404c36.entry.js.map +1 -0
  236. package/dist/sdk/p-32da9922.entry.js +2 -0
  237. package/dist/sdk/p-32da9922.entry.js.map +1 -0
  238. package/dist/sdk/p-3d3a9c90.entry.js +2 -0
  239. package/dist/sdk/p-3d3a9c90.entry.js.map +1 -0
  240. package/dist/sdk/p-43024bd6.entry.js +2 -0
  241. package/dist/sdk/p-43024bd6.entry.js.map +1 -0
  242. package/dist/sdk/{p-e2e7061b.entry.js → p-5da49d00.entry.js} +2 -2
  243. package/dist/sdk/{p-f961fbea.entry.js → p-67af762e.entry.js} +2 -2
  244. package/dist/sdk/{p-f961fbea.entry.js.map → p-67af762e.entry.js.map} +1 -1
  245. package/dist/sdk/p-7099bd56.entry.js +2 -0
  246. package/dist/sdk/p-7099bd56.entry.js.map +1 -0
  247. package/dist/sdk/p-745742f1.entry.js +2 -0
  248. package/dist/sdk/{p-9e71a36c.entry.js → p-74e6523f.entry.js} +2 -2
  249. package/dist/sdk/p-86d16818.entry.js +2 -0
  250. package/dist/sdk/{p-effaf86b.entry.js.map → p-86d16818.entry.js.map} +1 -1
  251. package/dist/sdk/{p-DA84OuuU.js → p-BasehRhW.js} +2 -2
  252. package/dist/sdk/{p-DA84OuuU.js.map → p-BasehRhW.js.map} +1 -1
  253. package/dist/sdk/p-C4aHo4nN.js +2 -0
  254. package/dist/sdk/p-C4aHo4nN.js.map +1 -0
  255. package/dist/sdk/p-CFiZLMAA.js.map +1 -1
  256. package/dist/sdk/p-DGDhaqCd.js +2 -0
  257. package/dist/sdk/p-DGDhaqCd.js.map +1 -0
  258. package/dist/sdk/{p-CbRhHGU5.js → p-DSq94RWc.js} +2 -2
  259. package/dist/sdk/{p-CbRhHGU5.js.map → p-DSq94RWc.js.map} +1 -1
  260. package/dist/sdk/p-DSwwVdp1.js +2 -0
  261. package/dist/sdk/p-DSwwVdp1.js.map +1 -0
  262. package/dist/sdk/p-a037bbe3.entry.js +2 -0
  263. package/dist/sdk/p-a037bbe3.entry.js.map +1 -0
  264. package/dist/sdk/p-adcb7911.entry.js +2 -0
  265. package/dist/sdk/p-adcb7911.entry.js.map +1 -0
  266. package/dist/sdk/{p-39b61f33.entry.js → p-bbbec3d4.entry.js} +2 -2
  267. package/dist/sdk/{p-f232929b.entry.js → p-c2fba7c8.entry.js} +2 -2
  268. package/dist/sdk/p-c4618822.entry.js +2 -0
  269. package/dist/sdk/p-c4618822.entry.js.map +1 -0
  270. package/dist/sdk/p-ca4e57f2.entry.js +2 -0
  271. package/dist/sdk/p-ca4e57f2.entry.js.map +1 -0
  272. package/dist/sdk/p-ce4ab77c.entry.js +2 -0
  273. package/dist/sdk/p-ce4ab77c.entry.js.map +1 -0
  274. package/dist/sdk/p-d143e097.entry.js +2 -0
  275. package/dist/sdk/p-d143e097.entry.js.map +1 -0
  276. package/dist/sdk/{p-a69b83ec.entry.js → p-e0d2397c.entry.js} +2 -2
  277. package/dist/sdk/{p-80034205.entry.js → p-e6beb9d7.entry.js} +2 -2
  278. package/dist/sdk/p-ecc7fcff.entry.js +2 -0
  279. package/dist/sdk/p-ecc7fcff.entry.js.map +1 -0
  280. package/dist/sdk/{p-2cb6a2d0.entry.js → p-f1788e52.entry.js} +2 -2
  281. package/dist/sdk/p-fb665a5c.entry.js +2 -0
  282. package/dist/sdk/p-fb665a5c.entry.js.map +1 -0
  283. package/dist/sdk/p-fc67cf07.entry.js +2 -0
  284. package/dist/sdk/p-fc67cf07.entry.js.map +1 -0
  285. package/dist/sdk/sdk.esm.js +1 -1
  286. package/dist/sdk/u-conditional-render.entry.esm.js.map +1 -1
  287. package/dist/sdk/u-config.entry.esm.js.map +1 -1
  288. package/dist/sdk/u-error-message.entry.esm.js.map +1 -1
  289. package/dist/sdk/u-field.u-raw-field.entry.esm.js.map +1 -1
  290. package/dist/sdk/u-logout-button.entry.esm.js.map +1 -1
  291. package/dist/sdk/u-magic-code-field.entry.esm.js.map +1 -1
  292. package/dist/sdk/u-missing-fields-submit-button.entry.esm.js.map +1 -1
  293. package/dist/sdk/u-newsletter-checkbox.entry.esm.js.map +1 -1
  294. package/dist/sdk/u-newsletter-logout-button.entry.esm.js.map +1 -1
  295. package/dist/sdk/u-newsletter-preference-checkbox.entry.esm.js.map +1 -1
  296. package/dist/sdk/u-newsletter-resend-doi-button.entry.esm.js.map +1 -1
  297. package/dist/sdk/u-newsletter-root.entry.esm.js.map +1 -1
  298. package/dist/sdk/u-newsletter-toggle-subscription-button.entry.esm.js.map +1 -1
  299. package/dist/sdk/u-passkey.entry.esm.js.map +1 -1
  300. package/dist/sdk/u-profile.u-submit-button.entry.esm.js.map +1 -1
  301. package/dist/sdk/u-reset-password-button.entry.esm.js.map +1 -1
  302. package/dist/sdk/u-send-magic-code-button.entry.esm.js.map +1 -1
  303. package/dist/sdk/u-signin-step.entry.esm.js.map +1 -1
  304. package/dist/sdk/u-spinner.entry.esm.js.map +1 -1
  305. package/dist/sdk/u-ticketable-list.entry.esm.js.map +1 -1
  306. package/dist/types/api/base-client.d.ts +54 -0
  307. package/dist/types/api/base-service.d.ts +62 -0
  308. package/dist/types/api/client.d.ts +9 -31
  309. package/dist/types/api/index.d.ts +1 -0
  310. package/dist/types/api/shared.d.ts +11 -0
  311. package/dist/types/api/standalone.d.ts +105 -0
  312. package/dist/types/auth/api/auth.d.ts +71 -287
  313. package/dist/types/auth/api/schemas.d.ts +572 -0
  314. package/dist/types/auth/auth-helpers.d.ts +65 -66
  315. package/dist/types/auth/store/auth-store.d.ts +3 -3
  316. package/dist/types/components.d.ts +0 -72
  317. package/dist/types/newsletter/api/newsletters.d.ts +73 -196
  318. package/dist/types/newsletter/api/schemas.d.ts +192 -0
  319. package/dist/types/profile/api/profile.d.ts +12 -237
  320. package/dist/types/profile/api/schemas.d.ts +336 -0
  321. package/dist/types/profile/components/profile/profile.d.ts +1 -17
  322. package/dist/types/shared/components/error-message/error-message.d.ts +1 -1
  323. package/dist/types/ticketable/api/schemas.d.ts +108 -15
  324. package/dist/types/ticketable/api/subscriptions.d.ts +16 -83
  325. package/dist/types/ticketable/api/ticketable-service.d.ts +39 -0
  326. package/dist/types/ticketable/api/tickets.d.ts +16 -85
  327. package/dist/types/ticketable/components/ticketable-list/ticketable-list.d.ts +2 -12
  328. package/package.json +5 -1
  329. package/dist/cjs/auth-NU3DBc-6.js +0 -581
  330. package/dist/cjs/auth-NU3DBc-6.js.map +0 -1
  331. package/dist/cjs/auth-store-BaxuIp4z.js.map +0 -1
  332. package/dist/cjs/index-R2MKLaem.js.map +0 -1
  333. package/dist/cjs/newsletter-helpers-DR0vsegt.js.map +0 -1
  334. package/dist/collection/ticketable/api/get-with-schema.js +0 -35
  335. package/dist/collection/ticketable/api/get-with-schema.js.map +0 -1
  336. package/dist/components/auth.js +0 -580
  337. package/dist/components/auth.js.map +0 -1
  338. package/dist/esm/auth-nsjRdpvS.js +0 -579
  339. package/dist/esm/auth-nsjRdpvS.js.map +0 -1
  340. package/dist/esm/auth-store-CVvBlKGv.js.map +0 -1
  341. package/dist/esm/index-DSDkaHWI.js.map +0 -1
  342. package/dist/esm/newsletter-helpers-Dc_24im3.js.map +0 -1
  343. package/dist/sdk/p-0ab98e7a.entry.js +0 -2
  344. package/dist/sdk/p-0ab98e7a.entry.js.map +0 -1
  345. package/dist/sdk/p-0d324822.entry.js +0 -2
  346. package/dist/sdk/p-0d324822.entry.js.map +0 -1
  347. package/dist/sdk/p-0fb37ee9.entry.js +0 -2
  348. package/dist/sdk/p-0fb37ee9.entry.js.map +0 -1
  349. package/dist/sdk/p-3049e73f.entry.js +0 -2
  350. package/dist/sdk/p-3049e73f.entry.js.map +0 -1
  351. package/dist/sdk/p-312b919e.entry.js +0 -2
  352. package/dist/sdk/p-312b919e.entry.js.map +0 -1
  353. package/dist/sdk/p-319c5d3b.entry.js +0 -2
  354. package/dist/sdk/p-319c5d3b.entry.js.map +0 -1
  355. package/dist/sdk/p-34b98f55.entry.js +0 -2
  356. package/dist/sdk/p-34b98f55.entry.js.map +0 -1
  357. package/dist/sdk/p-4ec3302d.entry.js +0 -2
  358. package/dist/sdk/p-4ec3302d.entry.js.map +0 -1
  359. package/dist/sdk/p-568eabbc.entry.js +0 -2
  360. package/dist/sdk/p-568eabbc.entry.js.map +0 -1
  361. package/dist/sdk/p-5b40a68b.entry.js +0 -2
  362. package/dist/sdk/p-5b40a68b.entry.js.map +0 -1
  363. package/dist/sdk/p-66587fdd.entry.js +0 -2
  364. package/dist/sdk/p-66587fdd.entry.js.map +0 -1
  365. package/dist/sdk/p-88d93d64.entry.js +0 -2
  366. package/dist/sdk/p-90e2253e.entry.js +0 -2
  367. package/dist/sdk/p-90e2253e.entry.js.map +0 -1
  368. package/dist/sdk/p-BiILQPdb.js +0 -2
  369. package/dist/sdk/p-BiILQPdb.js.map +0 -1
  370. package/dist/sdk/p-DdUvQelg.js +0 -2
  371. package/dist/sdk/p-DdUvQelg.js.map +0 -1
  372. package/dist/sdk/p-PKvQIsOt.js +0 -2
  373. package/dist/sdk/p-PKvQIsOt.js.map +0 -1
  374. package/dist/sdk/p-a4f5940f.entry.js +0 -2
  375. package/dist/sdk/p-a4f5940f.entry.js.map +0 -1
  376. package/dist/sdk/p-aMrLKr2m.js +0 -2
  377. package/dist/sdk/p-aMrLKr2m.js.map +0 -1
  378. package/dist/sdk/p-bfb04b17.entry.js +0 -2
  379. package/dist/sdk/p-bfb04b17.entry.js.map +0 -1
  380. package/dist/sdk/p-c6816542.entry.js +0 -2
  381. package/dist/sdk/p-c6816542.entry.js.map +0 -1
  382. package/dist/sdk/p-da363474.entry.js +0 -2
  383. package/dist/sdk/p-da363474.entry.js.map +0 -1
  384. package/dist/sdk/p-e54d5d38.entry.js +0 -2
  385. package/dist/sdk/p-e54d5d38.entry.js.map +0 -1
  386. package/dist/sdk/p-e81bbd62.entry.js +0 -2
  387. package/dist/sdk/p-e81bbd62.entry.js.map +0 -1
  388. package/dist/sdk/p-effaf86b.entry.js +0 -2
  389. package/dist/types/ticketable/api/get-with-schema.d.ts +0 -3
  390. /package/dist/sdk/{p-5babee6b.entry.js.map → p-098eef67.entry.js.map} +0 -0
  391. /package/dist/sdk/{p-e2e7061b.entry.js.map → p-5da49d00.entry.js.map} +0 -0
  392. /package/dist/sdk/{p-88d93d64.entry.js.map → p-745742f1.entry.js.map} +0 -0
  393. /package/dist/sdk/{p-9e71a36c.entry.js.map → p-74e6523f.entry.js.map} +0 -0
  394. /package/dist/sdk/{p-39b61f33.entry.js.map → p-bbbec3d4.entry.js.map} +0 -0
  395. /package/dist/sdk/{p-f232929b.entry.js.map → p-c2fba7c8.entry.js.map} +0 -0
  396. /package/dist/sdk/{p-a69b83ec.entry.js.map → p-e0d2397c.entry.js.map} +0 -0
  397. /package/dist/sdk/{p-80034205.entry.js.map → p-e6beb9d7.entry.js.map} +0 -0
  398. /package/dist/sdk/{p-2cb6a2d0.entry.js.map → p-f1788e52.entry.js.map} +0 -0
@@ -0,0 +1,120 @@
1
+ import * as z from "zod";
2
+ import { BaseErrorSchema } from "../../api/shared";
3
+ // Field type enum
4
+ export const FieldTypeEnum = z.enum([
5
+ "text",
6
+ "textarea",
7
+ "number",
8
+ "boolean",
9
+ "select",
10
+ "radio",
11
+ "date",
12
+ "datetime-local",
13
+ "checkbox",
14
+ "tel",
15
+ ]);
16
+ // Base field data schema
17
+ export const BaseFieldDataSchema = z
18
+ .object({
19
+ required: z.boolean(),
20
+ label: z.string(),
21
+ attr_name: z.string(),
22
+ locked: z.boolean().optional(),
23
+ locked_text: z.string().optional(),
24
+ })
25
+ .strict();
26
+ // Select option schema
27
+ export const SelectOptionSchema = z
28
+ .object({
29
+ value: z.string(),
30
+ label: z.string(),
31
+ })
32
+ .strict();
33
+ // Radio value type
34
+ export const RadioValue = z.union([z.string(), z.literal("_NOT_SET_"), z.boolean()]).nullable();
35
+ // Radio option schema
36
+ export const RadioOptionSchema = z
37
+ .object({
38
+ value: RadioValue,
39
+ label: z.string(),
40
+ checked: z.boolean(),
41
+ })
42
+ .strict();
43
+ // Text field type enum
44
+ const TextFieldTypeEnum = z.enum(["text", "textarea"]);
45
+ // Text field schema
46
+ export const TextFieldSchema = BaseFieldDataSchema.extend({
47
+ value: z.string().nullable(),
48
+ type: TextFieldTypeEnum,
49
+ }).strict();
50
+ // Phone field schema
51
+ export const PhoneFieldSchema = BaseFieldDataSchema.extend({
52
+ value: z.string().nullable(),
53
+ type: z.literal("tel"),
54
+ }).strict();
55
+ // Radio field schema
56
+ export const RadioFieldSchema = BaseFieldDataSchema.extend({
57
+ value: RadioValue,
58
+ type: z.literal("radio"),
59
+ radio_options: z.array(RadioOptionSchema),
60
+ }).strict();
61
+ // Select field schema
62
+ export const SelectFieldSchema = BaseFieldDataSchema.extend({
63
+ value: z.string().nullable(),
64
+ type: z.literal("select"),
65
+ options: z.array(SelectOptionSchema),
66
+ }).strict();
67
+ // Date field type enum
68
+ const DateFieldTypeEnum = z.enum(["date", "datetime-local"]);
69
+ // Date field schema
70
+ export const DateFieldSchema = BaseFieldDataSchema.extend({
71
+ value: z.string().nullable(),
72
+ type: DateFieldTypeEnum,
73
+ }).strict();
74
+ // Custom field schema
75
+ export const CustomFieldSchema = BaseFieldDataSchema.extend({
76
+ value: z.union([z.string(), z.boolean(), z.number(), z.array(z.string())]).nullable(),
77
+ type: FieldTypeEnum,
78
+ readonly: z.boolean(),
79
+ radio_options: z.array(RadioOptionSchema).optional(),
80
+ options: z.array(SelectOptionSchema).optional(),
81
+ }).strict();
82
+ // User profile schema
83
+ export const UserProfileSchema = z.object({
84
+ salutation: RadioFieldSchema,
85
+ first_name: TextFieldSchema,
86
+ last_name: TextFieldSchema,
87
+ email: TextFieldSchema,
88
+ phone_number: PhoneFieldSchema,
89
+ company_name: TextFieldSchema,
90
+ address_line_1: TextFieldSchema,
91
+ address_line_2: TextFieldSchema,
92
+ city: TextFieldSchema,
93
+ postal_code: TextFieldSchema,
94
+ country_code: SelectFieldSchema,
95
+ date_of_birth: DateFieldSchema,
96
+ preferred_language: TextFieldSchema.optional(),
97
+ custom_attributes: z.record(z.string(), CustomFieldSchema),
98
+ });
99
+ // Profile error response schema extends base error
100
+ export const ProfileErrorResponseSchema = BaseErrorSchema;
101
+ // Form errors value type
102
+ export const FormErrorsValue = z.union([z.array(z.string()), z.array(z.tuple([z.number(), z.array(z.string())]))]);
103
+ // Form errors raw schema
104
+ export const FormErrorsRawSchema = z.record(z.string(), FormErrorsValue);
105
+ // User profile form error schema with transformation
106
+ export const UserProfileFormErrorSchema = z
107
+ .object({
108
+ errors: FormErrorsRawSchema,
109
+ })
110
+ .strict()
111
+ .transform(({ errors }) => {
112
+ const flatErrors = Object.fromEntries(Object.entries(errors).map(([field, value]) => {
113
+ const errorMessages = Array.isArray(value) && value.length > 0 && typeof value[0] === "string"
114
+ ? value
115
+ : value.flatMap(([, arr]) => arr);
116
+ return [field, errorMessages.join(" | ")];
117
+ }));
118
+ return { errors, flatErrors };
119
+ });
120
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/profile/api/schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import * as z from \"zod\";\nimport { BaseErrorSchema } from \"../../api/shared\";\n\n// Field type enum\nexport const FieldTypeEnum = z.enum([\n \"text\",\n \"textarea\",\n \"number\",\n \"boolean\",\n \"select\",\n \"radio\",\n \"date\",\n \"datetime-local\",\n \"checkbox\",\n \"tel\",\n]);\n\n// Base field data schema\nexport const BaseFieldDataSchema = z\n .object({\n required: z.boolean(),\n label: z.string(),\n attr_name: z.string(),\n locked: z.boolean().optional(),\n locked_text: z.string().optional(),\n })\n .strict();\n\n// Select option schema\nexport const SelectOptionSchema = z\n .object({\n value: z.string(),\n label: z.string(),\n })\n .strict();\n\n// Radio value type\nexport const RadioValue = z.union([z.string(), z.literal(\"_NOT_SET_\"), z.boolean()]).nullable();\n\n// Radio option schema\nexport const RadioOptionSchema = z\n .object({\n value: RadioValue,\n label: z.string(),\n checked: z.boolean(),\n })\n .strict();\n\n// Text field type enum\nconst TextFieldTypeEnum = z.enum([\"text\", \"textarea\"]);\n\n// Text field schema\nexport const TextFieldSchema = BaseFieldDataSchema.extend({\n value: z.string().nullable(),\n type: TextFieldTypeEnum,\n}).strict();\n\n// Phone field schema\nexport const PhoneFieldSchema = BaseFieldDataSchema.extend({\n value: z.string().nullable(),\n type: z.literal(\"tel\"),\n}).strict();\n\n// Radio field schema\nexport const RadioFieldSchema = BaseFieldDataSchema.extend({\n value: RadioValue,\n type: z.literal(\"radio\"),\n radio_options: z.array(RadioOptionSchema),\n}).strict();\n\n// Select field schema\nexport const SelectFieldSchema = BaseFieldDataSchema.extend({\n value: z.string().nullable(),\n type: z.literal(\"select\"),\n options: z.array(SelectOptionSchema),\n}).strict();\n\n// Date field type enum\nconst DateFieldTypeEnum = z.enum([\"date\", \"datetime-local\"]);\n\n// Date field schema\nexport const DateFieldSchema = BaseFieldDataSchema.extend({\n value: z.string().nullable(),\n type: DateFieldTypeEnum,\n}).strict();\n\n// Custom field schema\nexport const CustomFieldSchema = BaseFieldDataSchema.extend({\n value: z.union([z.string(), z.boolean(), z.number(), z.array(z.string())]).nullable(),\n type: FieldTypeEnum,\n readonly: z.boolean(),\n radio_options: z.array(RadioOptionSchema).optional(),\n options: z.array(SelectOptionSchema).optional(),\n}).strict();\n\n// User profile schema\nexport const UserProfileSchema = z.object({\n salutation: RadioFieldSchema,\n first_name: TextFieldSchema,\n last_name: TextFieldSchema,\n email: TextFieldSchema,\n phone_number: PhoneFieldSchema,\n company_name: TextFieldSchema,\n address_line_1: TextFieldSchema,\n address_line_2: TextFieldSchema,\n city: TextFieldSchema,\n postal_code: TextFieldSchema,\n country_code: SelectFieldSchema,\n date_of_birth: DateFieldSchema,\n preferred_language: TextFieldSchema.optional(),\n custom_attributes: z.record(z.string(), CustomFieldSchema),\n});\n\n// Profile error response schema extends base error\nexport const ProfileErrorResponseSchema = BaseErrorSchema;\n\n// Form errors value type\nexport const FormErrorsValue = z.union([z.array(z.string()), z.array(z.tuple([z.number(), z.array(z.string())]))]);\n\n// Form errors raw schema\nexport const FormErrorsRawSchema = z.record(z.string(), FormErrorsValue);\n\n// User profile form error schema with transformation\nexport const UserProfileFormErrorSchema = z\n .object({\n errors: FormErrorsRawSchema,\n })\n .strict()\n .transform(({ errors }) => {\n const flatErrors = Object.fromEntries(\n Object.entries(errors).map(([field, value]) => {\n const errorMessages =\n Array.isArray(value) && value.length > 0 && typeof value[0] === \"string\"\n ? (value as string[])\n : (value as Array<[number, string[]]>).flatMap(([, arr]) => arr);\n return [field, errorMessages.join(\" | \")];\n }),\n );\n return { errors, flatErrors };\n });\n\n// Export types\nexport type FieldType = z.infer<typeof FieldTypeEnum>;\nexport type UserProfileData = z.infer<typeof UserProfileSchema>;\nexport type ProfileErrorResponse = z.infer<typeof ProfileErrorResponseSchema>;\nexport type UserProfileFormError = z.infer<typeof UserProfileFormErrorSchema>;\n\n// Global window type declaration\ndeclare global {\n interface Window {\n UNIDY?: { auth?: { id_token?: string } };\n }\n}\n"]}
@@ -1 +1 @@
1
- /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--u-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--u-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--u-default-font-family:var(--u-font-sans);--u-default-mono-font-family:var(--u-font-mono);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{font-family:var(--u-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--u-default-font-feature-settings,normal);font-variation-settings:var(--u-default-font-variation-settings,normal);-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--u-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--u-default-mono-font-feature-settings,normal);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--u-default-mono-font-variation-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.u\:flex{display:flex}.u\:justify-end{justify-content:flex-end}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer base{}@layer components;@layer utilities{.block{display:block}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:host{display:block}.field-error:focus{border-color:red;outline-color:red}.multi-select-readonly-container{list-style:none}.multi-select-readonly-container li{display:inline-block}[part=input]:disabled,[part=select]:disabled{cursor:not-allowed}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
1
+ /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--u-animate-spin:spin 1s linear infinite;--u-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--u-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--u-default-font-family:var(--u-font-sans);--u-default-mono-font-family:var(--u-font-mono);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{font-family:var(--u-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--u-default-font-feature-settings,normal);font-variation-settings:var(--u-default-font-variation-settings,normal);-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--u-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--u-default-mono-font-feature-settings,normal);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--u-default-mono-font-variation-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{.u\:inline-flex{display:inline-flex}.u\:h-\[1em\]{height:1em}.u\:w-\[1em\]{width:1em}.u\:animate-spin{animation:var(--u-animate-spin)}.u\:items-center{align-items:center}.u\:justify-center{justify-content:center}.u\:rounded-\[50\%\]{border-radius:50%}}@keyframes spin{to{transform:rotate(1turn)}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{.u\:flex{display:flex}.u\:justify-end{justify-content:flex-end}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer base{}@layer components;@layer utilities{.block{display:block}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:host{display:block}.field-error:focus{border-color:red;outline-color:red}.multi-select-readonly-container{list-style:none}.multi-select-readonly-container li{display:inline-block}[part=input]:disabled,[part=select]:disabled{cursor:not-allowed}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
@@ -1,66 +1,62 @@
1
1
  import * as Sentry from "@sentry/browser";
2
2
  import { Host, h } from "@stencil/core";
3
- import { getUnidyClient } from "../../../api";
4
- import { Auth } from "../../../auth";
5
- import { onChange as authOnChange, authStore } from "../../../auth/store/auth-store";
6
3
  import { t } from "../../../i18n";
7
- import { onChange as unidyOnChange, unidyState } from "../../../shared/store/unidy-store";
8
- import { buildPayload, validateRequiredFieldsUnchanged } from "../../profile-helpers";
9
- import { onChange as profileOnChange, state as profileState } from "../../store/profile-store";
4
+ import { Auth } from "../../../auth";
5
+ import { getUnidyClient } from "../../../api";
6
+ import { authStore, onChange as authOnChange } from "../../../auth/store/auth-store";
7
+ import { state as profileState, onChange as profileOnChange } from "../../store/profile-store";
8
+ import { onChange as unidyOnChange } from "../../../shared/store/unidy-store";
9
+ import { validateRequiredFieldsUnchanged, buildPayload } from "../../profile-helpers";
10
10
  export class Profile {
11
11
  profileId;
12
12
  initialData = "";
13
- uProfileSuccess;
14
- uProfileError;
15
13
  fetchingProfileData = false;
16
14
  constructor() {
17
15
  unidyOnChange("locale", async (_locale) => {
18
- if (authStore.state.authenticated)
19
- await this.getTokenAndFetchProfile();
16
+ await this.fetchProfileData();
20
17
  });
21
18
  }
22
19
  async componentWillLoad() {
23
20
  if (this.initialData !== "") {
24
21
  profileState.data = typeof this.initialData === "string" ? JSON.parse(this.initialData) : this.initialData;
25
22
  }
26
- else if (authStore.state.authenticated) {
27
- await this.getTokenAndFetchProfile();
23
+ else {
24
+ await this.fetchProfileData();
28
25
  }
29
26
  profileState.loading = false;
30
27
  }
31
- async getTokenAndFetchProfile() {
32
- const authInstance = await Auth.getInstance();
33
- const idToken = await authInstance.getToken();
34
- if (idToken && typeof idToken === "string") {
35
- await this.fetchProfileData(idToken);
36
- }
37
- }
38
- async fetchProfileData(idToken) {
28
+ async fetchProfileData() {
39
29
  // avoid multiple requests
40
30
  if (this.fetchingProfileData)
41
31
  return;
32
+ const authInstance = await Auth.getInstance();
33
+ const isAuthenticated = await authInstance.isAuthenticated();
34
+ if (!isAuthenticated) {
35
+ // Handle unauthenticated state the same as an unauthorized error from backend
36
+ profileState.flashErrors = { error: t("errors.unauthorized") };
37
+ return;
38
+ }
42
39
  this.fetchingProfileData = true;
43
40
  try {
44
- const resp = await getUnidyClient().profile.fetchProfile({ idToken, lang: unidyState.locale });
45
- if (resp.success) {
46
- profileState.configuration = JSON.parse(JSON.stringify(resp.data));
41
+ const [error, data] = await getUnidyClient().profile.get();
42
+ if (error === null && data) {
43
+ profileState.configuration = JSON.parse(JSON.stringify(data));
47
44
  profileState.configUpdateSource = "fetch";
48
45
  profileState.errors = {};
49
46
  profileState.flashErrors = {};
50
- profileState.data = JSON.parse(JSON.stringify(resp.data));
47
+ profileState.data = JSON.parse(JSON.stringify(data));
51
48
  }
52
49
  else {
53
- profileState.flashErrors = { [String(resp?.status)]: String(resp?.error) };
50
+ profileState.flashErrors = { error: error || "unknown_error" };
54
51
  }
55
52
  }
56
- catch (error) {
57
- Sentry.captureException("Failed to fetch profile data:", error);
53
+ catch (err) {
54
+ Sentry.captureException(err);
58
55
  profileState.flashErrors = { error: t("errors.failed_to_load_profile") };
59
56
  }
60
57
  this.fetchingProfileData = false;
61
58
  }
62
59
  async submitProfile() {
63
- const authInstance = await Auth.getInstance();
64
60
  profileState.loading = true;
65
61
  const { configuration, ...stateWithoutConfig } = profileState;
66
62
  if (!validateRequiredFieldsUnchanged(stateWithoutConfig.data)) {
@@ -68,33 +64,21 @@ export class Profile {
68
64
  return;
69
65
  }
70
66
  const updatedProfileData = buildPayload(stateWithoutConfig.data);
71
- const resp = await getUnidyClient().profile.updateProfile({
72
- idToken: (await authInstance.getToken()),
73
- data: updatedProfileData,
74
- lang: unidyState.locale,
67
+ const [error, data] = await getUnidyClient().profile.update({
68
+ payload: updatedProfileData,
75
69
  });
76
- if (resp?.success) {
70
+ if (error === null && data) {
77
71
  profileState.loading = false;
78
- profileState.configuration = JSON.parse(JSON.stringify(resp.data));
72
+ profileState.configuration = JSON.parse(JSON.stringify(data));
79
73
  profileState.configUpdateSource = "submit";
80
74
  profileState.errors = {};
81
- this.uProfileSuccess.emit({ message: "profile_updated_successfully", payload: resp.data });
75
+ }
76
+ else if (error === "validation_error" && data && "flatErrors" in data) {
77
+ profileState.errors = data.flatErrors;
78
+ profileState.loading = false;
82
79
  }
83
80
  else {
84
- if (resp?.data && "flatErrors" in resp.data) {
85
- profileState.errors = resp.data.flatErrors;
86
- this.uProfileError.emit({
87
- error: "profile_update_field_errors",
88
- details: { fieldErrors: profileState.errors, httpStatus: resp?.status, responseData: resp?.data },
89
- });
90
- }
91
- else {
92
- profileState.flashErrors = { [String(resp?.status)]: String(resp?.error) };
93
- this.uProfileError.emit({
94
- error: "profile_update_failed",
95
- details: { flashErrors: profileState.flashErrors, httpStatus: resp?.status, responseData: resp?.data },
96
- });
97
- }
81
+ profileState.flashErrors = { error: error || "unknown_error" };
98
82
  profileState.loading = false;
99
83
  }
100
84
  }
@@ -103,9 +87,8 @@ export class Profile {
103
87
  profileState.data = cfg;
104
88
  });
105
89
  authOnChange("token", (newToken) => {
106
- const token = newToken ?? "";
107
- if (token) {
108
- this.fetchProfileData(token);
90
+ if (newToken) {
91
+ this.fetchProfileData();
109
92
  }
110
93
  });
111
94
  }
@@ -172,50 +155,6 @@ export class Profile {
172
155
  "fetchingProfileData": {}
173
156
  };
174
157
  }
175
- static get events() {
176
- return [{
177
- "method": "uProfileSuccess",
178
- "name": "uProfileSuccess",
179
- "bubbles": true,
180
- "cancelable": true,
181
- "composed": true,
182
- "docs": {
183
- "tags": [],
184
- "text": ""
185
- },
186
- "complexType": {
187
- "original": "{ message: string; payload: ProfileRaw }",
188
- "resolved": "{ message: string; payload: ProfileRaw; }",
189
- "references": {
190
- "ProfileRaw": {
191
- "location": "import",
192
- "path": "../../store/profile-store",
193
- "id": "src/profile/store/profile-store.ts::ProfileRaw"
194
- }
195
- }
196
- }
197
- }, {
198
- "method": "uProfileError",
199
- "name": "uProfileError",
200
- "bubbles": true,
201
- "cancelable": true,
202
- "composed": true,
203
- "docs": {
204
- "tags": [],
205
- "text": ""
206
- },
207
- "complexType": {
208
- "original": "{\n error: string;\n details: {\n fieldErrors?: Record<string, string>;\n flashErrors?: Record<string, string>;\n httpStatus?: number;\n responseData?: unknown;\n };\n }",
209
- "resolved": "{ error: string; details: { fieldErrors?: Record<string, string>; flashErrors?: Record<string, string>; httpStatus?: number; responseData?: unknown; }; }",
210
- "references": {
211
- "Record": {
212
- "location": "global",
213
- "id": "global::Record"
214
- }
215
- }
216
- }
217
- }];
218
- }
219
158
  static get methods() {
220
159
  return {
221
160
  "submitProfile": {
@@ -227,11 +166,6 @@ export class Profile {
227
166
  "location": "global",
228
167
  "id": "global::Promise"
229
168
  },
230
- "ProfileRaw": {
231
- "location": "import",
232
- "path": "../../store/profile-store",
233
- "id": "src/profile/store/profile-store.ts::ProfileRaw"
234
- },
235
169
  "Record": {
236
170
  "location": "global",
237
171
  "id": "global::Record"
@@ -1 +1 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../../src/profile/components/profile/profile.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as Sentry from \"@sentry/browser\";\nimport { Component, Event, type EventEmitter, Host, h, Method, Prop, State } from \"@stencil/core\";\nimport { getUnidyClient } from \"../../../api\";\nimport { Auth } from \"../../../auth\";\nimport { onChange as authOnChange, authStore } from \"../../../auth/store/auth-store\";\nimport { t } from \"../../../i18n\";\nimport { onChange as unidyOnChange, unidyState } from \"../../../shared/store/unidy-store\";\nimport { buildPayload, validateRequiredFieldsUnchanged } from \"../../profile-helpers\";\nimport type { ProfileRaw } from \"../../store/profile-store\";\nimport { onChange as profileOnChange, state as profileState } from \"../../store/profile-store\";\n\n@Component({\n tag: \"u-profile\",\n shadow: false,\n})\nexport class Profile {\n @Prop() profileId?: string;\n @Prop() initialData: string | Record<string, string> = \"\";\n\n @Event() uProfileSuccess!: EventEmitter<{ message: string; payload: ProfileRaw }>;\n @Event() uProfileError!: EventEmitter<{\n error: string;\n details: {\n fieldErrors?: Record<string, string>;\n flashErrors?: Record<string, string>;\n httpStatus?: number;\n responseData?: unknown;\n };\n }>;\n\n @State() fetchingProfileData = false;\n\n constructor() {\n unidyOnChange(\"locale\", async (_locale) => {\n if (authStore.state.authenticated) await this.getTokenAndFetchProfile();\n });\n }\n\n async componentWillLoad() {\n if (this.initialData !== \"\") {\n profileState.data = typeof this.initialData === \"string\" ? JSON.parse(this.initialData) : this.initialData;\n } else if (authStore.state.authenticated) {\n await this.getTokenAndFetchProfile();\n }\n\n profileState.loading = false;\n }\n\n async getTokenAndFetchProfile() {\n const authInstance = await Auth.getInstance();\n\n const idToken = await authInstance.getToken();\n\n if (idToken && typeof idToken === \"string\") {\n await this.fetchProfileData(idToken as string);\n }\n }\n\n async fetchProfileData(idToken: string) {\n // avoid multiple requests\n if (this.fetchingProfileData) return;\n\n this.fetchingProfileData = true;\n try {\n const resp = await getUnidyClient().profile.fetchProfile({ idToken, lang: unidyState.locale });\n\n if (resp.success) {\n profileState.configuration = JSON.parse(JSON.stringify(resp.data)) as ProfileRaw;\n profileState.configUpdateSource = \"fetch\";\n profileState.errors = {};\n profileState.flashErrors = {};\n\n profileState.data = JSON.parse(JSON.stringify(resp.data)) as ProfileRaw;\n } else {\n profileState.flashErrors = { [String(resp?.status)]: String(resp?.error) };\n }\n } catch (error) {\n Sentry.captureException(\"Failed to fetch profile data:\", error);\n profileState.flashErrors = { error: t(\"errors.failed_to_load_profile\") };\n }\n this.fetchingProfileData = false;\n }\n\n @Method()\n async submitProfile() {\n const authInstance = await Auth.getInstance();\n\n profileState.loading = true;\n\n const { configuration, ...stateWithoutConfig } = profileState;\n\n if (!validateRequiredFieldsUnchanged(stateWithoutConfig.data)) {\n profileState.loading = false;\n return;\n }\n\n const updatedProfileData = buildPayload(stateWithoutConfig.data);\n\n const resp = await getUnidyClient().profile.updateProfile({\n idToken: (await authInstance.getToken()) as string,\n data: updatedProfileData,\n lang: unidyState.locale,\n });\n\n if (resp?.success) {\n profileState.loading = false;\n profileState.configuration = JSON.parse(JSON.stringify(resp.data));\n profileState.configUpdateSource = \"submit\";\n profileState.errors = {};\n this.uProfileSuccess.emit({ message: \"profile_updated_successfully\", payload: resp.data as ProfileRaw });\n } else {\n if (resp?.data && \"flatErrors\" in resp.data) {\n profileState.errors = resp.data.flatErrors as Record<string, string>;\n this.uProfileError.emit({\n error: \"profile_update_field_errors\",\n details: { fieldErrors: profileState.errors, httpStatus: resp?.status, responseData: resp?.data },\n });\n } else {\n profileState.flashErrors = { [String(resp?.status)]: String(resp?.error) };\n this.uProfileError.emit({\n error: \"profile_update_failed\",\n details: { flashErrors: profileState.flashErrors, httpStatus: resp?.status, responseData: resp?.data },\n });\n }\n profileState.loading = false;\n }\n }\n\n componentDidLoad() {\n profileOnChange(\"configuration\", (cfg) => {\n profileState.data = cfg as ProfileRaw;\n });\n\n authOnChange(\"token\", (newToken: string | null) => {\n const token = newToken ?? \"\";\n\n if (token) {\n this.fetchProfileData(token);\n }\n });\n }\n\n render() {\n const hasFieldErrors = Object.values(profileState.errors).some(Boolean);\n const errorMsg = Object.values(profileState.flashErrors).filter(Boolean).join(\", \");\n const wasSubmit = profileState.configUpdateSource === \"submit\";\n\n if (authStore.state.authenticated) {\n return this.fetchingProfileData ? (\n <div>{t(\"loading\")}</div>\n ) : (\n <Host>\n <slot />\n {!hasFieldErrors && errorMsg && <flash-message variant=\"error\" message={errorMsg} />}\n {wasSubmit && !errorMsg && !hasFieldErrors && <flash-message variant=\"success\" message={t(\"profile.updated\")} />}\n </Host>\n );\n }\n\n return <h2>{t(\"profile.signInToView\")}</h2>;\n }\n}\n"]}
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../../src/profile/components/profile/profile.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as Sentry from \"@sentry/browser\";\nimport { Component, Host, Method, Prop, State, h } from \"@stencil/core\";\nimport { t } from \"../../../i18n\";\nimport { Auth } from \"../../../auth\";\nimport { getUnidyClient } from \"../../../api\";\nimport { authStore, onChange as authOnChange } from \"../../../auth/store/auth-store\";\nimport { state as profileState, onChange as profileOnChange } from \"../../store/profile-store\";\nimport { onChange as unidyOnChange } from \"../../../shared/store/unidy-store\";\nimport type { ProfileRaw } from \"../../store/profile-store\";\nimport { validateRequiredFieldsUnchanged, buildPayload } from \"../../profile-helpers\";\n\n@Component({\n tag: \"u-profile\",\n shadow: false,\n})\nexport class Profile {\n @Prop() profileId?: string;\n @Prop() initialData: string | Record<string, string> = \"\";\n\n @State() fetchingProfileData = false;\n\n constructor() {\n unidyOnChange(\"locale\", async (_locale) => {\n await this.fetchProfileData();\n });\n }\n\n async componentWillLoad() {\n if (this.initialData !== \"\") {\n profileState.data = typeof this.initialData === \"string\" ? JSON.parse(this.initialData) : this.initialData;\n } else {\n await this.fetchProfileData();\n }\n\n profileState.loading = false;\n }\n\n async fetchProfileData() {\n // avoid multiple requests\n if (this.fetchingProfileData) return;\n\n const authInstance = await Auth.getInstance();\n const isAuthenticated = await authInstance.isAuthenticated();\n if (!isAuthenticated) {\n // Handle unauthenticated state the same as an unauthorized error from backend\n profileState.flashErrors = { error: t(\"errors.unauthorized\") };\n return;\n }\n\n this.fetchingProfileData = true;\n try {\n const [error, data] = await getUnidyClient().profile.get();\n\n if (error === null && data) {\n profileState.configuration = JSON.parse(JSON.stringify(data)) as ProfileRaw;\n profileState.configUpdateSource = \"fetch\";\n profileState.errors = {};\n profileState.flashErrors = {};\n\n profileState.data = JSON.parse(JSON.stringify(data)) as ProfileRaw;\n } else {\n profileState.flashErrors = { error: error || \"unknown_error\" };\n }\n } catch (err) {\n Sentry.captureException(err);\n profileState.flashErrors = { error: t(\"errors.failed_to_load_profile\") };\n }\n this.fetchingProfileData = false;\n }\n\n @Method()\n async submitProfile() {\n profileState.loading = true;\n\n const { configuration, ...stateWithoutConfig } = profileState;\n\n if (!validateRequiredFieldsUnchanged(stateWithoutConfig.data)) {\n profileState.loading = false;\n return;\n }\n\n const updatedProfileData = buildPayload(stateWithoutConfig.data);\n\n const [error, data] = await getUnidyClient().profile.update({\n payload: updatedProfileData,\n });\n\n if (error === null && data) {\n profileState.loading = false;\n profileState.configuration = JSON.parse(JSON.stringify(data));\n profileState.configUpdateSource = \"submit\";\n profileState.errors = {};\n } else if (error === \"validation_error\" && data && \"flatErrors\" in data) {\n profileState.errors = data.flatErrors as Record<string, string>;\n profileState.loading = false;\n } else {\n profileState.flashErrors = { error: error || \"unknown_error\" };\n profileState.loading = false;\n }\n }\n\n componentDidLoad() {\n profileOnChange(\"configuration\", (cfg) => {\n profileState.data = cfg as ProfileRaw;\n });\n\n authOnChange(\"token\", (newToken: string | null) => {\n if (newToken) {\n this.fetchProfileData();\n }\n });\n }\n\n render() {\n const hasFieldErrors = Object.values(profileState.errors).some(Boolean);\n const errorMsg = Object.values(profileState.flashErrors).filter(Boolean).join(\", \");\n const wasSubmit = profileState.configUpdateSource === \"submit\";\n\n if (authStore.state.authenticated) {\n return this.fetchingProfileData ? (\n <div>{t(\"loading\")}</div>\n ) : (\n <Host>\n <slot />\n {!hasFieldErrors && errorMsg && <flash-message variant=\"error\" message={errorMsg} />}\n {wasSubmit && !errorMsg && !hasFieldErrors && <flash-message variant=\"success\" message={t(\"profile.updated\")} />}\n </Host>\n );\n }\n\n return <h2>{t(\"profile.signInToView\")}</h2>;\n }\n}\n"]}
@@ -219,7 +219,7 @@ export class UnidyConfig extends UnidyComponent {
219
219
  "references": {
220
220
  "Config": {
221
221
  "location": "local",
222
- "path": "/Users/coki/Projects/unidy.io/unidy-sdk/packages/sdk/src/shared/components/config/config.tsx",
222
+ "path": "/Users/fran/work/worktrees-unidy-sdk/api-refactor/packages/sdk/src/shared/components/config/config.tsx",
223
223
  "id": "src/shared/components/config/config.tsx::Config"
224
224
  }
225
225
  }
@@ -240,7 +240,7 @@ export class UnidyConfig extends UnidyComponent {
240
240
  "references": {
241
241
  "ConfigChange": {
242
242
  "location": "local",
243
- "path": "/Users/coki/Projects/unidy.io/unidy-sdk/packages/sdk/src/shared/components/config/config.tsx",
243
+ "path": "/Users/fran/work/worktrees-unidy-sdk/api-refactor/packages/sdk/src/shared/components/config/config.tsx",
244
244
  "id": "src/shared/components/config/config.tsx::ConfigChange"
245
245
  }
246
246
  }
@@ -1,9 +1,9 @@
1
- import { Host, h } from "@stencil/core";
2
- import { authState } from "../../../auth/store/auth-store";
1
+ import { h, Host } from "@stencil/core";
3
2
  import { t } from "../../../i18n";
3
+ import { authState } from "../../../auth/store/auth-store";
4
+ import { unidyState } from "../../store/unidy-store";
4
5
  import { newsletterStore } from "../../../newsletter/store/newsletter-store";
5
6
  import { hasSlotContent } from "../../component-utils";
6
- import { unidyState } from "../../store/unidy-store";
7
7
  export class ErrorMessage {
8
8
  componentClassName = "";
9
9
  for;
@@ -1 +1 @@
1
- {"version":3,"file":"error-message.js","sourceRoot":"","sources":["../../../../src/shared/components/error-message/error-message.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAkC,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAQrD,MAAM,OAAO,YAAY;IACY,kBAAkB,GAAG,EAAE,CAAC;IACnD,GAAG,CAAU;IAEb,aAAa,CAA0B;IACpC,EAAE,CAAe;IAEpB,aAAa;QACnB,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;YAAE,OAAO,MAAM,CAAC;QAExF,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAC;QAEnD,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAAE,OAAO,YAAY,CAAC;QAE9D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY;YAAE,OAAO,OAAO,CAAC;QAExE,MAAM,IAAI,KAAK,CACb,oIAAoI,CACrI,CAAC;IACJ,CAAC;IAED,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAEO,mBAAmB,CAAC,SAAiB;QAC3C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,eAAe,GAAG,CAAC,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC;QACjD,IAAI,eAAe,KAAK,UAAU,SAAS,EAAE,EAAE,CAAC;YAC9C,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,OAAO,SAAS,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACjF,CAAC;IAEO,yBAAyB,CAAC,eAA0C;QAC1E,OAAO,CAAC,CAAC,qBAAqB,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,2BAA2B,EAAE,CAAC,CAAC;IACzH,CAAC;IAEO,eAAe,CAAC,SAAiB;QACvC,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAsC,CAAC,CAAC;IAChF,CAAC;IAEO,gBAAgB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAoB,CAAC;QAE3C,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAClE,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;QACrC,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEO,sBAAsB;QAC5B,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE1G,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qEAAqE;QACrE,IAAI,SAAS,KAAK,mBAAmB,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;YAC7F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAAG,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAK,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,IAAG,YAAY,CAAO,CAAC,CAAC,CAAC,YAAY,CAAC;QAEpI,OAAO,EAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,IAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAQ,CAAC;IAC9G,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Host, h, Prop } from \"@stencil/core\";\nimport { authState } from \"../../../auth/store/auth-store\";\nimport { t } from \"../../../i18n\";\nimport { type NewsletterErrorIdentifier, newsletterStore } from \"../../../newsletter/store/newsletter-store\";\nimport { hasSlotContent } from \"../../component-utils\";\nimport { unidyState } from \"../../store/unidy-store\";\n\nexport type AuthErrorType = \"email\" | \"password\" | \"magicCode\" | \"resetPassword\" | \"general\" | \"connection\" | \"passkey\";\n\n@Component({\n tag: \"u-error-message\",\n shadow: true,\n})\nexport class ErrorMessage {\n @Prop({ attribute: \"class-name\" }) componentClassName = \"\";\n @Prop() for!: string;\n\n @Prop() errorMessages?: Record<string, string>;\n @Element() el!: HTMLElement;\n\n private detectContext(): \"auth\" | \"newsletter\" | \"profile\" | \"other\" {\n if (this.el.closest(\"u-signin-root\") || this.el.closest(\"u-signin-step\")) return \"auth\";\n\n if (this.el.closest(\"u-profile\")) return \"profile\";\n\n if (this.el.closest(\"u-newsletter-root\")) return \"newsletter\";\n\n if (this.for === \"general\" || this.for === \"connection\") return \"other\";\n\n throw new Error(\n \"No context found for error message. Make sure you are using the component within a u-signin-root, u-profile, or u-newsletter-root.\",\n );\n }\n\n private get context(): \"auth\" | \"newsletter\" | \"profile\" | \"other\" {\n return this.detectContext();\n }\n\n private getAuthErrorMessage(errorCode: string): string {\n if (this.errorMessages?.[errorCode]) {\n return this.errorMessages[errorCode];\n }\n\n const translatedError = t(`errors.${errorCode}`);\n if (translatedError !== `errors.${errorCode}`) {\n return translatedError;\n }\n\n return errorCode || t(\"errors.unknown\", { defaultValue: \"An error occurred\" });\n }\n\n private getNewsletterErrorMessage(errorIdentifier: NewsletterErrorIdentifier): string {\n return t(`newsletter.errors.${errorIdentifier}`) || t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" });\n }\n\n private getErrorMessage(errorCode: string): string | null {\n if (this.context === \"auth\") {\n return this.getAuthErrorMessage(errorCode);\n }\n\n return this.getNewsletterErrorMessage(errorCode as NewsletterErrorIdentifier);\n }\n\n private getAuthErrorCode(): string | null {\n const forValue = this.for as AuthErrorType;\n\n if (forValue === \"connection\") {\n return unidyState.backendConnected ? null : \"connection_failed\";\n }\n\n if (forValue === \"general\") {\n return authState.globalErrors.auth;\n }\n\n return authState.errors[forValue];\n }\n\n private getNewsletterErrorCode(): string | null {\n const error = newsletterStore.state.errors[this.for];\n return error ?? null;\n }\n\n render() {\n const errorCode = this.context === \"newsletter\" ? this.getNewsletterErrorCode() : this.getAuthErrorCode();\n\n if (!errorCode) {\n return null;\n }\n\n // Only render connection_failed for \"general\" and \"connection\" types\n if (errorCode === \"connection_failed\" && this.for !== \"general\" && this.for !== \"connection\") {\n return null;\n }\n\n const errorMessage = this.getErrorMessage(errorCode);\n const formattedMessage = errorMessage?.includes(\"\\n\") ? <div style={{ whiteSpace: \"pre-line\" }}>{errorMessage}</div> : errorMessage;\n\n return <Host class={this.componentClassName}>{hasSlotContent(this.el) ? <slot /> : formattedMessage}</Host>;\n }\n}\n"]}
1
+ {"version":3,"file":"error-message.js","sourceRoot":"","sources":["../../../../src/shared/components/error-message/error-message.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Host, Prop } from \"@stencil/core\";\nimport { t } from \"../../../i18n\";\nimport { authState } from \"../../../auth/store/auth-store\";\nimport { unidyState } from \"../../store/unidy-store\";\nimport { type NewsletterErrorIdentifier, newsletterStore } from \"../../../newsletter/store/newsletter-store\";\nimport { hasSlotContent } from \"../../component-utils\";\n\nexport type AuthErrorType = \"email\" | \"password\" | \"magicCode\" | \"resetPassword\" | \"general\" | \"connection\";\n\n@Component({\n tag: \"u-error-message\",\n shadow: true,\n})\nexport class ErrorMessage {\n @Prop({ attribute: \"class-name\" }) componentClassName = \"\";\n @Prop() for!: string;\n\n @Prop() errorMessages?: Record<string, string>;\n @Element() el!: HTMLElement;\n\n private detectContext(): \"auth\" | \"newsletter\" | \"profile\" | \"other\" {\n if (this.el.closest(\"u-signin-root\") || this.el.closest(\"u-signin-step\")) return \"auth\";\n\n if (this.el.closest(\"u-profile\")) return \"profile\";\n\n if (this.el.closest(\"u-newsletter-root\")) return \"newsletter\";\n\n if (this.for === \"general\" || this.for === \"connection\") return \"other\";\n\n throw new Error(\n \"No context found for error message. Make sure you are using the component within a u-signin-root, u-profile, or u-newsletter-root.\",\n );\n }\n\n private get context(): \"auth\" | \"newsletter\" | \"profile\" | \"other\" {\n return this.detectContext();\n }\n\n private getAuthErrorMessage(errorCode: string): string {\n if (this.errorMessages?.[errorCode]) {\n return this.errorMessages[errorCode];\n }\n\n const translatedError = t(`errors.${errorCode}`);\n if (translatedError !== `errors.${errorCode}`) {\n return translatedError;\n }\n\n return errorCode || t(\"errors.unknown\", { defaultValue: \"An error occurred\" });\n }\n\n private getNewsletterErrorMessage(errorIdentifier: NewsletterErrorIdentifier): string {\n return t(`newsletter.errors.${errorIdentifier}`) || t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" });\n }\n\n private getErrorMessage(errorCode: string): string | null {\n if (this.context === \"auth\") {\n return this.getAuthErrorMessage(errorCode);\n }\n\n return this.getNewsletterErrorMessage(errorCode as NewsletterErrorIdentifier);\n }\n\n private getAuthErrorCode(): string | null {\n const forValue = this.for as AuthErrorType;\n\n if (forValue === \"connection\") {\n return unidyState.backendConnected ? null : \"connection_failed\";\n }\n\n if (forValue === \"general\") {\n return authState.globalErrors.auth;\n }\n\n return authState.errors[forValue];\n }\n\n private getNewsletterErrorCode(): string | null {\n const error = newsletterStore.state.errors[this.for];\n return error ?? null;\n }\n\n render() {\n const errorCode = this.context === \"newsletter\" ? this.getNewsletterErrorCode() : this.getAuthErrorCode();\n\n if (!errorCode) {\n return null;\n }\n\n // Only render connection_failed for \"general\" and \"connection\" types\n if (errorCode === \"connection_failed\" && this.for !== \"general\" && this.for !== \"connection\") {\n return null;\n }\n\n const errorMessage = this.getErrorMessage(errorCode);\n const formattedMessage = errorMessage?.includes(\"\\n\") ? <div style={{ whiteSpace: \"pre-line\" }}>{errorMessage}</div> : errorMessage;\n\n return <Host class={this.componentClassName}>{hasSlotContent(this.el) ? <slot /> : formattedMessage}</Host>;\n }\n}\n"]}
@@ -1 +1 @@
1
- /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--u-animate-spin:spin 1s linear infinite;--u-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--u-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--u-default-font-family:var(--u-font-sans);--u-default-mono-font-family:var(--u-font-mono);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{font-family:var(--u-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--u-default-font-feature-settings,normal);font-variation-settings:var(--u-default-font-variation-settings,normal);-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--u-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--u-default-mono-font-feature-settings,normal);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--u-default-mono-font-variation-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.u\:inline-flex{display:inline-flex}.u\:h-\[1em\]{height:1em}.u\:w-\[1em\]{width:1em}.u\:animate-spin{animation:var(--u-animate-spin)}.u\:items-center{align-items:center}.u\:justify-center{justify-content:center}.u\:rounded-\[50\%\]{border-radius:50%}}@keyframes spin{to{transform:rotate(1turn)}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{.u\:flex{display:flex}.u\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.u\:disabled\:opacity-50:disabled{opacity:.5}.u\:justify-end{justify-content:flex-end}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer base{}@layer components;@layer utilities{.container{width:100%}.border{border-style:var(--tw-border-style);border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:host{font-size:var(--spinner-font-size,20px)}.spinner-inner{border-top:.1em solid var(--spinner-color-secondary,#ccc);border:.1em solid var(--spinner-color-secondary,#ccc);border-top-color:var(--spinner-color-primary,#333)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}
1
+ /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--u-animate-spin:spin 1s linear infinite;--u-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--u-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--u-default-font-family:var(--u-font-sans);--u-default-mono-font-family:var(--u-font-mono);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{font-family:var(--u-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--u-default-font-feature-settings,normal);font-variation-settings:var(--u-default-font-variation-settings,normal);-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--u-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--u-default-mono-font-feature-settings,normal);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--u-default-mono-font-variation-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.u\:flex{display:flex}.u\:justify-center{justify-content:center}.u\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.u\:disabled\:opacity-50:disabled{opacity:.5}.u\:inline-flex{display:inline-flex}.u\:h-\[1em\]{height:1em}.u\:w-\[1em\]{width:1em}.u\:animate-spin{animation:var(--u-animate-spin)}.u\:items-center{align-items:center}.u\:rounded-\[50\%\]{border-radius:50%}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{}@keyframes spin{to{transform:rotate(1turn)}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{.u\:justify-end{justify-content:flex-end}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer base{}@layer components;@layer utilities{.container{width:100%}.border{border-style:var(--tw-border-style);border-width:1px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}:host{font-size:var(--spinner-font-size,20px)}.spinner-inner{border-top:.1em solid var(--spinner-color-secondary,#ccc);border:.1em solid var(--spinner-color-secondary,#ccc);border-top-color:var(--spinner-color-primary,#333)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}
@@ -1 +1 @@
1
- /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--u-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--u-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--u-default-font-family:var(--u-font-sans);--u-default-mono-font-family:var(--u-font-mono);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{font-family:var(--u-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--u-default-font-feature-settings,normal);font-variation-settings:var(--u-default-font-variation-settings,normal);-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--u-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--u-default-mono-font-feature-settings,normal);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--u-default-mono-font-variation-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.u\:flex{display:flex}.u\:justify-center{justify-content:center}.u\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.u\:disabled\:opacity-50:disabled{opacity:.5}.u\:justify-end{justify-content:flex-end}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer base{}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
1
+ /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer theme{:host,:root{--u-animate-spin:spin 1s linear infinite;--u-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--u-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--u-default-font-family:var(--u-font-sans);--u-default-mono-font-family:var(--u-font-mono);--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{font-family:var(--u-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--u-default-font-feature-settings,normal);font-variation-settings:var(--u-default-font-variation-settings,normal);-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--u-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--u-default-mono-font-feature-settings,normal);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--u-default-mono-font-variation-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex;padding-block:0}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.u\:flex{display:flex}.u\:justify-center{justify-content:center}.u\:disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.u\:disabled\:opacity-50:disabled{opacity:.5}.u\:inline-flex{display:inline-flex}.u\:h-\[1em\]{height:1em}.u\:w-\[1em\]{width:1em}.u\:animate-spin{animation:var(--u-animate-spin)}.u\:items-center{align-items:center}.u\:rounded-\[50\%\]{border-radius:50%}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{}@keyframes spin{to{transform:rotate(1turn)}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components;@layer utilities{.u\:justify-end{justify-content:flex-end}} /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer base{}@layer components,utilities; /*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer base{}@layer components;@layer utilities{.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}