@adobe-commerce/aio-experience-kit 1.0.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 (186) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/LICENSE +56 -0
  3. package/README.md +479 -0
  4. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +341 -0
  5. package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  6. package/dist/cjs/components/ConfirmationDialog/index.js +68 -0
  7. package/dist/cjs/components/ConfirmationDialog/index.js.map +1 -0
  8. package/dist/cjs/components/DataForm/FieldBuilder/index.js +168 -0
  9. package/dist/cjs/components/DataForm/FieldBuilder/index.js.map +1 -0
  10. package/dist/cjs/components/DataForm/FormBuilder/index.js +154 -0
  11. package/dist/cjs/components/DataForm/FormBuilder/index.js.map +1 -0
  12. package/dist/cjs/components/DataForm/FormBuilder/types.js +15 -0
  13. package/dist/cjs/components/DataForm/FormBuilder/types.js.map +1 -0
  14. package/dist/cjs/components/DataForm/index.js +93 -0
  15. package/dist/cjs/components/DataForm/index.js.map +1 -0
  16. package/dist/cjs/components/DataTable/ActionsBuilder/index.js +47 -0
  17. package/dist/cjs/components/DataTable/ActionsBuilder/index.js.map +1 -0
  18. package/dist/cjs/components/DataTable/GridBuilder/ActionMenuRenderer/index.js +117 -0
  19. package/dist/cjs/components/DataTable/GridBuilder/ActionMenuRenderer/index.js.map +1 -0
  20. package/dist/cjs/components/DataTable/GridBuilder/ButtonsRenderer/index.js +114 -0
  21. package/dist/cjs/components/DataTable/GridBuilder/ButtonsRenderer/index.js.map +1 -0
  22. package/dist/cjs/components/DataTable/GridBuilder/LinksRenderer/index.js +120 -0
  23. package/dist/cjs/components/DataTable/GridBuilder/LinksRenderer/index.js.map +1 -0
  24. package/dist/cjs/components/DataTable/GridBuilder/index.js +114 -0
  25. package/dist/cjs/components/DataTable/GridBuilder/index.js.map +1 -0
  26. package/dist/cjs/components/DataTable/index.js +158 -0
  27. package/dist/cjs/components/DataTable/index.js.map +1 -0
  28. package/dist/cjs/components/DataTable/types.js +12 -0
  29. package/dist/cjs/components/DataTable/types.js.map +1 -0
  30. package/dist/cjs/components/MainContainer/ContentBuilder/index.js +32 -0
  31. package/dist/cjs/components/MainContainer/ContentBuilder/index.js.map +1 -0
  32. package/dist/cjs/components/MainContainer/NavigationBuilder/Buttons/index.js +40 -0
  33. package/dist/cjs/components/MainContainer/NavigationBuilder/Buttons/index.js.map +1 -0
  34. package/dist/cjs/components/MainContainer/NavigationBuilder/Links/index.js +41 -0
  35. package/dist/cjs/components/MainContainer/NavigationBuilder/Links/index.js.map +1 -0
  36. package/dist/cjs/components/MainContainer/NavigationBuilder/index.js +37 -0
  37. package/dist/cjs/components/MainContainer/NavigationBuilder/index.js.map +1 -0
  38. package/dist/cjs/components/MainContainer/NavigationBuilder/types.js +11 -0
  39. package/dist/cjs/components/MainContainer/NavigationBuilder/types.js.map +1 -0
  40. package/dist/cjs/components/MainContainer/OneColumn/index.js +44 -0
  41. package/dist/cjs/components/MainContainer/OneColumn/index.js.map +1 -0
  42. package/dist/cjs/components/MainContainer/TitleBuilder/index.js +22 -0
  43. package/dist/cjs/components/MainContainer/TitleBuilder/index.js.map +1 -0
  44. package/dist/cjs/components/MainContainer/TwoColumnLeft/index.js +56 -0
  45. package/dist/cjs/components/MainContainer/TwoColumnLeft/index.js.map +1 -0
  46. package/dist/cjs/components/MainContainer/index.js +70 -0
  47. package/dist/cjs/components/MainContainer/index.js.map +1 -0
  48. package/dist/cjs/components/MainContainer/types.js +8 -0
  49. package/dist/cjs/components/MainContainer/types.js.map +1 -0
  50. package/dist/cjs/index.js +38 -0
  51. package/dist/cjs/index.js.map +1 -0
  52. package/dist/cjs/utils/AdminUiSdk/index.js +159 -0
  53. package/dist/cjs/utils/AdminUiSdk/index.js.map +1 -0
  54. package/dist/cjs/utils/RouteParams/index.js +29 -0
  55. package/dist/cjs/utils/RouteParams/index.js.map +1 -0
  56. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +318 -0
  57. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  58. package/dist/esm/components/ConfirmationDialog/index.js +64 -0
  59. package/dist/esm/components/ConfirmationDialog/index.js.map +1 -0
  60. package/dist/esm/components/DataForm/FieldBuilder/index.js +164 -0
  61. package/dist/esm/components/DataForm/FieldBuilder/index.js.map +1 -0
  62. package/dist/esm/components/DataForm/FormBuilder/index.js +150 -0
  63. package/dist/esm/components/DataForm/FormBuilder/index.js.map +1 -0
  64. package/dist/esm/components/DataForm/FormBuilder/types.js +15 -0
  65. package/dist/esm/components/DataForm/FormBuilder/types.js.map +1 -0
  66. package/dist/esm/components/DataForm/index.js +89 -0
  67. package/dist/esm/components/DataForm/index.js.map +1 -0
  68. package/dist/esm/components/DataTable/ActionsBuilder/index.js +43 -0
  69. package/dist/esm/components/DataTable/ActionsBuilder/index.js.map +1 -0
  70. package/dist/esm/components/DataTable/GridBuilder/ActionMenuRenderer/index.js +113 -0
  71. package/dist/esm/components/DataTable/GridBuilder/ActionMenuRenderer/index.js.map +1 -0
  72. package/dist/esm/components/DataTable/GridBuilder/ButtonsRenderer/index.js +110 -0
  73. package/dist/esm/components/DataTable/GridBuilder/ButtonsRenderer/index.js.map +1 -0
  74. package/dist/esm/components/DataTable/GridBuilder/LinksRenderer/index.js +116 -0
  75. package/dist/esm/components/DataTable/GridBuilder/LinksRenderer/index.js.map +1 -0
  76. package/dist/esm/components/DataTable/GridBuilder/index.js +110 -0
  77. package/dist/esm/components/DataTable/GridBuilder/index.js.map +1 -0
  78. package/dist/esm/components/DataTable/index.js +154 -0
  79. package/dist/esm/components/DataTable/index.js.map +1 -0
  80. package/dist/esm/components/DataTable/types.js +12 -0
  81. package/dist/esm/components/DataTable/types.js.map +1 -0
  82. package/dist/esm/components/MainContainer/ContentBuilder/index.js +28 -0
  83. package/dist/esm/components/MainContainer/ContentBuilder/index.js.map +1 -0
  84. package/dist/esm/components/MainContainer/NavigationBuilder/Buttons/index.js +36 -0
  85. package/dist/esm/components/MainContainer/NavigationBuilder/Buttons/index.js.map +1 -0
  86. package/dist/esm/components/MainContainer/NavigationBuilder/Links/index.js +37 -0
  87. package/dist/esm/components/MainContainer/NavigationBuilder/Links/index.js.map +1 -0
  88. package/dist/esm/components/MainContainer/NavigationBuilder/index.js +33 -0
  89. package/dist/esm/components/MainContainer/NavigationBuilder/index.js.map +1 -0
  90. package/dist/esm/components/MainContainer/NavigationBuilder/types.js +11 -0
  91. package/dist/esm/components/MainContainer/NavigationBuilder/types.js.map +1 -0
  92. package/dist/esm/components/MainContainer/OneColumn/index.js +40 -0
  93. package/dist/esm/components/MainContainer/OneColumn/index.js.map +1 -0
  94. package/dist/esm/components/MainContainer/TitleBuilder/index.js +18 -0
  95. package/dist/esm/components/MainContainer/TitleBuilder/index.js.map +1 -0
  96. package/dist/esm/components/MainContainer/TwoColumnLeft/index.js +52 -0
  97. package/dist/esm/components/MainContainer/TwoColumnLeft/index.js.map +1 -0
  98. package/dist/esm/components/MainContainer/index.js +58 -0
  99. package/dist/esm/components/MainContainer/index.js.map +1 -0
  100. package/dist/esm/components/MainContainer/types.js +8 -0
  101. package/dist/esm/components/MainContainer/types.js.map +1 -0
  102. package/dist/esm/index.js +11 -0
  103. package/dist/esm/index.js.map +1 -0
  104. package/dist/esm/types/components/ConfirmationDialog/index.d.ts +12 -0
  105. package/dist/esm/types/components/ConfirmationDialog/index.d.ts.map +1 -0
  106. package/dist/esm/types/components/ConfirmationDialog/types.d.ts +47 -0
  107. package/dist/esm/types/components/ConfirmationDialog/types.d.ts.map +1 -0
  108. package/dist/esm/types/components/DataForm/FieldBuilder/index.d.ts +8 -0
  109. package/dist/esm/types/components/DataForm/FieldBuilder/index.d.ts.map +1 -0
  110. package/dist/esm/types/components/DataForm/FieldBuilder/types.d.ts +11 -0
  111. package/dist/esm/types/components/DataForm/FieldBuilder/types.d.ts.map +1 -0
  112. package/dist/esm/types/components/DataForm/FormBuilder/index.d.ts +8 -0
  113. package/dist/esm/types/components/DataForm/FormBuilder/index.d.ts.map +1 -0
  114. package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts +51 -0
  115. package/dist/esm/types/components/DataForm/FormBuilder/types.d.ts.map +1 -0
  116. package/dist/esm/types/components/DataForm/index.d.ts +8 -0
  117. package/dist/esm/types/components/DataForm/index.d.ts.map +1 -0
  118. package/dist/esm/types/components/DataForm/types.d.ts +16 -0
  119. package/dist/esm/types/components/DataForm/types.d.ts.map +1 -0
  120. package/dist/esm/types/components/DataTable/ActionsBuilder/index.d.ts +8 -0
  121. package/dist/esm/types/components/DataTable/ActionsBuilder/index.d.ts.map +1 -0
  122. package/dist/esm/types/components/DataTable/ActionsBuilder/types.d.ts +12 -0
  123. package/dist/esm/types/components/DataTable/ActionsBuilder/types.d.ts.map +1 -0
  124. package/dist/esm/types/components/DataTable/GridBuilder/ActionMenuRenderer/index.d.ts +12 -0
  125. package/dist/esm/types/components/DataTable/GridBuilder/ActionMenuRenderer/index.d.ts.map +1 -0
  126. package/dist/esm/types/components/DataTable/GridBuilder/ButtonsRenderer/index.d.ts +12 -0
  127. package/dist/esm/types/components/DataTable/GridBuilder/ButtonsRenderer/index.d.ts.map +1 -0
  128. package/dist/esm/types/components/DataTable/GridBuilder/LinksRenderer/index.d.ts +12 -0
  129. package/dist/esm/types/components/DataTable/GridBuilder/LinksRenderer/index.d.ts.map +1 -0
  130. package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts +8 -0
  131. package/dist/esm/types/components/DataTable/GridBuilder/index.d.ts.map +1 -0
  132. package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts +15 -0
  133. package/dist/esm/types/components/DataTable/GridBuilder/types.d.ts.map +1 -0
  134. package/dist/esm/types/components/DataTable/index.d.ts +7 -0
  135. package/dist/esm/types/components/DataTable/index.d.ts.map +1 -0
  136. package/dist/esm/types/components/DataTable/types.d.ts +41 -0
  137. package/dist/esm/types/components/DataTable/types.d.ts.map +1 -0
  138. package/dist/esm/types/components/MainContainer/ContentBuilder/index.d.ts +8 -0
  139. package/dist/esm/types/components/MainContainer/ContentBuilder/index.d.ts.map +1 -0
  140. package/dist/esm/types/components/MainContainer/ContentBuilder/types.d.ts +11 -0
  141. package/dist/esm/types/components/MainContainer/ContentBuilder/types.d.ts.map +1 -0
  142. package/dist/esm/types/components/MainContainer/NavigationBuilder/Buttons/index.d.ts +7 -0
  143. package/dist/esm/types/components/MainContainer/NavigationBuilder/Buttons/index.d.ts.map +1 -0
  144. package/dist/esm/types/components/MainContainer/NavigationBuilder/Buttons/types.d.ts +12 -0
  145. package/dist/esm/types/components/MainContainer/NavigationBuilder/Buttons/types.d.ts.map +1 -0
  146. package/dist/esm/types/components/MainContainer/NavigationBuilder/Links/index.d.ts +7 -0
  147. package/dist/esm/types/components/MainContainer/NavigationBuilder/Links/index.d.ts.map +1 -0
  148. package/dist/esm/types/components/MainContainer/NavigationBuilder/Links/types.d.ts +12 -0
  149. package/dist/esm/types/components/MainContainer/NavigationBuilder/Links/types.d.ts.map +1 -0
  150. package/dist/esm/types/components/MainContainer/NavigationBuilder/index.d.ts +7 -0
  151. package/dist/esm/types/components/MainContainer/NavigationBuilder/index.d.ts.map +1 -0
  152. package/dist/esm/types/components/MainContainer/NavigationBuilder/types.d.ts +21 -0
  153. package/dist/esm/types/components/MainContainer/NavigationBuilder/types.d.ts.map +1 -0
  154. package/dist/esm/types/components/MainContainer/OneColumn/index.d.ts +7 -0
  155. package/dist/esm/types/components/MainContainer/OneColumn/index.d.ts.map +1 -0
  156. package/dist/esm/types/components/MainContainer/OneColumn/types.d.ts +18 -0
  157. package/dist/esm/types/components/MainContainer/OneColumn/types.d.ts.map +1 -0
  158. package/dist/esm/types/components/MainContainer/TitleBuilder/index.d.ts +9 -0
  159. package/dist/esm/types/components/MainContainer/TitleBuilder/index.d.ts.map +1 -0
  160. package/dist/esm/types/components/MainContainer/TitleBuilder/types.d.ts +8 -0
  161. package/dist/esm/types/components/MainContainer/TitleBuilder/types.d.ts.map +1 -0
  162. package/dist/esm/types/components/MainContainer/TwoColumnLeft/index.d.ts +7 -0
  163. package/dist/esm/types/components/MainContainer/TwoColumnLeft/index.d.ts.map +1 -0
  164. package/dist/esm/types/components/MainContainer/TwoColumnLeft/types.d.ts +18 -0
  165. package/dist/esm/types/components/MainContainer/TwoColumnLeft/types.d.ts.map +1 -0
  166. package/dist/esm/types/components/MainContainer/index.d.ts +10 -0
  167. package/dist/esm/types/components/MainContainer/index.d.ts.map +1 -0
  168. package/dist/esm/types/components/MainContainer/types.d.ts +23 -0
  169. package/dist/esm/types/components/MainContainer/types.d.ts.map +1 -0
  170. package/dist/esm/types/components/index.d.ts +19 -0
  171. package/dist/esm/types/components/index.d.ts.map +1 -0
  172. package/dist/esm/types/index.d.ts +6 -0
  173. package/dist/esm/types/index.d.ts.map +1 -0
  174. package/dist/esm/types/utils/AdminUiSdk/index.d.ts +60 -0
  175. package/dist/esm/types/utils/AdminUiSdk/index.d.ts.map +1 -0
  176. package/dist/esm/types/utils/AdminUiSdk/types.d.ts +63 -0
  177. package/dist/esm/types/utils/AdminUiSdk/types.d.ts.map +1 -0
  178. package/dist/esm/types/utils/RouteParams/index.d.ts +14 -0
  179. package/dist/esm/types/utils/RouteParams/index.d.ts.map +1 -0
  180. package/dist/esm/types/utils/index.d.ts +7 -0
  181. package/dist/esm/types/utils/index.d.ts.map +1 -0
  182. package/dist/esm/utils/AdminUiSdk/index.js +155 -0
  183. package/dist/esm/utils/AdminUiSdk/index.js.map +1 -0
  184. package/dist/esm/utils/RouteParams/index.js +24 -0
  185. package/dist/esm/utils/RouteParams/index.js.map +1 -0
  186. package/package.json +124 -0
@@ -0,0 +1,155 @@
1
+ import { createClass as _createClass, toConsumableArray as _toConsumableArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, classCallCheck as _classCallCheck } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { register } from '@adobe/uix-guest';
3
+
4
+ /**
5
+ * AdminUiSdk - Utility for managing Adobe Admin UI extension configurations
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const extensionId = 'admin_ui_extensibility';
10
+ * const sdk = new AdminUiSdk(extensionId);
11
+ *
12
+ * sdk.addMenu({
13
+ * id: `${extensionId}::punchout_integrations`,
14
+ * title: 'Punchout Integrations 123',
15
+ * parent: 'Magento_Backend::content_elements',
16
+ * sortOrder: 1
17
+ * });
18
+ *
19
+ * sdk.addPage('Punchout Integration');
20
+ *
21
+ * await sdk.register(); // Register with Adobe UIX
22
+ * ```
23
+ */
24
+ var AdminUiSdk = /*#__PURE__*/function () {
25
+ /**
26
+ * Creates a new AdminUiSdk instance
27
+ * @param extensionId - Unique identifier for the extension
28
+ * @throws {Error} If extensionId is empty or invalid
29
+ */
30
+ function AdminUiSdk(extensionId) {
31
+ _classCallCheck(this, AdminUiSdk);
32
+ this.menuItems = [];
33
+ this.pageTitle = null;
34
+ if (!(extensionId !== null && extensionId !== void 0 && extensionId.trim())) {
35
+ throw new Error('Extension ID is required and cannot be empty');
36
+ }
37
+ this.extensionId = extensionId.trim();
38
+ }
39
+ /**
40
+ * Adds a menu item to the extension
41
+ * @param menuItem - The menu item configuration
42
+ * @throws {Error} If menuItem is invalid or ID already exists
43
+ */
44
+ return _createClass(AdminUiSdk, [{
45
+ key: "addMenu",
46
+ value: function addMenu(menuItem) {
47
+ var _menuItem$id, _menuItem$title, _menuItem$parent;
48
+ // Validation
49
+ if (!((_menuItem$id = menuItem.id) !== null && _menuItem$id !== void 0 && _menuItem$id.trim())) {
50
+ throw new Error('Menu item ID is required and cannot be empty');
51
+ }
52
+ if (!((_menuItem$title = menuItem.title) !== null && _menuItem$title !== void 0 && _menuItem$title.trim())) {
53
+ throw new Error('Menu item title is required and cannot be empty');
54
+ }
55
+ if (!((_menuItem$parent = menuItem.parent) !== null && _menuItem$parent !== void 0 && _menuItem$parent.trim())) {
56
+ throw new Error('Menu item parent is required and cannot be empty');
57
+ }
58
+ if (typeof menuItem.sortOrder !== 'number' || menuItem.sortOrder < 0) {
59
+ throw new Error('Menu item sortOrder must be a non-negative number');
60
+ }
61
+ // Check for duplicate IDs
62
+ var trimmedId = menuItem.id.trim();
63
+ if (this.menuItems.some(function (item) {
64
+ return item.id === trimmedId;
65
+ })) {
66
+ throw new Error("Menu item with ID '".concat(trimmedId, "' already exists"));
67
+ }
68
+ // Add sanitized menu item
69
+ this.menuItems.push({
70
+ id: trimmedId,
71
+ title: menuItem.title.trim(),
72
+ parent: menuItem.parent.trim(),
73
+ sortOrder: menuItem.sortOrder
74
+ });
75
+ }
76
+ /**
77
+ * Sets the page title for the extension
78
+ * @param title - The page title
79
+ * @throws {Error} If title is empty or invalid
80
+ */
81
+ }, {
82
+ key: "addPage",
83
+ value: function addPage(title) {
84
+ if (!(title !== null && title !== void 0 && title.trim())) {
85
+ throw new Error('Page title is required and cannot be empty');
86
+ }
87
+ this.pageTitle = title.trim();
88
+ }
89
+ /**
90
+ * Registers the extension with Adobe UIX
91
+ * @throws {Error} If registration fails
92
+ */
93
+ }, {
94
+ key: "register",
95
+ value: (function () {
96
+ var _register2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
97
+ var config, _t;
98
+ return _regenerator().w(function (_context) {
99
+ while (1) switch (_context.p = _context.n) {
100
+ case 0:
101
+ _context.p = 0;
102
+ config = this.getConfig();
103
+ _context.n = 1;
104
+ return register(config);
105
+ case 1:
106
+ _context.n = 3;
107
+ break;
108
+ case 2:
109
+ _context.p = 2;
110
+ _t = _context.v;
111
+ throw new Error("Failed to register extension '".concat(this.extensionId, "': ").concat(_t instanceof Error ? _t.message : 'Unknown error'));
112
+ case 3:
113
+ return _context.a(2);
114
+ }
115
+ }, _callee, this, [[0, 2]]);
116
+ }));
117
+ function register$1() {
118
+ return _register2.apply(this, arguments);
119
+ }
120
+ return register$1;
121
+ }()
122
+ /**
123
+ * Gets the complete configuration object for the extension (private method)
124
+ * @returns The configuration object with extension ID and available methods
125
+ */
126
+ )
127
+ }, {
128
+ key: "getConfig",
129
+ value: function getConfig() {
130
+ var _this = this;
131
+ var methods = {};
132
+ if (this.menuItems.length > 0) {
133
+ methods.menu = {
134
+ getItems: function getItems() {
135
+ return _toConsumableArray(_this.menuItems);
136
+ } // Return copy to prevent mutation
137
+ };
138
+ }
139
+ if (this.pageTitle) {
140
+ methods.page = {
141
+ getTitle: function getTitle() {
142
+ return _this.pageTitle;
143
+ }
144
+ };
145
+ }
146
+ return {
147
+ id: this.extensionId,
148
+ methods: methods
149
+ };
150
+ }
151
+ }]);
152
+ }();
153
+
154
+ export { AdminUiSdk as default };
155
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/utils/AdminUiSdk/index.ts"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { register } from '@adobe/uix-guest';\nimport { MenuItem, AdminUiSdkConfig, AdminUiSdkInterface } from './types';\n\n/**\n * AdminUiSdk - Utility for managing Adobe Admin UI extension configurations\n *\n * @example\n * ```typescript\n * const extensionId = 'admin_ui_extensibility';\n * const sdk = new AdminUiSdk(extensionId);\n *\n * sdk.addMenu({\n * id: `${extensionId}::punchout_integrations`,\n * title: 'Punchout Integrations 123',\n * parent: 'Magento_Backend::content_elements',\n * sortOrder: 1\n * });\n *\n * sdk.addPage('Punchout Integration');\n *\n * await sdk.register(); // Register with Adobe UIX\n * ```\n */\nclass AdminUiSdk implements AdminUiSdkInterface {\n private readonly extensionId: string;\n private readonly menuItems: MenuItem[] = [];\n private pageTitle: string | null = null;\n\n /**\n * Creates a new AdminUiSdk instance\n * @param extensionId - Unique identifier for the extension\n * @throws {Error} If extensionId is empty or invalid\n */\n constructor(extensionId: string) {\n if (!extensionId?.trim()) {\n throw new Error('Extension ID is required and cannot be empty');\n }\n this.extensionId = extensionId.trim();\n }\n\n /**\n * Adds a menu item to the extension\n * @param menuItem - The menu item configuration\n * @throws {Error} If menuItem is invalid or ID already exists\n */\n addMenu(menuItem: MenuItem): void {\n // Validation\n if (!menuItem.id?.trim()) {\n throw new Error('Menu item ID is required and cannot be empty');\n }\n if (!menuItem.title?.trim()) {\n throw new Error('Menu item title is required and cannot be empty');\n }\n if (!menuItem.parent?.trim()) {\n throw new Error('Menu item parent is required and cannot be empty');\n }\n if (typeof menuItem.sortOrder !== 'number' || menuItem.sortOrder < 0) {\n throw new Error('Menu item sortOrder must be a non-negative number');\n }\n\n // Check for duplicate IDs\n const trimmedId = menuItem.id.trim();\n if (this.menuItems.some(item => item.id === trimmedId)) {\n throw new Error(`Menu item with ID '${trimmedId}' already exists`);\n }\n\n // Add sanitized menu item\n this.menuItems.push({\n id: trimmedId,\n title: menuItem.title.trim(),\n parent: menuItem.parent.trim(),\n sortOrder: menuItem.sortOrder,\n });\n }\n\n /**\n * Sets the page title for the extension\n * @param title - The page title\n * @throws {Error} If title is empty or invalid\n */\n addPage(title: string): void {\n if (!title?.trim()) {\n throw new Error('Page title is required and cannot be empty');\n }\n this.pageTitle = title.trim();\n }\n\n /**\n * Registers the extension with Adobe UIX\n * @throws {Error} If registration fails\n */\n async register(): Promise<void> {\n try {\n const config = this.getConfig();\n await register(config as any); // Type assertion for Adobe UIX compatibility\n } catch (error) {\n throw new Error(\n `Failed to register extension '${this.extensionId}': ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n /**\n * Gets the complete configuration object for the extension (private method)\n * @returns The configuration object with extension ID and available methods\n */\n private getConfig(): AdminUiSdkConfig {\n const methods: AdminUiSdkConfig['methods'] = {};\n\n if (this.menuItems.length > 0) {\n methods.menu = {\n getItems: (): MenuItem[] => [...this.menuItems], // Return copy to prevent mutation\n };\n }\n\n if (this.pageTitle) {\n methods.page = {\n getTitle: (): string => this.pageTitle!,\n };\n }\n\n return {\n id: this.extensionId,\n methods,\n };\n }\n}\n\nexport default AdminUiSdk;\n\n// Re-export types for external use\nexport type {\n MenuItem,\n PageConfig,\n MenuMethods,\n PageMethods,\n AdminUiSdkConfig,\n AdminUiSdkInterface,\n} from './types';\n"],"names":["AdminUiSdk","extensionId","_classCallCheck","menuItems","pageTitle","trim","Error","_createClass","key","value","addMenu","menuItem","_menuItem$id","_menuItem$title","_menuItem$parent","id","title","parent","sortOrder","trimmedId","some","item","concat","push","addPage","_register2","_asyncToGenerator","_regenerator","m","_callee","config","_t","w","_context","p","n","getConfig","register","v","message","a","apply","arguments","_this","methods","length","menu","getItems","_toConsumableArray","page","getTitle"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { useParams, useNavigate } from 'react-router-dom';
2
+
3
+ /**
4
+ * <license header>
5
+ */
6
+ /**
7
+ * Custom hook for handling React Router navigation and parameters
8
+ * Provides a clean API for accessing route params and navigation function
9
+ */
10
+ var useRouteParams = function useRouteParams() {
11
+ var params = useParams();
12
+ var navigate = useNavigate();
13
+ return {
14
+ getParam: function getParam(key) {
15
+ return params[key];
16
+ },
17
+ getNavigate: function getNavigate() {
18
+ return navigate;
19
+ }
20
+ };
21
+ };
22
+
23
+ export { useRouteParams as default, useRouteParams };
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/utils/RouteParams/index.ts"],"sourcesContent":["/**\n * <license header>\n */\n\nimport { useParams, useNavigate, NavigateFunction } from 'react-router-dom';\n\n/**\n * Custom hook for handling React Router navigation and parameters\n * Provides a clean API for accessing route params and navigation function\n */\nexport const useRouteParams = (): {\n getParam: (key: string) => string | undefined;\n getNavigate: () => NavigateFunction;\n} => {\n const params = useParams<Record<string, string | undefined>>();\n const navigate = useNavigate();\n\n return {\n getParam: (key: string): string | undefined => params[key],\n getNavigate: (): NavigateFunction => navigate,\n };\n};\n\nexport default useRouteParams;\n"],"names":["useRouteParams","params","useParams","navigate","useNavigate","getParam","key","getNavigate"],"mappings":";;AAAA;;AAEG;AAIH;;;AAGG;IACUA,cAAc,GAAG,SAAjBA,cAAcA,GAGvB;AACF,EAAA,IAAMC,MAAM,GAAGC,SAAS,EAAsC;AAC9D,EAAA,IAAMC,QAAQ,GAAGC,WAAW,EAAE;EAE9B,OAAO;AACLC,IAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAGC,GAAW,EAAA;MAAA,OAAyBL,MAAM,CAACK,GAAG,CAAC;AAAA,IAAA,CAAA;IAC1DC,WAAW,EAAE,SAAbA,WAAWA,GAAA;AAAA,MAAA,OAA0BJ,QAAQ;AAAA,IAAA;GAC9C;AACH;;;;"}
package/package.json ADDED
@@ -0,0 +1,124 @@
1
+ {
2
+ "name": "@adobe-commerce/aio-experience-kit",
3
+ "version": "1.0.0",
4
+ "description": "A comprehensive TypeScript toolkit for building Adobe Commerce Admin UI extensions with React Spectrum components. Provides production-ready components and utilities for Adobe I/O extensibility platform integration.",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.js",
7
+ "types": "./dist/esm/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/esm/types/index.d.ts",
11
+ "import": "./dist/esm/index.js",
12
+ "require": "./dist/cjs/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist/**/*",
17
+ "README.md",
18
+ "CHANGELOG.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "build": "rollup -c",
23
+ "build:watch": "rollup -c -w",
24
+ "dev": "rollup -c -w",
25
+ "test": "jest",
26
+ "test:watch": "jest --watch",
27
+ "test:coverage": "jest --coverage",
28
+ "lint": "eslint src test --ext .ts,.tsx",
29
+ "lint:fix": "eslint src test --ext .ts,.tsx --fix",
30
+ "format": "prettier --write \"{src,test}/**/*.{ts,tsx}\"",
31
+ "format:check": "prettier --check \"{src,test}/**/*.{ts,tsx}\"",
32
+ "typecheck": "tsc --noEmit",
33
+ "type-check": "tsc --noEmit",
34
+ "test:fast": "jest --passWithNoTests --silent",
35
+ "test:ci": "jest --ci --coverage --watchAll=false",
36
+ "validate:commit": "npm run type-check && npm run lint:fix && npm run format && npm run test:fast",
37
+ "validate:push": "npm run format:check && npm run lint && npm run type-check && npm run test:ci && npm run build",
38
+ "prepare": "husky",
39
+ "clean": "rimraf dist",
40
+ "prepublishOnly": "npm run clean && npm run build",
41
+ "prepack": "npm run clean && npm run build"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "keywords": [
47
+ "typescript",
48
+ "aio",
49
+ "typescript-library",
50
+ "admin-ui",
51
+ "ui-components",
52
+ "typescript-react",
53
+ "react-spectrum",
54
+ "adobe-commerce",
55
+ "adobe-app-builder"
56
+ ],
57
+ "author": "Hitarth Pattani <hpattani@adobe.com>",
58
+ "peerDependencies": {
59
+ "react": ">=16.8.0",
60
+ "react-dom": ">=16.8.0",
61
+ "react-router-dom": ">=6.0.0"
62
+ },
63
+ "dependencies": {
64
+ "@adobe/react-spectrum": "^3.36.0",
65
+ "@adobe/uix-guest": "^1.0.4",
66
+ "@react-spectrum/provider": "^3.9.9",
67
+ "@react-spectrum/theme-default": "^3.4.10"
68
+ },
69
+ "devDependencies": {
70
+ "@babel/core": "^7.24.0",
71
+ "@babel/preset-env": "^7.24.0",
72
+ "@babel/preset-react": "^7.24.0",
73
+ "@babel/preset-typescript": "^7.24.0",
74
+ "@commitlint/cli": "^19.8.1",
75
+ "@commitlint/config-conventional": "^19.8.1",
76
+ "@rollup/plugin-babel": "^6.0.4",
77
+ "@rollup/plugin-commonjs": "^25.0.7",
78
+ "@rollup/plugin-node-resolve": "^15.2.3",
79
+ "@rollup/plugin-typescript": "^11.1.6",
80
+ "@testing-library/jest-dom": "^6.4.2",
81
+ "@testing-library/react": "^14.2.1",
82
+ "@testing-library/user-event": "^14.5.2",
83
+ "@types/jest": "^29.5.12",
84
+ "@types/react": "^18.2.61",
85
+ "@types/react-dom": "^18.2.19",
86
+ "@typescript-eslint/eslint-plugin": "^8.43.0",
87
+ "@typescript-eslint/parser": "^8.43.0",
88
+ "eslint": "^8.57.0",
89
+ "eslint-config-prettier": "^9.1.2",
90
+ "eslint-plugin-prettier": "^5.5.4",
91
+ "eslint-plugin-react": "^7.34.0",
92
+ "eslint-plugin-react-hooks": "^4.6.0",
93
+ "husky": "^9.1.7",
94
+ "identity-obj-proxy": "^3.0.0",
95
+ "jest": "^29.7.0",
96
+ "jest-environment-jsdom": "^29.7.0",
97
+ "lint-staged": "^16.1.6",
98
+ "prettier": "^3.2.5",
99
+ "react": "^18.2.0",
100
+ "react-dom": "^18.2.0",
101
+ "react-router-dom": "^6.30.1",
102
+ "rimraf": "^5.0.5",
103
+ "rollup": "^4.12.0",
104
+ "rollup-plugin-peer-deps-external": "^2.2.4",
105
+ "ts-jest": "^29.4.1",
106
+ "tslib": "^2.6.2",
107
+ "typescript": "^5.3.3"
108
+ },
109
+ "lint-staged": {
110
+ "src/**/*.{ts,tsx}": [
111
+ "eslint --fix",
112
+ "prettier --write"
113
+ ],
114
+ "test/**/*.{ts,tsx}": [
115
+ "eslint --fix",
116
+ "prettier --write"
117
+ ]
118
+ },
119
+ "engines": {
120
+ "node": ">=16.0.0",
121
+ "npm": ">=7.0.0"
122
+ },
123
+ "license": "SEE LICENSE IN LICENSE"
124
+ }