@node-core/ui-components 1.0.1-f948ce8a25da149fc61135f90a43e189c4909f5d → 1.2.0

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 (267) hide show
  1. package/Common/AlertBox/index.js +5 -0
  2. package/Common/AlertBox/index.module.css +2 -76
  3. package/Common/AvatarGroup/Avatar/index.js +12 -0
  4. package/Common/AvatarGroup/Avatar/index.module.css +2 -40
  5. package/Common/AvatarGroup/Overlay/index.js +6 -0
  6. package/Common/AvatarGroup/Overlay/index.module.css +2 -31
  7. package/Common/AvatarGroup/index.js +21 -0
  8. package/Common/AvatarGroup/index.module.css +2 -25
  9. package/Common/Badge/index.js +5 -0
  10. package/Common/Badge/index.module.css +2 -38
  11. package/Common/BadgeGroup/index.js +6 -0
  12. package/Common/BadgeGroup/index.module.css +2 -77
  13. package/Common/Banner/index.js +4 -0
  14. package/Common/Banner/index.module.css +2 -42
  15. package/Common/BaseActiveLink/index.js +14 -0
  16. package/Common/BaseButton/index.js +10 -0
  17. package/Common/BaseButton/index.module.css +2 -142
  18. package/Common/BaseCodeBox/index.js +50 -0
  19. package/Common/BaseCodeBox/index.module.css +2 -84
  20. package/Common/BaseCrossLink/index.js +12 -0
  21. package/Common/BaseCrossLink/index.module.css +2 -51
  22. package/Common/BaseLinkTabs/index.js +5 -0
  23. package/Common/BaseLinkTabs/index.module.css +2 -43
  24. package/Common/BasePagination/Ellipsis/index.js +4 -0
  25. package/Common/BasePagination/Ellipsis/index.module.css +2 -10
  26. package/Common/BasePagination/PaginationListItem/index.js +6 -0
  27. package/Common/BasePagination/PaginationListItem/index.module.css +2 -27
  28. package/Common/BasePagination/PrevNextArrow.js +7 -0
  29. package/Common/BasePagination/index.js +10 -0
  30. package/Common/BasePagination/index.module.css +2 -39
  31. package/Common/BasePagination/useGetPageElements.js +77 -0
  32. package/Common/Blockquote/index.js +4 -0
  33. package/Common/Blockquote/index.module.css +2 -29
  34. package/Common/Breadcrumbs/BreadcrumbHomeLink/index.js +9 -0
  35. package/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css +2 -5
  36. package/Common/Breadcrumbs/BreadcrumbItem/index.js +6 -0
  37. package/Common/Breadcrumbs/BreadcrumbItem/index.module.css +2 -41
  38. package/Common/Breadcrumbs/BreadcrumbLink/index.js +5 -0
  39. package/Common/Breadcrumbs/BreadcrumbLink/index.module.css +2 -22
  40. package/Common/Breadcrumbs/BreadcrumbRoot/index.js +4 -0
  41. package/Common/Breadcrumbs/BreadcrumbRoot/index.module.css +2 -9
  42. package/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.js +4 -0
  43. package/Common/Breadcrumbs/index.js +22 -0
  44. package/Common/ChangeHistory/index.js +9 -0
  45. package/Common/ChangeHistory/index.module.css +2 -0
  46. package/Common/CodeTabs/index.js +5 -0
  47. package/Common/CodeTabs/index.module.css +2 -56
  48. package/Common/DataTag/index.js +18 -0
  49. package/Common/DataTag/index.module.css +2 -0
  50. package/Common/GlowingBackdrop/index.js +5 -0
  51. package/Common/GlowingBackdrop/index.module.css +2 -32
  52. package/Common/LanguageDropDown/index.js +11 -0
  53. package/Common/LanguageDropDown/index.module.css +2 -53
  54. package/Common/Modal/index.js +10 -0
  55. package/Common/Modal/index.module.css +2 -79
  56. package/Common/NodejsLogo/index.js +7 -0
  57. package/Common/NodejsLogo/index.module.css +2 -6
  58. package/Common/Notification/index.js +6 -0
  59. package/Common/Notification/index.module.css +2 -20
  60. package/Common/Preview/index.js +7 -0
  61. package/Common/Preview/index.module.css +2 -79
  62. package/Common/Select/NoScriptSelect/index.js +10 -0
  63. package/Common/Select/StatelessSelect/index.js +31 -0
  64. package/Common/Select/index.js +47 -0
  65. package/Common/Select/index.module.css +2 -161
  66. package/Common/Separator/index.js +7 -0
  67. package/Common/Separator/index.module.css +2 -16
  68. package/Common/Skeleton/index.js +18 -0
  69. package/Common/Skeleton/index.module.css +2 -29
  70. package/Common/Tabs/index.js +6 -0
  71. package/Common/Tabs/index.module.css +2 -53
  72. package/Common/ThemeToggle/index.js +7 -0
  73. package/Common/ThemeToggle/index.module.css +2 -15
  74. package/Common/Tooltip/index.js +8 -0
  75. package/Common/Tooltip/index.module.css +2 -43
  76. package/Containers/Article/index.js +4 -0
  77. package/Containers/Article/index.module.css +2 -70
  78. package/Containers/Footer/index.js +21 -0
  79. package/Containers/Footer/index.module.css +2 -46
  80. package/Containers/MetaBar/index.js +12 -0
  81. package/Containers/MetaBar/index.module.css +2 -84
  82. package/Containers/NavBar/NavItem/index.js +7 -0
  83. package/Containers/NavBar/NavItem/index.module.css +2 -60
  84. package/Containers/NavBar/index.js +18 -0
  85. package/Containers/NavBar/index.module.css +2 -125
  86. package/Containers/Sidebar/ProgressionIcon/index.js +3 -0
  87. package/Containers/Sidebar/SidebarGroup/index.js +9 -0
  88. package/Containers/Sidebar/SidebarGroup/index.module.css +2 -26
  89. package/Containers/Sidebar/SidebarItem/index.js +11 -0
  90. package/Containers/Sidebar/SidebarItem/index.module.css +2 -35
  91. package/Containers/Sidebar/index.js +15 -0
  92. package/Containers/Sidebar/index.module.css +2 -31
  93. package/Icons/HexagonGrid.js +3 -0
  94. package/Icons/InstallationMethod/Choco.js +3 -0
  95. package/Icons/InstallationMethod/Devbox.js +3 -0
  96. package/Icons/InstallationMethod/Docker.js +3 -0
  97. package/Icons/InstallationMethod/FNM.js +3 -0
  98. package/Icons/InstallationMethod/Homebrew.js +3 -0
  99. package/Icons/InstallationMethod/N.js +5 -0
  100. package/Icons/InstallationMethod/NVM.js +3 -0
  101. package/Icons/InstallationMethod/Volta.js +3 -0
  102. package/Icons/InstallationMethod/{index.ts → index.js} +0 -1
  103. package/Icons/Logos/JsWhite.js +3 -0
  104. package/Icons/Logos/Nodejs.js +12 -0
  105. package/Icons/Logos/index.js +3 -0
  106. package/Icons/OperatingSystem/AIX.js +3 -0
  107. package/Icons/OperatingSystem/Apple.js +3 -0
  108. package/Icons/OperatingSystem/Linux.js +3 -0
  109. package/Icons/OperatingSystem/Microsoft.js +3 -0
  110. package/Icons/OperatingSystem/{index.ts → index.js} +0 -1
  111. package/Icons/PackageManager/Npm.js +3 -0
  112. package/Icons/PackageManager/Pnpm.js +3 -0
  113. package/Icons/PackageManager/Yarn.js +3 -0
  114. package/Icons/PackageManager/{index.ts → index.js} +0 -1
  115. package/Icons/Social/Bluesky.js +3 -0
  116. package/Icons/Social/Discord.js +3 -0
  117. package/Icons/Social/GitHub.js +3 -0
  118. package/Icons/Social/LinkedIn.js +3 -0
  119. package/Icons/Social/Mastodon.js +3 -0
  120. package/Icons/Social/Slack.js +3 -0
  121. package/Icons/Social/X.js +3 -0
  122. package/Icons/Social/{index.ts → index.js} +0 -1
  123. package/MDX/CodeTabs.js +29 -0
  124. package/Providers/NotificationProvider/index.js +16 -0
  125. package/Providers/NotificationProvider/index.module.css +2 -0
  126. package/package.json +26 -66
  127. package/stylelint/one-utility-class-per-line.mjs +34 -50
  128. package/stylelint/utils.mjs +19 -25
  129. package/styles/index.css +2 -34
  130. package/types.js +1 -0
  131. package/util/array.js +2 -0
  132. package/Common/AlertBox/index.stories.tsx +0 -73
  133. package/Common/AlertBox/index.tsx +0 -24
  134. package/Common/AvatarGroup/Avatar/index.stories.tsx +0 -22
  135. package/Common/AvatarGroup/Avatar/index.tsx +0 -67
  136. package/Common/AvatarGroup/Overlay/index.stories.tsx +0 -33
  137. package/Common/AvatarGroup/Overlay/index.tsx +0 -37
  138. package/Common/AvatarGroup/__tests__/index.test.jsx +0 -55
  139. package/Common/AvatarGroup/index.stories.tsx +0 -56
  140. package/Common/AvatarGroup/index.tsx +0 -87
  141. package/Common/Badge/index.stories.tsx +0 -38
  142. package/Common/Badge/index.tsx +0 -35
  143. package/Common/BadgeGroup/index.stories.tsx +0 -35
  144. package/Common/BadgeGroup/index.tsx +0 -35
  145. package/Common/Banner/index.stories.tsx +0 -29
  146. package/Common/Banner/index.tsx +0 -18
  147. package/Common/BaseActiveLink/__tests__/index.test.jsx +0 -52
  148. package/Common/BaseActiveLink/index.tsx +0 -34
  149. package/Common/BaseButton/index.stories.tsx +0 -67
  150. package/Common/BaseButton/index.tsx +0 -59
  151. package/Common/BaseCodeBox/index.stories.tsx +0 -39
  152. package/Common/BaseCodeBox/index.tsx +0 -133
  153. package/Common/BaseCrossLink/index.stories.tsx +0 -38
  154. package/Common/BaseCrossLink/index.tsx +0 -46
  155. package/Common/BaseLinkTabs/index.stories.tsx +0 -34
  156. package/Common/BaseLinkTabs/index.tsx +0 -53
  157. package/Common/BasePagination/Ellipsis/index.stories.tsx +0 -10
  158. package/Common/BasePagination/Ellipsis/index.tsx +0 -11
  159. package/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx +0 -58
  160. package/Common/BasePagination/PaginationListItem/index.stories.tsx +0 -40
  161. package/Common/BasePagination/PaginationListItem/index.tsx +0 -39
  162. package/Common/BasePagination/PrevNextArrow.tsx +0 -15
  163. package/Common/BasePagination/__tests__/index.test.jsx +0 -180
  164. package/Common/BasePagination/index.stories.tsx +0 -67
  165. package/Common/BasePagination/index.tsx +0 -77
  166. package/Common/BasePagination/useGetPageElements.tsx +0 -132
  167. package/Common/Blockquote/index.stories.tsx +0 -45
  168. package/Common/Blockquote/index.tsx +0 -11
  169. package/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx +0 -30
  170. package/Common/Breadcrumbs/BreadcrumbItem/index.tsx +0 -42
  171. package/Common/Breadcrumbs/BreadcrumbLink/index.tsx +0 -37
  172. package/Common/Breadcrumbs/BreadcrumbRoot/index.tsx +0 -20
  173. package/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx +0 -9
  174. package/Common/Breadcrumbs/index.stories.tsx +0 -94
  175. package/Common/Breadcrumbs/index.tsx +0 -81
  176. package/Common/CodeTabs/index.stories.tsx +0 -74
  177. package/Common/CodeTabs/index.tsx +0 -16
  178. package/Common/GlowingBackdrop/index.stories.tsx +0 -10
  179. package/Common/GlowingBackdrop/index.tsx +0 -13
  180. package/Common/LanguageDropDown/index.stories.tsx +0 -19
  181. package/Common/LanguageDropDown/index.tsx +0 -56
  182. package/Common/Modal/index.stories.tsx +0 -32
  183. package/Common/Modal/index.tsx +0 -48
  184. package/Common/NodejsLogo/index.stories.tsx +0 -14
  185. package/Common/NodejsLogo/index.tsx +0 -26
  186. package/Common/Notification/index.stories.tsx +0 -36
  187. package/Common/Notification/index.tsx +0 -34
  188. package/Common/Preview/index.stories.tsx +0 -44
  189. package/Common/Preview/index.tsx +0 -25
  190. package/Common/ProgressionSidebar/ProgressionSidebarGroup/index.module.css +0 -47
  191. package/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx +0 -35
  192. package/Common/ProgressionSidebar/ProgressionSidebarIcon/index.tsx +0 -16
  193. package/Common/ProgressionSidebar/ProgressionSidebarItem/index.module.css +0 -39
  194. package/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx +0 -32
  195. package/Common/ProgressionSidebar/index.module.css +0 -30
  196. package/Common/ProgressionSidebar/index.stories.tsx +0 -79
  197. package/Common/ProgressionSidebar/index.tsx +0 -59
  198. package/Common/Select/__tests__/index.test.jsx +0 -67
  199. package/Common/Select/index.stories.tsx +0 -111
  200. package/Common/Select/index.tsx +0 -187
  201. package/Common/Separator/index.stories.tsx +0 -32
  202. package/Common/Separator/index.tsx +0 -27
  203. package/Common/Skeleton/index.tsx +0 -39
  204. package/Common/Tabs/__tests__/index.test.jsx +0 -52
  205. package/Common/Tabs/index.stories.tsx +0 -50
  206. package/Common/Tabs/index.tsx +0 -54
  207. package/Common/ThemeToggle/__tests__/index.test.jsx +0 -35
  208. package/Common/ThemeToggle/index.stories.tsx +0 -10
  209. package/Common/ThemeToggle/index.tsx +0 -15
  210. package/Common/Tooltip/index.stories.tsx +0 -73
  211. package/Common/Tooltip/index.tsx +0 -48
  212. package/Containers/Article/index.stories.tsx +0 -39
  213. package/Containers/Article/index.tsx +0 -9
  214. package/Containers/Footer/index.stories.tsx +0 -27
  215. package/Containers/Footer/index.tsx +0 -95
  216. package/Containers/MetaBar/__tests__/index.test.jsx +0 -63
  217. package/Containers/MetaBar/index.stories.tsx +0 -80
  218. package/Containers/MetaBar/index.tsx +0 -72
  219. package/Containers/NavBar/NavItem/index.stories.tsx +0 -38
  220. package/Containers/NavBar/NavItem/index.tsx +0 -44
  221. package/Containers/NavBar/index.stories.tsx +0 -45
  222. package/Containers/NavBar/index.tsx +0 -94
  223. package/Containers/Sidebar/SidebarGroup/index.stories.tsx +0 -36
  224. package/Containers/Sidebar/SidebarGroup/index.tsx +0 -30
  225. package/Containers/Sidebar/SidebarItem/index.stories.tsx +0 -15
  226. package/Containers/Sidebar/SidebarItem/index.tsx +0 -26
  227. package/Containers/Sidebar/index.stories.tsx +0 -84
  228. package/Containers/Sidebar/index.tsx +0 -58
  229. package/Icons/HexagonGrid.stories.tsx +0 -10
  230. package/Icons/HexagonGrid.tsx +0 -1434
  231. package/Icons/InstallationMethod/Choco.tsx +0 -78
  232. package/Icons/InstallationMethod/Devbox.tsx +0 -21
  233. package/Icons/InstallationMethod/Docker.tsx +0 -20
  234. package/Icons/InstallationMethod/FNM.tsx +0 -132
  235. package/Icons/InstallationMethod/Homebrew.tsx +0 -69
  236. package/Icons/InstallationMethod/N.tsx +0 -32
  237. package/Icons/InstallationMethod/NVM.tsx +0 -63
  238. package/Icons/InstallationMethod/Volta.tsx +0 -34
  239. package/Icons/Logos/JsGreen.tsx +0 -24
  240. package/Icons/Logos/JsWhite.tsx +0 -37
  241. package/Icons/Logos/Nodejs.tsx +0 -188
  242. package/Icons/Logos/NodejsStackedBlack.tsx +0 -98
  243. package/Icons/Logos/NodejsStackedDark.tsx +0 -124
  244. package/Icons/Logos/NodejsStackedLight.tsx +0 -123
  245. package/Icons/Logos/NodejsStackedWhite.tsx +0 -98
  246. package/Icons/Logos/index.ts +0 -17
  247. package/Icons/OperatingSystem/AIX.tsx +0 -46
  248. package/Icons/OperatingSystem/Apple.tsx +0 -23
  249. package/Icons/OperatingSystem/Linux.tsx +0 -969
  250. package/Icons/OperatingSystem/Microsoft.tsx +0 -19
  251. package/Icons/PackageManager/Npm.tsx +0 -21
  252. package/Icons/PackageManager/Pnpm.tsx +0 -22
  253. package/Icons/PackageManager/Yarn.tsx +0 -22
  254. package/Icons/Social/Bluesky.tsx +0 -19
  255. package/Icons/Social/Discord.tsx +0 -20
  256. package/Icons/Social/GitHub.tsx +0 -16
  257. package/Icons/Social/LinkedIn.tsx +0 -16
  258. package/Icons/Social/Mastodon.tsx +0 -36
  259. package/Icons/Social/Slack.tsx +0 -31
  260. package/Icons/Social/X.tsx +0 -16
  261. package/stylelint/__tests__/index.test.mjs +0 -80
  262. package/styles/animations.css +0 -47
  263. package/styles/base.css +0 -17
  264. package/styles/effects.css +0 -12
  265. package/styles/markdown.css +0 -173
  266. package/styles/theme.css +0 -175
  267. package/types.ts +0 -25
@@ -1,94 +0,0 @@
1
- 'use client';
2
-
3
- import Hamburger from '@heroicons/react/24/solid/Bars3Icon';
4
- import XMark from '@heroicons/react/24/solid/XMarkIcon';
5
- import * as Label from '@radix-ui/react-label';
6
- import classNames from 'classnames';
7
- import { useState } from 'react';
8
- import type {
9
- FC,
10
- HTMLAttributeAnchorTarget,
11
- PropsWithChildren,
12
- ElementType,
13
- } from 'react';
14
-
15
- import NavItem from '#ui/Containers/NavBar/NavItem';
16
- import type { FormattedMessage, LinkLike } from '#ui/types';
17
-
18
- import style from './index.module.css';
19
-
20
- const navInteractionIcons = {
21
- show: <Hamburger className={style.navInteractionIcon} />,
22
- close: <XMark className={style.navInteractionIcon} />,
23
- };
24
-
25
- type NavbarProps = {
26
- navItems: Array<{
27
- text: FormattedMessage;
28
- link: string;
29
- target?: HTMLAttributeAnchorTarget | undefined;
30
- }>;
31
- Logo: ElementType;
32
- as: LinkLike;
33
- pathname: string;
34
- sidebarItemTogglerAriaLabel: string;
35
- };
36
-
37
- const NavBar: FC<PropsWithChildren<NavbarProps>> = ({
38
- children,
39
- Logo,
40
- as: Component = 'a',
41
- navItems,
42
- pathname,
43
- sidebarItemTogglerAriaLabel,
44
- }) => {
45
- const [isMenuOpen, setIsMenuOpen] = useState(false);
46
-
47
- return (
48
- <nav className={style.container}>
49
- <div className={style.nodeIconAndMobileItemsToggler}>
50
- <Component className={style.nodeIconWrapper} href="/" aria-label="Home">
51
- <Logo />
52
- </Component>
53
-
54
- <Label.Root
55
- className={style.sidebarItemTogglerLabel}
56
- htmlFor="sidebarItemToggler"
57
- role="button"
58
- aria-label={sidebarItemTogglerAriaLabel}
59
- >
60
- {navInteractionIcons[isMenuOpen ? 'close' : 'show']}
61
- </Label.Root>
62
- </div>
63
-
64
- <input
65
- className={classNames(['peer', style.sidebarItemToggler])}
66
- id="sidebarItemToggler"
67
- type="checkbox"
68
- onChange={e => setIsMenuOpen(() => e.target.checked)}
69
- aria-label={sidebarItemTogglerAriaLabel}
70
- tabIndex={-1}
71
- />
72
-
73
- <div className={`${style.main} hidden peer-checked:flex`}>
74
- <div className={style.navItems}>
75
- {navItems.map(({ text, link, target }) => (
76
- <NavItem
77
- pathname={pathname}
78
- as={Component}
79
- key={link}
80
- href={link}
81
- target={target}
82
- >
83
- {text}
84
- </NavItem>
85
- ))}
86
- </div>
87
-
88
- <div className={style.actionsWrapper}>{children}</div>
89
- </div>
90
- </nav>
91
- );
92
- };
93
-
94
- export default NavBar;
@@ -1,36 +0,0 @@
1
- import type { Meta as MetaObj, StoryObj } from '@storybook/react';
2
-
3
- import SidebarGroup from '#ui/Containers/Sidebar/SidebarGroup';
4
-
5
- type Story = StoryObj<typeof SidebarGroup>;
6
- type Meta = MetaObj<typeof SidebarGroup>;
7
-
8
- export const Default: Story = {
9
- args: {
10
- groupName: 'Example Group',
11
- items: [
12
- { label: 'Item 1', link: '/item1' },
13
- { label: 'Item 2', link: '/item2' },
14
- { label: 'Item 3', link: '/item3' },
15
- ],
16
- },
17
- };
18
-
19
- export const CustomGroup: Story = {
20
- args: {
21
- groupName: 'Custom Group',
22
- items: [
23
- { label: 'Custom Item 1', link: '/custom-item1' },
24
- { label: 'Custom Item 2', link: '/custom-item2' },
25
- ],
26
- },
27
- };
28
-
29
- export const EmptyGroup: Story = {
30
- args: {
31
- groupName: 'Empty Group',
32
- items: [],
33
- },
34
- };
35
-
36
- export default { component: SidebarGroup } as Meta;
@@ -1,30 +0,0 @@
1
- import type { ComponentProps, FC } from 'react';
2
-
3
- import SidebarItem from '#ui/Containers/Sidebar/SidebarItem';
4
- import type { FormattedMessage, LinkLike } from '#ui/types';
5
-
6
- import styles from './index.module.css';
7
-
8
- type SidebarGroupProps = {
9
- groupName: FormattedMessage;
10
- items: Array<Omit<ComponentProps<typeof SidebarItem>, 'as' | 'pathname'>>;
11
- as?: LinkLike;
12
- pathname?: string;
13
- };
14
-
15
- const SidebarGroup: FC<SidebarGroupProps> = ({
16
- groupName,
17
- items,
18
- ...props
19
- }) => (
20
- <section className={styles.group}>
21
- <label className={styles.groupName}>{groupName}</label>
22
- <ul className={styles.itemList}>
23
- {items.map(({ label, link }) => (
24
- <SidebarItem key={link} label={label} link={link} {...props} />
25
- ))}
26
- </ul>
27
- </section>
28
- );
29
-
30
- export default SidebarGroup;
@@ -1,15 +0,0 @@
1
- import type { Meta as MetaObj, StoryObj } from '@storybook/react';
2
-
3
- import SidebarItem from '#ui/Containers/Sidebar/SidebarItem';
4
-
5
- type Story = StoryObj<typeof SidebarItem>;
6
- type Meta = MetaObj<typeof SidebarItem>;
7
-
8
- export const Default: Story = {
9
- args: {
10
- label: 'Example Item',
11
- link: '/example',
12
- },
13
- };
14
-
15
- export default { component: SidebarItem } as Meta;
@@ -1,26 +0,0 @@
1
- import { ArrowUpRightIcon } from '@heroicons/react/24/solid';
2
- import type { FC } from 'react';
3
-
4
- import ActiveLink from '#ui/Common/BaseActiveLink';
5
- import type { FormattedMessage, LinkLike } from '#ui/types';
6
-
7
- import styles from './index.module.css';
8
-
9
- type SidebarItemProps = {
10
- label: FormattedMessage;
11
- link: string;
12
- as?: LinkLike;
13
- pathname?: string;
14
- };
15
-
16
- const SidebarItem: FC<SidebarItemProps> = ({ label, link, ...props }) => (
17
- <li className={styles.sideBarItem}>
18
- <ActiveLink href={link} activeClassName={styles.active} {...props}>
19
- <span className={styles.label}>{label}</span>
20
-
21
- {link.startsWith('http') && <ArrowUpRightIcon className={styles.icon} />}
22
- </ActiveLink>
23
- </li>
24
- );
25
-
26
- export default SidebarItem;
@@ -1,84 +0,0 @@
1
- import type { Meta as MetaObj, StoryObj } from '@storybook/react';
2
-
3
- import Sidebar from '#ui/Containers/Sidebar';
4
-
5
- type Story = StoryObj<typeof Sidebar>;
6
- type Meta = MetaObj<typeof Sidebar>;
7
-
8
- export const Default: Story = {
9
- args: {
10
- groups: [
11
- {
12
- groupName: 'About Node.js',
13
- items: [
14
- {
15
- link: '/item1',
16
- label: 'About Node.js',
17
- },
18
- {
19
- link: '/item2',
20
- label: 'Project Governance',
21
- },
22
- {
23
- link: '/item3',
24
- label: 'Releases',
25
- },
26
- {
27
- link: '/item4',
28
- label: 'Branding',
29
- },
30
- {
31
- link: '/item5',
32
- label: 'Privacy Policy',
33
- },
34
- {
35
- link: '/item6',
36
- label: 'Security Reporting',
37
- },
38
- ],
39
- },
40
- {
41
- groupName: 'Get Involved',
42
- items: [
43
- {
44
- link: '/item7',
45
- label: 'Get Involved',
46
- },
47
- {
48
- link: '/item8',
49
- label: 'Collab Summit',
50
- },
51
- {
52
- link: '/item9',
53
- label: 'Contribute',
54
- },
55
- {
56
- link: '/item10',
57
- label: 'Code of Conduct',
58
- },
59
- ],
60
- },
61
- {
62
- groupName: 'Download',
63
- items: [
64
- {
65
- link: '/item11',
66
- label: 'Download',
67
- },
68
- {
69
- link: '/item12',
70
- label: 'Package Manager',
71
- },
72
- {
73
- link: '/item13',
74
- label: 'Node.js Releases',
75
- },
76
- ],
77
- },
78
- ],
79
- title: 'Sidebar',
80
- onSelect: console.log,
81
- },
82
- };
83
-
84
- export default { component: Sidebar } as Meta;
@@ -1,58 +0,0 @@
1
- import type { ComponentProps, FC } from 'react';
2
-
3
- import Select from '#ui/Common/Select';
4
- import SidebarGroup from '#ui/Containers/Sidebar/SidebarGroup';
5
- import type { LinkLike } from '#ui/types';
6
-
7
- import styles from './index.module.css';
8
-
9
- type SidebarProps = {
10
- groups: Array<Omit<ComponentProps<typeof SidebarGroup>, 'as' | 'pathname'>>;
11
- pathname?: string;
12
- title: string;
13
- onSelect: (value: string) => void;
14
- as?: LinkLike;
15
- };
16
-
17
- const SideBar: FC<SidebarProps> = ({
18
- groups,
19
- pathname,
20
- title,
21
- onSelect,
22
- as,
23
- }) => {
24
- const selectItems = groups.map(({ items, groupName }) => ({
25
- label: groupName,
26
- items: items.map(({ label, link }) => ({ value: link, label })),
27
- }));
28
-
29
- const currentItem = selectItems
30
- .map(item => item.items)
31
- .flat()
32
- .find(item => pathname === item.value);
33
-
34
- return (
35
- <aside className={styles.wrapper}>
36
- {selectItems.length > 0 && (
37
- <Select
38
- label={title}
39
- values={selectItems}
40
- defaultValue={currentItem?.value}
41
- onChange={onSelect}
42
- />
43
- )}
44
-
45
- {groups.map(({ groupName, items }) => (
46
- <SidebarGroup
47
- key={groupName.toString()}
48
- groupName={groupName}
49
- items={items}
50
- pathname={pathname}
51
- as={as}
52
- />
53
- ))}
54
- </aside>
55
- );
56
- };
57
-
58
- export default SideBar;
@@ -1,10 +0,0 @@
1
- import type { Meta as MetaObj, StoryObj } from '@storybook/react';
2
-
3
- import HexagonGrid from '#ui/Icons/HexagonGrid';
4
-
5
- type Story = StoryObj<typeof HexagonGrid>;
6
- type Meta = MetaObj<typeof HexagonGrid>;
7
-
8
- export const Default: Story = {};
9
-
10
- export default { component: HexagonGrid } as Meta;