@node-core/ui-components 1.0.1-cc5c2626b0639fe2088a736f54169ea3e10ed325 → 1.0.1-e1f87bde264af01e260a8efa4fab1749a2c6bc29

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 (262) hide show
  1. package/Common/AlertBox/index.js +5 -0
  2. package/Common/AlertBox/index.module.css +44 -50
  3. package/Common/AvatarGroup/Avatar/index.js +11 -0
  4. package/Common/AvatarGroup/Avatar/index.module.css +50 -30
  5. package/Common/AvatarGroup/Overlay/index.js +6 -0
  6. package/Common/AvatarGroup/Overlay/index.module.css +28 -21
  7. package/Common/AvatarGroup/index.js +21 -0
  8. package/Common/AvatarGroup/index.module.css +12 -11
  9. package/Common/Badge/index.js +7 -0
  10. package/Common/Badge/index.module.css +34 -26
  11. package/Common/BadgeGroup/index.js +6 -0
  12. package/Common/BadgeGroup/index.module.css +75 -51
  13. package/Common/Banner/index.js +4 -0
  14. package/Common/Banner/index.module.css +30 -27
  15. package/Common/BaseActiveLink/index.js +14 -0
  16. package/Common/BaseButton/index.js +10 -0
  17. package/Common/BaseButton/index.module.css +332 -105
  18. package/Common/BaseCodeBox/index.js +50 -0
  19. package/Common/BaseCodeBox/index.module.css +76 -58
  20. package/Common/BaseCrossLink/index.js +12 -0
  21. package/Common/BaseCrossLink/index.module.css +57 -39
  22. package/Common/BaseLinkTabs/index.js +5 -0
  23. package/Common/BaseLinkTabs/index.module.css +67 -33
  24. package/Common/BasePagination/Ellipsis/index.js +4 -0
  25. package/Common/BasePagination/Ellipsis/index.module.css +14 -8
  26. package/Common/BasePagination/PaginationListItem/index.js +6 -0
  27. package/Common/BasePagination/PaginationListItem/index.module.css +36 -21
  28. package/Common/BasePagination/PrevNextArrow.js +7 -0
  29. package/Common/BasePagination/index.js +10 -0
  30. package/Common/BasePagination/index.module.css +27 -26
  31. package/Common/BasePagination/useGetPageElements.js +77 -0
  32. package/Common/Blockquote/index.js +4 -0
  33. package/Common/Blockquote/index.module.css +44 -23
  34. package/Common/Breadcrumbs/BreadcrumbHomeLink/index.js +9 -0
  35. package/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css +3 -3
  36. package/Common/Breadcrumbs/BreadcrumbItem/index.js +6 -0
  37. package/Common/Breadcrumbs/BreadcrumbItem/index.module.css +38 -27
  38. package/Common/Breadcrumbs/BreadcrumbLink/index.js +5 -0
  39. package/Common/Breadcrumbs/BreadcrumbLink/index.module.css +26 -16
  40. package/Common/Breadcrumbs/BreadcrumbRoot/index.js +4 -0
  41. package/Common/Breadcrumbs/BreadcrumbRoot/index.module.css +8 -7
  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 +181 -66
  46. package/Common/CodeTabs/index.js +5 -0
  47. package/Common/CodeTabs/index.module.css +47 -36
  48. package/Common/DataTag/index.js +18 -0
  49. package/Common/DataTag/index.module.css +30 -32
  50. package/Common/GlowingBackdrop/index.js +5 -0
  51. package/Common/GlowingBackdrop/index.module.css +126 -28
  52. package/Common/LanguageDropDown/index.js +11 -0
  53. package/Common/LanguageDropDown/index.module.css +140 -42
  54. package/Common/Modal/index.js +10 -0
  55. package/Common/Modal/index.module.css +217 -62
  56. package/Common/NodejsLogo/index.js +7 -0
  57. package/Common/NodejsLogo/index.module.css +3 -4
  58. package/Common/Notification/index.js +6 -0
  59. package/Common/Notification/index.module.css +101 -17
  60. package/Common/Preview/index.js +7 -0
  61. package/Common/Preview/index.module.css +269 -65
  62. package/Common/Select/index.js +46 -0
  63. package/Common/Select/index.module.css +294 -127
  64. package/Common/Separator/index.js +7 -0
  65. package/Common/Separator/index.module.css +7 -10
  66. package/Common/Skeleton/index.js +18 -0
  67. package/Common/Skeleton/index.module.css +118 -21
  68. package/Common/Tabs/index.js +6 -0
  69. package/Common/Tabs/index.module.css +58 -40
  70. package/Common/ThemeToggle/index.js +7 -0
  71. package/Common/ThemeToggle/index.module.css +18 -11
  72. package/Common/Tooltip/index.js +8 -0
  73. package/Common/Tooltip/index.module.css +119 -29
  74. package/Containers/Article/index.js +4 -0
  75. package/Containers/Article/index.module.css +127 -58
  76. package/Containers/DocSideBar/index.js +1 -0
  77. package/Containers/Footer/index.js +22 -0
  78. package/Containers/Footer/index.module.css +51 -36
  79. package/Containers/MetaBar/index.js +12 -0
  80. package/Containers/MetaBar/index.module.css +101 -69
  81. package/Containers/NavBar/NavItem/index.js +7 -0
  82. package/Containers/NavBar/NavItem/index.module.css +50 -36
  83. package/Containers/NavBar/index.js +18 -0
  84. package/Containers/NavBar/index.module.css +176 -96
  85. package/Containers/Sidebar/ProgressionIcon/index.js +3 -0
  86. package/Containers/Sidebar/SidebarGroup/index.js +9 -0
  87. package/Containers/Sidebar/SidebarGroup/index.module.css +180 -52
  88. package/Containers/Sidebar/SidebarItem/index.js +11 -0
  89. package/Containers/Sidebar/SidebarItem/index.module.css +49 -38
  90. package/Containers/Sidebar/index.js +15 -0
  91. package/Containers/Sidebar/index.module.css +42 -24
  92. package/Icons/HexagonGrid.js +3 -0
  93. package/Icons/InstallationMethod/Choco.js +3 -0
  94. package/Icons/InstallationMethod/Devbox.js +3 -0
  95. package/Icons/InstallationMethod/Docker.js +3 -0
  96. package/Icons/InstallationMethod/FNM.js +3 -0
  97. package/Icons/InstallationMethod/Homebrew.js +3 -0
  98. package/Icons/InstallationMethod/N.js +5 -0
  99. package/Icons/InstallationMethod/NVM.js +3 -0
  100. package/Icons/InstallationMethod/Volta.js +3 -0
  101. package/Icons/InstallationMethod/{index.ts → index.js} +0 -1
  102. package/Icons/Logos/JsWhite.js +3 -0
  103. package/Icons/Logos/Nodejs.js +12 -0
  104. package/Icons/Logos/index.js +3 -0
  105. package/Icons/OperatingSystem/AIX.js +3 -0
  106. package/Icons/OperatingSystem/Apple.js +3 -0
  107. package/Icons/OperatingSystem/Linux.js +3 -0
  108. package/Icons/OperatingSystem/Microsoft.js +3 -0
  109. package/Icons/OperatingSystem/{index.ts → index.js} +0 -1
  110. package/Icons/PackageManager/Npm.js +3 -0
  111. package/Icons/PackageManager/Pnpm.js +3 -0
  112. package/Icons/PackageManager/Yarn.js +3 -0
  113. package/Icons/PackageManager/{index.ts → index.js} +0 -1
  114. package/Icons/Social/Bluesky.js +3 -0
  115. package/Icons/Social/Discord.js +3 -0
  116. package/Icons/Social/GitHub.js +3 -0
  117. package/Icons/Social/LinkedIn.js +3 -0
  118. package/Icons/Social/Mastodon.js +3 -0
  119. package/Icons/Social/Slack.js +3 -0
  120. package/Icons/Social/X.js +3 -0
  121. package/Icons/Social/{index.ts → index.js} +0 -1
  122. package/MDX/CodeTabs.js +16 -0
  123. package/package.json +6 -54
  124. package/stylelint/one-utility-class-per-line.mjs +34 -50
  125. package/stylelint/utils.mjs +19 -25
  126. package/styles/index.css +1124 -26
  127. package/types.js +1 -0
  128. package/Common/AlertBox/index.stories.tsx +0 -96
  129. package/Common/AlertBox/index.tsx +0 -24
  130. package/Common/AvatarGroup/Avatar/index.stories.tsx +0 -22
  131. package/Common/AvatarGroup/Avatar/index.tsx +0 -67
  132. package/Common/AvatarGroup/Overlay/index.stories.tsx +0 -33
  133. package/Common/AvatarGroup/Overlay/index.tsx +0 -37
  134. package/Common/AvatarGroup/__tests__/index.test.jsx +0 -55
  135. package/Common/AvatarGroup/index.stories.tsx +0 -56
  136. package/Common/AvatarGroup/index.tsx +0 -83
  137. package/Common/Badge/index.stories.tsx +0 -38
  138. package/Common/Badge/index.tsx +0 -35
  139. package/Common/BadgeGroup/index.stories.tsx +0 -35
  140. package/Common/BadgeGroup/index.tsx +0 -35
  141. package/Common/Banner/index.stories.tsx +0 -29
  142. package/Common/Banner/index.tsx +0 -18
  143. package/Common/BaseActiveLink/__tests__/index.test.jsx +0 -52
  144. package/Common/BaseActiveLink/index.tsx +0 -34
  145. package/Common/BaseButton/index.stories.tsx +0 -67
  146. package/Common/BaseButton/index.tsx +0 -59
  147. package/Common/BaseCodeBox/index.stories.tsx +0 -39
  148. package/Common/BaseCodeBox/index.tsx +0 -122
  149. package/Common/BaseCrossLink/index.stories.tsx +0 -38
  150. package/Common/BaseCrossLink/index.tsx +0 -46
  151. package/Common/BaseLinkTabs/index.stories.tsx +0 -34
  152. package/Common/BaseLinkTabs/index.tsx +0 -53
  153. package/Common/BasePagination/Ellipsis/index.stories.tsx +0 -10
  154. package/Common/BasePagination/Ellipsis/index.tsx +0 -11
  155. package/Common/BasePagination/PaginationListItem/__tests__/index.test.jsx +0 -58
  156. package/Common/BasePagination/PaginationListItem/index.stories.tsx +0 -40
  157. package/Common/BasePagination/PaginationListItem/index.tsx +0 -39
  158. package/Common/BasePagination/PrevNextArrow.tsx +0 -15
  159. package/Common/BasePagination/__tests__/index.test.jsx +0 -180
  160. package/Common/BasePagination/index.stories.tsx +0 -67
  161. package/Common/BasePagination/index.tsx +0 -77
  162. package/Common/BasePagination/useGetPageElements.tsx +0 -132
  163. package/Common/Blockquote/index.stories.tsx +0 -45
  164. package/Common/Blockquote/index.tsx +0 -11
  165. package/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx +0 -30
  166. package/Common/Breadcrumbs/BreadcrumbItem/index.tsx +0 -42
  167. package/Common/Breadcrumbs/BreadcrumbLink/index.tsx +0 -37
  168. package/Common/Breadcrumbs/BreadcrumbRoot/index.tsx +0 -20
  169. package/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx +0 -9
  170. package/Common/Breadcrumbs/index.stories.tsx +0 -94
  171. package/Common/Breadcrumbs/index.tsx +0 -81
  172. package/Common/ChangeHistory/index.stories.tsx +0 -130
  173. package/Common/ChangeHistory/index.tsx +0 -67
  174. package/Common/CodeTabs/index.stories.tsx +0 -73
  175. package/Common/CodeTabs/index.tsx +0 -16
  176. package/Common/DataTag/index.stories.tsx +0 -40
  177. package/Common/DataTag/index.tsx +0 -39
  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 -34
  183. package/Common/Modal/index.tsx +0 -50
  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/Select/__tests__/index.test.jsx +0 -67
  191. package/Common/Select/index.stories.tsx +0 -111
  192. package/Common/Select/index.tsx +0 -187
  193. package/Common/Separator/index.stories.tsx +0 -32
  194. package/Common/Separator/index.tsx +0 -27
  195. package/Common/Skeleton/index.tsx +0 -39
  196. package/Common/Tabs/__tests__/index.test.jsx +0 -52
  197. package/Common/Tabs/index.stories.tsx +0 -50
  198. package/Common/Tabs/index.tsx +0 -54
  199. package/Common/ThemeToggle/__tests__/index.test.jsx +0 -35
  200. package/Common/ThemeToggle/index.stories.tsx +0 -10
  201. package/Common/ThemeToggle/index.tsx +0 -15
  202. package/Common/Tooltip/index.stories.tsx +0 -73
  203. package/Common/Tooltip/index.tsx +0 -48
  204. package/Containers/Article/index.stories.tsx +0 -39
  205. package/Containers/Article/index.tsx +0 -9
  206. package/Containers/DocSideBar/index.tsx +0 -0
  207. package/Containers/Footer/index.stories.tsx +0 -27
  208. package/Containers/Footer/index.tsx +0 -95
  209. package/Containers/MetaBar/__tests__/index.test.jsx +0 -63
  210. package/Containers/MetaBar/index.stories.tsx +0 -80
  211. package/Containers/MetaBar/index.tsx +0 -72
  212. package/Containers/NavBar/NavItem/index.stories.tsx +0 -38
  213. package/Containers/NavBar/NavItem/index.tsx +0 -44
  214. package/Containers/NavBar/index.stories.tsx +0 -45
  215. package/Containers/NavBar/index.tsx +0 -94
  216. package/Containers/Sidebar/ProgressionIcon/index.tsx +0 -16
  217. package/Containers/Sidebar/SidebarGroup/index.stories.tsx +0 -36
  218. package/Containers/Sidebar/SidebarGroup/index.tsx +0 -49
  219. package/Containers/Sidebar/SidebarItem/index.stories.tsx +0 -15
  220. package/Containers/Sidebar/SidebarItem/index.tsx +0 -43
  221. package/Containers/Sidebar/index.stories.tsx +0 -88
  222. package/Containers/Sidebar/index.tsx +0 -70
  223. package/Icons/HexagonGrid.stories.tsx +0 -10
  224. package/Icons/HexagonGrid.tsx +0 -1434
  225. package/Icons/InstallationMethod/Choco.tsx +0 -78
  226. package/Icons/InstallationMethod/Devbox.tsx +0 -21
  227. package/Icons/InstallationMethod/Docker.tsx +0 -20
  228. package/Icons/InstallationMethod/FNM.tsx +0 -132
  229. package/Icons/InstallationMethod/Homebrew.tsx +0 -69
  230. package/Icons/InstallationMethod/N.tsx +0 -32
  231. package/Icons/InstallationMethod/NVM.tsx +0 -63
  232. package/Icons/InstallationMethod/Volta.tsx +0 -34
  233. package/Icons/Logos/JsGreen.tsx +0 -24
  234. package/Icons/Logos/JsWhite.tsx +0 -37
  235. package/Icons/Logos/Nodejs.tsx +0 -372
  236. package/Icons/Logos/NodejsStackedBlack.tsx +0 -98
  237. package/Icons/Logos/NodejsStackedDark.tsx +0 -124
  238. package/Icons/Logos/NodejsStackedLight.tsx +0 -123
  239. package/Icons/Logos/NodejsStackedWhite.tsx +0 -98
  240. package/Icons/Logos/index.ts +0 -17
  241. package/Icons/OperatingSystem/AIX.tsx +0 -46
  242. package/Icons/OperatingSystem/Apple.tsx +0 -23
  243. package/Icons/OperatingSystem/Linux.tsx +0 -969
  244. package/Icons/OperatingSystem/Microsoft.tsx +0 -19
  245. package/Icons/PackageManager/Npm.tsx +0 -21
  246. package/Icons/PackageManager/Pnpm.tsx +0 -22
  247. package/Icons/PackageManager/Yarn.tsx +0 -22
  248. package/Icons/Social/Bluesky.tsx +0 -19
  249. package/Icons/Social/Discord.tsx +0 -20
  250. package/Icons/Social/GitHub.tsx +0 -16
  251. package/Icons/Social/LinkedIn.tsx +0 -16
  252. package/Icons/Social/Mastodon.tsx +0 -36
  253. package/Icons/Social/Slack.tsx +0 -31
  254. package/Icons/Social/X.tsx +0 -16
  255. package/MDX/CodeTabs.tsx +0 -47
  256. package/stylelint/__tests__/index.test.mjs +0 -80
  257. package/styles/animations.css +0 -47
  258. package/styles/base.css +0 -17
  259. package/styles/effects.css +0 -12
  260. package/styles/markdown.css +0 -173
  261. package/styles/theme.css +0 -175
  262. package/types.ts +0 -25
@@ -0,0 +1,77 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import Ellipsis from '#ui/Common/BasePagination/Ellipsis';
3
+ import PaginationListItem from '#ui/Common/BasePagination/PaginationListItem';
4
+ const parsePages = (pages, currentPage, totalPages, as, getLabel) => pages.map(({ url }, index) => ({
5
+ url,
6
+ pageNumber: index + 1,
7
+ currentPage,
8
+ totalPages,
9
+ label: getLabel(index + 1),
10
+ as,
11
+ }));
12
+ const createPaginationListItems = (parsedPages) => parsedPages.map(page => _jsx(PaginationListItem, { ...page }, page.url));
13
+ // The minimum amount of elements are first page, current page, and last page
14
+ const MINIMUM_AMOUNT_OF_ELEMENTS = 3;
15
+ // Not more than two ellipses will be shown at the same time
16
+ const MAXIMUM_AMOUNT_OF_ELLIPSES = 2;
17
+ // The logic of this custom hook has taken the internal logic of
18
+ // React MUI's Pagination component as reference. More info here:
19
+ // https://github.com/mui/material-ui/blob/master/packages/mui-material/src/usePagination/usePagination.js
20
+ export const useGetPageElements = (currentPage, pages, currentPageSiblingsCount, as, getLabel) => {
21
+ const totalPages = pages.length;
22
+ const parsedPages = parsePages(pages, currentPage, totalPages, as, getLabel);
23
+ const currentPageIndex = currentPage - 1;
24
+ // We multiply it by two (2) as siblings are located on both left and right sides
25
+ // of the current page
26
+ const totalSiblingsCount = 2 * currentPageSiblingsCount;
27
+ const visiblePages = totalSiblingsCount +
28
+ MINIMUM_AMOUNT_OF_ELEMENTS +
29
+ MAXIMUM_AMOUNT_OF_ELLIPSES;
30
+ // When there are more pages than the visible pages to be shown
31
+ // we do not need to perform any calculations
32
+ if (totalPages <= visiblePages) {
33
+ return createPaginationListItems(parsedPages);
34
+ }
35
+ // The index of the far-left sibling of the current page
36
+ const leftSiblingsFirstIndex = Math.max(currentPageIndex - currentPageSiblingsCount, 1);
37
+ // The index of the far-right sibling of the current page
38
+ const rightSiblingsLastIndex = Math.min(currentPageIndex + currentPageSiblingsCount + 1, totalPages);
39
+ const firstIndex = 0;
40
+ const lastIndex = totalPages - 1;
41
+ // If there are at least two (2) elements between the far-left sibling of
42
+ // the current page, and the first page, we should show left ellipsis
43
+ // between them
44
+ const hasLeftEllipsis = leftSiblingsFirstIndex > firstIndex + 2;
45
+ // If there are at least two (2) elements between the far-right sibling of
46
+ // the current page, and the last page, we should show right ellipsis
47
+ // between them
48
+ const hasRightEllipsis = rightSiblingsLastIndex < lastIndex - 1;
49
+ if (!hasLeftEllipsis && hasRightEllipsis) {
50
+ const leftPagesLastIndex = MINIMUM_AMOUNT_OF_ELEMENTS + totalSiblingsCount;
51
+ const leftPages = parsedPages.slice(firstIndex, leftPagesLastIndex);
52
+ return [
53
+ ...createPaginationListItems(leftPages),
54
+ _jsx(Ellipsis, {}, "ellipsis"),
55
+ ...createPaginationListItems(parsedPages.slice(lastIndex)),
56
+ ];
57
+ }
58
+ if (hasLeftEllipsis && !hasRightEllipsis) {
59
+ const rightPagesFirstIndex = MINIMUM_AMOUNT_OF_ELEMENTS + totalSiblingsCount;
60
+ const rightPages = parsedPages.slice(totalPages - rightPagesFirstIndex);
61
+ return [
62
+ ...createPaginationListItems(parsedPages.slice(firstIndex, firstIndex + 1)),
63
+ _jsx(Ellipsis, {}, "ellipsis"),
64
+ ...createPaginationListItems(rightPages),
65
+ ];
66
+ }
67
+ if (hasLeftEllipsis && hasRightEllipsis) {
68
+ const middlePages = parsedPages.slice(leftSiblingsFirstIndex, rightSiblingsLastIndex);
69
+ return [
70
+ ...createPaginationListItems(parsedPages.slice(firstIndex, firstIndex + 1)),
71
+ _jsx(Ellipsis, {}, "ellipsis-1"),
72
+ ...createPaginationListItems(middlePages),
73
+ _jsx(Ellipsis, {}, "ellipsis-2"),
74
+ ...createPaginationListItems(parsedPages.slice(lastIndex)),
75
+ ];
76
+ }
77
+ };
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import styles from './index.module.css';
3
+ const Blockquote = ({ children }) => (_jsx("blockquote", { className: styles.wrapper, children: children }));
4
+ export default Blockquote;
@@ -1,29 +1,50 @@
1
- @reference "../../styles/index.css";
2
-
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
3
2
  .wrapper {
4
- @apply flex
5
- max-w-2xl
6
- flex-col
7
- items-start
8
- gap-4
9
- self-stretch
10
- border-l-2
11
- border-green-600
12
- py-2
13
- pl-5
14
- text-lg
15
- font-semibold
16
- text-neutral-900
17
- dark:border-green-400
18
- dark:text-white;
19
-
3
+ display: flex;
4
+ max-width: var(--container-2xl, 42rem);
5
+ flex-direction: column;
6
+ align-items: flex-start;
7
+ gap: calc(var(--spacing, 0.25rem)*4);
8
+ align-self: stretch;
9
+ border-left-style: var(--tw-border-style);
10
+ border-left-width: 2px;
11
+ border-color: var(--color-green-600, #417e38);
12
+ padding-block: calc(var(--spacing, 0.25rem)*2);
13
+ padding-left: calc(var(--spacing, 0.25rem)*5);
14
+ font-size: var(--text-lg, 1.125rem);
15
+ line-height: var(--tw-leading, var(--text-lg--line-height, 1.55556));
16
+ --tw-font-weight: var(--font-weight-semibold, 600);
17
+ font-weight: var(--font-weight-semibold, 600);
18
+ color: var(--color-neutral-900, #2c3437);
19
+ &:where([data-theme=dark], [data-theme=dark] *) {
20
+ border-color: var(--color-green-400, #84ba64);
21
+ }
22
+ &:where([data-theme=dark], [data-theme=dark] *) {
23
+ color: var(--color-white, #fff);
24
+ }
20
25
  & cite {
21
- @apply font-regular
22
- text-base
23
- not-italic;
24
-
26
+ font-size: var(--text-base, 1rem);
27
+ line-height: var(--tw-leading, var(--text-base--line-height, 1.5));
28
+ --tw-font-weight: var(--font-weight-regular, 400);
29
+ font-weight: var(--font-weight-regular, 400);
30
+ font-style: normal;
25
31
  &::before {
26
- @apply content-['—_'];
32
+ --tw-content: '— ';
33
+ content: var(--tw-content);
27
34
  }
28
35
  }
29
36
  }
37
+ @property --tw-border-style {
38
+ syntax: "*";
39
+ inherits: false;
40
+ initial-value: solid;
41
+ }
42
+ @property --tw-font-weight {
43
+ syntax: "*";
44
+ inherits: false;
45
+ }
46
+ @property --tw-content {
47
+ syntax: "*";
48
+ inherits: false;
49
+ initial-value: "";
50
+ }
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import HomeIcon from '@heroicons/react/24/outline/HomeIcon';
3
+ import BreadcrumbLink from '#ui/Common/Breadcrumbs/BreadcrumbLink';
4
+ import styles from './index.module.css';
5
+ const BreadcrumbHomeLink = ({ href = '/', ...props }) => {
6
+ const ariaLabel = props['aria-label'];
7
+ return (_jsx(BreadcrumbLink, { href: href, ...props, children: _jsx(HomeIcon, { title: ariaLabel, "aria-label": ariaLabel, className: styles.icon }) }));
8
+ };
9
+ export default BreadcrumbHomeLink;
@@ -1,5 +1,5 @@
1
- @reference "../../../styles/index.css";
2
-
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
3
2
  .icon {
4
- @apply size-4;
3
+ width: calc(var(--spacing, 0.25rem)*4);
4
+ height: calc(var(--spacing, 0.25rem)*4);
5
5
  }
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import ChevronRightIcon from '@heroicons/react/24/outline/ChevronRightIcon';
3
+ import classNames from 'classnames';
4
+ import styles from './index.module.css';
5
+ const BreadcrumbItem = ({ disableMicrodata, children, hidden = false, hideSeparator = false, position, ...props }) => (_jsxs("li", { ...props, itemProp: !disableMicrodata ? 'itemListElement' : undefined, itemScope: !disableMicrodata ? true : undefined, itemType: !disableMicrodata ? 'https://schema.org/ListItem' : undefined, className: classNames(styles.item, { [styles.visuallyHidden]: hidden }, props.className), "aria-hidden": hidden ? 'true' : undefined, children: [children, position && _jsx("meta", { itemProp: "position", content: `${position}` }), !hideSeparator && (_jsx(ChevronRightIcon, { "aria-hidden": "true", className: styles.separator }))] }));
6
+ export default BreadcrumbItem;
@@ -1,41 +1,52 @@
1
- @reference "../../../styles/index.css";
2
-
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
3
2
  .item {
4
- @apply flex
5
- max-w-fit
6
- items-center
7
- gap-5
8
- truncate
9
- text-sm
10
- font-medium;
11
-
3
+ display: flex;
4
+ max-width: fit-content;
5
+ align-items: center;
6
+ gap: calc(var(--spacing, 0.25rem)*5);
7
+ overflow: hidden;
8
+ text-overflow: ellipsis;
9
+ white-space: nowrap;
10
+ font-size: var(--text-sm, 0.875rem);
11
+ line-height: var(--tw-leading, var(--text-sm--line-height, 1.42857));
12
+ --tw-font-weight: var(--font-weight-medium, 500);
13
+ font-weight: var(--font-weight-medium, 500);
12
14
  &:last-child {
13
- @apply w-full;
15
+ width: 100%;
14
16
  }
15
-
16
17
  a {
17
- @apply shrink
18
- grow;
18
+ flex-shrink: 1;
19
+ flex-grow: 1;
19
20
  }
20
-
21
21
  &,
22
22
  > a,
23
23
  > a:hover {
24
- @apply text-neutral-800
25
- motion-safe:transition-colors
26
- dark:text-neutral-200;
24
+ color: var(--color-neutral-800, #556066);
25
+ @media (prefers-reduced-motion: no-preference) {
26
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
27
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));
28
+ transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));
29
+ }
30
+ &:where([data-theme=dark], [data-theme=dark] *) {
31
+ color: var(--color-neutral-200, #e9edf0);
32
+ }
27
33
  }
28
-
29
34
  &.visuallyHidden {
30
- @apply hidden;
35
+ display: none;
31
36
  }
32
-
33
37
  .separator {
34
- @apply size-4
35
- max-w-fit
36
- shrink-0
37
- grow
38
- text-neutral-600
39
- dark:text-neutral-400;
38
+ width: calc(var(--spacing, 0.25rem)*4);
39
+ height: calc(var(--spacing, 0.25rem)*4);
40
+ max-width: fit-content;
41
+ flex-shrink: 0;
42
+ flex-grow: 1;
43
+ color: var(--color-neutral-600, #929fa5);
44
+ &:where([data-theme=dark], [data-theme=dark] *) {
45
+ color: var(--color-neutral-400, #cbd4d9);
46
+ }
40
47
  }
41
48
  }
49
+ @property --tw-font-weight {
50
+ syntax: "*";
51
+ inherits: false;
52
+ }
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import classNames from 'classnames';
3
+ import styles from './index.module.css';
4
+ const BreadcrumbLink = ({ href, active, as: Component = 'a', ...props }) => (_jsx(Component, { itemScope: true, itemType: "http://schema.org/Thing", itemProp: "item", itemID: href?.toString(), href: href, className: classNames(styles.link, { [styles.active]: active }, props.className), "aria-current": active ? 'page' : undefined, ...props, children: _jsx("span", { itemProp: "name", children: props.children }) }));
5
+ export default BreadcrumbLink;
@@ -1,22 +1,32 @@
1
- @reference "../../../styles/index.css";
2
-
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
3
2
  .link {
4
- @apply max-w-fit
5
- truncate;
6
-
3
+ max-width: fit-content;
4
+ overflow: hidden;
5
+ text-overflow: ellipsis;
6
+ white-space: nowrap;
7
7
  &.active {
8
- @apply rounded
9
- bg-green-600
10
- px-2
11
- py-1
12
- font-semibold
13
- text-white
14
- motion-safe:transition-colors
15
- dark:text-white;
16
-
8
+ border-radius: 0.25rem;
9
+ background-color: var(--color-green-600, #417e38);
10
+ padding-inline: calc(var(--spacing, 0.25rem)*2);
11
+ padding-block: calc(var(--spacing, 0.25rem)*1);
12
+ --tw-font-weight: var(--font-weight-semibold, 600);
13
+ font-weight: var(--font-weight-semibold, 600);
14
+ color: var(--color-white, #fff);
15
+ @media (prefers-reduced-motion: no-preference) {
16
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
17
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));
18
+ transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));
19
+ }
20
+ &:where([data-theme=dark], [data-theme=dark] *) {
21
+ color: var(--color-white, #fff);
22
+ }
17
23
  &:hover {
18
- @apply bg-green-700
19
- text-white;
24
+ background-color: var(--color-green-700, #2c682c);
25
+ color: var(--color-white, #fff);
20
26
  }
21
27
  }
22
28
  }
29
+ @property --tw-font-weight {
30
+ syntax: "*";
31
+ inherits: false;
32
+ }
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import styles from './index.module.css';
3
+ const BreadcrumbRoot = ({ children, ...props }) => (_jsx("nav", { "aria-label": "breadcrumb", ...props, children: _jsx("ol", { itemScope: true, itemType: "https://schema.org/BreadcrumbList", className: styles.list, children: children }) }));
4
+ export default BreadcrumbRoot;
@@ -1,9 +1,10 @@
1
- @reference "../../../styles/index.css";
2
-
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
3
2
  .list {
4
- @apply xs:w-full
5
- flex
6
- w-screen
7
- gap-5
8
- px-6;
3
+ display: flex;
4
+ width: 100vw;
5
+ gap: calc(var(--spacing, 0.25rem)*5);
6
+ padding-inline: calc(var(--spacing, 0.25rem)*6);
7
+ @media (width >= 670px) {
8
+ width: 100%;
9
+ }
9
10
  }
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import BreadcrumbItem from '#ui/Common/Breadcrumbs/BreadcrumbItem';
3
+ const BreadcrumbTruncatedItem = () => (_jsx(BreadcrumbItem, { disableMicrodata: true, children: _jsx("button", { disabled: true, children: "\u2026" }) }));
4
+ export default BreadcrumbTruncatedItem;
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import BreadcrumbHomeLink from '#ui/Common/Breadcrumbs/BreadcrumbHomeLink';
4
+ import BreadcrumbItem from '#ui/Common/Breadcrumbs/BreadcrumbItem';
5
+ import BreadcrumbLink from '#ui/Common/Breadcrumbs/BreadcrumbLink';
6
+ import BreadcrumbRoot from '#ui/Common/Breadcrumbs/BreadcrumbRoot';
7
+ import BreadcrumbTruncatedItem from '#ui/Common/Breadcrumbs/BreadcrumbTruncatedItem';
8
+ const Breadcrumbs = ({ links = [], maxLength = 5, hideHome = false, as = 'a', homeLinkAriaLabel, }) => {
9
+ const totalLength = links.length + +!hideHome;
10
+ const lengthOffset = maxLength - totalLength;
11
+ const isOverflow = lengthOffset < 0;
12
+ const items = useMemo(() => links.map((link, index, items) => {
13
+ const position = index + 1;
14
+ const isLastItem = index === items.length - 1;
15
+ const hidden =
16
+ // We add 1 here to take into account of the truncated breadcrumb.
17
+ position <= Math.abs(lengthOffset) + 1 && isOverflow && !isLastItem;
18
+ return (_jsx(BreadcrumbItem, { hidden: hidden, hideSeparator: isLastItem, position: position + +!hideHome, children: link.href || isLastItem ? (_jsx(BreadcrumbLink, { as: as, href: link.href || undefined, active: isLastItem, children: link.label })) : (_jsx("span", { className: "opacity-70", children: link.label })) }, link.label.toString()));
19
+ }), [hideHome, isOverflow, lengthOffset, links]);
20
+ return (_jsxs(BreadcrumbRoot, { children: [!hideHome && (_jsx(BreadcrumbItem, { position: 1, children: _jsx(BreadcrumbHomeLink, { as: as, "aria-label": homeLinkAriaLabel }) })), isOverflow && _jsx(BreadcrumbTruncatedItem, {}), items] }));
21
+ };
22
+ export default Breadcrumbs;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDownIcon, ClockIcon } from '@heroicons/react/24/outline';
3
+ import classNames from 'classnames';
4
+ import styles from './index.module.css';
5
+ const ChangeHistory = ({ label = 'History', changes = [], className, as: As = 'a', 'aria-label': ariaLabel = label, ...props }) => (_jsx("div", { className: classNames('relative', 'inline-block', className), ...props, children: _jsxs("details", { className: "group", children: [_jsxs("summary", { className: styles.summary, role: "button", "aria-haspopup": "menu", children: [_jsx(ClockIcon, { className: "size-4" }), _jsx("span", { children: label }), _jsx(ChevronDownIcon, { className: "size-3 group-open:rotate-180 motion-safe:transition-transform" })] }), _jsx("div", { className: styles.dropdownContentWrapper, role: "menu", "aria-label": ariaLabel, children: _jsx("div", { className: styles.dropdownContentInner, children: changes.map((change, index) => {
6
+ const MenuItem = change.url ? As : 'div';
7
+ return (_jsxs(MenuItem, { className: styles.dropdownItem, role: "menuitem", tabIndex: 0, "aria-label": `${change.label}: ${change.versions.join(', ')}`, href: change.url, children: [_jsx("div", { className: styles.dropdownLabel, children: change.label }), _jsx("div", { className: styles.dropdownVersions, children: change.versions.join(', ') })] }, index));
8
+ }) }) })] }) }));
9
+ export default ChangeHistory;
@@ -1,83 +1,198 @@
1
- @reference "../../styles/index.css";
2
-
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
3
2
  .summary {
4
- @apply outline-hidden
5
- flex
6
- h-9
7
- cursor-pointer
8
- select-none
9
- items-center
10
- gap-2
11
- rounded-md
12
- border
13
- border-neutral-200
14
- p-2
15
- text-sm
16
- text-neutral-700
17
- motion-safe:transition-colors
18
- dark:border-neutral-900
19
- dark:text-neutral-300;
20
-
3
+ display: flex;
4
+ height: calc(var(--spacing, 0.25rem)*9);
5
+ cursor: pointer;
6
+ align-items: center;
7
+ gap: calc(var(--spacing, 0.25rem)*2);
8
+ border-radius: var(--radius-md, 0.375rem);
9
+ border-style: var(--tw-border-style);
10
+ border-width: 1px;
11
+ border-color: var(--color-neutral-200, #e9edf0);
12
+ padding: calc(var(--spacing, 0.25rem)*2);
13
+ font-size: var(--text-sm, 0.875rem);
14
+ line-height: var(--tw-leading, var(--text-sm--line-height, 1.42857));
15
+ color: var(--color-neutral-700, #6e7b83);
16
+ --tw-outline-style: none;
17
+ outline-style: none;
18
+ @media (forced-colors: active) {
19
+ outline: 2px solid transparent;
20
+ outline-offset: 2px;
21
+ }
22
+ -webkit-user-select: none;
23
+ user-select: none;
24
+ @media (prefers-reduced-motion: no-preference) {
25
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
26
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));
27
+ transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));
28
+ }
29
+ &:where([data-theme=dark], [data-theme=dark] *) {
30
+ border-color: var(--color-neutral-900, #2c3437);
31
+ }
32
+ &:where([data-theme=dark], [data-theme=dark] *) {
33
+ color: var(--color-neutral-300, #d9e1e4);
34
+ }
21
35
  &:hover,
22
36
  &:focus-visible {
23
- @apply bg-neutral-100
24
- dark:bg-neutral-900;
37
+ background-color: var(--color-neutral-100, #f6f7f9);
38
+ &:where([data-theme=dark], [data-theme=dark] *) {
39
+ background-color: var(--color-neutral-900, #2c3437);
40
+ }
25
41
  }
26
42
  }
27
-
28
43
  .dropdownContentWrapper {
29
- @apply absolute
30
- right-0
31
- top-full
32
- z-50
33
- mt-1
34
- max-h-80
35
- w-52
36
- overflow-hidden
37
- rounded-sm
38
- border
39
- border-neutral-200
40
- bg-white
41
- shadow-lg
42
- dark:border-neutral-900
43
- dark:bg-neutral-950;
44
- }
45
-
44
+ position: absolute;
45
+ top: 100%;
46
+ right: calc(var(--spacing, 0.25rem)*0);
47
+ z-index: 50;
48
+ margin-top: calc(var(--spacing, 0.25rem)*1);
49
+ max-height: calc(var(--spacing, 0.25rem)*80);
50
+ width: calc(var(--spacing, 0.25rem)*52);
51
+ overflow: hidden;
52
+ border-radius: var(--radius-sm, 0.25rem);
53
+ border-style: var(--tw-border-style);
54
+ border-width: 1px;
55
+ border-color: var(--color-neutral-200, #e9edf0);
56
+ background-color: var(--color-white, #fff);
57
+ --tw-shadow: 0px 4px 6px -2px var(--tw-shadow-color, color-mix(in srgb, #101828 3%, transparent)), 0px 12px 16px -4px var(--tw-shadow-color, color-mix(in srgb, #101828 8%, transparent));
58
+ @supports (color: color-mix(in lab, red, red)) {
59
+ --tw-shadow: 0px 4px 6px -2px var(--tw-shadow-color, color-mix(in oklab, var(--color-shadow, #101828) 3%, transparent)), 0px 12px 16px -4px var(--tw-shadow-color, color-mix(in oklab, var(--color-shadow, #101828) 8%, transparent));
60
+ }
61
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
62
+ &:where([data-theme=dark], [data-theme=dark] *) {
63
+ border-color: var(--color-neutral-900, #2c3437);
64
+ }
65
+ &:where([data-theme=dark], [data-theme=dark] *) {
66
+ background-color: var(--color-neutral-950, #0d121c);
67
+ }
68
+ }
46
69
  .dropdownContentInner {
47
- @apply max-h-80
48
- w-52
49
- overflow-y-auto;
70
+ max-height: calc(var(--spacing, 0.25rem)*80);
71
+ width: calc(var(--spacing, 0.25rem)*52);
72
+ overflow-y: auto;
50
73
  }
51
-
52
74
  .dropdownItem {
53
- @apply outline-hidden
54
- block
55
- px-2.5
56
- py-1.5
57
- text-sm
58
- font-medium
59
- text-neutral-800
60
- no-underline
61
- motion-safe:transition-colors
62
- dark:text-white;
63
-
75
+ display: block;
76
+ padding-inline: calc(var(--spacing, 0.25rem)*2.5);
77
+ padding-block: calc(var(--spacing, 0.25rem)*1.5);
78
+ font-size: var(--text-sm, 0.875rem);
79
+ line-height: var(--tw-leading, var(--text-sm--line-height, 1.42857));
80
+ --tw-font-weight: var(--font-weight-medium, 500);
81
+ font-weight: var(--font-weight-medium, 500);
82
+ color: var(--color-neutral-800, #556066);
83
+ text-decoration-line: none;
84
+ --tw-outline-style: none;
85
+ outline-style: none;
86
+ @media (forced-colors: active) {
87
+ outline: 2px solid transparent;
88
+ outline-offset: 2px;
89
+ }
90
+ @media (prefers-reduced-motion: no-preference) {
91
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
92
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(0.4, 0, 0.2, 1)));
93
+ transition-duration: var(--tw-duration, var(--default-transition-duration, 150ms));
94
+ }
95
+ &:where([data-theme=dark], [data-theme=dark] *) {
96
+ color: var(--color-white, #fff);
97
+ }
64
98
  &:hover,
65
99
  &:focus-visible {
66
- @apply bg-green-600
67
- text-white;
100
+ background-color: var(--color-green-600, #417e38);
101
+ color: var(--color-white, #fff);
68
102
  }
69
103
  }
70
-
71
104
  .dropdownLabel {
72
- @apply block
73
- text-sm
74
- font-medium
75
- leading-tight;
105
+ display: block;
106
+ font-size: var(--text-sm, 0.875rem);
107
+ line-height: var(--tw-leading, var(--text-sm--line-height, 1.42857));
108
+ --tw-leading: var(--leading-tight, 1.25);
109
+ line-height: var(--leading-tight, 1.25);
110
+ --tw-font-weight: var(--font-weight-medium, 500);
111
+ font-weight: var(--font-weight-medium, 500);
76
112
  }
77
-
78
113
  .dropdownVersions {
79
- @apply block
80
- text-xs
81
- leading-tight
82
- opacity-75;
114
+ display: block;
115
+ font-size: var(--text-xs, 0.75rem);
116
+ line-height: var(--tw-leading, var(--text-xs--line-height, 1.33333));
117
+ --tw-leading: var(--leading-tight, 1.25);
118
+ line-height: var(--leading-tight, 1.25);
119
+ opacity: 75%;
120
+ }
121
+ @property --tw-border-style {
122
+ syntax: "*";
123
+ inherits: false;
124
+ initial-value: solid;
125
+ }
126
+ @property --tw-shadow {
127
+ syntax: "*";
128
+ inherits: false;
129
+ initial-value: 0 0 #0000;
130
+ }
131
+ @property --tw-shadow-color {
132
+ syntax: "*";
133
+ inherits: false;
134
+ }
135
+ @property --tw-shadow-alpha {
136
+ syntax: "<percentage>";
137
+ inherits: false;
138
+ initial-value: 100%;
139
+ }
140
+ @property --tw-inset-shadow {
141
+ syntax: "*";
142
+ inherits: false;
143
+ initial-value: 0 0 #0000;
144
+ }
145
+ @property --tw-inset-shadow-color {
146
+ syntax: "*";
147
+ inherits: false;
148
+ }
149
+ @property --tw-inset-shadow-alpha {
150
+ syntax: "<percentage>";
151
+ inherits: false;
152
+ initial-value: 100%;
153
+ }
154
+ @property --tw-ring-color {
155
+ syntax: "*";
156
+ inherits: false;
157
+ }
158
+ @property --tw-ring-shadow {
159
+ syntax: "*";
160
+ inherits: false;
161
+ initial-value: 0 0 #0000;
162
+ }
163
+ @property --tw-inset-ring-color {
164
+ syntax: "*";
165
+ inherits: false;
166
+ }
167
+ @property --tw-inset-ring-shadow {
168
+ syntax: "*";
169
+ inherits: false;
170
+ initial-value: 0 0 #0000;
171
+ }
172
+ @property --tw-ring-inset {
173
+ syntax: "*";
174
+ inherits: false;
175
+ }
176
+ @property --tw-ring-offset-width {
177
+ syntax: "<length>";
178
+ inherits: false;
179
+ initial-value: 0px;
180
+ }
181
+ @property --tw-ring-offset-color {
182
+ syntax: "*";
183
+ inherits: false;
184
+ initial-value: #fff;
185
+ }
186
+ @property --tw-ring-offset-shadow {
187
+ syntax: "*";
188
+ inherits: false;
189
+ initial-value: 0 0 #0000;
190
+ }
191
+ @property --tw-font-weight {
192
+ syntax: "*";
193
+ inherits: false;
194
+ }
195
+ @property --tw-leading {
196
+ syntax: "*";
197
+ inherits: false;
83
198
  }