namirasoft-site-react 1.5.19 → 1.5.20

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 (487) 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.js +1 -1
  22. package/dist/components/NSBoxBaseCombo.js.map +1 -1
  23. package/dist/components/NSBoxBaseCombo.module.css +22 -6
  24. package/dist/components/NSBoxBaseLayout.d.ts +1 -1
  25. package/dist/components/NSBoxBaseLayoutRecursive.d.ts +1 -1
  26. package/dist/components/NSBoxBoolean.d.ts +1 -1
  27. package/dist/components/NSBoxBoolean.module.css +73 -73
  28. package/dist/components/NSBoxBooleans.d.ts +1 -1
  29. package/dist/components/NSBoxColor.d.ts +1 -1
  30. package/dist/components/NSBoxCombo.d.ts +1 -1
  31. package/dist/components/NSBoxDate.d.ts +1 -1
  32. package/dist/components/NSBoxDate.module.css +4 -4
  33. package/dist/components/NSBoxDateRange.d.ts +1 -1
  34. package/dist/components/NSBoxDateRangeBase.d.ts +1 -1
  35. package/dist/components/NSBoxDateRangeBase.module.css +73 -73
  36. package/dist/components/NSBoxDateTime.d.ts +1 -1
  37. package/dist/components/NSBoxDateTime.module.css +4 -4
  38. package/dist/components/NSBoxDateTimeRange.d.ts +1 -1
  39. package/dist/components/NSBoxDouble.d.ts +1 -1
  40. package/dist/components/NSBoxDuration.d.ts +1 -1
  41. package/dist/components/NSBoxDuration.module.css +4 -4
  42. package/dist/components/NSBoxDynamic.d.ts +1 -1
  43. package/dist/components/NSBoxDynamics.d.ts +1 -1
  44. package/dist/components/NSBoxEmail.d.ts +1 -1
  45. package/dist/components/NSBoxEntity.d.ts +1 -1
  46. package/dist/components/NSBoxEntity.js.map +1 -1
  47. package/dist/components/NSBoxEnum.d.ts +1 -1
  48. package/dist/components/NSBoxFile.d.ts +1 -1
  49. package/dist/components/NSBoxFile.module.css +10 -10
  50. package/dist/components/NSBoxFilePath.d.ts +1 -1
  51. package/dist/components/NSBoxFont.d.ts +1 -1
  52. package/dist/components/NSBoxIPV4.d.ts +1 -1
  53. package/dist/components/NSBoxIPV4Range.d.ts +1 -1
  54. package/dist/components/NSBoxIPV6.d.ts +1 -1
  55. package/dist/components/NSBoxIPV6Range.d.ts +1 -1
  56. package/dist/components/NSBoxInteger.d.ts +1 -1
  57. package/dist/components/NSBoxInteger.module.css +16 -16
  58. package/dist/components/NSBoxMoney.d.ts +1 -1
  59. package/dist/components/NSBoxOptions.d.ts +1 -1
  60. package/dist/components/NSBoxOptions.module.css +53 -53
  61. package/dist/components/NSBoxPhone.d.ts +1 -1
  62. package/dist/components/NSBoxPhone.module.css +35 -35
  63. package/dist/components/NSBoxRadio.d.ts +1 -1
  64. package/dist/components/NSBoxRadio.module.css +33 -33
  65. package/dist/components/NSBoxSchemaBase.d.ts +1 -1
  66. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  67. package/dist/components/NSBoxSchemaVariable.d.ts +1 -1
  68. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  69. package/dist/components/NSBoxSearch.d.ts +1 -1
  70. package/dist/components/NSBoxSensitive.d.ts +1 -1
  71. package/dist/components/NSBoxString.d.ts +1 -1
  72. package/dist/components/NSBoxTextArea.d.ts +1 -1
  73. package/dist/components/NSBoxTextArea.module.css +12 -12
  74. package/dist/components/NSBoxTime.d.ts +1 -1
  75. package/dist/components/NSBoxTime.module.css +4 -4
  76. package/dist/components/NSBoxTimeRange.d.ts +1 -1
  77. package/dist/components/NSBoxTimeZone.d.ts +1 -1
  78. package/dist/components/NSBoxURL.d.ts +1 -1
  79. package/dist/components/NSBoxVersion.d.ts +1 -1
  80. package/dist/components/NSButton.module.css +57 -57
  81. package/dist/components/NSButtonBlue.d.ts +1 -1
  82. package/dist/components/NSButtonBlue.module.css +4 -4
  83. package/dist/components/NSButtonGreen.d.ts +1 -1
  84. package/dist/components/NSButtonGreen.module.css +4 -4
  85. package/dist/components/NSButtonRed.d.ts +1 -1
  86. package/dist/components/NSButtonRed.module.css +4 -4
  87. package/dist/components/NSCard.d.ts +1 -1
  88. package/dist/components/NSCard.module.css +113 -113
  89. package/dist/components/NSCardScreenshot.d.ts +1 -1
  90. package/dist/components/NSCardScreenshot.module.css +41 -41
  91. package/dist/components/NSChartBar.d.ts +1 -1
  92. package/dist/components/NSChartDoughnut.d.ts +1 -1
  93. package/dist/components/NSChartLine.d.ts +1 -1
  94. package/dist/components/NSChartPie.d.ts +1 -1
  95. package/dist/components/NSChartRange.d.ts +1 -1
  96. package/dist/components/NSColumn.d.ts +1 -1
  97. package/dist/components/NSColumn.module.css +16 -16
  98. package/dist/components/NSCopy.d.ts +1 -1
  99. package/dist/components/NSCopyBox.d.ts +1 -1
  100. package/dist/components/NSCopyBox.module.css +39 -39
  101. package/dist/components/NSDialog.d.ts +1 -1
  102. package/dist/components/NSDialog.module.css +105 -105
  103. package/dist/components/NSDialogBox.d.ts +1 -1
  104. package/dist/components/NSDialogBoxDate.d.ts +1 -1
  105. package/dist/components/NSDialogBoxDateTime.d.ts +1 -1
  106. package/dist/components/NSDialogBoxPhone.d.ts +1 -1
  107. package/dist/components/NSDialogBoxString.d.ts +1 -1
  108. package/dist/components/NSDialogDelete.d.ts +1 -1
  109. package/dist/components/NSDialogInfo.d.ts +1 -1
  110. package/dist/components/NSDialogPageSelection.d.ts +2 -2
  111. package/dist/components/NSDialogPageSelection.module.css +103 -103
  112. package/dist/components/NSDownTimer.d.ts +1 -1
  113. package/dist/components/NSDownTimer.module.css +55 -55
  114. package/dist/components/NSDownload.d.ts +1 -1
  115. package/dist/components/NSDownload.module.css +46 -46
  116. package/dist/components/NSElectronicCard.d.ts +1 -1
  117. package/dist/components/NSElectronicCard.module.css +60 -60
  118. package/dist/components/NSEntityCardBackground.d.ts +1 -1
  119. package/dist/components/NSEntityCardBackground.module.css +27 -27
  120. package/dist/components/NSFilterBox.d.ts +2 -2
  121. package/dist/components/NSFilterBox.module.css +27 -27
  122. package/dist/components/NSFilterBoxItems.d.ts +1 -1
  123. package/dist/components/NSFilterBoxItems.module.css +15 -15
  124. package/dist/components/NSFilterItem.d.ts +1 -1
  125. package/dist/components/NSFilterItem.module.css +24 -24
  126. package/dist/components/NSFooter.d.ts +1 -1
  127. package/dist/components/NSFooter.module.css +140 -140
  128. package/dist/components/NSGauge.d.ts +1 -1
  129. package/dist/components/NSGauge.module.css +67 -67
  130. package/dist/components/NSGaugeDate.d.ts +1 -1
  131. package/dist/components/NSGaugeDate.module.css +57 -57
  132. package/dist/components/NSGaugeNumber.d.ts +1 -1
  133. package/dist/components/NSGaugeNumber.module.css +66 -66
  134. package/dist/components/NSHeader.d.ts +1 -1
  135. package/dist/components/NSHeader.module.css +316 -316
  136. package/dist/components/NSHeaderScreenshot.d.ts +1 -1
  137. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  138. package/dist/components/NSID.d.ts +1 -1
  139. package/dist/components/NSInfo.d.ts +1 -1
  140. package/dist/components/NSLabel.d.ts +1 -1
  141. package/dist/components/NSLabel.module.css +25 -25
  142. package/dist/components/NSLabelErrorNotifier.d.ts +1 -1
  143. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  144. package/dist/components/NSLabelSensitive.d.ts +1 -1
  145. package/dist/components/NSLabelSensitive.module.css +9 -9
  146. package/dist/components/NSLayout.d.ts +1 -1
  147. package/dist/components/NSLayout.module.css +22 -22
  148. package/dist/components/NSLine.d.ts +1 -1
  149. package/dist/components/NSLine.module.css +15 -15
  150. package/dist/components/NSLineText.d.ts +1 -1
  151. package/dist/components/NSLineText.module.css +38 -38
  152. package/dist/components/NSLink.d.ts +1 -1
  153. package/dist/components/NSLink.module.css +36 -36
  154. package/dist/components/NSLinkBlue.d.ts +1 -1
  155. package/dist/components/NSLinkGreen.d.ts +1 -1
  156. package/dist/components/NSLinkRed.d.ts +1 -1
  157. package/dist/components/NSListGrouped.d.ts +1 -1
  158. package/dist/components/NSListGrouped.module.css +69 -69
  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 +1 -1
  203. package/dist/components/NSTable.js +23 -23
  204. package/dist/components/NSTable.module.css +368 -372
  205. package/dist/components/NSTableChart.d.ts +1 -1
  206. package/dist/components/NSTableChart.module.css +119 -119
  207. package/dist/components/NSTag.d.ts +1 -1
  208. package/dist/components/NSTile.d.ts +1 -1
  209. package/dist/components/NSTile.module.css +76 -76
  210. package/dist/components/NSTimelineMonthly.d.ts +1 -1
  211. package/dist/components/NSTimelineMonthly.module.css +71 -71
  212. package/dist/components/NSTitle.d.ts +1 -1
  213. package/dist/components/NSTitle.module.css +15 -15
  214. package/dist/pages/NSImplementing.d.ts +1 -1
  215. package/dist/pages/NSImplementing.module.css +35 -35
  216. package/dist/pages/NSNotFoundPage.d.ts +1 -1
  217. package/dist/pages/NSNotFoundPage.module.css +18 -18
  218. package/dist/pages/NSUpdating.d.ts +1 -1
  219. package/dist/pages/NSUpdating.module.css +35 -35
  220. package/package.json +86 -86
  221. package/public/index.html +38 -38
  222. package/src/App.css +33 -33
  223. package/src/App.tsx +167 -167
  224. package/src/BrowserDetector.ts +109 -109
  225. package/src/Color.tsx +10 -10
  226. package/src/CopyToClipboard.ts +6 -6
  227. package/src/EncryptionOperation.ts +98 -98
  228. package/src/KeyOperation.ts +109 -109
  229. package/src/LinkOperation.ts +101 -101
  230. package/src/NSBoxBuilder.tsx +922 -922
  231. package/src/ProductCacheService.ts +15 -15
  232. package/src/Validator.ts +199 -199
  233. package/src/components/INSBox.tsx +7 -7
  234. package/src/components/NSBanner.module.css +47 -47
  235. package/src/components/NSBanner.tsx +80 -80
  236. package/src/components/NSBarAction.module.css +91 -91
  237. package/src/components/NSBarAction.tsx +95 -95
  238. package/src/components/NSBarAlert.module.css +79 -79
  239. package/src/components/NSBarAlert.tsx +35 -35
  240. package/src/components/NSBarNotification.module.css +34 -34
  241. package/src/components/NSBarNotification.tsx +89 -89
  242. package/src/components/NSBarTitle.module.css +9 -9
  243. package/src/components/NSBarTitle.tsx +23 -23
  244. package/src/components/NSBox.module.css +87 -87
  245. package/src/components/NSBox.tsx +19 -19
  246. package/src/components/NSBoxBaseCombo.module.css +22 -6
  247. package/src/components/NSBoxBaseCombo.tsx +487 -488
  248. package/src/components/NSBoxBaseLayout.tsx +163 -163
  249. package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
  250. package/src/components/NSBoxBoolean.module.css +73 -73
  251. package/src/components/NSBoxBoolean.tsx +152 -152
  252. package/src/components/NSBoxBooleans.tsx +181 -181
  253. package/src/components/NSBoxColor.tsx +107 -107
  254. package/src/components/NSBoxCombo.tsx +95 -95
  255. package/src/components/NSBoxDate.module.css +4 -4
  256. package/src/components/NSBoxDate.tsx +144 -144
  257. package/src/components/NSBoxDateRange.tsx +88 -88
  258. package/src/components/NSBoxDateRangeBase.module.css +73 -73
  259. package/src/components/NSBoxDateRangeBase.tsx +236 -236
  260. package/src/components/NSBoxDateTime.module.css +4 -4
  261. package/src/components/NSBoxDateTime.tsx +136 -136
  262. package/src/components/NSBoxDateTimeRange.tsx +66 -66
  263. package/src/components/NSBoxDouble.tsx +110 -110
  264. package/src/components/NSBoxDuration.module.css +4 -4
  265. package/src/components/NSBoxDuration.tsx +107 -107
  266. package/src/components/NSBoxDynamic.tsx +73 -73
  267. package/src/components/NSBoxDynamics.tsx +68 -68
  268. package/src/components/NSBoxEmail.tsx +117 -117
  269. package/src/components/NSBoxEntity.tsx +180 -181
  270. package/src/components/NSBoxEnum.tsx +113 -113
  271. package/src/components/NSBoxFile.module.css +10 -10
  272. package/src/components/NSBoxFile.tsx +106 -106
  273. package/src/components/NSBoxFilePath.tsx +106 -106
  274. package/src/components/NSBoxFont.tsx +107 -107
  275. package/src/components/NSBoxIPV4.tsx +107 -107
  276. package/src/components/NSBoxIPV4Range.tsx +107 -107
  277. package/src/components/NSBoxIPV6.tsx +104 -104
  278. package/src/components/NSBoxIPV6Range.tsx +107 -107
  279. package/src/components/NSBoxInteger.module.css +16 -16
  280. package/src/components/NSBoxInteger.tsx +126 -126
  281. package/src/components/NSBoxMoney.tsx +115 -115
  282. package/src/components/NSBoxOptions.module.css +53 -53
  283. package/src/components/NSBoxOptions.tsx +182 -182
  284. package/src/components/NSBoxPhone.module.css +35 -35
  285. package/src/components/NSBoxPhone.tsx +120 -120
  286. package/src/components/NSBoxRadio.module.css +33 -33
  287. package/src/components/NSBoxRadio.tsx +104 -104
  288. package/src/components/NSBoxSchemaBase.module.css +17 -17
  289. package/src/components/NSBoxSchemaBase.tsx +562 -562
  290. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  291. package/src/components/NSBoxSchemaVariable.tsx +263 -263
  292. package/src/components/NSBoxSearch.tsx +112 -112
  293. package/src/components/NSBoxSensitive.tsx +133 -133
  294. package/src/components/NSBoxString.tsx +106 -106
  295. package/src/components/NSBoxTextArea.module.css +12 -12
  296. package/src/components/NSBoxTextArea.tsx +136 -136
  297. package/src/components/NSBoxTime.module.css +4 -4
  298. package/src/components/NSBoxTime.tsx +106 -106
  299. package/src/components/NSBoxTimeRange.tsx +220 -220
  300. package/src/components/NSBoxTimeZone.tsx +122 -122
  301. package/src/components/NSBoxURL.tsx +117 -117
  302. package/src/components/NSBoxVersion.tsx +107 -107
  303. package/src/components/NSButton.module.css +57 -57
  304. package/src/components/NSButton.tsx +74 -74
  305. package/src/components/NSButtonBlue.module.css +4 -4
  306. package/src/components/NSButtonBlue.tsx +29 -29
  307. package/src/components/NSButtonGreen.module.css +4 -4
  308. package/src/components/NSButtonGreen.tsx +29 -29
  309. package/src/components/NSButtonRed.module.css +4 -4
  310. package/src/components/NSButtonRed.tsx +29 -29
  311. package/src/components/NSCard.module.css +113 -113
  312. package/src/components/NSCard.tsx +67 -67
  313. package/src/components/NSCardScreenshot.module.css +41 -41
  314. package/src/components/NSCardScreenshot.tsx +31 -31
  315. package/src/components/NSChartBar.tsx +134 -134
  316. package/src/components/NSChartDoughnut.tsx +114 -114
  317. package/src/components/NSChartLine.tsx +110 -110
  318. package/src/components/NSChartPie.tsx +105 -105
  319. package/src/components/NSChartRange.tsx +14 -14
  320. package/src/components/NSColumn.module.css +16 -16
  321. package/src/components/NSColumn.tsx +24 -24
  322. package/src/components/NSCopy.tsx +95 -95
  323. package/src/components/NSCopyBox.module.css +39 -39
  324. package/src/components/NSCopyBox.tsx +53 -53
  325. package/src/components/NSDialog.module.css +105 -105
  326. package/src/components/NSDialog.tsx +72 -72
  327. package/src/components/NSDialogBox.tsx +38 -38
  328. package/src/components/NSDialogBoxDate.tsx +28 -28
  329. package/src/components/NSDialogBoxDateTime.tsx +28 -28
  330. package/src/components/NSDialogBoxPhone.tsx +28 -28
  331. package/src/components/NSDialogBoxString.tsx +28 -28
  332. package/src/components/NSDialogDelete.tsx +36 -36
  333. package/src/components/NSDialogInfo.tsx +49 -49
  334. package/src/components/NSDialogPageSelection.module.css +103 -103
  335. package/src/components/NSDialogPageSelection.tsx +233 -233
  336. package/src/components/NSDownTimer.module.css +55 -55
  337. package/src/components/NSDownTimer.tsx +91 -91
  338. package/src/components/NSDownload.module.css +46 -46
  339. package/src/components/NSDownload.tsx +69 -69
  340. package/src/components/NSElectronicCard.module.css +60 -60
  341. package/src/components/NSElectronicCard.tsx +46 -46
  342. package/src/components/NSEntityCardBackground.module.css +27 -27
  343. package/src/components/NSEntityCardBackground.tsx +36 -36
  344. package/src/components/NSFilterBox.module.css +27 -27
  345. package/src/components/NSFilterBox.tsx +477 -477
  346. package/src/components/NSFilterBoxItems.module.css +15 -15
  347. package/src/components/NSFilterBoxItems.tsx +52 -52
  348. package/src/components/NSFilterItem.module.css +24 -24
  349. package/src/components/NSFilterItem.tsx +27 -27
  350. package/src/components/NSFooter.module.css +140 -140
  351. package/src/components/NSFooter.tsx +321 -321
  352. package/src/components/NSGauge.module.css +67 -67
  353. package/src/components/NSGauge.tsx +52 -52
  354. package/src/components/NSGaugeDate.module.css +57 -57
  355. package/src/components/NSGaugeDate.tsx +125 -125
  356. package/src/components/NSGaugeNumber.module.css +66 -66
  357. package/src/components/NSGaugeNumber.tsx +93 -93
  358. package/src/components/NSHeader.module.css +316 -316
  359. package/src/components/NSHeader.tsx +337 -337
  360. package/src/components/NSHeaderScreenshot.module.css +35 -35
  361. package/src/components/NSHeaderScreenshot.tsx +39 -39
  362. package/src/components/NSID.tsx +190 -190
  363. package/src/components/NSInfo.tsx +50 -50
  364. package/src/components/NSLabel.module.css +25 -25
  365. package/src/components/NSLabel.tsx +47 -47
  366. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  367. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  368. package/src/components/NSLabelSensitive.module.css +9 -9
  369. package/src/components/NSLabelSensitive.tsx +101 -101
  370. package/src/components/NSLayout.module.css +22 -22
  371. package/src/components/NSLayout.tsx +143 -143
  372. package/src/components/NSLine.module.css +15 -15
  373. package/src/components/NSLine.tsx +13 -13
  374. package/src/components/NSLineText.module.css +38 -38
  375. package/src/components/NSLineText.tsx +17 -17
  376. package/src/components/NSLink.module.css +36 -36
  377. package/src/components/NSLink.tsx +26 -26
  378. package/src/components/NSLinkBlue.tsx +22 -22
  379. package/src/components/NSLinkGreen.tsx +13 -13
  380. package/src/components/NSLinkRed.tsx +13 -13
  381. package/src/components/NSListGrouped.module.css +69 -69
  382. package/src/components/NSListGrouped.tsx +106 -106
  383. package/src/components/NSListProduct.tsx +78 -78
  384. package/src/components/NSLoading.module.css +10 -10
  385. package/src/components/NSLoading.tsx +43 -43
  386. package/src/components/NSMegaMenu.module.css +133 -133
  387. package/src/components/NSMegaMenu.tsx +188 -188
  388. package/src/components/NSMenuAction.module.css +88 -88
  389. package/src/components/NSMenuAction.tsx +106 -106
  390. package/src/components/NSMenuButton.module.css +44 -44
  391. package/src/components/NSMenuButton.tsx +198 -198
  392. package/src/components/NSNoData.module.css +11 -11
  393. package/src/components/NSNoData.tsx +24 -24
  394. package/src/components/NSPagination.module.css +87 -87
  395. package/src/components/NSPagination.tsx +183 -183
  396. package/src/components/NSPanel.module.css +28 -28
  397. package/src/components/NSPanel.tsx +26 -26
  398. package/src/components/NSPanelAccordion.module.css +4 -4
  399. package/src/components/NSPanelAccordion.tsx +51 -51
  400. package/src/components/NSProductSearch.module.css +73 -73
  401. package/src/components/NSProductSearch.tsx +193 -193
  402. package/src/components/NSProgressBar.module.css +38 -38
  403. package/src/components/NSProgressBar.tsx +29 -29
  404. package/src/components/NSRange.module.css +66 -66
  405. package/src/components/NSRange.tsx +83 -83
  406. package/src/components/NSReorderDialog.module.css +49 -49
  407. package/src/components/NSReorderDialog.tsx +184 -184
  408. package/src/components/NSRepeater.tsx +328 -328
  409. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +94 -94
  410. package/src/components/NSRepeaterNSTag.tsx +86 -86
  411. package/src/components/NSRow.module.css +17 -17
  412. package/src/components/NSRow.tsx +24 -24
  413. package/src/components/NSSection.module.css +4 -4
  414. package/src/components/NSSection.tsx +26 -26
  415. package/src/components/NSSectionCards.module.css +38 -38
  416. package/src/components/NSSectionCards.tsx +51 -51
  417. package/src/components/NSSectionTiles.module.css +10 -10
  418. package/src/components/NSSectionTiles.tsx +25 -25
  419. package/src/components/NSSectionTitle.tsx +19 -19
  420. package/src/components/NSSortDialog.tsx +124 -124
  421. package/src/components/NSSpace.tsx +28 -28
  422. package/src/components/NSSplitter.module.css +59 -59
  423. package/src/components/NSSplitter.tsx +211 -211
  424. package/src/components/NSTabPage.module.css +59 -59
  425. package/src/components/NSTabPage.tsx +122 -122
  426. package/src/components/NSTable.module.css +368 -372
  427. package/src/components/NSTable.tsx +1443 -1443
  428. package/src/components/NSTableChart.module.css +119 -119
  429. package/src/components/NSTableChart.tsx +732 -732
  430. package/src/components/NSTag.tsx +74 -74
  431. package/src/components/NSTile.module.css +76 -76
  432. package/src/components/NSTile.tsx +27 -27
  433. package/src/components/NSTimelineMonthly.module.css +71 -71
  434. package/src/components/NSTimelineMonthly.tsx +44 -44
  435. package/src/components/NSTitle.module.css +15 -15
  436. package/src/components/NSTitle.tsx +19 -19
  437. package/src/css.d.ts +13 -13
  438. package/src/formatter/BackColorFormatter.tsx +23 -23
  439. package/src/formatter/BaseColumnFormatter.ts +86 -86
  440. package/src/formatter/BaseURLImageFormatter.tsx +37 -37
  441. package/src/formatter/BooleanFormatter.ts +26 -26
  442. package/src/formatter/BytesFormatter.tsx +19 -19
  443. package/src/formatter/DateFormatter.ts +26 -26
  444. package/src/formatter/DateTimeFormatter.ts +26 -26
  445. package/src/formatter/DurationFormatter.ts +17 -17
  446. package/src/formatter/EmailFormatter.tsx +25 -25
  447. package/src/formatter/EnumFormatter.ts +17 -17
  448. package/src/formatter/FloatFormatter.ts +27 -27
  449. package/src/formatter/ForeColorFormatter.tsx +24 -24
  450. package/src/formatter/IDFormatter.tsx +57 -57
  451. package/src/formatter/IPFormatter.ts +39 -39
  452. package/src/formatter/IntegerFormatter.ts +27 -27
  453. package/src/formatter/JsonFormatter.tsx +75 -75
  454. package/src/formatter/MoneyFormatter.ts +39 -39
  455. package/src/formatter/PercentFormatter.tsx +43 -43
  456. package/src/formatter/PhoneFormatter.tsx +25 -25
  457. package/src/formatter/SensitiveFormatter.tsx +40 -40
  458. package/src/formatter/StringFormatter.tsx +49 -49
  459. package/src/formatter/TimeFormatter.ts +25 -25
  460. package/src/formatter/URLFormatter.tsx +28 -28
  461. package/src/formatter/UnknowFormatter.ts +22 -22
  462. package/src/index.tsx +7 -7
  463. package/src/main.ts +263 -263
  464. package/src/pages/NSImplementing.module.css +35 -35
  465. package/src/pages/NSImplementing.tsx +32 -32
  466. package/src/pages/NSNotFoundPage.module.css +18 -18
  467. package/src/pages/NSNotFoundPage.tsx +14 -14
  468. package/src/pages/NSUpdating.module.css +35 -35
  469. package/src/pages/NSUpdating.tsx +32 -32
  470. package/src/props/IBackgroundProps.ts +5 -5
  471. package/src/props/IBaseComponentProps.ts +8 -8
  472. package/src/props/IHeaderIconProps.ts +10 -10
  473. package/src/props/IHeaderLeftProps.ts +6 -6
  474. package/src/props/IHeaderRightProps.ts +8 -8
  475. package/src/props/IImageProps.ts +4 -4
  476. package/src/props/ILinkProps.ts +4 -4
  477. package/src/props/IValidationNumberProps.ts +4 -4
  478. package/src/props/IValidationPrecisionProps.ts +3 -3
  479. package/src/props/IValidationProps.ts +9 -9
  480. package/src/props/IValidationRegexProps.ts +4 -4
  481. package/src/props/IValidationStringProps.ts +4 -4
  482. package/src/routing/NSNotifier.ts +114 -114
  483. package/src/routing/NSRouterMaker.tsx +28 -28
  484. package/tsconfig.json +43 -43
  485. package/dist/components/NSListMenu.d.ts +0 -9
  486. package/dist/components/NSListMenu.js +0 -135
  487. package/dist/components/NSListMenu.js.map +0 -1
package/src/App.tsx CHANGED
@@ -1,168 +1,168 @@
1
- import 'bootstrap/dist/css/bootstrap.min.css';
2
- import { Component, createRef } from 'react';
3
- import './App.css';
4
- import { NSLayout } from './components/NSLayout';
5
- import { PercentFormatter } from './formatter/PercentFormatter';
6
- import { DateTimeFormatter, EmailFormatter, IntegerFormatter, KeyOperation, NSButtonBlue, NSTable, PhoneFormatter, StringFormatter } from './main';
7
-
8
- type TestRow = {
9
- id: string,
10
- name: string,
11
- city: string,
12
- department: string,
13
- age: number,
14
- salary: number,
15
- score: number,
16
- experience: number,
17
- percentage: number,
18
- phone: string,
19
- email: string,
20
- created_at: string,
21
- };
22
-
23
- const FIRST_NAMES = ["Amin", "Negar", "Milad", "Sara", "Reza", "Maryam", "Ali", "Fatemeh", "Hossein", "Zahra", "Mohammad", "Narges", "Saeed", "Leila", "Hamed"];
24
- const LAST_NAMES = ["Pasban", "Sharifpour", "Nazirzadeh", "Ahmadi", "Karimi", "Hosseini", "Rezaei", "Moradi", "Jafari", "Bagheri", "Salehi", "Ghasemi", "Akbari", "Mousavi", "Tavakoli"];
25
- const CITIES = ["Tehran", "Shiraz", "Tabriz", "Isfahan", "Mashhad"];
26
- const DEPARTMENTS = ["Engineering", "Sales", "Marketing", "Support", "Finance"];
27
-
28
- const ALL_ROWS: TestRow[] = Array.from({ length: 45 }, (_, i) =>
29
- {
30
- const n = i + 1;
31
- return {
32
- id: n.toString(),
33
- name: `${FIRST_NAMES[i % FIRST_NAMES.length]} ${LAST_NAMES[(i * 7) % LAST_NAMES.length]}`,
34
- city: CITIES[i % CITIES.length],
35
- department: DEPARTMENTS[(i * 3) % DEPARTMENTS.length],
36
- age: 22 + (i * 5) % 35,
37
- salary: 30000 + (i * 1700) % 90000,
38
- score: 40 + (i * 11) % 60,
39
- experience: (i * 2) % 20,
40
- percentage: 10 + (i * 13) % 80,
41
- phone: "0912" + (1000000 + i).toString(),
42
- email: `${FIRST_NAMES[i % FIRST_NAMES.length].toLowerCase()}.${n}@example.com`,
43
- created_at: new Date(Date.now() - i * 86400000 - i * 3600000).toISOString()
44
- };
45
- });
46
-
47
- interface AppProps { }
48
- interface AppState { }
49
-
50
- export class App extends Component<AppProps, AppState>
51
- {
52
- NSTableRef = createRef<NSTable<TestRow>>();
53
-
54
- constructor(props: AppProps)
55
- {
56
- super(props);
57
- this.state = {}
58
- };
59
-
60
- override componentDidMount(): void
61
- {
62
- KeyOperation.start();
63
- }
64
-
65
- override componentWillUnmount(): void
66
- {
67
- KeyOperation.stop();
68
- }
69
-
70
- override render()
71
- {
72
- return (
73
- <NSLayout
74
- header={{
75
- right: {
76
- icons: [
77
- {
78
- onClicked: () => { },
79
- src: "https://static.namirasoft.com/image/namirasoft/access/logo/base.png",
80
- count: 2
81
- }
82
- ],
83
- },
84
- mega_menu: true,
85
- onCollapse: () => { },
86
- }}
87
- isLoggedIn={() => true}
88
- logo='https://static.namirasoft.com/image/namirasoft/access/logo/base.png'
89
- background={{ image: "https://static.namirasoft.com/image/namirasoft/access/background/base.svg" }}
90
- notifications={[]}
91
- notifier={{} as any}
92
- scope=''
93
- >
94
- <NSTable<TestRow>
95
- ref={this.NSTableRef}
96
- name={"test_table"}
97
- checkbox
98
- columns={[
99
- {
100
- table: { name: "test_table", text: "Test Table" },
101
- index: 0, type: "String", name: "name", text: "Name", formatter: new StringFormatter()
102
- },
103
- {
104
- table: { name: "test_table", text: "Test Table" },
105
- index: 1, type: "String", name: "city", text: "City", formatter: new StringFormatter()
106
- },
107
- {
108
- table: { name: "test_table", text: "Test Table" },
109
- index: 2, type: "String", name: "department", text: "Department", formatter: new StringFormatter()
110
- },
111
- {
112
- table: { name: "test_table", text: "Test Table" },
113
- index: 3, type: "Number", name: "age", text: "Age", formatter: new IntegerFormatter()
114
- },
115
- {
116
- table: { name: "test_table", text: "Test Table" },
117
- index: 4, type: "Number", name: "salary", text: "Salary", formatter: new IntegerFormatter()
118
- },
119
- {
120
- table: { name: "test_table", text: "Test Table" },
121
- index: 5, type: "Number", name: "score", text: "Score", formatter: new IntegerFormatter()
122
- },
123
- {
124
- table: { name: "test_table", text: "Test Table" },
125
- index: 6, type: "Number", name: "experience", text: "Experience", formatter: new IntegerFormatter()
126
- },
127
- {
128
- table: { name: "test_table", text: "Test Table" },
129
- index: 7, type: "Number", name: "percentage", text: "Percentage", formatter: new PercentFormatter()
130
- },
131
- {
132
- table: { name: "test_table", text: "Test Table" },
133
- index: 8, type: "String", name: "phone", text: "Phone", formatter: new PhoneFormatter()
134
- },
135
- {
136
- table: { name: "test_table", text: "Test Table" },
137
- index: 9, type: "String", name: "email", text: "Email", formatter: new EmailFormatter()
138
- },
139
- {
140
- table: { name: "test_table", text: "Test Table" },
141
- index: 10, type: "DateTime", name: "created_at", text: "Created At", formatter: new DateTimeFormatter()
142
- },
143
- ]}
144
- getRowKey={(item) => item.value.id}
145
- getRows={async (page, size) =>
146
- {
147
- const start = (page - 1) * size;
148
- return {
149
- count: ALL_ROWS.length,
150
- rows: ALL_ROWS.slice(start, start + size)
151
- };
152
- }}
153
- getRowCheckboxDisabled={row => row.value.percentage < 20}
154
- />
155
- <NSButtonBlue
156
- title={"Log"}
157
- onClick={{
158
- showLoading: false,
159
- action: () =>
160
- {
161
- console.log(KeyOperation.isControlPressed());
162
- }
163
- }}
164
- />
165
- </NSLayout>
166
- );
167
- }
1
+ import 'bootstrap/dist/css/bootstrap.min.css';
2
+ import { Component, createRef } from 'react';
3
+ import './App.css';
4
+ import { NSLayout } from './components/NSLayout';
5
+ import { PercentFormatter } from './formatter/PercentFormatter';
6
+ import { DateTimeFormatter, EmailFormatter, IntegerFormatter, KeyOperation, NSButtonBlue, NSTable, PhoneFormatter, StringFormatter } from './main';
7
+
8
+ type TestRow = {
9
+ id: string,
10
+ name: string,
11
+ city: string,
12
+ department: string,
13
+ age: number,
14
+ salary: number,
15
+ score: number,
16
+ experience: number,
17
+ percentage: number,
18
+ phone: string,
19
+ email: string,
20
+ created_at: string,
21
+ };
22
+
23
+ const FIRST_NAMES = ["Amin", "Negar", "Milad", "Sara", "Reza", "Maryam", "Ali", "Fatemeh", "Hossein", "Zahra", "Mohammad", "Narges", "Saeed", "Leila", "Hamed"];
24
+ const LAST_NAMES = ["Pasban", "Sharifpour", "Nazirzadeh", "Ahmadi", "Karimi", "Hosseini", "Rezaei", "Moradi", "Jafari", "Bagheri", "Salehi", "Ghasemi", "Akbari", "Mousavi", "Tavakoli"];
25
+ const CITIES = ["Tehran", "Shiraz", "Tabriz", "Isfahan", "Mashhad"];
26
+ const DEPARTMENTS = ["Engineering", "Sales", "Marketing", "Support", "Finance"];
27
+
28
+ const ALL_ROWS: TestRow[] = Array.from({ length: 45 }, (_, i) =>
29
+ {
30
+ const n = i + 1;
31
+ return {
32
+ id: n.toString(),
33
+ name: `${FIRST_NAMES[i % FIRST_NAMES.length]} ${LAST_NAMES[(i * 7) % LAST_NAMES.length]}`,
34
+ city: CITIES[i % CITIES.length],
35
+ department: DEPARTMENTS[(i * 3) % DEPARTMENTS.length],
36
+ age: 22 + (i * 5) % 35,
37
+ salary: 30000 + (i * 1700) % 90000,
38
+ score: 40 + (i * 11) % 60,
39
+ experience: (i * 2) % 20,
40
+ percentage: 10 + (i * 13) % 80,
41
+ phone: "0912" + (1000000 + i).toString(),
42
+ email: `${FIRST_NAMES[i % FIRST_NAMES.length].toLowerCase()}.${n}@example.com`,
43
+ created_at: new Date(Date.now() - i * 86400000 - i * 3600000).toISOString()
44
+ };
45
+ });
46
+
47
+ interface AppProps { }
48
+ interface AppState { }
49
+
50
+ export class App extends Component<AppProps, AppState>
51
+ {
52
+ NSTableRef = createRef<NSTable<TestRow>>();
53
+
54
+ constructor(props: AppProps)
55
+ {
56
+ super(props);
57
+ this.state = {}
58
+ };
59
+
60
+ override componentDidMount(): void
61
+ {
62
+ KeyOperation.start();
63
+ }
64
+
65
+ override componentWillUnmount(): void
66
+ {
67
+ KeyOperation.stop();
68
+ }
69
+
70
+ override render()
71
+ {
72
+ return (
73
+ <NSLayout
74
+ header={{
75
+ right: {
76
+ icons: [
77
+ {
78
+ onClicked: () => { },
79
+ src: "https://static.namirasoft.com/image/namirasoft/access/logo/base.png",
80
+ count: 2
81
+ }
82
+ ],
83
+ },
84
+ mega_menu: true,
85
+ onCollapse: () => { },
86
+ }}
87
+ isLoggedIn={() => true}
88
+ logo='https://static.namirasoft.com/image/namirasoft/access/logo/base.png'
89
+ background={{ image: "https://static.namirasoft.com/image/namirasoft/access/background/base.svg" }}
90
+ notifications={[]}
91
+ notifier={{} as any}
92
+ scope=''
93
+ >
94
+ <NSTable<TestRow>
95
+ ref={this.NSTableRef}
96
+ name={"test_table"}
97
+ checkbox
98
+ columns={[
99
+ {
100
+ table: { name: "test_table", text: "Test Table" },
101
+ index: 0, type: "String", name: "name", text: "Name", formatter: new StringFormatter()
102
+ },
103
+ {
104
+ table: { name: "test_table", text: "Test Table" },
105
+ index: 1, type: "String", name: "city", text: "City", formatter: new StringFormatter()
106
+ },
107
+ {
108
+ table: { name: "test_table", text: "Test Table" },
109
+ index: 2, type: "String", name: "department", text: "Department", formatter: new StringFormatter()
110
+ },
111
+ {
112
+ table: { name: "test_table", text: "Test Table" },
113
+ index: 3, type: "Number", name: "age", text: "Age", formatter: new IntegerFormatter()
114
+ },
115
+ {
116
+ table: { name: "test_table", text: "Test Table" },
117
+ index: 4, type: "Number", name: "salary", text: "Salary", formatter: new IntegerFormatter()
118
+ },
119
+ {
120
+ table: { name: "test_table", text: "Test Table" },
121
+ index: 5, type: "Number", name: "score", text: "Score", formatter: new IntegerFormatter()
122
+ },
123
+ {
124
+ table: { name: "test_table", text: "Test Table" },
125
+ index: 6, type: "Number", name: "experience", text: "Experience", formatter: new IntegerFormatter()
126
+ },
127
+ {
128
+ table: { name: "test_table", text: "Test Table" },
129
+ index: 7, type: "Number", name: "percentage", text: "Percentage", formatter: new PercentFormatter()
130
+ },
131
+ {
132
+ table: { name: "test_table", text: "Test Table" },
133
+ index: 8, type: "String", name: "phone", text: "Phone", formatter: new PhoneFormatter()
134
+ },
135
+ {
136
+ table: { name: "test_table", text: "Test Table" },
137
+ index: 9, type: "String", name: "email", text: "Email", formatter: new EmailFormatter()
138
+ },
139
+ {
140
+ table: { name: "test_table", text: "Test Table" },
141
+ index: 10, type: "DateTime", name: "created_at", text: "Created At", formatter: new DateTimeFormatter()
142
+ },
143
+ ]}
144
+ getRowKey={(item) => item.value.id}
145
+ getRows={async (page, size) =>
146
+ {
147
+ const start = (page - 1) * size;
148
+ return {
149
+ count: ALL_ROWS.length,
150
+ rows: ALL_ROWS.slice(start, start + size)
151
+ };
152
+ }}
153
+ getRowCheckboxDisabled={row => row.value.percentage < 20}
154
+ />
155
+ <NSButtonBlue
156
+ title={"Log"}
157
+ onClick={{
158
+ showLoading: false,
159
+ action: () =>
160
+ {
161
+ console.log(KeyOperation.isControlPressed());
162
+ }
163
+ }}
164
+ />
165
+ </NSLayout>
166
+ );
167
+ }
168
168
  }
@@ -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
  };