@ttt-productions/ttt-core 0.79.106 → 0.79.108
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.
|
@@ -3,6 +3,8 @@ import type { LegalReviewNoticeSegment } from './legal-review-notice.js';
|
|
|
3
3
|
export type MemberAgreementWording = readonly LegalReviewNoticeSegment[];
|
|
4
4
|
/** Names the registration wording: the clean-content box and the Terms box. */
|
|
5
5
|
export declare const REGISTRATION_AGREEMENTS_VERSION = 1;
|
|
6
|
+
/** Shown above the registration boxes. A notice, not an agreement — nothing is ticked for it. */
|
|
7
|
+
export declare const REGISTRATION_CONTENT_STANDARD_NOTICE = "At launch, TTT Productions keeps everything clean: no nudity, sexual, or explicit content. Profanity and mature themes are allowed. Down the road we aspire to support clearly labeled mature content \u2014 think R-rated film, never pornographic.";
|
|
6
8
|
/** The content box. Profanity and mature themes are allowed; nudity and sexual content are not. */
|
|
7
9
|
export declare const REGISTRATION_CLEAN_CONTENT_AGREEMENT: MemberAgreementWording;
|
|
8
10
|
/** Names the become-an-Artisan wording: the intro, the location question, and every box. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member-agreements.d.ts","sourceRoot":"","sources":["../../src/constants/member-agreements.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAMzE,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,GAAG,SAAS,wBAAwB,EAAE,CAAC;AAczE,+EAA+E;AAC/E,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,mGAAmG;AACnG,eAAO,MAAM,oCAAoC,EAAE,sBAElD,CAAC;AAIF,4FAA4F;AAC5F,eAAO,MAAM,kCAAkC,IAAI,CAAC;AAEpD,eAAO,MAAM,4BAA4B,sBAAsB,CAAC;AAEhE,eAAO,MAAM,4BAA4B,2GACiE,CAAC;AAE3G,uGAAuG;AACvG,eAAO,MAAM,kCAAkC,sCAAsC,CAAC;AAEtF,uEAAuE;AACvE,eAAO,MAAM,6BAA6B,0GAMhC,CAAC;AACX,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,yBAAyB,EAAE,sBAAsB,CAe9F,CAAC;AAIJ,wCAAwC;AACxC,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD,eAAO,MAAM,mCAAmC,6BAA6B,CAAC;AAE9E,eAAO,MAAM,6BAA6B,EAAE,sBAM3C,CAAC;AAIF,gFAAgF;AAChF,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,oFAAoF;AACpF,eAAO,MAAM,gCAAgC,0JAC4G,CAAC;AAE1J,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,gEAK/B,CAAC;AACX,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,wBAAwB,EAAE,sBAAsB,CAkB9F,CAAC;AAIF,4CAA4C;AAC5C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,EAAE,sBAEhC,CAAC;AAIF,sDAAsD;AACtD,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD,eAAO,MAAM,mCAAmC,wBAAwB,CAAC;AAEzE,eAAO,MAAM,6BAA6B,iOACiL,CAAC;AAE5N,eAAO,MAAM,0CAA0C,iCAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"member-agreements.d.ts","sourceRoot":"","sources":["../../src/constants/member-agreements.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAMzE,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,GAAG,SAAS,wBAAwB,EAAE,CAAC;AAczE,+EAA+E;AAC/E,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,iGAAiG;AACjG,eAAO,MAAM,oCAAoC,yPACkM,CAAC;AAEpP,mGAAmG;AACnG,eAAO,MAAM,oCAAoC,EAAE,sBAElD,CAAC;AAIF,4FAA4F;AAC5F,eAAO,MAAM,kCAAkC,IAAI,CAAC;AAEpD,eAAO,MAAM,4BAA4B,sBAAsB,CAAC;AAEhE,eAAO,MAAM,4BAA4B,2GACiE,CAAC;AAE3G,uGAAuG;AACvG,eAAO,MAAM,kCAAkC,sCAAsC,CAAC;AAEtF,uEAAuE;AACvE,eAAO,MAAM,6BAA6B,0GAMhC,CAAC;AACX,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvF,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,yBAAyB,EAAE,sBAAsB,CAe9F,CAAC;AAIJ,wCAAwC;AACxC,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD,eAAO,MAAM,mCAAmC,6BAA6B,CAAC;AAE9E,eAAO,MAAM,6BAA6B,EAAE,sBAM3C,CAAC;AAIF,gFAAgF;AAChF,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,oFAAoF;AACpF,eAAO,MAAM,gCAAgC,0JAC4G,CAAC;AAE1J,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,gEAK/B,CAAC;AACX,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,wBAAwB,EAAE,sBAAsB,CAkB9F,CAAC;AAIF,4CAA4C;AAC5C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,uGAAuG;AACvG,eAAO,MAAM,kBAAkB,EAAE,sBAEhC,CAAC;AAIF,sDAAsD;AACtD,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD,eAAO,MAAM,mCAAmC,wBAAwB,CAAC;AAEzE,eAAO,MAAM,6BAA6B,iOACiL,CAAC;AAE5N,eAAO,MAAM,0CAA0C,iCAA4B,CAAC"}
|
|
@@ -26,6 +26,8 @@ const RULES_AND_AGREEMENTS_LINK = {
|
|
|
26
26
|
// ── Registration ─────────────────────────────────────────────────────────────
|
|
27
27
|
/** Names the registration wording: the clean-content box and the Terms box. */
|
|
28
28
|
export const REGISTRATION_AGREEMENTS_VERSION = 1;
|
|
29
|
+
/** Shown above the registration boxes. A notice, not an agreement — nothing is ticked for it. */
|
|
30
|
+
export const REGISTRATION_CONTENT_STANDARD_NOTICE = 'At launch, TTT Productions keeps everything clean: no nudity, sexual, or explicit content. Profanity and mature themes are allowed. Down the road we aspire to support clearly labeled mature content — think R-rated film, never pornographic.';
|
|
29
31
|
/** The content box. Profanity and mature themes are allowed; nudity and sexual content are not. */
|
|
30
32
|
export const REGISTRATION_CLEAN_CONTENT_AGREEMENT = plain("I'll keep what I share clean: no nudity, sexual, or explicit content.");
|
|
31
33
|
// ── Become an Artisan ────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member-agreements.js","sourceRoot":"","sources":["../../src/constants/member-agreements.ts"],"names":[],"mappings":"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","sourcesContent":["// ============================================================================\n// MEMBER AGREEMENTS — the ONE home for the wording of each agreement a member ticks\n// (registration, becoming an Artisan, founding a public Realm, the first Square\n// post, a pledge, the Hall download acknowledgment) and the version naming each\n// surface's wording. Every surface renders these words verbatim. A wording change\n// bumps its surface's version: the callable behind the surface accepts only the\n// current version and records it with the acceptance, so a record always names the\n// words the member agreed to.\n//\n// Elsewhere: the registration Terms box carries the founder-notice clause, so its\n// segments live with the notice (./legal-review-notice.ts) — REGISTRATION's version\n// here covers its wording too. The Hall publish attestations live in\n// ./publish-attestations.ts, the craft statements in ./craft-skill-statements.ts.\n// ============================================================================\n\nimport { SPECIAL_DOCS } from '../paths/collections.js';\nimport { PUBLIC_DOCUMENT_LABELS } from './public-documents.js';\nimport type { LegalReviewNoticeSegment } from './legal-review-notice.js';\nimport {\n EXISTING_REALM_STAKE_SHARES,\n MAX_WORK_PROJECT_STAKE_SHARES,\n} from './business-work-project.js';\n\n/** One agreement's wording: text runs, with a public document as a link run. */\nexport type MemberAgreementWording = readonly LegalReviewNoticeSegment[];\n\nfunction plain(text: string): MemberAgreementWording {\n return [{ kind: 'text', text }];\n}\n\nconst RULES_AND_AGREEMENTS_LINK: LegalReviewNoticeSegment = {\n kind: 'link',\n label: PUBLIC_DOCUMENT_LABELS[SPECIAL_DOCS.RULES_AND_AGREEMENTS],\n target: SPECIAL_DOCS.RULES_AND_AGREEMENTS,\n};\n\n// ── Registration ─────────────────────────────────────────────────────────────\n\n/** Names the registration wording: the clean-content box and the Terms box. */\nexport const REGISTRATION_AGREEMENTS_VERSION = 1;\n\n/** The content box. Profanity and mature themes are allowed; nudity and sexual content are not. */\nexport const REGISTRATION_CLEAN_CONTENT_AGREEMENT: MemberAgreementWording = plain(\n \"I'll keep what I share clean: no nudity, sexual, or explicit content.\",\n);\n\n// ── Become an Artisan ────────────────────────────────────────────────────────\n\n/** Names the become-an-Artisan wording: the intro, the location question, and every box. */\nexport const ARTISAN_CREATOR_AGREEMENTS_VERSION = 1;\n\nexport const ARTISAN_CREATOR_DIALOG_TITLE = 'Become an Artisan';\n\nexport const ARTISAN_CREATOR_DIALOG_INTRO =\n 'Unlock Artisan tools by agreeing to the terms below. This lets you share your crafts and create Works.';\n\n/** The location question. Only Yes leads to the agreements; No leads to the regional interest list. */\nexport const ARTISAN_CREATOR_US_PERSON_QUESTION = 'Do you live in the United States?';\n\n/** The become-an-Artisan boxes, in the order the dialog shows them. */\nexport const ARTISAN_CREATOR_AGREEMENT_IDS = [\n 'realDateOfBirth',\n 'humanMadeOnly',\n 'uploadRights',\n 'rulesAndAgreements',\n 'collaborateOnline',\n] as const;\nexport type ArtisanCreatorAgreementId = (typeof ARTISAN_CREATOR_AGREEMENT_IDS)[number];\n\nexport const ARTISAN_CREATOR_AGREEMENTS: Record<ArtisanCreatorAgreementId, MemberAgreementWording> =\n {\n realDateOfBirth: plain(\"This is my real date of birth, and I'm 18 or older.\"),\n humanMadeOnly: plain(\n 'Everything I upload is human-made: no AI-generated, AI-modified, or AI-completed content.',\n ),\n uploadRights: plain(\"I'll only upload work I made or have the right to use.\"),\n rulesAndAgreements: [\n { kind: 'text', text: 'I have read and agree to the ' },\n RULES_AND_AGREEMENTS_LINK,\n { kind: 'text', text: '.' },\n ],\n collaborateOnline: plain(\n \"I'll collaborate online only. I won't use TTT to arrange meeting another member in person. In-person TTT work will only ever happen at official TTT Productions locations, and none exist yet.\",\n ),\n };\n\n// ── Founding a public Realm ──────────────────────────────────────────────────\n\n/** Names the Realm founding wording. */\nexport const WORK_REALM_FOUNDING_AGREEMENT_VERSION = 1;\n\nexport const WORK_REALM_FOUNDING_AGREEMENT_TITLE = 'Realm Creation Agreement';\n\nexport const WORK_REALM_FOUNDING_AGREEMENT: MemberAgreementWording = plain(\n 'By creating a new Realm, you agree that other Artisans may create and publish Works (Tales, ' +\n \"Tunes, Television) set within your Realm. When they do, this Realm's founding Work receives \" +\n `${EXISTING_REALM_STAKE_SHARES} of each such Work's ` +\n `${MAX_WORK_PROJECT_STAKE_SHARES.toLocaleString('en-US')} Stakes, held by the founding ` +\n \"Work's Guild — not paid to you personally.\",\n);\n\n// ── First Square post ────────────────────────────────────────────────────────\n\n/** Names the Square first-post wording: the moderation notice and every box. */\nexport const SQUARE_STREETZ_AGREEMENTS_VERSION = 1;\n\n/** Shown above the boxes. A notice, not an agreement — nothing is ticked for it. */\nexport const SQUARE_STREETZ_MODERATION_NOTICE =\n 'Before a post goes live, a banned-word list checks its text, and automated moderation scans any image or video. A post can be rejected automatically.';\n\n/** The Square first-post boxes, in the order the form shows them. */\nexport const SQUARE_STREETZ_AGREEMENT_IDS = [\n 'communityRules',\n 'respect',\n 'ownership',\n 'onTopic',\n] as const;\nexport type SquareStreetzAgreementId = (typeof SQUARE_STREETZ_AGREEMENT_IDS)[number];\n\nexport const SQUARE_STREETZ_AGREEMENTS: Record<SquareStreetzAgreementId, MemberAgreementWording> = {\n communityRules: [\n { kind: 'text', text: \"I've read the community rules on the \" },\n RULES_AND_AGREEMENTS_LINK,\n {\n kind: 'text',\n text: ' page, and I understand breaking them can get me suspended or banned.',\n },\n ],\n respect: plain(\n \"I'll treat people with respect — no bullying, harassment, or doxxing — and I won't use posts to share personal contact details or set up in-person meetups.\",\n ),\n ownership: plain(\n 'I own what I post. I give TTT a royalty-free license to host and show it here, and I let members make labeled, credited mimics of it.',\n ),\n onTopic: plain(\n 'My posts will be about TTT: its Works, crafts, Auditions, Commissions, and Artisans.',\n ),\n};\n\n// ── Pledge checkout ──────────────────────────────────────────────────────────\n\n/** Names the pledge attestation wording. */\nexport const PLEDGE_ATTESTATION_VERSION = 1;\n\n/** Pledges are readable by every registered member, so the disclosure says members, not the public. */\nexport const PLEDGE_ATTESTATION: MemberAgreementWording = plain(\n \"I confirm I'm 18 or older, and I understand my name and pledge amount will be visible to other TTT members.\",\n);\n\n// ── Hall download ────────────────────────────────────────────────────────────\n\n/** Names the Hall download acknowledgment wording. */\nexport const HALL_DOWNLOAD_ACKNOWLEDGEMENT_VERSION = 1;\n\nexport const HALL_DOWNLOAD_ACKNOWLEDGEMENT_TITLE = 'Before you download';\n\nexport const HALL_DOWNLOAD_ACKNOWLEDGEMENT =\n \"Hall downloads are for your personal, offline use only. Please don't redistribute, repost, or share downloaded files — TTT holds published Works in stewardship for the Artisans who made them and the whole community.\";\n\nexport const HALL_DOWNLOAD_ACKNOWLEDGEMENT_ACCEPT_LABEL = 'I understand — download';\n"]}
|
|
1
|
+
{"version":3,"file":"member-agreements.js","sourceRoot":"","sources":["../../src/constants/member-agreements.ts"],"names":[],"mappings":"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","sourcesContent":["// ============================================================================\n// MEMBER AGREEMENTS — the ONE home for the wording of each agreement a member ticks\n// (registration, becoming an Artisan, founding a public Realm, the first Square\n// post, a pledge, the Hall download acknowledgment) and the version naming each\n// surface's wording. Every surface renders these words verbatim. A wording change\n// bumps its surface's version: the callable behind the surface accepts only the\n// current version and records it with the acceptance, so a record always names the\n// words the member agreed to.\n//\n// Elsewhere: the registration Terms box carries the founder-notice clause, so its\n// segments live with the notice (./legal-review-notice.ts) — REGISTRATION's version\n// here covers its wording too. The Hall publish attestations live in\n// ./publish-attestations.ts, the craft statements in ./craft-skill-statements.ts.\n// ============================================================================\n\nimport { SPECIAL_DOCS } from '../paths/collections.js';\nimport { PUBLIC_DOCUMENT_LABELS } from './public-documents.js';\nimport type { LegalReviewNoticeSegment } from './legal-review-notice.js';\nimport {\n EXISTING_REALM_STAKE_SHARES,\n MAX_WORK_PROJECT_STAKE_SHARES,\n} from './business-work-project.js';\n\n/** One agreement's wording: text runs, with a public document as a link run. */\nexport type MemberAgreementWording = readonly LegalReviewNoticeSegment[];\n\nfunction plain(text: string): MemberAgreementWording {\n return [{ kind: 'text', text }];\n}\n\nconst RULES_AND_AGREEMENTS_LINK: LegalReviewNoticeSegment = {\n kind: 'link',\n label: PUBLIC_DOCUMENT_LABELS[SPECIAL_DOCS.RULES_AND_AGREEMENTS],\n target: SPECIAL_DOCS.RULES_AND_AGREEMENTS,\n};\n\n// ── Registration ─────────────────────────────────────────────────────────────\n\n/** Names the registration wording: the clean-content box and the Terms box. */\nexport const REGISTRATION_AGREEMENTS_VERSION = 1;\n\n/** Shown above the registration boxes. A notice, not an agreement — nothing is ticked for it. */\nexport const REGISTRATION_CONTENT_STANDARD_NOTICE =\n 'At launch, TTT Productions keeps everything clean: no nudity, sexual, or explicit content. Profanity and mature themes are allowed. Down the road we aspire to support clearly labeled mature content — think R-rated film, never pornographic.';\n\n/** The content box. Profanity and mature themes are allowed; nudity and sexual content are not. */\nexport const REGISTRATION_CLEAN_CONTENT_AGREEMENT: MemberAgreementWording = plain(\n \"I'll keep what I share clean: no nudity, sexual, or explicit content.\",\n);\n\n// ── Become an Artisan ────────────────────────────────────────────────────────\n\n/** Names the become-an-Artisan wording: the intro, the location question, and every box. */\nexport const ARTISAN_CREATOR_AGREEMENTS_VERSION = 1;\n\nexport const ARTISAN_CREATOR_DIALOG_TITLE = 'Become an Artisan';\n\nexport const ARTISAN_CREATOR_DIALOG_INTRO =\n 'Unlock Artisan tools by agreeing to the terms below. This lets you share your crafts and create Works.';\n\n/** The location question. Only Yes leads to the agreements; No leads to the regional interest list. */\nexport const ARTISAN_CREATOR_US_PERSON_QUESTION = 'Do you live in the United States?';\n\n/** The become-an-Artisan boxes, in the order the dialog shows them. */\nexport const ARTISAN_CREATOR_AGREEMENT_IDS = [\n 'realDateOfBirth',\n 'humanMadeOnly',\n 'uploadRights',\n 'rulesAndAgreements',\n 'collaborateOnline',\n] as const;\nexport type ArtisanCreatorAgreementId = (typeof ARTISAN_CREATOR_AGREEMENT_IDS)[number];\n\nexport const ARTISAN_CREATOR_AGREEMENTS: Record<ArtisanCreatorAgreementId, MemberAgreementWording> =\n {\n realDateOfBirth: plain(\"This is my real date of birth, and I'm 18 or older.\"),\n humanMadeOnly: plain(\n 'Everything I upload is human-made: no AI-generated, AI-modified, or AI-completed content.',\n ),\n uploadRights: plain(\"I'll only upload work I made or have the right to use.\"),\n rulesAndAgreements: [\n { kind: 'text', text: 'I have read and agree to the ' },\n RULES_AND_AGREEMENTS_LINK,\n { kind: 'text', text: '.' },\n ],\n collaborateOnline: plain(\n \"I'll collaborate online only. I won't use TTT to arrange meeting another member in person. In-person TTT work will only ever happen at official TTT Productions locations, and none exist yet.\",\n ),\n };\n\n// ── Founding a public Realm ──────────────────────────────────────────────────\n\n/** Names the Realm founding wording. */\nexport const WORK_REALM_FOUNDING_AGREEMENT_VERSION = 1;\n\nexport const WORK_REALM_FOUNDING_AGREEMENT_TITLE = 'Realm Creation Agreement';\n\nexport const WORK_REALM_FOUNDING_AGREEMENT: MemberAgreementWording = plain(\n 'By creating a new Realm, you agree that other Artisans may create and publish Works (Tales, ' +\n \"Tunes, Television) set within your Realm. When they do, this Realm's founding Work receives \" +\n `${EXISTING_REALM_STAKE_SHARES} of each such Work's ` +\n `${MAX_WORK_PROJECT_STAKE_SHARES.toLocaleString('en-US')} Stakes, held by the founding ` +\n \"Work's Guild — not paid to you personally.\",\n);\n\n// ── First Square post ────────────────────────────────────────────────────────\n\n/** Names the Square first-post wording: the moderation notice and every box. */\nexport const SQUARE_STREETZ_AGREEMENTS_VERSION = 1;\n\n/** Shown above the boxes. A notice, not an agreement — nothing is ticked for it. */\nexport const SQUARE_STREETZ_MODERATION_NOTICE =\n 'Before a post goes live, a banned-word list checks its text, and automated moderation scans any image or video. A post can be rejected automatically.';\n\n/** The Square first-post boxes, in the order the form shows them. */\nexport const SQUARE_STREETZ_AGREEMENT_IDS = [\n 'communityRules',\n 'respect',\n 'ownership',\n 'onTopic',\n] as const;\nexport type SquareStreetzAgreementId = (typeof SQUARE_STREETZ_AGREEMENT_IDS)[number];\n\nexport const SQUARE_STREETZ_AGREEMENTS: Record<SquareStreetzAgreementId, MemberAgreementWording> = {\n communityRules: [\n { kind: 'text', text: \"I've read the community rules on the \" },\n RULES_AND_AGREEMENTS_LINK,\n {\n kind: 'text',\n text: ' page, and I understand breaking them can get me suspended or banned.',\n },\n ],\n respect: plain(\n \"I'll treat people with respect — no bullying, harassment, or doxxing — and I won't use posts to share personal contact details or set up in-person meetups.\",\n ),\n ownership: plain(\n 'I own what I post. I give TTT a royalty-free license to host and show it here, and I let members make labeled, credited mimics of it.',\n ),\n onTopic: plain(\n 'My posts will be about TTT: its Works, crafts, Auditions, Commissions, and Artisans.',\n ),\n};\n\n// ── Pledge checkout ──────────────────────────────────────────────────────────\n\n/** Names the pledge attestation wording. */\nexport const PLEDGE_ATTESTATION_VERSION = 1;\n\n/** Pledges are readable by every registered member, so the disclosure says members, not the public. */\nexport const PLEDGE_ATTESTATION: MemberAgreementWording = plain(\n \"I confirm I'm 18 or older, and I understand my name and pledge amount will be visible to other TTT members.\",\n);\n\n// ── Hall download ────────────────────────────────────────────────────────────\n\n/** Names the Hall download acknowledgment wording. */\nexport const HALL_DOWNLOAD_ACKNOWLEDGEMENT_VERSION = 1;\n\nexport const HALL_DOWNLOAD_ACKNOWLEDGEMENT_TITLE = 'Before you download';\n\nexport const HALL_DOWNLOAD_ACKNOWLEDGEMENT =\n \"Hall downloads are for your personal, offline use only. Please don't redistribute, repost, or share downloaded files — TTT holds published Works in stewardship for the Artisans who made them and the whole community.\";\n\nexport const HALL_DOWNLOAD_ACKNOWLEDGEMENT_ACCEPT_LABEL = 'I understand — download';\n"]}
|