@xyd-js/components 0.1.0-xyd.11 → 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.
Files changed (256) hide show
  1. package/.idea/git_toolbox_blame.xml +6 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/vcs.xml +6 -0
  4. package/.idea/xyd-components.iml +12 -0
  5. package/CHANGELOG.md +16 -0
  6. package/TODO.md +1 -0
  7. package/content.ts +0 -2
  8. package/dist/CTABanner-BD4wweO5.js +2 -0
  9. package/dist/CTABanner-BD4wweO5.js.map +1 -0
  10. package/dist/CTABanner-DLG0_gv8.js +2 -0
  11. package/dist/CTABanner-DLG0_gv8.js.map +1 -0
  12. package/dist/CTABanner-DpPtA-FL.js +2 -0
  13. package/dist/CTABanner-DpPtA-FL.js.map +1 -0
  14. package/dist/CodeSample--qfqZ1hL.js +2 -0
  15. package/dist/CodeSample--qfqZ1hL.js.map +1 -0
  16. package/dist/CodeSample-CqFaFwwz.js +2 -0
  17. package/dist/CodeSample-CqFaFwwz.js.map +1 -0
  18. package/dist/CodeSample-GbqwRbcO.js +2 -0
  19. package/dist/CodeSample-GbqwRbcO.js.map +1 -0
  20. package/dist/HomeView-BZdY0g_7.js +2 -0
  21. package/dist/{HomeView-DHdqouwJ.js.map → HomeView-BZdY0g_7.js.map} +1 -1
  22. package/dist/HomeView-C_mEMzjV.js +2 -0
  23. package/dist/{HomeView-TDx2tcP_.js.map → HomeView-C_mEMzjV.js.map} +1 -1
  24. package/dist/HomeView-RATm-3zT.js +2 -0
  25. package/dist/HomeView-RATm-3zT.js.map +1 -0
  26. package/dist/Icon-BkXdTctK.js +2 -0
  27. package/dist/Icon-BkXdTctK.js.map +1 -0
  28. package/dist/Icon-BoKcRZAF.js +2 -0
  29. package/dist/Icon-BoKcRZAF.js.map +1 -0
  30. package/dist/Icon-CouPZRkJ.js +2 -0
  31. package/dist/Icon-CouPZRkJ.js.map +1 -0
  32. package/dist/Text-B-E3eaWW.js +2 -0
  33. package/dist/Text-B-E3eaWW.js.map +1 -0
  34. package/dist/Text-B5Ba_pci.js +2 -0
  35. package/dist/Text-B5Ba_pci.js.map +1 -0
  36. package/dist/Text-QH4jjPUM.js +2 -0
  37. package/dist/Text-QH4jjPUM.js.map +1 -0
  38. package/dist/Update-BlhP2VFR.js +2 -0
  39. package/dist/Update-BlhP2VFR.js.map +1 -0
  40. package/dist/Update-CMM38Snc.js +2 -0
  41. package/dist/Update-CMM38Snc.js.map +1 -0
  42. package/dist/Update-D5e_yqty.js +2 -0
  43. package/dist/Update-D5e_yqty.js.map +1 -0
  44. package/dist/VideoGuide-C5aW4OXW.js +2 -0
  45. package/dist/VideoGuide-C5aW4OXW.js.map +1 -0
  46. package/dist/VideoGuide-CoQXlHjQ.js +2 -0
  47. package/dist/VideoGuide-CoQXlHjQ.js.map +1 -0
  48. package/dist/VideoGuide-CwkedH8b.js +2 -0
  49. package/dist/VideoGuide-CwkedH8b.js.map +1 -0
  50. package/dist/_rollupPluginBabelHelpers-9wcO9jN6.js +4 -0
  51. package/dist/_rollupPluginBabelHelpers-9wcO9jN6.js.map +1 -0
  52. package/dist/_rollupPluginBabelHelpers-CiqSP2w-.js +4 -0
  53. package/dist/_rollupPluginBabelHelpers-CiqSP2w-.js.map +1 -0
  54. package/dist/_rollupPluginBabelHelpers-DmvUE1MU.js +4 -0
  55. package/dist/_rollupPluginBabelHelpers-DmvUE1MU.js.map +1 -0
  56. package/dist/brand.js +1 -1
  57. package/dist/brand.js.map +1 -1
  58. package/dist/coder/themes/cosmo-light.js.map +1 -1
  59. package/dist/coder.d.ts +32 -10
  60. package/dist/coder.js +1 -1
  61. package/dist/coder.js.map +1 -1
  62. package/dist/content.d.ts +264 -201
  63. package/dist/content.js +1 -1
  64. package/dist/content.js.map +1 -1
  65. package/dist/index.css +260 -210
  66. package/dist/layouts.d.ts +20 -21
  67. package/dist/layouts.js +1 -1
  68. package/dist/layouts.js.map +1 -1
  69. package/dist/pages.js +1 -1
  70. package/dist/pages.js.map +1 -1
  71. package/dist/system.d.ts +10 -0
  72. package/dist/system.js +2 -0
  73. package/dist/system.js.map +1 -0
  74. package/dist/tslib.es6-Bb9zBh0L.js +2 -0
  75. package/dist/{tslib.es6-BI9zka_a.js.map → tslib.es6-Bb9zBh0L.js.map} +1 -1
  76. package/dist/tslib.es6-Bd9lzVn6.js +2 -0
  77. package/dist/{tslib.es6-sxmRJynD.js.map → tslib.es6-Bd9lzVn6.js.map} +1 -1
  78. package/dist/tslib.es6-DwnOrHRg.js +2 -0
  79. package/dist/tslib.es6-DwnOrHRg.js.map +1 -0
  80. package/dist/views.js +1 -1
  81. package/dist/writer.d.ts +409 -77
  82. package/dist/writer.js +1 -1
  83. package/dist/writer.js.map +1 -1
  84. package/docs/.nojekyll +1 -0
  85. package/docs/assets/hierarchy.js +1 -0
  86. package/docs/assets/highlight.css +22 -0
  87. package/docs/assets/icons.js +18 -0
  88. package/docs/assets/icons.svg +1 -0
  89. package/docs/assets/main.js +60 -0
  90. package/docs/assets/navigation.js +1 -0
  91. package/docs/assets/search.js +1 -0
  92. package/docs/assets/style.css +1640 -0
  93. package/docs/functions/GuideCard.html +6 -0
  94. package/docs/hierarchy.html +1 -0
  95. package/docs/index.html +2 -0
  96. package/docs/interfaces/GuideCardProps.html +18 -0
  97. package/docs/modules.html +1 -0
  98. package/index.ts +0 -1
  99. package/package.json +10 -6
  100. package/project.json +677 -0
  101. package/rollup.config.js +30 -20
  102. package/src/brand/Button/Button.styles.tsx +0 -3
  103. package/src/brand/CTABanner/CTABanner.styles.tsx +2 -4
  104. package/src/brand/Footer/Footer.styles.tsx +0 -3
  105. package/src/coder/Code/Code.styles.tsx +132 -33
  106. package/src/coder/Code/Code.tsx +129 -38
  107. package/src/coder/Code/CodeLoader.tsx +3 -3
  108. package/src/coder/Code/annotations.tsx +28 -8
  109. package/src/coder/Code/highlight.ts +38 -0
  110. package/src/coder/Code/index.ts +2 -1
  111. package/src/coder/CodeCopy/CodeCopy.styles.tsx +13 -11
  112. package/src/coder/CodeCopy/CodeCopy.tsx +5 -3
  113. package/src/coder/CodeSample/CodeSample.tsx +83 -27
  114. package/src/coder/CodeTabs/CodeTabs.styles.tsx +111 -94
  115. package/src/coder/CodeTabs/CodeTabs.tsx +69 -51
  116. package/src/coder/CodeTheme/CodeTheme.tsx +89 -49
  117. package/src/coder/CodeTheme/index.ts +0 -1
  118. package/src/coder/CoderProvider.tsx +26 -0
  119. package/src/coder/index.ts +8 -4
  120. package/src/content/ContentDecoator.styles.tsx +113 -0
  121. package/src/content/ContentDecorator.tsx +17 -0
  122. package/src/content/GridDecorator.styles.tsx +67 -0
  123. package/src/content/GridDecorator.tsx +21 -0
  124. package/src/content/ReactContent.tsx +575 -0
  125. package/src/content/index.ts +10 -2
  126. package/src/icons/index.ts +0 -0
  127. package/src/kit/Loader/Loader.styles.tsx +53 -0
  128. package/src/kit/Loader/Loader.tsx +22 -0
  129. package/src/kit/index.ts +1 -0
  130. package/src/layouts/LayoutPrimary/LayoutPrimary.styles.tsx +270 -306
  131. package/src/layouts/LayoutPrimary/LayoutPrimary.tsx +171 -91
  132. package/src/layouts/LayoutPrimary/index.ts +0 -2
  133. package/src/layouts/index.ts +0 -7
  134. package/src/system/SearchButton/SearchButton.styles.tsx +86 -0
  135. package/src/system/SearchButton/SearchButton.tsx +116 -0
  136. package/src/system/SearchButton/index.ts +1 -0
  137. package/src/system/index.ts +1 -0
  138. package/src/writer/Anchor/Anchor.styles.tsx +11 -0
  139. package/src/{content → writer}/Anchor/Anchor.tsx +20 -22
  140. package/src/writer/Anchor/index.tsx +1 -0
  141. package/src/writer/Badge/Badge.styles.tsx +37 -27
  142. package/src/writer/Badge/Badge.tsx +34 -48
  143. package/src/writer/Banner/Banner.styles.tsx +91 -0
  144. package/src/writer/Banner/Banner.tsx +70 -0
  145. package/src/writer/Banner/index.ts +1 -0
  146. package/src/writer/Blockquote/Blockquote.styles.tsx +6 -4
  147. package/src/writer/Blockquote/Blockquote.tsx +5 -2
  148. package/src/writer/Breadcrumbs/Breadcrumbs.styles.ts +25 -25
  149. package/src/writer/Breadcrumbs/Breadcrumbs.tsx +18 -12
  150. package/src/writer/Button/Button.styles.tsx +137 -0
  151. package/src/writer/Button/Button.tsx +75 -0
  152. package/src/writer/Button/index.ts +2 -0
  153. package/src/writer/Callout/Callout.styles.tsx +35 -42
  154. package/src/writer/Callout/Callout.tsx +30 -15
  155. package/src/writer/Card/Card.styles.tsx +47 -0
  156. package/src/writer/Card/Card.tsx +69 -0
  157. package/src/writer/Card/index.ts +1 -0
  158. package/src/writer/Code/Code.styles.tsx +12 -11
  159. package/src/writer/Code/Code.tsx +6 -3
  160. package/src/writer/ColorSchemeButton/ColorSchemeButton.tsx +172 -0
  161. package/src/writer/ColorSchemeButton/index.ts +1 -0
  162. package/src/writer/Details/Details.styles.tsx +87 -98
  163. package/src/writer/Details/Details.tsx +65 -44
  164. package/src/writer/Example/index.tsx +5 -0
  165. package/src/writer/GuideCard/GuideCard.styles.tsx +100 -103
  166. package/src/writer/GuideCard/GuideCard.tsx +72 -37
  167. package/src/writer/Heading/Heading.styles.tsx +76 -60
  168. package/src/writer/Heading/Heading.tsx +92 -22
  169. package/src/writer/Hr/Hr.styles.tsx +3 -1
  170. package/src/writer/Hr/Hr.tsx +2 -5
  171. package/src/writer/Icon/Icon.tsx +48 -0
  172. package/src/writer/Icon/index.ts +1 -0
  173. package/src/writer/Image/Image.styles.tsx +9 -0
  174. package/src/writer/Image/Image.tsx +19 -0
  175. package/src/writer/Image/index.ts +1 -0
  176. package/src/writer/List/List.styles.tsx +47 -0
  177. package/src/writer/List/List.tsx +29 -0
  178. package/src/writer/List/index.ts +4 -0
  179. package/src/writer/NavLinks/NavLinks.styles.ts +26 -26
  180. package/src/writer/NavLinks/NavLinks.tsx +65 -18
  181. package/src/writer/Pre/Pre.styles.tsx +8 -6
  182. package/src/writer/Pre/Pre.tsx +3 -2
  183. package/src/writer/Steps/Steps.styles.tsx +27 -24
  184. package/src/writer/Steps/Steps.tsx +38 -8
  185. package/src/writer/Table/Table.styles.tsx +65 -34
  186. package/src/writer/Table/Table.tsx +121 -11
  187. package/src/writer/Table/index.ts +0 -11
  188. package/src/writer/Tabs/Tabs.styles.tsx +51 -55
  189. package/src/writer/Tabs/Tabs.tsx +30 -23
  190. package/src/writer/Text/Text.styles.tsx +66 -0
  191. package/src/writer/Text/Text.tsx +79 -0
  192. package/src/writer/Text/index.ts +3 -0
  193. package/src/writer/TocCard/TocCard.module.css +44 -0
  194. package/src/writer/TocCard/TocCard.tsx +42 -0
  195. package/src/writer/TocCard/index.ts +3 -0
  196. package/src/writer/UnderlineNav/Tabs.tsx +51 -0
  197. package/src/writer/UnderlineNav/TabsPrimary.styles.tsx +184 -0
  198. package/src/writer/UnderlineNav/TabsPrimary.tsx +209 -0
  199. package/src/writer/UnderlineNav/TabsSecondary.styles.tsx +77 -0
  200. package/src/writer/UnderlineNav/TabsSecondary.tsx +171 -0
  201. package/src/writer/UnderlineNav/UnderlineNav.styles.tsx +165 -31
  202. package/src/writer/UnderlineNav/UnderlineNav.tsx +257 -22
  203. package/src/writer/UnderlineNav/index.ts +2 -1
  204. package/src/writer/UnderlineNav/useValueChange.ts +60 -0
  205. package/src/writer/Update/Update.styles.tsx +33 -0
  206. package/src/writer/Update/Update.tsx +37 -0
  207. package/src/writer/Update/index.ts +1 -0
  208. package/src/writer/VideoGuide/VideoGuide.module.css +105 -0
  209. package/src/writer/VideoGuide/VideoGuide.tsx +75 -0
  210. package/src/writer/VideoGuide/index.ts +1 -0
  211. package/src/writer/index.ts +23 -1
  212. package/tsconfig.json +9 -3
  213. package/types.d.ts +50 -0
  214. package/writer.ts +1 -1
  215. package/dist/CTABanner-BLDHbq5h.js +0 -2
  216. package/dist/CTABanner-BLDHbq5h.js.map +0 -1
  217. package/dist/CTABanner-n3vc4xW5.js +0 -2
  218. package/dist/CTABanner-n3vc4xW5.js.map +0 -1
  219. package/dist/CodeSample-CVki5fdQ.js +0 -2
  220. package/dist/CodeSample-CVki5fdQ.js.map +0 -1
  221. package/dist/CodeSample-Dkob5gWa.js +0 -2
  222. package/dist/CodeSample-Dkob5gWa.js.map +0 -1
  223. package/dist/HomeView-DHdqouwJ.js +0 -2
  224. package/dist/HomeView-TDx2tcP_.js +0 -2
  225. package/dist/UnderlineNav-9lJPvnIp.js +0 -2
  226. package/dist/UnderlineNav-9lJPvnIp.js.map +0 -1
  227. package/dist/UnderlineNav-VqB7jDQD.js +0 -2
  228. package/dist/UnderlineNav-VqB7jDQD.js.map +0 -1
  229. package/dist/_rollupPluginBabelHelpers-C8nLsqZ7.js +0 -2
  230. package/dist/_rollupPluginBabelHelpers-C8nLsqZ7.js.map +0 -1
  231. package/dist/_rollupPluginBabelHelpers-CrdNG0jb.js +0 -2
  232. package/dist/_rollupPluginBabelHelpers-CrdNG0jb.js.map +0 -1
  233. package/dist/index-TkBHKzGT.js +0 -2
  234. package/dist/index-TkBHKzGT.js.map +0 -1
  235. package/dist/index-YH6Q3iH2.js +0 -2
  236. package/dist/index-YH6Q3iH2.js.map +0 -1
  237. package/dist/tslib.es6-BI9zka_a.js +0 -2
  238. package/dist/tslib.es6-sxmRJynD.js +0 -2
  239. package/src/content/Anchor/Anchor.styles.tsx +0 -5
  240. package/src/content/Anchor/index.tsx +0 -3
  241. package/src/content/Content/Content.styles.tsx +0 -9
  242. package/src/content/Content/Content.tsx +0 -13
  243. package/src/content/Content/index.tsx +0 -3
  244. package/src/content/Content.tsx +0 -179
  245. package/src/content/Subtitle/Subtitle.styles.ts +0 -8
  246. package/src/content/Subtitle/Subtitle.tsx +0 -12
  247. package/src/content/Subtitle/index.tsx +0 -3
  248. package/src/layouts/Layout.styles.tsx +0 -155
  249. package/src/layouts/Layout.tsx +0 -119
  250. package/src/ui/Loader/Loader.styles.tsx +0 -54
  251. package/src/ui/Loader/Loader.tsx +0 -26
  252. package/src/ui/index.ts +0 -1
  253. package/src/writer/Icon/index.tsx +0 -355
  254. package/src/writer/Table/TableV2.styles.tsx +0 -117
  255. package/src/writer/Table/TableV2.tsx +0 -83
  256. /package/src/{ui → kit}/TODO.md +0 -0
@@ -1,74 +1,70 @@
1
1
  import {css} from "@linaria/core";
2
2
 
3
3
  export const TabsSampleHost = css`
4
- position: relative;
5
- max-width: 100%;
6
- `;
4
+ @layer defaults {
5
+ display: block;
6
+ position: relative;
7
+ max-width: 100%;
7
8
 
8
- export const TabsSampleButtons = css`
9
- display: flex;
10
- align-items: center;
11
- `;
9
+ [part="buttons"] {
10
+ display: flex;
11
+ align-items: center;
12
+ }
12
13
 
13
- export const TabsSampleContent = css`
14
- margin-top: 16px;
15
- `;
14
+ [part="arrow"] {
15
+ padding: 8px;
16
+ background-color: var(--xyd-tabs-arrow-bgcolor);
17
+ box-shadow: 0 1px 2px 0 var(--xyd-tabs-shadow-color--active);
18
+ }
16
19
 
17
- export const TabsArrowHost = css`
18
- padding: 8px;
19
- background-color: #ffffff;
20
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
21
- `;
20
+ [part="arrow-icon"] {
21
+ width: 16px;
22
+ height: 16px;
23
+ }
22
24
 
23
- export const TabsArrowIcon = css`
24
- width: 16px;
25
- height: 16px;
26
- `;
25
+ [part="scroller"] {
26
+ overflow-x: auto;
27
+ flex-grow: 1;
28
+ }
27
29
 
28
- export const TabsScrollerHost = css`
29
- overflow-x: auto;
30
- flex-grow: 1;
31
- `;
30
+ [part="scroller-container"] {
31
+ display: inline-flex;
32
+ gap: 4px;
32
33
 
33
- export const TabsScrollerContainer = css`
34
- display: inline-flex;
35
- gap: 4px;
34
+ border-radius: 8px;
35
+ background-color: var(--xyd-tabs-bgcolor);
36
+
37
+ padding: 4px;
38
+ margin-left: 4px;
39
+ }
36
40
 
37
- border-radius: 8px;
38
- background-color: #F3F4F6;
39
-
40
- padding: 4px;
41
- margin-left: 4px;
42
- `;
41
+ [part="button"] {
42
+ padding: 5px 16px;
43
43
 
44
- export const TabsButtonHost = css`
45
- padding: 0.5rem 1rem;
44
+ border-radius: 0.375rem;
45
+ white-space: nowrap;
46
46
 
47
- border-radius: 0.375rem;
48
- font-size: 0.875rem;
49
- line-height: 1.25rem;
50
- font-weight: 500;
51
- white-space: nowrap;
47
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
48
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
49
+ transition-duration: 300ms;
52
50
 
53
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
54
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
55
- transition-duration: 300ms;
51
+ color: var(--xyd-tabs-color);
56
52
 
57
- color: #6B7280;
53
+ &:hover {
54
+ color: var(--xyd-tabs-color--active);
55
+ }
58
56
 
59
- &:hover {
60
- color: #111827;
61
- }
57
+ &[data-state="active"] {
58
+ color: var(--xyd-tabs-color--active);
59
+ background-color: var(--xyd-tabs-bgcolor--active);
60
+ box-shadow: 0 1px 2px 0 var(--xyd-tabs-shadow-color--active);
61
+ }
62
+ }
62
63
 
63
- &[data-state="active"] {
64
- color: #111827;
65
- background-color: #ffffff;
66
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
64
+ [part="content"] {
65
+ margin-top: 16px;
66
+ }
67
67
  }
68
68
  `;
69
69
 
70
- export const TabsButtonActive = css`
71
- color: #111827;
72
- background-color: #ffffff;
73
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
74
- `;
70
+
@@ -1,6 +1,6 @@
1
- import React, {useState, useRef, useEffect} from 'react'
2
- import * as RadixTabs from "@radix-ui/react-tabs"
3
- import {ChevronLeft, ChevronRight} from "lucide-react"
1
+ import React, { useState, useRef, useEffect } from 'react'
2
+ import {Tabs as RadixTabs} from "radix-ui"; // TODO: remove and use separation
3
+ import { ChevronLeft, ChevronRight } from "lucide-react"
4
4
 
5
5
  import * as cn from "./Tabs.styles";
6
6
 
@@ -8,9 +8,10 @@ export interface TabsProps {
8
8
  children: React.ReactNode;
9
9
  items: string[];
10
10
  tabIndex?: number;
11
+ className?: string;
11
12
  }
12
13
 
13
- export function Tabs({children, items, tabIndex}: TabsProps) {
14
+ export function Tabs({ children, items, tabIndex, className }: TabsProps) {
14
15
  const [showLeftArrow, setShowLeftArrow] = useState(false)
15
16
  const [showRightArrow, setShowRightArrow] = useState(false)
16
17
  const scrollContainerRef = useRef<HTMLDivElement>(null)
@@ -19,7 +20,7 @@ export function Tabs({children, items, tabIndex}: TabsProps) {
19
20
 
20
21
  const handleScroll = () => {
21
22
  if (scrollContainerRef.current) {
22
- const {scrollLeft, scrollWidth, clientWidth} = scrollContainerRef.current
23
+ const { scrollLeft, scrollWidth, clientWidth } = scrollContainerRef.current
23
24
  setShowLeftArrow(scrollLeft > 0)
24
25
  setShowRightArrow(scrollLeft < scrollWidth - clientWidth)
25
26
  }
@@ -34,33 +35,37 @@ export function Tabs({children, items, tabIndex}: TabsProps) {
34
35
  const scroll = (direction: 'left' | 'right') => {
35
36
  if (scrollContainerRef.current) {
36
37
  const scrollAmount = direction === 'left' ? -200 : 200
37
- scrollContainerRef.current.scrollBy({left: scrollAmount, behavior: 'smooth'})
38
+ scrollContainerRef.current.scrollBy({ left: scrollAmount, behavior: 'smooth' })
38
39
  }
39
40
  }
40
41
 
41
42
  return (
42
43
  <RadixTabs.Root asChild value={value} onValueChange={setActiveTab}>
43
- <div className={cn.TabsSampleHost}>
44
- <div className={cn.TabsSampleButtons}>
44
+ <xyd-tabs
45
+ className={`${cn.TabsSampleHost} ${className || ""}`}
46
+ >
47
+ <div part="buttons">
45
48
  {showLeftArrow && (
46
49
  <button
47
50
  onClick={() => scroll('left')}
48
- className={cn.TabsArrowHost}
51
+ part="arrow"
49
52
  >
50
- <ChevronLeft className={cn.TabsArrowIcon}/>
53
+ <ChevronLeft part="arrow-icon" />
51
54
  </button>
52
55
  )}
53
56
 
54
57
  <div
55
58
  ref={scrollContainerRef}
56
59
  onScroll={handleScroll}
57
- className={cn.TabsScrollerHost}
60
+ part="scroller"
58
61
  >
59
- <div className={cn.TabsScrollerContainer}>
62
+ <div
63
+ part="scroller-container"
64
+ >
60
65
  <RadixTabs.List>
61
- {items.map((item, index) => <TabsItem key={index} value={item}>
62
- {item}
63
- </TabsItem>
66
+ {items.map((item, index) => <$TabsItem key={index} value={item}>
67
+ {item}
68
+ </$TabsItem>
64
69
  )}
65
70
  </RadixTabs.List>
66
71
  </div>
@@ -69,31 +74,33 @@ export function Tabs({children, items, tabIndex}: TabsProps) {
69
74
  {showRightArrow && (
70
75
  <button
71
76
  onClick={() => scroll('right')}
72
- className={cn.TabsArrowHost}
77
+ part="arrow"
73
78
  >
74
- <ChevronRight className={cn.TabsArrowIcon}/>
79
+ <ChevronRight part="arrow-icon" />
75
80
  </button>
76
81
  )}
77
82
  </div>
78
83
 
79
- <div className={cn.TabsSampleContent}>
84
+ <div part="content">
80
85
  {children}
81
86
  </div>
82
- </div>
87
+ </xyd-tabs>
83
88
  </RadixTabs.Root>
84
89
  )
85
90
  }
86
91
 
87
- function TabsItem({children, value}) {
92
+ function $TabsItem({ children, value }) {
88
93
  return <RadixTabs.Trigger asChild value={value}>
89
- <button className={`${cn.TabsButtonHost}`}>
94
+ <button part="button">
90
95
  {children}
91
96
  </button>
92
97
  </RadixTabs.Trigger>
93
98
  }
94
99
 
95
- Tabs.Content = function TabsContent({children, value}) {
100
+ Tabs.Content = function TabsContent({ children, value }) {
96
101
  return <RadixTabs.Content asChild value={value}>
97
- {children}
102
+ <div>
103
+ {children}
104
+ </div>
98
105
  </RadixTabs.Content>
99
106
  }
@@ -0,0 +1,66 @@
1
+ import { css } from "@linaria/core";
2
+
3
+ export const TextHost = css`
4
+ @layer defaults {
5
+ display: inline-block;
6
+ margin: 0;
7
+
8
+ &[data-size="xsmall"] {
9
+ font-size: var(--xyd-font-size-xsmall);
10
+ line-height: var(--xyd-line-height-xsmall);
11
+ }
12
+ &[data-size="small"] {
13
+ font-size: var(--xyd-font-size-small);
14
+ line-height: var(--xyd-line-height-small);
15
+ }
16
+ &[data-size="medium"] {
17
+ font-size: var(--xyd-font-size-medium);
18
+ line-height: var(--xyd-line-height-medium);
19
+ }
20
+ &[data-size="large"] {
21
+ font-size: var(--xyd-font-size-large);
22
+ line-height: var(--xyd-line-height-large);
23
+ }
24
+ &[data-size="xlarge"] {
25
+ font-size: var(--xyd-font-size-xlarge);
26
+ line-height: var(--xyd-line-height-xlarge);
27
+ }
28
+ &[data-size="xxlarge"] {
29
+ font-size: var(--xyd-font-size-xxlarge);
30
+ line-height: var(--xyd-line-height-xxlarge);
31
+ }
32
+
33
+ &[data-kind="default"] {
34
+ color: var(--xyd-text-color--default);
35
+ }
36
+ &[data-kind="ghost"] {
37
+ color: var(--xyd-text-color--ghost);
38
+ }
39
+ &[data-kind="success"] {
40
+ color: var(--xyd-text-color--success);
41
+ }
42
+ &[data-kind="warn"] {
43
+ color: var(--xyd-text-color--warn);
44
+ }
45
+ &[data-kind="error"] {
46
+ color: var(--xyd-text-color--error);
47
+ }
48
+ &[data-kind="primary"] {
49
+ color: var(--xyd-text-color--primary);
50
+ }
51
+ &[data-kind="secondary"] {
52
+ color: var(--xyd-text-color--secondary);
53
+ }
54
+
55
+ &[data-weight="normal"] {
56
+ font-weight: var(--xyd-font-weight-normal);
57
+ }
58
+ &[data-weight="bold"] {
59
+ font-weight: var(--xyd-font-weight-medium);
60
+ }
61
+ &[data-weight="extra-bold"] {
62
+ font-weight: var(--xyd-font-weight-semibold);
63
+ }
64
+ }
65
+ `;
66
+
@@ -0,0 +1,79 @@
1
+ import React from "react"
2
+
3
+ import * as cn from "./Text.styles";
4
+
5
+ /**
6
+ * Available font sizes for the Text component
7
+ */
8
+ export type TextFontSizes = "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
9
+
10
+ /**
11
+ * Available text styles/kinds for the Text component
12
+ */
13
+ export type TextKindTypes = "default" | "ghost" | "success" | "warn" | "error" | "primary" | "secondary";
14
+
15
+ /**
16
+ * Available font weights for the Text component
17
+ */
18
+ export type TextFontWeights = "normal" | "bold" | "extra-bold";
19
+
20
+ /**
21
+ * Props for the Text component
22
+ */
23
+ export interface TextProps {
24
+ /** Font size of the text */
25
+ size?: TextFontSizes
26
+
27
+ /** Visual style/kind of the text */
28
+ kind?: TextKindTypes
29
+
30
+ /** Font weight of the text */
31
+ weight?: TextFontWeights
32
+
33
+ /** Content to be rendered inside the text component */
34
+ children?: React.ReactNode
35
+
36
+ /** Additional CSS class name */
37
+ className?: string
38
+
39
+ /** HTML id attribute */
40
+ id?: string
41
+
42
+ /** Click event handler */
43
+ onClick?: () => void
44
+
45
+ /** HTML tag to render the text as */
46
+ as?: "span" | "p"
47
+ }
48
+
49
+ /**
50
+ * A flexible text component that supports different sizes, styles, and weights.
51
+ *
52
+ * @category Component
53
+ */
54
+ export function Text({
55
+ size = "medium",
56
+ kind = "default",
57
+ weight = "normal",
58
+ children,
59
+ className,
60
+ id,
61
+ onClick,
62
+ as = "p"
63
+ }: TextProps) {
64
+ const Tag = as || "p";
65
+
66
+ return (
67
+ <Tag
68
+ className={`${cn.TextHost} ${className || ''}`}
69
+ data-size={size}
70
+ data-kind={kind}
71
+ data-weight={weight}
72
+ onClick={onClick}
73
+ id={id}
74
+ >
75
+ {children}
76
+ </Tag>
77
+ )
78
+ }
79
+
@@ -0,0 +1,3 @@
1
+ export {
2
+ Text
3
+ } from "./Text";
@@ -0,0 +1,44 @@
1
+ @layer defaults {
2
+ .TocCardHost {
3
+ display: block;
4
+ max-width: 250px;
5
+
6
+ [part="container"] {
7
+ }
8
+
9
+ [part="description"] {
10
+ color: var(--xyd-toccard-color);
11
+ letter-spacing: 0;
12
+ }
13
+
14
+ [part="link"] {
15
+ display: block;
16
+ border: 1px solid var(--xyd-toccard-border-color);
17
+ border-radius: 6px;
18
+ padding: 8px 16px 12px;
19
+ text-decoration: none;
20
+
21
+ &:hover {
22
+ border-color: var(--xyd-toccard-border-color--active);
23
+ }
24
+ }
25
+
26
+ [part="title-container"] {
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: space-between;
30
+ }
31
+
32
+ [part="title"] {
33
+ color: var(--xyd-toccard-title-color);
34
+ margin-bottom: 2px;
35
+ }
36
+
37
+ [part="link-icon"] {
38
+ width: 1em;
39
+ height: 1em;
40
+ object-fit: contain;
41
+ color: var(--xyd-toccard-icon-color);
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,42 @@
1
+ import React from "react";
2
+
3
+ import cn from "./TocCard.module.css";
4
+ import { Icon } from "writer";
5
+
6
+ interface TocCardProps {
7
+ title: string;
8
+ description: string;
9
+ href: string;
10
+ className?: string;
11
+ icon?: string;
12
+ as?: React.ElementType;
13
+ }
14
+
15
+ export function TocCard({ title, description, href, className, icon, as }: TocCardProps) {
16
+ const Link = as || $Link;
17
+
18
+ return <xyd-toccard
19
+ className={`${cn.TocCardHost} ${className || ""}`}
20
+ >
21
+ <div part="container">
22
+ <Link
23
+ part="link"
24
+ href={href}
25
+ target="_blank"
26
+ rel="noreferrer"
27
+ >
28
+ <div part="title-container">
29
+ <div part="title">{title}</div>
30
+ {icon && <Icon name={icon} size={16} />}
31
+ </div>
32
+ <div part="description">
33
+ {description}
34
+ </div>
35
+ </Link>
36
+ </div>
37
+ </xyd-toccard>
38
+ }
39
+
40
+ function $Link({ children, href, ...props }: React.ComponentProps<'a'>) {
41
+ return <a href={href} {...props}>{children}</a>
42
+ }
@@ -0,0 +1,3 @@
1
+ export {
2
+ TocCard
3
+ } from "./TocCard";
@@ -0,0 +1,51 @@
1
+ import React, { createContext, useContext } from "react"
2
+
3
+ import { TabsPrimary, TabsPrimaryProps } from "./TabsPrimary"
4
+ import { TabsSecondary, TabsSecondaryProps } from "./TabsSecondary";
5
+
6
+ interface TabsPropsCommon {
7
+ kind?: 'secondary' | null
8
+ }
9
+ // TODO: in the future unify the TabsPrimary and TabsSecondary components?
10
+ type TabsProps<T> = T & TabsPropsCommon
11
+
12
+ const TabsContext = createContext<TabsPropsCommon>({
13
+ kind: null
14
+ })
15
+
16
+ export function Tabs(props: TabsProps<TabsSecondaryProps | TabsPrimaryProps>) {
17
+ if (props.kind === 'secondary') {
18
+ return (
19
+ <TabsContext value={{ kind: 'secondary' }}>
20
+ <TabsSecondary {...props} />
21
+ </TabsContext>
22
+ )
23
+ }
24
+
25
+ return (
26
+ <TabsContext value={{}}>
27
+ <TabsPrimary {...props} />
28
+ </TabsContext>
29
+ )
30
+ }
31
+
32
+
33
+ Tabs.Item = function TabsItem(props: any) {
34
+ const { kind } = useContext(TabsContext)
35
+
36
+ if (kind === 'secondary') {
37
+ return <TabsSecondary.Item {...props} />
38
+ }
39
+
40
+ return <TabsPrimary.Item {...props} />
41
+ }
42
+
43
+ Tabs.Content = function TabsContent(props: any) {
44
+ const { kind } = useContext(TabsContext)
45
+
46
+ if (kind === 'secondary') {
47
+ return <TabsSecondary.Content {...props} />
48
+ }
49
+
50
+ return <TabsPrimary.Content {...props} />
51
+ }