namirasoft-site-react 1.5.22 → 1.5.23

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 (485) hide show
  1. package/.dockerignore +86 -86
  2. package/.env.template +10 -10
  3. package/Dockerfile +18 -18
  4. package/SKILL.md +307 -307
  5. package/config-overrides.js +72 -72
  6. package/dist/App.css +33 -33
  7. package/dist/App.d.ts +1 -1
  8. package/dist/NSBoxBuilder.d.ts +25 -25
  9. package/dist/components/NSBanner.d.ts +1 -1
  10. package/dist/components/NSBanner.module.css +47 -47
  11. package/dist/components/NSBarAction.d.ts +1 -1
  12. package/dist/components/NSBarAction.module.css +91 -91
  13. package/dist/components/NSBarAlert.d.ts +1 -1
  14. package/dist/components/NSBarAlert.module.css +79 -79
  15. package/dist/components/NSBarNotification.d.ts +1 -1
  16. package/dist/components/NSBarNotification.module.css +34 -34
  17. package/dist/components/NSBarTitle.d.ts +1 -1
  18. package/dist/components/NSBarTitle.module.css +9 -9
  19. package/dist/components/NSBox.module.css +87 -87
  20. package/dist/components/NSBoxBaseCombo.d.ts +1 -1
  21. package/dist/components/NSBoxBaseCombo.module.css +24 -24
  22. package/dist/components/NSBoxBaseLayout.d.ts +1 -1
  23. package/dist/components/NSBoxBaseLayoutRecursive.d.ts +1 -1
  24. package/dist/components/NSBoxBoolean.d.ts +1 -1
  25. package/dist/components/NSBoxBoolean.module.css +73 -73
  26. package/dist/components/NSBoxBooleans.d.ts +1 -1
  27. package/dist/components/NSBoxColor.d.ts +1 -1
  28. package/dist/components/NSBoxCombo.d.ts +1 -1
  29. package/dist/components/NSBoxDate.d.ts +1 -1
  30. package/dist/components/NSBoxDate.module.css +4 -4
  31. package/dist/components/NSBoxDateRange.d.ts +1 -1
  32. package/dist/components/NSBoxDateRangeBase.d.ts +1 -1
  33. package/dist/components/NSBoxDateRangeBase.module.css +73 -73
  34. package/dist/components/NSBoxDateTime.d.ts +1 -1
  35. package/dist/components/NSBoxDateTime.module.css +4 -4
  36. package/dist/components/NSBoxDateTimeRange.d.ts +1 -1
  37. package/dist/components/NSBoxDouble.d.ts +1 -1
  38. package/dist/components/NSBoxDuration.d.ts +1 -1
  39. package/dist/components/NSBoxDuration.module.css +4 -4
  40. package/dist/components/NSBoxDynamic.d.ts +1 -1
  41. package/dist/components/NSBoxDynamics.d.ts +1 -1
  42. package/dist/components/NSBoxEmail.d.ts +1 -1
  43. package/dist/components/NSBoxEntity.d.ts +1 -1
  44. package/dist/components/NSBoxEnum.d.ts +1 -1
  45. package/dist/components/NSBoxFile.d.ts +1 -1
  46. package/dist/components/NSBoxFile.module.css +10 -10
  47. package/dist/components/NSBoxFilePath.d.ts +1 -1
  48. package/dist/components/NSBoxFont.d.ts +1 -1
  49. package/dist/components/NSBoxIPV4.d.ts +1 -1
  50. package/dist/components/NSBoxIPV4Range.d.ts +1 -1
  51. package/dist/components/NSBoxIPV6.d.ts +1 -1
  52. package/dist/components/NSBoxIPV6Range.d.ts +1 -1
  53. package/dist/components/NSBoxInteger.d.ts +1 -1
  54. package/dist/components/NSBoxInteger.module.css +16 -16
  55. package/dist/components/NSBoxMoney.d.ts +1 -1
  56. package/dist/components/NSBoxOptions.d.ts +1 -1
  57. package/dist/components/NSBoxOptions.module.css +53 -53
  58. package/dist/components/NSBoxPhone.d.ts +1 -1
  59. package/dist/components/NSBoxPhone.module.css +35 -35
  60. package/dist/components/NSBoxRadio.d.ts +1 -1
  61. package/dist/components/NSBoxRadio.module.css +33 -33
  62. package/dist/components/NSBoxSchemaBase.d.ts +1 -1
  63. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  64. package/dist/components/NSBoxSchemaVariable.d.ts +1 -1
  65. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  66. package/dist/components/NSBoxSearch.d.ts +1 -1
  67. package/dist/components/NSBoxSensitive.d.ts +1 -1
  68. package/dist/components/NSBoxString.d.ts +1 -1
  69. package/dist/components/NSBoxTextArea.d.ts +1 -1
  70. package/dist/components/NSBoxTextArea.module.css +12 -12
  71. package/dist/components/NSBoxTime.d.ts +1 -1
  72. package/dist/components/NSBoxTime.module.css +4 -4
  73. package/dist/components/NSBoxTimeRange.d.ts +1 -1
  74. package/dist/components/NSBoxTimeZone.d.ts +1 -1
  75. package/dist/components/NSBoxURL.d.ts +1 -1
  76. package/dist/components/NSBoxVersion.d.ts +1 -1
  77. package/dist/components/NSButton.module.css +57 -57
  78. package/dist/components/NSButtonBlue.d.ts +1 -1
  79. package/dist/components/NSButtonBlue.module.css +4 -4
  80. package/dist/components/NSButtonGreen.d.ts +1 -1
  81. package/dist/components/NSButtonGreen.module.css +4 -4
  82. package/dist/components/NSButtonRed.d.ts +1 -1
  83. package/dist/components/NSButtonRed.module.css +4 -4
  84. package/dist/components/NSCard.d.ts +1 -1
  85. package/dist/components/NSCard.module.css +113 -113
  86. package/dist/components/NSCardScreenshot.d.ts +1 -1
  87. package/dist/components/NSCardScreenshot.module.css +41 -41
  88. package/dist/components/NSChartBar.d.ts +1 -1
  89. package/dist/components/NSChartDoughnut.d.ts +1 -1
  90. package/dist/components/NSChartLine.d.ts +1 -1
  91. package/dist/components/NSChartPie.d.ts +1 -1
  92. package/dist/components/NSChartRange.d.ts +1 -1
  93. package/dist/components/NSColumn.d.ts +1 -1
  94. package/dist/components/NSColumn.module.css +16 -16
  95. package/dist/components/NSCopy.d.ts +1 -1
  96. package/dist/components/NSCopyBox.d.ts +1 -1
  97. package/dist/components/NSCopyBox.module.css +39 -39
  98. package/dist/components/NSDialog.d.ts +1 -1
  99. package/dist/components/NSDialog.module.css +105 -105
  100. package/dist/components/NSDialogBox.d.ts +1 -1
  101. package/dist/components/NSDialogBoxDate.d.ts +1 -1
  102. package/dist/components/NSDialogBoxDateTime.d.ts +1 -1
  103. package/dist/components/NSDialogBoxPhone.d.ts +1 -1
  104. package/dist/components/NSDialogBoxString.d.ts +1 -1
  105. package/dist/components/NSDialogDelete.d.ts +1 -1
  106. package/dist/components/NSDialogInfo.d.ts +1 -1
  107. package/dist/components/NSDialogPageSelection.d.ts +2 -2
  108. package/dist/components/NSDialogPageSelection.module.css +103 -103
  109. package/dist/components/NSDownTimer.d.ts +1 -1
  110. package/dist/components/NSDownTimer.module.css +55 -55
  111. package/dist/components/NSDownload.d.ts +1 -1
  112. package/dist/components/NSDownload.module.css +46 -46
  113. package/dist/components/NSElectronicCard.d.ts +1 -1
  114. package/dist/components/NSElectronicCard.module.css +60 -60
  115. package/dist/components/NSEntityCardBackground.d.ts +1 -1
  116. package/dist/components/NSEntityCardBackground.module.css +27 -27
  117. package/dist/components/NSFilterBox.d.ts +2 -2
  118. package/dist/components/NSFilterBox.module.css +27 -27
  119. package/dist/components/NSFilterBoxItems.d.ts +1 -1
  120. package/dist/components/NSFilterBoxItems.module.css +15 -15
  121. package/dist/components/NSFilterItem.d.ts +1 -1
  122. package/dist/components/NSFilterItem.module.css +24 -24
  123. package/dist/components/NSFooter.d.ts +1 -1
  124. package/dist/components/NSFooter.module.css +140 -140
  125. package/dist/components/NSGauge.d.ts +1 -1
  126. package/dist/components/NSGauge.module.css +67 -67
  127. package/dist/components/NSGaugeDate.d.ts +1 -1
  128. package/dist/components/NSGaugeDate.module.css +57 -57
  129. package/dist/components/NSGaugeNumber.d.ts +1 -1
  130. package/dist/components/NSGaugeNumber.module.css +66 -66
  131. package/dist/components/NSHeader.d.ts +1 -1
  132. package/dist/components/NSHeader.module.css +316 -316
  133. package/dist/components/NSHeaderScreenshot.d.ts +1 -1
  134. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  135. package/dist/components/NSID.d.ts +1 -1
  136. package/dist/components/NSInfo.d.ts +1 -1
  137. package/dist/components/NSLabel.d.ts +1 -1
  138. package/dist/components/NSLabel.module.css +25 -25
  139. package/dist/components/NSLabelErrorNotifier.d.ts +1 -1
  140. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  141. package/dist/components/NSLabelSensitive.d.ts +1 -1
  142. package/dist/components/NSLabelSensitive.module.css +9 -9
  143. package/dist/components/NSLayout.d.ts +1 -1
  144. package/dist/components/NSLayout.module.css +22 -22
  145. package/dist/components/NSLine.d.ts +1 -1
  146. package/dist/components/NSLine.module.css +15 -15
  147. package/dist/components/NSLineText.d.ts +1 -1
  148. package/dist/components/NSLineText.module.css +38 -38
  149. package/dist/components/NSLink.d.ts +1 -1
  150. package/dist/components/NSLink.module.css +36 -36
  151. package/dist/components/NSLinkBlue.d.ts +1 -1
  152. package/dist/components/NSLinkGreen.d.ts +1 -1
  153. package/dist/components/NSLinkRed.d.ts +1 -1
  154. package/dist/components/NSListGrouped.d.ts +1 -1
  155. package/dist/components/NSListGrouped.module.css +69 -69
  156. package/dist/components/NSListMenu.d.ts +9 -0
  157. package/dist/components/NSListMenu.js +135 -0
  158. package/dist/components/NSListMenu.js.map +1 -0
  159. package/dist/components/NSListProduct.d.ts +1 -1
  160. package/dist/components/NSLoading.d.ts +1 -1
  161. package/dist/components/NSLoading.module.css +10 -10
  162. package/dist/components/NSMegaMenu.d.ts +1 -1
  163. package/dist/components/NSMegaMenu.module.css +133 -133
  164. package/dist/components/NSMenuAction.d.ts +1 -1
  165. package/dist/components/NSMenuAction.module.css +88 -88
  166. package/dist/components/NSMenuButton.d.ts +1 -1
  167. package/dist/components/NSMenuButton.module.css +44 -44
  168. package/dist/components/NSNoData.d.ts +1 -1
  169. package/dist/components/NSNoData.module.css +11 -11
  170. package/dist/components/NSPagination.d.ts +1 -1
  171. package/dist/components/NSPagination.module.css +87 -87
  172. package/dist/components/NSPanel.d.ts +1 -1
  173. package/dist/components/NSPanel.module.css +28 -28
  174. package/dist/components/NSPanelAccordion.d.ts +1 -1
  175. package/dist/components/NSPanelAccordion.module.css +4 -4
  176. package/dist/components/NSProductSearch.d.ts +1 -1
  177. package/dist/components/NSProductSearch.module.css +73 -73
  178. package/dist/components/NSProgressBar.d.ts +1 -1
  179. package/dist/components/NSProgressBar.module.css +38 -38
  180. package/dist/components/NSRange.d.ts +1 -1
  181. package/dist/components/NSRange.module.css +66 -66
  182. package/dist/components/NSReorderDialog.d.ts +1 -1
  183. package/dist/components/NSReorderDialog.module.css +49 -49
  184. package/dist/components/NSRepeater.d.ts +1 -1
  185. package/dist/components/NSRepeaterNSBoxSchemaVariable.d.ts +1 -1
  186. package/dist/components/NSRepeaterNSTag.d.ts +1 -1
  187. package/dist/components/NSRow.d.ts +1 -1
  188. package/dist/components/NSRow.module.css +17 -17
  189. package/dist/components/NSSection.d.ts +1 -1
  190. package/dist/components/NSSection.module.css +4 -4
  191. package/dist/components/NSSectionCards.d.ts +1 -1
  192. package/dist/components/NSSectionCards.module.css +38 -38
  193. package/dist/components/NSSectionTiles.d.ts +1 -1
  194. package/dist/components/NSSectionTiles.module.css +10 -10
  195. package/dist/components/NSSectionTitle.d.ts +1 -1
  196. package/dist/components/NSSortDialog.d.ts +1 -1
  197. package/dist/components/NSSpace.d.ts +1 -1
  198. package/dist/components/NSSplitter.d.ts +1 -1
  199. package/dist/components/NSSplitter.module.css +59 -59
  200. package/dist/components/NSTabPage.d.ts +1 -1
  201. package/dist/components/NSTabPage.module.css +59 -59
  202. package/dist/components/NSTable.d.ts +2 -1
  203. package/dist/components/NSTable.js +26 -26
  204. package/dist/components/NSTable.js.map +1 -1
  205. package/dist/components/NSTable.module.css +368 -368
  206. package/dist/components/NSTableChart.d.ts +1 -1
  207. package/dist/components/NSTableChart.module.css +119 -119
  208. package/dist/components/NSTag.d.ts +1 -1
  209. package/dist/components/NSTile.d.ts +1 -1
  210. package/dist/components/NSTile.module.css +76 -76
  211. package/dist/components/NSTimelineMonthly.d.ts +1 -1
  212. package/dist/components/NSTimelineMonthly.module.css +71 -71
  213. package/dist/components/NSTitle.d.ts +1 -1
  214. package/dist/components/NSTitle.module.css +15 -15
  215. package/dist/pages/NSImplementing.d.ts +1 -1
  216. package/dist/pages/NSImplementing.module.css +35 -35
  217. package/dist/pages/NSNotFoundPage.d.ts +1 -1
  218. package/dist/pages/NSNotFoundPage.module.css +18 -18
  219. package/dist/pages/NSUpdating.d.ts +1 -1
  220. package/dist/pages/NSUpdating.module.css +35 -35
  221. package/package.json +86 -86
  222. package/public/index.html +38 -38
  223. package/src/App.css +33 -33
  224. package/src/App.tsx +176 -176
  225. package/src/BrowserDetector.ts +109 -109
  226. package/src/Color.tsx +10 -10
  227. package/src/CopyToClipboard.ts +6 -6
  228. package/src/EncryptionOperation.ts +98 -98
  229. package/src/KeyOperation.ts +109 -109
  230. package/src/LinkOperation.ts +101 -101
  231. package/src/NSBoxBuilder.tsx +922 -922
  232. package/src/ProductCacheService.ts +36 -36
  233. package/src/Validator.ts +199 -199
  234. package/src/components/INSBox.tsx +7 -7
  235. package/src/components/NSBanner.module.css +47 -47
  236. package/src/components/NSBanner.tsx +80 -80
  237. package/src/components/NSBarAction.module.css +91 -91
  238. package/src/components/NSBarAction.tsx +95 -95
  239. package/src/components/NSBarAlert.module.css +79 -79
  240. package/src/components/NSBarAlert.tsx +35 -35
  241. package/src/components/NSBarNotification.module.css +34 -34
  242. package/src/components/NSBarNotification.tsx +89 -89
  243. package/src/components/NSBarTitle.module.css +9 -9
  244. package/src/components/NSBarTitle.tsx +23 -23
  245. package/src/components/NSBox.module.css +87 -87
  246. package/src/components/NSBox.tsx +19 -19
  247. package/src/components/NSBoxBaseCombo.module.css +24 -24
  248. package/src/components/NSBoxBaseCombo.tsx +487 -487
  249. package/src/components/NSBoxBaseLayout.tsx +163 -163
  250. package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
  251. package/src/components/NSBoxBoolean.module.css +73 -73
  252. package/src/components/NSBoxBoolean.tsx +152 -152
  253. package/src/components/NSBoxBooleans.tsx +181 -181
  254. package/src/components/NSBoxColor.tsx +107 -107
  255. package/src/components/NSBoxCombo.tsx +95 -95
  256. package/src/components/NSBoxDate.module.css +4 -4
  257. package/src/components/NSBoxDate.tsx +144 -144
  258. package/src/components/NSBoxDateRange.tsx +88 -88
  259. package/src/components/NSBoxDateRangeBase.module.css +73 -73
  260. package/src/components/NSBoxDateRangeBase.tsx +236 -236
  261. package/src/components/NSBoxDateTime.module.css +4 -4
  262. package/src/components/NSBoxDateTime.tsx +136 -136
  263. package/src/components/NSBoxDateTimeRange.tsx +66 -66
  264. package/src/components/NSBoxDouble.tsx +110 -110
  265. package/src/components/NSBoxDuration.module.css +4 -4
  266. package/src/components/NSBoxDuration.tsx +107 -107
  267. package/src/components/NSBoxDynamic.tsx +73 -73
  268. package/src/components/NSBoxDynamics.tsx +68 -68
  269. package/src/components/NSBoxEmail.tsx +117 -117
  270. package/src/components/NSBoxEntity.tsx +180 -180
  271. package/src/components/NSBoxEnum.tsx +113 -113
  272. package/src/components/NSBoxFile.module.css +10 -10
  273. package/src/components/NSBoxFile.tsx +106 -106
  274. package/src/components/NSBoxFilePath.tsx +106 -106
  275. package/src/components/NSBoxFont.tsx +107 -107
  276. package/src/components/NSBoxIPV4.tsx +107 -107
  277. package/src/components/NSBoxIPV4Range.tsx +107 -107
  278. package/src/components/NSBoxIPV6.tsx +104 -104
  279. package/src/components/NSBoxIPV6Range.tsx +107 -107
  280. package/src/components/NSBoxInteger.module.css +16 -16
  281. package/src/components/NSBoxInteger.tsx +126 -126
  282. package/src/components/NSBoxMoney.tsx +115 -115
  283. package/src/components/NSBoxOptions.module.css +53 -53
  284. package/src/components/NSBoxOptions.tsx +182 -182
  285. package/src/components/NSBoxPhone.module.css +35 -35
  286. package/src/components/NSBoxPhone.tsx +120 -120
  287. package/src/components/NSBoxRadio.module.css +33 -33
  288. package/src/components/NSBoxRadio.tsx +104 -104
  289. package/src/components/NSBoxSchemaBase.module.css +17 -17
  290. package/src/components/NSBoxSchemaBase.tsx +561 -561
  291. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  292. package/src/components/NSBoxSchemaVariable.tsx +262 -262
  293. package/src/components/NSBoxSearch.tsx +112 -112
  294. package/src/components/NSBoxSensitive.tsx +133 -133
  295. package/src/components/NSBoxString.tsx +106 -106
  296. package/src/components/NSBoxTextArea.module.css +12 -12
  297. package/src/components/NSBoxTextArea.tsx +136 -136
  298. package/src/components/NSBoxTime.module.css +4 -4
  299. package/src/components/NSBoxTime.tsx +106 -106
  300. package/src/components/NSBoxTimeRange.tsx +220 -220
  301. package/src/components/NSBoxTimeZone.tsx +122 -122
  302. package/src/components/NSBoxURL.tsx +117 -117
  303. package/src/components/NSBoxVersion.tsx +107 -107
  304. package/src/components/NSButton.module.css +57 -57
  305. package/src/components/NSButton.tsx +74 -74
  306. package/src/components/NSButtonBlue.module.css +4 -4
  307. package/src/components/NSButtonBlue.tsx +29 -29
  308. package/src/components/NSButtonGreen.module.css +4 -4
  309. package/src/components/NSButtonGreen.tsx +29 -29
  310. package/src/components/NSButtonRed.module.css +4 -4
  311. package/src/components/NSButtonRed.tsx +29 -29
  312. package/src/components/NSCard.module.css +113 -113
  313. package/src/components/NSCard.tsx +67 -67
  314. package/src/components/NSCardScreenshot.module.css +41 -41
  315. package/src/components/NSCardScreenshot.tsx +31 -31
  316. package/src/components/NSChartBar.tsx +134 -134
  317. package/src/components/NSChartDoughnut.tsx +114 -114
  318. package/src/components/NSChartLine.tsx +110 -110
  319. package/src/components/NSChartPie.tsx +105 -105
  320. package/src/components/NSChartRange.tsx +14 -14
  321. package/src/components/NSColumn.module.css +16 -16
  322. package/src/components/NSColumn.tsx +24 -24
  323. package/src/components/NSCopy.tsx +95 -95
  324. package/src/components/NSCopyBox.module.css +39 -39
  325. package/src/components/NSCopyBox.tsx +53 -53
  326. package/src/components/NSDialog.module.css +105 -105
  327. package/src/components/NSDialog.tsx +72 -72
  328. package/src/components/NSDialogBox.tsx +38 -38
  329. package/src/components/NSDialogBoxDate.tsx +28 -28
  330. package/src/components/NSDialogBoxDateTime.tsx +28 -28
  331. package/src/components/NSDialogBoxPhone.tsx +28 -28
  332. package/src/components/NSDialogBoxString.tsx +28 -28
  333. package/src/components/NSDialogDelete.tsx +36 -36
  334. package/src/components/NSDialogInfo.tsx +49 -49
  335. package/src/components/NSDialogPageSelection.module.css +103 -103
  336. package/src/components/NSDialogPageSelection.tsx +233 -233
  337. package/src/components/NSDownTimer.module.css +55 -55
  338. package/src/components/NSDownTimer.tsx +91 -91
  339. package/src/components/NSDownload.module.css +46 -46
  340. package/src/components/NSDownload.tsx +69 -69
  341. package/src/components/NSElectronicCard.module.css +60 -60
  342. package/src/components/NSElectronicCard.tsx +46 -46
  343. package/src/components/NSEntityCardBackground.module.css +27 -27
  344. package/src/components/NSEntityCardBackground.tsx +36 -36
  345. package/src/components/NSFilterBox.module.css +27 -27
  346. package/src/components/NSFilterBox.tsx +477 -477
  347. package/src/components/NSFilterBoxItems.module.css +15 -15
  348. package/src/components/NSFilterBoxItems.tsx +52 -52
  349. package/src/components/NSFilterItem.module.css +24 -24
  350. package/src/components/NSFilterItem.tsx +27 -27
  351. package/src/components/NSFooter.module.css +140 -140
  352. package/src/components/NSFooter.tsx +321 -321
  353. package/src/components/NSGauge.module.css +67 -67
  354. package/src/components/NSGauge.tsx +52 -52
  355. package/src/components/NSGaugeDate.module.css +57 -57
  356. package/src/components/NSGaugeDate.tsx +125 -125
  357. package/src/components/NSGaugeNumber.module.css +66 -66
  358. package/src/components/NSGaugeNumber.tsx +93 -93
  359. package/src/components/NSHeader.module.css +316 -316
  360. package/src/components/NSHeader.tsx +337 -337
  361. package/src/components/NSHeaderScreenshot.module.css +35 -35
  362. package/src/components/NSHeaderScreenshot.tsx +39 -39
  363. package/src/components/NSID.tsx +190 -190
  364. package/src/components/NSInfo.tsx +50 -50
  365. package/src/components/NSLabel.module.css +25 -25
  366. package/src/components/NSLabel.tsx +47 -47
  367. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  368. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  369. package/src/components/NSLabelSensitive.module.css +9 -9
  370. package/src/components/NSLabelSensitive.tsx +101 -101
  371. package/src/components/NSLayout.module.css +22 -22
  372. package/src/components/NSLayout.tsx +143 -143
  373. package/src/components/NSLine.module.css +15 -15
  374. package/src/components/NSLine.tsx +13 -13
  375. package/src/components/NSLineText.module.css +38 -38
  376. package/src/components/NSLineText.tsx +17 -17
  377. package/src/components/NSLink.module.css +36 -36
  378. package/src/components/NSLink.tsx +26 -26
  379. package/src/components/NSLinkBlue.tsx +22 -22
  380. package/src/components/NSLinkGreen.tsx +13 -13
  381. package/src/components/NSLinkRed.tsx +13 -13
  382. package/src/components/NSListGrouped.module.css +69 -69
  383. package/src/components/NSListGrouped.tsx +106 -106
  384. package/src/components/NSListProduct.tsx +78 -78
  385. package/src/components/NSLoading.module.css +10 -10
  386. package/src/components/NSLoading.tsx +43 -43
  387. package/src/components/NSMegaMenu.module.css +133 -133
  388. package/src/components/NSMegaMenu.tsx +188 -188
  389. package/src/components/NSMenuAction.module.css +88 -88
  390. package/src/components/NSMenuAction.tsx +106 -106
  391. package/src/components/NSMenuButton.module.css +44 -44
  392. package/src/components/NSMenuButton.tsx +198 -198
  393. package/src/components/NSNoData.module.css +11 -11
  394. package/src/components/NSNoData.tsx +24 -24
  395. package/src/components/NSPagination.module.css +87 -87
  396. package/src/components/NSPagination.tsx +183 -183
  397. package/src/components/NSPanel.module.css +28 -28
  398. package/src/components/NSPanel.tsx +26 -26
  399. package/src/components/NSPanelAccordion.module.css +4 -4
  400. package/src/components/NSPanelAccordion.tsx +51 -51
  401. package/src/components/NSProductSearch.module.css +73 -73
  402. package/src/components/NSProductSearch.tsx +193 -193
  403. package/src/components/NSProgressBar.module.css +38 -38
  404. package/src/components/NSProgressBar.tsx +29 -29
  405. package/src/components/NSRange.module.css +66 -66
  406. package/src/components/NSRange.tsx +83 -83
  407. package/src/components/NSReorderDialog.module.css +49 -49
  408. package/src/components/NSReorderDialog.tsx +184 -184
  409. package/src/components/NSRepeater.tsx +327 -327
  410. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +96 -96
  411. package/src/components/NSRepeaterNSTag.tsx +86 -86
  412. package/src/components/NSRow.module.css +17 -17
  413. package/src/components/NSRow.tsx +24 -24
  414. package/src/components/NSSection.module.css +4 -4
  415. package/src/components/NSSection.tsx +26 -26
  416. package/src/components/NSSectionCards.module.css +38 -38
  417. package/src/components/NSSectionCards.tsx +51 -51
  418. package/src/components/NSSectionTiles.module.css +10 -10
  419. package/src/components/NSSectionTiles.tsx +25 -25
  420. package/src/components/NSSectionTitle.tsx +19 -19
  421. package/src/components/NSSortDialog.tsx +124 -124
  422. package/src/components/NSSpace.tsx +28 -28
  423. package/src/components/NSSplitter.module.css +59 -59
  424. package/src/components/NSSplitter.tsx +211 -211
  425. package/src/components/NSTabPage.module.css +59 -59
  426. package/src/components/NSTabPage.tsx +122 -122
  427. package/src/components/NSTable.module.css +368 -368
  428. package/src/components/NSTable.tsx +1445 -1443
  429. package/src/components/NSTableChart.module.css +119 -119
  430. package/src/components/NSTableChart.tsx +732 -732
  431. package/src/components/NSTag.tsx +74 -74
  432. package/src/components/NSTile.module.css +76 -76
  433. package/src/components/NSTile.tsx +27 -27
  434. package/src/components/NSTimelineMonthly.module.css +71 -71
  435. package/src/components/NSTimelineMonthly.tsx +44 -44
  436. package/src/components/NSTitle.module.css +15 -15
  437. package/src/components/NSTitle.tsx +19 -19
  438. package/src/css.d.ts +13 -13
  439. package/src/formatter/BackColorFormatter.tsx +23 -23
  440. package/src/formatter/BaseColumnFormatter.ts +86 -86
  441. package/src/formatter/BaseURLImageFormatter.tsx +37 -37
  442. package/src/formatter/BooleanFormatter.ts +26 -26
  443. package/src/formatter/BytesFormatter.tsx +19 -19
  444. package/src/formatter/DateFormatter.ts +26 -26
  445. package/src/formatter/DateTimeFormatter.ts +26 -26
  446. package/src/formatter/DurationFormatter.ts +17 -17
  447. package/src/formatter/EmailFormatter.tsx +25 -25
  448. package/src/formatter/EnumFormatter.ts +17 -17
  449. package/src/formatter/FloatFormatter.ts +27 -27
  450. package/src/formatter/ForeColorFormatter.tsx +24 -24
  451. package/src/formatter/IDFormatter.tsx +58 -58
  452. package/src/formatter/IPFormatter.ts +39 -39
  453. package/src/formatter/IntegerFormatter.ts +27 -27
  454. package/src/formatter/JsonFormatter.tsx +75 -75
  455. package/src/formatter/MoneyFormatter.ts +39 -39
  456. package/src/formatter/PercentFormatter.tsx +43 -43
  457. package/src/formatter/PhoneFormatter.tsx +25 -25
  458. package/src/formatter/SensitiveFormatter.tsx +40 -40
  459. package/src/formatter/StringFormatter.tsx +49 -49
  460. package/src/formatter/TimeFormatter.ts +25 -25
  461. package/src/formatter/URLFormatter.tsx +28 -28
  462. package/src/formatter/UnknowFormatter.ts +22 -22
  463. package/src/index.tsx +7 -7
  464. package/src/main.ts +263 -263
  465. package/src/pages/NSImplementing.module.css +35 -35
  466. package/src/pages/NSImplementing.tsx +32 -32
  467. package/src/pages/NSNotFoundPage.module.css +18 -18
  468. package/src/pages/NSNotFoundPage.tsx +14 -14
  469. package/src/pages/NSUpdating.module.css +35 -35
  470. package/src/pages/NSUpdating.tsx +32 -32
  471. package/src/props/IBackgroundProps.ts +5 -5
  472. package/src/props/IBaseComponentProps.ts +8 -8
  473. package/src/props/IHeaderIconProps.ts +10 -10
  474. package/src/props/IHeaderLeftProps.ts +6 -6
  475. package/src/props/IHeaderRightProps.ts +8 -8
  476. package/src/props/IImageProps.ts +4 -4
  477. package/src/props/ILinkProps.ts +4 -4
  478. package/src/props/IValidationNumberProps.ts +4 -4
  479. package/src/props/IValidationPrecisionProps.ts +3 -3
  480. package/src/props/IValidationProps.ts +9 -9
  481. package/src/props/IValidationRegexProps.ts +4 -4
  482. package/src/props/IValidationStringProps.ts +4 -4
  483. package/src/routing/NSNotifier.ts +114 -114
  484. package/src/routing/NSRouterMaker.tsx +28 -28
  485. package/tsconfig.json +43 -43
package/src/App.tsx CHANGED
@@ -1,177 +1,177 @@
1
- import 'bootstrap/dist/css/bootstrap.min.css';
2
- import { TimeOperation } from 'namirasoft-core';
3
- import { Component, createRef } from 'react';
4
- import './App.css';
5
- import { NSLayout } from './components/NSLayout';
6
- import { DateTimeFormatter, IntegerFormatter, JsonFormatter, NSBoxCombo, NSBoxDate, NSBoxDateTime, NSButtonBlue, NSColumn, NSTable, PhoneFormatter, SensitiveFormatter, StringFormatter } from './main';
7
-
8
- type TableRow = {
9
- id: string,
10
- parent_id?: string,
11
- name: string,
12
- age: number,
13
- experience: number,
14
- salary: number,
15
- city: string,
16
- phone: string,
17
- json?: string,
18
- national_code: string,
19
- created_at: string,
20
- };
21
-
22
- interface AppProps { }
23
- interface AppState { }
24
-
25
- export class App extends Component<AppProps, AppState>
26
- {
27
- private NSTableRef = createRef<NSTable<TableRow>>();
28
- private NSBoxDateRef = createRef<NSBoxDate>();
29
- private NSBoxDateTimeRef = createRef<NSBoxDateTime>();
30
-
31
- constructor(props: AppProps)
32
- {
33
- super(props);
34
- this.state = {}
35
- };
36
-
37
- override render()
38
- {
39
- return (
40
- <NSLayout
41
- header={{
42
- right: {
43
- icons: [
44
- {
45
- onClicked: () => { },
46
- src: "https://static.namirasoft.com/image/namirasoft/access/logo/base.png",
47
- count: 2
48
- }
49
- ],
50
- },
51
- mega_menu: true,
52
- onCollapse: () => { },
53
- }}
54
- isLoggedIn={() => true}
55
- logo='https://static.namirasoft.com/image/namirasoft/access/logo/base.png'
56
- background={{ image: "https://static.namirasoft.com/image/namirasoft/access/background/base.svg" }}
57
- notifications={[]}
58
- notifier={{} as any}
59
- scope=''
60
- >
61
- <NSTable<TableRow>
62
- ref={this.NSTableRef}
63
- name={"table"}
64
- checkbox
65
- columns={[
66
- {
67
- table: { name: "table", text: "Table" },
68
- index: 0, type: "String", name: "id", text: "ID", formatter: new StringFormatter()
69
- },
70
- {
71
- table: { name: "table", text: "Table" },
72
- index: 1, type: "String", name: "name", text: "Name", formatter: new StringFormatter()
73
- },
74
- {
75
- table: { name: "table", text: "Table" },
76
- index: 2, type: "Number", name: "age", text: "Age", formatter: new IntegerFormatter()
77
- },
78
- {
79
- table: { name: "table", text: "Table" },
80
- index: 3, type: "Number", name: "experience", text: "Experience", formatter: new IntegerFormatter()
81
- },
82
- {
83
- table: { name: "table", text: "Table" },
84
- index: 4, type: "Number", name: "salary", text: "Salary", formatter: new IntegerFormatter()
85
- },
86
- {
87
- table: { name: "table", text: "Table" },
88
- index: 5, type: "String", name: "city", text: "City", formatter: new StringFormatter()
89
- },
90
- {
91
- table: { name: "table", text: "Table" },
92
- index: 6, type: "String", name: "phone", text: "Phone", formatter: new PhoneFormatter()
93
- },
94
- {
95
- table: { name: "table", text: "Table" },
96
- index: 7, type: "String", name: "national_code", text: "National Code", formatter: new SensitiveFormatter<TableRow>(
97
- async (value) =>
98
- {
99
- await new Promise(resolve => setTimeout(resolve, 1000));
100
- return value;
101
- },
102
- () => true
103
- )
104
- },
105
- {
106
- table: { name: "table", text: "Table" },
107
- index: 8, type: "DateTime", name: "created_at", text: "Created At", formatter: new DateTimeFormatter()
108
- },
109
- {
110
- table: { name: "table", text: "Table" },
111
- index: 9, type: "String", name: "json", text: "Json", formatter: new JsonFormatter()
112
- },
113
- ]}
114
- getRowKey={(item) => item.value.id}
115
- getRows={async () => ({
116
- count: 5,
117
- rows: [
118
- { id: "a1", name: "Amin Pasban", age: 28, experience: 6, salary: 12000, city: "Rasht", phone: "09117579093", national_code: "2670000001", json: JSON.stringify({ role: "Developer", skills: ["React", "TypeScript"], active: true, projects: { count: 3, latest: "Site Package" } }), created_at: TimeOperation.daysAgo(1, new Date()).toDateString() },
119
- { id: "c3", name: "Negar Sharifpour", age: 28, experience: 2, salary: 9000, city: "Rasht", phone: "09117579092", national_code: "2670000002", created_at: TimeOperation.daysAgo(2, new Date()).toDateString() },
120
- { id: "b2", name: "Milad Nazirzadeh", age: 28, experience: 6, salary: 18000, city: "Tehran", phone: "09127576063", national_code: "0070000003", created_at: TimeOperation.daysAgo(10, new Date()).toDateString() },
121
- { id: "d4", name: "Mohammad Nazirzadeh", age: 29, experience: 4, salary: 8000, city: "Tehran", phone: "09127576063", national_code: "0070000004", created_at: TimeOperation.daysAgo(20, new Date()).toDateString() },
122
- { id: "e5", name: "Hadiseh Pasban", age: 22, experience: 3, salary: 9500, city: "Rasht", phone: "09116463032", national_code: "2670000005", created_at: TimeOperation.daysAgo(100, new Date()).toDateString() },
123
- ]
124
- })}
125
- ui={{
126
- pagination: false,
127
- }}
128
- />
129
- <NSColumn style={{ marginTop: "1.5rem", alignItems: "center" }}>
130
- <NSBoxCombo
131
- title='Combo'
132
- required={true}
133
- multiple={false}
134
- getOptions={() => [
135
- { title: "Option 9 Option 9 Option 9 Option 9 Option 9 Option 9", value: "options9" },
136
- { title: "Option 8", value: "options8" },
137
- { title: "Option 7", value: "options7" },
138
- { title: "Option 6", value: "options6" },
139
- { title: "Option 5", value: "options5" },
140
- { title: "Option 4", value: "options4" },
141
- { title: "Option 3", value: "options3" },
142
- { title: "Option 2", value: "options2" },
143
- { title: "Option 1", value: "options1" },
144
- ]}
145
- />
146
- <NSBoxCombo
147
- title='Combo'
148
- required={true}
149
- multiple={true}
150
- getOptions={() => [
151
- { title: "Option 9", value: "options9" },
152
- { title: "Option 8", value: "options8" },
153
- { title: "Option 7", value: "options7" },
154
- { title: "Option 6", value: "options6" },
155
- { title: "Option 5", value: "options5" },
156
- { title: "Option 4", value: "options4" },
157
- { title: "Option 3", value: "options3" },
158
- { title: "Option 2", value: "options2" },
159
- { title: "Option 1", value: "options1" },
160
- ]}
161
- />
162
- <NSButtonBlue
163
- title={"Log"}
164
- onClick={{
165
- showLoading: false,
166
- action: () =>
167
- {
168
- console.log("Date:", this.NSBoxDateRef.current?.getValueString(false));
169
- console.log("DateTime:", this.NSBoxDateTimeRef.current?.getValueString(false));
170
- }
171
- }}
172
- />
173
- </NSColumn>
174
- </NSLayout>
175
- );
176
- }
1
+ import 'bootstrap/dist/css/bootstrap.min.css';
2
+ import { TimeOperation } from 'namirasoft-core';
3
+ import { Component, createRef } from 'react';
4
+ import './App.css';
5
+ import { NSLayout } from './components/NSLayout';
6
+ import { DateTimeFormatter, IntegerFormatter, JsonFormatter, NSBoxCombo, NSBoxDate, NSBoxDateTime, NSButtonBlue, NSColumn, NSTable, PhoneFormatter, SensitiveFormatter, StringFormatter } from './main';
7
+
8
+ type TableRow = {
9
+ id: string,
10
+ parent_id?: string,
11
+ name: string,
12
+ age: number,
13
+ experience: number,
14
+ salary: number,
15
+ city: string,
16
+ phone: string,
17
+ json?: string,
18
+ national_code: string,
19
+ created_at: string,
20
+ };
21
+
22
+ interface AppProps { }
23
+ interface AppState { }
24
+
25
+ export class App extends Component<AppProps, AppState>
26
+ {
27
+ private NSTableRef = createRef<NSTable<TableRow>>();
28
+ private NSBoxDateRef = createRef<NSBoxDate>();
29
+ private NSBoxDateTimeRef = createRef<NSBoxDateTime>();
30
+
31
+ constructor(props: AppProps)
32
+ {
33
+ super(props);
34
+ this.state = {}
35
+ };
36
+
37
+ override render()
38
+ {
39
+ return (
40
+ <NSLayout
41
+ header={{
42
+ right: {
43
+ icons: [
44
+ {
45
+ onClicked: () => { },
46
+ src: "https://static.namirasoft.com/image/namirasoft/access/logo/base.png",
47
+ count: 2
48
+ }
49
+ ],
50
+ },
51
+ mega_menu: true,
52
+ onCollapse: () => { },
53
+ }}
54
+ isLoggedIn={() => true}
55
+ logo='https://static.namirasoft.com/image/namirasoft/access/logo/base.png'
56
+ background={{ image: "https://static.namirasoft.com/image/namirasoft/access/background/base.svg" }}
57
+ notifications={[]}
58
+ notifier={{} as any}
59
+ scope=''
60
+ >
61
+ <NSTable<TableRow>
62
+ ref={this.NSTableRef}
63
+ name={"table"}
64
+ checkbox
65
+ columns={[
66
+ {
67
+ table: { name: "table", text: "Table" },
68
+ index: 0, type: "String", name: "id", text: "ID", formatter: new StringFormatter()
69
+ },
70
+ {
71
+ table: { name: "table", text: "Table" },
72
+ index: 1, type: "String", name: "name", text: "Name", formatter: new StringFormatter()
73
+ },
74
+ {
75
+ table: { name: "table", text: "Table" },
76
+ index: 2, type: "Number", name: "age", text: "Age", formatter: new IntegerFormatter()
77
+ },
78
+ {
79
+ table: { name: "table", text: "Table" },
80
+ index: 3, type: "Number", name: "experience", text: "Experience", formatter: new IntegerFormatter()
81
+ },
82
+ {
83
+ table: { name: "table", text: "Table" },
84
+ index: 4, type: "Number", name: "salary", text: "Salary", formatter: new IntegerFormatter()
85
+ },
86
+ {
87
+ table: { name: "table", text: "Table" },
88
+ index: 5, type: "String", name: "city", text: "City", formatter: new StringFormatter()
89
+ },
90
+ {
91
+ table: { name: "table", text: "Table" },
92
+ index: 6, type: "String", name: "phone", text: "Phone", formatter: new PhoneFormatter()
93
+ },
94
+ {
95
+ table: { name: "table", text: "Table" },
96
+ index: 7, type: "String", name: "national_code", text: "National Code", formatter: new SensitiveFormatter<TableRow>(
97
+ async (value) =>
98
+ {
99
+ await new Promise(resolve => setTimeout(resolve, 1000));
100
+ return value;
101
+ },
102
+ () => true
103
+ )
104
+ },
105
+ {
106
+ table: { name: "table", text: "Table" },
107
+ index: 8, type: "DateTime", name: "created_at", text: "Created At", formatter: new DateTimeFormatter()
108
+ },
109
+ {
110
+ table: { name: "table", text: "Table" },
111
+ index: 9, type: "String", name: "json", text: "Json", formatter: new JsonFormatter()
112
+ },
113
+ ]}
114
+ getRowKey={(item) => item.value.id}
115
+ getRows={async () => ({
116
+ count: 5,
117
+ rows: [
118
+ { id: "a1", name: "Amin Pasban", age: 28, experience: 6, salary: 12000, city: "Rasht", phone: "09117579093", national_code: "2670000001", json: JSON.stringify({ role: "Developer", skills: ["React", "TypeScript"], active: true, projects: { count: 3, latest: "Site Package" } }), created_at: TimeOperation.daysAgo(1, new Date()).toDateString() },
119
+ { id: "c3", name: "Negar Sharifpour", age: 28, experience: 2, salary: 9000, city: "Rasht", phone: "09117579092", national_code: "2670000002", created_at: TimeOperation.daysAgo(2, new Date()).toDateString() },
120
+ { id: "b2", name: "Milad Nazirzadeh", age: 28, experience: 6, salary: 18000, city: "Tehran", phone: "09127576063", national_code: "0070000003", created_at: TimeOperation.daysAgo(10, new Date()).toDateString() },
121
+ { id: "d4", name: "Mohammad Nazirzadeh", age: 29, experience: 4, salary: 8000, city: "Tehran", phone: "09127576063", national_code: "0070000004", created_at: TimeOperation.daysAgo(20, new Date()).toDateString() },
122
+ { id: "e5", name: "Hadiseh Pasban", age: 22, experience: 3, salary: 9500, city: "Rasht", phone: "09116463032", national_code: "2670000005", created_at: TimeOperation.daysAgo(100, new Date()).toDateString() },
123
+ ]
124
+ })}
125
+ ui={{
126
+ pagination: false,
127
+ }}
128
+ />
129
+ <NSColumn style={{ marginTop: "1.5rem", alignItems: "center" }}>
130
+ <NSBoxCombo
131
+ title='Combo'
132
+ required={true}
133
+ multiple={false}
134
+ getOptions={() => [
135
+ { title: "Option 9 Option 9 Option 9 Option 9 Option 9 Option 9", value: "options9" },
136
+ { title: "Option 8", value: "options8" },
137
+ { title: "Option 7", value: "options7" },
138
+ { title: "Option 6", value: "options6" },
139
+ { title: "Option 5", value: "options5" },
140
+ { title: "Option 4", value: "options4" },
141
+ { title: "Option 3", value: "options3" },
142
+ { title: "Option 2", value: "options2" },
143
+ { title: "Option 1", value: "options1" },
144
+ ]}
145
+ />
146
+ <NSBoxCombo
147
+ title='Combo'
148
+ required={true}
149
+ multiple={true}
150
+ getOptions={() => [
151
+ { title: "Option 9", value: "options9" },
152
+ { title: "Option 8", value: "options8" },
153
+ { title: "Option 7", value: "options7" },
154
+ { title: "Option 6", value: "options6" },
155
+ { title: "Option 5", value: "options5" },
156
+ { title: "Option 4", value: "options4" },
157
+ { title: "Option 3", value: "options3" },
158
+ { title: "Option 2", value: "options2" },
159
+ { title: "Option 1", value: "options1" },
160
+ ]}
161
+ />
162
+ <NSButtonBlue
163
+ title={"Log"}
164
+ onClick={{
165
+ showLoading: false,
166
+ action: () =>
167
+ {
168
+ console.log("Date:", this.NSBoxDateRef.current?.getValueString(false));
169
+ console.log("DateTime:", this.NSBoxDateTimeRef.current?.getValueString(false));
170
+ }
171
+ }}
172
+ />
173
+ </NSColumn>
174
+ </NSLayout>
175
+ );
176
+ }
177
177
  }
@@ -1,110 +1,110 @@
1
- export enum Browser
2
- {
3
- Chrome = "Chrome",
4
- Edge = "Edge",
5
- Brave = "Brave",
6
- Opera = "Opera",
7
- Samsung = "Samsung",
8
- Firefox = "Firefox",
9
- Safari = "Safari",
10
- Unknown = "Unknown",
11
- }
12
-
13
- interface UserAgentBrand
14
- {
15
- brand: string;
16
- version: string;
17
- }
18
-
19
- interface UserAgentData
20
- {
21
- brands: UserAgentBrand[];
22
- mobile: boolean;
23
- platform: string;
24
- }
25
-
26
- export class BrowserDetector
27
- {
28
- private static cached?: Browser;
29
-
30
- private static get userAgentData(): UserAgentData | undefined
31
- {
32
- if (typeof navigator === "undefined")
33
- return undefined;
34
- return (navigator as any).userAgentData as UserAgentData | undefined;
35
- }
36
-
37
- private static getUserAgent(): string
38
- {
39
- if (typeof navigator === "undefined")
40
- return "";
41
- return navigator.userAgent;
42
- }
43
-
44
- private static isBrave(): boolean
45
- {
46
- return typeof navigator !== "undefined" && (navigator as any).brave !== undefined;
47
- }
48
-
49
- private static detectFromBrands(brands: UserAgentBrand[]): Browser | undefined
50
- {
51
- const names = brands.map(entry => entry.brand.toLowerCase());
52
- const has = (value: string): boolean => names.some(name => name.includes(value));
53
-
54
- if (BrowserDetector.isBrave())
55
- return Browser.Brave;
56
- if (has("microsoft edge"))
57
- return Browser.Edge;
58
- if (has("opera"))
59
- return Browser.Opera;
60
- if (has("samsung"))
61
- return Browser.Samsung;
62
- if (has("google chrome") || has("chromium"))
63
- return Browser.Chrome;
64
-
65
- return undefined;
66
- }
67
-
68
- private static detectFromUserAgent(): Browser
69
- {
70
- const ua = BrowserDetector.getUserAgent();
71
-
72
- if (BrowserDetector.isBrave())
73
- return Browser.Brave;
74
- if (ua.includes("Edg/"))
75
- return Browser.Edge;
76
- if (ua.includes("OPR/") || ua.includes("Opera/"))
77
- return Browser.Opera;
78
- if (ua.includes("SamsungBrowser/"))
79
- return Browser.Samsung;
80
- if (ua.includes("Firefox/"))
81
- return Browser.Firefox;
82
- if (ua.includes("Chrome/"))
83
- return Browser.Chrome;
84
- if (ua.includes("Safari/"))
85
- return Browser.Safari;
86
-
87
- return Browser.Unknown;
88
- }
89
-
90
- static detect(): Browser
91
- {
92
- if (BrowserDetector.cached)
93
- return BrowserDetector.cached;
94
-
95
- const data = BrowserDetector.userAgentData;
96
- const detected = data ? BrowserDetector.detectFromBrands(data.brands) : undefined;
97
- BrowserDetector.cached = detected ?? BrowserDetector.detectFromUserAgent();
98
- return BrowserDetector.cached;
99
- }
100
-
101
- static is(browser: Browser): boolean
102
- {
103
- return BrowserDetector.detect() === browser;
104
- }
105
-
106
- static reset(): void
107
- {
108
- BrowserDetector.cached = undefined;
109
- }
1
+ export enum Browser
2
+ {
3
+ Chrome = "Chrome",
4
+ Edge = "Edge",
5
+ Brave = "Brave",
6
+ Opera = "Opera",
7
+ Samsung = "Samsung",
8
+ Firefox = "Firefox",
9
+ Safari = "Safari",
10
+ Unknown = "Unknown",
11
+ }
12
+
13
+ interface UserAgentBrand
14
+ {
15
+ brand: string;
16
+ version: string;
17
+ }
18
+
19
+ interface UserAgentData
20
+ {
21
+ brands: UserAgentBrand[];
22
+ mobile: boolean;
23
+ platform: string;
24
+ }
25
+
26
+ export class BrowserDetector
27
+ {
28
+ private static cached?: Browser;
29
+
30
+ private static get userAgentData(): UserAgentData | undefined
31
+ {
32
+ if (typeof navigator === "undefined")
33
+ return undefined;
34
+ return (navigator as any).userAgentData as UserAgentData | undefined;
35
+ }
36
+
37
+ private static getUserAgent(): string
38
+ {
39
+ if (typeof navigator === "undefined")
40
+ return "";
41
+ return navigator.userAgent;
42
+ }
43
+
44
+ private static isBrave(): boolean
45
+ {
46
+ return typeof navigator !== "undefined" && (navigator as any).brave !== undefined;
47
+ }
48
+
49
+ private static detectFromBrands(brands: UserAgentBrand[]): Browser | undefined
50
+ {
51
+ const names = brands.map(entry => entry.brand.toLowerCase());
52
+ const has = (value: string): boolean => names.some(name => name.includes(value));
53
+
54
+ if (BrowserDetector.isBrave())
55
+ return Browser.Brave;
56
+ if (has("microsoft edge"))
57
+ return Browser.Edge;
58
+ if (has("opera"))
59
+ return Browser.Opera;
60
+ if (has("samsung"))
61
+ return Browser.Samsung;
62
+ if (has("google chrome") || has("chromium"))
63
+ return Browser.Chrome;
64
+
65
+ return undefined;
66
+ }
67
+
68
+ private static detectFromUserAgent(): Browser
69
+ {
70
+ const ua = BrowserDetector.getUserAgent();
71
+
72
+ if (BrowserDetector.isBrave())
73
+ return Browser.Brave;
74
+ if (ua.includes("Edg/"))
75
+ return Browser.Edge;
76
+ if (ua.includes("OPR/") || ua.includes("Opera/"))
77
+ return Browser.Opera;
78
+ if (ua.includes("SamsungBrowser/"))
79
+ return Browser.Samsung;
80
+ if (ua.includes("Firefox/"))
81
+ return Browser.Firefox;
82
+ if (ua.includes("Chrome/"))
83
+ return Browser.Chrome;
84
+ if (ua.includes("Safari/"))
85
+ return Browser.Safari;
86
+
87
+ return Browser.Unknown;
88
+ }
89
+
90
+ static detect(): Browser
91
+ {
92
+ if (BrowserDetector.cached)
93
+ return BrowserDetector.cached;
94
+
95
+ const data = BrowserDetector.userAgentData;
96
+ const detected = data ? BrowserDetector.detectFromBrands(data.brands) : undefined;
97
+ BrowserDetector.cached = detected ?? BrowserDetector.detectFromUserAgent();
98
+ return BrowserDetector.cached;
99
+ }
100
+
101
+ static is(browser: Browser): boolean
102
+ {
103
+ return BrowserDetector.detect() === browser;
104
+ }
105
+
106
+ static reset(): void
107
+ {
108
+ BrowserDetector.cached = undefined;
109
+ }
110
110
  }
package/src/Color.tsx CHANGED
@@ -1,11 +1,11 @@
1
- export class Color
2
- {
3
- static getColor(percentage: number): string
4
- {
5
- if (percentage >= 75) return '#368F01';
6
- if (percentage >= 60) return ' #44B400';
7
- if (percentage >= 50) return '#56E500';
8
- if (percentage >= 25) return '#FAFF00';
9
- return 'red';
10
- }
1
+ export class Color
2
+ {
3
+ static getColor(percentage: number): string
4
+ {
5
+ if (percentage >= 75) return '#368F01';
6
+ if (percentage >= 60) return ' #44B400';
7
+ if (percentage >= 50) return '#56E500';
8
+ if (percentage >= 25) return '#FAFF00';
9
+ return 'red';
10
+ }
11
11
  }
@@ -1,7 +1,7 @@
1
- export class CopyToClipboard
2
- {
3
- static copyToClipboard(value: string): void
4
- {
5
- navigator.clipboard.writeText(value);
6
- }
1
+ export class CopyToClipboard
2
+ {
3
+ static copyToClipboard(value: string): void
4
+ {
5
+ navigator.clipboard.writeText(value);
6
+ }
7
7
  };