stargazer-ui 1.5.13 → 1.5.14

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 (372) hide show
  1. package/Bar/Bar.type.d.ts +6 -0
  2. package/Bar/index.js +2 -0
  3. package/Bar/index.js.map +1 -0
  4. package/Bar/package.json +1 -0
  5. package/Button/Button.js +15 -0
  6. package/Button/Button.js.map +1 -0
  7. package/{types/components/Button → Button}/Button.types.d.ts +1 -2
  8. package/Button/index.d.ts +3 -0
  9. package/Button/index.js +7 -0
  10. package/Button/index.js.map +1 -0
  11. package/Button/package.json +1 -0
  12. package/ButtonGroup/ButtonGroup.d.ts +4 -0
  13. package/ButtonGroup/ButtonGroup.js +11 -0
  14. package/ButtonGroup/ButtonGroup.js.map +1 -0
  15. package/ButtonGroup/ButtonGroup.types.d.ts +7 -0
  16. package/ButtonGroup/index.d.ts +3 -0
  17. package/ButtonGroup/index.js +7 -0
  18. package/ButtonGroup/index.js.map +1 -0
  19. package/ButtonGroup/package.json +1 -0
  20. package/{types/components/Card → Card}/Card.d.ts +12 -12
  21. package/Card/Card.js +42 -0
  22. package/Card/Card.js.map +1 -0
  23. package/{types/components/Card → Card}/Card.types.d.ts +3 -1
  24. package/Card/index.d.ts +3 -0
  25. package/Card/index.js +7 -0
  26. package/Card/index.js.map +1 -0
  27. package/Card/package.json +1 -0
  28. package/CloseButton/CloseButton.js +11 -0
  29. package/CloseButton/CloseButton.js.map +1 -0
  30. package/{types/components/CloseButton → CloseButton}/CloseButton.types.d.ts +1 -1
  31. package/CloseButton/index.d.ts +3 -0
  32. package/CloseButton/index.js +7 -0
  33. package/CloseButton/index.js.map +1 -0
  34. package/CloseButton/package.json +1 -0
  35. package/Dropdown/Dropdown.d.ts +135 -0
  36. package/Dropdown/Dropdown.js +377 -0
  37. package/Dropdown/Dropdown.js.map +1 -0
  38. package/{types/components/Dropdown → Dropdown}/Dropdown.types.d.ts +12 -11
  39. package/Dropdown/DropdownOld.d.ts +135 -0
  40. package/Dropdown/index.d.ts +4 -0
  41. package/Dropdown/index.js +8 -0
  42. package/Dropdown/index.js.map +1 -0
  43. package/Dropdown/package.json +1 -0
  44. package/FileUploadButton/FileUploadButton.d.ts +4 -0
  45. package/FileUploadButton/FileUploadButton.js +20 -0
  46. package/FileUploadButton/FileUploadButton.js.map +1 -0
  47. package/FileUploadButton/FileUploadButton.types.d.ts +7 -0
  48. package/FileUploadButton/index.d.ts +3 -0
  49. package/FileUploadButton/index.js +7 -0
  50. package/FileUploadButton/index.js.map +1 -0
  51. package/FileUploadButton/package.json +1 -0
  52. package/FloatingLabel/FloatingLabel.js +15 -0
  53. package/FloatingLabel/FloatingLabel.js.map +1 -0
  54. package/{types/components/FloatingLabel → FloatingLabel}/FloatingLabel.types.d.ts +1 -1
  55. package/FloatingLabel/index.d.ts +3 -0
  56. package/FloatingLabel/index.js +7 -0
  57. package/FloatingLabel/index.js.map +1 -0
  58. package/FloatingLabel/package.json +1 -0
  59. package/Form/Form.d.ts +38 -0
  60. package/Form/Form.js +227 -0
  61. package/Form/Form.js.map +1 -0
  62. package/Form/Form.types.d.ts +159 -0
  63. package/Form/FormSelect.d.ts +14 -0
  64. package/Form/FormSelect.js +436 -0
  65. package/Form/FormSelect.js.map +1 -0
  66. package/Form/index.d.ts +4 -0
  67. package/Form/index.js +8 -0
  68. package/Form/index.js.map +1 -0
  69. package/Form/package.json +1 -0
  70. package/InputGroup/InputGroup.d.ts +7 -0
  71. package/InputGroup/InputGroup.js +31 -0
  72. package/InputGroup/InputGroup.js.map +1 -0
  73. package/InputGroup/InputGroup.types.d.ts +17 -0
  74. package/InputGroup/index.d.ts +4 -0
  75. package/InputGroup/index.js +7 -0
  76. package/InputGroup/index.js.map +1 -0
  77. package/InputGroup/package.json +1 -0
  78. package/List/List.d.ts +14 -0
  79. package/List/List.js +77 -0
  80. package/List/List.js.map +1 -0
  81. package/List/List.types.d.ts +28 -0
  82. package/List/index.d.ts +3 -0
  83. package/List/index.js +7 -0
  84. package/List/index.js.map +1 -0
  85. package/List/package.json +1 -0
  86. package/{types/components/Modal → Modal}/Modal.d.ts +19 -19
  87. package/Modal/Modal.js +157 -0
  88. package/Modal/Modal.js.map +1 -0
  89. package/{types/components/Modal → Modal}/Modal.types.d.ts +3 -2
  90. package/Modal/index.d.ts +3 -0
  91. package/Modal/index.js +7 -0
  92. package/Modal/index.js.map +1 -0
  93. package/Modal/package.json +1 -0
  94. package/{types/components/Nav → Nav}/Nav.d.ts +12 -12
  95. package/Nav/Nav.js +29 -0
  96. package/Nav/Nav.js.map +1 -0
  97. package/{types/components/Nav → Nav}/Nav.types.d.ts +1 -1
  98. package/Nav/index.d.ts +4 -0
  99. package/Nav/index.js +7 -0
  100. package/Nav/index.js.map +1 -0
  101. package/Nav/package.json +1 -0
  102. package/{types/components/NavBar → NavBar}/Navbar.d.ts +7 -8
  103. package/NavBar/Navbar.js +36 -0
  104. package/NavBar/Navbar.js.map +1 -0
  105. package/{types/components/NavBar → NavBar}/Navbar.types.d.ts +2 -1
  106. package/NavBar/index.d.ts +4 -0
  107. package/NavBar/index.js +8 -0
  108. package/NavBar/index.js.map +1 -0
  109. package/NavBar/package.json +1 -0
  110. package/NavDropdown/NavDropdown.d.ts +99 -0
  111. package/NavDropdown/NavDropdown.js +75 -0
  112. package/NavDropdown/NavDropdown.js.map +1 -0
  113. package/NavDropdown/index.d.ts +3 -0
  114. package/NavDropdown/index.js +7 -0
  115. package/NavDropdown/index.js.map +1 -0
  116. package/NavDropdown/package.json +1 -0
  117. package/Overlay/Overlay.d.ts +4 -0
  118. package/Overlay/Overlay.js +242 -0
  119. package/Overlay/Overlay.js.map +1 -0
  120. package/Overlay/Overlay.types.d.ts +22 -0
  121. package/{src/Overlay/index.ts → Overlay/index.d.ts} +3 -3
  122. package/Overlay/index.js +7 -0
  123. package/Overlay/index.js.map +1 -0
  124. package/Overlay/package.json +1 -0
  125. package/{types/components/Popout → Popout}/Popout.d.ts +6 -6
  126. package/Popout/Popout.js +111 -0
  127. package/Popout/Popout.js.map +1 -0
  128. package/{types/components/Popout → Popout}/Popout.types.d.ts +1 -1
  129. package/Popout/index.d.ts +3 -0
  130. package/Popout/index.js +7 -0
  131. package/Popout/index.js.map +1 -0
  132. package/Popout/package.json +1 -0
  133. package/Spinner/Spinner.js +11 -0
  134. package/Spinner/Spinner.js.map +1 -0
  135. package/Spinner/index.d.ts +3 -0
  136. package/Spinner/index.js +7 -0
  137. package/Spinner/index.js.map +1 -0
  138. package/Spinner/package.json +1 -0
  139. package/Table/Table.js +12 -0
  140. package/Table/Table.js.map +1 -0
  141. package/{types/components/Table → Table}/Table.types.d.ts +1 -1
  142. package/Table/index.d.ts +3 -0
  143. package/Table/index.js +7 -0
  144. package/Table/index.js.map +1 -0
  145. package/Table/package.json +1 -0
  146. package/Tabs/Tabs.js +162 -0
  147. package/Tabs/Tabs.js.map +1 -0
  148. package/{types/components/Tabs → Tabs}/Tabs.types.d.ts +12 -2
  149. package/Tabs/index.d.ts +3 -0
  150. package/Tabs/index.js +7 -0
  151. package/Tabs/index.js.map +1 -0
  152. package/Tabs/package.json +1 -0
  153. package/ToggleButton/ToggleButton.d.ts +4 -0
  154. package/ToggleButton/ToggleButton.js +18 -0
  155. package/ToggleButton/ToggleButton.js.map +1 -0
  156. package/ToggleButton/ToggleButton.types.d.ts +7 -0
  157. package/ToggleButton/index.d.ts +3 -0
  158. package/ToggleButton/index.js +7 -0
  159. package/ToggleButton/index.js.map +1 -0
  160. package/ToggleButton/package.json +1 -0
  161. package/{src/hooks/index.ts → hooks/index.d.ts} +6 -7
  162. package/hooks/index.js +7 -0
  163. package/hooks/index.js.map +1 -0
  164. package/hooks/package.json +1 -0
  165. package/hooks/useClassname.d.ts +2 -0
  166. package/hooks/useClassname.js +7 -0
  167. package/hooks/useClassname.js.map +1 -0
  168. package/hooks/useDraggable.d.ts +23 -0
  169. package/hooks/useDraggable.js +147 -0
  170. package/hooks/useDraggable.js.map +1 -0
  171. package/hooks/useKeepElementFocused.d.ts +2 -0
  172. package/hooks/useKeepElementFocused.js +37 -0
  173. package/hooks/useKeepElementFocused.js.map +1 -0
  174. package/hooks/useQueryParams.d.ts +2 -0
  175. package/hooks/useQueryParams.js +13 -0
  176. package/hooks/useQueryParams.js.map +1 -0
  177. package/hooks/useScreenSize.d.ts +5 -0
  178. package/hooks/useScreenSize.js +21 -0
  179. package/hooks/useScreenSize.js.map +1 -0
  180. package/index.d.ts +18 -0
  181. package/index.js +19 -0
  182. package/index.js.map +1 -0
  183. package/package.json +1 -79
  184. package/styles/stargazerui.css +6552 -0
  185. package/styles/stargazerui.css.map +1 -0
  186. package/{src/utils/BaseTypes.ts → utils/BaseTypes.d.ts} +25 -32
  187. package/utils/ContrastingColor.d.ts +1 -0
  188. package/utils/CreateSyntheticEvent.d.ts +2 -0
  189. package/utils/CreateSyntheticEvent.js +33 -0
  190. package/utils/CreateSyntheticEvent.js.map +1 -0
  191. package/utils/IsInputKey.d.ts +7 -0
  192. package/utils/IsInputKey.js +20 -0
  193. package/utils/IsInputKey.js.map +1 -0
  194. package/utils/MergeClassnames.d.ts +2 -0
  195. package/utils/MergeClassnames.js +7 -0
  196. package/utils/MergeClassnames.js.map +1 -0
  197. package/utils/MergeRefs.d.ts +1 -0
  198. package/utils/MergeRefs.js +16 -0
  199. package/utils/MergeRefs.js.map +1 -0
  200. package/.babelrc.json +0 -10
  201. package/.eslintrc.cjs +0 -18
  202. package/.gitattributes +0 -2
  203. package/LICENSE +0 -21
  204. package/dev/index.html +0 -12
  205. package/dev/index.jsx +0 -46
  206. package/dev/index.scss +0 -74
  207. package/dev/pages/ButtonPage.jsx +0 -44
  208. package/dev/pages/CardPage.jsx +0 -81
  209. package/dev/pages/DropdownPage.jsx +0 -32
  210. package/dev/pages/FormPage.jsx +0 -155
  211. package/dev/pages/ListPage.jsx +0 -52
  212. package/dev/pages/ModalPage.jsx +0 -38
  213. package/dev/pages/OverlayPage.jsx +0 -39
  214. package/dev/pages/components.jsx +0 -19
  215. package/dev/stargazerui.css +0 -3762
  216. package/dev/stargazerui.css.map +0 -1
  217. package/dev/test.jsx +0 -87
  218. package/rollup.config.js +0 -140
  219. package/scripts/writePackageJsons.js +0 -42
  220. package/src/Bar/Bar.tsx +0 -0
  221. package/src/Bar/Bar.type.ts +0 -9
  222. package/src/Bar/index.ts +0 -0
  223. package/src/Button/Button.tsx +0 -20
  224. package/src/Button/Button.types.ts +0 -8
  225. package/src/Button/index.ts +0 -3
  226. package/src/ButtonGroup/ButtonGroup.tsx +0 -14
  227. package/src/ButtonGroup/ButtonGroup.types.ts +0 -8
  228. package/src/ButtonGroup/index.ts +0 -3
  229. package/src/Card/Card.tsx +0 -70
  230. package/src/Card/Card.types.ts +0 -33
  231. package/src/Card/index.ts +0 -3
  232. package/src/CloseButton/CloseButton.tsx +0 -14
  233. package/src/CloseButton/CloseButton.types.ts +0 -6
  234. package/src/CloseButton/index.ts +0 -3
  235. package/src/Dropdown/Dropdown.tsx +0 -440
  236. package/src/Dropdown/Dropdown.types.ts +0 -60
  237. package/src/Dropdown/DropdownOld.tsx +0 -409
  238. package/src/Dropdown/index.ts +0 -4
  239. package/src/FileUploadButton/FileUploadButton.tsx +0 -27
  240. package/src/FileUploadButton/FileUploadButton.types.ts +0 -9
  241. package/src/FileUploadButton/index.ts +0 -3
  242. package/src/FloatingLabel/FloatingLabel.tsx +0 -22
  243. package/src/FloatingLabel/FloatingLabel.types.ts +0 -11
  244. package/src/FloatingLabel/index.ts +0 -3
  245. package/src/Form/Form.tsx +0 -398
  246. package/src/Form/Form.types.ts +0 -169
  247. package/src/Form/FormSelect.tsx +0 -527
  248. package/src/Form/index.ts +0 -4
  249. package/src/InputGroup/InputGroup.tsx +0 -46
  250. package/src/InputGroup/InputGroup.types.ts +0 -22
  251. package/src/InputGroup/index.ts +0 -4
  252. package/src/List/List.tsx +0 -112
  253. package/src/List/List.types.ts +0 -34
  254. package/src/List/index.ts +0 -4
  255. package/src/Modal/Modal.tsx +0 -229
  256. package/src/Modal/Modal.types.ts +0 -49
  257. package/src/Modal/index.ts +0 -4
  258. package/src/Nav/Nav.tsx +0 -43
  259. package/src/Nav/Nav.types.ts +0 -21
  260. package/src/Nav/index.ts +0 -4
  261. package/src/NavBar/Navbar.tsx +0 -57
  262. package/src/NavBar/Navbar.types.ts +0 -24
  263. package/src/NavBar/index.ts +0 -4
  264. package/src/NavDropdown/NavDropdown.tsx +0 -93
  265. package/src/NavDropdown/NavDropdown.types.ts +0 -6
  266. package/src/NavDropdown/index.ts +0 -3
  267. package/src/Overlay/Overlay.tsx +0 -309
  268. package/src/Overlay/Overlay.types.ts +0 -24
  269. package/src/Popout/Popout.tsx +0 -155
  270. package/src/Popout/Popout.types.ts +0 -42
  271. package/src/Popout/index.ts +0 -3
  272. package/src/Spinner/Spinner.tsx +0 -15
  273. package/src/Spinner/Spinner.types.ts +0 -7
  274. package/src/Spinner/index.ts +0 -3
  275. package/src/Table/Table.tsx +0 -16
  276. package/src/Table/Table.types.ts +0 -9
  277. package/src/Table/index.ts +0 -3
  278. package/src/Tabs/Tabs.tsx +0 -233
  279. package/src/Tabs/Tabs.types.ts +0 -52
  280. package/src/Tabs/index.ts +0 -3
  281. package/src/ToggleButton/ToggleButton.tsx +0 -21
  282. package/src/ToggleButton/ToggleButton.types.ts +0 -8
  283. package/src/ToggleButton/index.ts +0 -3
  284. package/src/assets/tooltip-pointer.svg +0 -3
  285. package/src/assets/warning.svg +0 -39
  286. package/src/hooks/useClassname.ts +0 -5
  287. package/src/hooks/useDraggable.ts +0 -186
  288. package/src/hooks/useKeepElementFocused.ts +0 -37
  289. package/src/hooks/useQueryParams.ts +0 -12
  290. package/src/hooks/useScreenSize.ts +0 -24
  291. package/src/index.ts +0 -21
  292. package/src/styles/_Card.scss +0 -166
  293. package/src/styles/_CloseButton.scss +0 -51
  294. package/src/styles/_CustomButton.scss +0 -134
  295. package/src/styles/_Dropdown.scss +0 -127
  296. package/src/styles/_FloatingLabel.scss +0 -56
  297. package/src/styles/_Forms.scss +0 -7
  298. package/src/styles/_Grid.scss +0 -178
  299. package/src/styles/_InputGroup.scss +0 -71
  300. package/src/styles/_List.scss +0 -62
  301. package/src/styles/_Modal.scss +0 -234
  302. package/src/styles/_ModalOld.scss +0 -242
  303. package/src/styles/_Nav.scss +0 -36
  304. package/src/styles/_NavBar.scss +0 -116
  305. package/src/styles/_NavDropdown.scss +0 -33
  306. package/src/styles/_OffCanvas.scss +0 -260
  307. package/src/styles/_OverLay.scss +0 -64
  308. package/src/styles/_Popout.scss +0 -75
  309. package/src/styles/_Spinner.scss +0 -19
  310. package/src/styles/_Table.scss +0 -34
  311. package/src/styles/_Tabs.scss +0 -129
  312. package/src/styles/_colors.scss +0 -510
  313. package/src/styles/_components.scss +0 -40
  314. package/src/styles/_functions.scss +0 -134
  315. package/src/styles/_mixins.scss +0 -26
  316. package/src/styles/_reset.scss +0 -237
  317. package/src/styles/_utilities.scss +0 -2480
  318. package/src/styles/_variables.scss +0 -164
  319. package/src/styles/forms/_FormCheck.scss +0 -270
  320. package/src/styles/forms/_FormControl.scss +0 -135
  321. package/src/styles/forms/_FormGroup.scss +0 -26
  322. package/src/styles/forms/_FormLabel.scss +0 -3
  323. package/src/styles/forms/_FormSelect.scss +0 -196
  324. package/src/styles/forms/_FormSlider.scss +0 -116
  325. package/src/styles/forms/_FormText.scss +0 -6
  326. package/src/utils/ContrastingColor.ts +0 -25
  327. package/src/utils/CreateSyntheticEvent.ts +0 -30
  328. package/src/utils/FileImportExport.js +0 -50
  329. package/src/utils/IsInputKey.ts +0 -18
  330. package/src/utils/MergeClassnames.ts +0 -5
  331. package/src/utils/MergeRefs.ts +0 -12
  332. package/src/vite-env.d.ts +0 -1
  333. package/tsconfig-build.json +0 -4
  334. package/tsconfig.json +0 -79
  335. package/tsconfig.node.json +0 -10
  336. package/types/BaseTypes.d.ts +0 -19
  337. package/types/components/Button/index.d.ts +0 -1
  338. package/types/components/Card/index.d.ts +0 -1
  339. package/types/components/CloseButton/index.d.ts +0 -1
  340. package/types/components/Dropdown/Dropdown.d.ts +0 -71
  341. package/types/components/Dropdown/index.d.ts +0 -1
  342. package/types/components/FloatingLabel/index.d.ts +0 -1
  343. package/types/components/Form/Form.d.ts +0 -17
  344. package/types/components/Form/Form.types.d.ts +0 -50
  345. package/types/components/Form/index.d.ts +0 -1
  346. package/types/components/InputGroup/InputGroup.d.ts +0 -6
  347. package/types/components/InputGroup/InputGroup.types.d.ts +0 -10
  348. package/types/components/InputGroup/index.d.ts +0 -1
  349. package/types/components/Modal/index.d.ts +0 -1
  350. package/types/components/Nav/index.d.ts +0 -1
  351. package/types/components/NavBar/index.d.ts +0 -1
  352. package/types/components/NavDropdown/NavDropdown.d.ts +0 -35
  353. package/types/components/NavDropdown/index.d.ts +0 -1
  354. package/types/components/Popout/index.d.ts +0 -1
  355. package/types/components/Spinner/index.d.ts +0 -1
  356. package/types/components/Table/index.d.ts +0 -1
  357. package/types/components/Tabs/index.d.ts +0 -1
  358. package/types/components/ToggleButton/ToggleButton.d.ts +0 -9
  359. package/types/components/ToggleButton/ToggleButton.types.d.ts +0 -0
  360. package/types/components/ToggleButton/index.d.ts +0 -1
  361. package/types/components/index.d.ts +0 -16
  362. package/types/index.d.ts +0 -1
  363. package/vite.config.js +0 -57
  364. package/vite.config.js.timestamp-1708777378490-e94428ceb2bf9.mjs +0 -42
  365. /package/{types/components/Button → Button}/Button.d.ts +0 -0
  366. /package/{types/components/CloseButton → CloseButton}/CloseButton.d.ts +0 -0
  367. /package/{types/components/FloatingLabel → FloatingLabel}/FloatingLabel.d.ts +0 -0
  368. /package/{types/components/NavDropdown → NavDropdown}/NavDropdown.types.d.ts +0 -0
  369. /package/{types/components/Spinner → Spinner}/Spinner.d.ts +0 -0
  370. /package/{types/components/Spinner → Spinner}/Spinner.types.d.ts +0 -0
  371. /package/{types/components/Table → Table}/Table.d.ts +0 -0
  372. /package/{types/components/Tabs → Tabs}/Tabs.d.ts +0 -0
package/src/List/List.tsx DELETED
@@ -1,112 +0,0 @@
1
- import React, { forwardRef, createContext, useContext, useRef, cloneElement, ReactElement, useMemo } from "react"
2
-
3
- import { ListType, ListSublistType, ListItemType, ListLabelType, FormContextType } from "./List.types"
4
- import useDraggable, { insertPhantomElement } from "../hooks/useDraggable"
5
- import useClassname from "../hooks/useClassname"
6
- import mergeRefs from "../utils/MergeRefs"
7
-
8
- export const ListContext = createContext<FormContextType | null>(null)
9
- export const ListContextProvider = ({children, value} : {children: React.ReactNode, value:FormContextType}) => {
10
- return (
11
- <ListContext.Provider value={value}>
12
- {children}
13
- </ListContext.Provider>
14
- )
15
- }
16
- export const useListContext = () => {
17
- const context = useContext(ListContext)
18
-
19
- return context
20
- }
21
-
22
- /*
23
- const handlePhantomInsert = (event: React.PointerEvent, item: HTMLElement | null) => {
24
- event.stopPropagation()
25
- document.querySelectorAll(".phantom").forEach(phantom => phantom.remove())
26
- if(item) { insertPhantomElement(item)}
27
- }
28
- */
29
-
30
- const List = forwardRef<HTMLUListElement, ListType>( ({children, className, depth, tree=false, dragdrop=false, ...restProps}, ref) => {
31
- const context = useListContext()
32
- const initialContext = useMemo(() => ({
33
- tree: tree,
34
- draggable: dragdrop
35
- }), [])
36
-
37
- return (
38
- <ul ref={ref} id="test-list" data-context={context ? "true":"false" } className={useClassname("sg-list", className)} style={{"--depth":depth} as React.CSSProperties} {...restProps}>
39
- { !context ?
40
- <ListContextProvider value={initialContext}>
41
- {children}
42
- </ListContextProvider>
43
- :
44
- children
45
- }
46
- </ul>
47
- )
48
- })
49
- List.displayName = "List"
50
-
51
- const Sublist = forwardRef<HTMLLIElement, ListSublistType>( ({children, className, depth, ...restProps}, ref) => {
52
- const { draggable } = useListContext()!
53
- const itemRef = useRef<HTMLLIElement>(null)
54
-
55
- const { coordinates, isMouseDown} = useDraggable(itemRef, {draggable})
56
-
57
- return (
58
- <li ref={mergeRefs([ref,itemRef])} data-phantom="none" className={useClassname("sg-sublist", className)} style={{ "--depth":depth, top: coordinates.top, left: coordinates.left, width: coordinates.width } as React.CSSProperties} {...restProps}>
59
- {children}
60
- </li>
61
- )
62
- })
63
- Sublist.displayName = "ListSubList"
64
-
65
- const Item = forwardRef<HTMLLIElement, ListItemType>( ({children, className, ...restProps}, ref) => {
66
- const { draggable } = useListContext()!
67
- const itemRef = useRef<HTMLLIElement>(null)
68
-
69
- const { coordinates, isMouseDown} = useDraggable(itemRef, {draggable})
70
-
71
- return (
72
- <li ref={itemRef} data-phantom="none" className={useClassname("sg-list-item", className)} style={{ top: coordinates.top, left: coordinates.left, width: coordinates.width } as React.CSSProperties} {...restProps} >
73
- {children}
74
- </li>
75
- )
76
- })
77
- Item.displayName = "ListItem"
78
-
79
- const Label = forwardRef<HTMLSpanElement, ListLabelType>( ({children, className, style, ...restProps}, ref) => {
80
- const labelRef = useRef<HTMLElement>(null)
81
- const computedClass = useClassname("sg-list-label", className)
82
-
83
- //const coordinates = useDraggable(labelRef)
84
- return (
85
- (typeof children === "string") ?
86
- <span ref={mergeRefs([ref, labelRef])} className={computedClass} style={{ ...style}} {...restProps}>
87
- {children}
88
- </span>
89
- :
90
- cloneElement(children as any,
91
- {
92
- ref: mergeRefs([ref, labelRef]),
93
- className: computedClass,
94
- style: { ...(children as ReactElement).props.style}
95
- }
96
- )
97
-
98
- )
99
- })
100
- Label.displayName = "ListLabel"
101
- /*
102
- List.Sublist = Sublist
103
- List.Item = Item
104
- List.Label = Label
105
-
106
- export default List
107
- */
108
- export default Object.assign(List, {
109
- Sublist: Sublist,
110
- Item: Item,
111
- Label: Label
112
- })
@@ -1,34 +0,0 @@
1
- import { ReactNode } from "react"
2
-
3
- import { BaseUListType, BaseLItemType, BaseSpanType } from "../utils/BaseTypes"
4
-
5
- export type FormContextType = {
6
- depth?: number,
7
- tree?: boolean,
8
- draggable?: boolean
9
- }
10
-
11
- export type ListType = {
12
- children: ReactNode,
13
- className: string,
14
- depth: number,
15
- tree: boolean,
16
- dragdrop: boolean
17
- } & BaseUListType
18
-
19
- export type ListSublistType = {
20
- children: ReactNode,
21
- className: string
22
- depth: number
23
- } & BaseLItemType
24
-
25
- export type ListItemType = {
26
- children: ReactNode,
27
- className: string,
28
- } & BaseLItemType
29
-
30
- export type ListLabelType = {
31
- children: ReactNode,
32
- className: string,
33
- label: string
34
- } & BaseSpanType
package/src/List/index.ts DELETED
@@ -1,4 +0,0 @@
1
- import List from "./List";
2
-
3
- export type {ListType, ListSublistType, ListItemType, ListLabelType} from "./List.types"
4
- export default List
@@ -1,229 +0,0 @@
1
- import React, { createContext, useContext, useEffect, useState, forwardRef, useRef } from "react"
2
- import { createPortal } from "react-dom"
3
-
4
- import { ModalBodyType, ModalContextType, ModalFooterType, ModalHeaderType, ModalTitleType, ModalType, ErrorModalType } from "./Modal.types"
5
-
6
- import CloseButton from "../CloseButton/CloseButton"
7
- import Button from "../Button/Button"
8
- import mergeRefs from "../utils/MergeRefs"
9
-
10
- const ModalContext = createContext<ModalContextType>(null)
11
- const ModalContextProvider = ({children, value}:{children:React.ReactNode, value:ModalContextType}) => {
12
- return (
13
- <ModalContext.Provider value={value}>
14
- {children}
15
- </ModalContext.Provider>
16
- )
17
- }
18
- const useModalContext = () => {
19
- const context = useContext(ModalContext)
20
- if(!context) {
21
- throw new Error(
22
- "useModalContext has to be used within ModalContextProvider!"
23
- )
24
- }
25
- return context
26
- }
27
-
28
- const Modal = forwardRef<HTMLDialogElement, ModalType>( ({ children, size = "md", show, backdrop = "static", fill=false, onHide, className, id, stretch, style, ...restProps
29
- }, ref) => {
30
- //Two "show modal" states exist to allow for the modal to not render when not used (meaning you don't have to deal with states
31
- //for forms or other data that has to be renedered even though the modal is "display: none"). Also allows for an in/out-going animation
32
- const [showModal, setShowModal] = useState<boolean>(show)
33
- const [renderModal, setRenderModal] = useState<boolean>(show)
34
-
35
- let typeCheck : {show: boolean, onHide: boolean} | undefined = typeof(show) === "boolean" && typeof(onHide) === "function" ? undefined : {show: typeof(show) === "boolean", onHide: typeof(onHide) === "function"}
36
- if(typeCheck) {
37
- console.error(
38
- !typeCheck.show ? "The variable 'show' must be used and must be a boolean used to decide when to show the modal!" : null,
39
- !typeCheck.onHide ? "The variable 'onHide' must be used and must be a function which is used to set 'show' as the modal gets closed!" : null
40
- )
41
- }
42
-
43
- if(show != showModal) {
44
- setShowModal(show)
45
- if(show) {
46
- setRenderModal(true)
47
- }
48
- }
49
-
50
- const modalRef = useRef<HTMLDialogElement>(null)
51
- useKeepElementFocused(modalRef)
52
-
53
- const closeModal = () => {
54
- const modal = modalRef.current!
55
- modal.classList.add("close")
56
- modal.addEventListener('animationend', (event) => {
57
- if(event.animationName === "fade-out-modal") {
58
- if(onHide) {
59
- onHide(false)
60
- }
61
- modal.close()
62
- setRenderModal(false)
63
- }
64
- }, {once : true});
65
- }
66
-
67
- useEffect(() => {
68
- const modal = modalRef.current
69
-
70
- if(!modal) return
71
-
72
- if(showModal) {
73
- modal.classList.remove('close')
74
- modal.showModal()
75
-
76
- }
77
- else {
78
- closeModal()
79
- }
80
-
81
- }, [showModal])
82
-
83
- let classNameComputed: string = `sg-modal-tag`
84
- if(className) {
85
- classNameComputed += " "+className
86
- }
87
- if(backdrop === "static" || backdrop === "true") {
88
- classNameComputed += " sg-modal-static"
89
- }
90
- if(fill) classNameComputed += " sg-modal-fill"
91
- if(size && !fill) classNameComputed += ` sg-modal-${size}`
92
-
93
- const handleKeyDown = (event: React.KeyboardEvent<HTMLDialogElement>) => {
94
- const key: string = event.key
95
- if(key != "Escape") {return}
96
-
97
- event.preventDefault()
98
- closeModal()
99
- }
100
-
101
- return (
102
- renderModal ?
103
- createPortal(
104
- <dialog ref={mergeRefs([ref, modalRef])} className={classNameComputed} onKeyDown={(event) => handleKeyDown(event)} {...restProps } style={{"--height":stretch ? "80%":null, ...style} as React.CSSProperties}>
105
- <ModalContextProvider value={closeModal}>
106
- {!typeCheck ?
107
- children :
108
- <ErrorModal typeCheck={typeCheck} closeModal={closeModal}/>
109
- }
110
- </ModalContextProvider>
111
- </dialog>
112
- , document.body)
113
- : null
114
- )
115
- })
116
- Modal.displayName = "Modal"
117
-
118
- const Header = forwardRef<HTMLDivElement | HTMLSpanElement | HTMLHeadingElement, ModalHeaderType>(({children, as="", className = "", closeButton = false, onClick, ...restProps}, ref) => {
119
- let validAs = ["div", "span", "h1", "h2", "h3", "h4", "h5", "h6"]
120
- let Component = validAs.find(valid => valid === as) ? as : "div"
121
- const closeModal = useModalContext()
122
- const onCloseButtonClick = (event: React.MouseEvent) => {
123
- if(onClick) {
124
- onClick(event)
125
- }
126
- closeModal()
127
- }
128
-
129
- return (
130
- <Component ref={ref} className={`sg-modal-header ${className}`} {...restProps}>
131
- {children}
132
- {closeButton ? <CloseButton variant onClick={event => onCloseButtonClick(event)}/> : null}
133
- </Component>
134
- )
135
- })
136
- Header.displayName = "ModalHeader"
137
-
138
- const Title = forwardRef<HTMLDivElement | HTMLSpanElement | HTMLHeadingElement, ModalTitleType>( ({children, as="h4", className, ...restProps}, ref) => {
139
- let validAs = ["div", "span", "h1", "h2", "h3", "h4", "h5", "h6"]
140
- let Component = validAs.find(valid => valid === as) ? as : "h4"
141
- return (
142
- <Component ref={ref} className={`sg-modal-title ${className}`} {...restProps}>
143
- {children}
144
- </Component>
145
- )
146
- })
147
- Title.displayName = "ModalTitle"
148
-
149
- const Body = forwardRef<HTMLDivElement, ModalBodyType>( ({children, className, ...restProps}, ref) => {
150
- return (
151
- <div ref={ref} className={`sg-modal-body ${className}`} {...restProps}>
152
- {children}
153
- </div>
154
- )
155
- })
156
- Body.displayName = "ModalBody"
157
-
158
- const Footer = forwardRef<HTMLDivElement, ModalBodyType>( ({children, className, ...restProps}, ref) => {
159
- return (
160
- <div ref={ref} className={`sg-modal-footer ${className}`} {...restProps}>
161
- {children}
162
- </div>
163
- )
164
- })
165
- Footer.displayName = "ModalFooter"
166
-
167
- export default Object.assign(Modal, {
168
- Header: Header,
169
- Title: Title,
170
- Body: Body,
171
- Footer: Footer
172
- })
173
-
174
- export const useKeepElementFocused = function (elementRef: React.RefObject<HTMLDialogElement>) {
175
- useEffect(() => {
176
- const onKeyDown = (event: KeyboardEvent) => {
177
- const focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
178
- const modal = elementRef.current
179
- if(modal) {
180
- const firstFocusableElement = modal.querySelectorAll(focusableElements)[0] as HTMLElement
181
- const focusableContent = modal.querySelectorAll(focusableElements)
182
- const lastFocusableElement = focusableContent[focusableContent.length - 1] as HTMLElement
183
- let isTabPressed = event.key === 'Tab'
184
-
185
- if (!isTabPressed) {
186
- return;
187
- }
188
-
189
- if (event.shiftKey) {
190
- if (document.activeElement === firstFocusableElement) {
191
- lastFocusableElement.focus()
192
- event.preventDefault()
193
- }
194
- } else if (document.activeElement === lastFocusableElement) {
195
- firstFocusableElement.focus();
196
- event.preventDefault()
197
- }
198
- }
199
- }
200
- document.addEventListener('keydown', onKeyDown, true )
201
-
202
- return function cleanup() {
203
- document.removeEventListener('keydown', onKeyDown, true )
204
- }
205
- }, [elementRef])
206
- }
207
-
208
- const ErrorModal = ({typeCheck, closeModal}:ErrorModalType) => {
209
- return (
210
- <>
211
- <Header closeButton >
212
- <Title>
213
- An Error ocurred!
214
- </Title>
215
- </Header>
216
- <Body>
217
- <p>
218
- {!typeCheck.show ? "The variable 'show' must be used and must be a boolean used to decide when to show the modal!" : null}
219
- {!typeCheck.onHide ? "The variable 'onHide' must be used and must be a function which is used to set 'show' as the modal gets closed!" : null}
220
- </p>
221
- </Body>
222
- <Footer>
223
- <Button variant="danger" type="button" onClick={() => closeModal()}>
224
- Close
225
- </Button>
226
- </Footer>
227
- </>
228
- )
229
- }
@@ -1,49 +0,0 @@
1
- import { ReactNode } from "react";
2
-
3
- import { BaseDialogType, BaseDivType, BaseHeadingType, BaseSpanType } from "../utils/BaseTypes"
4
-
5
- export type ModalContextType = Function | null
6
-
7
- export type ModalType = {
8
- children:ReactNode,
9
- className?: string,
10
- id?: string,
11
- fill?: boolean,
12
- size?: string,
13
- show: boolean,
14
- backdrop?: string,
15
- onHide: Function,
16
- stretch?: boolean
17
- } & BaseDialogType
18
-
19
- export type ModalHeaderType = {
20
- children: ReactNode,
21
- as?: React.ElementType,
22
- className?: string,
23
- closeButton?: boolean
24
- onClick?: (event: React.MouseEvent) => void,
25
- } & (BaseDivType | BaseHeadingType | BaseSpanType)
26
-
27
- export type ModalTitleType = {
28
- children: ReactNode,
29
- as?: React.ElementType,
30
- className?: string
31
- } & (BaseDivType | BaseHeadingType | BaseSpanType)
32
-
33
- export type ModalBodyType = {
34
- children: ReactNode,
35
- className?: string,
36
- } & BaseDivType
37
-
38
- export type ModalFooterType = {
39
- children: ReactNode,
40
- className?: string,
41
- } & BaseDivType
42
-
43
- export type ErrorModalType = {
44
- typeCheck: {
45
- show: boolean,
46
- onHide: boolean
47
- },
48
- closeModal: Function
49
- }
@@ -1,4 +0,0 @@
1
- import Modal from "./Modal"
2
-
3
- export type {ModalBodyType, ModalContextType, ModalFooterType, ModalHeaderType, ModalTitleType, ModalType} from "./Modal.types"
4
- export default Modal
package/src/Nav/Nav.tsx DELETED
@@ -1,43 +0,0 @@
1
- import React, { forwardRef } from "react";
2
-
3
- import { NavType, NavItemType, NavLinkType } from "./Nav.types";
4
-
5
- import { useNavbarContext } from "../NavBar/Navbar";
6
-
7
- const Nav = forwardRef<HTMLElement, NavType>(({children, className, as="ul", ...restProps}, ref) => {
8
- const Component = as
9
- const navbarContext = useNavbarContext()
10
- const navbarPrefix = navbarContext ? navbarContext : "sg-navbar-"
11
-
12
- return (
13
- <Component ref={ref} className={`${className} ${navbarPrefix}nav`} {...restProps}>
14
- {children}
15
- </Component>
16
- )
17
- })
18
- Nav.displayName = "Nav"
19
-
20
- const Item = forwardRef<HTMLElement, NavItemType>( ({children, className, as="li", ...restProps}, ref) => {
21
- const Component = as
22
- return (
23
- <Component role="none" ref={ref} className={`sg-nav-item${className ? " "+className:""}`} {...restProps}>
24
- {children}
25
- </Component>
26
- )
27
- })
28
- Item.displayName = "NavItem"
29
-
30
- const Link = forwardRef<HTMLElement, NavLinkType>( ({children, className, as="a", ...restProps}, ref) => {
31
- const Component = as
32
- return (
33
- <Component role="menuitem" ref={ref} className={`sg-nav-link${className ? " "+className:""}`} {...restProps}>
34
- {children}
35
- </Component>
36
- )
37
- })
38
- Link.displayName = "NavLink"
39
-
40
- export default Object.assign(Nav, {
41
- Item: Item,
42
- Link: Link
43
- })
@@ -1,21 +0,0 @@
1
- import { ReactNode } from "react";
2
-
3
- import { BaseAnchorType, BaseElementType, BaseLItemType, BaseUListType } from "../utils/BaseTypes";
4
-
5
- export type NavType = {
6
- children: ReactNode,
7
- className?: string,
8
- as?: React.ElementType
9
- } & (BaseUListType | BaseElementType)
10
-
11
- export type NavItemType = {
12
- children: ReactNode,
13
- className?: string,
14
- as?: React.ElementType
15
- } & (BaseLItemType | BaseElementType)
16
-
17
- export type NavLinkType = {
18
- children: ReactNode,
19
- className?: string,
20
- as?: React.ElementType
21
- } & (BaseAnchorType | BaseElementType)
package/src/Nav/index.ts DELETED
@@ -1,4 +0,0 @@
1
- import Nav from "./Nav"
2
- export default Nav
3
- export * from "./Nav"
4
- export type {NavItemType, NavLinkType, NavType} from "./Nav.types"
@@ -1,57 +0,0 @@
1
- import React, { createContext, forwardRef, useContext, useMemo } from "react";
2
-
3
- import { NavbarBrandType, NavbarTextType, NavbarType, NavbarContextType } from "./Navbar.types";
4
-
5
- export const NavbarContext = createContext<NavbarContextType>(null)
6
-
7
- const NavbarContextProvider = ({children, value}:{children:React.ReactNode, value:NavbarContextType}) => {
8
- return (
9
- <NavbarContext.Provider value={value}>
10
- {children}
11
- </NavbarContext.Provider>
12
- )
13
- }
14
- export const useNavbarContext = () => {
15
- const context = useContext(NavbarContext)
16
- return context
17
- }
18
-
19
- const Navbar = forwardRef<HTMLElement, NavbarType>(({children, className, navbarPrefix= "sg-navbar-", ...restProps}, ref) => {
20
- const navbarContext = useMemo(() => {
21
- return navbarPrefix
22
- }, [navbarPrefix])
23
-
24
- return (
25
- <nav ref={ref} className={`sg-navbar${className ? " "+className:""}`} {...restProps}>
26
- <NavbarContextProvider value={navbarContext}>
27
- {children}
28
- </NavbarContextProvider>
29
- </nav>
30
- )
31
- })
32
- Navbar.displayName = "Navbar"
33
-
34
- const Brand = forwardRef<HTMLAnchorElement | HTMLElement, NavbarBrandType>( ({children, className, href="#", as="a", ...restProps}, ref) => {
35
- const Component = as || (href && as != "Link" ? 'a' : 'span')
36
- return (
37
- <Component ref={ref} href={href} className={`sg-navbar-brand${className ? " "+className:""}`} {...restProps} >
38
- {children}
39
- </Component>
40
- )
41
- })
42
- Brand.displayName = "NavbarBrand"
43
-
44
- const Text = forwardRef<HTMLElement, NavbarTextType>( ({children, className, as="span", ...restProps}, ref) => {
45
- const Component = as
46
- return (
47
- <Component ref={ref} className={`sg-navbar-text${className ? " "+className:""}`} {...restProps}>
48
- {children}
49
- </Component>
50
- )
51
- })
52
- Text.displayName = "NavbarText"
53
-
54
- export default Object.assign(Navbar, {
55
- Brand: Brand,
56
- Text: Text
57
- })
@@ -1,24 +0,0 @@
1
- import { ReactNode } from "react";
2
-
3
- import { BaseAnchorType, BaseElementType, BaseNavType } from "../utils/BaseTypes";
4
-
5
- export type NavbarContextType = string | null
6
-
7
- export type NavbarType = {
8
- children: ReactNode,
9
- className?: string,
10
- navbarPrefix?: string,
11
- } & BaseNavType
12
-
13
- export type NavbarBrandType = {
14
- children: ReactNode,
15
- className?: string,
16
- as?: React.ElementType,
17
- href?: string
18
- } & (BaseAnchorType | BaseElementType)
19
-
20
- export type NavbarTextType = {
21
- children: ReactNode,
22
- className?: string,
23
- as?: React.ElementType
24
- } & BaseElementType
@@ -1,4 +0,0 @@
1
- import Navbar from "./Navbar"
2
- export default Navbar
3
- export { useNavbarContext } from "./Navbar"
4
- export type {NavbarBrandType, NavbarContextType, NavbarTextType, NavbarType} from "./Navbar.types"