···11+{
22+ "id": "com.atproto.label.defs",
33+ "defs": {
44+ "label": {
55+ "type": "object",
66+ "required": [
77+ "src",
88+ "uri",
99+ "val",
1010+ "cts"
1111+ ],
1212+ "properties": {
1313+ "cid": {
1414+ "type": "string",
1515+ "format": "cid",
1616+ "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to."
1717+ },
1818+ "cts": {
1919+ "type": "string",
2020+ "format": "datetime",
2121+ "description": "Timestamp when this label was created."
2222+ },
2323+ "exp": {
2424+ "type": "string",
2525+ "format": "datetime",
2626+ "description": "Timestamp at which this label expires (no longer applies)."
2727+ },
2828+ "neg": {
2929+ "type": "boolean",
3030+ "description": "If true, this is a negation label, overwriting a previous label."
3131+ },
3232+ "sig": {
3333+ "type": "bytes",
3434+ "description": "Signature of dag-cbor encoded label."
3535+ },
3636+ "src": {
3737+ "type": "string",
3838+ "format": "did",
3939+ "description": "DID of the actor who created this label."
4040+ },
4141+ "uri": {
4242+ "type": "string",
4343+ "format": "uri",
4444+ "description": "AT URI of the record, repository (account), or other resource that this label applies to."
4545+ },
4646+ "val": {
4747+ "type": "string",
4848+ "maxLength": 128,
4949+ "description": "The short string name of the value or type of this label."
5050+ },
5151+ "ver": {
5252+ "type": "integer",
5353+ "description": "The AT Protocol version of the label object."
5454+ }
5555+ },
5656+ "description": "Metadata tag on an atproto resource (eg, repo or record)."
5757+ },
5858+ "selfLabel": {
5959+ "type": "object",
6060+ "required": [
6161+ "val"
6262+ ],
6363+ "properties": {
6464+ "val": {
6565+ "type": "string",
6666+ "maxLength": 128,
6767+ "description": "The short string name of the value or type of this label."
6868+ }
6969+ },
7070+ "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel."
7171+ },
7272+ "labelValue": {
7373+ "type": "string",
7474+ "knownValues": [
7575+ "!hide",
7676+ "!warn",
7777+ "!no-unauthenticated",
7878+ "porn",
7979+ "sexual",
8080+ "nudity",
8181+ "graphic-media",
8282+ "bot"
8383+ ]
8484+ },
8585+ "selfLabels": {
8686+ "type": "object",
8787+ "required": [
8888+ "values"
8989+ ],
9090+ "properties": {
9191+ "values": {
9292+ "type": "array",
9393+ "items": {
9494+ "ref": "#selfLabel",
9595+ "type": "ref"
9696+ },
9797+ "maxLength": 10
9898+ }
9999+ },
100100+ "description": "Metadata tags on an atproto record, published by the author within the record."
101101+ },
102102+ "labelValueDefinition": {
103103+ "type": "object",
104104+ "required": [
105105+ "identifier",
106106+ "severity",
107107+ "blurs",
108108+ "locales"
109109+ ],
110110+ "properties": {
111111+ "blurs": {
112112+ "type": "string",
113113+ "description": "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.",
114114+ "knownValues": [
115115+ "content",
116116+ "media",
117117+ "none"
118118+ ]
119119+ },
120120+ "locales": {
121121+ "type": "array",
122122+ "items": {
123123+ "ref": "#labelValueDefinitionStrings",
124124+ "type": "ref"
125125+ }
126126+ },
127127+ "severity": {
128128+ "type": "string",
129129+ "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.",
130130+ "knownValues": [
131131+ "inform",
132132+ "alert",
133133+ "none"
134134+ ]
135135+ },
136136+ "adultOnly": {
137137+ "type": "boolean",
138138+ "description": "Does the user need to have adult content enabled in order to configure this label?"
139139+ },
140140+ "identifier": {
141141+ "type": "string",
142142+ "maxLength": 100,
143143+ "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).",
144144+ "maxGraphemes": 100
145145+ },
146146+ "defaultSetting": {
147147+ "type": "string",
148148+ "default": "warn",
149149+ "description": "The default setting for this label.",
150150+ "knownValues": [
151151+ "ignore",
152152+ "warn",
153153+ "hide"
154154+ ]
155155+ }
156156+ },
157157+ "description": "Declares a label value and its expected interpretations and behaviors."
158158+ },
159159+ "labelValueDefinitionStrings": {
160160+ "type": "object",
161161+ "required": [
162162+ "lang",
163163+ "name",
164164+ "description"
165165+ ],
166166+ "properties": {
167167+ "lang": {
168168+ "type": "string",
169169+ "format": "language",
170170+ "description": "The code of the language these strings are written in."
171171+ },
172172+ "name": {
173173+ "type": "string",
174174+ "maxLength": 640,
175175+ "description": "A short human-readable name for the label.",
176176+ "maxGraphemes": 64
177177+ },
178178+ "description": {
179179+ "type": "string",
180180+ "maxLength": 100000,
181181+ "description": "A longer description of what the label means and why it might be applied.",
182182+ "maxGraphemes": 10000
183183+ }
184184+ },
185185+ "description": "Strings which describe the label in the UI, localized into a specific language."
186186+ }
187187+ },
188188+ "$type": "com.atproto.lexicon.schema",
189189+ "lexicon": 1
190190+}
+73
lexicons/site/standard/publication.json
···11+{
22+ "id": "site.standard.publication",
33+ "defs": {
44+ "main": {
55+ "key": "tid",
66+ "type": "record",
77+ "record": {
88+ "type": "object",
99+ "required": [
1010+ "url",
1111+ "name"
1212+ ],
1313+ "properties": {
1414+ "url": {
1515+ "type": "string",
1616+ "format": "uri",
1717+ "description": "Base publication url (ex: https://standard.site). The canonical document URL is formed by combining this value with the document path."
1818+ },
1919+ "icon": {
2020+ "type": "blob",
2121+ "accept": [
2222+ "image/*"
2323+ ],
2424+ "maxSize": 1000000,
2525+ "description": "Square image to identify the publication. Should be at least 256x256."
2626+ },
2727+ "name": {
2828+ "type": "string",
2929+ "maxLength": 5000,
3030+ "description": "Name of the publication.",
3131+ "maxGraphemes": 500
3232+ },
3333+ "labels": {
3434+ "refs": [
3535+ "com.atproto.label.defs#selfLabels"
3636+ ],
3737+ "type": "union",
3838+ "description": "Self-label values for this publication. Effectively content warnings."
3939+ },
4040+ "basicTheme": {
4141+ "ref": "site.standard.theme.basic",
4242+ "type": "ref",
4343+ "description": "Simplified publication theme for tools and apps to utilize when displaying content."
4444+ },
4545+ "description": {
4646+ "type": "string",
4747+ "maxLength": 30000,
4848+ "description": "Brief description of the publication.",
4949+ "maxGraphemes": 3000
5050+ },
5151+ "preferences": {
5252+ "ref": "#preferences",
5353+ "type": "ref",
5454+ "description": "Object containing platform specific preferences (with a few shared properties)."
5555+ }
5656+ }
5757+ },
5858+ "description": "A publication record representing a blog, website, or content platform. Publications serve as containers for documents and define the overall branding and settings."
5959+ },
6060+ "preferences": {
6161+ "type": "object",
6262+ "properties": {
6363+ "showInDiscover": {
6464+ "type": "boolean",
6565+ "default": true,
6666+ "description": "Boolean which decides whether the publication should appear in discovery feeds."
6767+ }
6868+ }
6969+ }
7070+ },
7171+ "$type": "com.atproto.lexicon.schema",
7272+ "lexicon": 1
7373+}
···44 import npmx from '$lib/assets/projects/npmx.png';
55 import gatekeeper from '$lib/assets/projects/gatekeeper.jpg';
66 import badger from '$lib/assets/projects/badger.jpg';
77+ import twentyfortyeight from '$lib/assets/projects/2048.png';
88+ import giveaways from '$lib/assets/projects/giveaways.webp';
79810 type Project = {
911 name: string;
···3032 {
3133 name: 'PDS Gatekeeper',
3234 description:
3333- 'A side card service for the PDS that provides extra security in the form of 2FA for users, captcha, on signups, and customizable rate limits.',
3535+ 'A sidecar service (a microservice if you will) that sites in front of the PDS to provide extra security in the form of 2FA for users, captcha, on signups, and customizable rate limits.',
3436 image: gatekeeper,
3537 href: 'https://github.com/baileytownsend/reveal-ui'
3638 },
···4042 'A simple Rust firmware written for the Badger 2040 W from Pimoroni. Counts wifi networks found, reads a shtc3 sensor for temperature and humidity, and displays the results on the Badger display.',
4143 image: badger,
4244 href: 'https://tangled.org/pds.dad/rusty-badger'
4545+ },
4646+ {
4747+ name: 'at://2048',
4848+ description:
4949+ '2048 written in rust with atproto features to track your game history and to share with friends. Some have called it the first game on atproto, others have said "Hey does that count if it\'s just saving game history to the repo??" others have said "dear god why did you write this in web assembly"',
5050+ image: twentyfortyeight,
5151+ href: 'https://2048.blue'
5252+ },
5353+ {
5454+ name: 'Label Watcher',
5555+ description:
5656+ 'Automated moderation made easier for PDS admins. Subscribe to multiple atproto labelers and receive an email or have an auto takedown if a selected label is found on a user on a PDS you manage.',
5757+ image: 'https://tangled.org/pds.dad/label-watcher/opengraph',
5858+ href: 'https://tangled.org/pds.dad/label-watcher'
5959+ },
6060+ {
6161+ name: 'at://giveaways',
6262+ description:
6363+ 'Host a giveaway from the comfort of your own Bluesky post. Choose randomly from who liked, reposts, or any combination of the two. Powered by microcosm.',
6464+ image: giveaways,
6565+ href: 'https://giveaways.baileytownsend.dev/'
4366 }
4467 ];
4568···82105 </div>
83106 {#if hasMore}
84107 <button
8585- class="btn font-urbanist btn-primary mt-10"
108108+ class="btn mt-10 font-urbanist btn-primary"
86109 onclick={() => (visibleCount = Math.min(visibleCount + LOAD_STEP, projects.length))}
87110 >
88111 Load More
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as atproto from './com/atproto.js'
+5
src/lib/lexicons/com/atproto.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as label from './atproto/label.js'
+5
src/lib/lexicons/com/atproto/label.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as defs from './label/defs.js'
+254
src/lib/lexicons/com/atproto/label/defs.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'com.atproto.label.defs'
88+99+export { $nsid }
1010+1111+/** Metadata tag on an atproto resource (eg, repo or record). */
1212+type Label = {
1313+ $type?: 'com.atproto.label.defs#label'
1414+1515+ /**
1616+ * Optionally, CID specifying the specific version of 'uri' resource this label applies to.
1717+ */
1818+ cid?: l.CidString
1919+2020+ /**
2121+ * Timestamp when this label was created.
2222+ */
2323+ cts: l.DatetimeString
2424+2525+ /**
2626+ * Timestamp at which this label expires (no longer applies).
2727+ */
2828+ exp?: l.DatetimeString
2929+3030+ /**
3131+ * If true, this is a negation label, overwriting a previous label.
3232+ */
3333+ neg?: boolean
3434+3535+ /**
3636+ * Signature of dag-cbor encoded label.
3737+ */
3838+ sig?: Uint8Array
3939+4040+ /**
4141+ * DID of the actor who created this label.
4242+ */
4343+ src: l.DidString
4444+4545+ /**
4646+ * AT URI of the record, repository (account), or other resource that this label applies to.
4747+ */
4848+ uri: l.UriString
4949+5050+ /**
5151+ * The short string name of the value or type of this label.
5252+ */
5353+ val: string
5454+5555+ /**
5656+ * The AT Protocol version of the label object.
5757+ */
5858+ ver?: number
5959+}
6060+6161+export type { Label }
6262+6363+/** Metadata tag on an atproto resource (eg, repo or record). */
6464+const label = /*#__PURE__*/ l.typedObject<Label>(
6565+ $nsid,
6666+ 'label',
6767+ /*#__PURE__*/ l.object({
6868+ cid: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ format: 'cid' })),
6969+ cts: /*#__PURE__*/ l.string({ format: 'datetime' }),
7070+ exp: /*#__PURE__*/ l.optional(
7171+ /*#__PURE__*/ l.string({ format: 'datetime' }),
7272+ ),
7373+ neg: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),
7474+ sig: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.bytes()),
7575+ src: /*#__PURE__*/ l.string({ format: 'did' }),
7676+ uri: /*#__PURE__*/ l.string({ format: 'uri' }),
7777+ val: /*#__PURE__*/ l.string({ maxLength: 128 }),
7878+ ver: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),
7979+ }),
8080+)
8181+8282+export { label }
8383+8484+/** Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel. */
8585+type SelfLabel = {
8686+ $type?: 'com.atproto.label.defs#selfLabel'
8787+8888+ /**
8989+ * The short string name of the value or type of this label.
9090+ */
9191+ val: string
9292+}
9393+9494+export type { SelfLabel }
9595+9696+/** Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel. */
9797+const selfLabel = /*#__PURE__*/ l.typedObject<SelfLabel>(
9898+ $nsid,
9999+ 'selfLabel',
100100+ /*#__PURE__*/ l.object({ val: /*#__PURE__*/ l.string({ maxLength: 128 }) }),
101101+)
102102+103103+export { selfLabel }
104104+105105+type LabelValue =
106106+ | '!hide'
107107+ | '!warn'
108108+ | '!no-unauthenticated'
109109+ | 'porn'
110110+ | 'sexual'
111111+ | 'nudity'
112112+ | 'graphic-media'
113113+ | 'bot'
114114+ | l.UnknownString
115115+116116+export type { LabelValue }
117117+118118+const labelValue = /*#__PURE__*/ l.string<{
119119+ knownValues: [
120120+ '!hide',
121121+ '!warn',
122122+ '!no-unauthenticated',
123123+ 'porn',
124124+ 'sexual',
125125+ 'nudity',
126126+ 'graphic-media',
127127+ 'bot',
128128+ ]
129129+}>()
130130+131131+export { labelValue }
132132+133133+/** Metadata tags on an atproto record, published by the author within the record. */
134134+type SelfLabels = {
135135+ $type?: 'com.atproto.label.defs#selfLabels'
136136+ values: SelfLabel[]
137137+}
138138+139139+export type { SelfLabels }
140140+141141+/** Metadata tags on an atproto record, published by the author within the record. */
142142+const selfLabels = /*#__PURE__*/ l.typedObject<SelfLabels>(
143143+ $nsid,
144144+ 'selfLabels',
145145+ /*#__PURE__*/ l.object({
146146+ values: /*#__PURE__*/ l.array(
147147+ /*#__PURE__*/ l.ref<SelfLabel>((() => selfLabel) as any),
148148+ { maxLength: 10 },
149149+ ),
150150+ }),
151151+)
152152+153153+export { selfLabels }
154154+155155+/** Declares a label value and its expected interpretations and behaviors. */
156156+type LabelValueDefinition = {
157157+ $type?: 'com.atproto.label.defs#labelValueDefinition'
158158+159159+ /**
160160+ * What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.
161161+ */
162162+ blurs: 'content' | 'media' | 'none' | l.UnknownString
163163+ locales: LabelValueDefinitionStrings[]
164164+165165+ /**
166166+ * How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.
167167+ */
168168+ severity: 'inform' | 'alert' | 'none' | l.UnknownString
169169+170170+ /**
171171+ * Does the user need to have adult content enabled in order to configure this label?
172172+ */
173173+ adultOnly?: boolean
174174+175175+ /**
176176+ * The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).
177177+ */
178178+ identifier: string
179179+180180+ /**
181181+ * The default setting for this label.
182182+ */
183183+ defaultSetting?: 'ignore' | 'warn' | 'hide' | l.UnknownString
184184+}
185185+186186+export type { LabelValueDefinition }
187187+188188+/** Declares a label value and its expected interpretations and behaviors. */
189189+const labelValueDefinition = /*#__PURE__*/ l.typedObject<LabelValueDefinition>(
190190+ $nsid,
191191+ 'labelValueDefinition',
192192+ /*#__PURE__*/ l.object({
193193+ blurs: /*#__PURE__*/ l.string<{
194194+ knownValues: ['content', 'media', 'none']
195195+ }>(),
196196+ locales: /*#__PURE__*/ l.array(
197197+ /*#__PURE__*/ l.ref<LabelValueDefinitionStrings>(
198198+ (() => labelValueDefinitionStrings) as any,
199199+ ),
200200+ ),
201201+ severity: /*#__PURE__*/ l.string<{
202202+ knownValues: ['inform', 'alert', 'none']
203203+ }>(),
204204+ adultOnly: /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),
205205+ identifier: /*#__PURE__*/ l.string({ maxLength: 100, maxGraphemes: 100 }),
206206+ defaultSetting: /*#__PURE__*/ l.optional(
207207+ /*#__PURE__*/ l.withDefault(
208208+ /*#__PURE__*/ l.string<{ knownValues: ['ignore', 'warn', 'hide'] }>(),
209209+ 'warn',
210210+ ),
211211+ ),
212212+ }),
213213+)
214214+215215+export { labelValueDefinition }
216216+217217+/** Strings which describe the label in the UI, localized into a specific language. */
218218+type LabelValueDefinitionStrings = {
219219+ $type?: 'com.atproto.label.defs#labelValueDefinitionStrings'
220220+221221+ /**
222222+ * The code of the language these strings are written in.
223223+ */
224224+ lang: l.LanguageString
225225+226226+ /**
227227+ * A short human-readable name for the label.
228228+ */
229229+ name: string
230230+231231+ /**
232232+ * A longer description of what the label means and why it might be applied.
233233+ */
234234+ description: string
235235+}
236236+237237+export type { LabelValueDefinitionStrings }
238238+239239+/** Strings which describe the label in the UI, localized into a specific language. */
240240+const labelValueDefinitionStrings =
241241+ /*#__PURE__*/ l.typedObject<LabelValueDefinitionStrings>(
242242+ $nsid,
243243+ 'labelValueDefinitionStrings',
244244+ /*#__PURE__*/ l.object({
245245+ lang: /*#__PURE__*/ l.string({ format: 'language' }),
246246+ name: /*#__PURE__*/ l.string({ maxLength: 640, maxGraphemes: 64 }),
247247+ description: /*#__PURE__*/ l.string({
248248+ maxLength: 100000,
249249+ maxGraphemes: 10000,
250250+ }),
251251+ }),
252252+ )
253253+254254+export { labelValueDefinitionStrings }
+5
src/lib/lexicons/com/atproto/label/defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './defs.defs.js'
+6
src/lib/lexicons/index.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as com from './com.js'
66+export * as site from './site.js'
+5
src/lib/lexicons/site.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as standard from './site/standard.js'
+6
src/lib/lexicons/site/standard.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as publication from './standard/publication.js'
66+export * as theme from './standard/theme.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+import * as LabelDefs from '../../com/atproto/label/defs.defs.js'
77+import * as ThemeBasic from './theme/basic.defs.js'
88+99+const $nsid = 'site.standard.publication'
1010+1111+export { $nsid }
1212+1313+/** A publication record representing a blog, website, or content platform. Publications serve as containers for documents and define the overall branding and settings. */
1414+type Main = {
1515+ $type: 'site.standard.publication'
1616+1717+ /**
1818+ * Base publication url (ex: https://standard.site). The canonical document URL is formed by combining this value with the document path.
1919+ */
2020+ url: l.UriString
2121+2222+ /**
2323+ * Square image to identify the publication. Should be at least 256x256.
2424+ */
2525+ icon?: l.BlobRef
2626+2727+ /**
2828+ * Name of the publication.
2929+ */
3030+ name: string
3131+3232+ /**
3333+ * Self-label values for this publication. Effectively content warnings.
3434+ */
3535+ labels?: l.$Typed<LabelDefs.SelfLabels> | l.Unknown$TypedObject
3636+3737+ /**
3838+ * Simplified publication theme for tools and apps to utilize when displaying content.
3939+ */
4040+ basicTheme?: ThemeBasic.Main
4141+4242+ /**
4343+ * Brief description of the publication.
4444+ */
4545+ description?: string
4646+4747+ /**
4848+ * Object containing platform specific preferences (with a few shared properties).
4949+ */
5050+ preferences?: Preferences
5151+}
5252+5353+export type { Main }
5454+5555+/** A publication record representing a blog, website, or content platform. Publications serve as containers for documents and define the overall branding and settings. */
5656+const main = /*#__PURE__*/ l.record<'tid', Main>(
5757+ 'tid',
5858+ $nsid,
5959+ /*#__PURE__*/ l.object({
6060+ url: /*#__PURE__*/ l.string({ format: 'uri' }),
6161+ icon: /*#__PURE__*/ l.optional(
6262+ /*#__PURE__*/ l.blob({ accept: ['image/*'], maxSize: 1000000 }),
6363+ ),
6464+ name: /*#__PURE__*/ l.string({ maxLength: 5000, maxGraphemes: 500 }),
6565+ labels: /*#__PURE__*/ l.optional(
6666+ /*#__PURE__*/ l.typedUnion(
6767+ [
6868+ /*#__PURE__*/ l.typedRef<LabelDefs.SelfLabels>(
6969+ (() => LabelDefs.selfLabels) as any,
7070+ ),
7171+ ],
7272+ false,
7373+ ),
7474+ ),
7575+ basicTheme: /*#__PURE__*/ l.optional(
7676+ /*#__PURE__*/ l.ref<ThemeBasic.Main>((() => ThemeBasic.main) as any),
7777+ ),
7878+ description: /*#__PURE__*/ l.optional(
7979+ /*#__PURE__*/ l.string({ maxLength: 30000, maxGraphemes: 3000 }),
8080+ ),
8181+ preferences: /*#__PURE__*/ l.optional(
8282+ /*#__PURE__*/ l.ref<Preferences>((() => preferences) as any),
8383+ ),
8484+ }),
8585+)
8686+8787+export { main }
8888+8989+export const $type = $nsid
9090+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main)
9191+export const $build = /*#__PURE__*/ main.build.bind(main)
9292+export const $assert = /*#__PURE__*/ main.assert.bind(main)
9393+export const $check = /*#__PURE__*/ main.check.bind(main)
9494+export const $cast = /*#__PURE__*/ main.cast.bind(main)
9595+export const $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main)
9696+export const $matches = /*#__PURE__*/ main.matches.bind(main)
9797+export const $parse = /*#__PURE__*/ main.parse.bind(main)
9898+export const $safeParse = /*#__PURE__*/ main.safeParse.bind(main)
9999+export const $validate = /*#__PURE__*/ main.validate.bind(main)
100100+export const $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
101101+102102+type Preferences = {
103103+ $type?: 'site.standard.publication#preferences'
104104+105105+ /**
106106+ * Boolean which decides whether the publication should appear in discovery feeds.
107107+ */
108108+ showInDiscover?: boolean
109109+}
110110+111111+export type { Preferences }
112112+113113+const preferences = /*#__PURE__*/ l.typedObject<Preferences>(
114114+ $nsid,
115115+ 'preferences',
116116+ /*#__PURE__*/ l.object({
117117+ showInDiscover: /*#__PURE__*/ l.optional(
118118+ /*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.boolean(), true),
119119+ ),
120120+ }),
121121+)
122122+123123+export { preferences }
+6
src/lib/lexicons/site/standard/publication.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './publication.defs.js'
66+export { main as default } from './publication.defs.js'
+6
src/lib/lexicons/site/standard/theme.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as color from './theme/color.js'
66+export * as basic from './theme/basic.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+import * as ThemeColor from './color.defs.js'
77+88+const $nsid = 'site.standard.theme.basic'
99+1010+export { $nsid }
1111+1212+/** A simplified theme definition for publications, providing basic color customization for content display across different platforms and applications. */
1313+type Main = {
1414+ $type: 'site.standard.theme.basic'
1515+1616+ /**
1717+ * Color used for links and button backgrounds.
1818+ */
1919+ accent: l.$Typed<ThemeColor.Rgb> | l.Unknown$TypedObject
2020+2121+ /**
2222+ * Color used for content background.
2323+ */
2424+ background: l.$Typed<ThemeColor.Rgb> | l.Unknown$TypedObject
2525+2626+ /**
2727+ * Color used for content text.
2828+ */
2929+ foreground: l.$Typed<ThemeColor.Rgb> | l.Unknown$TypedObject
3030+3131+ /**
3232+ * Color used for button text.
3333+ */
3434+ accentForeground: l.$Typed<ThemeColor.Rgb> | l.Unknown$TypedObject
3535+}
3636+3737+export type { Main }
3838+3939+/** A simplified theme definition for publications, providing basic color customization for content display across different platforms and applications. */
4040+const main = /*#__PURE__*/ l.record<'tid', Main>(
4141+ 'tid',
4242+ $nsid,
4343+ /*#__PURE__*/ l.object({
4444+ accent: /*#__PURE__*/ l.typedUnion(
4545+ [/*#__PURE__*/ l.typedRef<ThemeColor.Rgb>((() => ThemeColor.rgb) as any)],
4646+ false,
4747+ ),
4848+ background: /*#__PURE__*/ l.typedUnion(
4949+ [/*#__PURE__*/ l.typedRef<ThemeColor.Rgb>((() => ThemeColor.rgb) as any)],
5050+ false,
5151+ ),
5252+ foreground: /*#__PURE__*/ l.typedUnion(
5353+ [/*#__PURE__*/ l.typedRef<ThemeColor.Rgb>((() => ThemeColor.rgb) as any)],
5454+ false,
5555+ ),
5656+ accentForeground: /*#__PURE__*/ l.typedUnion(
5757+ [/*#__PURE__*/ l.typedRef<ThemeColor.Rgb>((() => ThemeColor.rgb) as any)],
5858+ false,
5959+ ),
6060+ }),
6161+)
6262+6363+export { main }
6464+6565+export const $type = $nsid
6666+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main)
6767+export const $build = /*#__PURE__*/ main.build.bind(main)
6868+export const $assert = /*#__PURE__*/ main.assert.bind(main)
6969+export const $check = /*#__PURE__*/ main.check.bind(main)
7070+export const $cast = /*#__PURE__*/ main.cast.bind(main)
7171+export const $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main)
7272+export const $matches = /*#__PURE__*/ main.matches.bind(main)
7373+export const $parse = /*#__PURE__*/ main.parse.bind(main)
7474+export const $safeParse = /*#__PURE__*/ main.safeParse.bind(main)
7575+export const $validate = /*#__PURE__*/ main.validate.bind(main)
7676+export const $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
+6
src/lib/lexicons/site/standard/theme/basic.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './basic.defs.js'
66+export { main as default } from './basic.defs.js'