@solidstarters/solid-core-ui 1.1.43 → 1.1.45

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 (79) hide show
  1. package/dist/components/common/SolidModuleHome.d.ts +1 -5
  2. package/dist/components/common/SolidModuleHome.d.ts.map +1 -1
  3. package/dist/components/common/SolidModuleHome.js +2 -8
  4. package/dist/components/common/SolidModuleHome.js.map +1 -1
  5. package/dist/components/common/SolidThemeProvider.d.ts +2 -0
  6. package/dist/components/common/SolidThemeProvider.d.ts.map +1 -0
  7. package/dist/components/common/SolidThemeProvider.js +38 -0
  8. package/dist/components/common/SolidThemeProvider.js.map +1 -0
  9. package/dist/components/core/form/fields/SolidEmailField.js +1 -1
  10. package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
  11. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  12. package/dist/components/core/kanban/KanbanBoard.js +11 -11
  13. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  14. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  15. package/dist/components/core/kanban/KanbanCard.js +33 -7
  16. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  17. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  18. package/dist/components/core/kanban/KanbanColumn.js +4 -3
  19. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  20. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  21. package/dist/components/core/kanban/SolidKanbanView.js +34 -33
  22. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  23. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js +1 -1
  24. package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js.map +1 -1
  25. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js +1 -1
  26. package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js.map +1 -1
  27. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js +1 -1
  28. package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js.map +1 -1
  29. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js +1 -1
  30. package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js.map +1 -1
  31. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js +1 -1
  32. package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js.map +1 -1
  33. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js +1 -1
  34. package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js.map +1 -1
  35. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
  36. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +39 -15
  37. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
  38. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
  39. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +17 -7
  40. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
  41. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js +1 -1
  42. package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js.map +1 -1
  43. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js +1 -1
  44. package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js.map +1 -1
  45. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
  46. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +8 -8
  47. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
  48. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js +1 -1
  49. package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js.map +1 -1
  50. package/dist/components/core/list/SolidListViewConfigure.js +1 -1
  51. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  52. package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
  53. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +20 -19
  54. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  55. package/dist/resources/globals.css +71 -22
  56. package/package.json +1 -1
  57. package/publish.js +3 -0
  58. package/src/components/common/SolidModuleHome.tsx +52 -59
  59. package/src/components/common/SolidThemeProvider.tsx +44 -0
  60. package/src/components/core/form/fields/SolidEmailField.tsx +1 -1
  61. package/src/components/core/kanban/KanbanBoard.tsx +36 -34
  62. package/src/components/core/kanban/KanbanCard.tsx +37 -24
  63. package/src/components/core/kanban/KanbanColumn.tsx +10 -5
  64. package/src/components/core/kanban/SolidKanbanView.tsx +30 -42
  65. package/src/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +1 -1
  66. package/src/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +1 -1
  67. package/src/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +1 -1
  68. package/src/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +1 -1
  69. package/src/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +1 -1
  70. package/src/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +1 -1
  71. package/src/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +106 -38
  72. package/src/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +61 -16
  73. package/src/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +1 -1
  74. package/src/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +1 -1
  75. package/src/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +14 -13
  76. package/src/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +1 -1
  77. package/src/components/core/list/SolidListViewConfigure.tsx +1 -1
  78. package/src/components/core/list/columns/SolidMediaSingleColumn.tsx +43 -33
  79. package/src/resources/globals.css +71 -22
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMediaSingleColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaSingleColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAKnE,QAAA,MAAM,sBAAsB,uFAAwF,yBAAyB,4CAmD5I,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"SolidMediaSingleColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaSingleColumn.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AA8BnE,QAAA,MAAM,sBAAsB,uFAAwF,yBAAyB,4CAqC5I,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -1,33 +1,34 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useState } from 'react';
3
4
  import { Column } from "primereact/column";
5
+ import { classNames } from 'primereact/utils';
6
+ var isImageFile = function (url) {
7
+ return /\.(jpg|jpeg|png|gif|bmp|webp)$/i.test(url);
8
+ };
9
+ var MediaWithFallback = function (_a) {
10
+ var src = _a.src, alt = _a.alt, onClick = _a.onClick;
11
+ var _b = useState(false), isBroken = _b[0], setIsBroken = _b[1];
12
+ return (_jsx("div", { style: { width: 40, height: 40, display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: !isBroken && isImageFile(src) ? (_jsx("img", { src: src, alt: alt, className: "shadow-2 border-round", width: 40, height: 40, style: { objectFit: "cover" }, onError: function () { return setIsBroken(true); }, onClick: onClick })) : (_jsx("i", { className: classNames(isImageFile(src) ? "pi pi-image" : "pi pi-file", "text-3xl text-gray-400") }) // Image or file icon
13
+ ) }));
14
+ };
4
15
  var SolidMediaSingleColumn = function (_a) {
5
- // const filterable = column.attrs.filterable;
6
16
  var _b;
7
17
  var solidListViewMetaData = _a.solidListViewMetaData, fieldMetadata = _a.fieldMetadata, column = _a.column, setLightboxUrls = _a.setLightboxUrls, setOpenLightbox = _a.setOpenLightbox;
8
- var filterable = false;
9
- var showFilterOperator = false;
10
- var columnDataType = undefined;
11
18
  var header = (_b = column.attrs.label) !== null && _b !== void 0 ? _b : fieldMetadata.displayName;
12
- var imageBodyTemplate = function (product) {
19
+ var mediaBodyTemplate = function (product) {
13
20
  var _a;
14
21
  if (!((_a = product === null || product === void 0 ? void 0 : product._media) === null || _a === void 0 ? void 0 : _a[fieldMetadata.name]))
15
22
  return null;
16
- var imageUrls = product._media[fieldMetadata.name].map(function (i) { return i._full_url; });
17
- return (imageUrls.length > 0 ?
18
- _jsx("img", { src: imageUrls[0], alt: "product-image-single", className: "shadow-2 border-round", width: 40, height: 40, style: { objectFit: "cover" }, onClick: function (event) {
19
- event.stopPropagation();
20
- setLightboxUrls([{ src: imageUrls[0], downloadUrl: imageUrls[0] }]);
21
- setOpenLightbox(true);
22
- } })
23
- :
24
- _jsx("div", { style: { height: 40, width: 40 } }));
23
+ var mediaUrls = product._media[fieldMetadata.name].map(function (i) { return i._full_url; });
24
+ return (mediaUrls.length > 0 ? (_jsx(MediaWithFallback, { src: mediaUrls[0], alt: "product-media", onClick: function (event) {
25
+ event.stopPropagation();
26
+ setLightboxUrls([{ src: mediaUrls[0], downloadUrl: mediaUrls[0] }]);
27
+ setOpenLightbox(true);
28
+ } })) : (_jsx("i", { className: "pi pi-image text-3xl text-gray-400" }) // Default fallback icon
29
+ ));
25
30
  };
26
- return (_jsx(Column, { field: fieldMetadata.name, header: header, body: imageBodyTemplate,
27
- // className="text-sm"
28
- sortable: column.attrs.sortable,
29
- // filter={filterable}
30
- dataType: columnDataType, showFilterOperator: showFilterOperator, filterPlaceholder: "Search by ".concat(fieldMetadata.displayName), style: { minWidth: "12rem" }, headerClassName: "table-header-fs" }, fieldMetadata.name));
31
+ return (_jsx(Column, { field: fieldMetadata.name, header: header, body: mediaBodyTemplate, sortable: column.attrs.sortable, showFilterOperator: false, filterPlaceholder: "Search by ".concat(fieldMetadata.displayName), style: { minWidth: "12rem" }, headerClassName: "table-header-fs" }, fieldMetadata.name));
31
32
  };
32
33
  export default SolidMediaSingleColumn;
33
34
  //# sourceMappingURL=SolidMediaSingleColumn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMediaSingleColumn.js","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaSingleColumn.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAsC,MAAM,mBAAmB,CAAC;AAO/E,IAAM,sBAAsB,GAAG,UAAC,EAA6G;IACzI,8CAA8C;;QADhB,qBAAqB,2BAAA,EAAE,aAAa,mBAAA,EAAE,MAAM,YAAA,EAAE,eAAe,qBAAA,EAAE,eAAe,qBAAA;IAG5G,IAAM,UAAU,GAAG,KAAK,CAAC;IACzB,IAAM,kBAAkB,GAAG,KAAK,CAAC;IACjC,IAAM,cAAc,GAAG,SAAS,CAAC;IACjC,IAAM,MAAM,GAAG,MAAA,MAAM,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC/D,IAAM,iBAAiB,GAAG,UAAC,OAAY;;QACnC,IAAI,CAAC,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YAAE,OAAO,IAAI,CAAC;QACxD,IAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,SAAS,EAAX,CAAW,CAAC,CAAC;QAElF,OAAO,CACH,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClB,cACI,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EACjB,GAAG,EAAC,sBAAsB,EAC1B,SAAS,EAAC,uBAAuB,EACjC,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAC7B,OAAO,EAAE,UAAC,KAAK;oBACX,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpE,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC,GACH;YACF,CAAC;gBACD,cACI,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAE9B,CACb,CAAC;IACN,CAAC,CAAC;IAEF,OAAO,CACH,KAAC,MAAM,IAEH,KAAK,EAAE,aAAa,CAAC,IAAI,EACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB;QACvB,sBAAsB;QACtB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC/B,sBAAsB;QACtB,QAAQ,EAAE,cAAc,EACxB,kBAAkB,EAAE,kBAAkB,EACtC,iBAAiB,EAAE,oBAAa,aAAa,CAAC,WAAW,CAAE,EAC3D,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC5B,eAAe,EAAC,iBAAiB,IAX5B,aAAa,CAAC,IAAI,CAYjB,CACb,CAAC;AAEN,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"SolidMediaSingleColumn.js","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaSingleColumn.tsx"],"names":[],"mappings":"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"}
@@ -1529,21 +1529,14 @@ li.header-li-px {
1529
1529
  font-size: 0.8rem;
1530
1530
  }
1531
1531
 
1532
- .kanban-options-panel .p-overlaypanel-content {
1533
- padding: 0 !important;
1534
- }
1535
-
1536
- .kanban-options-panel .p-overlaypanel-content span {
1537
- padding: 0 !important;
1538
- font-size: 1rem;
1539
- }
1540
-
1541
1532
  .kanban-column {
1542
1533
  flex: 1;
1543
- max-width: 350px;
1544
- background: #f0f0f5;
1534
+ min-width: 270px;
1535
+ width: 100%;
1536
+ max-width: 270px;
1537
+ /* background: #f0f0f5;
1545
1538
  border: 8px;
1546
- padding: 0.2rem;
1539
+ padding: 0.2rem; */
1547
1540
  }
1548
1541
 
1549
1542
  .kanban-card {
@@ -1565,19 +1558,15 @@ li.header-li-px {
1565
1558
  color: #4b4d52;
1566
1559
  }
1567
1560
 
1568
- .kanban-group-heading {
1569
- font-size: 1rem;
1570
- font-weight: 600;
1571
- letter-spacing: 2px;
1572
- }
1573
-
1574
1561
  .kanban-column-folded {
1575
1562
  flex-grow: 0;
1576
- background: #f0f0f5;
1563
+ background: #F4F4F4;
1577
1564
  border: 8px;
1578
1565
  padding: 5px;
1579
1566
  height: 100%;
1580
- font-size: 1rem;
1567
+ min-width:fit-content;
1568
+ width: 100%;
1569
+ max-width:fit-content;
1581
1570
  }
1582
1571
 
1583
1572
  .kaban-heading-area {
@@ -2902,6 +2891,66 @@ li.header-li-px {
2902
2891
  max-width: calc(20% - 10px);
2903
2892
  }
2904
2893
 
2905
- .image-preview{
2906
- max-width: 100px;
2894
+ .solid-kanban-card {
2895
+ box-shadow: none;
2896
+ border-radius: 0.5rem;
2897
+ border: 1px solid rgba(216, 226, 234, 0.60);
2898
+ background: #FFF;
2899
+ padding: 9px;
2900
+ }
2901
+
2902
+ .kanban-group-heading {
2903
+ font-weight: 600;
2904
+ display: flex;
2905
+ align-items: center;
2906
+ gap: 10px;
2907
+ }
2908
+
2909
+ .kanban-count-badge {
2910
+ display: flex;
2911
+ width: 1.5rem;
2912
+ height: 1.5rem;
2913
+ padding: 0.125rem;
2914
+ justify-content: center;
2915
+ align-items: center;
2916
+ flex-shrink: 0;
2917
+ border-radius: 6.25rem;
2918
+ background: #F6FAFF;
2919
+ font-size: 0.75rem;
2920
+ font-weight: 600;
2921
+ color: var(--primary-color);
2922
+ }
2923
+
2924
+ .kanban-image-preview {
2925
+ /* width: 100px; */
2926
+ /* width: 240px;
2927
+ height: 120px;
2928
+ flex-shrink: 0; */
2929
+ width: 100%;
2930
+ border-radius: 8px;
2931
+ max-height: 120px;
2932
+ }
2933
+
2934
+ .solid-kanban-board-wrapper {
2935
+ border-top: 1px solid #CED0D6;
2936
+ overflow: hidden;
2937
+ height: calc(100vh - 64px) !important;
2938
+ }
2939
+
2940
+ .solid-kanban-board-scroll-context {
2941
+ overflow: auto;
2942
+ height: 100%;
2943
+ }
2944
+
2945
+ .kanban-column-cogwheel.p-button.p-button-icon-only.p-button-rounded {
2946
+ height: 2rem;
2947
+ width: 2rem;
2948
+ }
2949
+
2950
+ .kanban-column-cogwheel.p-button.p-button-secondary.p-button-text:not(:disabled):active {
2951
+ background: transparent;
2952
+ }
2953
+
2954
+ .kanban-column-cogwheel.p-button.p-button-secondary.p-button-text:not(:disabled):hover {
2955
+ background: transparent;
2907
2956
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidstarters/solid-core-ui",
3
- "version": "1.1.43",
3
+ "version": "1.1.45",
4
4
  "scripts": {
5
5
  "prebuild": "npm run copy-styles",
6
6
  "build": "tsc && tsc-alias",
package/publish.js CHANGED
@@ -6,6 +6,9 @@ try {
6
6
  console.log(`🔄 Updating package version (${versionType})...`);
7
7
  execSync(`npm version ${versionType}`, { stdio: "inherit" });
8
8
 
9
+ console.log("📦 Pushing to git ...");
10
+ execSync("git push", { stdio: "inherit" });
11
+
9
12
  console.log("📦 Publishing package...");
10
13
  execSync("npm publish", { stdio: "inherit" });
11
14
 
@@ -1,65 +1,58 @@
1
1
  "use client"
2
- import { Card } from "primereact/card"
3
- type SolidModuleParams = {
4
- moduleName: string;
5
- }
6
- export const SolidModuleHome = (params: SolidModuleParams) => {
7
- const formatName = (moduleName: string) => {
8
- return moduleName
9
- .split('-')
10
- .map(word => word.charAt(0).toUpperCase() + word.slice(1)) // Capitalize each word
11
- .join(' ');
12
- };
2
+
3
+ export const SolidModuleHome = () => {
13
4
  return (
14
- <div className="page-parent-wrapper">
15
- <div className="surface-0 text-center">
16
- <div className="mb-3 font-bold text-3xl">
17
- <span className="text-900">One Product, </span>
18
- <span className="text-blue-600">Many Solutions</span>
19
- </div>
20
- <div className="text-700 mb-6">Ac turpis egestas maecenas pharetra convallis posuere morbi leo urna.</div>
21
- <div className="grid">
22
- <div className="col-12 md:col-4 mb-4 px-5">
23
- <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
24
- <i className="pi pi-desktop text-4xl text-blue-500"></i>
25
- </span>
26
- <div className="text-900 text-xl mb-3 font-medium">Built for Developers</div>
27
- <span className="text-700 line-height-3">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</span>
28
- </div>
29
- <div className="col-12 md:col-4 mb-4 px-5">
30
- <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
31
- <i className="pi pi-lock text-4xl text-blue-500"></i>
32
- </span>
33
- <div className="text-900 text-xl mb-3 font-medium">End-to-End Encryption</div>
34
- <span className="text-700 line-height-3">Risus nec feugiat in fermentum posuere urna nec. Posuere sollicitudin aliquam ultrices sagittis.</span>
35
- </div>
36
- <div className="col-12 md:col-4 mb-4 px-5">
37
- <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
38
- <i className="pi pi-check-circle text-4xl text-blue-500"></i>
39
- </span>
40
- <div className="text-900 text-xl mb-3 font-medium">Easy to Use</div>
41
- <span className="text-700 line-height-3">Ornare suspendisse sed nisi lacus sed viverra tellus. Neque volutpat ac tincidunt vitae semper.</span>
42
- </div>
43
- <div className="col-12 md:col-4 mb-4 px-5">
44
- <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
45
- <i className="pi pi-globe text-4xl text-blue-500"></i>
46
- </span>
47
- <div className="text-900 text-xl mb-3 font-medium">Fast & Global Support</div>
48
- <span className="text-700 line-height-3">Fermentum et sollicitudin ac orci phasellus egestas tellus rutrum tellus.</span>
49
- </div>
50
- <div className="col-12 md:col-4 mb-4 px-5">
51
- <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
52
- <i className="pi pi-github text-4xl text-blue-500"></i>
53
- </span>
54
- <div className="text-900 text-xl mb-3 font-medium">Open Source</div>
55
- <span className="text-700 line-height-3">Nec tincidunt praesent semper feugiat. Sed adipiscing diam donec adipiscing tristique risus nec feugiat. </span>
5
+ <div className="h-screen surface-0 text-center p-5">
6
+ <div className="row">
7
+ <div className="col-11 mx-auto">
8
+ <div className="mb-3 font-bold text-3xl">
9
+ <span className="text-900">One Product, </span>
10
+ <span className="text-primary">Many Solutions</span>
56
11
  </div>
57
- <div className="col-12 md:col-4 md:mb-4 mb-0 px-3">
58
- <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
59
- <i className="pi pi-shield text-4xl text-blue-500"></i>
60
- </span>
61
- <div className="text-900 text-xl mb-3 font-medium">Trusted Securitty</div>
62
- <span className="text-700 line-height-3">Mattis rhoncus urna neque viverra justo nec ultrices. Id cursus metus aliquam eleifend.</span>
12
+ <div className="text-700 mb-6">Ac turpis egestas maecenas pharetra convallis posuere morbi leo urna.</div>
13
+ <div className="grid">
14
+ <div className="col-12 md:col-4 mb-4 px-5">
15
+ <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
16
+ <i className="pi pi-desktop text-4xl text-primary"></i>
17
+ </span>
18
+ <div className="text-900 text-xl mb-3 font-medium">Built for Developers</div>
19
+ <span className="text-700 line-height-3">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</span>
20
+ </div>
21
+ <div className="col-12 md:col-4 mb-4 px-5">
22
+ <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
23
+ <i className="pi pi-lock text-4xl text-primary"></i>
24
+ </span>
25
+ <div className="text-900 text-xl mb-3 font-medium">End-to-End Encryption</div>
26
+ <span className="text-700 line-height-3">Risus nec feugiat in fermentum posuere urna nec. Posuere sollicitudin aliquam ultrices sagittis.</span>
27
+ </div>
28
+ <div className="col-12 md:col-4 mb-4 px-5">
29
+ <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
30
+ <i className="pi pi-check-circle text-4xl text-primary"></i>
31
+ </span>
32
+ <div className="text-900 text-xl mb-3 font-medium">Easy to Use</div>
33
+ <span className="text-700 line-height-3">Ornare suspendisse sed nisi lacus sed viverra tellus. Neque volutpat ac tincidunt vitae semper.</span>
34
+ </div>
35
+ <div className="col-12 md:col-4 mb-4 px-5">
36
+ <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
37
+ <i className="pi pi-globe text-4xl text-primary"></i>
38
+ </span>
39
+ <div className="text-900 text-xl mb-3 font-medium">Fast & Global Support</div>
40
+ <span className="text-700 line-height-3">Fermentum et sollicitudin ac orci phasellus egestas tellus rutrum tellus.</span>
41
+ </div>
42
+ <div className="col-12 md:col-4 mb-4 px-5">
43
+ <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
44
+ <i className="pi pi-github text-4xl text-primary"></i>
45
+ </span>
46
+ <div className="text-900 text-xl mb-3 font-medium">Open Source</div>
47
+ <span className="text-700 line-height-3">Nec tincidunt praesent semper feugiat. Sed adipiscing diam donec adipiscing tristique risus nec feugiat. </span>
48
+ </div>
49
+ <div className="col-12 md:col-4 md:mb-4 mb-0 px-3">
50
+ <span className="p-3 shadow-2 mb-3 inline-block" style={{ borderRadius: '10px' }}>
51
+ <i className="pi pi-shield text-4xl text-primary"></i>
52
+ </span>
53
+ <div className="text-900 text-xl mb-3 font-medium">Trusted Securitty</div>
54
+ <span className="text-700 line-height-3">Mattis rhoncus urna neque viverra justo nec ultrices. Id cursus metus aliquam eleifend.</span>
55
+ </div>
63
56
  </div>
64
57
  </div>
65
58
  </div>
@@ -0,0 +1,44 @@
1
+ "use client";
2
+
3
+ import { useEffect, useState } from "react";
4
+ import { usePathname } from "next/navigation";
5
+ import { useLazyGetAuthSettingsQuery } from "@/redux/api/solidSettingsApi";
6
+
7
+ export const SolidThemeProvider = () => {
8
+ const pathname = usePathname();
9
+ const [trigger, { data: solidSettingsData }] = useLazyGetAuthSettingsQuery()
10
+ const [theme, setTheme] = useState("solid-light-purple");
11
+
12
+ useEffect(() => {
13
+ if (pathname.includes("/auth")) {
14
+ trigger("");
15
+ }
16
+ }, [pathname, trigger]);
17
+
18
+ useEffect(() => {
19
+ if (pathname.includes("/auth") && solidSettingsData?.data?.authPagesTheme) {
20
+ const selectedTheme =
21
+ solidSettingsData.data.authPagesTheme === "dark" ? "solid-dark-purple" : "solid-light-purple";
22
+ setTheme(selectedTheme);
23
+ } else {
24
+ setTheme("solid-light-purple");
25
+ }
26
+ }, [pathname, solidSettingsData]);
27
+
28
+ useEffect(() => {
29
+ // Find or create <link> element
30
+ let themeLink = document.getElementById("theme-css") as HTMLLinkElement;
31
+
32
+ // if (!themeLink) {
33
+ // themeLink = document.createElement("link");
34
+ // themeLink.id = "theme-css";
35
+ // themeLink.rel = "stylesheet";
36
+ // document.head.appendChild(themeLink);
37
+ // }
38
+
39
+ // Update theme link dynamically
40
+ themeLink.href = `/themes/${theme}/theme.css`;
41
+ }, [theme]);
42
+
43
+ return null;
44
+ }
@@ -54,7 +54,7 @@ export class SolidEmailField implements ISolidField {
54
54
  // 3. regular expression
55
55
  if (fieldMetadata.regexPattern) {
56
56
  const regexPatternNotMatchingErrorMsg = fieldMetadata.regexPatternNotMatchingErrorMsg ?? `${fieldLabel} has invalid data.`
57
- schema = schema.matches(fieldMetadata.regexPattern, regexPatternNotMatchingErrorMsg);
57
+ schema = schema.matches(new RegExp(fieldMetadata.regexPattern), regexPatternNotMatchingErrorMsg);
58
58
  }
59
59
 
60
60
  return schema;
@@ -24,7 +24,7 @@ interface ApiResponse {
24
24
  };
25
25
  }
26
26
 
27
- export const KanbanBoard = ({ groupedView, kanbanViewData, solidKanbanViewMetaData, setKanbanViewData, handleLoadMore, onDragEnd, handleSwimLinPagination ,setLightboxUrls, setOpenLightbox }: any) => {
27
+ export const KanbanBoard = ({ groupedView, kanbanViewData, solidKanbanViewMetaData, setKanbanViewData, handleLoadMore, onDragEnd, handleSwimLinPagination, setLightboxUrls, setOpenLightbox }: any) => {
28
28
  const [loading, setLoading] = useState<boolean>(true);
29
29
  // State to manage the folded status of each column
30
30
  const [foldedStates, setFoldedStates] = useState<Record<string, boolean>>({});
@@ -70,9 +70,10 @@ export const KanbanBoard = ({ groupedView, kanbanViewData, solidKanbanViewMetaDa
70
70
  // Render the Kanban board
71
71
  return (
72
72
  //@ts-ignore
73
- <DragDropContext onDragEnd={onDragEnd}>
74
- <div style={{ display: "flex", gap: "1rem", background: "#f0f0f5", padding: "20px" }}>
75
- {/* {Object.entries(kanbanViewData).map(([groupVal, data]) => {
73
+ <div className="solid-kanban-board-wrapper">
74
+ <DragDropContext onDragEnd={onDragEnd}>
75
+ <div className="flex gap-4 px-5 py-4 solid-kanban-board-scroll-context">
76
+ {/* {Object.entries(kanbanViewData).map(([groupVal, data]) => {
76
77
  const group = {
77
78
  label: groupVal,
78
79
  count: data.count,
@@ -90,36 +91,37 @@ export const KanbanBoard = ({ groupedView, kanbanViewData, solidKanbanViewMetaDa
90
91
  />
91
92
  );
92
93
  })} */}
93
- {kanbanViewData.map((data) => {
94
- const group = {
95
- label: data.groupName,
96
- count: data.groupData.meta.totalRecords,
97
- limit: data.groupData.meta.perPage,
98
- currentPage: data.groupData.meta.currentPage,
99
- folded: foldedStates[data.groupName] || false,
100
- };
101
-
102
- return (
103
- <KanbanColumn
104
- key={data.groupName}
105
- groupedView={groupedView}
106
- groupByField={data.groupName}
107
- group={group}
108
- solidKanbanViewMetaData={solidKanbanViewMetaData}
109
- groupData={data.groupData.records}
110
- toggleFold={toggleFold}
111
- handleLoadMore={handleLoadMore}
112
- setLightboxUrls={setLightboxUrls}
113
- setOpenLightbox={setOpenLightbox}
114
- />
115
- );
116
- })}
117
- {groupedView !== false &&
118
- <div className="kanban-load-more-folded">
119
- <a className="kaban-load-more" onClick={handleSwimLinPagination}>load More</a></div>
120
- }
121
- </div>
122
- </DragDropContext>
94
+ {kanbanViewData.map((data) => {
95
+ const group = {
96
+ label: data.groupName,
97
+ count: data.groupData.meta.totalRecords,
98
+ limit: data.groupData.meta.perPage,
99
+ currentPage: data.groupData.meta.currentPage,
100
+ folded: foldedStates[data.groupName] || false,
101
+ };
102
+
103
+ return (
104
+ <KanbanColumn
105
+ key={data.groupName}
106
+ groupedView={groupedView}
107
+ groupByField={data.groupName}
108
+ group={group}
109
+ solidKanbanViewMetaData={solidKanbanViewMetaData}
110
+ groupData={data.groupData.records}
111
+ toggleFold={toggleFold}
112
+ handleLoadMore={handleLoadMore}
113
+ setLightboxUrls={setLightboxUrls}
114
+ setOpenLightbox={setOpenLightbox}
115
+ />
116
+ );
117
+ })}
118
+ {groupedView !== false &&
119
+ <div className="kanban-load-more-folded">
120
+ <a className="kaban-load-more" onClick={handleSwimLinPagination}>load More</a></div>
121
+ }
122
+ </div>
123
+ </DragDropContext>
124
+ </div>
123
125
  );
124
126
  }
125
127
 
@@ -49,41 +49,53 @@ const KanbanCard: React.FC<KanbanCardProps> = ({ data, solidKanbanViewMetaData,
49
49
  const SolidRow = ({ children, attrs }: any) => {
50
50
  const className = attrs.className;
51
51
  return (
52
- <div className={`row ${className}`}>
53
- <div className="s_group">
54
- <div>
55
- {attrs.label && <p className="s_group_heading">{attrs.label}</p>}
56
- <div className="grid">{children}</div>
57
- </div>
52
+ // <div className={`row ${className}`}>
53
+ // <div className="s_group">
54
+ // <div>
55
+ // {attrs.label && <p className="s_group_heading">{attrs.label}</p>}
56
+ // <div className="grid">{children}</div>
57
+ // </div>
58
+ // </div>
59
+ // </div>
60
+ <>
61
+ {attrs.label && <p className="">{attrs.label}</p>}
62
+ <div className={`row ${className}`}>
63
+ {children}
58
64
  </div>
59
- </div>
65
+ </>
60
66
  );
61
67
  };
62
68
  const SolidColumn = ({ children, attrs }: any) => {
63
69
  const className = attrs.className;
64
70
  return (
71
+ // <div className={`${className}`}>
72
+ // <div className="s_group">
73
+ // <div>
74
+ // {attrs.label && <p className="s_group_heading">{attrs.label}</p>}
75
+ // <div className="grid">{children}</div>
76
+ // </div>
77
+ // </div>
78
+ // </div>
65
79
  <div className={`${className}`}>
66
- <div className="s_group">
67
- <div>
68
- {attrs.label && <p className="s_group_heading">{attrs.label}</p>}
69
- <div className="grid">{children}</div>
70
- </div>
71
- </div>
72
-
80
+ {attrs.label && <p className="">{attrs.label}</p>}
81
+ {children}
73
82
  </div>
74
83
  );
75
84
  };
76
85
  const SolidImage = ({ children, attrs }: any) => {
77
86
  const className = attrs.className;
78
87
  return (
88
+ // <div className={`${className}`}>
89
+ // <div className="s_group">
90
+ // <div>
91
+ // {attrs.label && <p className="s_group_heading">{attrs.label}</p>}
92
+ // <div className="grid">{children}</div>
93
+ // </div>
94
+ // </div>
95
+ // </div>
79
96
  <div className={`${className}`}>
80
- <div className="s_group">
81
- <div>
82
- {attrs.label && <p className="s_group_heading">{attrs.label}</p>}
83
- <div className="grid">{children}</div>
84
- </div>
85
- </div>
86
-
97
+ {attrs.label && <p className="">{attrs.label}</p>}
98
+ {children}
87
99
  </div>
88
100
  );
89
101
  };
@@ -157,17 +169,18 @@ const KanbanCard: React.FC<KanbanCardProps> = ({ data, solidKanbanViewMetaData,
157
169
  ref={provided.innerRef}
158
170
  {...provided.draggableProps}
159
171
  {...provided.dragHandleProps}
160
- style={{ marginBottom: "1rem", ...provided.draggableProps.style }}
172
+ style={{ marginTop: "1rem", ...provided.draggableProps.style }}
161
173
  className="kanban-card-container"
162
174
  >
163
175
  {/* <p className="kanban-card-heading">{data.title}</p> */}
164
176
  {/* <p className="kanban-card-content">{data.content}</p> */}
165
- <Card
177
+ <div
166
178
  style={{
167
179
  opacity: snapshot.isDragging ? 0.9 : 1,
168
180
  transform: snapshot.isDragging ? "rotate(-2deg)" : "",
169
181
  }}
170
182
  elevation={snapshot.isDragging ? 3 : 1}
183
+ className="solid-kanban-card"
171
184
  >
172
185
  {renderFormDynamically(solidKanbanViewMetaData)}
173
186
 
@@ -177,7 +190,7 @@ const KanbanCard: React.FC<KanbanCardProps> = ({ data, solidKanbanViewMetaData,
177
190
  ))
178
191
  } */}
179
192
  {/* <p className="kanban-card-content">{data.content}</p> */}
180
- </Card>
193
+ </div>
181
194
  </div>
182
195
  )}
183
196
  </Draggable>
@@ -49,20 +49,25 @@ const KanbanColumn = ({ groupedView, groupByField, solidKanbanViewMetaData, grou
49
49
  <i className="pi pi-sort-up-fill"></i>
50
50
  <i className="pi pi-sort-down-fill"></i>
51
51
  </div>
52
- <p className="kanban-group-heading">{`${group.label}`}<span className="count">{group.count}</span></p>
52
+ <p className="kanban-group-heading">{`${group.label}`}<span className="kanban-count-badge">{group.count}</span></p>
53
53
  </div>
54
54
  </a>
55
55
  }
56
56
 
57
57
  {!group.folded &&
58
58
  <div className="flex align-items-center">
59
- <p className="kanban-group-heading">{`${group.label}`}<span className="count">{group.count}</span></p>
59
+ <p className="kanban-group-heading">{`${group.label}`}<span className="kanban-count-badge">{group.count}</span></p>
60
60
  </div>
61
61
  }
62
62
  {!group.folded &&
63
- <a onClick={(e: any) => op?.current?.toggle(e)}>
64
- < i className="pi pi-cog" />
65
- </a>
63
+ <Button
64
+ onClick={(e: any) => op?.current?.toggle(e)}
65
+ icon='pi pi-cog'
66
+ text
67
+ className="p-0 kanban-column-cogwheel"
68
+ rounded
69
+ severity="secondary"
70
+ />
66
71
  }
67
72
  <OverlayPanel ref={op} className="kanban-options-panel">
68
73