@ttt-productions/ttt-core 0.79.65 → 0.79.67
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/constants/business-admin.d.ts +2 -2
- package/dist/constants/business-admin.d.ts.map +1 -1
- package/dist/constants/business-admin.js +3 -2
- package/dist/constants/business-admin.js.map +1 -1
- package/dist/constants/business-content.d.ts +13 -14
- package/dist/constants/business-content.d.ts.map +1 -1
- package/dist/constants/business-content.js +14 -15
- package/dist/constants/business-content.js.map +1 -1
- package/dist/constants/business-platform.d.ts +3 -0
- package/dist/constants/business-platform.d.ts.map +1 -1
- package/dist/constants/business-platform.js +3 -0
- package/dist/constants/business-platform.js.map +1 -1
- package/dist/constants/business-user.d.ts +2 -2
- package/dist/constants/business-user.d.ts.map +1 -1
- package/dist/constants/business-user.js +2 -2
- package/dist/constants/business-user.js.map +1 -1
- package/dist/constants/business-work-project.d.ts +0 -8
- package/dist/constants/business-work-project.d.ts.map +1 -1
- package/dist/constants/business-work-project.js +3 -10
- package/dist/constants/business-work-project.js.map +1 -1
- package/dist/constants/center-stage-rooms.d.ts +5 -0
- package/dist/constants/center-stage-rooms.d.ts.map +1 -1
- package/dist/constants/center-stage-rooms.js +7 -0
- package/dist/constants/center-stage-rooms.js.map +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/storage-keys.d.ts +4 -1
- package/dist/constants/storage-keys.d.ts.map +1 -1
- package/dist/constants/storage-keys.js +4 -1
- package/dist/constants/storage-keys.js.map +1 -1
- package/dist/constants/text-fields.d.ts +470 -0
- package/dist/constants/text-fields.d.ts.map +1 -0
- package/dist/constants/text-fields.js +148 -0
- package/dist/constants/text-fields.js.map +1 -0
- package/dist/doc-schemas/content.d.ts +3 -15
- package/dist/doc-schemas/content.d.ts.map +1 -1
- package/dist/doc-schemas/content.js +23 -23
- package/dist/doc-schemas/content.js.map +1 -1
- package/dist/doc-schemas/registry.d.ts +8 -15
- package/dist/doc-schemas/registry.d.ts.map +1 -1
- package/dist/media/atoms.d.ts +2 -0
- package/dist/media/atoms.d.ts.map +1 -1
- package/dist/media/atoms.js +4 -0
- package/dist/media/atoms.js.map +1 -1
- package/dist/media/domain-events-admin.d.ts +2 -0
- package/dist/media/domain-events-admin.d.ts.map +1 -1
- package/dist/media/domain-events-admin.js +6 -3
- package/dist/media/domain-events-admin.js.map +1 -1
- package/dist/media/domain-events.d.ts +2 -0
- package/dist/media/domain-events.d.ts.map +1 -1
- package/dist/media/pending-media.d.ts +22 -0
- package/dist/media/pending-media.d.ts.map +1 -1
- package/dist/media/target-info.d.ts +9 -10
- package/dist/media/target-info.d.ts.map +1 -1
- package/dist/media/target-info.js +10 -15
- package/dist/media/target-info.js.map +1 -1
- package/dist/permissions/work-project-permissions-data.d.ts +0 -15
- package/dist/permissions/work-project-permissions-data.d.ts.map +1 -1
- package/dist/permissions/work-project-permissions-data.js +0 -15
- package/dist/permissions/work-project-permissions-data.js.map +1 -1
- package/dist/schemas/admin.d.ts +54 -54
- package/dist/schemas/admin.d.ts.map +1 -1
- package/dist/schemas/admin.js +37 -35
- package/dist/schemas/admin.js.map +1 -1
- package/dist/schemas/atoms.d.ts +1 -1
- package/dist/schemas/atoms.d.ts.map +1 -1
- package/dist/schemas/atoms.js +4 -4
- package/dist/schemas/atoms.js.map +1 -1
- package/dist/schemas/chat.d.ts +13 -13
- package/dist/schemas/chat.js +17 -16
- package/dist/schemas/chat.js.map +1 -1
- package/dist/schemas/commissions.d.ts +1 -1
- package/dist/schemas/commissions.d.ts.map +1 -1
- package/dist/schemas/commissions.js +3 -2
- package/dist/schemas/commissions.js.map +1 -1
- package/dist/schemas/hall-library.d.ts +11 -32
- package/dist/schemas/hall-library.d.ts.map +1 -1
- package/dist/schemas/hall-library.js +22 -35
- package/dist/schemas/hall-library.js.map +1 -1
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/ncii.d.ts +14 -14
- package/dist/schemas/ncii.d.ts.map +1 -1
- package/dist/schemas/ncii.js +14 -16
- package/dist/schemas/ncii.js.map +1 -1
- package/dist/schemas/notification.d.ts +2 -2
- package/dist/schemas/notification.d.ts.map +1 -1
- package/dist/schemas/notification.js +14 -11
- package/dist/schemas/notification.js.map +1 -1
- package/dist/schemas/payments.d.ts +1 -1
- package/dist/schemas/payments.d.ts.map +1 -1
- package/dist/schemas/payments.js +3 -1
- package/dist/schemas/payments.js.map +1 -1
- package/dist/schemas/public-documents.d.ts +18 -18
- package/dist/schemas/safety.d.ts +9 -5
- package/dist/schemas/safety.d.ts.map +1 -1
- package/dist/schemas/safety.js +13 -7
- package/dist/schemas/safety.js.map +1 -1
- package/dist/schemas/social.d.ts +1 -1
- package/dist/schemas/social.d.ts.map +1 -1
- package/dist/schemas/social.js +2 -3
- package/dist/schemas/social.js.map +1 -1
- package/dist/schemas/text-field.d.ts +12 -0
- package/dist/schemas/text-field.d.ts.map +1 -0
- package/dist/schemas/text-field.js +20 -0
- package/dist/schemas/text-field.js.map +1 -0
- package/dist/schemas/users.d.ts +9 -9
- package/dist/schemas/users.d.ts.map +1 -1
- package/dist/schemas/users.js +9 -11
- package/dist/schemas/users.js.map +1 -1
- package/dist/schemas/utility.d.ts +4 -4
- package/dist/schemas/utility.d.ts.map +1 -1
- package/dist/schemas/utility.js +11 -11
- package/dist/schemas/utility.js.map +1 -1
- package/dist/schemas/work-project-management.d.ts +37 -30
- package/dist/schemas/work-project-management.d.ts.map +1 -1
- package/dist/schemas/work-project-management.js +47 -46
- package/dist/schemas/work-project-management.js.map +1 -1
- package/dist/types/audit.d.ts +1 -1
- package/dist/types/audit.d.ts.map +1 -1
- package/dist/types/audit.js.map +1 -1
- package/dist/upload-variables/apply-to-commission-variables.d.ts +1 -1
- package/dist/upload-variables/apply-to-commission-variables.d.ts.map +1 -1
- package/dist/upload-variables/apply-to-commission-variables.js +3 -2
- package/dist/upload-variables/apply-to-commission-variables.js.map +1 -1
- package/dist/upload-variables/create-admin-audition-variables.d.ts +4 -4
- package/dist/upload-variables/create-admin-audition-variables.js +5 -3
- package/dist/upload-variables/create-admin-audition-variables.js.map +1 -1
- package/dist/upload-variables/create-commission-variables.d.ts +2 -2
- package/dist/upload-variables/create-commission-variables.d.ts.map +1 -1
- package/dist/upload-variables/create-commission-variables.js +4 -3
- package/dist/upload-variables/create-commission-variables.js.map +1 -1
- package/dist/upload-variables/create-work-project-audition-variables.d.ts +2 -2
- package/dist/upload-variables/create-work-project-audition-variables.js +5 -3
- package/dist/upload-variables/create-work-project-audition-variables.js.map +1 -1
- package/dist/upload-variables/square-streetz-post-variables.d.ts +1 -1
- package/dist/upload-variables/square-streetz-post-variables.d.ts.map +1 -1
- package/dist/upload-variables/square-streetz-post-variables.js +2 -3
- package/dist/upload-variables/square-streetz-post-variables.js.map +1 -1
- package/dist/utils/hall-content.d.ts +10 -3
- package/dist/utils/hall-content.d.ts.map +1 -1
- package/dist/utils/hall-content.js +22 -13
- package/dist/utils/hall-content.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/text-field.d.ts +17 -0
- package/dist/utils/text-field.d.ts.map +1 -0
- package/dist/utils/text-field.js +36 -0
- package/dist/utils/text-field.js.map +1 -0
- package/dist/utils/work-publish-readiness.d.ts +69 -0
- package/dist/utils/work-publish-readiness.d.ts.map +1 -0
- package/dist/utils/work-publish-readiness.js +80 -0
- package/dist/utils/work-publish-readiness.js.map +1 -0
- package/dist/utils/work-realm-name.d.ts +8 -0
- package/dist/utils/work-realm-name.d.ts.map +1 -0
- package/dist/utils/work-realm-name.js +12 -0
- package/dist/utils/work-realm-name.js.map +1 -0
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business-work-project.js","sourceRoot":"","sources":["../../src/constants/business-work-project.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,oEAAoE;AACpE,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAElD,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,4CAA4C;AAE5C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAEjD;uFACuF;AACvF,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAExD,2CAA2C;AAC3C,wFAAwF;AACxF,yFAAyF;AACzF,kFAAkF;AAElF,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AACzE,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAC;AAErF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC;AAEzE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC;AAErE,qEAAqE;AACrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAa,CAAC,WAAW,CAAC,uBAAuB,CAAC;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAEzD,
|
|
1
|
+
{"version":3,"file":"business-work-project.js","sourceRoot":"","sources":["../../src/constants/business-work-project.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,oEAAoE;AACpE,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAElD,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C,4CAA4C;AAE5C,8CAA8C;AAC9C,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAEjD;uFACuF;AACvF,MAAM,CAAC,MAAM,mCAAmC,GAAG,IAAI,CAAC;AAExD,2CAA2C;AAC3C,wFAAwF;AACxF,yFAAyF;AACzF,kFAAkF;AAElF,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AACzE,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAC;AAErF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC,WAAW,CAAC,cAAc,CAAC;AAEzE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC;AAErE,qEAAqE;AACrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAa,CAAC,WAAW,CAAC,uBAAuB,CAAC;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,CAAC;AAEzD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAC,WAAW,CAAC,uBAAuB,CAAC;AAE5F,+DAA+D;AAC/D,kGAAkG;AAClG,iFAAiF;AAEjF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC;AAElE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,6BAA6B,CAAC;AAEtE;wFACwF;AACxF,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAC,WAAW,CAAC,uBAAuB,CAAC;AAE5F,qFAAqF;AACrF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC;AAEvE,wCAAwC;AACxC,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAC;AAEzE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAC;AAErF,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC;AAEvF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,mCAAmC,GAAG,6BAA6B,CAAC;AAEjF,iDAAiD;AACjD,MAAM,CAAC,MAAM,yCAAyC,GAAG,mCAAmC,CAAC","sourcesContent":["// WorkProject + subtype (Tales / Tunes / Television) business-rule constants.\nimport { ACTIVE_LIMITS } from './app-mode.js';\n\n/** The absolute maximum number of stakes a workProject can have. */\nexport const MAX_WORK_PROJECT_STAKE_SHARES = 1000;\n\n/** Maximum number of active guildmates per work project. Mode-varied. */\nexport const MAX_GUILD_SIZE = ACTIVE_LIMITS.workProject.maxGuildSize;\n\n/**\n * Stake shares minted to the realm's founding-Work holder when a Work is\n * created into an EXISTING public realm. Counts toward MAX_WORK_PROJECT_STAKE_SHARES.\n */\nexport const EXISTING_REALM_STAKE_SHARES = 75;\n\n// --- WorkProject Titles & Descriptions ---\n\n/** Maximum length for a workProject title. */\nexport const MAX_WORK_PROJECT_TITLE_LENGTH = 150;\n\n/** Maximum length for a workProject description (DJ ruling 2026-07-13: 1000 — room for\n * a real paragraph; browse cards render a truncated excerpt with click-to-expand). */\nexport const MAX_WORK_PROJECT_DESCRIPTION_LENGTH = 1000;\n\n// --- Work Realm titles & descriptions ---\n// Aliases of the workProject pair — realms share the platform title/description limits.\n// NOTE: a realm working title doubles as the `reservedRealmNames/{UPPER(title)}` doc ID,\n// so realmWorkingTitleSchema layers doc-ID character rules on top of this length.\n\nexport const MAX_WORK_REALM_TITLE_LENGTH = MAX_WORK_PROJECT_TITLE_LENGTH;\nexport const MAX_WORK_REALM_DESCRIPTION_LENGTH = MAX_WORK_PROJECT_DESCRIPTION_LENGTH;\n\n/** Maximum length for a work-project file-folder name. */\nexport const MAX_FILE_FOLDER_NAME_LENGTH = 100;\n\n/** Maximum number of file folders per workProject. Mode-varied. */\nexport const MAX_FILE_FOLDERS = ACTIVE_LIMITS.workProject.maxFileFolders;\n\n/** Maximum number of files across a workProject's folders. Mode-varied. */\nexport const MAX_WORK_FILES = ACTIVE_LIMITS.workProject.maxWorkFiles;\n\n/** Maximum total file-storage bytes per workProject. Mode-varied. */\nexport const MAX_WORK_FILE_STORAGE_BYTES = ACTIVE_LIMITS.workProject.maxWorkFileStorageBytes;\n\n/**\n * Maximum number of shared-file folders a Realm steward may create\n * (`workRealms/{workRealmId}/realmFileFolders`).\n *\n * Bounded on purpose: the folder collection is read WHOLE by the gallery projection, by the\n * folder-cap check, and by the case-insensitive name-uniqueness check, so an unbounded\n * collection would turn each of those into an unbounded read. 30 is generous for organizing\n * one Realm's shared pool (Realm folders have no access lists — they are purely\n * organizational) while keeping every one of those reads a single bounded page.\n *\n * NOT mode-varied: unlike the Work-side caps this is an organizational bound on steward\n * housekeeping, not a charter-vs-full consumption allowance.\n *\n * Realm folder NAMES reuse MAX_FILE_FOLDER_NAME_LENGTH above — one folder-name rule\n * platform-wide; there is deliberately no second realm-specific length.\n */\nexport const MAX_REALM_FILE_FOLDERS = 30;\n\n/**\n * Maximum length of a realm-file promotion `requestId`.\n *\n * This is the FIRST client-minted, client-CHOSEN id in the set that is durably PERSISTED:\n * it lands on the `mediaAssets` doc, in the audit payload, in notification metadata, and in\n * the notification aggregation key. Every one of those is an attacker-reachable write\n * amplification if the id is unbounded, so the bound belongs on the atom, not on each\n * call site.\n *\n * 64 is the smallest bound that comfortably fits what the client actually mints — a\n * `crypto.randomUUID()` is 36 characters — while leaving room for a prefixed variant. It is\n * deliberately TIGHTER than the 200-character opaque-id cap the admin chat-moderation\n * requestIds use (`schemas/chat.ts`): those carry composite operator-supplied ids, whereas\n * this one is always a generated UUID.\n */\nexport const MAX_REALM_FILE_SHARE_REQUEST_ID_LENGTH = 64;\n\n/** Maximum number of auditions a single workProject can have open at once. Mode-varied. */\nexport const MAX_WORK_PROJECT_AUDITIONS = ACTIVE_LIMITS.workProject.maxWorkProjectAuditions;\n\n// --- WorkProject sub-items (chapters / tracks / episodes) ---\n// Length aliases — kept as named exports so call sites read clearly. The Tale / Tune / Television\n// section itself has no text: the Work's own title and description are its text.\n\n/** Maximum number of chapters a Tale can have. Mode-varied. */\nexport const MAX_CHAPTERS = ACTIVE_LIMITS.workProject.maxChapters;\n\n/** Maximum length for a chapter title. */\nexport const MAX_CHAPTER_TITLE_LENGTH = MAX_WORK_PROJECT_TITLE_LENGTH;\n\n/** Maximum length for chapter body content. Mode-varied (charter 30k / full 100k) —\n * the ONE mode-varied text limit (DJ 2026-07-13); the flip raises it automatically. */\nexport const MAX_CHAPTER_CONTENT_LENGTH = ACTIVE_LIMITS.workProject.maxChapterContentLength;\n\n/** Chapter-body EXCERPT length for preview rows (hall reading view chapter list). */\nexport const CHAPTER_EXCERPT_LENGTH = 180;\n\n/** Maximum number of tracks a Tunes workProject can have. Mode-varied. */\nexport const MAX_TUNE_TRACKS = ACTIVE_LIMITS.workProject.maxTuneTracks;\n\n/** Maximum length for a track title. */\nexport const MAX_TUNE_TRACK_TITLE_LENGTH = MAX_WORK_PROJECT_TITLE_LENGTH;\n\n/** Maximum length for a track description. */\nexport const MAX_TUNE_TRACK_DESCRIPTION_LENGTH = MAX_WORK_PROJECT_DESCRIPTION_LENGTH;\n\n/** Maximum number of episodes a Television workProject can have. Mode-varied. */\nexport const MAX_TELEVISION_EPISODES = ACTIVE_LIMITS.workProject.maxTelevisionEpisodes;\n\n/** Maximum length for an episode title. */\nexport const MAX_TELEVISION_EPISODE_TITLE_LENGTH = MAX_WORK_PROJECT_TITLE_LENGTH;\n\n/** Maximum length for an episode description. */\nexport const MAX_TELEVISION_EPISODE_DESCRIPTION_LENGTH = MAX_WORK_PROJECT_DESCRIPTION_LENGTH;\n"]}
|
|
@@ -9,4 +9,9 @@ export interface CenterStageRoom {
|
|
|
9
9
|
}
|
|
10
10
|
/** The three rooms, in revolve order. Index 0 (The Hall) opens in the spotlight. */
|
|
11
11
|
export declare const CENTER_STAGE_ROOMS: readonly CenterStageRoom[];
|
|
12
|
+
/**
|
|
13
|
+
* The label of the button that enters a room: "Enter the Hall ›", "Enter the Square ›",
|
|
14
|
+
* "Enter the Audition Stage ›" — the room's name, its leading "The" lowercased into the phrase.
|
|
15
|
+
*/
|
|
16
|
+
export declare function centerStageRoomEnterLabel(room: Pick<CenterStageRoom, 'name'>): string;
|
|
12
17
|
//# sourceMappingURL=center-stage-rooms.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"center-stage-rooms.d.ts","sourceRoot":"","sources":["../../src/constants/center-stage-rooms.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAyBxD,CAAC"}
|
|
1
|
+
{"version":3,"file":"center-stage-rooms.d.ts","sourceRoot":"","sources":["../../src/constants/center-stage-rooms.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAyBxD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,MAAM,CAErF"}
|
|
@@ -29,4 +29,11 @@ export const CENTER_STAGE_ROOMS = [
|
|
|
29
29
|
description: 'Artisans post auditions for their works, and the community votes on the entries. Cast your vote — one per audition, switch it anytime.',
|
|
30
30
|
},
|
|
31
31
|
];
|
|
32
|
+
/**
|
|
33
|
+
* The label of the button that enters a room: "Enter the Hall ›", "Enter the Square ›",
|
|
34
|
+
* "Enter the Audition Stage ›" — the room's name, its leading "The" lowercased into the phrase.
|
|
35
|
+
*/
|
|
36
|
+
export function centerStageRoomEnterLabel(room) {
|
|
37
|
+
return `Enter the ${room.name.replace(/^The /, '')} ›`;
|
|
38
|
+
}
|
|
32
39
|
//# sourceMappingURL=center-stage-rooms.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"center-stage-rooms.js","sourceRoot":"","sources":["../../src/constants/center-stage-rooms.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,iFAAiF;AACjF,0EAA0E;AAC1E,gFAAgF;AAChF,iDAAiD;AACjD,+EAA+E;AAa/E,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D;QACE,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,kJAAkJ;KACrJ;IACD;QACE,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,4IAA4I;KAC/I;IACD;QACE,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,wIAAwI;KAC3I;CACF,CAAC","sourcesContent":["// ============================================================================\n// CENTER STAGE ROOMS — the pure, durable definitions of the three revolving\n// landing/registration-tour rooms (ARCH-102). Moved here VERBATIM from the app's\n// `center-stage.tsx`. Pure data only: the emblems (`ROOM_EMBLEMS`), React\n// components, engraving, and stage layout stay app-owned. Each room's `href` is\n// the app route the spotlit poster navigates to.\n// ============================================================================\n\nexport type CenterStageRoomKey = 'hall' | 'square' | 'audition';\n\nexport interface CenterStageRoom {\n readonly key: CenterStageRoomKey;\n readonly name: string;\n readonly verb: string;\n readonly href: string;\n /** One-breath description shown on the audience placard (same words the tour uses). */\n readonly description: string;\n}\n\n/** The three rooms, in revolve order. Index 0 (The Hall) opens in the spotlight. */\nexport const CENTER_STAGE_ROOMS: readonly CenterStageRoom[] = [\n {\n key: 'hall',\n name: 'The Hall',\n verb: 'Watch, read & listen',\n href: '/hall-library',\n description:\n 'Home to the finished works — read original Tales, listen to Tunes, and watch Television, all made by real people and reviewed before it goes up.',\n },\n {\n key: 'square',\n name: 'The Square',\n verb: \"See what's happening\",\n href: '/square-streetz',\n description:\n 'The community feed. Post your news, follow artisans you admire, and watch the Town Crier announce what’s happening across TTT Productions.',\n },\n {\n key: 'audition',\n name: 'The Audition Stage',\n verb: 'Cast your vote',\n href: '/audition-board',\n description:\n 'Artisans post auditions for their works, and the community votes on the entries. Cast your vote — one per audition, switch it anytime.',\n },\n];\n"]}
|
|
1
|
+
{"version":3,"file":"center-stage-rooms.js","sourceRoot":"","sources":["../../src/constants/center-stage-rooms.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,iFAAiF;AACjF,0EAA0E;AAC1E,gFAAgF;AAChF,iDAAiD;AACjD,+EAA+E;AAa/E,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D;QACE,GAAG,EAAE,MAAM;QACX,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,kJAAkJ;KACrJ;IACD;QACE,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,4IAA4I;KAC/I;IACD;QACE,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,wIAAwI;KAC3I;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAmC;IAC3E,OAAO,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC;AACzD,CAAC","sourcesContent":["// ============================================================================\n// CENTER STAGE ROOMS — the pure, durable definitions of the three revolving\n// landing/registration-tour rooms (ARCH-102). Moved here VERBATIM from the app's\n// `center-stage.tsx`. Pure data only: the emblems (`ROOM_EMBLEMS`), React\n// components, engraving, and stage layout stay app-owned. Each room's `href` is\n// the app route the spotlit poster navigates to.\n// ============================================================================\n\nexport type CenterStageRoomKey = 'hall' | 'square' | 'audition';\n\nexport interface CenterStageRoom {\n readonly key: CenterStageRoomKey;\n readonly name: string;\n readonly verb: string;\n readonly href: string;\n /** One-breath description shown on the audience placard (same words the tour uses). */\n readonly description: string;\n}\n\n/** The three rooms, in revolve order. Index 0 (The Hall) opens in the spotlight. */\nexport const CENTER_STAGE_ROOMS: readonly CenterStageRoom[] = [\n {\n key: 'hall',\n name: 'The Hall',\n verb: 'Watch, read & listen',\n href: '/hall-library',\n description:\n 'Home to the finished works — read original Tales, listen to Tunes, and watch Television, all made by real people and reviewed before it goes up.',\n },\n {\n key: 'square',\n name: 'The Square',\n verb: \"See what's happening\",\n href: '/square-streetz',\n description:\n 'The community feed. Post your news, follow artisans you admire, and watch the Town Crier announce what’s happening across TTT Productions.',\n },\n {\n key: 'audition',\n name: 'The Audition Stage',\n verb: 'Cast your vote',\n href: '/audition-board',\n description:\n 'Artisans post auditions for their works, and the community votes on the entries. Cast your vote — one per audition, switch it anytime.',\n },\n];\n\n/**\n * The label of the button that enters a room: \"Enter the Hall ›\", \"Enter the Square ›\",\n * \"Enter the Audition Stage ›\" — the room's name, its leading \"The\" lowercased into the phrase.\n */\nexport function centerStageRoomEnterLabel(room: Pick<CenterStageRoom, 'name'>): string {\n return `Enter the ${room.name.replace(/^The /, '')} ›`;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
|
package/dist/constants/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC","sourcesContent":["export * from './analytics.js';\nexport * from './app-mode.js';\nexport * from './business.js';\nexport * from './chat.js';\nexport * from './conversation-files.js';\nexport * from './moderation.js';\nexport * from './options.js';\nexport * from './admin-labels.js';\nexport * from './craft-skill-statements.js';\nexport * from './publish-attestations.js';\nexport * from './pledge-and-bouquet-copy.js';\nexport * from './public-documents.js';\nexport * from './legal-review-notice-state.js';\nexport * from './legal-review-notice.js';\nexport * from './safety-confirmation-phrases.js';\nexport * from './safety-telemetry-patterns.js';\nexport * from './safety-active-statuses.js';\nexport * from './telemetry-content-policy.js';\nexport * from './pagination.js';\nexport * from './release-flags.js';\nexport * from './retention.js';\nexport * from './scheduled-jobs.js';\nexport * from './media-download.js';\nexport * from './media-processing.js';\nexport * from './storage-keys.js';\nexport * from './company-mascots.js';\nexport * from './center-stage-rooms.js';\nexport * from './audition-deadlines.js';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC","sourcesContent":["export * from './analytics.js';\nexport * from './app-mode.js';\nexport * from './business.js';\nexport * from './text-fields.js';\nexport * from './chat.js';\nexport * from './conversation-files.js';\nexport * from './moderation.js';\nexport * from './options.js';\nexport * from './admin-labels.js';\nexport * from './craft-skill-statements.js';\nexport * from './publish-attestations.js';\nexport * from './pledge-and-bouquet-copy.js';\nexport * from './public-documents.js';\nexport * from './legal-review-notice-state.js';\nexport * from './legal-review-notice.js';\nexport * from './safety-confirmation-phrases.js';\nexport * from './safety-telemetry-patterns.js';\nexport * from './safety-active-statuses.js';\nexport * from './telemetry-content-policy.js';\nexport * from './pagination.js';\nexport * from './release-flags.js';\nexport * from './retention.js';\nexport * from './scheduled-jobs.js';\nexport * from './media-download.js';\nexport * from './media-processing.js';\nexport * from './storage-keys.js';\nexport * from './company-mascots.js';\nexport * from './center-stage-rooms.js';\nexport * from './audition-deadlines.js';\n"]}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** localStorage key holding the path the user wanted before being sent to sign in or register. */
|
|
2
2
|
export declare const REDIRECT_PATH_KEY = "redirectPath";
|
|
3
3
|
/** localStorage key holding the last-seen app version (used by version-gate component). */
|
|
4
4
|
export declare const LS_VERSION_KEY = "ttt-app-version";
|
|
5
5
|
/** sessionStorage key marking that a version-mismatch reload was already attempted. */
|
|
6
6
|
export declare const SS_RELOAD_ATTEMPTED_KEY = "ttt-version-reload-attempted";
|
|
7
|
+
/** localStorage key the theme provider saves the chosen theme under. Byte-stable with
|
|
8
|
+
* next-themes' own default key, so a theme saved before the key was named keeps applying. */
|
|
9
|
+
export declare const THEME_STORAGE_KEY = "theme";
|
|
7
10
|
/** localStorage key holding the user's chosen dock companion id ('bill' | 'kit'). */
|
|
8
11
|
export declare const COMPANION_STORAGE_KEY = "ttt-company-companion";
|
|
9
12
|
/** localStorage key: 'true' when the user has hidden the dock companion entirely. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-keys.d.ts","sourceRoot":"","sources":["../../src/constants/storage-keys.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"storage-keys.d.ts","sourceRoot":"","sources":["../../src/constants/storage-keys.ts"],"names":[],"mappings":"AAEA,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,2FAA2F;AAC3F,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,iCAAiC,CAAC;AAEtE;8FAC8F;AAC9F,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAMzC,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D;uCACuC;AACvC,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;AAEnE;sEACsE;AACtE,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAEjE,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,iCAAiC,CAAC;AAErE;0CAC0C;AAC1C,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAS/D;8EAC8E;AAC9E,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAE/D;0FAC0F;AAC1F,eAAO,MAAM,2BAA2B,8BAA8B,CAAC;AAQvE,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAErD;+FAC+F;AAC/F,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAS7D;;;2CAG2C;AAC3C,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAe/D;sDACsD;AACtD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;4FAE4F;AAC5F,eAAO,MAAM,8BAA8B,iCAAiC,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
// Well-known keys used in browser sessionStorage / localStorage.
|
|
2
|
-
/**
|
|
2
|
+
/** localStorage key holding the path the user wanted before being sent to sign in or register. */
|
|
3
3
|
export const REDIRECT_PATH_KEY = 'redirectPath';
|
|
4
4
|
/** localStorage key holding the last-seen app version (used by version-gate component). */
|
|
5
5
|
export const LS_VERSION_KEY = 'ttt-app-version';
|
|
6
6
|
/** sessionStorage key marking that a version-mismatch reload was already attempted. */
|
|
7
7
|
export const SS_RELOAD_ATTEMPTED_KEY = 'ttt-version-reload-attempted';
|
|
8
|
+
/** localStorage key the theme provider saves the chosen theme under. Byte-stable with
|
|
9
|
+
* next-themes' own default key, so a theme saved before the key was named keeps applying. */
|
|
10
|
+
export const THEME_STORAGE_KEY = 'theme';
|
|
8
11
|
// --- Company / Green Room dock companion (device-local v1 stores) ---
|
|
9
12
|
// Values are byte-stable for backward compatibility — the historical 'bill'
|
|
10
13
|
// naming predates the Company rename and MUST NOT change.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-keys.js","sourceRoot":"","sources":["../../src/constants/storage-keys.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,
|
|
1
|
+
{"version":3,"file":"storage-keys.js","sourceRoot":"","sources":["../../src/constants/storage-keys.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAEjE,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAEhD,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG,8BAA8B,CAAC;AAEtE;8FAC8F;AAC9F,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC,uEAAuE;AACvE,4EAA4E;AAC5E,0DAA0D;AAE1D,qFAAqF;AACrF,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAE7D,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE3D;uCACuC;AACvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAEnE;sEACsE;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AAEjE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,8BAA8B,CAAC;AAErE;0CAC0C;AAC1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAE/D,6DAA6D;AAC7D,yFAAyF;AACzF,0FAA0F;AAC1F,wFAAwF;AACxF,2FAA2F;AAC3F,8DAA8D;AAE9D;8EAC8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAC;AAE/D;0FAC0F;AAC1F,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;AAEvE,kDAAkD;AAClD,mFAAmF;AACnF,+FAA+F;AAC/F,+FAA+F;AAC/F,uEAAuE;AAEvE,yFAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAErD;+FAC+F;AAC/F,MAAM,CAAC,MAAM,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D,yDAAyD;AACzD,8FAA8F;AAC9F,qFAAqF;AACrF,iGAAiG;AACjG,sFAAsF;AACtF,kFAAkF;AAElF;;;2CAG2C;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,oBAAoB,CAAC;AAE/D,6FAA6F;AAC7F,oGAAoG;AACpG,mGAAmG;AACnG,+FAA+F;AAC/F,mGAAmG;AACnG,oGAAoG;AACpG,oGAAoG;AACpG,EAAE;AACF,iGAAiG;AACjG,+FAA+F;AAC/F,mGAAmG;AACnG,yDAAyD;AAEzD;sDACsD;AACtD,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,OAAO,yBAAyB,GAAG,EAAE,CAAC;AACxC,CAAC;AAED;;4FAE4F;AAC5F,MAAM,CAAC,MAAM,8BAA8B,GAAG,8BAA8B,CAAC","sourcesContent":["// Well-known keys used in browser sessionStorage / localStorage.\n\n/** localStorage key holding the path the user wanted before being sent to sign in or register. */\nexport const REDIRECT_PATH_KEY = 'redirectPath';\n\n/** localStorage key holding the last-seen app version (used by version-gate component). */\nexport const LS_VERSION_KEY = 'ttt-app-version';\n\n/** sessionStorage key marking that a version-mismatch reload was already attempted. */\nexport const SS_RELOAD_ATTEMPTED_KEY = 'ttt-version-reload-attempted';\n\n/** localStorage key the theme provider saves the chosen theme under. Byte-stable with\n * next-themes' own default key, so a theme saved before the key was named keeps applying. */\nexport const THEME_STORAGE_KEY = 'theme';\n\n// --- Company / Green Room dock companion (device-local v1 stores) ---\n// Values are byte-stable for backward compatibility — the historical 'bill'\n// naming predates the Company rename and MUST NOT change.\n\n/** localStorage key holding the user's chosen dock companion id ('bill' | 'kit'). */\nexport const COMPANION_STORAGE_KEY = 'ttt-company-companion';\n\n/** localStorage key: 'true' when the user has hidden the dock companion entirely. */\nexport const MASCOT_HIDDEN_STORAGE_KEY = 'ttt-bill-hidden';\n\n/** localStorage key holding the last-shown dock-bubble line index (avoids an\n * immediate repeat across visits). */\nexport const MASCOT_LINE_INDEX_STORAGE_KEY = 'ttt-bill-line-index';\n\n/** Same-tab window event dispatched when MASCOT_HIDDEN_STORAGE_KEY changes\n * (localStorage 'storage' events do not fire in the writing tab). */\nexport const MASCOT_HIDDEN_CHANGE_EVENT = 'ttt-bill-pref-change';\n\n/** Same-tab window event dispatched when COMPANION_STORAGE_KEY changes. */\nexport const COMPANION_CHANGE_EVENT = 'ttt-company-companion-change';\n\n/** Same-tab window event dispatched when the transient dock-puppet pose changes\n * (in-memory store; never persisted). */\nexport const MASCOT_POSE_CHANGE_EVENT = 'ttt-bill-pose-change';\n\n// --- Manual reduced-motion House control (device-local) ---\n// Independent of the companion visibility store above: reducing motion does not hide the\n// companion, and hiding the companion does not change motion. Effective reduced motion is\n// (the device's prefers-reduced-motion request) OR (this manual preference); the device\n// request always wins. Device-local BY DESIGN — never mirrored to Firestore or the private\n// user document (unlike the account-durable site-tour state).\n\n/** localStorage key: 'true' when the member has manually enabled TTT's app-wide\n * reduced-motion preference (the \"Motion: Full / Reduced\" House control). */\nexport const REDUCED_MOTION_STORAGE_KEY = 'ttt-reduced-motion';\n\n/** Same-tab window event dispatched when REDUCED_MOTION_STORAGE_KEY changes (localStorage\n * 'storage' events do not fire in the writing tab), mirroring COMPANION_CHANGE_EVENT. */\nexport const REDUCED_MOTION_CHANGE_EVENT = 'ttt-reduced-motion-change';\n\n// --- Large-text House control (device-local) ---\n// The root font-size scale behind the House \"Text size\" control. Same device-local\n// useSyncExternalStore shape as the reduced-motion control above — never mirrored to Firestore\n// or the private user document. The <html> CSS hook it applies stays app-side next to the rule\n// that defines it (as the reduced-motion store's root attribute does).\n\n/** localStorage key holding the member's text-size preference ('standard' | 'large'). */\nexport const TEXT_SIZE_STORAGE_KEY = 'ttt-text-size';\n\n/** Same-tab window event dispatched when TEXT_SIZE_STORAGE_KEY changes (localStorage\n * 'storage' events do not fire in the writing tab), mirroring REDUCED_MOTION_CHANGE_EVENT. */\nexport const TEXT_SIZE_CHANGE_EVENT = 'ttt-text-size-change';\n\n// --- GDPR cookie / analytics consent (device-local) ---\n// Device-local like the House controls above — consent is a per-device choice, never mirrored\n// to Firestore or the private user document. The app persists the same value in BOTH\n// localStorage (under this key) and a first-party cookie of the SAME name, so SSR/middleware can\n// read it; both derive from this one declaration. Values are the ConsentState strings\n// ('granted' | 'denied'); ABSENT means un-chosen (opt-in default, analytics OFF).\n\n/** localStorage key — and the matching first-party cookie name — holding the visitor's\n * cookie/analytics consent choice. The underscore spelling is byte-stable for backward\n * compatibility with already-stored values and MUST NOT be re-styled to match the\n * hyphenated House-control keys above. */\nexport const COOKIE_CONSENT_STORAGE_KEY = 'ttt_cookie_consent';\n\n// --- First-visit site-tour pending preference (the ONE sanctioned optimistic-hide slot) ---\n// Unlike the House controls above, site-tour state is ACCOUNT-DURABLE: `privateData/{uid}.siteTour`\n// stays the sole authority and the `updateSiteTourPreference` callable stays its sole writer. This\n// key holds a SINGLE uid-scoped entry recording a choice the member has already made but whose\n// server write has not been confirmed yet, so the overlay can close instantly and the write can be\n// replayed on the next boot. It is a one-entry durable retry SLOT, never a cache, mirror, or second\n// source of eligibility — a member with no pending entry is evaluated purely from the server state.\n//\n// UID-SCOPED BY CONSTRUCTION: a browser-global key would let user A's choice suppress (or replay\n// into) the tour for user B after a sign-out/sign-in on the same device. The stored entry ALSO\n// carries its own `uid` (SiteTourPendingPreferenceSchema, schemas/users.ts) and must match the key\n// owner before it may affect eligibility or be replayed.\n\n/** localStorage key holding the caller's single unconfirmed site-tour choice. Scoped by the\n * AUTHENTICATED uid — never a browser-global key. */\nexport function siteTourPendingStorageKey(uid: string): string {\n return `ttt-site-tour-pending:${uid}`;\n}\n\n/** Same-tab window event dispatched when a `siteTourPendingStorageKey(uid)` entry is written or\n * removed (localStorage 'storage' events do not fire in the writing tab), mirroring\n * TEXT_SIZE_CHANGE_EVENT. Cross-tab propagation still rides the native 'storage' event. */\nexport const SITE_TOUR_PENDING_CHANGE_EVENT = 'ttt-site-tour-pending-change';\n"]}
|