@solidxai/core-ui 0.1.8-beta.7 → 0.1.8-beta.9

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 (143) hide show
  1. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  2. package/dist/components/auth/AuthLayout.js +16 -32
  3. package/dist/components/auth/AuthLayout.js.map +1 -1
  4. package/dist/components/auth/AuthLayout.tsx +4 -20
  5. package/dist/components/auth/AuthTabs.d.ts.map +1 -1
  6. package/dist/components/auth/AuthTabs.js +9 -9
  7. package/dist/components/auth/AuthTabs.js.map +1 -1
  8. package/dist/components/auth/AuthTabs.tsx +14 -15
  9. package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
  10. package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
  11. package/dist/components/auth/SolidOTPVerify.js +67 -0
  12. package/dist/components/auth/SolidOTPVerify.js.map +1 -0
  13. package/dist/components/auth/SolidOTPVerify.tsx +133 -0
  14. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  15. package/dist/components/auth/SolidRegister.js +1 -1
  16. package/dist/components/auth/SolidRegister.js.map +1 -1
  17. package/dist/components/auth/SolidRegister.tsx +12 -5
  18. package/dist/components/common/AuthBanner.js.map +1 -1
  19. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  20. package/dist/components/common/GeneralSettings.js +41 -46
  21. package/dist/components/common/GeneralSettings.js.map +1 -1
  22. package/dist/components/common/GeneralSettings.tsx +0 -19
  23. package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
  24. package/dist/components/common/SolidThemeProvider.js +5 -21
  25. package/dist/components/common/SolidThemeProvider.js.map +1 -1
  26. package/dist/components/common/SolidThemeProvider.tsx +6 -24
  27. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
  28. package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
  29. package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
  30. package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
  31. package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
  32. package/dist/components/core/form/SolidFormView.js +42 -41
  33. package/dist/components/core/form/SolidFormView.js.map +1 -1
  34. package/dist/components/core/form/SolidFormView.tsx +16 -16
  35. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.d.ts +1 -1
  36. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js +1 -1
  37. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js.map +1 -1
  38. package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +1 -1
  39. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  40. package/dist/components/core/kanban/SolidKanbanView.js +41 -44
  41. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  42. package/dist/components/core/kanban/SolidKanbanView.tsx +16 -25
  43. package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -1
  44. package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
  45. package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +2 -1
  46. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
  47. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +2 -2
  48. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
  49. package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +10 -21
  50. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
  51. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +2 -2
  52. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
  53. package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +10 -18
  54. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
  55. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +6 -3
  56. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
  57. package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +24 -30
  58. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
  59. package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +2 -2
  60. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  61. package/dist/components/core/list/SolidListView.js +3 -11
  62. package/dist/components/core/list/SolidListView.js.map +1 -1
  63. package/dist/components/core/list/SolidListView.tsx +27 -48
  64. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +1 -1
  65. package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -1
  66. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +7 -6
  67. package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
  68. package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +10 -9
  69. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.css +283 -9
  70. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts.map +1 -1
  71. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js +35 -28
  72. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js.map +1 -1
  73. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.tsx +64 -62
  74. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts +2 -1
  75. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts.map +1 -1
  76. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js +4 -4
  77. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js.map +1 -1
  78. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.tsx +17 -10
  79. package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.d.ts.map +1 -1
  80. package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js +2 -19
  81. package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js.map +1 -1
  82. package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.tsx +24 -43
  83. package/dist/components/core/users/CreateUser.css +114 -0
  84. package/dist/components/core/users/CreateUser.d.ts +1 -0
  85. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  86. package/dist/components/core/users/CreateUser.js +4 -3
  87. package/dist/components/core/users/CreateUser.js.map +1 -1
  88. package/dist/components/core/users/CreateUser.tsx +32 -26
  89. package/dist/components/layout/context/layoutcontext.js +2 -2
  90. package/dist/components/layout/context/layoutcontext.js.map +1 -1
  91. package/dist/components/layout/context/layoutcontext.tsx +2 -2
  92. package/dist/components/shad-cn-ui/SolidConfirmDialog.d.ts +6 -1
  93. package/dist/components/shad-cn-ui/SolidConfirmDialog.d.ts.map +1 -1
  94. package/dist/components/shad-cn-ui/SolidConfirmDialog.js +3 -3
  95. package/dist/components/shad-cn-ui/SolidConfirmDialog.js.map +1 -1
  96. package/dist/components/shad-cn-ui/SolidConfirmDialog.tsx +15 -3
  97. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
  98. package/dist/components/shad-cn-ui/SolidTabs.js +2 -2
  99. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
  100. package/dist/components/shad-cn-ui/SolidTabs.tsx +0 -2
  101. package/dist/nextAuth/authProviders.d.ts +4 -0
  102. package/dist/nextAuth/authProviders.d.ts.map +1 -0
  103. package/dist/nextAuth/authProviders.js +198 -0
  104. package/dist/nextAuth/authProviders.js.map +1 -0
  105. package/dist/nextAuth/authProviders.tsx +232 -0
  106. package/dist/nextAuth/handleLogout.d.ts +2 -0
  107. package/dist/nextAuth/handleLogout.d.ts.map +1 -0
  108. package/dist/nextAuth/handleLogout.js +36 -0
  109. package/dist/nextAuth/handleLogout.js.map +1 -0
  110. package/dist/nextAuth/handleLogout.tsx +39 -0
  111. package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
  112. package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
  113. package/dist/nextAuth/refreshAccessToken.js +24 -0
  114. package/dist/nextAuth/refreshAccessToken.js.map +1 -0
  115. package/dist/nextAuth/refreshAccessToken.tsx +28 -0
  116. package/dist/redux/features/settingsSlice.d.ts +20 -0
  117. package/dist/redux/features/settingsSlice.d.ts.map +1 -0
  118. package/dist/redux/features/settingsSlice.js +39 -0
  119. package/dist/redux/features/settingsSlice.js.map +1 -0
  120. package/dist/redux/features/settingsSlice.ts +60 -0
  121. package/dist/resources/globals.css +97 -77
  122. package/dist/resources/shadcn-base.css +62 -304
  123. package/package.json +1 -1
  124. package/dist/components/core/list/SolidDataTablePagination.d.ts +0 -15
  125. package/dist/components/core/list/SolidDataTablePagination.d.ts.map +0 -1
  126. package/dist/components/core/list/SolidDataTablePagination.js +0 -22
  127. package/dist/components/core/list/SolidDataTablePagination.js.map +0 -1
  128. package/dist/components/core/list/SolidDataTablePagination.tsx +0 -71
  129. package/dist/components/solid-ui/SolidButton.d.ts +0 -14
  130. package/dist/components/solid-ui/SolidButton.d.ts.map +0 -1
  131. package/dist/components/solid-ui/SolidButton.js +0 -36
  132. package/dist/components/solid-ui/SolidButton.js.map +0 -1
  133. package/dist/components/solid-ui/SolidButton.tsx +0 -54
  134. package/dist/components/solid-ui/SolidTabs.d.ts +0 -18
  135. package/dist/components/solid-ui/SolidTabs.d.ts.map +0 -1
  136. package/dist/components/solid-ui/SolidTabs.js +0 -22
  137. package/dist/components/solid-ui/SolidTabs.js.map +0 -1
  138. package/dist/components/solid-ui/SolidTabs.tsx +0 -73
  139. package/dist/components/solid-ui/index.d.ts +0 -3
  140. package/dist/components/solid-ui/index.d.ts.map +0 -1
  141. package/dist/components/solid-ui/index.js +0 -3
  142. package/dist/components/solid-ui/index.js.map +0 -1
  143. package/dist/components/solid-ui/index.ts +0 -2
@@ -13,7 +13,7 @@ export const LayoutProvider = ({ children }: ChildContainerProps) => {
13
13
  return stored;
14
14
  }
15
15
 
16
- return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
16
+ return "light";
17
17
  };
18
18
 
19
19
  const [themeMode, setThemeMode] = useState<"light" | "dark">(getInitialThemeMode);
@@ -21,7 +21,7 @@ export const LayoutProvider = ({ children }: ChildContainerProps) => {
21
21
  inputStyle: 'outlined',
22
22
  colorScheme: themeMode,
23
23
  theme: 'solid-light-purple',
24
- scale: 14,
24
+ scale: 15,
25
25
  authLayout: 'Center'
26
26
  });
27
27
 
@@ -8,7 +8,12 @@ type SolidConfirmDialogProps = {
8
8
  onConfirm: () => void;
9
9
  onCancel: () => void;
10
10
  className?: string;
11
+ headerClassName?: string;
12
+ bodyClassName?: string;
13
+ footerClassName?: string;
14
+ separatorClassName?: string;
15
+ showSeparator?: boolean;
11
16
  };
12
- export declare function SolidConfirmDialog({ open, title, message, confirmLabel, cancelLabel, onConfirm, onCancel, className, }: SolidConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function SolidConfirmDialog({ open, title, message, confirmLabel, cancelLabel, onConfirm, onCancel, className, headerClassName, bodyClassName, footerClassName, separatorClassName, showSeparator, }: SolidConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
13
18
  export {};
14
19
  //# sourceMappingURL=SolidConfirmDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,KAAiB,EACjB,OAAO,EACP,YAAwB,EACxB,WAAsB,EACtB,SAAS,EACT,QAAQ,EACR,SAAS,GACV,EAAE,uBAAuB,2CAkBzB"}
1
+ {"version":3,"file":"SolidConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,KAAiB,EACjB,OAAO,EACP,YAAwB,EACxB,WAAsB,EACtB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,eAAe,EACf,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,aAAqB,GACtB,EAAE,uBAAuB,2CAmBzB"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogFooter, SolidDialogHeader, SolidDialogTitle, } from "./SolidDialog";
2
+ import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogFooter, SolidDialogHeader, SolidDialogSeparator, SolidDialogTitle, } from "./SolidDialog";
3
3
  import { SolidButton } from "./SolidButton";
4
4
  export function SolidConfirmDialog(_a) {
5
- var open = _a.open, _b = _a.title, title = _b === void 0 ? "Confirm" : _b, message = _a.message, _c = _a.confirmLabel, confirmLabel = _c === void 0 ? "Confirm" : _c, _d = _a.cancelLabel, cancelLabel = _d === void 0 ? "Cancel" : _d, onConfirm = _a.onConfirm, onCancel = _a.onCancel, className = _a.className;
6
- return (_jsxs(SolidDialog, { open: open, onOpenChange: function (val) { return !val && onCancel(); }, className: className, children: [_jsxs(SolidDialogHeader, { children: [_jsx(SolidDialogTitle, { children: title }), _jsx(SolidDialogClose, { "aria-label": "Close" })] }), _jsx(SolidDialogBody, { children: message }), _jsxs(SolidDialogFooter, { children: [_jsx(SolidButton, { variant: "outline", size: "sm", onClick: onCancel, children: cancelLabel }), _jsx(SolidButton, { variant: "destructive", size: "sm", onClick: onConfirm, children: confirmLabel })] })] }));
5
+ var open = _a.open, _b = _a.title, title = _b === void 0 ? "Confirm" : _b, message = _a.message, _c = _a.confirmLabel, confirmLabel = _c === void 0 ? "Confirm" : _c, _d = _a.cancelLabel, cancelLabel = _d === void 0 ? "Cancel" : _d, onConfirm = _a.onConfirm, onCancel = _a.onCancel, className = _a.className, headerClassName = _a.headerClassName, bodyClassName = _a.bodyClassName, footerClassName = _a.footerClassName, separatorClassName = _a.separatorClassName, _e = _a.showSeparator, showSeparator = _e === void 0 ? false : _e;
6
+ return (_jsxs(SolidDialog, { open: open, onOpenChange: function (val) { return !val && onCancel(); }, className: className, children: [_jsxs(SolidDialogHeader, { className: headerClassName, children: [_jsx(SolidDialogTitle, { children: title }), _jsx(SolidDialogClose, { "aria-label": "Close" })] }), showSeparator ? _jsx(SolidDialogSeparator, { className: separatorClassName }) : null, _jsx(SolidDialogBody, { className: bodyClassName, children: message }), _jsxs(SolidDialogFooter, { className: footerClassName, children: [_jsx(SolidButton, { variant: "outline", size: "sm", onClick: onCancel, children: cancelLabel }), _jsx(SolidButton, { variant: "destructive", size: "sm", onClick: onConfirm, children: confirmLabel })] })] }));
7
7
  }
8
8
  //# sourceMappingURL=SolidConfirmDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidConfirmDialog.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidConfirmDialog.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAa5C,MAAM,UAAU,kBAAkB,CAAC,EAST;QARxB,IAAI,UAAA,EACJ,aAAiB,EAAjB,KAAK,mBAAG,SAAS,KAAA,EACjB,OAAO,aAAA,EACP,oBAAwB,EAAxB,YAAY,mBAAG,SAAS,KAAA,EACxB,mBAAsB,EAAtB,WAAW,mBAAG,QAAQ,KAAA,EACtB,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,SAAS,eAAA;IAET,OAAO,CACL,MAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,UAAC,GAAG,IAAK,OAAA,CAAC,GAAG,IAAI,QAAQ,EAAE,EAAlB,CAAkB,EAAE,SAAS,EAAE,SAAS,aACtF,MAAC,iBAAiB,eAChB,KAAC,gBAAgB,cAAE,KAAK,GAAoB,EAC5C,KAAC,gBAAgB,kBAAY,OAAO,GAAG,IACrB,EACpB,KAAC,eAAe,cAAE,OAAO,GAAmB,EAC5C,MAAC,iBAAiB,eAChB,KAAC,WAAW,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,QAAQ,YACvD,WAAW,GACA,EACd,KAAC,WAAW,IAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,SAAS,YAC5D,YAAY,GACD,IACI,IACR,CACf,CAAC;AACJ,CAAC","sourcesContent":["import React from \"react\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogTitle,\n} from \"./SolidDialog\";\nimport { SolidButton } from \"./SolidButton\";\n\ntype SolidConfirmDialogProps = {\n open: boolean;\n title?: string;\n message?: React.ReactNode;\n confirmLabel?: string;\n cancelLabel?: string;\n onConfirm: () => void;\n onCancel: () => void;\n className?: string;\n};\n\nexport function SolidConfirmDialog({\n open,\n title = \"Confirm\",\n message,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onCancel,\n className,\n}: SolidConfirmDialogProps) {\n return (\n <SolidDialog open={open} onOpenChange={(val) => !val && onCancel()} className={className}>\n <SolidDialogHeader>\n <SolidDialogTitle>{title}</SolidDialogTitle>\n <SolidDialogClose aria-label=\"Close\" />\n </SolidDialogHeader>\n <SolidDialogBody>{message}</SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={onCancel}>\n {cancelLabel}\n </SolidButton>\n <SolidButton variant=\"destructive\" size=\"sm\" onClick={onConfirm}>\n {confirmLabel}\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n );\n}\n"]}
1
+ {"version":3,"file":"SolidConfirmDialog.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidConfirmDialog.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAkB5C,MAAM,UAAU,kBAAkB,CAAC,EAcT;QAbxB,IAAI,UAAA,EACJ,aAAiB,EAAjB,KAAK,mBAAG,SAAS,KAAA,EACjB,OAAO,aAAA,EACP,oBAAwB,EAAxB,YAAY,mBAAG,SAAS,KAAA,EACxB,mBAAsB,EAAtB,WAAW,mBAAG,QAAQ,KAAA,EACtB,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,eAAe,qBAAA,EACf,aAAa,mBAAA,EACb,eAAe,qBAAA,EACf,kBAAkB,wBAAA,EAClB,qBAAqB,EAArB,aAAa,mBAAG,KAAK,KAAA;IAErB,OAAO,CACL,MAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,UAAC,GAAG,IAAK,OAAA,CAAC,GAAG,IAAI,QAAQ,EAAE,EAAlB,CAAkB,EAAE,SAAS,EAAE,SAAS,aACtF,MAAC,iBAAiB,IAAC,SAAS,EAAE,eAAe,aAC3C,KAAC,gBAAgB,cAAE,KAAK,GAAoB,EAC5C,KAAC,gBAAgB,kBAAY,OAAO,GAAG,IACrB,EACnB,aAAa,CAAC,CAAC,CAAC,KAAC,oBAAoB,IAAC,SAAS,EAAE,kBAAkB,GAAI,CAAC,CAAC,CAAC,IAAI,EAC/E,KAAC,eAAe,IAAC,SAAS,EAAE,aAAa,YAAG,OAAO,GAAmB,EACtE,MAAC,iBAAiB,IAAC,SAAS,EAAE,eAAe,aAC3C,KAAC,WAAW,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,QAAQ,YACvD,WAAW,GACA,EACd,KAAC,WAAW,IAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,SAAS,YAC5D,YAAY,GACD,IACI,IACR,CACf,CAAC;AACJ,CAAC","sourcesContent":["import React from \"react\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"./SolidDialog\";\nimport { SolidButton } from \"./SolidButton\";\n\ntype SolidConfirmDialogProps = {\n open: boolean;\n title?: string;\n message?: React.ReactNode;\n confirmLabel?: string;\n cancelLabel?: string;\n onConfirm: () => void;\n onCancel: () => void;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n separatorClassName?: string;\n showSeparator?: boolean;\n};\n\nexport function SolidConfirmDialog({\n open,\n title = \"Confirm\",\n message,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onCancel,\n className,\n headerClassName,\n bodyClassName,\n footerClassName,\n separatorClassName,\n showSeparator = false,\n}: SolidConfirmDialogProps) {\n return (\n <SolidDialog open={open} onOpenChange={(val) => !val && onCancel()} className={className}>\n <SolidDialogHeader className={headerClassName}>\n <SolidDialogTitle>{title}</SolidDialogTitle>\n <SolidDialogClose aria-label=\"Close\" />\n </SolidDialogHeader>\n {showSeparator ? <SolidDialogSeparator className={separatorClassName} /> : null}\n <SolidDialogBody className={bodyClassName}>{message}</SolidDialogBody>\n <SolidDialogFooter className={footerClassName}>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={onCancel}>\n {cancelLabel}\n </SolidButton>\n <SolidButton variant=\"destructive\" size=\"sm\" onClick={onConfirm}>\n {confirmLabel}\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n );\n}\n"]}
@@ -5,6 +5,7 @@ import {
5
5
  SolidDialogClose,
6
6
  SolidDialogFooter,
7
7
  SolidDialogHeader,
8
+ SolidDialogSeparator,
8
9
  SolidDialogTitle,
9
10
  } from "./SolidDialog";
10
11
  import { SolidButton } from "./SolidButton";
@@ -18,6 +19,11 @@ type SolidConfirmDialogProps = {
18
19
  onConfirm: () => void;
19
20
  onCancel: () => void;
20
21
  className?: string;
22
+ headerClassName?: string;
23
+ bodyClassName?: string;
24
+ footerClassName?: string;
25
+ separatorClassName?: string;
26
+ showSeparator?: boolean;
21
27
  };
22
28
 
23
29
  export function SolidConfirmDialog({
@@ -29,15 +35,21 @@ export function SolidConfirmDialog({
29
35
  onConfirm,
30
36
  onCancel,
31
37
  className,
38
+ headerClassName,
39
+ bodyClassName,
40
+ footerClassName,
41
+ separatorClassName,
42
+ showSeparator = false,
32
43
  }: SolidConfirmDialogProps) {
33
44
  return (
34
45
  <SolidDialog open={open} onOpenChange={(val) => !val && onCancel()} className={className}>
35
- <SolidDialogHeader>
46
+ <SolidDialogHeader className={headerClassName}>
36
47
  <SolidDialogTitle>{title}</SolidDialogTitle>
37
48
  <SolidDialogClose aria-label="Close" />
38
49
  </SolidDialogHeader>
39
- <SolidDialogBody>{message}</SolidDialogBody>
40
- <SolidDialogFooter>
50
+ {showSeparator ? <SolidDialogSeparator className={separatorClassName} /> : null}
51
+ <SolidDialogBody className={bodyClassName}>{message}</SolidDialogBody>
52
+ <SolidDialogFooter className={footerClassName}>
41
53
  <SolidButton variant="outline" size="sm" onClick={onCancel}>
42
54
  {cancelLabel}
43
55
  </SolidButton>
@@ -1 +1 @@
1
- {"version":3,"file":"SolidTabs.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CAAC;AAMF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,QAE7C;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,aAAa,EACb,SAAS,EACT,aAAa,EACb,cAAc,EACd,WAAoB,EACpB,KAAK,GACN,EAAE,kBAAkB,2CAiFpB"}
1
+ {"version":3,"file":"SolidTabs.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,aAAa,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB,CAAC;AAMF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,QAE7C;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,aAAa,EACb,SAAS,EACT,aAAa,EACb,cAAc,EACd,WAAoB,EACpB,KAAK,GACN,EAAE,kBAAkB,2CA+EpB"}
@@ -13,10 +13,10 @@ export function SolidTabGroup(_a) {
13
13
  var tabs = _a.tabs, value = _a.value, onValueChange = _a.onValueChange, className = _a.className, listClassName = _a.listClassName, panelClassName = _a.panelClassName, _b = _a.tabPosition, tabPosition = _b === void 0 ? "left" : _b, extra = _a.extra;
14
14
  return (_jsxs("div", { className: cx("solid-notebook", "solid-tabs", "solid-tabs--".concat(tabPosition), className), children: [_jsxs("div", { className: cx("solid-notebook-tablist", "solid-tabs-list", listClassName), role: "tablist", style: extra ? { display: "flex", alignItems: "center", justifyContent: "space-between" } : undefined, children: [extra ? (_jsx("div", { style: { display: "flex" }, children: tabs.map(function (tab) {
15
15
  var isActive = tab.value === value;
16
- return (_jsx("button", { type: "button", role: "tab", "aria-selected": isActive, "aria-controls": "solid-tab-panel-".concat(tab.value), id: "solid-tab-".concat(tab.value), className: cx("solid-notebook-tab-trigger", "solid-tabs-trigger", "w-full", tab.hasError && "error", isActive && "active", isActive && "is-active"), onClick: function () { return onValueChange(tab.value); }, children: tab.label }, tab.value));
16
+ return (_jsx("button", { type: "button", role: "tab", "aria-selected": isActive, "aria-controls": "solid-tab-panel-".concat(tab.value), id: "solid-tab-".concat(tab.value), className: cx("solid-notebook-tab-trigger", "solid-tabs-trigger", tab.hasError && "error", isActive && "active", isActive && "is-active"), onClick: function () { return onValueChange(tab.value); }, children: tab.label }, tab.value));
17
17
  }) })) : (tabs.map(function (tab) {
18
18
  var isActive = tab.value === value;
19
- return (_jsx("button", { type: "button", role: "tab", "aria-selected": isActive, "aria-controls": "solid-tab-panel-".concat(tab.value), id: "solid-tab-".concat(tab.value), className: cx("solid-notebook-tab-trigger", "solid-tabs-trigger", "w-full", tab.hasError && "error", isActive && "active", isActive && "is-active"), onClick: function () { return onValueChange(tab.value); }, children: tab.label }, tab.value));
19
+ return (_jsx("button", { type: "button", role: "tab", "aria-selected": isActive, "aria-controls": "solid-tab-panel-".concat(tab.value), id: "solid-tab-".concat(tab.value), className: cx("solid-notebook-tab-trigger", "solid-tabs-trigger", tab.hasError && "error", isActive && "active", isActive && "is-active"), onClick: function () { return onValueChange(tab.value); }, children: tab.label }, tab.value));
20
20
  })), extra && _jsx("div", { children: extra })] }), tabs.map(function (tab) {
21
21
  var isActive = tab.value === value;
22
22
  return (_jsx("div", { role: "tabpanel", id: "solid-tab-panel-".concat(tab.value), "aria-labelledby": "solid-tab-".concat(tab.value), hidden: !isActive, className: cx("solid-notebook-content", "solid-tabs-panel", panelClassName), children: isActive ? tab.content : null }, tab.value));
@@ -1 +1 @@
1
- {"version":3,"file":"SolidTabs.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidTabs.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\ntype SolidTabProps = {\n value: string;\n label: React.ReactNode;\n content: React.ReactNode;\n hasError?: boolean;\n};\n\ntype SolidTabGroupProps = {\n tabs: SolidTabProps[];\n value: string;\n onValueChange: (value: string) => void;\n className?: string;\n listClassName?: string;\n panelClassName?: string;\n tabPosition?: \"left\" | \"center\" | \"right\";\n extra?: React.ReactNode;\n};\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport function SolidTab(_props: SolidTabProps) {\n return null;\n}\n\nexport function SolidTabGroup({\n tabs,\n value,\n onValueChange,\n className,\n listClassName,\n panelClassName,\n tabPosition = \"left\",\n extra,\n}: SolidTabGroupProps) {\n return (\n <div className={cx(\"solid-notebook\", \"solid-tabs\", `solid-tabs--${tabPosition}`, className)}>\n <div\n className={cx(\"solid-notebook-tablist\", \"solid-tabs-list\", listClassName)}\n role=\"tablist\"\n style={extra ? { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" } : undefined}\n >\n {extra ? (\n <div style={{ display: \"flex\" }}>\n {tabs.map((tab) => {\n const isActive = tab.value === value;\n return (\n <button\n key={tab.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`solid-tab-panel-${tab.value}`}\n id={`solid-tab-${tab.value}`}\n className={cx(\n \"solid-notebook-tab-trigger\",\n \"solid-tabs-trigger\",\n \"w-full\",\n tab.hasError && \"error\",\n isActive && \"active\",\n isActive && \"is-active\",\n )}\n onClick={() => onValueChange(tab.value)}\n >\n {tab.label}\n </button>\n );\n })}\n </div>\n ) : (\n tabs.map((tab) => {\n const isActive = tab.value === value;\n return (\n <button\n key={tab.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`solid-tab-panel-${tab.value}`}\n id={`solid-tab-${tab.value}`}\n className={cx(\n \"solid-notebook-tab-trigger\",\n \"solid-tabs-trigger\",\n \"w-full\",\n tab.hasError && \"error\",\n isActive && \"active\",\n isActive && \"is-active\",\n )}\n onClick={() => onValueChange(tab.value)}\n >\n {tab.label}\n </button>\n );\n })\n )}\n {extra && <div>{extra}</div>}\n </div>\n\n {tabs.map((tab) => {\n const isActive = tab.value === value;\n return (\n <div\n key={tab.value}\n role=\"tabpanel\"\n id={`solid-tab-panel-${tab.value}`}\n aria-labelledby={`solid-tab-${tab.value}`}\n hidden={!isActive}\n className={cx(\"solid-notebook-content\", \"solid-tabs-panel\", panelClassName)}\n >\n {isActive ? tab.content : null}\n </div>\n );\n })}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"SolidTabs.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidTabs.tsx"],"names":[],"mappings":";AAoBA,SAAS,EAAE;IAAC,eAA2C;SAA3C,UAA2C,EAA3C,qBAA2C,EAA3C,IAA2C;QAA3C,0BAA2C;;IACrD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAqB;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAST;QARnB,IAAI,UAAA,EACJ,KAAK,WAAA,EACL,aAAa,mBAAA,EACb,SAAS,eAAA,EACT,aAAa,mBAAA,EACb,cAAc,oBAAA,EACd,mBAAoB,EAApB,WAAW,mBAAG,MAAM,KAAA,EACpB,KAAK,WAAA;IAEL,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,sBAAe,WAAW,CAAE,EAAE,SAAS,CAAC,aACzF,eACE,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,EAAE,aAAa,CAAC,EACzE,IAAI,EAAC,SAAS,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,aAEpG,KAAK,CAAC,CAAC,CAAC,CACP,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAC5B,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG;4BACZ,IAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;4BACrC,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,mBACK,QAAQ,mBACR,0BAAmB,GAAG,CAAC,KAAK,CAAE,EAC7C,EAAE,EAAE,oBAAa,GAAG,CAAC,KAAK,CAAE,EAC5B,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B,oBAAoB,EACpB,GAAG,CAAC,QAAQ,IAAI,OAAO,EACvB,QAAQ,IAAI,QAAQ,EACpB,QAAQ,IAAI,WAAW,CACxB,EACD,OAAO,EAAE,cAAM,OAAA,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAxB,CAAwB,YAEtC,GAAG,CAAC,KAAK,IAfL,GAAG,CAAC,KAAK,CAgBP,CACV,CAAC;wBACJ,CAAC,CAAC,GACE,CACP,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG;wBACX,IAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;wBACrC,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,mBACK,QAAQ,mBACR,0BAAmB,GAAG,CAAC,KAAK,CAAE,EAC7C,EAAE,EAAE,oBAAa,GAAG,CAAC,KAAK,CAAE,EAC5B,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B,oBAAoB,EACpB,GAAG,CAAC,QAAQ,IAAI,OAAO,EACvB,QAAQ,IAAI,QAAQ,EACpB,QAAQ,IAAI,WAAW,CACxB,EACD,OAAO,EAAE,cAAM,OAAA,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAxB,CAAwB,YAEtC,GAAG,CAAC,KAAK,IAfL,GAAG,CAAC,KAAK,CAgBP,CACV,CAAC;oBACJ,CAAC,CAAC,CACH,EACA,KAAK,IAAI,wBAAM,KAAK,GAAO,IACxB,EAEL,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG;gBACZ,IAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;gBACrC,OAAO,CACL,cAEE,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,0BAAmB,GAAG,CAAC,KAAK,CAAE,qBACjB,oBAAa,GAAG,CAAC,KAAK,CAAE,EACzC,MAAM,EAAE,CAAC,QAAQ,EACjB,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,cAAc,CAAC,YAE1E,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAPzB,GAAG,CAAC,KAAK,CAQV,CACP,CAAC;YACJ,CAAC,CAAC,IACE,CACP,CAAC;AACJ,CAAC","sourcesContent":["import React from \"react\";\n\ntype SolidTabProps = {\n value: string;\n label: React.ReactNode;\n content: React.ReactNode;\n hasError?: boolean;\n};\n\ntype SolidTabGroupProps = {\n tabs: SolidTabProps[];\n value: string;\n onValueChange: (value: string) => void;\n className?: string;\n listClassName?: string;\n panelClassName?: string;\n tabPosition?: \"left\" | \"center\" | \"right\";\n extra?: React.ReactNode;\n};\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport function SolidTab(_props: SolidTabProps) {\n return null;\n}\n\nexport function SolidTabGroup({\n tabs,\n value,\n onValueChange,\n className,\n listClassName,\n panelClassName,\n tabPosition = \"left\",\n extra,\n}: SolidTabGroupProps) {\n return (\n <div className={cx(\"solid-notebook\", \"solid-tabs\", `solid-tabs--${tabPosition}`, className)}>\n <div\n className={cx(\"solid-notebook-tablist\", \"solid-tabs-list\", listClassName)}\n role=\"tablist\"\n style={extra ? { display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" } : undefined}\n >\n {extra ? (\n <div style={{ display: \"flex\" }}>\n {tabs.map((tab) => {\n const isActive = tab.value === value;\n return (\n <button\n key={tab.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`solid-tab-panel-${tab.value}`}\n id={`solid-tab-${tab.value}`}\n className={cx(\n \"solid-notebook-tab-trigger\",\n \"solid-tabs-trigger\",\n tab.hasError && \"error\",\n isActive && \"active\",\n isActive && \"is-active\",\n )}\n onClick={() => onValueChange(tab.value)}\n >\n {tab.label}\n </button>\n );\n })}\n </div>\n ) : (\n tabs.map((tab) => {\n const isActive = tab.value === value;\n return (\n <button\n key={tab.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`solid-tab-panel-${tab.value}`}\n id={`solid-tab-${tab.value}`}\n className={cx(\n \"solid-notebook-tab-trigger\",\n \"solid-tabs-trigger\",\n tab.hasError && \"error\",\n isActive && \"active\",\n isActive && \"is-active\",\n )}\n onClick={() => onValueChange(tab.value)}\n >\n {tab.label}\n </button>\n );\n })\n )}\n {extra && <div>{extra}</div>}\n </div>\n\n {tabs.map((tab) => {\n const isActive = tab.value === value;\n return (\n <div\n key={tab.value}\n role=\"tabpanel\"\n id={`solid-tab-panel-${tab.value}`}\n aria-labelledby={`solid-tab-${tab.value}`}\n hidden={!isActive}\n className={cx(\"solid-notebook-content\", \"solid-tabs-panel\", panelClassName)}\n >\n {isActive ? tab.content : null}\n </div>\n );\n })}\n </div>\n );\n}\n"]}
@@ -58,7 +58,6 @@ export function SolidTabGroup({
58
58
  className={cx(
59
59
  "solid-notebook-tab-trigger",
60
60
  "solid-tabs-trigger",
61
- "w-full",
62
61
  tab.hasError && "error",
63
62
  isActive && "active",
64
63
  isActive && "is-active",
@@ -84,7 +83,6 @@ export function SolidTabGroup({
84
83
  className={cx(
85
84
  "solid-notebook-tab-trigger",
86
85
  "solid-tabs-trigger",
87
- "w-full",
88
86
  tab.hasError && "error",
89
87
  isActive && "active",
90
88
  isActive && "is-active",
@@ -0,0 +1,4 @@
1
+ import { NextAuthOptions } from "next-auth";
2
+ declare const authProviders: NextAuthOptions;
3
+ export default authProviders;
4
+ //# sourceMappingURL=authProviders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authProviders.d.ts","sourceRoot":"./","sources":["nextAuth/authProviders.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAW5C,QAAA,MAAM,aAAa,EAAE,eAqNpB,CAAA;AAED,eAAe,aAAa,CAAA"}
@@ -0,0 +1,198 @@
1
+ import CredentialsProvider from "next-auth/providers/credentials";
2
+ import GoogleProvider from "next-auth/providers/google";
3
+ import { jwtDecode } from "jwt-decode";
4
+ import axios from "axios";
5
+ import { refreshAccessToken } from "./refreshAccessToken";
6
+ const authProviders = {
7
+ session: {
8
+ strategy: "jwt",
9
+ },
10
+ providers: [
11
+ GoogleProvider({
12
+ clientId: process.env.GOOGLE_ID,
13
+ clientSecret: process.env.GOOGLE_CLIENT_SECRET
14
+ }),
15
+ CredentialsProvider({
16
+ // @ts-ignore
17
+ async authorize(credentials, req) {
18
+ const userAgent = req.headers['user-agent'];
19
+ const { username, email, password, identifier, accessToken, accessCode } = credentials;
20
+ console.log(credentials, '=========================');
21
+ try {
22
+ if (accessCode) {
23
+ let config = {
24
+ method: 'get',
25
+ url: `${process.env.API_URL}/api/iam/google/authenticate?accessCode=${accessCode}`,
26
+ headers: {
27
+ 'User-Agent': userAgent,
28
+ }
29
+ };
30
+ const loginResponse = await axios.request(config);
31
+ if (loginResponse.status == 400) {
32
+ throw new Error(loginResponse.data.message);
33
+ }
34
+ if (loginResponse.status == 401) {
35
+ throw new Error(loginResponse.data.message);
36
+ }
37
+ let base64decoded = jwtDecode(loginResponse.data.data.accessToken);
38
+ // let accessTokenExpires = base64decoded.exp;
39
+ let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;
40
+ return {
41
+ accessToken: loginResponse.data.data.accessToken,
42
+ refreshToken: loginResponse.data.data.refreshToken,
43
+ accessTokenExpires: accessTokenExpires,
44
+ ...loginResponse.data.data,
45
+ };
46
+ }
47
+ else {
48
+ if (accessToken) {
49
+ let data = JSON.stringify({
50
+ username: identifier,
51
+ email: identifier.includes('@') ? identifier : null,
52
+ password: password
53
+ });
54
+ let config = {
55
+ method: 'get',
56
+ url: `${process.env.API_URL}/api/iam/me`,
57
+ headers: {
58
+ 'accept': '*/*',
59
+ 'Content-Type': 'application/json',
60
+ 'Authorization': `Bearer ${accessToken}`
61
+ }
62
+ };
63
+ const loginResponse = await axios.request(config);
64
+ if (loginResponse.status == 400) {
65
+ throw new Error(loginResponse.data.message);
66
+ }
67
+ if (loginResponse.status == 401) {
68
+ throw new Error(loginResponse.data.message);
69
+ }
70
+ let base64decoded = jwtDecode(accessToken);
71
+ // let accessTokenExpires = base64decoded.exp;
72
+ let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;
73
+ return {
74
+ accessToken: accessToken,
75
+ refreshToken: loginResponse.data.data.refreshToken,
76
+ accessTokenExpires: accessTokenExpires,
77
+ ...loginResponse.data.data,
78
+ };
79
+ }
80
+ else {
81
+ let data = JSON.stringify({
82
+ username: identifier,
83
+ email: identifier.includes('@') ? identifier : null,
84
+ password: password
85
+ });
86
+ let config = {
87
+ method: 'post',
88
+ maxBodyLength: Infinity,
89
+ url: `${process.env.API_URL}/api/iam/authenticate`,
90
+ headers: {
91
+ 'accept': '*/*',
92
+ 'Content-Type': 'application/json',
93
+ 'User-Agent': userAgent,
94
+ },
95
+ data: data
96
+ };
97
+ const loginResponse = await axios.request(config);
98
+ // const authenticateResponse = await fetch(
99
+ // `${process.env.API_URL}/api/iam/authenticate`,
100
+ // {
101
+ // method: "Post",
102
+ // headers: {
103
+ // 'accept': '*/*',
104
+ // "Content-Type": "application/json"
105
+ // },
106
+ // body: JSON.stringify({
107
+ // username: email,
108
+ // email: email,
109
+ // password: password
110
+ // })
111
+ // }
112
+ // );
113
+ // const loginResponse = await authenticateResponse.json();
114
+ // const response = await fetch(
115
+ // `${process.env.API_URL}/api/iam/me`,
116
+ // {
117
+ // method: "Get",
118
+ // headers: {
119
+ // "Content-Type": "application/json",
120
+ // "Authorization": `Bearer ${loginResponse.data.accessToken}`,
121
+ // },
122
+ // }
123
+ // );
124
+ // const responseData = await response.json();
125
+ if (loginResponse.status == 400) {
126
+ throw new Error(loginResponse.data.message);
127
+ }
128
+ if (loginResponse.status == 401) {
129
+ throw new Error(loginResponse.data.data.message);
130
+ }
131
+ let base64decoded = jwtDecode(loginResponse.data.data.accessToken);
132
+ // let accessTokenExpires = base64decoded.exp;
133
+ let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;
134
+ const returnResponse = {
135
+ accessToken: loginResponse.data.data.accessToken,
136
+ refreshToken: loginResponse.data.data.refreshToken,
137
+ accessTokenExpires: accessTokenExpires,
138
+ ...loginResponse.data.data,
139
+ };
140
+ return returnResponse;
141
+ }
142
+ }
143
+ }
144
+ catch (error) {
145
+ throw new Error(error?.response?.data?.message);
146
+ }
147
+ },
148
+ }),
149
+ ],
150
+ callbacks: {
151
+ // @ts-ignore
152
+ jwt: async ({ token, user }) => {
153
+ // console.log("JWT callback called");
154
+ const bufferTime = 60000;
155
+ if (Date.now() >= (token.accessTokenExpires - bufferTime)) {
156
+ // Call the refresh token function
157
+ return await refreshAccessToken(token);
158
+ }
159
+ // If there is no user (first time login or session), we return the user data
160
+ if (user) {
161
+ // const base64decoded = jwtDecode(user.accessToken);
162
+ // Convert from seconds to milliseconds
163
+ // const accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;
164
+ // const accessTokenExpires = user.accessTokenExpires * 1000;
165
+ return {
166
+ ...token,
167
+ accessToken: user.accessToken,
168
+ refreshToken: user.refreshToken,
169
+ accessTokenExpires: user.accessTokenExpires,
170
+ user: user, // Include the user data here
171
+ };
172
+ }
173
+ return token; // If no update needed, just return the existing token
174
+ },
175
+ // @ts-ignore
176
+ session: async ({ session, token }) => {
177
+ // console.log("Session callback called");
178
+ const user = token.user || {}; // Default to an empty object if user is undefined or null
179
+ session.error = token.error ? token.error : null;
180
+ // if (token.error) {
181
+ // return null
182
+ // }
183
+ session.user = {
184
+ ...user,
185
+ accessToken: token?.accessToken,
186
+ refreshToken: token?.refreshToken,
187
+ accessTokenExpires: token?.accessTokenExpires && token?.accessTokenExpires, // Store the expiry time
188
+ };
189
+ return session;
190
+ },
191
+ },
192
+ pages: {
193
+ signIn: "/auth/login",
194
+ },
195
+ secret: process.env.NEXTAUTH_SECRET,
196
+ };
197
+ export default authProviders;
198
+ //# sourceMappingURL=authProviders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authProviders.js","sourceRoot":"./","sources":["nextAuth/authProviders.tsx"],"names":[],"mappings":"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","sourcesContent":["import CredentialsProvider from \"next-auth/providers/credentials\";\nimport GoogleProvider from \"next-auth/providers/google\";\nimport { NextRequest } from \"next/server\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { JWT } from \"next-auth/jwt\";\nimport axios from \"axios\";\nimport { signOut } from \"next-auth/react\";\nimport { refreshAccessToken } from \"./refreshAccessToken\";\nimport { NextAuthOptions } from \"next-auth\";\n\ntype Credentials = {\n username: string,\n email: string,\n password: string,\n identifier:string,\n accessToken: string,\n accessCode: string,\n};\n\nconst authProviders: NextAuthOptions = {\n session: {\n strategy: \"jwt\",\n },\n providers: [\n GoogleProvider({\n clientId: process.env.GOOGLE_ID!,\n clientSecret: process.env.GOOGLE_CLIENT_SECRET!\n }),\n CredentialsProvider({\n // @ts-ignore\n async authorize(credentials: Credentials, req: any) {\n const userAgent = req.headers['user-agent'];\n\n const { username, email, password, identifier, accessToken, accessCode } = credentials;\n\n console.log(credentials , '=========================');\n \n try {\n if (accessCode) {\n let config = {\n method: 'get',\n url: `${process.env.API_URL}/api/iam/google/authenticate?accessCode=${accessCode}`,\n headers: {\n 'User-Agent': userAgent,\n }\n };\n const loginResponse = await axios.request(config);\n if (loginResponse.status == 400) {\n throw new Error(loginResponse.data.message);\n }\n if (loginResponse.status == 401) {\n throw new Error(loginResponse.data.message);\n }\n\n let base64decoded = jwtDecode(loginResponse.data.data.accessToken);\n // let accessTokenExpires = base64decoded.exp;\n let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;\n\n return {\n accessToken: loginResponse.data.data.accessToken,\n refreshToken: loginResponse.data.data.refreshToken,\n accessTokenExpires: accessTokenExpires,\n ...loginResponse.data.data,\n };\n\n } else {\n if (accessToken) {\n let data = JSON.stringify({\n username: identifier,\n email: identifier.includes('@')? identifier : null,\n password: password\n });\n\n let config = {\n method: 'get',\n url: `${process.env.API_URL}/api/iam/me`,\n headers: {\n 'accept': '*/*',\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${accessToken}`\n }\n };\n\n\n const loginResponse = await axios.request(config);\n\n if (loginResponse.status == 400) {\n throw new Error(loginResponse.data.message);\n }\n if (loginResponse.status == 401) {\n throw new Error(loginResponse.data.message);\n }\n \n let base64decoded = jwtDecode(accessToken);\n // let accessTokenExpires = base64decoded.exp;\n let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;\n\n return {\n accessToken: accessToken,\n refreshToken: loginResponse.data.data.refreshToken,\n accessTokenExpires: accessTokenExpires,\n ...loginResponse.data.data,\n };\n\n } else {\n\n let data = JSON.stringify({\n username: identifier,\n email: identifier.includes('@')? identifier : null,\n password: password\n });\n\n let config = {\n method: 'post',\n maxBodyLength: Infinity,\n url: `${process.env.API_URL}/api/iam/authenticate`,\n headers: {\n 'accept': '*/*',\n 'Content-Type': 'application/json',\n 'User-Agent': userAgent,\n },\n data: data\n };\n\n\n const loginResponse = await axios.request(config);\n\n // const authenticateResponse = await fetch(\n // `${process.env.API_URL}/api/iam/authenticate`,\n // {\n // method: \"Post\",\n // headers: {\n // 'accept': '*/*', \n // \"Content-Type\": \"application/json\"\n // },\n // body: JSON.stringify({\n // username: email,\n // email: email,\n // password: password\n // })\n // }\n // );\n\n // const loginResponse = await authenticateResponse.json();\n\n // const response = await fetch(\n // `${process.env.API_URL}/api/iam/me`,\n // {\n // method: \"Get\",\n // headers: {\n // \"Content-Type\": \"application/json\",\n // \"Authorization\": `Bearer ${loginResponse.data.accessToken}`,\n // },\n // }\n // );\n\n // const responseData = await response.json();\n\n if (loginResponse.status == 400) {\n throw new Error(loginResponse.data.message);\n }\n if (loginResponse.status == 401) {\n throw new Error(loginResponse.data.data.message);\n }\n let base64decoded = jwtDecode(loginResponse.data.data.accessToken);\n // let accessTokenExpires = base64decoded.exp;\n let accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000;\n const returnResponse = {\n accessToken: loginResponse.data.data.accessToken,\n refreshToken: loginResponse.data.data.refreshToken,\n accessTokenExpires: accessTokenExpires,\n ...loginResponse.data.data,\n }\n return returnResponse;\n }\n }\n } catch (error: any) {\n throw new Error(error?.response?.data?.message);\n }\n },\n }),\n ],\n callbacks: {\n // @ts-ignore\n jwt: async ({ token, user }) => {\n // console.log(\"JWT callback called\");\n const bufferTime = 60000;\n if (Date.now() >= (token.accessTokenExpires as number - bufferTime)) {\n // Call the refresh token function\n return await refreshAccessToken(token);\n }\n\n // If there is no user (first time login or session), we return the user data\n if (user) {\n // const base64decoded = jwtDecode(user.accessToken);\n // Convert from seconds to milliseconds\n // const accessTokenExpires = base64decoded.exp && base64decoded.exp * 1000; \n // const accessTokenExpires = user.accessTokenExpires * 1000; \n return {\n ...token,\n accessToken: user.accessToken,\n refreshToken: user.refreshToken,\n accessTokenExpires: user.accessTokenExpires,\n user: user, // Include the user data here\n };\n }\n\n return token; // If no update needed, just return the existing token\n },\n // @ts-ignore\n session: async ({ session, token }) => {\n // console.log(\"Session callback called\");\n\n const user = token.user || {}; // Default to an empty object if user is undefined or null\n session.error = token.error ? token.error : null;\n // if (token.error) {\n // return null\n // }\n session.user = {\n ...user, // Include the user info from the token\n accessToken: token?.accessToken, // Add the access token to session for client use\n refreshToken: token?.refreshToken, // Add refresh token to session for future use\n accessTokenExpires: token?.accessTokenExpires && token?.accessTokenExpires, // Store the expiry time\n };\n return session;\n\n },\n },\n pages: {\n signIn: \"/auth/login\",\n },\n secret: process.env.NEXTAUTH_SECRET,\n}\n\nexport default authProviders"]}