@hellboy/ds 0.1.2 → 0.2.7

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 (298) hide show
  1. package/README.md +568 -71
  2. package/{src/style/components/badge → dist/components}/badge.css +9 -25
  3. package/dist/components/badge.d.mts +12 -0
  4. package/dist/components/badge.d.ts +12 -0
  5. package/dist/components/badge.js +42 -0
  6. package/dist/components/badge.mjs +15 -0
  7. package/dist/components/banner.css +280 -0
  8. package/dist/components/banner.d.mts +12 -0
  9. package/dist/components/banner.d.ts +12 -0
  10. package/dist/components/banner.js +184 -0
  11. package/dist/components/banner.mjs +147 -0
  12. package/dist/components/button-group.css +289 -0
  13. package/dist/components/button-group.d.mts +81 -0
  14. package/dist/components/button-group.d.ts +81 -0
  15. package/dist/components/button-group.js +180 -0
  16. package/dist/components/button-group.mjs +143 -0
  17. package/{src/style/components/button → dist/components}/button.css +59 -62
  18. package/dist/components/button.d.mts +57 -0
  19. package/dist/components/button.d.ts +57 -0
  20. package/dist/components/button.js +129 -0
  21. package/dist/components/button.mjs +92 -0
  22. package/{src/style/components/card → dist/components}/card.css +9 -30
  23. package/dist/components/card.d.mts +31 -0
  24. package/dist/components/card.d.ts +31 -0
  25. package/dist/components/card.js +59 -0
  26. package/dist/components/card.mjs +32 -0
  27. package/{src/style → dist}/components/checkbox.css +51 -43
  28. package/dist/components/checkbox.d.mts +31 -0
  29. package/dist/components/checkbox.d.ts +31 -0
  30. package/dist/components/checkbox.js +130 -0
  31. package/dist/components/checkbox.mjs +93 -0
  32. package/{src/style/components/code-block → dist/components}/code-block.css +3 -7
  33. package/dist/components/code-block.d.mts +24 -0
  34. package/dist/components/code-block.d.ts +24 -0
  35. package/dist/components/code-block.js +43 -0
  36. package/dist/components/code-block.mjs +16 -0
  37. package/dist/components/color-control.css +285 -0
  38. package/dist/components/color-control.d.mts +5 -0
  39. package/dist/components/color-control.d.ts +5 -0
  40. package/dist/components/color-control.js +534 -0
  41. package/dist/components/color-control.mjs +497 -0
  42. package/dist/components/dialog.css +930 -0
  43. package/dist/components/dialog.d.mts +32 -0
  44. package/dist/components/dialog.d.ts +32 -0
  45. package/dist/components/dialog.js +1111 -0
  46. package/dist/components/dialog.mjs +1074 -0
  47. package/dist/components/divider.css +356 -0
  48. package/dist/components/divider.d.mts +32 -0
  49. package/dist/components/divider.d.ts +32 -0
  50. package/dist/components/divider.js +344 -0
  51. package/dist/components/divider.mjs +307 -0
  52. package/{src/style/components/drag-handle → dist/components}/drag-handle.css +3 -18
  53. package/dist/components/drag-handle.d.mts +11 -0
  54. package/dist/components/drag-handle.d.ts +11 -0
  55. package/dist/components/drag-handle.js +103 -0
  56. package/dist/components/drag-handle.mjs +66 -0
  57. package/dist/components/drawer.css +1027 -0
  58. package/dist/components/drawer.d.mts +14 -0
  59. package/dist/components/drawer.d.ts +14 -0
  60. package/dist/components/drawer.js +1072 -0
  61. package/dist/components/drawer.mjs +1035 -0
  62. package/dist/components/floating-bar.css +17 -0
  63. package/dist/components/floating-bar.d.mts +25 -0
  64. package/dist/components/floating-bar.d.ts +25 -0
  65. package/dist/components/floating-bar.js +52 -0
  66. package/dist/components/floating-bar.mjs +25 -0
  67. package/dist/components/footer.css +40 -0
  68. package/dist/components/footer.d.mts +8 -0
  69. package/dist/components/footer.d.ts +8 -0
  70. package/dist/components/footer.js +44 -0
  71. package/dist/components/footer.mjs +17 -0
  72. package/dist/components/grid.css +47 -0
  73. package/dist/components/grid.d.mts +27 -0
  74. package/dist/components/grid.d.ts +27 -0
  75. package/dist/components/grid.js +52 -0
  76. package/dist/components/grid.mjs +25 -0
  77. package/dist/components/header.css +1075 -0
  78. package/dist/components/header.d.mts +35 -0
  79. package/dist/components/header.d.ts +35 -0
  80. package/dist/components/header.js +1402 -0
  81. package/dist/components/header.mjs +1365 -0
  82. package/dist/components/hero.css +121 -0
  83. package/dist/components/hero.d.mts +111 -0
  84. package/dist/components/hero.d.ts +111 -0
  85. package/dist/components/hero.js +285 -0
  86. package/dist/components/hero.mjs +248 -0
  87. package/{src/style/components/icons → dist/components}/icons.css +14 -15
  88. package/dist/components/icons.d.mts +104 -0
  89. package/dist/components/icons.d.ts +104 -0
  90. package/dist/components/icons.js +239 -0
  91. package/dist/components/icons.mjs +203 -0
  92. package/{src/style/components/input → dist/components}/input.css +189 -102
  93. package/dist/components/input.d.mts +114 -0
  94. package/dist/components/input.d.ts +114 -0
  95. package/dist/components/input.js +926 -0
  96. package/dist/components/input.mjs +879 -0
  97. package/dist/components/layout.css +551 -0
  98. package/dist/components/layout.d.mts +16 -0
  99. package/dist/components/layout.d.ts +16 -0
  100. package/dist/components/layout.js +387 -0
  101. package/dist/components/layout.mjs +352 -0
  102. package/{src/style/components/list → dist/components}/list.css +47 -41
  103. package/dist/components/list.d.mts +46 -0
  104. package/dist/components/list.d.ts +46 -0
  105. package/dist/components/list.js +124 -0
  106. package/dist/components/list.mjs +96 -0
  107. package/dist/components/navbar.css +706 -0
  108. package/dist/components/navbar.d.mts +56 -0
  109. package/dist/components/navbar.d.ts +56 -0
  110. package/dist/components/navbar.js +994 -0
  111. package/dist/components/navbar.mjs +952 -0
  112. package/{src/style/components/page-index → dist/components}/page-index.css +2 -47
  113. package/dist/components/page-index.d.mts +25 -0
  114. package/dist/components/page-index.d.ts +25 -0
  115. package/dist/components/page-index.js +239 -0
  116. package/dist/components/page-index.mjs +202 -0
  117. package/{src/style/components/page → dist/components}/page.css +4 -15
  118. package/dist/components/page.d.mts +30 -0
  119. package/dist/components/page.d.ts +30 -0
  120. package/dist/components/page.js +40 -0
  121. package/dist/components/page.mjs +13 -0
  122. package/dist/components/popover.css +87 -0
  123. package/dist/components/popover.d.mts +22 -0
  124. package/dist/components/popover.d.ts +22 -0
  125. package/dist/components/popover.js +243 -0
  126. package/dist/components/popover.mjs +206 -0
  127. package/{src/style → dist}/components/radio.css +8 -51
  128. package/dist/components/radio.d.mts +59 -0
  129. package/dist/components/radio.d.ts +59 -0
  130. package/dist/components/radio.js +133 -0
  131. package/dist/components/radio.mjs +95 -0
  132. package/dist/components/section.css +993 -0
  133. package/dist/components/section.d.mts +33 -0
  134. package/dist/components/section.d.ts +33 -0
  135. package/dist/components/section.js +1401 -0
  136. package/dist/components/section.mjs +1364 -0
  137. package/dist/components/select.css +391 -0
  138. package/dist/components/select.d.mts +63 -0
  139. package/dist/components/select.d.ts +63 -0
  140. package/dist/components/select.js +452 -0
  141. package/dist/components/select.mjs +415 -0
  142. package/{src/style/components/slider → dist/components}/slider.css +55 -33
  143. package/dist/components/slider.d.mts +69 -0
  144. package/dist/components/slider.d.ts +69 -0
  145. package/dist/components/slider.js +254 -0
  146. package/dist/components/slider.mjs +217 -0
  147. package/dist/components/switch.css +1081 -0
  148. package/dist/components/switch.d.mts +33 -0
  149. package/dist/components/switch.d.ts +33 -0
  150. package/dist/components/switch.js +1092 -0
  151. package/dist/components/switch.mjs +1055 -0
  152. package/{src/style/components/table → dist/components}/table.css +3 -28
  153. package/dist/components/table.d.mts +42 -0
  154. package/dist/components/table.d.ts +42 -0
  155. package/dist/components/table.js +108 -0
  156. package/dist/components/table.mjs +76 -0
  157. package/dist/components/tag.css +97 -0
  158. package/dist/components/tag.d.mts +12 -0
  159. package/dist/components/tag.d.ts +12 -0
  160. package/dist/components/tag.js +42 -0
  161. package/dist/components/tag.mjs +15 -0
  162. package/dist/components/textarea.css +1359 -0
  163. package/dist/components/textarea.d.mts +84 -0
  164. package/dist/components/textarea.d.ts +84 -0
  165. package/dist/components/textarea.js +1962 -0
  166. package/dist/components/textarea.mjs +1924 -0
  167. package/{src/style/components/theme-control → dist/components}/theme-control.css +3 -7
  168. package/dist/components/theme-control.d.mts +9 -0
  169. package/dist/components/theme-control.d.ts +9 -0
  170. package/dist/components/theme-control.js +235 -0
  171. package/dist/components/theme-control.mjs +200 -0
  172. package/{src/style/components/tooltip → dist/components}/tooltip.css +5 -13
  173. package/dist/components/tooltip.d.mts +12 -0
  174. package/dist/components/tooltip.d.ts +12 -0
  175. package/dist/components/tooltip.js +200 -0
  176. package/dist/components/tooltip.mjs +163 -0
  177. package/dist/icons-Czahnf-r.d.mts +15 -0
  178. package/dist/icons-Czahnf-r.d.ts +15 -0
  179. package/dist/index.css +2915 -2068
  180. package/dist/index.d.mts +144 -721
  181. package/dist/index.d.ts +144 -721
  182. package/dist/index.js +4076 -2282
  183. package/dist/index.mjs +4132 -2366
  184. package/dist/theme.css +34 -34
  185. package/package.json +27 -8
  186. package/dist/index.css.map +0 -1
  187. package/dist/index.js.map +0 -1
  188. package/dist/index.mjs.map +0 -1
  189. package/hellboy-ds-0.1.2.tgz +0 -0
  190. package/src/components/badge/Badge.tsx +0 -29
  191. package/src/components/badge/index.ts +0 -1
  192. package/src/components/banner/Banner.tsx +0 -48
  193. package/src/components/banner/banner.css +0 -44
  194. package/src/components/banner/index.ts +0 -1
  195. package/src/components/button/button.tsx +0 -127
  196. package/src/components/button/index.ts +0 -1
  197. package/src/components/card/card.tsx +0 -57
  198. package/src/components/card/index.ts +0 -1
  199. package/src/components/checkbox/Checkbox.tsx +0 -98
  200. package/src/components/checkbox/index.ts +0 -1
  201. package/src/components/code-block/code-block.tsx +0 -44
  202. package/src/components/code-block/index.ts +0 -1
  203. package/src/components/color-control/color-control.tsx +0 -322
  204. package/src/components/color-control/index.ts +0 -1
  205. package/src/components/drag-handle/DragHandle.tsx +0 -78
  206. package/src/components/drag-handle/index.ts +0 -1
  207. package/src/components/drawer/drawer.tsx +0 -82
  208. package/src/components/drawer/index.ts +0 -1
  209. package/src/components/floating-bar/floating-bar.tsx +0 -52
  210. package/src/components/floating-bar/index.ts +0 -2
  211. package/src/components/footer/footer.tsx +0 -28
  212. package/src/components/footer/index.ts +0 -1
  213. package/src/components/grid/Grid.tsx +0 -53
  214. package/src/components/grid/index.ts +0 -1
  215. package/src/components/header/header.tsx +0 -57
  216. package/src/components/header/index.ts +0 -1
  217. package/src/components/icons/icons.tsx +0 -44
  218. package/src/components/icons/index.ts +0 -1
  219. package/src/components/index.ts +0 -29
  220. package/src/components/input/DatePicker.tsx +0 -133
  221. package/src/components/input/Input.tsx +0 -220
  222. package/src/components/input/InputDate.tsx +0 -10
  223. package/src/components/input/InputDateTime.tsx +0 -10
  224. package/src/components/input/InputEmail.tsx +0 -10
  225. package/src/components/input/InputField.tsx +0 -137
  226. package/src/components/input/InputNumber.tsx +0 -10
  227. package/src/components/input/InputPassword.tsx +0 -10
  228. package/src/components/input/InputSearch.tsx +0 -10
  229. package/src/components/input/InputTel.tsx +0 -10
  230. package/src/components/input/InputText.tsx +0 -10
  231. package/src/components/input/InputTime.tsx +0 -10
  232. package/src/components/input/InputUrl.tsx +0 -10
  233. package/src/components/input/TimePicker.tsx +0 -151
  234. package/src/components/input/index.ts +0 -11
  235. package/src/components/layout/Layout.tsx +0 -244
  236. package/src/components/layout/index.ts +0 -1
  237. package/src/components/list/List.tsx +0 -159
  238. package/src/components/list/index.ts +0 -1
  239. package/src/components/navbar/MenuCategory.tsx +0 -20
  240. package/src/components/navbar/MenuGroup.tsx +0 -288
  241. package/src/components/navbar/MenuItem.tsx +0 -65
  242. package/src/components/navbar/Navbar.tsx +0 -23
  243. package/src/components/navbar/index.ts +0 -4
  244. package/src/components/page/index.ts +0 -1
  245. package/src/components/page/page.tsx +0 -46
  246. package/src/components/page-index/PageIndex.tsx +0 -275
  247. package/src/components/page-index/index.ts +0 -1
  248. package/src/components/popover/index.ts +0 -1
  249. package/src/components/popover/popover.tsx +0 -199
  250. package/src/components/radio/Radio.tsx +0 -176
  251. package/src/components/radio/index.ts +0 -1
  252. package/src/components/section/index.ts +0 -1
  253. package/src/components/section/section.tsx +0 -66
  254. package/src/components/select/Select.tsx +0 -212
  255. package/src/components/select/index.ts +0 -1
  256. package/src/components/slider/Slider.tsx +0 -267
  257. package/src/components/slider/index.ts +0 -1
  258. package/src/components/switch/index.ts +0 -1
  259. package/src/components/switch/switch.tsx +0 -99
  260. package/src/components/table/Table.tsx +0 -147
  261. package/src/components/table/index.ts +0 -1
  262. package/src/components/theme-control/index.ts +0 -1
  263. package/src/components/theme-control/theme-control.tsx +0 -78
  264. package/src/components/tooltip/index.ts +0 -1
  265. package/src/components/tooltip/tooltip.tsx +0 -207
  266. package/src/contexts/NavbarTooltipContext.tsx +0 -48
  267. package/src/contexts/index.ts +0 -1
  268. package/src/foundations/motion.md +0 -136
  269. package/src/index.ts +0 -40
  270. package/src/style/_shared/field.css +0 -69
  271. package/src/style/components/color-control/color-control.css +0 -126
  272. package/src/style/components/drawer/drawer.css +0 -210
  273. package/src/style/components/floating-bar/floating-bar.css +0 -39
  274. package/src/style/components/footer/footer.css +0 -108
  275. package/src/style/components/grid/grid.css +0 -33
  276. package/src/style/components/header/header.css +0 -44
  277. package/src/style/components/layout/layout.css +0 -205
  278. package/src/style/components/navbar/navbar.css +0 -342
  279. package/src/style/components/popover/popover.css +0 -44
  280. package/src/style/components/section/section.css +0 -67
  281. package/src/style/components/select/select.css +0 -143
  282. package/src/style/components/switch/switch.css +0 -267
  283. package/src/style/foundations/global.css +0 -316
  284. package/src/style/foundations/motion.css +0 -164
  285. package/src/style/foundations/spacing.css +0 -51
  286. package/src/style/foundations/typography.css +0 -39
  287. package/src/style/foundations/z-index.css +0 -81
  288. package/src/style/modes/dark.css +0 -146
  289. package/src/style/modes/light.css +0 -147
  290. package/src/style/semantic.css +0 -52
  291. package/src/style/styles.css +0 -51
  292. package/src/style/themes/theme.json +0 -37
  293. package/src/utils/README.md +0 -305
  294. package/src/utils/USER_PREFERENCES.md +0 -558
  295. package/src/utils/theme.ts +0 -127
  296. package/src/utils/user-preferences.ts +0 -577
  297. package/tsconfig.json +0 -25
  298. package/tsup.config.ts +0 -52
@@ -1,25 +1,19 @@
1
- /* Page Index Component Styles */
1
+ /* src/style/components/page-index/page-index.css */
2
2
  .page-index {
3
3
  padding: var(--spacing-4);
4
- /* background-color: var(--color-bg-1);
5
- border-radius: var(--radius-md);
6
- border: 1px solid var(--color-bg-3); */
7
4
  }
8
-
9
5
  .page-index__title {
10
6
  margin: 0 0 var(--spacing-3) 0;
11
7
  font-size: var(--font-size-sm);
12
8
  font-weight: var(--font-weight-semibold);
13
- color: var(--color-foreground-5);
9
+ color: var(--color-foreground-3);
14
10
  text-transform: uppercase;
15
11
  letter-spacing: 0.05em;
16
12
  }
17
-
18
13
  .page-index__nav {
19
14
  overflow-y: auto;
20
15
  max-height: calc(100vh - 200px);
21
16
  }
22
-
23
17
  .page-index__list {
24
18
  list-style: none;
25
19
  margin: 0;
@@ -28,40 +22,31 @@
28
22
  flex-direction: column;
29
23
  gap: var(--spacing-1);
30
24
  }
31
-
32
25
  .page-index__item {
33
26
  margin: 0;
34
27
  padding: 0;
35
28
  }
36
-
37
29
  .page-index__item--level-1 {
38
30
  margin-top: var(--spacing-2);
39
31
  }
40
-
41
32
  .page-index__item--level-1:first-child {
42
33
  margin-top: 0;
43
34
  }
44
-
45
35
  .page-index__item--level-2 {
46
36
  margin-left: var(--spacing-3);
47
37
  }
48
-
49
38
  .page-index__item--level-3 {
50
39
  margin-left: var(--spacing-6);
51
40
  }
52
-
53
41
  .page-index__item--level-4 {
54
42
  margin-left: var(--spacing-9);
55
43
  }
56
-
57
44
  .page-index__item--level-5 {
58
45
  margin-left: var(--spacing-12);
59
46
  }
60
-
61
47
  .page-index__item--level-6 {
62
48
  margin-left: var(--spacing-15);
63
49
  }
64
-
65
50
  .page-index__link {
66
51
  width: 100%;
67
52
  padding: var(--spacing-1) var(--spacing-2);
@@ -77,43 +62,34 @@
77
62
  text-decoration: none;
78
63
  line-height: 1.4;
79
64
  }
80
-
81
65
  .page-index__link:hover {
82
66
  background-color: var(--color-bg-2);
83
67
  color: var(--color-foreground-1);
84
68
  }
85
-
86
69
  .page-index__link--active {
87
70
  background-color: var(--color-primary);
88
71
  color: var(--color-on-primary);
89
72
  font-weight: var(--font-weight-medium);
90
73
  }
91
-
92
74
  .page-index__link--active:hover {
93
75
  background-color: var(--color-primary);
94
76
  color: var(--color-on-primary);
95
77
  }
96
-
97
78
  .page-index__link:focus-visible {
98
79
  outline: 2px solid var(--color-primary);
99
80
  outline-offset: 2px;
100
81
  }
101
-
102
- /* Collapsed state */
103
82
  .page-index--collapsed {
104
83
  padding: var(--spacing-2);
105
84
  width: 48px;
106
85
  text-align: center;
107
86
  }
108
-
109
87
  .page-index--collapsed .page-index__title {
110
88
  display: none;
111
89
  }
112
-
113
90
  .page-index--collapsed .page-index__list {
114
91
  gap: var(--spacing-1);
115
92
  }
116
-
117
93
  .page-index--collapsed .page-index__item--level-2,
118
94
  .page-index--collapsed .page-index__item--level-3,
119
95
  .page-index--collapsed .page-index__item--level-4,
@@ -121,7 +97,6 @@
121
97
  .page-index--collapsed .page-index__item--level-6 {
122
98
  margin-left: 0;
123
99
  }
124
-
125
100
  .page-index--collapsed .page-index__link {
126
101
  padding: var(--spacing-1);
127
102
  width: 32px;
@@ -131,28 +106,8 @@
131
106
  justify-content: center;
132
107
  border-radius: var(--radius-sm);
133
108
  }
134
-
135
109
  .page-index--collapsed .page-index__link-text--collapsed {
136
110
  font-size: var(--font-size-sm);
137
111
  font-weight: var(--font-weight-semibold);
138
112
  text-transform: uppercase;
139
113
  }
140
-
141
- /* Scrollbar styling */
142
- .page-index__nav::-webkit-scrollbar {
143
- width: 4px;
144
- }
145
-
146
- .page-index__nav::-webkit-scrollbar-track {
147
- background: var(--color-bg-2);
148
- border-radius: 2px;
149
- }
150
-
151
- .page-index__nav::-webkit-scrollbar-thumb {
152
- background: var(--color-bg-3);
153
- border-radius: 2px;
154
- }
155
-
156
- .page-index__nav::-webkit-scrollbar-thumb:hover {
157
- background: var(--color-foreground-3);
158
- }
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+
3
+ interface PageIndexItem {
4
+ id: string;
5
+ title: string;
6
+ level: number;
7
+ element: HTMLElement;
8
+ }
9
+ interface PageIndexProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ /**
11
+ * Custom title for the index
12
+ */
13
+ title?: string;
14
+ /**
15
+ * Whether the sidebar is collapsed
16
+ */
17
+ collapsed?: boolean;
18
+ /**
19
+ * Callback when sidebar width changes (used by Layout component)
20
+ */
21
+ onRequestWidthChange?: (width: number) => void;
22
+ }
23
+ declare const PageIndex: React.FC<PageIndexProps>;
24
+
25
+ export { PageIndex, type PageIndexItem, type PageIndexProps };
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+
3
+ interface PageIndexItem {
4
+ id: string;
5
+ title: string;
6
+ level: number;
7
+ element: HTMLElement;
8
+ }
9
+ interface PageIndexProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ /**
11
+ * Custom title for the index
12
+ */
13
+ title?: string;
14
+ /**
15
+ * Whether the sidebar is collapsed
16
+ */
17
+ collapsed?: boolean;
18
+ /**
19
+ * Callback when sidebar width changes (used by Layout component)
20
+ */
21
+ onRequestWidthChange?: (width: number) => void;
22
+ }
23
+ declare const PageIndex: React.FC<PageIndexProps>;
24
+
25
+ export { PageIndex, type PageIndexItem, type PageIndexProps };
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/components/page-index/index.ts
31
+ var page_index_exports = {};
32
+ __export(page_index_exports, {
33
+ PageIndex: () => PageIndex
34
+ });
35
+ module.exports = __toCommonJS(page_index_exports);
36
+
37
+ // src/components/page-index/PageIndex.tsx
38
+ var React = __toESM(require("react"));
39
+ var import_jsx_runtime = require("react/jsx-runtime");
40
+ var PageIndex = ({
41
+ title = "On this page",
42
+ collapsed = false,
43
+ className = "",
44
+ onRequestWidthChange,
45
+ ...props
46
+ }) => {
47
+ const [items, setItems] = React.useState([]);
48
+ const [activeId, setActiveId] = React.useState("");
49
+ const [manualNavigation, setManualNavigation] = React.useState(false);
50
+ const getTextContent = React.useCallback((element) => {
51
+ if (element.tagName.match(/^H[1-6]$/)) {
52
+ const text = element.textContent || "";
53
+ return text.replace(/#$/, "").trim();
54
+ }
55
+ return element.getAttribute("data-page-index-title") || element.getAttribute("title") || element.textContent || "";
56
+ }, []);
57
+ const generateId = React.useCallback((text) => {
58
+ return text.toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-").trim();
59
+ }, []);
60
+ const scanPage = React.useCallback(() => {
61
+ const newItems = [];
62
+ const seenIds = /* @__PURE__ */ new Set();
63
+ const pages = document.querySelectorAll("main");
64
+ pages.forEach((page) => {
65
+ const pageElement = page;
66
+ if (pageElement.closest(".page-index")) {
67
+ return;
68
+ }
69
+ const header = pageElement.querySelector("header");
70
+ if (header) {
71
+ const headerElement = header;
72
+ if (!headerElement.closest(".page-index")) {
73
+ const headerTitle = headerElement.querySelector("h1");
74
+ if (headerTitle) {
75
+ const text = getTextContent(headerTitle);
76
+ if (text.trim()) {
77
+ const id = headerElement.id || generateId(text);
78
+ if (!seenIds.has(id)) {
79
+ seenIds.add(id);
80
+ if (!headerElement.id) {
81
+ headerElement.id = id;
82
+ }
83
+ newItems.push({
84
+ id,
85
+ title: text.trim(),
86
+ level: 1,
87
+ element: headerElement
88
+ // Target the header container, not just the h1
89
+ });
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ const sections = pageElement.querySelectorAll("section");
96
+ sections.forEach((section) => {
97
+ const sectionElement = section;
98
+ if (sectionElement.closest(".page-index")) {
99
+ return;
100
+ }
101
+ const childElements = Array.from(sectionElement.children);
102
+ const headings = childElements.filter(
103
+ (child) => child.tagName.match(/^H[1-6]$/)
104
+ );
105
+ headings.forEach((element) => {
106
+ const text = getTextContent(element);
107
+ if (text.trim()) {
108
+ if (element.closest('.component-preview, [data-demo], .demo, .example, .drawer, [role="dialog"]')) {
109
+ return;
110
+ }
111
+ const id = element.id || generateId(text);
112
+ if (seenIds.has(id)) {
113
+ return;
114
+ }
115
+ seenIds.add(id);
116
+ if (!element.id) {
117
+ element.id = id;
118
+ }
119
+ const tagName = element.tagName.toLowerCase();
120
+ const level = parseInt(tagName.substring(1));
121
+ newItems.push({
122
+ id,
123
+ title: text.trim(),
124
+ level,
125
+ element
126
+ });
127
+ }
128
+ });
129
+ });
130
+ });
131
+ newItems.sort((a, b) => {
132
+ const aRect = a.element.getBoundingClientRect();
133
+ const bRect = b.element.getBoundingClientRect();
134
+ return aRect.top - bRect.top;
135
+ });
136
+ setItems(newItems);
137
+ }, [getTextContent, generateId]);
138
+ React.useEffect(() => {
139
+ const observer = new IntersectionObserver(
140
+ (entries) => {
141
+ if (manualNavigation) return;
142
+ entries.forEach((entry) => {
143
+ if (entry.isIntersecting) {
144
+ setActiveId(entry.target.id);
145
+ }
146
+ });
147
+ },
148
+ {
149
+ rootMargin: "-80px 0px -80% 0px",
150
+ threshold: 0
151
+ }
152
+ );
153
+ items.forEach((item) => {
154
+ observer.observe(item.element);
155
+ });
156
+ return () => {
157
+ items.forEach((item) => {
158
+ observer.unobserve(item.element);
159
+ });
160
+ };
161
+ }, [items, manualNavigation]);
162
+ React.useEffect(() => {
163
+ const timer = setTimeout(() => {
164
+ scanPage();
165
+ }, 100);
166
+ const handleLocationChange = () => {
167
+ setTimeout(() => {
168
+ scanPage();
169
+ }, 150);
170
+ };
171
+ window.addEventListener("popstate", handleLocationChange);
172
+ window.addEventListener("locationchange", handleLocationChange);
173
+ const observer = new MutationObserver(() => {
174
+ clearTimeout(timer);
175
+ setTimeout(() => {
176
+ scanPage();
177
+ }, 200);
178
+ });
179
+ const mainContent = document.querySelector("main") || document.body;
180
+ observer.observe(mainContent, {
181
+ childList: true,
182
+ subtree: true,
183
+ attributes: true,
184
+ attributeFilter: ["data-section-title", "id"]
185
+ });
186
+ return () => {
187
+ clearTimeout(timer);
188
+ window.removeEventListener("popstate", handleLocationChange);
189
+ window.removeEventListener("locationchange", handleLocationChange);
190
+ observer.disconnect();
191
+ };
192
+ }, [scanPage]);
193
+ const handleItemClick = React.useCallback((id) => {
194
+ const element = document.getElementById(id);
195
+ if (element) {
196
+ setManualNavigation(true);
197
+ setActiveId(id);
198
+ element.scrollIntoView({
199
+ behavior: "smooth",
200
+ block: "start"
201
+ });
202
+ setTimeout(() => {
203
+ setManualNavigation(false);
204
+ }, 1e3);
205
+ }
206
+ }, []);
207
+ const classes = [
208
+ "page-index",
209
+ collapsed && "page-index--collapsed",
210
+ className
211
+ ].filter(Boolean).join(" ");
212
+ if (items.length === 0) {
213
+ return null;
214
+ }
215
+ const { sidebarWidth, setSidebarWidth, ...domProps } = props;
216
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: classes, ...domProps, children: [
217
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: "page-index__title", children: title }),
218
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("nav", { className: "page-index__nav scrollable", "aria-label": "Page contents", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { className: "page-index__list", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
219
+ "li",
220
+ {
221
+ className: `page-index__item page-index__item--level-${item.level}`,
222
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
223
+ "button",
224
+ {
225
+ className: `page-index__link ${activeId === item.id ? "page-index__link--active" : ""}`,
226
+ onClick: () => handleItemClick(item.id),
227
+ "aria-current": activeId === item.id ? "location" : void 0,
228
+ children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "page-index__link-text--collapsed", children: item.title.charAt(0) }) : item.title
229
+ }
230
+ )
231
+ },
232
+ item.id
233
+ )) }) })
234
+ ] });
235
+ };
236
+ // Annotate the CommonJS export names for ESM import in node:
237
+ 0 && (module.exports = {
238
+ PageIndex
239
+ });
@@ -0,0 +1,202 @@
1
+ // src/components/page-index/PageIndex.tsx
2
+ import * as React from "react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ var PageIndex = ({
5
+ title = "On this page",
6
+ collapsed = false,
7
+ className = "",
8
+ onRequestWidthChange,
9
+ ...props
10
+ }) => {
11
+ const [items, setItems] = React.useState([]);
12
+ const [activeId, setActiveId] = React.useState("");
13
+ const [manualNavigation, setManualNavigation] = React.useState(false);
14
+ const getTextContent = React.useCallback((element) => {
15
+ if (element.tagName.match(/^H[1-6]$/)) {
16
+ const text = element.textContent || "";
17
+ return text.replace(/#$/, "").trim();
18
+ }
19
+ return element.getAttribute("data-page-index-title") || element.getAttribute("title") || element.textContent || "";
20
+ }, []);
21
+ const generateId = React.useCallback((text) => {
22
+ return text.toLowerCase().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-").replace(/-+/g, "-").trim();
23
+ }, []);
24
+ const scanPage = React.useCallback(() => {
25
+ const newItems = [];
26
+ const seenIds = /* @__PURE__ */ new Set();
27
+ const pages = document.querySelectorAll("main");
28
+ pages.forEach((page) => {
29
+ const pageElement = page;
30
+ if (pageElement.closest(".page-index")) {
31
+ return;
32
+ }
33
+ const header = pageElement.querySelector("header");
34
+ if (header) {
35
+ const headerElement = header;
36
+ if (!headerElement.closest(".page-index")) {
37
+ const headerTitle = headerElement.querySelector("h1");
38
+ if (headerTitle) {
39
+ const text = getTextContent(headerTitle);
40
+ if (text.trim()) {
41
+ const id = headerElement.id || generateId(text);
42
+ if (!seenIds.has(id)) {
43
+ seenIds.add(id);
44
+ if (!headerElement.id) {
45
+ headerElement.id = id;
46
+ }
47
+ newItems.push({
48
+ id,
49
+ title: text.trim(),
50
+ level: 1,
51
+ element: headerElement
52
+ // Target the header container, not just the h1
53
+ });
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ const sections = pageElement.querySelectorAll("section");
60
+ sections.forEach((section) => {
61
+ const sectionElement = section;
62
+ if (sectionElement.closest(".page-index")) {
63
+ return;
64
+ }
65
+ const childElements = Array.from(sectionElement.children);
66
+ const headings = childElements.filter(
67
+ (child) => child.tagName.match(/^H[1-6]$/)
68
+ );
69
+ headings.forEach((element) => {
70
+ const text = getTextContent(element);
71
+ if (text.trim()) {
72
+ if (element.closest('.component-preview, [data-demo], .demo, .example, .drawer, [role="dialog"]')) {
73
+ return;
74
+ }
75
+ const id = element.id || generateId(text);
76
+ if (seenIds.has(id)) {
77
+ return;
78
+ }
79
+ seenIds.add(id);
80
+ if (!element.id) {
81
+ element.id = id;
82
+ }
83
+ const tagName = element.tagName.toLowerCase();
84
+ const level = parseInt(tagName.substring(1));
85
+ newItems.push({
86
+ id,
87
+ title: text.trim(),
88
+ level,
89
+ element
90
+ });
91
+ }
92
+ });
93
+ });
94
+ });
95
+ newItems.sort((a, b) => {
96
+ const aRect = a.element.getBoundingClientRect();
97
+ const bRect = b.element.getBoundingClientRect();
98
+ return aRect.top - bRect.top;
99
+ });
100
+ setItems(newItems);
101
+ }, [getTextContent, generateId]);
102
+ React.useEffect(() => {
103
+ const observer = new IntersectionObserver(
104
+ (entries) => {
105
+ if (manualNavigation) return;
106
+ entries.forEach((entry) => {
107
+ if (entry.isIntersecting) {
108
+ setActiveId(entry.target.id);
109
+ }
110
+ });
111
+ },
112
+ {
113
+ rootMargin: "-80px 0px -80% 0px",
114
+ threshold: 0
115
+ }
116
+ );
117
+ items.forEach((item) => {
118
+ observer.observe(item.element);
119
+ });
120
+ return () => {
121
+ items.forEach((item) => {
122
+ observer.unobserve(item.element);
123
+ });
124
+ };
125
+ }, [items, manualNavigation]);
126
+ React.useEffect(() => {
127
+ const timer = setTimeout(() => {
128
+ scanPage();
129
+ }, 100);
130
+ const handleLocationChange = () => {
131
+ setTimeout(() => {
132
+ scanPage();
133
+ }, 150);
134
+ };
135
+ window.addEventListener("popstate", handleLocationChange);
136
+ window.addEventListener("locationchange", handleLocationChange);
137
+ const observer = new MutationObserver(() => {
138
+ clearTimeout(timer);
139
+ setTimeout(() => {
140
+ scanPage();
141
+ }, 200);
142
+ });
143
+ const mainContent = document.querySelector("main") || document.body;
144
+ observer.observe(mainContent, {
145
+ childList: true,
146
+ subtree: true,
147
+ attributes: true,
148
+ attributeFilter: ["data-section-title", "id"]
149
+ });
150
+ return () => {
151
+ clearTimeout(timer);
152
+ window.removeEventListener("popstate", handleLocationChange);
153
+ window.removeEventListener("locationchange", handleLocationChange);
154
+ observer.disconnect();
155
+ };
156
+ }, [scanPage]);
157
+ const handleItemClick = React.useCallback((id) => {
158
+ const element = document.getElementById(id);
159
+ if (element) {
160
+ setManualNavigation(true);
161
+ setActiveId(id);
162
+ element.scrollIntoView({
163
+ behavior: "smooth",
164
+ block: "start"
165
+ });
166
+ setTimeout(() => {
167
+ setManualNavigation(false);
168
+ }, 1e3);
169
+ }
170
+ }, []);
171
+ const classes = [
172
+ "page-index",
173
+ collapsed && "page-index--collapsed",
174
+ className
175
+ ].filter(Boolean).join(" ");
176
+ if (items.length === 0) {
177
+ return null;
178
+ }
179
+ const { sidebarWidth, setSidebarWidth, ...domProps } = props;
180
+ return /* @__PURE__ */ jsxs("div", { className: classes, ...domProps, children: [
181
+ !collapsed && /* @__PURE__ */ jsx("h3", { className: "page-index__title", children: title }),
182
+ /* @__PURE__ */ jsx("nav", { className: "page-index__nav scrollable", "aria-label": "Page contents", children: /* @__PURE__ */ jsx("ul", { className: "page-index__list", children: items.map((item) => /* @__PURE__ */ jsx(
183
+ "li",
184
+ {
185
+ className: `page-index__item page-index__item--level-${item.level}`,
186
+ children: /* @__PURE__ */ jsx(
187
+ "button",
188
+ {
189
+ className: `page-index__link ${activeId === item.id ? "page-index__link--active" : ""}`,
190
+ onClick: () => handleItemClick(item.id),
191
+ "aria-current": activeId === item.id ? "location" : void 0,
192
+ children: collapsed ? /* @__PURE__ */ jsx("span", { className: "page-index__link-text--collapsed", children: item.title.charAt(0) }) : item.title
193
+ }
194
+ )
195
+ },
196
+ item.id
197
+ )) }) })
198
+ ] });
199
+ };
200
+ export {
201
+ PageIndex
202
+ };
@@ -1,45 +1,34 @@
1
- /* Page Component Styles */
2
-
1
+ /* src/style/components/page/page.css */
3
2
  .page {
4
3
  width: 100%;
5
4
  margin: 0 auto;
6
- padding: var(--spacing-6) var(--spacing-4);
5
+ padding: 0;
7
6
  }
8
-
9
- /* Width Variants */
10
7
  .page--full {
11
8
  max-width: none;
12
9
  padding: 0;
13
10
  }
14
-
15
11
  .page--wide {
16
12
  max-width: 1400px;
17
13
  }
18
-
19
14
  .page--medium {
20
15
  max-width: 1200px;
21
16
  }
22
-
23
17
  .page--narrow {
24
18
  max-width: 800px;
25
19
  }
26
-
27
- /* Responsive Padding */
28
20
  @media (min-width: 768px) {
29
21
  .page {
30
- padding: var(--spacing-8) var(--spacing-6);
22
+ padding: 0;
31
23
  }
32
-
33
24
  .page--full {
34
25
  padding: 0;
35
26
  }
36
27
  }
37
-
38
28
  @media (min-width: 1024px) {
39
29
  .page {
40
- padding: var(--spacing-10) var(--spacing-8);
30
+ padding: 0;
41
31
  }
42
-
43
32
  .page--full {
44
33
  padding: 0;
45
34
  }