feat(wise-hearted-decor): initial luxury event decor website build with 5 pillars, portfolio, and booking funnel

This commit is contained in:
2026-08-29 16:58:53 -07:00
commit 550b4d50cf
8913 changed files with 1959983 additions and 0 deletions
@@ -0,0 +1,46 @@
/**
* Parse the app segment config.
* @param data - The data to parse.
* @param route - The route of the app.
* @returns The parsed app segment config.
*/
export declare function parseAppSegmentConfig(data: unknown, route: string): AppSegmentConfig;
/**
* The configuration for a page.
*/
export type AppSegmentConfig = {
/**
* The revalidation period for the page in seconds, or false to disable ISR.
*/
revalidate?: number | false;
/**
* Whether the page supports dynamic parameters.
*/
dynamicParams?: boolean;
/**
* The dynamic behavior of the page.
*/
dynamic?: 'auto' | 'error' | 'force-static' | 'force-dynamic';
/**
* The caching behavior of the page.
*/
fetchCache?: 'auto' | 'default-cache' | 'default-no-store' | 'force-cache' | 'force-no-store' | 'only-cache' | 'only-no-store';
/**
* The preferred region for the page.
*/
preferredRegion?: string | string[];
/**
* Whether the page supports partial prerendering. When true, the page will be
* served using partial prerendering. This setting will only take affect if
* it's enabled via the `experimental.ppr = "incremental"` option.
*/
experimental_ppr?: boolean;
/**
* The runtime to use for the page.
*/
runtime?: 'edge' | 'nodejs';
/**
* The maximum duration for the page in seconds.
*/
maxDuration?: number;
};
+97
View File
@@ -0,0 +1,97 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
AppSegmentConfigSchemaKeys: null,
parseAppSegmentConfig: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
AppSegmentConfigSchemaKeys: function() {
return AppSegmentConfigSchemaKeys;
},
parseAppSegmentConfig: function() {
return parseAppSegmentConfig;
}
});
const _zod = require("next/dist/compiled/zod");
const _zod1 = require("../../../shared/lib/zod");
/**
* The schema for configuration for a page.
*/ const AppSegmentConfigSchema = _zod.z.object({
/**
* The number of seconds to revalidate the page or false to disable revalidation.
*/ revalidate: _zod.z.union([
_zod.z.number().int().nonnegative(),
_zod.z.literal(false)
]).optional(),
/**
* Whether the page supports dynamic parameters.
*/ dynamicParams: _zod.z.boolean().optional(),
/**
* The dynamic behavior of the page.
*/ dynamic: _zod.z.enum([
'auto',
'error',
'force-static',
'force-dynamic'
]).optional(),
/**
* The caching behavior of the page.
*/ fetchCache: _zod.z.enum([
'auto',
'default-cache',
'only-cache',
'force-cache',
'force-no-store',
'default-no-store',
'only-no-store'
]).optional(),
/**
* The preferred region for the page.
*/ preferredRegion: _zod.z.union([
_zod.z.string(),
_zod.z.array(_zod.z.string())
]).optional(),
/**
* Whether the page supports partial prerendering. When true, the page will be
* served using partial prerendering. This setting will only take affect if
* it's enabled via the `experimental.ppr = "incremental"` option.
*/ experimental_ppr: _zod.z.boolean().optional(),
/**
* The runtime to use for the page.
*/ runtime: _zod.z.enum([
'edge',
'nodejs'
]).optional(),
/**
* The maximum duration for the page in seconds.
*/ maxDuration: _zod.z.number().int().nonnegative().optional()
});
function parseAppSegmentConfig(data, route) {
const parsed = AppSegmentConfigSchema.safeParse(data, {
errorMap: (issue, ctx)=>{
if (issue.path.length === 1 && issue.path[0] === 'revalidate') {
return {
message: `Invalid revalidate value ${JSON.stringify(ctx.data)} on "${route}", must be a non-negative number or false`
};
}
return {
message: ctx.defaultError
};
}
});
if (!parsed.success) {
throw (0, _zod1.formatZodError)(`Invalid segment configuration options detected for "${route}". Read more at https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config`, parsed.error);
}
return parsed.data;
}
const AppSegmentConfigSchemaKeys = AppSegmentConfigSchema.keyof().options;
//# sourceMappingURL=app-segment-config.js.map
File diff suppressed because one or more lines are too long
+24
View File
@@ -0,0 +1,24 @@
import type { LoadComponentsReturnType } from '../../../server/load-components';
import type { Params } from '../../../server/request/params';
import type { AppPageModule } from '../../../server/route-modules/app-page/module.compiled';
import type { AppRouteModule } from '../../../server/route-modules/app-route/module.compiled';
import { type AppSegmentConfig } from './app-segment-config';
type GenerateStaticParams = (options: {
params?: Params;
}) => Promise<Params[]>;
export type AppSegment = {
name: string;
param: string | undefined;
filePath: string | undefined;
config: AppSegmentConfig | undefined;
isDynamicSegment: boolean;
generateStaticParams: GenerateStaticParams | undefined;
};
/**
* Collects the segments for a given route module.
*
* @param components the loaded components
* @returns the segments for the route module
*/
export declare function collectSegments({ routeModule, }: LoadComponentsReturnType<AppPageModule | AppRouteModule>): Promise<AppSegment[]> | AppSegment[];
export {};
+129
View File
@@ -0,0 +1,129 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "collectSegments", {
enumerable: true,
get: function() {
return collectSegments;
}
});
const _appsegmentconfig = require("./app-segment-config");
const _invarianterror = require("../../../shared/lib/invariant-error");
const _checks = require("../../../server/route-modules/checks");
const _clientreference = require("../../../lib/client-reference");
const _getsegmentparam = require("../../../server/app-render/get-segment-param");
const _appdirmodule = require("../../../server/lib/app-dir-module");
const _segment = require("../../../shared/lib/segment");
/**
* Parses the app config and attaches it to the segment.
*/ function attach(segment, userland, route) {
// If the userland is not an object, then we can't do anything with it.
if (typeof userland !== 'object' || userland === null) {
return;
}
// Try to parse the application configuration.
const config = (0, _appsegmentconfig.parseAppSegmentConfig)(userland, route);
// If there was any keys on the config, then attach it to the segment.
if (Object.keys(config).length > 0) {
segment.config = config;
}
if ('generateStaticParams' in userland && typeof userland.generateStaticParams === 'function') {
var _segment_config;
segment.generateStaticParams = userland.generateStaticParams;
// Validate that `generateStaticParams` makes sense in this context.
if (((_segment_config = segment.config) == null ? void 0 : _segment_config.runtime) === 'edge') {
throw new Error('Edge runtime is not supported with `generateStaticParams`.');
}
}
}
/**
* Walks the loader tree and collects the generate parameters for each segment.
*
* @param routeModule the app page route module
* @returns the segments for the app page route module
*/ async function collectAppPageSegments(routeModule) {
const segments = [];
// Helper function to process a loader tree path
async function processLoaderTree(loaderTree, currentSegments = []) {
var _getSegmentParam;
const [name, parallelRoutes] = loaderTree;
const { mod: userland, filePath } = await (0, _appdirmodule.getLayoutOrPageModule)(loaderTree);
const isClientComponent = userland && (0, _clientreference.isClientReference)(userland);
const isDynamicSegment = /\[.*\]$/.test(name);
const param = isDynamicSegment ? (_getSegmentParam = (0, _getsegmentparam.getSegmentParam)(name)) == null ? void 0 : _getSegmentParam.param : undefined;
const segment = {
name,
param,
filePath,
config: undefined,
isDynamicSegment,
generateStaticParams: undefined
};
// Only server components can have app segment configurations. If this isn't
// an object, then we should skip it. This can happen when parsing the
// error components.
if (!isClientComponent) {
attach(segment, userland, routeModule.definition.pathname);
}
currentSegments.push(segment);
// If this is a page segment, we know we've reached a leaf node associated with the
// page we're collecting segments for. We can add the collected segments to our final result.
if (name === _segment.PAGE_SEGMENT_KEY) {
segments.push(...currentSegments);
}
// Recursively process parallel routes
for(const parallelRouteKey in parallelRoutes){
const parallelRoute = parallelRoutes[parallelRouteKey];
await processLoaderTree(parallelRoute, [
...currentSegments
]);
}
}
await processLoaderTree(routeModule.userland.loaderTree);
return segments;
}
/**
* Collects the segments for a given app route module.
*
* @param routeModule the app route module
* @returns the segments for the app route module
*/ function collectAppRouteSegments(routeModule) {
// Get the pathname parts, slice off the first element (which is empty).
const parts = routeModule.definition.pathname.split('/').slice(1);
if (parts.length === 0) {
throw new _invarianterror.InvariantError('Expected at least one segment');
}
// Generate all the segments.
const segments = parts.map((name)=>{
var _getSegmentParam;
const isDynamicSegment = /^\[.*\]$/.test(name);
const param = isDynamicSegment ? (_getSegmentParam = (0, _getsegmentparam.getSegmentParam)(name)) == null ? void 0 : _getSegmentParam.param : undefined;
return {
name,
param,
filePath: undefined,
isDynamicSegment,
config: undefined,
generateStaticParams: undefined
};
});
// We know we have at least one, we verified this above. We should get the
// last segment which represents the root route module.
const segment = segments[segments.length - 1];
segment.filePath = routeModule.definition.filename;
// Extract the segment config from the userland module.
attach(segment, routeModule.userland, routeModule.definition.pathname);
return segments;
}
function collectSegments({ routeModule }) {
if ((0, _checks.isAppRouteRouteModule)(routeModule)) {
return collectAppRouteSegments(routeModule);
}
if ((0, _checks.isAppPageRouteModule)(routeModule)) {
return collectAppPageSegments(routeModule);
}
throw new _invarianterror.InvariantError('Expected a route module to be one of app route or page');
}
//# sourceMappingURL=app-segments.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
import type { RouteHas } from '../../../lib/load-custom-routes';
export type MiddlewareConfigInput = {
/**
* The matcher for the middleware.
*/
matcher?: string | Array<{
locale?: false;
has?: RouteHas[];
missing?: RouteHas[];
source: string;
} | string>;
/**
* The regions that the middleware should run in.
*/
regions?: string | string[];
/**
* A glob, or an array of globs, ignoring dynamic code evaluation for specific
* files. The globs are relative to your application root folder.
*/
unstable_allowDynamic?: string | string[];
};
@@ -0,0 +1,121 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
MiddlewareConfigInputSchema: null,
MiddlewareConfigInputSchemaKeys: null,
SourceSchema: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
MiddlewareConfigInputSchema: function() {
return MiddlewareConfigInputSchema;
},
MiddlewareConfigInputSchemaKeys: function() {
return MiddlewareConfigInputSchemaKeys;
},
SourceSchema: function() {
return SourceSchema;
}
});
const _picomatch = /*#__PURE__*/ _interop_require_default(require("next/dist/compiled/picomatch"));
const _zod = require("next/dist/compiled/zod");
const _trytoparsepath = require("../../../lib/try-to-parse-path");
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const RouteHasSchema = _zod.z.discriminatedUnion('type', [
_zod.z.object({
type: _zod.z.enum([
'header',
'query',
'cookie'
]),
key: _zod.z.string({
required_error: 'key is required when type is header, query or cookie'
}),
value: _zod.z.string({
invalid_type_error: 'value must be a string'
}).optional()
}).strict(),
_zod.z.object({
type: _zod.z.literal('host'),
value: _zod.z.string({
required_error: 'host must have a value'
})
}).strict()
]);
const SourceSchema = _zod.z.string({
required_error: 'source is required'
}).max(4096, 'exceeds max built length of 4096 for route').superRefine((val, ctx)=>{
if (!val.startsWith('/')) {
return ctx.addIssue({
code: _zod.z.ZodIssueCode.custom,
message: `source must start with /`
});
}
const { error, regexStr } = (0, _trytoparsepath.tryToParsePath)(val);
if (error || !regexStr) {
ctx.addIssue({
code: _zod.z.ZodIssueCode.custom,
message: `Invalid source '${val}': ${error.message}`
});
}
});
const MiddlewareMatcherInputSchema = _zod.z.object({
locale: _zod.z.union([
_zod.z.literal(false),
_zod.z.undefined()
]).optional(),
has: _zod.z.array(RouteHasSchema).optional(),
missing: _zod.z.array(RouteHasSchema).optional(),
source: SourceSchema
}).strict();
const MiddlewareConfigMatcherInputSchema = _zod.z.union([
SourceSchema,
_zod.z.array(_zod.z.union([
SourceSchema,
MiddlewareMatcherInputSchema
], {
invalid_type_error: 'must be an array of strings or middleware matchers'
}))
]);
const GlobSchema = _zod.z.string().superRefine((val, ctx)=>{
try {
(0, _picomatch.default)(val);
} catch (err) {
ctx.addIssue({
code: _zod.z.ZodIssueCode.custom,
message: `Invalid glob pattern '${val}': ${err.message}`
});
}
});
const MiddlewareConfigInputSchema = _zod.z.object({
/**
* The matcher for the middleware.
*/ matcher: MiddlewareConfigMatcherInputSchema.optional(),
/**
* The regions that the middleware should run in.
*/ regions: _zod.z.union([
_zod.z.string(),
_zod.z.array(_zod.z.string())
]).optional(),
/**
* A glob, or an array of globs, ignoring dynamic code evaluation for specific
* files. The globs are relative to your application root folder.
*/ unstable_allowDynamic: _zod.z.union([
GlobSchema,
_zod.z.array(GlobSchema)
]).optional()
});
const MiddlewareConfigInputSchemaKeys = MiddlewareConfigInputSchema.keyof().options;
//# sourceMappingURL=middleware-config.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,39 @@
/**
* Parse the page segment config.
* @param data - The data to parse.
* @param route - The route of the page.
* @returns The parsed page segment config.
*/
export declare function parsePagesSegmentConfig(data: unknown, route: string): PagesSegmentConfig;
export type PagesSegmentConfigConfig = {
/**
* Enables AMP for the page.
*/
amp?: boolean | 'hybrid';
/**
* The maximum duration for the page render.
*/
maxDuration?: number;
/**
* The runtime to use for the page.
*/
runtime?: 'edge' | 'experimental-edge' | 'nodejs';
/**
* The preferred region for the page.
*/
regions?: string[];
};
export type PagesSegmentConfig = {
/**
* The runtime to use for the page.
*/
runtime?: 'edge' | 'experimental-edge' | 'nodejs';
/**
* The maximum duration for the page render.
*/
maxDuration?: number;
/**
* The exported config object for the page.
*/
config?: PagesSegmentConfigConfig;
};
@@ -0,0 +1,68 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
PagesSegmentConfigSchemaKeys: null,
parsePagesSegmentConfig: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
PagesSegmentConfigSchemaKeys: function() {
return PagesSegmentConfigSchemaKeys;
},
parsePagesSegmentConfig: function() {
return parsePagesSegmentConfig;
}
});
const _zod = require("next/dist/compiled/zod");
const _zod1 = require("../../../shared/lib/zod");
/**
* The schema for the page segment config.
*/ const PagesSegmentConfigSchema = _zod.z.object({
/**
* The runtime to use for the page.
*/ runtime: _zod.z.enum([
'edge',
'experimental-edge',
'nodejs'
]).optional(),
/**
* The maximum duration for the page render.
*/ maxDuration: _zod.z.number().optional(),
/**
* The exported config object for the page.
*/ config: _zod.z.object({
/**
* Enables AMP for the page.
*/ amp: _zod.z.union([
_zod.z.boolean(),
_zod.z.literal('hybrid')
]).optional(),
/**
* The runtime to use for the page.
*/ runtime: _zod.z.enum([
'edge',
'experimental-edge',
'nodejs'
]).optional(),
/**
* The maximum duration for the page render.
*/ maxDuration: _zod.z.number().optional()
}).optional()
});
function parsePagesSegmentConfig(data, route) {
const parsed = PagesSegmentConfigSchema.safeParse(data, {});
if (!parsed.success) {
throw (0, _zod1.formatZodError)(`Invalid segment configuration options detected for "${route}". Read more at https://nextjs.org/docs/messages/invalid-page-config`, parsed.error);
}
return parsed.data;
}
const PagesSegmentConfigSchemaKeys = PagesSegmentConfigSchema.keyof().options;
//# sourceMappingURL=pages-segment-config.js.map
@@ -0,0 +1 @@
{"version":3,"sources":["../../../../src/build/segment-config/pages/pages-segment-config.ts"],"sourcesContent":["import { z } from 'next/dist/compiled/zod'\nimport { formatZodError } from '../../../shared/lib/zod'\n\n/**\n * The schema for the page segment config.\n */\nconst PagesSegmentConfigSchema = z.object({\n /**\n * The runtime to use for the page.\n */\n runtime: z.enum(['edge', 'experimental-edge', 'nodejs']).optional(),\n\n /**\n * The maximum duration for the page render.\n */\n maxDuration: z.number().optional(),\n\n /**\n * The exported config object for the page.\n */\n config: z\n .object({\n /**\n * Enables AMP for the page.\n */\n amp: z.union([z.boolean(), z.literal('hybrid')]).optional(),\n\n /**\n * The runtime to use for the page.\n */\n runtime: z.enum(['edge', 'experimental-edge', 'nodejs']).optional(),\n\n /**\n * The maximum duration for the page render.\n */\n maxDuration: z.number().optional(),\n })\n .optional(),\n})\n\n/**\n * Parse the page segment config.\n * @param data - The data to parse.\n * @param route - The route of the page.\n * @returns The parsed page segment config.\n */\nexport function parsePagesSegmentConfig(\n data: unknown,\n route: string\n): PagesSegmentConfig {\n const parsed = PagesSegmentConfigSchema.safeParse(data, {})\n if (!parsed.success) {\n throw formatZodError(\n `Invalid segment configuration options detected for \"${route}\". Read more at https://nextjs.org/docs/messages/invalid-page-config`,\n parsed.error\n )\n }\n\n return parsed.data\n}\n\n/**\n * The keys of the configuration for a page.\n *\n * @internal - required to exclude zod types from the build\n */\nexport const PagesSegmentConfigSchemaKeys =\n PagesSegmentConfigSchema.keyof().options\n\nexport type PagesSegmentConfigConfig = {\n /**\n * Enables AMP for the page.\n */\n amp?: boolean | 'hybrid'\n\n /**\n * The maximum duration for the page render.\n */\n maxDuration?: number\n\n /**\n * The runtime to use for the page.\n */\n runtime?: 'edge' | 'experimental-edge' | 'nodejs'\n\n /**\n * The preferred region for the page.\n */\n regions?: string[]\n}\n\nexport type PagesSegmentConfig = {\n /**\n * The runtime to use for the page.\n */\n runtime?: 'edge' | 'experimental-edge' | 'nodejs'\n\n /**\n * The maximum duration for the page render.\n */\n maxDuration?: number\n\n /**\n * The exported config object for the page.\n */\n config?: PagesSegmentConfigConfig\n}\n"],"names":["PagesSegmentConfigSchemaKeys","parsePagesSegmentConfig","PagesSegmentConfigSchema","z","object","runtime","enum","optional","maxDuration","number","config","amp","union","boolean","literal","data","route","parsed","safeParse","success","formatZodError","error","keyof","options"],"mappings":";;;;;;;;;;;;;;;IAkEaA,4BAA4B;eAA5BA;;IApBGC,uBAAuB;eAAvBA;;;qBA9CE;sBACa;AAE/B;;CAEC,GACD,MAAMC,2BAA2BC,MAAC,CAACC,MAAM,CAAC;IACxC;;GAEC,GACDC,SAASF,MAAC,CAACG,IAAI,CAAC;QAAC;QAAQ;QAAqB;KAAS,EAAEC,QAAQ;IAEjE;;GAEC,GACDC,aAAaL,MAAC,CAACM,MAAM,GAAGF,QAAQ;IAEhC;;GAEC,GACDG,QAAQP,MAAC,CACNC,MAAM,CAAC;QACN;;OAEC,GACDO,KAAKR,MAAC,CAACS,KAAK,CAAC;YAACT,MAAC,CAACU,OAAO;YAAIV,MAAC,CAACW,OAAO,CAAC;SAAU,EAAEP,QAAQ;QAEzD;;OAEC,GACDF,SAASF,MAAC,CAACG,IAAI,CAAC;YAAC;YAAQ;YAAqB;SAAS,EAAEC,QAAQ;QAEjE;;OAEC,GACDC,aAAaL,MAAC,CAACM,MAAM,GAAGF,QAAQ;IAClC,GACCA,QAAQ;AACb;AAQO,SAASN,wBACdc,IAAa,EACbC,KAAa;IAEb,MAAMC,SAASf,yBAAyBgB,SAAS,CAACH,MAAM,CAAC;IACzD,IAAI,CAACE,OAAOE,OAAO,EAAE;QACnB,MAAMC,IAAAA,oBAAc,EAClB,CAAC,oDAAoD,EAAEJ,MAAM,oEAAoE,CAAC,EAClIC,OAAOI,KAAK;IAEhB;IAEA,OAAOJ,OAAOF,IAAI;AACpB;AAOO,MAAMf,+BACXE,yBAAyBoB,KAAK,GAAGC,OAAO"}