replace images with cloudinary

This commit is contained in:
saiminh 2023-08-23 16:15:00 +02:00
parent 00086ac451
commit baece251a1
46 changed files with 632 additions and 150 deletions

3
.gitignore vendored
View file

@ -8,3 +8,6 @@ node_modules
!.env.example
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
# Local Netlify folder
.netlify

View file

@ -9,10 +9,10 @@ function __memo(fn) {
return {
appDir: "_app",
appPath: "_app",
assets: new Set([".DS_Store","bg.jpeg","bg.jpg","bg.png","cursor.png","cursor.svg","displacementmap.jpg","displacementmap.png","favicon.png","pointer.png","pointer.svg","video.mp4","work/.DS_Store","work/adidas/adidas_hero.jpg","work/formo/formo-rec.mp4","work/formo/formo-rec.webm","work/formo/formo_hero.png","work/jpl/jpl_hero.jpg"]),
mimeTypes: {".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".svg":"image/svg+xml",".mp4":"video/mp4",".webm":"video/webm"},
assets: new Set([".DS_Store","cursor.png","cursor.svg","favicon.png","pointer.png","pointer.svg","work/.DS_Store","work/adidas/adidas_hero.jpg","work/formo/formo-rec.mp4","work/formo/formo-rec.webm","work/formo/formo_hero.png","work/jpl/jpl_hero.jpg"]),
mimeTypes: {".png":"image/png",".svg":"image/svg+xml",".jpg":"image/jpeg",".mp4":"video/mp4",".webm":"video/webm"},
_: {
client: {"start":"_app/immutable/entry/start.24653ae3.js","app":"_app/immutable/entry/app.5edbf885.js","imports":["_app/immutable/entry/start.24653ae3.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/singletons.e5eb807e.js","_app/immutable/entry/app.5edbf885.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js"],"stylesheets":[],"fonts":[]},
client: {"start":"_app/immutable/entry/start.e3c93b33.js","app":"_app/immutable/entry/app.590275c4.js","imports":["_app/immutable/entry/start.e3c93b33.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/singletons.6f10bc10.js","_app/immutable/entry/app.590275c4.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js"],"stylesheets":[],"fonts":[]},
nodes: [
__memo(() => import('../server/nodes/0.js')),
__memo(() => import('../server/nodes/1.js')),

View file

@ -1 +0,0 @@
canvas.svelte-1819g2x{position:fixed;top:0;left:0;z-index:-1}h1.svelte-aejjwo.svelte-aejjwo{font-size:16vw;font-style:italic;margin:0 0 .5em;letter-spacing:-.04em;text-align:center;position:fixed;top:0;width:100%;visibility:hidden;transition:all .3s cubic-bezier(.175,.885,.32,1.275)}@media screen and (min-width: 768px){h1.svelte-aejjwo.svelte-aejjwo{font-size:7vw}}h1.svelte-aejjwo span.svelte-aejjwo{display:inline-block;padding:0 .25em}h2.svelte-aejjwo.svelte-aejjwo{line-height:1.1;letter-spacing:-.025em;font-size:2.5vw;opacity:0;position:absolute;left:.5em;bottom:.5em;transform:scale(.8) translateY(100%);padding:.1em .4em .2em;text-align:center;transform-origin:center center;width:auto;margin:0;background-color:var(--color-bg);color:var(--color-text);transition:all .3s cubic-bezier(.175,.885,.32,1.275)}.works.svelte-aejjwo .work:not(.active):hover h2.svelte-aejjwo{opacity:1;transform:scale(1) translateY(0)}.works.svelte-aejjwo.svelte-aejjwo{padding:15vw .5em .5em;display:flex;gap:.25em;flex-wrap:wrap}@media screen and (min-width: 768px){.works.svelte-aejjwo.svelte-aejjwo{gap:.25em;padding:8.5vw .5em .5em;width:100%;max-width:1200px;margin:0 auto;padding-bottom:20svh}}.work.svelte-aejjwo.svelte-aejjwo{flex:0 0 calc(50% - .125em);display:block;position:relative;padding:0;transition:all .3s cubic-bezier(.175,.885,.32,1.275);text-decoration:none;overflow:hidden}@media screen and (min-width: 768px){.work.svelte-aejjwo.svelte-aejjwo{flex:0 0 calc(33% - .125em)}}.workhero.svelte-aejjwo.svelte-aejjwo{width:100%;height:auto;aspect-ratio:var(--aspect-ratio-heroes);object-fit:fill;visibility:hidden;display:block}

View file

@ -1 +0,0 @@
article.svelte-1nwbod6.svelte-1nwbod6{width:100vw;overflow:hidden;padding-bottom:60px}.subnav.svelte-1nwbod6.svelte-1nwbod6{position:fixed;top:0;right:0;z-index:4;padding:var(--spacing-outer)}.heromask.svelte-1nwbod6.svelte-1nwbod6{position:fixed;top:0;left:0;width:100%;z-index:2;height:auto;aspect-ratio:var(--aspect-ratio-heroes);clip-path:polygon(0 0,100% 0,100% 100%,0% 100%)}@media screen and (min-width: 768px){.heromask.svelte-1nwbod6.svelte-1nwbod6{position:fixed}}.hero.svelte-1nwbod6.svelte-1nwbod6{width:100%;height:100%;object-fit:fill;z-index:0;display:block;position:relative;perspective:400px}.work-content.svelte-1nwbod6.svelte-1nwbod6{padding:0 var(--spacing-outer);padding-top:calc(100vw / var(--aspect-ratio-heroes) + 1.5em);position:relative;z-index:1;margin-top:0;color:var(--color-text)}@media screen and (min-width: 768px){.work-content.svelte-1nwbod6.svelte-1nwbod6{margin-left:40vw;max-width:60vw;padding-top:calc(3 * var(--spacing-outer));padding-left:calc(var(--spacing-outer) * 1.5);padding-right:calc(var(--spacing-outer) * 2.5)}}@media screen and (min-width: 768px){.work-content-text.svelte-1nwbod6.svelte-1nwbod6{border-top:1px solid var(--color-text)}}h1.svelte-1nwbod6.svelte-1nwbod6{position:relative;z-index:1;margin:0}@media screen and (min-width: 768px){h1.svelte-1nwbod6.svelte-1nwbod6{padding:0 0 1em}}h1.svelte-1nwbod6 .name.svelte-1nwbod6{display:none}h1.svelte-1nwbod6 .svg-logo.svelte-1nwbod6 svg{width:auto;height:auto;max-width:250px;max-height:80px;margin-bottom:1em}@media screen and (min-width: 768px){h1.svelte-1nwbod6 .svg-logo.svelte-1nwbod6 svg{max-width:400px;max-height:200px}}.header-nav{transition:all .3s cubic-bezier(.075,.82,.165,1)}.work .header-nav{transform:translateY(100%)}

View file

@ -1,7 +1,7 @@
import { c as create_ssr_component } from "./ssr.js";
const metadata = {
"title": "Adidas",
"header_bg_image": "/work/adidas/adidas_hero.jpg",
"header_bg_image": "adidas_hero_ceurd8",
"order": 12,
"description": "Adidas, as you might have heard, is an international sports and lifestyle clothing brand. I worked on several digital campaigns as a graphic designer and illustrator.",
"svg": '<svg id="adidas-logo" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 1000 674.2" style="enable-background:new 0 0 1000 674.2; fill: currentColor" xml:space="preserve"><path d="M654.5 442.2 448.9 84.8 596.6 0l255.7 442.2H654.5"/><path d="m106.8 392.1 147.7-85.4 78.2 135.5H135.5l-28.7-50.1"/><path d="M396.7 670.2h42V500.1h-42v170.1z"/><path d="M923.6 674.2c-47 0-75.3-24.3-76.8-58.5h44.3c0 10.7 6.7 26.4 35.4 26.9 19.1 0 28.1-11.3 28.1-19.7-1.1-13.4-18-14.5-35.9-17.4-18-2.9-33.3-6.1-44.3-11.8-14.1-7.3-23.7-22.9-23.7-40.9 0-30.4 26.4-54.5 70.3-54.5 42.6 0 69.6 22.4 72.4 55.6h-42.8c-.4-9-2.1-23.1-27.3-23.1-17 0-28.3 3.4-29.2 15.3 0 17.4 35.4 16.2 62.9 23.5 26.4 6.7 43.2 23.1 43.2 46.1-.2 42.2-34.4 58.5-76.6 58.5"/><path d="m280 240.4 147.7-85.2 165.7 287H438.8v42h-42V442L280 240.4"/><path class="st0" d="M283.8 674.2c-48.9 0-88.7-39.9-88.7-88.3 0-48.9 39.7-87.5 88.7-87.5 18.5 0 35.4 5 50.1 15.1v-71.3h42v228h-42v-11.3c-14.8 9.6-31.6 15.3-50.1 15.3zm-48.4-88.3c0 26.4 22.5 48.3 49.5 48.3 26.4 0 48.9-22 48.9-48.3 0-26.4-22.5-48.9-48.9-48.9-26.9 0-49.5 22.5-49.5 48.9"/><path class="st0" d="M594.5 442.2H636v228h-41.5v-11.3c-14.1 9.6-31.5 15.3-50.6 15.3-48.3 0-88.1-39.9-88.1-88.3 0-48.9 39.7-87.5 88.1-87.5 19.1 0 35.9 5 50.6 15.1v-71.3zm-97.8 143.7c0 26.4 22.5 48.3 48.3 48.3 26.9 0 49.5-22 49.5-48.3 0-26.4-22.5-48.9-49.5-48.9-25.8 0-48.3 22.5-48.3 48.9"/><path class="st0" d="M738.2 674.2c-48.2 0-88.1-39.9-88.1-88.3 0-48.9 39.9-87.5 88.1-87.5 18.5 0 35.9 5 50.1 15.1v-13.6h42v170.3h-42v-11.3c-14.2 9.6-31 15.3-50.1 15.3zM691 585.9c0 26.4 22.5 48.3 48.9 48.3s48.3-22 48.3-48.3c0-26.4-22-48.9-48.3-48.9-26.4 0-48.9 22.5-48.9 48.9"/><path class="st0" d="M40.5 585.9c0 26.4 22.5 48.3 48.9 48.3 26.9 0 49.5-22 49.5-48.3 0-26.4-22.5-48.9-49.5-48.9-26.3 0-48.9 22.5-48.9 48.9zm47.8 88.3c-48.4 0-88.3-40-88.3-88.3 0-48.9 39.9-87.5 88.3-87.5 18.5 0 35.9 5 50.6 15.1v-13.6h41.5v170.3h-41.5v-11.3c-14.1 9.6-31.5 15.3-50.6 15.3"/></svg>'

View file

@ -1,7 +1,7 @@
import { c as create_ssr_component } from "./ssr.js";
const metadata = {
"title": "Formo.bio",
"header_bg_image": "/work/formo/formo_hero.png",
"header_bg_image": "formo_hero_xgb6xo",
"video": "/work/formo/formo-rec.webm",
"order": 12,
"description": "Formo, as you might have heard, is an international sports and lifestyle clothing brand. I worked on several digital campaigns as a graphic designer and illustrator.",

View file

@ -166,7 +166,7 @@ const options = {
<div class="error">
<span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
},
version_hash: "185vdsh"
version_hash: "4jgq38"
};
function get_hooks() {
return {};

View file

@ -1,7 +1,7 @@
import { c as create_ssr_component } from "./ssr.js";
const metadata = {
"title": "JustPeace Labs",
"header_bg_image": "/work/jpl/jpl_hero.jpg",
"header_bg_image": "jpl_hero_eukxaw",
"description": "JustPeace Labs is a non-profit organization that works with local communities to build peace and prevent violence.",
"order": 11,
"svg": '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="Layer_1" x="0" y="0" viewBox="0 0 240 63" style="enable-background:new 0 0 240 63" xml:space="preserve"><style>.st0{fill:currentColor}.st1{fill:currentColor}</style><g id="Layer_1-2"><path class="st0" d="M82.4 23.4c.4-2.3.6-4.7.5-7.1V3.1h4.6v13.1c.1 2.5 0 5-.3 7.5-.8 4.1-4.9 6-7.4 6.1l-1.1-2.4c1.9-.6 3.3-2.1 3.7-4zM92 3.1h4.5v12.3c0 5.1 1.6 6.2 4.4 6.2s4.3-1.3 4.3-6.2V3.1h4.5v12.7c0 6.1-3 9.5-8.9 9.5-6.6 0-8.8-3.8-8.8-9.6V3.1zM114 20.3c1.7.9 3.7 1.4 5.7 1.4 2.4 0 3.2-.8 3.2-2.2s-.9-2.2-4.2-3.9c-2.6-1.3-5.4-3.2-5.4-6.8 0-4.3 3.5-5.9 7.7-5.9 2-.1 3.9.4 5.7 1.3l-.8 3.6c-1.4-.9-3.1-1.4-4.7-1.4-2.4 0-3.3.9-3.3 2.2 0 1.6 1.1 2.2 3.8 3.7 3.4 1.8 6 3.4 6 7 0 4-3.1 6.1-7.5 6.1-2.3 0-4.5-.4-6.6-1.3l.4-3.8zM135.3 6.6H129V3.1h17.2v3.5h-6.3V25h-4.6V6.6zM149.4 3.1h1.4c2.4 0 4.4-.2 6.5-.2 5 0 8 2.2 8 7.6 0 5-3.1 8-8.8 8H154V25h-4.6V3.1zm7 11.8c2.2 0 4.3-.9 4.3-4.6 0-2.8-1.5-4.3-4.4-4.2-.8 0-1.6.1-2.4.2v8.4c.8.2 1.6.2 2.5.2zM168.4 3.1h13.4v3.5H173V12h6.8v3.5H173v5.9h9.7V25h-14.3V3.1zM192.8 2.9h4.6l8.2 22.1h-5l-1.5-4.6H191l-1.5 4.6h-4.9l8.2-22.1zm5.3 14.2-2.4-7.5-.6-2.3-.6 2.3-2.4 7.5h6zM216.4 2.9c2 0 4 .3 6 .9l-.7 4c-1.5-.9-3.2-1.3-5-1.3-3.6 0-6.3 2.7-6.3 7.3s2.5 7.9 6.7 7.9c1.8 0 3.5-.5 5.1-1.4v3.8c-1.7.8-3.6 1.2-5.5 1.1-6.8 0-11-4.5-11-11.1 0-7.3 4.7-11.2 10.7-11.2zM225.7 3.1h13.4v3.5h-8.8V12h6.7v3.5h-6.7v5.9h9.7V25h-14.3V3.1z"/><path class="st1" d="M80.4 39h2.5v20H92v2H80.4V39zM98 52.1c2.1-.7 4.2-1 6.4-1v-1.9c0-2.7-1.4-3.1-3.8-3.1-1.7.1-3.4.5-4.8 1.4l-.6-1.6c1.8-1 3.9-1.6 6-1.6 3.3 0 5.6.9 5.6 5v11.9h-1c-.8 0-1.3-.1-1.3-1.2v-.6c-1.4 1.2-3.2 1.8-5.1 1.8-2.9 0-5-1.7-5-4.6 0-2.1 1.3-3.6 3.6-4.5zm2.2 7.3c1.5 0 3-.5 4.2-1.4v-5.3c-1.7 0-3.4.2-5.1.8-1.6.6-2.5 1.5-2.5 3 0 1.7 1 2.9 3.4 2.9zM112 37h2.4v6.8l-.1 2.5c1.3-1.3 3.1-2 5-2 3.6 0 6.5 2.6 6.5 7.8s-3.3 9.1-8.3 9.1c-1.9 0-3.8-.4-5.5-1.2V37zm5.8 22.4c2.9 0 5.5-2.3 5.6-7 0-4.1-1.6-6.3-4.7-6.3-1.6 0-3.1.6-4.2 1.7v10.9c.9.6 2.1.8 3.3.7zM129.4 58.2c1.5.8 3.1 1.2 4.7 1.2 2.1 0 3.6-.8 3.6-2.5s-2-2.5-3.9-3.3c-2.5-1-4.7-2.4-4.7-5.1s2.7-4.1 5.7-4.2c1.5 0 2.9.3 4.2.9l-.4 1.8c-1.1-.6-2.4-.9-3.7-.9-2.4 0-3.6.9-3.6 2.2 0 1.7 1.4 2.5 3.6 3.4s5 2.2 5 5-2.2 4.5-5.7 4.5c-1.8 0-3.6-.4-5.2-1.2l.4-1.8zM7.2 31.7c0-12.2 8.9-22.6 21-24.4L27.1 0C11.6 2.4.1 15.7 0 31.5c0 6.8 2.2 13.5 6.2 19l5.8-4.3C8.9 42 7.2 36.9 7.2 31.7zM17.1 51.4l-4.2 5.7c4.2 3.1 9.1 5.1 14.2 5.9l1-7c-4-.6-7.8-2.2-11-4.6zM36.5 0l-1.1 7.3c13.5 2 22.7 14.5 20.7 28-.6 3.9-2.1 7.7-4.5 10.9l5.7 4.2c4.1-5.5 6.3-12.1 6.2-19 .1-15.7-11.4-29-27-31.4zM35.5 56l1 7c5.2-.8 10-2.8 14.2-5.9l-4.2-5.7c-3.2 2.4-7 4-11 4.6z"/></g></svg>'

View file

@ -44,6 +44,96 @@ function getContext(key) {
function ensure_array_like(array_like_or_iterator) {
return array_like_or_iterator?.length !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
}
const _boolean_attributes = (
/** @type {const} */
[
"allowfullscreen",
"allowpaymentrequest",
"async",
"autofocus",
"autoplay",
"checked",
"controls",
"default",
"defer",
"disabled",
"formnovalidate",
"hidden",
"inert",
"ismap",
"loop",
"multiple",
"muted",
"nomodule",
"novalidate",
"open",
"playsinline",
"readonly",
"required",
"reversed",
"selected"
]
);
const boolean_attributes = /* @__PURE__ */ new Set([..._boolean_attributes]);
const invalid_attribute_name_character = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u;
function spread(args, attrs_to_add) {
const attributes = Object.assign({}, ...args);
if (attrs_to_add) {
const classes_to_add = attrs_to_add.classes;
const styles_to_add = attrs_to_add.styles;
if (classes_to_add) {
if (attributes.class == null) {
attributes.class = classes_to_add;
} else {
attributes.class += " " + classes_to_add;
}
}
if (styles_to_add) {
if (attributes.style == null) {
attributes.style = style_object_to_string(styles_to_add);
} else {
attributes.style = style_object_to_string(
merge_ssr_styles(attributes.style, styles_to_add)
);
}
}
}
let str = "";
Object.keys(attributes).forEach((name) => {
if (invalid_attribute_name_character.test(name))
return;
const value = attributes[name];
if (value === true)
str += " " + name;
else if (boolean_attributes.has(name.toLowerCase())) {
if (value)
str += " " + name;
} else if (value != null) {
str += ` ${name}="${value}"`;
}
});
return str;
}
function merge_ssr_styles(style_attribute, style_directive) {
const style_object = {};
for (const individual_style of style_attribute.split(";")) {
const colon_index = individual_style.indexOf(":");
const name = individual_style.slice(0, colon_index).trim();
const value = individual_style.slice(colon_index + 1).trim();
if (!name)
continue;
style_object[name] = value;
}
for (const name in style_directive) {
const value = style_directive[name];
if (value) {
style_object[name] = value;
} else {
delete style_object[name];
}
}
return style_object;
}
const ATTR_REGEX = /[&"]/g;
const CONTENT_REGEX = /[&<]/g;
function escape(value, is_attr = false) {
@ -60,6 +150,17 @@ function escape(value, is_attr = false) {
}
return escaped + str.substring(last);
}
function escape_attribute_value(value) {
const should_escape = typeof value === "string" || value && typeof value === "object";
return should_escape ? escape(value, true) : value;
}
function escape_object(obj) {
const result = {};
for (const key in obj) {
result[key] = escape_attribute_value(obj[key]);
}
return result;
}
function each(items, fn) {
items = ensure_array_like(items);
let str = "";
@ -124,6 +225,9 @@ function add_attribute(name, value, boolean) {
const assignment = boolean && value === true ? "" : `="${escape(value, true)}"`;
return ` ${name}${assignment}`;
}
function style_object_to_string(style_object) {
return Object.keys(style_object).filter((key) => style_object[key]).map((key) => `${key}: ${escape_attribute_value(style_object[key])};`).join(" ");
}
export {
subscribe as a,
add_attribute as b,
@ -132,6 +236,9 @@ export {
escape as e,
safe_not_equal as f,
getContext as g,
spread as h,
escape_attribute_value as i,
escape_object as j,
missing_component as m,
noop as n,
onDestroy as o,

View file

@ -1,10 +1,12 @@
import { c as create_ssr_component, b as add_attribute } from "../../../chunks/ssr.js";
const myImgSrcSetWebp = "/_app/immutable/assets/formo_hero.76612d9f.webp 1344w, /_app/immutable/assets/formo_hero.3c06dcdd.webp 672w, /_app/immutable/assets/formo_hero.bdd89961.webp 336w";
const myImg = "/_app/immutable/assets/formo_hero.07fbd4ee.png";
const myImg = [
"/_app/immutable/assets/formo_hero.10e20058.avif",
"/_app/immutable/assets/formo_hero.eb33d576.webp",
"/_app/immutable/assets/formo_hero.07fbd4ee.png"
];
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
console.log(myImgSrcSetWebp);
console.log(myImg);
return `<h1 data-svelte-h="svelte-1igfkj5">hakc</h1> <img${add_attribute("src", myImg, 0)}${add_attribute("srcset", myImgSrcSetWebp, 0)} sizes="(min-width: 768px) 10vw, 100vw" alt="my donkey" width="700">`;
return `<h1 data-svelte-h="svelte-1igfkj5">hakc</h1> <img${add_attribute("src", myImg, 0)}${add_attribute("srcset", myImgSrcSetWebp, 0)} sizes="(min-width: 768px) 60vw, 100vw" alt="my donkey" width="700">`;
});
export {
Page as default

View file

@ -7,22 +7,10 @@ const fetchMarkdownPosts = async () => {
const data = await resolver();
const postData = data;
const content = postData.default.render();
const srcJson = await import(
/* @vite-ignore */
"./assets" + postData.metadata.header_bg_image + "?w=336&format=webp"
);
const src = JSON.stringify(srcJson.default).replaceAll('"', "");
const srcsetJson = await import(
/* @vite-ignore */
"./assets" + postData.metadata.header_bg_image + "?w=1344;672;336&format=webp&as=srcset"
);
const srcset = JSON.stringify(srcsetJson.default).replaceAll('"', "");
return {
meta: postData.metadata,
path: postPath,
Content: content.html,
src,
srcset
Content: content.html
};
})
);
@ -34,6 +22,7 @@ async function load() {
console.error("No posts found");
return {
posts
// images
};
}
export {

View file

@ -2,6 +2,7 @@ import { c as create_ssr_component, o as onDestroy, b as add_attribute, d as eac
import "pixi.js";
import "pixi-filters";
import { w as writable } from "../../../chunks/index2.js";
import { C as CldImage } from "../../../chunks/CldImage.js";
const WorkCanvas_svelte_svelte_type_style_lang = "";
const css$1 = {
code: "canvas.svelte-1819g2x{position:fixed;top:0;left:0;z-index:-1}",
@ -28,7 +29,7 @@ workbulge.subscribe((value) => {
});
const _page_svelte_svelte_type_style_lang = "";
const css = {
code: "h1.svelte-aejjwo.svelte-aejjwo{font-size:16vw;font-style:italic;margin:0 0 0.5em 0;letter-spacing:-0.04em;text-align:center;position:fixed;top:0;width:100%;visibility:hidden;transition:all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)}@media screen and (min-width: 768px){h1.svelte-aejjwo.svelte-aejjwo{font-size:7vw}}h1.svelte-aejjwo span.svelte-aejjwo{display:inline-block;padding:0 0.25em}h2.svelte-aejjwo.svelte-aejjwo{line-height:1.1;letter-spacing:-0.025em;font-size:2.5vw;opacity:0;position:absolute;left:0.5em;bottom:0.5em;transform:scale(0.8) translateY(100%);margin:0;padding:0.1em 0.4em 0.2em 0.4em;text-align:center;transform-origin:center center;width:auto;margin:0;background-color:var(--color-bg);color:var(--color-text);transition:all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)}.works.svelte-aejjwo .work:not(.active):hover h2.svelte-aejjwo{opacity:1;transform:scale(1) translateY(0)}.works.svelte-aejjwo.svelte-aejjwo{padding:15vw 0.5em 0.5em 0.5em;display:flex;gap:0.25em;flex-wrap:wrap}@media screen and (min-width: 768px){.works.svelte-aejjwo.svelte-aejjwo{gap:0.25em;padding:8.5vw 0.5em 0.5em 0.5em;width:100%;max-width:1200px;margin:0 auto;padding-bottom:20svh}}.work.svelte-aejjwo.svelte-aejjwo{flex:0 0 calc(50% - 0.125em);display:block;position:relative;padding:0;transition:all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);text-decoration:none;overflow:hidden}@media screen and (min-width: 768px){.work.svelte-aejjwo.svelte-aejjwo{flex:0 0 calc(33% - 0.125em)}}.workhero.svelte-aejjwo.svelte-aejjwo{width:100%;height:auto;aspect-ratio:var(--aspect-ratio-heroes);object-fit:fill;visibility:hidden;display:block}",
code: "h1.svelte-1wmqw8p.svelte-1wmqw8p{font-size:16vw;font-style:italic;margin:0 0 0.5em 0;letter-spacing:-0.04em;text-align:center;position:fixed;top:0;width:100%;visibility:hidden;transition:all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)}@media screen and (min-width: 768px){h1.svelte-1wmqw8p.svelte-1wmqw8p{font-size:7vw}}h1.svelte-1wmqw8p span.svelte-1wmqw8p{display:inline-block;padding:0 0.25em}h2.svelte-1wmqw8p.svelte-1wmqw8p{line-height:1.1;letter-spacing:-0.025em;font-size:2.5vw;opacity:0;position:absolute;left:0.5em;bottom:0.5em;transform:scale(0.8) translateY(100%);margin:0;padding:0.1em 0.4em 0.2em 0.4em;text-align:center;transform-origin:center center;width:auto;margin:0;background-color:var(--color-bg);color:var(--color-text);transition:all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)}.works.svelte-1wmqw8p .work:not(.active):hover h2.svelte-1wmqw8p{opacity:1;transform:scale(1) translateY(0)}.works.svelte-1wmqw8p.svelte-1wmqw8p{padding:15vw 0.5em 0.5em 0.5em;display:flex;gap:0.25em;flex-wrap:wrap}@media screen and (min-width: 768px){.works.svelte-1wmqw8p.svelte-1wmqw8p{gap:0.25em;padding:8.5vw 0.5em 0.5em 0.5em;width:100%;max-width:1200px;margin:0 auto;padding-bottom:20svh}}.work.svelte-1wmqw8p.svelte-1wmqw8p{flex:0 0 calc(50% - 0.125em);display:block;position:relative;padding:0;transition:all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);text-decoration:none;overflow:hidden}@media screen and (min-width: 768px){.work.svelte-1wmqw8p.svelte-1wmqw8p{flex:0 0 calc(33% - 0.125em)}}.work img{width:100%;height:auto;aspect-ratio:var(--aspect-ratio-heroes);object-fit:fill;visibility:hidden;display:block}",
map: null
};
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
@ -42,12 +43,20 @@ const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
$$bindings.data(data);
$$result.css.add(css);
return `<h1 class="headline svelte-aejjwo" data-svelte-h="svelte-1us57h5"><span class="svelte-aejjwo">Casestudies</span></h1> <div class="works svelte-aejjwo">${each(data.posts, (work) => {
return `<a${add_attribute("href", work.path, 0)} class="work svelte-aejjwo"><img class="workhero svelte-aejjwo"${add_attribute("src", work.src, 0)}${add_attribute("srcset", work.srcset, 0)} sizes="(min-width: 768px) 20vw, 100vw"${add_attribute("alt", work.meta.title, 0)} width="800" height="600"> <h2 class="svelte-aejjwo">${escape(work.meta.title)}</h2> </a>`;
})} ${each(data.posts, (work) => {
return `<a${add_attribute("href", work.path, 0)} class="work svelte-aejjwo"><img class="workhero svelte-aejjwo"${add_attribute("src", work.src, 0)}${add_attribute("srcset", work.srcset, 0)} sizes="(min-width: 768px) 30vw, 100vw"${add_attribute("alt", work.meta.title, 0)} width="800" height="600"> <h2 class="svelte-aejjwo">${escape(work.meta.title)}</h2> </a>`;
})} ${each(data.posts, (work) => {
return `<a${add_attribute("href", work.path, 0)} class="work svelte-aejjwo"><img class="workhero svelte-aejjwo"${add_attribute("src", work.src, 0)}${add_attribute("srcset", work.srcset, 0)} sizes="(min-width: 768px) 20vw, 100vw"${add_attribute("alt", work.meta.title, 0)} width="800" height="600"> <h2 class="svelte-aejjwo">${escape(work.meta.title)}</h2> </a>`;
return `<h1 class="headline svelte-1wmqw8p" data-svelte-h="svelte-1us57h5"><span class="svelte-1wmqw8p">Casestudies</span></h1> <div class="works svelte-1wmqw8p">${each(data.posts, (work, i) => {
return `<a${add_attribute("href", work.path, 0)} class="work svelte-1wmqw8p">${validate_component(CldImage, "CldImage").$$render(
$$result,
{
src: work.meta.header_bg_image,
sizes: "(min-width: 768px) 20vw, 50vw",
alt: work.meta.title,
width: "2100",
height: "1400",
loading: i < 9 ? "eager" : "lazy"
},
{},
{}
)} <h2 class="svelte-1wmqw8p">${escape(work.meta.title)}</h2> </a>`;
})}</div> ${validate_component(WorkCanvas, "WorkCanvas").$$render(
$$result,
{

View file

@ -10,16 +10,6 @@ const __variableDynamicImportRuntimeHelper = (glob, path) => {
async function load({ params }) {
try {
const post = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../md/adidas.md": () => import("../../../../chunks/adidas.js"), "../md/formo.md": () => import("../../../../chunks/formo.js"), "../md/jpl.md": () => import("../../../../chunks/jpl.js") }), `../md/${params.slug}.md`);
const srcJson = await import(
/* @vite-ignore */
`../../../lib/assets${post.metadata.header_bg_image}?w=336&format=webp`
);
const src = JSON.stringify(srcJson.default).replaceAll('"', "");
const srcsetJson = await import(
/* @vite-ignore */
`../../../lib/assets${post.metadata.header_bg_image}?w=1344;672;336&format=webp&as=srcset`
);
const srcSet = JSON.stringify(srcsetJson.default).replaceAll('"', "");
const { title, date, header_bg_image, svg, video } = post.metadata;
const Content = post.default.render();
return {
@ -28,9 +18,9 @@ async function load({ params }) {
header_bg_image,
svg,
video,
Content,
src,
srcSet
Content
// src,
// srcSet
};
} catch (error) {
console.error(error);

View file

@ -1,21 +1,34 @@
import { c as create_ssr_component, o as onDestroy, b as add_attribute } from "../../../../chunks/ssr.js";
import { c as create_ssr_component, o as onDestroy, v as validate_component } from "../../../../chunks/ssr.js";
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/dist/ScrollTrigger.js";
import { C as CldImage } from "../../../../chunks/CldImage.js";
const _page_svelte_svelte_type_style_lang = "";
const css = {
code: "article.svelte-1nwbod6.svelte-1nwbod6{width:100vw;overflow:hidden;padding-bottom:60px}.subnav.svelte-1nwbod6.svelte-1nwbod6{position:fixed;top:0;right:0;z-index:4;padding:var(--spacing-outer)}.heromask.svelte-1nwbod6.svelte-1nwbod6{position:fixed;top:0;left:0;width:100%;z-index:2;height:auto;aspect-ratio:var(--aspect-ratio-heroes);clip-path:polygon(0 0, 100% 0, 100% 100%, 0% 100%)}@media screen and (min-width: 768px){.heromask.svelte-1nwbod6.svelte-1nwbod6{position:fixed}}.hero.svelte-1nwbod6.svelte-1nwbod6{width:100%;height:100%;object-fit:fill;z-index:0;display:block;position:relative;perspective:400px}.work-content.svelte-1nwbod6.svelte-1nwbod6{padding:0 var(--spacing-outer);padding-top:calc(100vw / var(--aspect-ratio-heroes) + 1.5em);position:relative;z-index:1;margin-top:0;color:var(--color-text)}@media screen and (min-width: 768px){.work-content.svelte-1nwbod6.svelte-1nwbod6{margin-left:40vw;max-width:60vw;padding-top:calc(3 * var(--spacing-outer));padding-left:calc(var(--spacing-outer) * 1.5);padding-right:calc(var(--spacing-outer) * 2.5)}}@media screen and (min-width: 768px){.work-content-text.svelte-1nwbod6.svelte-1nwbod6{border-top:1px solid var(--color-text)}}h1.svelte-1nwbod6.svelte-1nwbod6{position:relative;z-index:1;margin:0}@media screen and (min-width: 768px){h1.svelte-1nwbod6.svelte-1nwbod6{padding:0 0 1em 0}}h1.svelte-1nwbod6 .name.svelte-1nwbod6{display:none}h1.svelte-1nwbod6 .svg-logo.svelte-1nwbod6 svg{width:auto;height:auto;max-width:250px;max-height:80px;margin-bottom:1em}@media screen and (min-width: 768px){h1.svelte-1nwbod6 .svg-logo.svelte-1nwbod6 svg{max-width:400px;max-height:200px}}.header-nav{transition:all 0.3s cubic-bezier(0.075, 0.82, 0.165, 1)}.work .header-nav{transform:translateY(100%)}",
code: "article.svelte-nm1xy1.svelte-nm1xy1{width:100vw;overflow:hidden;padding-bottom:60px}.subnav.svelte-nm1xy1.svelte-nm1xy1{position:fixed;top:0;right:0;z-index:4;padding:var(--spacing-outer)}.heromask.svelte-nm1xy1.svelte-nm1xy1{position:fixed;top:0;left:0;width:100%;z-index:2;height:auto;aspect-ratio:var(--aspect-ratio-heroes);clip-path:polygon(0 0, 100% 0, 100% 100%, 0% 100%)}@media screen and (min-width: 768px){.heromask.svelte-nm1xy1.svelte-nm1xy1{position:fixed}}.heromask img{z-index:0;display:block;position:relative;width:100%;height:100%;aspect-ratio:var(--aspect-ratio-heroes);margin:0;object-fit:fill}.work-content.svelte-nm1xy1.svelte-nm1xy1{padding:0 var(--spacing-outer);padding-top:calc(100vw / var(--aspect-ratio-heroes) + 1.5em);position:relative;z-index:1;margin-top:0;color:var(--color-text)}@media screen and (min-width: 768px){.work-content.svelte-nm1xy1.svelte-nm1xy1{margin-left:40vw;max-width:60vw;padding-top:calc(3 * var(--spacing-outer));padding-left:calc(var(--spacing-outer) * 1.5);padding-right:calc(var(--spacing-outer) * 2.5)}}@media screen and (min-width: 768px){.work-content-text.svelte-nm1xy1.svelte-nm1xy1{border-top:1px solid var(--color-text)}}h1.svelte-nm1xy1.svelte-nm1xy1{position:relative;z-index:1;margin:0}@media screen and (min-width: 768px){h1.svelte-nm1xy1.svelte-nm1xy1{padding:0 0 1em 0}}h1.svelte-nm1xy1 .name.svelte-nm1xy1{display:none}h1.svelte-nm1xy1 .svg-logo.svelte-nm1xy1 svg{width:auto;height:auto;max-width:250px;max-height:80px;margin-bottom:1em}@media screen and (min-width: 768px){h1.svelte-nm1xy1 .svg-logo.svelte-nm1xy1 svg{max-width:400px;max-height:200px}}.header-nav{transition:all 0.3s cubic-bezier(0.075, 0.82, 0.165, 1)}.work .header-nav{transform:translateY(100%)}",
map: null
};
const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
let { data } = $$props;
gsap.registerPlugin(ScrollTrigger);
onDestroy(() => {
document.body.classList.remove("work");
});
if ($$props.data === void 0 && $$bindings.data && data !== void 0)
$$bindings.data(data);
$$result.css.add(css);
return `<div class="heromask svelte-1nwbod6"><img class="hero svelte-1nwbod6"${add_attribute("src", data.src, 0)}${add_attribute("srcset", data.srcSet, 0)}${add_attribute("alt", data.title, 0)} loading="eager" decoding="sync"></div> <div class="subnav svelte-1nwbod6" data-svelte-h="svelte-ywmcpa"><a href="/work" class="subnav-item">← Back</a></div> <article class="work svelte-1nwbod6">${``} </article>`;
return ` <div class="heromask svelte-nm1xy1">${validate_component(CldImage, "CldImage").$$render(
$$result,
{
src: data.header_bg_image,
alt: data.title,
sizes: "100vw",
width: 2100,
height: 1400,
loading: "eager",
objectFit: "fill"
},
{},
{}
)}</div> <div class="subnav svelte-nm1xy1" data-svelte-h="svelte-ywmcpa"><a href="/work" class="subnav-item"> Back</a></div> <article class="work svelte-nm1xy1">${``} </article>`;
});
export {
Page as default

View file

@ -7,10 +7,10 @@ function __memo(fn) {
return {
appDir: "_app",
appPath: "_app",
assets: new Set([".DS_Store","bg.jpeg","bg.jpg","bg.png","cursor.png","cursor.svg","displacementmap.jpg","displacementmap.png","favicon.png","pointer.png","pointer.svg","video.mp4","work/.DS_Store","work/adidas/adidas_hero.jpg","work/formo/formo-rec.mp4","work/formo/formo-rec.webm","work/formo/formo_hero.png","work/jpl/jpl_hero.jpg"]),
mimeTypes: {".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".svg":"image/svg+xml",".mp4":"video/mp4",".webm":"video/webm"},
assets: new Set([".DS_Store","cursor.png","cursor.svg","favicon.png","pointer.png","pointer.svg","work/.DS_Store","work/adidas/adidas_hero.jpg","work/formo/formo-rec.mp4","work/formo/formo-rec.webm","work/formo/formo_hero.png","work/jpl/jpl_hero.jpg"]),
mimeTypes: {".png":"image/png",".svg":"image/svg+xml",".jpg":"image/jpeg",".mp4":"video/mp4",".webm":"video/webm"},
_: {
client: {"start":"_app/immutable/entry/start.24653ae3.js","app":"_app/immutable/entry/app.5edbf885.js","imports":["_app/immutable/entry/start.24653ae3.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/singletons.e5eb807e.js","_app/immutable/entry/app.5edbf885.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js"],"stylesheets":[],"fonts":[]},
client: {"start":"_app/immutable/entry/start.e3c93b33.js","app":"_app/immutable/entry/app.590275c4.js","imports":["_app/immutable/entry/start.e3c93b33.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/singletons.6f10bc10.js","_app/immutable/entry/app.590275c4.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js"],"stylesheets":[],"fonts":[]},
nodes: [
__memo(() => import('./nodes/0.js')),
__memo(() => import('./nodes/1.js')),

View file

@ -7,10 +7,10 @@ function __memo(fn) {
return {
appDir: "_app",
appPath: "_app",
assets: new Set([".DS_Store","bg.jpeg","bg.jpg","bg.png","cursor.png","cursor.svg","displacementmap.jpg","displacementmap.png","favicon.png","pointer.png","pointer.svg","video.mp4","work/.DS_Store","work/adidas/adidas_hero.jpg","work/formo/formo-rec.mp4","work/formo/formo-rec.webm","work/formo/formo_hero.png","work/jpl/jpl_hero.jpg"]),
mimeTypes: {".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".svg":"image/svg+xml",".mp4":"video/mp4",".webm":"video/webm"},
assets: new Set([".DS_Store","cursor.png","cursor.svg","favicon.png","pointer.png","pointer.svg","work/.DS_Store","work/adidas/adidas_hero.jpg","work/formo/formo-rec.mp4","work/formo/formo-rec.webm","work/formo/formo_hero.png","work/jpl/jpl_hero.jpg"]),
mimeTypes: {".png":"image/png",".svg":"image/svg+xml",".jpg":"image/jpeg",".mp4":"video/mp4",".webm":"video/webm"},
_: {
client: {"start":"_app/immutable/entry/start.24653ae3.js","app":"_app/immutable/entry/app.5edbf885.js","imports":["_app/immutable/entry/start.24653ae3.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/singletons.e5eb807e.js","_app/immutable/entry/app.5edbf885.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js"],"stylesheets":[],"fonts":[]},
client: {"start":"_app/immutable/entry/start.e3c93b33.js","app":"_app/immutable/entry/app.590275c4.js","imports":["_app/immutable/entry/start.e3c93b33.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/singletons.6f10bc10.js","_app/immutable/entry/app.590275c4.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js"],"stylesheets":[],"fonts":[]},
nodes: [
__memo(() => import('./nodes/0.js')),
__memo(() => import('./nodes/1.js')),

View file

@ -5,6 +5,6 @@ let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;
export { universal };
export const universal_id = "src/routes/+layout.ts";
export const imports = ["_app/immutable/nodes/0.b1585435.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js","_app/immutable/chunks/index.4db78ffb.js"];
export const imports = ["_app/immutable/nodes/0.47450663.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js","_app/immutable/chunks/index.4db78ffb.js"];
export const stylesheets = ["_app/immutable/assets/0.1cabc979.css"];
export const fonts = [];

View file

@ -3,6 +3,6 @@
export const index = 1;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;
export const imports = ["_app/immutable/nodes/1.708df2c7.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js","_app/immutable/chunks/singletons.e5eb807e.js"];
export const imports = ["_app/immutable/nodes/1.8366a90d.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js","_app/immutable/chunks/singletons.6f10bc10.js"];
export const stylesheets = [];
export const fonts = [];

View file

@ -3,6 +3,6 @@
export const index = 2;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;
export const imports = ["_app/immutable/nodes/2.a824365c.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js","_app/immutable/chunks/navigation.95305456.js","_app/immutable/chunks/ScrollTrigger.96597ec4.js","_app/immutable/chunks/singletons.e5eb807e.js","_app/immutable/chunks/index.4db78ffb.js"];
export const imports = ["_app/immutable/nodes/2.108d664b.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js","_app/immutable/chunks/navigation.31299d66.js","_app/immutable/chunks/ScrollTrigger.96597ec4.js","_app/immutable/chunks/singletons.6f10bc10.js","_app/immutable/chunks/index.4db78ffb.js"];
export const stylesheets = ["_app/immutable/assets/2.aabebfd8.css"];
export const fonts = [];

View file

@ -5,6 +5,6 @@ let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/blog/_page.svelte.js')).default;
export { server };
export const server_id = "src/routes/blog/+page.server.ts";
export const imports = ["_app/immutable/nodes/3.f6d21e24.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js","_app/immutable/chunks/each.e59479a4.js"];
export const imports = ["_app/immutable/nodes/3.90216c4c.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js","_app/immutable/chunks/each.e59479a4.js"];
export const stylesheets = [];
export const fonts = [];

View file

@ -5,6 +5,6 @@ let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/blog/_slug_/_page.svelte.js')).default;
export { server };
export const server_id = "src/routes/blog/[slug]/+page.server.ts";
export const imports = ["_app/immutable/nodes/4.22335af8.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js"];
export const imports = ["_app/immutable/nodes/4.9ae234c4.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js"];
export const stylesheets = [];
export const fonts = [];

View file

@ -3,6 +3,6 @@
export const index = 5;
let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/test/_page.svelte.js')).default;
export const imports = ["_app/immutable/nodes/5.57413a02.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js"];
export const imports = ["_app/immutable/nodes/5.e9f1a99f.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js"];
export const stylesheets = [];
export const fonts = [];

View file

@ -5,6 +5,6 @@ let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/work/_page.svelte.js')).default;
export { server };
export const server_id = "src/routes/work/+page.server.ts";
export const imports = ["_app/immutable/nodes/6.b81cd63b.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js","_app/immutable/chunks/each.e59479a4.js","_app/immutable/chunks/navigation.95305456.js","_app/immutable/chunks/ScrollTrigger.96597ec4.js","_app/immutable/chunks/singletons.e5eb807e.js","_app/immutable/chunks/index.4db78ffb.js"];
export const stylesheets = ["_app/immutable/assets/6.123fa86f.css"];
export const imports = ["_app/immutable/nodes/6.92eeee30.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js","_app/immutable/chunks/each.e59479a4.js","_app/immutable/chunks/navigation.31299d66.js","_app/immutable/chunks/ScrollTrigger.96597ec4.js","_app/immutable/chunks/singletons.6f10bc10.js","_app/immutable/chunks/index.4db78ffb.js","_app/immutable/chunks/CldImage.ebf46432.js"];
export const stylesheets = ["_app/immutable/assets/6.21634584.css"];
export const fonts = [];

View file

@ -5,6 +5,6 @@ let component_cache;
export const component = async () => component_cache ??= (await import('../entries/pages/work/_slug_/_page.svelte.js')).default;
export { server };
export const server_id = "src/routes/work/[slug]/+page.server.ts";
export const imports = ["_app/immutable/nodes/7.9fe2c4e0.js","_app/immutable/chunks/scheduler.880d5f2a.js","_app/immutable/chunks/index.f47f4cf9.js","_app/immutable/chunks/index.4db78ffb.js","_app/immutable/chunks/ScrollTrigger.96597ec4.js"];
export const stylesheets = ["_app/immutable/assets/7.a46f57c1.css"];
export const imports = ["_app/immutable/nodes/7.ab267fa5.js","_app/immutable/chunks/scheduler.cd8ec38c.js","_app/immutable/chunks/index.9e7d825d.js","_app/immutable/chunks/index.4db78ffb.js","_app/immutable/chunks/ScrollTrigger.96597ec4.js","_app/immutable/chunks/CldImage.ebf46432.js"];
export const stylesheets = ["_app/immutable/assets/7.35c55333.css"];
export const fonts = [];

3
netlify.toml Normal file
View file

@ -0,0 +1,3 @@
[build]
command = "npm run build"
publish = "build"

370
package-lock.json generated
View file

@ -13,11 +13,13 @@
"perlin-noise-2d": "^1.0.0",
"pixi-filters": "^5.2.1",
"pixi.js": "^7.2.4",
"superjson": "^1.13.1"
"superjson": "^1.13.1",
"svelte-cloudinary": "^1.1.0"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^2.0.0",
"@sveltejs/adapter-netlify": "^2.0.8",
"@sveltejs/adapter-node": "^1.3.1",
"@sveltejs/kit": "^1.20.4",
"@types/node": "^20.5.1",
"@typescript-eslint/eslint-plugin": "^5.45.0",
@ -59,6 +61,36 @@
"node": ">=6.0.0"
}
},
"node_modules/@cloudinary-util/url-loader": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/@cloudinary-util/url-loader/-/url-loader-3.9.0.tgz",
"integrity": "sha512-DJiu+a3Mr2GEyjAo4Gy2KWX0YoXoP0CFp2jvw8+3gJj7wvmIb7mcjRk1yHSGIyJcolb0uR+tWGO6KVhStpreMg==",
"dependencies": {
"@cloudinary-util/util": "2.1.0",
"@cloudinary/url-gen": "^1.10.1"
}
},
"node_modules/@cloudinary-util/util": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@cloudinary-util/util/-/util-2.1.0.tgz",
"integrity": "sha512-PGjVxyhhOP8IaD6uawXzfDnI8ArPqpiLfIXc8TEjhv3CGhDFBAM3dCT3xeAgg+92sQsx/AN74j+qckdWPfoO6w=="
},
"node_modules/@cloudinary/transformation-builder-sdk": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/@cloudinary/transformation-builder-sdk/-/transformation-builder-sdk-1.5.1.tgz",
"integrity": "sha512-7pTKgyrX49T3Qk0+bE/RN7bijGVRPusDXjRHJyO5a7H6CnL1sZ/TvTMAKvXweFLTOpWzWFW6nS0Bah3kBvTb7w==",
"dependencies": {
"@cloudinary/url-gen": "^1.7.0"
}
},
"node_modules/@cloudinary/url-gen": {
"version": "1.11.2",
"resolved": "https://registry.npmjs.org/@cloudinary/url-gen/-/url-gen-1.11.2.tgz",
"integrity": "sha512-9yL3BlThh3PfyRg/zS8cQVic3FdFaIOp361YrDrQ4fqYbYE47SGWF4ji9KoFxYF4ejfDEptayeG9jF2C465KRQ==",
"dependencies": {
"@cloudinary/transformation-builder-sdk": "^1.5.1"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.18.16",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.16.tgz",
@ -1223,6 +1255,143 @@
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
"dev": true
},
"node_modules/@rollup/plugin-commonjs": {
"version": "25.0.4",
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz",
"integrity": "sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"commondir": "^1.0.1",
"estree-walker": "^2.0.2",
"glob": "^8.0.3",
"is-reference": "1.2.1",
"magic-string": "^0.27.0"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"rollup": "^2.68.0||^3.0.0"
},
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true
},
"node_modules/@rollup/plugin-commonjs/node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^5.0.1",
"once": "^1.3.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/@rollup/plugin-commonjs/node_modules/is-reference": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
"integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
"dev": true,
"dependencies": {
"@types/estree": "*"
}
},
"node_modules/@rollup/plugin-commonjs/node_modules/magic-string": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
"integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
"dev": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.13"
},
"engines": {
"node": ">=12"
}
},
"node_modules/@rollup/plugin-commonjs/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@rollup/plugin-json": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz",
"integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.1"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"rollup": "^1.20.0||^2.0.0||^3.0.0"
},
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@rollup/plugin-node-resolve": {
"version": "15.2.1",
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz",
"integrity": "sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"@types/resolve": "1.20.2",
"deepmerge": "^4.2.2",
"is-builtin-module": "^3.2.1",
"is-module": "^1.0.0",
"resolve": "^1.22.1"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"rollup": "^2.78.0||^3.0.0"
},
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@rollup/pluginutils": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.3.tgz",
@ -1277,6 +1446,21 @@
"@sveltejs/kit": "^1.5.0"
}
},
"node_modules/@sveltejs/adapter-node": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-1.3.1.tgz",
"integrity": "sha512-A0VgRQDCDPzdLNoiAbcOxGw4zT1Mc+n1LwT1OmO350R7WxrEqdMUChPPOd1iMfIDWlP4ie6E2d/WQf5es2d4Zw==",
"dev": true,
"dependencies": {
"@rollup/plugin-commonjs": "^25.0.0",
"@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-node-resolve": "^15.0.1",
"rollup": "^3.7.0"
},
"peerDependencies": {
"@sveltejs/kit": "^1.0.0"
}
},
"node_modules/@sveltejs/kit": {
"version": "1.22.3",
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.3.tgz",
@ -1391,6 +1575,12 @@
"integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
"dev": true
},
"node_modules/@types/resolve": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
"dev": true
},
"node_modules/@types/semver": {
"version": "7.5.0",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
@ -1590,6 +1780,27 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
"node_modules/@unpic/core": {
"version": "0.0.24",
"resolved": "https://registry.npmjs.org/@unpic/core/-/core-0.0.24.tgz",
"integrity": "sha512-HFa7ry3iNYfIOkaWGb0N/w1sxt6MAyUfoXXOvjyz50vtomDUbxK4krcRcQWIca64bORQKncxeJbGETRQLF20WQ==",
"dependencies": {
"unpic": "^3.6.1"
}
},
"node_modules/@unpic/svelte": {
"version": "0.0.25",
"resolved": "https://registry.npmjs.org/@unpic/svelte/-/svelte-0.0.25.tgz",
"integrity": "sha512-jXyOl9BDfspJ03/kAeozy69eHjLtKIZjsZ4257mz8J/sn5Il3xsRD4vR701NjEC0fkkLQg9Xol+v92o0LGImtw==",
"dependencies": {
"@unpic/core": "^0.0.24",
"style-object-to-css-string": "^1.0.1",
"unpic": "^3.6.1"
},
"peerDependencies": {
"svelte": "*"
}
},
"node_modules/acorn": {
"version": "8.10.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
@ -1801,6 +2012,18 @@
"node": "*"
}
},
"node_modules/builtin-modules": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
"integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
"dev": true,
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/busboy": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@ -1895,6 +2118,28 @@
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true
},
"node_modules/cloudinary": {
"version": "1.40.0",
"resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.40.0.tgz",
"integrity": "sha512-Fifkl8NRw/M+Enw4cKCXc6e0Or28c5y6RVGYS3OCLzT1W8EfBt416FURhLuuL/S4BCVv8bSilmnM746kCtth3g==",
"dependencies": {
"cloudinary-core": "^2.13.0",
"core-js": "^3.30.1",
"lodash": "^4.17.21",
"q": "^1.5.1"
},
"engines": {
"node": ">=0.6"
}
},
"node_modules/cloudinary-core": {
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/cloudinary-core/-/cloudinary-core-2.13.0.tgz",
"integrity": "sha512-Nt0Q5I2FtenmJghtC4YZ3MZZbGg1wLm84SsxcuVwZ83OyJqG9CNIGp86CiI6iDv3QobaqBUpOT7vg+HqY5HxEA==",
"peerDependencies": {
"lodash": ">=4.0"
}
},
"node_modules/code-red": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.3.tgz",
@ -1953,6 +2198,12 @@
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
"integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="
},
"node_modules/commondir": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
"dev": true
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@ -1982,6 +2233,16 @@
"url": "https://github.com/sponsors/mesqueeb"
}
},
"node_modules/core-js": {
"version": "3.32.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.1.tgz",
"integrity": "sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@ -2877,6 +3138,33 @@
"node": ">=8"
}
},
"node_modules/is-builtin-module": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
"integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
"dev": true,
"dependencies": {
"builtin-modules": "^3.3.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-core-module": {
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
"integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@ -2898,6 +3186,12 @@
"node": ">=0.10.0"
}
},
"node_modules/is-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
"dev": true
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@ -3027,6 +3321,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@ -3359,6 +3658,12 @@
"node": ">=8"
}
},
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
"node_modules/path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@ -3715,6 +4020,15 @@
"node": ">=6"
}
},
"node_modules/q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
"engines": {
"node": ">=0.6.0",
"teleport": ">=0.2.0"
}
},
"node_modules/qs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
@ -3805,6 +4119,23 @@
"node": ">=8.10.0"
}
},
"node_modules/resolve": {
"version": "1.22.4",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
"integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
"dev": true,
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@ -4198,6 +4529,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/style-object-to-css-string": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/style-object-to-css-string/-/style-object-to-css-string-1.0.1.tgz",
"integrity": "sha512-ci7tySCofUqq86WziXoEsIE/aGZ2rkw7mmz6Afklhbmk7i05Z1d8hSUaJMUWUOJPbsvK+7TW5ulklZm55/S44Q=="
},
"node_modules/superjson": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/superjson/-/superjson-1.13.1.tgz",
@ -4221,6 +4557,18 @@
"node": ">=8"
}
},
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
"dev": true,
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/svelte": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.1.1.tgz",
@ -4266,6 +4614,21 @@
"svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0"
}
},
"node_modules/svelte-cloudinary": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/svelte-cloudinary/-/svelte-cloudinary-1.1.0.tgz",
"integrity": "sha512-54QvNw89b3jdvLS7VU/nYF39X7TvgwXvh3szLuf1x5DEUmnoGcSnSK2NWbrsNCyNpggnLhcmxbWHZINQMDQO4Q==",
"dependencies": {
"@cloudinary-util/url-loader": "3.9.0",
"@cloudinary-util/util": "2.1.0",
"@unpic/core": "0.0.24",
"@unpic/svelte": "0.0.25",
"cloudinary": "^1.32.0"
},
"peerDependencies": {
"svelte": "^3.0.0 || ^4.0.0"
}
},
"node_modules/svelte-eslint-parser": {
"version": "0.32.2",
"resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.32.2.tgz",
@ -4553,6 +4916,11 @@
"url": "https://opencollective.com/unified"
}
},
"node_modules/unpic": {
"version": "3.10.0",
"resolved": "https://registry.npmjs.org/unpic/-/unpic-3.10.0.tgz",
"integrity": "sha512-EkAvWAd83f7JujI4414AgN2tW3iq1AVBaRr90/BkbB3ADPSj83cLTe07SLXOImh3NjLUlWlHwIB7HLDQbORfrg=="
},
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",

View file

@ -14,6 +14,7 @@
"devDependencies": {
"@sveltejs/adapter-auto": "^2.0.0",
"@sveltejs/adapter-netlify": "^2.0.8",
"@sveltejs/adapter-node": "^1.3.1",
"@sveltejs/kit": "^1.20.4",
"@types/node": "^20.5.1",
"@typescript-eslint/eslint-plugin": "^5.45.0",
@ -40,6 +41,7 @@
"perlin-noise-2d": "^1.0.0",
"pixi-filters": "^5.2.1",
"pixi.js": "^7.2.4",
"superjson": "^1.13.1"
"superjson": "^1.13.1",
"svelte-cloudinary": "^1.1.0"
}
}

View file

@ -27,17 +27,11 @@ export const fetchMarkdownPosts = async () => {
const data: unknown = await resolver()
const postData = data as Post
const content = postData.default.render() as unknown as { html: string }
const srcJson = await import(/* @vite-ignore */'./assets' + postData.metadata.header_bg_image + '?w=336&format=webp')
const src = JSON.stringify(srcJson.default).replaceAll('"', '')
const srcsetJson = await import(/* @vite-ignore */'./assets' + postData.metadata.header_bg_image + '?w=1344;672;336&format=webp&as=srcset')
const srcset = JSON.stringify(srcsetJson.default).replaceAll('"', '')
return {
meta: postData.metadata,
path: postPath,
Content: content.html,
src,
srcset
}
})
)

View file

@ -0,0 +1,18 @@
export const getImages = async () => {
const allImages = import.meta.glob('$lib/assets/work/**/*.{png,jpg,jpeg}')
const iterableImages = Object.entries(allImages)
const allImagesData = await Promise.all(
iterableImages.map(async ([path, resolver]) => {
const data: unknown = await resolver()
const imageData = data as { default: string }
const src = JSON.stringify(imageData.default).replaceAll('"', '')
const srcsetJson = await import(/* @vite-ignore */`${path}?w=1344;672;336&format=webp&as=srcset`)
const srcset = JSON.stringify(srcsetJson.default).replaceAll('"', '')
return {
src,
srcset
}
})
)
return allImagesData
}

View file

@ -1,15 +1,12 @@
<script lang="ts">
import myImgSrcSetWebp from '$lib/assets/work/formo/formo_hero.png?w=1344;672;336&format=webp&as=srcset'
import myImg from '$lib/assets/work/formo/formo_hero.png?w=200'
console.log(myImgSrcSetWebp)
console.log(myImg)
</script>
<h1>hakc</h1>
<img
src={myImg}
srcset={myImgSrcSetWebp}
sizes="(min-width: 768px) 10vw, 100vw"
sizes="(min-width: 768px) 60vw, 100vw"
alt="my donkey"
width="700"
/>

View file

@ -2,7 +2,6 @@ import { fetchMarkdownPosts } from '../../lib/importMarkdown'
export async function load() {
const posts = await fetchMarkdownPosts()
if (!posts) console.error('No posts found')
return {

View file

@ -3,6 +3,7 @@
import { onMount } from 'svelte';
import { workClickHandler, initWorkPage } from './workUtils.js';
import { workbulge } from '$lib/utils/stores.js';
import { CldImage } from 'svelte-cloudinary';
import { fade } from 'svelte/transition';
export let data;
@ -16,7 +17,7 @@
onMount(() => {
const headline: HTMLElement = document.querySelector('.headline') as HTMLElement;
const images: Array<HTMLElement> = Array.from(document.querySelectorAll('.workhero'));
const images: Array<HTMLElement> = Array.from(document.querySelectorAll('.work img'));
let canvasElems = initWorkPage( headline, images );
canvasTextElems = canvasElems.text as Array<HTMLElement>;
canvasImgElems = canvasElems.images;
@ -25,44 +26,16 @@
<h1 class="headline"><span>Casestudies</span></h1>
<div class="works">
{#each data.posts as work}
{#each data.posts as work, i}
<a href="{work.path}" class="work" on:click={ (e) => workClickHandler(e) }>
<img
class="workhero"
src={work.src}
srcset={work.srcset}
sizes="(min-width: 768px) 20vw, 100vw"
<CldImage
src={work.meta.header_bg_image}
sizes="(min-width: 768px) 20vw, 50vw"
alt={work.meta.title}
width="800"
height="600"
/>
<h2>{work.meta.title}</h2>
</a>
{/each}
{#each data.posts as work}
<a href="{work.path}" class="work" on:click={ (e) => workClickHandler(e) }>
<img
class="workhero"
src={work.src}
srcset={work.srcset}
sizes="(min-width: 768px) 30vw, 100vw"
alt={work.meta.title}
width="800"
height="600"
/>
<h2>{work.meta.title}</h2>
</a>
{/each}
{#each data.posts as work}
<a href="{work.path}" class="work" on:click={ (e) => workClickHandler(e) }>
<img
class="workhero"
src={work.src}
srcset={work.srcset}
sizes="(min-width: 768px) 20vw, 100vw"
alt={work.meta.title}
width="800"
height="600"
width="2100"
height="1400"
loading= {i < 9 ? "eager" : "lazy"}
/>
<h2>{work.meta.title}</h2>
</a>

View file

@ -1,10 +1,6 @@
export async function load({ params }){
export async function load( { params }: { params: { slug: string }} ){
try {
const post = await import(`../md/${params.slug}.md`)
const srcJson = await import(/* @vite-ignore */`../../../lib/assets${post.metadata.header_bg_image}?w=336&format=webp`)
const src = JSON.stringify(srcJson.default).replaceAll('"', '')
const srcsetJson = await import(/* @vite-ignore */`../../../lib/assets${post.metadata.header_bg_image}?w=1344;672;336&format=webp&as=srcset`);
const srcSet = JSON.stringify(srcsetJson.default).replaceAll('"', '')
const { title, date, header_bg_image, svg, video } = post.metadata
const Content = post.default.render()
@ -15,8 +11,6 @@ export async function load({ params }){
svg,
video,
Content,
src,
srcSet
}
} catch (error) {
console.error(error)

View file

@ -2,6 +2,7 @@
import { onMount, onDestroy } from 'svelte';
import { gsap } from 'gsap';
import { ScrollTrigger } from 'gsap/dist/ScrollTrigger';
import { CldImage } from 'svelte-cloudinary';
export let data;
gsap.registerPlugin(ScrollTrigger);
@ -10,7 +11,7 @@
function animForDesktop() {
ScrollTrigger.getAll().forEach(t => t.kill());
gsap.to('.hero', { duration: .6, x: "-10%", ease: "cubic.inOut" })
gsap.to('.heromask img', { duration: .6, x: "-10%", ease: "cubic.inOut" })
gsap.from('.work', {
xPercent: 100,
duration: .66,
@ -45,7 +46,7 @@
}
function animForMobile() {
ScrollTrigger.getAll().forEach(t => t.kill());
gsap.to('.hero', { duration: .6, x: 0, ease: "cubic.inOut" })
gsap.to('.heromask img', { duration: .6, x: 0, ease: "cubic.inOut" })
gsap.from('.work', {
opacity: 0,
y: 100,
@ -105,20 +106,24 @@
animForSize();
})
document.body.classList.add('work');
// document.body.classList.add('work');
})
onDestroy(() => {
document.body.classList.remove('work');
// document.body.classList.remove('work');
})
</script>
<svelte:document class="work" ></svelte:document>
<div class="heromask">
<img
class="hero"
src={data.src}
srcset={data.srcSet}
<CldImage
src={data.header_bg_image}
alt="{data.title}"
sizes="100vw"
width={2100}
height={1400}
loading="eager"
decoding="sync"
objectFit="fill"
/>
</div>
<div class="subnav">
@ -162,14 +167,15 @@
position: fixed;
}
}
.hero {
width: 100%;
height: 100%;
object-fit: fill;
:global(.heromask img) {
z-index: 0;
display: block;
position: relative;
perspective: 400px;
width: 100%;
height: 100%;
aspect-ratio: var(--aspect-ratio-heroes);
margin: 0;
object-fit: fill;
}
.work-content {
padding: 0 var(--spacing-outer);

View file

@ -1,6 +1,6 @@
---
title: Adidas
header_bg_image: /work/adidas/adidas_hero.jpg
header_bg_image: adidas_hero_ceurd8
order: 12
description: Adidas, as you might have heard, is an international sports and lifestyle clothing brand. I worked on several digital campaigns as a graphic designer and illustrator.
svg: '<svg id="adidas-logo" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 1000 674.2" style="enable-background:new 0 0 1000 674.2; fill: currentColor" xml:space="preserve"><path d="M654.5 442.2 448.9 84.8 596.6 0l255.7 442.2H654.5"/><path d="m106.8 392.1 147.7-85.4 78.2 135.5H135.5l-28.7-50.1"/><path d="M396.7 670.2h42V500.1h-42v170.1z"/><path d="M923.6 674.2c-47 0-75.3-24.3-76.8-58.5h44.3c0 10.7 6.7 26.4 35.4 26.9 19.1 0 28.1-11.3 28.1-19.7-1.1-13.4-18-14.5-35.9-17.4-18-2.9-33.3-6.1-44.3-11.8-14.1-7.3-23.7-22.9-23.7-40.9 0-30.4 26.4-54.5 70.3-54.5 42.6 0 69.6 22.4 72.4 55.6h-42.8c-.4-9-2.1-23.1-27.3-23.1-17 0-28.3 3.4-29.2 15.3 0 17.4 35.4 16.2 62.9 23.5 26.4 6.7 43.2 23.1 43.2 46.1-.2 42.2-34.4 58.5-76.6 58.5"/><path d="m280 240.4 147.7-85.2 165.7 287H438.8v42h-42V442L280 240.4"/><path class="st0" d="M283.8 674.2c-48.9 0-88.7-39.9-88.7-88.3 0-48.9 39.7-87.5 88.7-87.5 18.5 0 35.4 5 50.1 15.1v-71.3h42v228h-42v-11.3c-14.8 9.6-31.6 15.3-50.1 15.3zm-48.4-88.3c0 26.4 22.5 48.3 49.5 48.3 26.4 0 48.9-22 48.9-48.3 0-26.4-22.5-48.9-48.9-48.9-26.9 0-49.5 22.5-49.5 48.9"/><path class="st0" d="M594.5 442.2H636v228h-41.5v-11.3c-14.1 9.6-31.5 15.3-50.6 15.3-48.3 0-88.1-39.9-88.1-88.3 0-48.9 39.7-87.5 88.1-87.5 19.1 0 35.9 5 50.6 15.1v-71.3zm-97.8 143.7c0 26.4 22.5 48.3 48.3 48.3 26.9 0 49.5-22 49.5-48.3 0-26.4-22.5-48.9-49.5-48.9-25.8 0-48.3 22.5-48.3 48.9"/><path class="st0" d="M738.2 674.2c-48.2 0-88.1-39.9-88.1-88.3 0-48.9 39.9-87.5 88.1-87.5 18.5 0 35.9 5 50.1 15.1v-13.6h42v170.3h-42v-11.3c-14.2 9.6-31 15.3-50.1 15.3zM691 585.9c0 26.4 22.5 48.3 48.9 48.3s48.3-22 48.3-48.3c0-26.4-22-48.9-48.3-48.9-26.4 0-48.9 22.5-48.9 48.9"/><path class="st0" d="M40.5 585.9c0 26.4 22.5 48.3 48.9 48.3 26.9 0 49.5-22 49.5-48.3 0-26.4-22.5-48.9-49.5-48.9-26.3 0-48.9 22.5-48.9 48.9zm47.8 88.3c-48.4 0-88.3-40-88.3-88.3 0-48.9 39.9-87.5 88.3-87.5 18.5 0 35.9 5 50.6 15.1v-13.6h41.5v170.3h-41.5v-11.3c-14.1 9.6-31.5 15.3-50.6 15.3"/></svg>'

View file

@ -1,6 +1,6 @@
---
title: Formo.bio
header_bg_image: /work/formo/formo_hero.png
header_bg_image: formo_hero_xgb6xo
video: /work/formo/formo-rec.webm
order: 12
description: Formo, as you might have heard, is an international sports and lifestyle clothing brand. I worked on several digital campaigns as a graphic designer and illustrator.

View file

@ -1,6 +1,6 @@
---
title: JustPeace Labs
header_bg_image: /work/jpl/jpl_hero.jpg
header_bg_image: jpl_hero_eukxaw
description: JustPeace Labs is a non-profit organization that works with local communities to build peace and prevent violence.
order: 11
svg: '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="Layer_1" x="0" y="0" viewBox="0 0 240 63" style="enable-background:new 0 0 240 63" xml:space="preserve"><style>.st0{fill:currentColor}.st1{fill:currentColor}</style><g id="Layer_1-2"><path class="st0" d="M82.4 23.4c.4-2.3.6-4.7.5-7.1V3.1h4.6v13.1c.1 2.5 0 5-.3 7.5-.8 4.1-4.9 6-7.4 6.1l-1.1-2.4c1.9-.6 3.3-2.1 3.7-4zM92 3.1h4.5v12.3c0 5.1 1.6 6.2 4.4 6.2s4.3-1.3 4.3-6.2V3.1h4.5v12.7c0 6.1-3 9.5-8.9 9.5-6.6 0-8.8-3.8-8.8-9.6V3.1zM114 20.3c1.7.9 3.7 1.4 5.7 1.4 2.4 0 3.2-.8 3.2-2.2s-.9-2.2-4.2-3.9c-2.6-1.3-5.4-3.2-5.4-6.8 0-4.3 3.5-5.9 7.7-5.9 2-.1 3.9.4 5.7 1.3l-.8 3.6c-1.4-.9-3.1-1.4-4.7-1.4-2.4 0-3.3.9-3.3 2.2 0 1.6 1.1 2.2 3.8 3.7 3.4 1.8 6 3.4 6 7 0 4-3.1 6.1-7.5 6.1-2.3 0-4.5-.4-6.6-1.3l.4-3.8zM135.3 6.6H129V3.1h17.2v3.5h-6.3V25h-4.6V6.6zM149.4 3.1h1.4c2.4 0 4.4-.2 6.5-.2 5 0 8 2.2 8 7.6 0 5-3.1 8-8.8 8H154V25h-4.6V3.1zm7 11.8c2.2 0 4.3-.9 4.3-4.6 0-2.8-1.5-4.3-4.4-4.2-.8 0-1.6.1-2.4.2v8.4c.8.2 1.6.2 2.5.2zM168.4 3.1h13.4v3.5H173V12h6.8v3.5H173v5.9h9.7V25h-14.3V3.1zM192.8 2.9h4.6l8.2 22.1h-5l-1.5-4.6H191l-1.5 4.6h-4.9l8.2-22.1zm5.3 14.2-2.4-7.5-.6-2.3-.6 2.3-2.4 7.5h6zM216.4 2.9c2 0 4 .3 6 .9l-.7 4c-1.5-.9-3.2-1.3-5-1.3-3.6 0-6.3 2.7-6.3 7.3s2.5 7.9 6.7 7.9c1.8 0 3.5-.5 5.1-1.4v3.8c-1.7.8-3.6 1.2-5.5 1.1-6.8 0-11-4.5-11-11.1 0-7.3 4.7-11.2 10.7-11.2zM225.7 3.1h13.4v3.5h-8.8V12h6.7v3.5h-6.7v5.9h9.7V25h-14.3V3.1z"/><path class="st1" d="M80.4 39h2.5v20H92v2H80.4V39zM98 52.1c2.1-.7 4.2-1 6.4-1v-1.9c0-2.7-1.4-3.1-3.8-3.1-1.7.1-3.4.5-4.8 1.4l-.6-1.6c1.8-1 3.9-1.6 6-1.6 3.3 0 5.6.9 5.6 5v11.9h-1c-.8 0-1.3-.1-1.3-1.2v-.6c-1.4 1.2-3.2 1.8-5.1 1.8-2.9 0-5-1.7-5-4.6 0-2.1 1.3-3.6 3.6-4.5zm2.2 7.3c1.5 0 3-.5 4.2-1.4v-5.3c-1.7 0-3.4.2-5.1.8-1.6.6-2.5 1.5-2.5 3 0 1.7 1 2.9 3.4 2.9zM112 37h2.4v6.8l-.1 2.5c1.3-1.3 3.1-2 5-2 3.6 0 6.5 2.6 6.5 7.8s-3.3 9.1-8.3 9.1c-1.9 0-3.8-.4-5.5-1.2V37zm5.8 22.4c2.9 0 5.5-2.3 5.6-7 0-4.1-1.6-6.3-4.7-6.3-1.6 0-3.1.6-4.2 1.7v10.9c.9.6 2.1.8 3.3.7zM129.4 58.2c1.5.8 3.1 1.2 4.7 1.2 2.1 0 3.6-.8 3.6-2.5s-2-2.5-3.9-3.3c-2.5-1-4.7-2.4-4.7-5.1s2.7-4.1 5.7-4.2c1.5 0 2.9.3 4.2.9l-.4 1.8c-1.1-.6-2.4-.9-3.7-.9-2.4 0-3.6.9-3.6 2.2 0 1.7 1.4 2.5 3.6 3.4s5 2.2 5 5-2.2 4.5-5.7 4.5c-1.8 0-3.6-.4-5.2-1.2l.4-1.8zM7.2 31.7c0-12.2 8.9-22.6 21-24.4L27.1 0C11.6 2.4.1 15.7 0 31.5c0 6.8 2.2 13.5 6.2 19l5.8-4.3C8.9 42 7.2 36.9 7.2 31.7zM17.1 51.4l-4.2 5.7c4.2 3.1 9.1 5.1 14.2 5.9l1-7c-4-.6-7.8-2.2-11-4.6zM36.5 0l-1.1 7.3c13.5 2 22.7 14.5 20.7 28-.6 3.9-2.1 7.7-4.5 10.9l5.7 4.2c4.1-5.5 6.3-12.1 6.2-19 .1-15.7-11.4-29-27-31.4zM35.5 56l1 7c5.2-.8 10-2.8 14.2-5.9l-4.2-5.7c-3.2 2.4-7 4-11 4.6z"/></g></svg>'

View file

@ -70,7 +70,7 @@ h2 {
flex: 0 0 calc(33% - .125em);
}
}
.workhero {
:global(.work img) {
width: 100%;
height: auto;
aspect-ratio: var(--aspect-ratio-heroes);

View file

@ -48,7 +48,7 @@ export function workClickHandler(e:Event){
e.preventDefault();
const target = e.target as HTMLElement;
const originalLink = target.getAttribute('href') as string;
const targetImg = target.querySelector('.workhero') as HTMLElement;
const targetImg = target.querySelector('img') as HTMLElement;
const targetImgRect = targetImg.getBoundingClientRect();
const targetImgAspectRatio = targetImgRect.width / targetImgRect.height;
target.classList.add('active');
@ -61,7 +61,7 @@ export function workClickHandler(e:Event){
targetImg.style.position = 'fixed';
gsap.to('.work:not(.active) .workhero', {
gsap.to('.work:not(.active) img', {
duration: .3,
opacity: 0,
yPercent: 10,

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View file

@ -1,4 +1,5 @@
// import adapter from '@sveltejs/adapter-auto';
// import adapter from '@sveltejs/adapter-node';
import adapter from '@sveltejs/adapter-netlify';
import { vitePreprocess } from '@sveltejs/kit/vite';
import preprocess from 'svelte-preprocess';

View file

@ -1,8 +1,24 @@
import { sveltekit } from '@sveltejs/kit/vite';
import{ imagetools }from'vite-imagetools';
import { imagetools } from 'vite-imagetools';
import { defineConfig } from 'vite';
const supportedExtensions = ['png', 'jpg', 'jpeg'];
export default defineConfig({
plugins: [imagetools(),sveltekit()]
plugins: [
imagetools({
defaultDirectives: (url) => {
const extension = url.pathname.substring(
url.pathname.lastIndexOf('.') + 1
);
if (supportedExtensions.includes(extension)) {
return new URLSearchParams({
format: 'avif;webp;' + extension,
// picture: true
});
}
return new URLSearchParams();
}
}),
sveltekit()]
});