Files
halobestie-clone/client_app/assets/payment_icons/bca.svg
Ramadhan Sjamsani 1f6d8e09ae Phase 5.x payment catalog + customer-app splash/register polish
Payment catalog (Phase 5.x — see requirement/phase5-payment-catalog-plan.md):
- New tables payment_method_groups + payment_methods with seed (3 groups,
  10 methods; GoPay seeded inactive pending Xendit channel confirmation).
- payment-catalog.service.js with two-layer cache (60s in-process + 1h
  Valkey) and config:invalidate pub/sub fanout. Mutator API + casing-
  tolerant findActiveMethodByCode for downstream validation.
- App-facing GET /api/client/payment-methods returns pre-grouped JSON,
  active-only, empty groups dropped server-side.
- POST /api/client/payment-requests now validates `method` against the
  catalog (INVALID_PAYMENT_METHOD 422) and stamps
  product_metadata.preferred_payment_code (upper-cased).
- Control-center /internal/payment-{groups,methods}{,/:id,/reorder}
  endpoints (full CRUD + idempotent reorder). New Payment Catalog page
  wired into the CC nav.
- Customer app renders the catalog as collapsible groups (first expanded)
  via paymentCatalogProvider; QRIS-only hardcoded fallback on 5xx so
  checkout never hard-fails. Replaces the hardcoded _PayMethod enum.
- 10 brand SVGs (~63KB) bundled in client_app/assets/payment_icons/ from
  github.com/hafidznoor/idn-finlogos. Xendit's per-channel media-asset
  pages were planned but found decommissioned during implementation —
  switched to idn-finlogos with the standard "channels-we-accept"
  trademark posture. See assets/payment_icons/README.md for the workflow
  to add new methods.
- 16 vitest cases covering the service + cache; full backend suite green
  (162/162).

Customer-app splash + register polish:
- Splash rewritten per figma S1: warm vertical gradient, two ImageFiltered
  radial orbs, 96×96 rounded-square logo tile, "HaloBestie" + "kamu gak
  harus ngerasain ini sendirian." Self-driving navigation via context.go
  after a 2.5s post-frame timer (native Android splash burns ~1-1.5s
  before Flutter paints — 1s timer yielded near-zero visible duration).
  Router early-returns null for isSplash so it never moves us off /splash
  on its own.
- 3-page onboarding carousel removed: user clarified the new splash
  REPLACES that carousel. Dropped /onboarding route, OnboardingScreen,
  onboardingDoneProvider + gating, dead splash_{1,2,3}.png + the
  splash_chat_hebat.png Flutter asset. Phase 4 /onboarding/* subroutes
  untouched; Android-native launch_background drawable left alone.
- Register screen (login-by-phone) polished: circular pink back button +
  72×72 logo badge (same brandLogoBg pink as splash, Transform.scale 1.4
  to fill the tile). Step-dots indicator removed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 23:06:46 +08:00

26 lines
7.7 KiB
XML

<svg width="80" height="26" viewBox="0 0 80 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3802_10653)">
<path d="M11.7878 19.0307C11.7878 18.0314 11.7986 15.3604 11.774 15.0313C11.7955 11.0568 8.90568 8.25311 7.08002 8.47168C5.81674 8.58131 4.75801 9.09642 4.18954 10.5783C3.66266 11.9593 4.13371 13.7963 5.88545 14.2273C7.75857 14.6902 8.85233 15.0754 9.64389 15.6188C10.6138 16.284 11.4056 17.5549 11.4266 19.0323" fill="#0060AF"/>
<path d="M12.5354 25.0722C9.23268 25.0722 5.83838 24.2588 2.44859 22.6499L2.36541 22.609L2.32563 22.5242C0.804445 19.3132 0 15.8011 0 12.365C0 8.9341 0.771444 5.57233 2.29376 2.36564L2.33558 2.28042L2.42034 2.23793C5.55606 0.752457 8.92935 0 12.4496 0C15.7288 0 19.2309 0.83767 22.5757 2.42667L22.6616 2.46487L22.7012 2.55166C24.2515 5.82187 25.0691 9.33304 25.0691 12.7122C25.0691 16.0783 24.2841 19.443 22.7319 22.7111L22.691 22.797L22.6047 22.8368C19.5169 24.2985 16.0346 25.0722 12.5354 25.0722ZM2.76232 22.2096C6.05537 23.7586 9.33959 24.5409 12.5354 24.5409C15.9241 24.5409 19.2942 23.8001 22.2941 22.396C23.7843 19.2291 24.5397 15.9698 24.5397 12.7122C24.5397 9.44153 23.7513 6.03932 22.26 2.86539C19.0139 1.33946 15.6239 0.530268 12.4496 0.530268C9.04146 0.530268 5.77486 1.25311 2.73384 2.67914C1.27414 5.78729 0.531174 9.04417 0.531174 12.365C0.531174 15.6922 1.30329 19.0958 2.76232 22.2096Z" fill="#0060AF"/>
<path d="M11.005 19.0323C11.0111 17.7514 10.2962 16.6187 9.36175 16.01C8.5329 15.4721 7.42015 15.1186 5.62501 14.6633C5.0701 14.5214 4.48966 14.2061 4.30996 13.8042C3.83462 14.2832 3.74827 15.36 3.83191 15.9892C3.9291 16.7175 4.78011 17.9177 6.06147 17.9648C6.84399 17.9962 7.83333 17.7963 8.30777 17.6956C9.12623 17.5188 10.4212 18.0314 10.6273 19.0307" fill="#0060AF"/>
<path d="M12.4496 2.2773C10.277 2.2773 8.40022 3.71011 8.407 6.18944C8.41378 8.27435 10.0905 9.39049 10.6888 10.1877C11.5929 11.389 12.0823 12.811 12.1331 14.9868C12.1727 16.7184 12.1706 18.4283 12.1795 19.0343H12.6591C12.6507 18.4003 12.629 16.5851 12.6539 14.9332C12.6864 12.7568 13.1934 11.389 14.098 10.1877C14.7015 9.39049 16.3768 8.27435 16.3805 6.18944C16.3886 3.71011 14.513 2.2773 12.3422 2.2773" fill="#0060AF"/>
<path d="M13.0012 19.0307C13.0012 18.0314 12.9899 15.3604 13.0141 15.0313C12.9928 11.0568 15.8808 8.25311 17.708 8.47168C18.9713 8.58131 20.0289 9.09642 20.599 10.5783C21.1254 11.9593 20.6516 13.7963 18.9019 14.2273C17.0279 14.6902 15.9355 15.0754 15.1419 15.6188C14.1731 16.284 13.4367 17.5549 13.4141 19.0323" fill="#0060AF"/>
<path d="M13.7833 19.0323C13.7765 17.7514 14.4912 16.6187 15.4229 16.01C16.2551 15.4721 17.3692 15.1186 19.1628 14.6633C19.7188 14.5214 20.2986 14.2061 20.4751 13.8042C20.9527 14.2832 21.0388 15.36 20.9552 15.9892C20.856 16.7175 20.0072 17.9177 18.7281 17.9648C17.9458 17.9962 16.9513 17.7963 16.4789 17.6956C15.6636 17.5188 14.3651 18.0314 14.158 19.0307" fill="#0060AF"/>
<path d="M14.4536 23.1675L14.1755 21.1389L14.8466 21.0372C15.01 21.0148 15.2089 21.0433 15.2885 21.1457C15.3764 21.2526 15.4033 21.341 15.4203 21.4811C15.4456 21.6545 15.3954 21.855 15.2001 21.9549V21.961C15.4183 21.961 15.55 22.1176 15.5882 22.382C15.5939 22.4379 15.6104 22.5728 15.5939 22.6854C15.5496 22.9532 15.3898 23.0393 15.1201 23.0771L14.4536 23.1675ZM14.8855 22.8043C14.9651 22.7929 15.0458 22.7887 15.1088 22.7485C15.2053 22.6854 15.1965 22.5505 15.1832 22.4503C15.1495 22.2302 15.0921 22.1465 14.8586 22.1811L14.7119 22.2037L14.8048 22.8156L14.8855 22.8043ZM14.7449 21.8669C14.8337 21.8525 14.9542 21.8418 15.0044 21.7575C15.0306 21.7013 15.0643 21.6565 15.0421 21.5313C15.0148 21.3828 14.9655 21.2908 14.777 21.3265L14.6014 21.3548L14.6705 21.8746" fill="#0060AF"/>
<path d="M17.3605 21.9474C17.3657 21.9852 17.3718 22.0272 17.3741 22.0649C17.4284 22.435 17.3605 22.7412 16.9446 22.8255C16.3298 22.944 16.2121 22.562 16.1038 22.0272L16.0462 21.7379C15.9614 21.2261 15.925 20.8387 16.5245 20.7194C16.8624 20.6577 17.0857 20.7922 17.1786 21.1285C17.193 21.1787 17.2111 21.2284 17.2179 21.2788L16.8502 21.3548C16.8077 21.2284 16.7514 21.0026 16.5859 21.0216C16.2889 21.0573 16.387 21.4269 16.4175 21.5812L16.5281 22.1366C16.5613 22.3045 16.6273 22.5728 16.8843 22.5211C17.0929 22.4793 17.0021 22.1542 16.9835 22.0211" fill="#0060AF"/>
<path d="M17.9507 22.5613L17.8235 20.4619L18.3176 20.3112L19.3535 22.1371L18.9645 22.2535L18.719 21.7894L18.2871 21.9192L18.3429 22.4467L17.9507 22.5613ZM18.2509 21.5801L18.5631 21.4897L18.1485 20.6403" fill="#0060AF"/>
<path d="M5.74674 20.9741C5.90135 20.4791 6.0399 20.1147 6.62984 20.2766C6.94561 20.3647 7.14135 20.504 7.13208 20.8708C7.13056 20.9524 7.1036 21.0356 7.08597 21.1163L6.71867 21.0148C6.76682 20.8123 6.79733 20.6516 6.54779 20.5747C6.25938 20.4956 6.18908 20.8453 6.1493 20.9963L5.9999 21.5467C5.95243 21.7101 5.89547 21.9802 6.1493 22.0498C6.35906 22.1063 6.48631 21.9004 6.56226 21.5998L6.30526 21.5317L6.39409 21.2133L6.99827 21.4076L6.71144 22.4684L6.43342 22.3929L6.49603 22.1687H6.48812C6.36018 22.352 6.204 22.3712 6.06725 22.345C5.46307 22.1816 5.52613 21.7867 5.67034 21.2591" fill="#0060AF"/>
<path d="M7.99557 21.8701L7.81362 22.7331L7.40405 22.6445L7.84052 20.6294L8.53873 20.7872C8.94739 20.8753 9.0708 21.0573 9.01294 21.4318C8.97994 21.6468 8.87393 21.8785 8.61512 21.8597L8.61241 21.8562C8.83121 21.9328 8.84974 22.0431 8.81155 22.2339C8.79505 22.315 8.68135 22.8076 8.75978 22.8871L8.7625 22.9475L8.33869 22.8369C8.32106 22.7004 8.38096 22.455 8.40469 22.3191C8.42865 22.1989 8.46685 22.0293 8.34479 21.9656C8.24918 21.9147 8.21369 21.9172 8.10565 21.8924L7.99557 21.8701ZM8.06542 21.558L8.34118 21.6323C8.50866 21.6565 8.60179 21.5697 8.63479 21.3674C8.66463 21.1818 8.62597 21.1093 8.47566 21.0733L8.18002 21.0135" fill="#0060AF"/>
<path d="M10.6225 21.0797L11.0276 21.1267L10.8531 22.5432C10.7683 22.9924 10.5947 23.1888 10.1006 23.1273C9.59791 23.0638 9.47856 22.8348 9.50908 22.3821L9.6847 20.9667L10.0929 21.0135L9.91774 22.3972C9.89921 22.5475 9.8644 22.7702 10.1318 22.7971C10.3689 22.8151 10.4227 22.6581 10.4494 22.4628" fill="#0060AF"/>
<path d="M11.4741 23.2048L11.596 21.1791L12.3742 21.2128C12.7419 21.2309 12.8382 21.5313 12.8267 21.8179C12.8161 21.9922 12.7616 22.1868 12.6097 22.2923C12.4852 22.3821 12.3251 22.4033 12.1766 22.3961L11.923 22.382L11.8724 23.231L11.4741 23.2048ZM11.9345 22.0731L12.1407 22.0846C12.3082 22.0907 12.4192 22.0245 12.4336 21.7786C12.4418 21.5424 12.3525 21.5024 12.1355 21.4929L11.9721 21.4873" fill="#0060AF"/>
<path d="M66.3618 4.23518L63.2688 9.8491C62.1013 8.90113 60.6758 8.20337 58.8569 8.20337C54.5526 8.20337 52.8042 11.4119 52.8042 13.672C52.8042 15.3496 53.9027 17.8248 57.7326 17.8248C59.3401 17.8248 61.6255 16.7064 62.2833 16.1976L59.2242 22.7107C57.7661 23.0016 57.2871 23.182 56.0527 23.2202C49.1979 23.4248 46.4279 19.2138 46.4299 14.9108C46.4345 9.22255 51.4919 2.30465 59.8758 2.30465C60.3896 2.30465 61.018 2.48231 61.5552 2.67918L62.0982 1.98482" fill="#0060AF"/>
<path d="M79.1241 2.1609L80 22.5652H73.4817L73.4779 19.0657H69.0332L67.5703 22.5652H60.5012L67.8917 7.99476L66.2252 7.98391L69.3917 2.1609H79.1241ZM73.4356 8.40297L70.9226 14.3379H73.5113" fill="#0060AF"/>
<path d="M42.3149 2.1609C45.5428 2.17898 47.3669 3.93117 47.3669 6.46227C47.3669 8.79559 45.4431 10.8611 43.3313 11.9291C45.5055 12.7283 45.6936 14.6902 45.6936 16.0783C45.6936 19.4317 42.3287 22.5652 37.9547 22.5652H28.4158L32.1367 8.19773L30.6083 8.18892L33.7327 2.1609C33.7327 2.1609 39.69 2.14282 42.3149 2.1609ZM39.1479 10.4336C39.8156 10.4336 40.9946 10.2646 41.2894 8.97233C41.6124 7.5696 40.5059 7.53185 39.9752 7.53185L38.0788 7.52354L37.4175 10.4337L39.1479 10.4336ZM36.4668 14.0393L35.5936 17.3927H37.8266C38.7051 17.3927 39.9024 16.9567 40.1958 15.8654C40.4856 14.7709 39.6486 14.0393 38.7732 14.0393" fill="#0060AF"/>
</g>
<defs>
<clipPath id="clip0_3802_10653">
<rect width="80" height="25.0722" fill="white"/>
</clipPath>
</defs>
</svg>