namirasoft-site-react 1.5.27 → 1.5.28

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 (360) 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.js +3 -25
  8. package/dist/App.js.map +1 -1
  9. package/dist/components/NSBanner.module.css +47 -47
  10. package/dist/components/NSBarAction.module.css +91 -91
  11. package/dist/components/NSBarAlert.module.css +79 -79
  12. package/dist/components/NSBarNotification.module.css +34 -34
  13. package/dist/components/NSBarTitle.module.css +9 -9
  14. package/dist/components/NSBox.module.css +87 -87
  15. package/dist/components/NSBoxBaseCombo.module.css +24 -24
  16. package/dist/components/NSBoxBoolean.module.css +73 -73
  17. package/dist/components/NSBoxDate.module.css +4 -4
  18. package/dist/components/NSBoxDateRangeBase.module.css +73 -73
  19. package/dist/components/NSBoxDateTime.module.css +4 -4
  20. package/dist/components/NSBoxDuration.module.css +4 -4
  21. package/dist/components/NSBoxFile.module.css +10 -10
  22. package/dist/components/NSBoxInteger.module.css +16 -16
  23. package/dist/components/NSBoxOptions.module.css +53 -53
  24. package/dist/components/NSBoxPhone.module.css +35 -35
  25. package/dist/components/NSBoxRadio.module.css +33 -33
  26. package/dist/components/NSBoxSchemaBase.module.css +17 -17
  27. package/dist/components/NSBoxSchemaVariable.module.css +16 -16
  28. package/dist/components/NSBoxTextArea.module.css +12 -12
  29. package/dist/components/NSBoxTime.module.css +4 -4
  30. package/dist/components/NSButton.module.css +57 -57
  31. package/dist/components/NSButtonBlue.module.css +4 -4
  32. package/dist/components/NSButtonGreen.module.css +4 -4
  33. package/dist/components/NSButtonRed.module.css +4 -4
  34. package/dist/components/NSCard.module.css +113 -113
  35. package/dist/components/NSCardScreenshot.module.css +41 -41
  36. package/dist/components/NSColumn.module.css +16 -16
  37. package/dist/components/NSCopyBox.module.css +39 -39
  38. package/dist/components/NSDialog.module.css +105 -105
  39. package/dist/components/NSDialogPageSelection.module.css +103 -103
  40. package/dist/components/NSDownTimer.module.css +55 -55
  41. package/dist/components/NSDownload.module.css +46 -46
  42. package/dist/components/NSElectronicCard.module.css +60 -60
  43. package/dist/components/NSEntityCardBackground.module.css +27 -27
  44. package/dist/components/NSFilterBox.module.css +27 -27
  45. package/dist/components/NSFilterBoxItems.module.css +15 -15
  46. package/dist/components/NSFilterItem.module.css +24 -24
  47. package/dist/components/NSFooter.module.css +140 -140
  48. package/dist/components/NSGauge.module.css +67 -67
  49. package/dist/components/NSGaugeDate.module.css +57 -57
  50. package/dist/components/NSGaugeNumber.module.css +66 -66
  51. package/dist/components/NSHeader.module.css +316 -316
  52. package/dist/components/NSHeaderScreenshot.module.css +35 -35
  53. package/dist/components/NSLabel.module.css +25 -25
  54. package/dist/components/NSLabelErrorNotifier.module.css +2 -2
  55. package/dist/components/NSLabelSensitive.module.css +9 -9
  56. package/dist/components/NSLayout.module.css +22 -22
  57. package/dist/components/NSLine.module.css +15 -15
  58. package/dist/components/NSLineText.module.css +38 -38
  59. package/dist/components/NSLink.module.css +36 -36
  60. package/dist/components/NSListGrouped.module.css +69 -69
  61. package/dist/components/NSLoading.module.css +10 -10
  62. package/dist/components/NSMegaMenu.module.css +133 -133
  63. package/dist/components/NSMenuAction.module.css +88 -88
  64. package/dist/components/NSMenuButton.module.css +44 -44
  65. package/dist/components/NSNoData.module.css +11 -11
  66. package/dist/components/NSPagination.module.css +94 -94
  67. package/dist/components/NSPanel.module.css +28 -28
  68. package/dist/components/NSPanelAccordion.module.css +4 -4
  69. package/dist/components/NSProductSearch.module.css +73 -73
  70. package/dist/components/NSProgressBar.module.css +38 -38
  71. package/dist/components/NSRange.module.css +66 -66
  72. package/dist/components/NSReorderDialog.d.ts +3 -0
  73. package/dist/components/NSReorderDialog.js +10 -4
  74. package/dist/components/NSReorderDialog.js.map +1 -1
  75. package/dist/components/NSReorderDialog.module.css +53 -49
  76. package/dist/components/NSRow.module.css +17 -17
  77. package/dist/components/NSSection.module.css +4 -4
  78. package/dist/components/NSSectionCards.module.css +38 -38
  79. package/dist/components/NSSectionTiles.module.css +10 -10
  80. package/dist/components/NSSplitter.module.css +59 -59
  81. package/dist/components/NSTabPage.module.css +59 -59
  82. package/dist/components/NSTable.js +23 -23
  83. package/dist/components/NSTable.module.css +374 -374
  84. package/dist/components/NSTableChart.module.css +119 -119
  85. package/dist/components/NSTile.module.css +76 -76
  86. package/dist/components/NSTimelineMonthly.module.css +71 -71
  87. package/dist/components/NSTitle.module.css +15 -15
  88. package/dist/index.css +5 -5
  89. package/dist/pages/NSImplementing.module.css +35 -35
  90. package/dist/pages/NSNotFoundPage.module.css +18 -18
  91. package/dist/pages/NSUpdating.module.css +35 -35
  92. package/package.json +86 -86
  93. package/public/index.html +38 -38
  94. package/src/App.css +33 -33
  95. package/src/App.tsx +850 -870
  96. package/src/BrowserDetector.ts +109 -109
  97. package/src/Color.tsx +10 -10
  98. package/src/CopyToClipboard.ts +6 -6
  99. package/src/EncryptionOperation.ts +98 -98
  100. package/src/KeyOperation.ts +109 -109
  101. package/src/LinkOperation.ts +101 -101
  102. package/src/NSBoxBuilder.tsx +922 -922
  103. package/src/ProductCacheService.ts +36 -36
  104. package/src/Validator.ts +199 -199
  105. package/src/components/INSBox.tsx +7 -7
  106. package/src/components/NSBanner.module.css +47 -47
  107. package/src/components/NSBanner.tsx +80 -80
  108. package/src/components/NSBarAction.module.css +91 -91
  109. package/src/components/NSBarAction.tsx +95 -95
  110. package/src/components/NSBarAlert.module.css +79 -79
  111. package/src/components/NSBarAlert.tsx +35 -35
  112. package/src/components/NSBarNotification.module.css +34 -34
  113. package/src/components/NSBarNotification.tsx +89 -89
  114. package/src/components/NSBarTitle.module.css +9 -9
  115. package/src/components/NSBarTitle.tsx +23 -23
  116. package/src/components/NSBox.module.css +87 -87
  117. package/src/components/NSBox.tsx +19 -19
  118. package/src/components/NSBoxBaseCombo.module.css +24 -24
  119. package/src/components/NSBoxBaseCombo.tsx +501 -501
  120. package/src/components/NSBoxBaseLayout.tsx +163 -163
  121. package/src/components/NSBoxBaseLayoutRecursive.tsx +59 -59
  122. package/src/components/NSBoxBoolean.module.css +73 -73
  123. package/src/components/NSBoxBoolean.tsx +152 -152
  124. package/src/components/NSBoxBooleans.tsx +181 -181
  125. package/src/components/NSBoxColor.tsx +107 -107
  126. package/src/components/NSBoxCombo.tsx +95 -95
  127. package/src/components/NSBoxDate.module.css +4 -4
  128. package/src/components/NSBoxDate.tsx +144 -144
  129. package/src/components/NSBoxDateRange.tsx +88 -88
  130. package/src/components/NSBoxDateRangeBase.module.css +73 -73
  131. package/src/components/NSBoxDateRangeBase.tsx +236 -236
  132. package/src/components/NSBoxDateTime.module.css +4 -4
  133. package/src/components/NSBoxDateTime.tsx +136 -136
  134. package/src/components/NSBoxDateTimeRange.tsx +66 -66
  135. package/src/components/NSBoxDouble.tsx +110 -110
  136. package/src/components/NSBoxDuration.module.css +4 -4
  137. package/src/components/NSBoxDuration.tsx +107 -107
  138. package/src/components/NSBoxDynamic.tsx +73 -73
  139. package/src/components/NSBoxDynamics.tsx +68 -68
  140. package/src/components/NSBoxEmail.tsx +117 -117
  141. package/src/components/NSBoxEntity.tsx +180 -180
  142. package/src/components/NSBoxEnum.tsx +113 -113
  143. package/src/components/NSBoxFile.module.css +10 -10
  144. package/src/components/NSBoxFile.tsx +106 -106
  145. package/src/components/NSBoxFilePath.tsx +106 -106
  146. package/src/components/NSBoxFont.tsx +107 -107
  147. package/src/components/NSBoxIPV4.tsx +107 -107
  148. package/src/components/NSBoxIPV4Range.tsx +107 -107
  149. package/src/components/NSBoxIPV6.tsx +104 -104
  150. package/src/components/NSBoxIPV6Range.tsx +107 -107
  151. package/src/components/NSBoxInteger.module.css +16 -16
  152. package/src/components/NSBoxInteger.tsx +126 -126
  153. package/src/components/NSBoxMoney.tsx +115 -115
  154. package/src/components/NSBoxOptions.module.css +53 -53
  155. package/src/components/NSBoxOptions.tsx +182 -182
  156. package/src/components/NSBoxPhone.module.css +35 -35
  157. package/src/components/NSBoxPhone.tsx +120 -120
  158. package/src/components/NSBoxRadio.module.css +33 -33
  159. package/src/components/NSBoxRadio.tsx +104 -104
  160. package/src/components/NSBoxSchemaBase.module.css +17 -17
  161. package/src/components/NSBoxSchemaBase.tsx +562 -562
  162. package/src/components/NSBoxSchemaVariable.module.css +16 -16
  163. package/src/components/NSBoxSchemaVariable.tsx +262 -262
  164. package/src/components/NSBoxSearch.tsx +112 -112
  165. package/src/components/NSBoxSensitive.tsx +133 -133
  166. package/src/components/NSBoxString.tsx +106 -106
  167. package/src/components/NSBoxTextArea.module.css +12 -12
  168. package/src/components/NSBoxTextArea.tsx +136 -136
  169. package/src/components/NSBoxTime.module.css +4 -4
  170. package/src/components/NSBoxTime.tsx +106 -106
  171. package/src/components/NSBoxTimeRange.tsx +220 -220
  172. package/src/components/NSBoxTimeZone.tsx +122 -122
  173. package/src/components/NSBoxURL.tsx +117 -117
  174. package/src/components/NSBoxVersion.tsx +107 -107
  175. package/src/components/NSButton.module.css +57 -57
  176. package/src/components/NSButton.tsx +74 -74
  177. package/src/components/NSButtonBlue.module.css +4 -4
  178. package/src/components/NSButtonBlue.tsx +29 -29
  179. package/src/components/NSButtonGreen.module.css +4 -4
  180. package/src/components/NSButtonGreen.tsx +29 -29
  181. package/src/components/NSButtonRed.module.css +4 -4
  182. package/src/components/NSButtonRed.tsx +29 -29
  183. package/src/components/NSCard.module.css +113 -113
  184. package/src/components/NSCard.tsx +67 -67
  185. package/src/components/NSCardScreenshot.module.css +41 -41
  186. package/src/components/NSCardScreenshot.tsx +31 -31
  187. package/src/components/NSChartBar.tsx +134 -134
  188. package/src/components/NSChartDoughnut.tsx +114 -114
  189. package/src/components/NSChartLine.tsx +110 -110
  190. package/src/components/NSChartPie.tsx +105 -105
  191. package/src/components/NSChartRange.tsx +14 -14
  192. package/src/components/NSColumn.module.css +16 -16
  193. package/src/components/NSColumn.tsx +24 -24
  194. package/src/components/NSCopy.tsx +95 -95
  195. package/src/components/NSCopyBox.module.css +39 -39
  196. package/src/components/NSCopyBox.tsx +53 -53
  197. package/src/components/NSDialog.module.css +105 -105
  198. package/src/components/NSDialog.tsx +72 -72
  199. package/src/components/NSDialogBox.tsx +38 -38
  200. package/src/components/NSDialogBoxDate.tsx +28 -28
  201. package/src/components/NSDialogBoxDateTime.tsx +28 -28
  202. package/src/components/NSDialogBoxPhone.tsx +28 -28
  203. package/src/components/NSDialogBoxString.tsx +28 -28
  204. package/src/components/NSDialogDelete.tsx +36 -36
  205. package/src/components/NSDialogInfo.tsx +49 -49
  206. package/src/components/NSDialogPageSelection.module.css +103 -103
  207. package/src/components/NSDialogPageSelection.tsx +233 -233
  208. package/src/components/NSDownTimer.module.css +55 -55
  209. package/src/components/NSDownTimer.tsx +91 -91
  210. package/src/components/NSDownload.module.css +46 -46
  211. package/src/components/NSDownload.tsx +69 -69
  212. package/src/components/NSElectronicCard.module.css +60 -60
  213. package/src/components/NSElectronicCard.tsx +46 -46
  214. package/src/components/NSEntityCardBackground.module.css +27 -27
  215. package/src/components/NSEntityCardBackground.tsx +36 -36
  216. package/src/components/NSFilterBox.module.css +27 -27
  217. package/src/components/NSFilterBox.tsx +477 -477
  218. package/src/components/NSFilterBoxItems.module.css +15 -15
  219. package/src/components/NSFilterBoxItems.tsx +52 -52
  220. package/src/components/NSFilterItem.module.css +24 -24
  221. package/src/components/NSFilterItem.tsx +27 -27
  222. package/src/components/NSFooter.module.css +140 -140
  223. package/src/components/NSFooter.tsx +321 -321
  224. package/src/components/NSGauge.module.css +67 -67
  225. package/src/components/NSGauge.tsx +52 -52
  226. package/src/components/NSGaugeDate.module.css +57 -57
  227. package/src/components/NSGaugeDate.tsx +125 -125
  228. package/src/components/NSGaugeNumber.module.css +66 -66
  229. package/src/components/NSGaugeNumber.tsx +93 -93
  230. package/src/components/NSHeader.module.css +316 -316
  231. package/src/components/NSHeader.tsx +337 -337
  232. package/src/components/NSHeaderScreenshot.module.css +35 -35
  233. package/src/components/NSHeaderScreenshot.tsx +39 -39
  234. package/src/components/NSID.tsx +178 -178
  235. package/src/components/NSInfo.tsx +50 -50
  236. package/src/components/NSLabel.module.css +25 -25
  237. package/src/components/NSLabel.tsx +47 -47
  238. package/src/components/NSLabelErrorNotifier.module.css +2 -2
  239. package/src/components/NSLabelErrorNotifier.tsx +35 -35
  240. package/src/components/NSLabelSensitive.module.css +9 -9
  241. package/src/components/NSLabelSensitive.tsx +101 -101
  242. package/src/components/NSLayout.module.css +22 -22
  243. package/src/components/NSLayout.tsx +143 -143
  244. package/src/components/NSLine.module.css +15 -15
  245. package/src/components/NSLine.tsx +13 -13
  246. package/src/components/NSLineText.module.css +38 -38
  247. package/src/components/NSLineText.tsx +17 -17
  248. package/src/components/NSLink.module.css +36 -36
  249. package/src/components/NSLink.tsx +26 -26
  250. package/src/components/NSLinkBlue.tsx +22 -22
  251. package/src/components/NSLinkGreen.tsx +13 -13
  252. package/src/components/NSLinkRed.tsx +13 -13
  253. package/src/components/NSListGrouped.module.css +69 -69
  254. package/src/components/NSListGrouped.tsx +106 -106
  255. package/src/components/NSListProduct.tsx +78 -78
  256. package/src/components/NSLoading.module.css +10 -10
  257. package/src/components/NSLoading.tsx +43 -43
  258. package/src/components/NSMegaMenu.module.css +133 -133
  259. package/src/components/NSMegaMenu.tsx +188 -188
  260. package/src/components/NSMenuAction.module.css +88 -88
  261. package/src/components/NSMenuAction.tsx +106 -106
  262. package/src/components/NSMenuButton.module.css +44 -44
  263. package/src/components/NSMenuButton.tsx +198 -198
  264. package/src/components/NSNoData.module.css +11 -11
  265. package/src/components/NSNoData.tsx +24 -24
  266. package/src/components/NSPagination.module.css +94 -94
  267. package/src/components/NSPagination.tsx +182 -182
  268. package/src/components/NSPanel.module.css +28 -28
  269. package/src/components/NSPanel.tsx +26 -26
  270. package/src/components/NSPanelAccordion.module.css +4 -4
  271. package/src/components/NSPanelAccordion.tsx +51 -51
  272. package/src/components/NSProductSearch.module.css +73 -73
  273. package/src/components/NSProductSearch.tsx +193 -193
  274. package/src/components/NSProgressBar.module.css +38 -38
  275. package/src/components/NSProgressBar.tsx +29 -29
  276. package/src/components/NSRange.module.css +66 -66
  277. package/src/components/NSRange.tsx +83 -83
  278. package/src/components/NSReorderDialog.module.css +53 -49
  279. package/src/components/NSReorderDialog.tsx +203 -184
  280. package/src/components/NSRepeater.tsx +327 -327
  281. package/src/components/NSRepeaterNSBoxSchemaVariable.tsx +96 -96
  282. package/src/components/NSRepeaterNSTag.tsx +86 -86
  283. package/src/components/NSRow.module.css +17 -17
  284. package/src/components/NSRow.tsx +24 -24
  285. package/src/components/NSSection.module.css +4 -4
  286. package/src/components/NSSection.tsx +26 -26
  287. package/src/components/NSSectionCards.module.css +38 -38
  288. package/src/components/NSSectionCards.tsx +51 -51
  289. package/src/components/NSSectionTiles.module.css +10 -10
  290. package/src/components/NSSectionTiles.tsx +25 -25
  291. package/src/components/NSSectionTitle.tsx +19 -19
  292. package/src/components/NSSortDialog.tsx +124 -124
  293. package/src/components/NSSpace.tsx +28 -28
  294. package/src/components/NSSplitter.module.css +59 -59
  295. package/src/components/NSSplitter.tsx +211 -211
  296. package/src/components/NSTabPage.module.css +59 -59
  297. package/src/components/NSTabPage.tsx +122 -122
  298. package/src/components/NSTable.module.css +374 -374
  299. package/src/components/NSTable.tsx +1451 -1451
  300. package/src/components/NSTableChart.module.css +119 -119
  301. package/src/components/NSTableChart.tsx +732 -732
  302. package/src/components/NSTag.tsx +74 -74
  303. package/src/components/NSTile.module.css +76 -76
  304. package/src/components/NSTile.tsx +27 -27
  305. package/src/components/NSTimelineMonthly.module.css +71 -71
  306. package/src/components/NSTimelineMonthly.tsx +44 -44
  307. package/src/components/NSTitle.module.css +15 -15
  308. package/src/components/NSTitle.tsx +19 -19
  309. package/src/css.d.ts +13 -13
  310. package/src/formatter/BackColorFormatter.tsx +23 -23
  311. package/src/formatter/BaseColumnFormatter.ts +86 -86
  312. package/src/formatter/BaseURLImageFormatter.tsx +37 -37
  313. package/src/formatter/BooleanFormatter.ts +26 -26
  314. package/src/formatter/BytesFormatter.tsx +19 -19
  315. package/src/formatter/DateFormatter.ts +26 -26
  316. package/src/formatter/DateTimeFormatter.ts +26 -26
  317. package/src/formatter/DurationFormatter.ts +17 -17
  318. package/src/formatter/EmailFormatter.tsx +25 -25
  319. package/src/formatter/EnumFormatter.ts +17 -17
  320. package/src/formatter/FloatFormatter.ts +27 -27
  321. package/src/formatter/ForeColorFormatter.tsx +24 -24
  322. package/src/formatter/IDFormatter.tsx +58 -58
  323. package/src/formatter/IPFormatter.ts +39 -39
  324. package/src/formatter/IntegerFormatter.ts +27 -27
  325. package/src/formatter/JsonFormatter.tsx +75 -75
  326. package/src/formatter/MoneyFormatter.ts +39 -39
  327. package/src/formatter/PercentFormatter.tsx +43 -43
  328. package/src/formatter/PhoneFormatter.tsx +25 -25
  329. package/src/formatter/SensitiveFormatter.tsx +40 -40
  330. package/src/formatter/StringFormatter.tsx +49 -49
  331. package/src/formatter/TimeFormatter.ts +25 -25
  332. package/src/formatter/URLFormatter.tsx +28 -28
  333. package/src/formatter/UnknowFormatter.ts +22 -22
  334. package/src/index.css +5 -5
  335. package/src/index.tsx +7 -7
  336. package/src/main.ts +263 -263
  337. package/src/pages/NSImplementing.module.css +35 -35
  338. package/src/pages/NSImplementing.tsx +32 -32
  339. package/src/pages/NSNotFoundPage.module.css +18 -18
  340. package/src/pages/NSNotFoundPage.tsx +14 -14
  341. package/src/pages/NSUpdating.module.css +35 -35
  342. package/src/pages/NSUpdating.tsx +32 -32
  343. package/src/props/IBackgroundProps.ts +5 -5
  344. package/src/props/IBaseComponentProps.ts +8 -8
  345. package/src/props/IHeaderIconProps.ts +10 -10
  346. package/src/props/IHeaderLeftProps.ts +6 -6
  347. package/src/props/IHeaderRightProps.ts +8 -8
  348. package/src/props/IImageProps.ts +4 -4
  349. package/src/props/ILinkProps.ts +4 -4
  350. package/src/props/IValidationNumberProps.ts +4 -4
  351. package/src/props/IValidationPrecisionProps.ts +3 -3
  352. package/src/props/IValidationProps.ts +9 -9
  353. package/src/props/IValidationRegexProps.ts +4 -4
  354. package/src/props/IValidationStringProps.ts +4 -4
  355. package/src/routing/NSNotifier.ts +114 -114
  356. package/src/routing/NSRouterMaker.tsx +28 -28
  357. package/tsconfig.json +43 -43
  358. package/dist/components/NSListMenu.d.ts +0 -9
  359. package/dist/components/NSListMenu.js +0 -135
  360. package/dist/components/NSListMenu.js.map +0 -1
@@ -1,92 +1,92 @@
1
- import { useEffect, useState } from 'react';
2
- import { IBaseComponentProps } from '../props/IBaseComponentProps';
3
- import Styles from './NSDownTimer.module.css';
4
-
5
- export interface NSDownTimerProps extends IBaseComponentProps
6
- {
7
- date: Date;
8
- text: string;
9
- expire_text?: string
10
- }
11
-
12
- interface NSDownTimerState
13
- {
14
- days: number;
15
- hours: number;
16
- minutes: number;
17
- seconds: number;
18
- }
19
-
20
- export function NSDownTimer(props: NSDownTimerProps)
21
- {
22
- const [timeLeft, setTimeLeft] = useState<NSDownTimerState>(calculateTimeLeft(props.date));
23
-
24
- useEffect(() =>
25
- {
26
- const timer = setInterval(() =>
27
- {
28
- setTimeLeft(calculateTimeLeft(props.date));
29
- }, 1000);
30
- return () => clearInterval(timer);
31
- }, [props.date]);
32
-
33
- function calculateTimeLeft(date: Date): NSDownTimerState
34
- {
35
- const now = new Date();
36
- const difference = date.getTime() - now.getTime();
37
-
38
- let timeLeft: NSDownTimerState = {
39
- days: 0,
40
- hours: 0,
41
- minutes: 0,
42
- seconds: 0,
43
- };
44
- if (difference > 0)
45
- {
46
- timeLeft = {
47
- days: Math.floor(difference / (1000 * 60 * 60 * 24)),
48
- hours: Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
49
- minutes: Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60)),
50
- seconds: Math.floor((difference % (1000 * 60)) / 1000),
51
- };
52
- }
53
- return timeLeft;
54
- }
55
- return (
56
- <div
57
- id={props.id}
58
- className={`${Styles.ns_down_timer_container} ${props.classList?.join(" ") ?? ""}`}
59
- style={props.style}
60
- >
61
- <figure className={Styles.ns_figure}>
62
- <img
63
- src='https://static.namirasoft.com/image/concept/countdown/grey.svg'
64
- alt='CountDown'
65
- width={48}
66
- height={48} />
67
- <figcaption>{props.text}</figcaption>
68
- </figure>
69
- <div className={Styles.ns_down_timer_time_container}>
70
- <div className='d-flex flex-column justify-content-center align-items-center'>
71
- <span className={Styles.ns_down_timer_time_left}>{`${timeLeft.days}`}</span>
72
- <span className={Styles.ns_down_timer_time_left_unit}>DAY</span>
73
- </div>
74
- <span className={`${Styles.ns_semi_colon}`}>:</span>
75
- <div className='d-flex flex-column justify-content-center align-items-center'>
76
- <span className={Styles.ns_down_timer_time_left}>{`${timeLeft.hours}`}</span>
77
- <span className={Styles.ns_down_timer_time_left_unit}>HOUR</span>
78
- </div>
79
- <span className={`${Styles.ns_semi_colon}`}>:</span>
80
- <div className='d-flex flex-column justify-content-center align-items-center'>
81
- <span className={Styles.ns_down_timer_time_left}>{`${timeLeft.minutes}`}</span>
82
- <span className={Styles.ns_down_timer_time_left_unit}>MIN</span>
83
- </div>
84
- <span className={`${Styles.ns_semi_colon}`}>:</span>
85
- <div className='d-flex flex-column justify-content-center align-items-center'>
86
- <span className={Styles.ns_down_timer_time_left}>{`${timeLeft.seconds}`}</span>
87
- <span className={Styles.ns_down_timer_time_left_unit}>SEC</span>
88
- </div>
89
- </div>
90
- </div>
91
- );
1
+ import { useEffect, useState } from 'react';
2
+ import { IBaseComponentProps } from '../props/IBaseComponentProps';
3
+ import Styles from './NSDownTimer.module.css';
4
+
5
+ export interface NSDownTimerProps extends IBaseComponentProps
6
+ {
7
+ date: Date;
8
+ text: string;
9
+ expire_text?: string
10
+ }
11
+
12
+ interface NSDownTimerState
13
+ {
14
+ days: number;
15
+ hours: number;
16
+ minutes: number;
17
+ seconds: number;
18
+ }
19
+
20
+ export function NSDownTimer(props: NSDownTimerProps)
21
+ {
22
+ const [timeLeft, setTimeLeft] = useState<NSDownTimerState>(calculateTimeLeft(props.date));
23
+
24
+ useEffect(() =>
25
+ {
26
+ const timer = setInterval(() =>
27
+ {
28
+ setTimeLeft(calculateTimeLeft(props.date));
29
+ }, 1000);
30
+ return () => clearInterval(timer);
31
+ }, [props.date]);
32
+
33
+ function calculateTimeLeft(date: Date): NSDownTimerState
34
+ {
35
+ const now = new Date();
36
+ const difference = date.getTime() - now.getTime();
37
+
38
+ let timeLeft: NSDownTimerState = {
39
+ days: 0,
40
+ hours: 0,
41
+ minutes: 0,
42
+ seconds: 0,
43
+ };
44
+ if (difference > 0)
45
+ {
46
+ timeLeft = {
47
+ days: Math.floor(difference / (1000 * 60 * 60 * 24)),
48
+ hours: Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
49
+ minutes: Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60)),
50
+ seconds: Math.floor((difference % (1000 * 60)) / 1000),
51
+ };
52
+ }
53
+ return timeLeft;
54
+ }
55
+ return (
56
+ <div
57
+ id={props.id}
58
+ className={`${Styles.ns_down_timer_container} ${props.classList?.join(" ") ?? ""}`}
59
+ style={props.style}
60
+ >
61
+ <figure className={Styles.ns_figure}>
62
+ <img
63
+ src='https://static.namirasoft.com/image/concept/countdown/grey.svg'
64
+ alt='CountDown'
65
+ width={48}
66
+ height={48} />
67
+ <figcaption>{props.text}</figcaption>
68
+ </figure>
69
+ <div className={Styles.ns_down_timer_time_container}>
70
+ <div className='d-flex flex-column justify-content-center align-items-center'>
71
+ <span className={Styles.ns_down_timer_time_left}>{`${timeLeft.days}`}</span>
72
+ <span className={Styles.ns_down_timer_time_left_unit}>DAY</span>
73
+ </div>
74
+ <span className={`${Styles.ns_semi_colon}`}>:</span>
75
+ <div className='d-flex flex-column justify-content-center align-items-center'>
76
+ <span className={Styles.ns_down_timer_time_left}>{`${timeLeft.hours}`}</span>
77
+ <span className={Styles.ns_down_timer_time_left_unit}>HOUR</span>
78
+ </div>
79
+ <span className={`${Styles.ns_semi_colon}`}>:</span>
80
+ <div className='d-flex flex-column justify-content-center align-items-center'>
81
+ <span className={Styles.ns_down_timer_time_left}>{`${timeLeft.minutes}`}</span>
82
+ <span className={Styles.ns_down_timer_time_left_unit}>MIN</span>
83
+ </div>
84
+ <span className={`${Styles.ns_semi_colon}`}>:</span>
85
+ <div className='d-flex flex-column justify-content-center align-items-center'>
86
+ <span className={Styles.ns_down_timer_time_left}>{`${timeLeft.seconds}`}</span>
87
+ <span className={Styles.ns_down_timer_time_left_unit}>SEC</span>
88
+ </div>
89
+ </div>
90
+ </div>
91
+ );
92
92
  };
@@ -1,47 +1,47 @@
1
- .download_parent {
2
- padding: 32px 16px;
3
- }
4
-
5
- .download_header {
6
- display: flex;
7
- justify-content: flex-start;
8
- flex-wrap: wrap;
9
- align-items: center;
10
- gap: 16px;
11
- }
12
-
13
- .radio_group {
14
- display: flex;
15
- justify-content: flex-start;
16
- align-items: center;
17
- }
18
-
19
- .radio_button {
20
- background-color: transparent !important;
21
- border: none !important;
22
- max-width: 97px !important;
23
- }
24
-
25
- .download_detail {
26
- display: flex;
27
- flex-direction: column;
28
- align-items: flex-start;
29
- justify-content: flex-start;
30
- gap: 24px;
31
- }
32
-
33
- .download_button {
34
- max-width: unset !important;
35
- width: 100% !important;
36
- }
37
-
38
- @media screen and (min-width: 554px) {
39
- .download_header {
40
- gap: 64px;
41
- }
42
-
43
- .download_button {
44
- max-width: 272px !important;
45
- width: 272px !important;
46
- }
1
+ .download_parent {
2
+ padding: 32px 16px;
3
+ }
4
+
5
+ .download_header {
6
+ display: flex;
7
+ justify-content: flex-start;
8
+ flex-wrap: wrap;
9
+ align-items: center;
10
+ gap: 16px;
11
+ }
12
+
13
+ .radio_group {
14
+ display: flex;
15
+ justify-content: flex-start;
16
+ align-items: center;
17
+ }
18
+
19
+ .radio_button {
20
+ background-color: transparent !important;
21
+ border: none !important;
22
+ max-width: 97px !important;
23
+ }
24
+
25
+ .download_detail {
26
+ display: flex;
27
+ flex-direction: column;
28
+ align-items: flex-start;
29
+ justify-content: flex-start;
30
+ gap: 24px;
31
+ }
32
+
33
+ .download_button {
34
+ max-width: unset !important;
35
+ width: 100% !important;
36
+ }
37
+
38
+ @media screen and (min-width: 554px) {
39
+ .download_header {
40
+ gap: 64px;
41
+ }
42
+
43
+ .download_button {
44
+ max-width: 272px !important;
45
+ width: 272px !important;
46
+ }
47
47
  }
@@ -1,70 +1,70 @@
1
- // todo move to its own probject: I guess this is Timify
2
- import { useState } from "react";
3
- import { IBaseComponentProps } from "../props/IBaseComponentProps";
4
- import { NSBoxRadio } from "./NSBoxRadio";
5
- import { NSLine } from "./NSLine";
6
- import { NSButtonBlue } from "./NSButtonBlue";
7
- import Styles from "./NSDownload.module.css"
8
- import { NSSpace, NSSpaceSizeType } from "./NSSpace";
9
-
10
- export interface NSDownloadProps extends IBaseComponentProps
11
- {
12
- releaseDate: string;
13
- }
14
-
15
- export function NSDownload(props: NSDownloadProps)
16
- {
17
- const [state, setState] = useState("32-bit");
18
-
19
- return (
20
- <div className={`${Styles.download_parent} ${props.classList?.join(' ')}`}>
21
- <div className={Styles.download_header}>
22
- <h3 style={{ color: "#141B5C" }}>Choose Your Windows Architecture</h3>
23
- <div className={Styles.radio_group}>
24
- <NSBoxRadio
25
- title={"32-bit"}
26
- required={false}
27
- checked={state === "32-bit"}
28
- onChanged={(event) =>
29
- {
30
- let value = event.getValue();
31
- if (value)
32
- {
33
- setState("32-bit");
34
- }
35
- }}
36
- classList={[Styles.radio_button]}
37
- />
38
- <NSBoxRadio
39
- title={"64-bit"}
40
- required={false}
41
- checked={state === "64-bit"}
42
- onChanged={(event) =>
43
- {
44
- let value = event.getValue();
45
- if (value)
46
- {
47
- setState("64-bit");
48
- }
49
- }}
50
- classList={[Styles.radio_button]}
51
- />
52
- </div>
53
- </div>
54
- <NSSpace size={NSSpaceSizeType.SMALL} />
55
- <NSLine />
56
- <NSSpace size={NSSpaceSizeType.SMALL} />
57
- <div className={Styles.download_detail}>
58
- <h4 style={{ color: "#141B5C" }}>For Windows 7 and higher, Windows Server 2008 R2 and higher.</h4>
59
- <div style={{ color: "#141B5C" }}>
60
- <p style={{ marginBottom: "0" }}>Latest Version</p>
61
- <p style={{ marginBottom: "0" }}>Release Date: {props.releaseDate}</p>
62
- </div>
63
- <NSButtonBlue title="Download" onClick={{
64
- action: () => { },
65
- showLoading: false
66
- }} classList={[Styles.download_button]} />
67
- </div>
68
- </div>
69
- );
1
+ // todo move to its own probject: I guess this is Timify
2
+ import { useState } from "react";
3
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
4
+ import { NSBoxRadio } from "./NSBoxRadio";
5
+ import { NSLine } from "./NSLine";
6
+ import { NSButtonBlue } from "./NSButtonBlue";
7
+ import Styles from "./NSDownload.module.css"
8
+ import { NSSpace, NSSpaceSizeType } from "./NSSpace";
9
+
10
+ export interface NSDownloadProps extends IBaseComponentProps
11
+ {
12
+ releaseDate: string;
13
+ }
14
+
15
+ export function NSDownload(props: NSDownloadProps)
16
+ {
17
+ const [state, setState] = useState("32-bit");
18
+
19
+ return (
20
+ <div className={`${Styles.download_parent} ${props.classList?.join(' ')}`}>
21
+ <div className={Styles.download_header}>
22
+ <h3 style={{ color: "#141B5C" }}>Choose Your Windows Architecture</h3>
23
+ <div className={Styles.radio_group}>
24
+ <NSBoxRadio
25
+ title={"32-bit"}
26
+ required={false}
27
+ checked={state === "32-bit"}
28
+ onChanged={(event) =>
29
+ {
30
+ let value = event.getValue();
31
+ if (value)
32
+ {
33
+ setState("32-bit");
34
+ }
35
+ }}
36
+ classList={[Styles.radio_button]}
37
+ />
38
+ <NSBoxRadio
39
+ title={"64-bit"}
40
+ required={false}
41
+ checked={state === "64-bit"}
42
+ onChanged={(event) =>
43
+ {
44
+ let value = event.getValue();
45
+ if (value)
46
+ {
47
+ setState("64-bit");
48
+ }
49
+ }}
50
+ classList={[Styles.radio_button]}
51
+ />
52
+ </div>
53
+ </div>
54
+ <NSSpace size={NSSpaceSizeType.SMALL} />
55
+ <NSLine />
56
+ <NSSpace size={NSSpaceSizeType.SMALL} />
57
+ <div className={Styles.download_detail}>
58
+ <h4 style={{ color: "#141B5C" }}>For Windows 7 and higher, Windows Server 2008 R2 and higher.</h4>
59
+ <div style={{ color: "#141B5C" }}>
60
+ <p style={{ marginBottom: "0" }}>Latest Version</p>
61
+ <p style={{ marginBottom: "0" }}>Release Date: {props.releaseDate}</p>
62
+ </div>
63
+ <NSButtonBlue title="Download" onClick={{
64
+ action: () => { },
65
+ showLoading: false
66
+ }} classList={[Styles.download_button]} />
67
+ </div>
68
+ </div>
69
+ );
70
70
  };
@@ -1,61 +1,61 @@
1
- .ns_border {
2
- width: 358px;
3
- height: fit-content;
4
- border: 1px solid rgba(161, 164, 176, 1);
5
- border-radius: 8px;
6
- background-color: rgba(255, 255, 255, 1);
7
- }
8
-
9
- .ns_image_text {
10
- padding: 16px;
11
- display: flex;
12
- flex-direction: row;
13
- align-items: center;
14
- }
15
-
16
- .ns_information {
17
- display: flex;
18
- flex-direction: column;
19
- padding-left: 16px;
20
- gap: 8px;
21
- }
22
-
23
- .ns_card_items {
24
- display: flex;
25
- flex-direction: row;
26
- justify-content: space-between;
27
- padding: 16px;
28
- }
29
-
30
- .ns_right_card_items {
31
- display: flex;
32
- flex-direction: row;
33
- gap: 16px;
34
- }
35
-
36
- .ns_electronic_card h4 {
37
- color: rgba(20, 27, 92, 1);
38
- font-size: 16px;
39
- font-weight: 600;
40
- margin: 0;
41
- }
42
-
43
- .ns_electronic_card h5 {
44
- color: rgba(20, 27, 92, 1);
45
- font-size: 12px;
46
- font-weight: 700;
47
- margin: 0;
48
- }
49
-
50
- .ns_electronic_card a {
51
- text-decoration: none;
52
- cursor: pointer;
53
- color: rgba(20, 27, 92, 1);
54
- }
55
-
56
- .ns_line {
57
- margin: 0 16px;
58
- border: 1px solid linear-gradient(to right, rgba(47, 0, 236, 0.6), rgba(118, 255, 181, 0.42));
59
- background: linear-gradient(to right, rgba(47, 0, 236, 0.6), rgba(118, 255, 181, 0.42));
60
- height: 2px;
1
+ .ns_border {
2
+ width: 358px;
3
+ height: fit-content;
4
+ border: 1px solid rgba(161, 164, 176, 1);
5
+ border-radius: 8px;
6
+ background-color: rgba(255, 255, 255, 1);
7
+ }
8
+
9
+ .ns_image_text {
10
+ padding: 16px;
11
+ display: flex;
12
+ flex-direction: row;
13
+ align-items: center;
14
+ }
15
+
16
+ .ns_information {
17
+ display: flex;
18
+ flex-direction: column;
19
+ padding-left: 16px;
20
+ gap: 8px;
21
+ }
22
+
23
+ .ns_card_items {
24
+ display: flex;
25
+ flex-direction: row;
26
+ justify-content: space-between;
27
+ padding: 16px;
28
+ }
29
+
30
+ .ns_right_card_items {
31
+ display: flex;
32
+ flex-direction: row;
33
+ gap: 16px;
34
+ }
35
+
36
+ .ns_electronic_card h4 {
37
+ color: rgba(20, 27, 92, 1);
38
+ font-size: 16px;
39
+ font-weight: 600;
40
+ margin: 0;
41
+ }
42
+
43
+ .ns_electronic_card h5 {
44
+ color: rgba(20, 27, 92, 1);
45
+ font-size: 12px;
46
+ font-weight: 700;
47
+ margin: 0;
48
+ }
49
+
50
+ .ns_electronic_card a {
51
+ text-decoration: none;
52
+ cursor: pointer;
53
+ color: rgba(20, 27, 92, 1);
54
+ }
55
+
56
+ .ns_line {
57
+ margin: 0 16px;
58
+ border: 1px solid linear-gradient(to right, rgba(47, 0, 236, 0.6), rgba(118, 255, 181, 0.42));
59
+ background: linear-gradient(to right, rgba(47, 0, 236, 0.6), rgba(118, 255, 181, 0.42));
60
+ height: 2px;
61
61
  }
@@ -1,47 +1,47 @@
1
- // todo move to its own probject: It's for Payment to add credit card
2
- import { useState } from 'react';
3
- import Styles from './NSElectronicCard.module.css';
4
- export interface NSElectronicCardProps
5
- {
6
- src: string;
7
- title: string | number;
8
- cardNumber: string;
9
- info?: string;
10
- alt?: string;
11
- }
12
- export function NSElectronicCard(props: NSElectronicCardProps)
13
- {
14
- if (props.cardNumber.length < 15)
15
- {
16
- alert("Please enter 16 number at least")
17
- }
18
- let last4Number = props.cardNumber.substr(-4);
19
- let [cardNumber, setCardNumber] = useState("");
20
- return (
21
- <section className={Styles.ns_electronic_card}>
22
- <div className={Styles.ns_border}>
23
- <div className={Styles.ns_image_text}>
24
- <img
25
- src={props.src}
26
- width={68}
27
- height={48}
28
- alt={props.alt ? props.alt : "E-Card Image"}
29
- />
30
- <div className={Styles.ns_information}>
31
- <h4>{props.title}</h4>
32
- <h5>{`0000 0000 0000 ${props.cardNumber ? last4Number : cardNumber}`}</h5>
33
- </div>
34
- </div>
35
- <hr className={Styles.ns_line}></hr>
36
- <div className={Styles.ns_card_items}>
37
- <a href='#'><h4 style={{ color: "rgba(3, 119, 255, 1)" }}>{props.info}</h4></a>
38
- <div className={Styles.ns_right_card_items}>
39
- <a href='#'><h4 onClick={() => setCardNumber("0000")}>Default</h4></a>
40
- <a href='#'><h4 onClick={() => setCardNumber("0000")}>Remove</h4></a>
41
- <a href='#'><h4>Edit</h4></a>
42
- </div>
43
- </div>
44
- </div>
45
- </section >
46
- );
1
+ // todo move to its own probject: It's for Payment to add credit card
2
+ import { useState } from 'react';
3
+ import Styles from './NSElectronicCard.module.css';
4
+ export interface NSElectronicCardProps
5
+ {
6
+ src: string;
7
+ title: string | number;
8
+ cardNumber: string;
9
+ info?: string;
10
+ alt?: string;
11
+ }
12
+ export function NSElectronicCard(props: NSElectronicCardProps)
13
+ {
14
+ if (props.cardNumber.length < 15)
15
+ {
16
+ alert("Please enter 16 number at least")
17
+ }
18
+ let last4Number = props.cardNumber.substr(-4);
19
+ let [cardNumber, setCardNumber] = useState("");
20
+ return (
21
+ <section className={Styles.ns_electronic_card}>
22
+ <div className={Styles.ns_border}>
23
+ <div className={Styles.ns_image_text}>
24
+ <img
25
+ src={props.src}
26
+ width={68}
27
+ height={48}
28
+ alt={props.alt ? props.alt : "E-Card Image"}
29
+ />
30
+ <div className={Styles.ns_information}>
31
+ <h4>{props.title}</h4>
32
+ <h5>{`0000 0000 0000 ${props.cardNumber ? last4Number : cardNumber}`}</h5>
33
+ </div>
34
+ </div>
35
+ <hr className={Styles.ns_line}></hr>
36
+ <div className={Styles.ns_card_items}>
37
+ <a href='#'><h4 style={{ color: "rgba(3, 119, 255, 1)" }}>{props.info}</h4></a>
38
+ <div className={Styles.ns_right_card_items}>
39
+ <a href='#'><h4 onClick={() => setCardNumber("0000")}>Default</h4></a>
40
+ <a href='#'><h4 onClick={() => setCardNumber("0000")}>Remove</h4></a>
41
+ <a href='#'><h4>Edit</h4></a>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ </section >
46
+ );
47
47
  }