@mohasinac/appkit 4.59.0 → 4.60.0
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.
- package/dist/.build-stamp.json +3 -3
- package/dist/_internal/client/features/layout/DashboardLayoutClient.js +62 -5
- package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +2 -2
- package/dist/_internal/server/features/brands/actions.js +78 -4
- package/dist/_internal/server/features/checkout/actions.d.ts +36 -13
- package/dist/_internal/server/features/checkout/actions.js +668 -183
- package/dist/_internal/server/features/checkout/supplier-identity.js +18 -1
- package/dist/_internal/server/features/gateway-events/index.d.ts +10 -0
- package/dist/_internal/server/features/gateway-events/index.js +10 -0
- package/dist/_internal/server/features/gateway-events/ingest.d.ts +127 -0
- package/dist/_internal/server/features/gateway-events/ingest.js +188 -0
- package/dist/_internal/server/features/gateway-events/redact.d.ts +66 -0
- package/dist/_internal/server/features/gateway-events/redact.js +151 -0
- package/dist/_internal/server/features/grievance/actions.d.ts +63 -0
- package/dist/_internal/server/features/grievance/actions.js +173 -0
- package/dist/_internal/server/features/grievance/index.d.ts +8 -0
- package/dist/_internal/server/features/grievance/index.js +8 -0
- package/dist/_internal/server/features/grouped/data.js +28 -3
- package/dist/_internal/server/features/lottery/actions.js +99 -4
- package/dist/_internal/server/features/order-completion/actions.d.ts +92 -0
- package/dist/_internal/server/features/order-completion/actions.js +336 -0
- package/dist/_internal/server/features/order-completion/index.d.ts +7 -0
- package/dist/_internal/server/features/order-completion/index.js +7 -0
- package/dist/_internal/server/features/orders/actions.d.ts +13 -0
- package/dist/_internal/server/features/orders/actions.js +56 -2
- package/dist/_internal/server/features/orders/adapters.js +26 -0
- package/dist/_internal/server/features/orders/cancellation-refund.d.ts +116 -0
- package/dist/_internal/server/features/orders/cancellation-refund.js +466 -0
- package/dist/_internal/server/features/orders/index.d.ts +2 -1
- package/dist/_internal/server/features/orders/index.js +1 -1
- package/dist/_internal/server/features/orders/service.d.ts +60 -0
- package/dist/_internal/server/features/orders/service.js +74 -0
- package/dist/_internal/server/features/payment-cases/disputes.d.ts +76 -0
- package/dist/_internal/server/features/payment-cases/disputes.js +241 -0
- package/dist/_internal/server/features/payment-cases/index.d.ts +9 -0
- package/dist/_internal/server/features/payment-cases/index.js +9 -0
- package/dist/_internal/server/features/payouts/actions.d.ts +28 -3
- package/dist/_internal/server/features/payouts/actions.js +84 -10
- package/dist/_internal/server/features/points/adjust.d.ts +61 -0
- package/dist/_internal/server/features/points/adjust.js +121 -0
- package/dist/_internal/server/features/points/award.d.ts +65 -0
- package/dist/_internal/server/features/points/award.js +145 -0
- package/dist/_internal/server/features/price-index/market.d.ts +33 -0
- package/dist/_internal/server/features/price-index/market.js +54 -1
- package/dist/_internal/server/features/products/data.js +40 -22
- package/dist/_internal/server/features/protection-claims/actions.d.ts +72 -0
- package/dist/_internal/server/features/protection-claims/actions.js +228 -0
- package/dist/_internal/server/features/protection-claims/index.d.ts +8 -0
- package/dist/_internal/server/features/protection-claims/index.js +8 -0
- package/dist/_internal/server/features/refunds/actions.d.ts +20 -0
- package/dist/_internal/server/features/refunds/actions.js +259 -17
- package/dist/_internal/server/features/refunds/capacity.d.ts +29 -0
- package/dist/_internal/server/features/refunds/capacity.js +37 -0
- package/dist/_internal/server/features/reviews/actions.js +3 -2
- package/dist/_internal/server/features/search/index-build/sources.js +20 -1
- package/dist/_internal/server/features/shipping/reconcile.d.ts +10 -1
- package/dist/_internal/server/features/shipping/reconcile.js +34 -3
- package/dist/_internal/server/features/shipping/reimbursement.d.ts +117 -0
- package/dist/_internal/server/features/shipping/reimbursement.js +223 -0
- package/dist/_internal/server/features/stores/tabs.d.ts +19 -4
- package/dist/_internal/server/features/stores/tabs.js +24 -4
- package/dist/_internal/server/functions/https.d.ts +31 -1
- package/dist/_internal/server/functions/https.js +52 -1
- package/dist/_internal/server/functions/scheduled.d.ts +72 -1
- package/dist/_internal/server/functions/scheduled.js +124 -1
- package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +62 -16
- package/dist/_internal/server/jobs/core/boxRollupReconcile.d.ts +46 -0
- package/dist/_internal/server/jobs/core/boxRollupReconcile.js +142 -0
- package/dist/_internal/server/jobs/core/dailyDataCleanup.js +149 -1
- package/dist/_internal/server/jobs/core/dailyStatusDigest.d.ts +14 -0
- package/dist/_internal/server/jobs/core/dailyStatusDigest.js +79 -1
- package/dist/_internal/server/jobs/core/index.d.ts +2 -0
- package/dist/_internal/server/jobs/core/index.js +2 -0
- package/dist/_internal/server/jobs/core/marketPriceRollup.d.ts +64 -0
- package/dist/_internal/server/jobs/core/marketPriceRollup.js +153 -0
- package/dist/_internal/server/jobs/core/obligationSweep.d.ts +36 -0
- package/dist/_internal/server/jobs/core/obligationSweep.js +503 -0
- package/dist/_internal/server/jobs/core/paymentReconcile.d.ts +79 -0
- package/dist/_internal/server/jobs/core/paymentReconcile.js +614 -0
- package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +34 -0
- package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +35 -4
- package/dist/_internal/server/jobs/handlers/boxRollupReconcile.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/boxRollupReconcile.js +15 -0
- package/dist/_internal/server/jobs/handlers/countersReconcileNow.d.ts +65 -0
- package/dist/_internal/server/jobs/handlers/countersReconcileNow.js +89 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +5 -0
- package/dist/_internal/server/jobs/handlers/index.js +5 -0
- package/dist/_internal/server/jobs/handlers/marketPriceRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/marketPriceRollup.js +2 -0
- package/dist/_internal/server/jobs/handlers/obligationSweep.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/obligationSweep.js +15 -0
- package/dist/_internal/server/jobs/handlers/onShipmentAllocationSync.js +30 -1
- package/dist/_internal/server/jobs/handlers/paymentReconcile.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/paymentReconcile.js +6 -0
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +71 -0
- package/dist/_internal/shared/checkout/coupon-discount.d.ts +73 -0
- package/dist/_internal/shared/checkout/coupon-discount.js +103 -0
- package/dist/_internal/shared/checkout/lanes.d.ts +42 -0
- package/dist/_internal/shared/checkout/lanes.js +46 -0
- package/dist/_internal/shared/checkout/order-math.d.ts +149 -1
- package/dist/_internal/shared/checkout/order-math.js +251 -3
- package/dist/_internal/shared/checkout/refundable-base.d.ts +116 -0
- package/dist/_internal/shared/checkout/refundable-base.js +122 -0
- package/dist/_internal/shared/features/auctions/config.d.ts +14 -1
- package/dist/_internal/shared/features/auctions/config.js +30 -1
- package/dist/_internal/shared/features/brands/schema.d.ts +42 -0
- package/dist/_internal/shared/features/brands/schema.js +18 -0
- package/dist/_internal/shared/features/orders/refund-copy.d.ts +22 -0
- package/dist/_internal/shared/features/orders/refund-copy.js +34 -0
- package/dist/_internal/shared/features/print/label-profiles.d.ts +198 -0
- package/dist/_internal/shared/features/print/label-profiles.js +350 -0
- package/dist/_internal/shared/features/products/to-product-item.js +33 -5
- package/dist/_internal/shared/fees/calculator.d.ts +31 -2
- package/dist/_internal/shared/fees/calculator.js +103 -5
- package/dist/_internal/shared/fees/india-states.d.ts +195 -0
- package/dist/_internal/shared/fees/india-states.js +190 -0
- package/dist/_internal/shared/fees/payout-hold.d.ts +80 -0
- package/dist/_internal/shared/fees/payout-hold.js +74 -0
- package/dist/_internal/shared/obligations/deadlines.d.ts +94 -0
- package/dist/_internal/shared/obligations/deadlines.js +155 -0
- package/dist/_internal/shared/shipping/quote.d.ts +96 -0
- package/dist/_internal/shared/shipping/quote.js +67 -0
- package/dist/_internal/shared/time/business-days.d.ts +91 -0
- package/dist/_internal/shared/time/business-days.js +185 -0
- package/dist/cli/index.js +0 -2
- package/dist/client.d.ts +9 -4
- package/dist/client.js +26 -3
- package/dist/configs/tailwind.d.ts +0 -12
- package/dist/configs/tailwind.js +28 -15
- package/dist/constants/api-endpoints.d.ts +51 -9
- package/dist/constants/api-endpoints.js +23 -7
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/payment.d.ts +131 -0
- package/dist/features/about/components/AboutView.js +1 -1
- package/dist/features/about/components/DeveloperView.js +5 -2
- package/dist/features/about/components/FAQPageView.js +2 -1
- package/dist/features/about/components/FeesView.js +2 -1
- package/dist/features/about/components/HelpPageView.js +2 -1
- package/dist/features/about/components/HowAuctionsWorkView.js +2 -1
- package/dist/features/about/components/HowCheckoutWorksView.js +2 -1
- package/dist/features/about/components/HowEmiWorksView.js +2 -1
- package/dist/features/about/components/HowOffersWorkView.js +2 -1
- package/dist/features/about/components/HowOrdersWorkView.js +2 -1
- package/dist/features/about/components/HowPayoutsWorkView.js +2 -1
- package/dist/features/about/components/HowPreOrdersWorkView.js +2 -1
- package/dist/features/about/components/HowReviewsWorkView.js +2 -1
- package/dist/features/about/components/PolicyPageView.js +2 -1
- package/dist/features/about/components/ProseHero.d.ts +73 -0
- package/dist/features/about/components/ProseHero.js +18 -0
- package/dist/features/about/components/SecurityPrivacyView.js +2 -1
- package/dist/features/about/components/ShippingPolicyView.js +2 -1
- package/dist/features/about/components/TrackOrderView.js +2 -1
- package/dist/features/about/components/UnauthorizedView.js +1 -1
- package/dist/features/about/index.d.ts +2 -0
- package/dist/features/about/index.js +5 -0
- package/dist/features/account/actions/address-actions.d.ts +26 -2
- package/dist/features/account/actions/address-actions.js +25 -1
- package/dist/features/account/components/BuyerShoppingGuideView.js +1 -1
- package/dist/features/account/components/NotificationPreferencesPanel.js +1 -1
- package/dist/features/account/components/UserOrdersView.js +17 -0
- package/dist/features/account/components/UserSidebar.js +1 -1
- package/dist/features/account/hooks/useNotifications.js +29 -0
- package/dist/features/admin/actions/admin-coupon-actions.js +36 -0
- package/dist/features/admin/components/AdminBeysView.js +2 -2
- package/dist/features/admin/components/AdminBlogEditorView.js +2 -2
- package/dist/features/admin/components/AdminBrandEditorView.js +32 -2
- package/dist/features/admin/components/AdminBundleEditorView.js +1 -1
- package/dist/features/admin/components/AdminCarouselEditorView.js +1 -1
- package/dist/features/admin/components/AdminCategoriesView.js +1 -1
- package/dist/features/admin/components/AdminCategoryEditorView.js +73 -17
- package/dist/features/admin/components/AdminContactEditorView.js +1 -1
- package/dist/features/admin/components/AdminCouponEditorView.js +26 -1
- package/dist/features/admin/components/AdminFaqEditorView.js +1 -1
- package/dist/features/admin/components/AdminFaqsView.js +2 -2
- package/dist/features/admin/components/AdminGatewayEventsView.d.ts +54 -0
- package/dist/features/admin/components/AdminGatewayEventsView.js +209 -0
- package/dist/features/admin/components/AdminGuideHubView.js +1 -1
- package/dist/features/admin/components/AdminMoneyCasesView.d.ts +60 -0
- package/dist/features/admin/components/AdminMoneyCasesView.js +287 -0
- package/dist/features/admin/components/AdminPartsView.js +2 -2
- package/dist/features/admin/components/AdminProductsView.js +75 -4
- package/dist/features/admin/components/AdminSidebar.js +2 -2
- package/dist/features/admin/components/AdminSiteSettingsView.js +65 -7
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +2 -0
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +1 -1
- package/dist/features/admin/components/AdminSupportTicketsView.js +2 -2
- package/dist/features/admin/components/AdminTesterChecklistView.js +2 -2
- package/dist/features/admin/components/AdminUsersView.js +72 -1
- package/dist/features/admin/components/AdminViewCards.d.ts +3 -1
- package/dist/features/admin/components/AdminViewCards.js +4 -4
- package/dist/features/admin/components/DataListingView.d.ts +28 -0
- package/dist/features/admin/components/DataListingView.js +175 -14
- package/dist/features/admin/components/DataTable.d.ts +12 -1
- package/dist/features/admin/components/DataTable.js +3 -3
- package/dist/features/admin/components/OwnerQuickActions.d.ts +1 -1
- package/dist/features/admin/components/OwnerQuickActions.js +60 -2
- package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +1 -1
- package/dist/features/admin/components/RecordOwnerQuickActions.js +61 -14
- package/dist/features/admin/components/analytics/AdminStatCard.d.ts +35 -1
- package/dist/features/admin/components/analytics/AdminStatCard.js +77 -2
- package/dist/features/admin/components/index.d.ts +4 -0
- package/dist/features/admin/components/index.js +6 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +156 -0
- package/dist/features/admin/constants/filter-tabs.js +106 -0
- package/dist/features/admin/repository/site-settings.repository.d.ts +22 -0
- package/dist/features/admin/repository/site-settings.repository.js +82 -1
- package/dist/features/admin/schemas/admin-editor-forms.d.ts +21 -0
- package/dist/features/admin/schemas/admin-editor-forms.js +44 -0
- package/dist/features/admin/schemas/firestore.js +5 -1
- package/dist/features/admin/schemas/site-settings-form.js +30 -1
- package/dist/features/auctions/actions/bid-actions.js +13 -1
- package/dist/features/auctions/components/AuctionBottomActions.js +2 -2
- package/dist/features/auctions/components/AuctionDetailPageView.js +3 -1
- package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +11 -0
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +5 -3
- package/dist/features/auctions/components/PlaceBidFormClient.d.ts +8 -1
- package/dist/features/auctions/components/PlaceBidFormClient.js +2 -2
- package/dist/features/audit-log/schemas/firestore.d.ts +28 -0
- package/dist/features/audit-log/schemas/firestore.js +14 -0
- package/dist/features/auth/permissions/constants.d.ts +17 -1
- package/dist/features/auth/permissions/constants.js +18 -0
- package/dist/features/blog/components/BlogPostView.js +1 -1
- package/dist/features/catalogue/components/AdminCatalogueApprovalsView.js +1 -1
- package/dist/features/categories/api/[id]/description-template/route.js +107 -1
- package/dist/features/categories/components/BrandDetailPageView.js +2 -2
- package/dist/features/categories/components/BreadcrumbTrail.js +7 -1
- package/dist/features/categories/components/BundleDetailView.js +1 -1
- package/dist/features/categories/components/CategoryDetailPageView.js +2 -2
- package/dist/features/categories/components/CategoryForm.js +12 -1
- package/dist/features/categories/components/CategoryTemplatePicker.js +38 -5
- package/dist/features/categories/repository/market-price-index.repository.d.ts +123 -0
- package/dist/features/categories/repository/market-price-index.repository.js +105 -0
- package/dist/features/categories/repository/price-observation.repository.d.ts +166 -0
- package/dist/features/categories/repository/price-observation.repository.js +132 -0
- package/dist/features/events/components/EventSaleBanner.js +1 -1
- package/dist/features/events/components/EventStatusBadge.js +1 -1
- package/dist/features/faq/components/FAQAccordion.js +2 -1
- package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
- package/dist/features/faq/components/FAQHelpfulButtons.js +4 -4
- package/dist/features/faq/components/RelatedFAQs.js +1 -1
- package/dist/features/filters/FilterFacetSection.js +1 -1
- package/dist/features/filters/SwitchFilter.js +1 -1
- package/dist/features/gateway-events/repository/gateway-events.repository.d.ts +117 -0
- package/dist/features/gateway-events/repository/gateway-events.repository.js +274 -0
- package/dist/features/gateway-events/schemas/firestore.d.ts +217 -0
- package/dist/features/gateway-events/schemas/firestore.js +125 -0
- package/dist/features/gateway-events/schemas/index.d.ts +81 -0
- package/dist/features/gateway-events/schemas/index.js +79 -0
- package/dist/features/grouped/components/GroupedListingDetailView.js +1 -1
- package/dist/features/homepage/components/AnnouncementBar.js +37 -1
- package/dist/features/homepage/components/AnnouncementBar.style.css +30 -0
- package/dist/features/homepage/components/BrandsSection.js +1 -1
- package/dist/features/homepage/components/CTABannerSection.js +1 -1
- package/dist/features/homepage/components/FeaturedBundlesSection.js +14 -24
- package/dist/features/homepage/components/HeroCarousel.js +2 -2
- package/dist/features/homepage/components/SocialPostCard.js +1 -1
- package/dist/features/inventory/components/AdminMoveLedgerView.d.ts +7 -0
- package/dist/features/inventory/components/AdminMoveLedgerView.js +157 -0
- package/dist/features/inventory/components/AdminStorageBoxesView.d.ts +11 -0
- package/dist/features/inventory/components/AdminStorageBoxesView.js +168 -0
- package/dist/features/inventory/components/ReceiveStationView.d.ts +39 -0
- package/dist/features/inventory/components/ReceiveStationView.js +413 -0
- package/dist/features/inventory/components/operator-message.d.ts +29 -0
- package/dist/features/inventory/components/operator-message.js +41 -0
- package/dist/features/inventory/index.d.ts +13 -0
- package/dist/features/inventory/index.js +28 -0
- package/dist/features/inventory/repository/inventory-movements.repository.d.ts +97 -0
- package/dist/features/inventory/repository/inventory-movements.repository.js +186 -0
- package/dist/features/inventory/repository/inventory-placements.repository.d.ts +179 -0
- package/dist/features/inventory/repository/inventory-placements.repository.js +345 -0
- package/dist/features/inventory/repository/storage-boxes.repository.d.ts +83 -0
- package/dist/features/inventory/repository/storage-boxes.repository.js +127 -0
- package/dist/features/inventory/schemas/firestore.d.ts +197 -0
- package/dist/features/inventory/schemas/firestore.js +159 -0
- package/dist/features/layout/AppLayoutShell.d.ts +12 -1
- package/dist/features/layout/AppLayoutShell.js +25 -12
- package/dist/features/layout/AutoBreadcrumbs.js +162 -3
- package/dist/features/layout/AutoBreadcrumbs.style.css +45 -0
- package/dist/features/layout/BottomNavbar.d.ts +1 -1
- package/dist/features/layout/BottomNavbar.js +2 -2
- package/dist/features/media/MediaAvatar.js +1 -1
- package/dist/features/media/MediaImage.d.ts +24 -4
- package/dist/features/media/MediaImage.js +44 -4
- package/dist/features/media/MediaLightbox.js +1 -1
- package/dist/features/media/modals/ImageCropModal.js +1 -1
- package/dist/features/media/modals/ImageEditor.js +1 -1
- package/dist/features/media/upload/MediaUploadField.js +91 -3
- package/dist/features/obligations/constants/policies.d.ts +92 -0
- package/dist/features/obligations/constants/policies.js +378 -0
- package/dist/features/obligations/repository/obligations.repository.d.ts +68 -0
- package/dist/features/obligations/repository/obligations.repository.js +158 -0
- package/dist/features/obligations/schemas/firestore.d.ts +160 -0
- package/dist/features/obligations/schemas/firestore.js +87 -0
- package/dist/features/orders/actions/order-actions.d.ts +43 -4
- package/dist/features/orders/actions/order-actions.js +60 -3
- package/dist/features/orders/actions/refund-actions.js +70 -10
- package/dist/features/orders/components/OrderCompletionPanel.d.ts +27 -0
- package/dist/features/orders/components/OrderCompletionPanel.js +192 -0
- package/dist/features/orders/components/OrdersList.js +2 -2
- package/dist/features/orders/components/RefundHistoryTable.js +3 -1
- package/dist/features/orders/components/index.d.ts +2 -0
- package/dist/features/orders/components/index.js +6 -0
- package/dist/features/orders/constants/transitions.d.ts +59 -0
- package/dist/features/orders/constants/transitions.js +104 -0
- package/dist/features/orders/repository/orders.repository.d.ts +109 -6
- package/dist/features/orders/repository/orders.repository.js +464 -21
- package/dist/features/orders/schemas/firestore.d.ts +270 -0
- package/dist/features/orders/schemas/firestore.js +24 -0
- package/dist/features/orders/schemas/index.d.ts +61 -0
- package/dist/features/orders/schemas/index.js +22 -0
- package/dist/features/orders/types/index.d.ts +79 -0
- package/dist/features/parts/components/PartsIndexPageView.js +8 -1
- package/dist/features/payment-cases/repository/payment-cases.repository.d.ts +170 -0
- package/dist/features/payment-cases/repository/payment-cases.repository.js +342 -0
- package/dist/features/payment-cases/schemas/firestore.d.ts +229 -0
- package/dist/features/payment-cases/schemas/firestore.js +105 -0
- package/dist/features/payment-cases/schemas/resolve-form.d.ts +97 -0
- package/dist/features/payment-cases/schemas/resolve-form.js +114 -0
- package/dist/features/payments/repository/payout.repository.d.ts +0 -1
- package/dist/features/payments/repository/payout.repository.js +0 -1
- package/dist/features/points/repository/points.repository.d.ts +122 -0
- package/dist/features/points/repository/points.repository.js +304 -1
- package/dist/features/points/schemas/adjust-form.d.ts +58 -0
- package/dist/features/points/schemas/adjust-form.js +63 -0
- package/dist/features/points/schemas/firestore.d.ts +108 -1
- package/dist/features/points/schemas/firestore.js +84 -0
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +3 -3
- package/dist/features/pre-orders/components/PreOrderBadge.js +1 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +1 -1
- package/dist/features/price-index/components/PriceIndexToolView.d.ts +23 -4
- package/dist/features/price-index/components/PriceIndexToolView.js +71 -6
- package/dist/features/price-index/market-stats.d.ts +82 -0
- package/dist/features/price-index/market-stats.js +230 -0
- package/dist/features/print/components/BoxLabelPrintView.d.ts +25 -0
- package/dist/features/print/components/BoxLabelPrintView.js +66 -0
- package/dist/features/print/components/LabelProfilePicker.d.ts +13 -0
- package/dist/features/print/components/LabelProfilePicker.js +38 -0
- package/dist/features/print/components/labels.d.ts +117 -0
- package/dist/features/print/components/labels.js +258 -0
- package/dist/features/print/components/labels.style.css +46 -0
- package/dist/features/print/index.d.ts +6 -0
- package/dist/features/print/index.js +16 -0
- package/dist/features/products/columns/productTableColumns.js +5 -4
- package/dist/features/products/components/MarketplaceBundleCard.js +2 -2
- package/dist/features/products/components/MarketplacePrizeDrawCard.js +6 -6
- package/dist/features/products/components/PrizeDrawCollage.js +1 -1
- package/dist/features/products/components/PrizeDrawItemsEditor.js +1 -1
- package/dist/features/products/components/PrizeRevealModal.js +2 -2
- package/dist/features/products/components/ProductDetailPageView.js +18 -4
- package/dist/features/products/components/ProductForm.js +34 -23
- package/dist/features/products/components/ProductGrid.js +86 -62
- package/dist/features/products/constants/card-badges.d.ts +97 -0
- package/dist/features/products/constants/card-badges.js +100 -0
- package/dist/features/products/repository/products.repository.js +34 -1
- package/dist/features/products/schemas/firestore.d.ts +46 -3
- package/dist/features/products/schemas/firestore.js +21 -0
- package/dist/features/promotions/components/PromotionsView.js +1 -1
- package/dist/features/promotions/repository/claimed-coupons.repository.d.ts +32 -0
- package/dist/features/promotions/repository/claimed-coupons.repository.js +58 -0
- package/dist/features/promotions/schemas/firestore.js +30 -3
- package/dist/features/promotions/schemas/index.d.ts +6 -6
- package/dist/features/protection-claims/repository/protection-claims.repository.d.ts +54 -0
- package/dist/features/protection-claims/repository/protection-claims.repository.js +174 -0
- package/dist/features/protection-claims/schemas/firestore.d.ts +168 -0
- package/dist/features/protection-claims/schemas/firestore.js +130 -0
- package/dist/features/reviews/actions/review-actions.js +3 -2
- package/dist/features/reviews/components/ReviewModal.js +1 -1
- package/dist/features/reviews/components/ReviewsList.js +1 -1
- package/dist/features/reviews/schemas/firestore.d.ts +20 -1
- package/dist/features/scams/constants/scam-types.d.ts +2 -0
- package/dist/features/scams/constants/scam-types.js +18 -0
- package/dist/features/scams/schemas/report-form.d.ts +3 -3
- package/dist/features/scams/schemas/report-form.js +26 -1
- package/dist/features/search/components/Search.js +9 -9
- package/dist/features/search/components/SearchResultsClient.js +18 -3
- package/dist/features/search/components/SearchResultsPageView.d.ts +1 -6
- package/dist/features/search/components/SearchResultsPageView.js +2 -2
- package/dist/features/seller/actions/offer-actions.js +16 -1
- package/dist/features/seller/actions/seller-actions.js +14 -3
- package/dist/features/seller/components/CategoryInlineSelect.js +75 -11
- package/dist/features/seller/components/PrintCenterView.d.ts +5 -0
- package/dist/features/seller/components/PrintCenterView.js +41 -30
- package/dist/features/seller/components/SellerOrdersView.js +1 -1
- package/dist/features/seller/components/SellerPayoutRequestView.js +16 -5
- package/dist/features/seller/components/SellerPayoutSettingsView.js +1 -1
- package/dist/features/seller/components/SellerProductShell.d.ts +16 -0
- package/dist/features/seller/components/SellerProductShell.js +123 -13
- package/dist/features/seller/components/SellerReviewsView.js +4 -2
- package/dist/features/seller/components/SellerSidebar.js +1 -1
- package/dist/features/seller/schemas/coupon-form.d.ts +26 -0
- package/dist/features/seller/schemas/coupon-form.js +27 -0
- package/dist/features/seller/schemas/product-form.d.ts +3 -0
- package/dist/features/seller/schemas/product-form.js +5 -0
- package/dist/features/shell/FormShell.js +2 -2
- package/dist/features/shell/QuickFormDrawer.js +14 -0
- package/dist/features/shell/SectionForm.d.ts +19 -0
- package/dist/features/shell/SectionForm.js +133 -9
- package/dist/features/shell/SectionForm.style.css +54 -0
- package/dist/features/shipments/components/AdminShipmentsView.js +16 -1
- package/dist/features/shipments/repository/shipment-items.repository.d.ts +9 -0
- package/dist/features/shipments/repository/shipment-items.repository.js +14 -0
- package/dist/features/site-settings/components/ActionPermissionsManager.js +1 -1
- package/dist/features/sticker-trace/components/StickerCommitPanel.js +1 -1
- package/dist/features/store-extensions/schemas/report-review-form.d.ts +8 -8
- package/dist/features/stores/components/StoreGuideHubView.js +1 -1
- package/dist/features/stores/components/StoreHeader.js +1 -1
- package/dist/features/support/schemas/firestore.d.ts +73 -2
- package/dist/features/support/schemas/firestore.js +59 -0
- package/dist/index.d.ts +16 -24
- package/dist/index.js +38 -47
- package/dist/next/ErrorBoundary.js +1 -1
- package/dist/next/routing/route-map.d.ts +24 -0
- package/dist/next/routing/route-map.js +40 -0
- package/dist/providers/payment-manual/index.d.ts +15 -1
- package/dist/providers/payment-manual/index.js +37 -0
- package/dist/providers/payment-phonepe/index.d.ts +14 -1
- package/dist/providers/payment-phonepe/index.js +36 -0
- package/dist/providers/payment-razorpay/index.d.ts +44 -1
- package/dist/providers/payment-razorpay/index.js +99 -0
- package/dist/providers/shipping-shiprocket/index.d.ts +18 -0
- package/dist/providers/shipping-shiprocket/index.js +18 -0
- package/dist/schemas/registry.d.ts +44 -11
- package/dist/server-entry.d.ts +2 -0
- package/dist/server-entry.js +27 -0
- package/dist/server.d.ts +42 -0
- package/dist/server.js +93 -0
- package/dist/styles.css +418 -149
- package/dist/tailwind-utilities.css +1 -1
- package/dist/tokens/themes/default-dark.js +15 -12
- package/dist/tokens/themes/default-light.js +14 -11
- package/dist/tokens/tokens.css +106 -23
- package/dist/ui/DataTable.style.css +4 -4
- package/dist/ui/columns/cell-renderers.d.ts +20 -0
- package/dist/ui/columns/cell-renderers.js +26 -1
- package/dist/ui/columns/index.d.ts +1 -1
- package/dist/ui/columns/index.js +4 -1
- package/dist/ui/components/Badge.style.css +1 -1
- package/dist/ui/components/Breadcrumb.js +19 -1
- package/dist/ui/components/BulkActionBar.style.css +4 -4
- package/dist/ui/components/Button.style.css +1 -1
- package/dist/ui/components/Checkbox.style.css +1 -1
- package/dist/ui/components/FallbackShell.js +1 -1
- package/dist/ui/components/Form.d.ts +14 -1
- package/dist/ui/components/Form.js +2 -2
- package/dist/ui/components/FormField.js +18 -4
- package/dist/ui/components/FormField.style.css +43 -3
- package/dist/ui/components/GatedPrice.style.css +1 -1
- package/dist/ui/components/IconButton.style.css +1 -1
- package/dist/ui/components/Input.js +22 -1
- package/dist/ui/components/Input.style.css +38 -22
- package/dist/ui/components/ListingFilterDrawer.js +1 -1
- package/dist/ui/components/ListingToolbar.js +1 -1
- package/dist/ui/components/PaginatedSelect.js +0 -0
- package/dist/ui/components/Radio.style.css +1 -1
- package/dist/ui/components/Repeater.d.ts +53 -0
- package/dist/ui/components/Repeater.js +7 -0
- package/dist/ui/components/RichTextEditor.d.ts +20 -1
- package/dist/ui/components/RichTextEditor.js +23 -2
- package/dist/ui/components/Select.style.css +7 -21
- package/dist/ui/components/Semantic.js +27 -3
- package/dist/ui/components/TagInput.style.css +4 -9
- package/dist/ui/components/Textarea.style.css +4 -18
- package/dist/ui/components/Toggle.style.css +1 -1
- package/dist/ui/components/Typography.d.ts +3 -3
- package/dist/ui/components/Typography.js +15 -15
- package/dist/ui/components/ViewToggle.style.css +4 -4
- package/dist/ui/forms/AddAnotherToggle.d.ts +16 -0
- package/dist/ui/forms/AddAnotherToggle.js +56 -0
- package/dist/ui/forms/ColorPickerField.js +15 -2
- package/dist/ui/forms/FieldCheckbox.js +15 -2
- package/dist/ui/forms/FieldInput.d.ts +22 -1
- package/dist/ui/forms/FieldInput.js +19 -5
- package/dist/ui/forms/FieldLabel.d.ts +35 -0
- package/dist/ui/forms/FieldLabel.js +70 -0
- package/dist/ui/forms/FieldSelect.d.ts +4 -1
- package/dist/ui/forms/FieldSelect.js +27 -5
- package/dist/ui/forms/FieldTextarea.d.ts +4 -1
- package/dist/ui/forms/FieldTextarea.js +22 -5
- package/dist/ui/forms/FormShell.d.ts +17 -1
- package/dist/ui/forms/FormShell.js +36 -2
- package/dist/ui/forms/FormShell.style.css +41 -33
- package/dist/ui/forms/index.d.ts +5 -1
- package/dist/ui/forms/index.js +2 -0
- package/dist/ui/icons/icon-registry.d.ts +1 -0
- package/dist/ui/icons/icon-registry.js +17 -1
- package/dist/utils/id-generators.d.ts +80 -0
- package/dist/utils/id-generators.js +93 -0
- package/dist/utils/search-txt-builders.d.ts +12 -0
- package/dist/utils/search-txt-builders.js +17 -0
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +106 -5
- package/dist/features/loyalty/api/admin/loyalty/grant/route.d.ts +0 -12
- package/dist/features/loyalty/api/admin/loyalty/grant/route.js +0 -38
- package/dist/features/loyalty/api/balance/route.d.ts +0 -12
- package/dist/features/loyalty/api/balance/route.js +0 -41
- package/dist/features/loyalty/api/earn/route.d.ts +0 -12
- package/dist/features/loyalty/api/earn/route.js +0 -38
- package/dist/features/loyalty/api/history/route.d.ts +0 -12
- package/dist/features/loyalty/api/history/route.js +0 -58
- package/dist/features/loyalty/api/redeem/route.d.ts +0 -12
- package/dist/features/loyalty/api/redeem/route.js +0 -38
- package/dist/features/loyalty/columns/index.d.ts +0 -17
- package/dist/features/loyalty/columns/index.js +0 -40
- package/dist/features/loyalty/components/CoinsDisplay.d.ts +0 -12
- package/dist/features/loyalty/components/CoinsDisplay.js +0 -10
- package/dist/features/loyalty/components/index.d.ts +0 -1
- package/dist/features/loyalty/components/index.js +0 -1
- package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +0 -4
- package/dist/features/loyalty/hooks/useLoyaltyBalance.js +0 -25
- package/dist/features/loyalty/index.d.ts +0 -6
- package/dist/features/loyalty/index.js +0 -6
- package/dist/features/loyalty/manifest.d.ts +0 -2
- package/dist/features/loyalty/manifest.js +0 -16
- package/dist/features/loyalty/messages/en.json +0 -19
- package/dist/features/loyalty/repository/loyalty.repository.d.ts +0 -8
- package/dist/features/loyalty/repository/loyalty.repository.js +0 -22
- package/dist/features/loyalty/schemas/index.d.ts +0 -85
- package/dist/features/loyalty/schemas/index.js +0 -40
- package/dist/features/loyalty/server.d.ts +0 -6
- package/dist/features/loyalty/server.js +0 -6
- package/dist/features/loyalty/types/index.d.ts +0 -31
- package/dist/features/loyalty/types/index.js +0 -1
- package/dist/features/loyalty/types/loyalty-config.d.ts +0 -7
- package/dist/features/loyalty/types/loyalty-config.js +0 -1
- package/dist/features/loyalty/types/loyalty-math.d.ts +0 -9
- package/dist/features/loyalty/types/loyalty-math.js +0 -27
- package/dist/features/products/components/ProductOwnerQuickActions.d.ts +0 -11
- package/dist/features/products/components/ProductOwnerQuickActions.js +0 -120
|
@@ -24,7 +24,28 @@ export const Input = React.forwardRef(function Input({ label, error, helperText,
|
|
|
24
24
|
.filter(Boolean)
|
|
25
25
|
.join(" ");
|
|
26
26
|
if (bare) {
|
|
27
|
-
|
|
27
|
+
/*
|
|
28
|
+
* 🛑 `bare` DROPPED THE LABEL, and four call sites pass one.
|
|
29
|
+
*
|
|
30
|
+
* This branch exists to render an `<input>` with no wrapper markup —
|
|
31
|
+
* `/admin/site`'s native colour pickers need the element bare so the
|
|
32
|
+
* swatch fills its box. But it also ignored `label` entirely, so
|
|
33
|
+
* `<Input type="color" label="Overlay color" bare />` rendered an input
|
|
34
|
+
* with NO accessible name while the call site plainly declared one.
|
|
35
|
+
* A prop accepted and silently discarded (Root Cause #51's shape), and
|
|
36
|
+
* it lands on exactly the page the audit measured.
|
|
37
|
+
*
|
|
38
|
+
* `aria-label` rather than a `<label>` element: adding a label here
|
|
39
|
+
* would reintroduce the wrapper this branch exists to avoid. Only when
|
|
40
|
+
* the label is a STRING — a ReactNode cannot become an attribute, and
|
|
41
|
+
* stringifying one would produce "[object Object]" as the field's
|
|
42
|
+
* accessible name, which is worse than none.
|
|
43
|
+
*
|
|
44
|
+
* A caller's own `aria-label` wins, so this fills a gap and never
|
|
45
|
+
* overrides an explicit choice.
|
|
46
|
+
*/
|
|
47
|
+
const bareAriaLabel = props["aria-label"] ?? (typeof label === "string" ? label : undefined);
|
|
48
|
+
return (_jsx("input", { ...props, ref: ref, id: inputId, disabled: disabled, "aria-label": bareAriaLabel, "aria-invalid": error ? "true" : undefined, className: inputClassName }));
|
|
28
49
|
}
|
|
29
50
|
const adornment = rightIcon ??
|
|
30
51
|
(success && !error ? (_jsx("svg", { className: CLS_INPUT_SUCCESS_ICON, viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { fillRule: "evenodd", d: "M16.704 5.29a1 1 0 010 1.42l-7.2 7.2a1 1 0 01-1.415 0l-3.2-3.2a1 1 0 111.414-1.42l2.493 2.494 6.493-6.494a1 1 0 011.415 0z", clipRule: "evenodd" }) })) : null);
|
|
@@ -1,10 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ── Geometry: aligned to `.appkit-select__trigger`, not invented ───────────
|
|
3
|
+
*
|
|
4
|
+
* This measured 34px tall with a 6px radius, against a select trigger
|
|
5
|
+
* 40px tall with an 8px radius sitting in the same `<FormGroup>` — so a text
|
|
6
|
+
* field and a dropdown on one row of one form were visibly different
|
|
7
|
+
* controls. 34px with 14px text is also a desktop-density target on a touch
|
|
8
|
+
* device.
|
|
9
|
+
*
|
|
10
|
+
* `--appkit-size-input-md` is 40px and already existed; the select already
|
|
11
|
+
* used it, and so do `Button`, `ActionRow` and `Tabs`. `Input` and
|
|
12
|
+
* `Textarea` were the two that did not. So this is not a new number — it is
|
|
13
|
+
* the four controls that already agreed being joined by the two that did
|
|
14
|
+
* not, which is why it carries no judgement call about what "40" should be.
|
|
15
|
+
*
|
|
16
|
+
* Radius follows the same rule: `--appkit-radius-lg` (8px) is what the
|
|
17
|
+
* select already renders, and 8px is inside the 8–12px range the audit
|
|
18
|
+
* named. Reaching for 10px would have invented a third radius to sit beside
|
|
19
|
+
* two existing ones.
|
|
20
|
+
*/
|
|
1
21
|
.appkit-input {
|
|
2
22
|
width: 100%;
|
|
23
|
+
min-height: var(--appkit-size-input-md);
|
|
3
24
|
border: 1px solid var(--appkit-color-border);
|
|
4
|
-
border-radius:
|
|
5
|
-
|
|
25
|
+
border-radius: var(--appkit-radius-lg);
|
|
26
|
+
/* The token named for this control, which it did not read: the light fill
|
|
27
|
+
* was `surface` and the dark fill a hardcoded `rgba(30, 41, 59, 0.7)`. */
|
|
28
|
+
background: var(--appkit-color-surface-input);
|
|
6
29
|
color: var(--appkit-color-text);
|
|
7
|
-
padding: 0.
|
|
30
|
+
padding: 0.5rem 0.75rem;
|
|
8
31
|
font-size: 0.875rem;
|
|
9
32
|
line-height: 1.4;
|
|
10
33
|
transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
|
|
@@ -20,16 +43,16 @@
|
|
|
20
43
|
|
|
21
44
|
.appkit-input:focus-visible {
|
|
22
45
|
outline: none;
|
|
23
|
-
border-color: var(--appkit-color-
|
|
24
|
-
box-shadow:
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.dark .appkit-input {
|
|
28
|
-
border-color: var(--appkit-color-border);
|
|
29
|
-
background: rgba(30, 41, 59, 0.7);
|
|
30
|
-
color: var(--appkit-color-text);
|
|
46
|
+
border-color: var(--appkit-color-focus-ring);
|
|
47
|
+
box-shadow: var(--appkit-focus-ring);
|
|
31
48
|
}
|
|
32
49
|
|
|
50
|
+
/*
|
|
51
|
+
* The `.dark .appkit-input` block that stood here is gone: it set
|
|
52
|
+
* `border-color` and `color` to the SAME tokens the base rule already uses,
|
|
53
|
+
* and a hardcoded background that is now `--appkit-color-surface-input`.
|
|
54
|
+
* Three declarations, nothing to say.
|
|
55
|
+
*/
|
|
33
56
|
.dark .appkit-input::placeholder {
|
|
34
57
|
color: var(--appkit-color-text-muted);
|
|
35
58
|
}
|
|
@@ -38,29 +61,22 @@
|
|
|
38
61
|
border-color: var(--appkit-color-slate-500);
|
|
39
62
|
}
|
|
40
63
|
|
|
41
|
-
.dark .appkit-input:focus-visible {
|
|
42
|
-
border-color: var(--appkit-color-primary);
|
|
43
|
-
box-shadow: 0 0 0 3px rgba(233, 30, 140, 0.25), inset 0 0 0 1px rgba(233, 30, 140, 0.15);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
64
|
/* Error variant */
|
|
47
65
|
.appkit-input--error {
|
|
48
66
|
border-color: var(--appkit-color-error);
|
|
49
|
-
background:
|
|
67
|
+
background: color-mix(in srgb, var(--appkit-color-error) 6%, var(--appkit-color-surface-input));
|
|
50
68
|
}
|
|
51
69
|
|
|
52
70
|
.appkit-input--error:focus-visible {
|
|
53
71
|
border-color: var(--appkit-color-error);
|
|
54
|
-
box-shadow:
|
|
72
|
+
box-shadow: var(--appkit-focus-ring-error);
|
|
55
73
|
}
|
|
56
74
|
|
|
57
75
|
/* Disabled state */
|
|
76
|
+
/* `--appkit-color-bg` inverts with the theme, so the `.dark` override that
|
|
77
|
+
* pinned this to `rgba(30, 41, 59, 0.4)` was saying the same thing twice. */
|
|
58
78
|
.appkit-input:disabled {
|
|
59
79
|
opacity: 0.55;
|
|
60
80
|
cursor: not-allowed;
|
|
61
81
|
background: var(--appkit-color-bg);
|
|
62
82
|
}
|
|
63
|
-
|
|
64
|
-
.dark .appkit-input:disabled {
|
|
65
|
-
background: rgba(30, 41, 59, 0.4);
|
|
66
|
-
}
|
|
@@ -5,7 +5,7 @@ import { Button } from "./Button.js";
|
|
|
5
5
|
import { Span } from "./Typography.js";
|
|
6
6
|
import { sectionBackgroundStyle } from "./Semantic.js";
|
|
7
7
|
import { useHandMode } from "../../_internal/client/hand-mode/index.js";
|
|
8
|
-
const CLS_CLEAR_BTN = "text-xs
|
|
8
|
+
const CLS_CLEAR_BTN = "text-xs hover:text-error text-[var(--appkit-color-text-muted)] transition-colors min-h-0 h-auto p-0";
|
|
9
9
|
export function ListingFilterDrawer({ open, onClose, onApply, onClear, activeCount, children, background, }) {
|
|
10
10
|
const { hand } = useHandMode();
|
|
11
11
|
if (!open)
|
|
@@ -23,7 +23,7 @@ const DEFAULT_LABELS = {
|
|
|
23
23
|
};
|
|
24
24
|
const VIEW_BTN_BASE = "p-1.5 sm:p-2 transition-colors";
|
|
25
25
|
const VIEW_BTN_ACTIVE = "bg-[var(--appkit-color-primary)] text-white";
|
|
26
|
-
const VIEW_BTN_INACTIVE = "
|
|
26
|
+
const VIEW_BTN_INACTIVE = "hover:bg-surface-hover text-[var(--appkit-color-text-muted)]";
|
|
27
27
|
export function ListingToolbar({ filterCount = 0, onFiltersClick, searchValue = "", searchPlaceholder = "Search…", onSearchChange, onSearchCommit, onSearchKeyDown, sortValue, sortOptions, onSortChange, view = "grid", onViewChange, hideViewToggle = false, showTableView = false, onResetAll, hasActiveState = false, bulkMode = false, bulkSelectedCount = 0, bulkTotalCount = 0, onBulkSelectAll, onBulkClear, toggles, extra, labels, className = "", dismissible = true, toolbarId, collapseLabel = "Toolbar", }) {
|
|
28
28
|
const l = { ...DEFAULT_LABELS, ...labels };
|
|
29
29
|
const pathname = usePathname();
|
|
Binary file
|
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
}
|
|
214
214
|
.appkit-radio-item__input:focus-visible {
|
|
215
215
|
outline: none;
|
|
216
|
-
box-shadow:
|
|
216
|
+
box-shadow: var(--appkit-focus-ring-halo);
|
|
217
217
|
}
|
|
218
218
|
.appkit-radio-item__input:not(:disabled):hover {
|
|
219
219
|
border-color: var(--appkit-color-secondary);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A minimal add/remove repeater for a list of editable rows.
|
|
3
|
+
*
|
|
4
|
+
* ── Why this moved here ─────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* It lived inside `AdminCategoryEditorView` with a note on it:
|
|
7
|
+
*
|
|
8
|
+
* Deliberately NOT a new appkit primitive: three local shapes with three
|
|
9
|
+
* different row renderers is not yet the Rule of Three on a *component* —
|
|
10
|
+
* it is one container used three times with a render prop. Promote it
|
|
11
|
+
* when a fourth caller appears outside this file.
|
|
12
|
+
*
|
|
13
|
+
* That was right, and the brand editor is the fourth caller. Promoted on the
|
|
14
|
+
* condition its own author set, rather than copied — a second repeater would
|
|
15
|
+
* be the shape the Duplication Framework exists to stop, and the three
|
|
16
|
+
* existing call sites keep working unchanged because the API did not move.
|
|
17
|
+
*
|
|
18
|
+
* ── The row identity question ───────────────────────────────────────────────
|
|
19
|
+
*
|
|
20
|
+
* 🛑 `key={i}` IS THE INDEX, AND THAT IS A REAL LIMITATION, not an oversight.
|
|
21
|
+
* These rows have no stable id — they are literal form values a human is
|
|
22
|
+
* typing, created blank and filled in — so there is nothing else to key on.
|
|
23
|
+
* The consequence is that REMOVING a row remounts every row below it, which
|
|
24
|
+
* loses focus and any uncommitted IME composition in those inputs.
|
|
25
|
+
*
|
|
26
|
+
* It is tolerable here because the lists are short (`max` is 8 or fewer at
|
|
27
|
+
* every call site) and removal is rare compared to typing. It would not be
|
|
28
|
+
* tolerable on a long or reorderable list; if one appears, give the rows an
|
|
29
|
+
* id at creation and key on that instead of reaching for this.
|
|
30
|
+
*/
|
|
31
|
+
import React from "react";
|
|
32
|
+
export interface RepeaterProps<T> {
|
|
33
|
+
rows: T[];
|
|
34
|
+
onChange: (next: T[]) => void;
|
|
35
|
+
/** Builds an empty row. Called on every "add". */
|
|
36
|
+
blank: () => T;
|
|
37
|
+
addLabel: string;
|
|
38
|
+
/**
|
|
39
|
+
* Renders one row's fields. `set` patches THAT row only — callers never
|
|
40
|
+
* splice the array themselves, which is what keeps the immutable update in
|
|
41
|
+
* one place instead of at every call site.
|
|
42
|
+
*/
|
|
43
|
+
renderRow: (row: T, set: (patch: Partial<T>) => void) => React.ReactNode;
|
|
44
|
+
/**
|
|
45
|
+
* Hard cap. Required rather than optional: every one of these lists renders
|
|
46
|
+
* somewhere with a layout budget — category highlights sit above the FAQs
|
|
47
|
+
* on a public page — and "unbounded by default" is how a form becomes a way
|
|
48
|
+
* to break the page it feeds.
|
|
49
|
+
*/
|
|
50
|
+
max: number;
|
|
51
|
+
}
|
|
52
|
+
export declare function Repeater<T>({ rows, onChange, blank, addLabel, renderRow, max, }: RepeaterProps<T>): React.JSX.Element;
|
|
53
|
+
export default Repeater;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Button, Div, Stack, Text } from "../index.js";
|
|
4
|
+
export function Repeater({ rows, onChange, blank, addLabel, renderRow, max, }) {
|
|
5
|
+
return (_jsxs(Stack, { gap: "sm", children: [rows.map((row, i) => (_jsx(Div, { rounded: "lg", border: "default", padding: "sm", children: _jsxs(Stack, { gap: "xs", children: [renderRow(row, (patch) => onChange(rows.map((r, j) => (j === i ? { ...r, ...patch } : r)))), _jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(rows.filter((_, j) => j !== i)), children: "Remove" })] }) }, i))), rows.length < max ? (_jsx(Button, { variant: "secondary", size: "sm", onClick: () => onChange([...rows, blank()]), children: addLabel })) : (_jsxs(Text, { size: "xs", color: "muted", children: ["Maximum of ", max, " reached."] }))] }));
|
|
6
|
+
}
|
|
7
|
+
export default Repeater;
|
|
@@ -6,5 +6,24 @@ export interface RichTextEditorProps {
|
|
|
6
6
|
className?: string;
|
|
7
7
|
minHeightClassName?: string;
|
|
8
8
|
placeholder?: string;
|
|
9
|
+
/**
|
|
10
|
+
* The `id` of the element labelling this editor.
|
|
11
|
+
*
|
|
12
|
+
* 🛑 `aria-labelledby`, NOT `htmlFor` ON THE LABEL — and that is a hard
|
|
13
|
+
* constraint rather than a preference. `htmlFor` only associates with a
|
|
14
|
+
* LABELABLE element (`input`, `select`, `textarea`, `button`, `output`,
|
|
15
|
+
* `meter`, `progress`), and this editor is a `contenteditable` div, which is
|
|
16
|
+
* none of them. A `<Label htmlFor>` pointing here associates with nothing:
|
|
17
|
+
* the label is visibly present, the editor has no accessible name, and an
|
|
18
|
+
* accessibility pass reports an unlabelled field while a human sees a
|
|
19
|
+
* perfectly labelled one.
|
|
20
|
+
*
|
|
21
|
+
* This prop did not exist, so EVERY rich-text field in the app was
|
|
22
|
+
* unlabelled — `CategoryForm` rendered a bare `<Label>` with no `htmlFor` at
|
|
23
|
+
* all, which is the honest version of the same gap.
|
|
24
|
+
*/
|
|
25
|
+
ariaLabelledBy?: string;
|
|
26
|
+
/** Use when there is no visible label to point at. */
|
|
27
|
+
ariaLabel?: string;
|
|
9
28
|
}
|
|
10
|
-
export declare function RichTextEditor({ value, onChange, disabled, className, minHeightClassName, placeholder, }: RichTextEditorProps): React.JSX.Element;
|
|
29
|
+
export declare function RichTextEditor({ value, onChange, disabled, className, minHeightClassName, placeholder, ariaLabelledBy, ariaLabel, }: RichTextEditorProps): React.JSX.Element;
|
|
@@ -53,7 +53,7 @@ function sanitizeRichTextHtml(html) {
|
|
|
53
53
|
sanitizeChildren(template.content);
|
|
54
54
|
return template.innerHTML;
|
|
55
55
|
}
|
|
56
|
-
export function RichTextEditor({ value, onChange, disabled = false, className = "", minHeightClassName = "min-h-[180px]", placeholder = "Write formatted content...", }) {
|
|
56
|
+
export function RichTextEditor({ value, onChange, disabled = false, className = "", minHeightClassName = "min-h-[180px]", placeholder = "Write formatted content...", ariaLabelledBy, ariaLabel, }) {
|
|
57
57
|
const editorRef = useRef(null);
|
|
58
58
|
const emitChange = () => {
|
|
59
59
|
if (!editorRef.current)
|
|
@@ -120,5 +120,26 @@ export function RichTextEditor({ value, onChange, disabled = false, className =
|
|
|
120
120
|
editor.innerHTML = safeValue;
|
|
121
121
|
}
|
|
122
122
|
}, [value]);
|
|
123
|
-
return (_jsxs("div", { className: `appkit-rich-text-editor rounded-lg border border-zinc-200 bg-[var(--appkit-color-surface)] border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)] ${className}`, "data-section": "richtexteditor-div-582", children: [_jsx("div", { className: "appkit-rich-text-editor__toolbar flex flex-wrap gap-1 border-b p-2 border-[var(--appkit-color-border)]", "data-section": "richtexteditor-div-583", children: toolbarActions.map((action) => (_jsx("button", { type: "button", title: action.title, onClick: action.run, disabled: disabled, className: "appkit-rich-text-editor__btn rounded px-2 py-1 text-xs font-medium transition hover:bg-surface-hover disabled:cursor-not-allowed disabled:opacity-50 text-[var(--appkit-color-text-muted)]", children: action.label }, action.title))) }), _jsx("div", { ref: editorRef,
|
|
123
|
+
return (_jsxs("div", { className: `appkit-rich-text-editor rounded-lg border border-zinc-200 bg-[var(--appkit-color-surface)] border-[var(--appkit-color-border)] bg-[var(--appkit-color-surface)] ${className}`, "data-section": "richtexteditor-div-582", children: [_jsx("div", { className: "appkit-rich-text-editor__toolbar flex flex-wrap gap-1 border-b p-2 border-[var(--appkit-color-border)]", "data-section": "richtexteditor-div-583", children: toolbarActions.map((action) => (_jsx("button", { type: "button", title: action.title, onClick: action.run, disabled: disabled, className: "appkit-rich-text-editor__btn rounded px-2 py-1 text-xs font-medium transition hover:bg-surface-hover disabled:cursor-not-allowed disabled:opacity-50 text-[var(--appkit-color-text-muted)]", children: action.label }, action.title))) }), _jsx("div", { ref: editorRef,
|
|
124
|
+
/*
|
|
125
|
+
* 🛑 `role` and `aria-label` USED TO BE DECLARED HERE TOO, hardcoded
|
|
126
|
+
* to "Rich text editor" — and when the labelling props were added
|
|
127
|
+
* below, that made two of each on one element (`TS17001: JSX elements
|
|
128
|
+
* cannot have multiple attributes with the same name`). Removed here
|
|
129
|
+
* rather than there, because the hardcoded name was the weaker of the
|
|
130
|
+
* two: every rich-text field in the app announced itself as "Rich
|
|
131
|
+
* text editor", which says what the WIDGET is and never which FIELD
|
|
132
|
+
* it is — on the category editor that is the one describing the
|
|
133
|
+
* category, and the user could not tell.
|
|
134
|
+
*/
|
|
135
|
+
contentEditable: !disabled, suppressContentEditableWarning: true,
|
|
136
|
+
/*
|
|
137
|
+
* 🛑 `role="textbox"` AND `aria-multiline` ARE REQUIRED FOR THE NAME TO
|
|
138
|
+
* BE ANNOUNCED. A bare `contenteditable` div has no role, and
|
|
139
|
+
* `aria-labelledby` on a roleless generic element is not reliably
|
|
140
|
+
* exposed — the name attaches to something the user is never told is
|
|
141
|
+
* editable. The role is what makes it a form control to assistive
|
|
142
|
+
* technology, and only then does the label mean anything.
|
|
143
|
+
*/
|
|
144
|
+
role: "textbox", "aria-multiline": "true", "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabelledBy ? undefined : ariaLabel, "aria-disabled": disabled || undefined, "data-placeholder": placeholder, onInput: emitChange, onBlur: emitChange, className: `prose max-w-none p-3 focus:outline-none ${minHeightClassName} ${disabled ? "cursor-not-allowed opacity-70" : ""}` })] }));
|
|
124
145
|
}
|
|
@@ -17,21 +17,15 @@
|
|
|
17
17
|
display: flex;
|
|
18
18
|
align-items: center;
|
|
19
19
|
justify-content: space-between;
|
|
20
|
-
border-radius:
|
|
20
|
+
border-radius: var(--appkit-radius-lg);
|
|
21
21
|
border: 1px solid var(--appkit-color-border);
|
|
22
|
-
background: var(--appkit-color-surface);
|
|
22
|
+
background: var(--appkit-color-surface-input);
|
|
23
23
|
color: var(--appkit-color-text);
|
|
24
24
|
padding: 0.5rem 0.75rem;
|
|
25
25
|
font-size: 0.875rem;
|
|
26
26
|
transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
.dark .appkit-select__trigger {
|
|
30
|
-
border-color: var(--appkit-color-border);
|
|
31
|
-
background: rgba(30, 41, 59, 0.7);
|
|
32
|
-
color: var(--appkit-color-text);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
29
|
.appkit-select__trigger--enabled:hover:not(:focus-visible) {
|
|
36
30
|
border-color: var(--appkit-color-zinc-400);
|
|
37
31
|
}
|
|
@@ -42,24 +36,19 @@
|
|
|
42
36
|
|
|
43
37
|
.appkit-select__trigger--default:focus-visible {
|
|
44
38
|
outline: none;
|
|
45
|
-
border-color: var(--appkit-color-
|
|
46
|
-
box-shadow:
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.dark .appkit-select__trigger--default:focus-visible {
|
|
50
|
-
border-color: var(--appkit-color-primary);
|
|
51
|
-
box-shadow: 0 0 0 3px rgba(233, 30, 140, 0.25), inset 0 0 0 1px rgba(233, 30, 140, 0.15);
|
|
39
|
+
border-color: var(--appkit-color-focus-ring);
|
|
40
|
+
box-shadow: var(--appkit-focus-ring);
|
|
52
41
|
}
|
|
53
42
|
|
|
54
43
|
.appkit-select__trigger--error {
|
|
55
44
|
border-color: var(--appkit-color-error);
|
|
56
|
-
background:
|
|
45
|
+
background: color-mix(in srgb, var(--appkit-color-error) 6%, var(--appkit-color-surface-input));
|
|
57
46
|
}
|
|
58
47
|
|
|
59
48
|
.appkit-select__trigger--error:focus-visible {
|
|
60
49
|
outline: none;
|
|
61
50
|
border-color: var(--appkit-color-error);
|
|
62
|
-
box-shadow:
|
|
51
|
+
box-shadow: var(--appkit-focus-ring-error);
|
|
63
52
|
}
|
|
64
53
|
|
|
65
54
|
.appkit-select__trigger--disabled {
|
|
@@ -68,9 +57,6 @@
|
|
|
68
57
|
background: var(--appkit-color-bg);
|
|
69
58
|
}
|
|
70
59
|
|
|
71
|
-
.dark .appkit-select__trigger--disabled {
|
|
72
|
-
background: rgba(30, 41, 59, 0.4);
|
|
73
|
-
}
|
|
74
60
|
|
|
75
61
|
.appkit-select__trigger--enabled {
|
|
76
62
|
cursor: pointer;
|
|
@@ -174,7 +160,7 @@
|
|
|
174
160
|
}
|
|
175
161
|
|
|
176
162
|
.dark .appkit-select__option--selected {
|
|
177
|
-
background:
|
|
163
|
+
background: color-mix(in srgb, var(--appkit-color-primary) 15%, transparent);
|
|
178
164
|
color: var(--appkit-color-primary-300);
|
|
179
165
|
}
|
|
180
166
|
|
|
@@ -287,7 +287,7 @@ const TR_BORDER_MAP = {
|
|
|
287
287
|
none: "",
|
|
288
288
|
default: "border-b border-[var(--appkit-color-border)]",
|
|
289
289
|
subtle: "border-b border-[var(--appkit-color-border-subtle)]",
|
|
290
|
-
strong: "border-b border-[var(--appkit-color-border
|
|
290
|
+
strong: "border-b border-[var(--appkit-color-border)]",
|
|
291
291
|
};
|
|
292
292
|
const TR_SURFACE_MAP = {
|
|
293
293
|
none: "",
|
|
@@ -304,6 +304,30 @@ export function Tr({ hover = false, border, surface, className = "", children, .
|
|
|
304
304
|
className,
|
|
305
305
|
].filter(Boolean).join(" "), ...props, children: children }));
|
|
306
306
|
}
|
|
307
|
+
/**
|
|
308
|
+
* 🛑 A MAP, because `text-${align}` was a class Tailwind never saw.
|
|
309
|
+
*
|
|
310
|
+
* `Th` and `Td` both built their alignment as `align ? \`text-${align}\` : ""`.
|
|
311
|
+
* Tailwind's content scanner reads source as PLAIN TEXT, so an interpolated
|
|
312
|
+
* class is one it never generates — and these only worked because OTHER files
|
|
313
|
+
* happen to write `text-left`, `text-center` and `text-right` literally.
|
|
314
|
+
* Measured in `dist/tailwind-utilities.css`: all three present, so nothing is
|
|
315
|
+
* broken today.
|
|
316
|
+
*
|
|
317
|
+
* They worked BY ACCIDENT. Delete the last literal `text-right` anywhere in
|
|
318
|
+
* the codebase and every right-aligned table cell silently loses its
|
|
319
|
+
* alignment, with these two files looking untouched and correct. Root Cause
|
|
320
|
+
* #67 is this failure mode, and a fourth `CellAlign` value — `justify`, say —
|
|
321
|
+
* would be dead on arrival: `text-justify` is NOT in the compiled output.
|
|
322
|
+
*
|
|
323
|
+
* A `Record<CellAlign, string>` makes the literals visible to the scanner and
|
|
324
|
+
* makes a new union member a compile error rather than a silent no-op.
|
|
325
|
+
*/
|
|
326
|
+
const CELL_ALIGN_MAP = {
|
|
327
|
+
left: "text-left",
|
|
328
|
+
center: "text-center",
|
|
329
|
+
right: "text-right",
|
|
330
|
+
};
|
|
307
331
|
const CELL_PADDING_MAP = {
|
|
308
332
|
none: "",
|
|
309
333
|
xs: "px-2 py-1",
|
|
@@ -370,7 +394,7 @@ const CELL_WEIGHT_MAP = {
|
|
|
370
394
|
export function Th({ align, size, weight, padding, paddingX, paddingY, paddingSide, color, className = "", children, ...props }) {
|
|
371
395
|
return (_jsx("th", { className: [
|
|
372
396
|
"appkit-th",
|
|
373
|
-
align ?
|
|
397
|
+
align ? CELL_ALIGN_MAP[align] : "",
|
|
374
398
|
size ? CELL_SIZE_MAP[size] : "",
|
|
375
399
|
weight ? CELL_WEIGHT_MAP[weight] : "",
|
|
376
400
|
padding ? CELL_PADDING_MAP[padding] : "",
|
|
@@ -384,7 +408,7 @@ export function Th({ align, size, weight, padding, paddingX, paddingY, paddingSi
|
|
|
384
408
|
export function Td({ align, size, weight, padding, paddingX, paddingY, paddingSide, color, className = "", children, ...props }) {
|
|
385
409
|
return (_jsx("td", { className: [
|
|
386
410
|
"appkit-td",
|
|
387
|
-
align ?
|
|
411
|
+
align ? CELL_ALIGN_MAP[align] : "",
|
|
388
412
|
size ? CELL_SIZE_MAP[size] : "",
|
|
389
413
|
weight ? CELL_WEIGHT_MAP[weight] : "",
|
|
390
414
|
padding ? CELL_PADDING_MAP[padding] : "",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.appkit-tag-input__field:focus-within {
|
|
29
|
-
border-color: var(--appkit-color-
|
|
30
|
-
box-shadow:
|
|
29
|
+
border-color: var(--appkit-color-focus-ring);
|
|
30
|
+
box-shadow: var(--appkit-focus-ring-compact);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.appkit-tag-input__field--disabled {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
align-items: center;
|
|
41
41
|
gap: 0.25rem;
|
|
42
42
|
border-radius: 9999px;
|
|
43
|
-
background:
|
|
43
|
+
background: color-mix(in srgb, var(--appkit-color-secondary) 10%, transparent);
|
|
44
44
|
padding: 0.125rem 0.5rem;
|
|
45
45
|
font-size: 0.75rem;
|
|
46
46
|
font-weight: 500;
|
|
@@ -90,13 +90,8 @@
|
|
|
90
90
|
background: var(--appkit-color-surface);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
.dark .appkit-tag-input__field:focus-within {
|
|
94
|
-
border-color: var(--appkit-color-primary);
|
|
95
|
-
box-shadow: 0 0 0 2px rgba(233, 30, 140, 0.2);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
93
|
.dark .appkit-tag-input__tag {
|
|
99
|
-
background:
|
|
94
|
+
background: color-mix(in srgb, var(--appkit-color-primary) 15%, transparent);
|
|
100
95
|
color: var(--appkit-color-primary-300);
|
|
101
96
|
}
|
|
102
97
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
.appkit-textarea {
|
|
2
2
|
width: 100%;
|
|
3
3
|
border: 1px solid var(--appkit-color-border);
|
|
4
|
-
border-radius:
|
|
5
|
-
background: var(--appkit-color-surface);
|
|
4
|
+
border-radius: var(--appkit-radius-lg);
|
|
5
|
+
background: var(--appkit-color-surface-input);
|
|
6
6
|
color: var(--appkit-color-text);
|
|
7
7
|
padding: 0.5rem 0.625rem;
|
|
8
8
|
font-size: 0.875rem;
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
|
|
23
23
|
.appkit-textarea:focus-visible {
|
|
24
24
|
outline: none;
|
|
25
|
-
border-color: var(--appkit-color-
|
|
26
|
-
box-shadow:
|
|
25
|
+
border-color: var(--appkit-color-focus-ring);
|
|
26
|
+
box-shadow: var(--appkit-focus-ring);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
.appkit-textarea:disabled {
|
|
@@ -33,12 +33,6 @@
|
|
|
33
33
|
resize: none;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
.dark .appkit-textarea {
|
|
37
|
-
border-color: var(--appkit-color-border);
|
|
38
|
-
background: rgba(30, 41, 59, 0.7);
|
|
39
|
-
color: var(--appkit-color-text);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
36
|
.dark .appkit-textarea::placeholder {
|
|
43
37
|
color: var(--appkit-color-text-muted);
|
|
44
38
|
}
|
|
@@ -47,11 +41,3 @@
|
|
|
47
41
|
border-color: var(--appkit-color-slate-500);
|
|
48
42
|
}
|
|
49
43
|
|
|
50
|
-
.dark .appkit-textarea:focus-visible {
|
|
51
|
-
border-color: var(--appkit-color-primary);
|
|
52
|
-
box-shadow: 0 0 0 3px rgba(233, 30, 140, 0.25), inset 0 0 0 1px rgba(233, 30, 140, 0.15);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.dark .appkit-textarea:disabled {
|
|
56
|
-
background: rgba(30, 41, 59, 0.4);
|
|
57
|
-
}
|
|
@@ -19,9 +19,9 @@ declare const TYPOGRAPHY: {
|
|
|
19
19
|
readonly "3xl": "appkit-text--3xl";
|
|
20
20
|
readonly "4xl": "appkit-text--4xl";
|
|
21
21
|
readonly "5xl": "appkit-text--5xl";
|
|
22
|
-
readonly "6xl": "text-6xl";
|
|
23
|
-
readonly "7xl": "text-7xl";
|
|
24
|
-
readonly "8xl": "text-8xl";
|
|
22
|
+
readonly "6xl": "text-[length:var(--appkit-text-6xl)]";
|
|
23
|
+
readonly "7xl": "text-[length:var(--appkit-text-7xl)]";
|
|
24
|
+
readonly "8xl": "text-[length:var(--appkit-text-8xl)]";
|
|
25
25
|
};
|
|
26
26
|
readonly textWeight: {
|
|
27
27
|
readonly light: "appkit-font--light";
|
|
@@ -21,9 +21,9 @@ const TYPOGRAPHY = {
|
|
|
21
21
|
"3xl": "appkit-text--3xl",
|
|
22
22
|
"4xl": "appkit-text--4xl",
|
|
23
23
|
"5xl": "appkit-text--5xl",
|
|
24
|
-
"6xl": "text-6xl",
|
|
25
|
-
"7xl": "text-7xl",
|
|
26
|
-
"8xl": "text-8xl",
|
|
24
|
+
"6xl": "text-[length:var(--appkit-text-6xl)]",
|
|
25
|
+
"7xl": "text-[length:var(--appkit-text-7xl)]",
|
|
26
|
+
"8xl": "text-[length:var(--appkit-text-8xl)]",
|
|
27
27
|
},
|
|
28
28
|
textWeight: {
|
|
29
29
|
light: "appkit-font--light",
|
|
@@ -103,9 +103,9 @@ const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
|
103
103
|
"3xl": "sm:text-[length:var(--appkit-text-3xl)]",
|
|
104
104
|
"4xl": "sm:text-[length:var(--appkit-text-4xl)]",
|
|
105
105
|
"5xl": "sm:text-[length:var(--appkit-text-5xl)]",
|
|
106
|
-
"6xl": "sm:text-6xl",
|
|
107
|
-
"7xl": "sm:text-7xl",
|
|
108
|
-
"8xl": "sm:text-8xl",
|
|
106
|
+
"6xl": "sm:text-[length:var(--appkit-text-6xl)]",
|
|
107
|
+
"7xl": "sm:text-[length:var(--appkit-text-7xl)]",
|
|
108
|
+
"8xl": "sm:text-[length:var(--appkit-text-8xl)]",
|
|
109
109
|
},
|
|
110
110
|
"md:": {
|
|
111
111
|
xs: "md:text-[length:var(--appkit-text-xs)]",
|
|
@@ -117,9 +117,9 @@ const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
|
117
117
|
"3xl": "md:text-[length:var(--appkit-text-3xl)]",
|
|
118
118
|
"4xl": "md:text-[length:var(--appkit-text-4xl)]",
|
|
119
119
|
"5xl": "md:text-[length:var(--appkit-text-5xl)]",
|
|
120
|
-
"6xl": "md:text-6xl",
|
|
121
|
-
"7xl": "md:text-7xl",
|
|
122
|
-
"8xl": "md:text-8xl",
|
|
120
|
+
"6xl": "md:text-[length:var(--appkit-text-6xl)]",
|
|
121
|
+
"7xl": "md:text-[length:var(--appkit-text-7xl)]",
|
|
122
|
+
"8xl": "md:text-[length:var(--appkit-text-8xl)]",
|
|
123
123
|
},
|
|
124
124
|
"lg:": {
|
|
125
125
|
xs: "lg:text-[length:var(--appkit-text-xs)]",
|
|
@@ -131,9 +131,9 @@ const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
|
131
131
|
"3xl": "lg:text-[length:var(--appkit-text-3xl)]",
|
|
132
132
|
"4xl": "lg:text-[length:var(--appkit-text-4xl)]",
|
|
133
133
|
"5xl": "lg:text-[length:var(--appkit-text-5xl)]",
|
|
134
|
-
"6xl": "lg:text-6xl",
|
|
135
|
-
"7xl": "lg:text-7xl",
|
|
136
|
-
"8xl": "lg:text-8xl",
|
|
134
|
+
"6xl": "lg:text-[length:var(--appkit-text-6xl)]",
|
|
135
|
+
"7xl": "lg:text-[length:var(--appkit-text-7xl)]",
|
|
136
|
+
"8xl": "lg:text-[length:var(--appkit-text-8xl)]",
|
|
137
137
|
},
|
|
138
138
|
"xl:": {
|
|
139
139
|
xs: "xl:text-[length:var(--appkit-text-xs)]",
|
|
@@ -145,9 +145,9 @@ const RESPONSIVE_TEXT_SIZE_CLASS = {
|
|
|
145
145
|
"3xl": "xl:text-[length:var(--appkit-text-3xl)]",
|
|
146
146
|
"4xl": "xl:text-[length:var(--appkit-text-4xl)]",
|
|
147
147
|
"5xl": "xl:text-[length:var(--appkit-text-5xl)]",
|
|
148
|
-
"6xl": "xl:text-6xl",
|
|
149
|
-
"7xl": "xl:text-7xl",
|
|
150
|
-
"8xl": "xl:text-8xl",
|
|
148
|
+
"6xl": "xl:text-[length:var(--appkit-text-6xl)]",
|
|
149
|
+
"7xl": "xl:text-[length:var(--appkit-text-7xl)]",
|
|
150
|
+
"8xl": "xl:text-[length:var(--appkit-text-8xl)]",
|
|
151
151
|
},
|
|
152
152
|
};
|
|
153
153
|
function responsiveSizeClass(prefix, size) {
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
|
|
16
16
|
.appkit-view-toggle__button--active {
|
|
17
17
|
color: var(--appkit-color-secondary-600);
|
|
18
|
-
background:
|
|
19
|
-
border-color:
|
|
18
|
+
background: color-mix(in srgb, var(--appkit-color-secondary) 8%, transparent);
|
|
19
|
+
border-color: color-mix(in srgb, var(--appkit-color-secondary) 30%, transparent);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
.appkit-view-toggle__button--inactive {
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
|
|
37
37
|
.dark .appkit-view-toggle__button--active {
|
|
38
38
|
color: var(--appkit-color-primary);
|
|
39
|
-
background:
|
|
40
|
-
border-color:
|
|
39
|
+
background: color-mix(in srgb, var(--appkit-color-primary) 14%, transparent);
|
|
40
|
+
border-color: color-mix(in srgb, var(--appkit-color-primary) 35%, transparent);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.dark .appkit-view-toggle__button--inactive {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface AddAnotherToggleProps {
|
|
2
|
+
/** What is being created, for the label: "listing" → "Create & add another listing". */
|
|
3
|
+
noun?: string;
|
|
4
|
+
/** Hidden while editing an existing record — see the note below. */
|
|
5
|
+
isCreate?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function AddAnotherToggle({ noun, isCreate, }: AddAnotherToggleProps): import("react").JSX.Element | null;
|
|
8
|
+
/**
|
|
9
|
+
* The submit button's label, given the toggle.
|
|
10
|
+
*
|
|
11
|
+
* 🛑 A SEPARATE HELPER BECAUSE THE LABEL MUST CHANGE. A button that says
|
|
12
|
+
* "Create listing" and then does not navigate has lied about what it did, and
|
|
13
|
+
* the user's next move is to press it again — which creates a duplicate. The
|
|
14
|
+
* label is the only thing telling them the destination changed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function addAnotherSubmitLabel(base: string, addAnother: boolean): string;
|