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

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 (181) hide show
  1. package/README.md +1 -1
  2. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.d.ts.map +1 -1
  3. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.js +2 -1
  4. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.js.map +1 -1
  5. package/dist/components/common/SolidSettings/SettingsImageRemoveButton.tsx +3 -2
  6. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  7. package/dist/components/core/card/SolidCardView.js +1 -1
  8. package/dist/components/core/card/SolidCardView.js.map +1 -1
  9. package/dist/components/core/card/SolidCardView.tsx +1 -0
  10. package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
  11. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  12. package/dist/components/core/card/SolidCardViewConfigure.js +3 -3
  13. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  14. package/dist/components/core/card/SolidCardViewConfigure.tsx +4 -3
  15. package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
  16. package/dist/components/core/chatter/SolidChatterHeader.js +10 -7
  17. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  18. package/dist/components/core/chatter/SolidChatterHeader.tsx +12 -9
  19. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  20. package/dist/components/core/common/SolidGlobalSearchElement.js +3 -3
  21. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  22. package/dist/components/core/common/SolidGlobalSearchElement.tsx +2 -3
  23. package/dist/components/core/filter/SolidBooleanFilterElement.js +1 -1
  24. package/dist/components/core/filter/SolidBooleanFilterElement.js.map +1 -1
  25. package/dist/components/core/filter/SolidBooleanFilterElement.tsx +1 -1
  26. package/dist/components/core/filter/SolidManyToManyFilterElement.js +1 -1
  27. package/dist/components/core/filter/SolidManyToManyFilterElement.js.map +1 -1
  28. package/dist/components/core/filter/SolidManyToManyFilterElement.tsx +1 -1
  29. package/dist/components/core/filter/SolidManyToOneFilterElement.js +1 -1
  30. package/dist/components/core/filter/SolidManyToOneFilterElement.js.map +1 -1
  31. package/dist/components/core/filter/SolidManyToOneFilterElement.tsx +1 -1
  32. package/dist/components/core/filter/SolidOneToManyFilterElement.js +1 -1
  33. package/dist/components/core/filter/SolidOneToManyFilterElement.js.map +1 -1
  34. package/dist/components/core/filter/SolidOneToManyFilterElement.tsx +1 -1
  35. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js +1 -1
  36. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.js.map +1 -1
  37. package/dist/components/core/filter/SolidSelectionDynamicFilterElement.tsx +1 -1
  38. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js +1 -1
  39. package/dist/components/core/filter/SolidSelectionStaticFilterElement.js.map +1 -1
  40. package/dist/components/core/filter/SolidSelectionStaticFilterElement.tsx +1 -1
  41. package/dist/components/core/filter/SolidVarInputsFilterElement.js +5 -5
  42. package/dist/components/core/filter/SolidVarInputsFilterElement.js.map +1 -1
  43. package/dist/components/core/filter/SolidVarInputsFilterElement.tsx +5 -5
  44. package/dist/components/core/filter/fields/SolidBooleanField.js +1 -1
  45. package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
  46. package/dist/components/core/filter/fields/SolidBooleanField.tsx +1 -1
  47. package/dist/components/core/filter/fields/SolidDateField.js +1 -1
  48. package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
  49. package/dist/components/core/filter/fields/SolidDateField.tsx +1 -1
  50. package/dist/components/core/filter/fields/SolidDatetimeField.js +1 -1
  51. package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
  52. package/dist/components/core/filter/fields/SolidDatetimeField.tsx +1 -1
  53. package/dist/components/core/filter/fields/SolidExternalIdField.js +1 -1
  54. package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
  55. package/dist/components/core/filter/fields/SolidExternalIdField.tsx +1 -1
  56. package/dist/components/core/filter/fields/SolidIdField.js +1 -1
  57. package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
  58. package/dist/components/core/filter/fields/SolidIdField.tsx +1 -1
  59. package/dist/components/core/filter/fields/SolidIntField.js +1 -1
  60. package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
  61. package/dist/components/core/filter/fields/SolidIntField.tsx +1 -1
  62. package/dist/components/core/filter/fields/SolidMediaMultipleField.js +1 -1
  63. package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
  64. package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +1 -1
  65. package/dist/components/core/filter/fields/SolidMediaSingleField.js +1 -1
  66. package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
  67. package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +1 -1
  68. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +1 -1
  69. package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
  70. package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +1 -1
  71. package/dist/components/core/filter/fields/SolidSelectionStaticField.js +1 -1
  72. package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
  73. package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +1 -1
  74. package/dist/components/core/filter/fields/SolidShortTextField.js +1 -1
  75. package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
  76. package/dist/components/core/filter/fields/SolidShortTextField.tsx +1 -1
  77. package/dist/components/core/filter/fields/SolidTimeField.js +1 -1
  78. package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
  79. package/dist/components/core/filter/fields/SolidTimeField.tsx +1 -1
  80. package/dist/components/core/filter/fields/SolidUuidField.js +1 -1
  81. package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
  82. package/dist/components/core/filter/fields/SolidUuidField.tsx +1 -1
  83. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +1 -1
  84. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
  85. package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +1 -1
  86. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +1 -1
  87. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  88. package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +1 -1
  89. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +1 -1
  90. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
  91. package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +1 -1
  92. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  93. package/dist/components/core/form/fields/SolidMediaMultipleField.js +5 -3
  94. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  95. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +7 -3
  96. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  97. package/dist/components/core/form/fields/SolidMediaSingleField.js +5 -2
  98. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  99. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +7 -2
  100. package/dist/components/core/form/fields/solidFields.module.css +23 -15
  101. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  102. package/dist/components/core/kanban/SolidKanbanView.js +1 -1
  103. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  104. package/dist/components/core/kanban/SolidKanbanView.tsx +1 -2
  105. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts +1 -1
  106. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
  107. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +3 -3
  108. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  109. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +4 -3
  110. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  111. package/dist/components/core/list/SolidListView.js +1 -1
  112. package/dist/components/core/list/SolidListView.js.map +1 -1
  113. package/dist/components/core/list/SolidListView.tsx +1 -0
  114. package/dist/components/core/list/SolidListViewConfigure.d.ts +1 -1
  115. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  116. package/dist/components/core/list/SolidListViewConfigure.js +3 -4
  117. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  118. package/dist/components/core/list/SolidListViewConfigure.tsx +4 -4
  119. package/dist/components/core/model/FieldMetaDataForm.js +23 -23
  120. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  121. package/dist/components/core/model/FieldMetaDataForm.tsx +30 -30
  122. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  123. package/dist/components/core/tree/SolidTreeView.js +2 -2
  124. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  125. package/dist/components/core/tree/SolidTreeView.tsx +3 -1
  126. package/dist/components/core/users/CreateUserRole.js +1 -1
  127. package/dist/components/core/users/CreateUserRole.js.map +1 -1
  128. package/dist/components/core/users/CreateUserRole.tsx +1 -1
  129. package/dist/components/layout/FilterMenu.d.ts.map +1 -1
  130. package/dist/components/layout/FilterMenu.js +2 -1
  131. package/dist/components/layout/FilterMenu.js.map +1 -1
  132. package/dist/components/layout/FilterMenu.tsx +6 -5
  133. package/dist/components/layout/GlobalSearch.d.ts.map +1 -1
  134. package/dist/components/layout/GlobalSearch.js +2 -1
  135. package/dist/components/layout/GlobalSearch.js.map +1 -1
  136. package/dist/components/layout/GlobalSearch.tsx +2 -1
  137. package/dist/components/layout/ListingHeader.d.ts.map +1 -1
  138. package/dist/components/layout/ListingHeader.js +8 -4
  139. package/dist/components/layout/ListingHeader.js.map +1 -1
  140. package/dist/components/layout/ListingHeader.tsx +9 -9
  141. package/dist/components/layout/navbar-one.d.ts.map +1 -1
  142. package/dist/components/layout/navbar-one.js.map +1 -1
  143. package/dist/components/layout/navbar-one.tsx +4 -16
  144. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  145. package/dist/components/layout/navbar-two-menu.js +8 -3
  146. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  147. package/dist/components/layout/navbar-two-menu.tsx +9 -4
  148. package/dist/components/shad-cn-ui/SolidDropdownMenu.d.ts +3 -1
  149. package/dist/components/shad-cn-ui/SolidDropdownMenu.d.ts.map +1 -1
  150. package/dist/components/shad-cn-ui/SolidDropdownMenu.js +3 -2
  151. package/dist/components/shad-cn-ui/SolidDropdownMenu.js.map +1 -1
  152. package/dist/components/shad-cn-ui/SolidDropdownMenu.tsx +10 -3
  153. package/dist/components/shad-cn-ui/SolidIcon.js +1 -1
  154. package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
  155. package/dist/components/shad-cn-ui/SolidIcon.tsx +1 -1
  156. package/dist/components/workflow/WorkflowNodeDocsPanel.css +29 -0
  157. package/dist/components/workflow/WorkflowNodeSchemaEditor.css +65 -0
  158. package/dist/helpers/getAcceptedFileTypes.d.ts +1 -0
  159. package/dist/helpers/getAcceptedFileTypes.d.ts.map +1 -1
  160. package/dist/helpers/getAcceptedFileTypes.js +6 -0
  161. package/dist/helpers/getAcceptedFileTypes.js.map +1 -1
  162. package/dist/helpers/getAcceptedFileTypes.tsx +7 -0
  163. package/dist/helpers/mediaType.d.ts.map +1 -1
  164. package/dist/helpers/mediaType.js +6 -3
  165. package/dist/helpers/mediaType.js.map +1 -1
  166. package/dist/helpers/mediaType.ts +6 -3
  167. package/dist/resources/globals.css +94 -879
  168. package/dist/resources/solid-custom.css +88 -56
  169. package/dist/resources/solid-responsive.css +1 -106
  170. package/dist/resources/stylesheets/_config.scss +1 -10
  171. package/dist/resources/stylesheets/_utils.scss +0 -7
  172. package/dist/resources/themes/solid-dark-purple/theme.css +11 -5853
  173. package/dist/resources/themes/solid-light-purple/theme.css +6 -5896
  174. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +0 -5
  175. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.css +293 -0
  176. package/dist/styles.d.ts +0 -1
  177. package/dist/styles.d.ts.map +1 -1
  178. package/dist/styles.js +0 -1
  179. package/dist/styles.js.map +1 -1
  180. package/dist/styles.ts +0 -1
  181. package/package.json +1 -3
@@ -1 +1 @@
1
- {"version":3,"file":"navbar-two-menu.d.ts","sourceRoot":"","sources":["../../../src/components/layout/navbar-two-menu.tsx"],"names":[],"mappings":"AAMA,QAAA,MAAM,aAAa,kBAAmB,GAAG,4CA+GxC,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"navbar-two-menu.d.ts","sourceRoot":"","sources":["../../../src/components/layout/navbar-two-menu.tsx"],"names":[],"mappings":"AAOA,QAAA,MAAM,aAAa,kBAAmB,GAAG,4CAmHxC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -12,6 +12,7 @@ var __assign = (this && this.__assign) || function () {
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import Link from "../common/Link";
14
14
  import { useState, useEffect } from "react";
15
+ import { ChevronDown, ChevronUp } from "lucide-react";
15
16
  import { useSearchParams } from "../../hooks/useSearchParams";
16
17
  import { resolveRetainedModelViewRoute } from "../../helpers/modelViewPersistence";
17
18
  import { SolidMenuItemIcon } from "./SolidMenuItemIcon";
@@ -29,8 +30,10 @@ var NavbarTwoMenu = function (_a) {
29
30
  var _a, _b, _c;
30
31
  var isSelected = activeId !== null && item.id !== null && item.id === activeId;
31
32
  var isParentActive = activeId !== null && ((_a = item.items) === null || _a === void 0 ? void 0 : _a.length) > 0 && hasActiveChild(item.items);
32
- return (_jsx("div", { className: "flex items-center cursor-pointer menuHead px-4 ".concat(isSelected || isParentActive ? "p-highlight" : ""), onClick: options.onClick, children: _jsxs(Link, { href: (item === null || item === void 0 ? void 0 : item.url) ? item === null || item === void 0 ? void 0 : item.url : "#", className: "w-full flex justify-between font-normal", children: [_jsxs("div", { className: "flex items-center", style: { gap: 10 }, children: [_jsx(SolidMenuItemIcon, { item: (_b = item.source) !== null && _b !== void 0 ? _b : item }), _jsx("span", { children: item.label })] }), ((_c = item === null || item === void 0 ? void 0 : item.items) === null || _c === void 0 ? void 0 : _c.length) > 0 &&
33
- _jsx("span", { className: "sidebar-chevrons ".concat(expandedKeys[item.key] ? "pi pi-angle-up" : "pi pi-angle-down") })] }) }, item === null || item === void 0 ? void 0 : item.key));
33
+ return (_jsx("div", { className: "flex items-center cursor-pointer menuHead px-4 ".concat(isSelected || isParentActive ? "is-active" : ""), onClick: options.onClick, children: _jsxs(Link, { href: (item === null || item === void 0 ? void 0 : item.url) ? item === null || item === void 0 ? void 0 : item.url : "#", className: "w-full flex justify-between font-normal", children: [_jsxs("div", { className: "flex items-center", style: { gap: 10 }, children: [_jsx(SolidMenuItemIcon, { item: (_b = item.source) !== null && _b !== void 0 ? _b : item }), _jsx("span", { children: item.label })] }), ((_c = item === null || item === void 0 ? void 0 : item.items) === null || _c === void 0 ? void 0 : _c.length) > 0 &&
34
+ expandedKeys[item.key]
35
+ ? _jsx(ChevronUp, { className: "sidebar-chevrons", size: 16, "aria-hidden": "true" })
36
+ : _jsx(ChevronDown, { className: "sidebar-chevrons", size: 16, "aria-hidden": "true" })] }) }, item === null || item === void 0 ? void 0 : item.key));
34
37
  };
35
38
  var createMenuItems = function (menuItems) {
36
39
  return menuItems.map(function (mi) {
@@ -77,7 +80,9 @@ var NavbarTwoMenu = function (_a) {
77
80
  var isExpanded = !!expandedKeys[item.key];
78
81
  var isSelected = activeId !== null && item.id !== null && item.id === activeId;
79
82
  var isParentActive = hasChildren && hasActiveChild(item.items);
80
- return (_jsxs("li", { children: [_jsxs("div", { className: "flex items-center cursor-pointer menuHead px-4 ".concat(isSelected || isParentActive ? "p-highlight" : ""), children: [_jsx(Link, { href: (item === null || item === void 0 ? void 0 : item.url) ? item === null || item === void 0 ? void 0 : item.url : "#", className: "w-full flex justify-between font-normal", children: _jsxs("div", { className: "flex items-center", style: { gap: 10 }, children: [_jsx(SolidMenuItemIcon, { item: (_a = item.source) !== null && _a !== void 0 ? _a : item }), _jsx("span", { children: item.label })] }) }), hasChildren && (_jsx("button", { type: "button", className: "sidebar-chevrons-button", onClick: function () { return toggleExpansion(item.key); }, "aria-label": "Toggle ".concat(item.label, " menu"), children: _jsx("span", { className: "sidebar-chevrons ".concat(isExpanded ? "pi pi-angle-up" : "pi pi-angle-down") }) }))] }), hasChildren && isExpanded && (_jsx("div", { className: "solid-panel-menu-children pl-6", children: renderMenuItems(item.items) }))] }, item.key));
83
+ return (_jsxs("li", { children: [_jsxs("div", { className: "flex items-center cursor-pointer menuHead px-4 ".concat(isSelected || isParentActive ? "is-active" : ""), children: [_jsx(Link, { href: (item === null || item === void 0 ? void 0 : item.url) ? item === null || item === void 0 ? void 0 : item.url : "#", className: "w-full flex justify-between font-normal", children: _jsxs("div", { className: "flex items-center", style: { gap: 10 }, children: [_jsx(SolidMenuItemIcon, { item: (_a = item.source) !== null && _a !== void 0 ? _a : item }), _jsx("span", { children: item.label })] }) }), hasChildren && (_jsx("button", { type: "button", className: "sidebar-chevrons-button", onClick: function () { return toggleExpansion(item.key); }, "aria-label": "Toggle ".concat(item.label, " menu"), children: isExpanded
84
+ ? _jsx(ChevronUp, { className: "sidebar-chevrons", size: 16, "aria-hidden": "true" })
85
+ : _jsx(ChevronDown, { className: "sidebar-chevrons", size: 16, "aria-hidden": "true" }) }))] }), hasChildren && isExpanded && (_jsx("div", { className: "solid-panel-menu-children pl-6", children: renderMenuItems(item.items) }))] }, item.key));
81
86
  }) }));
82
87
  };
83
88
  return _jsx("div", { className: "solid-panel-menu", children: renderMenuItems(items) });
@@ -1 +1 @@
1
- {"version":3,"file":"navbar-two-menu.js","sourceRoot":"","sources":["../../../src/components/layout/navbar-two-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import Link from \"../common/Link\";\nimport { useState, useEffect } from \"react\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { resolveRetainedModelViewRoute } from \"../../helpers/modelViewPersistence\";\nimport { SolidMenuItemIcon } from \"./SolidMenuItemIcon\";\n\nconst NavbarTwoMenu = ({ menuItems }: any) => {\n const searchParams = useSearchParams();\n const [expandedKeys, setExpandedKeys] = useState<any>({});\n\n const activeId = searchParams.get(\"menuItemId\");\n const hasActiveChild = (items: any[]): boolean => {\n if (!activeId) return false;\n return items?.some((item) =>\n (item.id !== null && item.id === activeId) || hasActiveChild(item.items ?? [])\n );\n };\n const itemRenderer = (item: any, options: any) => {\n const isSelected = activeId !== null && item.id !== null && item.id === activeId;\n const isParentActive = activeId !== null && item.items?.length > 0 && hasActiveChild(item.items);\n return (\n <div key={item?.key} className={`flex items-center cursor-pointer menuHead px-4 ${isSelected || isParentActive ? \"p-highlight\" : \"\"}`} onClick={options.onClick} >\n <Link href={item?.url ? item?.url : \"#\"} className=\"w-full flex justify-between font-normal\">\n <div className=\"flex items-center\" style={{ gap: 10 }}>\n <SolidMenuItemIcon item={item.source ?? item} />\n <span>\n {item.label}\n </span>\n </div>\n {item?.items?.length > 0 &&\n <span className={`sidebar-chevrons ${expandedKeys[item.key] ? \"pi pi-angle-up\" : \"pi pi-angle-down\"}`} />\n }\n </Link>\n </div>\n )\n };\n\n const createMenuItems = (menuItems: any[]): any[] =>\n menuItems.map((mi) => {\n const resolvedPath = mi.path ? resolveRetainedModelViewRoute(mi.path) : null;\n const menuItemId = new URLSearchParams(resolvedPath?.split(\"?\")[1]).get(\"menuItemId\");\n return {\n key: mi.key,\n id: menuItemId, // ← extracted from path\n label: mi.title,\n source: mi,\n // iconVariant: mi.iconVariant,\n template: itemRenderer,\n url: resolvedPath,\n items: mi.children ? createMenuItems(mi.children) : null,\n };\n })\n\n\n const items = createMenuItems(menuItems);\n\n // Auto-expand parents with active child when activeId changes\n useEffect(() => {\n const newExpandedKeys: any = {};\n const expandIfActive = (items: any[]) => {\n items?.forEach((item) => {\n if (item.items?.length && hasActiveChild(item.items)) {\n newExpandedKeys[item.key] = true;\n expandIfActive(item.items);\n }\n });\n };\n expandIfActive(createMenuItems(menuItems));\n setExpandedKeys((prev: any) => ({ ...prev, ...newExpandedKeys }));\n }, [activeId]);\n\n const toggleExpansion = (key: string) => {\n setExpandedKeys((prev: any) => ({ ...prev, [key]: !prev[key] }));\n };\n\n const renderMenuItems = (menuItems: any[]): React.ReactNode => {\n return (\n <ul className=\"solid-panel-menu-list\">\n {menuItems.map((item) => {\n const hasChildren = item.items && item.items.length > 0;\n const isExpanded = !!expandedKeys[item.key];\n const isSelected = activeId !== null && item.id !== null && item.id === activeId;\n const isParentActive = hasChildren && hasActiveChild(item.items);\n\n return (\n <li key={item.key}>\n <div className={`flex items-center cursor-pointer menuHead px-4 ${isSelected || isParentActive ? \"p-highlight\" : \"\"}`}>\n <Link href={item?.url ? item?.url : \"#\"} className=\"w-full flex justify-between font-normal\">\n <div className=\"flex items-center\" style={{ gap: 10 }}>\n <SolidMenuItemIcon item={item.source ?? item} />\n <span>{item.label}</span>\n </div>\n </Link>\n {hasChildren && (\n <button\n type=\"button\"\n className=\"sidebar-chevrons-button\"\n onClick={() => toggleExpansion(item.key)}\n aria-label={`Toggle ${item.label} menu`}\n >\n <span className={`sidebar-chevrons ${isExpanded ? \"pi pi-angle-up\" : \"pi pi-angle-down\"}`} />\n </button>\n )}\n </div>\n {hasChildren && isExpanded && (\n <div className=\"solid-panel-menu-children pl-6\">\n {renderMenuItems(item.items)}\n </div>\n )}\n </li>\n );\n })}\n </ul>\n );\n };\n\n return <div className=\"solid-panel-menu\">{renderMenuItems(items)}</div>;\n};\n\nexport default NavbarTwoMenu;\n"]}
1
+ {"version":3,"file":"navbar-two-menu.js","sourceRoot":"","sources":["../../../src/components/layout/navbar-two-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import Link from \"../common/Link\";\nimport { useState, useEffect } from \"react\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { useSearchParams } from \"../../hooks/useSearchParams\";\nimport { resolveRetainedModelViewRoute } from \"../../helpers/modelViewPersistence\";\nimport { SolidMenuItemIcon } from \"./SolidMenuItemIcon\";\n\nconst NavbarTwoMenu = ({ menuItems }: any) => {\n const searchParams = useSearchParams();\n const [expandedKeys, setExpandedKeys] = useState<any>({});\n\n const activeId = searchParams.get(\"menuItemId\");\n const hasActiveChild = (items: any[]): boolean => {\n if (!activeId) return false;\n return items?.some((item) =>\n (item.id !== null && item.id === activeId) || hasActiveChild(item.items ?? [])\n );\n };\n const itemRenderer = (item: any, options: any) => {\n const isSelected = activeId !== null && item.id !== null && item.id === activeId;\n const isParentActive = activeId !== null && item.items?.length > 0 && hasActiveChild(item.items);\n return (\n <div key={item?.key} className={`flex items-center cursor-pointer menuHead px-4 ${isSelected || isParentActive ? \"is-active\" : \"\"}`} onClick={options.onClick} >\n <Link href={item?.url ? item?.url : \"#\"} className=\"w-full flex justify-between font-normal\">\n <div className=\"flex items-center\" style={{ gap: 10 }}>\n <SolidMenuItemIcon item={item.source ?? item} />\n <span>\n {item.label}\n </span>\n </div>\n {item?.items?.length > 0 &&\n expandedKeys[item.key]\n ? <ChevronUp className=\"sidebar-chevrons\" size={16} aria-hidden=\"true\" />\n : <ChevronDown className=\"sidebar-chevrons\" size={16} aria-hidden=\"true\" />\n }\n </Link>\n </div>\n )\n };\n\n const createMenuItems = (menuItems: any[]): any[] =>\n menuItems.map((mi) => {\n const resolvedPath = mi.path ? resolveRetainedModelViewRoute(mi.path) : null;\n const menuItemId = new URLSearchParams(resolvedPath?.split(\"?\")[1]).get(\"menuItemId\");\n return {\n key: mi.key,\n id: menuItemId, // ← extracted from path\n label: mi.title,\n source: mi,\n // iconVariant: mi.iconVariant,\n template: itemRenderer,\n url: resolvedPath,\n items: mi.children ? createMenuItems(mi.children) : null,\n };\n })\n\n\n const items = createMenuItems(menuItems);\n\n // Auto-expand parents with active child when activeId changes\n useEffect(() => {\n const newExpandedKeys: any = {};\n const expandIfActive = (items: any[]) => {\n items?.forEach((item) => {\n if (item.items?.length && hasActiveChild(item.items)) {\n newExpandedKeys[item.key] = true;\n expandIfActive(item.items);\n }\n });\n };\n expandIfActive(createMenuItems(menuItems));\n setExpandedKeys((prev: any) => ({ ...prev, ...newExpandedKeys }));\n }, [activeId]);\n\n const toggleExpansion = (key: string) => {\n setExpandedKeys((prev: any) => ({ ...prev, [key]: !prev[key] }));\n };\n\n const renderMenuItems = (menuItems: any[]): React.ReactNode => {\n return (\n <ul className=\"solid-panel-menu-list\">\n {menuItems.map((item) => {\n const hasChildren = item.items && item.items.length > 0;\n const isExpanded = !!expandedKeys[item.key];\n const isSelected = activeId !== null && item.id !== null && item.id === activeId;\n const isParentActive = hasChildren && hasActiveChild(item.items);\n\n return (\n <li key={item.key}>\n <div className={`flex items-center cursor-pointer menuHead px-4 ${isSelected || isParentActive ? \"is-active\" : \"\"}`}>\n <Link href={item?.url ? item?.url : \"#\"} className=\"w-full flex justify-between font-normal\">\n <div className=\"flex items-center\" style={{ gap: 10 }}>\n <SolidMenuItemIcon item={item.source ?? item} />\n <span>{item.label}</span>\n </div>\n </Link>\n {hasChildren && (\n <button\n type=\"button\"\n className=\"sidebar-chevrons-button\"\n onClick={() => toggleExpansion(item.key)}\n aria-label={`Toggle ${item.label} menu`}\n >\n {isExpanded\n ? <ChevronUp className=\"sidebar-chevrons\" size={16} aria-hidden=\"true\" />\n : <ChevronDown className=\"sidebar-chevrons\" size={16} aria-hidden=\"true\" />}\n </button>\n )}\n </div>\n {hasChildren && isExpanded && (\n <div className=\"solid-panel-menu-children pl-6\">\n {renderMenuItems(item.items)}\n </div>\n )}\n </li>\n );\n })}\n </ul>\n );\n };\n\n return <div className=\"solid-panel-menu\">{renderMenuItems(items)}</div>;\n};\n\nexport default NavbarTwoMenu;\n"]}
@@ -1,5 +1,6 @@
1
1
  import Link from "../common/Link";
2
2
  import { useState, useEffect } from "react";
3
+ import { ChevronDown, ChevronUp } from "lucide-react";
3
4
  import { useSearchParams } from "../../hooks/useSearchParams";
4
5
  import { resolveRetainedModelViewRoute } from "../../helpers/modelViewPersistence";
5
6
  import { SolidMenuItemIcon } from "./SolidMenuItemIcon";
@@ -19,7 +20,7 @@ const NavbarTwoMenu = ({ menuItems }: any) => {
19
20
  const isSelected = activeId !== null && item.id !== null && item.id === activeId;
20
21
  const isParentActive = activeId !== null && item.items?.length > 0 && hasActiveChild(item.items);
21
22
  return (
22
- <div key={item?.key} className={`flex items-center cursor-pointer menuHead px-4 ${isSelected || isParentActive ? "p-highlight" : ""}`} onClick={options.onClick} >
23
+ <div key={item?.key} className={`flex items-center cursor-pointer menuHead px-4 ${isSelected || isParentActive ? "is-active" : ""}`} onClick={options.onClick} >
23
24
  <Link href={item?.url ? item?.url : "#"} className="w-full flex justify-between font-normal">
24
25
  <div className="flex items-center" style={{ gap: 10 }}>
25
26
  <SolidMenuItemIcon item={item.source ?? item} />
@@ -28,7 +29,9 @@ const NavbarTwoMenu = ({ menuItems }: any) => {
28
29
  </span>
29
30
  </div>
30
31
  {item?.items?.length > 0 &&
31
- <span className={`sidebar-chevrons ${expandedKeys[item.key] ? "pi pi-angle-up" : "pi pi-angle-down"}`} />
32
+ expandedKeys[item.key]
33
+ ? <ChevronUp className="sidebar-chevrons" size={16} aria-hidden="true" />
34
+ : <ChevronDown className="sidebar-chevrons" size={16} aria-hidden="true" />
32
35
  }
33
36
  </Link>
34
37
  </div>
@@ -84,7 +87,7 @@ const NavbarTwoMenu = ({ menuItems }: any) => {
84
87
 
85
88
  return (
86
89
  <li key={item.key}>
87
- <div className={`flex items-center cursor-pointer menuHead px-4 ${isSelected || isParentActive ? "p-highlight" : ""}`}>
90
+ <div className={`flex items-center cursor-pointer menuHead px-4 ${isSelected || isParentActive ? "is-active" : ""}`}>
88
91
  <Link href={item?.url ? item?.url : "#"} className="w-full flex justify-between font-normal">
89
92
  <div className="flex items-center" style={{ gap: 10 }}>
90
93
  <SolidMenuItemIcon item={item.source ?? item} />
@@ -98,7 +101,9 @@ const NavbarTwoMenu = ({ menuItems }: any) => {
98
101
  onClick={() => toggleExpansion(item.key)}
99
102
  aria-label={`Toggle ${item.label} menu`}
100
103
  >
101
- <span className={`sidebar-chevrons ${isExpanded ? "pi pi-angle-up" : "pi pi-angle-down"}`} />
104
+ {isExpanded
105
+ ? <ChevronUp className="sidebar-chevrons" size={16} aria-hidden="true" />
106
+ : <ChevronDown className="sidebar-chevrons" size={16} aria-hidden="true" />}
102
107
  </button>
103
108
  )}
104
109
  </div>
@@ -13,5 +13,7 @@ export declare const SolidDropdownMenuRadioItem: React.ForwardRefExoticComponent
13
13
  export declare const SolidDropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenu.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
14
14
  export declare const SolidDropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenu.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
15
  export declare const SolidDropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenu.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
- export declare const SolidDropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenu.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
16
+ export declare const SolidDropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenu.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
17
+ side?: "left" | "right" | undefined;
18
+ } & React.RefAttributes<HTMLDivElement>>;
17
19
  //# sourceMappingURL=SolidDropdownMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidDropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidDropdownMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAO9D,eAAO,MAAM,iBAAiB,0CAAoB,CAAC;AACnD,eAAO,MAAM,wBAAwB,iHAAuB,CAAC;AAC7D,eAAO,MAAM,oBAAoB,6CAAmB,CAAC;AACrD,eAAO,MAAM,2BAA2B,iHAA0B,CAAC;AAEnE,eAAO,MAAM,wBAAwB,iKAenC,CAAC;AAEH,eAAO,MAAM,qBAAqB,8JAKhC,CAAC;AAMH,eAAO,MAAM,6BAA6B;WAHjC,MAAM,SAAS;wCAwBtB,CAAC;AAEH,eAAO,MAAM,0BAA0B,mKAkBrC,CAAC;AAEH,eAAO,MAAM,sBAAsB,+JAKjC,CAAC;AAEH,eAAO,MAAM,0BAA0B,mKAKrC,CAAC;AAEH,eAAO,MAAM,2BAA2B,oKActC,CAAC;AAEH,eAAO,MAAM,2BAA2B,oKAetC,CAAC"}
1
+ {"version":3,"file":"SolidDropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidDropdownMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAO9D,eAAO,MAAM,iBAAiB,0CAAoB,CAAC;AACnD,eAAO,MAAM,wBAAwB,iHAAuB,CAAC;AAC7D,eAAO,MAAM,oBAAoB,6CAAmB,CAAC;AACrD,eAAO,MAAM,2BAA2B,iHAA0B,CAAC;AAEnE,eAAO,MAAM,wBAAwB,iKAenC,CAAC;AAEH,eAAO,MAAM,qBAAqB,8JAKhC,CAAC;AAMH,eAAO,MAAM,6BAA6B;WAHjC,MAAM,SAAS;wCAwBtB,CAAC;AAEH,eAAO,MAAM,0BAA0B,mKAkBrC,CAAC;AAEH,eAAO,MAAM,sBAAsB,+JAKjC,CAAC;AAEH,eAAO,MAAM,0BAA0B,mKAKrC,CAAC;AAEH,eAAO,MAAM,2BAA2B,oKActC,CAAC;AAMH,eAAO,MAAM,2BAA2B;;wCAkBtC,CAAC"}
@@ -64,7 +64,8 @@ export var SolidDropdownMenuSubTrigger = React.forwardRef(function SolidDropdown
64
64
  return (_jsxs(DropdownMenu.SubTrigger, __assign({ ref: ref, className: cx("solid-dropdown-menu-item solid-dropdown-menu-subtrigger", className) }, props, { children: [children, _jsx(SolidIcon, { name: "si-chevron-right", className: "solid-dropdown-menu-subtrigger-icon", "aria-hidden": true })] })));
65
65
  });
66
66
  export var SolidDropdownMenuSubContent = React.forwardRef(function SolidDropdownMenuSubContent(_a, ref) {
67
- var className = _a.className, _b = _a.sideOffset, sideOffset = _b === void 0 ? 2 : _b, _c = _a.alignOffset, alignOffset = _c === void 0 ? -4 : _c, props = __rest(_a, ["className", "sideOffset", "alignOffset"]);
68
- return (_jsx(DropdownMenu.Portal, { children: _jsx(DropdownMenu.SubContent, __assign({ ref: ref, sideOffset: sideOffset, alignOffset: alignOffset, className: cx("solid-dropdown-menu-content solid-dropdown-menu-subcontent", className) }, props)) }));
67
+ var className = _a.className, _b = _a.side, side = _b === void 0 ? "right" : _b, _c = _a.sideOffset, sideOffset = _c === void 0 ? 2 : _c, _d = _a.alignOffset, alignOffset = _d === void 0 ? -4 : _d, props = __rest(_a, ["className", "side", "sideOffset", "alignOffset"]);
68
+ var SubContent = DropdownMenu.SubContent;
69
+ return (_jsx(DropdownMenu.Portal, { children: _jsx(SubContent, __assign({ ref: ref, side: side, sideOffset: sideOffset, alignOffset: alignOffset, className: cx("solid-dropdown-menu-content solid-dropdown-menu-subcontent", className) }, props)) }));
69
70
  });
70
71
  //# sourceMappingURL=SolidDropdownMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidDropdownMenu.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidDropdownMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { SolidIcon } from \"./SolidIcon\";\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport const SolidDropdownMenu = DropdownMenu.Root;\nexport const SolidDropdownMenuTrigger = DropdownMenu.Trigger;\nexport const SolidDropdownMenuSub = DropdownMenu.Sub;\nexport const SolidDropdownMenuRadioGroup = DropdownMenu.RadioGroup;\n\nexport const SolidDropdownMenuContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Content>\n>(function SolidDropdownMenuContent({ className, sideOffset = 6, align = \"end\", ...props }, ref) {\n return (\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cx(\"solid-dropdown-menu-content\", className)}\n {...props}\n />\n </DropdownMenu.Portal>\n );\n});\n\nexport const SolidDropdownMenuItem = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Item>\n>(function SolidDropdownMenuItem({ className, ...props }, ref) {\n return <DropdownMenu.Item ref={ref} className={cx(\"solid-dropdown-menu-item\", className)} {...props} />;\n});\n\ntype SolidDropdownMenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof DropdownMenu.CheckboxItem> & {\n icon?: React.ReactNode;\n};\n\nexport const SolidDropdownMenuCheckboxItem = React.forwardRef<\n HTMLDivElement,\n SolidDropdownMenuCheckboxItemProps\n>(function SolidDropdownMenuCheckboxItem({ className, children, checked, icon, ...props }, ref) {\n return (\n <DropdownMenu.CheckboxItem\n ref={ref}\n checked={checked}\n className={cx(\"solid-dropdown-menu-item solid-dropdown-menu-checkbox-item\", className)}\n {...props}\n >\n <span className=\"solid-dropdown-menu-indicator\">\n {icon ? icon : (\n <DropdownMenu.ItemIndicator>\n <SolidIcon name=\"si-check\" aria-hidden />\n </DropdownMenu.ItemIndicator>\n )}\n </span>\n <span className=\"solid-dropdown-menu-item-text\">{children}</span>\n </DropdownMenu.CheckboxItem>\n );\n});\n\nexport const SolidDropdownMenuRadioItem = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.RadioItem>\n>(function SolidDropdownMenuRadioItem({ className, children, ...props }, ref) {\n return (\n <DropdownMenu.RadioItem\n ref={ref}\n className={cx(\"solid-dropdown-menu-item solid-dropdown-menu-radio-item\", className)}\n {...props}\n >\n <span className=\"solid-dropdown-menu-indicator\">\n <DropdownMenu.ItemIndicator>\n <SolidIcon name=\"si-check\" aria-hidden />\n </DropdownMenu.ItemIndicator>\n </span>\n <span className=\"solid-dropdown-menu-item-text\">{children}</span>\n </DropdownMenu.RadioItem>\n );\n});\n\nexport const SolidDropdownMenuLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Label>\n>(function SolidDropdownMenuLabel({ className, ...props }, ref) {\n return <DropdownMenu.Label ref={ref} className={cx(\"solid-dropdown-menu-label\", className)} {...props} />;\n});\n\nexport const SolidDropdownMenuSeparator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Separator>\n>(function SolidDropdownMenuSeparator({ className, ...props }, ref) {\n return <DropdownMenu.Separator ref={ref} className={cx(\"solid-dropdown-menu-separator\", className)} {...props} />;\n});\n\nexport const SolidDropdownMenuSubTrigger = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.SubTrigger>\n>(function SolidDropdownMenuSubTrigger({ className, children, ...props }, ref) {\n return (\n <DropdownMenu.SubTrigger\n ref={ref}\n className={cx(\"solid-dropdown-menu-item solid-dropdown-menu-subtrigger\", className)}\n {...props}\n >\n {children}\n <SolidIcon name=\"si-chevron-right\" className=\"solid-dropdown-menu-subtrigger-icon\" aria-hidden />\n </DropdownMenu.SubTrigger>\n );\n});\n\nexport const SolidDropdownMenuSubContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.SubContent>\n>(function SolidDropdownMenuSubContent({ className, sideOffset = 2, alignOffset = -4, ...props }, ref) {\n return (\n <DropdownMenu.Portal>\n <DropdownMenu.SubContent\n ref={ref}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n className={cx(\"solid-dropdown-menu-content solid-dropdown-menu-subcontent\", className)}\n {...props}\n />\n </DropdownMenu.Portal>\n );\n});\n"]}
1
+ {"version":3,"file":"SolidDropdownMenu.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidDropdownMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { SolidIcon } from \"./SolidIcon\";\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport const SolidDropdownMenu = DropdownMenu.Root;\nexport const SolidDropdownMenuTrigger = DropdownMenu.Trigger;\nexport const SolidDropdownMenuSub = DropdownMenu.Sub;\nexport const SolidDropdownMenuRadioGroup = DropdownMenu.RadioGroup;\n\nexport const SolidDropdownMenuContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Content>\n>(function SolidDropdownMenuContent({ className, sideOffset = 6, align = \"end\", ...props }, ref) {\n return (\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n ref={ref}\n sideOffset={sideOffset}\n align={align}\n className={cx(\"solid-dropdown-menu-content\", className)}\n {...props}\n />\n </DropdownMenu.Portal>\n );\n});\n\nexport const SolidDropdownMenuItem = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Item>\n>(function SolidDropdownMenuItem({ className, ...props }, ref) {\n return <DropdownMenu.Item ref={ref} className={cx(\"solid-dropdown-menu-item\", className)} {...props} />;\n});\n\ntype SolidDropdownMenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof DropdownMenu.CheckboxItem> & {\n icon?: React.ReactNode;\n};\n\nexport const SolidDropdownMenuCheckboxItem = React.forwardRef<\n HTMLDivElement,\n SolidDropdownMenuCheckboxItemProps\n>(function SolidDropdownMenuCheckboxItem({ className, children, checked, icon, ...props }, ref) {\n return (\n <DropdownMenu.CheckboxItem\n ref={ref}\n checked={checked}\n className={cx(\"solid-dropdown-menu-item solid-dropdown-menu-checkbox-item\", className)}\n {...props}\n >\n <span className=\"solid-dropdown-menu-indicator\">\n {icon ? icon : (\n <DropdownMenu.ItemIndicator>\n <SolidIcon name=\"si-check\" aria-hidden />\n </DropdownMenu.ItemIndicator>\n )}\n </span>\n <span className=\"solid-dropdown-menu-item-text\">{children}</span>\n </DropdownMenu.CheckboxItem>\n );\n});\n\nexport const SolidDropdownMenuRadioItem = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.RadioItem>\n>(function SolidDropdownMenuRadioItem({ className, children, ...props }, ref) {\n return (\n <DropdownMenu.RadioItem\n ref={ref}\n className={cx(\"solid-dropdown-menu-item solid-dropdown-menu-radio-item\", className)}\n {...props}\n >\n <span className=\"solid-dropdown-menu-indicator\">\n <DropdownMenu.ItemIndicator>\n <SolidIcon name=\"si-check\" aria-hidden />\n </DropdownMenu.ItemIndicator>\n </span>\n <span className=\"solid-dropdown-menu-item-text\">{children}</span>\n </DropdownMenu.RadioItem>\n );\n});\n\nexport const SolidDropdownMenuLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Label>\n>(function SolidDropdownMenuLabel({ className, ...props }, ref) {\n return <DropdownMenu.Label ref={ref} className={cx(\"solid-dropdown-menu-label\", className)} {...props} />;\n});\n\nexport const SolidDropdownMenuSeparator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.Separator>\n>(function SolidDropdownMenuSeparator({ className, ...props }, ref) {\n return <DropdownMenu.Separator ref={ref} className={cx(\"solid-dropdown-menu-separator\", className)} {...props} />;\n});\n\nexport const SolidDropdownMenuSubTrigger = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof DropdownMenu.SubTrigger>\n>(function SolidDropdownMenuSubTrigger({ className, children, ...props }, ref) {\n return (\n <DropdownMenu.SubTrigger\n ref={ref}\n className={cx(\"solid-dropdown-menu-item solid-dropdown-menu-subtrigger\", className)}\n {...props}\n >\n {children}\n <SolidIcon name=\"si-chevron-right\" className=\"solid-dropdown-menu-subtrigger-icon\" aria-hidden />\n </DropdownMenu.SubTrigger>\n );\n});\n\ntype SolidDropdownMenuSubContentProps = React.ComponentPropsWithoutRef<typeof DropdownMenu.SubContent> & {\n side?: \"left\" | \"right\";\n};\n\nexport const SolidDropdownMenuSubContent = React.forwardRef<\n HTMLDivElement,\n SolidDropdownMenuSubContentProps\n>(function SolidDropdownMenuSubContent({ className, side = \"right\", sideOffset = 2, alignOffset = -4, ...props }, ref) {\n const SubContent = DropdownMenu.SubContent as unknown as React.ComponentType<any>;\n\n return (\n <DropdownMenu.Portal>\n <SubContent\n ref={ref}\n side={side}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n className={cx(\"solid-dropdown-menu-content solid-dropdown-menu-subcontent\", className)}\n {...props}\n />\n </DropdownMenu.Portal>\n );\n});\n"]}
@@ -112,14 +112,21 @@ export const SolidDropdownMenuSubTrigger = React.forwardRef<
112
112
  );
113
113
  });
114
114
 
115
+ type SolidDropdownMenuSubContentProps = React.ComponentPropsWithoutRef<typeof DropdownMenu.SubContent> & {
116
+ side?: "left" | "right";
117
+ };
118
+
115
119
  export const SolidDropdownMenuSubContent = React.forwardRef<
116
120
  HTMLDivElement,
117
- React.ComponentPropsWithoutRef<typeof DropdownMenu.SubContent>
118
- >(function SolidDropdownMenuSubContent({ className, sideOffset = 2, alignOffset = -4, ...props }, ref) {
121
+ SolidDropdownMenuSubContentProps
122
+ >(function SolidDropdownMenuSubContent({ className, side = "right", sideOffset = 2, alignOffset = -4, ...props }, ref) {
123
+ const SubContent = DropdownMenu.SubContent as unknown as React.ComponentType<any>;
124
+
119
125
  return (
120
126
  <DropdownMenu.Portal>
121
- <DropdownMenu.SubContent
127
+ <SubContent
122
128
  ref={ref}
129
+ side={side}
123
130
  sideOffset={sideOffset}
124
131
  alignOffset={alignOffset}
125
132
  className={cx("solid-dropdown-menu-content solid-dropdown-menu-subcontent", className)}
@@ -99,7 +99,7 @@ var ICON_MAP = {
99
99
  "si-users": Users,
100
100
  "si-wifi": Wifi
101
101
  };
102
- var SPIN_CLASSNAMES = new Set(["pi-spin", "si-spin"]);
102
+ var SPIN_CLASSNAMES = new Set(["si-spin"]);
103
103
  function cx() {
104
104
  var parts = [];
105
105
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"SolidIcon.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidIcon.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport {\n AlertCircle,\n AlertTriangle,\n Archive,\n ArrowDownWideNarrow,\n ArrowLeft,\n ArrowRight,\n ArrowUpWideNarrow,\n BarChart3,\n Bell,\n Bot,\n Calendar,\n CalendarMinus,\n CalendarPlus,\n Check,\n CheckCircle2,\n ChevronsLeft,\n ChevronsRight,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n CircleHelp,\n Code,\n Cog,\n Columns3,\n Copy,\n Download,\n DownloadCloud,\n ExternalLink,\n Eye,\n EyeOff,\n File,\n FilePenLine,\n FileSpreadsheet,\n FileText,\n FileType,\n Filter,\n FilterX,\n History,\n Image as ImageIcon,\n Inbox,\n Info,\n LayoutGrid,\n Loader2,\n Lock,\n Mail,\n Menu,\n MessageSquare,\n Minus,\n MoreHorizontal,\n MoreVertical,\n Pencil,\n Plus,\n Power,\n RefreshCcw,\n Save,\n Search,\n Send,\n SlidersHorizontal,\n Star,\n Terminal,\n Trash2,\n Upload,\n UploadCloud,\n User,\n Users,\n Wifi,\n X,\n XCircle\n} from \"lucide-react\";\n\ntype IconComponent = LucideIcon;\n\nconst ICON_MAP = {\n \"si-android\": Bot,\n \"si-angle-double-left\": ChevronsLeft,\n \"si-angle-double-right\": ChevronsRight,\n \"si-angle-down\": ChevronDown,\n \"si-angle-left\": ChevronLeft,\n \"si-angle-right\": ChevronRight,\n \"si-angle-up\": ChevronUp,\n \"si-archive\": Archive,\n \"si-arrow-left\": ArrowLeft,\n \"si-arrow-right\": ArrowRight,\n \"si-bars\": Menu,\n \"si-bell\": Bell,\n \"si-calendar\": Calendar,\n \"si-calendar-minus\": CalendarMinus,\n \"si-calendar-plus\": CalendarPlus,\n \"si-chart-bar\": BarChart3,\n \"si-chart-line\": BarChart3,\n \"si-check\": Check,\n \"si-check-circle\": CheckCircle2,\n \"si-chevron-down\": ChevronDown,\n \"si-chevron-left\": ChevronLeft,\n \"si-chevron-right\": ChevronRight,\n \"si-chevron-up\": ChevronUp,\n \"si-clone\": Copy,\n \"si-cloud-download\": DownloadCloud,\n \"si-cloud-upload\": UploadCloud,\n \"si-code\": Code,\n \"si-cog\": Cog,\n \"si-comments\": MessageSquare,\n \"si-copy\": Copy,\n \"si-download\": Download,\n \"si-ellipsis-h\": MoreHorizontal,\n \"si-ellipsis-v\": MoreVertical,\n \"si-envelope\": Mail,\n \"si-exclamation-circle\": AlertCircle,\n \"si-exclamation-triangle\": AlertTriangle,\n \"si-external-link\": ExternalLink,\n \"si-eye\": Eye,\n \"si-eye-slash\": EyeOff,\n \"si-file\": File,\n \"si-file-edit\": FilePenLine,\n \"si-file-excel\": FileSpreadsheet,\n \"si-file-pdf\": FileText,\n \"si-file-word\": FileType,\n \"si-filter\": Filter,\n \"si-filter-fill\": Filter,\n \"si-filter-slash\": FilterX,\n \"si-history\": History,\n \"si-image\": ImageIcon,\n \"si-inbox\": Inbox,\n \"si-info-circle\": Info,\n \"si-lock\": Lock,\n \"si-minus\": Minus,\n \"si-objects-column\": Columns3,\n \"si-pencil\": Pencil,\n \"si-plus\": Plus,\n \"si-power-off\": Power,\n \"si-refresh\": RefreshCcw,\n \"si-save\": Save,\n \"si-search\": Search,\n \"si-send\": Send,\n \"si-sliders-h\": SlidersHorizontal,\n \"si-sort-down-fill\": ArrowDownWideNarrow,\n \"si-sort-up-fill\": ArrowUpWideNarrow,\n \"si-spinner\": Loader2,\n \"si-star\": Star,\n \"si-terminal\": Terminal,\n \"si-th-large\": LayoutGrid,\n \"si-times\": X,\n \"si-times-circle\": XCircle,\n \"si-trash\": Trash2,\n \"si-upload\": Upload,\n \"si-user\": User,\n \"si-users\": Users,\n \"si-wifi\": Wifi\n} satisfies Record<string, IconComponent>;\n\nexport type SolidIconName = keyof typeof ICON_MAP;\n\nconst SPIN_CLASSNAMES = new Set([\"pi-spin\", \"si-spin\"]);\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(\" \");\n}\n\nfunction isSolidIconName(name: string): name is SolidIconName {\n return Object.prototype.hasOwnProperty.call(ICON_MAP, name);\n}\n\nexport interface SolidIconProps extends React.SVGAttributes<SVGSVGElement> {\n name: SolidIconName;\n size?: number | string;\n spin?: boolean;\n}\n\nexport const ICON_KEYS = Object.keys(ICON_MAP) as SolidIconName[];\n\nexport function SolidIcon({ name, size = \"1em\", spin, className, ...rest }: SolidIconProps) {\n const IconComponent = ICON_MAP[name] ?? CircleHelp;\n\n return (\n <IconComponent\n size={size}\n className={cx(\"solid-icon\", spin && \"solid-icon--spin\", className)}\n {...rest}\n />\n );\n}\n\nexport type SolidIconMeta = {\n name: SolidIconName;\n spin?: boolean;\n};\n\nexport function parseSolidIconMeta(value?: string | null): SolidIconMeta | undefined {\n if (!value) return undefined;\n const tokens = value.trim().split(/\\s+/).filter(Boolean);\n if (tokens.length === 0) return undefined;\n\n let spin = false;\n let matchedName: SolidIconName | undefined;\n\n for (const token of tokens) {\n if (SPIN_CLASSNAMES.has(token)) {\n spin = true;\n continue;\n }\n\n if (!token.startsWith(\"pi-\") && !token.startsWith(\"si-\")) {\n continue;\n }\n\n const normalized = token.startsWith(\"pi-\") ? `si-${token.slice(3)}` : token;\n if (isSolidIconName(normalized)) {\n matchedName = normalized;\n }\n }\n\n if (!matchedName) return undefined;\n\n return { name: matchedName, spin };\n}\n\nexport function normalizeSolidIconName(value?: string | null): SolidIconName | undefined {\n return parseSolidIconMeta(value)?.name;\n}\n"]}
1
+ {"version":3,"file":"SolidIcon.js","sourceRoot":"","sources":["../../../src/components/shad-cn-ui/SolidIcon.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport {\n AlertCircle,\n AlertTriangle,\n Archive,\n ArrowDownWideNarrow,\n ArrowLeft,\n ArrowRight,\n ArrowUpWideNarrow,\n BarChart3,\n Bell,\n Bot,\n Calendar,\n CalendarMinus,\n CalendarPlus,\n Check,\n CheckCircle2,\n ChevronsLeft,\n ChevronsRight,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n CircleHelp,\n Code,\n Cog,\n Columns3,\n Copy,\n Download,\n DownloadCloud,\n ExternalLink,\n Eye,\n EyeOff,\n File,\n FilePenLine,\n FileSpreadsheet,\n FileText,\n FileType,\n Filter,\n FilterX,\n History,\n Image as ImageIcon,\n Inbox,\n Info,\n LayoutGrid,\n Loader2,\n Lock,\n Mail,\n Menu,\n MessageSquare,\n Minus,\n MoreHorizontal,\n MoreVertical,\n Pencil,\n Plus,\n Power,\n RefreshCcw,\n Save,\n Search,\n Send,\n SlidersHorizontal,\n Star,\n Terminal,\n Trash2,\n Upload,\n UploadCloud,\n User,\n Users,\n Wifi,\n X,\n XCircle\n} from \"lucide-react\";\n\ntype IconComponent = LucideIcon;\n\nconst ICON_MAP = {\n \"si-android\": Bot,\n \"si-angle-double-left\": ChevronsLeft,\n \"si-angle-double-right\": ChevronsRight,\n \"si-angle-down\": ChevronDown,\n \"si-angle-left\": ChevronLeft,\n \"si-angle-right\": ChevronRight,\n \"si-angle-up\": ChevronUp,\n \"si-archive\": Archive,\n \"si-arrow-left\": ArrowLeft,\n \"si-arrow-right\": ArrowRight,\n \"si-bars\": Menu,\n \"si-bell\": Bell,\n \"si-calendar\": Calendar,\n \"si-calendar-minus\": CalendarMinus,\n \"si-calendar-plus\": CalendarPlus,\n \"si-chart-bar\": BarChart3,\n \"si-chart-line\": BarChart3,\n \"si-check\": Check,\n \"si-check-circle\": CheckCircle2,\n \"si-chevron-down\": ChevronDown,\n \"si-chevron-left\": ChevronLeft,\n \"si-chevron-right\": ChevronRight,\n \"si-chevron-up\": ChevronUp,\n \"si-clone\": Copy,\n \"si-cloud-download\": DownloadCloud,\n \"si-cloud-upload\": UploadCloud,\n \"si-code\": Code,\n \"si-cog\": Cog,\n \"si-comments\": MessageSquare,\n \"si-copy\": Copy,\n \"si-download\": Download,\n \"si-ellipsis-h\": MoreHorizontal,\n \"si-ellipsis-v\": MoreVertical,\n \"si-envelope\": Mail,\n \"si-exclamation-circle\": AlertCircle,\n \"si-exclamation-triangle\": AlertTriangle,\n \"si-external-link\": ExternalLink,\n \"si-eye\": Eye,\n \"si-eye-slash\": EyeOff,\n \"si-file\": File,\n \"si-file-edit\": FilePenLine,\n \"si-file-excel\": FileSpreadsheet,\n \"si-file-pdf\": FileText,\n \"si-file-word\": FileType,\n \"si-filter\": Filter,\n \"si-filter-fill\": Filter,\n \"si-filter-slash\": FilterX,\n \"si-history\": History,\n \"si-image\": ImageIcon,\n \"si-inbox\": Inbox,\n \"si-info-circle\": Info,\n \"si-lock\": Lock,\n \"si-minus\": Minus,\n \"si-objects-column\": Columns3,\n \"si-pencil\": Pencil,\n \"si-plus\": Plus,\n \"si-power-off\": Power,\n \"si-refresh\": RefreshCcw,\n \"si-save\": Save,\n \"si-search\": Search,\n \"si-send\": Send,\n \"si-sliders-h\": SlidersHorizontal,\n \"si-sort-down-fill\": ArrowDownWideNarrow,\n \"si-sort-up-fill\": ArrowUpWideNarrow,\n \"si-spinner\": Loader2,\n \"si-star\": Star,\n \"si-terminal\": Terminal,\n \"si-th-large\": LayoutGrid,\n \"si-times\": X,\n \"si-times-circle\": XCircle,\n \"si-trash\": Trash2,\n \"si-upload\": Upload,\n \"si-user\": User,\n \"si-users\": Users,\n \"si-wifi\": Wifi\n} satisfies Record<string, IconComponent>;\n\nexport type SolidIconName = keyof typeof ICON_MAP;\n\nconst SPIN_CLASSNAMES = new Set([\"si-spin\"]);\n\nfunction cx(...parts: Array<string | false | undefined>) {\n return parts.filter(Boolean).join(\" \");\n}\n\nfunction isSolidIconName(name: string): name is SolidIconName {\n return Object.prototype.hasOwnProperty.call(ICON_MAP, name);\n}\n\nexport interface SolidIconProps extends React.SVGAttributes<SVGSVGElement> {\n name: SolidIconName;\n size?: number | string;\n spin?: boolean;\n}\n\nexport const ICON_KEYS = Object.keys(ICON_MAP) as SolidIconName[];\n\nexport function SolidIcon({ name, size = \"1em\", spin, className, ...rest }: SolidIconProps) {\n const IconComponent = ICON_MAP[name] ?? CircleHelp;\n\n return (\n <IconComponent\n size={size}\n className={cx(\"solid-icon\", spin && \"solid-icon--spin\", className)}\n {...rest}\n />\n );\n}\n\nexport type SolidIconMeta = {\n name: SolidIconName;\n spin?: boolean;\n};\n\nexport function parseSolidIconMeta(value?: string | null): SolidIconMeta | undefined {\n if (!value) return undefined;\n const tokens = value.trim().split(/\\s+/).filter(Boolean);\n if (tokens.length === 0) return undefined;\n\n let spin = false;\n let matchedName: SolidIconName | undefined;\n\n for (const token of tokens) {\n if (SPIN_CLASSNAMES.has(token)) {\n spin = true;\n continue;\n }\n\n if (!token.startsWith(\"pi-\") && !token.startsWith(\"si-\")) {\n continue;\n }\n\n const normalized = token.startsWith(\"pi-\") ? `si-${token.slice(3)}` : token;\n if (isSolidIconName(normalized)) {\n matchedName = normalized;\n }\n }\n\n if (!matchedName) return undefined;\n\n return { name: matchedName, spin };\n}\n\nexport function normalizeSolidIconName(value?: string | null): SolidIconName | undefined {\n return parseSolidIconMeta(value)?.name;\n}\n"]}
@@ -154,7 +154,7 @@ const ICON_MAP = {
154
154
 
155
155
  export type SolidIconName = keyof typeof ICON_MAP;
156
156
 
157
- const SPIN_CLASSNAMES = new Set(["pi-spin", "si-spin"]);
157
+ const SPIN_CLASSNAMES = new Set(["si-spin"]);
158
158
 
159
159
  function cx(...parts: Array<string | false | undefined>) {
160
160
  return parts.filter(Boolean).join(" ");
@@ -245,3 +245,32 @@
245
245
  .workflow-node-docs pre {
246
246
  max-width: 100%;
247
247
  }
248
+
249
+ html.dark .workflow-node-docs,
250
+ [data-theme="dark"] .workflow-node-docs {
251
+ color: var(--foreground);
252
+ }
253
+
254
+ html.dark .workflow-node-docs-title-row h2,
255
+ html.dark .workflow-node-docs-section-trigger.solid-accordion-trigger,
256
+ html.dark .workflow-node-docs-row-heading strong,
257
+ html.dark .workflow-node-docs-section-title,
258
+ html.dark .workflow-node-docs-examples-inline strong,
259
+ [data-theme="dark"] .workflow-node-docs-title-row h2,
260
+ [data-theme="dark"] .workflow-node-docs-section-trigger.solid-accordion-trigger,
261
+ [data-theme="dark"] .workflow-node-docs-row-heading strong,
262
+ [data-theme="dark"] .workflow-node-docs-section-title,
263
+ [data-theme="dark"] .workflow-node-docs-examples-inline strong {
264
+ color: var(--foreground);
265
+ }
266
+
267
+ html.dark .workflow-node-docs-type,
268
+ html.dark .workflow-node-docs-description,
269
+ html.dark .workflow-node-docs-meta-row span,
270
+ html.dark .workflow-node-docs-meta-row code,
271
+ [data-theme="dark"] .workflow-node-docs-type,
272
+ [data-theme="dark"] .workflow-node-docs-description,
273
+ [data-theme="dark"] .workflow-node-docs-meta-row span,
274
+ [data-theme="dark"] .workflow-node-docs-meta-row code {
275
+ color: var(--muted-foreground);
276
+ }
@@ -997,3 +997,68 @@
997
997
  grid-template-columns: 1fr;
998
998
  }
999
999
  }
1000
+
1001
+ /* Workflow node dialogs inherit the active application theme, including all labels. */
1002
+ html.dark .solid-workflow-node-editor-dialog,
1003
+ [data-theme="dark"] .solid-workflow-node-editor-dialog {
1004
+ color: var(--foreground);
1005
+ }
1006
+
1007
+ html.dark .workflow-node-editor-dialog-title,
1008
+ html.dark .workflow-node-editor-section-heading,
1009
+ html.dark .workflow-add-node-category-title,
1010
+ html.dark .workflow-add-node-card-title,
1011
+ [data-theme="dark"] .workflow-node-editor-dialog-title,
1012
+ [data-theme="dark"] .workflow-node-editor-section-heading,
1013
+ [data-theme="dark"] .workflow-add-node-category-title,
1014
+ [data-theme="dark"] .workflow-add-node-card-title {
1015
+ color: var(--foreground);
1016
+ }
1017
+
1018
+ html.dark .workflow-node-editor-dialog-subtitle,
1019
+ html.dark .workflow-node-editor-label,
1020
+ html.dark .workflow-add-node-subcategory-title,
1021
+ html.dark .workflow-add-node-card-description,
1022
+ [data-theme="dark"] .workflow-node-editor-dialog-subtitle,
1023
+ [data-theme="dark"] .workflow-node-editor-label,
1024
+ [data-theme="dark"] .workflow-add-node-subcategory-title,
1025
+ [data-theme="dark"] .workflow-add-node-card-description {
1026
+ color: var(--muted-foreground);
1027
+ }
1028
+
1029
+ html.dark .workflow-add-node-search,
1030
+ html.dark .workflow-add-node-card,
1031
+ [data-theme="dark"] .workflow-add-node-search,
1032
+ [data-theme="dark"] .workflow-add-node-card {
1033
+ background: var(--card);
1034
+ border-color: var(--border);
1035
+ color: var(--foreground);
1036
+ }
1037
+
1038
+ html.dark .workflow-add-node-category + .workflow-add-node-category,
1039
+ [data-theme="dark"] .workflow-add-node-category + .workflow-add-node-category {
1040
+ border-top-color: var(--border);
1041
+ }
1042
+
1043
+ html.dark .workflow-add-node-search-action,
1044
+ [data-theme="dark"] .workflow-add-node-search-action {
1045
+ color: var(--muted-foreground);
1046
+ }
1047
+
1048
+ html.dark .workflow-add-node-search-action:hover,
1049
+ html.dark .workflow-add-node-search-action:focus-visible,
1050
+ html.dark .workflow-add-node-search-action.is-active,
1051
+ [data-theme="dark"] .workflow-add-node-search-action:hover,
1052
+ [data-theme="dark"] .workflow-add-node-search-action:focus-visible,
1053
+ [data-theme="dark"] .workflow-add-node-search-action.is-active {
1054
+ background: var(--surface-hover);
1055
+ color: var(--primary);
1056
+ }
1057
+
1058
+ html.dark .workflow-add-node-card:hover,
1059
+ html.dark .workflow-add-node-card:focus-visible,
1060
+ [data-theme="dark"] .workflow-add-node-card:hover,
1061
+ [data-theme="dark"] .workflow-add-node-card:focus-visible {
1062
+ border-color: var(--primary);
1063
+ box-shadow: var(--shadow-soft);
1064
+ }
@@ -10,5 +10,6 @@ export declare const getAvailableMediaExtensionOptions: (mediaTypes?: string[] |
10
10
  }>;
11
11
  export declare const getAllowedMediaTypesLabel: (mediaTypes?: string[] | null) => string;
12
12
  export declare const getAllowedMediaExtensionsLabel: (mediaAllowedExtensions?: string[] | null) => string | null;
13
+ export declare const getAllowedMediaExtensionsErrorMessage: (mediaAllowedExtensions?: string[] | null) => string | null;
13
14
  export default function getAcceptedFileTypes(mediaTypes?: string[] | null, mediaAllowedExtensions?: string[] | null, mediaConfig?: MediaConfig | null): Record<string, string[]>;
14
15
  //# sourceMappingURL=getAcceptedFileTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getAcceptedFileTypes.d.ts","sourceRoot":"","sources":["../../src/helpers/getAcceptedFileTypes.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACtB,wBAAwB,CAAC,EAAE,KAAK,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACN,CAAC;AAuCF,eAAO,MAAM,iCAAiC,gBAAiB,MAAM,EAAE,GAAG,IAAI,6BAA6B,WAAW,CAAC,0BAA0B,CAAC,GAAG,IAAI,KAAG,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKjM,CAAC;AAEF,eAAO,MAAM,yBAAyB,gBAAiB,MAAM,EAAE,GAAG,IAAI,KAAG,MAWxE,CAAC;AAEF,eAAO,MAAM,8BAA8B,4BAA6B,MAAM,EAAE,GAAG,IAAI,KAAG,MAAM,GAAG,IAOlG,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,sBAAsB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,4BA+BpJ"}
1
+ {"version":3,"file":"getAcceptedFileTypes.d.ts","sourceRoot":"","sources":["../../src/helpers/getAcceptedFileTypes.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACtB,wBAAwB,CAAC,EAAE,KAAK,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACN,CAAC;AAuCF,eAAO,MAAM,iCAAiC,gBAAiB,MAAM,EAAE,GAAG,IAAI,6BAA6B,WAAW,CAAC,0BAA0B,CAAC,GAAG,IAAI,KAAG,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAKjM,CAAC;AAEF,eAAO,MAAM,yBAAyB,gBAAiB,MAAM,EAAE,GAAG,IAAI,KAAG,MAWxE,CAAC;AAEF,eAAO,MAAM,8BAA8B,4BAA6B,MAAM,EAAE,GAAG,IAAI,KAAG,MAAM,GAAG,IAOlG,CAAC;AAEF,eAAO,MAAM,qCAAqC,4BAA6B,MAAM,EAAE,GAAG,IAAI,KAAG,MAAM,GAAG,IAKzG,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,sBAAsB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,4BA+BpJ"}
@@ -41,6 +41,12 @@ export var getAllowedMediaExtensionsLabel = function (mediaAllowedExtensions) {
41
41
  }
42
42
  return selectedExtensions.map(function (extension) { return ".".concat(extension); }).join(", ");
43
43
  };
44
+ export var getAllowedMediaExtensionsErrorMessage = function (mediaAllowedExtensions) {
45
+ var allowedExtensionsLabel = getAllowedMediaExtensionsLabel(mediaAllowedExtensions);
46
+ return allowedExtensionsLabel
47
+ ? "Please upload a file with one of these extensions: ".concat(allowedExtensionsLabel)
48
+ : null;
49
+ };
44
50
  export default function getAcceptedFileTypes(mediaTypes, mediaAllowedExtensions, mediaConfig) {
45
51
  var effectiveExtensions = normalizeExtensions(mediaAllowedExtensions);
46
52
  if (effectiveExtensions.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"getAcceptedFileTypes.js","sourceRoot":"","sources":["../../src/helpers/getAcceptedFileTypes.tsx"],"names":[],"mappings":"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","sourcesContent":["export type MediaConfig = {\n mediaFileTypeDefinitions?: Array<{\n mediaType: string;\n extension: string;\n }>;\n};\n\nconst MEDIA_TYPE_LABELS: Record<string, string> = {\n image: \"Images\",\n audio: \"Audio\",\n video: \"Video\",\n file: \"Documents and archives\",\n pdf: \"PDF\",\n};\n\nconst normalizeExtensions = (extensions?: string[] | null): string[] => Array.from(\n new Set(\n (Array.isArray(extensions) ? extensions : [])\n .map((extension) => String(extension || \"\").trim().toLowerCase().replace(/^\\./, \"\"))\n .filter(Boolean)\n )\n);\n\nconst normalizeMediaTypes = (mediaTypes?: string[] | null): string[] => Array.from(\n new Set(\n (Array.isArray(mediaTypes) ? mediaTypes : [])\n .map((type) => String(type || \"\").trim().toLowerCase())\n .filter(Boolean)\n )\n);\n\nconst getCategoryExtensions = (mediaTypes?: string[] | null, mediaFileTypeDefinitions?: MediaConfig[\"mediaFileTypeDefinitions\"] | null): string[] => {\n const allowedMediaTypes = new Set(normalizeMediaTypes(mediaTypes));\n if (allowedMediaTypes.size === 0) {\n return [];\n }\n\n return normalizeExtensions(\n (mediaFileTypeDefinitions ?? [])\n .filter((fileType) => allowedMediaTypes.has(String(fileType?.mediaType || \"\").toLowerCase()))\n .map((fileType) => String(fileType?.extension || \"\").trim().toLowerCase())\n );\n};\n\nexport const getAvailableMediaExtensionOptions = (mediaTypes?: string[] | null, mediaFileTypeDefinitions?: MediaConfig[\"mediaFileTypeDefinitions\"] | null): Array<{ label: string; value: string }> => {\n return getCategoryExtensions(mediaTypes, mediaFileTypeDefinitions).map((extension) => ({\n label: `.${extension}`,\n value: extension,\n }));\n};\n\nexport const getAllowedMediaTypesLabel = (mediaTypes?: string[] | null): string => {\n const normalizedMediaTypes = normalizeMediaTypes(mediaTypes);\n if (normalizedMediaTypes.length === 0) {\n return \"Any file\";\n }\n\n const labels = normalizedMediaTypes.map(\n (type) => MEDIA_TYPE_LABELS[type] || type.toUpperCase()\n );\n\n return labels.length > 0 ? labels.join(\", \") : \"Any file\";\n};\n\nexport const getAllowedMediaExtensionsLabel = (mediaAllowedExtensions?: string[] | null): string | null => {\n const selectedExtensions = normalizeExtensions(mediaAllowedExtensions);\n if (selectedExtensions.length === 0) {\n return null;\n }\n\n return selectedExtensions.map((extension) => `.${extension}`).join(\", \");\n};\n\nexport default function getAcceptedFileTypes(mediaTypes?: string[] | null, mediaAllowedExtensions?: string[] | null, mediaConfig?: MediaConfig | null) {\n const effectiveExtensions = normalizeExtensions(mediaAllowedExtensions);\n if (effectiveExtensions.length > 0) {\n return {\n \"application/octet-stream\": effectiveExtensions.map((extension) => `.${extension}`),\n };\n }\n\n const normalizedMediaTypes = normalizeMediaTypes(mediaTypes);\n if (normalizedMediaTypes.length === 0) {\n return {};\n }\n\n const categoryExtensions = getCategoryExtensions(mediaTypes, mediaConfig?.mediaFileTypeDefinitions);\n const allowedExtensions = categoryExtensions.map((extension) => `.${extension}`);\n const acceptGroups: string[] = [];\n\n if (normalizedMediaTypes.includes(\"image\")) acceptGroups.push(\"image/*\");\n if (normalizedMediaTypes.includes(\"audio\")) acceptGroups.push(\"audio/*\");\n if (normalizedMediaTypes.includes(\"video\")) acceptGroups.push(\"video/*\");\n if (normalizedMediaTypes.includes(\"pdf\")) acceptGroups.push(\"application/pdf\");\n if (normalizedMediaTypes.includes(\"file\")) acceptGroups.push(\"application/*\", \"text/*\");\n\n if (acceptGroups.length === 0) {\n return {};\n }\n\n return acceptGroups.reduce<Record<string, string[]>>((acceptMap, acceptGroup) => {\n acceptMap[acceptGroup] = allowedExtensions;\n return acceptMap;\n }, {});\n}\n"]}
1
+ {"version":3,"file":"getAcceptedFileTypes.js","sourceRoot":"","sources":["../../src/helpers/getAcceptedFileTypes.tsx"],"names":[],"mappings":"AAOA,IAAM,iBAAiB,GAA2B;IAC9C,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,wBAAwB;IAC9B,GAAG,EAAE,KAAK;CACb,CAAC;AAEF,IAAM,mBAAmB,GAAG,UAAC,UAA4B,IAAe,OAAA,KAAK,CAAC,IAAI,CAC9E,IAAI,GAAG,CACH,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,GAAG,CAAC,UAAC,SAAS,IAAK,OAAA,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAA/D,CAA+D,CAAC;KACnF,MAAM,CAAC,OAAO,CAAC,CACvB,CACJ,EANuE,CAMvE,CAAC;AAEF,IAAM,mBAAmB,GAAG,UAAC,UAA4B,IAAe,OAAA,KAAK,CAAC,IAAI,CAC9E,IAAI,GAAG,CACH,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAvC,CAAuC,CAAC;KACtD,MAAM,CAAC,OAAO,CAAC,CACvB,CACJ,EANuE,CAMvE,CAAC;AAEF,IAAM,qBAAqB,GAAG,UAAC,UAA4B,EAAE,wBAAyE;IAClI,IAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,IAAI,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAE;QAC9B,OAAO,EAAE,CAAC;KACb;IAED,OAAO,mBAAmB,CACtB,CAAC,wBAAwB,aAAxB,wBAAwB,cAAxB,wBAAwB,GAAI,EAAE,CAAC;SAC3B,MAAM,CAAC,UAAC,QAAQ,IAAK,OAAA,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,KAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAtE,CAAsE,CAAC;SAC5F,GAAG,CAAC,UAAC,QAAQ,IAAK,OAAA,MAAM,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAtD,CAAsD,CAAC,CACjF,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAC,UAA4B,EAAE,wBAAyE;IACrJ,OAAO,qBAAqB,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC,GAAG,CAAC,UAAC,SAAS,IAAK,OAAA,CAAC;QACnF,KAAK,EAAE,WAAI,SAAS,CAAE;QACtB,KAAK,EAAE,SAAS;KACnB,CAAC,EAHoF,CAGpF,CAAC,CAAC;AACR,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,UAA4B;IAClE,IAAM,oBAAoB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,OAAO,UAAU,CAAC;KACrB;IAED,IAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CACnC,UAAC,IAAI,IAAK,OAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAA7C,CAA6C,CAC1D,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,8BAA8B,GAAG,UAAC,sBAAwC;IACnF,IAAM,kBAAkB,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IACvE,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;QACjC,OAAO,IAAI,CAAC;KACf;IAED,OAAO,kBAAkB,CAAC,GAAG,CAAC,UAAC,SAAS,IAAK,OAAA,WAAI,SAAS,CAAE,EAAf,CAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,qCAAqC,GAAG,UAAC,sBAAwC;IAC1F,IAAM,sBAAsB,GAAG,8BAA8B,CAAC,sBAAsB,CAAC,CAAC;IACtF,OAAO,sBAAsB;QACzB,CAAC,CAAC,6DAAsD,sBAAsB,CAAE;QAChF,CAAC,CAAC,IAAI,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,UAA4B,EAAE,sBAAwC,EAAE,WAAgC;IACjJ,IAAM,mBAAmB,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IACxE,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;QAChC,OAAO;YACH,0BAA0B,EAAE,mBAAmB,CAAC,GAAG,CAAC,UAAC,SAAS,IAAK,OAAA,WAAI,SAAS,CAAE,EAAf,CAAe,CAAC;SACtF,CAAC;KACL;IAED,IAAM,oBAAoB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;QACnC,OAAO,EAAE,CAAC;KACb;IAED,IAAM,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,wBAAwB,CAAC,CAAC;IACpG,IAAM,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAC,SAAS,IAAK,OAAA,WAAI,SAAS,CAAE,EAAf,CAAe,CAAC,CAAC;IACjF,IAAM,YAAY,GAAa,EAAE,CAAC;IAElC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzE,IAAI,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzE,IAAI,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzE,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/E,IAAI,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAExF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAO,EAAE,CAAC;KACb;IAED,OAAO,YAAY,CAAC,MAAM,CAA2B,UAAC,SAAS,EAAE,WAAW;QACxE,SAAS,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC;QAC3C,OAAO,SAAS,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC","sourcesContent":["export type MediaConfig = {\n mediaFileTypeDefinitions?: Array<{\n mediaType: string;\n extension: string;\n }>;\n};\n\nconst MEDIA_TYPE_LABELS: Record<string, string> = {\n image: \"Images\",\n audio: \"Audio\",\n video: \"Video\",\n file: \"Documents and archives\",\n pdf: \"PDF\",\n};\n\nconst normalizeExtensions = (extensions?: string[] | null): string[] => Array.from(\n new Set(\n (Array.isArray(extensions) ? extensions : [])\n .map((extension) => String(extension || \"\").trim().toLowerCase().replace(/^\\./, \"\"))\n .filter(Boolean)\n )\n);\n\nconst normalizeMediaTypes = (mediaTypes?: string[] | null): string[] => Array.from(\n new Set(\n (Array.isArray(mediaTypes) ? mediaTypes : [])\n .map((type) => String(type || \"\").trim().toLowerCase())\n .filter(Boolean)\n )\n);\n\nconst getCategoryExtensions = (mediaTypes?: string[] | null, mediaFileTypeDefinitions?: MediaConfig[\"mediaFileTypeDefinitions\"] | null): string[] => {\n const allowedMediaTypes = new Set(normalizeMediaTypes(mediaTypes));\n if (allowedMediaTypes.size === 0) {\n return [];\n }\n\n return normalizeExtensions(\n (mediaFileTypeDefinitions ?? [])\n .filter((fileType) => allowedMediaTypes.has(String(fileType?.mediaType || \"\").toLowerCase()))\n .map((fileType) => String(fileType?.extension || \"\").trim().toLowerCase())\n );\n};\n\nexport const getAvailableMediaExtensionOptions = (mediaTypes?: string[] | null, mediaFileTypeDefinitions?: MediaConfig[\"mediaFileTypeDefinitions\"] | null): Array<{ label: string; value: string }> => {\n return getCategoryExtensions(mediaTypes, mediaFileTypeDefinitions).map((extension) => ({\n label: `.${extension}`,\n value: extension,\n }));\n};\n\nexport const getAllowedMediaTypesLabel = (mediaTypes?: string[] | null): string => {\n const normalizedMediaTypes = normalizeMediaTypes(mediaTypes);\n if (normalizedMediaTypes.length === 0) {\n return \"Any file\";\n }\n\n const labels = normalizedMediaTypes.map(\n (type) => MEDIA_TYPE_LABELS[type] || type.toUpperCase()\n );\n\n return labels.length > 0 ? labels.join(\", \") : \"Any file\";\n};\n\nexport const getAllowedMediaExtensionsLabel = (mediaAllowedExtensions?: string[] | null): string | null => {\n const selectedExtensions = normalizeExtensions(mediaAllowedExtensions);\n if (selectedExtensions.length === 0) {\n return null;\n }\n\n return selectedExtensions.map((extension) => `.${extension}`).join(\", \");\n};\n\nexport const getAllowedMediaExtensionsErrorMessage = (mediaAllowedExtensions?: string[] | null): string | null => {\n const allowedExtensionsLabel = getAllowedMediaExtensionsLabel(mediaAllowedExtensions);\n return allowedExtensionsLabel\n ? `Please upload a file with one of these extensions: ${allowedExtensionsLabel}`\n : null;\n};\n\nexport default function getAcceptedFileTypes(mediaTypes?: string[] | null, mediaAllowedExtensions?: string[] | null, mediaConfig?: MediaConfig | null) {\n const effectiveExtensions = normalizeExtensions(mediaAllowedExtensions);\n if (effectiveExtensions.length > 0) {\n return {\n \"application/octet-stream\": effectiveExtensions.map((extension) => `.${extension}`),\n };\n }\n\n const normalizedMediaTypes = normalizeMediaTypes(mediaTypes);\n if (normalizedMediaTypes.length === 0) {\n return {};\n }\n\n const categoryExtensions = getCategoryExtensions(mediaTypes, mediaConfig?.mediaFileTypeDefinitions);\n const allowedExtensions = categoryExtensions.map((extension) => `.${extension}`);\n const acceptGroups: string[] = [];\n\n if (normalizedMediaTypes.includes(\"image\")) acceptGroups.push(\"image/*\");\n if (normalizedMediaTypes.includes(\"audio\")) acceptGroups.push(\"audio/*\");\n if (normalizedMediaTypes.includes(\"video\")) acceptGroups.push(\"video/*\");\n if (normalizedMediaTypes.includes(\"pdf\")) acceptGroups.push(\"application/pdf\");\n if (normalizedMediaTypes.includes(\"file\")) acceptGroups.push(\"application/*\", \"text/*\");\n\n if (acceptGroups.length === 0) {\n return {};\n }\n\n return acceptGroups.reduce<Record<string, string[]>>((acceptMap, acceptGroup) => {\n acceptMap[acceptGroup] = allowedExtensions;\n return acceptMap;\n }, {});\n}\n"]}
@@ -71,6 +71,13 @@ export const getAllowedMediaExtensionsLabel = (mediaAllowedExtensions?: string[]
71
71
  return selectedExtensions.map((extension) => `.${extension}`).join(", ");
72
72
  };
73
73
 
74
+ export const getAllowedMediaExtensionsErrorMessage = (mediaAllowedExtensions?: string[] | null): string | null => {
75
+ const allowedExtensionsLabel = getAllowedMediaExtensionsLabel(mediaAllowedExtensions);
76
+ return allowedExtensionsLabel
77
+ ? `Please upload a file with one of these extensions: ${allowedExtensionsLabel}`
78
+ : null;
79
+ };
80
+
74
81
  export default function getAcceptedFileTypes(mediaTypes?: string[] | null, mediaAllowedExtensions?: string[] | null, mediaConfig?: MediaConfig | null) {
75
82
  const effectiveExtensions = normalizeExtensions(mediaAllowedExtensions);
76
83
  if (effectiveExtensions.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"mediaType.d.ts","sourceRoot":"","sources":["../../src/helpers/mediaType.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAAC;AAyClD,eAAO,MAAM,mBAAmB;;;;MAA0F,gBAEzH,CAAC;AAEF,eAAO,MAAM,mBAAmB,cACnB,gBAAgB,mCACsD,CAAC;AAEpF,eAAO,MAAM,mBAAmB,SAAU,MAAM,KAAG,SAOlD,CAAC"}
1
+ {"version":3,"file":"mediaType.d.ts","sourceRoot":"","sources":["../../src/helpers/mediaType.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAAC;AAyClD,eAAO,MAAM,mBAAmB;;;;MAA0F,gBAEzH,CAAC;AAEF,eAAO,MAAM,mBAAmB,cACnB,gBAAgB,mCACsD,CAAC;AAEpF,eAAO,MAAM,mBAAmB,SAAU,MAAM,KAAG,SAOlD,CAAC"}
@@ -1,6 +1,9 @@
1
- var imageExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "webp", "svg", "avif"];
2
- var videoExtensions = ["mp4", "webm", "ogg", "mov", "m4v"];
3
- var audioExtensions = ["mp3", "wav", "m4a", "aac", "oga"];
1
+ // Keep these fallback extensions aligned with the supported MEDIA_FILE_TYPES metadata.
2
+ var imageExtensions = ["png", "jpg", "jpeg", "webp", "gif", "bmp", "tiff", "heic", "heif"];
3
+ // These extensions are supported by the media metadata and should open in the video lightbox
4
+ // when the stored MIME type is missing or generic.
5
+ var videoExtensions = ["mp4", "webm", "ogg", "mov", "m4v", "3g2", "mpeg", "mpg", "mkv", "avi"];
6
+ var audioExtensions = ["mp3", "wav", "ogg", "aac", "m4a", "flac", "webm"];
4
7
  var getMediaExtension = function (value) {
5
8
  var _a, _b;
6
9
  if (!value)
@@ -1 +1 @@
1
- {"version":3,"file":"mediaType.js","sourceRoot":"","sources":["../../src/helpers/mediaType.ts"],"names":[],"mappings":"AAAA,IAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACpF,IAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7D,IAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAK5D,IAAM,iBAAiB,GAAG,UAAC,KAAc;;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,IAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,MAAA,MAAA,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,0CAAE,WAAW,EAAE,mCAAI,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF,IAAM,YAAY,GAAG,UAAC,EAAoF;QAAlF,GAAG,SAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAA;IAC7C,IAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,IAAI,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3C,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3C,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3C,OAAO,OAAO,CAAC;KAChB;IAED,IAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACvC,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACvC,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACvC,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,EAAmF;;QAAjF,GAAG,SAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAA;IAC3D,OAAO,MAAA,YAAY,CAAC,EAAE,GAAG,KAAA,EAAE,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,mCAAI,MAAM,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UACjC,SAA2B,IACQ,OAAA,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,EAA9C,CAA8C,CAAC;AAEpF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,GAAY;IAC9C,IAAM,SAAS,GAAG,YAAY,CAAC,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC;IACxC,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,EAAE;QAClD,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["const imageExtensions = [\"jpg\", \"jpeg\", \"png\", \"gif\", \"bmp\", \"webp\", \"svg\", \"avif\"];\nconst videoExtensions = [\"mp4\", \"webm\", \"ogg\", \"mov\", \"m4v\"];\nconst audioExtensions = [\"mp3\", \"wav\", \"m4a\", \"aac\", \"oga\"];\n\nexport type MediaKind = \"image\" | \"video\" | \"audio\";\nexport type MediaPreviewKind = MediaKind | \"file\";\n\nconst getMediaExtension = (value?: string): string => {\n if (!value) return \"\";\n\n const cleanValue = value.split(\"?\")[0];\n return cleanValue.split(\".\").pop()?.toLowerCase() ?? \"\";\n};\n\nconst getMediaKind = ({ url, fileName, mimeType }: { url?: string; fileName?: string; mimeType?: string; }): MediaKind | null => {\n const normalizedMimeType = String(mimeType || \"\").toLowerCase();\n if (normalizedMimeType.startsWith(\"image/\")) {\n return \"image\";\n }\n\n if (normalizedMimeType.startsWith(\"video/\")) {\n return \"video\";\n }\n\n if (normalizedMimeType.startsWith(\"audio/\")) {\n return \"audio\";\n }\n\n const extension = getMediaExtension(fileName) || getMediaExtension(url);\n if (!extension) return null;\n\n if (imageExtensions.includes(extension)) {\n return \"image\";\n }\n\n if (videoExtensions.includes(extension)) {\n return \"video\";\n }\n\n if (audioExtensions.includes(extension)) {\n return \"audio\";\n }\n\n return null;\n};\n\nexport const getMediaPreviewKind = ({ url, fileName, mimeType}: { url?: string; fileName?: string; mimeType?: string; }): MediaPreviewKind => {\n return getMediaKind({ url, fileName, mimeType }) ?? \"file\";\n};\n\nexport const isLightboxMediaKind = (\n mediaKind: MediaPreviewKind\n): mediaKind is \"image\" | \"video\" => mediaKind === \"image\" || mediaKind === \"video\";\n\nexport const getMediaTypeFromUrl = (url?: string): MediaKind => {\n const mediaKind = getMediaKind({ url });\n if (mediaKind === \"video\" || mediaKind === \"audio\") {\n return mediaKind;\n }\n\n return \"image\";\n};\n"]}
1
+ {"version":3,"file":"mediaType.js","sourceRoot":"","sources":["../../src/helpers/mediaType.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,IAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7F,6FAA6F;AAC7F,mDAAmD;AACnD,IAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACjG,IAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAK5E,IAAM,iBAAiB,GAAG,UAAC,KAAc;;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,IAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,MAAA,MAAA,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,0CAAE,WAAW,EAAE,mCAAI,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF,IAAM,YAAY,GAAG,UAAC,EAAoF;QAAlF,GAAG,SAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAA;IAC7C,IAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,IAAI,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3C,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3C,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3C,OAAO,OAAO,CAAC;KAChB;IAED,IAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACvC,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACvC,OAAO,OAAO,CAAC;KAChB;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACvC,OAAO,OAAO,CAAC;KAChB;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,EAAmF;;QAAjF,GAAG,SAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAA;IAC3D,OAAO,MAAA,YAAY,CAAC,EAAE,GAAG,KAAA,EAAE,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,mCAAI,MAAM,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UACjC,SAA2B,IACQ,OAAA,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,EAA9C,CAA8C,CAAC;AAEpF,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,GAAY;IAC9C,IAAM,SAAS,GAAG,YAAY,CAAC,EAAE,GAAG,KAAA,EAAE,CAAC,CAAC;IACxC,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,EAAE;QAClD,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["// Keep these fallback extensions aligned with the supported MEDIA_FILE_TYPES metadata.\nconst imageExtensions = [\"png\", \"jpg\", \"jpeg\", \"webp\", \"gif\", \"bmp\", \"tiff\", \"heic\", \"heif\"];\n// These extensions are supported by the media metadata and should open in the video lightbox\n// when the stored MIME type is missing or generic.\nconst videoExtensions = [\"mp4\", \"webm\", \"ogg\", \"mov\", \"m4v\", \"3g2\", \"mpeg\", \"mpg\", \"mkv\", \"avi\"];\nconst audioExtensions = [\"mp3\", \"wav\", \"ogg\", \"aac\", \"m4a\", \"flac\", \"webm\"];\n\nexport type MediaKind = \"image\" | \"video\" | \"audio\";\nexport type MediaPreviewKind = MediaKind | \"file\";\n\nconst getMediaExtension = (value?: string): string => {\n if (!value) return \"\";\n\n const cleanValue = value.split(\"?\")[0];\n return cleanValue.split(\".\").pop()?.toLowerCase() ?? \"\";\n};\n\nconst getMediaKind = ({ url, fileName, mimeType }: { url?: string; fileName?: string; mimeType?: string; }): MediaKind | null => {\n const normalizedMimeType = String(mimeType || \"\").toLowerCase();\n if (normalizedMimeType.startsWith(\"image/\")) {\n return \"image\";\n }\n\n if (normalizedMimeType.startsWith(\"video/\")) {\n return \"video\";\n }\n\n if (normalizedMimeType.startsWith(\"audio/\")) {\n return \"audio\";\n }\n\n const extension = getMediaExtension(fileName) || getMediaExtension(url);\n if (!extension) return null;\n\n if (imageExtensions.includes(extension)) {\n return \"image\";\n }\n\n if (videoExtensions.includes(extension)) {\n return \"video\";\n }\n\n if (audioExtensions.includes(extension)) {\n return \"audio\";\n }\n\n return null;\n};\n\nexport const getMediaPreviewKind = ({ url, fileName, mimeType}: { url?: string; fileName?: string; mimeType?: string; }): MediaPreviewKind => {\n return getMediaKind({ url, fileName, mimeType }) ?? \"file\";\n};\n\nexport const isLightboxMediaKind = (\n mediaKind: MediaPreviewKind\n): mediaKind is \"image\" | \"video\" => mediaKind === \"image\" || mediaKind === \"video\";\n\nexport const getMediaTypeFromUrl = (url?: string): MediaKind => {\n const mediaKind = getMediaKind({ url });\n if (mediaKind === \"video\" || mediaKind === \"audio\") {\n return mediaKind;\n }\n\n return \"image\";\n};\n"]}
@@ -1,6 +1,9 @@
1
- const imageExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "webp", "svg", "avif"];
2
- const videoExtensions = ["mp4", "webm", "ogg", "mov", "m4v"];
3
- const audioExtensions = ["mp3", "wav", "m4a", "aac", "oga"];
1
+ // Keep these fallback extensions aligned with the supported MEDIA_FILE_TYPES metadata.
2
+ const imageExtensions = ["png", "jpg", "jpeg", "webp", "gif", "bmp", "tiff", "heic", "heif"];
3
+ // These extensions are supported by the media metadata and should open in the video lightbox
4
+ // when the stored MIME type is missing or generic.
5
+ const videoExtensions = ["mp4", "webm", "ogg", "mov", "m4v", "3g2", "mpeg", "mpg", "mkv", "avi"];
6
+ const audioExtensions = ["mp3", "wav", "ogg", "aac", "m4a", "flac", "webm"];
4
7
 
5
8
  export type MediaKind = "image" | "video" | "audio";
6
9
  export type MediaPreviewKind = MediaKind | "file";