Spaces:
Sleeping
Sleeping
pythonic-rag-FastAPIReact
/
frontend
/node_modules
/@pmmmwh
/react-refresh-webpack-plugin
/overlay
/components
/PageHeader.js
| const Spacer = require('./Spacer.js'); | |
| const theme = require('../theme.js'); | |
| /** | |
| * @typedef {Object} PageHeaderProps | |
| * @property {string} [message] | |
| * @property {string} title | |
| * @property {string} [topOffset] | |
| */ | |
| /** | |
| * The header of the overlay. | |
| * @param {Document} document | |
| * @param {HTMLElement} root | |
| * @param {PageHeaderProps} props | |
| * @returns {void} | |
| */ | |
| function PageHeader(document, root, props) { | |
| const pageHeaderContainer = document.createElement('div'); | |
| pageHeaderContainer.style.background = '#' + theme.dimgrey; | |
| pageHeaderContainer.style.boxShadow = '0 1px 4px rgba(0, 0, 0, 0.3)'; | |
| pageHeaderContainer.style.color = '#' + theme.white; | |
| pageHeaderContainer.style.left = '0'; | |
| pageHeaderContainer.style.right = '0'; | |
| pageHeaderContainer.style.padding = '1rem 1.5rem'; | |
| pageHeaderContainer.style.paddingLeft = 'max(1.5rem, env(safe-area-inset-left))'; | |
| pageHeaderContainer.style.paddingRight = 'max(1.5rem, env(safe-area-inset-right))'; | |
| pageHeaderContainer.style.position = 'fixed'; | |
| pageHeaderContainer.style.top = props.topOffset || '0'; | |
| const title = document.createElement('h3'); | |
| title.innerText = props.title; | |
| title.style.color = '#' + theme.red; | |
| title.style.fontSize = '1.125rem'; | |
| title.style.lineHeight = '1.3'; | |
| title.style.margin = '0'; | |
| pageHeaderContainer.appendChild(title); | |
| if (props.message) { | |
| title.style.margin = '0 0 0.5rem'; | |
| const message = document.createElement('span'); | |
| message.innerText = props.message; | |
| message.style.color = '#' + theme.white; | |
| message.style.wordBreak = 'break-word'; | |
| pageHeaderContainer.appendChild(message); | |
| } | |
| root.appendChild(pageHeaderContainer); | |
| // This has to run after appending elements to root | |
| // because we need to actual mounted height. | |
| Spacer(document, root, { | |
| space: pageHeaderContainer.offsetHeight.toString(10), | |
| }); | |
| } | |
| module.exports = PageHeader; | |