ProjectR Docs
Screen Map

State components

Every empty, loading, error, confirmation and gate component in the mobile app, with its copy and where it is used.

Empty states

EmptyEmptyState (generic)

Props: image or icon, title, description, optional CTA

Action: prop CTA → prop

Used in: see rows below

src/shared/components/ui/empty-state.tsx:62
GateSignInRequired

Sign in to The Raw / Collect stamps, save favourites and track your orders.

Action: Sign in → auth sheet

Used in: edit-profile, beauty-profile, beauty-quiz, order-list, wishlist-screen

src/shared/components/ui/sign-in-required.tsx:18
GateSIGN_IN_COPY reasons

12 reasons, e.g. Sign in to save this / Your wishlist follows you to any phone.

Action: Sign in → auth sheet

Used in: login sheet title

src/shared/constants/sign-in-reasons.ts:28
GateGuest addresses empty

Sign in to manage addresses / Save addresses to speed up checkout and delivery details.

Action: Sign in → requireSignIn addresses

Used in: profile/settings/account/addresses

src/app/(app)/(tabs)/profile/settings/account/addresses.tsx:92
GateGuest discounts empty

Sign in to view discounts / Sign in to view your earned vouchers and exclusive discounts.

Action: Sign in → requireSignIn vouchers

Used in: profile/settings/account/discount-pool

src/app/(app)/(tabs)/profile/settings/account/discount-pool.tsx:66
GateGuest contact empty

Sign in to contact us / Support messages are linked to your account so our team can reply.

Action: Sign in → requireSignIn support

Used in: profile/settings/support/contact-us

src/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:237
GateGuest notifications empty

Sign in to view notifications / Your notifications will appear here once you're signed in

Action: Sign in → requireSignIn notifications

Used in: notifications

src/features/notifications/components/notifications-list-screen.tsx:138
GateGuest notification prefs empty

Sign in to manage preferences / Customize your notification settings once you're signed in

Action: Sign in → requireSignIn notifications

Used in: notification-preferences

src/app/(modals)/notification-preferences.tsx:162
EmptyEmpty address book

No saved addresses / Save an address to prefill delivery details at checkout.

Used in: profile/settings/account/addresses

src/app/(app)/(tabs)/profile/settings/account/addresses.tsx:198
EmptyWishlist empty

Your wishlist is empty / Tap the heart on any product to save it here for later.

Action: Start shopping → Shop tab

Used in: wishlist

src/features/wishlist/components/wishlist-screen.tsx:202
EmptyOrders EmptyState (own component)

No Orders Yet / Start shopping to place your first order and track it here.

Action: Start Shopping → Home

Used in: orders

src/features/orders/components/list/_internal/empty-state.tsx:16
EmptyOrders filtered empty

No matching orders / Try a different search term

Used in: orders

src/features/orders/components/list/order-list.tsx:486
EmptyNotificationEmptyContent

All caught up / No notifications to show

Used in: notifications

src/features/notifications/components/notifications-list-screen.tsx:35
EmptyEmptyCartState

Your bag is empty / Let's fill it with your favourite finds and great deals!

Action: Start shopping → product list

Used in: my-bag

src/features/cart/components/core/empty-cart-state.tsx:63
EmptyVoucherEmptyState

No Discounts Yet / Earn vouchers by collecting stamps and playing Shake to Win

Action: Start Earning → Loyalty tab

Used in: profile/settings/account/discount-pool

src/features/vouchers/components/voucher-empty-state.tsx:23
EmptyCart voucher sheet empty

No vouchers yet, earn them through stamps and rewards.

Used in: my-bag

src/features/cart/components/vouchers/voucher-sheet.tsx:283
EmptyNoResultsState

No products found / Try adjusting your filters or check back later

Used in: shop, product-list/[id]

src/features/product-list/components/ui/no-results-state.tsx:12
EmptySearch NoResults

No products found for <query> / Try a different search term

Used in: search

src/features/search/components/states/no-results.tsx:24
EmptyReviews empty

No reviews yet. Be the first to share your thoughts!

Used in: product-reviews/[id]

src/features/reviews/components/reviews-list-view.tsx:158
EmptyAddress picker empty

No saved addresses yet. Add one to speed up checkout.

Action: Add new address → address form

Used in: checkout, my-bag

src/features/addresses/components/address-picker-modal.tsx:62
EmptyAvatar catalogue empty

No avatars available / Ask an admin to activate avatars in the dashboard.

Used in: (modals)/select-avatar

src/app/(modals)/select-avatar.tsx:146
EmptyActivityHistoryEmptyState

No activity yet / Your stamp collection history will appear here

Used in: loyalty

src/features/loyalty/components/activity-history.tsx:228
EmptyLoyaltyEmptyState (12 configs)

No Active Campaign, Campaign Has Ended, You're Offline and 9 more; only two used

Action: Refresh, Retry, Sign in and others

Used in: loyalty

src/features/loyalty/components/shared/loyalty-empty-state.tsx:182
GateLoyaltyGuestView

Spend & collect stamps to unlock surprise rewards

Action: Get Started → requireSignIn loyalty

Used in: loyalty

src/features/loyalty/components/shared/loyalty-guest-view.tsx:35
EmptyBeauty EmptyRoutineState

No recommendations yet / Retake the quiz to get updated suggestions

Action: Retake Quiz → beauty quiz

Used in: beauty-profile

src/app/(app)/beauty-profile.tsx:612
EmptyAuto-hidden Home sections

Renders nothing when empty (recently viewed, category list)

Used in: home

src/features/home/components/recently-viewed-section.tsx:123

Loading

LoadingPageLoader

Loading... (also Signing out..., Loading profile..., Loading notification...)

Used in: profile, edit-profile, addresses, discount-pool, loyalty, order-confirmation

src/shared/components/ui/feedback/page-loader.tsx:25
LoadingLoadingSpinner

Bare spinner, no copy

Used in: search, recently-viewed

src/shared/components/ui/feedback/loading-spinner.tsx
LoadingSkeleton primitive

Width and height block, no copy

Used in: profile, addresses, discount-pool, loyalty, home, beauty-profile

src/shared/components/ui/primitives/skeleton.tsx:12
LoadingProductDetailSkeleton (SkeletonGroup)

Grouped shimmer; only SkeletonGroup user in the app

Used in: product/[id]

src/features/product/components/product-detail-skeleton.tsx:30
LoadingSkeletonProductList and SkeletonCard

Product grid skeletons, no copy

Used in: wishlist, shop, search

src/shared/components/product/skeleton-product-list.tsx:68
LoadingList skeletons

OrderListSkeleton (5 rows), DetailSkeleton, NotificationSkeleton (6 rows)

Used in: orders, order detail, notifications

src/features/orders/components/list/order-list-skeleton.tsx:15
LoadingInline spinners

Small spinners in footers, buttons, bottom bars and sheets

Used in: wishlist, notifications, product-list, product/[id]

src/shared/components/ui/primitives/button.tsx:114
LoadingOverlay spinners

FilteringOverlay, reviews loading, Signing you in

Used in: product-list/[id], product-reviews/[id], auth

src/features/product-list/components/ui/filtering-overlay.tsx:28
LoadingBlockingSplashFallback

Splash image while the auth gate blocks, up to 15 s

Used in: app shell

src/app/(app)/_layout.tsx:194
LoadingAvatar placeholder tiles

12 plain grey tiles, not a Skeleton

Used in: (modals)/select-avatar

src/app/(modals)/select-avatar.tsx:129
LoadingPull to refresh

Accent RefreshControl; notifications use a 400 ms fake spinner; vouchers no-op

Used in: orders, notifications, loyalty, discount-pool

src/features/orders/components/list/order-list.tsx:554
LoadingPagination footers

Load More (n/total) or Showing all N orders

Action: Load More → next page

Used in: orders

src/features/orders/components/list/pagination-footer.tsx:21
LoadingCart sync

Syncing bag... / Processing...

Used in: my-bag

src/app/(app)/(tabs)/my-bag/index.tsx:836

Errors

ErrorAppErrorBoundary

App Error / Something went wrong, but we can try to recover.

Action: Try Again, Retry Connection, Restart App

Used in: app root

src/shared/components/error/app-error-boundary.tsx:36
ErrorEnhancedErrorBoundary

Something Went Wrong / An unexpected error occurred. Please try again.

Action: Try Again (3 retries)

Used in: notifications/detail/[id]

src/shared/components/error/enhanced-error-boundary.tsx
ErrorTabErrorBoundary

Something went wrong / The <Tab> tab encountered an error. Shows raw error message.

Action: Try Again

Used in: home, shop, loyalty, my-bag, profile

src/shared/components/error/tab-error-boundary.tsx:34
ErrorProductListErrorBoundary

Something went wrong plus analyzed user message

Action: Try Again, Go Back, Go to Home

Used in: shop, product-list/[id]

src/shared/components/error/product-list-error-boundary.tsx:31
ErrorApiErrorBoundary

Data Issue, Connection Issue, Authentication Required, Access Denied, Too Many Requests

Action: Try Again

Used in: discount-pool, notifications

src/shared/components/common/api-error-boundary.tsx:162
ErrorAuthErrorBoundary

Authentication Error / Something went wrong during authentication.

Action: Try Again, Go Back

Used in: auth/login, auth/verify, profile-completion

src/features/auth/components/auth-error-boundary.tsx
ErrorShakeToWinErrorBoundary

Alert icon with title and message

Action: Retry

Used in: shake-to-win

src/features/loyalty/components/shake-to-win/error-boundary.tsx:30
ErrorExpo Router ErrorBoundary

Framework default error screen

Used in: app root

src/app/_layout.tsx:128
Error+not-found

Oops! / This screen doesn't exist.

Action: Go to home screen! → /

Used in: unknown routes

src/app/+not-found.tsx:6
OfflineAuthGateTimeoutFallback

Can't load your account / We couldn't reach our servers. Check your connection and try again.

Action: Try again; Continue browsing → degraded mode

Used in: app shell

src/app/(app)/_layout.tsx:204
ErrorSigningInState unknown

We couldn't load your account / You're signed in. Check your connection, then try again.

Action: Try again

Used in: auth/login, auth/verify, profile-completion

src/features/auth/components/signing-in-state.tsx:20
ErrorOrders unavailable

Could not load your orders / Check your connection and try again.

Action: Try Again

Used in: orders

src/features/orders/components/list/order-list.tsx:88
ErrorOrders load more error

Could not load more orders.

Action: Try Again

Used in: orders

src/features/orders/components/list/order-list.tsx:526
ErrorWishlist load error

Could not load your wishlist / Check your connection and try again.

Action: Try Again

Used in: wishlist

src/features/wishlist/components/wishlist-screen.tsx:172
ErrorNotifications load error

Couldn't load notifications / Please check your connection and try again

Action: Try again

Used in: notifications

src/features/notifications/components/notifications-list-screen.tsx:161
ErrorNotification detail error

Unable to load notification / This notification may have been deleted.

Action: Go Back

Used in: notifications/detail/[id]

src/app/(app)/notifications/detail/[id].tsx:100
ErrorProductListErrorState

Failed to load products / Please check your connection and try again

Action: Try Again

Used in: product-list/[id]

src/features/product-list/components/ui/product-list-error-state.tsx:28
ErrorVouchers list error

Unable to load vouchers / Something went wrong while loading your vouchers.

Action: Try Again (unreachable)

Used in: discount-pool

src/features/vouchers/components/voucher-list.tsx:366
ErrorOrder confirmation error

Unable to load order details / Please try again later

Action: Back to Home → Home

Used in: order-confirmation

src/app/(app)/order-confirmation.tsx:75
ErrorDuit Raya ErrorSheetContent

Claim Failed plus message

Action: Try Again; Back to Home

Used in: duit-raya-flow

src/app/duit-raya-flow.tsx:815
ErrorLegal PDF error

Unable to Load Document / The document could not be displayed in the app.

Action: Try Again; Open in Browser

Used in: legal PDFs

src/features/settings/components/legal/legal-pdf-viewer.tsx:147
ErrorLoyalty error configs

error, network-error, auth-error, server-error, offline types; none used

Action: Retry

Used in: loyalty

src/features/loyalty/components/shared/loyalty-empty-state.tsx:45
EdgeCart locked-checkout banner

Checkout in progress plus status text

Action: Close checkout

Used in: my-bag

src/app/(app)/(tabs)/my-bag/index.tsx:652
EdgeCart unavailable items

Some items are unavailable / Remove them to proceed with checkout

Used in: my-bag

src/features/cart/components/unavailable-items-warning.tsx:31
EdgeUnavailableItemsModal

Items Unavailable; Out of stock, Not enough stock, No longer available

Action: Remove & Continue Checkout; Return to Cart

Used in: checkout

src/features/checkout/components/unavailable-items-modal.tsx:68

Alert dialogs

EdgeDelete address alert

Delete address? / <line1>, <postcode> <city>. Cancel, Delete

Action: Delete (destructive)

Used in: profile/settings/account/addresses

src/app/(app)/(tabs)/profile/settings/account/addresses.tsx:127
ErrorDocument unavailable alert

Document unavailable / This document cannot be opened from the app right now.

Action: OK

Used in: legal PDFs

src/features/settings/components/legal/legal-pdf-viewer.tsx:86
ErrorUnable to open document alert

Unable to open document / Please try again later or contact support.

Action: OK

Used in: legal PDFs

src/features/settings/components/legal/legal-pdf-viewer.tsx:96
EdgeAdd Photo alert

Add Photo / Choose an option

Action: Camera; Photo Library; Cancel

Used in: product-reviews/[id]

src/features/product/components/variants/image-picker-grid.tsx:176
EdgeBlock User alert

Block User / Block <name>? You won't see their reviews anymore.

Action: Block (destructive)

Used in: product-reviews/[id]

src/features/reviews/components/report-review-sheet.tsx:108
EdgeSome items unavailable alert

Some items unavailable / server message

Action: View Cart → /my-bag

Used in: orders

src/features/orders/hooks/use-reorder.ts:34
ErrorReorder failed alert

Reorder failed / server message or Something went wrong. Please try again.

Action: OK

Used in: orders

src/features/orders/hooks/use-reorder.ts:44
EdgeMark as received alert

Mark as received? / Confirm you've received this parcel. This marks the order as delivered.

Action: Mark received

Used in: orders/[id]

src/features/orders/hooks/use-mark-received.ts:23
ErrorCould not update alert

Could not update / server message or Something went wrong. Please try again.

Action: OK

Used in: orders/[id]

src/features/orders/hooks/use-mark-received.ts:39
GateCamera Access Required alert

Camera Access Required / enable camera access in Settings > Privacy > Camera > THERAW.

Action: Open Settings; Cancel

Used in: duit-raya-flow

src/shared/hooks/utils/use-camera-permission.ts:136

Toasts

EdgeToast systems

HeroUI toast (about 55 sites) and flash-message wrapper (3 to 4 s) in use together

Used in: app root

src/app/_layout.tsx:415
ErrorProfile toasts

Could not delete account / error message or Please check your connection and try again.

Used in: profile

src/app/(app)/(tabs)/profile/index.tsx:315
SuccessEdit profile toasts

Success / Profile updated successfully; Update failed

Used in: edit-profile

src/app/(app)/edit-profile.tsx:85
SuccessContact us toasts

Message Sent; Failed to Send; warning Sign In Required

Used in: contact-us

src/app/(app)/(tabs)/profile/settings/support/contact-us.tsx:154
SuccessFAQ toast

Email Copied / cx@theraw.com.my has been copied to clipboard.

Used in: faq

src/app/(app)/(tabs)/profile/settings/support/faq.tsx:47
SuccessAddresses toasts

Address deleted; Default address updated; Location permission needed; Unable to save address

Used in: addresses, address-form

src/app/(app)/(tabs)/profile/settings/account/addresses.tsx:114
EdgeCart toasts

Unable to Remove Item; Checkout In Progress; Promo code applied; Invalid promo code; Variant updated

Used in: my-bag

src/app/(app)/(tabs)/my-bag/index.tsx:294
ErrorPDP toasts

Failed to add to bag; Checkout failed

Used in: product/[id]

src/features/product/components/product-detail-page.tsx:217
SuccessWishlist toasts

Saved to wishlist; Removed from wishlist; Could not update wishlist; Slow down a moment

Used in: wishlist, product/[id]

src/features/wishlist/hooks/use-wishlist-set.ts:59
EdgeReviews toasts

Rating Required; Review Exists; Cannot Report; User Blocked

Used in: product-reviews/[id]

src/features/reviews/components/review-form-view.tsx:66
SuccessVoucher toasts

Voucher Unavailable; Code Copied; Copy Failed

Used in: discount-pool, my-bag

src/features/vouchers/hooks/use-voucher-actions.ts:50
EdgeNotification toasts

Could not delete notification; Notification deleted / Tap to undo

Action: Tap to undo → restore

Used in: notifications

src/features/notifications/hooks/use-notification-inbox.ts:188
GateNotification prompt toasts

Notifications Disabled; Error; both close the modal

Used in: notification-permission

src/app/(modals)/notification-permission.tsx:118
ErrorMarketing and quiz toasts

Cannot open link; Could not save profile / Please check your connection and try again.

Used in: marketing, beauty-quiz

src/features/marketing/components/marketing-page.tsx:87
ErrorSupport button toast

WhatsApp open failure toast

Used in: auth

src/features/auth/components/support-help-button.tsx:19

Confirmations

GateSign out dialog

Sign out? / You will need to sign in again.

Action: Cancel; Sign out

Used in: profile

src/shared/components/ui/dialog/sign-out-confirmation-dialog.tsx:43
GateDelete account dialog

Delete Account / Are you sure? All your data will be permanently removed.

Action: Cancel; Delete

Used in: profile

src/app/(app)/(tabs)/profile/index.tsx:299
EdgeDelete address confirm

Native alert, see Alert dialogs

Action: Cancel; Delete

Used in: addresses

src/app/(app)/(tabs)/profile/settings/account/addresses.tsx:127
EdgeBlock reviewer confirm

Native alert, see Alert dialogs

Action: Cancel; Block

Used in: product-reviews/[id]

src/features/reviews/components/report-review-sheet.tsx:108
EdgeMark received confirm

Native alert, see Alert dialogs

Action: Cancel; Mark received

Used in: orders/[id]

src/features/orders/hooks/use-mark-received.ts:23
EdgeDelete notification

No dialog; swipe left, optimistic delete with Tap to undo toast

Action: Tap to undo

Used in: notifications

src/features/notifications/components/notification-row.tsx:245
EdgeRemove from bag

No confirmation; mutation runs at once, failure toast only

Used in: my-bag

src/app/(app)/(tabs)/my-bag/index.tsx:395
EdgeRemove promo or voucher

Immediate with informative toasts

Used in: my-bag

src/features/cart/hooks/use-cart-discount.ts
EdgeClose checkout

Close checkout button, no extra confirm

Action: Close checkout

Used in: my-bag

src/app/(app)/(tabs)/my-bag/index.tsx:667
EdgeClear recent searches

Immediate; error only logged

Used in: search

src/app/(public)/search.tsx:249
EdgeHard sign out variant

Remove All Data? / Remove All; exists but unused

Action: Remove All

Used in: none

src/shared/components/ui/dialog/sign-out-confirmation-dialog.tsx:43
EdgeConfirmationDialog anatomy

64px icon disc, title, message, confirm and outline cancel; dismiss blocked while confirming

Used in: profile

src/shared/components/ui/feedback/confirmation-dialog.tsx:90

Gates

GateSigned-out screen gate

Screen stays mounted; CTA opens auth sheet then runs onSignedIn

Action: Sign in → auth sheet

Used in: edit-profile, orders, wishlist, addresses, discount-pool, contact-us

src/shared/components/ui/sign-in-required.tsx:18
GateLogin sheet

Root modal titled from SIGN_IN_COPY by reason

Used in: app root

src/app/_layout.tsx:197
GateAccount-details sheet

Signed-in account without details gets profile-completion pushed once

Action: → /auth/profile-completion

Used in: app shell

src/app/(app)/_layout.tsx:176
GateCold-start auth gate

Splash, then timeout fallback; Continue browsing sets degraded mode

Action: Continue browsing

Used in: app shell

src/app/(app)/_layout.tsx:151
GateClosed account

Deleted or suspended accounts signed out silently, no message

Used in: app shell

src/features/auth/hooks/use-post-auth-redirect.ts:85
GateNotification pre-prompt

Know when your order ships / Turn on notifications for shipping updates, new stamps and vouchers.

Action: Turn on notifications; Not now

Used in: order-confirmation

src/app/(modals)/notification-permission.tsx:155
GateOS notification permission result

Granted closes; denied shows warning toast; error shows danger toast

Used in: notification-permission

src/app/(modals)/notification-permission.tsx:97
GateCamera permission

Alert with Open Settings

Action: Open Settings

Used in: duit-raya-flow

src/shared/hooks/utils/use-camera-permission.ts:136
GateLocation permission

Location permission needed / Enable location access to autofill your address.

Used in: address-form

src/features/addresses/components/address-form.tsx:340
GateAppUpdateModal

Update available / A newer version of the app is available. Update now to get the latest features.

Action: Update Now → store; Later

Used in: app root

src/shared/components/update/app-update-modal.tsx:17
GateForce update and maintenance

None found; update modal is always dismissible (7 days)

Used in: none

unverified
GateDuit Raya gate

Sign-in gate with reason duit-raya, camera permission, result sheets

Action: Sign in

Used in: duit-raya-flow

src/app/duit-raya-flow.tsx

Sheets

EdgeCountry picker

Title: Select Country

Used in: auth/login

src/features/auth/components/forms/phone-login-country-picker.tsx:37
EdgeSelect sheet

Title: prop

Used in: edit-profile

src/shared/components/ui/primitives/select.tsx:98
EdgeDate picker sheet

Title: prop

Used in: edit-profile

src/shared/components/ui/forms/date-picker-bottom-sheet.tsx:187
EdgeVariant selection

Bottom sheet

Used in: product/[id]

src/features/product/components/variants/variant-selection-sheet.tsx:122
EdgeReport Review

Title: Report Review

Used in: product-reviews/[id]

src/features/reviews/components/report-review-sheet.tsx:141
EdgeUnavailable items

Title: Items Unavailable

Used in: checkout

src/features/checkout/components/unavailable-items-modal.tsx:68
EdgeDeliver to

Title: Deliver to

Used in: checkout, my-bag

src/features/addresses/components/address-picker-modal.tsx:46
EdgeAddress state picker

Title: Select a state

Used in: address-form

src/features/addresses/components/address-form.tsx:710
EdgeBeauty routine see all

Title: step name

Used in: beauty-profile

src/features/beauty-profile/components/see-all-products-modal.tsx:35
EdgeCart vouchers

Title: Vouchers & Promo

Used in: my-bag

src/features/cart/components/vouchers/voucher-sheet.tsx:229
EdgeCart variant switcher

Title: Choose variant

Used in: my-bag

src/features/cart/components/variant-switcher-sheet.tsx:75
EdgeCheckout details

Title: Checkout details

Used in: my-bag

src/features/cart/components/checkout-details-sheet.tsx:105
EdgeProduct filters

Title: prop

Used in: product-list/[id]

src/features/product-list/components/filters/filter-bottom-sheet.tsx:46
EdgeShake-to-win reward

Bottom sheet

Used in: loyalty

src/features/loyalty/components/shake-to-win/simple-shake-reward.tsx:224
EdgeDuit Raya result

Bottom sheet

Used in: duit-raya-flow

src/app/duit-raya-flow.tsx:410
EdgeAddress form (formSheet)

Title: New Address / Edit Address

Used in: addresses

src/app/(app)/_layout.tsx:344
EdgeAnchored menu

Title: row label

Used in: profile, edit-profile

src/shared/components/ui/anchored-menu.tsx
EdgeConfirmation and update dialogs

Title: HeroUI Dialog

Used in: profile, app root

src/shared/components/ui/feedback/confirmation-dialog.tsx
EdgeRoute modals

Title: notification-permission, notification-preferences, select-avatar

Used in: profile

src/app/(modals)/_layout.tsx:33

Building blocks

EdgeButton

HeroUI wrapper; variants default, secondary, outline, destructive, ghost, link, oval; loading prop

Used in: all screens

src/shared/components/ui/primitives/button.tsx
EdgePressableOpacity and Pressable

pressto gesture-handler redirect

Used in: all screens

src/shared/components/ui/utils/pressto.tsx
EdgeLogoutButton and GuestLoginCard pill

Outlined accent pill, 2px border, 48px min height

Used in: profile

src/features/settings/components/sections/logout-button.tsx
EdgeStyledSwitch

Settings toggle

Used in: notification-preferences

src/shared/components/ui/styled-switch.tsx
EdgeProductCard

Image, brand, title, rating, price, badge, wishlist heart; skeleton twin

Used in: shop, search, wishlist, home

src/shared/components/product/product-card/index.tsx:164
EdgeOrderCard

Order summary card

Used in: orders

src/features/orders/components/list/_internal/order-card.tsx:49
EdgeVoucherCard and VoucherCoupon

Voucher card; cart coupon in voucher-sheet

Used in: discount-pool, my-bag

src/features/vouchers/components/voucher-card.tsx:62
EdgeNotificationRow

Swipe left to delete, unread styling, category avatars

Used in: notifications

src/features/notifications/components/notification-row.tsx:327
EdgeAddressCard

Address with edit, delete, default

Used in: addresses

src/features/addresses/components/address-card.tsx:32
EdgeWishlistCard

Wishlist product card

Used in: wishlist

src/features/wishlist/components/_internal/wishlist-card.tsx:63
EdgeSettingsMenuSection

Titled group, rounded surface, 52px rows with chevron

Used in: profile

src/features/settings/components/sections/settings-menu-section.tsx:39
EdgeProfileHeaderCard

Accent hero with avatar, name, contact line and stat tiles

Used in: profile

src/features/settings/components/sections/profile-header-card.tsx:44
EdgeDetailRow

Label and value row

Used in: orders/[id]

src/shared/components/ui/detail-row.tsx:14
EdgeListGroup rows

HeroUI list group rows

Used in: edit-profile, notification-preferences

src/features/beauty-profile/components/edit-profile-form.tsx
EdgeStatusFilterChips

All, Pending, Processing, Shipped, Delivered, Cancelled

Used in: orders

src/features/orders/components/list/status-filter-chips.tsx:37
EdgeNotificationFilterChips

All, Orders, Rewards, Promos

Used in: notifications

src/features/notifications/components/notification-filter-chips.tsx:21
EdgeFilterChip and CategoryFilterChip

Shop filters

Used in: shop

src/features/product-list/components/filters/
EdgeNative tab bar

Home, Shop, My Bag, Loyalty, Profile; bag count and unread badges cap at 99+

Used in: app shell

src/app/(app)/(tabs)/_layout.tsx:77
EdgeSettings stat tiles

Orders, Stamps, Notifications

Used in: profile

src/features/settings/components/sections/profile-header-card.tsx:157
EdgeStatus and stock badges

No shared Badge; each feature draws its own

Used in: product/[id], orders/[id], discount-pool

src/features/product/components/product-info-block.tsx
EdgeHeaderBackButton

Glass or flat 40px, label Go back

Used in: all stacks

src/shared/components/ui/navigation/header-components.tsx:32
EdgeHeaderCloseButton

Close control for modals

Used in: (modals)

src/shared/components/ui/navigation/header-components.tsx:68
EdgeHeader style tokens

standardHeaderStyle, opaqueHeaderOptions, modalHeaderStyle

Used in: (app), settings, legal, (modals)

src/shared/utils/header-styles
EdgeSearchHeader

Search bar header

Used in: search

src/shared/components/ui/search-header.tsx:28
EdgeCustom in-screen app bars

Wishlist: back, Wishlist, n item(s) saved; orders appBar; beauty Header

Used in: wishlist, orders, beauty-profile

src/features/wishlist/components/wishlist-screen.tsx:135
EdgeWizard headers

Wizard header, progress and selection card

Used in: beauty-quiz

src/shared/components/wizard/wizard-header.tsx
EdgeAppBottomSheet

@expo/ui BottomSheet on iOS and Compose ModalBottomSheet on Android; header, footer, dismissible

Used in: all sheets

src/shared/components/ui/app-bottom-sheet.tsx