UNPKG

docusaurus-plugin-copy-page-button

Version:

A Docusaurus plugin that provides a copy page button for extracting content as markdown for LLMs

207 lines (174 loc) 4.31 kB
/* Position button container on top of sidebar */ #copy-page-button-container { position: absolute; top: -60px; left: 0; right: 0; z-index: 100; pointer-events: none; padding-bottom: 20px; } #copy-page-button-container > * { pointer-events: auto; } .copyPageContainer { position: relative; display: inline-block; } .copyPageButton { display: flex; align-items: center; gap: 8px; padding: 8px 12px; margin-bottom: 16px; background: var(--ifm-navbar-background-color, #1c1e21); border: 1px solid var(--ifm-color-emphasis-300); border-radius: 6px; color: var(--ifm-navbar-link-color); cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.2s ease; white-space: nowrap; } .copyPageButton:hover { background: var(--ifm-color-emphasis-100); border-color: var(--ifm-color-emphasis-400); } .copyPageButton:focus { background: var(--ifm-color-emphasis-200, #eee); border-color: var(--ifm-color-primary, #007acc); outline: none; } .chevron { transition: transform 0.2s ease; } .chevron.open { transform: rotate(180deg); } .copyPageDropdown { min-width: 300px; background: var(--ifm-dropdown-background-color, #1c1e21); border: 1px solid var(--ifm-color-emphasis-300); border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); overflow: hidden; } .dropdownItem { display: flex; align-items: center; gap: 12px; width: 100%; padding: 12px 16px; background: transparent; border: none; color: var(--ifm-font-color-base); cursor: pointer; text-align: left; transition: background-color 0.2s ease; border-bottom: 1px solid var(--ifm-color-emphasis-200); } .dropdownItem:last-child { border-bottom: none; } .dropdownItem:hover { background: var(--ifm-color-emphasis-100); } .dropdownItem svg { flex-shrink: 0; opacity: 0.7; } .itemTitle { font-size: 14px; font-weight: 500; margin-bottom: 2px; color: var(--ifm-font-color-base); } .itemDescription { font-size: 13px; color: var(--ifm-color-emphasis-700); line-height: 1.3; } [data-theme="dark"] .copyPageButton { background: var(--ifm-navbar-background-color); border-color: var(--ifm-color-emphasis-300); } [data-theme="dark"] .copyPageButton:hover { background: var(--ifm-color-emphasis-200); } [data-theme="dark"] .copyPageDropdown { background: var(--ifm-dropdown-background-color); border-color: var(--ifm-color-emphasis-300); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25); } [data-theme="dark"] .dropdownItem:hover { background: var(--ifm-color-emphasis-200); } [data-theme="light"] .copyPageButton { background: #ffffff; border-color: #d0d7de; color: #24292f; } [data-theme="light"] .copyPageButton:hover { background: #f6f8fa; border-color: #8c959f; } [data-theme="light"] .copyPageDropdown { background: #ffffff; border-color: #d0d7de; box-shadow: 0 8px 24px rgba(140, 149, 159, 0.2); } [data-theme="light"] .dropdownItem { color: #24292f; border-color: #d0d7de; } [data-theme="light"] .dropdownItem:hover { background: #f6f8fa; } [data-theme="light"] .itemDescription { color: #656d76; } /* Hide the "Copy page" text on smaller screens (below 768px) */ @media (max-width: 767px) { .copyPageText { display: none; } } /* Force breadcrumbs to wrap earlier to avoid overlap with copy button */ :global(.theme-doc-breadcrumbs) { /* Reserve space for copy button on smaller screens */ @media (max-width: 996px) { max-width: calc(100% - 120px); /* Reserve 120px for copy button */ flex-wrap: wrap; } @media (max-width: 768px) { max-width: calc(100% - 80px); /* Reserve 80px for icon-only button */ } @media (max-width: 480px) { max-width: calc(100% - 60px); /* Reserve 60px for very small screens */ } } /* Ensure breadcrumb items can wrap */ :global(.theme-doc-breadcrumbs .breadcrumbs__item) { flex-shrink: 1; min-width: 0; } /* Make breadcrumb links wrap text if needed */ :global(.theme-doc-breadcrumbs .breadcrumbs__link) { white-space: normal; word-break: break-word; hyphens: auto; } :global(#copy-page-button-container) { @media (max-width: 996px) { position: absolute; right: 16px; top: 75px; z-index: 50; } } @media (max-width: 996px) { .copyPageDropdown { max-width: 300px; } }