diff --git a/packages/logos-docusaurus-theme/src/client/css/custom.scss b/packages/logos-docusaurus-theme/src/client/css/custom.scss
index e91c8bf..f311bbf 100644
--- a/packages/logos-docusaurus-theme/src/client/css/custom.scss
+++ b/packages/logos-docusaurus-theme/src/client/css/custom.scss
@@ -237,7 +237,7 @@ body {
}
svg * {
- stroke: rgb(var(--lsd-text-primary));
+ fill: rgb(var(--lsd-text-primary));
}
.grid {
@@ -540,31 +540,21 @@ div.w-10 > a:not(:last-child) {
border-left: 1px solid rgb(var(--lsd-border-primary));
}
-@media (max-width: 576px) {
- :root {
- --ifm-global-spacing: 0.5rem;
- --ifm-spacing-vertical: var(--ifm-global-spacing);
- --ifm-spacing-horizontal: var(--ifm-global-spacing);
+.cursor-pointer {
+ cursor: pointer;
+}
- --ifm-button-size-multiplier: 1.25;
+.navbar__item {
+ display: inline-flex;
+ align-items: center;
+}
- --ifm-button-padding-horizontal: calc(
- var(--ifm-button-size-multiplier) * var(--ifm-spacing-horizontal)
- );
- --ifm-button-padding-vertical: calc(
- var(--ifm-button-size-multiplier) * var(--ifm-spacing-vertical)
- );
+.dropdown > .navbar__link:after {
+ display: none;
+}
- --ifm-alert-padding-horizontal: calc(2 * var(--ifm-spacing-horizontal));
- --ifm-alert-padding-vertical: calc(2 * var(--ifm-spacing-vertical));
- }
-
- .markdown > h2 {
- --ifm-h2-font-size: 1.75rem;
- }
- .markdown h4 {
- --ifm-h4-font-size: 1.25rem !important;
- }
+.margin-left-8 {
+ margin-left: 8px;
}
@include utils.responsive('lg', 'down') {
@@ -592,3 +582,30 @@ div.w-10 > a:not(:last-child) {
display: none;
}
}
+
+@include utils.responsive('sm', 'down') {
+ :root {
+ --ifm-global-spacing: 0.5rem;
+ --ifm-spacing-vertical: var(--ifm-global-spacing);
+ --ifm-spacing-horizontal: var(--ifm-global-spacing);
+
+ --ifm-button-size-multiplier: 1.25;
+
+ --ifm-button-padding-horizontal: calc(
+ var(--ifm-button-size-multiplier) * var(--ifm-spacing-horizontal)
+ );
+ --ifm-button-padding-vertical: calc(
+ var(--ifm-button-size-multiplier) * var(--ifm-spacing-vertical)
+ );
+
+ --ifm-alert-padding-horizontal: calc(2 * var(--ifm-spacing-horizontal));
+ --ifm-alert-padding-vertical: calc(2 * var(--ifm-spacing-vertical));
+ }
+
+ .markdown > h2 {
+ --ifm-h2-font-size: 1.75rem;
+ }
+ .markdown h4 {
+ --ifm-h4-font-size: 1.25rem !important;
+ }
+}
diff --git a/packages/logos-docusaurus-theme/src/client/theme/DocBreadcrumbs/index.tsx b/packages/logos-docusaurus-theme/src/client/theme/DocBreadcrumbs/index.tsx
index dcb367e..6f64a34 100644
--- a/packages/logos-docusaurus-theme/src/client/theme/DocBreadcrumbs/index.tsx
+++ b/packages/logos-docusaurus-theme/src/client/theme/DocBreadcrumbs/index.tsx
@@ -7,7 +7,6 @@ import {
} from '@docusaurus/theme-common/internal'
import Link from '@docusaurus/Link'
import { translate } from '@docusaurus/Translate'
-import HomeBreadcrumbItem from '@theme/DocBreadcrumbs/Items/Home'
import styles from './styles.module.css'
import { Typography } from '@acid-info/lsd-react'
@@ -87,7 +86,16 @@ export default function DocBreadcrumbs() {
itemScope
itemType="https://schema.org/BreadcrumbList"
>
- {homePageRoute && }
+ {homePageRoute && (
+
+ Home
+
+ )}
{breadcrumbs.map((item, idx) => {
const isLast = idx === breadcrumbs.length - 1
return (
diff --git a/packages/logos-docusaurus-theme/src/client/theme/NavbarItem/DropdownNavbarItem.tsx b/packages/logos-docusaurus-theme/src/client/theme/NavbarItem/DropdownNavbarItem.tsx
new file mode 100644
index 0000000..456b304
--- /dev/null
+++ b/packages/logos-docusaurus-theme/src/client/theme/NavbarItem/DropdownNavbarItem.tsx
@@ -0,0 +1,155 @@
+import React, { useState, useRef, useEffect } from 'react'
+import clsx from 'clsx'
+import {
+ isRegexpStringMatch,
+ useCollapsible,
+ Collapsible,
+} from '@docusaurus/theme-common'
+import { isSamePath, useLocalPathname } from '@docusaurus/theme-common/internal'
+import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink'
+import NavbarItem from '@theme/NavbarItem'
+import { ArrowDownIcon, ArrowUpIcon } from '@acid-info/lsd-react'
+
+function isItemActive(item, localPathname) {
+ if (isSamePath(item.to, localPathname)) {
+ return true
+ }
+ if (isRegexpStringMatch(item.activeBaseRegex, localPathname)) {
+ return true
+ }
+ if (item.activeBasePath && localPathname.startsWith(item.activeBasePath)) {
+ return true
+ }
+ return false
+}
+
+function containsActiveItems(items, localPathname) {
+ return items.some((item) => isItemActive(item, localPathname))
+}
+
+function DropdownNavbarItemDesktop({
+ items,
+ position,
+ className,
+ onClick,
+ ...props
+}) {
+ const dropdownRef = useRef(null)
+ const [showDropdown, setShowDropdown] = useState(false)
+
+ useEffect(() => {
+ const handleClickOutside = (event) => {
+ if (!dropdownRef.current || dropdownRef.current.contains(event.target)) {
+ return
+ }
+ setShowDropdown(false)
+ }
+ document.addEventListener('mousedown', handleClickOutside)
+ document.addEventListener('touchstart', handleClickOutside)
+ document.addEventListener('focusin', handleClickOutside)
+ return () => {
+ document.removeEventListener('mousedown', handleClickOutside)
+ document.removeEventListener('touchstart', handleClickOutside)
+ document.removeEventListener('focusin', handleClickOutside)
+ }
+ }, [dropdownRef])
+
+ return (
+
+
e.preventDefault()}
+ onKeyDown={(e) => {
+ if (e.key === 'Enter') {
+ e.preventDefault()
+ setShowDropdown(!showDropdown)
+ }
+ }}
+ >
+ {props.children ?? props.label}
+
+
+
+ {items.map((childItemProps, i) => (
+
+ ))}
+
+
+ )
+}
+
+function DropdownNavbarItemMobile({
+ items,
+ className,
+ position, // Need to destructure position from props so that it doesn't get passed on.
+ onClick,
+ ...props
+}) {
+ const localPathname = useLocalPathname()
+ const containsActive = containsActiveItems(items, localPathname)
+ const { collapsed, toggleCollapsed, setCollapsed } = useCollapsible({
+ initialState: () => !containsActive,
+ })
+
+ // Expand/collapse if any item active after a navigation
+ useEffect(() => {
+ if (containsActive) {
+ setCollapsed(!containsActive)
+ }
+ }, [localPathname, containsActive, setCollapsed])
+ return (
+
+ {
+ e.preventDefault()
+ toggleCollapsed()
+ }}
+ >
+ {props.children ?? props.label}
+
+
+ {items.map((childItemProps, i) => (
+
+ ))}
+
+
+ )
+}
+export default function DropdownNavbarItem({ mobile = false, ...props }) {
+ const Comp = mobile ? DropdownNavbarItemMobile : DropdownNavbarItemDesktop
+ //@ts-ignore
+ return
+}
diff --git a/packages/logos-docusaurus-theme/src/client/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx b/packages/logos-docusaurus-theme/src/client/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx
index 9dbcaea..b503ac1 100644
--- a/packages/logos-docusaurus-theme/src/client/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx
+++ b/packages/logos-docusaurus-theme/src/client/theme/NavbarItem/LocaleDropdownNavbarItem/index.tsx
@@ -4,8 +4,7 @@ import { useAlternatePageUtils } from '@docusaurus/theme-common/internal'
import { translate } from '@docusaurus/Translate'
import { useLocation } from '@docusaurus/router'
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem'
-import IconLanguage from '@theme/Icon/Language'
-import styles from './styles.module.css'
+
export default function LocaleDropdownNavbarItem({
mobile,
dropdownItemsBefore,
@@ -50,7 +49,8 @@ export default function LocaleDropdownNavbarItem({
id: 'theme.navbar.mobileLanguageDropdown.label',
description: 'The label for the mobile language switcher dropdown',
})
- : localeConfigs[currentLocale]?.label
+ : localeConfigs[currentLocale]?.label.substring(0, 2).toUpperCase()
+
return (