@xyd-js/components 0.1.0-xyd.10 → 0.1.0-xyd.13
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/.idea/git_toolbox_blame.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/xyd-components.iml +12 -0
- package/CHANGELOG.md +22 -0
- package/TODO.md +1 -0
- package/content.ts +0 -2
- package/dist/CTABanner-BD4wweO5.js +2 -0
- package/dist/CTABanner-BD4wweO5.js.map +1 -0
- package/dist/CTABanner-DLG0_gv8.js +2 -0
- package/dist/CTABanner-DLG0_gv8.js.map +1 -0
- package/dist/CTABanner-DpPtA-FL.js +2 -0
- package/dist/CTABanner-DpPtA-FL.js.map +1 -0
- package/dist/CodeSample--qfqZ1hL.js +2 -0
- package/dist/CodeSample--qfqZ1hL.js.map +1 -0
- package/dist/CodeSample-CqFaFwwz.js +2 -0
- package/dist/CodeSample-CqFaFwwz.js.map +1 -0
- package/dist/CodeSample-GbqwRbcO.js +2 -0
- package/dist/CodeSample-GbqwRbcO.js.map +1 -0
- package/dist/HomeView-BZdY0g_7.js +2 -0
- package/dist/{HomeView-ACBdUgyz.js.map → HomeView-BZdY0g_7.js.map} +1 -1
- package/dist/HomeView-C_mEMzjV.js +2 -0
- package/dist/{HomeView-B0ATNUF1.js.map → HomeView-C_mEMzjV.js.map} +1 -1
- package/dist/HomeView-RATm-3zT.js +2 -0
- package/dist/{HomeView-CHSb4HL6.js.map → HomeView-RATm-3zT.js.map} +1 -1
- package/dist/Icon-BkXdTctK.js +2 -0
- package/dist/Icon-BkXdTctK.js.map +1 -0
- package/dist/Icon-BoKcRZAF.js +2 -0
- package/dist/Icon-BoKcRZAF.js.map +1 -0
- package/dist/Icon-CouPZRkJ.js +2 -0
- package/dist/Icon-CouPZRkJ.js.map +1 -0
- package/dist/Text-B-E3eaWW.js +2 -0
- package/dist/Text-B-E3eaWW.js.map +1 -0
- package/dist/Text-B5Ba_pci.js +2 -0
- package/dist/Text-B5Ba_pci.js.map +1 -0
- package/dist/Text-QH4jjPUM.js +2 -0
- package/dist/Text-QH4jjPUM.js.map +1 -0
- package/dist/Update-BlhP2VFR.js +2 -0
- package/dist/Update-BlhP2VFR.js.map +1 -0
- package/dist/Update-CMM38Snc.js +2 -0
- package/dist/Update-CMM38Snc.js.map +1 -0
- package/dist/Update-D5e_yqty.js +2 -0
- package/dist/Update-D5e_yqty.js.map +1 -0
- package/dist/VideoGuide-C5aW4OXW.js +2 -0
- package/dist/VideoGuide-C5aW4OXW.js.map +1 -0
- package/dist/VideoGuide-CoQXlHjQ.js +2 -0
- package/dist/VideoGuide-CoQXlHjQ.js.map +1 -0
- package/dist/VideoGuide-CwkedH8b.js +2 -0
- package/dist/VideoGuide-CwkedH8b.js.map +1 -0
- package/dist/_rollupPluginBabelHelpers-9wcO9jN6.js +4 -0
- package/dist/_rollupPluginBabelHelpers-9wcO9jN6.js.map +1 -0
- package/dist/_rollupPluginBabelHelpers-CiqSP2w-.js +4 -0
- package/dist/_rollupPluginBabelHelpers-CiqSP2w-.js.map +1 -0
- package/dist/_rollupPluginBabelHelpers-DmvUE1MU.js +4 -0
- package/dist/_rollupPluginBabelHelpers-DmvUE1MU.js.map +1 -0
- package/dist/brand.js +1 -1
- package/dist/brand.js.map +1 -1
- package/dist/coder/themes/cosmo-light.js.map +1 -1
- package/dist/coder.d.ts +29 -9
- package/dist/coder.js +1 -1
- package/dist/coder.js.map +1 -1
- package/dist/content.d.ts +264 -201
- package/dist/content.js +1 -1
- package/dist/content.js.map +1 -1
- package/dist/index.css +260 -210
- package/dist/layouts.d.ts +20 -21
- package/dist/layouts.js +1 -1
- package/dist/layouts.js.map +1 -1
- package/dist/pages.js +1 -1
- package/dist/pages.js.map +1 -1
- package/dist/system.d.ts +10 -0
- package/dist/system.js +2 -0
- package/dist/system.js.map +1 -0
- package/dist/tslib.es6-Bb9zBh0L.js +2 -0
- package/dist/{tslib.es6-BBkx4Se1.js.map → tslib.es6-Bb9zBh0L.js.map} +1 -1
- package/dist/tslib.es6-Bd9lzVn6.js +2 -0
- package/dist/{tslib.es6-BF6ZLEXa.js.map → tslib.es6-Bd9lzVn6.js.map} +1 -1
- package/dist/tslib.es6-DwnOrHRg.js +2 -0
- package/dist/{tslib.es6-BOZCDgb8.js.map → tslib.es6-DwnOrHRg.js.map} +1 -1
- package/dist/views.js +1 -1
- package/dist/writer.d.ts +409 -77
- package/dist/writer.js +1 -1
- package/dist/writer.js.map +1 -1
- package/docs/.nojekyll +1 -0
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/highlight.css +22 -0
- package/docs/assets/icons.js +18 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +60 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1640 -0
- package/docs/functions/GuideCard.html +6 -0
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +2 -0
- package/docs/interfaces/GuideCardProps.html +18 -0
- package/docs/modules.html +1 -0
- package/index.ts +0 -1
- package/package.json +10 -6
- package/project.json +677 -0
- package/rollup.config.js +30 -20
- package/src/brand/Button/Button.styles.tsx +0 -3
- package/src/brand/CTABanner/CTABanner.styles.tsx +2 -4
- package/src/brand/Footer/Footer.styles.tsx +0 -3
- package/src/coder/Code/Code.styles.tsx +132 -33
- package/src/coder/Code/Code.tsx +129 -38
- package/src/coder/Code/CodeLoader.tsx +3 -3
- package/src/coder/Code/annotations.tsx +28 -8
- package/src/coder/Code/highlight.ts +38 -0
- package/src/coder/Code/index.ts +2 -1
- package/src/coder/CodeCopy/CodeCopy.styles.tsx +13 -11
- package/src/coder/CodeCopy/CodeCopy.tsx +5 -3
- package/src/coder/CodeSample/CodeSample.tsx +83 -27
- package/src/coder/CodeTabs/CodeTabs.styles.tsx +111 -94
- package/src/coder/CodeTabs/CodeTabs.tsx +69 -51
- package/src/coder/CodeTheme/CodeTheme.tsx +89 -49
- package/src/coder/CodeTheme/index.ts +0 -1
- package/src/coder/CoderProvider.tsx +26 -0
- package/src/coder/index.ts +8 -4
- package/src/content/ContentDecoator.styles.tsx +113 -0
- package/src/content/ContentDecorator.tsx +17 -0
- package/src/content/GridDecorator.styles.tsx +67 -0
- package/src/content/GridDecorator.tsx +21 -0
- package/src/content/ReactContent.tsx +575 -0
- package/src/content/index.ts +10 -2
- package/src/icons/index.ts +0 -0
- package/src/kit/Loader/Loader.styles.tsx +53 -0
- package/src/kit/Loader/Loader.tsx +22 -0
- package/src/kit/index.ts +1 -0
- package/src/layouts/LayoutPrimary/LayoutPrimary.styles.tsx +270 -306
- package/src/layouts/LayoutPrimary/LayoutPrimary.tsx +171 -91
- package/src/layouts/LayoutPrimary/index.ts +0 -2
- package/src/layouts/index.ts +0 -7
- package/src/system/SearchButton/SearchButton.styles.tsx +86 -0
- package/src/system/SearchButton/SearchButton.tsx +116 -0
- package/src/system/SearchButton/index.ts +1 -0
- package/src/system/index.ts +1 -0
- package/src/writer/Anchor/Anchor.styles.tsx +11 -0
- package/src/{content → writer}/Anchor/Anchor.tsx +20 -22
- package/src/writer/Anchor/index.tsx +1 -0
- package/src/writer/Badge/Badge.styles.tsx +37 -27
- package/src/writer/Badge/Badge.tsx +34 -48
- package/src/writer/Banner/Banner.styles.tsx +91 -0
- package/src/writer/Banner/Banner.tsx +70 -0
- package/src/writer/Banner/index.ts +1 -0
- package/src/writer/Blockquote/Blockquote.styles.tsx +6 -4
- package/src/writer/Blockquote/Blockquote.tsx +5 -2
- package/src/writer/Breadcrumbs/Breadcrumbs.styles.ts +25 -25
- package/src/writer/Breadcrumbs/Breadcrumbs.tsx +18 -12
- package/src/writer/Button/Button.styles.tsx +137 -0
- package/src/writer/Button/Button.tsx +75 -0
- package/src/writer/Button/index.ts +2 -0
- package/src/writer/Callout/Callout.styles.tsx +35 -42
- package/src/writer/Callout/Callout.tsx +30 -15
- package/src/writer/Card/Card.styles.tsx +47 -0
- package/src/writer/Card/Card.tsx +69 -0
- package/src/writer/Card/index.ts +1 -0
- package/src/writer/Code/Code.styles.tsx +12 -11
- package/src/writer/Code/Code.tsx +6 -3
- package/src/writer/ColorSchemeButton/ColorSchemeButton.tsx +172 -0
- package/src/writer/ColorSchemeButton/index.ts +1 -0
- package/src/writer/Details/Details.styles.tsx +87 -98
- package/src/writer/Details/Details.tsx +65 -44
- package/src/writer/Example/index.tsx +5 -0
- package/src/writer/GuideCard/GuideCard.styles.tsx +100 -103
- package/src/writer/GuideCard/GuideCard.tsx +72 -37
- package/src/writer/Heading/Heading.styles.tsx +76 -60
- package/src/writer/Heading/Heading.tsx +92 -22
- package/src/writer/Hr/Hr.styles.tsx +3 -1
- package/src/writer/Hr/Hr.tsx +2 -5
- package/src/writer/Icon/Icon.tsx +48 -0
- package/src/writer/Icon/index.ts +1 -0
- package/src/writer/Image/Image.styles.tsx +9 -0
- package/src/writer/Image/Image.tsx +19 -0
- package/src/writer/Image/index.ts +1 -0
- package/src/writer/List/List.styles.tsx +47 -0
- package/src/writer/List/List.tsx +29 -0
- package/src/writer/List/index.ts +4 -0
- package/src/writer/NavLinks/NavLinks.styles.ts +26 -26
- package/src/writer/NavLinks/NavLinks.tsx +65 -18
- package/src/writer/Pre/Pre.styles.tsx +8 -6
- package/src/writer/Pre/Pre.tsx +3 -2
- package/src/writer/Steps/Steps.styles.tsx +27 -24
- package/src/writer/Steps/Steps.tsx +38 -8
- package/src/writer/Table/Table.styles.tsx +65 -34
- package/src/writer/Table/Table.tsx +121 -11
- package/src/writer/Table/index.ts +0 -11
- package/src/writer/Tabs/Tabs.styles.tsx +51 -55
- package/src/writer/Tabs/Tabs.tsx +30 -23
- package/src/writer/Text/Text.styles.tsx +66 -0
- package/src/writer/Text/Text.tsx +79 -0
- package/src/writer/Text/index.ts +3 -0
- package/src/writer/TocCard/TocCard.module.css +44 -0
- package/src/writer/TocCard/TocCard.tsx +42 -0
- package/src/writer/TocCard/index.ts +3 -0
- package/src/writer/UnderlineNav/Tabs.tsx +51 -0
- package/src/writer/UnderlineNav/TabsPrimary.styles.tsx +184 -0
- package/src/writer/UnderlineNav/TabsPrimary.tsx +209 -0
- package/src/writer/UnderlineNav/TabsSecondary.styles.tsx +77 -0
- package/src/writer/UnderlineNav/TabsSecondary.tsx +171 -0
- package/src/writer/UnderlineNav/UnderlineNav.styles.tsx +165 -31
- package/src/writer/UnderlineNav/UnderlineNav.tsx +257 -22
- package/src/writer/UnderlineNav/index.ts +2 -1
- package/src/writer/UnderlineNav/useValueChange.ts +60 -0
- package/src/writer/Update/Update.styles.tsx +33 -0
- package/src/writer/Update/Update.tsx +37 -0
- package/src/writer/Update/index.ts +1 -0
- package/src/writer/VideoGuide/VideoGuide.module.css +105 -0
- package/src/writer/VideoGuide/VideoGuide.tsx +75 -0
- package/src/writer/VideoGuide/index.ts +1 -0
- package/src/writer/index.ts +23 -1
- package/tsconfig.json +9 -3
- package/types.d.ts +50 -0
- package/writer.ts +1 -1
- package/dist/CTABanner-4FVIoaTR.js +0 -2
- package/dist/CTABanner-4FVIoaTR.js.map +0 -1
- package/dist/CTABanner-BQx2SLf8.js +0 -2
- package/dist/CTABanner-BQx2SLf8.js.map +0 -1
- package/dist/CTABanner-C6afsXoE.js +0 -2
- package/dist/CTABanner-C6afsXoE.js.map +0 -1
- package/dist/CTABanner-CEKs-Hb-.js +0 -2
- package/dist/CTABanner-CEKs-Hb-.js.map +0 -1
- package/dist/CTABanner-CUNcTr6s.js +0 -2
- package/dist/CTABanner-CUNcTr6s.js.map +0 -1
- package/dist/CTABanner-D02aIAsD.js +0 -2
- package/dist/CTABanner-D02aIAsD.js.map +0 -1
- package/dist/CTABanner-Dm3tUG3I.js +0 -2
- package/dist/CTABanner-Dm3tUG3I.js.map +0 -1
- package/dist/CTABanner-MCOcVowa.js +0 -2
- package/dist/CTABanner-MCOcVowa.js.map +0 -1
- package/dist/CTABanner-X6K49gSr.js +0 -2
- package/dist/CTABanner-X6K49gSr.js.map +0 -1
- package/dist/CodeSample-B9VUhTKF.js +0 -2
- package/dist/CodeSample-B9VUhTKF.js.map +0 -1
- package/dist/CodeSample-BSXeFy0x.js +0 -2
- package/dist/CodeSample-BSXeFy0x.js.map +0 -1
- package/dist/CodeSample-BwP208sQ.js +0 -2
- package/dist/CodeSample-BwP208sQ.js.map +0 -1
- package/dist/CodeSample-CK-CQYrV.js +0 -2
- package/dist/CodeSample-CK-CQYrV.js.map +0 -1
- package/dist/CodeSample-CUemtj_W.js +0 -2
- package/dist/CodeSample-CUemtj_W.js.map +0 -1
- package/dist/CodeSample-D0iKih-A.js +0 -2
- package/dist/CodeSample-D0iKih-A.js.map +0 -1
- package/dist/CodeSample-D33vTa6M.js +0 -2
- package/dist/CodeSample-D33vTa6M.js.map +0 -1
- package/dist/CodeSample-DUSx2KBt.js +0 -2
- package/dist/CodeSample-DUSx2KBt.js.map +0 -1
- package/dist/CodeSample-P4yxkHPW.js +0 -2
- package/dist/CodeSample-P4yxkHPW.js.map +0 -1
- package/dist/HomeView-ACBdUgyz.js +0 -2
- package/dist/HomeView-B0ATNUF1.js +0 -2
- package/dist/HomeView-CHSb4HL6.js +0 -2
- package/dist/HomeView-COJrg8Ju.js +0 -2
- package/dist/HomeView-COJrg8Ju.js.map +0 -1
- package/dist/HomeView-Cun4apuy.js +0 -2
- package/dist/HomeView-Cun4apuy.js.map +0 -1
- package/dist/HomeView-D4DXEOOn.js +0 -2
- package/dist/HomeView-D4DXEOOn.js.map +0 -1
- package/dist/HomeView-DaH1PSBB.js +0 -2
- package/dist/HomeView-DaH1PSBB.js.map +0 -1
- package/dist/HomeView-O_lj2c2t.js +0 -2
- package/dist/HomeView-O_lj2c2t.js.map +0 -1
- package/dist/HomeView-_Nu2RcOM.js +0 -2
- package/dist/HomeView-_Nu2RcOM.js.map +0 -1
- package/dist/UnderlineNav-3-KptDYD.js +0 -2
- package/dist/UnderlineNav-3-KptDYD.js.map +0 -1
- package/dist/UnderlineNav-BCyB0G5d.js +0 -2
- package/dist/UnderlineNav-BCyB0G5d.js.map +0 -1
- package/dist/UnderlineNav-BEhDJk0H.js +0 -2
- package/dist/UnderlineNav-BEhDJk0H.js.map +0 -1
- package/dist/UnderlineNav-BqZ2xAp7.js +0 -2
- package/dist/UnderlineNav-BqZ2xAp7.js.map +0 -1
- package/dist/UnderlineNav-C2-4Vyj8.js +0 -2
- package/dist/UnderlineNav-C2-4Vyj8.js.map +0 -1
- package/dist/UnderlineNav-Co08Gykm.js +0 -2
- package/dist/UnderlineNav-Co08Gykm.js.map +0 -1
- package/dist/UnderlineNav-DC3UVmnZ.js +0 -2
- package/dist/UnderlineNav-DC3UVmnZ.js.map +0 -1
- package/dist/UnderlineNav-DsRYwuGB.js +0 -2
- package/dist/UnderlineNav-DsRYwuGB.js.map +0 -1
- package/dist/UnderlineNav-FbclXKUW.js +0 -2
- package/dist/UnderlineNav-FbclXKUW.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-BEouSrrZ.js +0 -2
- package/dist/_rollupPluginBabelHelpers-BEouSrrZ.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-BHehKRBq.js +0 -2
- package/dist/_rollupPluginBabelHelpers-BHehKRBq.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-Bunpz22T.js +0 -2
- package/dist/_rollupPluginBabelHelpers-Bunpz22T.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-CVblpRvU.js +0 -2
- package/dist/_rollupPluginBabelHelpers-CVblpRvU.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-CxmswfqM.js +0 -2
- package/dist/_rollupPluginBabelHelpers-CxmswfqM.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-D0XU6lDu.js +0 -2
- package/dist/_rollupPluginBabelHelpers-D0XU6lDu.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-DQJTK9EO.js +0 -2
- package/dist/_rollupPluginBabelHelpers-DQJTK9EO.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-DuRQdJ01.js +0 -2
- package/dist/_rollupPluginBabelHelpers-DuRQdJ01.js.map +0 -1
- package/dist/_rollupPluginBabelHelpers-tRAa4O0f.js +0 -2
- package/dist/_rollupPluginBabelHelpers-tRAa4O0f.js.map +0 -1
- package/dist/index-B0FncPxO.js +0 -2
- package/dist/index-B0FncPxO.js.map +0 -1
- package/dist/index-BEm-xkm-.js +0 -2
- package/dist/index-BEm-xkm-.js.map +0 -1
- package/dist/index-BHwtxG27.js +0 -2
- package/dist/index-BHwtxG27.js.map +0 -1
- package/dist/index-BTcmIG47.js +0 -2
- package/dist/index-BTcmIG47.js.map +0 -1
- package/dist/index-BbIMmTvo.js +0 -2
- package/dist/index-BbIMmTvo.js.map +0 -1
- package/dist/index-CNkHt1r7.js +0 -2
- package/dist/index-CNkHt1r7.js.map +0 -1
- package/dist/index-D0XuyFm7.js +0 -2
- package/dist/index-D0XuyFm7.js.map +0 -1
- package/dist/index-DBspcqWq.js +0 -2
- package/dist/index-DBspcqWq.js.map +0 -1
- package/dist/index-DVBO4gYE.js +0 -2
- package/dist/index-DVBO4gYE.js.map +0 -1
- package/dist/tslib.es6-BBkx4Se1.js +0 -2
- package/dist/tslib.es6-BF6ZLEXa.js +0 -2
- package/dist/tslib.es6-BOZCDgb8.js +0 -2
- package/dist/tslib.es6-CNVK7Xcu.js +0 -2
- package/dist/tslib.es6-CNVK7Xcu.js.map +0 -1
- package/dist/tslib.es6-Cjl5tesf.js +0 -2
- package/dist/tslib.es6-Cjl5tesf.js.map +0 -1
- package/dist/tslib.es6-DEH7Dkgy.js +0 -2
- package/dist/tslib.es6-DEH7Dkgy.js.map +0 -1
- package/dist/tslib.es6-DTeJ7dWi.js +0 -2
- package/dist/tslib.es6-DTeJ7dWi.js.map +0 -1
- package/dist/tslib.es6-U9-f6pA7.js +0 -2
- package/dist/tslib.es6-U9-f6pA7.js.map +0 -1
- package/dist/tslib.es6-cb69JjeS.js +0 -2
- package/dist/tslib.es6-cb69JjeS.js.map +0 -1
- package/src/content/Anchor/Anchor.styles.tsx +0 -5
- package/src/content/Anchor/index.tsx +0 -3
- package/src/content/Content/Content.styles.tsx +0 -9
- package/src/content/Content/Content.tsx +0 -13
- package/src/content/Content/index.tsx +0 -3
- package/src/content/Content.tsx +0 -179
- package/src/content/Subtitle/Subtitle.styles.ts +0 -8
- package/src/content/Subtitle/Subtitle.tsx +0 -12
- package/src/content/Subtitle/index.tsx +0 -3
- package/src/layouts/Layout.styles.tsx +0 -155
- package/src/layouts/Layout.tsx +0 -119
- package/src/ui/Loader/Loader.styles.tsx +0 -54
- package/src/ui/Loader/Loader.tsx +0 -26
- package/src/ui/index.ts +0 -1
- package/src/writer/Icon/index.tsx +0 -355
- package/src/writer/Table/TableV2.styles.tsx +0 -117
- package/src/writer/Table/TableV2.tsx +0 -83
- /package/src/{ui → kit}/TODO.md +0 -0
|
@@ -1,47 +1,181 @@
|
|
|
1
|
-
import {css} from "@linaria/core"
|
|
1
|
+
import { css } from "@linaria/core"
|
|
2
2
|
|
|
3
3
|
export const UnderlineNavHost = css`
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
@layer defaults {
|
|
5
|
+
[part="nav"] {
|
|
6
|
+
align-items: center;
|
|
7
|
+
display: flex;
|
|
8
|
+
height: 42px;
|
|
9
|
+
background-color: var(--xyd-underlinenav-bgcolor);
|
|
10
|
+
border-bottom: 1px solid var(--xyd-underlinenav-border-color);
|
|
11
|
+
z-index: 99;
|
|
6
12
|
|
|
7
|
-
|
|
13
|
+
&[data-kind="secondary"] {
|
|
14
|
+
border-bottom: none;
|
|
15
|
+
border-radius: 8px;
|
|
16
|
+
padding: 4px;
|
|
17
|
+
background-color: var(--xyd-tabs-bgcolor);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
8
20
|
|
|
9
|
-
|
|
10
|
-
|
|
21
|
+
[part="list"] {
|
|
22
|
+
display: flex;
|
|
23
|
+
gap: 10px;
|
|
24
|
+
height: 100%;
|
|
25
|
+
color: var(--xyd-underlinenav-list-color);
|
|
26
|
+
list-style: none;
|
|
27
|
+
padding: 0;
|
|
28
|
+
white-space: nowrap;
|
|
11
29
|
|
|
12
|
-
|
|
13
|
-
|
|
30
|
+
[data-kind="secondary"] & {
|
|
31
|
+
gap: 4px;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
14
34
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
[part="item"] {
|
|
36
|
+
height: 100%;
|
|
37
|
+
position: relative;
|
|
18
38
|
|
|
19
|
-
|
|
20
|
-
|
|
39
|
+
a, button {
|
|
40
|
+
height: 100%;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&[data-state="active"] {
|
|
44
|
+
a {
|
|
45
|
+
border-bottom-color: var(--xyd-underlinenav-color--active);
|
|
46
|
+
}
|
|
21
47
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
48
|
+
[data-kind="secondary"] & a {
|
|
49
|
+
border-bottom-color: transparent;
|
|
50
|
+
color: var(--xyd-tabs-color--active);
|
|
51
|
+
background-color: var(--xyd-tabs-bgcolor--active);
|
|
52
|
+
box-shadow: 0 1px 2px 0 var(--xyd-tabs-shadow-color--active);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
&[data-state="inactive"] {
|
|
56
|
+
a, button {
|
|
57
|
+
color: unset;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
[part="link"] {
|
|
63
|
+
display: inline-flex;
|
|
64
|
+
border-bottom: 3px solid transparent;
|
|
65
|
+
text-decoration: none;
|
|
66
|
+
height: 100%;
|
|
67
|
+
padding: 10px;
|
|
68
|
+
transition: all 0.3s ease;
|
|
69
|
+
cursor: pointer;
|
|
70
|
+
|
|
71
|
+
&:hover {
|
|
72
|
+
color: var(--xyd-underlinenav-color--active);
|
|
73
|
+
}
|
|
26
74
|
|
|
27
|
-
|
|
28
|
-
|
|
75
|
+
[data-kind="secondary"] & {
|
|
76
|
+
border-bottom: none;
|
|
77
|
+
padding: 5px 16px;
|
|
78
|
+
border-radius: 0.375rem;
|
|
79
|
+
color: var(--xyd-tabs-color);
|
|
29
80
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
81
|
+
&:hover {
|
|
82
|
+
color: var(--xyd-tabs-color--active);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
[part="content"] {
|
|
88
|
+
position: relative;
|
|
89
|
+
overflow: hidden;
|
|
90
|
+
|
|
91
|
+
[data-kind="secondary"] & {
|
|
92
|
+
margin-top: 16px;
|
|
93
|
+
}
|
|
33
94
|
}
|
|
34
95
|
}
|
|
35
96
|
`;
|
|
36
97
|
|
|
37
|
-
export const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
98
|
+
export const UnderlineNavContent = css`
|
|
99
|
+
@layer defaults {
|
|
100
|
+
position: relative;
|
|
101
|
+
width: 100%;
|
|
41
102
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
103
|
+
&[data-state="inactive"] {
|
|
104
|
+
display: none;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* Only apply animations when parent has data-slide="true" */
|
|
108
|
+
[data-slide="true"] & {
|
|
109
|
+
/* Forward direction (left to right) */
|
|
110
|
+
&[data-direction="forward"][data-state="active"] {
|
|
111
|
+
position: relative;
|
|
112
|
+
animation: fadeInFromRight 0.4s cubic-bezier(0.16, 1, 0.3, 1);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
&[data-direction="forward"][data-state="inactive"] {
|
|
116
|
+
position: absolute;
|
|
117
|
+
animation: fadeOutToLeft 0.4s cubic-bezier(0.16, 1, 0.3, 1);
|
|
118
|
+
}
|
|
45
119
|
|
|
46
|
-
|
|
47
|
-
|
|
120
|
+
/* Backward direction (right to left) */
|
|
121
|
+
&[data-direction="backward"][data-state="active"] {
|
|
122
|
+
position: relative;
|
|
123
|
+
animation: fadeInFromLeft 0.4s cubic-bezier(0.16, 1, 0.3, 1);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
&[data-direction="backward"][data-state="inactive"] {
|
|
127
|
+
position: absolute;
|
|
128
|
+
animation: fadeOutToRight 0.4s cubic-bezier(0.16, 1, 0.3, 1);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@keyframes fadeInFromRight {
|
|
133
|
+
from {
|
|
134
|
+
opacity: 0;
|
|
135
|
+
transform: translateX(75px);
|
|
136
|
+
}
|
|
137
|
+
to {
|
|
138
|
+
opacity: 1;
|
|
139
|
+
transform: translateX(0);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@keyframes fadeOutToLeft {
|
|
144
|
+
from {
|
|
145
|
+
opacity: 1;
|
|
146
|
+
transform: translateX(0);
|
|
147
|
+
}
|
|
148
|
+
to {
|
|
149
|
+
opacity: 0;
|
|
150
|
+
transform: translateX(-75px);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@keyframes fadeInFromLeft {
|
|
155
|
+
from {
|
|
156
|
+
opacity: 0;
|
|
157
|
+
transform: translateX(-75px);
|
|
158
|
+
}
|
|
159
|
+
to {
|
|
160
|
+
opacity: 1;
|
|
161
|
+
transform: translateX(0);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@keyframes fadeOutToRight {
|
|
166
|
+
from {
|
|
167
|
+
opacity: 1;
|
|
168
|
+
transform: translateX(0);
|
|
169
|
+
}
|
|
170
|
+
to {
|
|
171
|
+
opacity: 0;
|
|
172
|
+
transform: translateX(75px);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
[part="child"] {
|
|
177
|
+
padding: 20px;
|
|
178
|
+
transition: all 0.3s ease;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
`;
|
|
@@ -1,38 +1,273 @@
|
|
|
1
|
-
import React from "react"
|
|
2
|
-
import
|
|
1
|
+
import React, { useState, useRef, useEffect, createContext, useContext } from "react"
|
|
2
|
+
import {Tabs as RadixTabs} from "radix-ui"; // TODO: remove and use separation
|
|
3
3
|
|
|
4
4
|
import * as cn from "./UnderlineNav.styles"
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Context for managing the navigation direction in the UnderlineNav component
|
|
8
|
+
*/
|
|
9
|
+
const UnderlineContext = createContext<{
|
|
10
|
+
direction: 'forward' | 'backward'
|
|
11
|
+
}>({
|
|
12
|
+
direction: 'forward'
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Props for the UnderlineNav component
|
|
17
|
+
*/§
|
|
6
18
|
export interface TabsProps {
|
|
19
|
+
/** Child elements to be rendered within the navigation */
|
|
7
20
|
children: React.ReactNode
|
|
8
|
-
|
|
9
|
-
|
|
21
|
+
|
|
22
|
+
/** The currently selected tab value */
|
|
23
|
+
value?: string
|
|
24
|
+
|
|
25
|
+
/** Callback function triggered when a tab is selected */
|
|
26
|
+
onChange?: (value: string) => void
|
|
27
|
+
|
|
28
|
+
/** Whether to enable sliding animation between tabs */
|
|
29
|
+
slide?: boolean
|
|
30
|
+
|
|
31
|
+
/** Additional CSS class name for the component */
|
|
32
|
+
className?: string
|
|
33
|
+
|
|
34
|
+
/** The variant of the navigation */
|
|
35
|
+
kind?: 'default' | 'secondary'
|
|
10
36
|
}
|
|
11
37
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
38
|
+
/**
|
|
39
|
+
* A navigation component that displays tabs with an underline indicator
|
|
40
|
+
*
|
|
41
|
+
* @category Component
|
|
42
|
+
*/
|
|
43
|
+
export function UnderlineNav({
|
|
44
|
+
children,
|
|
45
|
+
value: controlledValue,
|
|
46
|
+
onChange,
|
|
47
|
+
slide = true,
|
|
48
|
+
className,
|
|
49
|
+
kind = 'default'
|
|
50
|
+
}: TabsProps) {
|
|
51
|
+
const childrenArray = React.Children.toArray(children);
|
|
52
|
+
const navItems = childrenArray.filter(
|
|
53
|
+
child => {
|
|
54
|
+
return React.isValidElement(child) &&
|
|
55
|
+
(child.type === UnderlineNav.Item || child.type.displayName === "UnderlineNav.Item")
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
const otherChildren = childrenArray.filter(
|
|
59
|
+
child => !React.isValidElement(child) ||
|
|
60
|
+
(child.type !== UnderlineNav.Item && child.type.displayName !== "UnderlineNav.Item")
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
const [direction, value, handleValueChange] = useValueChange(
|
|
64
|
+
controlledValue,
|
|
65
|
+
onChange,
|
|
66
|
+
navItems
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<UnderlineContext.Provider value={{ direction }}>
|
|
71
|
+
<RadixTabs.Root value={value} onValueChange={handleValueChange}>
|
|
72
|
+
<xyd-underlinenav
|
|
73
|
+
className={`${cn.UnderlineNavHost} ${className || ""}`}
|
|
74
|
+
data-kind={kind}
|
|
75
|
+
>
|
|
76
|
+
<nav part="nav">
|
|
77
|
+
<RadixTabs.List asChild>
|
|
78
|
+
<ul part="list">
|
|
79
|
+
{navItems}
|
|
80
|
+
</ul>
|
|
81
|
+
</RadixTabs.List>
|
|
82
|
+
</nav>
|
|
83
|
+
<div
|
|
84
|
+
part="content"
|
|
85
|
+
data-slide={slide ? "true" : "false"}
|
|
86
|
+
>
|
|
87
|
+
{otherChildren}
|
|
88
|
+
</div>
|
|
89
|
+
</xyd-underlinenav>
|
|
90
|
+
</RadixTabs.Root>
|
|
91
|
+
</UnderlineContext.Provider>
|
|
92
|
+
);
|
|
22
93
|
}
|
|
23
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Props for the UnderlineNav.Item component
|
|
97
|
+
*/
|
|
24
98
|
export interface UnderlineNavItemProps {
|
|
99
|
+
/** Child elements to be rendered within the navigation item */
|
|
25
100
|
children: React.ReactNode
|
|
101
|
+
|
|
102
|
+
/** Unique identifier for the navigation item */
|
|
26
103
|
value: string
|
|
104
|
+
|
|
105
|
+
/** URL for the navigation item link */
|
|
27
106
|
href?: string
|
|
107
|
+
|
|
108
|
+
/** Custom component to render as the link element */
|
|
109
|
+
as?: React.ElementType
|
|
110
|
+
|
|
111
|
+
/** Whether this item should be active by default */
|
|
112
|
+
defaultActive?: boolean
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Individual navigation item component
|
|
117
|
+
*
|
|
118
|
+
* @category Component
|
|
119
|
+
*/
|
|
120
|
+
UnderlineNav.Item = function UnderlineNavItem({ children, value, href, as, defaultActive }: UnderlineNavItemProps) {
|
|
121
|
+
const Link = as || $Link;
|
|
122
|
+
const controlByItem = typeof defaultActive === "boolean"
|
|
123
|
+
const [defaultActiveState, setDefaultActiveState] = useState(controlByItem ? (defaultActive ? "active" : "inactive") : undefined)
|
|
124
|
+
|
|
125
|
+
let activeProps = controlByItem && defaultActiveState != undefined
|
|
126
|
+
? { "data-state": defaultActiveState }
|
|
127
|
+
: undefined
|
|
128
|
+
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
if (!controlByItem) {
|
|
131
|
+
return
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
setDefaultActiveState(undefined)
|
|
135
|
+
}, [])
|
|
136
|
+
|
|
137
|
+
return (
|
|
138
|
+
<RadixTabs.Trigger value={value} asChild {...activeProps}>
|
|
139
|
+
<li part="item">
|
|
140
|
+
<Link part="link" href={href}>
|
|
141
|
+
{children}
|
|
142
|
+
</Link>
|
|
143
|
+
</li>
|
|
144
|
+
</RadixTabs.Trigger>
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Props for the UnderlineNav.Content component
|
|
150
|
+
*/
|
|
151
|
+
export interface UnderlineNavContentProps {
|
|
152
|
+
/** Child elements to be rendered within the content area */
|
|
153
|
+
children: React.ReactNode
|
|
154
|
+
|
|
155
|
+
/** Unique identifier for the content section */
|
|
156
|
+
value: string
|
|
157
|
+
|
|
158
|
+
/** Whether this content should be active by default */
|
|
159
|
+
defaultActive?: boolean
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Content section component for the UnderlineNav
|
|
164
|
+
*
|
|
165
|
+
* @category Component
|
|
166
|
+
*/
|
|
167
|
+
UnderlineNav.Content = function UnderlineNavContent({
|
|
168
|
+
children,
|
|
169
|
+
value,
|
|
170
|
+
defaultActive
|
|
171
|
+
}: UnderlineNavContentProps) {
|
|
172
|
+
const { direction } = useContext(UnderlineContext);
|
|
173
|
+
|
|
174
|
+
const controlByItem = typeof defaultActive === "boolean"
|
|
175
|
+
const [defaultActiveState, setDefaultActiveState] = useState(controlByItem ? (defaultActive ? "active" : "inactive") : undefined)
|
|
176
|
+
|
|
177
|
+
let activeProps = controlByItem && defaultActiveState != undefined
|
|
178
|
+
? { "data-state": defaultActiveState }
|
|
179
|
+
: undefined
|
|
180
|
+
|
|
181
|
+
useEffect(() => {
|
|
182
|
+
if (!controlByItem) {
|
|
183
|
+
return
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
setDefaultActiveState(undefined)
|
|
187
|
+
}, [])
|
|
188
|
+
|
|
189
|
+
return (
|
|
190
|
+
<RadixTabs.Content
|
|
191
|
+
value={value}
|
|
192
|
+
forceMount={true}
|
|
193
|
+
asChild
|
|
194
|
+
{...activeProps}
|
|
195
|
+
>
|
|
196
|
+
<xyd-underlinenav-content
|
|
197
|
+
className={cn.UnderlineNavContent}
|
|
198
|
+
data-direction={direction}
|
|
199
|
+
>
|
|
200
|
+
<div part="child">
|
|
201
|
+
{children}
|
|
202
|
+
</div>
|
|
203
|
+
</xyd-underlinenav-content>
|
|
204
|
+
</RadixTabs.Content>
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Custom hook to handle value changes and determine navigation direction
|
|
210
|
+
* @param controlledValue - The controlled value from props
|
|
211
|
+
* @param onChange - Callback function for value changes
|
|
212
|
+
* @param navItems - Array of navigation items
|
|
213
|
+
* @returns Tuple containing direction, current value, and change handler
|
|
214
|
+
*/
|
|
215
|
+
function useValueChange(
|
|
216
|
+
controlledValue: string | undefined,
|
|
217
|
+
onChange: ((value: string) => void) | undefined,
|
|
218
|
+
navItems: React.ReactNode[]
|
|
219
|
+
) {
|
|
220
|
+
// Determine if we're in controlled or uncontrolled mode
|
|
221
|
+
const isControlled = controlledValue !== undefined && onChange !== undefined;
|
|
222
|
+
|
|
223
|
+
// For uncontrolled mode, use internal state
|
|
224
|
+
const [internalValue, setInternalValue] = useState(
|
|
225
|
+
navItems.length > 0 && React.isValidElement(navItems[0]) ?
|
|
226
|
+
navItems[0].props.value : ''
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
// Use either controlled or internal value
|
|
230
|
+
const value = isControlled ? controlledValue : internalValue;
|
|
231
|
+
|
|
232
|
+
// Track previous value to determine navigation direction
|
|
233
|
+
const prevValueRef = useRef(value);
|
|
234
|
+
const [direction, setDirection] = useState<'forward' | 'backward'>('forward');
|
|
235
|
+
|
|
236
|
+
// Handle value change and determine direction
|
|
237
|
+
const handleValueChange = (newValue: string) => {
|
|
238
|
+
// Find indices of current and new values
|
|
239
|
+
const currentIndex = navItems.findIndex(
|
|
240
|
+
item => React.isValidElement(item) && item.props.value === prevValueRef.current
|
|
241
|
+
);
|
|
242
|
+
const newIndex = navItems.findIndex(
|
|
243
|
+
item => React.isValidElement(item) && item.props.value === newValue
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
// Set direction based on indices
|
|
247
|
+
setDirection(newIndex > currentIndex ? 'forward' : 'backward');
|
|
248
|
+
|
|
249
|
+
// Update previous value
|
|
250
|
+
prevValueRef.current = newValue;
|
|
251
|
+
|
|
252
|
+
// Update internal state if uncontrolled
|
|
253
|
+
if (!isControlled) {
|
|
254
|
+
setInternalValue(newValue);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// Call the original onChange if provided
|
|
258
|
+
if (onChange) {
|
|
259
|
+
onChange(newValue);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
return [direction, value, handleValueChange] as const;
|
|
28
264
|
}
|
|
29
265
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
</RadixTabs.Trigger>
|
|
266
|
+
/**
|
|
267
|
+
* Default link component used when no custom link component is provided
|
|
268
|
+
* @param props - The component props
|
|
269
|
+
* @returns A React component
|
|
270
|
+
*/
|
|
271
|
+
function $Link({ ...props }) {
|
|
272
|
+
return <a {...props}>{props.children}</a>
|
|
38
273
|
}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {UnderlineNav} from "./UnderlineNav"
|
|
1
|
+
export {UnderlineNav} from "./UnderlineNav"
|
|
2
|
+
export {Tabs} from "./Tabs"
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React, {useRef, useState} from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Custom hook to handle value changes and determine navigation direction
|
|
5
|
+
* @param controlledValue - The controlled value from props
|
|
6
|
+
* @param onChange - Callback function for value changes
|
|
7
|
+
* @param navItems - Array of navigation items
|
|
8
|
+
* @returns Tuple containing direction, current value, and change handler
|
|
9
|
+
*/
|
|
10
|
+
export function useValueChange(
|
|
11
|
+
controlledValue: string | undefined,
|
|
12
|
+
onChange: ((value: string) => void) | undefined,
|
|
13
|
+
navItems: React.ReactNode[]
|
|
14
|
+
) {
|
|
15
|
+
// Determine if we're in controlled or uncontrolled mode
|
|
16
|
+
const isControlled = controlledValue !== undefined && onChange !== undefined;
|
|
17
|
+
|
|
18
|
+
// For uncontrolled mode, use internal state
|
|
19
|
+
const [internalValue, setInternalValue] = useState(
|
|
20
|
+
navItems.length > 0 && React.isValidElement(navItems[0]) ?
|
|
21
|
+
navItems[0].props.value : ''
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
// Use either controlled or internal value
|
|
25
|
+
const value = isControlled ? controlledValue : internalValue;
|
|
26
|
+
|
|
27
|
+
// Track previous value to determine navigation direction
|
|
28
|
+
const prevValueRef = useRef(value);
|
|
29
|
+
const [direction, setDirection] = useState<'forward' | 'backward'>('forward');
|
|
30
|
+
|
|
31
|
+
// Handle value change and determine direction
|
|
32
|
+
const handleValueChange = (newValue: string) => {
|
|
33
|
+
// Find indices of current and new values
|
|
34
|
+
const currentIndex = navItems.findIndex(
|
|
35
|
+
item => React.isValidElement(item) && item.props.value === prevValueRef.current
|
|
36
|
+
);
|
|
37
|
+
const newIndex = navItems.findIndex(
|
|
38
|
+
item => React.isValidElement(item) && item.props.value === newValue
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
// Set direction based on indices
|
|
42
|
+
setDirection(newIndex > currentIndex ? 'forward' : 'backward');
|
|
43
|
+
|
|
44
|
+
// Update previous value
|
|
45
|
+
prevValueRef.current = newValue;
|
|
46
|
+
|
|
47
|
+
// Update internal state if uncontrolled
|
|
48
|
+
if (!isControlled) {
|
|
49
|
+
setInternalValue(newValue);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Call the original onChange if provided
|
|
53
|
+
if (onChange) {
|
|
54
|
+
onChange(newValue);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
return [direction, value, handleValueChange] as const;
|
|
59
|
+
}
|
|
60
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { css } from "@linaria/core"
|
|
2
|
+
|
|
3
|
+
export const UpdateHost = css`
|
|
4
|
+
@layer defaults {
|
|
5
|
+
gap: 24px;
|
|
6
|
+
flex-direction: row;
|
|
7
|
+
padding-top: 32px;
|
|
8
|
+
padding-bottom: 32px;
|
|
9
|
+
align-items: flex-start;
|
|
10
|
+
width: 100%;
|
|
11
|
+
display: flex;
|
|
12
|
+
position: relative;
|
|
13
|
+
|
|
14
|
+
[part="meta"] {
|
|
15
|
+
width: 160px;
|
|
16
|
+
position: sticky;
|
|
17
|
+
justify-content: flex-start;
|
|
18
|
+
align-items: flex-start;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
flex-shrink: 0;
|
|
21
|
+
display: flex;
|
|
22
|
+
gap: 10px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
[part="content-container"] {
|
|
26
|
+
padding-left: 2px;
|
|
27
|
+
padding-right: 2px;
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
flex: 1 1 0%;
|
|
30
|
+
max-width: 100%;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { Badge } from '../Badge';
|
|
4
|
+
import { Text } from '../Text';
|
|
5
|
+
|
|
6
|
+
import * as cn from "./Update.styles"
|
|
7
|
+
|
|
8
|
+
interface UpdateProps {
|
|
9
|
+
children: React.ReactNode
|
|
10
|
+
|
|
11
|
+
version: string
|
|
12
|
+
|
|
13
|
+
date?: string
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function Update(props: UpdateProps) {
|
|
17
|
+
const { date, version, children } = props;
|
|
18
|
+
return (
|
|
19
|
+
<xyd-update className={cn.UpdateHost}>
|
|
20
|
+
<div part="meta">
|
|
21
|
+
{date && <div part="date">
|
|
22
|
+
<Badge>
|
|
23
|
+
{date}
|
|
24
|
+
</Badge>
|
|
25
|
+
</div>}
|
|
26
|
+
<div part="version">
|
|
27
|
+
<Text size="small">
|
|
28
|
+
{version}
|
|
29
|
+
</Text>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
<div part="content-container">
|
|
33
|
+
<div part="content">{children}</div>
|
|
34
|
+
</div>
|
|
35
|
+
</xyd-update>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {Update} from "./Update"
|