@solidxai/core-ui 0.1.15 → 0.1.16-beta.1

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 (202) hide show
  1. package/README.md +1 -1
  2. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  3. package/dist/components/auth/AuthLayout.js +7 -7
  4. package/dist/components/auth/AuthLayout.js.map +1 -1
  5. package/dist/components/auth/AuthLayout.tsx +7 -11
  6. package/dist/components/common/SettingsComponent.module.css +7 -0
  7. package/dist/components/common/SolidLoadingState.d.ts.map +1 -1
  8. package/dist/components/common/SolidLoadingState.js +26 -0
  9. package/dist/components/common/SolidLoadingState.js.map +1 -1
  10. package/dist/components/common/SolidLoadingState.tsx +31 -0
  11. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.d.ts.map +1 -1
  12. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.js +2 -1
  13. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.js.map +1 -1
  14. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.tsx +3 -2
  15. package/dist/components/core/card/CardItem.d.ts.map +1 -1
  16. package/dist/components/core/card/CardItem.js +7 -1
  17. package/dist/components/core/card/CardItem.js.map +1 -1
  18. package/dist/components/core/card/CardItem.tsx +55 -45
  19. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  20. package/dist/components/core/card/SolidCardView.js +1 -1
  21. package/dist/components/core/card/SolidCardView.js.map +1 -1
  22. package/dist/components/core/card/SolidCardView.tsx +1 -0
  23. package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
  24. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  25. package/dist/components/core/card/SolidCardViewConfigure.js +3 -3
  26. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  27. package/dist/components/core/card/SolidCardViewConfigure.tsx +4 -3
  28. package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
  29. package/dist/components/core/chatter/SolidChatterHeader.js +10 -7
  30. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  31. package/dist/components/core/chatter/SolidChatterHeader.tsx +12 -9
  32. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  33. package/dist/components/core/common/SolidGlobalSearchElement.js +3 -3
  34. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  35. package/dist/components/core/common/SolidGlobalSearchElement.tsx +2 -3
  36. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +1 -1
  37. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
  38. package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +1 -1
  39. package/dist/components/core/filter/SolidBooleanFilterElement.js +1 -1
  40. package/dist/components/core/filter/SolidBooleanFilterElement.js.map +1 -1
  41. package/dist/components/core/filter/SolidBooleanFilterElement.tsx +1 -1
  42. package/dist/components/core/filter/SolidManyToManyFilterElement.js +1 -1
  43. package/dist/components/core/filter/SolidManyToManyFilterElement.js.map +1 -1
  44. package/dist/components/core/filter/SolidManyToManyFilterElement.tsx +1 -1
  45. package/dist/components/core/filter/SolidManyToOneFilterElement.js +1 -1
  46. package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
  47. package/dist/components/core/filter/SolidManyToOneFilterElement.tsx +1 -1
  48. package/dist/components/core/filter/SolidOneToManyFilterElement.js +1 -1
  49. package/dist/components/core/filter/SolidOneToManyFilterElement.js.map +1 -1
  50. package/dist/components/core/filter/SolidOneToManyFilterElement.tsx +1 -1
  51. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js +1 -1
  52. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
  53. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.tsx +1 -1
  54. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js +1 -1
  55. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
  56. package/dist/components/core/filter/SolidSelectionStaticFilterElement.tsx +1 -1
  57. package/dist/components/core/filter/SolidVarInputsFilterElement.js +5 -5
  58. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  59. package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +5 -5
  60. package/dist/components/core/filter/fields/SolidBooleanField.js +1 -1
  61. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  62. package/dist/components/core/filter/fields/SolidBooleanField.tsx +1 -1
  63. package/dist/components/core/filter/fields/SolidDateField.js +1 -1
  64. package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
  65. package/dist/components/core/filter/fields/SolidDateField.tsx +1 -1
  66. package/dist/components/core/filter/fields/SolidDatetimeField.js +1 -1
  67. package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
  68. package/dist/components/core/filter/fields/SolidDatetimeField.tsx +1 -1
  69. package/dist/components/core/filter/fields/SolidExternalIdField.js +1 -1
  70. package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
  71. package/dist/components/core/filter/fields/SolidExternalIdField.tsx +1 -1
  72. package/dist/components/core/filter/fields/SolidIdField.js +1 -1
  73. package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
  74. package/dist/components/core/filter/fields/SolidIdField.tsx +1 -1
  75. package/dist/components/core/filter/fields/SolidIntField.js +1 -1
  76. package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
  77. package/dist/components/core/filter/fields/SolidIntField.tsx +1 -1
  78. package/dist/components/core/filter/fields/SolidMediaMultipleField.js +1 -1
  79. package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
  80. package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +1 -1
  81. package/dist/components/core/filter/fields/SolidMediaSingleField.js +1 -1
  82. package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
  83. package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +1 -1
  84. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +1 -1
  85. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
  86. package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +1 -1
  87. package/dist/components/core/filter/fields/SolidSelectionStaticField.js +1 -1
  88. package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
  89. package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +1 -1
  90. package/dist/components/core/filter/fields/SolidShortTextField.js +1 -1
  91. package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
  92. package/dist/components/core/filter/fields/SolidShortTextField.tsx +1 -1
  93. package/dist/components/core/filter/fields/SolidTimeField.js +1 -1
  94. package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
  95. package/dist/components/core/filter/fields/SolidTimeField.tsx +1 -1
  96. package/dist/components/core/filter/fields/SolidUuidField.js +1 -1
  97. package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
  98. package/dist/components/core/filter/fields/SolidUuidField.tsx +1 -1
  99. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +1 -1
  100. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  101. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +1 -1
  102. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +1 -1
  103. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  104. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +1 -1
  105. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +1 -1
  106. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  107. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +1 -1
  108. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  109. package/dist/components/core/form/fields/SolidMediaMultipleField.js +5 -3
  110. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  111. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +7 -3
  112. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  113. package/dist/components/core/form/fields/SolidMediaSingleField.js +5 -2
  114. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  115. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +7 -2
  116. package/dist/components/core/form/fields/solidFields.module.css +23 -15
  117. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  118. package/dist/components/core/kanban/KanbanCard.js +9 -1
  119. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  120. package/dist/components/core/kanban/KanbanCard.tsx +28 -18
  121. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  122. package/dist/components/core/kanban/SolidKanbanView.js +1 -1
  123. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  124. package/dist/components/core/kanban/SolidKanbanView.tsx +1 -2
  125. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts +1 -1
  126. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
  127. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +3 -3
  128. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  129. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +4 -3
  130. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  131. package/dist/components/core/list/SolidListView.js +1 -1
  132. package/dist/components/core/list/SolidListView.js.map +1 -1
  133. package/dist/components/core/list/SolidListView.tsx +1 -0
  134. package/dist/components/core/list/SolidListViewConfigure.d.ts +1 -1
  135. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  136. package/dist/components/core/list/SolidListViewConfigure.js +3 -4
  137. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  138. package/dist/components/core/list/SolidListViewConfigure.tsx +4 -4
  139. package/dist/components/core/model/FieldMetaDataForm.css +6 -0
  140. package/dist/components/core/model/FieldMetaDataForm.js +23 -23
  141. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  142. package/dist/components/core/model/FieldMetaDataForm.tsx +30 -30
  143. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  144. package/dist/components/core/tree/SolidTreeView.js +3 -2
  145. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  146. package/dist/components/core/tree/SolidTreeView.tsx +4 -1
  147. package/dist/components/core/users/CreateUserRole.js +1 -1
  148. package/dist/components/core/users/CreateUserRole.js.map +1 -1
  149. package/dist/components/core/users/CreateUserRole.tsx +1 -1
  150. package/dist/components/layout/FilterMenu.d.ts.map +1 -1
  151. package/dist/components/layout/FilterMenu.js +2 -1
  152. package/dist/components/layout/FilterMenu.js.map +1 -1
  153. package/dist/components/layout/FilterMenu.tsx +6 -5
  154. package/dist/components/layout/GlobalSearch.d.ts.map +1 -1
  155. package/dist/components/layout/GlobalSearch.js +2 -1
  156. package/dist/components/layout/GlobalSearch.js.map +1 -1
  157. package/dist/components/layout/GlobalSearch.tsx +2 -1
  158. package/dist/components/layout/ListingHeader.d.ts.map +1 -1
  159. package/dist/components/layout/ListingHeader.js +8 -4
  160. package/dist/components/layout/ListingHeader.js.map +1 -1
  161. package/dist/components/layout/ListingHeader.tsx +9 -9
  162. package/dist/components/layout/navbar-one.d.ts.map +1 -1
  163. package/dist/components/layout/navbar-one.js.map +1 -1
  164. package/dist/components/layout/navbar-one.tsx +4 -16
  165. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  166. package/dist/components/layout/navbar-two-menu.js +8 -3
  167. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  168. package/dist/components/layout/navbar-two-menu.tsx +9 -4
  169. package/dist/components/shad-cn-ui/SolidDropdownMenu.d.ts +3 -1
  170. package/dist/components/shad-cn-ui/SolidDropdownMenu.d.ts.map +1 -1
  171. package/dist/components/shad-cn-ui/SolidDropdownMenu.js +3 -2
  172. package/dist/components/shad-cn-ui/SolidDropdownMenu.js.map +1 -1
  173. package/dist/components/shad-cn-ui/SolidDropdownMenu.tsx +10 -3
  174. package/dist/components/shad-cn-ui/SolidIcon.js +1 -1
  175. package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
  176. package/dist/components/shad-cn-ui/SolidIcon.tsx +1 -1
  177. package/dist/components/workflow/WorkflowNodeDocsPanel.css +29 -0
  178. package/dist/components/workflow/WorkflowNodeSchemaEditor.css +65 -0
  179. package/dist/helpers/getAcceptedFileTypes.d.ts +1 -0
  180. package/dist/helpers/getAcceptedFileTypes.d.ts.map +1 -1
  181. package/dist/helpers/getAcceptedFileTypes.js +6 -0
  182. package/dist/helpers/getAcceptedFileTypes.js.map +1 -1
  183. package/dist/helpers/getAcceptedFileTypes.tsx +7 -0
  184. package/dist/helpers/mediaType.d.ts.map +1 -1
  185. package/dist/helpers/mediaType.js +6 -3
  186. package/dist/helpers/mediaType.js.map +1 -1
  187. package/dist/helpers/mediaType.ts +6 -3
  188. package/dist/resources/globals.css +94 -879
  189. package/dist/resources/solid-custom.css +93 -58
  190. package/dist/resources/solid-responsive.css +1 -106
  191. package/dist/resources/stylesheets/_config.scss +1 -10
  192. package/dist/resources/stylesheets/_utils.scss +0 -7
  193. package/dist/resources/themes/solid-dark-purple/theme.css +11 -5853
  194. package/dist/resources/themes/solid-light-purple/theme.css +6 -5896
  195. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +0 -5
  196. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.css +293 -0
  197. package/dist/styles.d.ts +0 -1
  198. package/dist/styles.d.ts.map +1 -1
  199. package/dist/styles.js +0 -1
  200. package/dist/styles.js.map +1 -1
  201. package/dist/styles.ts +0 -1
  202. package/package.json +1 -3
package/README.md CHANGED
@@ -122,7 +122,7 @@ npm install @solidxai/core-ui
122
122
  ```bash
123
123
  npm install react react-dom react-router-dom \
124
124
  @reduxjs/toolkit react-redux \
125
- bootstrap primereact primeicons
125
+ bootstrap
126
126
  ```
127
127
 
128
128
 
@@ -1 +1 @@
1
- {"version":3,"file":"AuthLayout.d.ts","sourceRoot":"","sources":["../../../src/components/auth/AuthLayout.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,UAAU;cAA8B,MAAM,SAAS;6CA+QnE,CAAA"}
1
+ {"version":3,"file":"AuthLayout.d.ts","sourceRoot":"","sources":["../../../src/components/auth/AuthLayout.tsx"],"names":[],"mappings":"AAkBA,eAAO,MAAM,UAAU;cAA8B,MAAM,SAAS;6CA4QnE,CAAA"}
@@ -49,7 +49,6 @@ import { AuthSettingsContext } from "./AuthSettingsContext";
49
49
  import { normalizeAssetUrl, toCssBackgroundImage } from "../../helpers/assetUrl";
50
50
  import { toLegacySettingsShape } from "../../helpers/settingsPayload";
51
51
  import { SolidToastProvider } from "../common/SolidToastProvider";
52
- import { SolidSpinner } from "../shad-cn-ui";
53
52
  import { BackendReconnectIndicator } from "../common/BackendReconnectIndicator";
54
53
  var SHADCN_PLACEHOLDER_IMAGE = "https://ui.shadcn.com/placeholder.svg";
55
54
  export var AuthLayout = function (_a) {
@@ -109,12 +108,13 @@ export var AuthLayout = function (_a) {
109
108
  setIsRestricted(false);
110
109
  }
111
110
  }, [solidSettingsData, pathname]);
112
- var authLoadingContent = (_jsx("div", { className: "flex items-center justify-center min-h-[240px]", "aria-busy": "true", "aria-live": "polite", children: _jsx(SolidSpinner, { size: 32 }) }));
113
- var authChildren = isLoadingAuthSettings
114
- ? authLoadingContent
115
- : pathname !== "/auth/register" || allowRegistration !== false
116
- ? children
117
- : null;
111
+ // Auth pages own their auth-settings loading state. A parent full-page
112
+ // spinner mounts once during logout navigation and again after the hard
113
+ // redirect, which creates the duplicate spinner around StoreProvider's
114
+ // workspace loader.
115
+ var authChildren = pathname !== "/auth/register" || allowRegistration !== false
116
+ ? children
117
+ : null;
118
118
  var handleRegistration = function () {
119
119
  router.push("/auth/login");
120
120
  setIsRestricted(false);
@@ -1 +1 @@
1
- {"version":3,"file":"AuthLayout.js","sourceRoot":"","sources":["../../../src/components/auth/AuthLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import Link from \"../common/Link\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport Image from \"../common/Image\";\nimport SolidLogo from '../../resources/images/SolidXLogo.svg'\nimport AuthScreenCenterBackgroundImage from '../../resources/images/auth/solid-login-light.png';\nimport { SolidButton, SolidDialog, SolidDivider } from \"../shad-cn-ui\";\nimport { LayoutContext } from \"../layout/context/layoutcontext\";\nimport { solidGet } from \"../../http/solidHttp\";\nimport { AuthSettingsContext } from \"./AuthSettingsContext\";\nimport { normalizeAssetUrl, toCssBackgroundImage } from \"../../helpers/assetUrl\";\nimport { toLegacySettingsShape } from \"../../helpers/settingsPayload\";\nimport { SolidToastProvider } from \"../common/SolidToastProvider\";\nimport { SolidSpinner } from \"../shad-cn-ui\";\nimport { BackendReconnectIndicator } from \"../common/BackendReconnectIndicator\";\n\nconst SHADCN_PLACEHOLDER_IMAGE = \"https://ui.shadcn.com/placeholder.svg\";\n\nexport const AuthLayout = ({ children }: { children: React.ReactNode }) => {\n const layoutContext = useContext(LayoutContext);\n const [solidSettingsData, setSolidSettingsData] = useState<any>(null);\n const [isLoadingAuthSettings, setIsLoadingAuthSettings] = useState(true);\n\n const [allowRegistration, setAllowRegistration] = useState<boolean | null>(null);\n const [isRestricted, setIsRestricted] = useState(false);\n const pathname = usePathname();\n const router = useRouter();\n\n const loadAuthSettings = useCallback(async () => {\n setIsLoadingAuthSettings(true);\n try {\n const response = await solidGet(\"/setting/wrapped\");\n setSolidSettingsData(toLegacySettingsShape(response?.data ?? null));\n } catch (error) {\n console.error(\"Failed to load auth settings\", error);\n setSolidSettingsData(null);\n } finally {\n setIsLoadingAuthSettings(false);\n }\n }, []);\n\n useEffect(() => {\n loadAuthSettings();\n }, [loadAuthSettings]);\n\n useEffect(() => {\n const allowPublicRegistration = solidSettingsData?.data?.allowPublicRegistration;\n if (allowPublicRegistration === false) {\n setAllowRegistration(false);\n if (pathname === \"/auth/register\") {\n setIsRestricted(true);\n } else {\n setIsRestricted(false);\n }\n } else if (allowPublicRegistration === true) {\n setAllowRegistration(true);\n setIsRestricted(false);\n }\n }, [solidSettingsData, pathname]);\n\n const authLoadingContent = (\n <div className=\"flex items-center justify-center min-h-[240px]\" aria-busy=\"true\" aria-live=\"polite\">\n <SolidSpinner size={32} />\n </div>\n );\n const authChildren = isLoadingAuthSettings\n ? authLoadingContent\n : pathname !== \"/auth/register\" || allowRegistration !== false\n ? children\n : null;\n const handleRegistration = () => {\n router.push(\"/auth/login\");\n setIsRestricted(false);\n }\n\n const authTheme = layoutContext?.themeMode === \"dark\" ? \"dark\" : \"light\";\n\n const solidSideBanner = () => {\n const layout = solidSettingsData?.data?.authPagesLayout || \"center\";\n\n let src = '';\n\n if (layout === 'left') {\n src = solidSettingsData?.data?.authScreenLeftBackgroundImage || SHADCN_PLACEHOLDER_IMAGE;\n } else if (layout === 'right') {\n src = solidSettingsData?.data?.authScreenRightBackgroundImage || SHADCN_PLACEHOLDER_IMAGE;\n } else if (layout === 'center') {\n src = solidSettingsData?.data?.authScreenCenterBackgroundImage\n || (authTheme === \"light\"\n ? ((AuthScreenCenterBackgroundImage as any).src || AuthScreenCenterBackgroundImage)\n : \"\");\n }\n\n return normalizeAssetUrl(src);\n };\n\n const authLogoSrc = normalizeAssetUrl(solidSettingsData?.data?.appLogo || \"\");\n const authBackgroundSrc = solidSideBanner();\n const appTitle = solidSettingsData?.data?.appTitle || \"\";\n const appSubtitle = solidSettingsData?.data?.appSubtitle || \"\";\n const appDescription = solidSettingsData?.data?.appDescription || \"\";\n const showAuthContent = solidSettingsData?.data?.showAuthContent === true;\n const showLegalLinks = solidSettingsData?.data?.showLegalLinks === true;\n const appTnc = solidSettingsData?.data?.appTnc || \"\";\n const appPrivacyPolicy = solidSettingsData?.data?.appPrivacyPolicy || \"\";\n const copyright = solidSettingsData?.data?.copyright || \"\";\n\n const renderBrand = (align: \"center\" | \"start\" = \"start\") => {\n if (!authLogoSrc && !appTitle) return null;\n\n const brandLabel = appTitle || \"Application logo\";\n\n return (\n <div className={`solid-auth-brand ${align === \"center\" ? \"is-center\" : \"\"}`} aria-label={brandLabel}>\n {authLogoSrc ? (\n <span className=\"solid-auth-brand-logo\">\n <img src={authLogoSrc} alt={brandLabel} />\n </span>\n ) : null}\n {appTitle ? <span className=\"solid-auth-brand-text\">{appTitle}</span> : null}\n </div>\n );\n };\n\n const authLayout = solidSettingsData?.data?.authPagesLayout || \"center\";\n const isCenter = authLayout === \"center\";\n const isLeft = authLayout === \"left\";\n const isRight = authLayout === \"right\";\n const shouldRenderFooter = showLegalLinks || Boolean(copyright);\n const authSettingsContextValue = useMemo(\n () => ({\n solidSettingsData,\n isLoadingAuthSettings,\n reloadAuthSettings: loadAuthSettings,\n }),\n [solidSettingsData, isLoadingAuthSettings, loadAuthSettings]\n );\n\n const legalFooter = shouldRenderFooter ? (\n <div className=\"solid-auth-legal-footer hidden md:flex\">\n <div className=\"solid-auth-legal-footer-row\">\n {/* {showLegalLinks ? (\n <p className=\"solid-auth-legal-copy\">\n <span>Made with</span>\n <svg\n aria-hidden=\"true\"\n className=\"solid-auth-legal-heart\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.24264 8.24264L8 15L14.7574 8.24264C15.553 7.44699 16 6.36786 16 5.24264V5.05234C16 2.8143 14.1857 1 11.9477 1C10.7166 1 9.55233 1.55959 8.78331 2.52086L8 3.5L7.21669 2.52086C6.44767 1.55959 5.28338 1 4.05234 1C1.8143 1 0 2.8143 0 5.05234V5.24264C0 6.36786 0.44699 7.44699 1.24264 8.24264Z\"\n fill=\"#ff0000\"\n />\n </svg>\n <span>in Mumbai</span>\n </p>\n ) : null} */}\n {(appTnc || appPrivacyPolicy) && (\n <div className=\"solid-auth-legal-links\">\n {appTnc ? (\n <Link className=\"solid-auth-legal-link\" href={appTnc}>\n Terms of Service\n </Link>\n ) : null}\n {appPrivacyPolicy ? (\n <Link className=\"solid-auth-legal-link\" href={appPrivacyPolicy}>\n Privacy Policy\n </Link>\n ) : null}\n </div>\n )}\n {copyright ? (\n <p className=\"solid-auth-legal-copy solid-auth-legal-copy--muted\">{copyright}</p>\n ) : null}\n </div>\n </div>\n ) : null;\n\n const formPane = (\n <div className=\"solid-auth-form-pane solid-login-dark-bg\">\n <div className=\"solid-auth-form-pane-inner\">\n <div className=\"solid-auth-form-pane-brand\">\n {renderBrand(\"start\")}\n </div>\n <div className=\"solid-auth-form-pane-content\">\n {authChildren}\n </div>\n {legalFooter}\n </div>\n </div>\n );\n\n const imagePane = (\n <div\n className={`solid-auth-image-pane position-relative ${isLeft ? \"solid-left-layout pane-on-right\" : \"solid-right-layout pane-on-left\"}`.trim()}\n style={{ backgroundImage: toCssBackgroundImage(authBackgroundSrc) }}\n >\n {solidSettingsData?.data?.appLogoPosition === \"in_image_view\" &&\n <div className={`solid-logo flex items-center gap-4 ${solidSettingsData?.data?.appLogoPosition}`}>\n <Image\n alt=\"solid logo\"\n src={normalizeAssetUrl(solidSettingsData?.data?.appLogo) || SolidLogo}\n className=\"relative\"\n fill\n />\n </div>\n }\n {showAuthContent &&\n <div className=\"w-full\" style={{ zIndex: 1 }}>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-[66.666667%] px-2 pt-2 mx-auto\">\n {solidSettingsData?.data?.appSubtitle && <h1 className=\"solid-auth-image-subtitle m-0\">{solidSettingsData?.data?.appSubtitle}</h1>}\n {solidSettingsData?.data?.appTitle && <h1 className=\"solid-auth-image-title mt-0\">{solidSettingsData?.data?.appTitle}</h1>}\n {solidSettingsData?.data?.appDescription && <p className=\"solid-auth-image-helper-text\">{solidSettingsData?.data?.appDescription}</p>}\n </div>\n </div>\n </div>\n }\n </div>\n );\n\n return (\n <AuthSettingsContext.Provider value={authSettingsContextValue}>\n <div\n className={`solid-auth-theme-wrapper ${authLayout} auth-theme-${authTheme}`}\n data-auth-theme={authTheme}\n style={isCenter ? { position: \"relative\" } : undefined}\n >\n {isCenter && authBackgroundSrc ? (\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n inset: 0,\n zIndex: 0,\n backgroundImage: toCssBackgroundImage(authBackgroundSrc),\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"cover\",\n }}\n />\n ) : null}\n <SolidToastProvider />\n <BackendReconnectIndicator variant=\"floating\" />\n {!isCenter && (\n <div className=\"solid-auth-split\">\n {isLeft && formPane}\n {imagePane}\n {isRight && formPane}\n </div>\n )}\n {isCenter && <div className=\"solid-center-layout\" style={{ position: \"relative\", zIndex: 1 }}>\n <div className=\"solid-auth-center-stack\">\n {renderBrand(\"center\")}\n {showAuthContent &&\n <div className=\"solid-auth-center-details\">\n {appSubtitle ? <p className=\"solid-auth-center-subtitle\">{appSubtitle}</p> : null}\n {/* {appTitle ? <h1 className=\"solid-auth-center-title\">{appTitle}</h1> : null} */}\n {appDescription ? <p className=\"solid-auth-center-description\">{appDescription}</p> : null}\n </div>\n }\n {authChildren}\n </div>\n {legalFooter}\n </div>}\n <SolidDialog\n visible={isRestricted}\n onHide={handleRegistration}\n header=\"Access Restricted\"\n headerClassName=\"py-2\" contentClassName=\"px-0 pb-0\"\n className=\"solid-confirm-dialog\"\n footer={\n <div className=\"flex items-center justify-start\">\n <SolidButton size=\"sm\" onClick={handleRegistration}>Close</SolidButton>\n </div>\n }\n >\n <SolidDivider className=\"m-0\" />\n <div className=\"p-6\">\n <p>Sign-up is not available. Please contact the admin.</p>\n </div>\n </SolidDialog>\n </div>\n </AuthSettingsContext.Provider>\n )\n}\n"]}
1
+ {"version":3,"file":"AuthLayout.js","sourceRoot":"","sources":["../../../src/components/auth/AuthLayout.tsx"],"names":[],"mappings":"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","sourcesContent":["import Link from \"../common/Link\";\nimport { usePathname } from \"../../hooks/usePathname\";\nimport { useRouter } from \"../../hooks/useRouter\";\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport Image from \"../common/Image\";\nimport SolidLogo from '../../resources/images/SolidXLogo.svg'\nimport AuthScreenCenterBackgroundImage from '../../resources/images/auth/solid-login-light.png';\nimport { SolidButton, SolidDialog, SolidDivider } from \"../shad-cn-ui\";\nimport { LayoutContext } from \"../layout/context/layoutcontext\";\nimport { solidGet } from \"../../http/solidHttp\";\nimport { AuthSettingsContext } from \"./AuthSettingsContext\";\nimport { normalizeAssetUrl, toCssBackgroundImage } from \"../../helpers/assetUrl\";\nimport { toLegacySettingsShape } from \"../../helpers/settingsPayload\";\nimport { SolidToastProvider } from \"../common/SolidToastProvider\";\nimport { BackendReconnectIndicator } from \"../common/BackendReconnectIndicator\";\n\nconst SHADCN_PLACEHOLDER_IMAGE = \"https://ui.shadcn.com/placeholder.svg\";\n\nexport const AuthLayout = ({ children }: { children: React.ReactNode }) => {\n const layoutContext = useContext(LayoutContext);\n const [solidSettingsData, setSolidSettingsData] = useState<any>(null);\n const [isLoadingAuthSettings, setIsLoadingAuthSettings] = useState(true);\n\n const [allowRegistration, setAllowRegistration] = useState<boolean | null>(null);\n const [isRestricted, setIsRestricted] = useState(false);\n const pathname = usePathname();\n const router = useRouter();\n\n const loadAuthSettings = useCallback(async () => {\n setIsLoadingAuthSettings(true);\n try {\n const response = await solidGet(\"/setting/wrapped\");\n setSolidSettingsData(toLegacySettingsShape(response?.data ?? null));\n } catch (error) {\n console.error(\"Failed to load auth settings\", error);\n setSolidSettingsData(null);\n } finally {\n setIsLoadingAuthSettings(false);\n }\n }, []);\n\n useEffect(() => {\n loadAuthSettings();\n }, [loadAuthSettings]);\n\n useEffect(() => {\n const allowPublicRegistration = solidSettingsData?.data?.allowPublicRegistration;\n if (allowPublicRegistration === false) {\n setAllowRegistration(false);\n if (pathname === \"/auth/register\") {\n setIsRestricted(true);\n } else {\n setIsRestricted(false);\n }\n } else if (allowPublicRegistration === true) {\n setAllowRegistration(true);\n setIsRestricted(false);\n }\n }, [solidSettingsData, pathname]);\n\n // Auth pages own their auth-settings loading state. A parent full-page\n // spinner mounts once during logout navigation and again after the hard\n // redirect, which creates the duplicate spinner around StoreProvider's\n // workspace loader.\n const authChildren = pathname !== \"/auth/register\" || allowRegistration !== false\n ? children\n : null;\n const handleRegistration = () => {\n router.push(\"/auth/login\");\n setIsRestricted(false);\n }\n\n const authTheme = layoutContext?.themeMode === \"dark\" ? \"dark\" : \"light\";\n\n const solidSideBanner = () => {\n const layout = solidSettingsData?.data?.authPagesLayout || \"center\";\n\n let src = '';\n\n if (layout === 'left') {\n src = solidSettingsData?.data?.authScreenLeftBackgroundImage || SHADCN_PLACEHOLDER_IMAGE;\n } else if (layout === 'right') {\n src = solidSettingsData?.data?.authScreenRightBackgroundImage || SHADCN_PLACEHOLDER_IMAGE;\n } else if (layout === 'center') {\n src = solidSettingsData?.data?.authScreenCenterBackgroundImage\n || (authTheme === \"light\"\n ? ((AuthScreenCenterBackgroundImage as any).src || AuthScreenCenterBackgroundImage)\n : \"\");\n }\n\n return normalizeAssetUrl(src);\n };\n\n const authLogoSrc = normalizeAssetUrl(solidSettingsData?.data?.appLogo || \"\");\n const authBackgroundSrc = solidSideBanner();\n const appTitle = solidSettingsData?.data?.appTitle || \"\";\n const appSubtitle = solidSettingsData?.data?.appSubtitle || \"\";\n const appDescription = solidSettingsData?.data?.appDescription || \"\";\n const showAuthContent = solidSettingsData?.data?.showAuthContent === true;\n const showLegalLinks = solidSettingsData?.data?.showLegalLinks === true;\n const appTnc = solidSettingsData?.data?.appTnc || \"\";\n const appPrivacyPolicy = solidSettingsData?.data?.appPrivacyPolicy || \"\";\n const copyright = solidSettingsData?.data?.copyright || \"\";\n\n const renderBrand = (align: \"center\" | \"start\" = \"start\") => {\n if (!authLogoSrc && !appTitle) return null;\n\n const brandLabel = appTitle || \"Application logo\";\n\n return (\n <div className={`solid-auth-brand ${align === \"center\" ? \"is-center\" : \"\"}`} aria-label={brandLabel}>\n {authLogoSrc ? (\n <span className=\"solid-auth-brand-logo\">\n <img src={authLogoSrc} alt={brandLabel} />\n </span>\n ) : null}\n {appTitle ? <span className=\"solid-auth-brand-text\">{appTitle}</span> : null}\n </div>\n );\n };\n\n const authLayout = solidSettingsData?.data?.authPagesLayout || \"center\";\n const isCenter = authLayout === \"center\";\n const isLeft = authLayout === \"left\";\n const isRight = authLayout === \"right\";\n const shouldRenderFooter = showLegalLinks || Boolean(copyright);\n const authSettingsContextValue = useMemo(\n () => ({\n solidSettingsData,\n isLoadingAuthSettings,\n reloadAuthSettings: loadAuthSettings,\n }),\n [solidSettingsData, isLoadingAuthSettings, loadAuthSettings]\n );\n\n const legalFooter = shouldRenderFooter ? (\n <div className=\"solid-auth-legal-footer hidden md:flex\">\n <div className=\"solid-auth-legal-footer-row\">\n {/* {showLegalLinks ? (\n <p className=\"solid-auth-legal-copy\">\n <span>Made with</span>\n <svg\n aria-hidden=\"true\"\n className=\"solid-auth-legal-heart\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.24264 8.24264L8 15L14.7574 8.24264C15.553 7.44699 16 6.36786 16 5.24264V5.05234C16 2.8143 14.1857 1 11.9477 1C10.7166 1 9.55233 1.55959 8.78331 2.52086L8 3.5L7.21669 2.52086C6.44767 1.55959 5.28338 1 4.05234 1C1.8143 1 0 2.8143 0 5.05234V5.24264C0 6.36786 0.44699 7.44699 1.24264 8.24264Z\"\n fill=\"#ff0000\"\n />\n </svg>\n <span>in Mumbai</span>\n </p>\n ) : null} */}\n {(appTnc || appPrivacyPolicy) && (\n <div className=\"solid-auth-legal-links\">\n {appTnc ? (\n <Link className=\"solid-auth-legal-link\" href={appTnc}>\n Terms of Service\n </Link>\n ) : null}\n {appPrivacyPolicy ? (\n <Link className=\"solid-auth-legal-link\" href={appPrivacyPolicy}>\n Privacy Policy\n </Link>\n ) : null}\n </div>\n )}\n {copyright ? (\n <p className=\"solid-auth-legal-copy solid-auth-legal-copy--muted\">{copyright}</p>\n ) : null}\n </div>\n </div>\n ) : null;\n\n const formPane = (\n <div className=\"solid-auth-form-pane solid-login-dark-bg\">\n <div className=\"solid-auth-form-pane-inner\">\n <div className=\"solid-auth-form-pane-brand\">\n {renderBrand(\"start\")}\n </div>\n <div className=\"solid-auth-form-pane-content\">\n {authChildren}\n </div>\n {legalFooter}\n </div>\n </div>\n );\n\n const imagePane = (\n <div\n className={`solid-auth-image-pane position-relative ${isLeft ? \"solid-left-layout pane-on-right\" : \"solid-right-layout pane-on-left\"}`.trim()}\n style={{ backgroundImage: toCssBackgroundImage(authBackgroundSrc) }}\n >\n {solidSettingsData?.data?.appLogoPosition === \"in_image_view\" &&\n <div className={`solid-logo flex items-center gap-4 ${solidSettingsData?.data?.appLogoPosition}`}>\n <Image\n alt=\"solid logo\"\n src={normalizeAssetUrl(solidSettingsData?.data?.appLogo) || SolidLogo}\n className=\"relative\"\n fill\n />\n </div>\n }\n {showAuthContent &&\n <div className=\"w-full\" style={{ zIndex: 1 }}>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-[66.666667%] px-2 pt-2 mx-auto\">\n {solidSettingsData?.data?.appSubtitle && <h1 className=\"solid-auth-image-subtitle m-0\">{solidSettingsData?.data?.appSubtitle}</h1>}\n {solidSettingsData?.data?.appTitle && <h1 className=\"solid-auth-image-title mt-0\">{solidSettingsData?.data?.appTitle}</h1>}\n {solidSettingsData?.data?.appDescription && <p className=\"solid-auth-image-helper-text\">{solidSettingsData?.data?.appDescription}</p>}\n </div>\n </div>\n </div>\n }\n </div>\n );\n\n return (\n <AuthSettingsContext.Provider value={authSettingsContextValue}>\n <div\n className={`solid-auth-theme-wrapper ${authLayout} auth-theme-${authTheme}`}\n data-auth-theme={authTheme}\n style={isCenter ? { position: \"relative\" } : undefined}\n >\n {isCenter && authBackgroundSrc ? (\n <div\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n inset: 0,\n zIndex: 0,\n backgroundImage: toCssBackgroundImage(authBackgroundSrc),\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"cover\",\n }}\n />\n ) : null}\n <SolidToastProvider />\n <BackendReconnectIndicator variant=\"floating\" />\n {!isCenter && (\n <div className=\"solid-auth-split\">\n {isLeft && formPane}\n {imagePane}\n {isRight && formPane}\n </div>\n )}\n {isCenter && <div className=\"solid-center-layout\" style={{ position: \"relative\", zIndex: 1 }}>\n <div className=\"solid-auth-center-stack\">\n {renderBrand(\"center\")}\n {showAuthContent &&\n <div className=\"solid-auth-center-details\">\n {appSubtitle ? <p className=\"solid-auth-center-subtitle\">{appSubtitle}</p> : null}\n {/* {appTitle ? <h1 className=\"solid-auth-center-title\">{appTitle}</h1> : null} */}\n {appDescription ? <p className=\"solid-auth-center-description\">{appDescription}</p> : null}\n </div>\n }\n {authChildren}\n </div>\n {legalFooter}\n </div>}\n <SolidDialog\n visible={isRestricted}\n onHide={handleRegistration}\n header=\"Access Restricted\"\n headerClassName=\"py-2\" contentClassName=\"px-0 pb-0\"\n className=\"solid-confirm-dialog\"\n footer={\n <div className=\"flex items-center justify-start\">\n <SolidButton size=\"sm\" onClick={handleRegistration}>Close</SolidButton>\n </div>\n }\n >\n <SolidDivider className=\"m-0\" />\n <div className=\"p-6\">\n <p>Sign-up is not available. Please contact the admin.</p>\n </div>\n </SolidDialog>\n </div>\n </AuthSettingsContext.Provider>\n )\n}\n"]}
@@ -12,7 +12,6 @@ import { AuthSettingsContext } from "./AuthSettingsContext";
12
12
  import { normalizeAssetUrl, toCssBackgroundImage } from "../../helpers/assetUrl";
13
13
  import { toLegacySettingsShape } from "../../helpers/settingsPayload";
14
14
  import { SolidToastProvider } from "../common/SolidToastProvider";
15
- import { SolidSpinner } from "../shad-cn-ui";
16
15
  import { BackendReconnectIndicator } from "../common/BackendReconnectIndicator";
17
16
 
18
17
  const SHADCN_PLACEHOLDER_IMAGE = "https://ui.shadcn.com/placeholder.svg";
@@ -59,16 +58,13 @@ export const AuthLayout = ({ children }: { children: React.ReactNode }) => {
59
58
  }
60
59
  }, [solidSettingsData, pathname]);
61
60
 
62
- const authLoadingContent = (
63
- <div className="flex items-center justify-center min-h-[240px]" aria-busy="true" aria-live="polite">
64
- <SolidSpinner size={32} />
65
- </div>
66
- );
67
- const authChildren = isLoadingAuthSettings
68
- ? authLoadingContent
69
- : pathname !== "/auth/register" || allowRegistration !== false
70
- ? children
71
- : null;
61
+ // Auth pages own their auth-settings loading state. A parent full-page
62
+ // spinner mounts once during logout navigation and again after the hard
63
+ // redirect, which creates the duplicate spinner around StoreProvider's
64
+ // workspace loader.
65
+ const authChildren = pathname !== "/auth/register" || allowRegistration !== false
66
+ ? children
67
+ : null;
72
68
  const handleRegistration = () => {
73
69
  router.push("/auth/login");
74
70
  setIsRestricted(false);
@@ -385,6 +385,13 @@
385
385
  max-width: none;
386
386
  }
387
387
 
388
+ /* Keep nested horizontal widget tabs sized to their labels. The outer settings
389
+ tabs intentionally use full-width vertical triggers. */
390
+ .customControlStack :global(.solid-tabs:not(.solid-tabs--vertical) .solid-notebook-tab-trigger) {
391
+ flex: 0 0 auto !important;
392
+ width: auto !important;
393
+ }
394
+
388
395
  .mediaField {
389
396
  display: flex;
390
397
  flex-direction: column;
@@ -1 +1 @@
1
- {"version":3,"file":"SolidLoadingState.d.ts","sourceRoot":"","sources":["../../../src/components/common/SolidLoadingState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,KAAiB,EACjB,WAA4D,EAC5D,YAAY,EACZ,QAAQ,GACT,EAAE,sBAAsB,2CAWxB"}
1
+ {"version":3,"file":"SolidLoadingState.d.ts","sourceRoot":"","sources":["../../../src/components/common/SolidLoadingState.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AA8BvC,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,KAAiB,EACjB,WAA4D,EAC5D,YAAY,EACZ,QAAQ,GACT,EAAE,sBAAsB,2CAexB"}
@@ -1,8 +1,34 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useLayoutEffect } from "react";
2
3
  import { SolidSpinner } from "../shad-cn-ui";
4
+ import { getDefaultThemeKey, isRegisteredThemeKey } from "../../theme/theme-registry";
3
5
  import styles from "./SolidLoadingState.module.css";
6
+ var THEME_MODE_STORAGE_KEY = "solidx.theme.mode";
7
+ var LIGHT_THEME_STORAGE_KEY = "solidx.theme.light";
8
+ var DARK_THEME_STORAGE_KEY = "solidx.theme.dark";
9
+ function applyStoredThemeBeforePaint() {
10
+ if (typeof window === "undefined")
11
+ return;
12
+ var mode = window.localStorage.getItem(THEME_MODE_STORAGE_KEY) === "dark"
13
+ ? "dark"
14
+ : "light";
15
+ var themeStorageKey = mode === "dark" ? DARK_THEME_STORAGE_KEY : LIGHT_THEME_STORAGE_KEY;
16
+ var storedTheme = window.localStorage.getItem(themeStorageKey);
17
+ var theme = isRegisteredThemeKey(storedTheme, mode)
18
+ ? storedTheme
19
+ : getDefaultThemeKey(mode);
20
+ document.documentElement.classList.toggle("dark", mode === "dark");
21
+ document.documentElement.setAttribute("data-theme", mode);
22
+ var themeLink = document.getElementById("theme-css");
23
+ if (themeLink) {
24
+ themeLink.href = "/themes/".concat(theme, "/theme.css");
25
+ }
26
+ }
4
27
  export function SolidLoadingState(_a) {
5
28
  var _b = _a.title, title = _b === void 0 ? "Loading" : _b, _c = _a.description, description = _c === void 0 ? "Please wait while we prepare things for you." : _c, spinnerLabel = _a.spinnerLabel, children = _a.children;
29
+ useLayoutEffect(function () {
30
+ applyStoredThemeBeforePaint();
31
+ }, []);
6
32
  return (_jsx("section", { className: styles.solidLoadingState, "aria-busy": "true", "aria-live": "polite", children: _jsxs("div", { className: styles.card, children: [_jsx(SolidSpinner, { size: 28, className: styles.spinner, label: spinnerLabel }), _jsx("h2", { className: styles.title, children: title }), _jsx("p", { className: styles.description, children: description }), children] }) }));
7
33
  }
8
34
  //# sourceMappingURL=SolidLoadingState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidLoadingState.js","sourceRoot":"","sources":["../../../src/components/common/SolidLoadingState.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,MAAM,MAAM,gCAAgC,CAAC;AASpD,MAAM,UAAU,iBAAiB,CAAC,EAKT;QAJvB,aAAiB,EAAjB,KAAK,mBAAG,SAAS,KAAA,EACjB,mBAA4D,EAA5D,WAAW,mBAAG,8CAA8C,KAAA,EAC5D,YAAY,kBAAA,EACZ,QAAQ,cAAA;IAER,OAAO,CACL,kBAAS,SAAS,EAAE,MAAM,CAAC,iBAAiB,eAAY,MAAM,eAAW,QAAQ,YAC/E,eAAK,SAAS,EAAE,MAAM,CAAC,IAAI,aACzB,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,GAAI,EAC1E,aAAI,SAAS,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAM,EACzC,YAAG,SAAS,EAAE,MAAM,CAAC,WAAW,YAAG,WAAW,GAAK,EAClD,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC","sourcesContent":["import type { ReactNode } from \"react\";\nimport { SolidSpinner } from \"../shad-cn-ui\";\nimport styles from \"./SolidLoadingState.module.css\";\n\ntype SolidLoadingStateProps = {\n title?: string;\n description?: string;\n spinnerLabel?: string;\n children?: ReactNode;\n};\n\nexport function SolidLoadingState({\n title = \"Loading\",\n description = \"Please wait while we prepare things for you.\",\n spinnerLabel,\n children,\n}: SolidLoadingStateProps) {\n return (\n <section className={styles.solidLoadingState} aria-busy=\"true\" aria-live=\"polite\">\n <div className={styles.card}>\n <SolidSpinner size={28} className={styles.spinner} label={spinnerLabel} />\n <h2 className={styles.title}>{title}</h2>\n <p className={styles.description}>{description}</p>\n {children}\n </div>\n </section>\n );\n}\n"]}
1
+ {"version":3,"file":"SolidLoadingState.js","sourceRoot":"","sources":["../../../src/components/common/SolidLoadingState.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAkB,MAAM,4BAA4B,CAAC;AACtG,OAAO,MAAM,MAAM,gCAAgC,CAAC;AAEpD,IAAM,sBAAsB,GAAG,mBAAmB,CAAC;AACnD,IAAM,uBAAuB,GAAG,oBAAoB,CAAC;AACrD,IAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEnD,SAAS,2BAA2B;IAClC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAE1C,IAAM,IAAI,GAAc,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,MAAM;QACpF,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO,CAAC;IACZ,IAAM,eAAe,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,uBAAuB,CAAC;IAC3F,IAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACjE,IAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC;QACnD,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE7B,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;IACnE,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAE1D,IAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAA2B,CAAC;IACjF,IAAI,SAAS,EAAE;QACb,SAAS,CAAC,IAAI,GAAG,kBAAW,KAAK,eAAY,CAAC;KAC/C;AACH,CAAC;AASD,MAAM,UAAU,iBAAiB,CAAC,EAKT;QAJvB,aAAiB,EAAjB,KAAK,mBAAG,SAAS,KAAA,EACjB,mBAA4D,EAA5D,WAAW,mBAAG,8CAA8C,KAAA,EAC5D,YAAY,kBAAA,EACZ,QAAQ,cAAA;IAER,eAAe,CAAC;QACd,2BAA2B,EAAE,CAAC;IAChC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,kBAAS,SAAS,EAAE,MAAM,CAAC,iBAAiB,eAAY,MAAM,eAAW,QAAQ,YAC/E,eAAK,SAAS,EAAE,MAAM,CAAC,IAAI,aACzB,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,GAAI,EAC1E,aAAI,SAAS,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAM,EACzC,YAAG,SAAS,EAAE,MAAM,CAAC,WAAW,YAAG,WAAW,GAAK,EAClD,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC","sourcesContent":["import { useLayoutEffect } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { SolidSpinner } from \"../shad-cn-ui\";\nimport { getDefaultThemeKey, isRegisteredThemeKey, type ThemeMode } from \"../../theme/theme-registry\";\nimport styles from \"./SolidLoadingState.module.css\";\n\nconst THEME_MODE_STORAGE_KEY = \"solidx.theme.mode\";\nconst LIGHT_THEME_STORAGE_KEY = \"solidx.theme.light\";\nconst DARK_THEME_STORAGE_KEY = \"solidx.theme.dark\";\n\nfunction applyStoredThemeBeforePaint() {\n if (typeof window === \"undefined\") return;\n\n const mode: ThemeMode = window.localStorage.getItem(THEME_MODE_STORAGE_KEY) === \"dark\"\n ? \"dark\"\n : \"light\";\n const themeStorageKey = mode === \"dark\" ? DARK_THEME_STORAGE_KEY : LIGHT_THEME_STORAGE_KEY;\n const storedTheme = window.localStorage.getItem(themeStorageKey);\n const theme = isRegisteredThemeKey(storedTheme, mode)\n ? storedTheme\n : getDefaultThemeKey(mode);\n\n document.documentElement.classList.toggle(\"dark\", mode === \"dark\");\n document.documentElement.setAttribute(\"data-theme\", mode);\n\n const themeLink = document.getElementById(\"theme-css\") as HTMLLinkElement | null;\n if (themeLink) {\n themeLink.href = `/themes/${theme}/theme.css`;\n }\n}\n\ntype SolidLoadingStateProps = {\n title?: string;\n description?: string;\n spinnerLabel?: string;\n children?: ReactNode;\n};\n\nexport function SolidLoadingState({\n title = \"Loading\",\n description = \"Please wait while we prepare things for you.\",\n spinnerLabel,\n children,\n}: SolidLoadingStateProps) {\n useLayoutEffect(() => {\n applyStoredThemeBeforePaint();\n }, []);\n\n return (\n <section className={styles.solidLoadingState} aria-busy=\"true\" aria-live=\"polite\">\n <div className={styles.card}>\n <SolidSpinner size={28} className={styles.spinner} label={spinnerLabel} />\n <h2 className={styles.title}>{title}</h2>\n <p className={styles.description}>{description}</p>\n {children}\n </div>\n </section>\n );\n}\n"]}
@@ -1,7 +1,34 @@
1
+ import { useLayoutEffect } from "react";
1
2
  import type { ReactNode } from "react";
2
3
  import { SolidSpinner } from "../shad-cn-ui";
4
+ import { getDefaultThemeKey, isRegisteredThemeKey, type ThemeMode } from "../../theme/theme-registry";
3
5
  import styles from "./SolidLoadingState.module.css";
4
6
 
7
+ const THEME_MODE_STORAGE_KEY = "solidx.theme.mode";
8
+ const LIGHT_THEME_STORAGE_KEY = "solidx.theme.light";
9
+ const DARK_THEME_STORAGE_KEY = "solidx.theme.dark";
10
+
11
+ function applyStoredThemeBeforePaint() {
12
+ if (typeof window === "undefined") return;
13
+
14
+ const mode: ThemeMode = window.localStorage.getItem(THEME_MODE_STORAGE_KEY) === "dark"
15
+ ? "dark"
16
+ : "light";
17
+ const themeStorageKey = mode === "dark" ? DARK_THEME_STORAGE_KEY : LIGHT_THEME_STORAGE_KEY;
18
+ const storedTheme = window.localStorage.getItem(themeStorageKey);
19
+ const theme = isRegisteredThemeKey(storedTheme, mode)
20
+ ? storedTheme
21
+ : getDefaultThemeKey(mode);
22
+
23
+ document.documentElement.classList.toggle("dark", mode === "dark");
24
+ document.documentElement.setAttribute("data-theme", mode);
25
+
26
+ const themeLink = document.getElementById("theme-css") as HTMLLinkElement | null;
27
+ if (themeLink) {
28
+ themeLink.href = `/themes/${theme}/theme.css`;
29
+ }
30
+ }
31
+
5
32
  type SolidLoadingStateProps = {
6
33
  title?: string;
7
34
  description?: string;
@@ -15,6 +42,10 @@ export function SolidLoadingState({
15
42
  spinnerLabel,
16
43
  children,
17
44
  }: SolidLoadingStateProps) {
45
+ useLayoutEffect(() => {
46
+ applyStoredThemeBeforePaint();
47
+ }, []);
48
+
18
49
  return (
19
50
  <section className={styles.solidLoadingState} aria-busy="true" aria-live="polite">
20
51
  <div className={styles.card}>
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsImageRemoveButton.d.ts","sourceRoot":"","sources":["../../../../src/components/common/SolidSettings/SettingsImageRemoveButton.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB,gBAAiB,GAAG,4CAWzD,CAAA"}
1
+ {"version":3,"file":"SettingsImageRemoveButton.d.ts","sourceRoot":"","sources":["../../../../src/components/common/SolidSettings/SettingsImageRemoveButton.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,yBAAyB,gBAAiB,GAAG,4CAWzD,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { X } from "lucide-react";
2
3
  import { SolidButton } from '../../shad-cn-ui';
3
4
  export var SettingsImageRemoveButton = function (_a) {
4
5
  var onClick = _a.onClick;
5
- return (_jsx(SolidButton, { label: "Remove", severity: "danger", icon: "pi pi-times", size: "small", className: "mt-2", onClick: onClick }));
6
+ return (_jsx(SolidButton, { label: "Remove", severity: "danger", leftIcon: _jsx(X, { size: 14, "aria-hidden": true }), size: "small", className: "mt-2", onClick: onClick }));
6
7
  };
7
8
  //# sourceMappingURL=SettingsImageRemoveButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsImageRemoveButton.js","sourceRoot":"","sources":["../../../../src/components/common/SolidSettings/SettingsImageRemoveButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,EAAgB;QAAd,OAAO,aAAA;IAC/C,OAAO,CACH,KAAC,WAAW,IACR,KAAK,EAAC,QAAQ,EACd,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAC,aAAa,EAClB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,MAAM,EAChB,OAAO,EAAE,OAAO,GAClB,CACL,CAAA;AACL,CAAC,CAAA","sourcesContent":["import { SolidButton } from '../../shad-cn-ui'\nimport React from 'react'\n\nexport const SettingsImageRemoveButton = ({ onClick }: any) => {\n return (\n <SolidButton\n label=\"Remove\"\n severity=\"danger\"\n icon=\"pi pi-times\"\n size=\"small\"\n className=\"mt-2\"\n onClick={onClick}\n />\n )\n}\n"]}
1
+ {"version":3,"file":"SettingsImageRemoveButton.js","sourceRoot":"","sources":["../../../../src/components/common/SolidSettings/SettingsImageRemoveButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,EAAgB;QAAd,OAAO,aAAA;IAC/C,OAAO,CACH,KAAC,WAAW,IACR,KAAK,EAAC,QAAQ,EACd,QAAQ,EAAC,QAAQ,EACjB,QAAQ,EAAE,KAAC,CAAC,IAAC,IAAI,EAAE,EAAE,wBAAgB,EACrC,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,MAAM,EAChB,OAAO,EAAE,OAAO,GAClB,CACL,CAAA;AACL,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport { X } from \"lucide-react\";\nimport { SolidButton } from '../../shad-cn-ui'\n\nexport const SettingsImageRemoveButton = ({ onClick }: any) => {\n return (\n <SolidButton\n label=\"Remove\"\n severity=\"danger\"\n leftIcon={<X size={14} aria-hidden />}\n size=\"small\"\n className=\"mt-2\"\n onClick={onClick}\n />\n )\n}\n"]}
@@ -1,12 +1,13 @@
1
- import { SolidButton } from '../../shad-cn-ui'
2
1
  import React from 'react'
2
+ import { X } from "lucide-react";
3
+ import { SolidButton } from '../../shad-cn-ui'
3
4
 
4
5
  export const SettingsImageRemoveButton = ({ onClick }: any) => {
5
6
  return (
6
7
  <SolidButton
7
8
  label="Remove"
8
9
  severity="danger"
9
- icon="pi pi-times"
10
+ leftIcon={<X size={14} aria-hidden />}
10
11
  size="small"
11
12
  className="mt-2"
12
13
  onClick={onClick}
@@ -1 +1 @@
1
- {"version":3,"file":"CardItem.d.ts","sourceRoot":"","sources":["../../../../src/components/core/card/CardItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,UAAU,aAAa;IACrB,IAAI,EAAE,GAAG,CAAC;IACV,qBAAqB,EAAE,GAAG,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAClE;AAED,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA8GrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"CardItem.d.ts","sourceRoot":"","sources":["../../../../src/components/core/card/CardItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,UAAU,aAAa;IACrB,IAAI,EAAE,GAAG,CAAC;IACV,qBAAqB,EAAE,GAAG,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,uBAAuB,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAClE;AAED,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAuHrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useRouter } from "../../../hooks/useRouter";
3
3
  import { storeCurrentModelViewContext } from "../../../helpers/modelViewPersistence";
4
+ import { RotateCcw } from "lucide-react";
4
5
  import { SolidDropdownMenu, SolidDropdownMenuContent, SolidDropdownMenuItem, SolidDropdownMenuTrigger, SolidIcon, } from "../../shad-cn-ui";
5
6
  import { SolidCollectionRowActionMenuItems } from "../common/SolidCollectionRowActionMenuItems";
6
7
  var CardItem = function (_a) {
@@ -20,7 +21,12 @@ var CardItem = function (_a) {
20
21
  storeCurrentModelViewContext();
21
22
  router.push("".concat(editButtonUrl, "/").concat(data === null || data === void 0 ? void 0 : data.id, "?viewMode=edit"));
22
23
  };
23
- return (_jsx("div", { className: "solid-card-view-item", children: _jsxs("div", { className: "solid-card-view-card solid-kanban-card".concat(isArchivedRecord ? " greyed-out-row" : ""), onClick: openRecord, style: { cursor: isArchivedRecord ? "default" : "pointer" }, children: [_jsx("div", { className: "solid-kanban-action", onClick: function (e) { return e.stopPropagation(); }, children: _jsxs(SolidDropdownMenu, { children: [_jsx(SolidDropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "solid-header-cog-trigger solid-kanban-action-trigger", "aria-label": "Open card actions", children: _jsx(SolidIcon, { name: "si-ellipsis-v", "aria-hidden": true }) }) }), _jsxs(SolidDropdownMenuContent, { className: "solid-custom-overlay", align: "end", children: [!isArchivedRecord ? (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: openEdit, children: [_jsx(SolidIcon, { name: "si-pencil", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Edit" })] })) : null, showArchived && (data === null || data === void 0 ? void 0 : data.deletedAt) !== null && (data === null || data === void 0 ? void 0 : data.deletedAt) !== undefined && onRecover ? (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: function () { return onRecover(data); }, children: [_jsx(SolidIcon, { name: "si-refresh", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Recover" })] })) : null, onDelete && !isArchivedRecord ? (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item solid-header-dropdown-item-danger", onSelect: function () { return onDelete(data); }, children: [_jsx(SolidIcon, { name: "si-trash", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Delete" })] })) : null, !isArchivedRecord && handleCustomButtonClick ? (_jsx(SolidCollectionRowActionMenuItems, { buttons: (_d = (_c = (_b = solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.solidView) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.rowButtons, params: params, rowData: data, solidViewMetaData: solidCardViewMetaData, handleCustomButtonClick: handleCustomButtonClick, showSeparator: true })) : null] })] }) }), DynamicCardWidget ? (_jsx("div", { style: isArchivedRecord ? { pointerEvents: "none" } : undefined, children: _jsx(DynamicCardWidget, { rowData: data, solidKanbanViewMetaData: solidCardViewMetaData, solidView: solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.solidView, solidFieldsMetadata: solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.solidFieldsMetadata, card: cardNode, layoutAttrs: ((_f = (_e = solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.solidView) === null || _e === void 0 ? void 0 : _e.layout) === null || _f === void 0 ? void 0 : _f.attrs) || {}, groupedView: false, editButtonUrl: editButtonUrl, setLightboxUrls: isArchivedRecord ? undefined : setLightboxUrls, setOpenLightbox: isArchivedRecord ? undefined : setOpenLightbox, openRecord: openRecord, openEdit: openEdit }) })) : null] }) }));
24
+ var renderRecoverAction = function () {
25
+ if (!showArchived || !isArchivedRecord || !onRecover)
26
+ return null;
27
+ return (_jsx("div", { className: "solid-kanban-action", onClick: function (e) { return e.stopPropagation(); }, children: _jsx("button", { type: "button", className: "retrieve-button solid-row-menu-trigger", onClick: function () { return onRecover(data); }, "aria-label": "Recover record", title: "Recover", children: _jsx(RotateCcw, { size: 14, "aria-hidden": true }) }) }));
28
+ };
29
+ return (_jsx("div", { className: "solid-card-view-item", children: _jsxs("div", { className: "solid-card-view-card solid-kanban-card".concat(isArchivedRecord ? " greyed-out-row" : ""), onClick: openRecord, style: { cursor: isArchivedRecord ? "default" : "pointer" }, children: [isArchivedRecord ? renderRecoverAction() : (_jsx("div", { className: "solid-kanban-action", onClick: function (e) { return e.stopPropagation(); }, children: _jsxs(SolidDropdownMenu, { children: [_jsx(SolidDropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "solid-header-cog-trigger solid-kanban-action-trigger", "aria-label": "Open card actions", children: _jsx(SolidIcon, { name: "si-ellipsis-v", "aria-hidden": true }) }) }), _jsxs(SolidDropdownMenuContent, { className: "solid-custom-overlay", align: "end", children: [_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: openEdit, children: [_jsx(SolidIcon, { name: "si-pencil", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Edit" })] }), onDelete ? (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item solid-header-dropdown-item-danger", onSelect: function () { return onDelete(data); }, children: [_jsx(SolidIcon, { name: "si-trash", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Delete" })] })) : null, handleCustomButtonClick ? (_jsx(SolidCollectionRowActionMenuItems, { buttons: (_d = (_c = (_b = solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.solidView) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.rowButtons, params: params, rowData: data, solidViewMetaData: solidCardViewMetaData, handleCustomButtonClick: handleCustomButtonClick, showSeparator: true })) : null] })] }) })), DynamicCardWidget ? (_jsx("div", { style: isArchivedRecord ? { pointerEvents: "none" } : undefined, children: _jsx(DynamicCardWidget, { rowData: data, solidKanbanViewMetaData: solidCardViewMetaData, solidView: solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.solidView, solidFieldsMetadata: solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.solidFieldsMetadata, card: cardNode, layoutAttrs: ((_f = (_e = solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.solidView) === null || _e === void 0 ? void 0 : _e.layout) === null || _f === void 0 ? void 0 : _f.attrs) || {}, groupedView: false, editButtonUrl: editButtonUrl, setLightboxUrls: isArchivedRecord ? undefined : setLightboxUrls, setOpenLightbox: isArchivedRecord ? undefined : setOpenLightbox, openRecord: openRecord, openEdit: openEdit }) })) : null] }) }));
24
30
  };
25
31
  export default CardItem;
26
32
  //# sourceMappingURL=CardItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardItem.js","sourceRoot":"","sources":["../../../../src/components/core/card/CardItem.tsx"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport React from \"react\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { storeCurrentModelViewContext } from \"../../../helpers/modelViewPersistence\";\nimport {\n SolidDropdownMenu,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuTrigger,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { SolidCollectionRowActionMenuItems } from \"../common/SolidCollectionRowActionMenuItems\";\n\ninterface CardItemProps {\n data: any;\n solidCardViewMetaData: any;\n editButtonUrl?: string;\n recordClickAction?: \"view\" | \"edit\";\n cardNode?: any;\n DynamicCardWidget?: any;\n onDelete?: (record: any) => void;\n onRecover?: (record: any) => void;\n setLightboxUrls?: any;\n setOpenLightbox?: any;\n showArchived?: boolean;\n params?: any;\n handleCustomButtonClick?: (buttonAttrs: any, event: any) => void;\n}\n\nconst CardItem: React.FC<CardItemProps> = ({\n data,\n solidCardViewMetaData,\n editButtonUrl,\n recordClickAction = \"edit\",\n cardNode,\n DynamicCardWidget,\n onDelete,\n onRecover,\n setLightboxUrls,\n setOpenLightbox,\n showArchived,\n params,\n handleCustomButtonClick,\n}) => {\n const router = useRouter();\n const isArchivedRecord = data?.deletedAt !== null && data?.deletedAt !== undefined;\n\n const openRecord = () => {\n if (isArchivedRecord) return;\n storeCurrentModelViewContext();\n router.push(`${editButtonUrl}/${data?.id}?viewMode=${recordClickAction}`);\n };\n\n const openEdit = () => {\n if (isArchivedRecord) return;\n storeCurrentModelViewContext();\n router.push(`${editButtonUrl}/${data?.id}?viewMode=edit`);\n };\n\n return (\n <div className=\"solid-card-view-item\">\n <div\n className={`solid-card-view-card solid-kanban-card${isArchivedRecord ? \" greyed-out-row\" : \"\"}`}\n onClick={openRecord}\n style={{ cursor: isArchivedRecord ? \"default\" : \"pointer\" }}\n >\n <div className=\"solid-kanban-action\" onClick={(e) => e.stopPropagation()}>\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-header-cog-trigger solid-kanban-action-trigger\"\n aria-label=\"Open card actions\"\n >\n <SolidIcon name=\"si-ellipsis-v\" aria-hidden />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-custom-overlay\" align=\"end\">\n {!isArchivedRecord ? (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={openEdit}\n >\n <SolidIcon name=\"si-pencil\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Edit</span>\n </SolidDropdownMenuItem>\n ) : null}\n {showArchived && data?.deletedAt !== null && data?.deletedAt !== undefined && onRecover ? (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => onRecover(data)}\n >\n <SolidIcon name=\"si-refresh\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Recover</span>\n </SolidDropdownMenuItem>\n ) : null}\n {onDelete && !isArchivedRecord ? (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item solid-header-dropdown-item-danger\"\n onSelect={() => onDelete(data)}\n >\n <SolidIcon name=\"si-trash\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Delete</span>\n </SolidDropdownMenuItem>\n ) : null}\n {!isArchivedRecord && handleCustomButtonClick ? (\n <SolidCollectionRowActionMenuItems\n buttons={solidCardViewMetaData?.solidView?.layout?.attrs?.rowButtons}\n params={params}\n rowData={data}\n solidViewMetaData={solidCardViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n showSeparator={true}\n />\n ) : null}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n </div>\n {DynamicCardWidget ? (\n <div style={isArchivedRecord ? { pointerEvents: \"none\" } : undefined}>\n <DynamicCardWidget\n rowData={data}\n solidKanbanViewMetaData={solidCardViewMetaData}\n solidView={solidCardViewMetaData?.solidView}\n solidFieldsMetadata={solidCardViewMetaData?.solidFieldsMetadata}\n card={cardNode}\n layoutAttrs={solidCardViewMetaData?.solidView?.layout?.attrs || {}}\n groupedView={false}\n editButtonUrl={editButtonUrl}\n setLightboxUrls={isArchivedRecord ? undefined : setLightboxUrls}\n setOpenLightbox={isArchivedRecord ? undefined : setOpenLightbox}\n openRecord={openRecord}\n openEdit={openEdit}\n />\n </div>\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default CardItem;\n"]}
1
+ {"version":3,"file":"CardItem.js","sourceRoot":"","sources":["../../../../src/components/core/card/CardItem.tsx"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport React from \"react\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { storeCurrentModelViewContext } from \"../../../helpers/modelViewPersistence\";\nimport { RotateCcw } from \"lucide-react\";\nimport {\n SolidDropdownMenu,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuTrigger,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { SolidCollectionRowActionMenuItems } from \"../common/SolidCollectionRowActionMenuItems\";\n\ninterface CardItemProps {\n data: any;\n solidCardViewMetaData: any;\n editButtonUrl?: string;\n recordClickAction?: \"view\" | \"edit\";\n cardNode?: any;\n DynamicCardWidget?: any;\n onDelete?: (record: any) => void;\n onRecover?: (record: any) => void;\n setLightboxUrls?: any;\n setOpenLightbox?: any;\n showArchived?: boolean;\n params?: any;\n handleCustomButtonClick?: (buttonAttrs: any, event: any) => void;\n}\n\nconst CardItem: React.FC<CardItemProps> = ({\n data,\n solidCardViewMetaData,\n editButtonUrl,\n recordClickAction = \"edit\",\n cardNode,\n DynamicCardWidget,\n onDelete,\n onRecover,\n setLightboxUrls,\n setOpenLightbox,\n showArchived,\n params,\n handleCustomButtonClick,\n}) => {\n const router = useRouter();\n const isArchivedRecord = data?.deletedAt !== null && data?.deletedAt !== undefined;\n\n const openRecord = () => {\n if (isArchivedRecord) return;\n storeCurrentModelViewContext();\n router.push(`${editButtonUrl}/${data?.id}?viewMode=${recordClickAction}`);\n };\n\n const openEdit = () => {\n if (isArchivedRecord) return;\n storeCurrentModelViewContext();\n router.push(`${editButtonUrl}/${data?.id}?viewMode=edit`);\n };\n\n const renderRecoverAction = () => {\n if (!showArchived || !isArchivedRecord || !onRecover) return null;\n\n return (\n <div className=\"solid-kanban-action\" onClick={(e) => e.stopPropagation()}>\n <button\n type=\"button\"\n className=\"retrieve-button solid-row-menu-trigger\"\n onClick={() => onRecover(data)}\n aria-label=\"Recover record\"\n title=\"Recover\"\n >\n <RotateCcw size={14} aria-hidden />\n </button>\n </div>\n );\n };\n\n return (\n <div className=\"solid-card-view-item\">\n <div\n className={`solid-card-view-card solid-kanban-card${isArchivedRecord ? \" greyed-out-row\" : \"\"}`}\n onClick={openRecord}\n style={{ cursor: isArchivedRecord ? \"default\" : \"pointer\" }}\n >\n {isArchivedRecord ? renderRecoverAction() : (\n <div className=\"solid-kanban-action\" onClick={(e) => e.stopPropagation()}>\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-header-cog-trigger solid-kanban-action-trigger\"\n aria-label=\"Open card actions\"\n >\n <SolidIcon name=\"si-ellipsis-v\" aria-hidden />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-custom-overlay\" align=\"end\">\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={openEdit}\n >\n <SolidIcon name=\"si-pencil\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Edit</span>\n </SolidDropdownMenuItem>\n {onDelete ? (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item solid-header-dropdown-item-danger\"\n onSelect={() => onDelete(data)}\n >\n <SolidIcon name=\"si-trash\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Delete</span>\n </SolidDropdownMenuItem>\n ) : null}\n {handleCustomButtonClick ? (\n <SolidCollectionRowActionMenuItems\n buttons={solidCardViewMetaData?.solidView?.layout?.attrs?.rowButtons}\n params={params}\n rowData={data}\n solidViewMetaData={solidCardViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n showSeparator={true}\n />\n ) : null}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n </div>\n )}\n {DynamicCardWidget ? (\n <div style={isArchivedRecord ? { pointerEvents: \"none\" } : undefined}>\n <DynamicCardWidget\n rowData={data}\n solidKanbanViewMetaData={solidCardViewMetaData}\n solidView={solidCardViewMetaData?.solidView}\n solidFieldsMetadata={solidCardViewMetaData?.solidFieldsMetadata}\n card={cardNode}\n layoutAttrs={solidCardViewMetaData?.solidView?.layout?.attrs || {}}\n groupedView={false}\n editButtonUrl={editButtonUrl}\n setLightboxUrls={isArchivedRecord ? undefined : setLightboxUrls}\n setOpenLightbox={isArchivedRecord ? undefined : setOpenLightbox}\n openRecord={openRecord}\n openEdit={openEdit}\n />\n </div>\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default CardItem;\n"]}
@@ -2,6 +2,7 @@
2
2
  import React from "react";
3
3
  import { useRouter } from "../../../hooks/useRouter";
4
4
  import { storeCurrentModelViewContext } from "../../../helpers/modelViewPersistence";
5
+ import { RotateCcw } from "lucide-react";
5
6
  import {
6
7
  SolidDropdownMenu,
7
8
  SolidDropdownMenuContent,
@@ -57,6 +58,24 @@ const CardItem: React.FC<CardItemProps> = ({
57
58
  router.push(`${editButtonUrl}/${data?.id}?viewMode=edit`);
58
59
  };
59
60
 
61
+ const renderRecoverAction = () => {
62
+ if (!showArchived || !isArchivedRecord || !onRecover) return null;
63
+
64
+ return (
65
+ <div className="solid-kanban-action" onClick={(e) => e.stopPropagation()}>
66
+ <button
67
+ type="button"
68
+ className="retrieve-button solid-row-menu-trigger"
69
+ onClick={() => onRecover(data)}
70
+ aria-label="Recover record"
71
+ title="Recover"
72
+ >
73
+ <RotateCcw size={14} aria-hidden />
74
+ </button>
75
+ </div>
76
+ );
77
+ };
78
+
60
79
  return (
61
80
  <div className="solid-card-view-item">
62
81
  <div
@@ -64,19 +83,19 @@ const CardItem: React.FC<CardItemProps> = ({
64
83
  onClick={openRecord}
65
84
  style={{ cursor: isArchivedRecord ? "default" : "pointer" }}
66
85
  >
67
- <div className="solid-kanban-action" onClick={(e) => e.stopPropagation()}>
68
- <SolidDropdownMenu>
69
- <SolidDropdownMenuTrigger asChild>
70
- <button
71
- type="button"
72
- className="solid-header-cog-trigger solid-kanban-action-trigger"
73
- aria-label="Open card actions"
74
- >
75
- <SolidIcon name="si-ellipsis-v" aria-hidden />
76
- </button>
77
- </SolidDropdownMenuTrigger>
78
- <SolidDropdownMenuContent className="solid-custom-overlay" align="end">
79
- {!isArchivedRecord ? (
86
+ {isArchivedRecord ? renderRecoverAction() : (
87
+ <div className="solid-kanban-action" onClick={(e) => e.stopPropagation()}>
88
+ <SolidDropdownMenu>
89
+ <SolidDropdownMenuTrigger asChild>
90
+ <button
91
+ type="button"
92
+ className="solid-header-cog-trigger solid-kanban-action-trigger"
93
+ aria-label="Open card actions"
94
+ >
95
+ <SolidIcon name="si-ellipsis-v" aria-hidden />
96
+ </button>
97
+ </SolidDropdownMenuTrigger>
98
+ <SolidDropdownMenuContent className="solid-custom-overlay" align="end">
80
99
  <SolidDropdownMenuItem
81
100
  className="solid-header-dropdown-item"
82
101
  onSelect={openEdit}
@@ -84,38 +103,29 @@ const CardItem: React.FC<CardItemProps> = ({
84
103
  <SolidIcon name="si-pencil" className="solid-header-action-button-icon" aria-hidden />
85
104
  <span className="solid-header-action-button-label">Edit</span>
86
105
  </SolidDropdownMenuItem>
87
- ) : null}
88
- {showArchived && data?.deletedAt !== null && data?.deletedAt !== undefined && onRecover ? (
89
- <SolidDropdownMenuItem
90
- className="solid-header-dropdown-item"
91
- onSelect={() => onRecover(data)}
92
- >
93
- <SolidIcon name="si-refresh" className="solid-header-action-button-icon" aria-hidden />
94
- <span className="solid-header-action-button-label">Recover</span>
95
- </SolidDropdownMenuItem>
96
- ) : null}
97
- {onDelete && !isArchivedRecord ? (
98
- <SolidDropdownMenuItem
99
- className="solid-header-dropdown-item solid-header-dropdown-item-danger"
100
- onSelect={() => onDelete(data)}
101
- >
102
- <SolidIcon name="si-trash" className="solid-header-action-button-icon" aria-hidden />
103
- <span className="solid-header-action-button-label">Delete</span>
104
- </SolidDropdownMenuItem>
105
- ) : null}
106
- {!isArchivedRecord && handleCustomButtonClick ? (
107
- <SolidCollectionRowActionMenuItems
108
- buttons={solidCardViewMetaData?.solidView?.layout?.attrs?.rowButtons}
109
- params={params}
110
- rowData={data}
111
- solidViewMetaData={solidCardViewMetaData}
112
- handleCustomButtonClick={handleCustomButtonClick}
113
- showSeparator={true}
114
- />
115
- ) : null}
116
- </SolidDropdownMenuContent>
117
- </SolidDropdownMenu>
118
- </div>
106
+ {onDelete ? (
107
+ <SolidDropdownMenuItem
108
+ className="solid-header-dropdown-item solid-header-dropdown-item-danger"
109
+ onSelect={() => onDelete(data)}
110
+ >
111
+ <SolidIcon name="si-trash" className="solid-header-action-button-icon" aria-hidden />
112
+ <span className="solid-header-action-button-label">Delete</span>
113
+ </SolidDropdownMenuItem>
114
+ ) : null}
115
+ {handleCustomButtonClick ? (
116
+ <SolidCollectionRowActionMenuItems
117
+ buttons={solidCardViewMetaData?.solidView?.layout?.attrs?.rowButtons}
118
+ params={params}
119
+ rowData={data}
120
+ solidViewMetaData={solidCardViewMetaData}
121
+ handleCustomButtonClick={handleCustomButtonClick}
122
+ showSeparator={true}
123
+ />
124
+ ) : null}
125
+ </SolidDropdownMenuContent>
126
+ </SolidDropdownMenu>
127
+ </div>
128
+ )}
119
129
  {DynamicCardWidget ? (
120
130
  <div style={isArchivedRecord ? { pointerEvents: "none" } : undefined}>
121
131
  <DynamicCardWidget
@@ -1 +1 @@
1
- {"version":3,"file":"SolidCardView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/card/SolidCardView.tsx"],"names":[],"mappings":";AA2CA,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,uBAAuB,CAAC,EAAE,GAAG,CAAC;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,2BAA2B,CAAC,EAAE,GAAG,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACpD,eAAe,EAAE,MAAM,GAAG,EAAE,CAAC;IAC7B,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;IAC7E,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,EAAE,GAAG,CAAC;QACtB,KAAK,EAAE,GAAG,EAAE,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,CAAC;AAgEF,eAAO,MAAM,aAAa,qHAwoBxB,CAAC"}
1
+ {"version":3,"file":"SolidCardView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/card/SolidCardView.tsx"],"names":[],"mappings":";AA2CA,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,uBAAuB,CAAC,EAAE,GAAG,CAAC;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,sBAAsB,CAAC,EAAE,GAAG,CAAC;IAC7B,2BAA2B,CAAC,EAAE,GAAG,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACpD,eAAe,EAAE,MAAM,GAAG,EAAE,CAAC;IAC7B,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;IAC7E,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,EAAE,GAAG,CAAC;QACtB,KAAK,EAAE,GAAG,EAAE,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH,CAAC;AAgEF,eAAO,MAAM,aAAa,qHAyoBxB,CAAC"}