@heliosgraphics/ui 2.0.0-alpha.100

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 (441) hide show
  1. package/LICENSE.md +21 -0
  2. package/components/Alert/Alert.meta.ts +45 -0
  3. package/components/Alert/Alert.module.css +41 -0
  4. package/components/Alert/Alert.tsx +54 -0
  5. package/components/Alert/Alert.types.ts +15 -0
  6. package/components/Alert/index.ts +1 -0
  7. package/components/Breadcrumb/Breadcrumb.meta.ts +17 -0
  8. package/components/Breadcrumb/Breadcrumb.tsx +55 -0
  9. package/components/Breadcrumb/Breadcrumb.types.ts +13 -0
  10. package/components/Breadcrumb/index.ts +2 -0
  11. package/components/Browser/Browser.meta.ts +27 -0
  12. package/components/Browser/Browser.module.css +3 -0
  13. package/components/Browser/Browser.tsx +16 -0
  14. package/components/Browser/Browser.types.ts +9 -0
  15. package/components/Browser/index.ts +1 -0
  16. package/components/Button/Button.meta.ts +46 -0
  17. package/components/Button/Button.module.css +337 -0
  18. package/components/Button/Button.spec.tsx +6 -0
  19. package/components/Button/Button.tsx +207 -0
  20. package/components/Button/Button.types.ts +30 -0
  21. package/components/Button/index.ts +2 -0
  22. package/components/ButtonGroup/ButtonGroup.meta.ts +37 -0
  23. package/components/ButtonGroup/ButtonGroup.module.css +55 -0
  24. package/components/ButtonGroup/ButtonGroup.spec.tsx +6 -0
  25. package/components/ButtonGroup/ButtonGroup.tsx +41 -0
  26. package/components/ButtonGroup/ButtonGroup.types.ts +11 -0
  27. package/components/ButtonGroup/index.ts +2 -0
  28. package/components/Checkbox/Checkbox.meta.ts +54 -0
  29. package/components/Checkbox/Checkbox.module.css +99 -0
  30. package/components/Checkbox/Checkbox.tsx +80 -0
  31. package/components/Checkbox/Checkbox.types.ts +17 -0
  32. package/components/Checkbox/index.ts +1 -0
  33. package/components/Clock/Clock.meta.ts +14 -0
  34. package/components/Clock/Clock.module.css +27 -0
  35. package/components/Clock/Clock.tsx +66 -0
  36. package/components/Clock/Clock.types.ts +1 -0
  37. package/components/Clock/Clock.utils.ts +16 -0
  38. package/components/Clock/index.ts +1 -0
  39. package/components/Column/Column.meta.ts +22 -0
  40. package/components/Column/Column.tsx +21 -0
  41. package/components/Column/Column.types.ts +8 -0
  42. package/components/Column/index.ts +2 -0
  43. package/components/Confirm/Confirm.meta.ts +51 -0
  44. package/components/Confirm/Confirm.tsx +40 -0
  45. package/components/Confirm/Confirm.types.ts +17 -0
  46. package/components/Confirm/index.ts +1 -0
  47. package/components/DatePicker/DatePicker.meta.ts +25 -0
  48. package/components/DatePicker/DatePicker.module.css +72 -0
  49. package/components/DatePicker/DatePicker.tsx +126 -0
  50. package/components/DatePicker/DatePicker.types.ts +8 -0
  51. package/components/DatePicker/DatePicker.utils.ts +53 -0
  52. package/components/DatePicker/index.ts +1 -0
  53. package/components/Debug/Debug.meta.ts +22 -0
  54. package/components/Debug/Debug.module.css +17 -0
  55. package/components/Debug/Debug.tsx +48 -0
  56. package/components/Debug/Debug.types.ts +6 -0
  57. package/components/Debug/Debug.utils.ts +23 -0
  58. package/components/Debug/index.ts +1 -0
  59. package/components/Details/Details.meta.ts +22 -0
  60. package/components/Details/Details.module.css +36 -0
  61. package/components/Details/Details.tsx +21 -0
  62. package/components/Details/Details.types.ts +8 -0
  63. package/components/Details/index.ts +1 -0
  64. package/components/Dialog/Dialog.meta.ts +48 -0
  65. package/components/Dialog/Dialog.module.css +109 -0
  66. package/components/Dialog/Dialog.tsx +100 -0
  67. package/components/Dialog/Dialog.types.ts +13 -0
  68. package/components/Dialog/index.ts +1 -0
  69. package/components/Donut/Donut.meta.ts +25 -0
  70. package/components/Donut/Donut.module.css +8 -0
  71. package/components/Donut/Donut.tsx +63 -0
  72. package/components/Donut/Donut.types.ts +12 -0
  73. package/components/Donut/Donut.utils.ts +11 -0
  74. package/components/Donut/index.ts +2 -0
  75. package/components/Dot/Dot.meta.ts +26 -0
  76. package/components/Dot/Dot.module.css +24 -0
  77. package/components/Dot/Dot.spec.tsx +6 -0
  78. package/components/Dot/Dot.tsx +46 -0
  79. package/components/Dot/Dot.types.ts +8 -0
  80. package/components/Dot/index.ts +1 -0
  81. package/components/Dropdown/Dropdown.meta.ts +30 -0
  82. package/components/Dropdown/Dropdown.module.css +92 -0
  83. package/components/Dropdown/Dropdown.tsx +117 -0
  84. package/components/Dropdown/Dropdown.types.ts +10 -0
  85. package/components/Dropdown/index.ts +2 -0
  86. package/components/Fieldset/Fieldset.meta.ts +18 -0
  87. package/components/Fieldset/Fieldset.module.css +3 -0
  88. package/components/Fieldset/Fieldset.tsx +14 -0
  89. package/components/Fieldset/Fieldset.types.ts +7 -0
  90. package/components/Fieldset/index.ts +1 -0
  91. package/components/Flex/Flex.meta.ts +47 -0
  92. package/components/Flex/Flex.tsx +40 -0
  93. package/components/Flex/Flex.types.ts +38 -0
  94. package/components/Flex/Flex.utils.spec.ts +97 -0
  95. package/components/Flex/Flex.utils.ts +162 -0
  96. package/components/Flex/index.ts +4 -0
  97. package/components/Grid/Grid.meta.ts +22 -0
  98. package/components/Grid/Grid.tsx +17 -0
  99. package/components/Grid/Grid.types.ts +8 -0
  100. package/components/Grid/index.ts +1 -0
  101. package/components/Heading/Heading.meta.ts +23 -0
  102. package/components/Heading/Heading.module.css +19 -0
  103. package/components/Heading/Heading.tsx +69 -0
  104. package/components/Heading/Heading.types.ts +9 -0
  105. package/components/Heading/components/H0/H0.meta.ts +11 -0
  106. package/components/Heading/components/H0/H0.module.css +4 -0
  107. package/components/Heading/components/H0/H0.tsx +12 -0
  108. package/components/Heading/components/H0/H0.types.ts +3 -0
  109. package/components/Heading/components/H0/index.ts +1 -0
  110. package/components/Heading/components/H1/H1.meta.ts +11 -0
  111. package/components/Heading/components/H1/H1.tsx +9 -0
  112. package/components/Heading/components/H1/H1.types.ts +3 -0
  113. package/components/Heading/components/H1/index.ts +1 -0
  114. package/components/Heading/components/H2/H2.meta.ts +11 -0
  115. package/components/Heading/components/H2/H2.tsx +9 -0
  116. package/components/Heading/components/H2/H2.types.ts +3 -0
  117. package/components/Heading/components/H2/index.ts +1 -0
  118. package/components/Heading/components/H3/H3.meta.ts +11 -0
  119. package/components/Heading/components/H3/H3.tsx +9 -0
  120. package/components/Heading/components/H3/H3.types.ts +3 -0
  121. package/components/Heading/components/H3/index.ts +1 -0
  122. package/components/Heading/components/H4/H4.meta.ts +11 -0
  123. package/components/Heading/components/H4/H4.tsx +9 -0
  124. package/components/Heading/components/H4/H4.types.ts +3 -0
  125. package/components/Heading/components/H4/index.ts +1 -0
  126. package/components/Heading/components/H5/H5.meta.ts +11 -0
  127. package/components/Heading/components/H5/H5.tsx +9 -0
  128. package/components/Heading/components/H5/H5.types.ts +3 -0
  129. package/components/Heading/components/H5/index.ts +1 -0
  130. package/components/Heading/components/H6/H6.meta.ts +11 -0
  131. package/components/Heading/components/H6/H6.tsx +9 -0
  132. package/components/Heading/components/H6/H6.types.ts +3 -0
  133. package/components/Heading/components/H6/index.ts +1 -0
  134. package/components/Heading/index.ts +2 -0
  135. package/components/Icon/Icon.meta.ts +28 -0
  136. package/components/Icon/Icon.module.css +22 -0
  137. package/components/Icon/Icon.tsx +32 -0
  138. package/components/Icon/Icon.types.ts +9 -0
  139. package/components/Icon/index.ts +1 -0
  140. package/components/Input/Input.meta.ts +53 -0
  141. package/components/Input/Input.module.css +82 -0
  142. package/components/Input/Input.tsx +124 -0
  143. package/components/Input/Input.types.ts +28 -0
  144. package/components/Input/index.ts +1 -0
  145. package/components/Layout/Layout.meta.ts +19 -0
  146. package/components/Layout/Layout.module.css +7 -0
  147. package/components/Layout/Layout.tsx +33 -0
  148. package/components/Layout/Layout.types.ts +19 -0
  149. package/components/Layout/components/LayoutAside/LayoutAside.meta.ts +15 -0
  150. package/components/Layout/components/LayoutAside/LayoutAside.module.css +40 -0
  151. package/components/Layout/components/LayoutAside/LayoutAside.tsx +27 -0
  152. package/components/Layout/components/LayoutAside/LayoutAside.types.ts +14 -0
  153. package/components/Layout/components/LayoutAside/components/LayoutAsideContent/LayoutAsideContent.meta.ts +15 -0
  154. package/components/Layout/components/LayoutAside/components/LayoutAsideContent/LayoutAsideContent.module.css +5 -0
  155. package/components/Layout/components/LayoutAside/components/LayoutAsideContent/LayoutAsideContent.tsx +19 -0
  156. package/components/Layout/components/LayoutAside/components/LayoutAsideContent/LayoutAsideContent.types.ts +5 -0
  157. package/components/Layout/components/LayoutAside/components/LayoutAsideContent/index.ts +1 -0
  158. package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/LayoutAsideFooter.meta.ts +15 -0
  159. package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/LayoutAsideFooter.module.css +10 -0
  160. package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/LayoutAsideFooter.tsx +19 -0
  161. package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/LayoutAsideFooter.types.ts +5 -0
  162. package/components/Layout/components/LayoutAside/components/LayoutAsideFooter/index.ts +1 -0
  163. package/components/Layout/components/LayoutAside/components/LayoutAsideToggle/LayoutAsideToggle.meta.ts +14 -0
  164. package/components/Layout/components/LayoutAside/components/LayoutAsideToggle/LayoutAsideToggle.tsx +31 -0
  165. package/components/Layout/components/LayoutAside/components/LayoutAsideToggle/LayoutAsideToggle.types.ts +1 -0
  166. package/components/Layout/components/LayoutAside/components/LayoutAsideToggle/index.ts +1 -0
  167. package/components/Layout/components/LayoutAside/index.ts +13 -0
  168. package/components/Layout/components/LayoutMain/LayoutMain.meta.ts +15 -0
  169. package/components/Layout/components/LayoutMain/LayoutMain.module.css +15 -0
  170. package/components/Layout/components/LayoutMain/LayoutMain.tsx +23 -0
  171. package/components/Layout/components/LayoutMain/LayoutMain.types.ts +12 -0
  172. package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.meta.ts +15 -0
  173. package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.module.css +4 -0
  174. package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.tsx +49 -0
  175. package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.types.ts +5 -0
  176. package/components/Layout/components/LayoutMain/components/LayoutMainContent/LayoutMainContent.utils.ts +65 -0
  177. package/components/Layout/components/LayoutMain/components/LayoutMainContent/index.ts +1 -0
  178. package/components/Layout/components/LayoutMain/index.ts +9 -0
  179. package/components/Layout/components/LayoutNavigation/LayoutNavigation.meta.ts +15 -0
  180. package/components/Layout/components/LayoutNavigation/LayoutNavigation.module.css +12 -0
  181. package/components/Layout/components/LayoutNavigation/LayoutNavigation.tsx +24 -0
  182. package/components/Layout/components/LayoutNavigation/LayoutNavigation.types.ts +5 -0
  183. package/components/Layout/components/LayoutNavigation/index.ts +1 -0
  184. package/components/Layout/components/LayoutSubNavigation/LayoutSubNavigation.meta.ts +15 -0
  185. package/components/Layout/components/LayoutSubNavigation/LayoutSubNavigation.module.css +12 -0
  186. package/components/Layout/components/LayoutSubNavigation/LayoutSubNavigation.tsx +24 -0
  187. package/components/Layout/components/LayoutSubNavigation/LayoutSubNavigation.types.ts +5 -0
  188. package/components/Layout/components/LayoutSubNavigation/index.ts +1 -0
  189. package/components/Layout/index.ts +17 -0
  190. package/components/Loading/Loading.meta.ts +20 -0
  191. package/components/Loading/Loading.module.css +65 -0
  192. package/components/Loading/Loading.tsx +57 -0
  193. package/components/Loading/Loading.types.ts +7 -0
  194. package/components/Loading/index.ts +1 -0
  195. package/components/Markdown/Markdown.meta.ts +28 -0
  196. package/components/Markdown/Markdown.module.css +274 -0
  197. package/components/Markdown/Markdown.tsx +27 -0
  198. package/components/Markdown/Markdown.types.ts +7 -0
  199. package/components/Markdown/Markdown.utils.spec.ts +11 -0
  200. package/components/Markdown/Markdown.utils.ts +10 -0
  201. package/components/Markdown/index.ts +1 -0
  202. package/components/Masonry/Masonry.meta.ts +24 -0
  203. package/components/Masonry/Masonry.tsx +49 -0
  204. package/components/Masonry/Masonry.types.ts +10 -0
  205. package/components/Masonry/index.ts +1 -0
  206. package/components/Menu/Menu.meta.ts +15 -0
  207. package/components/Menu/Menu.tsx +18 -0
  208. package/components/Menu/Menu.types.ts +15 -0
  209. package/components/Menu/components/MenuCategory/MenuCategory.meta.ts +32 -0
  210. package/components/Menu/components/MenuCategory/MenuCategory.module.css +73 -0
  211. package/components/Menu/components/MenuCategory/MenuCategory.tsx +88 -0
  212. package/components/Menu/components/MenuCategory/MenuCategory.types.ts +10 -0
  213. package/components/Menu/components/MenuCategory/index.ts +1 -0
  214. package/components/Menu/components/MenuFilter/MenuFilter.meta.ts +24 -0
  215. package/components/Menu/components/MenuFilter/MenuFilter.module.css +11 -0
  216. package/components/Menu/components/MenuFilter/MenuFilter.tsx +25 -0
  217. package/components/Menu/components/MenuFilter/MenuFilter.types.ts +7 -0
  218. package/components/Menu/components/MenuFilter/index.ts +1 -0
  219. package/components/Menu/components/MenuItem/MenuItem.meta.ts +42 -0
  220. package/components/Menu/components/MenuItem/MenuItem.module.css +37 -0
  221. package/components/Menu/components/MenuItem/MenuItem.tsx +73 -0
  222. package/components/Menu/components/MenuItem/MenuItem.types.ts +12 -0
  223. package/components/Menu/components/MenuItem/index.ts +1 -0
  224. package/components/Menu/index.ts +14 -0
  225. package/components/Overlay/Overlay.meta.ts +25 -0
  226. package/components/Overlay/Overlay.module.css +85 -0
  227. package/components/Overlay/Overlay.tsx +47 -0
  228. package/components/Overlay/Overlay.types.ts +9 -0
  229. package/components/Overlay/index.ts +1 -0
  230. package/components/Pie/Pie.meta.ts +23 -0
  231. package/components/Pie/Pie.module.css +5 -0
  232. package/components/Pie/Pie.tsx +47 -0
  233. package/components/Pie/Pie.types.ts +12 -0
  234. package/components/Pie/index.ts +2 -0
  235. package/components/Pill/Pill.meta.ts +64 -0
  236. package/components/Pill/Pill.module.css +64 -0
  237. package/components/Pill/Pill.tsx +89 -0
  238. package/components/Pill/Pill.types.ts +19 -0
  239. package/components/Pill/index.ts +1 -0
  240. package/components/Placeholder/Placeholder.meta.ts +25 -0
  241. package/components/Placeholder/Placeholder.module.css +3 -0
  242. package/components/Placeholder/Placeholder.tsx +24 -0
  243. package/components/Placeholder/Placeholder.types.ts +7 -0
  244. package/components/Placeholder/index.ts +1 -0
  245. package/components/Progress/Progress.meta.ts +35 -0
  246. package/components/Progress/Progress.module.css +22 -0
  247. package/components/Progress/Progress.tsx +30 -0
  248. package/components/Progress/Progress.types.ts +9 -0
  249. package/components/Progress/index.ts +1 -0
  250. package/components/Radio/Radio.meta.ts +21 -0
  251. package/components/Radio/Radio.module.css +101 -0
  252. package/components/Radio/Radio.tsx +73 -0
  253. package/components/Radio/Radio.types.ts +8 -0
  254. package/components/Radio/index.ts +1 -0
  255. package/components/Range/Range.meta.ts +26 -0
  256. package/components/Range/Range.module.css +68 -0
  257. package/components/Range/Range.tsx +49 -0
  258. package/components/Range/Range.types.ts +13 -0
  259. package/components/Range/index.ts +1 -0
  260. package/components/Segments/Segments.meta.ts +27 -0
  261. package/components/Segments/Segments.module.css +46 -0
  262. package/components/Segments/Segments.tsx +79 -0
  263. package/components/Segments/Segments.types.ts +15 -0
  264. package/components/Segments/Segments.utils.ts +19 -0
  265. package/components/Segments/components/SegmentButton/SegmentButton.meta.ts +32 -0
  266. package/components/Segments/components/SegmentButton/SegmentButton.module.css +34 -0
  267. package/components/Segments/components/SegmentButton/SegmentButton.tsx +61 -0
  268. package/components/Segments/components/SegmentButton/SegmentButton.types.ts +10 -0
  269. package/components/Segments/components/SegmentButton/index.ts +1 -0
  270. package/components/Segments/index.ts +9 -0
  271. package/components/Select/Select.meta.ts +43 -0
  272. package/components/Select/Select.module.css +76 -0
  273. package/components/Select/Select.tsx +53 -0
  274. package/components/Select/Select.types.ts +18 -0
  275. package/components/Select/index.ts +2 -0
  276. package/components/Separator/Separator.meta.ts +69 -0
  277. package/components/Separator/Separator.module.css +11 -0
  278. package/components/Separator/Separator.spec.tsx +6 -0
  279. package/components/Separator/Separator.tsx +36 -0
  280. package/components/Separator/Separator.types.ts +10 -0
  281. package/components/Separator/components/HRMarkup/HRMarkup.meta.ts +15 -0
  282. package/components/Separator/components/HRMarkup/HRMarkup.tsx +10 -0
  283. package/components/Separator/components/HRMarkup/HRMarkup.types.ts +5 -0
  284. package/components/Separator/components/HRMarkup/index.ts +1 -0
  285. package/components/Separator/components/HorizontalSeparator/HorizontalSeparator.meta.ts +22 -0
  286. package/components/Separator/components/HorizontalSeparator/HorizontalSeparator.module.css +22 -0
  287. package/components/Separator/components/HorizontalSeparator/HorizontalSeparator.tsx +22 -0
  288. package/components/Separator/components/HorizontalSeparator/HorizontalSeparator.types.ts +3 -0
  289. package/components/Separator/components/HorizontalSeparator/index.ts +1 -0
  290. package/components/Separator/components/VerticalSeparator/VerticalSeparator.meta.ts +22 -0
  291. package/components/Separator/components/VerticalSeparator/VerticalSeparator.module.css +20 -0
  292. package/components/Separator/components/VerticalSeparator/VerticalSeparator.tsx +22 -0
  293. package/components/Separator/components/VerticalSeparator/VerticalSeparator.types.ts +3 -0
  294. package/components/Separator/components/VerticalSeparator/index.ts +1 -0
  295. package/components/Separator/index.ts +1 -0
  296. package/components/Setup/Setup.global.css +14 -0
  297. package/components/Setup/Setup.meta.ts +22 -0
  298. package/components/Setup/Setup.tsx +53 -0
  299. package/components/Setup/Setup.types.ts +13 -0
  300. package/components/Setup/Setup.utils.ts +61 -0
  301. package/components/Setup/css/core.colors-helpers.css +322 -0
  302. package/components/Setup/css/core.colors.css +428 -0
  303. package/components/Setup/css/core.scale.css +49 -0
  304. package/components/Setup/css/core.setup.css +28 -0
  305. package/components/Setup/css/core.typography.css +57 -0
  306. package/components/Setup/css/feat.atomics.css +126 -0
  307. package/components/Setup/css/feat.markdown.css +39 -0
  308. package/components/Setup/css/feat.responsive.css +590 -0
  309. package/components/Setup/index.ts +1 -0
  310. package/components/Shimmer/Shimmer.meta.ts +32 -0
  311. package/components/Shimmer/Shimmer.module.css +24 -0
  312. package/components/Shimmer/Shimmer.tsx +31 -0
  313. package/components/Shimmer/Shimmer.types.ts +7 -0
  314. package/components/Shimmer/index.ts +1 -0
  315. package/components/Slider/Slider.meta.ts +22 -0
  316. package/components/Slider/Slider.module.css +49 -0
  317. package/components/Slider/Slider.tsx +18 -0
  318. package/components/Slider/Slider.types.ts +6 -0
  319. package/components/Slider/index.ts +1 -0
  320. package/components/Spacer/Spacer.meta.ts +17 -0
  321. package/components/Spacer/Spacer.tsx +8 -0
  322. package/components/Spacer/Spacer.types.ts +3 -0
  323. package/components/Spacer/index.ts +1 -0
  324. package/components/Table/Table.meta.ts +36 -0
  325. package/components/Table/Table.module.css +53 -0
  326. package/components/Table/Table.tsx +21 -0
  327. package/components/Table/Table.types.ts +8 -0
  328. package/components/Table/index.ts +1 -0
  329. package/components/Tabs/Tabs.meta.ts +24 -0
  330. package/components/Tabs/Tabs.module.css +43 -0
  331. package/components/Tabs/Tabs.tsx +63 -0
  332. package/components/Tabs/Tabs.types.ts +14 -0
  333. package/components/Tabs/index.ts +1 -0
  334. package/components/Text/Text.meta.ts +38 -0
  335. package/components/Text/Text.module.css +41 -0
  336. package/components/Text/Text.tsx +59 -0
  337. package/components/Text/Text.types.ts +20 -0
  338. package/components/Text/Text.utils.spec.ts +13 -0
  339. package/components/Text/Text.utils.ts +50 -0
  340. package/components/Text/components/Div/Div.meta.ts +11 -0
  341. package/components/Text/components/Div/Div.tsx +9 -0
  342. package/components/Text/components/Div/Div.types.ts +3 -0
  343. package/components/Text/components/Div/index.ts +1 -0
  344. package/components/Text/components/Micro/Micro.meta.ts +11 -0
  345. package/components/Text/components/Micro/Micro.tsx +9 -0
  346. package/components/Text/components/Micro/Micro.types.ts +3 -0
  347. package/components/Text/components/Micro/index.ts +1 -0
  348. package/components/Text/components/P/P.meta.ts +11 -0
  349. package/components/Text/components/P/P.tsx +9 -0
  350. package/components/Text/components/P/P.types.ts +3 -0
  351. package/components/Text/components/P/index.ts +1 -0
  352. package/components/Text/components/Small/Small.meta.ts +11 -0
  353. package/components/Text/components/Small/Small.tsx +9 -0
  354. package/components/Text/components/Small/Small.types.ts +3 -0
  355. package/components/Text/components/Small/index.ts +1 -0
  356. package/components/Text/components/Tiny/Tiny.meta.ts +11 -0
  357. package/components/Text/components/Tiny/Tiny.tsx +9 -0
  358. package/components/Text/components/Tiny/Tiny.types.ts +3 -0
  359. package/components/Text/components/Tiny/index.ts +1 -0
  360. package/components/Text/index.ts +2 -0
  361. package/components/Textarea/Textarea.meta.ts +26 -0
  362. package/components/Textarea/Textarea.module.css +52 -0
  363. package/components/Textarea/Textarea.tsx +68 -0
  364. package/components/Textarea/Textarea.types.ts +16 -0
  365. package/components/Textarea/index.ts +1 -0
  366. package/components/Tile/Tile.meta.ts +24 -0
  367. package/components/Tile/Tile.module.css +35 -0
  368. package/components/Tile/Tile.tsx +70 -0
  369. package/components/Tile/Tile.types.ts +16 -0
  370. package/components/Tile/index.ts +1 -0
  371. package/components/Timestamp/Timestamp.meta.ts +22 -0
  372. package/components/Timestamp/Timestamp.tsx +21 -0
  373. package/components/Timestamp/Timestamp.types.ts +6 -0
  374. package/components/Timestamp/index.ts +1 -0
  375. package/components/Toggle/Toggle.meta.ts +40 -0
  376. package/components/Toggle/Toggle.module.css +137 -0
  377. package/components/Toggle/Toggle.tsx +62 -0
  378. package/components/Toggle/Toggle.types.ts +9 -0
  379. package/components/Toggle/index.ts +1 -0
  380. package/components/Tooltip/Tooltip.meta.ts +78 -0
  381. package/components/Tooltip/Tooltip.module.css +63 -0
  382. package/components/Tooltip/Tooltip.tsx +115 -0
  383. package/components/Tooltip/Tooltip.types.ts +31 -0
  384. package/components/Tooltip/Tooltip.utils.ts +14 -0
  385. package/components/Tooltip/components/TooltipContent/TooltipContent.meta.ts +12 -0
  386. package/components/Tooltip/components/TooltipContent/TooltipContent.tsx +27 -0
  387. package/components/Tooltip/components/TooltipContent/TooltipContent.types.ts +3 -0
  388. package/components/Tooltip/components/TooltipContent/index.ts +1 -0
  389. package/components/Tooltip/components/TooltipTrigger/TooltipTrigger.meta.ts +12 -0
  390. package/components/Tooltip/components/TooltipTrigger/TooltipTrigger.tsx +19 -0
  391. package/components/Tooltip/components/TooltipTrigger/TooltipTrigger.types.ts +3 -0
  392. package/components/Tooltip/components/TooltipTrigger/index.ts +1 -0
  393. package/components/Tooltip/index.ts +6 -0
  394. package/components/shared/InputLabel/InputLabel.meta.ts +22 -0
  395. package/components/shared/InputLabel/InputLabel.module.css +14 -0
  396. package/components/shared/InputLabel/InputLabel.tsx +20 -0
  397. package/components/shared/InputLabel/InputLabel.types.ts +6 -0
  398. package/components/shared/InputLabel/index.ts +1 -0
  399. package/components/shared/ResultList/ResultList.meta.ts +20 -0
  400. package/components/shared/ResultList/ResultList.module.css +71 -0
  401. package/components/shared/ResultList/ResultList.tsx +67 -0
  402. package/components/shared/ResultList/ResultList.types.ts +19 -0
  403. package/components/shared/ResultList/index.ts +2 -0
  404. package/constants/animations.ts +5 -0
  405. package/constants/colors.ts +14 -0
  406. package/constants/components.ts +101 -0
  407. package/constants/emphasis.ts +3 -0
  408. package/constants/hooks.ts +1 -0
  409. package/constants/icons.ts +4 -0
  410. package/constants/intentions.ts +28 -0
  411. package/constants/meta.ts +60 -0
  412. package/constants/positions.ts +3 -0
  413. package/constants/scale.ts +5 -0
  414. package/constants/scope.ts +151 -0
  415. package/contexts/LayoutContext/LayoutContext.tsx +93 -0
  416. package/contexts/LayoutContext/LayoutContext.types.ts +11 -0
  417. package/contexts/LayoutContext/index.ts +2 -0
  418. package/globals.d.ts +14 -0
  419. package/hooks/useChatScroll.tsx +98 -0
  420. package/hooks/useDebounce.tsx +19 -0
  421. package/hooks/useIntersection.tsx +19 -0
  422. package/hooks/useInterval.tsx +27 -0
  423. package/hooks/useKeyPress.tsx +33 -0
  424. package/hooks/useLayoutContext.tsx +23 -0
  425. package/hooks/usePrevious.tsx +13 -0
  426. package/hooks/usePrint.tsx +31 -0
  427. package/hooks/useResizeObserver.tsx +38 -0
  428. package/hooks/useTheme.tsx +40 -0
  429. package/index.ts +96 -0
  430. package/package.json +67 -0
  431. package/types/colors.ts +13 -0
  432. package/types/icons.ts +3 -0
  433. package/types/intentions.ts +13 -0
  434. package/types/meta.ts +24 -0
  435. package/types/positions.ts +3 -0
  436. package/types/scale.ts +29 -0
  437. package/types/scope.ts +67 -0
  438. package/types/themes.ts +2 -0
  439. package/types/typography.ts +1 -0
  440. package/utils/colors.ts +11 -0
  441. package/utils/date.ts +54 -0
@@ -0,0 +1,67 @@
1
+ import { getClasses } from "@heliosgraphics/utils"
2
+ import { Checkbox } from "../../Checkbox"
3
+ import { Flex } from "../../Flex"
4
+ import { Icon } from "../../Icon"
5
+ import { Text } from "../../Text"
6
+ import styles from "./ResultList.module.css"
7
+ import type { ChangeEventHandler, FC } from "react"
8
+ import type { ResultListProps } from "./ResultList.types"
9
+
10
+ export const ResultList: FC<ResultListProps> = ({ items, isHidden, ref }) => {
11
+ if (!items?.length || isHidden) return null
12
+
13
+ const resultListClasses: string = getClasses(styles.resultList, "elevation-lg")
14
+
15
+ return (
16
+ <ol className={resultListClasses} data-ui-component="ResultList" role="listbox" ref={ref}>
17
+ {items?.map((item, index) => {
18
+ const itemKey: string = item.name ? `${item.name}-${index}` : `separator-${index}`
19
+ const itemClasses: string = getClasses("flex flex-y-center gap-5", styles.item, {
20
+ [styles.itemActive]: item.isActive && !item.type,
21
+ [styles.itemDisabled]: item.isDisabled,
22
+ })
23
+
24
+ if (item.type === "separator") return <li key={itemKey} className={styles.resultList__separator} />
25
+
26
+ if (item.type === "checkbox") {
27
+ const onCheck: ChangeEventHandler<HTMLInputElement> = (): void => {
28
+ item.onClick?.({} as React.MouseEvent)
29
+ }
30
+
31
+ return (
32
+ <li key={itemKey} onClick={item.onClick} className={itemClasses}>
33
+ <Checkbox
34
+ label={item.name}
35
+ {...(item.description && { description: item.description })}
36
+ isChecked={!!item.isActive}
37
+ onChange={onCheck}
38
+ />
39
+ </li>
40
+ )
41
+ }
42
+
43
+ return (
44
+ <li key={itemKey} onClick={item.onClick} className={itemClasses}>
45
+ {item.icon && (
46
+ <Flex isCentered={true}>
47
+ <Icon icon={item.icon} size={18} />
48
+ </Flex>
49
+ )}
50
+ <Flex isColumn={true} gap={1}>
51
+ <Text type="small" fontWeight="medium" lineClamp={1}>
52
+ {item.name}
53
+ </Text>
54
+ {!!item.description && (
55
+ <Text type="tiny" fontFamily="sans">
56
+ {item.description}
57
+ </Text>
58
+ )}
59
+ </Flex>
60
+ </li>
61
+ )
62
+ })}
63
+ </ol>
64
+ )
65
+ }
66
+
67
+ ResultList.displayName = "ResultList"
@@ -0,0 +1,19 @@
1
+ import type { Ref, MouseEventHandler } from "react"
2
+ import type { HeliosIconType } from "../../../types/icons"
3
+
4
+ export interface ResultItem {
5
+ description?: string
6
+ icon?: HeliosIconType
7
+ isActive?: boolean
8
+ isDisabled?: boolean
9
+ name: string
10
+ onClick?: MouseEventHandler
11
+ ref?: Ref<HTMLOListElement>
12
+ type?: "separator" | "checkbox"
13
+ }
14
+
15
+ export interface ResultListProps {
16
+ items?: Array<ResultItem>
17
+ isHidden?: boolean
18
+ ref?: Ref<HTMLOListElement>
19
+ }
@@ -0,0 +1,2 @@
1
+ export { ResultList } from "./ResultList"
2
+ export type { ResultItem } from "./ResultList.types"
@@ -0,0 +1,5 @@
1
+ export const ANIMATION_FASTEST = 64 as const
2
+ export const ANIMATION_FAST = 96 as const
3
+ export const ANIMATION_NORMAL = 128 as const
4
+ export const ANIMATION_SLOW = 160 as const
5
+ export const ANIMATION_SLOWEST = 192 as const
@@ -0,0 +1,14 @@
1
+ import type { HeliosColorType } from "../types/colors"
2
+
3
+ export const COLORS: Array<HeliosColorType> = [
4
+ "aqua",
5
+ "blue",
6
+ "gray",
7
+ "green",
8
+ "olive",
9
+ "orange",
10
+ "pink",
11
+ "purple",
12
+ "red",
13
+ "yellow",
14
+ ]
@@ -0,0 +1,101 @@
1
+ import type { HeliosAttributeMeta } from "../types/meta"
2
+
3
+ import { meta as metaAlert } from "../components/Alert/Alert.meta"
4
+ import { meta as metaBreadcrumb } from "../components/Breadcrumb/Breadcrumb.meta"
5
+ import { meta as metaBrowser } from "../components/Browser/Browser.meta"
6
+ import { meta as metaButton } from "../components/Button/Button.meta"
7
+ import { meta as metaButtonGroup } from "../components/ButtonGroup/ButtonGroup.meta"
8
+ import { meta as metaCheckbox } from "../components/Checkbox/Checkbox.meta"
9
+ import { meta as metaClock } from "../components/Clock/Clock.meta"
10
+ import { meta as metaColumn } from "../components/Column/Column.meta"
11
+ import { meta as metaConfirm } from "../components/Confirm/Confirm.meta"
12
+ import { meta as metaDatePicker } from "../components/DatePicker/DatePicker.meta"
13
+ import { meta as metaDebug } from "../components/Debug/Debug.meta"
14
+ import { meta as metaDetails } from "../components/Details/Details.meta"
15
+ import { meta as metaDialog } from "../components/Dialog/Dialog.meta"
16
+ import { meta as metaDonut } from "../components/Donut/Donut.meta"
17
+ import { meta as metaLayout } from "../components/Layout/Layout.meta"
18
+ import { meta as metaDot } from "../components/Dot/Dot.meta"
19
+ import { meta as metaDropdown } from "../components/Dropdown/Dropdown.meta"
20
+ import { meta as metaFieldset } from "../components/Fieldset/Fieldset.meta"
21
+ import { meta as metaFlex } from "../components/Flex/Flex.meta"
22
+ import { meta as metaGrid } from "../components/Grid/Grid.meta"
23
+ import { meta as metaHeading } from "../components/Heading/Heading.meta"
24
+ import { meta as metaIcon } from "../components/Icon/Icon.meta"
25
+ import { meta as metaInput } from "../components/Input/Input.meta"
26
+ import { meta as metaLoading } from "../components/Loading/Loading.meta"
27
+ import { meta as metaMarkdown } from "../components/Markdown/Markdown.meta"
28
+ import { meta as metaMasonry } from "../components/Masonry/Masonry.meta"
29
+ import { meta as metaMenu } from "../components/Menu/Menu.meta"
30
+ import { meta as metaOverlay } from "../components/Overlay/Overlay.meta"
31
+ import { meta as metaPie } from "../components/Pie/Pie.meta"
32
+ import { meta as metaPill } from "../components/Pill/Pill.meta"
33
+ import { meta as metaProgress } from "../components/Progress/Progress.meta"
34
+ import { meta as metaRadio } from "../components/Radio/Radio.meta"
35
+ import { meta as metaRange } from "../components/Range/Range.meta"
36
+ import { meta as metaSegments } from "../components/Segments/Segments.meta"
37
+ import { meta as metaSelect } from "../components/Select/Select.meta"
38
+ import { meta as metaSeparator } from "../components/Separator/Separator.meta"
39
+ import { meta as metaSetup } from "../components/Setup/Setup.meta"
40
+ import { meta as metaShimmer } from "../components/Shimmer/Shimmer.meta"
41
+ import { meta as metaSlider } from "../components/Slider/Slider.meta"
42
+ import { meta as metaSpacer } from "../components/Spacer/Spacer.meta"
43
+ import { meta as metaTable } from "../components/Table/Table.meta"
44
+ import { meta as metaTabs } from "../components/Tabs/Tabs.meta"
45
+ import { meta as metaText } from "../components/Text/Text.meta"
46
+ import { meta as metaTextarea } from "../components/Textarea/Textarea.meta"
47
+ import { meta as metaTile } from "../components/Tile/Tile.meta"
48
+ import { meta as metaTimestamp } from "../components/Timestamp/Timestamp.meta"
49
+ import { meta as metaToggle } from "../components/Toggle/Toggle.meta"
50
+ import { meta as metaTooltip } from "../components/Tooltip/Tooltip.meta"
51
+
52
+ export const COMPONENTS = {
53
+ Alert: metaAlert,
54
+ Breadcrumb: metaBreadcrumb,
55
+ Browser: metaBrowser,
56
+ Button: metaButton,
57
+ ButtonGroup: metaButtonGroup,
58
+ Checkbox: metaCheckbox,
59
+ Clock: metaClock,
60
+ Column: metaColumn,
61
+ Confirm: metaConfirm,
62
+ DatePicker: metaDatePicker,
63
+ Debug: metaDebug,
64
+ Details: metaDetails,
65
+ Dialog: metaDialog,
66
+ Donut: metaDonut,
67
+ Dot: metaDot,
68
+ Dropdown: metaDropdown,
69
+ Fieldset: metaFieldset,
70
+ Flex: metaFlex,
71
+ Grid: metaGrid,
72
+ Heading: metaHeading,
73
+ Icon: metaIcon,
74
+ Input: metaInput,
75
+ Layout: metaLayout,
76
+ Loading: metaLoading,
77
+ Markdown: metaMarkdown,
78
+ Masonry: metaMasonry,
79
+ Menu: metaMenu,
80
+ Overlay: metaOverlay,
81
+ Pie: metaPie,
82
+ Pill: metaPill,
83
+ Progress: metaProgress,
84
+ Radio: metaRadio,
85
+ Range: metaRange,
86
+ Segments: metaSegments,
87
+ Select: metaSelect,
88
+ Separator: metaSeparator,
89
+ Setup: metaSetup,
90
+ Shimmer: metaShimmer,
91
+ Slider: metaSlider,
92
+ Spacer: metaSpacer,
93
+ Table: metaTable,
94
+ Tabs: metaTabs,
95
+ Text: metaText,
96
+ Textarea: metaTextarea,
97
+ Tile: metaTile,
98
+ Timestamp: metaTimestamp,
99
+ Toggle: metaToggle,
100
+ Tooltip: metaTooltip,
101
+ } as const satisfies Record<string, HeliosAttributeMeta<unknown>>
@@ -0,0 +1,3 @@
1
+ import type { HeliosEmphasisType } from "../types/intentions"
2
+
3
+ export const EMPHASES: Array<HeliosEmphasisType> = ["primary", "secondary", "tertiary", "inherit"]
@@ -0,0 +1 @@
1
+ export const HOOKS = ["useIntersection", "useLayoutContext", "usePrevious", "usePrint", "useTheme"] as const
@@ -0,0 +1,4 @@
1
+ import { icons } from "@heliosgraphics/icons"
2
+ import type { HeliosIconType } from "../types/icons"
3
+
4
+ export const ICONS: ReadonlyArray<HeliosIconType> = Object.keys(icons) as Array<HeliosIconType>
@@ -0,0 +1,28 @@
1
+ import type { HeliosColorType } from "../types/colors"
2
+ import type { HeliosIntentionType } from "../types/intentions"
3
+
4
+ export const INTENTIONS: Array<HeliosIntentionType> = [
5
+ "action",
6
+ "automation",
7
+ "confirmation",
8
+ "danger",
9
+ "highlight",
10
+ "question",
11
+ "organic",
12
+ "neutral",
13
+ "success",
14
+ "warning",
15
+ ]
16
+
17
+ export const INTENTION_COLOR_MAP: Readonly<Record<HeliosIntentionType, HeliosColorType>> = {
18
+ action: "blue",
19
+ automation: "pink",
20
+ confirmation: "purple",
21
+ danger: "red",
22
+ highlight: "orange",
23
+ neutral: "gray",
24
+ organic: "olive",
25
+ question: "aqua",
26
+ success: "green",
27
+ warning: "yellow",
28
+ }
@@ -0,0 +1,60 @@
1
+ import { COMPONENTS } from "./components"
2
+ import type { HeliosComponentStatusType, HeliosComponentCategoryType } from "../types/meta"
3
+ import type { HeliosColorType } from "../types/colors"
4
+ import type { HeliosIconType } from "../types/icons"
5
+
6
+ export const STATUS_COLORS = {
7
+ experimental: "pink",
8
+ nominal: "gray",
9
+ stable: "green",
10
+ internal: "gray",
11
+ } as const satisfies Record<HeliosComponentStatusType, HeliosColorType>
12
+
13
+ export const STATUS_ICONS = {
14
+ experimental: "bolt",
15
+ nominal: "bolt",
16
+ stable: "check",
17
+ internal: "bullseye",
18
+ } as const satisfies Record<HeliosComponentStatusType, HeliosIconType>
19
+
20
+ export const STATUS_NAMES = {
21
+ experimental: "Experimental",
22
+ nominal: "Might Change",
23
+ stable: "Stable",
24
+ internal: "Internal",
25
+ } as const satisfies Record<HeliosComponentStatusType, string>
26
+
27
+ export const TYPE_NAMES = {
28
+ content: "Content",
29
+ pattern: "Pattern",
30
+ core: "Core",
31
+ layout: "Layout",
32
+ meta: "Meta",
33
+ } as const satisfies Record<HeliosComponentCategoryType, string>
34
+
35
+ interface StatusReturnType {
36
+ color: HeliosColorType
37
+ icon: HeliosIconType
38
+ name: string
39
+ status: HeliosComponentStatusType
40
+ }
41
+
42
+ export const getStatus = (component: string = "Example"): StatusReturnType => {
43
+ const componentMeta = COMPONENTS[component as keyof typeof COMPONENTS]
44
+
45
+ if (!componentMeta || !componentMeta._status) {
46
+ throw new Error(`Component "${component}" not found or missing _status`)
47
+ }
48
+
49
+ const _status = componentMeta._status as HeliosComponentStatusType
50
+ const color = STATUS_COLORS[_status]
51
+ const icon = STATUS_ICONS[_status]
52
+ const name = STATUS_NAMES[_status]
53
+
54
+ return {
55
+ status: _status,
56
+ color,
57
+ icon,
58
+ name,
59
+ }
60
+ }
@@ -0,0 +1,3 @@
1
+ import { HeliosPositionType } from "../types/positions"
2
+
3
+ export const POSITIONS: Array<HeliosPositionType> = ["bottom-left", "bottom-right", "top-left", "top-right"]
@@ -0,0 +1,5 @@
1
+ import type { HeliosScaleType } from "../types/scale"
2
+
3
+ export const SCALE: Array<HeliosScaleType> = [
4
+ 1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 48, 64, 80, 96,
5
+ ] as const
@@ -0,0 +1,151 @@
1
+ import type { Scope } from "../types/scope"
2
+ import type { BreadcrumbItem } from "../components/Breadcrumb/Breadcrumb.types"
3
+ import type { SelectItem } from "../components/Select/Select.types"
4
+ import type { PieItem } from "../components/Pie/Pie.types"
5
+ import type { ResultItem } from "../components/shared/ResultList/ResultList.types"
6
+
7
+ const BREADCRUMB_ITEMS: Array<BreadcrumbItem> = [
8
+ { name: "Index", href: "/", onClick: () => null },
9
+ { name: "Books", href: "/", onClick: () => null },
10
+ {
11
+ name: "Lorem Ipsum",
12
+ href: "/",
13
+ isActive: true,
14
+ onClick: () => null,
15
+ },
16
+ ]
17
+
18
+ const RESULT_ITEMS: Array<ResultItem> = [
19
+ { name: "First Item", icon: "bullseye" },
20
+ {
21
+ name: "Second Item",
22
+ icon: "bell",
23
+ description: "Nulla ultricies ultrices mauris, sed posuere justo ultrices in.",
24
+ },
25
+ { name: "Separator", type: "separator" },
26
+ { name: "Disabled", isDisabled: false },
27
+ { name: "Checkbox", type: "checkbox", isActive: false, onClick: () => null },
28
+ {
29
+ name: "Checkbox Checked",
30
+ type: "checkbox",
31
+ isActive: true,
32
+ onClick: () => null,
33
+ description: "Nulla ultricies ultrices mauris, sed posuere justo ultrices in.",
34
+ },
35
+ { name: "Random Item", icon: "person" },
36
+ { name: "Active Item", icon: "bell", isActive: true },
37
+ { name: "Lorem Ipsum Dolor Sit Ameta", icon: "x-x" },
38
+ ]
39
+
40
+ const MARKDOWN: string = `# Donec vestibulum
41
+ ## Nam porta, orci porta commodo
42
+ ### Pellentesque eu est luctus
43
+ #### Nullam pulvinar convallis
44
+ ##### Luctus sollicitudin ipsum
45
+ ###### Aliquam erat volutpat
46
+
47
+ Praesent tincidunt elit ante, <a href="">sit amet aliquet nunc imperdiet</a> nec. In pulvinar volutpat lacus sed semper. Aliquam vulputate risus at lacinia aliquam.
48
+
49
+ |feature|description|
50
+ |--|--|
51
+ |calt|Contextual alternates|
52
+ |dlig|Discretionary Ligatures|
53
+
54
+ Mauris efficitur aliquam risus, id tempus quam pharetra vitae.
55
+
56
+ \`\`\`tsx
57
+ <Flex isCentered={true} gap={4}>
58
+ <Dot size={8} color="blue"/>
59
+ <Dot size={8} color="red"/>
60
+ </Flex>
61
+ \`\`\`
62
+
63
+ Integer leo est, lobortis at nulla at, tempus dignissim velit. ~~Suspendisse dignissim~~, ipsum sit amet rhoncus tristique, urna risus accumsan leo, ut \`auctor augue function() {}\` sit amet metus. Proin purus risus, tincidunt a est a, porttitor dignissim erat. Sed vitae varius urna, sed <mark>mark tincidunt neque</mark>. Aenean egestas molestie ante nec pellentesque. Donec massa diam, molestie ac gravida at, commodo et diam.
64
+
65
+ ---
66
+
67
+ - First item
68
+ - Second item<sup>1</sup>
69
+ - Third item
70
+ - Orci varius natoque penatibus<sub>2</sub>
71
+
72
+ Orci varius natoque penatibus et <a>magnis dis parturient</a> montes, nascetur ridiculus mus. Aenean varius non magna dapibus pharetra. Pellentesque eget sapien sit amet massa dapibus lacinia. Integer auctor pulvinar erat, non pharetra felis fermentum ac.
73
+
74
+ > Proin purus risus, ~~tincidunt~~ a est a, porttitor dignissim erat. Sed vitae varius urna, sed tincidunt neque. Aenean egestas molestie ante nec pellentesque. Donec massa diam, molestie ac gravida at, commodo et diam.
75
+
76
+ <small>
77
+ Phasellus tristique tortor sed malesuada aliquam. Quisque cursus sodales velit, eget condimentum erat accumsan a. Fusce feugiat felis eros, in dignissim arcu imperdiet non. Fusce tincidunt eu dolor vitae pulvinar. Quisque dignissim nibh erat, eu iaculis est maximus sit amet. Vestibulum id lobortis nisi, a maximus leo. Etiam mattis rhoncus felis id condimentum. Vivamus ut nisi non nunc sollicitudin consectetur at id nisl. Vivamus quis turpis a leo pellentesque interdum et id diam. Fusce egestas diam orci, ut volutpat diam semper nec. Pellentesque accumsan consequat erat, id mattis mi ultrices sit amet.
78
+ </small>
79
+ `
80
+
81
+ const TAB_ITEMS: Array<string> = ["First", "Second", "Third"]
82
+
83
+ const TAB_SECTIONS: Array<unknown> = ["1. Content", "2. Content", "3. Content"]
84
+
85
+ const PIE_ITEMS: Array<PieItem> = [
86
+ { name: "X", value: 24 },
87
+ { name: "First", value: 24 },
88
+ { name: "Second", value: 34 },
89
+ { name: "Third", value: 63 },
90
+ ]
91
+
92
+ const SELECT_ITEMS: Array<SelectItem> = [
93
+ { name: "First", value: "first" },
94
+ { name: "Second", value: "second" },
95
+ ]
96
+
97
+ export const SCOPE: Scope = {
98
+ APPEARANCE: "light",
99
+ BREADCRUMB_ITEMS: BREADCRUMB_ITEMS,
100
+ BUTTONGROUP_ALIGN: "left",
101
+ CHECKBOX_LABEL: "Helium Enabled",
102
+ CHILDREN: "Hello World",
103
+ COLOR: "blue",
104
+ COLOR_ACCENT: "purple",
105
+ DATE: new Date().toISOString(),
106
+ DATE_FORMAT: "YYYY-MM-DD",
107
+ DONUT_SIZE: 48,
108
+ EMPHASIS: "primary",
109
+ FUNCTION: () => console.log(0),
110
+ GAP: 8,
111
+ HELPER_TEXT: "Learn this with love",
112
+ ICON: "robot",
113
+ ICON_ACCENT: "asterisk",
114
+ INPUT_LABEL: "Helium Enabled",
115
+ INTENT: "action",
116
+ INTENT_PARAGRAPH: "Offer guidance or recommendations based on expertise or experience, allowing for personal choice",
117
+ INTENT_TITLE: "Action",
118
+ IS_ACTIVE: false,
119
+ IS_CENTERED: false,
120
+ IS_CHECKED: true,
121
+ IS_COLUMN: true,
122
+ IS_DISABLED: false,
123
+ IS_LOADING: false,
124
+ IS_NARROW: false,
125
+ IS_OPEN: false,
126
+ IS_ROUND: false,
127
+ IS_ROUNDED: true,
128
+ MARKDOWN,
129
+ ON_RADIO_CHANGE: () => console.log(0),
130
+ ON_SELECT_ITEM: (item: SelectItem) => console.log(item),
131
+ ON_TEXTAREA_CHANGE: () => console.log(0),
132
+ ON_TEXT_CHANGE: () => console.log(0),
133
+ ON_TOGGLE_OPEN: () => console.log(0),
134
+ PERCENTAGE: 49,
135
+ PIE_ITEMS,
136
+ PILL_LABEL: "Deployed",
137
+ POSITION: "bottom-left",
138
+ RADIO: "radio-state-01",
139
+ RADIO_LABEL: "Atmosphere",
140
+ RESULT_LIST_ITEMS: RESULT_ITEMS,
141
+ SCALE: 24,
142
+ SELECT_ITEMS,
143
+ SIZE: "normal",
144
+ TAB_ITEMS,
145
+ TAB_SECTIONS,
146
+ TEXTAREA: "Your Message",
147
+ TEXTAREA_LABEL: "Your Message",
148
+ TEXTAREA_PLACEHOLDER: "Your Message",
149
+ TEXT_LABEL: "Email Address",
150
+ TEXT_VALUE: "",
151
+ }
@@ -0,0 +1,93 @@
1
+ "use client"
2
+
3
+ import { useState, createContext, useRef, useEffect, useMemo, useCallback } from "react"
4
+ import type { FC, PropsWithChildren } from "react"
5
+ import type { LayoutContextProps } from "./LayoutContext.types"
6
+
7
+ const IGNORE_DATA_ATTRIBUTE = "data-ui-layout-ignore" as const
8
+
9
+ const LayoutContext = createContext<LayoutContextProps | null>(null)
10
+
11
+ interface LayoutProviderBaseProps {
12
+ breakpoint?: number
13
+ }
14
+ type LayoutProviderProps = PropsWithChildren<LayoutProviderBaseProps>
15
+
16
+ const LayoutProvider: FC<LayoutProviderProps> = ({ children, breakpoint = 960 }) => {
17
+ const [isMenuVisible, setIsMenuVisible] = useState<boolean>(false)
18
+ const [isWideEnough, setIsWideEnough] = useState<boolean>(false)
19
+ const [hasMounted, setHasMounted] = useState<boolean>(false)
20
+ const asideRef = useRef<HTMLElement | null>(null)
21
+ const isMenuVisibleRef = useRef<boolean>(false)
22
+
23
+ useEffect(() => {
24
+ isMenuVisibleRef.current = isMenuVisible
25
+ }, [isMenuVisible])
26
+
27
+ useEffect(() => {
28
+ setHasMounted(true)
29
+
30
+ const mql = globalThis.matchMedia(`(min-width: ${breakpoint}px)`)
31
+
32
+ const handleChange = (event: MediaQueryListEvent | MediaQueryList): void => {
33
+ const matches = event.matches
34
+
35
+ setIsWideEnough(matches)
36
+
37
+ if (matches) {
38
+ setIsMenuVisible(true)
39
+ } else {
40
+ setIsMenuVisible(false)
41
+ }
42
+ }
43
+
44
+ // Set initial state
45
+ handleChange(mql)
46
+
47
+ mql.addEventListener("change", handleChange)
48
+
49
+ const handleClickOutside = (event: MouseEvent): void => {
50
+ if (asideRef?.current?.contains(event.target as Node)) return
51
+
52
+ const clickedElement = event.target as Element
53
+ const shouldIgnore: Element | null = clickedElement?.closest(`[${IGNORE_DATA_ATTRIBUTE}]`)
54
+
55
+ if (!shouldIgnore) {
56
+ const currentIsWideEnough: boolean = mql.matches
57
+
58
+ if (!currentIsWideEnough && isMenuVisibleRef.current) {
59
+ setIsMenuVisible(false)
60
+ }
61
+ }
62
+ }
63
+
64
+ globalThis.document.addEventListener("mousedown", handleClickOutside)
65
+
66
+ return (): void => {
67
+ mql.removeEventListener("change", handleChange)
68
+ globalThis.document.removeEventListener("mousedown", handleClickOutside)
69
+ }
70
+ }, [breakpoint])
71
+
72
+ const isNavigationVisible: boolean = isWideEnough || isMenuVisible
73
+
74
+ const onNavigationToggle = useCallback((): void => setIsMenuVisible((prev) => !prev), [])
75
+ const onAsideClose = useCallback((): void => setIsMenuVisible(false), [])
76
+
77
+ const contextValue: LayoutContextProps = useMemo(
78
+ () => ({
79
+ asideRef,
80
+ hasMounted,
81
+ isMenuVisible,
82
+ isWideEnough,
83
+ onAsideClose,
84
+ onNavigationToggle,
85
+ isNavigationVisible,
86
+ }),
87
+ [hasMounted, isMenuVisible, isWideEnough, isNavigationVisible, onAsideClose, onNavigationToggle],
88
+ )
89
+
90
+ return <LayoutContext.Provider value={contextValue}>{children}</LayoutContext.Provider>
91
+ }
92
+
93
+ export { LayoutContext, LayoutProvider }
@@ -0,0 +1,11 @@
1
+ import type { RefObject } from "react"
2
+
3
+ export interface LayoutContextProps {
4
+ asideRef: RefObject<HTMLElement | null>
5
+ hasMounted: boolean
6
+ isMenuVisible: boolean
7
+ isWideEnough: boolean
8
+ onAsideClose: () => void
9
+ onNavigationToggle: () => void
10
+ isNavigationVisible: boolean
11
+ }
@@ -0,0 +1,2 @@
1
+ export { LayoutContext, LayoutProvider } from "./LayoutContext"
2
+ export type { LayoutContextProps } from "./LayoutContext.types"
package/globals.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ declare module "*.module.css"
2
+ declare module "*.css"
3
+
4
+ type HeliosFixedThemeTypeRef = import("./types/themes").HeliosFixedThemeType
5
+
6
+ interface Window {
7
+ __theme: HeliosFixedThemeTypeRef
8
+ __onThemeChange: ((theme: HeliosFixedThemeTypeRef) => void) | undefined
9
+ __setPreferredTheme: (theme: HeliosFixedThemeTypeRef) => void
10
+ }
11
+
12
+ declare var __theme: HeliosFixedThemeTypeRef
13
+ declare var __onThemeChange: ((theme: HeliosFixedThemeTypeRef) => void) | undefined
14
+ declare var __setPreferredTheme: (theme: HeliosFixedThemeTypeRef) => void