diff --git a/src/apps/pages/sections/Banner.astro b/src/apps/pages/sections/Banner.astro index 87862ef..abb1ce3 100644 --- a/src/apps/pages/sections/Banner.astro +++ b/src/apps/pages/sections/Banner.astro @@ -4,6 +4,7 @@ import Container from '@components/Container.astro'; import LinkButton from '@components/LinkButton'; import SearchBar from '@apps/pages/sections/SearchBar'; import RichText from '@apps/pages/sections/RichText.astro'; +import { toBackgroundClass, toTextClass } from '@utils/pageBuilder'; const Height = { small: 'small', @@ -32,12 +33,9 @@ const {
) }
diff --git a/src/apps/pages/sections/ColumnContent.astro b/src/apps/pages/sections/ColumnContent.astro index d662f71..fa17ab1 100644 --- a/src/apps/pages/sections/ColumnContent.astro +++ b/src/apps/pages/sections/ColumnContent.astro @@ -20,7 +20,7 @@ const BlockTypes = { )} { item.__typename.endsWith(BlockTypes.text) && ( -
+
)} diff --git a/src/apps/pages/sections/MultiColumn.astro b/src/apps/pages/sections/MultiColumn.astro index b338b84..5143844 100644 --- a/src/apps/pages/sections/MultiColumn.astro +++ b/src/apps/pages/sections/MultiColumn.astro @@ -3,6 +3,7 @@ import clsx from 'clsx'; import _ from 'underscore'; import LinkButton from '@components/LinkButton'; import Column from '@apps/pages/sections/Column.astro'; +import { toBorderClass } from '@utils/pageBuilder'; const { buttonText, @@ -34,7 +35,7 @@ const gridCols = total === TOTAL_COLUMNS ? 'lg:grid-cols-12' : 'lg:auto-cols-fr { title && (

@@ -51,7 +52,12 @@ const gridCols = total === TOTAL_COLUMNS ? 'lg:grid-cols-12' : 'lg:auto-cols-fr > { _.map(content, (col: any) => ( - + )) }

diff --git a/src/components/Card.astro b/src/components/Card.astro index 3b7ac63..e0836fa 100644 --- a/src/components/Card.astro +++ b/src/components/Card.astro @@ -1,11 +1,18 @@ --- -const { alt, date, dateOptions = {}, category, title, author, slug, imageUrl, blurb, t } = Astro.props; +import clsx from "clsx"; +import { toBorderClass } from "@utils/pageBuilder"; + +const { alt, border, date, dateOptions = {}, category, title, author, slug, imageUrl, blurb, t, rounded } = Astro.props; const dateString = date ? new Date(date).toLocaleDateString(undefined, dateOptions) : null; ---
( ( { 'my-4 lg:my-8': props.size === 'small' }, { 'my-8 lg:my-16': props.size === 'medium' }, { 'my-16 lg:my-32': props.size === 'large' }, - { 'bg-primary': props.color === 'primary' }, - { 'bg-secondary': props.color === 'secondary' }, - { 'bg-white': props.color === 'white' }, - { 'bg-black': props.color === 'black' } + toBackgroundClass(props.color) )} /> ); diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 39a307f..d77594b 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -31,13 +31,24 @@ const { header, footer } = branding; const { font_header: fontHeader, font_body: fontBody } = branding; -const colorPrimary = branding.primary_color; -const textPrimary = useBlackText(colorPrimary) ? 'var(--color-black)' : 'var(--color-white)'; +//dark and light mode default text color +const textDark = branding.content_color || 'var(--color-black)'; +const textLight = branding.content_dark_bg || 'var(--color-white)'; +const colorPrimary = branding.primary_color; const colorSecondary = branding.secondary_color; -const textSecondary = !colorSecondary || useBlackText(colorSecondary) ? 'var(--color-black)' : 'var(--color-white)'; +const colorTertiary = branding.tertiary_color || 'var(--color-black)'; + +//these are for use in layout components like header and footer +const textPrimary = useBlackText(colorPrimary) ? textDark : textLight; +const textSecondary = !colorSecondary || useBlackText(colorSecondary) ? textDark : textLight; const colorLayout = branding.background_color || 'var(--color-white)'; +const colorLayoutAlternate = branding.background_alternate || 'var(--color-neutral-light)'; + +//these are for use in the page builder components, where the background will be `colorLayout` by default +const colorContent = useBlackText(colorLayout) ? textDark : textLight; +const colorContentAlternate = branding.content_alternate || 'var(--color-neutral-dark)'; const currentLocale = Astro.currentLocale; const lang = getLanguageFromUrl(Astro.url.pathname); @@ -134,9 +145,15 @@ if (config.gallery) { customFontBody: fontBody, customColorPrimary: colorPrimary, customColorSecondary: colorSecondary, + customColorTertiary: colorTertiary, customTextPrimary: textPrimary, customTextSecondary: textSecondary, - customColorLayout: colorLayout + customContent: colorContent, + customContentAlternate: colorContentAlternate, + customContentLight: textLight, + customContentDark: textDark, + customColorLayout: colorLayout, + customColorLayoutAlternate: colorLayoutAlternate }} > diff --git a/src/layouts/Page.astro b/src/layouts/Page.astro index 5b6958f..46842a9 100644 --- a/src/layouts/Page.astro +++ b/src/layouts/Page.astro @@ -10,7 +10,9 @@ import { getTranslations } from '@backend/i18n'; import { fetchPage } from '@backend/tina'; import Container from '@components/Container.astro'; import Layout from '@layouts/Layout.astro'; +import clsx from 'clsx'; import _ from 'underscore'; +import { toBackgroundClass, toTextClass } from '@utils/pageBuilder'; const { slug } = Astro.props; const locale = Astro.currentLocale; @@ -39,7 +41,12 @@ const SectionTypes = { > { _.map(page?.sections, section => (
{ section.__typename === SectionTypes.carousel && ( diff --git a/src/styles/index.css b/src/styles/index.css index efd188d..b54853d 100644 --- a/src/styles/index.css +++ b/src/styles/index.css @@ -1,4 +1,4 @@ -@import url('https://fonts.googleapis.com/css2?family=Afacad:ital,wght@0,400..700;1,400..700&family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=DM+Serif+Display:ital@0;1&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Baskervville+SC:wght@400..700&family=Baskervville:ital,wght@0,400..700;1,400..700&display=swap&family=Afacad:ital,wght@0,400..700;1,400..700&family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=DM+Serif+Display:ital@0;1&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap'); @import 'tailwindcss'; @import '@performant-software/core-data/tailwind.css'; @@ -33,9 +33,15 @@ --color-primary: var(--customColorPrimary, var(--color-default-primary)); --color-secondary: var(--customColorSecondary, var(--color-default-secondary)); + --color-tertiary: var(--customColorTertiary, var(--color-white)); --color-text-primary: var(--customTextPrimary, var(--color-white)); --color-text-secondary: var(--customTextSecondary, var(--color-black)); + --color-content: var(--customContent, var(--color-black)); + --color-content-alt: var(--customContentAlternate, var(--color-neutral-dark)); --color-layout: var(--customColorLayout, var(--color-white)); + --color-layout-alt: var(--customColorLayoutAlternate, var(--color-netural-light)); + --color-text-light: var(--customContentLight, var(--color-white)); + --color-text-dark: var(--customContentDark, var(--color-black)); --font-header: var(--customFontHeader, Inter); --font-body: var(--customFontBody, Inter); @@ -72,6 +78,38 @@ h1, h2, h3, h4, h5, h6 { color: var(--color-text-secondary); } + +/* +* Page builder styles +*/ + +.page-builder h1, .page-builder h2, .page-builder h3, .page-builder h4 { + font-weight: 400; +} + +.page-builder .prose h1 { + font-variant: small-caps; + font-size: 3rem; +} + +.page-builder .prose h2 { + font-size: 2.4rem; +} + +.page-builder .prose h3, .page-builder .prose h4 { + font-style: italic; + font-size: 1.5rem; +} + +.page-builder .prose h4 { + color: var(--color-secondary); + margin-bottom: 0; +} + +.page-builder .link-button + .link-button { + margin-left: 1.5rem; +} + /* * Swiper styles */ diff --git a/src/utils/pageBuilder.ts b/src/utils/pageBuilder.ts new file mode 100644 index 0000000..6d17850 --- /dev/null +++ b/src/utils/pageBuilder.ts @@ -0,0 +1,56 @@ +export const toTextClass = (color: string) => { + switch (color) { + case 'primary': + return '!text-primary'; + case 'secondary': + return '!text-secondary'; + case 'tertiary': + return '!text-tertiary'; + case 'content_light': + return '!text-text-light'; + case 'content_dark': + return '!text-text-dark'; + case 'content_alternate': + return '!text-content-alt'; + default: + return 'text-content' + } +}; + +export const toBackgroundClass = (color: string) => { + switch (color) { + case 'primary': + return '!bg-primary'; + case 'secondary': + return '!bg-secondary'; + case 'tertiary': + return '!bg-tertiary'; + case 'layout_alternate': + return '!bg-layout-alt'; + default: + return 'bg-layout'; + } +}; + +export const toBorderClass = (color: string) => { + switch (color) { + case 'primary': + return 'border-2 border-primary'; + case 'secondary': + return 'border-2 border-secondary'; + case 'tertiary': + return 'border-2 border-tertiary'; + case 'layout': + return 'border-2 border-layout'; + case 'layout_alternate': + return 'border-2 border-layout-alt'; + case 'content_light': + return 'border-2 border-text-light'; + case 'content_dark': + return 'border-2 border-text-dark'; + case 'content_alternate': + return 'border-2 border-content-alt'; + default: + return ''; + } +}; \ No newline at end of file diff --git a/tina/content/branding.ts b/tina/content/branding.ts index 98697ef..2bbb041 100644 --- a/tina/content/branding.ts +++ b/tina/content/branding.ts @@ -3,6 +3,9 @@ import { Collection } from '@tinacms/schema-tools'; const Fonts = [{ label: 'Afacad', value: 'Afacad' +}, { + label: 'Baskervville', + value: 'Baskervville' }, { label: 'DM Sans', value: 'DM Sans' @@ -45,14 +48,49 @@ const Branding: Collection = { } }, { name: 'secondary_color', - label: 'Secondary Color', + label: 'Secondary Color (accent)', + type: 'string', + ui: { + component: 'color' + } + }, { + name: 'tertiary_color', + label: 'Tertiary Color (overlay)', type: 'string', ui: { component: 'color' } }, { name: 'background_color', - label: 'Background Color', + label: 'Main background color', + type: 'string', + ui: { + component: 'color' + } + }, { + name: 'background_alternate', + label: 'Alternate Background', + type: 'string', + ui: { + component: 'color' + } + }, { + name: 'content_color', + label: 'Main Text Color for light background (defaults to black)', + type: 'string', + ui: { + component: 'color' + } + }, { + name: 'content_alternate', + label: 'Alternate text color', + type: 'string', + ui: { + component: 'color' + } + }, { + name: 'content_dark_bg', + label: 'Text on dark background (defaults to white)', type: 'string', ui: { component: 'color' diff --git a/tina/content/pages.ts b/tina/content/pages.ts index 3e95247..6110084 100644 --- a/tina/content/pages.ts +++ b/tina/content/pages.ts @@ -13,6 +13,7 @@ const getLabel = (...args) => { }; const SpacerValues = { + none: 'none', small: 'small', medium: 'medium', large: 'large' @@ -20,12 +21,19 @@ const SpacerValues = { export const ColorValues = { primary: 'primary', - white: 'white', - black: 'black', - secondary: 'secondary' + secondary: 'secondary', + tertiary: 'tertiary', + layout: 'layout', + layoutAlternate: 'layout_alternate', + contentLight: 'content_light', + contentDark: 'content_dark', + contentAlternate: 'content_alternate' }; const SpacerSizes = [{ + label: 'None', + value: SpacerValues.none +}, { label: 'Small', value: SpacerValues.small }, { @@ -36,18 +44,67 @@ const SpacerSizes = [{ value: SpacerValues.large }]; +const ColorOptionsBg = [{ + label: 'Primary', + value: ColorValues.primary +}, { + label: 'Secondary', + value: ColorValues.secondary +}, { + label: 'Tertiary', + value: ColorValues.tertiary +}, { + label: 'Main Background', + value: ColorValues.layout +}, { + label: 'Alternate Background', + value: ColorValues.layoutAlternate +}]; + +const ColorOptionsText = [{ + label: 'Primary', + value: ColorValues.primary +}, { + label: 'Secondary', + value: ColorValues.secondary +}, { + label: 'Tertiary', + value: ColorValues.tertiary +}, { + label: 'Content (light background)', + value: ColorValues.contentDark +}, { + label: 'Content (dark background)', + value: ColorValues.contentLight +}, { + label: 'Alternate Content', + value: ColorValues.contentAlternate +}]; + const ColorOptions = [{ label: 'Primary', value: ColorValues.primary }, { - label: 'Secondary (defaults to off-white)', + label: 'Secondary', value: ColorValues.secondary }, { - label: 'White', - value: ColorValues.white + label: 'Tertiary', + value: ColorValues.tertiary +}, { + label: 'Content (light background)', + value: ColorValues.contentDark +}, { + label: 'Content (dark background)', + value: ColorValues.contentLight }, { - label: 'Black', - value: ColorValues.black + label: 'Alternate Content', + value: ColorValues.contentAlternate +}, { + label: 'Main Background', + value: ColorValues.layout +}, { + label: 'Alternate Background', + value: ColorValues.layoutAlternate }]; const richTextTemplates: RichTextTemplate[] = [{ @@ -79,11 +136,16 @@ const richTextTemplates: RichTextTemplate[] = [{ name: 'color', label: 'Color', type: 'string', - options: ColorOptions + options: ColorOptionsBg }, { name: 'text', label: 'Text Color', type: 'string', + options: ColorOptionsText + }, { + name: 'border', + label: 'Border Color (leave blank for none)', + type: 'string', options: ColorOptions }, { name: 'arrow', @@ -120,6 +182,16 @@ const Pages: Collection = { name: 'carousel', label: 'Carousel', fields: [{ + name: 'background', + label: 'Background Color', + type: 'string', + options: ColorOptionsBg + }, { + name: 'text', + label: 'Text Color', + type: 'string', + options: ColorOptionsText + }, { name: 'items', label: 'Items', type: 'object', @@ -158,6 +230,16 @@ const Pages: Collection = { name: 'free_text', label: 'Free Text', fields: [{ + name: 'background', + label: 'Background Color', + type: 'string', + options: ColorOptionsBg + }, { + name: 'text', + label: 'Text Color', + type: 'string', + options: ColorOptionsText + }, { name: 'body', label: 'Body', type: 'rich-text', @@ -176,6 +258,16 @@ const Pages: Collection = { name: 'title', label: 'Title', type: 'string' + }, { + name: 'background', + label: 'Background Color', + type: 'string', + options: ColorOptionsBg + }, { + name: 'text', + label: 'Text Color', + type: 'string', + options: ColorOptionsText }, { name: 'items', label: 'Items', @@ -230,7 +322,12 @@ const Pages: Collection = { name: 'color', label: 'Color', type: 'string', - options: ColorOptions + options: ColorOptionsBg + }, { + name: 'background', + label: 'Background Color', + type: 'string', + options: ColorOptionsBg }] }, { name: 'text_image', @@ -346,6 +443,16 @@ const Pages: Collection = { label: 'Small', value: 'small' }] + }, { + name: 'background', + label: 'Background Color', + type: 'string', + options: ColorOptionsBg + }, { + name: 'text', + label: 'Text Color', + type: 'string', + options: ColorOptionsText }, { name: 'columns', label: 'Columns', @@ -360,6 +467,9 @@ const Pages: Collection = { label: 'Column width (percent)', type: 'string', options: [{ + label: '16.5%', + value: 'col-span-2' + }, { label: '25%', value: 'col-span-3' }, { @@ -378,6 +488,29 @@ const Pages: Collection = { label: '100%', value: 'col-span-12' }] + }, { + name: 'justify', + label: 'Vertical Alignment', + type: 'string', + options: [{ + label: 'Top (default)', + value: 'justify-start' + }, { + label: 'Center', + value: 'justify-center' + }, { + label: 'Bottom', + value: 'justify-end' + }] + }, { + name: 'border', + label: 'Border Color (leave blank for none)', + type: 'string', + options: ColorOptions + }, { + name: 'rounded', + label: 'Rounded Corners?', + type: 'boolean' }, { name: 'content', label: 'Content', @@ -529,15 +662,9 @@ const Pages: Collection = { }] }, { name: 'color', - label: 'Text Mode', + label: 'Text Color', type: 'string', - options: [{ - label: 'Dark Text', - value: 'black' - }, { - label: 'Light Text', - value: 'white' - }] + options: ColorOptionsText }, { name: 'background_image', label: 'Background Image', @@ -555,7 +682,7 @@ const Pages: Collection = { label: 'Background Color', description: 'Will display if no image is provided.', type: 'string', - options: ColorOptions + options: ColorOptionsBg }, { name: 'darken', label: 'Darken Background?', diff --git a/tina/tina-lock.json b/tina/tina-lock.json index 93aa111..7c920fe 100644 --- a/tina/tina-lock.json +++ b/tina/tina-lock.json @@ -1 +1 @@ -{"schema":{"version":{"fullVersion":"1.5.14","major":"1","minor":"5","patch":"14"},"meta":{"flags":["experimentalData"]},"collections":[{"ui":{"global":true,"allowedActions":{"create":false,"delete":false}},"isAuthCollection":true,"isDetached":true,"label":"Users","name":"user","path":"content/users","format":"json","fields":[{"type":"object","name":"users","list":true,"ui":{"defaultItem":{"username":"new-user","name":"New User"}},"fields":[{"type":"string","label":"Username","name":"username","uid":true,"required":true,"namespace":["user","users","username"],"searchable":true},{"type":"string","label":"Name","name":"name","namespace":["user","users","name"],"searchable":true,"uid":false},{"type":"string","label":"Email","name":"email","namespace":["user","users","email"],"searchable":true,"uid":false},{"type":"password","label":"Password","name":"password","required":true,"namespace":["user","users","password"],"searchable":true,"uid":false}],"namespace":["user","users"],"searchable":true,"uid":false}],"namespace":["user"]},{"name":"branding","label":"Branding","path":"content/branding","format":"json","fields":[{"name":"title","label":"Title","type":"string","namespace":["branding","title"],"searchable":true,"uid":false},{"name":"font_header","label":"Header Font","type":"string","options":[{"label":"Afacad","value":"Afacad"},{"label":"DM Sans","value":"DM Sans"},{"label":"DM Serif Display","value":"DM Serif Display"},{"label":"Inter","value":"Inter"},{"label":"Open Sans","value":"Open Sans"}],"namespace":["branding","font_header"],"searchable":true,"uid":false},{"name":"font_body","label":"Body Font","type":"string","options":[{"label":"Afacad","value":"Afacad"},{"label":"DM Sans","value":"DM Sans"},{"label":"DM Serif Display","value":"DM Serif Display"},{"label":"Inter","value":"Inter"},{"label":"Open Sans","value":"Open Sans"}],"namespace":["branding","font_body"],"searchable":true,"uid":false},{"name":"primary_color","label":"Primary Color","type":"string","ui":{"component":"color"},"namespace":["branding","primary_color"],"searchable":true,"uid":false},{"name":"secondary_color","label":"Secondary Color","type":"string","ui":{"component":"color"},"namespace":["branding","secondary_color"],"searchable":true,"uid":false},{"name":"background_color","label":"Background Color","type":"string","ui":{"component":"color"},"namespace":["branding","background_color"],"searchable":true,"uid":false},{"name":"header","label":"Header","type":"object","fields":[{"name":"logo","label":"Logo","type":"image","namespace":["branding","header","logo"],"searchable":false,"uid":false},{"name":"hide_title","label":"Hide Title","type":"boolean","namespace":["branding","header","hide_title"],"searchable":true,"uid":false}],"namespace":["branding","header"],"searchable":true,"uid":false},{"name":"footer","label":"Footer","type":"object","fields":[{"name":"allow_login","label":"Allow Login","type":"boolean","namespace":["branding","footer","allow_login"],"searchable":true,"uid":false},{"name":"logos","label":"Logos","type":"object","list":true,"fields":[{"name":"image","label":"Image","type":"image","namespace":["branding","footer","logos","image"],"searchable":false,"uid":false},{"name":"image_alt","label":"Image Alt","type":"string","namespace":["branding","footer","logos","image_alt"],"searchable":true,"uid":false},{"name":"url","label":"URL","type":"string","namespace":["branding","footer","logos","url"],"searchable":true,"uid":false}],"namespace":["branding","footer","logos"],"searchable":true,"uid":false},{"name":"terms_url","label":"Terms and Conditions URL","type":"string","namespace":["branding","footer","terms_url"],"searchable":true,"uid":false},{"name":"privacy_url","label":"Privacy Policy URL","type":"string","namespace":["branding","footer","privacy_url"],"searchable":true,"uid":false},{"name":"accessibility_url","label":"Accessibility URL","type":"string","namespace":["branding","footer","accessibility_url"],"searchable":true,"uid":false}],"namespace":["branding","footer"],"searchable":true,"uid":false}],"ui":{"allowedActions":{"create":false,"delete":false}},"namespace":["branding"]},{"name":"pages","label":"Pages","path":"content/pages","format":"mdx","fields":[{"name":"title","label":"Title","type":"string","isTitle":true,"required":true,"namespace":["pages","title"],"searchable":true,"uid":false},{"name":"home_page","label":"Home Page","type":"boolean","namespace":["pages","home_page"],"searchable":true,"uid":false},{"name":"nav_bar","label":"Navigation Menu","type":"boolean","namespace":["pages","nav_bar"],"searchable":true,"uid":false},{"name":"sections","label":"Sections","type":"object","list":true,"templates":[{"name":"carousel","label":"Carousel","fields":[{"name":"items","label":"Items","type":"object","list":true,"ui":{},"fields":[{"name":"title","label":"Title","type":"string","namespace":["pages","sections","carousel","items","title"]},{"name":"description","label":"Description","type":"string","ui":{"component":"textarea"},"namespace":["pages","sections","carousel","items","description"]},{"name":"url","label":"URL","type":"string","namespace":["pages","sections","carousel","items","url"]},{"name":"image","label":"Image","type":"image","namespace":["pages","sections","carousel","items","image"]},{"name":"image_alt","label":"Image Alt Text","type":"string","namespace":["pages","sections","carousel","items","image_alt"]}],"namespace":["pages","sections","carousel","items"],"searchable":true,"uid":false}],"namespace":["pages","sections","carousel"]},{"name":"free_text","label":"Free Text","fields":[{"name":"body","label":"Body","type":"rich-text","isBody":true,"templates":[{"name":"spacer","label":"Spacer","fields":[{"name":"size","label":"Size","type":"string","options":[{"label":"Small","value":"small"},{"label":"Medium","value":"medium"},{"label":"Large","value":"large"}],"namespace":["pages","sections","free_text","body","spacer","size"]},{"name":"color","label":"Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","free_text","body","spacer","color"]}],"namespace":["pages","sections","free_text","body","spacer"]},{"name":"button","label":"Button Link","fields":[{"name":"content","label":"Button Text","type":"string","namespace":["pages","sections","free_text","body","button","content"]},{"name":"href","label":"Button Link","type":"string","namespace":["pages","sections","free_text","body","button","href"]},{"name":"color","label":"Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","free_text","body","button","color"]},{"name":"text","label":"Text Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","free_text","body","button","text"]},{"name":"arrow","label":"Include arrow icon?","type":"boolean","namespace":["pages","sections","free_text","body","button","arrow"]}],"namespace":["pages","sections","free_text","body","button"]}],"namespace":["pages","sections","free_text","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false}],"namespace":["pages","sections","free_text"]},{"name":"images","label":"Images","ui":{},"fields":[{"name":"title","label":"Title","type":"string","namespace":["pages","sections","images","title"],"searchable":true,"uid":false},{"name":"items","label":"Items","type":"object","list":true,"ui":{},"fields":[{"name":"image","label":"Image","type":"image","namespace":["pages","sections","images","items","image"]},{"name":"image_alt","label":"Image Alt","type":"string","namespace":["pages","sections","images","items","image_alt"]},{"name":"url","label":"URL","type":"string","namespace":["pages","sections","images","items","url"]},{"name":"citation","label":"Image Citation Text","type":"string","namespace":["pages","sections","images","items","citation"]},{"name":"citation_link","label":"Image Citation Link","type":"string","namespace":["pages","sections","images","items","citation_link"]}],"namespace":["pages","sections","images","items"],"searchable":true,"uid":false}],"namespace":["pages","sections","images"]},{"name":"spacer","label":"Spacer","ui":{"defaultItem":{"size":"small"}},"fields":[{"name":"size","label":"Size","type":"string","required":true,"options":[{"label":"Small","value":"small"},{"label":"Medium","value":"medium"},{"label":"Large","value":"large"}],"namespace":["pages","sections","spacer","size"],"searchable":true,"uid":false},{"name":"color","label":"Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","spacer","color"],"searchable":true,"uid":false}],"namespace":["pages","sections","spacer"]},{"name":"text_image","label":"Text Image Block","ui":{},"fields":[{"name":"title","label":"Title","type":"string","namespace":["pages","sections","text_image","title"],"searchable":true,"uid":false},{"name":"description","label":"Description","type":"string","ui":{"component":"textarea"},"namespace":["pages","sections","text_image","description"],"searchable":true,"uid":false},{"name":"image","label":"Image","type":"image","namespace":["pages","sections","text_image","image"],"searchable":false,"uid":false},{"name":"image_alt","label":"Image Alt","type":"string","namespace":["pages","sections","text_image","image_alt"],"searchable":true,"uid":false},{"name":"url","label":"URL","type":"string","namespace":["pages","sections","text_image","url"],"searchable":true,"uid":false},{"name":"citation","label":"Image Citation Text","type":"string","namespace":["pages","sections","text_image","citation"],"searchable":true,"uid":false},{"name":"citation_link","label":"Image Citation Link","type":"string","namespace":["pages","sections","text_image","citation_link"],"searchable":true,"uid":false},{"name":"background_position","label":"Background Position","type":"string","options":[{"label":"Top","value":"top"},{"label":"Bottom","value":"bottom"},{"label":"Left","value":"left"},{"label":"Right","value":"right"}],"namespace":["pages","sections","text_image","background_position"],"searchable":true,"uid":false},{"name":"text_position","label":"Text Position","type":"string","options":[{"label":"Left","value":"left"},{"label":"Right","value":"right"}],"namespace":["pages","sections","text_image","text_position"],"searchable":true,"uid":false},{"name":"button_text","label":"Button Text","type":"string","namespace":["pages","sections","text_image","button_text"],"searchable":true,"uid":false}],"namespace":["pages","sections","text_image"]},{"name":"multi_column","label":"Multi Columns","ui":{},"fields":[{"name":"title","label":"Title","type":"string","namespace":["pages","sections","multi_column","title"],"searchable":true,"uid":false},{"name":"url","label":"URL","type":"string","namespace":["pages","sections","multi_column","url"],"searchable":true,"uid":false},{"name":"button_text","label":"Button Text","type":"string","namespace":["pages","sections","multi_column","button_text"],"searchable":true,"uid":false},{"name":"text_alignment","label":"Text Alignment","type":"string","options":[{"label":"Left","value":"left"},{"label":"Center","value":"center"}],"namespace":["pages","sections","multi_column","text_alignment"],"searchable":true,"uid":false},{"name":"gap","label":"Column Gap","type":"string","options":[{"label":"Large","value":"large"},{"label":"Small","value":"small"}],"namespace":["pages","sections","multi_column","gap"],"searchable":true,"uid":false},{"name":"columns","label":"Columns","type":"object","list":true,"ui":{"min":1,"max":4},"fields":[{"name":"width","label":"Column width (percent)","type":"string","options":[{"label":"25%","value":"col-span-3"},{"label":"33%","value":"col-span-4"},{"label":"50%","value":"col-span-6"},{"label":"67%","value":"col-span-8"},{"label":"75%","value":"col-span-9"},{"label":"100%","value":"col-span-12"}],"namespace":["pages","sections","multi_column","columns","width"]},{"name":"content","label":"Content","type":"object","list":true,"templates":[{"name":"richtext","label":"Rich Text","fields":[{"name":"text","label":"Text","type":"rich-text","templates":[{"name":"spacer","label":"Spacer","fields":[{"name":"size","label":"Size","type":"string","options":[{"label":"Small","value":"small"},{"label":"Medium","value":"medium"},{"label":"Large","value":"large"}],"namespace":["pages","sections","multi_column","columns","content","richtext","text","spacer","size"]},{"name":"color","label":"Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","multi_column","columns","content","richtext","text","spacer","color"]}],"namespace":["pages","sections","multi_column","columns","content","richtext","text","spacer"]},{"name":"button","label":"Button Link","fields":[{"name":"content","label":"Button Text","type":"string","namespace":["pages","sections","multi_column","columns","content","richtext","text","button","content"]},{"name":"href","label":"Button Link","type":"string","namespace":["pages","sections","multi_column","columns","content","richtext","text","button","href"]},{"name":"color","label":"Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","multi_column","columns","content","richtext","text","button","color"]},{"name":"text","label":"Text Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","multi_column","columns","content","richtext","text","button","text"]},{"name":"arrow","label":"Include arrow icon?","type":"boolean","namespace":["pages","sections","multi_column","columns","content","richtext","text","button","arrow"]}],"namespace":["pages","sections","multi_column","columns","content","richtext","text","button"]}],"namespace":["pages","sections","multi_column","columns","content","richtext","text"]}],"namespace":["pages","sections","multi_column","columns","content","richtext"]},{"name":"image","label":"Image","fields":[{"name":"image","label":"Image","type":"image","namespace":["pages","sections","multi_column","columns","content","image","image"]}],"namespace":["pages","sections","multi_column","columns","content","image"]},{"name":"basic","label":"Title and Description (plain text)","fields":[{"name":"title","label":"Title","type":"string","namespace":["pages","sections","multi_column","columns","content","basic","title"]},{"name":"description","label":"Description","type":"string","ui":{"component":"textarea"},"namespace":["pages","sections","multi_column","columns","content","basic","description"]}],"namespace":["pages","sections","multi_column","columns","content","basic"]},{"name":"card","label":"Card Link","fields":[{"name":"slug","label":"Link","type":"string","namespace":["pages","sections","multi_column","columns","content","card","slug"]},{"name":"title","label":"Title","type":"string","namespace":["pages","sections","multi_column","columns","content","card","title"]},{"name":"author","label":"Author","type":"string","namespace":["pages","sections","multi_column","columns","content","card","author"]},{"name":"date","label":"Date","type":"datetime","namespace":["pages","sections","multi_column","columns","content","card","date"]},{"name":"category","label":"Category","type":"string","namespace":["pages","sections","multi_column","columns","content","card","category"]},{"name":"image","label":"Image","type":"image","namespace":["pages","sections","multi_column","columns","content","card","image"]},{"name":"alt","label":"Image Alt Text","type":"string","namespace":["pages","sections","multi_column","columns","content","card","alt"]},{"name":"blurb","label":"Blurb","type":"string","ui":{"component":"textarea"},"namespace":["pages","sections","multi_column","columns","content","card","blurb"]}],"namespace":["pages","sections","multi_column","columns","content","card"]}],"namespace":["pages","sections","multi_column","columns","content"]}],"namespace":["pages","sections","multi_column","columns"],"searchable":true,"uid":false}],"namespace":["pages","sections","multi_column"]},{"name":"banner","label":"Full Width Banner","fields":[{"name":"title","label":"Title","type":"string","namespace":["pages","sections","banner","title"],"searchable":true,"uid":false},{"name":"subtitle","label":"Subtitle","type":"string","ui":{"component":"textarea"},"namespace":["pages","sections","banner","subtitle"],"searchable":true,"uid":false},{"name":"url","label":"URL","type":"string","namespace":["pages","sections","banner","url"],"searchable":true,"uid":false},{"name":"button_text","label":"Button Text","type":"string","namespace":["pages","sections","banner","button_text"],"searchable":true,"uid":false},{"name":"search","label":"Search Bar","type":"object","fields":[{"name":"search_name","label":"Search Name","description":"This should match the name configured for the search in Settings.","type":"string","namespace":["pages","sections","banner","search","search_name"]},{"name":"button_text","label":"Button Text","type":"string","namespace":["pages","sections","banner","search","button_text"]},{"name":"placeholder","label":"Search Placeholder","type":"string","namespace":["pages","sections","banner","search","placeholder"]}],"namespace":["pages","sections","banner","search"],"searchable":true,"uid":false},{"name":"content","label":"Rich Text Content","type":"rich-text","templates":[{"name":"spacer","label":"Spacer","fields":[{"name":"size","label":"Size","type":"string","options":[{"label":"Small","value":"small"},{"label":"Medium","value":"medium"},{"label":"Large","value":"large"}],"namespace":["pages","sections","banner","content","spacer","size"]},{"name":"color","label":"Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","banner","content","spacer","color"]}],"namespace":["pages","sections","banner","content","spacer"]},{"name":"button","label":"Button Link","fields":[{"name":"content","label":"Button Text","type":"string","namespace":["pages","sections","banner","content","button","content"]},{"name":"href","label":"Button Link","type":"string","namespace":["pages","sections","banner","content","button","href"]},{"name":"color","label":"Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","banner","content","button","color"]},{"name":"text","label":"Text Color","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","banner","content","button","text"]},{"name":"arrow","label":"Include arrow icon?","type":"boolean","namespace":["pages","sections","banner","content","button","arrow"]}],"namespace":["pages","sections","banner","content","button"]}],"namespace":["pages","sections","banner","content"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"name":"text_alignment","label":"Text Alignment","type":"string","options":[{"label":"Left","value":"left"},{"label":"Center","value":"center"}],"namespace":["pages","sections","banner","text_alignment"],"searchable":true,"uid":false},{"name":"height","label":"Height","type":"string","options":[{"label":"Small","value":"small"},{"label":"Medium","value":"medium"},{"label":"Large","value":"large"}],"namespace":["pages","sections","banner","height"],"searchable":true,"uid":false},{"name":"color","label":"Text Mode","type":"string","options":[{"label":"Dark Text","value":"black"},{"label":"Light Text","value":"white"}],"namespace":["pages","sections","banner","color"],"searchable":true,"uid":false},{"name":"background_image","label":"Background Image","type":"image","namespace":["pages","sections","banner","background_image"],"searchable":false,"uid":false},{"name":"background_image_alt","label":"Background Image Alt Text","type":"string","namespace":["pages","sections","banner","background_image_alt"],"searchable":true,"uid":false},{"name":"clip","label":"Clip image to content height?","type":"boolean","namespace":["pages","sections","banner","clip"],"searchable":true,"uid":false},{"name":"background","label":"Background Color","description":"Will display if no image is provided.","type":"string","options":[{"label":"Primary","value":"primary"},{"label":"Secondary (defaults to off-white)","value":"secondary"},{"label":"White","value":"white"},{"label":"Black","value":"black"}],"namespace":["pages","sections","banner","background"],"searchable":true,"uid":false},{"name":"darken","label":"Darken Background?","type":"boolean","namespace":["pages","sections","banner","darken"],"searchable":true,"uid":false}],"namespace":["pages","sections","banner"]}],"namespace":["pages","sections"],"searchable":true,"uid":false}],"namespace":["pages"]},{"name":"path","label":"Paths","path":"content/paths","format":"mdx","fields":[{"name":"title","label":"Title","type":"string","required":true,"isTitle":true,"namespace":["path","title"],"searchable":true,"uid":false},{"name":"image","label":"Cover Image","type":"image","namespace":["path","image"],"searchable":false,"uid":false},{"name":"imageAlt","label":"Cover Image alt text","type":"string","namespace":["path","imageAlt"],"searchable":true,"uid":false},{"name":"author","label":"Author","type":"string","namespace":["path","author"],"searchable":true,"uid":false},{"name":"date","label":"Date","type":"datetime","namespace":["path","date"],"searchable":true,"uid":false},{"name":"description","label":"Description","type":"rich-text","isBody":true,"templates":[{"name":"iframe","label":"AV Embed","fields":[{"name":"src","label":"Embed Link","type":"string","required":true,"namespace":["path","description","iframe","src"],"searchable":true,"uid":false},{"name":"width","label":"Width (pixels)","type":"number","ui":{},"namespace":["path","description","iframe","width"],"searchable":true,"uid":false},{"name":"height","label":"Height (pixels)","type":"number","ui":{},"namespace":["path","description","iframe","height"],"searchable":true,"uid":false}],"namespace":["path","description","iframe"]},{"name":"media","label":"Media","fields":[{"name":"media","label":"Media","type":"object","fields":[{"name":"title","label":"Title","type":"string","namespace":["path","description","media","media","title"]},{"name":"uuid","label":"UUID","type":"string","namespace":["path","description","media","media","uuid"]},{"name":"manifest_url","label":"Manifest URL","type":"string","namespace":["path","description","media","media","manifest_url"]},{"name":"content_url","label":"Content URL","type":"string","namespace":["path","description","media","media","content_url"]},{"name":"content_preview_url","label":"Content Preview URL","type":"string","namespace":["path","description","media","media","content_preview_url"]}],"ui":{},"namespace":["path","description","media","media"],"searchable":true,"uid":false}],"namespace":["path","description","media"]}],"namespace":["path","description"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"name":"path","type":"object","list":true,"ui":{},"fields":[{"name":"place","label":"Place Data","type":"object","fields":[{"name":"title","label":"Title","type":"string","required":true,"isTitle":true,"namespace":["path","path","place","title"],"searchable":true,"uid":false},{"name":"uuid","label":"UUID","type":"string","namespace":["path","path","place","uuid"],"searchable":true,"uid":false},{"name":"animate","label":"Animate pulsing place marker?","type":"boolean","namespace":["path","path","place","animate"],"searchable":true,"uid":false},{"name":"buffer","label":"Map zoom buffer (in miles)","type":"number","namespace":["path","path","place","buffer"],"searchable":true,"uid":false},{"name":"layer","label":"Custom Map Layer","type":"number","list":true,"namespace":["path","path","place","layer"],"searchable":true,"uid":false}],"ui":{},"required":true,"namespace":["path","path","place"],"searchable":true,"uid":false},{"name":"blurb","label":"Blurb","type":"rich-text","templates":[{"name":"iframe","label":"AV Embed","fields":[{"name":"src","label":"Embed Link","type":"string","required":true,"namespace":["path","path","blurb","iframe","src"],"searchable":true,"uid":false},{"name":"width","label":"Width (pixels)","type":"number","ui":{},"namespace":["path","path","blurb","iframe","width"],"searchable":true,"uid":false},{"name":"height","label":"Height (pixels)","type":"number","ui":{},"namespace":["path","path","blurb","iframe","height"],"searchable":true,"uid":false}],"namespace":["path","path","blurb","iframe"]}],"namespace":["path","path","blurb"],"searchable":true,"parser":{"type":"mdx"},"uid":false}],"namespace":["path","path"],"searchable":true,"uid":false}],"namespace":["path"]},{"name":"post","label":"Posts","path":"content/posts","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["post","title"],"searchable":true,"uid":false},{"name":"author","label":"Author","type":"string","namespace":["post","author"],"searchable":true,"uid":false},{"name":"date","label":"Date","type":"datetime","namespace":["post","date"],"searchable":true,"uid":false},{"name":"cardImage","label":"Card Image","type":"image","namespace":["post","cardImage"],"searchable":false,"uid":false},{"name":"imageAlt","label":"Card Image alt text","type":"string","namespace":["post","imageAlt"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"templates":[{"name":"iframe","label":"AV Embed","fields":[{"name":"src","label":"Embed Link","type":"string","required":true,"namespace":["post","body","iframe","src"],"searchable":true,"uid":false},{"name":"width","label":"Width (pixels)","type":"number","ui":{},"namespace":["post","body","iframe","width"],"searchable":true,"uid":false},{"name":"height","label":"Height (pixels)","type":"number","ui":{},"namespace":["post","body","iframe","height"],"searchable":true,"uid":false}],"namespace":["post","body","iframe"]},{"name":"place","label":"Place","fields":[{"name":"title","label":"Title","type":"string","required":true,"isTitle":true,"namespace":["post","body","place","title"],"searchable":true,"uid":false},{"name":"place","label":"Place Data","type":"object","fields":[{"name":"title","label":"Title","type":"string","required":true,"isTitle":true,"namespace":["post","body","place","place","title"]},{"name":"uuid","label":"UUID","type":"string","namespace":["post","body","place","place","uuid"]},{"name":"animate","label":"Animate pulsing place marker?","type":"boolean","namespace":["post","body","place","place","animate"]},{"name":"buffer","label":"Map zoom buffer (in miles)","type":"number","namespace":["post","body","place","place","buffer"]},{"name":"layer","label":"Custom Map Layer","type":"number","list":true,"namespace":["post","body","place","place","layer"]}],"ui":{},"required":true,"namespace":["post","body","place","place"],"searchable":true,"uid":false},{"name":"caption","label":"Caption","type":"string","ui":{"component":"textarea"},"namespace":["post","body","place","caption"],"searchable":true,"uid":false}],"namespace":["post","body","place"]},{"name":"media","label":"Media","fields":[{"name":"media","label":"Media","type":"object","fields":[{"name":"title","label":"Title","type":"string","namespace":["post","body","media","media","title"]},{"name":"uuid","label":"UUID","type":"string","namespace":["post","body","media","media","uuid"]},{"name":"manifest_url","label":"Manifest URL","type":"string","namespace":["post","body","media","media","manifest_url"]},{"name":"content_url","label":"Content URL","type":"string","namespace":["post","body","media","media","content_url"]},{"name":"content_preview_url","label":"Content Preview URL","type":"string","namespace":["post","body","media","media","content_preview_url"]}],"ui":{},"namespace":["post","body","media","media"],"searchable":true,"uid":false}],"namespace":["post","body","media"]},{"name":"data_table","label":"Table","fields":[{"name":"title","label":"Title","type":"string","required":true,"isTitle":true,"namespace":["post","body","data_table","title"],"searchable":true,"uid":false},{"name":"data","label":"Data","type":"string","ui":{},"namespace":["post","body","data_table","data"],"searchable":true,"uid":false}],"namespace":["post","body","data_table"]},{"name":"map","label":"Map","fields":[{"name":"title","label":"Title","type":"string","required":true,"isTitle":true,"namespace":["post","body","map","title"],"searchable":true,"uid":false},{"name":"data","label":"Data","type":"string","ui":{},"namespace":["post","body","map","data"],"searchable":true,"uid":false}],"namespace":["post","body","map"]},{"name":"timeline","label":"Timeline","fields":[{"name":"title","label":"Title","type":"string","required":true,"isTitle":true,"namespace":["post","body","timeline","title"],"searchable":true,"uid":false},{"name":"data","label":"Data","type":"string","ui":{},"namespace":["post","body","timeline","data"],"searchable":true,"uid":false}],"namespace":["post","body","timeline"]},{"name":"events_by_year","label":"Events By Year","fields":[{"name":"title","label":"Title","type":"string","required":true,"isTitle":true,"namespace":["post","body","events_by_year","title"],"searchable":true,"uid":false},{"name":"data","label":"Data","type":"string","ui":{},"namespace":["post","body","events_by_year","data"],"searchable":true,"uid":false},{"name":"interval","label":"Interval","type":"number","namespace":["post","body","events_by_year","interval"],"searchable":true,"uid":false}],"namespace":["post","body","events_by_year"]}],"namespace":["post","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false}],"namespace":["post"]},{"name":"i18n","format":"json","label":"Internationalization","path":"content/i18n","fields":[{"name":"t_explore","label":"Explore","type":"string","ui":{"component":"text"},"namespace":["i18n","t_explore"],"searchable":true,"uid":false},{"name":"t_home","label":"Home","type":"string","ui":{"component":"text"},"namespace":["i18n","t_home"],"searchable":true,"uid":false},{"name":"t_about","label":"About","type":"string","ui":{"component":"text"},"namespace":["i18n","t_about"],"searchable":true,"uid":false},{"name":"t_pages","label":"Pages","type":"string","ui":{"component":"text"},"namespace":["i18n","t_pages"],"searchable":true,"uid":false},{"name":"t_paths","label":"Paths","type":"string","ui":{"component":"text"},"namespace":["i18n","t_paths"],"searchable":true,"uid":false},{"name":"t_posts","label":"Posts","type":"string","ui":{"component":"text"},"namespace":["i18n","t_posts"],"searchable":true,"uid":false},{"name":"t_backTo","label":"Back to