namirasoft-site-react 1.3.85 → 1.3.87

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.
package/dist/App.js CHANGED
@@ -1,9 +1,14 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import './App.css';
3
3
  import 'bootstrap/dist/css/bootstrap.min.css';
4
- import { NSFooter, NSHeader, NSTable } from './main';
4
+ import { NSFooter, NSHeader, NSTable, NSTabBar } from './main';
5
5
  import { useRef } from 'react';
6
6
  export function App() {
7
+ const tabs = [
8
+ { label: 'Information', content: _jsx("p", { children: "Content for Tab 1" }) },
9
+ { label: 'Price History', content: _jsx("p", { children: "Content for Tab 2" }) },
10
+ { label: 'Price Estimator', content: _jsx("p", { children: "Content for Tab 3" }) }
11
+ ];
7
12
  let columns = {
8
13
  "id": "ID",
9
14
  "project": "Project",
@@ -33,6 +38,6 @@ export function App() {
33
38
  return row[column];
34
39
  }
35
40
  let table = useRef(null);
36
- return (_jsxs(_Fragment, { children: [_jsx(NSHeader, { name: 'Header', scope: 'Namira Software Corporation', logo: 'https://static.namirasoft.com/image/namirasoft/site/logo/base.png', account: false, style: { backgroundColor: "transparent !important" } }), _jsx("div", { children: _jsx(NSTable, { ref: table, columns: columns, rows: rows, getCell: getCell, getColumnAttributes: () => { return {}; }, getRowKey: row => row.id.toString() }) }), _jsx(NSFooter, { name: 'Footer', scope: 'Namira Software Corporation', logo: 'https://static.namirasoft.com/image/namirasoft/site/logo/base.png' })] }));
41
+ return (_jsxs(_Fragment, { children: [_jsx(NSHeader, { name: 'Header', scope: 'Namira Software Corporation', logo: 'https://static.namirasoft.com/image/namirasoft/site/logo/base.png', account: false, style: { backgroundColor: "transparent !important" } }), _jsxs("div", { children: [_jsx(NSTable, { ref: table, columns: columns, rows: rows, getCell: getCell, getColumnAttributes: () => { return {}; }, getRowKey: row => row.id.toString() }), _jsx(NSTabBar, { tabs: tabs })] }), _jsx(NSFooter, { name: 'Footer', scope: 'Namira Software Corporation', logo: 'https://static.namirasoft.com/image/namirasoft/site/logo/base.png' })] }));
37
42
  }
38
43
  //# sourceMappingURL=App.js.map
package/dist/App.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW,CAAC;AACnB,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,GAAG;IAElB,IAAI,OAAO,GAAG;QACb,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;KAClB,CAAA;IACD,IAAI,IAAI,GAAG,CAAC;YACX,EAAE,EAAE,CAAC;YACL,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,yCAAyC;YAClD,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,SAAS;SACjB;QACD;YACC,EAAE,EAAE,CAAC;YACL,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,yCAAyC;YAClD,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;SACd;KACA,CAAA;IAUD,SAAS,OAAO,CAAC,GAAQ,EAAE,MAAc;QAExC,OAAQ,GAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IACvC,OAAO,CACN,8BACC,KAAC,QAAQ,IACR,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,6BAA6B,EACnC,IAAI,EAAC,mEAAmE,EACxE,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,GACnD,EACF,wBACC,KAAC,OAAO,IACP,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,mBAAmB,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA,CAAC,CAAC,EACxC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAClC,GACG,EACN,KAAC,QAAQ,IAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,6BAA6B,EAAC,IAAI,EAAC,mEAAmE,GAAG,IACrI,CACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW,CAAC;AACnB,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,GAAG;IAElB,MAAM,IAAI,GAAG;QACZ,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,4CAAwB,EAAE;QAC3D,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,4CAAwB,EAAE;QAC7D,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,4CAAwB,EAAE;KAC/D,CAAC;IACF,IAAI,OAAO,GAAG;QACb,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;KAClB,CAAA;IACD,IAAI,IAAI,GAAG,CAAC;YACX,EAAE,EAAE,CAAC;YACL,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,yCAAyC;YAClD,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,SAAS;SACjB;QACD;YACC,EAAE,EAAE,CAAC;YACL,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,yCAAyC;YAClD,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;SACd;KACA,CAAA;IAUD,SAAS,OAAO,CAAC,GAAQ,EAAE,MAAc;QAExC,OAAQ,GAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,GAAG,MAAM,CAAe,IAAI,CAAC,CAAC;IACvC,OAAO,CACN,8BACC,KAAC,QAAQ,IACR,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,6BAA6B,EACnC,IAAI,EAAC,mEAAmE,EACxE,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,EAAE,eAAe,EAAE,wBAAwB,EAAE,GACnD,EACF,0BACC,KAAC,OAAO,IACP,GAAG,EAAE,KAAK,EACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,mBAAmB,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAA,CAAC,CAAC,EACxC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAClC,EACF,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,GAAI,IACnB,EAEN,KAAC,QAAQ,IAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,6BAA6B,EAAC,IAAI,EAAC,mEAAmE,GAAG,IACrI,CACH,CAAC;AACH,CAAC"}
@@ -7,6 +7,6 @@ export function NSCopyToClipboard(props) {
7
7
  if (navigator.clipboard && navigator.clipboard.writeText)
8
8
  navigator.clipboard.writeText(props.value);
9
9
  }
10
- return (_jsxs("div", { id: props.id, className: `${Styles.ns_copy_to_clipboard} p-2 ${(_a = props.classList) === null || _a === void 0 ? void 0 : _a.join(" ")}`, style: props.style, children: [_jsx("span", { className: Styles.ns_copy_to_clipboard_title, children: props.title }), _jsxs("div", { className: Styles.ns_copy_to_clipboard_value, children: [_jsx("img", { className: Styles.ns_copy_to_clipboard_icon, src: IconInputString, alt: "Copy Icon", width: 24, height: 24, onClick: copyToClipboard }), _jsx("span", { children: props.value })] })] }));
10
+ return (_jsx("div", { id: props.id, className: `${Styles.ns_copy_to_clipboard} p-2 ${(_a = props.classList) === null || _a === void 0 ? void 0 : _a.join(" ")}`, style: props.style, children: _jsxs("div", { className: Styles.ns_copy_to_clipboard_value, children: [_jsx("p", { className: "m-0", children: props.value }), _jsx("img", { className: Styles.ns_copy_to_clipboard_icon, src: IconInputString, alt: "Copy Icon", width: 24, height: 24, onClick: copyToClipboard })] }) }));
11
11
  }
12
12
  //# sourceMappingURL=NSCopyToClipboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NSCopyToClipboard.js","sourceRoot":"","sources":["../../src/components/NSCopyToClipboard.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,gCAAgC,CAAC;AACpD,OAAO,eAAe,MAAM,sCAAsC,CAAC;AASnE,MAAM,UAAU,iBAAiB,CAAC,KAA8B;;IAE5D,SAAS,eAAe;QAEpB,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS;YACpD,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CACH,eAAK,EAAE,EAAE,KAAK,CAAC,EAAE,EACb,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAoB,QAAQ,MAAA,KAAK,CAAC,SAAS,0CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAC7E,KAAK,EAAE,KAAK,CAAC,KAAK,aAElB,eAAM,SAAS,EAAE,MAAM,CAAC,0BAA0B,YAAG,KAAK,CAAC,KAAK,GAAQ,EACxE,eAAK,SAAS,EAAE,MAAM,CAAC,0BAA0B,aAC7C,cACI,SAAS,EAAE,MAAM,CAAC,yBAAyB,EAC3C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAC,WAAW,EACf,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,OAAO,EAAE,eAAe,GAC1B,EACF,yBAAO,KAAK,CAAC,KAAK,GAAQ,IACxB,IACJ,CACT,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"NSCopyToClipboard.js","sourceRoot":"","sources":["../../src/components/NSCopyToClipboard.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,gCAAgC,CAAC;AACpD,OAAO,eAAe,MAAM,sCAAsC,CAAC;AASnE,MAAM,UAAU,iBAAiB,CAAC,KAA8B;;IAE5D,SAAS,eAAe;QAEpB,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS;YACpD,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CACH,cAAK,EAAE,EAAE,KAAK,CAAC,EAAE,EACb,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAoB,QAAQ,MAAA,KAAK,CAAC,SAAS,0CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAC7E,KAAK,EAAE,KAAK,CAAC,KAAK,YAElB,eAAK,SAAS,EAAE,MAAM,CAAC,0BAA0B,aAC7C,YAAG,SAAS,EAAC,KAAK,YAAE,KAAK,CAAC,KAAK,GAAK,EACpC,cACI,SAAS,EAAE,MAAM,CAAC,yBAAyB,EAC3C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAC,WAAW,EACf,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,OAAO,EAAE,eAAe,GAC1B,IACA,GACJ,CACT,CAAC;AACN,CAAC"}
@@ -1,10 +1,11 @@
1
1
  .ns_copy_to_clipboard {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- width: 272px;
4
+ width: 416px;
5
5
  color: #fff;
6
6
  position: relative;
7
7
  max-width: 100%;
8
+ margin: 0 auto;
8
9
  }
9
10
 
10
11
  .ns_copy_to_clipboard_value {
@@ -12,24 +13,21 @@
12
13
  padding: 10px 12px;
13
14
  font-size: 16px;
14
15
  font-weight: 400;
15
- background-color: #0000;
16
+ background-color: rgba(20, 27, 92, 0.3);
16
17
  text-align: center;
17
- border: 1px solid rgba(20, 27, 92, 1);
18
18
  overflow: hidden;
19
+ display: flex;
20
+ gap: 16px;
21
+ align-items: center;
22
+ border-radius: 8px;
19
23
  }
20
24
 
21
- .ns_copy_to_clipboard_value span {
25
+ .ns_copy_to_clipboard_value p {
22
26
  color: rgba(20, 27, 92, 1);
23
27
  width: 100%;
24
28
  display: inline-block;
25
29
  overflow: hidden;
26
- }
27
-
28
- .ns_copy_to_clipboard_icon {
29
- position: absolute;
30
- right: 20px;
31
- top: 64%;
32
- z-index: 1;
30
+ word-wrap: break-word;
33
31
  }
34
32
 
35
33
  .ns_copy_to_clipboard_title {
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
+ interface TabRow {
4
+ label: string;
5
+ content: React.ReactNode;
6
+ }
7
+ export interface NSTabBarProps extends IBaseComponentProps {
8
+ tabs: TabRow[];
9
+ }
10
+ export declare function NSTabBar(props: NSTabBarProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import Styles from './NSTabBar.module.css';
3
+ import { useState } from "react";
4
+ export function NSTabBar(props) {
5
+ const [activeTab, setActiveTab] = useState(1);
6
+ const handleTabClick = (index) => {
7
+ setActiveTab(index);
8
+ };
9
+ return (_jsxs("div", { className: `container ${Styles.ns_tab_bar}`, children: [_jsx("ul", { children: props.tabs.map((tab, index) => (_jsx("li", { className: activeTab === index ? Styles.active : '', onClick: () => handleTabClick(index), children: tab.label }, index))) }), _jsx("div", { className: Styles.ns_tab_content, children: props.tabs[activeTab].content })] }));
10
+ }
11
+ //# sourceMappingURL=NSTabBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NSTabBar.js","sourceRoot":"","sources":["../../src/components/NSTabBar.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAYjC,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAEzC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE;QAErC,YAAY,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,OAAO,CACH,eAAK,SAAS,EAAE,aAAa,MAAM,CAAC,UAAU,EAAE,aAC5C,uBACK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,aAEI,SAAS,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC,EAAE,EACpD,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,YAEnC,GAAG,CAAC,KAAK,IAJL,KAAK,CAKT,CACR,CAAC,GACD,EACL,cAAK,SAAS,EAAE,MAAM,CAAC,cAAc,YAChC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,GAC5B,IACJ,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,35 @@
1
+ .ns_tab_bar {
2
+ border-radius: 8px;
3
+ overflow: hidden;
4
+ background: #141B5C66;
5
+ padding: 16px;
6
+ }
7
+
8
+ .ns_tab_bar ul {
9
+ list-style-type: none;
10
+ margin: 0;
11
+ padding: 0;
12
+ display: flex;
13
+ }
14
+
15
+ .ns_tab_bar li {
16
+ flex: 1;
17
+ text-align: center;
18
+ padding: 10px;
19
+ cursor: pointer;
20
+ border-right: 1px solid #ccc;
21
+ }
22
+
23
+ .ns_tab_bar li:last-child {
24
+ border-right: none;
25
+ }
26
+
27
+ .ns_tab_bar li.active {
28
+ background-color: #ccc;
29
+ }
30
+
31
+ .ns_tab_content {
32
+ padding: 16px;
33
+ border-radius: 0 0 8px 8px;
34
+ background-color: #FFFFFF99;
35
+ }
package/dist/main.d.ts CHANGED
@@ -38,6 +38,7 @@ export * from "./components/NSLinkGreen";
38
38
  export * from "./components/NSLinkRed";
39
39
  export * from "./components/NSPagination";
40
40
  export * from "./components/NSTable";
41
+ export * from "./components/NSTabBar";
41
42
  export * from "./components/NSTitle";
42
43
  export * from "./pages/NSLoginPage";
43
44
  export * from "./pages/NSNotFoundPage";
package/dist/main.js CHANGED
@@ -38,6 +38,7 @@ export * from "./components/NSLinkGreen";
38
38
  export * from "./components/NSLinkRed";
39
39
  export * from "./components/NSPagination";
40
40
  export * from "./components/NSTable";
41
+ export * from "./components/NSTabBar";
41
42
  export * from "./components/NSTitle";
42
43
  export * from "./pages/NSLoginPage";
43
44
  export * from "./pages/NSNotFoundPage";
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.3.85",
11
+ "version": "1.3.87",
12
12
  "author": "Amir Abolhasani, Alireza Esmaeeli, Sepideh Mazloumi, Hooman Shashaeh",
13
13
  "license": "MIT",
14
14
  "main": "./dist/main.js",
@@ -22,8 +22,8 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@types/node": "^20.12.7",
25
- "@types/react": "^18.2.79",
26
- "@types/react-dom": "^18.2.25",
25
+ "@types/react": "^18.3.1",
26
+ "@types/react-dom": "^18.3.0",
27
27
  "antd": "^5.16.4",
28
28
  "bootstrap": "^5.3.3",
29
29
  "copyfiles": "^2.4.1",
@@ -31,12 +31,12 @@
31
31
  "namirasoft-api-link": "^1.3.3",
32
32
  "namirasoft-core": "^1.3.19",
33
33
  "path-browserify": "^1.0.1",
34
- "react": "^18.2.0",
34
+ "react": "^18.3.1",
35
35
  "react-app-rewired": "^2.2.1",
36
36
  "react-bootstrap": "^2.10.2",
37
- "react-dom": "^18.2.0",
37
+ "react-dom": "^18.3.1",
38
38
  "react-phone-input-2": "^2.15.1",
39
- "react-phone-number-input": "^3.4.0",
39
+ "react-phone-number-input": "^3.4.1",
40
40
  "react-router-dom": "^6.23.0",
41
41
  "react-scripts": "5.0.1"
42
42
  },
package/src/App.tsx CHANGED
@@ -1,10 +1,15 @@
1
1
  import './App.css';
2
2
  import 'bootstrap/dist/css/bootstrap.min.css';
3
- import { NSFooter, NSHeader, NSTable } from './main';
3
+ import { NSFooter, NSHeader, NSTable, NSTabBar } from './main';
4
4
  import { useRef } from 'react';
5
5
 
6
6
  export function App()
7
7
  {
8
+ const tabs = [
9
+ { label: 'Information', content: <p>Content for Tab 1</p> },
10
+ { label: 'Price History', content: <p>Content for Tab 2</p> },
11
+ { label: 'Price Estimator', content: <p>Content for Tab 3</p> }
12
+ ];
8
13
  let columns = {
9
14
  "id": "ID",
10
15
  "project": "Project",
@@ -62,7 +67,9 @@ export function App()
62
67
  getColumnAttributes={() => { return {} }}
63
68
  getRowKey={row => row.id.toString()}
64
69
  />
70
+ <NSTabBar tabs={tabs} />
65
71
  </div>
72
+
66
73
  <NSFooter name='Footer' scope='Namira Software Corporation' logo='https://static.namirasoft.com/image/namirasoft/site/logo/base.png' />
67
74
  </>
68
75
  );
@@ -1,10 +1,11 @@
1
1
  .ns_copy_to_clipboard {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- width: 272px;
4
+ width: 416px;
5
5
  color: #fff;
6
6
  position: relative;
7
7
  max-width: 100%;
8
+ margin: 0 auto;
8
9
  }
9
10
 
10
11
  .ns_copy_to_clipboard_value {
@@ -12,24 +13,21 @@
12
13
  padding: 10px 12px;
13
14
  font-size: 16px;
14
15
  font-weight: 400;
15
- background-color: #0000;
16
+ background-color: rgba(20, 27, 92, 0.3);
16
17
  text-align: center;
17
- border: 1px solid rgba(20, 27, 92, 1);
18
18
  overflow: hidden;
19
+ display: flex;
20
+ gap: 16px;
21
+ align-items: center;
22
+ border-radius: 8px;
19
23
  }
20
24
 
21
- .ns_copy_to_clipboard_value span {
25
+ .ns_copy_to_clipboard_value p {
22
26
  color: rgba(20, 27, 92, 1);
23
27
  width: 100%;
24
28
  display: inline-block;
25
29
  overflow: hidden;
26
- }
27
-
28
- .ns_copy_to_clipboard_icon {
29
- position: absolute;
30
- right: 20px;
31
- top: 64%;
32
- z-index: 1;
30
+ word-wrap: break-word;
33
31
  }
34
32
 
35
33
  .ns_copy_to_clipboard_title {
@@ -20,8 +20,8 @@ export function NSCopyToClipboard(props: INSCopyToClipboardProps)
20
20
  className={`${Styles.ns_copy_to_clipboard} p-2 ${props.classList?.join(" ")}`}
21
21
  style={props.style}
22
22
  >
23
- <span className={Styles.ns_copy_to_clipboard_title}>{props.title}</span>
24
23
  <div className={Styles.ns_copy_to_clipboard_value}>
24
+ <p className="m-0">{props.value}</p>
25
25
  <img
26
26
  className={Styles.ns_copy_to_clipboard_icon}
27
27
  src={IconInputString}
@@ -30,7 +30,6 @@ export function NSCopyToClipboard(props: INSCopyToClipboardProps)
30
30
  height={24}
31
31
  onClick={copyToClipboard}
32
32
  />
33
- <span>{props.value}</span>
34
33
  </div>
35
34
  </div>
36
35
  );
@@ -0,0 +1,35 @@
1
+ .ns_tab_bar {
2
+ border-radius: 8px;
3
+ overflow: hidden;
4
+ background: #141B5C66;
5
+ padding: 16px;
6
+ }
7
+
8
+ .ns_tab_bar ul {
9
+ list-style-type: none;
10
+ margin: 0;
11
+ padding: 0;
12
+ display: flex;
13
+ }
14
+
15
+ .ns_tab_bar li {
16
+ flex: 1;
17
+ text-align: center;
18
+ padding: 10px;
19
+ cursor: pointer;
20
+ border-right: 1px solid #ccc;
21
+ }
22
+
23
+ .ns_tab_bar li:last-child {
24
+ border-right: none;
25
+ }
26
+
27
+ .ns_tab_bar li.active {
28
+ background-color: #ccc;
29
+ }
30
+
31
+ .ns_tab_content {
32
+ padding: 16px;
33
+ border-radius: 0 0 8px 8px;
34
+ background-color: #FFFFFF99;
35
+ }
@@ -0,0 +1,41 @@
1
+ import Styles from './NSTabBar.module.css';
2
+ import { IBaseComponentProps } from "../props/IBaseComponentProps";
3
+ import { useState } from "react";
4
+
5
+ interface TabRow
6
+ {
7
+ label: string;
8
+ content: React.ReactNode;
9
+ }
10
+ export interface NSTabBarProps extends IBaseComponentProps
11
+ {
12
+ tabs: TabRow[]
13
+ }
14
+
15
+ export function NSTabBar(props: NSTabBarProps)
16
+ {
17
+ const [activeTab, setActiveTab] = useState(1);
18
+
19
+ const handleTabClick = (index: number) =>
20
+ {
21
+ setActiveTab(index);
22
+ };
23
+ return (
24
+ <div className={`container ${Styles.ns_tab_bar}`}>
25
+ <ul>
26
+ {props.tabs.map((tab, index) => (
27
+ <li
28
+ key={index}
29
+ className={activeTab === index ? Styles.active : ''}
30
+ onClick={() => handleTabClick(index)}
31
+ >
32
+ {tab.label}
33
+ </li>
34
+ ))}
35
+ </ul>
36
+ <div className={Styles.ns_tab_content}>
37
+ {props.tabs[activeTab].content}
38
+ </div>
39
+ </div>
40
+ );
41
+ }
package/src/main.ts CHANGED
@@ -38,6 +38,7 @@ export * from "./components/NSLinkGreen";
38
38
  export * from "./components/NSLinkRed";
39
39
  export * from "./components/NSPagination";
40
40
  export * from "./components/NSTable";
41
+ export * from "./components/NSTabBar";
41
42
  export * from "./components/NSTitle";
42
43
  export * from "./pages/NSLoginPage";
43
44
  export * from "./pages/NSNotFoundPage";