@pega/custom-dx-components 26.1.11 → 26.1.12-alpha.0.2

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 (323) hide show
  1. package/README.md +6 -2
  2. package/package.json +48 -64
  3. package/src/ai/README.md +44 -0
  4. package/src/ai/catalog/README.md +133 -0
  5. package/src/ai/catalog/best-practices/README.md +24 -0
  6. package/src/ai/catalog/best-practices/accessibility-for-async-components.md +53 -0
  7. package/src/ai/catalog/best-practices/error-handling-and-resiliency.md +116 -0
  8. package/src/ai/catalog/best-practices/genai-assistant-integration-patterns.md +49 -0
  9. package/src/ai/catalog/best-practices/performance-and-efficiency.md +109 -0
  10. package/src/ai/catalog/best-practices/security-considerations.md +93 -0
  11. package/src/ai/catalog/best-practices/testing-pconnect-components.md +245 -0
  12. package/src/ai/catalog/best-practices/troubleshooting-common-pitfalls.md +132 -0
  13. package/src/ai/catalog/pconnect-assignment-lifecycle/SKILL.md +44 -0
  14. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/README.md +39 -0
  15. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/approval-workflow-decision.md +47 -0
  16. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/attachment-upload.md +45 -0
  17. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/bulk-action-submit.md +50 -0
  18. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/confirm-before-destructive-action.md +43 -0
  19. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/create-and-stage-new-case.md +45 -0
  20. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/graceful-submit-failure.md +39 -0
  21. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/modal-assignment-submit.md +58 -0
  22. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/multi-step-wizard.md +44 -0
  23. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/resolve-or-ignore-duplicate.md +47 -0
  24. package/src/ai/catalog/pconnect-assignment-lifecycle/cookbooks/safe-case-deletion.md +36 -0
  25. package/src/ai/catalog/pconnect-case-collaboration/SKILL.md +42 -0
  26. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/README.md +36 -0
  27. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/look-up-user-details.md +43 -0
  28. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/manage-case-attachments.md +51 -0
  29. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/manage-case-participants.md +52 -0
  30. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/participant-and-follower.md +40 -0
  31. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/post-and-manage-feed.md +50 -0
  32. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/relate-cases.md +35 -0
  33. package/src/ai/catalog/pconnect-case-collaboration/cookbooks/tag-case-and-find-related.md +44 -0
  34. package/src/ai/catalog/pconnect-data-subscriptions/SKILL.md +42 -0
  35. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/README.md +35 -0
  36. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/data-page-subscription-cleanup.md +41 -0
  37. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/publish-and-subscribe-events.md +40 -0
  38. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/pubsub-cleanup.md +38 -0
  39. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/query-paginated-list-data.md +44 -0
  40. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/realtime-case-subscription.md +46 -0
  41. package/src/ai/catalog/pconnect-data-subscriptions/cookbooks/refresh-and-update-data.md +41 -0
  42. package/src/ai/catalog/pconnect-forms-and-fields/SKILL.md +44 -0
  43. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/README.md +36 -0
  44. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/autosave-tracking.md +45 -0
  45. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/cascading-dependent-fields.md +51 -0
  46. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/collect-form-changes-for-manual-save.md +45 -0
  47. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/custom-field-validators.md +44 -0
  48. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/discard-changes-and-reset-form.md +41 -0
  49. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/full-form-validation.md +38 -0
  50. package/src/ai/catalog/pconnect-forms-and-fields/cookbooks/persist-widget-ui-state.md +41 -0
  51. package/src/ai/catalog/pconnect-lists-and-views/SKILL.md +44 -0
  52. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/README.md +35 -0
  53. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/activate-and-switch-container-items.md +52 -0
  54. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/container-item-lifecycle.md +61 -0
  55. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/insert-delete-list-rows.md +40 -0
  56. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/reorder-list-rows.md +39 -0
  57. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/repeating-row-edit.md +39 -0
  58. package/src/ai/catalog/pconnect-lists-and-views/cookbooks/view-personalization.md +60 -0
  59. package/src/ai/catalog/pconnect-navigation-locale-genai/SKILL.md +45 -0
  60. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/README.md +35 -0
  61. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/agent-conversation-for-tasks.md +54 -0
  62. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/bookmarkable-filter-state.md +40 -0
  63. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/deep-link-semantic-url.md +39 -0
  64. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/genai-assistant-conversation.md +43 -0
  65. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/locale-switch-and-relocalize.md +38 -0
  66. package/src/ai/catalog/pconnect-navigation-locale-genai/cookbooks/persist-operator-preferences.md +40 -0
  67. package/src/ai/catalog/references/architecture-overview.md +52 -0
  68. package/src/ai/catalog/references/pconnect-actions-api.md +948 -0
  69. package/src/ai/catalog/references/pconnect-case-info-data-info-localization.md +618 -0
  70. package/src/ai/catalog/references/pconnect-case-validation-utilities.md +238 -0
  71. package/src/ai/catalog/references/pconnect-container-manager.md +215 -0
  72. package/src/ai/catalog/references/pconnect-list-actions.md +250 -0
  73. package/src/ai/catalog/references/pconnect-misc-suggestions-creation.md +231 -0
  74. package/src/ai/catalog/references/pconnect-reference-context-component.md +471 -0
  75. package/src/ai/catalog/references/pconnect-state-config.md +316 -0
  76. package/src/ai/catalog/references/pconnect-validation-api.md +45 -0
  77. package/src/ai/catalog/references/pcore-analytics-genai-details.md +50 -0
  78. package/src/ai/catalog/references/pcore-bootstrap-init-details.md +121 -0
  79. package/src/ai/catalog/references/pcore-bootstrap-registry-routing.md +253 -0
  80. package/src/ai/catalog/references/pcore-case-collaboration-details.md +191 -0
  81. package/src/ai/catalog/references/pcore-case-collaboration-genai.md +264 -0
  82. package/src/ai/catalog/references/pcore-environment-info-details.md +96 -0
  83. package/src/ai/catalog/references/pcore-environment-locale-namespace.md +175 -0
  84. package/src/ai/catalog/references/pcore-messaging-details.md +99 -0
  85. package/src/ai/catalog/references/pcore-misc-details.md +207 -0
  86. package/src/ai/catalog/references/pcore-misc-utilities.md +325 -0
  87. package/src/ai/catalog/references/pcore-rest-data-details.md +164 -0
  88. package/src/ai/catalog/references/pcore-rest-data-messaging.md +308 -0
  89. package/src/ai/catalog/references/pcore-store-context-details.md +40 -0
  90. package/src/ai/catalog/references/pcore-store-context-state.md +130 -0
  91. package/src/ai/index.js +154 -0
  92. package/src/ai/project/.claude/skills/boolean/SKILL.md +43 -0
  93. package/src/ai/project/.claude/skills/case/SKILL.md +58 -0
  94. package/src/ai/project/.claude/skills/create-dx-component/SKILL.md +98 -0
  95. package/src/ai/project/.claude/skills/create-dx-component/assets/PConnProps.d.ts +24 -0
  96. package/src/ai/project/.claude/skills/create-dx-component/assets/create-nonce.ts +5 -0
  97. package/src/ai/project/.claude/skills/create-dx-component/assets/event-utils.ts +18 -0
  98. package/src/ai/project/.claude/skills/create-dx-component/assets/styles.ts +7 -0
  99. package/src/ai/project/.claude/skills/create-dx-component/cookbooks/README.md +28 -0
  100. package/src/ai/project/.claude/skills/create-dx-component/cookbooks/build-a-data-widget.md +281 -0
  101. package/src/ai/project/.claude/skills/create-dx-component/cookbooks/field-with-limits-and-validation.md +156 -0
  102. package/src/ai/project/.claude/skills/create-dx-component/cookbooks/status-badge-field.md +97 -0
  103. package/src/ai/project/.claude/skills/create-dx-component/references/accessibility.md +71 -0
  104. package/src/ai/project/.claude/skills/create-dx-component/references/choosing-type-and-subtype.md +79 -0
  105. package/src/ai/project/.claude/skills/create-dx-component/references/cli-workflow.md +125 -0
  106. package/src/ai/project/.claude/skills/create-dx-component/references/component-patterns.md +241 -0
  107. package/src/ai/project/.claude/skills/create-dx-component/references/config-schema.md +296 -0
  108. package/src/ai/project/.claude/skills/create-dx-component/references/cosmos-components.md +137 -0
  109. package/src/ai/project/.claude/skills/create-dx-component/references/field-behavior.md +155 -0
  110. package/src/ai/project/.claude/skills/create-dx-component/references/field-essentials.md +90 -0
  111. package/src/ai/project/.claude/skills/create-dx-component/references/field-subtypes-extra.md +68 -0
  112. package/src/ai/project/.claude/skills/create-dx-component/references/localization.md +30 -0
  113. package/src/ai/project/.claude/skills/create-dx-component/references/pcore-pconnect-apis.md +77 -0
  114. package/src/ai/project/.claude/skills/create-dx-component/references/presentation-essentials.md +57 -0
  115. package/src/ai/project/.claude/skills/create-dx-component/references/props-contract.md +182 -0
  116. package/src/ai/project/.claude/skills/create-dx-component/references/state-matrix.md +102 -0
  117. package/src/ai/project/.claude/skills/create-dx-component/references/storybook-pattern.md +262 -0
  118. package/src/ai/project/.claude/skills/create-dx-component/references/styles-pattern.md +54 -0
  119. package/src/ai/project/.claude/skills/create-dx-component/references/template-essentials.md +87 -0
  120. package/src/ai/project/.claude/skills/create-dx-component/references/template-patterns.md +131 -0
  121. package/src/ai/project/.claude/skills/create-dx-component/references/test-pattern.md +215 -0
  122. package/src/ai/project/.claude/skills/create-dx-component/references/ui-gallery-reuse.md +93 -0
  123. package/src/ai/project/.claude/skills/create-dx-component/references/widget-essentials.md +84 -0
  124. package/src/ai/project/.claude/skills/create-dx-component/references/widget-patterns.md +164 -0
  125. package/src/ai/project/.claude/skills/currency/SKILL.md +46 -0
  126. package/src/ai/project/.claude/skills/date/SKILL.md +46 -0
  127. package/src/ai/project/.claude/skills/decimal/SKILL.md +49 -0
  128. package/src/ai/project/.claude/skills/details/SKILL.md +60 -0
  129. package/src/ai/project/.claude/skills/email/SKILL.md +42 -0
  130. package/src/ai/project/.claude/skills/field/SKILL.md +68 -0
  131. package/src/ai/project/.claude/skills/form/SKILL.md +51 -0
  132. package/src/ai/project/.claude/skills/generate-component-set/SKILL.md +80 -0
  133. package/src/ai/project/.claude/skills/generate-component-set/component-manifest.json +161 -0
  134. package/src/ai/project/.claude/skills/identify-components/SKILL.md +76 -0
  135. package/src/ai/project/.claude/skills/integer/SKILL.md +45 -0
  136. package/src/ai/project/.claude/skills/page/SKILL.md +60 -0
  137. package/src/ai/project/.claude/skills/page-widget/SKILL.md +55 -0
  138. package/src/ai/project/.claude/skills/percentage/SKILL.md +52 -0
  139. package/src/ai/project/.claude/skills/phone/SKILL.md +44 -0
  140. package/src/ai/project/.claude/skills/picklist/SKILL.md +50 -0
  141. package/src/ai/project/.claude/skills/plan-dx-component/SKILL.md +51 -0
  142. package/src/ai/project/.claude/skills/plan-dx-component/references/design-system-mapping.md +108 -0
  143. package/src/ai/project/.claude/skills/plan-dx-component/references/intake.md +146 -0
  144. package/src/ai/project/.claude/skills/plan-dx-component/references/plan-template.md +76 -0
  145. package/src/ai/project/.claude/skills/plan-dx-component/references/requirements-template.md +88 -0
  146. package/src/ai/project/.claude/skills/presentation/SKILL.md +61 -0
  147. package/src/ai/project/.claude/skills/publish-library/SKILL.md +106 -0
  148. package/src/ai/project/.claude/skills/radiobuttons/SKILL.md +51 -0
  149. package/src/ai/project/.claude/skills/review-component/SKILL.md +49 -0
  150. package/src/ai/project/.claude/skills/review-component/references/checklist.md +77 -0
  151. package/src/ai/project/.claude/skills/template/SKILL.md +60 -0
  152. package/src/ai/project/.claude/skills/text/SKILL.md +45 -0
  153. package/src/ai/project/.claude/skills/update-dx-component/SKILL.md +56 -0
  154. package/src/ai/project/.claude/skills/update-dx-component/references/maintenance.md +43 -0
  155. package/src/ai/project/.claude/skills/url/SKILL.md +46 -0
  156. package/src/ai/project/.claude/skills/validate-component/SKILL.md +78 -0
  157. package/src/ai/project/.claude/skills/validate-component/references/runtime-troubleshooting.md +56 -0
  158. package/src/ai/project/.claude/skills/validate-component/scripts/check-component.mjs +327 -0
  159. package/src/ai/project/.claude/skills/widget/SKILL.md +59 -0
  160. package/src/ai/project/.gemini/settings.json +5 -0
  161. package/src/ai/project/AGENTS.md +74 -0
  162. package/src/ai/readme-section.md +91 -0
  163. package/src/cli.js +48 -7
  164. package/src/constants.js +54 -53
  165. package/src/internal-tests.js +27 -0
  166. package/src/tasks/ai-toggle/index.js +46 -0
  167. package/src/tasks/authenticate/helper.js +38 -38
  168. package/src/tasks/authenticate/index.js +17 -15
  169. package/src/tasks/build-all/helper.js +4 -4
  170. package/src/tasks/build-all/index.js +7 -7
  171. package/src/tasks/build-comp/helper.js +17 -17
  172. package/src/tasks/build-comp/index.js +10 -10
  173. package/src/tasks/build-jest-assets/index.js +7 -9
  174. package/src/tasks/build-lib/helper.js +8 -8
  175. package/src/tasks/build-lib/index.js +8 -8
  176. package/src/tasks/bundle/builder/index.js +9 -12
  177. package/src/tasks/bundle/builder/modules.js +8 -9
  178. package/src/tasks/bundle/builder/paths.js +2 -19
  179. package/src/tasks/bundle/builder/webpack.config.js +60 -77
  180. package/src/tasks/bundle/index.js +8 -8
  181. package/src/tasks/create/index.js +35 -35
  182. package/src/tasks/create/templates/Constellation/Field/Boolean/index.tsx.mustache +1 -36
  183. package/src/tasks/create/templates/Constellation/Field/Date/date.ts.mustache +2 -2
  184. package/src/tasks/create/templates/Constellation/Field/Date/index.tsx.mustache +2 -27
  185. package/src/tasks/create/templates/Constellation/Field/DateTime/date-utils.ts.mustache +2 -2
  186. package/src/tasks/create/templates/Constellation/Field/DateTime/date.ts.mustache +2 -2
  187. package/src/tasks/create/templates/Constellation/Field/DateTime/index.tsx.mustache +2 -35
  188. package/src/tasks/create/templates/Constellation/Field/Decimal/index.tsx.mustache +3 -36
  189. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/index.tsx.mustache +4 -39
  190. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/index.tsx.mustache +4 -53
  191. package/src/tasks/create/templates/Constellation/Field/Icon-Button-URL/index.tsx.mustache +5 -5
  192. package/src/tasks/create/templates/Constellation/Field/Integer/index.tsx.mustache +3 -36
  193. package/src/tasks/create/templates/Constellation/Field/Picklist/index.tsx.mustache +7 -42
  194. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/component-constants.ts +1 -1
  195. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/date.ts.mustache +0 -2
  196. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/embed-utils.ts.mustache +1 -1
  197. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/index.tsx.mustache +11 -11
  198. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/repeat-utils.ts.mustache +3 -13
  199. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/textformat-utils.tsx.mustache +2 -3
  200. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/utils.ts.mustache +28 -28
  201. package/src/tasks/create/templates/Constellation/Field/Picklist-RadioButtons/index.tsx.mustache +2 -2
  202. package/src/tasks/create/templates/Constellation/Field/Picklist-RadioButtons/textformat-utils.tsx.mustache +2 -3
  203. package/src/tasks/create/templates/Constellation/Field/Text/index.tsx.mustache +4 -33
  204. package/src/tasks/create/templates/Constellation/Field/Text-Email/index.tsx.mustache +3 -33
  205. package/src/tasks/create/templates/Constellation/Field/Text-Input/index.tsx.mustache +3 -31
  206. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/index.tsx.mustache +3 -31
  207. package/src/tasks/create/templates/Constellation/Field/Text-Phone/index.tsx.mustache +3 -35
  208. package/src/tasks/create/templates/Constellation/Field/Text-URL/index.tsx.mustache +3 -33
  209. package/src/tasks/create/templates/Constellation/Field/Text-URL/text-url.tsx.mustache +2 -3
  210. package/src/tasks/create/templates/Constellation/Field/TimeofDay/index.tsx.mustache +2 -35
  211. package/src/tasks/create/templates/Constellation/Field/TimeofDay/time-of-day.ts.mustache +2 -2
  212. package/src/tasks/create/templates/Constellation/Template/DETAILS/Avatar.tsx.mustache +19 -15
  213. package/src/tasks/create/templates/Constellation/Template/DETAILS/Operator.tsx.mustache +6 -6
  214. package/src/tasks/create/templates/Constellation/Template/DETAILS/demo.stories.tsx.mustache +1 -1
  215. package/src/tasks/create/templates/Constellation/Template/DETAILS/index.tsx.mustache +4 -8
  216. package/src/tasks/create/templates/Constellation/Template/DETAILS/mock.ts.mustache +9 -9
  217. package/src/tasks/create/templates/Constellation/Template/DETAILS/utils.js.mustache +4 -8
  218. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/Avatar.tsx.mustache +19 -15
  219. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/Operator.tsx.mustache +6 -6
  220. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/demo.stories.tsx.mustache +1 -1
  221. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/index.tsx.mustache +1 -1
  222. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/mock.ts.mustache +9 -9
  223. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/utils.ts.mustache +4 -8
  224. package/src/tasks/create/templates/Constellation/Template/FORM/demo.stories.tsx.mustache +8 -8
  225. package/src/tasks/create/templates/Constellation/Template/FORM-region/demo.stories.tsx.mustache +8 -8
  226. package/src/tasks/create/templates/Constellation/Template/PAGE/utils.ts.mustache +4 -9
  227. package/src/tasks/create/templates/Constellation/Widget/CASE/demo.test.tsx.mustache +3 -3
  228. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Avatar.tsx.mustache +19 -14
  229. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Operator.tsx.mustache +6 -6
  230. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/index.tsx.mustache +1 -1
  231. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/mock.ts.mustache +1 -1
  232. package/src/tasks/create/templates/Launchpad/Field/Icon-Button-URL/index.tsx.mustache +5 -5
  233. package/src/tasks/create/templates/Launchpad/Field/Text-Phone/index.tsx.mustache +3 -35
  234. package/src/tasks/create/templates/Launchpad/Field/__components.md +1 -1
  235. package/src/tasks/create/templates/Launchpad/Template/FORM/demo.stories.tsx.mustache +8 -8
  236. package/src/tasks/create/templates/Launchpad/Template/FORM-region/demo.stories.tsx.mustache +8 -8
  237. package/src/tasks/create/templates/Launchpad/Widget/CASE/demo.test.tsx.mustache +3 -3
  238. package/src/tasks/create/templates/Launchpad/Widget/PAGE-CASE/index.tsx.mustache +1 -1
  239. package/src/tasks/create/templates/Launchpad/Widget/PAGE-CASE/mock.ts.mustache +1 -1
  240. package/src/tasks/create-all/index.js +42 -41
  241. package/src/tasks/create-lib/helper.js +13 -13
  242. package/src/tasks/create-lib/index.js +5 -5
  243. package/src/tasks/create-version/helper.js +10 -10
  244. package/src/tasks/create-version/index.js +3 -4
  245. package/src/tasks/delete/helper.js +20 -19
  246. package/src/tasks/delete/index.js +2 -2
  247. package/src/tasks/delete-all/helper.js +26 -25
  248. package/src/tasks/delete-all/index.js +2 -2
  249. package/src/tasks/delete-lib/helper.js +6 -6
  250. package/src/tasks/delete-lib/index.js +6 -6
  251. package/src/tasks/delete-pub/helper.js +18 -18
  252. package/src/tasks/delete-pub/index.js +8 -8
  253. package/src/tasks/delete-version/index.js +2 -2
  254. package/src/tasks/dev-server/index.js +1 -1
  255. package/src/tasks/export-archive/helper.js +21 -21
  256. package/src/tasks/export-archive/index.js +27 -40
  257. package/src/tasks/export-rc/helper.js +34 -34
  258. package/src/tasks/export-rc/index.js +21 -31
  259. package/src/tasks/import-archive/helper.js +39 -39
  260. package/src/tasks/import-archive/index.js +69 -89
  261. package/src/tasks/import-comp/helper.js +8 -8
  262. package/src/tasks/import-comp/index.js +30 -42
  263. package/src/tasks/index.js +5 -0
  264. package/src/tasks/init/Node.gitignore +149 -0
  265. package/src/tasks/init/helper.js +15 -8
  266. package/src/tasks/init/index.js +115 -35
  267. package/src/tasks/init/template/.prettierrc.json +4 -1
  268. package/src/tasks/init/template/.storybook/main.ts +1 -4
  269. package/src/tasks/init/template/.storybook/manager.ts +1 -1
  270. package/src/tasks/init/template/.storybook/preview.tsx +2 -2
  271. package/src/tasks/init/template/.storybook/theme.js +1 -1
  272. package/src/tasks/init/template/.vscode/extensions.json +0 -1
  273. package/src/tasks/init/template/README.md +2 -2
  274. package/src/tasks/init/template/eslint.config.mjs +13 -155
  275. package/src/tasks/init/template/jest.config.cjs +2 -0
  276. package/src/tasks/init/template/package-lock.json +26864 -0
  277. package/src/tasks/init/template/package.json.mustache +19 -74
  278. package/src/tasks/init/template/setupTests.ts +10 -4
  279. package/src/tasks/init/template/tsconfig.json +14 -6
  280. package/src/tasks/internal-test/index.js +21 -0
  281. package/src/tasks/internal-test-full/index.js +15 -0
  282. package/src/tasks/internal-test-functional/index.js +15 -0
  283. package/src/tasks/internal-test-unit/index.js +13 -0
  284. package/src/tasks/linter/index.js +2 -2
  285. package/src/tasks/list/helper.js +41 -40
  286. package/src/tasks/list/index.js +3 -3
  287. package/src/tasks/list-lib/helper.js +5 -5
  288. package/src/tasks/list-lib/index.js +8 -8
  289. package/src/tasks/list-pub/helper.js +23 -16
  290. package/src/tasks/list-pub/index.js +24 -21
  291. package/src/tasks/move/helper.js +8 -8
  292. package/src/tasks/move/index.js +19 -23
  293. package/src/tasks/promote-webpack/index.js +4 -4
  294. package/src/tasks/promote-webpack/webpack.config.js +62 -93
  295. package/src/tasks/publish/helper.js +21 -21
  296. package/src/tasks/publish/index.js +16 -16
  297. package/src/tasks/publish-all/helper.js +20 -20
  298. package/src/tasks/publish-all/index.js +11 -12
  299. package/src/tasks/publish-archive/helper.js +9 -9
  300. package/src/tasks/publish-archive/index.js +12 -14
  301. package/src/tasks/publish-lib/helper.js +3 -3
  302. package/src/tasks/publish-lib/index.js +28 -34
  303. package/src/tasks/quarantine/index.js +8 -8
  304. package/src/tasks/rename/index.js +26 -30
  305. package/src/tasks/rename-lib/index.js +21 -25
  306. package/src/tasks/restore/index.js +8 -8
  307. package/src/tasks/restore-config/index.js +3 -5
  308. package/src/tasks/set-perm/index.js +8 -8
  309. package/src/tasks/show-help/index.js +17 -9
  310. package/src/tasks/show-status/index.js +2 -2
  311. package/src/tasks/store/index.js +8 -8
  312. package/src/tasks/switch-lib/helper.js +7 -7
  313. package/src/tasks/switch-lib/index.js +7 -7
  314. package/src/tasks/switch-version/helper.js +6 -6
  315. package/src/tasks/switch-version/index.js +7 -7
  316. package/src/tasks/update/index.js +1 -1
  317. package/src/tasks/upgrade/index.js +7 -7
  318. package/src/tasks/validator/index.js +49 -203
  319. package/src/util.js +169 -186
  320. package/src/rules/no-pcore-pconnect-in-presentation.js +0 -103
  321. package/src/tasks/init/template/.stylelintrc.json +0 -4
  322. package/src/tasks/init/template/babel.config.cjs +0 -22
  323. package/src/tasks/init/template/cspell.json +0 -14
@@ -1,16 +1,13 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
3
  import { fileURLToPath } from 'url';
4
- import { promisify } from 'util';
5
4
  import chalk from 'chalk';
6
5
  import { execa } from 'execa';
7
- import { Listr } from 'listr2';
8
- import gitignore from 'gitignore';
6
+ import { Listr, PRESET_TIMER } from 'listr2';
9
7
  import inquirer from 'inquirer';
10
8
  import { compileMustacheTemplate, isPascalCase, convertIntoPascalCase, sanitize } from '../../util.js';
11
9
  import { getInitProjectQuestions } from './helper.js';
12
-
13
- const writeGitignore = promisify(gitignore.writeFile);
10
+ import { enableAgentFiles } from '../../ai/index.js';
14
11
 
15
12
  const copyProjectDir = async (src, dest) => {
16
13
  if (typeof fs.cp === 'function') {
@@ -18,24 +15,21 @@ const copyProjectDir = async (src, dest) => {
18
15
  }
19
16
  };
20
17
 
21
- const createGitignore = async options => {
22
- const file = fs.createWriteStream(path.join(options.targetDirectory, '.gitignore'), {
23
- flags: 'a'
24
- });
25
- return writeGitignore({
26
- type: 'Node',
27
- file
28
- });
18
+ const createGitignore = async (options) => {
19
+ // Bundled locally to avoid a network fetch (and the `gitignore` package) at init time.
20
+ const templatePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), 'Node.gitignore');
21
+ const content = await fs.promises.readFile(templatePath, 'utf8');
22
+ return fs.promises.appendFile(path.join(options.targetDirectory, '.gitignore'), content);
29
23
  };
30
24
 
31
- const createLicense = async options => {
25
+ const createLicense = async (options) => {
32
26
  // Write LICENSE file directly
33
27
  const targetPath = path.join(options.targetDirectory, 'LICENSE');
34
28
  const licenseContent = 'Enter license text here';
35
29
  await fs.promises.writeFile(targetPath, licenseContent, 'utf8');
36
30
  };
37
31
 
38
- const copyProjectTemplate = async options => {
32
+ const copyProjectTemplate = async (options) => {
39
33
  // Use fast copy
40
34
  await copyProjectDir(options.templateDirectory, options.targetDirectory);
41
35
  const packageJsonPath = path.join(options.targetDirectory, 'package.json.mustache');
@@ -57,31 +51,109 @@ const copyProjectTemplate = async options => {
57
51
  // Rename templateNPMRC.txt to .npmrc if exists
58
52
  try {
59
53
  await fs.promises.rename(templateNPMRCPath, templateNPMRCPath.replace('templateNPMRC.txt', '.npmrc'));
60
- } catch (e) {
54
+ } catch {
61
55
  // ignore if not present
62
56
  }
63
57
 
64
58
  await createLicense(options);
65
59
  };
66
60
 
67
- const initGit = async options => {
61
+ const initGit = async (options) => {
68
62
  // Use execa for async git init
69
63
  const result = await execa('git', ['init'], {
70
- cwd: options.targetDirectory
64
+ cwd: options.targetDirectory,
71
65
  });
72
66
  if (result.failed) {
73
67
  throw new Error('Failed to initialize git');
74
68
  }
75
69
  };
76
70
 
77
- export default async options => {
71
+ // Same heuristic listr2 itself uses to pick unicode vs ascii symbols, so our custom
72
+ // bar degrades consistently with it on terminals that can't render unicode (e.g.
73
+ // plain Windows cmd.exe outside Windows Terminal/VS Code).
74
+ const supportsUnicode = () => {
75
+ if (process.platform !== 'win32') {
76
+ return process.env.TERM !== 'linux';
77
+ }
78
+ return (
79
+ Boolean(process.env.WT_SESSION) ||
80
+ process.env.TERM_PROGRAM === 'vscode' ||
81
+ process.env.TERM === 'xterm-256color' ||
82
+ process.env.TERM === 'alacritty'
83
+ );
84
+ };
85
+
86
+ const UNICODE = supportsUnicode();
87
+ const FULL_BLOCK = UNICODE ? '█' : '#';
88
+ const EMPTY_BLOCK = UNICODE ? '░' : '-';
89
+ const BAR_OPEN = UNICODE ? '❰' : '[';
90
+ const BAR_CLOSE = UNICODE ? '❱' : ']';
91
+
92
+ // npm install has no observable progress, so fill the bar over an estimated typical
93
+ // duration, capped short of 100% so it never falsely claims completion.
94
+ const ESTIMATED_INSTALL_SECONDS = 40;
95
+ const PROGRESS_BAR_WIDTH = 50;
96
+ const PARTIAL_BLOCKS = UNICODE ? ['▏', '▎', '▍', '▌', '▋', '▊', '▉'] : [];
97
+
98
+ // Interpolates amber -> green so the bar visibly warms up as install progresses.
99
+ // chalk automatically downsamples this to the terminal's actual color support level
100
+ // (256-color/16-color/none), so no separate fallback is needed here.
101
+ const barColor = (fraction) => {
102
+ const from = { r: 0xff, g: 0x9d, b: 0x2f };
103
+ const to = { r: 0x35, g: 0xd0, b: 0x7f };
104
+ const mix = (a, b) => Math.round(a + (b - a) * fraction);
105
+ return chalk.rgb(mix(from.r, to.r), mix(from.g, to.g), mix(from.b, to.b));
106
+ };
107
+
108
+ const renderProgressBar = (fraction) => {
109
+ const exactFilled = fraction * PROGRESS_BAR_WIDTH;
110
+ const fullChars = Math.min(Math.floor(exactFilled), PROGRESS_BAR_WIDTH);
111
+ const remainder = exactFilled - fullChars;
112
+ const partialChar =
113
+ fullChars < PROGRESS_BAR_WIDTH && remainder > 0 && PARTIAL_BLOCKS.length > 0 ? PARTIAL_BLOCKS[Math.floor(remainder * PARTIAL_BLOCKS.length)] : '';
114
+ const emptyChars = PROGRESS_BAR_WIDTH - fullChars - (partialChar ? 1 : 0);
115
+
116
+ const color = barColor(fraction);
117
+ const bar = color(FULL_BLOCK.repeat(fullChars) + partialChar) + chalk.gray.dim(EMPTY_BLOCK.repeat(emptyChars));
118
+ const percentText = chalk.bold(`${Math.round(fraction * 100)}%`);
119
+ return `${chalk.dim(BAR_OPEN)}${bar}${chalk.dim(BAR_CLOSE)} ${percentText}`;
120
+ };
121
+
122
+ // Ramps linearly to 90% over the estimated duration, then keeps crawling toward 99%
123
+ // for as long as the install actually takes. Uses a slow-tailed curve (rather than
124
+ // exponential) so it keeps ticking upward even after several minutes instead of
125
+ // visibly flatlining at one number.
126
+ const OVERTIME_TAU_SECONDS = 150;
127
+ const estimateFraction = (elapsedSeconds) => {
128
+ if (elapsedSeconds <= ESTIMATED_INSTALL_SECONDS) {
129
+ return (elapsedSeconds / ESTIMATED_INSTALL_SECONDS) * 0.9;
130
+ }
131
+ const overtimeSeconds = elapsedSeconds - ESTIMATED_INSTALL_SECONDS;
132
+ return 0.9 + 0.09 * (overtimeSeconds / (overtimeSeconds + OVERTIME_TAU_SECONDS));
133
+ };
134
+
135
+ const installDependencies = (options, task) => {
136
+ const startTime = Date.now();
137
+ const poll = setInterval(() => {
138
+ const elapsedSeconds = (Date.now() - startTime) / 1000;
139
+ const fraction = estimateFraction(elapsedSeconds);
140
+ task.output = renderProgressBar(fraction);
141
+ }, 1000);
142
+
143
+ return execa('npm', ['i', '--force', '--include=dev', '--no-audit', '--no-fund', '--loglevel=error'], {
144
+ cwd: options.targetDirectory,
145
+ }).finally(() => clearInterval(poll));
146
+ };
147
+
148
+ export default async (options) => {
78
149
  options.templateDirectory = path.resolve(path.dirname(fileURLToPath(import.meta.url)), 'template');
79
- let projectName = 'test';
150
+ let projectName;
80
151
 
81
- const questions = getInitProjectQuestions();
152
+ const questions = getInitProjectQuestions(options);
82
153
  const answers = await inquirer.prompt(questions);
83
154
  projectName = sanitize(answers.projectName).toLowerCase();
84
155
  options = { ...options, ...answers };
156
+ const includeAi = !options.noAi && options.includeAi !== false;
85
157
 
86
158
  const projectDirectory = `./${projectName}`;
87
159
  if (!fs.existsSync(projectDirectory)) {
@@ -103,16 +175,21 @@ export default async options => {
103
175
  [
104
176
  {
105
177
  title: `Creating a new custom component project in ${chalk.blue(options.targetDirectory)}`,
106
- task: () => copyProjectTemplate(options)
178
+ task: () => copyProjectTemplate(options),
107
179
  },
108
180
  {
109
181
  title: 'Create gitignore',
110
- task: () => createGitignore(options)
182
+ task: () => createGitignore(options),
183
+ },
184
+ {
185
+ title: `Enabling AI-assisted development ${chalk.blue('(Copilot, Claude Code, Cursor, Codex, Gemini)')}`,
186
+ task: () => enableAgentFiles(options.targetDirectory),
187
+ enabled: () => includeAi,
111
188
  },
112
189
  {
113
190
  title: 'Initialize git',
114
191
  task: () => initGit(options),
115
- enabled: () => options.git
192
+ enabled: () => options.git,
116
193
  },
117
194
  /*
118
195
  {
@@ -123,10 +200,9 @@ export default async options => {
123
200
  */
124
201
  {
125
202
  title: installDependenciesText,
126
- task: () =>
127
- execa('npm', ['i', '--force', '--no-audit', '--no-fund', '--loglevel=error'], {
128
- cwd: options.targetDirectory
129
- })
203
+ outputBar: 1,
204
+ timer: PRESET_TIMER,
205
+ task: (ctx, task) => installDependencies(options, task),
130
206
  },
131
207
 
132
208
  /*
@@ -154,13 +230,17 @@ export default async options => {
154
230
  },
155
231
  */
156
232
 
233
+ /*
234
+ // Redundant: npm i above already resolves to the newest version satisfying
235
+ // each range since there's no committed package-lock.json in the template.
157
236
  {
158
237
  title: 'Updating',
159
238
  task: () =>
160
239
  execa('npm', ['update', '--dev', '--no-audit', '--no-fund', '--loglevel=error'], {
161
- cwd: options.targetDirectory
162
- })
163
- }
240
+ cwd: options.targetDirectory,
241
+ }),
242
+ },
243
+ */
164
244
 
165
245
  /* {
166
246
  title: 'Installing quick run',
@@ -168,8 +248,8 @@ export default async options => {
168
248
  } */
169
249
  ],
170
250
  {
171
- exitOnError: false
172
- }
251
+ exitOnError: false,
252
+ },
173
253
  );
174
254
 
175
255
  await tasks.run();
@@ -198,7 +278,7 @@ export default async options => {
198
278
  '\n\n',
199
279
  `Publish component library\n`,
200
280
  ` ${chalk.blueBright('npm run publish')}`,
201
- '\n'
281
+ '\n',
202
282
  );
203
283
 
204
284
  console.log(
@@ -207,7 +287,7 @@ export default async options => {
207
287
  `${chalk.blueBright('cd')} ${chalk.bold(projectName)}`,
208
288
  '\n',
209
289
  `${chalk.blueBright('npm run createLib')} or ${chalk.blueBright('npm run importLibVersion')}`,
210
- '\n'
290
+ '\n',
211
291
  );
212
292
  return true;
213
293
  };
@@ -1 +1,4 @@
1
- "@pega/prettier-config"
1
+ {
2
+ "printWidth": 120,
3
+ "singleQuote": true
4
+ }
@@ -2,13 +2,10 @@ import type { StorybookConfig } from '@storybook/react-vite';
2
2
 
3
3
  const config: StorybookConfig = {
4
4
  stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'],
5
- addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
5
+ addons: ['@storybook/addon-links'],
6
6
  framework: {
7
7
  name: '@storybook/react-vite',
8
8
  options: {},
9
9
  },
10
- docs: {
11
- autodocs: 'tag',
12
- },
13
10
  };
14
11
  export default config;
@@ -1,4 +1,4 @@
1
- import { addons } from '@storybook/manager-api';
1
+ import { addons } from 'storybook/manager-api';
2
2
  import Theme from './theme';
3
3
 
4
4
  addons.setConfig({
@@ -29,11 +29,11 @@ const preview: Preview = {
29
29
  // Sets up contexts
30
30
  (Story, context) => {
31
31
  return (
32
- <Configuration disableDefaultFontLoading id='Preview'>
32
+ <Configuration disableDefaultFontLoading id="Preview">
33
33
  <ShortcutManager>
34
34
  <LiveLog maxLength={context.args.liveLogMaxLength || 50}>
35
35
  <PopoverManager>
36
- <Toaster dismissAfter={5000}>
36
+ <Toaster>
37
37
  <ModalManager>
38
38
  <Story {...context} />
39
39
  </ModalManager>
@@ -1,4 +1,4 @@
1
- import { create } from '@storybook/theming';
1
+ import { create } from 'storybook/theming';
2
2
 
3
3
  import logo from './pega-logo.svg';
4
4
 
@@ -2,7 +2,6 @@
2
2
  "recommendations": [
3
3
  "dbaeumer.vscode-eslint",
4
4
  "esbenp.prettier-vscode",
5
- "stylelint.vscode-stylelint",
6
5
  "streetsidesoftware.code-spell-checker",
7
6
  "styled-components.vscode-styled-components"
8
7
  ]
@@ -37,9 +37,9 @@ Ensure you have access to the following in your system:
37
37
 
38
38
  - Git version 2.30 or later
39
39
 
40
- - System node version >= 24.4.1
40
+ - System node version >= 24.22.1
41
41
 
42
- - System npm version 11.4.2
42
+ - System npm version 11.19.1
43
43
 
44
44
  ## Latest Documentation
45
45
 
@@ -1,21 +1,17 @@
1
1
  import { globalIgnores } from 'eslint/config';
2
- import { fileURLToPath } from 'node:url';
3
2
  import eslint from '@eslint/js';
4
3
  import tseslint from 'typescript-eslint';
5
- import sonarjs from 'eslint-plugin-sonarjs';
6
- import importPlugin from 'eslint-plugin-import';
7
- import react from 'eslint-plugin-react';
8
- import reactHooks from 'eslint-plugin-react-hooks';
9
- // eslint.config.js
4
+ import eslintReact from '@eslint-react/eslint-plugin';
10
5
  import { defineConfig } from 'eslint/config';
11
6
 
12
- const __filename = fileURLToPath(import.meta.url);
13
-
14
7
  export default defineConfig([
15
8
  eslint.configs.recommended,
16
9
  ...tseslint.configs.recommended,
10
+ eslintReact.configs['recommended-typescript'],
17
11
  globalIgnores([
18
12
  '**/node_modules',
13
+ // agent skills ship sample assets that are not part of the TypeScript project
14
+ '.claude/**',
19
15
  'packages/*/lib',
20
16
  '!**/.storybook',
21
17
  '.storybook/public',
@@ -51,10 +47,7 @@ export default defineConfig([
51
47
  document: true,
52
48
  fetch: true,
53
49
  },
54
-
55
- ecmaVersion: 13,
56
- sourceType: 'script',
57
-
50
+ ecmaVersion: 'latest',
58
51
  parserOptions: {
59
52
  project: 'tsconfig.json',
60
53
  ecmaFeatures: {
@@ -63,160 +56,25 @@ export default defineConfig([
63
56
  },
64
57
  },
65
58
 
66
- settings: {
67
- 'import/resolver': {
68
- typescript: {},
69
- react: {
70
- version: 'detect',
71
- },
72
- node: {
73
- extensions: ['.js', '.jsx', '.ts', '.tsx'],
74
- },
75
- },
76
-
77
- react: {
78
- version: 'detect',
79
- },
80
- },
81
-
82
- plugins: { sonarjs, import: importPlugin, react, 'react-hooks': reactHooks },
83
59
  rules: {
84
- 'prettier/prettier': 'off',
85
- 'sonarjs/cognitive-complexity': 'off',
86
- 'sonarjs/no-identical-functions': 'off',
87
- 'sonarjs/no-duplicate-string': 'off',
88
- 'sonarjs/no-nested-template-literals': 'off',
89
- '@typescript-eslint/array-type': 'off',
90
- '@typescript-eslint/no-wrapper-object-types': 'off',
91
- '@typescript-eslint/no-explicit-any': 'off',
92
- '@typescript-eslint/no-empty-object-type': 'off',
93
- '@typescript-eslint/ban-ts-comment': 'off',
94
- '@typescript-eslint/no-unsafe-function-type': 'off',
95
- '@typescript-eslint/no-inferrable-types': 'off',
96
- 'import/extensions': ['off', 'never'],
97
- 'import/named': 'off',
98
- 'import/no-cycle': 'off',
99
- 'import/no-duplicates': 'off',
100
- 'import/no-extraneous-dependencies': 'off',
101
- 'import/no-named-as-default': 'off',
102
- 'import/no-named-as-default-member': 'off',
103
- 'import/no-self-import': 'off',
104
- 'import/no-unresolved': 'off',
105
- 'import/no-useless-path-segments': 'off',
106
- 'import/order': 'off',
107
- 'no-else-return': 'off',
108
- 'no-restricted-syntax': 'off',
109
- 'no-underscore-dangle': 'off',
110
- 'jsx-a11y/alt-text': 'off',
111
- 'jsx-a11y/anchor-is-valid': 'off',
112
- 'jsx-a11y/click-events-have-key-events': 'off',
113
- 'jsx-a11y/label-has-associated-control': 'off',
114
- 'jsx-a11y/no-static-element-interactions': 'off',
115
- 'react/jsx-fragments': 'off',
116
- 'react/jsx-no-bind': 'off',
117
- 'react/self-closing-comp': 'off',
118
- 'sonarjs/prefer-immediate-return': 'off',
119
- '@typescript-eslint/dot-notation': 'off',
120
- '@typescript-eslint/naming-convention': 'off',
121
- '@typescript-eslint/ban-types': 'off',
122
- eqeqeq: 'off',
123
- 'no-alert': 'off',
124
- 'no-console': 'error',
125
- 'no-fallthrough': 'error',
126
- 'no-unused-vars': 'off',
60
+ // Project-specific relaxations of the recommended presets above.
127
61
  'no-var': 'off',
128
- yoda: 'error',
129
62
  'no-irregular-whitespace': 'off',
130
63
  'no-empty': 'off',
131
- 'no-new-object': 'off',
132
- 'import/no-relative-packages': 'off',
133
- 'import/no-mutable-exports': 'error',
134
- 'sonarjs/max-switch-cases': 'error',
135
- 'sonarjs/no-collapsible-if': 'error',
136
- 'sonarjs/no-all-duplicated-branches': 'error',
137
- 'sonarjs/no-duplicated-branches': 'error',
138
- 'sonarjs/no-gratuitous-expressions': 'off',
139
- 'sonarjs/no-ignored-return': 'error',
140
- 'sonarjs/no-small-switch': 'error',
141
- 'sonarjs/prefer-object-literal': 'error',
142
- 'sonarjs/prefer-single-boolean-return': 'error',
143
- '@typescript-eslint/no-shadow': 'error',
144
- 'react/default-props-match-prop-types': 'error',
145
- 'react/no-unescaped-entities': 'error',
146
- 'react/no-unused-prop-types': 'error',
147
- 'react/static-property-placement': 'error',
148
- 'array-callback-return': 'error',
149
- 'func-names': 'error',
150
- 'no-case-declarations': 'error',
151
- 'no-lonely-if': 'error',
152
- 'no-nested-ternary': 'error',
153
- 'no-plusplus': 'error',
154
- 'no-restricted-globals': 'error',
155
- 'no-restricted-properties': 'error',
156
- 'no-shadow': 'error',
157
- radix: 'error',
158
- 'spaced-comment': 'error',
159
- 'import/newline-after-import': 'error',
160
- 'sonarjs/no-nested-switch': 'error',
161
- '@typescript-eslint/no-array-constructor': 'error',
162
- '@typescript-eslint/no-unused-vars': 'error',
163
- '@typescript-eslint/no-useless-constructor': 'error',
164
- 'react/button-has-type': 'error',
165
- 'react/jsx-curly-brace-presence': 'error',
166
- 'react/jsx-boolean-value': 'error',
167
- 'react/no-array-index-key': 'error',
168
- 'class-methods-use-this': 'error',
169
- 'guard-for-in': 'error',
170
- 'no-unneeded-ternary': 'error',
171
- 'no-unused-expressions': 'error',
172
- 'operator-assignment': 'error',
173
- 'prefer-template': 'error',
174
- 'vars-on-top': 'error',
175
- 'prefer-regex-literals': 'off',
176
- 'no-use-before-define': 'off',
177
- '@typescript-eslint/no-use-before-define': 'error',
64
+ 'no-console': 'error',
65
+ '@typescript-eslint/ban-ts-comment': 'off',
66
+ '@typescript-eslint/no-empty-object-type': 'off',
67
+ '@typescript-eslint/no-explicit-any': 'off',
68
+ '@typescript-eslint/no-unsafe-function-type': 'off',
69
+ '@typescript-eslint/no-wrapper-object-types': 'off',
178
70
  },
179
71
  },
180
72
  {
181
73
  files: ['**/*.@(ts|tsx)'],
182
-
183
74
  rules: {
184
75
  '@typescript-eslint/method-signature-style': ['error', 'property'],
185
- quotes: 'off',
186
- '@typescript-eslint/quotes': 'off',
187
- },
188
- },
189
- {
190
- files: ['**/*.@(jsx|tsx|mdx)'],
191
-
192
- rules: {
193
- 'react/react-in-jsx-scope': 'off',
194
- 'react-hooks/rules-of-hooks': 'off',
195
- 'react-hooks/exhaustive-deps': 'off',
196
- },
197
- },
198
- {
199
- files: ['**/*.@(ts|tsx)'],
200
- rules: {
76
+ // Generated components log to the console for diagnostics; only enforced for plain JS.
201
77
  'no-console': 'off',
202
- 'import/prefer-default-export': 'off',
203
- 'import/no-relative-packages': 'off',
204
- 'react/jsx-fragments': 'off',
205
- 'react/react-in-jsx-scope': 'off',
206
- 'react-hooks/exhaustive-deps': 'off',
207
- 'sonarjs/cognitive-complexity': ['warn', 45],
208
- },
209
- },
210
- {
211
- files: ['**/*.@(js|jsx|ts|tsx|mdx)'],
212
- rules: {},
213
- },
214
-
215
- {
216
- files: ['*/**/mocks/**.@(mocks|styles).@(tsx|ts)'],
217
-
218
- rules: {
219
- 'import/prefer-default-export': ['off'],
220
78
  },
221
79
  },
222
80
  ]);
@@ -4,6 +4,8 @@ const packagesToTranspile = [
4
4
  '@pega/cosmos-react-social',
5
5
  '@pega/cosmos-react-rte',
6
6
  '@pega/cosmos-react-work',
7
+ '@storybook',
8
+ 'storybook',
7
9
  'shortcuts',
8
10
  'preact',
9
11
  ];