diff --git a/packages/freesewing.shared/components/elements/h1.js b/packages/freesewing.shared/components/elements/h1.js deleted file mode 100644 index 9ffb332778c..00000000000 --- a/packages/freesewing.shared/components/elements/h1.js +++ /dev/null @@ -1,13 +0,0 @@ -const H1 = props => ( -

- {props.children} -

-) - -export default H1 diff --git a/packages/freesewing.shared/components/layouts/default.js b/packages/freesewing.shared/components/layouts/default.js index aec067c7081..377dc7dd32a 100644 --- a/packages/freesewing.shared/components/layouts/default.js +++ b/packages/freesewing.shared/components/layouts/default.js @@ -1,18 +1,64 @@ import { useState } from 'react' +import { useRouter } from 'next/router' +import Link from 'next/link' // Shared components -import PrimaryMenu from 'shared/components/navigation/primary' -//import Breadcrumbs from '@/shared/components/navigation/breadcrumbs' -import H1 from 'shared/components/elements/h1' -//import Icon from '@/shared/components/icon' -//import Button from '@/shared/components/elements/button' -// Site components -//import NavigationButtons from '@/site/components/navigation-buttons' -//import Search from '@/site/components/search' +import Logo from 'shared/components/logos/freesewing.js' +import PrimaryNavigation from 'shared/components/navigation/primary' +import get from 'lodash.get' const iconSize= 48 -const DefaultLayout = props => { +const PageTitle = ({ app, slug, title }) => { + if (title) return

{title}

+ if (slug) return

{get(app.navigation, slug.split('/')).__title}

+ return

FIXME: This page has no title

+} + +const Breadcrumbs = ({ app, slug=false, title }) => { + if (!slug) return null + const crumbs = [] + const chunks = slug.split('/') + for (const i in chunks) { + const page = get(app.navigation, chunks.slice(0,i+1)) + crumbs.push([page.__linktitle, '/'+chunks.slice(0,i+1).join('/'), (i+1 < chunks.length)]) + } + + return ( + + ) +} + + +const DefaultLayout = ({ app, title=false, children=[]}) => { + + const router = useRouter() + const slug = router.asPath.slice(1) const [leftNav, setLeftNav] = useState(false) const toggleLeftNav = () => setLeftNav(!leftNav) @@ -23,7 +69,7 @@ const DefaultLayout = props => { min-h-screen bg-base-100 lg:py-8 - `} data-theme={props.app.theme}> + `} data-theme={app.theme}>
{ grow flex flex-row sm:py-8 gap-2 - lg:gap-8 - xl:gap-18 + lg:gap-16 + xl:gap-32 `}> -
-

{props.title}

- {props.children} +
+ {title && ( + <> + + + + )} + {children}
footer
diff --git a/packages/freesewing.shared/components/mdx/example.js b/packages/freesewing.shared/components/mdx/example.js index 15eb6801976..04d9a046dab 100644 --- a/packages/freesewing.shared/components/mdx/example.js +++ b/packages/freesewing.shared/components/mdx/example.js @@ -1,4 +1,4 @@ const Example = props =>

FIXME: Example still todo

-export const Example +export default Example diff --git a/packages/freesewing.shared/components/mdx/highlight.js b/packages/freesewing.shared/components/mdx/highlight.js index 429c9a9b500..9dead92249b 100644 --- a/packages/freesewing.shared/components/mdx/highlight.js +++ b/packages/freesewing.shared/components/mdx/highlight.js @@ -13,7 +13,7 @@ const Highlight = ({ : (className === '') ? 'js' : className.split('-').pop() return ( -
+
{names[language] ? names[language] : language}
diff --git a/packages/freesewing.shared/components/navigation/primary.js b/packages/freesewing.shared/components/navigation/primary.js index a56863083e3..20675d0fb3c 100644 --- a/packages/freesewing.shared/components/navigation/primary.js +++ b/packages/freesewing.shared/components/navigation/primary.js @@ -30,35 +30,44 @@ const Chevron = ({w=8, m=2}) => Object.values(current) .filter(entry => (typeof entry === 'object')) -const linkClasses = "text-lg py-2 text-base-content hover:cursor-pointer hover:text-secondary bg-opacity-50" +const howActive = (slug) => { +} + +// Shared classes for links +const linkClasses = "text-lg lg:text-xl py-1 text-base-content hover:cursor-pointer hover:text-secondary bg-opacity-50" + + // Component that renders a sublevel of navigation -const SubLevel = ({ nodes={} }) => ( -
    +const SubLevel = ({ nodes={}, level=1 }) => ( +
- +
+ +
) // TODO: Get rid of this when markdown has been restructured const remove = ['contributors', 'developers', 'editors', 'translators'] -const Navigation = ({ app }) => { +const Navigation = ({ app, active }) => { if (!app.navigation) return null const output = [] for (const key of Object.keys(app.navigation).sort()) { @@ -144,16 +155,17 @@ const Navigation = ({ app }) => { title={key} slug={key} key={key} - showChildren={keepClosed.indexOf(key) === -1} + hasChildren={keepClosed.indexOf(key) === -1} nav={app.navigation} current={orderBy(app.navigation[key], ['order', 'title'], ['asc', 'asc'])} + active={active} />) } return output } -const PrimaryMenu = ({ app }) => { +const PrimaryMenu = ({ app, active }) => { return ( ) diff --git a/packages/freesewing.shared/components/popout.js b/packages/freesewing.shared/components/popout.js index 0d15be9b19b..0f3d624edbe 100644 --- a/packages/freesewing.shared/components/popout.js +++ b/packages/freesewing.shared/components/popout.js @@ -31,7 +31,7 @@ const Popout = (props) => { return (
+ border-l-4 px-8 py-2 shadow border-${color}`}>
{type}
diff --git a/packages/freesewing.shared/components/theme-picker.js b/packages/freesewing.shared/components/theme-picker.js index 980364c6fb8..50aefe60c8b 100644 --- a/packages/freesewing.shared/components/theme-picker.js +++ b/packages/freesewing.shared/components/theme-picker.js @@ -1,8 +1,11 @@ import themes from 'shared/themes/index.js' -const ThemePicker = ({ app }) => { +const ThemePicker = ({ app, className='' }) => { return ( - app.setTheme(evt.target.value)} + > {Object.keys(themes).map(theme => ( ))} diff --git a/packages/freesewing.shared/components/wrappers/mdx.js b/packages/freesewing.shared/components/wrappers/mdx.js index ae8b1f2f9da..c211568b648 100644 --- a/packages/freesewing.shared/components/wrappers/mdx.js +++ b/packages/freesewing.shared/components/wrappers/mdx.js @@ -36,7 +36,7 @@ const MdxWrapper = ({mdx, app, components={}}) => { const MdxContent = mdxModule ? mdxModule.default : Fragment return ( -
+
) diff --git a/packages/freesewing.shared/config/tailwind.config.js b/packages/freesewing.shared/config/tailwind.config.js index 4081b929e31..8399d3504fe 100644 --- a/packages/freesewing.shared/config/tailwind.config.js +++ b/packages/freesewing.shared/config/tailwind.config.js @@ -11,7 +11,7 @@ module.exports = { ], plugins: [ require('daisyui'), - require('@tailwindcss/typography'), + //require('@tailwindcss/typography'), ], daisyui: { styled: true, diff --git a/packages/freesewing.shared/styles/globals.css b/packages/freesewing.shared/styles/globals.css index b054ebb5df0..3b7e9294e0d 100644 --- a/packages/freesewing.shared/styles/globals.css +++ b/packages/freesewing.shared/styles/globals.css @@ -4,6 +4,22 @@ @import './code.css'; +/* Applied styles for common HTML tags */ +@layer components { + h1 { @apply text-base-content text-4xl py-5 font-bold lg:text-6xl } + h2 { @apply text-base-content text-3xl py-4 font-bold lg:text-4xl } + h3 { @apply text-base-content text-2xl py-3 font-bold lg:text-3xl } + h4 { @apply text-base-content text-xl py-2 font-bold lg:text-2xl } + h5 { @apply text-base-content text-lg py-1 font-bold lg:text-xl } + h6 { @apply text-base-content text-base font-bold lg:text-lg } + p { @apply text-base-content my-1 py-2 lg:text-xl } + /* mdx styles */ + .mdx a { @apply text-secondary } + .mdx a:hover { @apply text-secondary-focus } + .mdx p > code { @apply text-info px-1 rounded-lg } + .mdx ul { @apply pl-4 list-disc list-inside text-base-content } +} + details { user-select: none; } details > summary > svg.details-toggle { transform: rotate(90deg);