diff --git a/gatsby-config.js b/gatsby-config.js index 11c5f316..e0c4e783 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -1,5 +1,8 @@ module.exports = { siteMetadata: {}, + graphqlTypegen: { + typesOutputPath: `./lib/gatsby-types.d.ts` + }, plugins: [ "gatsby-plugin-catch-links", `gatsby-plugin-image`, diff --git a/lib/assets/fonts/index.js b/lib/assets/fonts/index.ts similarity index 100% rename from lib/assets/fonts/index.js rename to lib/assets/fonts/index.ts diff --git a/lib/assets/images/index.js b/lib/assets/images/index.ts similarity index 100% rename from lib/assets/images/index.js rename to lib/assets/images/index.ts diff --git a/lib/assets/styles/index.js b/lib/assets/styles/index.ts similarity index 100% rename from lib/assets/styles/index.js rename to lib/assets/styles/index.ts diff --git a/lib/assets/styles/reset.js b/lib/assets/styles/reset.ts similarity index 100% rename from lib/assets/styles/reset.js rename to lib/assets/styles/reset.ts diff --git a/lib/config/meta.js b/lib/config/meta.ts similarity index 94% rename from lib/config/meta.js rename to lib/config/meta.ts index 30c4d685..87395aea 100644 --- a/lib/config/meta.js +++ b/lib/config/meta.ts @@ -1,4 +1,4 @@ -module.exports = { +const config = { /* some awkward meta */ designer: "Mogli Studio — https://moglistudio.pl", owner: "Bad Idea Factory — https://biffud.com", @@ -13,3 +13,5 @@ module.exports = { twitterHandle: "biffud", // used for twitter cards url: "https://biffud.com" // used as base for generating rel="canonical" links }; + +export default config; diff --git a/lib/gatsby-types.d.ts b/lib/gatsby-types.d.ts new file mode 100644 index 00000000..23e3c778 --- /dev/null +++ b/lib/gatsby-types.d.ts @@ -0,0 +1,3197 @@ +/* eslint-disable */ + +/* prettier-ignore */ + +/* THIS FILE IS AUTOGENERATED. CHANGES WILL BE LOST ON SUBSEQUENT RUNS. */ + +declare namespace Queries { + +type Maybe = T | null; +type InputMaybe = T | null; +type Exact = { [K in keyof T]: T[K] }; +type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +/** All built-in and custom scalars, mapped to their actual values */ +type Scalars = { + /** The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. */ + ID: string; + /** The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text. */ + String: string; + /** The `Boolean` scalar type represents `true` or `false`. */ + Boolean: boolean; + /** The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1. */ + Int: number; + /** The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). */ + Float: number; + /** A date string, such as 2007-12-03, compliant with the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ + Date: string; + GatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData; + /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */ + JSON: Record; +}; + +type AVIFOptions = { + readonly lossless: InputMaybe; + readonly quality: InputMaybe; + readonly speed: InputMaybe; +}; + +type BlurredOptions = { + /** Force the output format for the low-res preview. Default is to use the same format as the input. You should rarely need to change this */ + readonly toFormat: InputMaybe; + /** Width of the generated low-res preview. Default is 20px */ + readonly width: InputMaybe; +}; + +type BooleanQueryOperatorInput = { + readonly eq: InputMaybe; + readonly in: InputMaybe>>; + readonly ne: InputMaybe; + readonly nin: InputMaybe>>; +}; + +type DateQueryOperatorInput = { + readonly eq: InputMaybe; + readonly gt: InputMaybe; + readonly gte: InputMaybe; + readonly in: InputMaybe>>; + readonly lt: InputMaybe; + readonly lte: InputMaybe; + readonly ne: InputMaybe; + readonly nin: InputMaybe>>; +}; + +type Directory = Node & { + readonly absolutePath: Scalars['String']; + readonly accessTime: Scalars['Date']; + readonly atime: Scalars['Date']; + readonly atimeMs: Scalars['Float']; + readonly base: Scalars['String']; + readonly birthTime: Scalars['Date']; + /** @deprecated Use `birthTime` instead */ + readonly birthtime: Maybe; + /** @deprecated Use `birthTime` instead */ + readonly birthtimeMs: Maybe; + readonly changeTime: Scalars['Date']; + readonly children: ReadonlyArray; + readonly ctime: Scalars['Date']; + readonly ctimeMs: Scalars['Float']; + readonly dev: Scalars['Int']; + readonly dir: Scalars['String']; + readonly ext: Scalars['String']; + readonly extension: Scalars['String']; + readonly gid: Scalars['Int']; + readonly id: Scalars['ID']; + readonly ino: Scalars['Float']; + readonly internal: Internal; + readonly mode: Scalars['Int']; + readonly modifiedTime: Scalars['Date']; + readonly mtime: Scalars['Date']; + readonly mtimeMs: Scalars['Float']; + readonly name: Scalars['String']; + readonly nlink: Scalars['Int']; + readonly parent: Maybe; + readonly prettySize: Scalars['String']; + readonly rdev: Scalars['Int']; + readonly relativeDirectory: Scalars['String']; + readonly relativePath: Scalars['String']; + readonly root: Scalars['String']; + readonly size: Scalars['Int']; + readonly sourceInstanceName: Scalars['String']; + readonly uid: Scalars['Int']; +}; + + +type Directory_accessTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type Directory_atimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type Directory_birthTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type Directory_changeTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type Directory_ctimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type Directory_modifiedTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type Directory_mtimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + +type DirectoryConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type DirectoryConnection_distinctArgs = { + field: DirectoryFieldSelector; +}; + + +type DirectoryConnection_groupArgs = { + field: DirectoryFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type DirectoryConnection_maxArgs = { + field: DirectoryFieldSelector; +}; + + +type DirectoryConnection_minArgs = { + field: DirectoryFieldSelector; +}; + + +type DirectoryConnection_sumArgs = { + field: DirectoryFieldSelector; +}; + +type DirectoryEdge = { + readonly next: Maybe; + readonly node: Directory; + readonly previous: Maybe; +}; + +type DirectoryFieldSelector = { + readonly absolutePath: InputMaybe; + readonly accessTime: InputMaybe; + readonly atime: InputMaybe; + readonly atimeMs: InputMaybe; + readonly base: InputMaybe; + readonly birthTime: InputMaybe; + readonly birthtime: InputMaybe; + readonly birthtimeMs: InputMaybe; + readonly changeTime: InputMaybe; + readonly children: InputMaybe; + readonly ctime: InputMaybe; + readonly ctimeMs: InputMaybe; + readonly dev: InputMaybe; + readonly dir: InputMaybe; + readonly ext: InputMaybe; + readonly extension: InputMaybe; + readonly gid: InputMaybe; + readonly id: InputMaybe; + readonly ino: InputMaybe; + readonly internal: InputMaybe; + readonly mode: InputMaybe; + readonly modifiedTime: InputMaybe; + readonly mtime: InputMaybe; + readonly mtimeMs: InputMaybe; + readonly name: InputMaybe; + readonly nlink: InputMaybe; + readonly parent: InputMaybe; + readonly prettySize: InputMaybe; + readonly rdev: InputMaybe; + readonly relativeDirectory: InputMaybe; + readonly relativePath: InputMaybe; + readonly root: InputMaybe; + readonly size: InputMaybe; + readonly sourceInstanceName: InputMaybe; + readonly uid: InputMaybe; +}; + +type DirectoryFilterInput = { + readonly absolutePath: InputMaybe; + readonly accessTime: InputMaybe; + readonly atime: InputMaybe; + readonly atimeMs: InputMaybe; + readonly base: InputMaybe; + readonly birthTime: InputMaybe; + readonly birthtime: InputMaybe; + readonly birthtimeMs: InputMaybe; + readonly changeTime: InputMaybe; + readonly children: InputMaybe; + readonly ctime: InputMaybe; + readonly ctimeMs: InputMaybe; + readonly dev: InputMaybe; + readonly dir: InputMaybe; + readonly ext: InputMaybe; + readonly extension: InputMaybe; + readonly gid: InputMaybe; + readonly id: InputMaybe; + readonly ino: InputMaybe; + readonly internal: InputMaybe; + readonly mode: InputMaybe; + readonly modifiedTime: InputMaybe; + readonly mtime: InputMaybe; + readonly mtimeMs: InputMaybe; + readonly name: InputMaybe; + readonly nlink: InputMaybe; + readonly parent: InputMaybe; + readonly prettySize: InputMaybe; + readonly rdev: InputMaybe; + readonly relativeDirectory: InputMaybe; + readonly relativePath: InputMaybe; + readonly root: InputMaybe; + readonly size: InputMaybe; + readonly sourceInstanceName: InputMaybe; + readonly uid: InputMaybe; +}; + +type DirectoryGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type DirectoryGroupConnection_distinctArgs = { + field: DirectoryFieldSelector; +}; + + +type DirectoryGroupConnection_groupArgs = { + field: DirectoryFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type DirectoryGroupConnection_maxArgs = { + field: DirectoryFieldSelector; +}; + + +type DirectoryGroupConnection_minArgs = { + field: DirectoryFieldSelector; +}; + + +type DirectoryGroupConnection_sumArgs = { + field: DirectoryFieldSelector; +}; + +type DirectorySortInput = { + readonly absolutePath: InputMaybe; + readonly accessTime: InputMaybe; + readonly atime: InputMaybe; + readonly atimeMs: InputMaybe; + readonly base: InputMaybe; + readonly birthTime: InputMaybe; + readonly birthtime: InputMaybe; + readonly birthtimeMs: InputMaybe; + readonly changeTime: InputMaybe; + readonly children: InputMaybe; + readonly ctime: InputMaybe; + readonly ctimeMs: InputMaybe; + readonly dev: InputMaybe; + readonly dir: InputMaybe; + readonly ext: InputMaybe; + readonly extension: InputMaybe; + readonly gid: InputMaybe; + readonly id: InputMaybe; + readonly ino: InputMaybe; + readonly internal: InputMaybe; + readonly mode: InputMaybe; + readonly modifiedTime: InputMaybe; + readonly mtime: InputMaybe; + readonly mtimeMs: InputMaybe; + readonly name: InputMaybe; + readonly nlink: InputMaybe; + readonly parent: InputMaybe; + readonly prettySize: InputMaybe; + readonly rdev: InputMaybe; + readonly relativeDirectory: InputMaybe; + readonly relativePath: InputMaybe; + readonly root: InputMaybe; + readonly size: InputMaybe; + readonly sourceInstanceName: InputMaybe; + readonly uid: InputMaybe; +}; + +type DuotoneGradient = { + readonly highlight: Scalars['String']; + readonly opacity: InputMaybe; + readonly shadow: Scalars['String']; +}; + +type FieldSelectorEnum = + | 'SELECT'; + +type File = Node & { + readonly absolutePath: Scalars['String']; + readonly accessTime: Scalars['Date']; + readonly atime: Scalars['Date']; + readonly atimeMs: Scalars['Float']; + readonly base: Scalars['String']; + readonly birthTime: Scalars['Date']; + /** @deprecated Use `birthTime` instead */ + readonly birthtime: Maybe; + /** @deprecated Use `birthTime` instead */ + readonly birthtimeMs: Maybe; + readonly blksize: Maybe; + readonly blocks: Maybe; + readonly changeTime: Scalars['Date']; + /** Returns the first child node of type ImageSharp or null if there are no children of given type on this node */ + readonly childImageSharp: Maybe; + /** Returns the first child node of type MarkdownRemark or null if there are no children of given type on this node */ + readonly childMarkdownRemark: Maybe; + readonly children: ReadonlyArray; + /** Returns all children nodes filtered by type ImageSharp */ + readonly childrenImageSharp: Maybe>>; + /** Returns all children nodes filtered by type MarkdownRemark */ + readonly childrenMarkdownRemark: Maybe>>; + readonly ctime: Scalars['Date']; + readonly ctimeMs: Scalars['Float']; + readonly dev: Scalars['Int']; + readonly dir: Scalars['String']; + readonly ext: Scalars['String']; + readonly extension: Scalars['String']; + readonly gid: Scalars['Int']; + readonly id: Scalars['ID']; + readonly ino: Scalars['Float']; + readonly internal: Internal; + readonly mode: Scalars['Int']; + readonly modifiedTime: Scalars['Date']; + readonly mtime: Scalars['Date']; + readonly mtimeMs: Scalars['Float']; + readonly name: Scalars['String']; + readonly nlink: Scalars['Int']; + readonly parent: Maybe; + readonly prettySize: Scalars['String']; + /** Copy file to static directory and return public url to it */ + readonly publicURL: Maybe; + readonly rdev: Scalars['Int']; + readonly relativeDirectory: Scalars['String']; + readonly relativePath: Scalars['String']; + readonly root: Scalars['String']; + readonly size: Scalars['Int']; + readonly sourceInstanceName: Scalars['String']; + readonly uid: Scalars['Int']; +}; + + +type File_accessTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type File_atimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type File_birthTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type File_changeTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type File_ctimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type File_modifiedTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + + +type File_mtimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + +type FileConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type FileConnection_distinctArgs = { + field: FileFieldSelector; +}; + + +type FileConnection_groupArgs = { + field: FileFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type FileConnection_maxArgs = { + field: FileFieldSelector; +}; + + +type FileConnection_minArgs = { + field: FileFieldSelector; +}; + + +type FileConnection_sumArgs = { + field: FileFieldSelector; +}; + +type FileEdge = { + readonly next: Maybe; + readonly node: File; + readonly previous: Maybe; +}; + +type FileFieldSelector = { + readonly absolutePath: InputMaybe; + readonly accessTime: InputMaybe; + readonly atime: InputMaybe; + readonly atimeMs: InputMaybe; + readonly base: InputMaybe; + readonly birthTime: InputMaybe; + readonly birthtime: InputMaybe; + readonly birthtimeMs: InputMaybe; + readonly blksize: InputMaybe; + readonly blocks: InputMaybe; + readonly changeTime: InputMaybe; + readonly childImageSharp: InputMaybe; + readonly childMarkdownRemark: InputMaybe; + readonly children: InputMaybe; + readonly childrenImageSharp: InputMaybe; + readonly childrenMarkdownRemark: InputMaybe; + readonly ctime: InputMaybe; + readonly ctimeMs: InputMaybe; + readonly dev: InputMaybe; + readonly dir: InputMaybe; + readonly ext: InputMaybe; + readonly extension: InputMaybe; + readonly gid: InputMaybe; + readonly id: InputMaybe; + readonly ino: InputMaybe; + readonly internal: InputMaybe; + readonly mode: InputMaybe; + readonly modifiedTime: InputMaybe; + readonly mtime: InputMaybe; + readonly mtimeMs: InputMaybe; + readonly name: InputMaybe; + readonly nlink: InputMaybe; + readonly parent: InputMaybe; + readonly prettySize: InputMaybe; + readonly publicURL: InputMaybe; + readonly rdev: InputMaybe; + readonly relativeDirectory: InputMaybe; + readonly relativePath: InputMaybe; + readonly root: InputMaybe; + readonly size: InputMaybe; + readonly sourceInstanceName: InputMaybe; + readonly uid: InputMaybe; +}; + +type FileFilterInput = { + readonly absolutePath: InputMaybe; + readonly accessTime: InputMaybe; + readonly atime: InputMaybe; + readonly atimeMs: InputMaybe; + readonly base: InputMaybe; + readonly birthTime: InputMaybe; + readonly birthtime: InputMaybe; + readonly birthtimeMs: InputMaybe; + readonly blksize: InputMaybe; + readonly blocks: InputMaybe; + readonly changeTime: InputMaybe; + readonly childImageSharp: InputMaybe; + readonly childMarkdownRemark: InputMaybe; + readonly children: InputMaybe; + readonly childrenImageSharp: InputMaybe; + readonly childrenMarkdownRemark: InputMaybe; + readonly ctime: InputMaybe; + readonly ctimeMs: InputMaybe; + readonly dev: InputMaybe; + readonly dir: InputMaybe; + readonly ext: InputMaybe; + readonly extension: InputMaybe; + readonly gid: InputMaybe; + readonly id: InputMaybe; + readonly ino: InputMaybe; + readonly internal: InputMaybe; + readonly mode: InputMaybe; + readonly modifiedTime: InputMaybe; + readonly mtime: InputMaybe; + readonly mtimeMs: InputMaybe; + readonly name: InputMaybe; + readonly nlink: InputMaybe; + readonly parent: InputMaybe; + readonly prettySize: InputMaybe; + readonly publicURL: InputMaybe; + readonly rdev: InputMaybe; + readonly relativeDirectory: InputMaybe; + readonly relativePath: InputMaybe; + readonly root: InputMaybe; + readonly size: InputMaybe; + readonly sourceInstanceName: InputMaybe; + readonly uid: InputMaybe; +}; + +type FileFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type FileGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type FileGroupConnection_distinctArgs = { + field: FileFieldSelector; +}; + + +type FileGroupConnection_groupArgs = { + field: FileFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type FileGroupConnection_maxArgs = { + field: FileFieldSelector; +}; + + +type FileGroupConnection_minArgs = { + field: FileFieldSelector; +}; + + +type FileGroupConnection_sumArgs = { + field: FileFieldSelector; +}; + +type FileSortInput = { + readonly absolutePath: InputMaybe; + readonly accessTime: InputMaybe; + readonly atime: InputMaybe; + readonly atimeMs: InputMaybe; + readonly base: InputMaybe; + readonly birthTime: InputMaybe; + readonly birthtime: InputMaybe; + readonly birthtimeMs: InputMaybe; + readonly blksize: InputMaybe; + readonly blocks: InputMaybe; + readonly changeTime: InputMaybe; + readonly childImageSharp: InputMaybe; + readonly childMarkdownRemark: InputMaybe; + readonly children: InputMaybe; + readonly childrenImageSharp: InputMaybe; + readonly childrenMarkdownRemark: InputMaybe; + readonly ctime: InputMaybe; + readonly ctimeMs: InputMaybe; + readonly dev: InputMaybe; + readonly dir: InputMaybe; + readonly ext: InputMaybe; + readonly extension: InputMaybe; + readonly gid: InputMaybe; + readonly id: InputMaybe; + readonly ino: InputMaybe; + readonly internal: InputMaybe; + readonly mode: InputMaybe; + readonly modifiedTime: InputMaybe; + readonly mtime: InputMaybe; + readonly mtimeMs: InputMaybe; + readonly name: InputMaybe; + readonly nlink: InputMaybe; + readonly parent: InputMaybe; + readonly prettySize: InputMaybe; + readonly publicURL: InputMaybe; + readonly rdev: InputMaybe; + readonly relativeDirectory: InputMaybe; + readonly relativePath: InputMaybe; + readonly root: InputMaybe; + readonly size: InputMaybe; + readonly sourceInstanceName: InputMaybe; + readonly uid: InputMaybe; +}; + +type FloatQueryOperatorInput = { + readonly eq: InputMaybe; + readonly gt: InputMaybe; + readonly gte: InputMaybe; + readonly in: InputMaybe>>; + readonly lt: InputMaybe; + readonly lte: InputMaybe; + readonly ne: InputMaybe; + readonly nin: InputMaybe>>; +}; + +type GatsbyImageDataQueryOperatorInput = { + readonly eq: InputMaybe; + readonly in: InputMaybe>>; + readonly ne: InputMaybe; + readonly nin: InputMaybe>>; +}; + +type GatsbyImageFormat = + | 'auto' + | 'avif' + | 'jpg' + | '' + | 'png' + | 'webp'; + +type GatsbyImageLayout = + | 'constrained' + | 'fixed' + | 'fullWidth'; + +type GatsbyImagePlaceholder = + | 'blurred' + | 'dominantColor' + | 'none' + | 'tracedSVG'; + +type ImageCropFocus = + | 17 + | 0 + | 2 + | 16 + | 1 + | 5 + | 8 + | 3 + | 6 + | 7 + | 4; + +type ImageFit = + | 'contain' + | 'cover' + | 'fill' + | 'inside' + | 'outside'; + +type ImageFormat = + | '' + | 'avif' + | 'jpg' + | '' + | 'png' + | 'webp'; + +type ImageLayout = + | 'constrained' + | 'fixed' + | 'fullWidth'; + +type ImagePlaceholder = + | 'blurred' + | 'dominantColor' + | 'none' + | 'tracedSVG'; + +type ImageSharp = Node & { + readonly children: ReadonlyArray; + readonly fixed: Maybe; + readonly fluid: Maybe; + readonly gatsbyImageData: Scalars['GatsbyImageData']; + readonly id: Scalars['ID']; + readonly internal: Internal; + readonly original: Maybe; + readonly parent: Maybe; + readonly resize: Maybe; +}; + + +type ImageSharp_fixedArgs = { + background?: InputMaybe; + base64Width: InputMaybe; + cropFocus?: InputMaybe; + duotone: InputMaybe; + fit?: InputMaybe; + grayscale?: InputMaybe; + height: InputMaybe; + jpegProgressive?: InputMaybe; + jpegQuality: InputMaybe; + pngCompressionSpeed?: InputMaybe; + pngQuality: InputMaybe; + quality: InputMaybe; + rotate?: InputMaybe; + toFormat?: InputMaybe; + toFormatBase64?: InputMaybe; + traceSVG: InputMaybe; + trim?: InputMaybe; + webpQuality: InputMaybe; + width: InputMaybe; +}; + + +type ImageSharp_fluidArgs = { + background?: InputMaybe; + base64Width: InputMaybe; + cropFocus?: InputMaybe; + duotone: InputMaybe; + fit?: InputMaybe; + grayscale?: InputMaybe; + jpegProgressive?: InputMaybe; + jpegQuality: InputMaybe; + maxHeight: InputMaybe; + maxWidth: InputMaybe; + pngCompressionSpeed?: InputMaybe; + pngQuality: InputMaybe; + quality: InputMaybe; + rotate?: InputMaybe; + sizes?: InputMaybe; + srcSetBreakpoints?: InputMaybe>>; + toFormat?: InputMaybe; + toFormatBase64?: InputMaybe; + traceSVG: InputMaybe; + trim?: InputMaybe; + webpQuality: InputMaybe; +}; + + +type ImageSharp_gatsbyImageDataArgs = { + aspectRatio: InputMaybe; + avifOptions: InputMaybe; + backgroundColor: InputMaybe; + blurredOptions: InputMaybe; + breakpoints: InputMaybe>>; + formats: InputMaybe>>; + height: InputMaybe; + jpgOptions: InputMaybe; + layout?: InputMaybe; + outputPixelDensities: InputMaybe>>; + placeholder: InputMaybe; + pngOptions: InputMaybe; + quality: InputMaybe; + sizes: InputMaybe; + tracedSVGOptions: InputMaybe; + transformOptions: InputMaybe; + webpOptions: InputMaybe; + width: InputMaybe; +}; + + +type ImageSharp_resizeArgs = { + background?: InputMaybe; + base64?: InputMaybe; + cropFocus?: InputMaybe; + duotone: InputMaybe; + fit?: InputMaybe; + grayscale?: InputMaybe; + height: InputMaybe; + jpegProgressive?: InputMaybe; + jpegQuality: InputMaybe; + pngCompressionLevel?: InputMaybe; + pngCompressionSpeed?: InputMaybe; + pngQuality: InputMaybe; + quality: InputMaybe; + rotate?: InputMaybe; + toFormat?: InputMaybe; + traceSVG: InputMaybe; + trim?: InputMaybe; + webpQuality: InputMaybe; + width: InputMaybe; +}; + +type ImageSharpConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type ImageSharpConnection_distinctArgs = { + field: ImageSharpFieldSelector; +}; + + +type ImageSharpConnection_groupArgs = { + field: ImageSharpFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type ImageSharpConnection_maxArgs = { + field: ImageSharpFieldSelector; +}; + + +type ImageSharpConnection_minArgs = { + field: ImageSharpFieldSelector; +}; + + +type ImageSharpConnection_sumArgs = { + field: ImageSharpFieldSelector; +}; + +type ImageSharpEdge = { + readonly next: Maybe; + readonly node: ImageSharp; + readonly previous: Maybe; +}; + +type ImageSharpFieldSelector = { + readonly children: InputMaybe; + readonly fixed: InputMaybe; + readonly fluid: InputMaybe; + readonly gatsbyImageData: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly original: InputMaybe; + readonly parent: InputMaybe; + readonly resize: InputMaybe; +}; + +type ImageSharpFilterInput = { + readonly children: InputMaybe; + readonly fixed: InputMaybe; + readonly fluid: InputMaybe; + readonly gatsbyImageData: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly original: InputMaybe; + readonly parent: InputMaybe; + readonly resize: InputMaybe; +}; + +type ImageSharpFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type ImageSharpFixed = { + readonly aspectRatio: Maybe; + readonly base64: Maybe; + readonly height: Scalars['Float']; + readonly originalName: Maybe; + readonly src: Scalars['String']; + readonly srcSet: Scalars['String']; + readonly srcSetWebp: Maybe; + readonly srcWebp: Maybe; + readonly tracedSVG: Maybe; + readonly width: Scalars['Float']; +}; + +type ImageSharpFixedFieldSelector = { + readonly aspectRatio: InputMaybe; + readonly base64: InputMaybe; + readonly height: InputMaybe; + readonly originalName: InputMaybe; + readonly src: InputMaybe; + readonly srcSet: InputMaybe; + readonly srcSetWebp: InputMaybe; + readonly srcWebp: InputMaybe; + readonly tracedSVG: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpFixedFilterInput = { + readonly aspectRatio: InputMaybe; + readonly base64: InputMaybe; + readonly height: InputMaybe; + readonly originalName: InputMaybe; + readonly src: InputMaybe; + readonly srcSet: InputMaybe; + readonly srcSetWebp: InputMaybe; + readonly srcWebp: InputMaybe; + readonly tracedSVG: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpFixedSortInput = { + readonly aspectRatio: InputMaybe; + readonly base64: InputMaybe; + readonly height: InputMaybe; + readonly originalName: InputMaybe; + readonly src: InputMaybe; + readonly srcSet: InputMaybe; + readonly srcSetWebp: InputMaybe; + readonly srcWebp: InputMaybe; + readonly tracedSVG: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpFluid = { + readonly aspectRatio: Scalars['Float']; + readonly base64: Maybe; + readonly originalImg: Maybe; + readonly originalName: Maybe; + readonly presentationHeight: Scalars['Int']; + readonly presentationWidth: Scalars['Int']; + readonly sizes: Scalars['String']; + readonly src: Scalars['String']; + readonly srcSet: Scalars['String']; + readonly srcSetWebp: Maybe; + readonly srcWebp: Maybe; + readonly tracedSVG: Maybe; +}; + +type ImageSharpFluidFieldSelector = { + readonly aspectRatio: InputMaybe; + readonly base64: InputMaybe; + readonly originalImg: InputMaybe; + readonly originalName: InputMaybe; + readonly presentationHeight: InputMaybe; + readonly presentationWidth: InputMaybe; + readonly sizes: InputMaybe; + readonly src: InputMaybe; + readonly srcSet: InputMaybe; + readonly srcSetWebp: InputMaybe; + readonly srcWebp: InputMaybe; + readonly tracedSVG: InputMaybe; +}; + +type ImageSharpFluidFilterInput = { + readonly aspectRatio: InputMaybe; + readonly base64: InputMaybe; + readonly originalImg: InputMaybe; + readonly originalName: InputMaybe; + readonly presentationHeight: InputMaybe; + readonly presentationWidth: InputMaybe; + readonly sizes: InputMaybe; + readonly src: InputMaybe; + readonly srcSet: InputMaybe; + readonly srcSetWebp: InputMaybe; + readonly srcWebp: InputMaybe; + readonly tracedSVG: InputMaybe; +}; + +type ImageSharpFluidSortInput = { + readonly aspectRatio: InputMaybe; + readonly base64: InputMaybe; + readonly originalImg: InputMaybe; + readonly originalName: InputMaybe; + readonly presentationHeight: InputMaybe; + readonly presentationWidth: InputMaybe; + readonly sizes: InputMaybe; + readonly src: InputMaybe; + readonly srcSet: InputMaybe; + readonly srcSetWebp: InputMaybe; + readonly srcWebp: InputMaybe; + readonly tracedSVG: InputMaybe; +}; + +type ImageSharpGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type ImageSharpGroupConnection_distinctArgs = { + field: ImageSharpFieldSelector; +}; + + +type ImageSharpGroupConnection_groupArgs = { + field: ImageSharpFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type ImageSharpGroupConnection_maxArgs = { + field: ImageSharpFieldSelector; +}; + + +type ImageSharpGroupConnection_minArgs = { + field: ImageSharpFieldSelector; +}; + + +type ImageSharpGroupConnection_sumArgs = { + field: ImageSharpFieldSelector; +}; + +type ImageSharpOriginal = { + readonly height: Maybe; + readonly src: Maybe; + readonly width: Maybe; +}; + +type ImageSharpOriginalFieldSelector = { + readonly height: InputMaybe; + readonly src: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpOriginalFilterInput = { + readonly height: InputMaybe; + readonly src: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpOriginalSortInput = { + readonly height: InputMaybe; + readonly src: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpResize = { + readonly aspectRatio: Maybe; + readonly height: Maybe; + readonly originalName: Maybe; + readonly src: Maybe; + readonly tracedSVG: Maybe; + readonly width: Maybe; +}; + +type ImageSharpResizeFieldSelector = { + readonly aspectRatio: InputMaybe; + readonly height: InputMaybe; + readonly originalName: InputMaybe; + readonly src: InputMaybe; + readonly tracedSVG: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpResizeFilterInput = { + readonly aspectRatio: InputMaybe; + readonly height: InputMaybe; + readonly originalName: InputMaybe; + readonly src: InputMaybe; + readonly tracedSVG: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpResizeSortInput = { + readonly aspectRatio: InputMaybe; + readonly height: InputMaybe; + readonly originalName: InputMaybe; + readonly src: InputMaybe; + readonly tracedSVG: InputMaybe; + readonly width: InputMaybe; +}; + +type ImageSharpSortInput = { + readonly children: InputMaybe; + readonly fixed: InputMaybe; + readonly fluid: InputMaybe; + readonly gatsbyImageData: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly original: InputMaybe; + readonly parent: InputMaybe; + readonly resize: InputMaybe; +}; + +type IntQueryOperatorInput = { + readonly eq: InputMaybe; + readonly gt: InputMaybe; + readonly gte: InputMaybe; + readonly in: InputMaybe>>; + readonly lt: InputMaybe; + readonly lte: InputMaybe; + readonly ne: InputMaybe; + readonly nin: InputMaybe>>; +}; + +type Internal = { + readonly content: Maybe; + readonly contentDigest: Scalars['String']; + readonly contentFilePath: Maybe; + readonly description: Maybe; + readonly fieldOwners: Maybe>>; + readonly ignoreType: Maybe; + readonly mediaType: Maybe; + readonly owner: Scalars['String']; + readonly type: Scalars['String']; +}; + +type InternalFieldSelector = { + readonly content: InputMaybe; + readonly contentDigest: InputMaybe; + readonly contentFilePath: InputMaybe; + readonly description: InputMaybe; + readonly fieldOwners: InputMaybe; + readonly ignoreType: InputMaybe; + readonly mediaType: InputMaybe; + readonly owner: InputMaybe; + readonly type: InputMaybe; +}; + +type InternalFilterInput = { + readonly content: InputMaybe; + readonly contentDigest: InputMaybe; + readonly contentFilePath: InputMaybe; + readonly description: InputMaybe; + readonly fieldOwners: InputMaybe; + readonly ignoreType: InputMaybe; + readonly mediaType: InputMaybe; + readonly owner: InputMaybe; + readonly type: InputMaybe; +}; + +type InternalSortInput = { + readonly content: InputMaybe; + readonly contentDigest: InputMaybe; + readonly contentFilePath: InputMaybe; + readonly description: InputMaybe; + readonly fieldOwners: InputMaybe; + readonly ignoreType: InputMaybe; + readonly mediaType: InputMaybe; + readonly owner: InputMaybe; + readonly type: InputMaybe; +}; + +type JPGOptions = { + readonly progressive: InputMaybe; + readonly quality: InputMaybe; +}; + +type JSONQueryOperatorInput = { + readonly eq: InputMaybe; + readonly glob: InputMaybe; + readonly in: InputMaybe>>; + readonly ne: InputMaybe; + readonly nin: InputMaybe>>; + readonly regex: InputMaybe; +}; + +type MarkdownExcerptFormats = + | 'HTML' + | 'MARKDOWN' + | 'PLAIN'; + +type MarkdownHeading = { + readonly depth: Maybe; + readonly id: Maybe; + readonly value: Maybe; +}; + +type MarkdownHeadingFieldSelector = { + readonly depth: InputMaybe; + readonly id: InputMaybe; + readonly value: InputMaybe; +}; + +type MarkdownHeadingFilterInput = { + readonly depth: InputMaybe; + readonly id: InputMaybe; + readonly value: InputMaybe; +}; + +type MarkdownHeadingFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type MarkdownHeadingLevels = + | 'h1' + | 'h2' + | 'h3' + | 'h4' + | 'h5' + | 'h6'; + +type MarkdownHeadingSortInput = { + readonly depth: InputMaybe; + readonly id: InputMaybe; + readonly value: InputMaybe; +}; + +type MarkdownRemark = Node & { + readonly children: ReadonlyArray; + readonly excerpt: Maybe; + readonly excerptAst: Maybe; + readonly fileAbsolutePath: Maybe; + readonly frontmatter: Maybe; + readonly headings: Maybe>>; + readonly html: Maybe; + readonly htmlAst: Maybe; + readonly id: Scalars['ID']; + readonly internal: Internal; + readonly parent: Maybe; + readonly rawMarkdownBody: Maybe; + readonly tableOfContents: Maybe; + readonly timeToRead: Maybe; + readonly wordCount: Maybe; +}; + + +type MarkdownRemark_excerptArgs = { + format?: InputMaybe; + pruneLength?: InputMaybe; + truncate?: InputMaybe; +}; + + +type MarkdownRemark_excerptAstArgs = { + pruneLength?: InputMaybe; + truncate?: InputMaybe; +}; + + +type MarkdownRemark_headingsArgs = { + depth: InputMaybe; +}; + + +type MarkdownRemark_tableOfContentsArgs = { + absolute?: InputMaybe; + heading: InputMaybe; + maxDepth: InputMaybe; + pathToSlugField?: InputMaybe; +}; + +type MarkdownRemarkConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type MarkdownRemarkConnection_distinctArgs = { + field: MarkdownRemarkFieldSelector; +}; + + +type MarkdownRemarkConnection_groupArgs = { + field: MarkdownRemarkFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type MarkdownRemarkConnection_maxArgs = { + field: MarkdownRemarkFieldSelector; +}; + + +type MarkdownRemarkConnection_minArgs = { + field: MarkdownRemarkFieldSelector; +}; + + +type MarkdownRemarkConnection_sumArgs = { + field: MarkdownRemarkFieldSelector; +}; + +type MarkdownRemarkEdge = { + readonly next: Maybe; + readonly node: MarkdownRemark; + readonly previous: Maybe; +}; + +type MarkdownRemarkFieldSelector = { + readonly children: InputMaybe; + readonly excerpt: InputMaybe; + readonly excerptAst: InputMaybe; + readonly fileAbsolutePath: InputMaybe; + readonly frontmatter: InputMaybe; + readonly headings: InputMaybe; + readonly html: InputMaybe; + readonly htmlAst: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; + readonly rawMarkdownBody: InputMaybe; + readonly tableOfContents: InputMaybe; + readonly timeToRead: InputMaybe; + readonly wordCount: InputMaybe; +}; + +type MarkdownRemarkFilterInput = { + readonly children: InputMaybe; + readonly excerpt: InputMaybe; + readonly excerptAst: InputMaybe; + readonly fileAbsolutePath: InputMaybe; + readonly frontmatter: InputMaybe; + readonly headings: InputMaybe; + readonly html: InputMaybe; + readonly htmlAst: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; + readonly rawMarkdownBody: InputMaybe; + readonly tableOfContents: InputMaybe; + readonly timeToRead: InputMaybe; + readonly wordCount: InputMaybe; +}; + +type MarkdownRemarkFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type MarkdownRemarkFrontmatter = { + readonly accomplicesDescr: Maybe; + readonly accomplicesHeading: Maybe; + readonly active: Maybe; + readonly application: Maybe; + readonly avatar: Maybe; + readonly awards: Maybe>>; + readonly bifpresents: Maybe; + readonly bluesky: Maybe; + readonly clientsSubtitle: Maybe; + readonly clientsTitle: Maybe; + readonly code: Maybe; + readonly contactCta: Maybe; + readonly cover: Maybe; + readonly date: Maybe; + readonly email: Maybe; + readonly emoji: Maybe; + readonly facebookid: Maybe; + readonly feature: Maybe; + readonly fname: Maybe; + readonly github: Maybe; + readonly githubid: Maybe; + readonly goodat: Maybe>>; + readonly goodatSubtitle: Maybe; + readonly goodatTitle: Maybe; + readonly heading: Maybe; + readonly highlight: Maybe; + readonly link: Maybe; + readonly lname: Maybe; + readonly logo: Maybe; + readonly mastodon: Maybe; + readonly membersDescr: Maybe; + readonly membersHeading: Maybe; + readonly membershipTab: Maybe; + readonly name: Maybe; + readonly needs: Maybe; + readonly overlordsDescr: Maybe; + readonly overlordsHeading: Maybe; + readonly partnershipTab: Maybe; + readonly path: Maybe; + readonly projectsCta: Maybe; + readonly projectsSubtitle: Maybe; + readonly projectsTitle: Maybe; + readonly publication: Maybe; + readonly quote: Maybe; + readonly role: Maybe>>; + readonly score: Maybe; + readonly services: Maybe>>; + readonly servicesSubtitle: Maybe; + readonly servicesTitle: Maybe; + readonly slides: Maybe>>; + readonly source: Maybe; + readonly subheading: Maybe; + readonly summary: Maybe; + readonly tagline: Maybe; + readonly testimonials: Maybe>>; + readonly testimonialsSubtitle: Maybe; + readonly testimonialsTitle: Maybe; + readonly timeframe: Maybe; + readonly title: Maybe; + readonly twitter: Maybe; + readonly twitterid: Maybe; + readonly uid: Maybe; + readonly website: Maybe; +}; + + +type MarkdownRemarkFrontmatter_dateArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + +type MarkdownRemarkFrontmatterAwards = { + readonly description: Maybe; + readonly name: Maybe; + readonly url: Maybe; +}; + +type MarkdownRemarkFrontmatterAwardsFieldSelector = { + readonly description: InputMaybe; + readonly name: InputMaybe; + readonly url: InputMaybe; +}; + +type MarkdownRemarkFrontmatterAwardsFilterInput = { + readonly description: InputMaybe; + readonly name: InputMaybe; + readonly url: InputMaybe; +}; + +type MarkdownRemarkFrontmatterAwardsFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type MarkdownRemarkFrontmatterAwardsSortInput = { + readonly description: InputMaybe; + readonly name: InputMaybe; + readonly url: InputMaybe; +}; + +type MarkdownRemarkFrontmatterFieldSelector = { + readonly accomplicesDescr: InputMaybe; + readonly accomplicesHeading: InputMaybe; + readonly active: InputMaybe; + readonly application: InputMaybe; + readonly avatar: InputMaybe; + readonly awards: InputMaybe; + readonly bifpresents: InputMaybe; + readonly bluesky: InputMaybe; + readonly clientsSubtitle: InputMaybe; + readonly clientsTitle: InputMaybe; + readonly code: InputMaybe; + readonly contactCta: InputMaybe; + readonly cover: InputMaybe; + readonly date: InputMaybe; + readonly email: InputMaybe; + readonly emoji: InputMaybe; + readonly facebookid: InputMaybe; + readonly feature: InputMaybe; + readonly fname: InputMaybe; + readonly github: InputMaybe; + readonly githubid: InputMaybe; + readonly goodat: InputMaybe; + readonly goodatSubtitle: InputMaybe; + readonly goodatTitle: InputMaybe; + readonly heading: InputMaybe; + readonly highlight: InputMaybe; + readonly link: InputMaybe; + readonly lname: InputMaybe; + readonly logo: InputMaybe; + readonly mastodon: InputMaybe; + readonly membersDescr: InputMaybe; + readonly membersHeading: InputMaybe; + readonly membershipTab: InputMaybe; + readonly name: InputMaybe; + readonly needs: InputMaybe; + readonly overlordsDescr: InputMaybe; + readonly overlordsHeading: InputMaybe; + readonly partnershipTab: InputMaybe; + readonly path: InputMaybe; + readonly projectsCta: InputMaybe; + readonly projectsSubtitle: InputMaybe; + readonly projectsTitle: InputMaybe; + readonly publication: InputMaybe; + readonly quote: InputMaybe; + readonly role: InputMaybe; + readonly score: InputMaybe; + readonly services: InputMaybe; + readonly servicesSubtitle: InputMaybe; + readonly servicesTitle: InputMaybe; + readonly slides: InputMaybe; + readonly source: InputMaybe; + readonly subheading: InputMaybe; + readonly summary: InputMaybe; + readonly tagline: InputMaybe; + readonly testimonials: InputMaybe; + readonly testimonialsSubtitle: InputMaybe; + readonly testimonialsTitle: InputMaybe; + readonly timeframe: InputMaybe; + readonly title: InputMaybe; + readonly twitter: InputMaybe; + readonly twitterid: InputMaybe; + readonly uid: InputMaybe; + readonly website: InputMaybe; +}; + +type MarkdownRemarkFrontmatterFilterInput = { + readonly accomplicesDescr: InputMaybe; + readonly accomplicesHeading: InputMaybe; + readonly active: InputMaybe; + readonly application: InputMaybe; + readonly avatar: InputMaybe; + readonly awards: InputMaybe; + readonly bifpresents: InputMaybe; + readonly bluesky: InputMaybe; + readonly clientsSubtitle: InputMaybe; + readonly clientsTitle: InputMaybe; + readonly code: InputMaybe; + readonly contactCta: InputMaybe; + readonly cover: InputMaybe; + readonly date: InputMaybe; + readonly email: InputMaybe; + readonly emoji: InputMaybe; + readonly facebookid: InputMaybe; + readonly feature: InputMaybe; + readonly fname: InputMaybe; + readonly github: InputMaybe; + readonly githubid: InputMaybe; + readonly goodat: InputMaybe; + readonly goodatSubtitle: InputMaybe; + readonly goodatTitle: InputMaybe; + readonly heading: InputMaybe; + readonly highlight: InputMaybe; + readonly link: InputMaybe; + readonly lname: InputMaybe; + readonly logo: InputMaybe; + readonly mastodon: InputMaybe; + readonly membersDescr: InputMaybe; + readonly membersHeading: InputMaybe; + readonly membershipTab: InputMaybe; + readonly name: InputMaybe; + readonly needs: InputMaybe; + readonly overlordsDescr: InputMaybe; + readonly overlordsHeading: InputMaybe; + readonly partnershipTab: InputMaybe; + readonly path: InputMaybe; + readonly projectsCta: InputMaybe; + readonly projectsSubtitle: InputMaybe; + readonly projectsTitle: InputMaybe; + readonly publication: InputMaybe; + readonly quote: InputMaybe; + readonly role: InputMaybe; + readonly score: InputMaybe; + readonly services: InputMaybe; + readonly servicesSubtitle: InputMaybe; + readonly servicesTitle: InputMaybe; + readonly slides: InputMaybe; + readonly source: InputMaybe; + readonly subheading: InputMaybe; + readonly summary: InputMaybe; + readonly tagline: InputMaybe; + readonly testimonials: InputMaybe; + readonly testimonialsSubtitle: InputMaybe; + readonly testimonialsTitle: InputMaybe; + readonly timeframe: InputMaybe; + readonly title: InputMaybe; + readonly twitter: InputMaybe; + readonly twitterid: InputMaybe; + readonly uid: InputMaybe; + readonly website: InputMaybe; +}; + +type MarkdownRemarkFrontmatterGoodat = { + readonly text: Maybe; + readonly title: Maybe; +}; + +type MarkdownRemarkFrontmatterGoodatFieldSelector = { + readonly text: InputMaybe; + readonly title: InputMaybe; +}; + +type MarkdownRemarkFrontmatterGoodatFilterInput = { + readonly text: InputMaybe; + readonly title: InputMaybe; +}; + +type MarkdownRemarkFrontmatterGoodatFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type MarkdownRemarkFrontmatterGoodatSortInput = { + readonly text: InputMaybe; + readonly title: InputMaybe; +}; + +type MarkdownRemarkFrontmatterNeeds = { + readonly code: Maybe; + readonly graphic: Maybe; + readonly money: Maybe; + readonly other: Maybe; + readonly users: Maybe; + readonly uxui: Maybe; +}; + +type MarkdownRemarkFrontmatterNeedsFieldSelector = { + readonly code: InputMaybe; + readonly graphic: InputMaybe; + readonly money: InputMaybe; + readonly other: InputMaybe; + readonly users: InputMaybe; + readonly uxui: InputMaybe; +}; + +type MarkdownRemarkFrontmatterNeedsFilterInput = { + readonly code: InputMaybe; + readonly graphic: InputMaybe; + readonly money: InputMaybe; + readonly other: InputMaybe; + readonly users: InputMaybe; + readonly uxui: InputMaybe; +}; + +type MarkdownRemarkFrontmatterNeedsSortInput = { + readonly code: InputMaybe; + readonly graphic: InputMaybe; + readonly money: InputMaybe; + readonly other: InputMaybe; + readonly users: InputMaybe; + readonly uxui: InputMaybe; +}; + +type MarkdownRemarkFrontmatterRole = { + readonly accomplice: Maybe; + readonly member: Maybe; + readonly overlord: Maybe; +}; + +type MarkdownRemarkFrontmatterRoleFieldSelector = { + readonly accomplice: InputMaybe; + readonly member: InputMaybe; + readonly overlord: InputMaybe; +}; + +type MarkdownRemarkFrontmatterRoleFilterInput = { + readonly accomplice: InputMaybe; + readonly member: InputMaybe; + readonly overlord: InputMaybe; +}; + +type MarkdownRemarkFrontmatterRoleFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type MarkdownRemarkFrontmatterRoleSortInput = { + readonly accomplice: InputMaybe; + readonly member: InputMaybe; + readonly overlord: InputMaybe; +}; + +type MarkdownRemarkFrontmatterServices = { + readonly text: Maybe; + readonly title: Maybe; +}; + +type MarkdownRemarkFrontmatterServicesFieldSelector = { + readonly text: InputMaybe; + readonly title: InputMaybe; +}; + +type MarkdownRemarkFrontmatterServicesFilterInput = { + readonly text: InputMaybe; + readonly title: InputMaybe; +}; + +type MarkdownRemarkFrontmatterServicesFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type MarkdownRemarkFrontmatterServicesSortInput = { + readonly text: InputMaybe; + readonly title: InputMaybe; +}; + +type MarkdownRemarkFrontmatterSortInput = { + readonly accomplicesDescr: InputMaybe; + readonly accomplicesHeading: InputMaybe; + readonly active: InputMaybe; + readonly application: InputMaybe; + readonly avatar: InputMaybe; + readonly awards: InputMaybe; + readonly bifpresents: InputMaybe; + readonly bluesky: InputMaybe; + readonly clientsSubtitle: InputMaybe; + readonly clientsTitle: InputMaybe; + readonly code: InputMaybe; + readonly contactCta: InputMaybe; + readonly cover: InputMaybe; + readonly date: InputMaybe; + readonly email: InputMaybe; + readonly emoji: InputMaybe; + readonly facebookid: InputMaybe; + readonly feature: InputMaybe; + readonly fname: InputMaybe; + readonly github: InputMaybe; + readonly githubid: InputMaybe; + readonly goodat: InputMaybe; + readonly goodatSubtitle: InputMaybe; + readonly goodatTitle: InputMaybe; + readonly heading: InputMaybe; + readonly highlight: InputMaybe; + readonly link: InputMaybe; + readonly lname: InputMaybe; + readonly logo: InputMaybe; + readonly mastodon: InputMaybe; + readonly membersDescr: InputMaybe; + readonly membersHeading: InputMaybe; + readonly membershipTab: InputMaybe; + readonly name: InputMaybe; + readonly needs: InputMaybe; + readonly overlordsDescr: InputMaybe; + readonly overlordsHeading: InputMaybe; + readonly partnershipTab: InputMaybe; + readonly path: InputMaybe; + readonly projectsCta: InputMaybe; + readonly projectsSubtitle: InputMaybe; + readonly projectsTitle: InputMaybe; + readonly publication: InputMaybe; + readonly quote: InputMaybe; + readonly role: InputMaybe; + readonly score: InputMaybe; + readonly services: InputMaybe; + readonly servicesSubtitle: InputMaybe; + readonly servicesTitle: InputMaybe; + readonly slides: InputMaybe; + readonly source: InputMaybe; + readonly subheading: InputMaybe; + readonly summary: InputMaybe; + readonly tagline: InputMaybe; + readonly testimonials: InputMaybe; + readonly testimonialsSubtitle: InputMaybe; + readonly testimonialsTitle: InputMaybe; + readonly timeframe: InputMaybe; + readonly title: InputMaybe; + readonly twitter: InputMaybe; + readonly twitterid: InputMaybe; + readonly uid: InputMaybe; + readonly website: InputMaybe; +}; + +type MarkdownRemarkFrontmatterTestimonials = { + readonly source: Maybe; + readonly span: Maybe; + readonly text: Maybe; +}; + +type MarkdownRemarkFrontmatterTestimonialsFieldSelector = { + readonly source: InputMaybe; + readonly span: InputMaybe; + readonly text: InputMaybe; +}; + +type MarkdownRemarkFrontmatterTestimonialsFilterInput = { + readonly source: InputMaybe; + readonly span: InputMaybe; + readonly text: InputMaybe; +}; + +type MarkdownRemarkFrontmatterTestimonialsFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type MarkdownRemarkFrontmatterTestimonialsSortInput = { + readonly source: InputMaybe; + readonly span: InputMaybe; + readonly text: InputMaybe; +}; + +type MarkdownRemarkGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type MarkdownRemarkGroupConnection_distinctArgs = { + field: MarkdownRemarkFieldSelector; +}; + + +type MarkdownRemarkGroupConnection_groupArgs = { + field: MarkdownRemarkFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type MarkdownRemarkGroupConnection_maxArgs = { + field: MarkdownRemarkFieldSelector; +}; + + +type MarkdownRemarkGroupConnection_minArgs = { + field: MarkdownRemarkFieldSelector; +}; + + +type MarkdownRemarkGroupConnection_sumArgs = { + field: MarkdownRemarkFieldSelector; +}; + +type MarkdownRemarkSortInput = { + readonly children: InputMaybe; + readonly excerpt: InputMaybe; + readonly excerptAst: InputMaybe; + readonly fileAbsolutePath: InputMaybe; + readonly frontmatter: InputMaybe; + readonly headings: InputMaybe; + readonly html: InputMaybe; + readonly htmlAst: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; + readonly rawMarkdownBody: InputMaybe; + readonly tableOfContents: InputMaybe; + readonly timeToRead: InputMaybe; + readonly wordCount: InputMaybe; +}; + +type MarkdownWordCount = { + readonly paragraphs: Maybe; + readonly sentences: Maybe; + readonly words: Maybe; +}; + +type MarkdownWordCountFieldSelector = { + readonly paragraphs: InputMaybe; + readonly sentences: InputMaybe; + readonly words: InputMaybe; +}; + +type MarkdownWordCountFilterInput = { + readonly paragraphs: InputMaybe; + readonly sentences: InputMaybe; + readonly words: InputMaybe; +}; + +type MarkdownWordCountSortInput = { + readonly paragraphs: InputMaybe; + readonly sentences: InputMaybe; + readonly words: InputMaybe; +}; + +/** Node Interface */ +type Node = { + readonly children: ReadonlyArray; + readonly id: Scalars['ID']; + readonly internal: Internal; + readonly parent: Maybe; +}; + +type NodeFieldSelector = { + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; +}; + +type NodeFilterInput = { + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; +}; + +type NodeFilterListInput = { + readonly elemMatch: InputMaybe; +}; + +type NodeSortInput = { + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; +}; + +type PNGOptions = { + readonly compressionSpeed: InputMaybe; + readonly quality: InputMaybe; +}; + +type PageInfo = { + readonly currentPage: Scalars['Int']; + readonly hasNextPage: Scalars['Boolean']; + readonly hasPreviousPage: Scalars['Boolean']; + readonly itemCount: Scalars['Int']; + readonly pageCount: Scalars['Int']; + readonly perPage: Maybe; + readonly totalCount: Scalars['Int']; +}; + +type Potrace = { + readonly alphaMax: InputMaybe; + readonly background: InputMaybe; + readonly blackOnWhite: InputMaybe; + readonly color: InputMaybe; + readonly optCurve: InputMaybe; + readonly optTolerance: InputMaybe; + readonly threshold: InputMaybe; + readonly turdSize: InputMaybe; + readonly turnPolicy: InputMaybe; +}; + +type PotraceTurnPolicy = + | 'black' + | 'left' + | 'majority' + | 'minority' + | 'right' + | 'white'; + +type Query = { + readonly allDirectory: DirectoryConnection; + readonly allFile: FileConnection; + readonly allImageSharp: ImageSharpConnection; + readonly allMarkdownRemark: MarkdownRemarkConnection; + readonly allSite: SiteConnection; + readonly allSiteBuildMetadata: SiteBuildMetadataConnection; + readonly allSiteFunction: SiteFunctionConnection; + readonly allSitePage: SitePageConnection; + readonly allSitePlugin: SitePluginConnection; + readonly directory: Maybe; + readonly file: Maybe; + readonly imageSharp: Maybe; + readonly markdownRemark: Maybe; + readonly site: Maybe; + readonly siteBuildMetadata: Maybe; + readonly siteFunction: Maybe; + readonly sitePage: Maybe; + readonly sitePlugin: Maybe; +}; + + +type Query_allDirectoryArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_allFileArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_allImageSharpArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_allMarkdownRemarkArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_allSiteArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_allSiteBuildMetadataArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_allSiteFunctionArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_allSitePageArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_allSitePluginArgs = { + filter: InputMaybe; + limit: InputMaybe; + skip: InputMaybe; + sort: InputMaybe>>; +}; + + +type Query_directoryArgs = { + absolutePath: InputMaybe; + accessTime: InputMaybe; + atime: InputMaybe; + atimeMs: InputMaybe; + base: InputMaybe; + birthTime: InputMaybe; + birthtime: InputMaybe; + birthtimeMs: InputMaybe; + changeTime: InputMaybe; + children: InputMaybe; + ctime: InputMaybe; + ctimeMs: InputMaybe; + dev: InputMaybe; + dir: InputMaybe; + ext: InputMaybe; + extension: InputMaybe; + gid: InputMaybe; + id: InputMaybe; + ino: InputMaybe; + internal: InputMaybe; + mode: InputMaybe; + modifiedTime: InputMaybe; + mtime: InputMaybe; + mtimeMs: InputMaybe; + name: InputMaybe; + nlink: InputMaybe; + parent: InputMaybe; + prettySize: InputMaybe; + rdev: InputMaybe; + relativeDirectory: InputMaybe; + relativePath: InputMaybe; + root: InputMaybe; + size: InputMaybe; + sourceInstanceName: InputMaybe; + uid: InputMaybe; +}; + + +type Query_fileArgs = { + absolutePath: InputMaybe; + accessTime: InputMaybe; + atime: InputMaybe; + atimeMs: InputMaybe; + base: InputMaybe; + birthTime: InputMaybe; + birthtime: InputMaybe; + birthtimeMs: InputMaybe; + blksize: InputMaybe; + blocks: InputMaybe; + changeTime: InputMaybe; + childImageSharp: InputMaybe; + childMarkdownRemark: InputMaybe; + children: InputMaybe; + childrenImageSharp: InputMaybe; + childrenMarkdownRemark: InputMaybe; + ctime: InputMaybe; + ctimeMs: InputMaybe; + dev: InputMaybe; + dir: InputMaybe; + ext: InputMaybe; + extension: InputMaybe; + gid: InputMaybe; + id: InputMaybe; + ino: InputMaybe; + internal: InputMaybe; + mode: InputMaybe; + modifiedTime: InputMaybe; + mtime: InputMaybe; + mtimeMs: InputMaybe; + name: InputMaybe; + nlink: InputMaybe; + parent: InputMaybe; + prettySize: InputMaybe; + publicURL: InputMaybe; + rdev: InputMaybe; + relativeDirectory: InputMaybe; + relativePath: InputMaybe; + root: InputMaybe; + size: InputMaybe; + sourceInstanceName: InputMaybe; + uid: InputMaybe; +}; + + +type Query_imageSharpArgs = { + children: InputMaybe; + fixed: InputMaybe; + fluid: InputMaybe; + gatsbyImageData: InputMaybe; + id: InputMaybe; + internal: InputMaybe; + original: InputMaybe; + parent: InputMaybe; + resize: InputMaybe; +}; + + +type Query_markdownRemarkArgs = { + children: InputMaybe; + excerpt: InputMaybe; + excerptAst: InputMaybe; + fileAbsolutePath: InputMaybe; + frontmatter: InputMaybe; + headings: InputMaybe; + html: InputMaybe; + htmlAst: InputMaybe; + id: InputMaybe; + internal: InputMaybe; + parent: InputMaybe; + rawMarkdownBody: InputMaybe; + tableOfContents: InputMaybe; + timeToRead: InputMaybe; + wordCount: InputMaybe; +}; + + +type Query_siteArgs = { + buildTime: InputMaybe; + children: InputMaybe; + graphqlTypegen: InputMaybe; + host: InputMaybe; + id: InputMaybe; + internal: InputMaybe; + jsxRuntime: InputMaybe; + parent: InputMaybe; + pathPrefix: InputMaybe; + polyfill: InputMaybe; + port: InputMaybe; + siteMetadata: InputMaybe; + trailingSlash: InputMaybe; +}; + + +type Query_siteBuildMetadataArgs = { + buildTime: InputMaybe; + children: InputMaybe; + id: InputMaybe; + internal: InputMaybe; + parent: InputMaybe; +}; + + +type Query_siteFunctionArgs = { + absoluteCompiledFilePath: InputMaybe; + children: InputMaybe; + functionRoute: InputMaybe; + id: InputMaybe; + internal: InputMaybe; + matchPath: InputMaybe; + originalAbsoluteFilePath: InputMaybe; + originalRelativeFilePath: InputMaybe; + parent: InputMaybe; + pluginName: InputMaybe; + relativeCompiledFilePath: InputMaybe; +}; + + +type Query_sitePageArgs = { + children: InputMaybe; + component: InputMaybe; + componentChunkName: InputMaybe; + id: InputMaybe; + internal: InputMaybe; + internalComponentName: InputMaybe; + matchPath: InputMaybe; + pageContext: InputMaybe; + parent: InputMaybe; + path: InputMaybe; + pluginCreator: InputMaybe; +}; + + +type Query_sitePluginArgs = { + browserAPIs: InputMaybe; + children: InputMaybe; + id: InputMaybe; + internal: InputMaybe; + name: InputMaybe; + nodeAPIs: InputMaybe; + packageJson: InputMaybe; + parent: InputMaybe; + pluginFilepath: InputMaybe; + pluginOptions: InputMaybe; + resolve: InputMaybe; + ssrAPIs: InputMaybe; + version: InputMaybe; +}; + +type Site = Node & { + readonly buildTime: Maybe; + readonly children: ReadonlyArray; + readonly graphqlTypegen: Maybe; + readonly host: Maybe; + readonly id: Scalars['ID']; + readonly internal: Internal; + readonly jsxRuntime: Maybe; + readonly parent: Maybe; + readonly pathPrefix: Maybe; + readonly polyfill: Maybe; + readonly port: Maybe; + readonly siteMetadata: Maybe; + readonly trailingSlash: Maybe; +}; + + +type Site_buildTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + +type SiteBuildMetadata = Node & { + readonly buildTime: Maybe; + readonly children: ReadonlyArray; + readonly id: Scalars['ID']; + readonly internal: Internal; + readonly parent: Maybe; +}; + + +type SiteBuildMetadata_buildTimeArgs = { + difference: InputMaybe; + formatString: InputMaybe; + fromNow: InputMaybe; + locale: InputMaybe; +}; + +type SiteBuildMetadataConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SiteBuildMetadataConnection_distinctArgs = { + field: SiteBuildMetadataFieldSelector; +}; + + +type SiteBuildMetadataConnection_groupArgs = { + field: SiteBuildMetadataFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SiteBuildMetadataConnection_maxArgs = { + field: SiteBuildMetadataFieldSelector; +}; + + +type SiteBuildMetadataConnection_minArgs = { + field: SiteBuildMetadataFieldSelector; +}; + + +type SiteBuildMetadataConnection_sumArgs = { + field: SiteBuildMetadataFieldSelector; +}; + +type SiteBuildMetadataEdge = { + readonly next: Maybe; + readonly node: SiteBuildMetadata; + readonly previous: Maybe; +}; + +type SiteBuildMetadataFieldSelector = { + readonly buildTime: InputMaybe; + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; +}; + +type SiteBuildMetadataFilterInput = { + readonly buildTime: InputMaybe; + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; +}; + +type SiteBuildMetadataGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SiteBuildMetadataGroupConnection_distinctArgs = { + field: SiteBuildMetadataFieldSelector; +}; + + +type SiteBuildMetadataGroupConnection_groupArgs = { + field: SiteBuildMetadataFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SiteBuildMetadataGroupConnection_maxArgs = { + field: SiteBuildMetadataFieldSelector; +}; + + +type SiteBuildMetadataGroupConnection_minArgs = { + field: SiteBuildMetadataFieldSelector; +}; + + +type SiteBuildMetadataGroupConnection_sumArgs = { + field: SiteBuildMetadataFieldSelector; +}; + +type SiteBuildMetadataSortInput = { + readonly buildTime: InputMaybe; + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly parent: InputMaybe; +}; + +type SiteConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SiteConnection_distinctArgs = { + field: SiteFieldSelector; +}; + + +type SiteConnection_groupArgs = { + field: SiteFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SiteConnection_maxArgs = { + field: SiteFieldSelector; +}; + + +type SiteConnection_minArgs = { + field: SiteFieldSelector; +}; + + +type SiteConnection_sumArgs = { + field: SiteFieldSelector; +}; + +type SiteEdge = { + readonly next: Maybe; + readonly node: Site; + readonly previous: Maybe; +}; + +type SiteFieldSelector = { + readonly buildTime: InputMaybe; + readonly children: InputMaybe; + readonly graphqlTypegen: InputMaybe; + readonly host: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly jsxRuntime: InputMaybe; + readonly parent: InputMaybe; + readonly pathPrefix: InputMaybe; + readonly polyfill: InputMaybe; + readonly port: InputMaybe; + readonly siteMetadata: InputMaybe; + readonly trailingSlash: InputMaybe; +}; + +type SiteFilterInput = { + readonly buildTime: InputMaybe; + readonly children: InputMaybe; + readonly graphqlTypegen: InputMaybe; + readonly host: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly jsxRuntime: InputMaybe; + readonly parent: InputMaybe; + readonly pathPrefix: InputMaybe; + readonly polyfill: InputMaybe; + readonly port: InputMaybe; + readonly siteMetadata: InputMaybe; + readonly trailingSlash: InputMaybe; +}; + +type SiteFunction = Node & { + readonly absoluteCompiledFilePath: Scalars['String']; + readonly children: ReadonlyArray; + readonly functionRoute: Scalars['String']; + readonly id: Scalars['ID']; + readonly internal: Internal; + readonly matchPath: Maybe; + readonly originalAbsoluteFilePath: Scalars['String']; + readonly originalRelativeFilePath: Scalars['String']; + readonly parent: Maybe; + readonly pluginName: Scalars['String']; + readonly relativeCompiledFilePath: Scalars['String']; +}; + +type SiteFunctionConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SiteFunctionConnection_distinctArgs = { + field: SiteFunctionFieldSelector; +}; + + +type SiteFunctionConnection_groupArgs = { + field: SiteFunctionFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SiteFunctionConnection_maxArgs = { + field: SiteFunctionFieldSelector; +}; + + +type SiteFunctionConnection_minArgs = { + field: SiteFunctionFieldSelector; +}; + + +type SiteFunctionConnection_sumArgs = { + field: SiteFunctionFieldSelector; +}; + +type SiteFunctionEdge = { + readonly next: Maybe; + readonly node: SiteFunction; + readonly previous: Maybe; +}; + +type SiteFunctionFieldSelector = { + readonly absoluteCompiledFilePath: InputMaybe; + readonly children: InputMaybe; + readonly functionRoute: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly matchPath: InputMaybe; + readonly originalAbsoluteFilePath: InputMaybe; + readonly originalRelativeFilePath: InputMaybe; + readonly parent: InputMaybe; + readonly pluginName: InputMaybe; + readonly relativeCompiledFilePath: InputMaybe; +}; + +type SiteFunctionFilterInput = { + readonly absoluteCompiledFilePath: InputMaybe; + readonly children: InputMaybe; + readonly functionRoute: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly matchPath: InputMaybe; + readonly originalAbsoluteFilePath: InputMaybe; + readonly originalRelativeFilePath: InputMaybe; + readonly parent: InputMaybe; + readonly pluginName: InputMaybe; + readonly relativeCompiledFilePath: InputMaybe; +}; + +type SiteFunctionGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SiteFunctionGroupConnection_distinctArgs = { + field: SiteFunctionFieldSelector; +}; + + +type SiteFunctionGroupConnection_groupArgs = { + field: SiteFunctionFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SiteFunctionGroupConnection_maxArgs = { + field: SiteFunctionFieldSelector; +}; + + +type SiteFunctionGroupConnection_minArgs = { + field: SiteFunctionFieldSelector; +}; + + +type SiteFunctionGroupConnection_sumArgs = { + field: SiteFunctionFieldSelector; +}; + +type SiteFunctionSortInput = { + readonly absoluteCompiledFilePath: InputMaybe; + readonly children: InputMaybe; + readonly functionRoute: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly matchPath: InputMaybe; + readonly originalAbsoluteFilePath: InputMaybe; + readonly originalRelativeFilePath: InputMaybe; + readonly parent: InputMaybe; + readonly pluginName: InputMaybe; + readonly relativeCompiledFilePath: InputMaybe; +}; + +type SiteGraphqlTypegen = { + readonly documentSearchPaths: Maybe>>; + readonly generateOnBuild: Maybe; + readonly typesOutputPath: Maybe; +}; + +type SiteGraphqlTypegenFieldSelector = { + readonly documentSearchPaths: InputMaybe; + readonly generateOnBuild: InputMaybe; + readonly typesOutputPath: InputMaybe; +}; + +type SiteGraphqlTypegenFilterInput = { + readonly documentSearchPaths: InputMaybe; + readonly generateOnBuild: InputMaybe; + readonly typesOutputPath: InputMaybe; +}; + +type SiteGraphqlTypegenSortInput = { + readonly documentSearchPaths: InputMaybe; + readonly generateOnBuild: InputMaybe; + readonly typesOutputPath: InputMaybe; +}; + +type SiteGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SiteGroupConnection_distinctArgs = { + field: SiteFieldSelector; +}; + + +type SiteGroupConnection_groupArgs = { + field: SiteFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SiteGroupConnection_maxArgs = { + field: SiteFieldSelector; +}; + + +type SiteGroupConnection_minArgs = { + field: SiteFieldSelector; +}; + + +type SiteGroupConnection_sumArgs = { + field: SiteFieldSelector; +}; + +type SitePage = Node & { + readonly children: ReadonlyArray; + readonly component: Scalars['String']; + readonly componentChunkName: Scalars['String']; + readonly id: Scalars['ID']; + readonly internal: Internal; + readonly internalComponentName: Scalars['String']; + readonly matchPath: Maybe; + readonly pageContext: Maybe; + readonly parent: Maybe; + readonly path: Scalars['String']; + readonly pluginCreator: Maybe; +}; + +type SitePageConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SitePageConnection_distinctArgs = { + field: SitePageFieldSelector; +}; + + +type SitePageConnection_groupArgs = { + field: SitePageFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SitePageConnection_maxArgs = { + field: SitePageFieldSelector; +}; + + +type SitePageConnection_minArgs = { + field: SitePageFieldSelector; +}; + + +type SitePageConnection_sumArgs = { + field: SitePageFieldSelector; +}; + +type SitePageEdge = { + readonly next: Maybe; + readonly node: SitePage; + readonly previous: Maybe; +}; + +type SitePageFieldSelector = { + readonly children: InputMaybe; + readonly component: InputMaybe; + readonly componentChunkName: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly internalComponentName: InputMaybe; + readonly matchPath: InputMaybe; + readonly pageContext: InputMaybe; + readonly parent: InputMaybe; + readonly path: InputMaybe; + readonly pluginCreator: InputMaybe; +}; + +type SitePageFilterInput = { + readonly children: InputMaybe; + readonly component: InputMaybe; + readonly componentChunkName: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly internalComponentName: InputMaybe; + readonly matchPath: InputMaybe; + readonly pageContext: InputMaybe; + readonly parent: InputMaybe; + readonly path: InputMaybe; + readonly pluginCreator: InputMaybe; +}; + +type SitePageGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SitePageGroupConnection_distinctArgs = { + field: SitePageFieldSelector; +}; + + +type SitePageGroupConnection_groupArgs = { + field: SitePageFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SitePageGroupConnection_maxArgs = { + field: SitePageFieldSelector; +}; + + +type SitePageGroupConnection_minArgs = { + field: SitePageFieldSelector; +}; + + +type SitePageGroupConnection_sumArgs = { + field: SitePageFieldSelector; +}; + +type SitePageSortInput = { + readonly children: InputMaybe; + readonly component: InputMaybe; + readonly componentChunkName: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly internalComponentName: InputMaybe; + readonly matchPath: InputMaybe; + readonly pageContext: InputMaybe; + readonly parent: InputMaybe; + readonly path: InputMaybe; + readonly pluginCreator: InputMaybe; +}; + +type SitePlugin = Node & { + readonly browserAPIs: Maybe>>; + readonly children: ReadonlyArray; + readonly id: Scalars['ID']; + readonly internal: Internal; + readonly name: Maybe; + readonly nodeAPIs: Maybe>>; + readonly packageJson: Maybe; + readonly parent: Maybe; + readonly pluginFilepath: Maybe; + readonly pluginOptions: Maybe; + readonly resolve: Maybe; + readonly ssrAPIs: Maybe>>; + readonly version: Maybe; +}; + +type SitePluginConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SitePluginConnection_distinctArgs = { + field: SitePluginFieldSelector; +}; + + +type SitePluginConnection_groupArgs = { + field: SitePluginFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SitePluginConnection_maxArgs = { + field: SitePluginFieldSelector; +}; + + +type SitePluginConnection_minArgs = { + field: SitePluginFieldSelector; +}; + + +type SitePluginConnection_sumArgs = { + field: SitePluginFieldSelector; +}; + +type SitePluginEdge = { + readonly next: Maybe; + readonly node: SitePlugin; + readonly previous: Maybe; +}; + +type SitePluginFieldSelector = { + readonly browserAPIs: InputMaybe; + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly name: InputMaybe; + readonly nodeAPIs: InputMaybe; + readonly packageJson: InputMaybe; + readonly parent: InputMaybe; + readonly pluginFilepath: InputMaybe; + readonly pluginOptions: InputMaybe; + readonly resolve: InputMaybe; + readonly ssrAPIs: InputMaybe; + readonly version: InputMaybe; +}; + +type SitePluginFilterInput = { + readonly browserAPIs: InputMaybe; + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly name: InputMaybe; + readonly nodeAPIs: InputMaybe; + readonly packageJson: InputMaybe; + readonly parent: InputMaybe; + readonly pluginFilepath: InputMaybe; + readonly pluginOptions: InputMaybe; + readonly resolve: InputMaybe; + readonly ssrAPIs: InputMaybe; + readonly version: InputMaybe; +}; + +type SitePluginGroupConnection = { + readonly distinct: ReadonlyArray; + readonly edges: ReadonlyArray; + readonly field: Scalars['String']; + readonly fieldValue: Maybe; + readonly group: ReadonlyArray; + readonly max: Maybe; + readonly min: Maybe; + readonly nodes: ReadonlyArray; + readonly pageInfo: PageInfo; + readonly sum: Maybe; + readonly totalCount: Scalars['Int']; +}; + + +type SitePluginGroupConnection_distinctArgs = { + field: SitePluginFieldSelector; +}; + + +type SitePluginGroupConnection_groupArgs = { + field: SitePluginFieldSelector; + limit: InputMaybe; + skip: InputMaybe; +}; + + +type SitePluginGroupConnection_maxArgs = { + field: SitePluginFieldSelector; +}; + + +type SitePluginGroupConnection_minArgs = { + field: SitePluginFieldSelector; +}; + + +type SitePluginGroupConnection_sumArgs = { + field: SitePluginFieldSelector; +}; + +type SitePluginSortInput = { + readonly browserAPIs: InputMaybe; + readonly children: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly name: InputMaybe; + readonly nodeAPIs: InputMaybe; + readonly packageJson: InputMaybe; + readonly parent: InputMaybe; + readonly pluginFilepath: InputMaybe; + readonly pluginOptions: InputMaybe; + readonly resolve: InputMaybe; + readonly ssrAPIs: InputMaybe; + readonly version: InputMaybe; +}; + +type SiteSiteMetadata = { + readonly description: Maybe; + readonly title: Maybe; +}; + +type SiteSiteMetadataFieldSelector = { + readonly description: InputMaybe; + readonly title: InputMaybe; +}; + +type SiteSiteMetadataFilterInput = { + readonly description: InputMaybe; + readonly title: InputMaybe; +}; + +type SiteSiteMetadataSortInput = { + readonly description: InputMaybe; + readonly title: InputMaybe; +}; + +type SiteSortInput = { + readonly buildTime: InputMaybe; + readonly children: InputMaybe; + readonly graphqlTypegen: InputMaybe; + readonly host: InputMaybe; + readonly id: InputMaybe; + readonly internal: InputMaybe; + readonly jsxRuntime: InputMaybe; + readonly parent: InputMaybe; + readonly pathPrefix: InputMaybe; + readonly polyfill: InputMaybe; + readonly port: InputMaybe; + readonly siteMetadata: InputMaybe; + readonly trailingSlash: InputMaybe; +}; + +type SortOrderEnum = + | 'ASC' + | 'DESC'; + +type StringQueryOperatorInput = { + readonly eq: InputMaybe; + readonly glob: InputMaybe; + readonly in: InputMaybe>>; + readonly ne: InputMaybe; + readonly nin: InputMaybe>>; + readonly regex: InputMaybe; +}; + +type TransformOptions = { + readonly cropFocus: InputMaybe; + readonly duotone: InputMaybe; + readonly fit: InputMaybe; + readonly grayscale: InputMaybe; + readonly rotate: InputMaybe; + readonly trim: InputMaybe; +}; + +type WebPOptions = { + readonly quality: InputMaybe; +}; + +type AboutTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type AboutTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null } | null } | null }; + +type BlogPostsByUIDQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type BlogPostsByUIDQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly date: string | null, readonly title: string | null, readonly cover: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } | null }; + +type BlogTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type BlogTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null } | null } | null, readonly posts: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly timeToRead: number | null, readonly frontmatter: { readonly uid: string | null, readonly date: string | null, readonly summary: string | null, readonly title: string | null, readonly cover: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } }> } }; + +type ContactTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type ContactTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null, readonly email: string | null, readonly facebookid: string | null, readonly twitterid: string | null, readonly githubid: string | null } | null } | null }; + +type EmojiTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type EmojiTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null } | null } | null }; + +type FAQTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type FAQTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null, readonly membershipTab: string | null, readonly partnershipTab: string | null } | null } | null, readonly membership: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly html: string | null } }> }, readonly partnership: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly html: string | null } }> } }; + +type GatsbyImageSharpFixedFragment = { readonly base64: string | null, readonly width: number, readonly height: number, readonly src: string, readonly srcSet: string }; + +type GatsbyImageSharpFixed_noBase64Fragment = { readonly width: number, readonly height: number, readonly src: string, readonly srcSet: string }; + +type GatsbyImageSharpFixed_tracedSVGFragment = { readonly tracedSVG: string | null, readonly width: number, readonly height: number, readonly src: string, readonly srcSet: string }; + +type GatsbyImageSharpFixed_withWebpFragment = { readonly base64: string | null, readonly width: number, readonly height: number, readonly src: string, readonly srcSet: string, readonly srcWebp: string | null, readonly srcSetWebp: string | null }; + +type GatsbyImageSharpFixed_withWebp_noBase64Fragment = { readonly width: number, readonly height: number, readonly src: string, readonly srcSet: string, readonly srcWebp: string | null, readonly srcSetWebp: string | null }; + +type GatsbyImageSharpFixed_withWebp_tracedSVGFragment = { readonly tracedSVG: string | null, readonly width: number, readonly height: number, readonly src: string, readonly srcSet: string, readonly srcWebp: string | null, readonly srcSetWebp: string | null }; + +type GatsbyImageSharpFluidFragment = { readonly base64: string | null, readonly aspectRatio: number, readonly src: string, readonly srcSet: string, readonly sizes: string }; + +type GatsbyImageSharpFluid_noBase64Fragment = { readonly aspectRatio: number, readonly src: string, readonly srcSet: string, readonly sizes: string }; + +type GatsbyImageSharpFluid_tracedSVGFragment = { readonly tracedSVG: string | null, readonly aspectRatio: number, readonly src: string, readonly srcSet: string, readonly sizes: string }; + +type GatsbyImageSharpFluid_withWebpFragment = { readonly base64: string | null, readonly aspectRatio: number, readonly src: string, readonly srcSet: string, readonly srcWebp: string | null, readonly srcSetWebp: string | null, readonly sizes: string }; + +type GatsbyImageSharpFluid_withWebp_noBase64Fragment = { readonly aspectRatio: number, readonly src: string, readonly srcSet: string, readonly srcWebp: string | null, readonly srcSetWebp: string | null, readonly sizes: string }; + +type GatsbyImageSharpFluid_withWebp_tracedSVGFragment = { readonly tracedSVG: string | null, readonly aspectRatio: number, readonly src: string, readonly srcSet: string, readonly srcWebp: string | null, readonly srcSetWebp: string | null, readonly sizes: string }; + +type GatsbyImageSharpFluidLimitPresentationSizeFragment = { readonly maxHeight: number, readonly maxWidth: number }; + +type HomeTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type HomeTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly contactCta: string | null, readonly projectsCta: string | null, readonly servicesTitle: string | null, readonly servicesSubtitle: string | null, readonly testimonialsTitle: string | null, readonly testimonialsSubtitle: string | null, readonly goodatTitle: string | null, readonly goodatSubtitle: string | null, readonly clientsSubtitle: string | null, readonly clientsTitle: string | null, readonly projectsSubtitle: string | null, readonly projectsTitle: string | null, readonly services: ReadonlyArray<{ readonly title: string | null, readonly text: string | null } | null> | null, readonly testimonials: ReadonlyArray<{ readonly text: string | null, readonly source: string | null, readonly span: boolean | null } | null> | null, readonly goodat: ReadonlyArray<{ readonly title: string | null, readonly text: string | null } | null> | null } | null } | null, readonly defaultCover: { readonly edges: ReadonlyArray<{ readonly node: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } }> }, readonly clients: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly name: string | null, readonly score: number | null, readonly link: string | null, readonly logo: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } }> }, readonly projects: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly active: boolean | null, readonly feature: boolean | null, readonly tagline: string | null, readonly code: string | null, readonly cover: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } }> } }; + +type LandingTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type LandingTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null, readonly contactCta: string | null, readonly projectsCta: string | null } | null } | null }; + +type MediaTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type MediaTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null } | null } | null, readonly mentions: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly html: string | null, readonly frontmatter: { readonly date: string | null, readonly title: string | null, readonly link: string | null, readonly highlight: boolean | null, readonly publication: string | null, readonly source: string | null, readonly uid: string | null, readonly cover: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } }> } }; + +type PeopleTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type PeopleTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null, readonly accomplicesHeading: string | null, readonly accomplicesDescr: string | null, readonly membersHeading: string | null, readonly membersDescr: string | null, readonly overlordsHeading: string | null, readonly overlordsDescr: string | null } | null } | null, readonly defaultAvatar: { readonly edges: ReadonlyArray<{ readonly node: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } }> }, readonly overlords: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly html: string | null, readonly frontmatter: { readonly bluesky: string | null, readonly fname: string | null, readonly github: string | null, readonly lname: string | null, readonly mastodon: string | null, readonly quote: string | null, readonly score: number | null, readonly twitter: string | null, readonly website: string | null, readonly uid: string | null, readonly avatar: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } }> }, readonly members: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly html: string | null, readonly frontmatter: { readonly bluesky: string | null, readonly fname: string | null, readonly github: string | null, readonly lname: string | null, readonly mastodon: string | null, readonly quote: string | null, readonly score: number | null, readonly twitter: string | null, readonly website: string | null, readonly uid: string | null, readonly avatar: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } }> }, readonly accomplices: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly html: string | null, readonly frontmatter: { readonly bluesky: string | null, readonly fname: string | null, readonly github: string | null, readonly lname: string | null, readonly mastodon: string | null, readonly quote: string | null, readonly score: number | null, readonly twitter: string | null, readonly website: string | null, readonly uid: string | null, readonly avatar: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } }> } }; + +type PortfolioItemsByUIDQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type PortfolioItemsByUIDQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly active: boolean | null, readonly application: string | null, readonly bifpresents: string | null, readonly date: string | null, readonly link: string | null, readonly code: string | null, readonly source: string | null, readonly tagline: string | null, readonly timeframe: string | null, readonly title: string | null, readonly uid: string | null, readonly slides: ReadonlyArray<{ readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null> | null, readonly awards: ReadonlyArray<{ readonly name: string | null, readonly url: string | null, readonly description: string | null } | null> | null, readonly needs: { readonly code: boolean | null, readonly graphic: boolean | null, readonly money: boolean | null, readonly uxui: boolean | null, readonly users: boolean | null, readonly other: string | null } | null, readonly cover: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } | null, readonly defaultCover: { readonly edges: ReadonlyArray<{ readonly node: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } }> } }; + +type ProjectsTplQueryQueryVariables = Exact<{ + uid: Scalars['String']; +}>; + + +type ProjectsTplQueryQuery = { readonly markdownRemark: { readonly html: string | null, readonly frontmatter: { readonly uid: string | null, readonly title: string | null, readonly heading: string | null, readonly subheading: string | null } | null } | null, readonly defaultCover: { readonly edges: ReadonlyArray<{ readonly node: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } }> }, readonly projects: { readonly edges: ReadonlyArray<{ readonly node: { readonly id: string, readonly frontmatter: { readonly uid: string | null, readonly date: string | null, readonly title: string | null, readonly active: boolean | null, readonly tagline: string | null, readonly code: string | null, readonly cover: { readonly childImageSharp: { readonly gatsbyImageData: import('gatsby-plugin-image').IGatsbyImageData } | null } | null } | null } }> } }; + + +} diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 00000000..c4958583 --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,14 @@ +declare module '*.svg' { + const content: string + export default content +} + +declare module "*.png" { + const content: string; + export default content; +} + +declare module "*.ico" { + const content: string; + export default content; +} diff --git a/lib/ui/animations/fadeIn.js b/lib/ui/animations/fadeIn.ts similarity index 100% rename from lib/ui/animations/fadeIn.js rename to lib/ui/animations/fadeIn.ts diff --git a/lib/ui/animations/index.js b/lib/ui/animations/index.ts similarity index 100% rename from lib/ui/animations/index.js rename to lib/ui/animations/index.ts diff --git a/lib/ui/components/actionbars/Actionbar.js b/lib/ui/components/actionbars/Actionbar.ts similarity index 100% rename from lib/ui/components/actionbars/Actionbar.js rename to lib/ui/components/actionbars/Actionbar.ts diff --git a/lib/ui/components/actions/Action.js b/lib/ui/components/actions/Action.tsx similarity index 51% rename from lib/ui/components/actions/Action.js rename to lib/ui/components/actions/Action.tsx index 1d57fb11..c153dbdc 100644 --- a/lib/ui/components/actions/Action.js +++ b/lib/ui/components/actions/Action.tsx @@ -1,31 +1,31 @@ import React from "react"; -import PropTypes from "prop-types"; import { withTheme } from "styled-components"; import Button from "./Button"; import Link from "./Link"; import withObfuscation from "./withObfuscation"; +interface ActionProps extends React.PropsWithChildren { + button: boolean + obfuscated: boolean +} + const ObfButton = withObfuscation(Button); const ObfLink = withObfuscation(Link); -function Action(props) { - const { obfuscated, button, ...restProps } = props; +const Action: React.FC = ({ obfuscated = false, button = false, ...props }) => { if (obfuscated) { if (button) { - return ; + return ; } - return ; + return ; } + if (button) { - return