diff --git a/src/components/Card.svelte b/src/lib/components/Card.svelte similarity index 100% rename from src/components/Card.svelte rename to src/lib/components/Card.svelte diff --git a/src/components/Comment.svelte b/src/lib/components/Comment.svelte similarity index 100% rename from src/components/Comment.svelte rename to src/lib/components/Comment.svelte diff --git a/src/components/Comments.svelte b/src/lib/components/Comments.svelte similarity index 100% rename from src/components/Comments.svelte rename to src/lib/components/Comments.svelte diff --git a/src/components/Header.svelte b/src/lib/components/Header.svelte similarity index 100% rename from src/components/Header.svelte rename to src/lib/components/Header.svelte diff --git a/src/components/Icon.svelte b/src/lib/components/Icon.svelte similarity index 100% rename from src/components/Icon.svelte rename to src/lib/components/Icon.svelte diff --git a/src/components/MobileMenu.svelte b/src/lib/components/MobileMenu.svelte similarity index 100% rename from src/components/MobileMenu.svelte rename to src/lib/components/MobileMenu.svelte diff --git a/src/components/NavLink.svelte b/src/lib/components/NavLink.svelte similarity index 100% rename from src/components/NavLink.svelte rename to src/lib/components/NavLink.svelte diff --git a/src/components/Og.svelte b/src/lib/components/Og.svelte similarity index 100% rename from src/components/Og.svelte rename to src/lib/components/Og.svelte diff --git a/src/components/PostItem.svelte b/src/lib/components/PostItem.svelte similarity index 100% rename from src/components/PostItem.svelte rename to src/lib/components/PostItem.svelte diff --git a/src/components/ProjectItem.svelte b/src/lib/components/ProjectItem.svelte similarity index 100% rename from src/components/ProjectItem.svelte rename to src/lib/components/ProjectItem.svelte diff --git a/src/components/Reactions.svelte b/src/lib/components/Reactions.svelte similarity index 100% rename from src/components/Reactions.svelte rename to src/lib/components/Reactions.svelte diff --git a/src/components/Slice.svelte b/src/lib/components/Slice.svelte similarity index 100% rename from src/components/Slice.svelte rename to src/lib/components/Slice.svelte diff --git a/src/lib/content/work/mbr.svx b/src/lib/content/work/mbr.svx new file mode 100644 index 0000000..dd2a5fe --- /dev/null +++ b/src/lib/content/work/mbr.svx @@ -0,0 +1,16 @@ +--- +name: Medical Bill Rights +url: https://www.cms.gov/medical-bill-rights +slug: medical-bill-rights +description: 'react forms, drupal, salesforce, internationalization' +type: professional +date: 2023-06-01 +--- + +The No Surprises Act is a federal law that went into effect on January 1, 2022. + +The Medical Bill Rights sub-site for https://cms.gov is a collection of resources to inform and assist every American their rights as enshrined by the No Surprises Act. This law provides protections against "surprise medical bills", which can be any bill that has greater than $400 difference than what you were initially told. + +The MBR site contains two React apps and 30 additional pages of informational content, initially available in English and Spanish. I architected both React apps and consulted on the Drupal implementation of content. The main React app is a human-friendly form for American consumers to register complaints related to surprise medical bills. This form submits data to Salesforce, where a government team can review and responds to every complaint submitted. The second React app is a short question flow to direct users to the appropriate resource page for their situation. + +This sub-site was built in about four months, launching smoothly after numerous pivots and unexpected challenges along the way. diff --git a/src/routes/+error.svelte b/src/routes/(main)/+error.svelte similarity index 100% rename from src/routes/+error.svelte rename to src/routes/(main)/+error.svelte diff --git a/src/routes/+layout.svelte b/src/routes/(main)/+layout.svelte similarity index 94% rename from src/routes/+layout.svelte rename to src/routes/(main)/+layout.svelte index fcda452..dbdb849 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/(main)/+layout.svelte @@ -1,9 +1,9 @@ diff --git a/src/routes/work/+page.js b/src/routes/(main)/work/+page.js similarity index 100% rename from src/routes/work/+page.js rename to src/routes/(main)/work/+page.js diff --git a/src/routes/work/+page.svelte b/src/routes/(main)/work/+page.svelte similarity index 92% rename from src/routes/work/+page.svelte rename to src/routes/(main)/work/+page.svelte index 32ac849..95183bc 100644 --- a/src/routes/work/+page.svelte +++ b/src/routes/(main)/work/+page.svelte @@ -1,7 +1,7 @@ diff --git a/src/routes/work/[slug]/+page.js b/src/routes/(main)/work/[slug]/+page.js similarity index 100% rename from src/routes/work/[slug]/+page.js rename to src/routes/(main)/work/[slug]/+page.js diff --git a/src/routes/work/[slug]/+page.svelte b/src/routes/(main)/work/[slug]/+page.svelte similarity index 100% rename from src/routes/work/[slug]/+page.svelte rename to src/routes/(main)/work/[slug]/+page.svelte diff --git a/src/routes/(nowrapper)/+layout.svelte b/src/routes/(nowrapper)/+layout.svelte new file mode 100644 index 0000000..57635bb --- /dev/null +++ b/src/routes/(nowrapper)/+layout.svelte @@ -0,0 +1,7 @@ + + + diff --git a/src/routes/(nowrapper)/christmas/+page.server.js b/src/routes/(nowrapper)/christmas/+page.server.js new file mode 100644 index 0000000..337c4aa --- /dev/null +++ b/src/routes/(nowrapper)/christmas/+page.server.js @@ -0,0 +1,8 @@ +import { json } from './christmas'; + +/** @type {import('./$types').PageLoad} */ +export function load() { + return { + ...json + }; +} diff --git a/src/routes/(nowrapper)/christmas/+page.svelte b/src/routes/(nowrapper)/christmas/+page.svelte new file mode 100644 index 0000000..001e837 --- /dev/null +++ b/src/routes/(nowrapper)/christmas/+page.svelte @@ -0,0 +1,159 @@ + + + + + + + + + +
+ + +
+ +
+

{data.title}

+

at

+

{data.where} | {data.when}

+ + + +

Schedule

+
    + {#each data.agenda as {event, time}} +
  • +

    {event} - {time}

    +
  • + {/each} +
+ + +

Menu

+ +
    + {#each data.menu as {name, ingredients}} +
  • +

    {name}

    +

    {ingredients}

    +
  • + {/each} +
+ +

{data.disclaimer}

+ +
+ +
+ + +
diff --git a/src/routes/(nowrapper)/christmas/christmas.css b/src/routes/(nowrapper)/christmas/christmas.css new file mode 100644 index 0000000..f6ebc43 --- /dev/null +++ b/src/routes/(nowrapper)/christmas/christmas.css @@ -0,0 +1,50 @@ +body { + background-color: rgb(17 24 39 / var(--tw-bg-opacity)) !important; +} +body::-webkit-scrollbar-thumb { + background: repeating-linear-gradient(60deg, red 0 9%, white 10% 18%) !important; + border-radius: 100vw !important; + margin-block: 10px !important; +} +body::-webkit-scrollbar-track { + background: powderblue !important; +} + +.serif { + font-family: 'Gloock', serif; +} +.sans { + font-family: 'Pragati Narrow', sans-serif; +} + +#snow { + position: fixed; + height: 100%; + left: 0; + top: 0; + width: 100%; + z-index: 1; +} + +.holly-container { + position: relative; +} +.holly { + position: absolute; + top: 0; + background: none; + width: 20%; +} +.left { + left: 0; +} +.right { + right: 0; + transform: scaleX(-1); +} +.bottom { + transform: scaleY(-1); +} +.bottom.right { + transform: scaleX(-1) scaleY(-1); +} diff --git a/src/routes/(nowrapper)/christmas/christmas.js b/src/routes/(nowrapper)/christmas/christmas.js new file mode 100644 index 0000000..7efd9e3 --- /dev/null +++ b/src/routes/(nowrapper)/christmas/christmas.js @@ -0,0 +1,42 @@ +export const json = { + "title": "Christmas Dinner", + "where": "the purr palace", + "when": "december 23, 2023", + "agenda": [ + { + "event": "cocktails", + "time": "first" + }, + { + "event": "dinner", + "time": "next" + }, + { + "event": "presents", + "time": "eventually" + }, + { + "event": "fun & games", + "time": "throughout" + } + ], + "menu": [ + { + "name": "baked potato soup", + "ingredients": "yukon gold potatoes, cream, roasted pork belly, chives, cheese" + }, + { + "name": "winter salad", + "ingredients": "mixed greens, apples, cranberries, walnuts, cranberry vinaigrette", + }, + { + "name": "duck a l'orange", + "ingredients": "roasted duck breast, orange pan sauce, porcini mushroom risotto, baked vegetables", + }, + { + "name": "dessert", + "ingredients": "creme brulee, assorted cookies, mousse" + } + ], + "disclaimer": "all items are gluten-free, however some may contain dairy products" +} diff --git a/static/assets/holly-clipart-corner-11.png b/static/assets/holly-clipart-corner-11.png new file mode 100644 index 0000000..e3f8312 Binary files /dev/null and b/static/assets/holly-clipart-corner-11.png differ