@mohasinac/appkit 4.57.0 → 4.58.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 +4 -4
- package/dist/_internal/server/features/beys/data.d.ts +44 -0
- package/dist/_internal/server/features/beys/data.js +107 -0
- package/dist/_internal/server/features/beys/og.d.ts +42 -0
- package/dist/_internal/server/features/beys/og.js +89 -0
- package/dist/_internal/server/features/parts/data.js +3 -2
- package/dist/_internal/shared/actions/action-registry.d.ts +1 -1
- package/dist/_internal/shared/actions/action-registry.js +86 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.js +1 -0
- package/dist/constants/api-endpoints.d.ts +12 -0
- package/dist/constants/api-endpoints.js +10 -0
- package/dist/constants/field-names.d.ts +46 -0
- package/dist/constants/field-names.js +46 -0
- package/dist/features/admin/components/AdminBeysView.d.ts +27 -0
- package/dist/features/admin/components/AdminBeysView.js +178 -0
- package/dist/features/admin/components/AdminPartsView.d.ts +27 -0
- package/dist/features/admin/components/AdminPartsView.js +160 -0
- package/dist/features/admin/components/OwnerQuickActions.d.ts +19 -2
- package/dist/features/admin/components/OwnerQuickActions.js +31 -3
- package/dist/features/admin/components/RecordOwnerQuickActions.d.ts +31 -0
- package/dist/features/admin/components/RecordOwnerQuickActions.js +128 -0
- package/dist/features/admin/components/ReferenceRecordEditor.d.ts +45 -0
- package/dist/features/admin/components/ReferenceRecordEditor.js +153 -0
- package/dist/features/admin/schemas/firestore.d.ts +1 -1
- package/dist/features/auctions/components/MarketplaceAuctionCard.js +15 -2
- package/dist/features/auth/permissions/constants.d.ts +1 -1
- package/dist/features/auth/permissions/constants.js +12 -1
- package/dist/features/beys/components/BeyDetailPageView.d.ts +50 -0
- package/dist/features/beys/components/BeyDetailPageView.js +98 -0
- package/dist/features/beys/schemas/firestore.d.ts +417 -0
- package/dist/features/beys/schemas/firestore.js +65 -0
- package/dist/features/blog/components/BlogFeaturedCard.js +15 -2
- package/dist/features/blog/components/BlogPostView.js +2 -2
- package/dist/features/categories/components/BrandDetailPageView.js +4 -2
- package/dist/features/categories/components/BundleDetailView.js +2 -2
- package/dist/features/categories/components/CategoryDetailPageView.js +36 -3
- package/dist/features/categories/components/CategoryGrid.js +24 -2
- package/dist/features/categories/components/FranchiseDetailPageView.js +2 -3
- package/dist/features/events/components/EventCard.js +15 -2
- package/dist/features/grouped/components/GroupedListingDetailView.js +2 -3
- package/dist/features/homepage/components/CustomCardsSection.js +67 -50
- package/dist/features/homepage/components/ShopByCategorySection.js +23 -10
- package/dist/features/homepage/schemas/index.d.ts +10 -10
- package/dist/features/parts/components/PartDetailPageView.js +5 -3
- package/dist/features/parts/components/PartsSearchBox.js +79 -4
- package/dist/features/parts/schemas/admin-edit.d.ts +81 -0
- package/dist/features/parts/schemas/admin-edit.js +89 -0
- package/dist/features/parts/schemas/firestore.d.ts +2 -1
- package/dist/features/pre-orders/components/MarketplacePreorderCard.js +15 -2
- package/dist/features/products/components/MarketplaceBundleCard.js +15 -2
- package/dist/features/products/components/MarketplacePrizeDrawCard.js +15 -2
- package/dist/features/products/components/ProductGrid.js +18 -2
- package/dist/features/products/schemas/firestore.d.ts +18 -0
- package/dist/features/seller/components/CategoryInlineSelect.d.ts +10 -1
- package/dist/features/seller/components/CategoryInlineSelect.js +53 -5
- package/dist/features/seller/components/SellerProductShell.d.ts +39 -0
- package/dist/features/seller/components/SellerProductShell.js +31 -3
- package/dist/index.d.ts +8 -0
- package/dist/index.js +13 -0
- package/dist/next/routing/route-map.d.ts +13 -1
- package/dist/next/routing/route-map.js +37 -0
- package/dist/schemas/registry.d.ts +6 -6
- package/dist/seed/_helpers/category-parts-glossary-map.js +38 -38
- package/dist/seed/_helpers/category-parts.js +39 -39
- package/dist/seed/bey-products-seed-data.d.ts +18 -0
- package/dist/seed/bey-products-seed-data.js +18011 -0
- package/dist/seed/beys/chunk0.d.ts +17 -0
- package/dist/seed/beys/chunk0.js +36733 -0
- package/dist/seed/beys/chunk1.d.ts +17 -0
- package/dist/seed/beys/chunk1.js +35728 -0
- package/dist/seed/beys/chunk2.d.ts +17 -0
- package/dist/seed/beys/chunk2.js +35857 -0
- package/dist/seed/beys/chunk3.d.ts +17 -0
- package/dist/seed/beys/chunk3.js +34476 -0
- package/dist/seed/beys-seed-data.d.ts +18 -0
- package/dist/seed/beys-seed-data.js +11 -0
- package/dist/seed/homepage-sections-seed-data.js +16 -0
- package/dist/seed/index.d.ts +2 -0
- package/dist/seed/index.js +3 -0
- package/dist/seed/media-assets-seed-data.js +4 -4
- package/dist/seed/products-catalogue/chunk0.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk0.js +7262 -0
- package/dist/seed/products-catalogue/chunk1.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk1.js +7290 -0
- package/dist/seed/products-catalogue/chunk10.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk10.js +7290 -0
- package/dist/seed/products-catalogue/chunk11.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk11.js +7005 -0
- package/dist/seed/products-catalogue/chunk12.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk12.js +7002 -0
- package/dist/seed/products-catalogue/chunk13.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk13.js +7002 -0
- package/dist/seed/products-catalogue/chunk14.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk14.js +7002 -0
- package/dist/seed/products-catalogue/chunk15.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk15.js +7002 -0
- package/dist/seed/products-catalogue/chunk16.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk16.js +7002 -0
- package/dist/seed/products-catalogue/chunk17.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk17.js +7002 -0
- package/dist/seed/products-catalogue/chunk18.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk18.js +4398 -0
- package/dist/seed/products-catalogue/chunk2.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk2.js +7268 -0
- package/dist/seed/products-catalogue/chunk3.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk3.js +7264 -0
- package/dist/seed/products-catalogue/chunk4.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk4.js +7268 -0
- package/dist/seed/products-catalogue/chunk5.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk5.js +7258 -0
- package/dist/seed/products-catalogue/chunk6.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk6.js +7268 -0
- package/dist/seed/products-catalogue/chunk7.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk7.js +7311 -0
- package/dist/seed/products-catalogue/chunk8.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk8.js +7304 -0
- package/dist/seed/products-catalogue/chunk9.d.ts +12 -0
- package/dist/seed/products-catalogue/chunk9.js +7309 -0
- package/dist/seed/products-catalogue-seed-data.d.ts +2 -22
- package/dist/seed/products-catalogue-seed-data.js +58 -86382
- package/dist/seed/seed-purpose.js +9 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.js +8 -0
- package/dist/styles.css +468 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/PosterCard.d.ts +99 -0
- package/dist/ui/components/PosterCard.js +109 -0
- package/dist/ui/components/PosterCard.style.css +466 -0
- package/dist/ui/components/index.style.css +1 -0
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +2 -0
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +108 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx,
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { useRouter } from "next/navigation.js";
|
|
5
5
|
import { z } from "zod";
|
|
@@ -46,6 +46,21 @@ const sellerProductSchema = z.object({
|
|
|
46
46
|
title: z.string().min(1, "Product title is required").max(200),
|
|
47
47
|
description: z.string().max(10000).optional().or(z.literal("")),
|
|
48
48
|
price: z.number().min(0).optional(),
|
|
49
|
+
/*
|
|
50
|
+
* LOT vs SINGLE. 🛑 Declared HERE as well as on the interface, for the exact
|
|
51
|
+
* reason the `categoryIds` note below gives: this schema is
|
|
52
|
+
* `.passthrough()`, so an undeclared key survives at runtime and stays
|
|
53
|
+
* UNTYPED — the render site could not read `values.isLot` at all.
|
|
54
|
+
*
|
|
55
|
+
* No `.default(false)`, matching `src/validation/request-schemas.ts`: absent
|
|
56
|
+
* means single, and a default would write a field the seller never touched.
|
|
57
|
+
*/
|
|
58
|
+
isLot: z.boolean().optional(),
|
|
59
|
+
/* Bounds mirror the request schema (2–999). A "lot of 1" is a single. */
|
|
60
|
+
lotSize: z.number().int().min(2).max(999).optional(),
|
|
61
|
+
/* The single-item identity, one or the other and never both. */
|
|
62
|
+
beyId: z.string().optional(),
|
|
63
|
+
partGlossaryId: z.string().optional(),
|
|
49
64
|
category: z.string().optional(),
|
|
50
65
|
/**
|
|
51
66
|
* I2 — the assignment list, DEFAULT FIRST. `category` mirrors `[0]`.
|
|
@@ -116,9 +131,22 @@ function StepBasic({ values, onChange, renderCategorySelector, renderBrandSelect
|
|
|
116
131
|
condition: CONDITION_OPTIONS.find((o) => o.value === (values.condition ?? "new"))?.label ?? "",
|
|
117
132
|
siteName: "LetItRip",
|
|
118
133
|
};
|
|
119
|
-
return (_jsxs(Stack, { gap: "md", children: [_jsx(FormField, { name: "title", label: "Title", type: "text", value: values.title ?? "", onChange: (v) => onChange({ title: v }), placeholder: "e.g. Charizard Base Set PSA 9" }), _jsxs(
|
|
134
|
+
return (_jsxs(Stack, { gap: "md", children: [_jsx(FormField, { name: "title", label: "Title", type: "text", value: values.title ?? "", onChange: (v) => onChange({ title: v }), placeholder: "e.g. Charizard Base Set PSA 9" }), _jsxs(Stack, { gap: "xs", children: [_jsx(Text, { className: "text-[var(--appkit-color-text)]", size: "sm", weight: "medium", children: "What is in this listing?" }), _jsxs(Row, { gap: "sm", align: "center", wrap: true, children: [_jsx(Toggle, { checked: values.isLot === true, onChange: (next) => onChange(next
|
|
135
|
+
? /*
|
|
136
|
+
* Switching TO a lot clears the single-item identity. A
|
|
137
|
+
* stale `beyId` would keep the listing pointing at one
|
|
138
|
+
* named bey while claiming to be a mixed pile — the
|
|
139
|
+
* contradiction the server rule exists to prevent, smuggled
|
|
140
|
+
* past it by a field the seller can no longer see.
|
|
141
|
+
*/
|
|
142
|
+
{ isLot: true, beyId: undefined, partGlossaryId: undefined }
|
|
143
|
+
: /* And back again drops the count, for the same reason. */
|
|
144
|
+
{ isLot: false, lotSize: undefined }), label: values.isLot ? "A lot of several items" : "A single item", size: "sm" }), values.isLot && (_jsx(FormField, { name: "lotSize", label: "How many?", type: "number", value: values.lotSize != null ? String(values.lotSize) : "", onChange: (v) => onChange({ lotSize: v ? Number(v) : undefined }), placeholder: "optional" }))] }), _jsx(Text, { size: "xs", color: "muted", children: values.isLot
|
|
145
|
+
? "A lot files under a category rather than one model, because a category is a collection — naming one model would claim every item in the pile is that model."
|
|
146
|
+
: "A single item can be filed against the exact bey or part it is, so buyers searching that name find it." })] }), _jsxs(FormGroup, { columns: 2, children: [renderCategorySelector ? (_jsxs(_Fragment, { children: [_jsx(Text, { className: "text-[var(--appkit-color-text)] mb-1", size: "sm", weight: "medium", children: "Category" }), renderCategorySelector({
|
|
120
147
|
value: values.category ?? "",
|
|
121
148
|
onChange: (v) => onChange({ category: v }),
|
|
149
|
+
isLot: values.isLot === true,
|
|
122
150
|
/*
|
|
123
151
|
* 🛑 `categoryIds[0]` is the DEFAULT assignment and is already
|
|
124
152
|
* rendered by the primary picker above, so the extras list is
|
|
@@ -596,7 +624,7 @@ productId, onSave, onPublish, onDiscard, isLoading = false, storeSlug, renderCat
|
|
|
596
624
|
label: "Basic",
|
|
597
625
|
required: true,
|
|
598
626
|
quick: true,
|
|
599
|
-
fields: ["title", "description", "category", "brand", "condition", "tags", "barcodeId"],
|
|
627
|
+
fields: ["title", "isLot", "lotSize", "description", "category", "brand", "condition", "tags", "barcodeId"],
|
|
600
628
|
render: ({ values, onChange }) => (_jsx(StepBasic, { values: values, onChange: onChange, renderCategorySelector: renderCategorySelector, renderBrandSelector: renderBrandSelector, renderTemplateSelector: renderTemplateSelector })),
|
|
601
629
|
schema: sectionSchemas.basic,
|
|
602
630
|
},
|
package/dist/index.d.ts
CHANGED
|
@@ -2990,6 +2990,12 @@ export { taxCodesSeedData } from "./seed/index";
|
|
|
2990
2990
|
export { PART_GLOSSARY_COLLECTION, MODEL_COMPOSITION_COLLECTION, PART_SLOT_VALUES, PART_SLOT_LABEL, ALL_PART_SLOTS, LISTING_TYPE_HAS_COMPOSITION, partSlotFromSegment, partGlossaryId, } from "./features/parts/schemas/firestore";
|
|
2991
2991
|
export type { PartGlossaryDocument, ModelCompositionDocument, ModelSlot, ModelSlotMerge, PartSlot, } from "./features/parts/schemas/firestore";
|
|
2992
2992
|
export { partGlossarySeedData } from "./seed/index";
|
|
2993
|
+
export { BEYS_COLLECTION, BEY_PRODUCTS_COLLECTION, beyId, } from "./features/beys/schemas/firestore";
|
|
2994
|
+
export type { BeyDocument, BeyProductDocument, BeyCompositionEntry, BeyRatings, BeyDerivationCoverage, BeyProductAssortmentEntry, } from "./features/beys/schemas/firestore";
|
|
2995
|
+
export { beysSeedData, BEY_SEED_COUNT } from "./seed/index";
|
|
2996
|
+
export { BeyDetailPageView } from "./features/beys/components/BeyDetailPageView";
|
|
2997
|
+
export type { BeyDetailPageViewProps, BeyListingRow } from "./features/beys/components/BeyDetailPageView";
|
|
2998
|
+
export { beyProductsSeedData, BEY_PRODUCT_SEED_COUNT } from "./seed/index";
|
|
2993
2999
|
export { modelCompositionSeedData } from "./seed/index";
|
|
2994
3000
|
export { ModelCompositionPanel } from "./features/parts/components/ModelCompositionPanel";
|
|
2995
3001
|
export { PartsIndexPageView, PartClassificationPageView, } from "./features/parts/components/PartsIndexPageView";
|
|
@@ -3067,6 +3073,8 @@ export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, support
|
|
|
3067
3073
|
export type { ListingTypeCapability } from "./_internal/shared/listing-types/capabilities";
|
|
3068
3074
|
export { LISTING_TYPE_REGISTRY, pluginFor, detectListingTypeFromSlug } from "./_internal/shared/listing-types/_registry";
|
|
3069
3075
|
export { OwnerQuickActions } from "./features/admin/components/OwnerQuickActions";
|
|
3076
|
+
export { RecordOwnerQuickActions } from "./features/admin/components/RecordOwnerQuickActions";
|
|
3077
|
+
export type { RecordOwnerQuickActionsProps, RecordQuickActionResource } from "./features/admin/components/RecordOwnerQuickActions";
|
|
3070
3078
|
export type { OwnerQuickActionsProps, OwnerQuickActionsResource } from "./features/admin/components/OwnerQuickActions";
|
|
3071
3079
|
export type { ListingTypePlugin } from "./_internal/shared/listing-types/_registry";
|
|
3072
3080
|
export { getListingRule, getCategoryRule, pickOrderType, getSplitKey, runSyncPreflight, CHECKOUT_RULES, CATEGORY_CHECKOUT_RULES, CHECKOUT_MAX_ORDERS_PER_TX, PRIZE_DRAW_MAX_REVEALS_PER_ORDER, BUNDLE_MAX_QTY_PER_TX, STANDARD_MAX_QTY_PER_LINE, } from "./_internal/shared/checkout/rules";
|
package/dist/index.js
CHANGED
|
@@ -5403,6 +5403,18 @@ export { taxCodesSeedData } from "./seed/index.js";
|
|
|
5403
5403
|
// E4/D12 — the collection constants and types.
|
|
5404
5404
|
export { PART_GLOSSARY_COLLECTION, MODEL_COMPOSITION_COLLECTION, PART_SLOT_VALUES, PART_SLOT_LABEL, ALL_PART_SLOTS, LISTING_TYPE_HAS_COMPOSITION, partSlotFromSegment, partGlossaryId, } from "./features/parts/schemas/firestore.js";
|
|
5405
5405
|
export { partGlossarySeedData } from "./seed/index.js";
|
|
5406
|
+
/*
|
|
5407
|
+
* 🛑 Exported from the MAIN barrel, not just `seed/index.ts`. `seed-cli.mjs`
|
|
5408
|
+
* destructures its seed data from the BARE `@mohasinac/appkit` package, which
|
|
5409
|
+
* resolves through THIS file — so an export present only on the inner barrel is
|
|
5410
|
+
* invisible to the loader and the collection reports "no seed data, skipping"
|
|
5411
|
+
* with exit 0. That is Root Cause #90 exactly, and it is how `mediaAssets`
|
|
5412
|
+
* read "504 seed / 0 in db" while all 504 objects sat in the bucket.
|
|
5413
|
+
*/
|
|
5414
|
+
export { BEYS_COLLECTION, BEY_PRODUCTS_COLLECTION, beyId, } from "./features/beys/schemas/firestore.js";
|
|
5415
|
+
export { beysSeedData, BEY_SEED_COUNT } from "./seed/index.js";
|
|
5416
|
+
export { BeyDetailPageView } from "./features/beys/components/BeyDetailPageView.js";
|
|
5417
|
+
export { beyProductsSeedData, BEY_PRODUCT_SEED_COUNT } from "./seed/index.js";
|
|
5406
5418
|
export { modelCompositionSeedData } from "./seed/index.js";
|
|
5407
5419
|
// D12 — the public part surfaces.
|
|
5408
5420
|
export { ModelCompositionPanel } from "./features/parts/components/ModelCompositionPanel.js";
|
|
@@ -5494,6 +5506,7 @@ export { LISTING_TYPE_CAPABILITIES, capabilityFor, canAddToCart, canBid, support
|
|
|
5494
5506
|
export { LISTING_TYPE_REGISTRY, pluginFor, detectListingTypeFromSlug } from "./_internal/shared/listing-types/_registry.js";
|
|
5495
5507
|
// Pencil / clone / bin for whoever owns the record, on a PUBLIC surface.
|
|
5496
5508
|
export { OwnerQuickActions } from "./features/admin/components/OwnerQuickActions.js";
|
|
5509
|
+
export { RecordOwnerQuickActions } from "./features/admin/components/RecordOwnerQuickActions.js";
|
|
5497
5510
|
// Checkout rule registry â€" pure TS, safe in both client and server bundles.
|
|
5498
5511
|
export { getListingRule, getCategoryRule, pickOrderType, getSplitKey, runSyncPreflight, CHECKOUT_RULES, CATEGORY_CHECKOUT_RULES, CHECKOUT_MAX_ORDERS_PER_TX, PRIZE_DRAW_MAX_REVEALS_PER_ORDER, BUNDLE_MAX_QTY_PER_TX, STANDARD_MAX_QTY_PER_LINE, } from "./_internal/shared/checkout/rules/index.js";
|
|
5499
5512
|
// Media upload limits â€" pure constants, safe in both client and server bundles.
|
|
@@ -69,6 +69,7 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
69
69
|
readonly HELP_AUCTIONS: "/help/auctions";
|
|
70
70
|
readonly HELP_ORDERS: "/help/orders";
|
|
71
71
|
readonly HELP_ACCOUNT: "/help/account";
|
|
72
|
+
readonly CREDITS: "/credits";
|
|
72
73
|
readonly TERMS: "/terms";
|
|
73
74
|
readonly PRIVACY: "/privacy";
|
|
74
75
|
readonly ETHICS: "/ethics";
|
|
@@ -129,6 +130,7 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
129
130
|
readonly PARTS: "/parts";
|
|
130
131
|
readonly PART_CLASSIFICATION: (classification: string) => string;
|
|
131
132
|
readonly PART_DETAIL: (classification: string, code: string) => string;
|
|
133
|
+
readonly BEY_DETAIL: (slug: string) => string;
|
|
132
134
|
readonly SCAM_TYPES: "/scams/types";
|
|
133
135
|
readonly SCAM_FAQS: "/scams/faqs";
|
|
134
136
|
readonly CLASSIFIED: "/classified";
|
|
@@ -320,6 +322,10 @@ export declare const DEFAULT_ROUTE_MAP: {
|
|
|
320
322
|
readonly CATEGORIES: "/admin/categories";
|
|
321
323
|
readonly CATEGORIES_NEW: "/admin/categories/new";
|
|
322
324
|
readonly CATEGORIES_EDIT: (id: string) => string;
|
|
325
|
+
readonly PARTS: "/admin/parts";
|
|
326
|
+
readonly PARTS_EDIT: (id: string) => string;
|
|
327
|
+
readonly BEYS: "/admin/beys";
|
|
328
|
+
readonly BEYS_EDIT: (id: string) => string;
|
|
323
329
|
readonly BRANDS: "/admin/brands";
|
|
324
330
|
readonly BRANDS_NEW: "/admin/brands/new";
|
|
325
331
|
readonly BRANDS_EDIT: (id: string) => string;
|
|
@@ -504,6 +510,7 @@ export declare const ROUTES: {
|
|
|
504
510
|
readonly HELP_AUCTIONS: "/help/auctions";
|
|
505
511
|
readonly HELP_ORDERS: "/help/orders";
|
|
506
512
|
readonly HELP_ACCOUNT: "/help/account";
|
|
513
|
+
readonly CREDITS: "/credits";
|
|
507
514
|
readonly TERMS: "/terms";
|
|
508
515
|
readonly PRIVACY: "/privacy";
|
|
509
516
|
readonly ETHICS: "/ethics";
|
|
@@ -564,6 +571,7 @@ export declare const ROUTES: {
|
|
|
564
571
|
readonly PARTS: "/parts";
|
|
565
572
|
readonly PART_CLASSIFICATION: (classification: string) => string;
|
|
566
573
|
readonly PART_DETAIL: (classification: string, code: string) => string;
|
|
574
|
+
readonly BEY_DETAIL: (slug: string) => string;
|
|
567
575
|
readonly SCAM_TYPES: "/scams/types";
|
|
568
576
|
readonly SCAM_FAQS: "/scams/faqs";
|
|
569
577
|
readonly CLASSIFIED: "/classified";
|
|
@@ -755,6 +763,10 @@ export declare const ROUTES: {
|
|
|
755
763
|
readonly CATEGORIES: "/admin/categories";
|
|
756
764
|
readonly CATEGORIES_NEW: "/admin/categories/new";
|
|
757
765
|
readonly CATEGORIES_EDIT: (id: string) => string;
|
|
766
|
+
readonly PARTS: "/admin/parts";
|
|
767
|
+
readonly PARTS_EDIT: (id: string) => string;
|
|
768
|
+
readonly BEYS: "/admin/beys";
|
|
769
|
+
readonly BEYS_EDIT: (id: string) => string;
|
|
758
770
|
readonly BRANDS: "/admin/brands";
|
|
759
771
|
readonly BRANDS_NEW: "/admin/brands/new";
|
|
760
772
|
readonly BRANDS_EDIT: (id: string) => string;
|
|
@@ -970,6 +982,6 @@ export declare const SELLER_ROUTES: {
|
|
|
970
982
|
readonly GUIDE_CAPABILITIES: "/store/guide/capabilities";
|
|
971
983
|
readonly GUIDE_SETTINGS: "/store/guide/settings";
|
|
972
984
|
};
|
|
973
|
-
export declare const PUBLIC_ROUTES: readonly ["/", string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "/unauthorized", "/auth/login", "/auth/register", "/auth/forgot-password", "/auth/reset-password", "/auth/verify-email"];
|
|
985
|
+
export declare const PUBLIC_ROUTES: readonly ["/", string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "/unauthorized", "/auth/login", "/auth/register", "/auth/forgot-password", "/auth/reset-password", "/auth/verify-email"];
|
|
974
986
|
export declare const PROTECTED_ROUTES: readonly [string, string, string, string, string, string, string];
|
|
975
987
|
export declare const AUTH_ROUTES: readonly ["/auth/login", "/auth/register"];
|
|
@@ -83,6 +83,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
83
83
|
HELP_AUCTIONS: "/help/auctions",
|
|
84
84
|
HELP_ORDERS: "/help/orders",
|
|
85
85
|
HELP_ACCOUNT: "/help/account",
|
|
86
|
+
/*
|
|
87
|
+
* 🛑 A LICENCE OBLIGATION, not a vanity page — which is why it is a route
|
|
88
|
+
* key and sits in PUBLIC_ROUTES. The facts across ~5,500 rows (parts, beys,
|
|
89
|
+
* products, characters) come from a CC-BY-SA community wiki; taking facts
|
|
90
|
+
* only and linking back is what keeps us clear of share-alike, and a
|
|
91
|
+
* link-back nobody can reach discharges nothing.
|
|
92
|
+
*/
|
|
93
|
+
CREDITS: "/credits",
|
|
86
94
|
TERMS: "/terms",
|
|
87
95
|
PRIVACY: "/privacy",
|
|
88
96
|
ETHICS: "/ethics",
|
|
@@ -194,6 +202,14 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
194
202
|
PARTS: "/parts",
|
|
195
203
|
PART_CLASSIFICATION: (classification) => `/parts/${classification}`,
|
|
196
204
|
PART_DETAIL: (classification, code) => `/parts/${classification}/${code}`,
|
|
205
|
+
/*
|
|
206
|
+
* The BEY database. A reference surface like `/parts`, and a ONE-segment
|
|
207
|
+
* URL unlike it — a bey's id IS its slug, so the page is a direct doc read
|
|
208
|
+
* with no query and no index. Parts need the classification in the path
|
|
209
|
+
* because a code alone is ambiguous (`105` is a spin-track height in Metal
|
|
210
|
+
* Fight and a disc in Burst); a bey name is not.
|
|
211
|
+
*/
|
|
212
|
+
BEY_DETAIL: (slug) => `/beys/${slug}`,
|
|
197
213
|
SCAM_TYPES: "/scams/types",
|
|
198
214
|
SCAM_FAQS: "/scams/faqs",
|
|
199
215
|
CLASSIFIED: "/classified",
|
|
@@ -447,6 +463,24 @@ export const DEFAULT_ROUTE_MAP = {
|
|
|
447
463
|
CATEGORIES: "/admin/categories",
|
|
448
464
|
CATEGORIES_NEW: "/admin/categories/new",
|
|
449
465
|
CATEGORIES_EDIT: (id) => `/admin/categories/${id}/edit`,
|
|
466
|
+
/*
|
|
467
|
+
* The two GENERATED reference databases — 2,488 parts and 1,988 beys.
|
|
468
|
+
*
|
|
469
|
+
* 🛑 THERE IS NO `PARTS_NEW` / `BEYS_NEW`, and that absence is the
|
|
470
|
+
* design. Both collections are produced by committed generators from a
|
|
471
|
+
* crawled corpus; a row created by hand would have no source, would not
|
|
472
|
+
* survive a regeneration, and would sit in a dataset whose whole value is
|
|
473
|
+
* that it reproduces from `appkit/src/seed/` alone. Admin may CORRECT and
|
|
474
|
+
* REMOVE a row — the two operations a wrong extraction needs — and adding
|
|
475
|
+
* one is a change to the generator.
|
|
476
|
+
*
|
|
477
|
+
* `audit-nav-page-wiring` is strict-zero on a route key with no page, so
|
|
478
|
+
* a key added here without its folder is a build failure, not a 404.
|
|
479
|
+
*/
|
|
480
|
+
PARTS: "/admin/parts",
|
|
481
|
+
PARTS_EDIT: (id) => `/admin/parts/${id}/edit`,
|
|
482
|
+
BEYS: "/admin/beys",
|
|
483
|
+
BEYS_EDIT: (id) => `/admin/beys/${id}/edit`,
|
|
450
484
|
BRANDS: "/admin/brands",
|
|
451
485
|
BRANDS_NEW: "/admin/brands/new",
|
|
452
486
|
BRANDS_EDIT: (id) => `/admin/brands/${id}/edit`,
|
|
@@ -636,6 +670,9 @@ export const PUBLIC_ROUTES = [
|
|
|
636
670
|
ROUTES.PUBLIC.CONTACT,
|
|
637
671
|
ROUTES.BLOG.LIST,
|
|
638
672
|
ROUTES.PUBLIC.HELP,
|
|
673
|
+
/* Unauthenticated BY NECESSITY: an attribution a reader must sign in to see
|
|
674
|
+
* is not attribution. Same reasoning as the grievance-officer entry below. */
|
|
675
|
+
ROUTES.PUBLIC.CREDITS,
|
|
639
676
|
ROUTES.PUBLIC.TERMS,
|
|
640
677
|
ROUTES.PUBLIC.PRIVACY,
|
|
641
678
|
ROUTES.PUBLIC.ETHICS,
|
|
@@ -504,15 +504,15 @@ export declare const SCHEMAS: {
|
|
|
504
504
|
description?: string | undefined;
|
|
505
505
|
textColor?: string | undefined;
|
|
506
506
|
textAlign?: "center" | "left" | "right" | undefined;
|
|
507
|
-
subtitle?: string | undefined;
|
|
508
507
|
eyebrow?: string | undefined;
|
|
508
|
+
subtitle?: string | undefined;
|
|
509
509
|
}, {
|
|
510
510
|
title?: string | undefined;
|
|
511
511
|
description?: string | undefined;
|
|
512
512
|
textColor?: string | undefined;
|
|
513
513
|
textAlign?: "center" | "left" | "right" | undefined;
|
|
514
|
-
subtitle?: string | undefined;
|
|
515
514
|
eyebrow?: string | undefined;
|
|
515
|
+
subtitle?: string | undefined;
|
|
516
516
|
}>>;
|
|
517
517
|
buttons: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
518
518
|
id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -571,8 +571,8 @@ export declare const SCHEMAS: {
|
|
|
571
571
|
description?: string | undefined;
|
|
572
572
|
textColor?: string | undefined;
|
|
573
573
|
textAlign?: "center" | "left" | "right" | undefined;
|
|
574
|
-
subtitle?: string | undefined;
|
|
575
574
|
eyebrow?: string | undefined;
|
|
575
|
+
subtitle?: string | undefined;
|
|
576
576
|
} | undefined;
|
|
577
577
|
hover?: {
|
|
578
578
|
effect: "none" | "color" | "scale" | "glow";
|
|
@@ -612,8 +612,8 @@ export declare const SCHEMAS: {
|
|
|
612
612
|
description?: string | undefined;
|
|
613
613
|
textColor?: string | undefined;
|
|
614
614
|
textAlign?: "center" | "left" | "right" | undefined;
|
|
615
|
-
subtitle?: string | undefined;
|
|
616
615
|
eyebrow?: string | undefined;
|
|
616
|
+
subtitle?: string | undefined;
|
|
617
617
|
} | undefined;
|
|
618
618
|
hover?: {
|
|
619
619
|
effect: "none" | "color" | "scale" | "glow";
|
|
@@ -751,8 +751,8 @@ export declare const SCHEMAS: {
|
|
|
751
751
|
description?: string | undefined;
|
|
752
752
|
textColor?: string | undefined;
|
|
753
753
|
textAlign?: "center" | "left" | "right" | undefined;
|
|
754
|
-
subtitle?: string | undefined;
|
|
755
754
|
eyebrow?: string | undefined;
|
|
755
|
+
subtitle?: string | undefined;
|
|
756
756
|
} | undefined;
|
|
757
757
|
hover?: {
|
|
758
758
|
effect: "none" | "color" | "scale" | "glow";
|
|
@@ -860,8 +860,8 @@ export declare const SCHEMAS: {
|
|
|
860
860
|
description?: string | undefined;
|
|
861
861
|
textColor?: string | undefined;
|
|
862
862
|
textAlign?: "center" | "left" | "right" | undefined;
|
|
863
|
-
subtitle?: string | undefined;
|
|
864
863
|
eyebrow?: string | undefined;
|
|
864
|
+
subtitle?: string | undefined;
|
|
865
865
|
} | undefined;
|
|
866
866
|
hover?: {
|
|
867
867
|
effect: "none" | "color" | "scale" | "glow";
|