diff --git a/assets/css/index.css b/assets/css/index.css index fd2a2c9..cef9969 100644 --- a/assets/css/index.css +++ b/assets/css/index.css @@ -1,4 +1,372 @@ -.logo-container svg { - width: 10em; +@font-face { + font-family: "Work Sans"; + src: url("/assets/font/Work_Sans/WorkSans-VariableFont_wght.ttf") + format("truetype"); +} + +:root { + --cc-primary: olive; + --cc-secondary: #ff3b00; + + --ff-primary: "Work Sans", sans-serif; + + --fs-fluid-title: clamp( + 3.5rem, + 9vw + 1rem, + 12rem + ); /* min, growth-factor, max */ + + --fs-xl: 11.25rem; /*180*/ + --fs-big: 5rem; /*72*/ + --fs-med: 2.25rem; /*36*/ + + --fs-xl: 7.5rem; /*120*/ + --fs-big: 3rem; /*48*/ + --fs-med: 1.5rem; /*24*/ + + --fw-primary: 400; + + --content-container-max-height: 66vh; +} + +/* +============ +typography +============ +*/ + +html { + font-weight: var(--fw-primary); + font-size: 16px; + font-family: var(--ff-primary); +} + +body { + color: var(--cc-primary); + font-size: var(--fs-med); +} + +h1, +h2, +h3, +h4, +h5, +h6, +button { + font-weight: var(--fw-primary); + margin: 0; + padding: 0; + color: inherit; +} + +.ae-title h1 { + /* font-size: var(--fs-xl); */ + + /* responsive font sizing */ + font-size: var(--fs-fluid-title); + + letter-spacing: -0.02em; + letter-spacing: -0.06em; + + font-weight: normal; +} + +h2.title { + font-size: var(--fs-med); + font-weight: var(--fw-primary); +} + +a { + color: var(--cc-primary); + text-decoration: none; +} +a.events-link { + color: inherit; +} + +li { + list-style: circle; + list-style-type: disc; + margin: 0; + padding: 0; +} + +.hidden { + display: none; +} + +/* +============ +dot2dot +============ +*/ +#lineCanvas { + pointer-events: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +path { + /* opacity: 0.2; */ + /* stroke: */ +} + +/* +============ +header desktop +============ +*/ +@media (min-width: 769px) { + .header-container { + display: grid; + grid-template-rows: auto auto; /* two rows */ + grid-template-columns: 1fr; + } + + .header { + display: grid; + grid-template-rows: auto; /* one row */ + grid-template-columns: 2fr 1fr; + } + + .ae-title { + grid-column: 1; + + white-space: nowrap; + /* overflow: hidden; + text-overflow: ellipsis; */ + } + + .dates { + grid-column: 2; + grid-row: 1; + display: flex; + + flex-direction: column; + + justify-content: center; + } + + .ae-subtitle { + grid-column: 1 / -1; + justify-self: end; + width: 66.66%; + } + + ul.menu-container { + margin: 0; + } + #menu-items.flex { + flex-wrap: wrap; + gap: 0px 2em; + width: 80%; + } +} +/* +============ +header mobile +============ +*/ + +@media (max-width: 768px) { + header { + display: flex; + flex-direction: column; + } + + .ae-subtitle { + align-self: end; + padding: 0.5rem 1.5rem; + } +} + +/* +============ +main content container +============ +*/ + +.content-container { + display: grid; + /* grid-template-columns: repeat(4, 1fr); */ + grid-template-columns: repeat(7, 1fr); + grid-template-rows: 1fr; + /* height: var(--content-container-max-height); */ + + overflow: hidden; + width: 100%; +} + +/* desktop layout */ +@media screen and (min-width: 769px) { + .content-container { + /* max-height: 30vh; */ + position: fixed; + bottom: 0; + left: 0; + right: 0; + } +} +/* mobile layout */ +@media (max-width: 768px) { + .content-container { + display: flex; + flex-direction: column; + } +} + +/* +============ +main content sections +============ +*/ + +.section { + grid-row: 1; + width: 100%; +} + +/* +============ +nav +============ +*/ + +ul.items { + padding: 0; +} +ul.items li:hover { + list-style: circle; +} + +button.toggle { + background: none; + border: none; + font: inherit; + cursor: pointer; + position: relative; +} + +.first-item.list-style-circle { + list-style: circle; +} + +/* +============ +cards +============ +*/ + +.pill { + display: flex; + flex-wrap: wrap; +} + +.cards { + padding: calc(var(--gap) / 2); +} +.cards:not(.masonry) { + display: flex; + flex-wrap: wrap; +} +.cards:not(.masonry) .card { + width: 50%; +} +@media (max-width: 640px) { + .cards:not(.masonry) .card { + width: 100%; + } +} +.card { + display: block; + margin-bottom: var(--gap); + padding: calc(var(--gap) / 2); +} +.card .inner { + border-top: var(--hr); + padding-top: var(--gap); +} +.card .pill { + margin-bottom: 1rem; +} +.card h2 { + font-size: var(--h2); + letter-spacing: -0.02em; + line-height: 0.9; + margin-bottom: var(--gap); +} +.card figure { + margin-bottom: 1.2rem; +} + +/* ------------------ +! temp test +--------------- */ +/* +============ +layout +============ +*/ + +.content-container { + max-height: var(--content-container-max-height); +} + +/* .section > :not(ul) { + padding: 0 2.5rem; +} */ +#col1 > *:not(ul), +#col2 > *:not(ul), +#col3 > *:not(ul) { + padding: 0 2.5rem; +} + +/* mobile layout order */ +@media (max-width: 768px) { + /* reset order */ + /* .section { + order: 1; + } + + #col2 { + order: 2; + } + + #col3 { + order: 3; + } */ +} + +/* Desktop layout */ +@media (min-width: 769px) { + #col1 { + /* grid-column: 1; */ + grid-column: 1 / span 2; + } + #col2 { + grid-column: 3 / span 2; + } + #col3 { + grid-column: 5 / span 2; + } + #col4 { + grid-column: 7; + } + .section { + overflow-y: auto; + } +} + +img { + max-width: 100%; height: auto; } + +.menu-items { + display: flex; + gap: 0px 2em; + flex-wrap: wrap; +} diff --git a/assets/css/normalize.v8.0.1.css b/assets/css/normalize.v8.0.1.css new file mode 100644 index 0000000..192eb9c --- /dev/null +++ b/assets/css/normalize.v8.0.1.css @@ -0,0 +1,349 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/assets/css/templates/accessibility.css b/assets/css/templates/accessibility.css new file mode 100644 index 0000000..c4ec75c --- /dev/null +++ b/assets/css/templates/accessibility.css @@ -0,0 +1,68 @@ +form { + display: flex; + flex-direction: column; + gap: 1em; +} +input, +textarea { + color: var(--cc-primary); + border: 2px solid var(--cc-primary); + outline: none; +} + +input:focus, +textarea:focus { + border-color: var(--cc-secondary); + outline: var(--cc-secondary) 2px; +} + +/* Styles for the fields with class .half to sit side by side */ +.field.half { + display: flex; +} + +.field.half input[type="text"] { + flex: 1; /* Allows the input fields to expand and fill the available space */ + margin-right: 5px; /* Adds a small margin between the two fields */ +} + +.field.half:last-child input[type="text"] { + margin-right: 0; /* Removes margin for the last element to align properly */ +} +main { + display: grid; +} +main { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 1em; +} + +.form { + grid-column: span 3; +} +.intro { + grid-column: span 2; +} +.description { + grid-column: span 2; + max-height: 66vh; + overflow-y: auto; /* enable vertical scrolling */ +} + +/* mobile */ +@media (max-width: 768px) { + /* Adjust based on your breakpoint */ + main { + grid-template-columns: 1fr; /* Switches to single column */ + } + + .form { + grid-column: auto; /* Resets to default column span */ + } + + .description { + max-height: none; /* Adjust or remove fixed height for mobile */ + overflow-y: visible; /* Adjust as needed for mobile */ + } +} diff --git a/assets/css/templates/artist.css b/assets/css/templates/artist.css new file mode 100644 index 0000000..ac5c8dd --- /dev/null +++ b/assets/css/templates/artist.css @@ -0,0 +1,18 @@ +.circle-button { + border: 2px solid var(--cc-primary); + border-radius: 50%; + width: 2rem; + height: 2rem; + background-color: transparent; +} +.circle-button:hover { + background-color: #efefef; +} + +.circle-button.clicked { + background-color: var(--cc-primary); +} + +.audio-sample { + display: none; +} diff --git a/assets/css/templates/event.css b/assets/css/templates/event.css new file mode 100644 index 0000000..4d81b1b --- /dev/null +++ b/assets/css/templates/event.css @@ -0,0 +1,92 @@ +/* +============ +layout +============ +*/ + +.content-container { + max-height: var(--content-container-max-height); +} + +/* .section > :not(ul) { + padding: 0 2.5rem; +} */ +#col1 > *:not(ul), +#col2 > *:not(ul), +#col3 > *:not(ul) { + padding: 0 2.5rem; +} + +/* mobile layout order */ +@media (max-width: 768px) { + /* reset order */ + /* .section { + order: 1; + } + + #col2 { + order: 2; + } + + #col3 { + order: 3; + } */ +} + +/* Desktop layout */ +@media (min-width: 769px) { + #col1 { + /* grid-column: 1; */ + grid-column: 1 / span 2; + } + #col2 { + grid-column: 3 / span 2; + } + #col3 { + grid-column: 5 / span 2; + } + #col4 { + grid-column: 7; + } + .section { + overflow-y: auto; + } +} + +/* +============ +map +============ +*/ +.map { + background-color: rgba(255, 255, 255, 0.47); + border: 1px solid black; + position: fixed; + bottom: 3vh; + left: 3vh; + backdrop-filter: blur(10px); + border-radius: 10px; +} +.map-open { + width: 431px; + height: 647px; + max-width: 100%; + max-height: 100%; + overflow: visible; + z-index: 9999999999; +} +.map img { + height: 94vh; +} +.map-open img { + max-height: 100%; +} +/* map iframe */ +iframe { + width: 100% !important; +} + +img { + max-width: 100%; + height: auto; +} diff --git a/assets/css/templates/home.css b/assets/css/templates/home.css new file mode 100644 index 0000000..9e2f816 --- /dev/null +++ b/assets/css/templates/home.css @@ -0,0 +1,73 @@ +.subtitle { + list-style: disc; +} + +ul.menu-container { + margin: revert; +} +/* +============ +main content sections +============ +*/ + +/* mobile layout */ +@media (max-width: 768px) { + #menu, + #events, + #artists { + order: 1; /* Menu */ + } + + .events { + order: 2; /* Events */ + } + + .artists { + order: 3; /* Artists */ + } +} + +/* Desktop layout */ +@media (min-width: 769px) { + #events { + /* grid-column: 1; */ + grid-column: 1 / span 2; + } + #artists { + /* grid-column: 2 / span 2; */ + grid-column: 3 / span 4; + } + #menu { + grid-column: 7; + } + .section { + overflow-y: auto; /* Scrollable? */ + } +} + +/* artists - two column layout */ +.artists-content { + -webkit-column-count: 2; /* Chrome, Safari, Opera */ + -moz-column-count: 2; /* Firefox */ + column-count: 2; /* Standard syntax */ + + -webkit-column-gap: 20px; /* Chrome, Safari, Opera */ + -moz-column-gap: 20px; /* Firefox */ + column-gap: 20px; /* Standard syntax */ + + max-height: 100%; /* Adjust based on your layout */ +} + +/* artists - single column layout for mobile */ +@media (max-width: 768px) { + #lineCanvas, + #input { + display: none; + } + .artists-content { + -webkit-column-count: 1; + -moz-column-count: 1; + column-count: 1; + } +} diff --git a/assets/data/artists-and-events.json b/assets/data/artists-and-events.json deleted file mode 100644 index c01702f..0000000 --- a/assets/data/artists-and-events.json +++ /dev/null @@ -1,34 +0,0 @@ -[ - { - "uuid": "artists\/eduardo-cossio", - "title": "Eduardo Cossio", - "events": [ - { - "uuid": "program\/audible-edge-denmark-workshop", - "title": "Audible Edge Denmark Workshop" - } - ] - }, - { - "uuid": "artists\/josten-myburgh", - "title": "Josten Myburgh", - "events": [ - { - "uuid": "program\/audible-edge-denmark-workshop", - "title": "Audible Edge Denmark Workshop" - }, - { - "uuid": "program\/kinds-of-light-4", - "title": "Kinds of Light 4" - }, - { - "uuid": "program\/event-4", - "title": "event 4" - }, - { - "uuid": "program\/event-3", - "title": "event 3" - } - ] - } -] \ No newline at end of file diff --git a/assets/data/relations.json b/assets/data/relations.json new file mode 100644 index 0000000..f7e694c --- /dev/null +++ b/assets/data/relations.json @@ -0,0 +1,155 @@ +{ + "artists": { + "artists\/eduardo-cossio": { + "uuid": "artists\/eduardo-cossio", + "title": "Eduardo Cossio", + "events": [ + "program\/audible-edge-denmark-workshop" + ] + }, + "artists\/josten-myburgh": { + "uuid": "artists\/josten-myburgh", + "title": "Josten Myburgh", + "events": [ + "program\/audible-edge-denmark-workshop", + "program\/kinds-of-light-4", + "program\/event-4", + "program\/event-3" + ] + }, + "artists\/test-artist-1": { + "uuid": "artists\/test-artist-1", + "title": "test artist 1", + "events": [ + "program\/audible-edge-denmark-workshop" + ] + }, + "artists\/test-artist-5": { + "uuid": "artists\/test-artist-5", + "title": "test artist 5", + "events": [] + }, + "artists\/test-artist-3": { + "uuid": "artists\/test-artist-3", + "title": "test artist 3", + "events": [] + }, + "artists\/test-artist-4": { + "uuid": "artists\/test-artist-4", + "title": "test artist 4", + "events": [] + }, + "artists\/test-artist-2": { + "uuid": "artists\/test-artist-2", + "title": "test artist 2", + "events": [] + }, + "artists\/test-artist-6": { + "uuid": "artists\/test-artist-6", + "title": "test artist 6", + "events": [] + }, + "artists\/test-artist-7": { + "uuid": "artists\/test-artist-7", + "title": "test artist 7", + "events": [] + }, + "artists\/test-artist-8": { + "uuid": "artists\/test-artist-8", + "title": "test artist 8", + "events": [] + }, + "artists\/test-artist-9": { + "uuid": "artists\/test-artist-9", + "title": "test artist 9", + "events": [] + }, + "artists\/test-artist-10": { + "uuid": "artists\/test-artist-10", + "title": "test artist 10", + "events": [] + }, + "artists\/jenny-hickinbotham": { + "uuid": "artists\/jenny-hickinbotham", + "title": "Jenny Hickinbotham", + "events": [] + }, + "artists\/test-artist-12": { + "uuid": "artists\/test-artist-12", + "title": "test artist 12", + "events": [ + "program\/event-3" + ] + } + }, + "events": { + "program\/audible-edge-denmark-workshop": { + "uuid": "program\/audible-edge-denmark-workshop", + "title": "Audible Edge Denmark Workshop", + "date": "2024-04-28", + "artists": [ + "artists\/eduardo-cossio", + "artists\/josten-myburgh", + "artists\/test-artist-1" + ] + }, + "program\/kinds-of-light-4": { + "uuid": "program\/kinds-of-light-4", + "title": "Kinds of Light 4", + "date": "2024-04-26", + "artists": [ + "artists\/josten-myburgh" + ] + }, + "program\/event-4": { + "uuid": "program\/event-4", + "title": "event 4", + "date": "2024-04-27", + "artists": [ + "artists\/josten-myburgh" + ] + }, + "program\/event-3": { + "uuid": "program\/event-3", + "title": "event 3", + "date": "2024-04-27", + "artists": [ + "artists\/josten-myburgh", + "artists\/test-artist-12" + ] + } + }, + "dates": { + "2024-04-28": { + "events": [ + "program\/audible-edge-denmark-workshop", + "program\/audible-edge-denmark-workshop", + "program\/audible-edge-denmark-workshop" + ], + "artists": [ + "artists\/eduardo-cossio", + "artists\/josten-myburgh", + "artists\/test-artist-1" + ] + }, + "2024-04-26": { + "events": [ + "program\/kinds-of-light-4" + ], + "artists": [ + "artists\/josten-myburgh" + ] + }, + "2024-04-27": { + "events": [ + "program\/event-4", + "program\/event-3", + "program\/event-3" + ], + "artists": [ + "artists\/josten-myburgh", + "artists\/test-artist-12" + ] + } + } +} \ No newline at end of file diff --git a/assets/font/Work_Sans/OFL.txt b/assets/font/Work_Sans/OFL.txt new file mode 100644 index 0000000..c4e1510 --- /dev/null +++ b/assets/font/Work_Sans/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2019 The Work Sans Project Authors (https://github.com/weiweihuanghuang/Work-Sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/font/Work_Sans/README.txt b/assets/font/Work_Sans/README.txt new file mode 100644 index 0000000..456e401 --- /dev/null +++ b/assets/font/Work_Sans/README.txt @@ -0,0 +1,81 @@ +Work Sans Variable Font +======================= + +This download contains Work Sans as both variable fonts and static fonts. + +Work Sans is a variable font with this axis: + wght + +This means all the styles are contained in these files: + WorkSans-VariableFont_wght.ttf + WorkSans-Italic-VariableFont_wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Work Sans: + static/WorkSans-Thin.ttf + static/WorkSans-ExtraLight.ttf + static/WorkSans-Light.ttf + static/WorkSans-Regular.ttf + static/WorkSans-Medium.ttf + static/WorkSans-SemiBold.ttf + static/WorkSans-Bold.ttf + static/WorkSans-ExtraBold.ttf + static/WorkSans-Black.ttf + static/WorkSans-ThinItalic.ttf + static/WorkSans-ExtraLightItalic.ttf + static/WorkSans-LightItalic.ttf + static/WorkSans-Italic.ttf + static/WorkSans-MediumItalic.ttf + static/WorkSans-SemiBoldItalic.ttf + static/WorkSans-BoldItalic.ttf + static/WorkSans-ExtraBoldItalic.ttf + static/WorkSans-BlackItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/assets/font/Work_Sans/WorkSans-Italic-VariableFont_wght.ttf b/assets/font/Work_Sans/WorkSans-Italic-VariableFont_wght.ttf new file mode 100644 index 0000000..ad92373 Binary files /dev/null and b/assets/font/Work_Sans/WorkSans-Italic-VariableFont_wght.ttf differ diff --git a/assets/font/Work_Sans/WorkSans-VariableFont_wght.ttf b/assets/font/Work_Sans/WorkSans-VariableFont_wght.ttf new file mode 100644 index 0000000..9a82798 Binary files /dev/null and b/assets/font/Work_Sans/WorkSans-VariableFont_wght.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-Black.ttf b/assets/font/Work_Sans/static/WorkSans-Black.ttf new file mode 100644 index 0000000..1cd39e6 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-Black.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-BlackItalic.ttf b/assets/font/Work_Sans/static/WorkSans-BlackItalic.ttf new file mode 100644 index 0000000..a732803 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-BlackItalic.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-Bold.ttf b/assets/font/Work_Sans/static/WorkSans-Bold.ttf new file mode 100644 index 0000000..f25a85a Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-Bold.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-BoldItalic.ttf b/assets/font/Work_Sans/static/WorkSans-BoldItalic.ttf new file mode 100644 index 0000000..b6d245c Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-BoldItalic.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-ExtraBold.ttf b/assets/font/Work_Sans/static/WorkSans-ExtraBold.ttf new file mode 100644 index 0000000..2db801f Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-ExtraBold.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-ExtraBoldItalic.ttf b/assets/font/Work_Sans/static/WorkSans-ExtraBoldItalic.ttf new file mode 100644 index 0000000..a33bd56 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-ExtraBoldItalic.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-ExtraLight.ttf b/assets/font/Work_Sans/static/WorkSans-ExtraLight.ttf new file mode 100644 index 0000000..e32034e Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-ExtraLight.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-ExtraLightItalic.ttf b/assets/font/Work_Sans/static/WorkSans-ExtraLightItalic.ttf new file mode 100644 index 0000000..54d4437 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-ExtraLightItalic.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-Italic.ttf b/assets/font/Work_Sans/static/WorkSans-Italic.ttf new file mode 100644 index 0000000..df12e5c Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-Italic.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-Light.ttf b/assets/font/Work_Sans/static/WorkSans-Light.ttf new file mode 100644 index 0000000..86a9a36 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-Light.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-LightItalic.ttf b/assets/font/Work_Sans/static/WorkSans-LightItalic.ttf new file mode 100644 index 0000000..28b00c3 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-LightItalic.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-Medium.ttf b/assets/font/Work_Sans/static/WorkSans-Medium.ttf new file mode 100644 index 0000000..3c3a15a Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-Medium.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-MediumItalic.ttf b/assets/font/Work_Sans/static/WorkSans-MediumItalic.ttf new file mode 100644 index 0000000..5fa7161 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-MediumItalic.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-Regular.ttf b/assets/font/Work_Sans/static/WorkSans-Regular.ttf new file mode 100644 index 0000000..1954f4d Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-Regular.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-SemiBold.ttf b/assets/font/Work_Sans/static/WorkSans-SemiBold.ttf new file mode 100644 index 0000000..24d7ec4 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-SemiBold.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-SemiBoldItalic.ttf b/assets/font/Work_Sans/static/WorkSans-SemiBoldItalic.ttf new file mode 100644 index 0000000..084a094 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-SemiBoldItalic.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-Thin.ttf b/assets/font/Work_Sans/static/WorkSans-Thin.ttf new file mode 100644 index 0000000..b9df0c0 Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-Thin.ttf differ diff --git a/assets/font/Work_Sans/static/WorkSans-ThinItalic.ttf b/assets/font/Work_Sans/static/WorkSans-ThinItalic.ttf new file mode 100644 index 0000000..ae3fb9b Binary files /dev/null and b/assets/font/Work_Sans/static/WorkSans-ThinItalic.ttf differ diff --git a/assets/js/d3-relations-v01.js b/assets/js/d3-relations-v01.js new file mode 100644 index 0000000..5d69638 --- /dev/null +++ b/assets/js/d3-relations-v01.js @@ -0,0 +1,249 @@ +// init global line attributes +let noiseIntensity = 800; +let subdivisionFactor = 2; + +// squig controls +document.getElementById("toggleSquig").addEventListener("click", function () { + const svgContainer = document.getElementById("lineCanvas"); + const button = document.getElementById("toggleSquig"); + + if (svgContainer.style.display !== "none") { + svgContainer.style.display = "none"; + button.innerHTML = "off"; + button.style.border = "var(--cc-secondary) 1px solid"; + } else { + svgContainer.style.display = "block"; + button.innerHTML = "on"; + button.style.border = "var(--cc-primary) 1px solid"; + } +}); + +// update global variables based on input +function updateParameters() { + noiseIntensity = parseFloat(document.getElementById("noiseIntensity").value); + subdivisionFactor = parseInt( + document.getElementById("subdivisionFactor").value + ); + + // update displayed values + document.getElementById("noiseIntensityValue").textContent = noiseIntensity; + document.getElementById("subdivisionFactorValue").textContent = + subdivisionFactor; +} + +// event listeners for the parameter controls +document + .getElementById("noiseIntensity") + + .addEventListener("input", updateParameters); +document + .getElementById("subdivisionFactor") + + .addEventListener("input", updateParameters); + +function addNoiseToLine(points, noiseIntensity = 2, subdivisionFactor = 5) { + let noisyPoints = []; + + points.forEach((point, i) => { + // add original point + noisyPoints.push(point); + // for each segment, add midpoints with noise + if (i < points.length - 1) { + const nextPoint = points[i + 1]; + // subdivide segment and add noise + for (let j = 1; j <= subdivisionFactor; j++) { + const t = j / (subdivisionFactor + 1); + const midX = point.x + (nextPoint.x - point.x) * t; + const midY = point.y + (nextPoint.y - point.y) * t; + const noisyMidPoint = addRandomness( + { x: midX, y: midY }, + noiseIntensity + ); + noisyPoints.push(noisyMidPoint); + } + } + }); + + return noisyPoints; +} + +function addRandomness(point, intensity = 100) { + // add random displacement to x and y, controlled by intensity + return { + x: point.x + (Math.random() - 0.5) * intensity, + y: point.y + (Math.random() - 0.5) * intensity, + }; +} + +function calculateMidpointWithRandomness(pointA, pointB, intensity = 100) { + // get midpoint + const midpoint = { + x: (pointA.x + pointB.x) / 2, + y: (pointA.y + pointB.y) / 2, + }; + + // apply random offset to midpoint + return addRandomness(midpoint, intensity); +} +function addPointsWithMidpoints(points, intensity) { + let newPoints = []; + points.forEach((point, i) => { + // add the original point + newPoints.push(point); + // for each pair of points, calculate and add a new point slightly offset from their midpoint + if (i < points.length - 1) { + const midpoint = calculateMidpointWithRandomness( + point, + points[i + 1], + intensity + ); + newPoints.push(midpoint); + } + }); + return newPoints; +} + +document.addEventListener("DOMContentLoaded", function () { + fetch("/assets/data/relations.json") + .then((response) => response.json()) + .then((data) => { + setupHoverInteractions(data); + }); +}); +const lineGenerator = d3 + .line() + .x((d) => d.x) + .y((d) => d.y) + // apply smooth curve + // alpha controls the tension + .curve(d3.curveCatmullRom.alpha(0.5)); + +function setupHoverInteractions(data) { + const svg = d3.select("#lineCanvas"); + const liOffset = 14; + + d3.selectAll(".dates li, .events-container li, .artists-container li") + .on("mouseover", function (event, d) { + const element = d3.select(this); + const elementId = element.attr("data-id"); + const elementType = element.attr("data-type"); + + // path points + let points = []; + + if (elementType === "events") { + const eventElement = this.getBoundingClientRect(); + // start path at event + points.push({ + x: eventElement.left - liOffset, + y: eventElement.top + liOffset, + }); + + // line from event to date + const dateId = data.events[elementId].date; + const dateElement = document + .querySelector(`[data-id="${dateId}"][data-type="date"]`) + .getBoundingClientRect(); + points.push({ + x: dateElement.left - liOffset, + y: dateElement.top + liOffset, + }); + + // lines from event to each artist + data.events[elementId].artists.forEach((artistId) => { + const artistElement = document + .querySelector(`[data-id="${artistId}"][data-type="artists"]`) + .getBoundingClientRect(); + points.push({ + x: eventElement.left - liOffset, + y: eventElement.top + liOffset, + }); + points.push({ + x: artistElement.left - liOffset, + y: artistElement.top + liOffset, + }); + }); + } else if (elementType === "artists") { + // fetch related events, draw line from artist to each event, then to event's date + const artistElement = this.getBoundingClientRect(); + points.push({ + x: artistElement.left - liOffset, + y: artistElement.top + liOffset, + }); + + data.artists[elementId].events.forEach((eventId) => { + const eventElement = document + .querySelector(`[data-id="${eventId}"][data-type="events"]`) + .getBoundingClientRect(); + points.push({ + x: eventElement.left - liOffset, + y: eventElement.top + liOffset, + }); + + const dateId = data.events[eventId].date; + const dateElement = document + .querySelector(`[data-id="${dateId}"][data-type="date"]`) + .getBoundingClientRect(); + + points.push({ + x: dateElement.left - liOffset, + y: dateElement.top + liOffset, + }); + }); + } else if (elementType === "date") { + // fetch related events, draw line from date to each event, then to event's artists + const dateElement = this.getBoundingClientRect(); + points.push({ + x: dateElement.left - liOffset, + y: dateElement.top + liOffset, + }); + + data.dates[elementId].events.forEach((eventId) => { + const eventElement = document + .querySelector(`[data-id="${eventId}"][data-type="events"]`) + .getBoundingClientRect(); + // line to event + points.push({ + x: eventElement.left - liOffset, + y: eventElement.top + liOffset, + }); + + // for each event, draw lines to its artists + data.events[eventId].artists.forEach((artistId) => { + const artistElement = document + .querySelector(`[data-id="${artistId}"][data-type="artists"]`) + .getBoundingClientRect(); + // move to event first, then draw line to artist + points.push({ + x: artistElement.left - liOffset, + y: artistElement.top + liOffset, + }); + }); + }); + } + + // points = addPointsWithMidpoints(points, 1000); // Adjust intensity as needed + // const pathData = lineGenerator(points); + + // noiseIntensity = how much the points deviate from the original line + // subdivisionFactor = how many additional points are added between each pair of original points to increase the roughness + let pointsWithNoise = addNoiseToLine( + points, + noiseIntensity, + subdivisionFactor + ); + const pathData = lineGenerator(pointsWithNoise); + + // draw new path + svg + .append("path") + .attr("d", pathData) + .style("stroke", "var(--cc-secondary)") + .style("stroke-width", 6) + .style("fill", "none"); + }) + .on("mouseout", function () { + // clear existing paths + svg.selectAll("path").remove(); + }); +} diff --git a/assets/js/d3-script-trace-paths.js b/assets/js/d3-script-trace-paths.js deleted file mode 100644 index 58dfc05..0000000 --- a/assets/js/d3-script-trace-paths.js +++ /dev/null @@ -1,100 +0,0 @@ -document.addEventListener('DOMContentLoaded', function() { - const svg = d3.select('svg.dynamic'); - const pathA = svg.append('path') - .attr('id', 'pathA') - .attr('d', 'M100,500 L200,100 L300,500') - .attr('fill', 'none').attr('stroke', 'black'); - - const pathE = svg.append('path') - .attr('id', 'pathE') - .attr('d', 'M500,100 L500,500 M500,100 L600,100 M500,300 L600,300 M500,500 L600,500') - .attr('fill', 'none') - .attr('stroke', 'black'); - - fetch('/assets/data/artists-and-events.json') - .then(response => response.json()) - .then(data => { - const artists = data; - const events = []; - - artists.forEach(artist => { - artist.events.forEach(event => { - if (!events.some(e => e.uuid === event.uuid)) { - events.push(event); - } - }); - }); - - // Total lengths of the paths - const totalLengthA = pathA.node().getTotalLength(); - const totalLengthE = pathE.node().getTotalLength(); - - // Calculate spacing based on the number of artists and events - const spacingA = totalLengthA / (artists.length - 1 || 1); - const spacingE = totalLengthE / (events.length - 1 || 1); - - const eventPositions = new Map(); - - // Place events along path E and store their positions - events.forEach((event, index) => { - const point = pathE.node().getPointAtLength(index * spacingE); - eventPositions.set(event.uuid, point); - svg.append('circle') - .attr('cx', point.x) - .attr('cy', point.y) - .attr('r', 5) - .attr('fill', 'red'); - }); - - // Place artists along path A and add hover interactivity - artists.forEach((artist, index) => { - const pointA = pathA.node().getPointAtLength(index * spacingA); // Define pointA for artist - svg.append('circle') - .attr('cx', pointA.x) - .attr('cy', pointA.y) - .attr('r', 5) - .attr('fill', 'blue') - .on('mouseover', function() { - // Ensure 'point' is correctly scoped and refers to the artist's position - drawLines(artist, pointA); // Pass pointA here - }) - .on('mouseout', removeLines); - }); - - function drawLines(artist, pointA) { // Adjust to receive pointA - artist.events.forEach(event => { - const eventPoint = eventPositions.get(event.uuid); - if (eventPoint) { - svg.append('line') - .attr('class', 'connection') - .attr('x1', pointA.x) // Use pointA.x here - .attr('y1', pointA.y) // Use pointA.y here - .attr('x2', eventPoint.x) - .attr('y2', eventPoint.y) - .attr('stroke', 'black') - .attr('stroke-width', 1); - } - }); - } - - function removeLines() { - svg.selectAll('.connection').remove(); - } - }); - - d3.selectAll('.artist-element') - .on('mouseover', function() { - d3.select('.logo-svg-path') // Select the logo's path - .transition() // Smooth transition - .duration(500) // Duration in milliseconds - // Example: modify path data for a wave effect - .attr('d', 'modified path data here'); - }) - .on('mouseout', function() { - // Revert logo to original state - d3.select('.logo-svg-path') - .transition() // Smooth transition - .duration(500) // Duration in milliseconds - .attr('d', 'original path data here'); - }); -}); diff --git a/assets/js/d3-script.js b/assets/js/d3-script.js deleted file mode 100644 index 9a35174..0000000 --- a/assets/js/d3-script.js +++ /dev/null @@ -1,90 +0,0 @@ -document.addEventListener('DOMContentLoaded', function() { - const svg = d3.select("svg"), - width = +svg.attr("width"), - height = +svg.attr("height"); - - const artistLineY = height / 3, // Position of artist dots - eventLineY = 2 * height / 3; // Position of event dots - - fetch('/assets/data/artists-and-events.json') - .then(response => response.json()) - .then(data => { - const artists = data; - const eventsMap = new Map(); - - // Flatten events and map them by UUID for easy access - artists.forEach(artist => { - artist.events.forEach(event => { - eventsMap.set(event.uuid, {...event, relatedArtists: []}); - }); - }); - - // Associate artists with their events for line drawing - artists.forEach(artist => { - artist.events.forEach(event => { - const fullEvent = eventsMap.get(event.uuid); - if(fullEvent) fullEvent.relatedArtists.push(artist); - }); - }); - - const allEvents = Array.from(eventsMap.values()); - - // Scale to distribute dots evenly - const xScale = d3.scalePoint() - .domain(artists.map(d => d.uuid)) - .range([0, width]) - .padding(1); - - const xScaleEvents = d3.scalePoint() - .domain(allEvents.map(d => d.uuid)) - .range([0, width]) - .padding(1); - - // Draw artist dots - svg.selectAll(".artist-dot") - .data(artists) - .enter().append("circle") - .attr("class", "artist-dot") - .attr("cx", d => xScale(d.uuid)) - .attr("cy", artistLineY) - .attr("r", 5) - .attr("fill", "blue") - .on("mouseover", function(event, d) { - // Highlight and connect to events on hover - drawLines(d); - }) - .on("mouseout", function() { - // Remove lines when not hovering - removeLines(); - }); - - // Draw event dots - svg.selectAll(".event-dot") - .data(allEvents) - .enter().append("circle") - .attr("class", "event-dot") - .attr("cx", d => xScaleEvents(d.uuid)) - .attr("cy", eventLineY) - .attr("r", 5) - .attr("fill", "red"); - - function drawLines(artist) { - artist.events.forEach(event => { - const eventPos = eventsMap.get(event.uuid); - if(eventPos) { - svg.append("line") - .attr("class", "connection") - .attr("x1", xScale(artist.uuid)) - .attr("y1", artistLineY) - .attr("x2", xScaleEvents(event.uuid)) - .attr("y2", eventLineY) - .attr("stroke", "black"); - } - }); - } - - function removeLines() { - svg.selectAll(".connection").remove(); - } - }); -}); \ No newline at end of file diff --git a/assets/js/d3-test1.js b/assets/js/d3-test1.js deleted file mode 100644 index aa46f00..0000000 --- a/assets/js/d3-test1.js +++ /dev/null @@ -1,74 +0,0 @@ - - -fetch('/artists-and-events.json') - .then(response => response.json()) - .then(data => { - const svg = d3.select("svg"); - const width = +svg.attr("width"); - const height = +svg.attr("height"); - } -); - -d3.json("/api/data").then(function(data) { - const svg = d3.select("#visualization").append("svg") - .attr("width", 800) - .attr("height", 600); - - // Let's assume artists and events are placed randomly for simplicity - // In a real application, you might want to calculate positions or use a layout algorithm - const artists = data.artists.map((d, i) => ({ - ...d, - x: Math.random() * 800, - y: Math.random() * 600, - type: 'artist' - })); - - const events = data.events.map((d, i) => ({ - ...d, - x: Math.random() * 800, - y: Math.random() * 600, - type: 'event' - })); - - // Combine artist and event data for easier handling - const nodes = artists.concat(events); - - // Create dots - svg.selectAll(".dot") - .data(nodes) - .enter().append("circle") - .attr("class", "dot") - .attr("cx", d => d.x) - .attr("cy", d => d.y) - .attr("r", 5) - .on("mouseover", function(event, d) { - // On hover, show lines to connected nodes - if(d.type === 'artist') { - d.events.forEach(eventUuid => { - const eventNode = nodes.find(node => node.uuid === eventUuid); - svg.append("line") - .attr("class", "line") - .attr("x1", d.x) - .attr("y1", d.y) - .attr("x2", eventNode.x) - .attr("y2", eventNode.y) - .style("visibility", "visible"); - }); - } else { - d.artists.forEach(artistUuid => { - const artistNode = nodes.find(node => node.uuid === artistUuid); - svg.append("line") - .attr("class", "line") - .attr("x1", d.x) - .attr("y1", d.y) - .attr("x2", artistNode.x) - .attr("y2", artistNode.y) - .style("visibility", "visible"); - }); - } - }) - .on("mouseout", function() { - // Hide lines when not hovering - svg.selectAll(".line").remove(); - }); -}); \ No newline at end of file diff --git a/assets/js/script.js b/assets/js/script.js new file mode 100644 index 0000000..61cbdb6 --- /dev/null +++ b/assets/js/script.js @@ -0,0 +1,40 @@ +document.addEventListener("DOMContentLoaded", function () { + // toggle visibility of sections + function toggleSection(button) { + // toggle aria-expanded state + const isExpanded = button.getAttribute("aria-expanded") === "true"; + button.setAttribute("aria-expanded", !isExpanded); + + // show/hide the section + const sectionId = button.getAttribute("aria-controls"); + const sectionItems = document.getElementById(sectionId); + + // display flex for non-homepage menu-items, block for others + if (sectionId === "menu-items") { + if (sectionItems.classList.contains("flex")) { + sectionItems.style.display = isExpanded ? "none" : "flex"; + } + } else { + sectionItems.style.display = isExpanded ? "none" : "block"; + } + // update parent li class + var parent = button.closest("li.first-item"); + if (parent) { + parent.classList.toggle("list-style-circle", isExpanded); + } + } + + // attach event listeners to all toggle buttons + document.querySelectorAll(".toggle").forEach(function (toggle) { + toggle.addEventListener("click", function () { + toggleSection(this); + }); + }); + + var settingsButton = document.getElementById("settingsButton"); + var inputContainer = document.getElementById("input"); + + settingsButton.addEventListener("click", function () { + inputContainer.classList.toggle("hidden"); + }); +}); diff --git a/content/3_nightschool/_drafts/nightschool-test-1/nightschool-event.txt b/content/1_nightschool/_drafts/nightschool-test-1/nightschool-event.txt similarity index 100% rename from content/3_nightschool/_drafts/nightschool-test-1/nightschool-event.txt rename to content/1_nightschool/_drafts/nightschool-test-1/nightschool-event.txt diff --git a/content/3_nightschool/nightschool.txt b/content/1_nightschool/nightschool.txt similarity index 100% rename from content/3_nightschool/nightschool.txt rename to content/1_nightschool/nightschool.txt diff --git a/content/2_accessibility/accessibility.txt b/content/2_accessibility/accessibility.txt new file mode 100644 index 0000000..5c06391 --- /dev/null +++ b/content/2_accessibility/accessibility.txt @@ -0,0 +1,29 @@ +Title: Accessibility + +---- + +Intro: Tone List aspires to make our events safer for the needs and cultures of disabled people. To this end, we are working with peer artist and consultant Patrick Gunasekera to explore ways that we can improve the accessibility of Audible Edge now and into the future. Below are some of the ways we are supporting access at the festival this year. + +---- + +Description: + +Accessibility details will always be listed on events, including information regarding: wheelchair accessibility, volume levels, spaciousness/crowdedness of venue, lighting, whether alcohol is present or not, and the presence of specific accessibility provisions at an event (such as a low-sensory space). + +All Audible Edge events will be in wheelchair accessible venues. All audience members enter the venue via the same entranceway. No strobes or fast flashing lights will be used throughout the festival. Support workers, companion card holders and other caregivers may always enter events for free. + +Tone List have a small budget to facilitate accessibility requirements for our audience members. Requirements we can assist with facilitating are: + +- AUSLAN interpretation of events through Stage Left AUSLAN +- Audio description through DADAA +- Accessible taxi bookings for safe transport to and from events + +Other services or providers may be requested and we will do our best to accommodate. + +---- + +Form:

We encourage you to get in contact as early as possible to ensure we can coordinate services in time.

+ +---- + +Uuid: VJBgU8yJkLS69fQG \ No newline at end of file diff --git a/content/5_about/about.txt b/content/3_about/about.txt similarity index 100% rename from content/5_about/about.txt rename to content/3_about/about.txt diff --git a/content/4_accessibility/accessibility.txt b/content/4_accessibility/accessibility.txt deleted file mode 100644 index a2f0b01..0000000 --- a/content/4_accessibility/accessibility.txt +++ /dev/null @@ -1,5 +0,0 @@ -Title: Accessibility - ----- - -Uuid: VJBgU8yJkLS69fQG \ No newline at end of file diff --git a/content/6_supporters/dlgsc-colour.jpg b/content/4_supporters/dlgsc-colour.jpg similarity index 100% rename from content/6_supporters/dlgsc-colour.jpg rename to content/4_supporters/dlgsc-colour.jpg diff --git a/content/6_supporters/dlgsc-colour.jpg.txt b/content/4_supporters/dlgsc-colour.jpg.txt similarity index 100% rename from content/6_supporters/dlgsc-colour.jpg.txt rename to content/4_supporters/dlgsc-colour.jpg.txt diff --git a/content/6_supporters/supporters.txt b/content/4_supporters/supporters.txt similarity index 100% rename from content/6_supporters/supporters.txt rename to content/4_supporters/supporters.txt diff --git a/content/7_donate/donate.txt b/content/5_donate/donate.txt similarity index 100% rename from content/7_donate/donate.txt rename to content/5_donate/donate.txt diff --git a/content/8_newsletter/newsletter.txt b/content/6_newsletter/newsletter.txt similarity index 100% rename from content/8_newsletter/newsletter.txt rename to content/6_newsletter/newsletter.txt diff --git a/content/2_program/1_audible-edge-denmark-workshop/event.txt b/content/7_program/1_audible-edge-denmark-workshop/event.txt similarity index 97% rename from content/2_program/1_audible-edge-denmark-workshop/event.txt rename to content/7_program/1_audible-edge-denmark-workshop/event.txt index 79c646f..69c2070 100644 --- a/content/2_program/1_audible-edge-denmark-workshop/event.txt +++ b/content/7_program/1_audible-edge-denmark-workshop/event.txt @@ -6,6 +6,10 @@ Subtitle:

Eduardo Cossio, Josten Myburgh, Jasmin Wing-Yin Leung

---- +Description: + +---- + Ticketed: false ---- @@ -34,7 +38,7 @@ Venue-text: ---- -Start-date: 2024-02-09 +Start-date: 2024-04-28 ---- @@ -65,10 +69,6 @@ Tags: workshop ---- -Description: - ----- - Artist-link: - page://x13vhMEECsXOyHg0 diff --git a/content/2_program/2_kinds-of-light-4/event.txt b/content/7_program/2_kinds-of-light-4/event.txt similarity index 65% rename from content/2_program/2_kinds-of-light-4/event.txt rename to content/7_program/2_kinds-of-light-4/event.txt index 705f6ca..9dc1a8d 100644 --- a/content/2_program/2_kinds-of-light-4/event.txt +++ b/content/7_program/2_kinds-of-light-4/event.txt @@ -2,11 +2,15 @@ Title: Kinds of Light 4 ---- -Subtitle: Seacrest Gardens, Eduardo Cossio & Michael Terren +Artist-link: - page://x13vhMEECsXOyHg0 ---- -Location: +Subtitle: + +---- + +Description:

The final Kinds of Light of the year leans into unusual combinations and stark contrasts. The beguiling Seacrest Gardens inhabit a wonderfully strange world influenced by medieval music, early computer music, minimalism, neo-soul and free improvisation. Fragmented spoken word and lyrical melodies live inside textures made by guitars, keyboards and electronic sounds. Eduardo Cossio & Michael Terren’s improvised duo combines the ringing and rattling of strings on microtonal harps with lush and meticulous musique concrete and live synthesis.

---- @@ -30,11 +34,19 @@ Venues: - page://iCzTirTUV8bjHns6 ---- +Location: + +---- + Venue-text: Additional details about the venue. ---- -Start-date: 2024-02-07 00:00:00 +Start-date: 2024-04-26 + +---- + +Start-time: 19:00:00 ---- @@ -42,15 +54,15 @@ End-date: ---- -Tags: spoken word, computer music, free improvisation, live synthesis +End-time: ---- -Description: The final Kinds of Light of the year leans into unusual combinations and stark contrasts. The beguiling Seacrest Gardens inhabit a wonderfully strange world influenced by medieval music, early computer music, minimalism, neo-soul and free improvisation. Fragmented spoken word and lyrical melodies live inside textures made by guitars, keyboards and electronic sounds. Eduardo Cossio & Michael Terren’s improvised duo combines the ringing and rattling of strings on microtonal harps with lush and meticulous musique concrete and live synthesis. +Eventschedule: ---- -Artist-link: - page://x13vhMEECsXOyHg0 +Tags: spoken word, computer music, free improvisation, live synthesis ---- diff --git a/content/7_program/2_kinds-of-light-4/moss.jpg b/content/7_program/2_kinds-of-light-4/moss.jpg new file mode 100644 index 0000000..7e5792f Binary files /dev/null and b/content/7_program/2_kinds-of-light-4/moss.jpg differ diff --git a/content/7_program/2_kinds-of-light-4/moss.jpg.txt b/content/7_program/2_kinds-of-light-4/moss.jpg.txt new file mode 100644 index 0000000..7607b8b --- /dev/null +++ b/content/7_program/2_kinds-of-light-4/moss.jpg.txt @@ -0,0 +1,9 @@ +Sort: 2 + +---- + +Caption: + +---- + +Uuid: zxselUhKeamdfvJ1 \ No newline at end of file diff --git a/content/2_program/3_event-4/event.txt b/content/7_program/3_event-4/event.txt similarity index 85% rename from content/2_program/3_event-4/event.txt rename to content/7_program/3_event-4/event.txt index fd3dcea..8363ae1 100644 --- a/content/2_program/3_event-4/event.txt +++ b/content/7_program/3_event-4/event.txt @@ -6,7 +6,7 @@ Subtitle: ---- -Location: +Description: ---- @@ -30,11 +30,19 @@ Venues: ---- +Location: + +---- + Venue-text: ---- -Start-date: 2024-02-10 00:00:00 +Start-date: 2024-04-27 + +---- + +Start-time: ---- @@ -42,11 +50,15 @@ End-date: 2025-12-25 ---- -Tags: +End-time: ---- -Description: +Eventschedule: + +---- + +Tags: ---- diff --git a/content/2_program/4_event-3/event.txt b/content/7_program/4_event-3/event.txt similarity index 83% rename from content/2_program/4_event-3/event.txt rename to content/7_program/4_event-3/event.txt index b9c44d9..15b9cef 100644 --- a/content/2_program/4_event-3/event.txt +++ b/content/7_program/4_event-3/event.txt @@ -6,7 +6,7 @@ Subtitle: ---- -Location: +Description: ---- @@ -30,11 +30,19 @@ Venues: ---- +Location: + +---- + Venue-text: ---- -Start-date: 2024-02-09 00:00:00 +Start-date: 2024-04-27 + +---- + +Start-time: ---- @@ -42,11 +50,15 @@ End-date: 2024-01-27 ---- -Tags: +End-time: ---- -Description: +Eventschedule: + +---- + +Tags: ---- diff --git a/content/2_program/events.txt b/content/7_program/events.txt similarity index 100% rename from content/2_program/events.txt rename to content/7_program/events.txt diff --git a/content/artists/10_test-artist-8/artist.txt b/content/artists/10_test-artist-8/artist.txt new file mode 100644 index 0000000..6b9b626 --- /dev/null +++ b/content/artists/10_test-artist-8/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 8 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: gkdmyou7UwlbKsqR \ No newline at end of file diff --git a/content/artists/11_test-artist-9/artist.txt b/content/artists/11_test-artist-9/artist.txt new file mode 100644 index 0000000..d85514c --- /dev/null +++ b/content/artists/11_test-artist-9/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 9 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: srOQGREGftaZ4fnD \ No newline at end of file diff --git a/content/artists/12_test-artist-10/artist.txt b/content/artists/12_test-artist-10/artist.txt new file mode 100644 index 0000000..68853b5 --- /dev/null +++ b/content/artists/12_test-artist-10/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 10 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: ggAQawLacEqG8b7c \ No newline at end of file diff --git a/content/artists/13_jenny-hickinbotham/artist.txt b/content/artists/13_jenny-hickinbotham/artist.txt new file mode 100644 index 0000000..9f0bfa3 --- /dev/null +++ b/content/artists/13_jenny-hickinbotham/artist.txt @@ -0,0 +1,17 @@ +Title: Jenny Hickinbotham + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: 269KVyobk1oB2LjO \ No newline at end of file diff --git a/content/artists/14_test-artist-12/artist.txt b/content/artists/14_test-artist-12/artist.txt new file mode 100644 index 0000000..dc44207 --- /dev/null +++ b/content/artists/14_test-artist-12/artist.txt @@ -0,0 +1,29 @@ +Title: test artist 12 + +---- + +Bio-short: + +---- + +Bio-long: + +---- + +Links: + +---- + +Events: - page://ZQ7BJxhToUnv8Mxa + +---- + +Credits: + +---- + +Support: + +---- + +Uuid: b9XFeo9oZgeGpyqz \ No newline at end of file diff --git a/content/1_artists/1_eduardo-cossio/artist.jpg b/content/artists/1_eduardo-cossio/artist.jpg similarity index 100% rename from content/1_artists/1_eduardo-cossio/artist.jpg rename to content/artists/1_eduardo-cossio/artist.jpg diff --git a/content/1_artists/1_eduardo-cossio/artist.jpg.txt b/content/artists/1_eduardo-cossio/artist.jpg.txt similarity index 100% rename from content/1_artists/1_eduardo-cossio/artist.jpg.txt rename to content/artists/1_eduardo-cossio/artist.jpg.txt diff --git a/content/artists/1_eduardo-cossio/artist.txt b/content/artists/1_eduardo-cossio/artist.txt new file mode 100644 index 0000000..e4de189 --- /dev/null +++ b/content/artists/1_eduardo-cossio/artist.txt @@ -0,0 +1,48 @@ +Title: Eduardo Cossio + +---- + +Bio-short:

A prolific improviser and organiser making wild sounds with prepared zithers.

+ +---- + +Bio-long:

A prolific improviser and organiser making wild sounds with prepared zithers.A prolific improviser and organiser making wild sounds with prepared zithers.A prolific improviser and organiser making wild sounds with prepared zithers.A prolific improviser and organiser making wild sounds with prepared zithers.

+ +---- + +Links: + +- + url: https://bandcamp.com + text: Listening Link + popup: 'true' + type: audio +- + url: "" + text: Josten Myburgh + popup: 'true' + type: link + +---- + +Events: - page://Op2Hu6dIcJDGkmbP + +---- + +Credits: + +- + other_name: Josten + sort_name: Myburgh + group: "" + group_page: + - page://x0iIazdyGwIK9E2j + url: "" + +---- + +Support: + +---- + +Uuid: x13vhMEECsXOyHg0 \ No newline at end of file diff --git a/content/1_artists/2_josten-myburgh/artist.txt b/content/artists/2_josten-myburgh/artist.txt similarity index 100% rename from content/1_artists/2_josten-myburgh/artist.txt rename to content/artists/2_josten-myburgh/artist.txt diff --git a/content/1_artists/2_josten-myburgh/car1.gif b/content/artists/2_josten-myburgh/car1.gif similarity index 100% rename from content/1_artists/2_josten-myburgh/car1.gif rename to content/artists/2_josten-myburgh/car1.gif diff --git a/content/1_artists/2_josten-myburgh/car1.gif.txt b/content/artists/2_josten-myburgh/car1.gif.txt similarity index 100% rename from content/1_artists/2_josten-myburgh/car1.gif.txt rename to content/artists/2_josten-myburgh/car1.gif.txt diff --git a/content/artists/2_josten-myburgh/rd-dgs-1-2a2.wav b/content/artists/2_josten-myburgh/rd-dgs-1-2a2.wav new file mode 100644 index 0000000..4aa99ba Binary files /dev/null and b/content/artists/2_josten-myburgh/rd-dgs-1-2a2.wav differ diff --git a/content/artists/2_josten-myburgh/rd-dgs-1-2a2.wav.txt b/content/artists/2_josten-myburgh/rd-dgs-1-2a2.wav.txt new file mode 100644 index 0000000..47f5844 --- /dev/null +++ b/content/artists/2_josten-myburgh/rd-dgs-1-2a2.wav.txt @@ -0,0 +1,9 @@ +Sort: 2 + +---- + +Uuid: qhcZzUzU5kL3OZ35 + +---- + +Template: audio \ No newline at end of file diff --git a/content/1_artists/1_eduardo-cossio/artist.txt b/content/artists/3_test-artist-1/artist.txt similarity index 83% rename from content/1_artists/1_eduardo-cossio/artist.txt rename to content/artists/3_test-artist-1/artist.txt index 4939d6a..50344b9 100644 --- a/content/1_artists/1_eduardo-cossio/artist.txt +++ b/content/artists/3_test-artist-1/artist.txt @@ -1,4 +1,4 @@ -Title: Eduardo Cossio +Title: test artist 1 ---- @@ -32,4 +32,4 @@ Support: ---- -Uuid: x13vhMEECsXOyHg0 \ No newline at end of file +Uuid: T1QmDFVxIOa88h1e \ No newline at end of file diff --git a/content/artists/4_test-artist-5/artist.txt b/content/artists/4_test-artist-5/artist.txt new file mode 100644 index 0000000..00f1463 --- /dev/null +++ b/content/artists/4_test-artist-5/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 5 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: sIzAImOZg7RXdpMW \ No newline at end of file diff --git a/content/artists/5_test-artist-3/artist.txt b/content/artists/5_test-artist-3/artist.txt new file mode 100644 index 0000000..a09747f --- /dev/null +++ b/content/artists/5_test-artist-3/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 3 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: rlw6ygcSFe8QcV6o \ No newline at end of file diff --git a/content/artists/6_test-artist-4/artist.txt b/content/artists/6_test-artist-4/artist.txt new file mode 100644 index 0000000..9856b40 --- /dev/null +++ b/content/artists/6_test-artist-4/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 4 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: l8jSHr6qbYTc004k \ No newline at end of file diff --git a/content/artists/7_test-artist-2/artist.txt b/content/artists/7_test-artist-2/artist.txt new file mode 100644 index 0000000..36234c3 --- /dev/null +++ b/content/artists/7_test-artist-2/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 2 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: QeBQjZulYAMuF1UZ \ No newline at end of file diff --git a/content/artists/8_test-artist-6/artist.txt b/content/artists/8_test-artist-6/artist.txt new file mode 100644 index 0000000..43ece6d --- /dev/null +++ b/content/artists/8_test-artist-6/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 6 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: tLyjPKosYQi0cRBY \ No newline at end of file diff --git a/content/artists/9_test-artist-7/artist.txt b/content/artists/9_test-artist-7/artist.txt new file mode 100644 index 0000000..16ad835 --- /dev/null +++ b/content/artists/9_test-artist-7/artist.txt @@ -0,0 +1,17 @@ +Title: test artist 7 + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: 7QvLK3XU9cjtvLEq \ No newline at end of file diff --git a/content/artists/_drafts/ben-byrne/artist.txt b/content/artists/_drafts/ben-byrne/artist.txt new file mode 100644 index 0000000..2cc707e --- /dev/null +++ b/content/artists/_drafts/ben-byrne/artist.txt @@ -0,0 +1,17 @@ +Title: Ben Byrne + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: JFgmE1qxuzOOVZal \ No newline at end of file diff --git a/content/artists/_drafts/jon-heilbron-rebecca-lane/artist.txt b/content/artists/_drafts/jon-heilbron-rebecca-lane/artist.txt new file mode 100644 index 0000000..4223fc2 --- /dev/null +++ b/content/artists/_drafts/jon-heilbron-rebecca-lane/artist.txt @@ -0,0 +1,17 @@ +Title: Jon Heilbron & Rebecca Lane + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: 4TEVCHk4V8dSNIGt \ No newline at end of file diff --git a/content/artists/_drafts/lands-air/artist.txt b/content/artists/_drafts/lands-air/artist.txt new file mode 100644 index 0000000..392800d --- /dev/null +++ b/content/artists/_drafts/lands-air/artist.txt @@ -0,0 +1,17 @@ +Title: Land's Air + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: xLgaK2fL7JOlL4P5 \ No newline at end of file diff --git a/content/artists/_drafts/michael-terren/artist.txt b/content/artists/_drafts/michael-terren/artist.txt new file mode 100644 index 0000000..79ff2d2 --- /dev/null +++ b/content/artists/_drafts/michael-terren/artist.txt @@ -0,0 +1,17 @@ +Title: Michael Terren + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: GqHio8YMKUicktfD \ No newline at end of file diff --git a/content/artists/_drafts/mystery-wonder-records/artist.txt b/content/artists/_drafts/mystery-wonder-records/artist.txt new file mode 100644 index 0000000..32d5b9f --- /dev/null +++ b/content/artists/_drafts/mystery-wonder-records/artist.txt @@ -0,0 +1,17 @@ +Title: Mystery & Wonder Records + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: sR8HLq8ZmDM3MCa7 \ No newline at end of file diff --git a/content/artists/_drafts/patrick-gunasekera/artist.txt b/content/artists/_drafts/patrick-gunasekera/artist.txt new file mode 100644 index 0000000..efa48f9 --- /dev/null +++ b/content/artists/_drafts/patrick-gunasekera/artist.txt @@ -0,0 +1,17 @@ +Title: Patrick Gunasekera + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: b7kpI78nErcKy2ZZ \ No newline at end of file diff --git a/content/artists/_drafts/sally-ann-mcintyre/artist.txt b/content/artists/_drafts/sally-ann-mcintyre/artist.txt new file mode 100644 index 0000000..da97046 --- /dev/null +++ b/content/artists/_drafts/sally-ann-mcintyre/artist.txt @@ -0,0 +1,17 @@ +Title: Sally Ann McIntyre + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: xQIDZamcSeUiK0Ku \ No newline at end of file diff --git a/content/artists/_drafts/shoji-hano/artist.txt b/content/artists/_drafts/shoji-hano/artist.txt new file mode 100644 index 0000000..d8c6628 --- /dev/null +++ b/content/artists/_drafts/shoji-hano/artist.txt @@ -0,0 +1,17 @@ +Title: Shoji Hano + +---- + +Links: + +---- + +Events: + +---- + +Credits: + +---- + +Uuid: rIH7f9meLnRjcNt3 \ No newline at end of file diff --git a/content/1_artists/artists.txt b/content/artists/artists.txt similarity index 100% rename from content/1_artists/artists.txt rename to content/artists/artists.txt diff --git a/content/site.txt b/content/site.txt index ab02bd6..e50408c 100644 --- a/content/site.txt +++ b/content/site.txt @@ -2,8 +2,28 @@ Title: Audible Edge ---- +Titledisplay: Audible Edge ‘24 + +---- + +Subtitle: Festival of Sound + +---- + Email: info@tonelist.com.au ---- -Color: #ff6607 \ No newline at end of file +Color: #ff6607 + +---- + +Acknowledgement:

Tone List operates on Whadjuk Noongar boodja/country, and also hosts concerts on Mandjoogoordap Bindjareb, Ballardong and Minang boodja. We pay respects to Birdiya/Elders across time. We strive to listen to and be guided by place - boodja nih - in what we do.

+ +---- + +Metadescription:

Audible Edge Festival of Sound 2024. Presented by Tone List.

+ +---- + +Metakeywords:

Audible Edge Festival Sound Music Art Experimental Perth Boorloo

\ No newline at end of file diff --git a/content/venues/1_ps-arts-space/venue.txt b/content/venues/1_ps-arts-space/venue.txt index 9f11058..a2a721f 100644 --- a/content/venues/1_ps-arts-space/venue.txt +++ b/content/venues/1_ps-arts-space/venue.txt @@ -2,23 +2,27 @@ Title: PS Arts Space ---- -Accessibility: wheelchair accessible, accessible bathrooms +Location: 22 Pakenham St, Fremantle WA 6160 ---- -Accessibility-text: Additional accessibility details about PS Arts Space. +Land: Whadjuk Noongar boodja ---- -Location: 22 Pakenham St, Fremantle WA 6160 +Location-features: ---- -Land: +Location-text: ---- -Location-features: +Accessibility: wheelchair accessible, accessible bathrooms + +---- + +Accessibility-text: Additional accessibility details about PS Arts Space. ---- diff --git a/content/venues/2_the-flaming-galah/venue.txt b/content/venues/2_the-flaming-galah/venue.txt new file mode 100644 index 0000000..cbef1a8 --- /dev/null +++ b/content/venues/2_the-flaming-galah/venue.txt @@ -0,0 +1,42 @@ +Title: The Flaming Galah + +---- + +Accessibility: + +---- + +Accessibility-text: + +---- + +Location: 19B Essex St, Fremantle WA 6160 + +---- + +Land: Whadjuk Noongar boodja + +---- + +Location-features: + +---- + +Map: + +---- + +Contacts: + +- + contactname: General + contactemail: hello@theflaminggalahfreo.com.au + contactphone: "" + +---- + +Website: + +---- + +Uuid: 8y6RJ18EVbm6U37R \ No newline at end of file diff --git a/content/venues/3_sullivan-hall/venue.txt b/content/venues/3_sullivan-hall/venue.txt new file mode 100644 index 0000000..a33c7f3 --- /dev/null +++ b/content/venues/3_sullivan-hall/venue.txt @@ -0,0 +1,37 @@ +Title: Sullivan Hall + +---- + +Accessibility: wheelchair accessible, 2 all-gender accessible bathrooms + +---- + +Accessibility-text: + +---- + +Location: 2 Nannine Ave, White Gum Valley WA 6162 + +---- + +Land: Whadjuk Noongar boodja + +---- + +Location-features: + +---- + +Map: + +---- + +Contacts: + +---- + +Website: + +---- + +Uuid: PP97yUGOdrjCjEel \ No newline at end of file diff --git a/content/venues/4_online-jitsi/venue.txt b/content/venues/4_online-jitsi/venue.txt new file mode 100644 index 0000000..d3db5f2 --- /dev/null +++ b/content/venues/4_online-jitsi/venue.txt @@ -0,0 +1,37 @@ +Title: Online (Jitsi) + +---- + +Accessibility: + +---- + +Accessibility-text: + +---- + +Location: + +---- + +Land: + +---- + +Location-features: + +---- + +Map: + +---- + +Contacts: + +---- + +Website: https://meet.jit.si/ + +---- + +Uuid: hXiZZ1iIeosH9m05 \ No newline at end of file diff --git a/content/venues/5_goolugatup-heathcote/venue.txt b/content/venues/5_goolugatup-heathcote/venue.txt new file mode 100644 index 0000000..e1b61c4 --- /dev/null +++ b/content/venues/5_goolugatup-heathcote/venue.txt @@ -0,0 +1,42 @@ +Title: Goolugatup Heathcote + +---- + +Accessibility: wheelchair accessible, ACROD parking, 2 gender-neutral accessible bathrooms + +---- + +Accessibility-text: + +---- + +Location: Derbal Yerrigan Swan House, 58 Duncraig Rd, Applecross WA 6153 + +---- + +Land: Whadjuk Noongar boodja + +---- + +Location-features: + +---- + +Map: + +---- + +Contacts: + +- + contactname: General + contactemail: heathcote@melville.wa.gov.au + contactphone: 08 9364 5666 + +---- + +Website: https://www.goolugatup.com/ + +---- + +Uuid: ax34O7v3mJrpZ61l \ No newline at end of file diff --git a/content/venues/6_state-library-of-western-australia-geographe-room/venue.txt b/content/venues/6_state-library-of-western-australia-geographe-room/venue.txt new file mode 100644 index 0000000..97af450 --- /dev/null +++ b/content/venues/6_state-library-of-western-australia-geographe-room/venue.txt @@ -0,0 +1,46 @@ +Title: State Library of Western Australia (Geographe Room) + +---- + +Location: 25 Francis St, Perth WA 6000 + +---- + +Land: Whadjuk Noongar boodja + +---- + +Location-features: ground floor + +---- + +Location-text:

Located in the Perth Cultural Centre

+ +---- + +Accessibility: wheelchair accessible, gender-neural accessible bathrooms + +---- + +Accessibility-text: + +---- + +Map: + +---- + +Contacts: + +- + contactname: General + contactemail: "" + contactphone: "0894273111" + +---- + +Website: https://slwa.wa.gov.au/venues/geographe-room + +---- + +Uuid: zFNZnl0BjpIg4Gme \ No newline at end of file diff --git a/content/venues/7_local-and-aesthetic/venue.txt b/content/venues/7_local-and-aesthetic/venue.txt new file mode 100644 index 0000000..70b27ab --- /dev/null +++ b/content/venues/7_local-and-aesthetic/venue.txt @@ -0,0 +1,46 @@ +Title: Local and Aesthetic + +---- + +Location: 769 Beaufort St, Mount Lawley WA 6050 + +---- + +Land: Whadjuk Noongar boodja + +---- + +Location-features: + +---- + +Location-text: + +---- + +Accessibility: 1 gender-neutral accessible bathroom, wheelchair accessible, spacious venue, food available + +---- + +Accessibility-text: + +---- + +Map: + +---- + +Contacts: + +- + contactname: General + contactemail: hello@localandaesthetic.com.au + contactphone: 0456 460 792 + +---- + +Website: https://www.localandaesthetic.com.au/ + +---- + +Uuid: fKLwaA2meaUpVdSp \ No newline at end of file diff --git a/content/venues/8_astral-weeks/venue.txt b/content/venues/8_astral-weeks/venue.txt new file mode 100644 index 0000000..36f63cd --- /dev/null +++ b/content/venues/8_astral-weeks/venue.txt @@ -0,0 +1,46 @@ +Title: Astral Weeks + +---- + +Location: Shop 12/60/66 Roe St, Northbridge WA 6003 + +---- + +Land: Whadjuk Noongar boodja + +---- + +Location-features: + +---- + +Location-text:

located in Chinatown

+ +---- + +Accessibility: wheelchair accessible, 1 gender-neutral accessible bathroom + +---- + +Accessibility-text: small, crowded space, acoustically treated + +---- + +Map: + +---- + +Contacts: + +- + contactname: General + contactemail: listen@astral-weeks.com.au + contactphone: "" + +---- + +Website: + +---- + +Uuid: kqypbNIl6mX6BgZv \ No newline at end of file diff --git a/content/venues/9_state-library-of-western-australia-theatrette/venue.txt b/content/venues/9_state-library-of-western-australia-theatrette/venue.txt new file mode 100644 index 0000000..b859584 --- /dev/null +++ b/content/venues/9_state-library-of-western-australia-theatrette/venue.txt @@ -0,0 +1,46 @@ +Title: State Library of Western Australia (Theatrette) + +---- + +Location: 25 Francis St, Perth WA 6000 + +---- + +Land: Whadjuk Noongar boodja + +---- + +Location-features: + +---- + +Location-text:

located in the Perth Cultural Centre

+ +---- + +Accessibility: wheelchair accessible, gender-neural accessible bathrooms + +---- + +Accessibility-text: + +---- + +Map: + +---- + +Contacts: + +- + contactname: General + contactemail: "" + contactphone: "0894273111" + +---- + +Website: + +---- + +Uuid: YgU1Cd9MUyKU7xNo \ No newline at end of file diff --git a/site/blueprints/fields/links.yml b/site/blueprints/fields/links.yml new file mode 100644 index 0000000..84db65d --- /dev/null +++ b/site/blueprints/fields/links.yml @@ -0,0 +1,14 @@ +type: structure +label: {{ page.title }} Links +fields: + url: + type: url + label: URL + placeholder: https:// + text: + type: text + label: Link Text + popup: + type: toggle + label: Open in new tab + default: true diff --git a/site/blueprints/files/audio.yml b/site/blueprints/files/audio.yml new file mode 100644 index 0000000..4817c4e --- /dev/null +++ b/site/blueprints/files/audio.yml @@ -0,0 +1,11 @@ +title: Sounds +accept: + mime: audio/* + type: audio + maxsize: 20000000 # 20mb in bytes +template: audio +cover: true +fields: + description: + label: Description + type: writer diff --git a/site/blueprints/pages/_add.yml b/site/blueprints/pages/_add.yml deleted file mode 100644 index 548c183..0000000 --- a/site/blueprints/pages/_add.yml +++ /dev/null @@ -1,6 +0,0 @@ -related: - label: Related - type: multiselect - options: - type: query - query: site.children.published diff --git a/site/blueprints/pages/accessibility.yml b/site/blueprints/pages/accessibility.yml index 0e94bbb..d98ee78 100644 --- a/site/blueprints/pages/accessibility.yml +++ b/site/blueprints/pages/accessibility.yml @@ -4,6 +4,18 @@ image: icon: ♿︎ fields: + + intro: + label: {{ page.title }} Introduction + type: writer + + description: - label: {{ page.title }} Information - type: textarea + label: {{ page.title }} Description + type: writer + size: medium + + form: + label: {{ page.title }} Form Introduction + type: writer + \ No newline at end of file diff --git a/site/blueprints/pages/artist.yml b/site/blueprints/pages/artist.yml index 40f70c7..6efbfa4 100644 --- a/site/blueprints/pages/artist.yml +++ b/site/blueprints/pages/artist.yml @@ -1,6 +1,6 @@ title: Artist -icon: 🖼 +icon: 🦑 status: draft: @@ -27,19 +27,8 @@ columns: label: Long Bio links: - type: structure + extends: fields/links fields: - url: - type: url - label: URL - placeholder: https:// - text: - type: text - label: Link Text - popup: - type: toggle - label: Open in new tab - default: true type: type: select label: Link Type @@ -71,6 +60,15 @@ columns: group: label: Affiliated Groups type: tags + group_page: + label: Group Page URL + type: pages + query: site.index.filterBy('intendedTemplate', 'artist') + url: + type: url + label: Individual Member URL + placeholder: https:// + help: Members of the group, or other acknowledgements involved in the project. support: @@ -80,6 +78,7 @@ columns: - width: 1/3 sections: images: + label: Images type: files layout: cards # template: image @@ -88,3 +87,9 @@ columns: ratio: 5/4 cover: true size: small + + sounds: + label: Sounds + type: files + template: audio + layout: list diff --git a/site/blueprints/pages/event.yml b/site/blueprints/pages/event.yml index dc72e66..7807e61 100644 --- a/site/blueprints/pages/event.yml +++ b/site/blueprints/pages/event.yml @@ -11,19 +11,25 @@ status: listed: label: Published text: The {{ page.title }} is shared. - columns: - main: - width: 2/3 + - width: 1 fields: title: type: text placeholder: "{{ page.title }}" label: Title + artist_link: + label: Lineup + width: 1/2 + type: pages + query: site.index.filterBy('intendedTemplate', 'artist') + text: "{{ page.title }}" + subtitle: - label: Subtitle + label: Optional Additional Subtitle type: writer + width: 1/2 description: type: writer @@ -128,7 +134,8 @@ columns: max: 1 options: type: query - query: page.siblings.pluck('eventType', ',', true) + query: site.children.template('event').children.pluck('eventType', ',', true) + startDate: label: Start Date and Time type: date @@ -155,38 +162,29 @@ columns: type: tags options: type: query - query: page.siblings.pluck('tags', ',', true) + query: site.children.template('event').children.pluck('tags', ',', true) - artist_link: - label: Associated Artists - width: 1/2 - type: pages - query: site.index.filterBy('intendedTemplate', 'artist') - text: "{{ page.title }}" + accessibility: label: {{ page.title }} Accessibility type: textarea help: Any accessibility features specific to the event, such as what to expect of the concert, etc. - links: - type: structure - label: {{ page.title }} Links - fields: - url: - type: url - label: URL - placeholder: https:// - text: - type: text - label: Link Text - popup: - type: toggle - label: Open in new tab - default: true - - sidebar: - width: 1/3 + links: + extends: shared/links + + + - width: 1 sections: - files: + images: + label: Images type: files + layout: cards + # template: image + # info: "{{ file.dimensions }}" + image: + ratio: 5/4 + cover: true + size: small + diff --git a/site/blueprints/pages/venue.yml b/site/blueprints/pages/venue.yml index 895a921..b6d9921 100644 --- a/site/blueprints/pages/venue.yml +++ b/site/blueprints/pages/venue.yml @@ -10,21 +10,6 @@ fields: label: Venue Name type: text - accessibility: - label: Accessibility Features - width: 1/2 - icon: wheelchair - type: tags - options: - type: query - query: page.siblings.pluck('accessibility', ',', true) - - accessibility_text: - label: Custom Accessibility Details - width: 1/2 - icon: wheelchair - type: textarea - location: label: Location width: 1/2 @@ -35,22 +20,44 @@ fields: label: Land Acknowledgement width: 1/2 type: tags + icon: none options: type: query - query: page.siblings.pluck('location_features', ',', true) + query: site.children.template('venues').children.pluck('land', ',', true) location_features: label: Location Features width: 1/2 type: tags + icon: none help: Outdoor venue, parking available, etc. options: type: query - query: page.siblings.pluck('location_features', ',', true) + query: site.children.template('venues').children.pluck('location_features', ',', true) - map: - label: Map + location_text: + label: Location Details + width: 1/2 + type: writer + + accessibility: + label: Accessibility Features + width: 1/2 + type: tags + icon: none + options: + type: query + query: site.children.template('venues').children.pluck('accessibility', ',', true) + + accessibility_text: + label: Custom Accessibility Details + width: 1/2 type: textarea + + map: + label: Iframe Map + type: text + pattern: "^$" help: Embed code from Google Maps. contacts: @@ -63,9 +70,11 @@ fields: contactEmail: label: Contact Email type: email + placeholder: false contactPhone: label: Contact Phone type: tel + placeholder: "08" website: label: Venue Website diff --git a/site/blueprints/site.yml b/site/blueprints/site.yml index ff3face..8738ec3 100644 --- a/site/blueprints/site.yml +++ b/site/blueprints/site.yml @@ -30,6 +30,23 @@ tabs: appearance: type: fields fields: + title: + label: Site Title + type: text + icon: title + + titleDisplay: + label: Display Title + type: text + icon: title + width: 1/2 + + subtitle: + label: Subtitle + type: text + icon: title + width: 1/2 + email: label: Contact Email type: email @@ -38,3 +55,22 @@ tabs: label: Colour type: color default: blue + + acknowledgement: + label: Acknowledgement of Country + type: writer + + seo: + type: headline + label: SEO + + metaDescription: + label: Meta Description + type: writer + + metaKeywords: + label: Meta Keywords + type: writer + + seo: + type: files diff --git a/site/config/config.php b/site/config/config.php index 273d9b7..6ecc4b0 100644 --- a/site/config/config.php +++ b/site/config/config.php @@ -1,39 +1,96 @@ children()->listed(); +// $artistData = []; + +// foreach ($artists as $artist) { +// // Fetch associated events using the 'events' field (pages field) +// $events = []; +// foreach ($artist->events()->toPages() as $eventPage) { +// if ($eventPage) { +// $events[] = [ +// 'uuid' => (string) $eventPage->id(), +// 'title' => (string) $eventPage->title()->value(), + +// ]; +// } +// } + +// $artistData[] = [ +// 'uuid' => (string) $artist->id(), +// 'title' => (string) $artist->title()->value(), +// 'events' => $events, +// // Include additional artist details as needed +// ]; +// } + +// $jsonData = json_encode($artistData, JSON_PRETTY_PRINT); +// file_put_contents($kirby->root('assets') . '/data/artists-and-events.json', $jsonData); +// } + + + +function generateRelationsJson() { $kirby = kirby(); - // Fetch artists using the 'artist' template - // $artists = $kirby->site()->children()->listed()->filterBy('intendedTemplate', 'artist'); $artists = page('artists')->children()->listed(); $artistData = []; + $eventsData = []; + $datesData = []; foreach ($artists as $artist) { - // Fetch associated events using the 'events' field (pages field) $events = []; foreach ($artist->events()->toPages() as $eventPage) { if ($eventPage) { - $events[] = [ - 'uuid' => (string) $eventPage->id(), - 'title' => (string) $eventPage->title()->value(), + $eventUuid = (string) $eventPage->id(); + $events[] = $eventUuid; - ]; + // Assuming you have a startDate field in your event pages + $eventDate = (string) $eventPage->start_date()->toDate('Y-m-d'); + if (!isset($datesData[$eventDate])) { + $datesData[$eventDate] = ['events' => [], 'artists' => []]; + } + $datesData[$eventDate]['events'][] = $eventUuid; + if (!in_array((string) $artist->id(), $datesData[$eventDate]['artists'])) { + $datesData[$eventDate]['artists'][] = (string) $artist->id(); + } + + // Populate events data + if (!isset($eventsData[$eventUuid])) { + $eventsData[$eventUuid] = [ + 'uuid' => $eventUuid, + 'title' => (string) $eventPage->title()->value(), + 'date' => $eventDate, + 'artists' => [], + ]; + } + $eventsData[$eventUuid]['artists'][] = (string) $artist->id(); } } - $artistData[] = [ + $artistData[(string) $artist->id()] = [ 'uuid' => (string) $artist->id(), 'title' => (string) $artist->title()->value(), 'events' => $events, - // Include additional artist details as needed ]; } - $jsonData = json_encode($artistData, JSON_PRETTY_PRINT); - file_put_contents($kirby->root('assets') . '/data/artists-and-events.json', $jsonData); + $combinedData = [ + 'artists' => $artistData, + 'events' => $eventsData, + 'dates' => $datesData, + ]; + + $jsonData = json_encode($combinedData, JSON_PRETTY_PRINT); + file_put_contents($kirby->root('assets') . '/data/relations.json', $jsonData); } + /** * All config options: https://getkirby.com/docs/reference/system/options */ @@ -144,20 +201,25 @@ function generateArtistsAndEventsJson() ], 'hooks' => [ 'page.create:after' => function ($newPage) { - generateArtistsAndEventsJson(); + // generateArtistsAndEventsJson(); + generateRelationsJson(); if ($newPage && ($newPage->intendedTemplate() === 'artist' || $newPage->intendedTemplate() === 'event')) { - generateArtistsAndEventsJson(); + // generateArtistsAndEventsJson(); + generateRelationsJson(); } }, 'page.update:after' => function ($newPage, $oldPage) { - generateArtistsAndEventsJson(); + // generateArtistsAndEventsJson(); + generateRelationsJson(); if ($newPage && ($newPage->intendedTemplate() === 'artist' || $newPage->intendedTemplate() === 'event')) { - generateArtistsAndEventsJson(); + // generateArtistsAndEventsJson(); + generateRelationsJson(); } }, 'page.delete:after' => function ($status, $page) { if ($page && ($page->intendedTemplate() === 'artist' || $page->intendedTemplate() === 'event')) { - generateArtistsAndEventsJson(); + // generateArtistsAndEventsJson(); + generateRelationsJson(); } }, ], diff --git a/site/controllers/home.php b/site/controllers/home.php index c0b8694..5eb9736 100644 --- a/site/controllers/home.php +++ b/site/controllers/home.php @@ -1,5 +1,5 @@ $projectTitle ]; diff --git a/site/controllers/program.php b/site/controllers/program.php deleted file mode 100644 index cbb7757..0000000 --- a/site/controllers/program.php +++ /dev/null @@ -1,10 +0,0 @@ -images()->sortBy('sort', 'filename'); - - return [ - 'gallery' => $gallery - ]; -}; diff --git a/site/controllers/work.php b/site/controllers/work.php deleted file mode 100644 index 0cd2a75..0000000 --- a/site/controllers/work.php +++ /dev/null @@ -1,17 +0,0 @@ -site()->index()->filterBy('intendedTemplate', 'work'); - - // Extract and compile unique categories - $categories = $workPages->pluck('category_test', ',', true); - - // Remove duplicates and empty values - $categories = array_filter(array_unique($categories)); - - // Return an array of variables to the template - return [ - 'categories' => $categories - ]; -}; diff --git a/site/snippets/dates.php b/site/snippets/dates.php new file mode 100644 index 0000000..587b676 --- /dev/null +++ b/site/snippets/dates.php @@ -0,0 +1,35 @@ +children()->listed(); +$events = page('program')->children()->listed(); + +// Initialize an array to hold dates for display and data attributes +$dates = []; + +// Loop through each event +foreach ($events as $event) { + // Extract and format the start date for display + $displayDate = $event->start_date()->toDate('F jS'); + // Format the start date for the data-date attribute + $dataDate = $event->start_date()->toDate('Y-m-d'); + + // Construct a unique key to avoid duplicates with different formats + $uniqueKey = $dataDate; + + // Check if the unique key is not already in the array to avoid duplicates + if (!array_key_exists($uniqueKey, $dates)) { + // If not, add it to the array with both display and data-date formats + $dates[$uniqueKey] = ['display' => $displayDate, 'data' => $dataDate]; + } +} +// Sort the dates array by keys to ensure it's in chronological order +ksort($dates); +?> + + \ No newline at end of file diff --git a/site/snippets/footer.php b/site/snippets/footer.php index bf0f0ee..4ce7ea9 100644 --- a/site/snippets/footer.php +++ b/site/snippets/footer.php @@ -1,5 +1,6 @@ diff --git a/site/snippets/header.php b/site/snippets/header.php index 7155391..31ec1b7 100644 --- a/site/snippets/header.php +++ b/site/snippets/header.php @@ -20,6 +20,10 @@ '@auto', ]) ?> + + -
-
+
- title()->html()) : ?> -

- - subtitle()->kirbytext()) : ?> -

- + +
+
    +
  • +

    title()->html() ?>

    +
  • + +
+ +
+ subtitle()->kirbytext()) : ?> + + +
location()->html()) : ?>

-

Artists:

-
    - artist_link()->toPages(); - foreach ($artists as $artist) : ?> -
  • - title() ?> -
  • - -
- - description())) : ?> -

Details:

-
- -

Venue:

-

- Data served from the `venue` pages.

-
    - venues()->toPages(); - foreach ($venues as $venue) : ?> -
  • - title() ?> - -

    Location: location()->html() ?>

    - - accessibility_text()->isNotEmpty()) : ?> -

    Accessibility: accessibility_text()->kirbytextinline() ?>

    +
    + start_date()->toDate('d/m/Y')) : ?> +

    + + start_time()->toDate('H:iA')) : ?> + , - - land()->isNotEmpty()) : ?> -

    Land Acknowledgement: land()->html() ?>

    +

    + + end_date()->toDate('d/m/Y')) : ?> +

    + end_time()->toDate('H:iA')) : ?> + , +

    + +
    +
    + venues()->toPages(); + $venue = $venue->first(); + ?> + + website()->isNotEmpty()) : ?> + + title() ?> + + +

    + title() ?> +

    + - accessibility()->isNotEmpty()) : ?> -

    Accessibility Features: accessibility()->html() ?>

    - +

    + location()->html() ?> +

    - - land()->isNotEmpty()) : ?> -

    Land Acknowledgement: land()->html() ?>

    - + + land()->isNotEmpty()) : ?> +

    + land()->html() ?> +

    + - - location_features()->isNotEmpty()) : ?> -

    Location Features: location_features()->html() ?>

    - +
    + accessibility + + accessibility_text()->isNotEmpty()) : ?> + accessibility_text()->kt() ?> + - - map()->isNotEmpty()) : ?> -
    Map: map()->kirbytext() ?>
    - + accessibility()->isNotEmpty()) : ?> +

    Accessibility Features:

    +
    accessibility()->html() ?>
    + + accessibility())) : ?> +

    Event Specific Accessibility:

    +
    + - - website()->isNotEmpty()) : ?> -

    Website: website()->value() ?>

    - + location_features()->isNotEmpty()) : ?> +

    Location Features: location_features()->html() ?>

    + + + + map()->isNotEmpty()) : ?> + + +
    +
    +
+ +
+
    + artist_link()->toPages(); + foreach ($artists as $artist) : ?> +
  • + + title() ?> +
  • +
+ + images()->isNotEmpty()) : ?> +
+ images() as $image) : ?> +
+ <?= $image->alt()->or('Event image') ?> +
caption()->or('') ?>
+
+ +
+ + +
+ + +
+ description())) : ?> +
+ +
+ + + + + + ticketed()->toBool()) : ?>
ticket_link()->url()) : ?> @@ -110,23 +170,7 @@
-

Event Dates:

-
- start_date()->toDate('d/m/Y')) : ?> -

Start: - start_time()->toDate('H:iA')) : ?> - at - -

- - end_date()->toDate('d/m/Y')) : ?> -

End: - end_time()->toDate('H:iA')) : ?> - at - -

- -
+ tags()->split(',')) : ?> @@ -139,10 +183,7 @@ - accessibility())) : ?> -

Event Specific Accessibility:

-
- + links()->toStructure(); if ($links->isNotEmpty()) : ?> @@ -159,5 +200,9 @@
+
+ +
+
\ No newline at end of file diff --git a/site/templates/home.php b/site/templates/home.php index e312ee1..464f611 100644 --- a/site/templates/home.php +++ b/site/templates/home.php @@ -1,66 +1,54 @@ -
- -
+
+ + + +
+
    +
  • + +

    + 'program', 'className' => 'events']); ?> +
  • +
+
+ +
+
    +
  • + +

    +
    + 'artists', 'className' => 'artists']); ?> +
    +
  • +
+
- - - - - - - -
-
diff --git a/site/templates/home_launch.php b/site/templates/home_launch.php new file mode 100644 index 0000000..d337aa6 --- /dev/null +++ b/site/templates/home_launch.php @@ -0,0 +1,20 @@ + + + + + +
+ +
+ +
+ +
+ +
+ +
+ + \ No newline at end of file