@redocly/theme 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export interface LastUpdatedProps {
3
+ lastModified: string | Date;
4
+ }
5
+ export declare function LastUpdated({ lastModified }: LastUpdatedProps): JSX.Element | null;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.LastUpdated = void 0;
11
+ var react_1 = __importDefault(require("react"));
12
+ var styled_components_1 = __importDefault(require("styled-components"));
13
+ var timeago_js_1 = require("timeago.js");
14
+ var hooks_1 = require("../mocks/hooks");
15
+ var constants_1 = require("../mocks/constants");
16
+ function LastUpdated(_a) {
17
+ var lastModified = _a.lastModified;
18
+ var lastUpdatedBlock = (0, hooks_1.useThemeSettings)(constants_1.DEFAULT_THEME_NAME).lastUpdatedBlock;
19
+ if (lastUpdatedBlock === null || lastUpdatedBlock === void 0 ? void 0 : lastUpdatedBlock.hide) {
20
+ return null;
21
+ }
22
+ return (react_1.default.createElement(Wrapper, { "data-component-name": "LastUpdated/LastUpdated" },
23
+ "Last updated ",
24
+ (0, timeago_js_1.format)(lastModified)));
25
+ }
26
+ exports.LastUpdated = LastUpdated;
27
+ var Wrapper = styled_components_1.default.time(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n color: var(--last-updated-text-color);\n font-size: var(--last-updated-font-size);\n font-family: var(--last-updated-font-family);\n line-height: var(--last-updated-line-height);\n padding-bottom: 20px;\n"], ["\n color: var(--last-updated-text-color);\n font-size: var(--last-updated-font-size);\n font-family: var(--last-updated-font-family);\n line-height: var(--last-updated-line-height);\n padding-bottom: 20px;\n"])));
28
+ var templateObject_1;
@@ -3,9 +3,10 @@ import { PanelHeaderProps } from '../Panel/PanelHeader';
3
3
  export interface PanelComponentProps {
4
4
  expanded?: boolean;
5
5
  className?: string;
6
+ renderChildrenHidden?: boolean;
6
7
  header?: ReactNode | ((props: PanelHeaderProps) => ReactNode);
7
8
  onToggle?: (expanded: boolean) => void;
8
9
  description?: React.ReactNode;
9
10
  }
10
- export declare function PanelComponent({ expanded, header, className, children, onToggle, description, }: PropsWithChildren<PanelComponentProps>): JSX.Element;
11
+ export declare function PanelComponent({ expanded, renderChildrenHidden, header, className, children, onToggle, description, }: PropsWithChildren<PanelComponentProps>): JSX.Element;
11
12
  export declare const InlineBox: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -54,9 +54,9 @@ var PanelBody_1 = require("../Panel/PanelBody");
54
54
  var PanelHeader_1 = require("../Panel/PanelHeader");
55
55
  var PanelHeaderTitle_1 = require("../Panel/PanelHeaderTitle");
56
56
  function PanelComponent(_a) {
57
- var _b = _a.expanded, expanded = _b === void 0 ? true : _b, header = _a.header, className = _a.className, children = _a.children, onToggle = _a.onToggle, description = _a.description;
58
- var _c = __read((0, react_1.useState)(expanded), 2), isExpanded = _c[0], setExpanded = _c[1];
59
- var _d = __read((0, react_1.useState)(false), 2), animate = _d[0], setAnimate = _d[1];
57
+ var _b = _a.expanded, expanded = _b === void 0 ? true : _b, _c = _a.renderChildrenHidden, renderChildrenHidden = _c === void 0 ? false : _c, header = _a.header, className = _a.className, children = _a.children, onToggle = _a.onToggle, description = _a.description;
58
+ var _d = __read((0, react_1.useState)(expanded), 2), isExpanded = _d[0], setExpanded = _d[1];
59
+ var _e = __read((0, react_1.useState)(false), 2), animate = _e[0], setAnimate = _e[1];
60
60
  var toggle = function (_a) {
61
61
  var target = _a.target;
62
62
  if (target instanceof HTMLAnchorElement)
@@ -73,7 +73,7 @@ function PanelComponent(_a) {
73
73
  react_1.default.createElement(PanelHeaderTitle_1.PanelHeaderTitle, { "data-cy": "title" }, header),
74
74
  react_1.default.createElement(icons_1.ShelfIcon, { direction: isExpanded ? 'down' : 'right' }),
75
75
  description)))),
76
- isExpanded && (react_1.default.createElement(PanelBody_1.PanelBody, { "data-cy": "panel-body", hidden: !isExpanded, animate: animate }, children))));
76
+ (isExpanded || renderChildrenHidden) && (react_1.default.createElement(PanelBody_1.PanelBody, { "data-cy": "panel-body", hidden: !isExpanded, animate: animate }, children))));
77
77
  }
78
78
  exports.PanelComponent = PanelComponent;
79
79
  exports.InlineBox = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n"], ["\n display: inline-flex;\n align-items: center;\n"])));
package/globalStyle.js CHANGED
@@ -30,7 +30,8 @@ var inputs = (0, styled_components_1.css)(templateObject_21 || (templateObject_2
30
30
  var markdown = (0, styled_components_1.css)(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n /**\n * @tokens Markdown Container\n */\n\n --md-container-max-width: 910px;\n --md-container-padding-vertical: 25px; // @presenter Spacing\n --md-container-padding-horizontal: 0px; // @presenter Spacing\n\n /**\n * @tokens Markdown Blockquote\n */\n\n --md-blockquote-margin-vertical: 1.5em; // @presenter Spacing\n --md-blockquote-margin-horizontal: 0; // @presenter Spacing\n --md-blockquote-padding-vertical: 0; // @presenter Spacing\n --md-blockquote-padding-horizontal: calc(var(--spacing-unit) * 4); // @presenter Spacing\n --md-blockquote-border-color: var(--border-color); // @presenter Color\n --md-blockquote-background-color: transparent; // @presenter Color\n --md-blockquote-border-left: 4px solid var(--md-blockquote-border-color); // @presenter Border\n --md-blockquote-text-color: var(--text-color); // @presenter Color\n --md-blockquote-box-shadow: none; // @presenter Shadow\n\n /** \n * @tokens Markdown Paragraph\n */\n\n --md-paragraph-margin-vertical: 10px; // @presenter Spacing\n --md-paragraph-margin-horizontal: 0px; // @presenter Spacing\n\n /**\n * @tokens Markdown Table\n */\n\n --md-table-font-size: 14px; // @presenter FontSize\n --md-table-margin-vertical: 20px; // @presenter Spacing\n --md-table-background-color: transparent; // @presenter Color\n\n --md-table-border-radius: var(--border-radius-lg); // @presenter BorderRadius\n --md-table-border-width: 1px;\n --md-table-border-color: var(--border-color); // @presenter Color\n\n --md-table-stripe-background-color: var(--md-table-background-color); // @presenter Color\n\n --md-table-cell-text-color: var(--text-color); // @presenter Color\n --md-table-cell-padding: 12px; // @presenter Spacing\n\n --md-table-head-background-color: var(--color-secondary-200); // @presenter Color\n --md-table-head-text-color: var(--text-color); // @presenter Color\n --md-table-head-font-weight: var(--font-weight-bold); // @presenter FontWeight\n\n /**\n * @tokens Markdown Horizontal Rule\n */\n\n --md-hr-background-color: transparent; // @presenter Color\n --md-hr-border-color: var(--border-color); // @presenter Color\n --md-hr-height: unset;\n --md-hr-margin-vertical: 20px; // @presenter Spacing\n\n /** \n * @tokens Markdown List\n */\n\n --md-list-left-padding: 2rem; // @presenter Spacing\n --md-list-margin: 1rem; // @presenter Spacing\n --md-list-item-margin: 0.25rem; // @presenter Spacing\n --md-list-item-style: inherit;\n\n /** \n * @tokens Markdown Numbered List\n */\n\n --md-numbered-list-number-display: none;\n --md-numbered-list-item-style: var(--md-list-item-style);\n --md-numbered-list-number-text-color: var(--color-secondary-100); // @presenter Color\n --md-numbered-list-number-font-size: var(--font-size-base); // @presenter FontSize\n --md-numbered-list-number-font-family: var(--font-size-base); // @presenter FontFamily\n --md-numbered-list-number-font-weight: var(--font-weight-regular); // @presenter FontWeight\n --md-numbered-list-number-background-color: var(--color-secondary-800); // @presenter Color\n --md-numbered-list-number-border-radius: 10px; // @presenter BorderRadius\n --md-numbered-list-number-margin-right: 5px; // @presenter Spacing\n --md-numbered-list-number-padding: 0 5px; // @presenter Spacing\n\n // @tokens End\n"], ["\n /**\n * @tokens Markdown Container\n */\n\n --md-container-max-width: 910px;\n --md-container-padding-vertical: 25px; // @presenter Spacing\n --md-container-padding-horizontal: 0px; // @presenter Spacing\n\n /**\n * @tokens Markdown Blockquote\n */\n\n --md-blockquote-margin-vertical: 1.5em; // @presenter Spacing\n --md-blockquote-margin-horizontal: 0; // @presenter Spacing\n --md-blockquote-padding-vertical: 0; // @presenter Spacing\n --md-blockquote-padding-horizontal: calc(var(--spacing-unit) * 4); // @presenter Spacing\n --md-blockquote-border-color: var(--border-color); // @presenter Color\n --md-blockquote-background-color: transparent; // @presenter Color\n --md-blockquote-border-left: 4px solid var(--md-blockquote-border-color); // @presenter Border\n --md-blockquote-text-color: var(--text-color); // @presenter Color\n --md-blockquote-box-shadow: none; // @presenter Shadow\n\n /** \n * @tokens Markdown Paragraph\n */\n\n --md-paragraph-margin-vertical: 10px; // @presenter Spacing\n --md-paragraph-margin-horizontal: 0px; // @presenter Spacing\n\n /**\n * @tokens Markdown Table\n */\n\n --md-table-font-size: 14px; // @presenter FontSize\n --md-table-margin-vertical: 20px; // @presenter Spacing\n --md-table-background-color: transparent; // @presenter Color\n\n --md-table-border-radius: var(--border-radius-lg); // @presenter BorderRadius\n --md-table-border-width: 1px;\n --md-table-border-color: var(--border-color); // @presenter Color\n\n --md-table-stripe-background-color: var(--md-table-background-color); // @presenter Color\n\n --md-table-cell-text-color: var(--text-color); // @presenter Color\n --md-table-cell-padding: 12px; // @presenter Spacing\n\n --md-table-head-background-color: var(--color-secondary-200); // @presenter Color\n --md-table-head-text-color: var(--text-color); // @presenter Color\n --md-table-head-font-weight: var(--font-weight-bold); // @presenter FontWeight\n\n /**\n * @tokens Markdown Horizontal Rule\n */\n\n --md-hr-background-color: transparent; // @presenter Color\n --md-hr-border-color: var(--border-color); // @presenter Color\n --md-hr-height: unset;\n --md-hr-margin-vertical: 20px; // @presenter Spacing\n\n /** \n * @tokens Markdown List\n */\n\n --md-list-left-padding: 2rem; // @presenter Spacing\n --md-list-margin: 1rem; // @presenter Spacing\n --md-list-item-margin: 0.25rem; // @presenter Spacing\n --md-list-item-style: inherit;\n\n /** \n * @tokens Markdown Numbered List\n */\n\n --md-numbered-list-number-display: none;\n --md-numbered-list-item-style: var(--md-list-item-style);\n --md-numbered-list-number-text-color: var(--color-secondary-100); // @presenter Color\n --md-numbered-list-number-font-size: var(--font-size-base); // @presenter FontSize\n --md-numbered-list-number-font-family: var(--font-size-base); // @presenter FontFamily\n --md-numbered-list-number-font-weight: var(--font-weight-regular); // @presenter FontWeight\n --md-numbered-list-number-background-color: var(--color-secondary-800); // @presenter Color\n --md-numbered-list-number-border-radius: 10px; // @presenter BorderRadius\n --md-numbered-list-number-margin-right: 5px; // @presenter Spacing\n --md-numbered-list-number-padding: 0 5px; // @presenter Spacing\n\n // @tokens End\n"])));
31
31
  var search = (0, styled_components_1.css)(templateObject_23 || (templateObject_23 = __makeTemplateObject(["\n /**\n * @tokens Search\n */\n\n --search-highlight-text-color: #ffff03; // @presenter Color\n\n /**\n * @tokens Portal Search\n */\n\n --search-input-background-color: rgba(255, 255, 255, 0.1); // @presenter Color\n --search-input-text-color: #fff; // @presenter Color\n\n --search-input-border: none;\n --search-input-border-radius: var(--border-radius); // @presenter BorderRadius\n --search-input-font-size: var(--navbar-item-font-size); // @presenter FontSize\n --search-input-font-family: var(--font-family-base); // @presenter FontFamily\n --search-input-line-height: 1.15em; // @presenter LineHeight\n\n --search-input-hover-background-color: rgba(255, 255, 255, 0.1); // @presenter Color\n --search-input-hover-border: none; // @presenter Color\n --search-input-placeholder-color: var(--search-input-text-color);\n\n --search-popover-background-color: #fff; // @presenter Color\n --search-popover-border-radius: var(--search-input-border-radius); // @presenter BorderRadius\n --search-popover-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12),\n 0 8px 10px -5px rgba(0, 0, 0, 0.4); // @presenter BoxShadow\n --search-popover-border: none;\n\n --search-item-padding: 8px 24px;\n --search-item-text-color: var(--text-color-secondary); // @presenter Color\n --search-item-title-text-color: var(--text-color); // @presenter Color\n --search-item-background-color: transparent; // @presenter Color\n --search-item-active-text-color: var(--text-color-secondary); // @presenter Color\n --search-item-active-title-text-color: var(--text-color); // @presenter Color\n --search-item-active-background-color: rgba(0, 68, 212, 0.1); // @presenter Color\n\n /**\n * @tokens Sidebar Search\n */\n\n --sidebar-search-button-background-color: transparent; // @presenter Color\n --sidebar-search-button-text-color: var(--text-color); // @presenter Color\n --sidebar-search-button-border: var(--border-color);\n --sidebar-search-button-border-radius: none; // @presenter BorderRadius\n --sidebar-search-button-font-size: var(--font-size-small); // @presenter FontSize\n --sidebar-search-button-font-family: var(--font-family-base); // @presenter FontFamily\n --sidebar-search-button-line-height: 1.15em; // @presenter LineHeight\n --sidebar-search-button-hover-background-color: transparent; // @presenter Color\n --sidebar-search-button-hover-border: var(--border-color); // @presenter Color\n --sidebar-search-button-active-background-color: transparent; // @presenter Color\n --sidebar-search-button-active-border: var(--border-color); // @presenter Color\n\n /**\n * @tokens Search results modal\n * @presenter Color\n */\n\n --search-modal-background: #fff;\n --search-modal-text-color: var(--text-color);\n --search-modal-border: none;\n --search-modal-box-shadow: none;\n\n --search-modal-header-border-radius: 8px;\n --search-modal-header-background-color: var(--color-secondary-100);\n --search-modal-clear-button-background-color: var(--color-secondary-300);\n --search-modal-clear-button-hover-background-color: var(--color-secondary-500);\n\n // @tokens End\n"], ["\n /**\n * @tokens Search\n */\n\n --search-highlight-text-color: #ffff03; // @presenter Color\n\n /**\n * @tokens Portal Search\n */\n\n --search-input-background-color: rgba(255, 255, 255, 0.1); // @presenter Color\n --search-input-text-color: #fff; // @presenter Color\n\n --search-input-border: none;\n --search-input-border-radius: var(--border-radius); // @presenter BorderRadius\n --search-input-font-size: var(--navbar-item-font-size); // @presenter FontSize\n --search-input-font-family: var(--font-family-base); // @presenter FontFamily\n --search-input-line-height: 1.15em; // @presenter LineHeight\n\n --search-input-hover-background-color: rgba(255, 255, 255, 0.1); // @presenter Color\n --search-input-hover-border: none; // @presenter Color\n --search-input-placeholder-color: var(--search-input-text-color);\n\n --search-popover-background-color: #fff; // @presenter Color\n --search-popover-border-radius: var(--search-input-border-radius); // @presenter BorderRadius\n --search-popover-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12),\n 0 8px 10px -5px rgba(0, 0, 0, 0.4); // @presenter BoxShadow\n --search-popover-border: none;\n\n --search-item-padding: 8px 24px;\n --search-item-text-color: var(--text-color-secondary); // @presenter Color\n --search-item-title-text-color: var(--text-color); // @presenter Color\n --search-item-background-color: transparent; // @presenter Color\n --search-item-active-text-color: var(--text-color-secondary); // @presenter Color\n --search-item-active-title-text-color: var(--text-color); // @presenter Color\n --search-item-active-background-color: rgba(0, 68, 212, 0.1); // @presenter Color\n\n /**\n * @tokens Sidebar Search\n */\n\n --sidebar-search-button-background-color: transparent; // @presenter Color\n --sidebar-search-button-text-color: var(--text-color); // @presenter Color\n --sidebar-search-button-border: var(--border-color);\n --sidebar-search-button-border-radius: none; // @presenter BorderRadius\n --sidebar-search-button-font-size: var(--font-size-small); // @presenter FontSize\n --sidebar-search-button-font-family: var(--font-family-base); // @presenter FontFamily\n --sidebar-search-button-line-height: 1.15em; // @presenter LineHeight\n --sidebar-search-button-hover-background-color: transparent; // @presenter Color\n --sidebar-search-button-hover-border: var(--border-color); // @presenter Color\n --sidebar-search-button-active-background-color: transparent; // @presenter Color\n --sidebar-search-button-active-border: var(--border-color); // @presenter Color\n\n /**\n * @tokens Search results modal\n * @presenter Color\n */\n\n --search-modal-background: #fff;\n --search-modal-text-color: var(--text-color);\n --search-modal-border: none;\n --search-modal-box-shadow: none;\n\n --search-modal-header-border-radius: 8px;\n --search-modal-header-background-color: var(--color-secondary-100);\n --search-modal-clear-button-background-color: var(--color-secondary-300);\n --search-modal-clear-button-hover-background-color: var(--color-secondary-500);\n\n // @tokens End\n"])));
32
32
  var dropdown = (0, styled_components_1.css)(templateObject_24 || (templateObject_24 = __makeTemplateObject(["\n --dropdown-font-size: 14px;\n --dropdown-text-color: var(--text-color);\n\n --dropdown-padding-vertical: 8px;\n --dropdown-padding-left: 10px;\n --dropdown-padding-right: 26px;\n --dropdown-padding: var(--dropdown-padding-vertical) var(--dropdown-padding-right)\n var(--dropdown-padding-vertical) var(--dropdown-padding-left);\n\n --dropdown-border: none;\n"], ["\n --dropdown-font-size: 14px;\n --dropdown-text-color: var(--text-color);\n\n --dropdown-padding-vertical: 8px;\n --dropdown-padding-left: 10px;\n --dropdown-padding-right: 26px;\n --dropdown-padding: var(--dropdown-padding-vertical) var(--dropdown-padding-right)\n var(--dropdown-padding-vertical) var(--dropdown-padding-left);\n\n --dropdown-border: none;\n"])));
33
- exports.darkMode = (0, styled_components_1.css)(templateObject_25 || (templateObject_25 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), baseDarkColors);
34
- exports.styles = (0, styled_components_1.css)(templateObject_26 || (templateObject_26 = __makeTemplateObject(["\n :root {\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n }\n\n :root.dark {\n ", ";\n }\n"], ["\n :root {\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n }\n\n :root.dark {\n ", ";\n }\n"])), baseColors, httpColors, responsePanelColors, typography, headingsTypography, common, admonition, buttons, sidebar, navbar, footer, logo, badges, toc, inputs, tooltip, code, links, markdown, search, dropdown, apiReferencePanels, apiReferenceDocs, exports.darkMode);
35
- exports.GlobalStyle = (0, styled_components_1.createGlobalStyle)(templateObject_27 || (templateObject_27 = __makeTemplateObject(["\n ", ";\n"], ["\n ", ";\n"])), exports.styles);
36
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27;
33
+ var lastUpdated = (0, styled_components_1.css)(templateObject_25 || (templateObject_25 = __makeTemplateObject(["\n --last-updated-text-color: var(--text-color);\n --last-updated-font-size: var(--font-size-small);\n --last-updated-font-family: var(--font-family-base);\n --last-updated-line-height: var(--line-height-base);\n"], ["\n --last-updated-text-color: var(--text-color);\n --last-updated-font-size: var(--font-size-small);\n --last-updated-font-family: var(--font-family-base);\n --last-updated-line-height: var(--line-height-base);\n"])));
34
+ exports.darkMode = (0, styled_components_1.css)(templateObject_26 || (templateObject_26 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), baseDarkColors);
35
+ exports.styles = (0, styled_components_1.css)(templateObject_27 || (templateObject_27 = __makeTemplateObject(["\n :root {\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n }\n\n :root.dark {\n ", ";\n }\n"], ["\n :root {\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n }\n\n :root.dark {\n ", ";\n }\n"])), baseColors, httpColors, responsePanelColors, typography, headingsTypography, common, admonition, buttons, sidebar, navbar, footer, logo, badges, toc, inputs, tooltip, code, links, markdown, search, dropdown, apiReferencePanels, apiReferenceDocs, lastUpdated, exports.darkMode);
36
+ exports.GlobalStyle = (0, styled_components_1.createGlobalStyle)(templateObject_28 || (templateObject_28 = __makeTemplateObject(["\n ", ";\n"], ["\n ", ";\n"])), exports.styles);
37
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/theme",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Shared UI components",
5
5
  "author": "team@redocly.com",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import styled from 'styled-components';
3
+ import { format } from 'timeago.js';
4
+
5
+ import { useThemeSettings } from '@portal/hooks';
6
+ import { DEFAULT_THEME_NAME } from '@portal/constants';
7
+
8
+ export interface LastUpdatedProps {
9
+ lastModified: string | Date;
10
+ }
11
+
12
+ export function LastUpdated({ lastModified }: LastUpdatedProps): JSX.Element | null {
13
+ const { lastUpdatedBlock } = useThemeSettings(DEFAULT_THEME_NAME);
14
+
15
+ if (lastUpdatedBlock?.hide) {
16
+ return null;
17
+ }
18
+
19
+ return (
20
+ <Wrapper data-component-name="LastUpdated/LastUpdated">
21
+ Last updated {format(lastModified)}
22
+ </Wrapper>
23
+ );
24
+ }
25
+
26
+ const Wrapper = styled.time`
27
+ color: var(--last-updated-text-color);
28
+ font-size: var(--last-updated-font-size);
29
+ font-family: var(--last-updated-font-family);
30
+ line-height: var(--last-updated-line-height);
31
+ padding-bottom: 20px;
32
+ `;
@@ -15,6 +15,7 @@ import { PanelHeaderTitle } from '@theme/Panel/PanelHeaderTitle';
15
15
  export interface PanelComponentProps {
16
16
  expanded?: boolean;
17
17
  className?: string;
18
+ renderChildrenHidden?: boolean;
18
19
  header?: ReactNode | ((props: PanelHeaderProps) => ReactNode);
19
20
  onToggle?: (expanded: boolean) => void;
20
21
  description?: React.ReactNode;
@@ -22,6 +23,7 @@ export interface PanelComponentProps {
22
23
 
23
24
  export function PanelComponent({
24
25
  expanded = true,
26
+ renderChildrenHidden = false,
25
27
  header,
26
28
  className,
27
29
  children,
@@ -61,7 +63,7 @@ export function PanelComponent({
61
63
  </PanelHeader>
62
64
  ))}
63
65
 
64
- {isExpanded && (
66
+ {(isExpanded || renderChildrenHidden) && (
65
67
  <PanelBody data-cy="panel-body" hidden={!isExpanded} animate={animate}>
66
68
  {children}
67
69
  </PanelBody>
@@ -1846,6 +1846,13 @@ const dropdown = css`
1846
1846
  --dropdown-border: none;
1847
1847
  `;
1848
1848
 
1849
+ const lastUpdated = css`
1850
+ --last-updated-text-color: var(--text-color);
1851
+ --last-updated-font-size: var(--font-size-small);
1852
+ --last-updated-font-family: var(--font-family-base);
1853
+ --last-updated-line-height: var(--line-height-base);
1854
+ `;
1855
+
1849
1856
  export const darkMode = css`
1850
1857
  ${baseDarkColors}
1851
1858
  `;
@@ -1875,6 +1882,7 @@ export const styles = css`
1875
1882
  ${dropdown}
1876
1883
  ${apiReferencePanels}
1877
1884
  ${apiReferenceDocs}
1885
+ ${lastUpdated}
1878
1886
  }
1879
1887
 
1880
1888
  :root.dark {
package/src/settings.yaml CHANGED
@@ -23,3 +23,5 @@ colorMode:
23
23
  modes:
24
24
  - 'light'
25
25
  - 'dark'
26
+ lastUpdatedBlock:
27
+ hide: false