@teambit/docs 0.0.951 → 0.0.952
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.
- package/dist/docs.ui.runtime.js +1 -4
- package/dist/docs.ui.runtime.js.map +1 -1
- package/dist/overview/overview.js +32 -3
- package/dist/overview/overview.js.map +1 -1
- package/dist/overview/overview.module.scss +49 -0
- package/dist/overview/readme-skeleton.d.ts +2 -0
- package/dist/overview/readme-skeleton.js +61 -0
- package/dist/overview/readme-skeleton.js.map +1 -0
- package/dist/{preview-1672802758290.js → preview-1672889151191.js} +2 -2
- package/docs.ui.runtime.tsx +1 -4
- package/overview/overview.module.scss +49 -0
- package/overview/overview.tsx +33 -11
- package/overview/readme-skeleton.tsx +19 -0
- package/package-tar/teambit-docs-0.0.952.tgz +0 -0
- package/package.json +23 -20
- package/package-tar/teambit-docs-0.0.951.tgz +0 -0
package/dist/docs.ui.runtime.js
CHANGED
|
@@ -115,10 +115,7 @@ class DocsUI {
|
|
|
115
115
|
const compareSection = new (_docsUi2().OverviewCompareSection)(docs);
|
|
116
116
|
component.registerRoute(section.route);
|
|
117
117
|
component.registerNavigation(section.navigationLink, section.order);
|
|
118
|
-
componentCompare.registerNavigation(
|
|
119
|
-
props: compareSection.navigationLink,
|
|
120
|
-
order: compareSection.navigationLink.order
|
|
121
|
-
});
|
|
118
|
+
componentCompare.registerNavigation(compareSection);
|
|
122
119
|
componentCompare.registerRoutes([compareSection.route]);
|
|
123
120
|
return docs;
|
|
124
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DocsUI","constructor","titleBadgeSlot","registerTitleBadge","titleBadges","badges","Array","isArray","register","listTitleBadges","flatten","values","getDocsCompare","provider","component","componentCompare","config","docs","section","OverviewSection","compareSection","OverviewCompareSection","registerRoute","route","registerNavigation","navigationLink","order","
|
|
1
|
+
{"version":3,"names":["DocsUI","constructor","titleBadgeSlot","registerTitleBadge","titleBadges","badges","Array","isArray","register","listTitleBadges","flatten","values","getDocsCompare","provider","component","componentCompare","config","docs","section","OverviewSection","compareSection","OverviewCompareSection","registerRoute","route","registerNavigation","navigationLink","order","registerRoutes","ComponentAspect","ComponentCompareAspect","UIRuntime","Slot","withType","DocsAspect","addRuntime"],"sources":["docs.ui.runtime.tsx"],"sourcesContent":["import React from 'react';\nimport { flatten } from 'lodash';\nimport { ComponentAspect, ComponentUI } from '@teambit/component';\nimport { Slot } from '@teambit/harmony';\nimport { UIRuntime } from '@teambit/ui';\nimport ComponentCompareAspect, { ComponentCompareUI } from '@teambit/component-compare';\nimport { OverviewCompare } from '@teambit/docs.ui.overview-compare';\nimport { OverviewCompareSection } from '@teambit/docs.ui.overview-compare-section';\nimport { DocsAspect } from './docs.aspect';\nimport { OverviewSection } from './overview.section';\nimport type { TitleBadgeSlot, TitleBadge } from './overview';\n\nexport class DocsUI {\n constructor(readonly titleBadgeSlot: TitleBadgeSlot) {}\n\n /**\n * register a new title badge into the overview section of a component.\n */\n registerTitleBadge(titleBadges: TitleBadge | TitleBadge[]) {\n const badges = Array.isArray(titleBadges) ? titleBadges : [titleBadges];\n this.titleBadgeSlot.register(badges);\n return this;\n }\n\n /**\n * list all title badges registered.\n */\n listTitleBadges() {\n return flatten(this.titleBadgeSlot.values());\n }\n\n getDocsCompare() {\n return <OverviewCompare titleBadges={this.titleBadgeSlot} />;\n }\n\n static dependencies = [ComponentAspect, ComponentCompareAspect];\n\n static runtime = UIRuntime;\n\n static slots = [Slot.withType<TitleBadge>()];\n\n static async provider(\n [component, componentCompare]: [ComponentUI, ComponentCompareUI],\n config,\n [titleBadgeSlot]: [TitleBadgeSlot]\n ) {\n const docs = new DocsUI(titleBadgeSlot);\n const section = new OverviewSection(titleBadgeSlot);\n const compareSection = new OverviewCompareSection(docs);\n\n component.registerRoute(section.route);\n component.registerNavigation(section.navigationLink, section.order);\n componentCompare.registerNavigation(compareSection);\n componentCompare.registerRoutes([compareSection.route]);\n return docs;\n }\n}\n\nexport default DocsUI;\n\nDocsAspect.addRuntime(DocsUI);\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGO,MAAMA,MAAM,CAAC;EAClBC,WAAW,CAAUC,cAA8B,EAAE;IAAA,KAAhCA,cAA8B,GAA9BA,cAA8B;EAAG;;EAEtD;AACF;AACA;EACEC,kBAAkB,CAACC,WAAsC,EAAE;IACzD,MAAMC,MAAM,GAAGC,KAAK,CAACC,OAAO,CAACH,WAAW,CAAC,GAAGA,WAAW,GAAG,CAACA,WAAW,CAAC;IACvE,IAAI,CAACF,cAAc,CAACM,QAAQ,CAACH,MAAM,CAAC;IACpC,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEI,eAAe,GAAG;IAChB,OAAO,IAAAC,iBAAO,EAAC,IAAI,CAACR,cAAc,CAACS,MAAM,EAAE,CAAC;EAC9C;EAEAC,cAAc,GAAG;IACf,oBAAO,+BAAC,yBAAe;MAAC,WAAW,EAAE,IAAI,CAACV;IAAe,EAAG;EAC9D;EAQA,aAAaW,QAAQ,CACnB,CAACC,SAAS,EAAEC,gBAAgB,CAAoC,EAChEC,MAAM,EACN,CAACd,cAAc,CAAmB,EAClC;IACA,MAAMe,IAAI,GAAG,IAAIjB,MAAM,CAACE,cAAc,CAAC;IACvC,MAAMgB,OAAO,GAAG,KAAIC,2BAAe,EAACjB,cAAc,CAAC;IACnD,MAAMkB,cAAc,GAAG,KAAIC,iCAAsB,EAACJ,IAAI,CAAC;IAEvDH,SAAS,CAACQ,aAAa,CAACJ,OAAO,CAACK,KAAK,CAAC;IACtCT,SAAS,CAACU,kBAAkB,CAACN,OAAO,CAACO,cAAc,EAAEP,OAAO,CAACQ,KAAK,CAAC;IACnEX,gBAAgB,CAACS,kBAAkB,CAACJ,cAAc,CAAC;IACnDL,gBAAgB,CAACY,cAAc,CAAC,CAACP,cAAc,CAACG,KAAK,CAAC,CAAC;IACvD,OAAON,IAAI;EACb;AACF;AAAC;AAAA,gCA5CYjB,MAAM,kBAuBK,CAAC4B,4BAAe,EAAEC,2BAAsB,CAAC;AAAA,gCAvBpD7B,MAAM,aAyBA8B,eAAS;AAAA,gCAzBf9B,MAAM,WA2BF,CAAC+B,eAAI,CAACC,QAAQ,EAAc,CAAC;AAAA,eAmB/BhC,MAAM;AAAA;AAErBiC,kBAAU,CAACC,UAAU,CAAClC,MAAM,CAAC"}
|
|
@@ -29,6 +29,13 @@ function _lodash() {
|
|
|
29
29
|
};
|
|
30
30
|
return data;
|
|
31
31
|
}
|
|
32
|
+
function _reactUiDocs() {
|
|
33
|
+
const data = require("@teambit/react.ui.docs.properties-table");
|
|
34
|
+
_reactUiDocs = function () {
|
|
35
|
+
return data;
|
|
36
|
+
};
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
32
39
|
function _component() {
|
|
33
40
|
const data = require("@teambit/component");
|
|
34
41
|
_component = function () {
|
|
@@ -57,6 +64,13 @@ function _componentUi() {
|
|
|
57
64
|
};
|
|
58
65
|
return data;
|
|
59
66
|
}
|
|
67
|
+
function _compositionsPanels() {
|
|
68
|
+
const data = require("@teambit/compositions.panels.composition-gallery");
|
|
69
|
+
_compositionsPanels = function () {
|
|
70
|
+
return data;
|
|
71
|
+
};
|
|
72
|
+
return data;
|
|
73
|
+
}
|
|
60
74
|
function _overviewModule() {
|
|
61
75
|
const data = _interopRequireDefault(require("./overview.module.scss"));
|
|
62
76
|
_overviewModule = function () {
|
|
@@ -66,6 +80,9 @@ function _overviewModule() {
|
|
|
66
80
|
}
|
|
67
81
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
68
82
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
83
|
+
// import { Icon } from '@teambit/design.elements.icon';
|
|
84
|
+
// import { LinkedHeading } from '@teambit/documenter.ui.linked-heading';
|
|
85
|
+
// import { ReadmeSkeleton } from './readme-skeleton';
|
|
69
86
|
let BadgePosition;
|
|
70
87
|
exports.BadgePosition = BadgePosition;
|
|
71
88
|
(function (BadgePosition) {
|
|
@@ -77,10 +94,11 @@ exports.BadgePosition = BadgePosition;
|
|
|
77
94
|
function Overview({
|
|
78
95
|
titleBadges
|
|
79
96
|
}) {
|
|
80
|
-
var _component$preview, _component$preview2;
|
|
97
|
+
var _component$preview, _component$preview2, _component$preview3, _component$preview4, _component$preview5;
|
|
81
98
|
const component = (0, _react().useContext)(_component().ComponentContext);
|
|
82
99
|
const componentDescriptor = (0, _component().useComponentDescriptor)();
|
|
83
100
|
const showHeader = !((_component$preview = component.preview) !== null && _component$preview !== void 0 && _component$preview.legacyHeader);
|
|
101
|
+
const [isLoading, setLoading] = (0, _react().useState)(true);
|
|
84
102
|
if ((component === null || component === void 0 ? void 0 : component.buildStatus) === 'pending' && (component === null || component === void 0 ? void 0 : component.host) === 'teambit.scope/scope') return /*#__PURE__*/_react().default.createElement(_designUiSurfaces().StatusMessageCard, {
|
|
85
103
|
style: {
|
|
86
104
|
margin: 'auto'
|
|
@@ -96,6 +114,7 @@ function Overview({
|
|
|
96
114
|
title: "failed to get component preview "
|
|
97
115
|
});
|
|
98
116
|
const isScaling = (_component$preview2 = component.preview) === null || _component$preview2 === void 0 ? void 0 : _component$preview2.isScaling;
|
|
117
|
+
const iframeQueryParams = `skipIncludes=${((_component$preview3 = component.preview) === null || _component$preview3 === void 0 ? void 0 : _component$preview3.skipIncludes) || 'false'}`;
|
|
99
118
|
return /*#__PURE__*/_react().default.createElement("div", {
|
|
100
119
|
className: _overviewModule().default.overviewWrapper
|
|
101
120
|
}, showHeader && /*#__PURE__*/_react().default.createElement(_componentUi().ComponentOverview, {
|
|
@@ -108,7 +127,10 @@ function Overview({
|
|
|
108
127
|
titleBadges: (0, _lodash().flatten)(titleBadges.values()),
|
|
109
128
|
componentDescriptor: componentDescriptor,
|
|
110
129
|
component: component
|
|
111
|
-
}), /*#__PURE__*/_react().default.createElement(
|
|
130
|
+
}), /*#__PURE__*/_react().default.createElement("div", {
|
|
131
|
+
className: _overviewModule().default.readme
|
|
132
|
+
}, /*#__PURE__*/_react().default.createElement(_previewUi().ComponentPreview, {
|
|
133
|
+
onLoad: () => setLoading(false),
|
|
112
134
|
component: component,
|
|
113
135
|
style: {
|
|
114
136
|
width: '100%',
|
|
@@ -116,10 +138,17 @@ function Overview({
|
|
|
116
138
|
},
|
|
117
139
|
previewName: "overview",
|
|
118
140
|
pubsub: true,
|
|
141
|
+
queryParams: [iframeQueryParams],
|
|
119
142
|
viewport: null,
|
|
120
143
|
fullContentHeight: true,
|
|
121
144
|
scrolling: "no"
|
|
122
|
-
}))
|
|
145
|
+
}), ((_component$preview4 = component.preview) === null || _component$preview4 === void 0 ? void 0 : _component$preview4.skipIncludes) && /*#__PURE__*/_react().default.createElement(_compositionsPanels().CompositionGallery, {
|
|
146
|
+
isLoading: isLoading,
|
|
147
|
+
component: component
|
|
148
|
+
}), ((_component$preview5 = component.preview) === null || _component$preview5 === void 0 ? void 0 : _component$preview5.skipIncludes) && /*#__PURE__*/_react().default.createElement(_reactUiDocs().PropertiesTable, {
|
|
149
|
+
className: _overviewModule().default.overviewPropsTable,
|
|
150
|
+
componentId: component.id.toString()
|
|
151
|
+
})));
|
|
123
152
|
}
|
|
124
153
|
|
|
125
154
|
//# sourceMappingURL=overview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BadgePosition","Overview","titleBadges","component","useContext","ComponentContext","componentDescriptor","useComponentDescriptor","showHeader","preview","legacyHeader","buildStatus","host","margin","isScaling","styles","overviewWrapper","classNames","componentOverviewBlock","legacyPreview","displayName","version","description","labels","packageName","flatten","values","width","height"],"sources":["overview.tsx"],"sourcesContent":["import React, { useContext, ComponentType } from 'react';\nimport classNames from 'classnames';\nimport { flatten } from 'lodash';\nimport { ComponentContext, useComponentDescriptor } from '@teambit/component';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { ComponentPreview } from '@teambit/preview.ui.component-preview';\nimport { StatusMessageCard } from '@teambit/design.ui.surfaces.status-message-card';\nimport { ComponentOverview } from '@teambit/component.ui.component-meta';\n
|
|
1
|
+
{"version":3,"names":["BadgePosition","Overview","titleBadges","component","useContext","ComponentContext","componentDescriptor","useComponentDescriptor","showHeader","preview","legacyHeader","isLoading","setLoading","useState","buildStatus","host","margin","isScaling","iframeQueryParams","skipIncludes","styles","overviewWrapper","classNames","componentOverviewBlock","legacyPreview","displayName","version","description","labels","packageName","flatten","values","readme","width","height","overviewPropsTable","id","toString"],"sources":["overview.tsx"],"sourcesContent":["import React, { useContext, ComponentType, useState } from 'react';\nimport classNames from 'classnames';\nimport { flatten } from 'lodash';\n// import { Icon } from '@teambit/design.elements.icon';\nimport { PropertiesTable } from '@teambit/react.ui.docs.properties-table';\n// import { LinkedHeading } from '@teambit/documenter.ui.linked-heading';\nimport { ComponentContext, useComponentDescriptor } from '@teambit/component';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport { ComponentPreview } from '@teambit/preview.ui.component-preview';\nimport { StatusMessageCard } from '@teambit/design.ui.surfaces.status-message-card';\nimport { ComponentOverview } from '@teambit/component.ui.component-meta';\nimport { CompositionGallery } from '@teambit/compositions.panels.composition-gallery';\n// import { ReadmeSkeleton } from './readme-skeleton';\nimport styles from './overview.module.scss';\n\nexport enum BadgePosition {\n Title,\n SubTitle,\n Labels,\n Package,\n}\n\nexport type TitleBadge = {\n component: ComponentType<any>;\n weight?: number;\n position?: BadgePosition;\n};\n\nexport type TitleBadgeSlot = SlotRegistry<TitleBadge[]>;\n\nexport type OverviewProps = {\n titleBadges: TitleBadgeSlot;\n};\n\nexport function Overview({ titleBadges }: OverviewProps) {\n const component = useContext(ComponentContext);\n const componentDescriptor = useComponentDescriptor();\n\n const showHeader = !component.preview?.legacyHeader;\n const [isLoading, setLoading] = useState(true);\n\n if (component?.buildStatus === 'pending' && component?.host === 'teambit.scope/scope')\n return (\n <StatusMessageCard style={{ margin: 'auto' }} status=\"PROCESSING\" title=\"component preview pending\">\n this might take some time\n </StatusMessageCard>\n );\n\n if (component?.buildStatus === 'failed' && component?.host === 'teambit.scope/scope')\n return <StatusMessageCard style={{ margin: 'auto' }} status=\"FAILURE\" title=\"failed to get component preview \" />;\n\n const isScaling = component.preview?.isScaling;\n\n const iframeQueryParams = `skipIncludes=${component.preview?.skipIncludes || 'false'}`;\n\n return (\n <div className={styles.overviewWrapper}>\n {showHeader && (\n <ComponentOverview\n className={classNames(styles.componentOverviewBlock, !isScaling && styles.legacyPreview)}\n displayName={component.displayName}\n version={component.version}\n abstract={component.description}\n labels={component.labels}\n packageName={component.packageName}\n titleBadges={flatten(titleBadges.values())}\n componentDescriptor={componentDescriptor}\n component={component}\n />\n )}\n\n {/* TODO - @oded replace with new panel card same for compositions. */}\n\n {/* <LinkedHeading size=\"xs\" className={styles.title}>\n <Icon of=\"text\" /> <span>README</span>\n </LinkedHeading> */}\n <div className={styles.readme}>\n {/* {isLoading && <ReadmeSkeleton />} */}\n <ComponentPreview\n onLoad={() => setLoading(false)}\n component={component}\n style={{ width: '100%', height: '100%' }}\n previewName=\"overview\"\n pubsub={true}\n queryParams={[iframeQueryParams]}\n viewport={null}\n fullContentHeight\n scrolling=\"no\"\n />\n {component.preview?.skipIncludes && <CompositionGallery isLoading={isLoading} component={component} />}\n {component.preview?.skipIncludes && (\n <PropertiesTable className={styles.overviewPropsTable} componentId={component.id.toString()} />\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -8,8 +8,57 @@
|
|
|
8
8
|
margin-bottom: 0;
|
|
9
9
|
// TODO: talk with oded.
|
|
10
10
|
}
|
|
11
|
+
|
|
12
|
+
.title {
|
|
13
|
+
position: relative;
|
|
14
|
+
z-index: 1;
|
|
15
|
+
padding-top: 24px;
|
|
16
|
+
margin-bottom: 0;
|
|
17
|
+
padding-left: 40px;
|
|
18
|
+
> h3 {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
gap: 8px;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
11
24
|
}
|
|
12
25
|
|
|
13
26
|
.legacyPreview {
|
|
14
27
|
margin: 0 auto;
|
|
15
28
|
}
|
|
29
|
+
|
|
30
|
+
.compositions {
|
|
31
|
+
padding-left: 40px;
|
|
32
|
+
margin-top: 10px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// readme skeleton styles
|
|
36
|
+
.readme {
|
|
37
|
+
position: relative;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.readmeSkeleton {
|
|
41
|
+
position: absolute;
|
|
42
|
+
background-color: var(--background-color, #FFFFFF);
|
|
43
|
+
padding: 20px 40px 10px 40px;
|
|
44
|
+
max-width: 1440px;
|
|
45
|
+
width: 100%;
|
|
46
|
+
box-sizing: border-box;
|
|
47
|
+
// covers the content so that it doesnt flicker before the skeleton is removed
|
|
48
|
+
top: 0;
|
|
49
|
+
bottom: 0;
|
|
50
|
+
left: 0;
|
|
51
|
+
right: 0;
|
|
52
|
+
color: var(--border-medium-color, #ededed);
|
|
53
|
+
> * {
|
|
54
|
+
margin-bottom: 8px;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
.block {
|
|
58
|
+
width: 300px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.overviewPropsTable {
|
|
62
|
+
padding: 20px 40px 10px 40px;
|
|
63
|
+
|
|
64
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.ReadmeSkeleton = ReadmeSkeleton;
|
|
8
|
+
function _react() {
|
|
9
|
+
const data = _interopRequireDefault(require("react"));
|
|
10
|
+
_react = function () {
|
|
11
|
+
return data;
|
|
12
|
+
};
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
function _baseUiLoaders() {
|
|
16
|
+
const data = require("@teambit/base-ui.loaders.skeleton");
|
|
17
|
+
_baseUiLoaders = function () {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
function _overviewModule() {
|
|
23
|
+
const data = _interopRequireDefault(require("./overview.module.scss"));
|
|
24
|
+
_overviewModule = function () {
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
function ReadmeSkeleton() {
|
|
30
|
+
return /*#__PURE__*/_react().default.createElement("div", {
|
|
31
|
+
className: _overviewModule().default.readmeSkeleton
|
|
32
|
+
}, /*#__PURE__*/_react().default.createElement(_baseUiLoaders().LineSkeleton, {
|
|
33
|
+
width: "80%"
|
|
34
|
+
}), /*#__PURE__*/_react().default.createElement(_baseUiLoaders().LineSkeleton, {
|
|
35
|
+
width: "70%"
|
|
36
|
+
}), /*#__PURE__*/_react().default.createElement(_baseUiLoaders().LineSkeleton, {
|
|
37
|
+
width: "40%",
|
|
38
|
+
style: {
|
|
39
|
+
marginBottom: 40
|
|
40
|
+
}
|
|
41
|
+
}), /*#__PURE__*/_react().default.createElement(_baseUiLoaders().LineSkeleton, {
|
|
42
|
+
width: "30%",
|
|
43
|
+
style: {
|
|
44
|
+
marginBottom: 16
|
|
45
|
+
}
|
|
46
|
+
}), /*#__PURE__*/_react().default.createElement(_baseUiLoaders().BlockSkeleton, {
|
|
47
|
+
lines: 10,
|
|
48
|
+
style: {
|
|
49
|
+
width: '100%',
|
|
50
|
+
marginBottom: 40
|
|
51
|
+
}
|
|
52
|
+
}), /*#__PURE__*/_react().default.createElement(_baseUiLoaders().LineSkeleton, {
|
|
53
|
+
width: "80%"
|
|
54
|
+
}), /*#__PURE__*/_react().default.createElement(_baseUiLoaders().LineSkeleton, {
|
|
55
|
+
width: "40%"
|
|
56
|
+
}), /*#__PURE__*/_react().default.createElement(_baseUiLoaders().LineSkeleton, {
|
|
57
|
+
width: "25%"
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=readme-skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ReadmeSkeleton","styles","readmeSkeleton","marginBottom","width"],"sources":["readme-skeleton.tsx"],"sourcesContent":["import React from 'react';\nimport { LineSkeleton, BlockSkeleton } from '@teambit/base-ui.loaders.skeleton';\nimport styles from './overview.module.scss';\n\nexport function ReadmeSkeleton() {\n return (\n <div className={styles.readmeSkeleton}>\n <LineSkeleton width=\"80%\" />\n <LineSkeleton width=\"70%\" />\n <LineSkeleton width=\"40%\" style={{marginBottom: 40}} />\n\n <LineSkeleton width=\"30%\" style={{marginBottom: 16}} />\n <BlockSkeleton lines={10} style={{width: '100%', marginBottom: 40}} />\n <LineSkeleton width=\"80%\" />\n <LineSkeleton width=\"40%\" />\n <LineSkeleton width=\"25%\" />\n </div>\n );\n}\n"],"mappings":";;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,SAASA,cAAc,GAAG;EAC/B,oBACE;IAAK,SAAS,EAAEC,yBAAM,CAACC;EAAe,gBACpC,+BAAC,6BAAY;IAAC,KAAK,EAAC;EAAK,EAAG,eAC5B,+BAAC,6BAAY;IAAC,KAAK,EAAC;EAAK,EAAG,eAC5B,+BAAC,6BAAY;IAAC,KAAK,EAAC,KAAK;IAAC,KAAK,EAAE;MAACC,YAAY,EAAE;IAAE;EAAE,EAAG,eAEvD,+BAAC,6BAAY;IAAC,KAAK,EAAC,KAAK;IAAC,KAAK,EAAE;MAACA,YAAY,EAAE;IAAE;EAAE,EAAG,eACvD,+BAAC,8BAAa;IAAC,KAAK,EAAE,EAAG;IAAC,KAAK,EAAE;MAACC,KAAK,EAAE,MAAM;MAAED,YAAY,EAAE;IAAE;EAAE,EAAG,eACtE,+BAAC,6BAAY;IAAC,KAAK,EAAC;EAAK,EAAG,eAC5B,+BAAC,6BAAY;IAAC,KAAK,EAAC;EAAK,EAAG,eAC5B,+BAAC,6BAAY;IAAC,KAAK,EAAC;EAAK,EAAG,CACxB;AAEV"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.docs_docs@0.0.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.docs_docs@0.0.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.docs_docs@0.0.952/dist/docs.composition.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.docs_docs@0.0.952/dist/docs.docs.mdx';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
package/docs.ui.runtime.tsx
CHANGED
|
@@ -50,10 +50,7 @@ export class DocsUI {
|
|
|
50
50
|
|
|
51
51
|
component.registerRoute(section.route);
|
|
52
52
|
component.registerNavigation(section.navigationLink, section.order);
|
|
53
|
-
componentCompare.registerNavigation(
|
|
54
|
-
props: compareSection.navigationLink,
|
|
55
|
-
order: compareSection.navigationLink.order,
|
|
56
|
-
});
|
|
53
|
+
componentCompare.registerNavigation(compareSection);
|
|
57
54
|
componentCompare.registerRoutes([compareSection.route]);
|
|
58
55
|
return docs;
|
|
59
56
|
}
|
|
@@ -8,8 +8,57 @@
|
|
|
8
8
|
margin-bottom: 0;
|
|
9
9
|
// TODO: talk with oded.
|
|
10
10
|
}
|
|
11
|
+
|
|
12
|
+
.title {
|
|
13
|
+
position: relative;
|
|
14
|
+
z-index: 1;
|
|
15
|
+
padding-top: 24px;
|
|
16
|
+
margin-bottom: 0;
|
|
17
|
+
padding-left: 40px;
|
|
18
|
+
> h3 {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
gap: 8px;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
11
24
|
}
|
|
12
25
|
|
|
13
26
|
.legacyPreview {
|
|
14
27
|
margin: 0 auto;
|
|
15
28
|
}
|
|
29
|
+
|
|
30
|
+
.compositions {
|
|
31
|
+
padding-left: 40px;
|
|
32
|
+
margin-top: 10px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// readme skeleton styles
|
|
36
|
+
.readme {
|
|
37
|
+
position: relative;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.readmeSkeleton {
|
|
41
|
+
position: absolute;
|
|
42
|
+
background-color: var(--background-color, #FFFFFF);
|
|
43
|
+
padding: 20px 40px 10px 40px;
|
|
44
|
+
max-width: 1440px;
|
|
45
|
+
width: 100%;
|
|
46
|
+
box-sizing: border-box;
|
|
47
|
+
// covers the content so that it doesnt flicker before the skeleton is removed
|
|
48
|
+
top: 0;
|
|
49
|
+
bottom: 0;
|
|
50
|
+
left: 0;
|
|
51
|
+
right: 0;
|
|
52
|
+
color: var(--border-medium-color, #ededed);
|
|
53
|
+
> * {
|
|
54
|
+
margin-bottom: 8px;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
.block {
|
|
58
|
+
width: 300px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.overviewPropsTable {
|
|
62
|
+
padding: 20px 40px 10px 40px;
|
|
63
|
+
|
|
64
|
+
}
|
package/overview/overview.tsx
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import React, { useContext, ComponentType } from 'react';
|
|
1
|
+
import React, { useContext, ComponentType, useState } from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { flatten } from 'lodash';
|
|
4
|
+
// import { Icon } from '@teambit/design.elements.icon';
|
|
5
|
+
import { PropertiesTable } from '@teambit/react.ui.docs.properties-table';
|
|
6
|
+
// import { LinkedHeading } from '@teambit/documenter.ui.linked-heading';
|
|
4
7
|
import { ComponentContext, useComponentDescriptor } from '@teambit/component';
|
|
5
8
|
import type { SlotRegistry } from '@teambit/harmony';
|
|
6
9
|
import { ComponentPreview } from '@teambit/preview.ui.component-preview';
|
|
7
10
|
import { StatusMessageCard } from '@teambit/design.ui.surfaces.status-message-card';
|
|
8
11
|
import { ComponentOverview } from '@teambit/component.ui.component-meta';
|
|
9
|
-
|
|
12
|
+
import { CompositionGallery } from '@teambit/compositions.panels.composition-gallery';
|
|
13
|
+
// import { ReadmeSkeleton } from './readme-skeleton';
|
|
10
14
|
import styles from './overview.module.scss';
|
|
11
15
|
|
|
12
16
|
export enum BadgePosition {
|
|
@@ -33,6 +37,7 @@ export function Overview({ titleBadges }: OverviewProps) {
|
|
|
33
37
|
const componentDescriptor = useComponentDescriptor();
|
|
34
38
|
|
|
35
39
|
const showHeader = !component.preview?.legacyHeader;
|
|
40
|
+
const [isLoading, setLoading] = useState(true);
|
|
36
41
|
|
|
37
42
|
if (component?.buildStatus === 'pending' && component?.host === 'teambit.scope/scope')
|
|
38
43
|
return (
|
|
@@ -46,6 +51,8 @@ export function Overview({ titleBadges }: OverviewProps) {
|
|
|
46
51
|
|
|
47
52
|
const isScaling = component.preview?.isScaling;
|
|
48
53
|
|
|
54
|
+
const iframeQueryParams = `skipIncludes=${component.preview?.skipIncludes || 'false'}`;
|
|
55
|
+
|
|
49
56
|
return (
|
|
50
57
|
<div className={styles.overviewWrapper}>
|
|
51
58
|
{showHeader && (
|
|
@@ -61,15 +68,30 @@ export function Overview({ titleBadges }: OverviewProps) {
|
|
|
61
68
|
component={component}
|
|
62
69
|
/>
|
|
63
70
|
)}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
|
|
72
|
+
{/* TODO - @oded replace with new panel card same for compositions. */}
|
|
73
|
+
|
|
74
|
+
{/* <LinkedHeading size="xs" className={styles.title}>
|
|
75
|
+
<Icon of="text" /> <span>README</span>
|
|
76
|
+
</LinkedHeading> */}
|
|
77
|
+
<div className={styles.readme}>
|
|
78
|
+
{/* {isLoading && <ReadmeSkeleton />} */}
|
|
79
|
+
<ComponentPreview
|
|
80
|
+
onLoad={() => setLoading(false)}
|
|
81
|
+
component={component}
|
|
82
|
+
style={{ width: '100%', height: '100%' }}
|
|
83
|
+
previewName="overview"
|
|
84
|
+
pubsub={true}
|
|
85
|
+
queryParams={[iframeQueryParams]}
|
|
86
|
+
viewport={null}
|
|
87
|
+
fullContentHeight
|
|
88
|
+
scrolling="no"
|
|
89
|
+
/>
|
|
90
|
+
{component.preview?.skipIncludes && <CompositionGallery isLoading={isLoading} component={component} />}
|
|
91
|
+
{component.preview?.skipIncludes && (
|
|
92
|
+
<PropertiesTable className={styles.overviewPropsTable} componentId={component.id.toString()} />
|
|
93
|
+
)}
|
|
94
|
+
</div>
|
|
73
95
|
</div>
|
|
74
96
|
);
|
|
75
97
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { LineSkeleton, BlockSkeleton } from '@teambit/base-ui.loaders.skeleton';
|
|
3
|
+
import styles from './overview.module.scss';
|
|
4
|
+
|
|
5
|
+
export function ReadmeSkeleton() {
|
|
6
|
+
return (
|
|
7
|
+
<div className={styles.readmeSkeleton}>
|
|
8
|
+
<LineSkeleton width="80%" />
|
|
9
|
+
<LineSkeleton width="70%" />
|
|
10
|
+
<LineSkeleton width="40%" style={{marginBottom: 40}} />
|
|
11
|
+
|
|
12
|
+
<LineSkeleton width="30%" style={{marginBottom: 16}} />
|
|
13
|
+
<BlockSkeleton lines={10} style={{width: '100%', marginBottom: 40}} />
|
|
14
|
+
<LineSkeleton width="80%" />
|
|
15
|
+
<LineSkeleton width="40%" />
|
|
16
|
+
<LineSkeleton width="25%" />
|
|
17
|
+
</div>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/docs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.952",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/docs/docs",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.docs",
|
|
8
8
|
"name": "docs",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.952"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"graphql-tag": "2.12.1",
|
|
@@ -15,26 +15,29 @@
|
|
|
15
15
|
"core-js": "^3.0.0",
|
|
16
16
|
"@babel/runtime": "7.20.0",
|
|
17
17
|
"@teambit/harmony": "0.4.6",
|
|
18
|
-
"@teambit/
|
|
19
|
-
"@teambit/
|
|
18
|
+
"@teambit/base-ui.loaders.skeleton": "1.0.1",
|
|
19
|
+
"@teambit/compiler": "0.0.952",
|
|
20
|
+
"@teambit/component": "0.0.952",
|
|
20
21
|
"@teambit/docs.entities.doc": "0.0.12",
|
|
21
|
-
"@teambit/pkg": "0.0.
|
|
22
|
-
"@teambit/workspace": "0.0.
|
|
23
|
-
"@teambit/cli": "0.0.
|
|
24
|
-
"@teambit/dev-files": "0.0.
|
|
25
|
-
"@teambit/envs": "0.0.
|
|
26
|
-
"@teambit/graphql": "0.0.
|
|
27
|
-
"@teambit/logger": "0.0.
|
|
28
|
-
"@teambit/preview": "0.0.
|
|
22
|
+
"@teambit/pkg": "0.0.952",
|
|
23
|
+
"@teambit/workspace": "0.0.952",
|
|
24
|
+
"@teambit/cli": "0.0.638",
|
|
25
|
+
"@teambit/dev-files": "0.0.952",
|
|
26
|
+
"@teambit/envs": "0.0.952",
|
|
27
|
+
"@teambit/graphql": "0.0.952",
|
|
28
|
+
"@teambit/logger": "0.0.731",
|
|
29
|
+
"@teambit/preview": "0.0.952",
|
|
29
30
|
"@teambit/component-id": "0.0.425",
|
|
30
|
-
"@teambit/component-compare": "0.0.
|
|
31
|
-
"@teambit/docs.ui.overview-compare-section": "0.0.
|
|
32
|
-
"@teambit/docs.ui.overview-compare": "0.0.
|
|
33
|
-
"@teambit/ui": "0.0.
|
|
34
|
-
"@teambit/pubsub": "0.0.
|
|
35
|
-
"@teambit/component.ui.component-meta": "0.0.
|
|
31
|
+
"@teambit/component-compare": "0.0.200",
|
|
32
|
+
"@teambit/docs.ui.overview-compare-section": "0.0.2",
|
|
33
|
+
"@teambit/docs.ui.overview-compare": "0.0.157",
|
|
34
|
+
"@teambit/ui": "0.0.952",
|
|
35
|
+
"@teambit/pubsub": "0.0.952",
|
|
36
|
+
"@teambit/component.ui.component-meta": "0.0.206",
|
|
37
|
+
"@teambit/compositions.panels.composition-gallery": "0.0.1",
|
|
36
38
|
"@teambit/design.ui.surfaces.status-message-card": "0.0.17",
|
|
37
|
-
"@teambit/preview.ui.component-preview": "0.0.
|
|
39
|
+
"@teambit/preview.ui.component-preview": "0.0.510",
|
|
40
|
+
"@teambit/react.ui.docs.properties-table": "0.0.12"
|
|
38
41
|
},
|
|
39
42
|
"devDependencies": {
|
|
40
43
|
"@types/react-dom": "^17.0.5",
|
|
@@ -48,7 +51,7 @@
|
|
|
48
51
|
"@teambit/docs.content.docs-overview": "1.95.9"
|
|
49
52
|
},
|
|
50
53
|
"peerDependencies": {
|
|
51
|
-
"@teambit/legacy": "1.0.
|
|
54
|
+
"@teambit/legacy": "1.0.419",
|
|
52
55
|
"react": "^16.8.0 || ^17.0.0",
|
|
53
56
|
"react-dom": "^16.8.0 || ^17.0.0"
|
|
54
57
|
},
|
|
Binary file
|