stargazer-ui 1.2.1 → 1.2.2

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 (349) 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 +12 -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 +10 -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/Card/Card.js +41 -0
  21. package/Card/Card.js.map +1 -0
  22. package/{types/components/Card → Card}/Card.types.d.ts +3 -1
  23. package/Card/index.d.ts +3 -0
  24. package/Card/index.js +7 -0
  25. package/Card/index.js.map +1 -0
  26. package/Card/package.json +1 -0
  27. package/CloseButton/CloseButton.js +11 -0
  28. package/CloseButton/CloseButton.js.map +1 -0
  29. package/{types/components/CloseButton → CloseButton}/CloseButton.types.d.ts +1 -1
  30. package/CloseButton/index.d.ts +3 -0
  31. package/CloseButton/index.js +7 -0
  32. package/CloseButton/index.js.map +1 -0
  33. package/CloseButton/package.json +1 -0
  34. package/Dropdown/Dropdown.js +301 -0
  35. package/Dropdown/Dropdown.js.map +1 -0
  36. package/{types/components/Dropdown → Dropdown}/Dropdown.types.d.ts +3 -10
  37. package/Dropdown/index.d.ts +4 -0
  38. package/Dropdown/index.js +8 -0
  39. package/Dropdown/index.js.map +1 -0
  40. package/Dropdown/package.json +1 -0
  41. package/FileUploadButton/FileUploadButton.d.ts +4 -0
  42. package/FileUploadButton/FileUploadButton.js +21 -0
  43. package/FileUploadButton/FileUploadButton.js.map +1 -0
  44. package/FileUploadButton/FileUploadButton.types.d.ts +7 -0
  45. package/FileUploadButton/index.d.ts +3 -0
  46. package/FileUploadButton/index.js +7 -0
  47. package/FileUploadButton/index.js.map +1 -0
  48. package/FileUploadButton/package.json +1 -0
  49. package/FloatingLabel/FloatingLabel.js +17 -0
  50. package/FloatingLabel/FloatingLabel.js.map +1 -0
  51. package/{types/components/FloatingLabel → FloatingLabel}/FloatingLabel.types.d.ts +1 -1
  52. package/FloatingLabel/index.d.ts +3 -0
  53. package/FloatingLabel/index.js +7 -0
  54. package/FloatingLabel/index.js.map +1 -0
  55. package/FloatingLabel/package.json +1 -0
  56. package/Form/Form.d.ts +38 -0
  57. package/Form/Form.js +308 -0
  58. package/Form/Form.js.map +1 -0
  59. package/Form/Form.types.d.ts +105 -0
  60. package/Form/index.d.ts +4 -0
  61. package/Form/index.js +8 -0
  62. package/Form/index.js.map +1 -0
  63. package/Form/package.json +1 -0
  64. package/InputGroup/InputGroup.d.ts +7 -0
  65. package/InputGroup/InputGroup.js +31 -0
  66. package/InputGroup/InputGroup.js.map +1 -0
  67. package/InputGroup/InputGroup.types.d.ts +16 -0
  68. package/InputGroup/index.d.ts +4 -0
  69. package/InputGroup/index.js +7 -0
  70. package/InputGroup/index.js.map +1 -0
  71. package/InputGroup/package.json +1 -0
  72. package/List/List.d.ts +14 -0
  73. package/List/List.js +76 -0
  74. package/List/List.js.map +1 -0
  75. package/List/List.types.d.ts +28 -0
  76. package/List/index.d.ts +3 -0
  77. package/List/index.js +7 -0
  78. package/List/index.js.map +1 -0
  79. package/List/package.json +1 -0
  80. package/{types/components/Modal → Modal}/Modal.d.ts +1 -1
  81. package/Modal/Modal.js +160 -0
  82. package/Modal/Modal.js.map +1 -0
  83. package/{types/components/Modal → Modal}/Modal.types.d.ts +3 -2
  84. package/Modal/index.d.ts +3 -0
  85. package/Modal/index.js +7 -0
  86. package/Modal/index.js.map +1 -0
  87. package/Modal/package.json +1 -0
  88. package/Nav/Nav.js +28 -0
  89. package/Nav/Nav.js.map +1 -0
  90. package/{types/components/Nav → Nav}/Nav.types.d.ts +1 -1
  91. package/Nav/index.d.ts +4 -0
  92. package/Nav/index.js +7 -0
  93. package/Nav/index.js.map +1 -0
  94. package/Nav/package.json +1 -0
  95. package/{types/components/NavBar → NavBar}/Navbar.d.ts +1 -2
  96. package/NavBar/Navbar.js +36 -0
  97. package/NavBar/Navbar.js.map +1 -0
  98. package/{types/components/NavBar → NavBar}/Navbar.types.d.ts +2 -1
  99. package/NavBar/index.d.ts +4 -0
  100. package/NavBar/index.js +8 -0
  101. package/NavBar/index.js.map +1 -0
  102. package/NavBar/package.json +1 -0
  103. package/{types/components/NavDropdown → NavDropdown}/NavDropdown.d.ts +2 -2
  104. package/NavDropdown/NavDropdown.js +77 -0
  105. package/NavDropdown/NavDropdown.js.map +1 -0
  106. package/NavDropdown/index.d.ts +3 -0
  107. package/NavDropdown/index.js +7 -0
  108. package/NavDropdown/index.js.map +1 -0
  109. package/NavDropdown/package.json +1 -0
  110. package/Overlay/Overlay.d.ts +4 -0
  111. package/Overlay/Overlay.js +228 -0
  112. package/Overlay/Overlay.js.map +1 -0
  113. package/Overlay/Overlay.types.d.ts +18 -0
  114. package/{src/Overlay/index.ts → Overlay/index.d.ts} +3 -3
  115. package/Overlay/index.js +7 -0
  116. package/Overlay/index.js.map +1 -0
  117. package/Overlay/package.json +1 -0
  118. package/Popout/Popout.js +110 -0
  119. package/Popout/Popout.js.map +1 -0
  120. package/{types/components/Popout → Popout}/Popout.types.d.ts +1 -1
  121. package/Popout/index.d.ts +3 -0
  122. package/Popout/index.js +7 -0
  123. package/Popout/index.js.map +1 -0
  124. package/Popout/package.json +1 -0
  125. package/Spinner/Spinner.js +12 -0
  126. package/Spinner/Spinner.js.map +1 -0
  127. package/Spinner/index.d.ts +3 -0
  128. package/Spinner/index.js +7 -0
  129. package/Spinner/index.js.map +1 -0
  130. package/Spinner/package.json +1 -0
  131. package/Table/Table.js +11 -0
  132. package/Table/Table.js.map +1 -0
  133. package/{types/components/Table → Table}/Table.types.d.ts +1 -1
  134. package/Table/index.d.ts +3 -0
  135. package/Table/index.js +7 -0
  136. package/Table/index.js.map +1 -0
  137. package/Table/package.json +1 -0
  138. package/Tabs/Tabs.js +158 -0
  139. package/Tabs/Tabs.js.map +1 -0
  140. package/{types/components/Tabs → Tabs}/Tabs.types.d.ts +9 -1
  141. package/Tabs/index.d.ts +3 -0
  142. package/Tabs/index.js +7 -0
  143. package/Tabs/index.js.map +1 -0
  144. package/Tabs/package.json +1 -0
  145. package/ToggleButton/ToggleButton.d.ts +4 -0
  146. package/ToggleButton/ToggleButton.js +17 -0
  147. package/ToggleButton/ToggleButton.js.map +1 -0
  148. package/ToggleButton/ToggleButton.types.d.ts +7 -0
  149. package/ToggleButton/index.d.ts +3 -0
  150. package/ToggleButton/index.js +7 -0
  151. package/ToggleButton/index.js.map +1 -0
  152. package/ToggleButton/package.json +1 -0
  153. package/{src/hooks/index.ts → hooks/index.d.ts} +5 -6
  154. package/hooks/index.js +6 -0
  155. package/hooks/index.js.map +1 -0
  156. package/hooks/package.json +1 -0
  157. package/hooks/useClassname.d.ts +2 -0
  158. package/hooks/useClassname.js +7 -0
  159. package/hooks/useClassname.js.map +1 -0
  160. package/hooks/useDraggable.d.ts +23 -0
  161. package/hooks/useDraggable.js +147 -0
  162. package/hooks/useDraggable.js.map +1 -0
  163. package/hooks/useKeepElementFocused.d.ts +2 -0
  164. package/hooks/useKeepElementFocused.js +37 -0
  165. package/hooks/useKeepElementFocused.js.map +1 -0
  166. package/hooks/useScreenSize.d.ts +5 -0
  167. package/hooks/useScreenSize.js +21 -0
  168. package/hooks/useScreenSize.js.map +1 -0
  169. package/index.d.ts +18 -0
  170. package/index.js +19 -0
  171. package/index.js.map +1 -0
  172. package/package.json +1 -79
  173. package/{dev → styles}/stargazerui.css +3099 -395
  174. package/styles/stargazerui.css.map +1 -0
  175. package/{src/utils/BaseTypes.ts → utils/BaseTypes.d.ts} +23 -30
  176. package/utils/ContrastingColor.d.ts +1 -0
  177. package/utils/MergeClassnames.d.ts +2 -0
  178. package/utils/MergeClassnames.js +7 -0
  179. package/utils/MergeClassnames.js.map +1 -0
  180. package/utils/MergeRefs.d.ts +2 -0
  181. package/utils/MergeRefs.js +16 -0
  182. package/utils/MergeRefs.js.map +1 -0
  183. package/.babelrc.json +0 -10
  184. package/.eslintrc.cjs +0 -18
  185. package/.gitattributes +0 -2
  186. package/LICENSE +0 -21
  187. package/dev/index.html +0 -12
  188. package/dev/index.jsx +0 -49
  189. package/dev/index.scss +0 -59
  190. package/dev/pages/ButtonPage.jsx +0 -44
  191. package/dev/pages/CardPage.jsx +0 -81
  192. package/dev/pages/DropdownPage.jsx +0 -31
  193. package/dev/pages/FormPage.jsx +0 -130
  194. package/dev/pages/ListPage.jsx +0 -52
  195. package/dev/pages/ModalPage.jsx +0 -37
  196. package/dev/pages/OverlayPage.jsx +0 -35
  197. package/dev/pages/components.jsx +0 -19
  198. package/dev/stargazerui.css.map +0 -1
  199. package/dev/test.jsx +0 -88
  200. package/rollup.config.js +0 -140
  201. package/scripts/writePackageJsons.js +0 -42
  202. package/src/Bar/Bar.tsx +0 -0
  203. package/src/Bar/Bar.type.ts +0 -9
  204. package/src/Bar/index.ts +0 -0
  205. package/src/Button/Button.tsx +0 -17
  206. package/src/Button/Button.types.ts +0 -8
  207. package/src/Button/index.ts +0 -3
  208. package/src/ButtonGroup/ButtonGroup.tsx +0 -14
  209. package/src/ButtonGroup/ButtonGroup.types.ts +0 -8
  210. package/src/ButtonGroup/index.ts +0 -3
  211. package/src/Card/Card.tsx +0 -70
  212. package/src/Card/Card.types.ts +0 -33
  213. package/src/Card/index.ts +0 -3
  214. package/src/CloseButton/CloseButton.tsx +0 -14
  215. package/src/CloseButton/CloseButton.types.ts +0 -6
  216. package/src/CloseButton/index.ts +0 -3
  217. package/src/Dropdown/Dropdown.tsx +0 -358
  218. package/src/Dropdown/Dropdown.types.ts +0 -52
  219. package/src/Dropdown/index.ts +0 -4
  220. package/src/FileUploadButton/FileUploadButton.tsx +0 -27
  221. package/src/FileUploadButton/FileUploadButton.types.ts +0 -9
  222. package/src/FileUploadButton/index.ts +0 -3
  223. package/src/FloatingLabel/FloatingLabel.tsx +0 -22
  224. package/src/FloatingLabel/FloatingLabel.types.ts +0 -11
  225. package/src/FloatingLabel/index.ts +0 -3
  226. package/src/Form/Form.tsx +0 -445
  227. package/src/Form/Form.types.ts +0 -117
  228. package/src/Form/index.ts +0 -4
  229. package/src/InputGroup/InputGroup.tsx +0 -46
  230. package/src/InputGroup/InputGroup.types.ts +0 -21
  231. package/src/InputGroup/index.ts +0 -4
  232. package/src/List/List.tsx +0 -112
  233. package/src/List/List.types.ts +0 -34
  234. package/src/List/index.ts +0 -4
  235. package/src/Modal/Modal.tsx +0 -220
  236. package/src/Modal/Modal.types.ts +0 -49
  237. package/src/Modal/index.ts +0 -4
  238. package/src/Nav/Nav.tsx +0 -43
  239. package/src/Nav/Nav.types.ts +0 -21
  240. package/src/Nav/index.ts +0 -4
  241. package/src/NavBar/Navbar.tsx +0 -57
  242. package/src/NavBar/Navbar.types.ts +0 -24
  243. package/src/NavBar/index.ts +0 -4
  244. package/src/NavDropdown/NavDropdown.tsx +0 -93
  245. package/src/NavDropdown/NavDropdown.types.ts +0 -6
  246. package/src/NavDropdown/index.ts +0 -3
  247. package/src/Overlay/Overlay.tsx +0 -277
  248. package/src/Overlay/Overlay.types.ts +0 -20
  249. package/src/Popout/Popout.tsx +0 -155
  250. package/src/Popout/Popout.types.ts +0 -42
  251. package/src/Popout/index.ts +0 -3
  252. package/src/Spinner/Spinner.tsx +0 -15
  253. package/src/Spinner/Spinner.types.ts +0 -7
  254. package/src/Spinner/index.ts +0 -3
  255. package/src/Table/Table.tsx +0 -16
  256. package/src/Table/Table.types.ts +0 -9
  257. package/src/Table/index.ts +0 -3
  258. package/src/Tabs/Tabs.tsx +0 -215
  259. package/src/Tabs/Tabs.types.ts +0 -49
  260. package/src/Tabs/index.ts +0 -3
  261. package/src/ToggleButton/ToggleButton.tsx +0 -21
  262. package/src/ToggleButton/ToggleButton.types.ts +0 -8
  263. package/src/ToggleButton/index.ts +0 -3
  264. package/src/hooks/useClassname.ts +0 -5
  265. package/src/hooks/useDraggable.ts +0 -186
  266. package/src/hooks/useKeepElementFocused.ts +0 -37
  267. package/src/hooks/useScreenSize.ts +0 -24
  268. package/src/index.ts +0 -21
  269. package/src/styles/_Card.scss +0 -166
  270. package/src/styles/_CloseButton.scss +0 -51
  271. package/src/styles/_CustomButton.scss +0 -132
  272. package/src/styles/_Dropdown.scss +0 -120
  273. package/src/styles/_FloatingLabel.scss +0 -56
  274. package/src/styles/_Forms.scss +0 -7
  275. package/src/styles/_Grid.scss +0 -178
  276. package/src/styles/_InputGroup.scss +0 -71
  277. package/src/styles/_List.scss +0 -62
  278. package/src/styles/_Modal.scss +0 -234
  279. package/src/styles/_ModalOld.scss +0 -242
  280. package/src/styles/_Nav.scss +0 -36
  281. package/src/styles/_NavBar.scss +0 -116
  282. package/src/styles/_NavDropdown.scss +0 -34
  283. package/src/styles/_OffCanvas.scss +0 -260
  284. package/src/styles/_OverLay.scss +0 -56
  285. package/src/styles/_Popout.scss +0 -75
  286. package/src/styles/_Spinner.scss +0 -19
  287. package/src/styles/_Table.scss +0 -34
  288. package/src/styles/_Tabs.scss +0 -129
  289. package/src/styles/_colors.scss +0 -510
  290. package/src/styles/_components.scss +0 -40
  291. package/src/styles/_functions.scss +0 -134
  292. package/src/styles/_mixins.scss +0 -26
  293. package/src/styles/_reset.scss +0 -231
  294. package/src/styles/_utilities.scss +0 -2480
  295. package/src/styles/_variables.scss +0 -146
  296. package/src/styles/forms/_FormCheck.scss +0 -269
  297. package/src/styles/forms/_FormControl.scss +0 -102
  298. package/src/styles/forms/_FormGroup.scss +0 -21
  299. package/src/styles/forms/_FormLabel.scss +0 -3
  300. package/src/styles/forms/_FormSelect.scss +0 -164
  301. package/src/styles/forms/_FormSlider.scss +0 -116
  302. package/src/styles/forms/_FormText.scss +0 -6
  303. package/src/utils/ContrastingColor.ts +0 -25
  304. package/src/utils/FileImportExport.js +0 -50
  305. package/src/utils/MergeClassnames.ts +0 -5
  306. package/src/utils/MergeRefs.ts +0 -12
  307. package/src/vite-env.d.ts +0 -1
  308. package/tsconfig-build.json +0 -4
  309. package/tsconfig.json +0 -79
  310. package/tsconfig.node.json +0 -10
  311. package/types/BaseTypes.d.ts +0 -19
  312. package/types/components/Button/index.d.ts +0 -1
  313. package/types/components/Card/index.d.ts +0 -1
  314. package/types/components/CloseButton/index.d.ts +0 -1
  315. package/types/components/Dropdown/index.d.ts +0 -1
  316. package/types/components/FloatingLabel/index.d.ts +0 -1
  317. package/types/components/Form/Form.d.ts +0 -17
  318. package/types/components/Form/Form.types.d.ts +0 -50
  319. package/types/components/Form/index.d.ts +0 -1
  320. package/types/components/InputGroup/InputGroup.d.ts +0 -6
  321. package/types/components/InputGroup/InputGroup.types.d.ts +0 -10
  322. package/types/components/InputGroup/index.d.ts +0 -1
  323. package/types/components/Modal/index.d.ts +0 -1
  324. package/types/components/Nav/index.d.ts +0 -1
  325. package/types/components/NavBar/index.d.ts +0 -1
  326. package/types/components/NavDropdown/index.d.ts +0 -1
  327. package/types/components/Popout/index.d.ts +0 -1
  328. package/types/components/Spinner/index.d.ts +0 -1
  329. package/types/components/Table/index.d.ts +0 -1
  330. package/types/components/Tabs/index.d.ts +0 -1
  331. package/types/components/ToggleButton/ToggleButton.d.ts +0 -9
  332. package/types/components/ToggleButton/ToggleButton.types.d.ts +0 -0
  333. package/types/components/ToggleButton/index.d.ts +0 -1
  334. package/types/components/index.d.ts +0 -16
  335. package/types/index.d.ts +0 -1
  336. package/vite.config.js +0 -57
  337. package/vite.config.js.timestamp-1708777378490-e94428ceb2bf9.mjs +0 -42
  338. /package/{types/components/Button → Button}/Button.d.ts +0 -0
  339. /package/{types/components/Card → Card}/Card.d.ts +0 -0
  340. /package/{types/components/CloseButton → CloseButton}/CloseButton.d.ts +0 -0
  341. /package/{types/components/Dropdown → Dropdown}/Dropdown.d.ts +0 -0
  342. /package/{types/components/FloatingLabel → FloatingLabel}/FloatingLabel.d.ts +0 -0
  343. /package/{types/components/Nav → Nav}/Nav.d.ts +0 -0
  344. /package/{types/components/NavDropdown → NavDropdown}/NavDropdown.types.d.ts +0 -0
  345. /package/{types/components/Popout → Popout}/Popout.d.ts +0 -0
  346. /package/{types/components/Spinner → Spinner}/Spinner.d.ts +0 -0
  347. /package/{types/components/Spinner → Spinner}/Spinner.types.d.ts +0 -0
  348. /package/{types/components/Table → Table}/Table.d.ts +0 -0
  349. /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,220 +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
- const [showModal, setShowModal] = useState<boolean>(show)
31
- if(show && show != showModal) {
32
- setShowModal(show)
33
- }
34
-
35
- const modalRef = useRef<HTMLDialogElement>(null)
36
- useKeepElementFocused(modalRef)
37
-
38
- let typeCheck : {show: boolean, onHide: boolean} | undefined = typeof(show) === "boolean" && typeof(onHide) === "function" ? undefined : {show: typeof(show) === "boolean", onHide: typeof(onHide) === "function"}
39
- if(typeCheck) {
40
- console.error(
41
- !typeCheck.show ? "The variable 'show' must be used and must be a boolean used to decide when to show the modal!" : null,
42
- !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
43
- )
44
- }
45
-
46
- const closeModal = () => {
47
- const modal = modalRef.current!
48
- modal.classList.add("close")
49
- modal.addEventListener('animationend', (event) => {
50
- console.log(event)
51
- if(event.animationName === "scale-down") {
52
- if(onHide) {
53
- onHide()
54
- }
55
- setShowModal(false)
56
- }
57
- }, {once : true});
58
- }
59
-
60
- useEffect(() => {
61
- const modal = modalRef.current
62
-
63
- if(!modal) return
64
-
65
- if(showModal) {
66
- modal.classList.remove('close')
67
- modal.showModal()
68
- }
69
- else {
70
- // modal.classList.add('close')
71
- modal.close()
72
- }
73
-
74
- }, [showModal])
75
-
76
- let classNameComputed: string = `sg-modal-tag`
77
- if(className) {
78
- classNameComputed += " "+className
79
- }
80
- if(backdrop === "static" || backdrop === "true") {
81
- classNameComputed += " sg-modal-static"
82
- }
83
- if(fill) classNameComputed += " sg-modal-fill"
84
- if(size && !fill) classNameComputed += ` sg-modal-${size}`
85
-
86
- const handleKeyDown = (event: React.KeyboardEvent<HTMLDialogElement>) => {
87
- const key: string = event.key
88
- if(key != "Escape") {return}
89
-
90
- event.preventDefault()
91
- closeModal()
92
- }
93
-
94
- return (
95
- createPortal(
96
- <dialog ref={mergeRefs([ref, modalRef])} className={classNameComputed} onKeyDown={(event) => handleKeyDown(event)} {...restProps } style={{"--height":stretch ? "80%":null, ...style} as React.CSSProperties}>
97
- <ModalContextProvider value={closeModal}>
98
- {!typeCheck ?
99
- children :
100
- <ErrorModal typeCheck={typeCheck} closeModal={closeModal}/>
101
- }
102
- </ModalContextProvider>
103
- </dialog>
104
- , document.body)
105
- )
106
- })
107
- Modal.displayName = "Modal"
108
-
109
- const Header = forwardRef<HTMLDivElement | HTMLSpanElement | HTMLHeadingElement, ModalHeaderType>(({children, as="", className = "", closeButton = false, onClick, ...restProps}, ref) => {
110
- let validAs = ["div", "span", "h1", "h2", "h3", "h4", "h5", "h6"]
111
- let Component = validAs.find(valid => valid === as) ? as : "div"
112
- const closeModal = useModalContext()
113
- const onCloseButtonClick = (event: React.MouseEvent) => {
114
- if(onClick) {
115
- onClick(event)
116
- }
117
- closeModal()
118
- }
119
-
120
- return (
121
- <Component ref={ref} className={`sg-modal-header ${className}`} {...restProps}>
122
- {children}
123
- {closeButton ? <CloseButton variant onClick={event => onCloseButtonClick(event)}/> : null}
124
- </Component>
125
- )
126
- })
127
- Header.displayName = "ModalHeader"
128
-
129
- const Title = forwardRef<HTMLDivElement | HTMLSpanElement | HTMLHeadingElement, ModalTitleType>( ({children, as="h4", className, ...restProps}, ref) => {
130
- let validAs = ["div", "span", "h1", "h2", "h3", "h4", "h5", "h6"]
131
- let Component = validAs.find(valid => valid === as) ? as : "h4"
132
- return (
133
- <Component ref={ref} className={`sg-modal-title ${className}`} {...restProps}>
134
- {children}
135
- </Component>
136
- )
137
- })
138
- Title.displayName = "ModalTitle"
139
-
140
- const Body = forwardRef<HTMLDivElement, ModalBodyType>( ({children, className, ...restProps}, ref) => {
141
- return (
142
- <div ref={ref} className={`sg-modal-body ${className}`} {...restProps}>
143
- {children}
144
- </div>
145
- )
146
- })
147
- Body.displayName = "ModalBody"
148
-
149
- const Footer = forwardRef<HTMLDivElement, ModalBodyType>( ({children, className, ...restProps}, ref) => {
150
- return (
151
- <div ref={ref} className={`sg-modal-footer ${className}`} {...restProps}>
152
- {children}
153
- </div>
154
- )
155
- })
156
- Footer.displayName = "ModalFooter"
157
-
158
- export default Object.assign(Modal, {
159
- Header: Header,
160
- Title: Title,
161
- Body: Body,
162
- Footer: Footer
163
- })
164
-
165
- export const useKeepElementFocused = function (elementRef: React.RefObject<HTMLDialogElement>) {
166
- useEffect(() => {
167
- const onKeyDown = (event: KeyboardEvent) => {
168
- const focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
169
- const modal = elementRef.current
170
- if(modal) {
171
- const firstFocusableElement = modal.querySelectorAll(focusableElements)[0] as HTMLElement
172
- const focusableContent = modal.querySelectorAll(focusableElements)
173
- const lastFocusableElement = focusableContent[focusableContent.length - 1] as HTMLElement
174
- let isTabPressed = event.key === 'Tab'
175
-
176
- if (!isTabPressed) {
177
- return;
178
- }
179
-
180
- if (event.shiftKey) {
181
- if (document.activeElement === firstFocusableElement) {
182
- lastFocusableElement.focus()
183
- event.preventDefault()
184
- }
185
- } else if (document.activeElement === lastFocusableElement) {
186
- firstFocusableElement.focus();
187
- event.preventDefault()
188
- }
189
- }
190
- }
191
- document.addEventListener('keydown', onKeyDown, true )
192
-
193
- return function cleanup() {
194
- document.removeEventListener('keydown', onKeyDown, true )
195
- }
196
- }, [elementRef])
197
- }
198
-
199
- const ErrorModal = ({typeCheck, closeModal}:ErrorModalType) => {
200
- return (
201
- <>
202
- <Header closeButton >
203
- <Title>
204
- An Error ocurred!
205
- </Title>
206
- </Header>
207
- <Body>
208
- <p>
209
- {!typeCheck.show ? "The variable 'show' must be used and must be a boolean used to decide when to show the modal!" : null}
210
- {!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}
211
- </p>
212
- </Body>
213
- <Footer>
214
- <Button variant="danger" type="button" onClick={() => closeModal()}>
215
- Close
216
- </Button>
217
- </Footer>
218
- </>
219
- )
220
- }
@@ -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"
@@ -1,93 +0,0 @@
1
- import React, { forwardRef, useCallback, useMemo, useState } from "react";
2
-
3
- import { NavDropdownType } from "./NavDropdown.types";
4
-
5
- import Dropdown, { DropdownContextProvider } from "../Dropdown/Dropdown";
6
-
7
- const getDropdownMenuPlacement = (alignEnd: boolean, dropDirection: string, isRTL:boolean = false) => {
8
- const topStart = isRTL ? 'top-end' : 'top-start';
9
- const topEnd = isRTL ? 'top-start' : 'top-end';
10
- const bottomStart = isRTL ? 'bottom-end' : 'bottom-start';
11
- const bottomEnd = isRTL ? 'bottom-start' : 'bottom-end';
12
- const leftStart = isRTL ? 'right-start' : 'left-start';
13
- const leftEnd = isRTL ? 'right-end' : 'left-end';
14
- const rightStart = isRTL ? 'left-start' : 'right-start';
15
- const rightEnd = isRTL ? 'left-end' : 'right-end';
16
- let placement = alignEnd ? bottomEnd : bottomStart;
17
- if (dropDirection === 'up')
18
- {
19
- placement = alignEnd ? topEnd : topStart
20
- }
21
- else if (dropDirection === 'end') {
22
- placement = alignEnd ? rightEnd : rightStart
23
- } else if (dropDirection === 'start') {
24
- placement = alignEnd ? leftEnd : leftStart
25
- } else if (dropDirection === 'down-centered') {
26
- placement = 'bottom'
27
- } else if (dropDirection === 'up-centered') {
28
- placement = 'top'
29
- }
30
- return placement;
31
- }
32
-
33
- const NavDropdown = forwardRef<HTMLDivElement, NavDropdownType>((
34
- {
35
- children, className, onSelect, onToggle, controlId, toggleProps, title, menuProps,
36
- drop="down", align="start", autoClose=true, show="default", ...restProps
37
- }, ref) => {
38
- const [showInternal, setShowInternal] = useState<boolean>(show === "default" ? false : show as boolean)
39
-
40
- // this is an object like {index: string} because we need it to rerender even if the case is the same
41
- // aka we use a "next/previous" case to navigate through the dropdown menu so need to rerender consecutive "next" cases
42
- const [activeDescendant, setActiveDescendant] = useState({case:""})
43
-
44
- const internalOnToggle = useCallback((event: MouseEvent) => {
45
- event.stopPropagation()
46
- setShowInternal(prev => !prev)
47
- }, [])
48
-
49
- const alignEnd = align === "end"
50
- const placement = getDropdownMenuPlacement(alignEnd, drop )
51
-
52
- const controlIdcomputed = controlId
53
- const contextValue = useMemo(() => ({
54
- align,
55
- drop,
56
- showInternal: show != "default" && onToggle ? show as boolean : showInternal,
57
- handleToggle: show != "default" && onToggle ? onToggle : internalOnToggle,
58
- placement,
59
- directionClasses: {
60
- down: "dropdown",
61
- 'down-centered': `dropdown-center`,
62
- up: 'dropup',
63
- 'up-centered': 'dropup-center dropup',
64
- end: 'dropend',
65
- start: 'dropstart'
66
- },
67
- controlId: controlIdcomputed,
68
- activeDescendant,
69
- setActiveDescendant,
70
- navDropdown: false
71
- }), [align, drop, show, showInternal, onToggle, internalOnToggle, placement, controlId, activeDescendant, setActiveDescendant])
72
-
73
- return (
74
- <div ref={ref} id={controlId+"-wrapper"} className={`sg-dropdown${className? " "+className:""} sg-nav-item`} {...restProps} >
75
- <DropdownContextProvider value={contextValue}>
76
- <Dropdown.Toggle navDropdown={true} {...toggleProps}>
77
- {title}
78
- </Dropdown.Toggle>
79
- <Dropdown.Menu {...menuProps}>
80
- {children}
81
- </Dropdown.Menu>
82
- </DropdownContextProvider>
83
- </div>
84
- )
85
- })
86
- NavDropdown.displayName = "NavDropdown"
87
-
88
- export default Object.assign(NavDropdown, {
89
- Toggle: Dropdown.Toggle,
90
- Menu: Dropdown.Menu,
91
- Item: Dropdown.Item,
92
- Divider: Dropdown.Divider
93
- })