@flipdish/portal-library 7.7.0 → 7.9.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 (396) hide show
  1. package/dist/components/atoms/BreadCrumbs/index.cjs.js +2 -0
  2. package/dist/components/atoms/BreadCrumbs/index.cjs.js.map +1 -0
  3. package/dist/components/atoms/BreadCrumbs/index.d.ts +20 -0
  4. package/dist/components/atoms/BreadCrumbs/index.js +2 -0
  5. package/dist/components/atoms/BreadCrumbs/index.js.map +1 -0
  6. package/dist/components/molecules/CheckboxGroup/index.cjs.js +1 -1
  7. package/dist/components/molecules/CheckboxGroup/index.cjs.js.map +1 -1
  8. package/dist/components/molecules/CheckboxGroup/index.d.ts +33 -0
  9. package/dist/components/molecules/CheckboxGroup/index.js +1 -1
  10. package/dist/components/molecules/CheckboxGroup/index.js.map +1 -1
  11. package/dist/components/molecules/Combobox/index.d.ts +1 -1
  12. package/dist/components/organisms/AssetManager/__mocks__/mockAssets.cjs.js +2 -0
  13. package/dist/components/organisms/AssetManager/__mocks__/mockAssets.cjs.js.map +1 -0
  14. package/dist/components/organisms/AssetManager/__mocks__/mockAssets.d.ts +21 -0
  15. package/dist/components/organisms/AssetManager/__mocks__/mockAssets.js +2 -0
  16. package/dist/components/organisms/AssetManager/__mocks__/mockAssets.js.map +1 -0
  17. package/dist/components/organisms/AssetManager/hooks/useAssets.cjs.js +2 -0
  18. package/dist/components/organisms/AssetManager/hooks/useAssets.cjs.js.map +1 -0
  19. package/dist/components/organisms/AssetManager/hooks/useAssets.d.ts +10 -0
  20. package/dist/components/organisms/AssetManager/hooks/useAssets.js +2 -0
  21. package/dist/components/organisms/AssetManager/hooks/useAssets.js.map +1 -0
  22. package/dist/components/organisms/AssetManager/index.cjs.js +1 -1
  23. package/dist/components/organisms/AssetManager/index.cjs.js.map +1 -1
  24. package/dist/components/organisms/AssetManager/index.d.ts +4 -2
  25. package/dist/components/organisms/AssetManager/index.js +1 -1
  26. package/dist/components/organisms/AssetManager/index.js.map +1 -1
  27. package/dist/components/organisms/AssetManager/services/asset.service.cjs.js +2 -0
  28. package/dist/components/organisms/AssetManager/services/asset.service.cjs.js.map +1 -0
  29. package/dist/components/organisms/AssetManager/services/asset.service.d.ts +11 -0
  30. package/dist/components/organisms/AssetManager/services/asset.service.js +2 -0
  31. package/dist/components/organisms/AssetManager/services/asset.service.js.map +1 -0
  32. package/dist/components/organisms/FileUpload/components/FileDropZone.cjs.js.map +1 -1
  33. package/dist/components/organisms/FileUpload/components/FileDropZone.js.map +1 -1
  34. package/dist/components/organisms/FileUpload/components/FileItem.cjs.js.map +1 -1
  35. package/dist/components/organisms/FileUpload/components/FileItem.js.map +1 -1
  36. package/dist/components/organisms/FileUpload/components/FileThumbnail.cjs.js.map +1 -1
  37. package/dist/components/organisms/FileUpload/components/FileThumbnail.js.map +1 -1
  38. package/dist/components/organisms/Heading/Heading.cjs.js +2 -0
  39. package/dist/components/organisms/Heading/Heading.cjs.js.map +1 -0
  40. package/dist/components/organisms/Heading/Heading.d.ts +32 -0
  41. package/dist/components/organisms/Heading/Heading.js +2 -0
  42. package/dist/components/organisms/Heading/Heading.js.map +1 -0
  43. package/dist/components/organisms/ImageUploadWidget/components/FlipdishFonts.cjs.js.map +1 -1
  44. package/dist/components/organisms/ImageUploadWidget/components/FlipdishFonts.js.map +1 -1
  45. package/dist/components/organisms/ImageUploadWidget/components/ImageDisplay.cjs.js.map +1 -1
  46. package/dist/components/organisms/ImageUploadWidget/components/ImageDisplay.js.map +1 -1
  47. package/dist/components/organisms/ImageUploadWidget/components/ImageDropZone.cjs.js.map +1 -1
  48. package/dist/components/organisms/ImageUploadWidget/components/ImageDropZone.js.map +1 -1
  49. package/dist/components/organisms/ImageUploadWidget/index.cjs.js.map +1 -1
  50. package/dist/components/organisms/ImageUploadWidget/index.js.map +1 -1
  51. package/dist/mocks/msw/handlers.cjs.js +2 -0
  52. package/dist/mocks/msw/handlers.cjs.js.map +1 -0
  53. package/dist/mocks/msw/handlers.d.ts +5 -0
  54. package/dist/mocks/msw/handlers.js +2 -0
  55. package/dist/mocks/msw/handlers.js.map +1 -0
  56. package/dist/mocks/msw/server.cjs.js +2 -0
  57. package/dist/mocks/msw/server.cjs.js.map +1 -0
  58. package/dist/mocks/msw/server.d.ts +5 -0
  59. package/dist/mocks/msw/server.js +2 -0
  60. package/dist/mocks/msw/server.js.map +1 -0
  61. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-VYSDLBSS.cjs.js +2 -0
  62. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-VYSDLBSS.cjs.js.map +1 -0
  63. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-VYSDLBSS.js +2 -0
  64. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-VYSDLBSS.js.map +1 -0
  65. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-Z5TSB3T6.cjs.js +2 -0
  66. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-Z5TSB3T6.cjs.js.map +1 -0
  67. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-Z5TSB3T6.js +2 -0
  68. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/chunk-Z5TSB3T6.js.map +1 -0
  69. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.cjs.js +2 -0
  70. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.cjs.js.map +1 -0
  71. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.d.d.ts +225 -0
  72. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.js +2 -0
  73. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.js.map +1 -0
  74. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/BatchInterceptor-cb9a2eee.d.d.ts +25 -0
  75. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/Interceptor-dc0a39b5.d.d.ts +123 -0
  76. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-5UGIB6OX.cjs.js +2 -0
  77. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-5UGIB6OX.cjs.js.map +1 -0
  78. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-5UGIB6OX.js +2 -0
  79. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-5UGIB6OX.js.map +1 -0
  80. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-5V3SIIW2.cjs.js +2 -0
  81. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-5V3SIIW2.cjs.js.map +1 -0
  82. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-5V3SIIW2.js +2 -0
  83. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-5V3SIIW2.js.map +1 -0
  84. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-6HYIRFX2.cjs.js +2 -0
  85. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-6HYIRFX2.cjs.js.map +1 -0
  86. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-6HYIRFX2.js +2 -0
  87. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-6HYIRFX2.js.map +1 -0
  88. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-6YM4PLBI.cjs.js +2 -0
  89. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-6YM4PLBI.cjs.js.map +1 -0
  90. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-6YM4PLBI.js +2 -0
  91. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-6YM4PLBI.js.map +1 -0
  92. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-GKN5RBVR.cjs.js +2 -0
  93. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-GKN5RBVR.cjs.js.map +1 -0
  94. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-GKN5RBVR.js +2 -0
  95. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-GKN5RBVR.js.map +1 -0
  96. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-JXGB54LE.cjs.js +2 -0
  97. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-JXGB54LE.cjs.js.map +1 -0
  98. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-JXGB54LE.js +2 -0
  99. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-JXGB54LE.js.map +1 -0
  100. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-OFW5L5ET.cjs.js +2 -0
  101. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-OFW5L5ET.cjs.js.map +1 -0
  102. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-OFW5L5ET.js +2 -0
  103. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-OFW5L5ET.js.map +1 -0
  104. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-R6T7CL5E.cjs.js +2 -0
  105. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-R6T7CL5E.cjs.js.map +1 -0
  106. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-R6T7CL5E.js +2 -0
  107. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-R6T7CL5E.js.map +1 -0
  108. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-SQ6RHTJR.cjs.js +2 -0
  109. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-SQ6RHTJR.cjs.js.map +1 -0
  110. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-SQ6RHTJR.js +2 -0
  111. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-SQ6RHTJR.js.map +1 -0
  112. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-TX5GBTFY.cjs.js +2 -0
  113. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-TX5GBTFY.cjs.js.map +1 -0
  114. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-TX5GBTFY.js +2 -0
  115. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-TX5GBTFY.js.map +1 -0
  116. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-YWNGXXUQ.cjs.js +2 -0
  117. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-YWNGXXUQ.cjs.js.map +1 -0
  118. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-YWNGXXUQ.js +2 -0
  119. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/chunk-YWNGXXUQ.js.map +1 -0
  120. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/index.cjs.js +2 -0
  121. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/index.cjs.js.map +1 -0
  122. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/index.d.d.ts +26 -0
  123. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/index.js +2 -0
  124. package/dist/node_modules/.pnpm/@mswjs_interceptors@0.40.0/node_modules/@mswjs/interceptors/lib/node/index.js.map +1 -0
  125. package/dist/node_modules/.pnpm/@open-draft_deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.cjs.js +2 -0
  126. package/dist/node_modules/.pnpm/@open-draft_deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.cjs.js.map +1 -0
  127. package/dist/node_modules/.pnpm/@open-draft_deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.js +2 -0
  128. package/dist/node_modules/.pnpm/@open-draft_deferred-promise@2.2.0/node_modules/@open-draft/deferred-promise/build/index.js.map +1 -0
  129. package/dist/node_modules/.pnpm/@open-draft_logger@0.3.0/node_modules/@open-draft/logger/lib/index.cjs.js +2 -0
  130. package/dist/node_modules/.pnpm/@open-draft_logger@0.3.0/node_modules/@open-draft/logger/lib/index.cjs.js.map +1 -0
  131. package/dist/node_modules/.pnpm/@open-draft_logger@0.3.0/node_modules/@open-draft/logger/lib/index.d.d.ts +52 -0
  132. package/dist/node_modules/.pnpm/@open-draft_logger@0.3.0/node_modules/@open-draft/logger/lib/index.js +2 -0
  133. package/dist/node_modules/.pnpm/@open-draft_logger@0.3.0/node_modules/@open-draft/logger/lib/index.js.map +1 -0
  134. package/dist/node_modules/.pnpm/@open-draft_until@2.1.0/node_modules/@open-draft/until/lib/index.cjs.js +2 -0
  135. package/dist/node_modules/.pnpm/@open-draft_until@2.1.0/node_modules/@open-draft/until/lib/index.cjs.js.map +1 -0
  136. package/dist/node_modules/.pnpm/@open-draft_until@2.1.0/node_modules/@open-draft/until/lib/index.js +2 -0
  137. package/dist/node_modules/.pnpm/@open-draft_until@2.1.0/node_modules/@open-draft/until/lib/index.js.map +1 -0
  138. package/dist/node_modules/.pnpm/headers-polyfill@4.0.3/node_modules/headers-polyfill/lib/index.cjs.js +2 -0
  139. package/dist/node_modules/.pnpm/headers-polyfill@4.0.3/node_modules/headers-polyfill/lib/index.cjs.js.map +1 -0
  140. package/dist/node_modules/.pnpm/headers-polyfill@4.0.3/node_modules/headers-polyfill/lib/index.js +2 -0
  141. package/dist/node_modules/.pnpm/headers-polyfill@4.0.3/node_modules/headers-polyfill/lib/index.js.map +1 -0
  142. package/dist/node_modules/.pnpm/is-node-process@1.2.0/node_modules/is-node-process/lib/index.cjs.js +2 -0
  143. package/dist/node_modules/.pnpm/is-node-process@1.2.0/node_modules/is-node-process/lib/index.cjs.js.map +1 -0
  144. package/dist/node_modules/.pnpm/is-node-process@1.2.0/node_modules/is-node-process/lib/index.js +2 -0
  145. package/dist/node_modules/.pnpm/is-node-process@1.2.0/node_modules/is-node-process/lib/index.js.map +1 -0
  146. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse-DC89RDb7.d.d.ts +196 -0
  147. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.cjs.js +2 -0
  148. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.cjs.js.map +1 -0
  149. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.js +2 -0
  150. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.js.map +1 -0
  151. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/SetupApi.cjs.js +2 -0
  152. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/SetupApi.cjs.js.map +1 -0
  153. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/SetupApi.d.d.ts +29 -0
  154. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/SetupApi.js +2 -0
  155. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/SetupApi.js.map +1 -0
  156. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/HttpHandler.cjs.js +2 -0
  157. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/HttpHandler.cjs.js.map +1 -0
  158. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/HttpHandler.d.d.ts +60 -0
  159. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/HttpHandler.js +2 -0
  160. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/HttpHandler.js.map +1 -0
  161. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/RequestHandler.cjs.js +2 -0
  162. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/RequestHandler.cjs.js.map +1 -0
  163. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/RequestHandler.js +2 -0
  164. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/RequestHandler.js.map +1 -0
  165. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/WebSocketHandler.d.d.ts +41 -0
  166. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/http.cjs.js +2 -0
  167. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/http.cjs.js.map +1 -0
  168. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/http.js +2 -0
  169. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/http.js.map +1 -0
  170. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/index.cjs.js +2 -0
  171. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/index.cjs.js.map +1 -0
  172. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/index.js +2 -0
  173. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/index.js.map +1 -0
  174. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/isCommonAssetRequest.cjs.js +2 -0
  175. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/isCommonAssetRequest.cjs.js.map +1 -0
  176. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/isCommonAssetRequest.js +2 -0
  177. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/isCommonAssetRequest.js.map +1 -0
  178. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/sharedOptions.d.d.ts +64 -0
  179. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/typeUtils.d.d.ts +8 -0
  180. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/HttpResponse/decorators.cjs.js +2 -0
  181. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/HttpResponse/decorators.cjs.js.map +1 -0
  182. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/HttpResponse/decorators.js +2 -0
  183. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/HttpResponse/decorators.js.map +1 -0
  184. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/cookieStore.cjs.js +2 -0
  185. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/cookieStore.cjs.js.map +1 -0
  186. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/cookieStore.js +2 -0
  187. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/cookieStore.js.map +1 -0
  188. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/executeHandlers.cjs.js +2 -0
  189. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/executeHandlers.cjs.js.map +1 -0
  190. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/executeHandlers.js +2 -0
  191. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/executeHandlers.js.map +1 -0
  192. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/handleRequest.cjs.js +2 -0
  193. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/handleRequest.cjs.js.map +1 -0
  194. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/handleRequest.js +2 -0
  195. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/handleRequest.js.map +1 -0
  196. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/Disposable.cjs.js +2 -0
  197. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/Disposable.cjs.js.map +1 -0
  198. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/Disposable.d.d.ts +8 -0
  199. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/Disposable.js +2 -0
  200. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/Disposable.js.map +1 -0
  201. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/checkGlobals.cjs.js +2 -0
  202. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/checkGlobals.cjs.js.map +1 -0
  203. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/checkGlobals.js +2 -0
  204. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/checkGlobals.js.map +1 -0
  205. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/devUtils.cjs.js +2 -0
  206. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/devUtils.cjs.js.map +1 -0
  207. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/devUtils.js +2 -0
  208. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/devUtils.js.map +1 -0
  209. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/getCallFrame.cjs.js +2 -0
  210. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/getCallFrame.cjs.js.map +1 -0
  211. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/getCallFrame.js +2 -0
  212. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/getCallFrame.js.map +1 -0
  213. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isHandlerKind.cjs.js +2 -0
  214. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isHandlerKind.cjs.js.map +1 -0
  215. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isHandlerKind.js +2 -0
  216. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isHandlerKind.js.map +1 -0
  217. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isIterable.cjs.js +2 -0
  218. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isIterable.cjs.js.map +1 -0
  219. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isIterable.d.d.ts +16 -0
  220. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isIterable.js +2 -0
  221. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isIterable.js.map +1 -0
  222. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isObject.cjs.js +2 -0
  223. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isObject.cjs.js.map +1 -0
  224. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isObject.js +2 -0
  225. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isObject.js.map +1 -0
  226. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isStringEqual.cjs.js +2 -0
  227. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isStringEqual.cjs.js.map +1 -0
  228. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isStringEqual.js +2 -0
  229. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/isStringEqual.js.map +1 -0
  230. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/jsonParse.cjs.js +2 -0
  231. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/jsonParse.cjs.js.map +1 -0
  232. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/jsonParse.js +2 -0
  233. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/jsonParse.js.map +1 -0
  234. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/mergeRight.cjs.js +2 -0
  235. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/mergeRight.cjs.js.map +1 -0
  236. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/mergeRight.js +2 -0
  237. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/mergeRight.js.map +1 -0
  238. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/pipeEvents.cjs.js +2 -0
  239. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/pipeEvents.cjs.js.map +1 -0
  240. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/pipeEvents.js +2 -0
  241. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/pipeEvents.js.map +1 -0
  242. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/toReadonlyArray.cjs.js +2 -0
  243. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/toReadonlyArray.cjs.js.map +1 -0
  244. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/toReadonlyArray.js +2 -0
  245. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/internal/toReadonlyArray.js.map +1 -0
  246. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.cjs.js +2 -0
  247. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.cjs.js.map +1 -0
  248. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.js +2 -0
  249. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.js.map +1 -0
  250. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/getTimestamp.cjs.js +2 -0
  251. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/getTimestamp.cjs.js.map +1 -0
  252. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/getTimestamp.js +2 -0
  253. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/getTimestamp.js.map +1 -0
  254. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/serializeRequest.cjs.js +2 -0
  255. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/serializeRequest.cjs.js.map +1 -0
  256. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/serializeRequest.js +2 -0
  257. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/serializeRequest.js.map +1 -0
  258. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/serializeResponse.cjs.js +2 -0
  259. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/serializeResponse.cjs.js.map +1 -0
  260. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/serializeResponse.js +2 -0
  261. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/logging/serializeResponse.js.map +1 -0
  262. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/matchRequestUrl.cjs.js +2 -0
  263. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/matchRequestUrl.cjs.js.map +1 -0
  264. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/matchRequestUrl.d.d.ts +10 -0
  265. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/matchRequestUrl.js +2 -0
  266. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/matchRequestUrl.js.map +1 -0
  267. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/normalizePath.cjs.js +2 -0
  268. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/normalizePath.cjs.js.map +1 -0
  269. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/normalizePath.js +2 -0
  270. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/matching/normalizePath.js.map +1 -0
  271. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/getRequestCookies.cjs.js +2 -0
  272. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/getRequestCookies.cjs.js.map +1 -0
  273. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/getRequestCookies.js +2 -0
  274. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/getRequestCookies.js.map +1 -0
  275. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/onUnhandledRequest.cjs.js +2 -0
  276. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/onUnhandledRequest.cjs.js.map +1 -0
  277. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/onUnhandledRequest.d.d.ts +8 -0
  278. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/onUnhandledRequest.js +2 -0
  279. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/onUnhandledRequest.js.map +1 -0
  280. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/storeResponseCookies.cjs.js +2 -0
  281. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/storeResponseCookies.cjs.js.map +1 -0
  282. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/storeResponseCookies.js +2 -0
  283. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/storeResponseCookies.js.map +1 -0
  284. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/toPublicUrl.cjs.js +2 -0
  285. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/toPublicUrl.cjs.js.map +1 -0
  286. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/toPublicUrl.js +2 -0
  287. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/request/toPublicUrl.js.map +1 -0
  288. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/cleanUrl.cjs.js +2 -0
  289. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/cleanUrl.cjs.js.map +1 -0
  290. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/cleanUrl.js +2 -0
  291. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/cleanUrl.js.map +1 -0
  292. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.cjs.js +2 -0
  293. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.cjs.js.map +1 -0
  294. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.js +2 -0
  295. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.js.map +1 -0
  296. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.cjs.js +2 -0
  297. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.cjs.js.map +1 -0
  298. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.js +2 -0
  299. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.js.map +1 -0
  300. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/ws/handleWebSocketEvent.cjs.js +2 -0
  301. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/ws/handleWebSocketEvent.cjs.js.map +1 -0
  302. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/ws/handleWebSocketEvent.js +2 -0
  303. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/ws/handleWebSocketEvent.js.map +1 -0
  304. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/ws/webSocketInterceptor.cjs.js +2 -0
  305. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/ws/webSocketInterceptor.cjs.js.map +1 -0
  306. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/ws/webSocketInterceptor.js +2 -0
  307. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/ws/webSocketInterceptor.js.map +1 -0
  308. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.cjs.js +2 -0
  309. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.cjs.js.map +1 -0
  310. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.d.d.ts +85 -0
  311. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.js +2 -0
  312. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.js.map +1 -0
  313. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/shims/cookie.cjs.js +2 -0
  314. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/shims/cookie.cjs.js.map +1 -0
  315. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/shims/cookie.js +2 -0
  316. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/shims/cookie.js.map +1 -0
  317. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/shims/statuses.cjs.js +12 -0
  318. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/shims/statuses.cjs.js.map +1 -0
  319. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/shims/statuses.js +12 -0
  320. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/shims/statuses.js.map +1 -0
  321. package/dist/node_modules/.pnpm/outvariant@1.4.3/node_modules/outvariant/lib/index.cjs.js +2 -0
  322. package/dist/node_modules/.pnpm/outvariant@1.4.3/node_modules/outvariant/lib/index.cjs.js.map +1 -0
  323. package/dist/node_modules/.pnpm/outvariant@1.4.3/node_modules/outvariant/lib/index.js +2 -0
  324. package/dist/node_modules/.pnpm/outvariant@1.4.3/node_modules/outvariant/lib/index.js.map +1 -0
  325. package/dist/node_modules/.pnpm/path-to-regexp@6.3.0/node_modules/path-to-regexp/dist.es2015/index.cjs.js +2 -0
  326. package/dist/node_modules/.pnpm/path-to-regexp@6.3.0/node_modules/path-to-regexp/dist.es2015/index.cjs.js.map +1 -0
  327. package/dist/node_modules/.pnpm/path-to-regexp@6.3.0/node_modules/path-to-regexp/dist.es2015/index.js +2 -0
  328. package/dist/node_modules/.pnpm/path-to-regexp@6.3.0/node_modules/path-to-regexp/dist.es2015/index.js.map +1 -0
  329. package/dist/node_modules/.pnpm/strict-event-emitter@0.5.1/node_modules/strict-event-emitter/lib/index.cjs.js +2 -0
  330. package/dist/node_modules/.pnpm/strict-event-emitter@0.5.1/node_modules/strict-event-emitter/lib/index.cjs.js.map +1 -0
  331. package/dist/node_modules/.pnpm/strict-event-emitter@0.5.1/node_modules/strict-event-emitter/lib/index.d.d.ts +75 -0
  332. package/dist/node_modules/.pnpm/strict-event-emitter@0.5.1/node_modules/strict-event-emitter/lib/index.js +2 -0
  333. package/dist/node_modules/.pnpm/strict-event-emitter@0.5.1/node_modules/strict-event-emitter/lib/index.js.map +1 -0
  334. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/domain.cjs.js +2 -0
  335. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/domain.cjs.js.map +1 -0
  336. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/domain.js +2 -0
  337. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/domain.js.map +1 -0
  338. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/extract-hostname.cjs.js +2 -0
  339. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/extract-hostname.cjs.js.map +1 -0
  340. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/extract-hostname.js +2 -0
  341. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map +1 -0
  342. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/factory.cjs.js +2 -0
  343. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/factory.cjs.js.map +1 -0
  344. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/factory.js +2 -0
  345. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/factory.js.map +1 -0
  346. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/is-ip.cjs.js +2 -0
  347. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/is-ip.cjs.js.map +1 -0
  348. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/is-ip.js +2 -0
  349. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/is-ip.js.map +1 -0
  350. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/is-valid.cjs.js +2 -0
  351. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/is-valid.cjs.js.map +1 -0
  352. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/is-valid.js +2 -0
  353. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/is-valid.js.map +1 -0
  354. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/lookup/fast-path.cjs.js +2 -0
  355. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/lookup/fast-path.cjs.js.map +1 -0
  356. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js +2 -0
  357. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map +1 -0
  358. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/options.cjs.js +2 -0
  359. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/options.cjs.js.map +1 -0
  360. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/options.js +2 -0
  361. package/dist/node_modules/.pnpm/tldts-core@7.0.19/node_modules/tldts-core/dist/es6/src/options.js.map +1 -0
  362. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/index.cjs.js +2 -0
  363. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/index.cjs.js.map +1 -0
  364. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/index.js +2 -0
  365. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/index.js.map +1 -0
  366. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/src/data/trie.cjs.js +2 -0
  367. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/src/data/trie.cjs.js.map +1 -0
  368. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/src/data/trie.js +2 -0
  369. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/src/data/trie.js.map +1 -0
  370. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/src/suffix-trie.cjs.js +2 -0
  371. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/src/suffix-trie.cjs.js.map +1 -0
  372. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/src/suffix-trie.js +2 -0
  373. package/dist/node_modules/.pnpm/tldts@7.0.19/node_modules/tldts/dist/es6/src/suffix-trie.js.map +1 -0
  374. package/dist/node_modules/.pnpm/tough-cookie@6.0.0/node_modules/tough-cookie/dist/index.cjs.js +33 -0
  375. package/dist/node_modules/.pnpm/tough-cookie@6.0.0/node_modules/tough-cookie/dist/index.cjs.js.map +1 -0
  376. package/dist/node_modules/.pnpm/tough-cookie@6.0.0/node_modules/tough-cookie/dist/index.js +32 -0
  377. package/dist/node_modules/.pnpm/tough-cookie@6.0.0/node_modules/tough-cookie/dist/index.js.map +1 -0
  378. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/if.d.d.ts +102 -0
  379. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/internal/object.d.d.ts +74 -0
  380. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/internal/type.d.d.ts +25 -0
  381. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/is-any.d.d.ts +31 -0
  382. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/is-never.d.d.ts +44 -0
  383. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/is-optional-key-of.d.d.ts +51 -0
  384. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/merge.d.d.ts +50 -0
  385. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/omit-index-signature.d.d.ts +97 -0
  386. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/optional-keys-of.d.d.ts +46 -0
  387. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/partial-deep.d.d.ts +156 -0
  388. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/pick-index-signature.d.d.ts +52 -0
  389. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/primitive.d.d.ts +15 -0
  390. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/required-keys-of.d.d.ts +32 -0
  391. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/simplify.d.d.ts +60 -0
  392. package/dist/node_modules/.pnpm/until-async@3.0.2/node_modules/until-async/lib/index.cjs.js +2 -0
  393. package/dist/node_modules/.pnpm/until-async@3.0.2/node_modules/until-async/lib/index.cjs.js.map +1 -0
  394. package/dist/node_modules/.pnpm/until-async@3.0.2/node_modules/until-async/lib/index.js +2 -0
  395. package/dist/node_modules/.pnpm/until-async@3.0.2/node_modules/until-async/lib/index.js.map +1 -0
  396. package/package.json +9 -2
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("@mui/material/Breadcrumbs"),a=require("@mui/material/styles"),i=require("@mui/material/useMediaQuery"),l=require("../Link/index.cjs.js"),n=require("../../../icons/ArrowLeft02/index.cjs.js"),s=require("../../../themes/typography.cjs.js");const o=a.styled(r)((({theme:e})=>({"& .MuiBreadcrumbs-separator":{color:e.palette.semantic.text["text-weak"],marginLeft:e.spacing(1),marginRight:e.spacing(1)}}))),u=a.styled("button")((({theme:e})=>({display:"inline-flex",alignItems:"center",background:"none",border:"none",color:e.palette.semantic.text["text-weak"],cursor:"pointer",padding:e.spacing(.5),borderRadius:e.radius?.["radius-4"]||"4px",transition:"background-color 0.2s ease-in-out",fontFamily:s.typography.b1Weak.fontFamily,fontSize:s.typography.b1Weak.fontSize,lineHeight:s.typography.b1Weak.lineHeight,fontWeight:s.typography.b1Weak.fontWeight,letterSpacing:s.typography.b1Weak.letterSpacing,"&:hover":{backgroundColor:e.palette.semantic.fill["fill-hover"]},"&:focus-visible":{outline:`2px solid ${e.palette.semantic.stroke["stroke-focus"]}`,outlineOffset:"2px"}}))),p=a.styled("span")((({theme:e})=>({fontSize:s.typography.b1Weak.fontSize,lineHeight:s.typography.b1Weak.lineHeight,color:e.palette.semantic.text["text-weak"],fontWeight:s.typography.b1Weak.fontWeight,fontFamily:s.typography.b1Weak.fontFamily,letterSpacing:s.typography.b1Weak.letterSpacing}))),c=t.memo((({items:r,type:s="default",className:c,"data-testid":h,ariaLabel:d,ariaLabelEllipsis:b})=>{const[g,f]=t.useState(!1),y=a.useTheme(),m=i(y.breakpoints.down("tablet"));if(!r?.length)return null;const k=[];if(("collapsed"===s||"default"===s&&m)&&r.length>2&&!g){const t=r[0],a=r[r.length-1];if(!t||!a)return null;k.push(e.jsx(l.Link,{fdKey:`breadcrumb-${t.label}`,href:t.href,iconLeft:e.jsx(n,{size:"sm"}),size:"body",tone:"Neutral Weak",underline:!1,weight:"regular",children:t.label},`first-${t.label}-${t.href||""}`)),k.push(e.jsx(u,{"aria-label":b??void 0,onClick:()=>f(!0),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),f(!0))},type:"button",children:"..."},"ellipsis")),k.push(e.jsx(p,{"aria-current":"page",children:a.label},`current-${a.label}-${a.href||""}`))}else{const t=r.map(((t,a)=>{const i=0===a;return a===r.length-1?e.jsx(p,{"aria-current":"page",children:t.label},`current-${t.label}-${t.href||""}`):i?e.jsx(l.Link,{fdKey:`breadcrumb-${t.label}`,href:t.href,iconLeft:e.jsx(n,{size:"sm"}),size:"body",tone:"Neutral Weak",underline:!1,weight:"regular",children:t.label},`first-${t.label}-${t.href||""}`):e.jsx(l.Link,{fdKey:`breadcrumb-${t.label}`,href:t.href,size:"body",tone:"Neutral Weak",underline:!1,weight:"regular",children:t.label},`middle-${t.label}-${t.href||""}`)}));k.push(...t)}return e.jsx(o,{"aria-label":d??void 0,className:c,"data-testid":h,separator:"/",children:k})}));c.displayName="BreadCrumbs",module.exports=c;
2
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/components/atoms/BreadCrumbs/index.tsx"],"sourcesContent":["import { memo, useState } from 'react';\n\nimport BreadcrumbsMUI from '@mui/material/Breadcrumbs';\nimport { styled, useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport Link from '@fd/components/atoms/Link';\nimport ArrowLeft02Icon from '@fd/icons/ArrowLeft02';\nimport { typography } from '@fd/themes/typography';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\nexport type BreadCrumbsType = 'collapsed' | 'default';\n\nexport interface BreadCrumbsProps {\n items: BreadcrumbItem[];\n type?: BreadCrumbsType;\n className?: string;\n 'data-testid'?: string;\n ariaLabel?: string;\n ariaLabelEllipsis?: string;\n}\n\nconst StyledBreadcrumbs = styled(BreadcrumbsMUI)(({ theme }) => ({\n '& .MuiBreadcrumbs-separator': {\n color: theme.palette.semantic.text['text-weak'],\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n}));\n\nconst StyledEllipsisButton = styled('button')(({ theme }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n background: 'none',\n border: 'none',\n color: theme.palette.semantic.text['text-weak'],\n cursor: 'pointer',\n padding: theme.spacing(0.5),\n borderRadius: theme.radius?.['radius-4'] || '4px',\n transition: 'background-color 0.2s ease-in-out',\n fontFamily: typography.b1Weak.fontFamily,\n fontSize: typography.b1Weak.fontSize,\n lineHeight: typography.b1Weak.lineHeight,\n fontWeight: typography.b1Weak.fontWeight,\n letterSpacing: typography.b1Weak.letterSpacing,\n\n '&:hover': {\n backgroundColor: theme.palette.semantic.fill['fill-hover'],\n },\n\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.semantic.stroke['stroke-focus']}`,\n outlineOffset: '2px',\n },\n}));\n\nconst StyledCurrentPage = styled('span')(({ theme }) => ({\n fontSize: typography.b1Weak.fontSize,\n lineHeight: typography.b1Weak.lineHeight,\n color: theme.palette.semantic.text['text-weak'],\n fontWeight: typography.b1Weak.fontWeight,\n fontFamily: typography.b1Weak.fontFamily,\n letterSpacing: typography.b1Weak.letterSpacing,\n}));\n\nconst BreadCrumbs = memo(\n ({\n items,\n type = 'default',\n className,\n 'data-testid': dataTestId,\n ariaLabel,\n ariaLabelEllipsis,\n }: BreadCrumbsProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const theme = useTheme();\n const isSmallScreen = useMediaQuery(theme.breakpoints.down('tablet'));\n\n if (!items?.length) {\n return null;\n }\n\n const shouldCollapse = (type === 'collapsed' || (type === 'default' && isSmallScreen)) && items.length > 2 && !isExpanded;\n\n // Build breadcrumb items array\n const breadcrumbItems: React.ReactNode[] = [];\n\n if (shouldCollapse) {\n const firstItem = items[0];\n const lastItem = items[items.length - 1];\n if (!firstItem || !lastItem) {\n return null;\n }\n // First item\n breadcrumbItems.push(\n <Link\n key={`first-${firstItem.label}-${firstItem.href || ''}`}\n fdKey={`breadcrumb-${firstItem.label}`}\n href={firstItem.href}\n iconLeft={<ArrowLeft02Icon size=\"sm\" />}\n size=\"body\"\n tone=\"Neutral Weak\"\n underline={false}\n weight=\"regular\"\n >\n {firstItem.label}\n </Link>\n );\n\n // Ellipsis\n breadcrumbItems.push(\n <StyledEllipsisButton\n key=\"ellipsis\"\n aria-label={ariaLabelEllipsis ?? undefined}\n onClick={() => setIsExpanded(true)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsExpanded(true);\n }\n }}\n type=\"button\"\n >\n ...\n </StyledEllipsisButton>\n );\n\n // Last item\n breadcrumbItems.push(\n <StyledCurrentPage\n key={`current-${lastItem.label}-${lastItem.href || ''}`}\n aria-current=\"page\"\n >\n {lastItem.label}\n </StyledCurrentPage>\n );\n } else {\n // Default/expanded mode: show all items\n const allItems = items.map((item, index) => {\n const isFirst = index === 0;\n const isLast = index === items.length - 1;\n\n if (isLast) {\n return (\n <StyledCurrentPage\n key={`current-${item.label}-${item.href || ''}`}\n aria-current=\"page\"\n >\n {item.label}\n </StyledCurrentPage>\n );\n }\n if (isFirst) {\n return (\n <Link\n key={`first-${item.label}-${item.href || ''}`}\n fdKey={`breadcrumb-${item.label}`}\n href={item.href}\n iconLeft={<ArrowLeft02Icon size=\"sm\" />}\n size=\"body\"\n tone=\"Neutral Weak\"\n underline={false}\n weight=\"regular\"\n >\n {item.label}\n </Link>\n );\n }\n return (\n <Link\n key={`middle-${item.label}-${item.href || ''}`}\n fdKey={`breadcrumb-${item.label}`}\n href={item.href}\n size=\"body\"\n tone=\"Neutral Weak\"\n underline={false}\n weight=\"regular\"\n >\n {item.label}\n </Link>\n );\n });\n breadcrumbItems.push(...allItems);\n }\n\n return (\n <StyledBreadcrumbs\n aria-label={ariaLabel ?? undefined}\n className={className}\n data-testid={dataTestId}\n separator=\"/\"\n >\n {breadcrumbItems}\n </StyledBreadcrumbs>\n );\n },\n);\n\nBreadCrumbs.displayName = 'BreadCrumbs';\n\nexport default BreadCrumbs;"],"names":["StyledBreadcrumbs","styled","BreadcrumbsMUI","theme","color","palette","semantic","text","marginLeft","spacing","marginRight","StyledEllipsisButton","display","alignItems","background","border","cursor","padding","borderRadius","radius","transition","fontFamily","typography","b1Weak","fontSize","lineHeight","fontWeight","letterSpacing","backgroundColor","fill","outline","stroke","outlineOffset","StyledCurrentPage","BreadCrumbs","memo","items","type","className","dataTestId","ariaLabel","ariaLabelEllipsis","isExpanded","setIsExpanded","useState","useTheme","isSmallScreen","useMediaQuery","breakpoints","down","length","breadcrumbItems","firstItem","lastItem","push","_jsx","Link","fdKey","label","href","iconLeft","ArrowLeft02Icon","size","tone","underline","weight","undefined","onClick","onKeyDown","e","key","preventDefault","children","allItems","map","item","index","isFirst","separator","displayName"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as react from 'react';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+
4
+ interface BreadcrumbItem {
5
+ label: string;
6
+ href?: string;
7
+ }
8
+ type BreadCrumbsType = 'collapsed' | 'default';
9
+ interface BreadCrumbsProps {
10
+ items: BreadcrumbItem[];
11
+ type?: BreadCrumbsType;
12
+ className?: string;
13
+ 'data-testid'?: string;
14
+ ariaLabel?: string;
15
+ ariaLabelEllipsis?: string;
16
+ }
17
+ declare const BreadCrumbs: react.MemoExoticComponent<({ items, type, className, "data-testid": dataTestId, ariaLabel, ariaLabelEllipsis, }: BreadCrumbsProps) => react_jsx_runtime.JSX.Element | null>;
18
+
19
+ export { BreadCrumbs as default };
20
+ export type { BreadCrumbsProps, BreadCrumbsType, BreadcrumbItem };
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{memo as t,useState as r}from"react";import a from"@mui/material/Breadcrumbs";import{styled as i,useTheme as l}from"@mui/material/styles";import n from"@mui/material/useMediaQuery";import{Link as o}from"../Link/index.js";import s from"../../../icons/ArrowLeft02/index.js";import{typography as c}from"../../../themes/typography.js";const f=i(a)((({theme:e})=>({"& .MuiBreadcrumbs-separator":{color:e.palette.semantic.text["text-weak"],marginLeft:e.spacing(1),marginRight:e.spacing(1)}}))),u=i("button")((({theme:e})=>({display:"inline-flex",alignItems:"center",background:"none",border:"none",color:e.palette.semantic.text["text-weak"],cursor:"pointer",padding:e.spacing(.5),borderRadius:e.radius?.["radius-4"]||"4px",transition:"background-color 0.2s ease-in-out",fontFamily:c.b1Weak.fontFamily,fontSize:c.b1Weak.fontSize,lineHeight:c.b1Weak.lineHeight,fontWeight:c.b1Weak.fontWeight,letterSpacing:c.b1Weak.letterSpacing,"&:hover":{backgroundColor:e.palette.semantic.fill["fill-hover"]},"&:focus-visible":{outline:`2px solid ${e.palette.semantic.stroke["stroke-focus"]}`,outlineOffset:"2px"}}))),m=i("span")((({theme:e})=>({fontSize:c.b1Weak.fontSize,lineHeight:c.b1Weak.lineHeight,color:e.palette.semantic.text["text-weak"],fontWeight:c.b1Weak.fontWeight,fontFamily:c.b1Weak.fontFamily,letterSpacing:c.b1Weak.letterSpacing}))),d=t((({items:t,type:a="default",className:i,"data-testid":c,ariaLabel:d,ariaLabelEllipsis:b})=>{const[p,h]=r(!1),g=l(),k=n(g.breakpoints.down("tablet"));if(!t?.length)return null;const y=[];if(("collapsed"===a||"default"===a&&k)&&t.length>2&&!p){const r=t[0],a=t[t.length-1];if(!r||!a)return null;y.push(e(o,{fdKey:`breadcrumb-${r.label}`,href:r.href,iconLeft:e(s,{size:"sm"}),size:"body",tone:"Neutral Weak",underline:!1,weight:"regular",children:r.label},`first-${r.label}-${r.href||""}`)),y.push(e(u,{"aria-label":b??void 0,onClick:()=>h(!0),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),h(!0))},type:"button",children:"..."},"ellipsis")),y.push(e(m,{"aria-current":"page",children:a.label},`current-${a.label}-${a.href||""}`))}else{const r=t.map(((r,a)=>{const i=0===a;return a===t.length-1?e(m,{"aria-current":"page",children:r.label},`current-${r.label}-${r.href||""}`):i?e(o,{fdKey:`breadcrumb-${r.label}`,href:r.href,iconLeft:e(s,{size:"sm"}),size:"body",tone:"Neutral Weak",underline:!1,weight:"regular",children:r.label},`first-${r.label}-${r.href||""}`):e(o,{fdKey:`breadcrumb-${r.label}`,href:r.href,size:"body",tone:"Neutral Weak",underline:!1,weight:"regular",children:r.label},`middle-${r.label}-${r.href||""}`)}));y.push(...r)}return e(f,{"aria-label":d??void 0,className:i,"data-testid":c,separator:"/",children:y})}));d.displayName="BreadCrumbs";export{d as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/atoms/BreadCrumbs/index.tsx"],"sourcesContent":["import { memo, useState } from 'react';\n\nimport BreadcrumbsMUI from '@mui/material/Breadcrumbs';\nimport { styled, useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\nimport Link from '@fd/components/atoms/Link';\nimport ArrowLeft02Icon from '@fd/icons/ArrowLeft02';\nimport { typography } from '@fd/themes/typography';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\nexport type BreadCrumbsType = 'collapsed' | 'default';\n\nexport interface BreadCrumbsProps {\n items: BreadcrumbItem[];\n type?: BreadCrumbsType;\n className?: string;\n 'data-testid'?: string;\n ariaLabel?: string;\n ariaLabelEllipsis?: string;\n}\n\nconst StyledBreadcrumbs = styled(BreadcrumbsMUI)(({ theme }) => ({\n '& .MuiBreadcrumbs-separator': {\n color: theme.palette.semantic.text['text-weak'],\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n}));\n\nconst StyledEllipsisButton = styled('button')(({ theme }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n background: 'none',\n border: 'none',\n color: theme.palette.semantic.text['text-weak'],\n cursor: 'pointer',\n padding: theme.spacing(0.5),\n borderRadius: theme.radius?.['radius-4'] || '4px',\n transition: 'background-color 0.2s ease-in-out',\n fontFamily: typography.b1Weak.fontFamily,\n fontSize: typography.b1Weak.fontSize,\n lineHeight: typography.b1Weak.lineHeight,\n fontWeight: typography.b1Weak.fontWeight,\n letterSpacing: typography.b1Weak.letterSpacing,\n\n '&:hover': {\n backgroundColor: theme.palette.semantic.fill['fill-hover'],\n },\n\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.semantic.stroke['stroke-focus']}`,\n outlineOffset: '2px',\n },\n}));\n\nconst StyledCurrentPage = styled('span')(({ theme }) => ({\n fontSize: typography.b1Weak.fontSize,\n lineHeight: typography.b1Weak.lineHeight,\n color: theme.palette.semantic.text['text-weak'],\n fontWeight: typography.b1Weak.fontWeight,\n fontFamily: typography.b1Weak.fontFamily,\n letterSpacing: typography.b1Weak.letterSpacing,\n}));\n\nconst BreadCrumbs = memo(\n ({\n items,\n type = 'default',\n className,\n 'data-testid': dataTestId,\n ariaLabel,\n ariaLabelEllipsis,\n }: BreadCrumbsProps) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const theme = useTheme();\n const isSmallScreen = useMediaQuery(theme.breakpoints.down('tablet'));\n\n if (!items?.length) {\n return null;\n }\n\n const shouldCollapse = (type === 'collapsed' || (type === 'default' && isSmallScreen)) && items.length > 2 && !isExpanded;\n\n // Build breadcrumb items array\n const breadcrumbItems: React.ReactNode[] = [];\n\n if (shouldCollapse) {\n const firstItem = items[0];\n const lastItem = items[items.length - 1];\n if (!firstItem || !lastItem) {\n return null;\n }\n // First item\n breadcrumbItems.push(\n <Link\n key={`first-${firstItem.label}-${firstItem.href || ''}`}\n fdKey={`breadcrumb-${firstItem.label}`}\n href={firstItem.href}\n iconLeft={<ArrowLeft02Icon size=\"sm\" />}\n size=\"body\"\n tone=\"Neutral Weak\"\n underline={false}\n weight=\"regular\"\n >\n {firstItem.label}\n </Link>\n );\n\n // Ellipsis\n breadcrumbItems.push(\n <StyledEllipsisButton\n key=\"ellipsis\"\n aria-label={ariaLabelEllipsis ?? undefined}\n onClick={() => setIsExpanded(true)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsExpanded(true);\n }\n }}\n type=\"button\"\n >\n ...\n </StyledEllipsisButton>\n );\n\n // Last item\n breadcrumbItems.push(\n <StyledCurrentPage\n key={`current-${lastItem.label}-${lastItem.href || ''}`}\n aria-current=\"page\"\n >\n {lastItem.label}\n </StyledCurrentPage>\n );\n } else {\n // Default/expanded mode: show all items\n const allItems = items.map((item, index) => {\n const isFirst = index === 0;\n const isLast = index === items.length - 1;\n\n if (isLast) {\n return (\n <StyledCurrentPage\n key={`current-${item.label}-${item.href || ''}`}\n aria-current=\"page\"\n >\n {item.label}\n </StyledCurrentPage>\n );\n }\n if (isFirst) {\n return (\n <Link\n key={`first-${item.label}-${item.href || ''}`}\n fdKey={`breadcrumb-${item.label}`}\n href={item.href}\n iconLeft={<ArrowLeft02Icon size=\"sm\" />}\n size=\"body\"\n tone=\"Neutral Weak\"\n underline={false}\n weight=\"regular\"\n >\n {item.label}\n </Link>\n );\n }\n return (\n <Link\n key={`middle-${item.label}-${item.href || ''}`}\n fdKey={`breadcrumb-${item.label}`}\n href={item.href}\n size=\"body\"\n tone=\"Neutral Weak\"\n underline={false}\n weight=\"regular\"\n >\n {item.label}\n </Link>\n );\n });\n breadcrumbItems.push(...allItems);\n }\n\n return (\n <StyledBreadcrumbs\n aria-label={ariaLabel ?? undefined}\n className={className}\n data-testid={dataTestId}\n separator=\"/\"\n >\n {breadcrumbItems}\n </StyledBreadcrumbs>\n );\n },\n);\n\nBreadCrumbs.displayName = 'BreadCrumbs';\n\nexport default BreadCrumbs;"],"names":["StyledBreadcrumbs","styled","BreadcrumbsMUI","theme","color","palette","semantic","text","marginLeft","spacing","marginRight","StyledEllipsisButton","display","alignItems","background","border","cursor","padding","borderRadius","radius","transition","fontFamily","typography","b1Weak","fontSize","lineHeight","fontWeight","letterSpacing","backgroundColor","fill","outline","stroke","outlineOffset","StyledCurrentPage","BreadCrumbs","memo","items","type","className","dataTestId","ariaLabel","ariaLabelEllipsis","isExpanded","setIsExpanded","useState","useTheme","isSmallScreen","useMediaQuery","breakpoints","down","length","breadcrumbItems","firstItem","lastItem","push","_jsx","Link","fdKey","label","href","iconLeft","ArrowLeft02Icon","size","tone","underline","weight","undefined","onClick","onKeyDown","e","key","preventDefault","children","allItems","map","item","index","isFirst","separator","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),i=require("@mui/material/Box"),a=require("@mui/material/FormControl"),t=require("@mui/material/FormGroup"),l=require("@mui/material/FormHelperText"),s=require("@mui/material/FormLabel"),n=require("@mui/material/styles"),d=require("../../atoms/Checkbox/index.cjs.js"),c=require("../../../icons/CancelCircle/index.cjs.js");const o=n.styled(a)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(.5)}))),u=n.styled(t)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(2),paddingTop:e.spacing(2)}))),m=({fdKey:a,options:t,value:n,size:m="medium",label:x,hintText:p,errorText:h,valid:j=!0,required:f=!1,onChange:q})=>{const[b,g]=r.useState([]),y=n??b,C=e=>{const{name:r,checked:i}=e.target,a=i?[...y,r]:y.filter((e=>e!==r));void 0===n&&g(a),q&&q(e,a)},v=!j&&!!h;return e.jsxs(o,{"data-fd":a,children:[e.jsxs(i,{children:[e.jsx(s,{"data-fd":`${a}-label`,required:f,children:x}),p&&e.jsx(l,{"data-fd":`${a}-hint`,children:p})]}),v&&e.jsxs(l,{error:!0,children:[e.jsx(c,{}),h]}),e.jsx(u,{"data-fd":`${a}-checkboxes`,children:t.map((r=>{const i=y.includes(r.name);return e.jsx(d,{checked:i,disabled:r.disabled,fdKey:`${a}-${r.name}`,label:r.label,name:r.name,onChange:C,size:m,valid:j},r.name)}))})]})};exports.CheckboxGroup=m,exports.default=m;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),i=require("@mui/material/Box"),n=require("@mui/material/FormControl"),r=require("@mui/material/FormGroup"),o=require("@mui/material/FormHelperText"),s=require("@mui/material/FormLabel"),a=require("@mui/material/styles"),l=require("../../atoms/Checkbox/index.cjs.js"),c=require("../../../icons/CancelCircle/index.cjs.js");const d=a.styled(n)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(.5)}))),p=a.styled(r)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(2),paddingTop:e.spacing(2),overflow:"visible"}))),u=a.styled(i)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(2),paddingLeft:e.spacing(5.75),paddingTop:e.spacing(2),position:"relative",overflow:"visible","&::before":{content:'""',position:"absolute",left:e.spacing(1.75),top:e.spacing(2),bottom:0,width:"4px",backgroundColor:e.palette.semantic.stroke["stroke-weak"],zIndex:0}}))),m=({fdKey:n,options:r,value:a,size:m="medium",label:f,hintText:h,errorText:x,valid:g=!0,required:b=!1,onChange:j})=>{const[v,k]=t.useState([]),q=a??v,y=e=>{const t=[];return e.forEach((e=>{t.push(e.name),e.options&&t.push(...y(e.options))})),t},C=(e,t)=>{for(const i of e){if(i.name===t)return i;if(i.options){const e=C(i.options,t);if(e)return e}}},w=e=>e.options?y(e.options).filter((t=>{const i=C(e.options||[],t);return!i?.disabled})):[],T=e=>{const t=w(e);return 0!==t.length&&t.every((e=>q.includes(e)))},$=e=>{const t=e.options&&e.options.length>0,i=q.includes(e.name);if(!t)return{checked:i,indeterminate:!1};const n=T(e),r=(e=>{const t=w(e);if(0===t.length)return!1;const i=t.filter((e=>q.includes(e))).length;return i>0&&i<t.length})(e);return{checked:n,indeterminate:r&&!n}},F=e=>{const{name:t}=e.target,i=C(r,t);if(!i)return;let n;if(i.options&&i.options.length>0){if(T(i)){const e=(o=i).options?y(o.options):[];n=q.filter((t=>!e.includes(t)))}else{const e=w(i);n=[...new Set([...q,...e])]}n=n.filter((e=>e!==i.name))}else{const{checked:i}=e.target;n=i?[...q,t]:q.filter((e=>e!==t))}var o;void 0===a&&k(n),j&&j(e,n)},z=t=>t.map((t=>{const{checked:r,indeterminate:o}=$(t),s=t.options&&t.options.length>0;return e.jsxs(i,{children:[e.jsx(l,{checked:r,disabled:t.disabled,fdKey:`${n}-${t.name}`,indeterminate:o,label:t.label,name:t.name,onChange:F,size:m,valid:g}),s&&e.jsx(u,{children:z(t.options??[])})]},t.name)})),D=!g&&!!x;return e.jsxs(d,{"data-fd":n,children:[e.jsxs(i,{children:[e.jsx(s,{"data-fd":`${n}-label`,required:b,children:f}),h&&e.jsx(o,{"data-fd":`${n}-hint`,children:h})]}),D&&e.jsxs(o,{error:!0,children:[e.jsx(c,{}),x]}),e.jsx(p,{"data-fd":`${n}-checkboxes`,children:z(r)})]})};exports.CheckboxGroup=m,exports.default=m;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../../src/components/molecules/CheckboxGroup/index.tsx"],"sourcesContent":["import { type ChangeEvent, useState } from 'react';\n\nimport Box from '@mui/material/Box';\nimport MuiFormControl from '@mui/material/FormControl';\nimport MuiFormGroup from '@mui/material/FormGroup';\nimport MuiFormHelperText from '@mui/material/FormHelperText';\nimport MuiFormLabel from '@mui/material/FormLabel';\nimport { styled } from '@mui/material/styles';\n\nimport Checkbox from '@fd/components/atoms/Checkbox';\nimport CancelCircleIcon from '@fd/icons/CancelCircle';\n\nexport interface CheckboxOption {\n name: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface CheckboxGroupProps {\n fdKey: string;\n options: CheckboxOption[];\n label: string;\n /**\n * The selected values. When provided, the component is controlled.\n * When omitted, the component is uncontrolled and manages its own state.\n */\n value?: string[];\n size?: 'medium' | 'small';\n hintText?: string;\n errorText?: string;\n valid?: boolean;\n required?: boolean;\n onChange?: (event: ChangeEvent<HTMLInputElement>, checkedOptions: string[]) => void;\n}\n\nconst StyledFormControl = styled(MuiFormControl)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.5),\n}));\n\nconst StyledFormGroup = styled(MuiFormGroup)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n paddingTop: theme.spacing(2),\n}));\n\nexport const CheckboxGroup = ({\n fdKey,\n options,\n value,\n size = 'medium',\n label,\n hintText,\n errorText,\n valid = true,\n required = false,\n onChange,\n}: CheckboxGroupProps): JSX.Element => {\n const [internalValue, setInternalValue] = useState<string[]>([]);\n\n const resolvedValue = value ?? internalValue;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>): void => {\n const { name: optionName, checked } = event.target;\n\n const newValue = checked\n ? [...resolvedValue, optionName]\n : resolvedValue.filter((name) => name !== optionName);\n\n // If value is undefined, we're in uncontrolled mode - update internal state\n if (value === undefined) {\n setInternalValue(newValue);\n }\n\n if (onChange) {\n onChange(event, newValue);\n }\n };\n\n const isError = !valid && !!errorText;\n\n return (\n <StyledFormControl data-fd={fdKey}>\n <Box>\n <MuiFormLabel data-fd={`${fdKey}-label`} required={required}>\n {label}\n </MuiFormLabel>\n\n {hintText && <MuiFormHelperText data-fd={`${fdKey}-hint`}>{hintText}</MuiFormHelperText>}\n </Box>\n\n {isError && (\n <MuiFormHelperText error>\n <CancelCircleIcon />\n\n {errorText}\n </MuiFormHelperText>\n )}\n\n <StyledFormGroup data-fd={`${fdKey}-checkboxes`}>\n {options.map((option) => {\n const isChecked = resolvedValue.includes(option.name);\n\n return (\n <Checkbox\n key={option.name}\n checked={isChecked}\n disabled={option.disabled}\n fdKey={`${fdKey}-${option.name}`}\n label={option.label}\n name={option.name}\n onChange={handleChange}\n size={size}\n valid={valid}\n />\n );\n })}\n </StyledFormGroup>\n </StyledFormControl>\n );\n};\n\nexport default CheckboxGroup;\n"],"names":["StyledFormControl","styled","MuiFormControl","theme","display","flexDirection","gap","spacing","StyledFormGroup","MuiFormGroup","paddingTop","CheckboxGroup","fdKey","options","value","size","label","hintText","errorText","valid","required","onChange","internalValue","setInternalValue","useState","resolvedValue","handleChange","event","name","optionName","checked","target","newValue","filter","undefined","isError","_jsxs","children","Box","_jsx","MuiFormLabel","MuiFormHelperText","error","CancelCircleIcon","map","option","isChecked","includes","Checkbox","disabled"],"mappings":"2bAmCA,MAAMA,EAAoBC,EAAAA,OAAOC,EAAPD,EAAuB,EAAGE,YAAO,CACzDC,QAAS,OACTC,cAAe,SACfC,IAAKH,EAAMI,QAAQ,QAGfC,EAAkBP,EAAAA,OAAOQ,EAAPR,EAAqB,EAAGE,YAAO,CACrDC,QAAS,OACTC,cAAe,SACfC,IAAKH,EAAMI,QAAQ,GACnBG,WAAYP,EAAMI,QAAQ,OAGfI,EAAgB,EAC3BC,QACAC,UACAC,QACAC,OAAO,SACPC,QACAC,WACAC,YACAC,SAAQ,EACRC,YAAW,EACXC,eAEA,MAAOC,EAAeC,GAAoBC,EAAAA,SAAmB,IAEvDC,EAAgBX,GAASQ,EAEzBI,EAAgBC,IACpB,MAAQC,KAAMC,EAAUC,QAAEA,GAAYH,EAAMI,OAEtCC,EAAWF,EACb,IAAIL,EAAeI,GACnBJ,EAAcQ,QAAQL,GAASA,IAASC,SAG9BK,IAAVpB,GACFS,EAAiBS,GAGfX,GACFA,EAASM,EAAOK,IAIdG,GAAWhB,KAAWD,EAE5B,OACEkB,EAAAA,KAACpC,EAAiB,CAAA,UAAUY,EAAKyB,SAAA,CAC/BD,OAACE,EAAG,CAAAD,SAAA,CACFE,EAAAA,IAACC,EAAY,CAAA,UAAU,GAAG5B,UAAeQ,SAAUA,EAAQiB,SACxDrB,IAGFC,GAAYsB,EAAAA,IAACE,EAAiB,CAAA,UAAU,GAAG7B,SAAYyB,SAAGpB,OAG5DkB,GACCC,EAAAA,KAACK,EAAiB,CAACC,OAAK,EAAAL,SAAA,CACtBE,EAAAA,IAACI,EAAgB,CAAA,GAEhBzB,KAILqB,EAAAA,IAAC/B,EAAe,CAAA,UAAU,GAAGI,eAAkByB,SAC5CxB,EAAQ+B,KAAKC,IACZ,MAAMC,EAAYrB,EAAcsB,SAASF,EAAOjB,MAEhD,OACEW,EAAAA,IAACS,EAAQ,CAEPlB,QAASgB,EACTG,SAAUJ,EAAOI,SACjBrC,MAAO,GAAGA,KAASiC,EAAOjB,OAC1BZ,MAAO6B,EAAO7B,MACdY,KAAMiB,EAAOjB,KACbP,SAAUK,EACVX,KAAMA,EACNI,MAAOA,GARF0B,EAAOjB"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/components/molecules/CheckboxGroup/index.tsx"],"sourcesContent":["import { type ChangeEvent, useState } from 'react';\n\nimport Box from '@mui/material/Box';\nimport MuiFormControl from '@mui/material/FormControl';\nimport MuiFormGroup from '@mui/material/FormGroup';\nimport MuiFormHelperText from '@mui/material/FormHelperText';\nimport MuiFormLabel from '@mui/material/FormLabel';\nimport { styled } from '@mui/material/styles';\n\nimport Checkbox from '@fd/components/atoms/Checkbox';\nimport CancelCircleIcon from '@fd/icons/CancelCircle';\n\n/**\n * Represents a checkbox option in the CheckboxGroup.\n * Supports hierarchical nesting through the `options` property.\n */\nexport interface CheckboxOption {\n /** Unique identifier for the option. */\n name: string;\n /** Display label for the checkbox. */\n label: string;\n /** Whether the checkbox is disabled. */\n disabled?: boolean;\n /** Nested child options, creating a hierarchical structure. */\n options?: CheckboxOption[];\n}\n\n/**\n * Props for the CheckboxGroup component.\n * Supports hierarchical checkbox groups with parent-child relationships.\n * Parent checkboxes automatically reflect the selection state of their children,\n * showing indeterminate state when some (but not all) children are selected.\n */\ninterface CheckboxGroupProps {\n /** Unique identifier forwarded to the root element as `data-fd` for testing and identification. */\n fdKey: string;\n /** Array of checkbox options. Supports nested options for hierarchical structures. */\n options: CheckboxOption[];\n /** Label displayed above the checkbox group. */\n label: string;\n /**\n * The selected values. When provided, the component is controlled.\n * When omitted, the component is uncontrolled and manages its own state.\n */\n value?: string[];\n /** Size of the checkboxes. */\n size?: 'medium' | 'small';\n /** Helper text displayed below the label. */\n hintText?: string;\n /** Error message displayed when validation fails. */\n errorText?: string;\n /** Whether the input is valid. When false and errorText is provided, error styling is applied. */\n valid?: boolean;\n /** Whether the field is required. Adds a required indicator to the label. */\n required?: boolean;\n /** Called when the selection changes. Receives the change event and the updated array of selected option names. */\n onChange?: (event: ChangeEvent<HTMLInputElement>, checkedOptions: string[]) => void;\n}\n\nconst StyledFormControl = styled(MuiFormControl)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.5),\n}));\n\nconst StyledFormGroup = styled(MuiFormGroup)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n paddingTop: theme.spacing(2),\n overflow: 'visible',\n}));\n\nconst StyledChildrenContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n paddingLeft: theme.spacing(5.75),\n paddingTop: theme.spacing(2),\n position: 'relative',\n overflow: 'visible',\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: theme.spacing(1.75),\n top: theme.spacing(2),\n bottom: 0,\n width: '4px',\n backgroundColor: theme.palette.semantic.stroke['stroke-weak'],\n zIndex: 0,\n },\n}));\n\n/**\n * A hierarchical checkbox group component that supports nested options and parent-child relationships.\n * When a parent option is selected, all enabled child options are automatically selected.\n * Parent checkboxes show an indeterminate state when some (but not all) children are selected.\n * Supports both controlled and uncontrolled modes.\n *\n * @param props - The component props\n * @returns The rendered CheckboxGroup component\n */\nexport const CheckboxGroup = ({\n fdKey,\n options,\n value,\n size = 'medium',\n label,\n hintText,\n errorText,\n valid = true,\n required = false,\n onChange,\n}: CheckboxGroupProps): JSX.Element => {\n const [internalValue, setInternalValue] = useState<string[]>([]);\n\n const resolvedValue = value ?? internalValue;\n\n // Flatten all option names (including children) for easy lookup\n const getAllOptionNames = (opts: CheckboxOption[]): string[] => {\n const names: string[] = [];\n opts.forEach((opt) => {\n names.push(opt.name);\n if (opt.options) {\n names.push(...getAllOptionNames(opt.options));\n }\n });\n return names;\n };\n\n // Get all child option names for a given option (including disabled)\n const getChildOptionNames = (option: CheckboxOption): string[] => {\n if (!option.options) return [];\n return getAllOptionNames(option.options);\n };\n\n // Helper to find an option by name in the hierarchy\n const findOption = (opts: CheckboxOption[], targetName: string): CheckboxOption | undefined => {\n for (const opt of opts) {\n if (opt.name === targetName) return opt;\n if (opt.options) {\n const found = findOption(opt.options, targetName);\n if (found) return found;\n }\n }\n return undefined;\n };\n\n // Get all enabled child names for a given option\n const getEnabledChildNames = (option: CheckboxOption): string[] => {\n if (!option.options) return [];\n return getAllOptionNames(option.options).filter((childName) => {\n const childOption = findOption(option.options || [], childName);\n return !childOption?.disabled;\n });\n };\n\n // Check if all enabled children of an option are selected\n const areAllChildrenSelected = (option: CheckboxOption): boolean => {\n const enabledChildNames = getEnabledChildNames(option);\n if (enabledChildNames.length === 0) return false;\n return enabledChildNames.every((name) => resolvedValue.includes(name));\n };\n\n // Check if some (but not all) enabled children of an option are selected\n const areSomeChildrenSelected = (option: CheckboxOption): boolean => {\n const enabledChildNames = getEnabledChildNames(option);\n if (enabledChildNames.length === 0) return false;\n const selectedCount = enabledChildNames.filter((name) => resolvedValue.includes(name)).length;\n return selectedCount > 0 && selectedCount < enabledChildNames.length;\n };\n\n // Calculate checkbox state for an option\n const getCheckboxState = (option: CheckboxOption): { checked: boolean; indeterminate: boolean } => {\n const hasChildren = option.options && option.options.length > 0;\n const isDirectlySelected = resolvedValue.includes(option.name);\n\n if (!hasChildren) {\n return { checked: isDirectlySelected, indeterminate: false };\n }\n\n const allSelected = areAllChildrenSelected(option);\n const someSelected = areSomeChildrenSelected(option);\n\n return {\n checked: allSelected,\n indeterminate: someSelected && !allSelected,\n };\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>): void => {\n const { name: optionName } = event.target;\n const clickedOption = findOption(options, optionName);\n if (!clickedOption) return;\n\n let newValue: string[];\n\n // If option has children, toggle all children based on current state\n if (clickedOption.options && clickedOption.options.length > 0) {\n const allChildrenSelected = areAllChildrenSelected(clickedOption);\n\n if (allChildrenSelected) {\n // All children are selected - deselect all children\n const childNames = getChildOptionNames(clickedOption);\n newValue = resolvedValue.filter((name) => !childNames.includes(name));\n } else {\n // Not all children are selected - select all enabled children\n const enabledChildNames = getEnabledChildNames(clickedOption);\n // Add all enabled children that aren't already selected\n newValue = [...new Set([...resolvedValue, ...enabledChildNames])];\n }\n // Ensure parent names are not persisted in the value for hierarchical options\n newValue = newValue.filter((name) => name !== clickedOption.name);\n } else {\n // Regular checkbox toggle - use event.checked for leaf nodes\n const { checked } = event.target;\n newValue = checked\n ? [...resolvedValue, optionName]\n : resolvedValue.filter((name) => name !== optionName);\n }\n\n // If value is undefined, we're in uncontrolled mode - update internal state\n if (value === undefined) {\n setInternalValue(newValue);\n }\n\n if (onChange) {\n onChange(event, newValue);\n }\n };\n\n // Render checkbox options recursively\n const renderOptions = (opts: CheckboxOption[]): JSX.Element[] => {\n return opts.map((option) => {\n const { checked, indeterminate } = getCheckboxState(option);\n const hasOptions = option.options && option.options.length > 0;\n\n return (\n <Box key={option.name}>\n <Checkbox\n checked={checked}\n disabled={option.disabled}\n fdKey={`${fdKey}-${option.name}`}\n indeterminate={indeterminate}\n label={option.label}\n name={option.name}\n onChange={handleChange}\n size={size}\n valid={valid}\n />\n {hasOptions && (\n <StyledChildrenContainer>{renderOptions(option.options ?? [])}</StyledChildrenContainer>\n )}\n </Box>\n );\n });\n };\n\n const isError = !valid && !!errorText;\n\n return (\n <StyledFormControl data-fd={fdKey}>\n <Box>\n <MuiFormLabel data-fd={`${fdKey}-label`} required={required}>\n {label}\n </MuiFormLabel>\n\n {hintText && <MuiFormHelperText data-fd={`${fdKey}-hint`}>{hintText}</MuiFormHelperText>}\n </Box>\n\n {isError && (\n <MuiFormHelperText error>\n <CancelCircleIcon />\n\n {errorText}\n </MuiFormHelperText>\n )}\n\n <StyledFormGroup data-fd={`${fdKey}-checkboxes`}>{renderOptions(options)}</StyledFormGroup>\n </StyledFormControl>\n );\n};\n\nexport default CheckboxGroup;\n"],"names":["StyledFormControl","styled","MuiFormControl","theme","display","flexDirection","gap","spacing","StyledFormGroup","MuiFormGroup","paddingTop","overflow","StyledChildrenContainer","Box","paddingLeft","position","content","left","top","bottom","width","backgroundColor","palette","semantic","stroke","zIndex","CheckboxGroup","fdKey","options","value","size","label","hintText","errorText","valid","required","onChange","internalValue","setInternalValue","useState","resolvedValue","getAllOptionNames","opts","names","forEach","opt","push","name","findOption","targetName","found","getEnabledChildNames","option","filter","childName","childOption","disabled","areAllChildrenSelected","enabledChildNames","length","every","includes","getCheckboxState","hasChildren","isDirectlySelected","checked","indeterminate","allSelected","someSelected","selectedCount","areSomeChildrenSelected","handleChange","event","optionName","target","clickedOption","newValue","childNames","Set","undefined","renderOptions","map","hasOptions","_jsxs","children","_jsx","Checkbox","isError","MuiFormLabel","MuiFormHelperText","error","CancelCircleIcon"],"mappings":"2bA2DA,MAAMA,EAAoBC,EAAAA,OAAOC,EAAPD,EAAuB,EAAGE,YAAO,CACzDC,QAAS,OACTC,cAAe,SACfC,IAAKH,EAAMI,QAAQ,QAGfC,EAAkBP,EAAAA,OAAOQ,EAAPR,EAAqB,EAAGE,YAAO,CACrDC,QAAS,OACTC,cAAe,SACfC,IAAKH,EAAMI,QAAQ,GACnBG,WAAYP,EAAMI,QAAQ,GAC1BI,SAAU,cAGNC,EAA0BX,EAAAA,OAAOY,EAAPZ,EAAY,EAAGE,YAAO,CACpDC,QAAS,OACTC,cAAe,SACfC,IAAKH,EAAMI,QAAQ,GACnBO,YAAaX,EAAMI,QAAQ,MAC3BG,WAAYP,EAAMI,QAAQ,GAC1BQ,SAAU,WACVJ,SAAU,UACV,YAAa,CACXK,QAAS,KACTD,SAAU,WACVE,KAAMd,EAAMI,QAAQ,MACpBW,IAAKf,EAAMI,QAAQ,GACnBY,OAAQ,EACRC,MAAO,MACPC,gBAAiBlB,EAAMmB,QAAQC,SAASC,OAAO,eAC/CC,OAAQ,OAaCC,EAAgB,EAC3BC,QACAC,UACAC,QACAC,OAAO,SACPC,QACAC,WACAC,YACAC,SAAQ,EACRC,YAAW,EACXC,eAEA,MAAOC,EAAeC,GAAoBC,EAAAA,SAAmB,IAEvDC,EAAgBX,GAASQ,EAGzBI,EAAqBC,IACzB,MAAMC,EAAkB,GAOxB,OANAD,EAAKE,SAASC,IACZF,EAAMG,KAAKD,EAAIE,MACXF,EAAIjB,SACNe,EAAMG,QAAQL,EAAkBI,EAAIjB,aAGjCe,GAUHK,EAAa,CAACN,EAAwBO,KAC1C,IAAK,MAAMJ,KAAOH,EAAM,CACtB,GAAIG,EAAIE,OAASE,EAAY,OAAOJ,EACpC,GAAIA,EAAIjB,QAAS,CACf,MAAMsB,EAAQF,EAAWH,EAAIjB,QAASqB,GACtC,GAAIC,EAAO,OAAOA,CACpB,CACF,GAKIC,EAAwBC,GACvBA,EAAOxB,QACLa,EAAkBW,EAAOxB,SAASyB,QAAQC,IAC/C,MAAMC,EAAcP,EAAWI,EAAOxB,SAAW,GAAI0B,GACrD,OAAQC,GAAaC,YAHK,GAQxBC,EAA0BL,IAC9B,MAAMM,EAAoBP,EAAqBC,GAC/C,OAAiC,IAA7BM,EAAkBC,QACfD,EAAkBE,OAAOb,GAASP,EAAcqB,SAASd,MAY5De,EAAoBV,IACxB,MAAMW,EAAcX,EAAOxB,SAAWwB,EAAOxB,QAAQ+B,OAAS,EACxDK,EAAqBxB,EAAcqB,SAAST,EAAOL,MAEzD,IAAKgB,EACH,MAAO,CAAEE,QAASD,EAAoBE,eAAe,GAGvD,MAAMC,EAAcV,EAAuBL,GACrCgB,EAjBwB,CAAChB,IAC/B,MAAMM,EAAoBP,EAAqBC,GAC/C,GAAiC,IAA7BM,EAAkBC,OAAc,OAAO,EAC3C,MAAMU,EAAgBX,EAAkBL,QAAQN,GAASP,EAAcqB,SAASd,KAAOY,OACvF,OAAOU,EAAgB,GAAKA,EAAgBX,EAAkBC,QAazCW,CAAwBlB,GAE7C,MAAO,CACLa,QAASE,EACTD,cAAeE,IAAiBD,IAI9BI,EAAgBC,IACpB,MAAQzB,KAAM0B,GAAeD,EAAME,OAC7BC,EAAgB3B,EAAWpB,EAAS6C,GAC1C,IAAKE,EAAe,OAEpB,IAAIC,EAGJ,GAAID,EAAc/C,SAAW+C,EAAc/C,QAAQ+B,OAAS,EAAG,CAG7D,GAF4BF,EAAuBkB,GAE1B,CAEvB,MAAME,GAxEiBzB,EAwEgBuB,GAvE/B/C,QACLa,EAAkBW,EAAOxB,SADJ,GAwExBgD,EAAWpC,EAAca,QAAQN,IAAU8B,EAAWhB,SAASd,IACjE,KAAO,CAEL,MAAMW,EAAoBP,EAAqBwB,GAE/CC,EAAW,IAAI,IAAIE,IAAI,IAAItC,KAAkBkB,IAC/C,CAEAkB,EAAWA,EAASvB,QAAQN,GAASA,IAAS4B,EAAc5B,MAC9D,KAAO,CAEL,MAAMkB,QAAEA,GAAYO,EAAME,OAC1BE,EAAWX,EACP,IAAIzB,EAAeiC,GACnBjC,EAAca,QAAQN,GAASA,IAAS0B,GAC9C,CAxF0B,IAACrB,OA2Fb2B,IAAVlD,GACFS,EAAiBsC,GAGfxC,GACFA,EAASoC,EAAOI,IAKdI,EAAiBtC,GACdA,EAAKuC,KAAK7B,IACf,MAAMa,QAAEA,EAAOC,cAAEA,GAAkBJ,EAAiBV,GAC9C8B,EAAa9B,EAAOxB,SAAWwB,EAAOxB,QAAQ+B,OAAS,EAE7D,OACEwB,OAACtE,EAAG,CAAAuE,SAAA,CACFC,EAAAA,IAACC,EAAQ,CACPrB,QAASA,EACTT,SAAUJ,EAAOI,SACjB7B,MAAO,GAAGA,KAASyB,EAAOL,OAC1BmB,cAAeA,EACfnC,MAAOqB,EAAOrB,MACdgB,KAAMK,EAAOL,KACbX,SAAUmC,EACVzC,KAAMA,EACNI,MAAOA,IAERgD,GACCG,EAAAA,IAACzE,YAAyBoE,EAAc5B,EAAOxB,SAAW,QAbpDwB,EAAOL,SAoBjBwC,GAAWrD,KAAWD,EAE5B,OACEkD,EAAAA,KAACnF,EAAiB,CAAA,UAAU2B,EAAKyD,SAAA,CAC/BD,EAAAA,KAACtE,EAAG,CAAAuE,SAAA,CACFC,EAAAA,IAACG,EAAY,CAAA,UAAU,GAAG7D,UAAeQ,SAAUA,EAAQiD,SACxDrD,IAGFC,GAAYqD,EAAAA,IAACI,EAAiB,CAAA,UAAU,GAAG9D,SAAYyD,SAAGpD,OAG5DuD,GACCJ,EAAAA,KAACM,EAAiB,CAACC,OAAK,EAAAN,SAAA,CACtBC,EAAAA,IAACM,EAAgB,CAAA,GAEhB1D,KAILoD,EAAAA,IAAC7E,EAAe,CAAA,UAAU,GAAGmB,eAAkByD,SAAGJ,EAAcpD"}
@@ -1,26 +1,59 @@
1
1
  import { ChangeEvent } from 'react';
2
2
 
3
+ /**
4
+ * Represents a checkbox option in the CheckboxGroup.
5
+ * Supports hierarchical nesting through the `options` property.
6
+ */
3
7
  interface CheckboxOption {
8
+ /** Unique identifier for the option. */
4
9
  name: string;
10
+ /** Display label for the checkbox. */
5
11
  label: string;
12
+ /** Whether the checkbox is disabled. */
6
13
  disabled?: boolean;
14
+ /** Nested child options, creating a hierarchical structure. */
15
+ options?: CheckboxOption[];
7
16
  }
17
+ /**
18
+ * Props for the CheckboxGroup component.
19
+ * Supports hierarchical checkbox groups with parent-child relationships.
20
+ * Parent checkboxes automatically reflect the selection state of their children,
21
+ * showing indeterminate state when some (but not all) children are selected.
22
+ */
8
23
  interface CheckboxGroupProps {
24
+ /** Unique identifier forwarded to the root element as `data-fd` for testing and identification. */
9
25
  fdKey: string;
26
+ /** Array of checkbox options. Supports nested options for hierarchical structures. */
10
27
  options: CheckboxOption[];
28
+ /** Label displayed above the checkbox group. */
11
29
  label: string;
12
30
  /**
13
31
  * The selected values. When provided, the component is controlled.
14
32
  * When omitted, the component is uncontrolled and manages its own state.
15
33
  */
16
34
  value?: string[];
35
+ /** Size of the checkboxes. */
17
36
  size?: 'medium' | 'small';
37
+ /** Helper text displayed below the label. */
18
38
  hintText?: string;
39
+ /** Error message displayed when validation fails. */
19
40
  errorText?: string;
41
+ /** Whether the input is valid. When false and errorText is provided, error styling is applied. */
20
42
  valid?: boolean;
43
+ /** Whether the field is required. Adds a required indicator to the label. */
21
44
  required?: boolean;
45
+ /** Called when the selection changes. Receives the change event and the updated array of selected option names. */
22
46
  onChange?: (event: ChangeEvent<HTMLInputElement>, checkedOptions: string[]) => void;
23
47
  }
48
+ /**
49
+ * A hierarchical checkbox group component that supports nested options and parent-child relationships.
50
+ * When a parent option is selected, all enabled child options are automatically selected.
51
+ * Parent checkboxes show an indeterminate state when some (but not all) children are selected.
52
+ * Supports both controlled and uncontrolled modes.
53
+ *
54
+ * @param props - The component props
55
+ * @returns The rendered CheckboxGroup component
56
+ */
24
57
  declare const CheckboxGroup: ({ fdKey, options, value, size, label, hintText, errorText, valid, required, onChange, }: CheckboxGroupProps) => JSX.Element;
25
58
 
26
59
  export { CheckboxGroup, CheckboxGroup as default };
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useState as i}from"react";import a from"@mui/material/Box";import m from"@mui/material/FormControl";import o from"@mui/material/FormGroup";import t from"@mui/material/FormHelperText";import l from"@mui/material/FormLabel";import{styled as n}from"@mui/material/styles";import d from"../../atoms/Checkbox/index.js";import c from"../../../icons/CancelCircle/index.js";const p=n(m)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(.5)}))),s=n(o)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(2),paddingTop:e.spacing(2)}))),f=({fdKey:m,options:o,value:n,size:f="medium",label:u,hintText:h,errorText:x,valid:b=!0,required:g=!1,onChange:C})=>{const[y,$]=i([]),k=n??y,v=e=>{const{name:r,checked:i}=e.target,a=i?[...k,r]:k.filter((e=>e!==r));void 0===n&&$(a),C&&C(e,a)},F=!b&&!!x;return e(p,{"data-fd":m,children:[e(a,{children:[r(l,{"data-fd":`${m}-label`,required:g,children:u}),h&&r(t,{"data-fd":`${m}-hint`,children:h})]}),F&&e(t,{error:!0,children:[r(c,{}),x]}),r(s,{"data-fd":`${m}-checkboxes`,children:o.map((e=>{const i=k.includes(e.name);return r(d,{checked:i,disabled:e.disabled,fdKey:`${m}-${e.name}`,label:e.label,name:e.name,onChange:v,size:f,valid:b},e.name)}))})]})};export{f as CheckboxGroup,f as default};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as i}from"react";import n from"@mui/material/Box";import o from"@mui/material/FormControl";import r from"@mui/material/FormGroup";import a from"@mui/material/FormHelperText";import l from"@mui/material/FormLabel";import{styled as s}from"@mui/material/styles";import c from"../../atoms/Checkbox/index.js";import m from"../../../icons/CancelCircle/index.js";const d=s(o)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(.5)}))),p=s(r)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(2),paddingTop:e.spacing(2),overflow:"visible"}))),f=s(n)((({theme:e})=>({display:"flex",flexDirection:"column",gap:e.spacing(2),paddingLeft:e.spacing(5.75),paddingTop:e.spacing(2),position:"relative",overflow:"visible","&::before":{content:'""',position:"absolute",left:e.spacing(1.75),top:e.spacing(2),bottom:0,width:"4px",backgroundColor:e.palette.semantic.stroke["stroke-weak"],zIndex:0}}))),u=({fdKey:o,options:r,value:s,size:u="medium",label:h,hintText:g,errorText:x,valid:b=!0,required:k=!1,onChange:v})=>{const[y,C]=i([]),w=s??y,T=e=>{const t=[];return e.forEach((e=>{t.push(e.name),e.options&&t.push(...T(e.options))})),t},$=(e,t)=>{for(const i of e){if(i.name===t)return i;if(i.options){const e=$(i.options,t);if(e)return e}}},F=e=>e.options?T(e.options).filter((t=>{const i=$(e.options||[],t);return!i?.disabled})):[],j=e=>{const t=F(e);return 0!==t.length&&t.every((e=>w.includes(e)))},z=e=>{const t=e.options&&e.options.length>0,i=w.includes(e.name);if(!t)return{checked:i,indeterminate:!1};const n=j(e),o=(e=>{const t=F(e);if(0===t.length)return!1;const i=t.filter((e=>w.includes(e))).length;return i>0&&i<t.length})(e);return{checked:n,indeterminate:o&&!n}},D=e=>{const{name:t}=e.target,i=$(r,t);if(!i)return;let n;if(i.options&&i.options.length>0){if(j(i)){const e=(o=i).options?T(o.options):[];n=w.filter((t=>!e.includes(t)))}else{const e=F(i);n=[...new Set([...w,...e])]}n=n.filter((e=>e!==i.name))}else{const{checked:i}=e.target;n=i?[...w,t]:w.filter((e=>e!==t))}var o;void 0===s&&C(n),v&&v(e,n)},q=i=>i.map((i=>{const{checked:r,indeterminate:a}=z(i),l=i.options&&i.options.length>0;return e(n,{children:[t(c,{checked:r,disabled:i.disabled,fdKey:`${o}-${i.name}`,indeterminate:a,label:i.label,name:i.name,onChange:D,size:u,valid:b}),l&&t(f,{children:q(i.options??[])})]},i.name)})),K=!b&&!!x;return e(d,{"data-fd":o,children:[e(n,{children:[t(l,{"data-fd":`${o}-label`,required:k,children:h}),g&&t(a,{"data-fd":`${o}-hint`,children:g})]}),K&&e(a,{error:!0,children:[t(m,{}),x]}),t(p,{"data-fd":`${o}-checkboxes`,children:q(r)})]})};export{u as CheckboxGroup,u as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/molecules/CheckboxGroup/index.tsx"],"sourcesContent":["import { type ChangeEvent, useState } from 'react';\n\nimport Box from '@mui/material/Box';\nimport MuiFormControl from '@mui/material/FormControl';\nimport MuiFormGroup from '@mui/material/FormGroup';\nimport MuiFormHelperText from '@mui/material/FormHelperText';\nimport MuiFormLabel from '@mui/material/FormLabel';\nimport { styled } from '@mui/material/styles';\n\nimport Checkbox from '@fd/components/atoms/Checkbox';\nimport CancelCircleIcon from '@fd/icons/CancelCircle';\n\nexport interface CheckboxOption {\n name: string;\n label: string;\n disabled?: boolean;\n}\n\ninterface CheckboxGroupProps {\n fdKey: string;\n options: CheckboxOption[];\n label: string;\n /**\n * The selected values. When provided, the component is controlled.\n * When omitted, the component is uncontrolled and manages its own state.\n */\n value?: string[];\n size?: 'medium' | 'small';\n hintText?: string;\n errorText?: string;\n valid?: boolean;\n required?: boolean;\n onChange?: (event: ChangeEvent<HTMLInputElement>, checkedOptions: string[]) => void;\n}\n\nconst StyledFormControl = styled(MuiFormControl)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.5),\n}));\n\nconst StyledFormGroup = styled(MuiFormGroup)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n paddingTop: theme.spacing(2),\n}));\n\nexport const CheckboxGroup = ({\n fdKey,\n options,\n value,\n size = 'medium',\n label,\n hintText,\n errorText,\n valid = true,\n required = false,\n onChange,\n}: CheckboxGroupProps): JSX.Element => {\n const [internalValue, setInternalValue] = useState<string[]>([]);\n\n const resolvedValue = value ?? internalValue;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>): void => {\n const { name: optionName, checked } = event.target;\n\n const newValue = checked\n ? [...resolvedValue, optionName]\n : resolvedValue.filter((name) => name !== optionName);\n\n // If value is undefined, we're in uncontrolled mode - update internal state\n if (value === undefined) {\n setInternalValue(newValue);\n }\n\n if (onChange) {\n onChange(event, newValue);\n }\n };\n\n const isError = !valid && !!errorText;\n\n return (\n <StyledFormControl data-fd={fdKey}>\n <Box>\n <MuiFormLabel data-fd={`${fdKey}-label`} required={required}>\n {label}\n </MuiFormLabel>\n\n {hintText && <MuiFormHelperText data-fd={`${fdKey}-hint`}>{hintText}</MuiFormHelperText>}\n </Box>\n\n {isError && (\n <MuiFormHelperText error>\n <CancelCircleIcon />\n\n {errorText}\n </MuiFormHelperText>\n )}\n\n <StyledFormGroup data-fd={`${fdKey}-checkboxes`}>\n {options.map((option) => {\n const isChecked = resolvedValue.includes(option.name);\n\n return (\n <Checkbox\n key={option.name}\n checked={isChecked}\n disabled={option.disabled}\n fdKey={`${fdKey}-${option.name}`}\n label={option.label}\n name={option.name}\n onChange={handleChange}\n size={size}\n valid={valid}\n />\n );\n })}\n </StyledFormGroup>\n </StyledFormControl>\n );\n};\n\nexport default CheckboxGroup;\n"],"names":["StyledFormControl","styled","MuiFormControl","theme","display","flexDirection","gap","spacing","StyledFormGroup","MuiFormGroup","paddingTop","CheckboxGroup","fdKey","options","value","size","label","hintText","errorText","valid","required","onChange","internalValue","setInternalValue","useState","resolvedValue","handleChange","event","name","optionName","checked","target","newValue","filter","undefined","isError","_jsxs","children","Box","_jsx","MuiFormLabel","MuiFormHelperText","error","CancelCircleIcon","map","option","isChecked","includes","Checkbox","disabled"],"mappings":"saAmCA,MAAMA,EAAoBC,EAAOC,EAAPD,EAAuB,EAAGE,YAAO,CACzDC,QAAS,OACTC,cAAe,SACfC,IAAKH,EAAMI,QAAQ,QAGfC,EAAkBP,EAAOQ,EAAPR,EAAqB,EAAGE,YAAO,CACrDC,QAAS,OACTC,cAAe,SACfC,IAAKH,EAAMI,QAAQ,GACnBG,WAAYP,EAAMI,QAAQ,OAGfI,EAAgB,EAC3BC,QACAC,UACAC,QACAC,OAAO,SACPC,QACAC,WACAC,YACAC,SAAQ,EACRC,YAAW,EACXC,eAEA,MAAOC,EAAeC,GAAoBC,EAAmB,IAEvDC,EAAgBX,GAASQ,EAEzBI,EAAgBC,IACpB,MAAQC,KAAMC,EAAUC,QAAEA,GAAYH,EAAMI,OAEtCC,EAAWF,EACb,IAAIL,EAAeI,GACnBJ,EAAcQ,QAAQL,GAASA,IAASC,SAG9BK,IAAVpB,GACFS,EAAiBS,GAGfX,GACFA,EAASM,EAAOK,IAIdG,GAAWhB,KAAWD,EAE5B,OACEkB,EAACpC,EAAiB,CAAA,UAAUY,EAAKyB,SAAA,CAC/BD,EAACE,EAAG,CAAAD,SAAA,CACFE,EAACC,EAAY,CAAA,UAAU,GAAG5B,UAAeQ,SAAUA,EAAQiB,SACxDrB,IAGFC,GAAYsB,EAACE,EAAiB,CAAA,UAAU,GAAG7B,SAAYyB,SAAGpB,OAG5DkB,GACCC,EAACK,EAAiB,CAACC,OAAK,EAAAL,SAAA,CACtBE,EAACI,EAAgB,CAAA,GAEhBzB,KAILqB,EAAC/B,EAAe,CAAA,UAAU,GAAGI,eAAkByB,SAC5CxB,EAAQ+B,KAAKC,IACZ,MAAMC,EAAYrB,EAAcsB,SAASF,EAAOjB,MAEhD,OACEW,EAACS,EAAQ,CAEPlB,QAASgB,EACTG,SAAUJ,EAAOI,SACjBrC,MAAO,GAAGA,KAASiC,EAAOjB,OAC1BZ,MAAO6B,EAAO7B,MACdY,KAAMiB,EAAOjB,KACbP,SAAUK,EACVX,KAAMA,EACNI,MAAOA,GARF0B,EAAOjB"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/molecules/CheckboxGroup/index.tsx"],"sourcesContent":["import { type ChangeEvent, useState } from 'react';\n\nimport Box from '@mui/material/Box';\nimport MuiFormControl from '@mui/material/FormControl';\nimport MuiFormGroup from '@mui/material/FormGroup';\nimport MuiFormHelperText from '@mui/material/FormHelperText';\nimport MuiFormLabel from '@mui/material/FormLabel';\nimport { styled } from '@mui/material/styles';\n\nimport Checkbox from '@fd/components/atoms/Checkbox';\nimport CancelCircleIcon from '@fd/icons/CancelCircle';\n\n/**\n * Represents a checkbox option in the CheckboxGroup.\n * Supports hierarchical nesting through the `options` property.\n */\nexport interface CheckboxOption {\n /** Unique identifier for the option. */\n name: string;\n /** Display label for the checkbox. */\n label: string;\n /** Whether the checkbox is disabled. */\n disabled?: boolean;\n /** Nested child options, creating a hierarchical structure. */\n options?: CheckboxOption[];\n}\n\n/**\n * Props for the CheckboxGroup component.\n * Supports hierarchical checkbox groups with parent-child relationships.\n * Parent checkboxes automatically reflect the selection state of their children,\n * showing indeterminate state when some (but not all) children are selected.\n */\ninterface CheckboxGroupProps {\n /** Unique identifier forwarded to the root element as `data-fd` for testing and identification. */\n fdKey: string;\n /** Array of checkbox options. Supports nested options for hierarchical structures. */\n options: CheckboxOption[];\n /** Label displayed above the checkbox group. */\n label: string;\n /**\n * The selected values. When provided, the component is controlled.\n * When omitted, the component is uncontrolled and manages its own state.\n */\n value?: string[];\n /** Size of the checkboxes. */\n size?: 'medium' | 'small';\n /** Helper text displayed below the label. */\n hintText?: string;\n /** Error message displayed when validation fails. */\n errorText?: string;\n /** Whether the input is valid. When false and errorText is provided, error styling is applied. */\n valid?: boolean;\n /** Whether the field is required. Adds a required indicator to the label. */\n required?: boolean;\n /** Called when the selection changes. Receives the change event and the updated array of selected option names. */\n onChange?: (event: ChangeEvent<HTMLInputElement>, checkedOptions: string[]) => void;\n}\n\nconst StyledFormControl = styled(MuiFormControl)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(0.5),\n}));\n\nconst StyledFormGroup = styled(MuiFormGroup)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n paddingTop: theme.spacing(2),\n overflow: 'visible',\n}));\n\nconst StyledChildrenContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n paddingLeft: theme.spacing(5.75),\n paddingTop: theme.spacing(2),\n position: 'relative',\n overflow: 'visible',\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: theme.spacing(1.75),\n top: theme.spacing(2),\n bottom: 0,\n width: '4px',\n backgroundColor: theme.palette.semantic.stroke['stroke-weak'],\n zIndex: 0,\n },\n}));\n\n/**\n * A hierarchical checkbox group component that supports nested options and parent-child relationships.\n * When a parent option is selected, all enabled child options are automatically selected.\n * Parent checkboxes show an indeterminate state when some (but not all) children are selected.\n * Supports both controlled and uncontrolled modes.\n *\n * @param props - The component props\n * @returns The rendered CheckboxGroup component\n */\nexport const CheckboxGroup = ({\n fdKey,\n options,\n value,\n size = 'medium',\n label,\n hintText,\n errorText,\n valid = true,\n required = false,\n onChange,\n}: CheckboxGroupProps): JSX.Element => {\n const [internalValue, setInternalValue] = useState<string[]>([]);\n\n const resolvedValue = value ?? internalValue;\n\n // Flatten all option names (including children) for easy lookup\n const getAllOptionNames = (opts: CheckboxOption[]): string[] => {\n const names: string[] = [];\n opts.forEach((opt) => {\n names.push(opt.name);\n if (opt.options) {\n names.push(...getAllOptionNames(opt.options));\n }\n });\n return names;\n };\n\n // Get all child option names for a given option (including disabled)\n const getChildOptionNames = (option: CheckboxOption): string[] => {\n if (!option.options) return [];\n return getAllOptionNames(option.options);\n };\n\n // Helper to find an option by name in the hierarchy\n const findOption = (opts: CheckboxOption[], targetName: string): CheckboxOption | undefined => {\n for (const opt of opts) {\n if (opt.name === targetName) return opt;\n if (opt.options) {\n const found = findOption(opt.options, targetName);\n if (found) return found;\n }\n }\n return undefined;\n };\n\n // Get all enabled child names for a given option\n const getEnabledChildNames = (option: CheckboxOption): string[] => {\n if (!option.options) return [];\n return getAllOptionNames(option.options).filter((childName) => {\n const childOption = findOption(option.options || [], childName);\n return !childOption?.disabled;\n });\n };\n\n // Check if all enabled children of an option are selected\n const areAllChildrenSelected = (option: CheckboxOption): boolean => {\n const enabledChildNames = getEnabledChildNames(option);\n if (enabledChildNames.length === 0) return false;\n return enabledChildNames.every((name) => resolvedValue.includes(name));\n };\n\n // Check if some (but not all) enabled children of an option are selected\n const areSomeChildrenSelected = (option: CheckboxOption): boolean => {\n const enabledChildNames = getEnabledChildNames(option);\n if (enabledChildNames.length === 0) return false;\n const selectedCount = enabledChildNames.filter((name) => resolvedValue.includes(name)).length;\n return selectedCount > 0 && selectedCount < enabledChildNames.length;\n };\n\n // Calculate checkbox state for an option\n const getCheckboxState = (option: CheckboxOption): { checked: boolean; indeterminate: boolean } => {\n const hasChildren = option.options && option.options.length > 0;\n const isDirectlySelected = resolvedValue.includes(option.name);\n\n if (!hasChildren) {\n return { checked: isDirectlySelected, indeterminate: false };\n }\n\n const allSelected = areAllChildrenSelected(option);\n const someSelected = areSomeChildrenSelected(option);\n\n return {\n checked: allSelected,\n indeterminate: someSelected && !allSelected,\n };\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>): void => {\n const { name: optionName } = event.target;\n const clickedOption = findOption(options, optionName);\n if (!clickedOption) return;\n\n let newValue: string[];\n\n // If option has children, toggle all children based on current state\n if (clickedOption.options && clickedOption.options.length > 0) {\n const allChildrenSelected = areAllChildrenSelected(clickedOption);\n\n if (allChildrenSelected) {\n // All children are selected - deselect all children\n const childNames = getChildOptionNames(clickedOption);\n newValue = resolvedValue.filter((name) => !childNames.includes(name));\n } else {\n // Not all children are selected - select all enabled children\n const enabledChildNames = getEnabledChildNames(clickedOption);\n // Add all enabled children that aren't already selected\n newValue = [...new Set([...resolvedValue, ...enabledChildNames])];\n }\n // Ensure parent names are not persisted in the value for hierarchical options\n newValue = newValue.filter((name) => name !== clickedOption.name);\n } else {\n // Regular checkbox toggle - use event.checked for leaf nodes\n const { checked } = event.target;\n newValue = checked\n ? [...resolvedValue, optionName]\n : resolvedValue.filter((name) => name !== optionName);\n }\n\n // If value is undefined, we're in uncontrolled mode - update internal state\n if (value === undefined) {\n setInternalValue(newValue);\n }\n\n if (onChange) {\n onChange(event, newValue);\n }\n };\n\n // Render checkbox options recursively\n const renderOptions = (opts: CheckboxOption[]): JSX.Element[] => {\n return opts.map((option) => {\n const { checked, indeterminate } = getCheckboxState(option);\n const hasOptions = option.options && option.options.length > 0;\n\n return (\n <Box key={option.name}>\n <Checkbox\n checked={checked}\n disabled={option.disabled}\n fdKey={`${fdKey}-${option.name}`}\n indeterminate={indeterminate}\n label={option.label}\n name={option.name}\n onChange={handleChange}\n size={size}\n valid={valid}\n />\n {hasOptions && (\n <StyledChildrenContainer>{renderOptions(option.options ?? [])}</StyledChildrenContainer>\n )}\n </Box>\n );\n });\n };\n\n const isError = !valid && !!errorText;\n\n return (\n <StyledFormControl data-fd={fdKey}>\n <Box>\n <MuiFormLabel data-fd={`${fdKey}-label`} required={required}>\n {label}\n </MuiFormLabel>\n\n {hintText && <MuiFormHelperText data-fd={`${fdKey}-hint`}>{hintText}</MuiFormHelperText>}\n </Box>\n\n {isError && (\n <MuiFormHelperText error>\n <CancelCircleIcon />\n\n {errorText}\n </MuiFormHelperText>\n )}\n\n <StyledFormGroup data-fd={`${fdKey}-checkboxes`}>{renderOptions(options)}</StyledFormGroup>\n </StyledFormControl>\n );\n};\n\nexport default CheckboxGroup;\n"],"names":["StyledFormControl","styled","MuiFormControl","theme","display","flexDirection","gap","spacing","StyledFormGroup","MuiFormGroup","paddingTop","overflow","StyledChildrenContainer","Box","paddingLeft","position","content","left","top","bottom","width","backgroundColor","palette","semantic","stroke","zIndex","CheckboxGroup","fdKey","options","value","size","label","hintText","errorText","valid","required","onChange","internalValue","setInternalValue","useState","resolvedValue","getAllOptionNames","opts","names","forEach","opt","push","name","findOption","targetName","found","getEnabledChildNames","option","filter","childName","childOption","disabled","areAllChildrenSelected","enabledChildNames","length","every","includes","getCheckboxState","hasChildren","isDirectlySelected","checked","indeterminate","allSelected","someSelected","selectedCount","areSomeChildrenSelected","handleChange","event","optionName","target","clickedOption","newValue","childNames","Set","undefined","renderOptions","map","hasOptions","_jsxs","children","_jsx","Checkbox","isError","MuiFormLabel","MuiFormHelperText","error","CancelCircleIcon"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AutocompleteProps, AutocompleteOption } from '../Autocomplete/index.js';
1
+ import { AutocompleteOption, AutocompleteProps } from '../Autocomplete/index.js';
2
2
 
3
3
  type ComboboxOption = AutocompleteOption;
4
4
  type ComboboxProps = Omit<AutocompleteProps, 'type'>;
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("../types/index.cjs.js");const a=(a={})=>({...{id:"1",fileName:"Mock Asset.jpg",contentType:"image/jpeg",url:"./images/pizza-horizontal.jpg",createdBy:"Mock User",updatedBy:"Mock User",updatedAt:(new Date).toISOString(),uploadedAt:(new Date).toISOString(),orgId:"10121",brandId:"1",type:e.AssetType.IMAGE,metadata:{tags:["mock"]}},...a}),t=[a({id:"1",fileName:"Pizza Special.jpg",createdBy:"John Doe",updatedBy:"John Doe",metadata:{tags:["pizza","food"],altText:"Delicious pizza with toppings"}}),a({id:"2",fileName:"Burger Combo.jpg",createdBy:"Jane Smith",updatedBy:"Jane Smith",metadata:{tags:["burger","food"],altText:"Juicy burger with fries"}}),a({id:"3",fileName:"Salad Fresh.jpg",createdBy:"Bob Johnson",updatedBy:"Bob Johnson",metadata:{tags:["salad","healthy"],altText:"Fresh green salad"}}),a({id:"4",fileName:"Pasta Delight.jpg",createdBy:"Alice Brown",updatedBy:"Alice Brown",metadata:{tags:["pasta","italian"]}}),a({id:"5",fileName:"Dessert Special.jpg",createdBy:"Charlie Davis",updatedBy:"Charlie Davis",metadata:{tags:["dessert","sweet"]}})];exports.createMockAsset=a,exports.createMockAssets=(e,t)=>Array.from({length:e},((e,s)=>{const i=t?.[s]||{};return a({id:(s+1).toString(),fileName:`Mock Asset ${s+1}.jpg`,...i})})),exports.mockAssets=t;
2
+ //# sourceMappingURL=mockAssets.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockAssets.cjs.js","sources":["../../../../../src/components/organisms/AssetManager/__mocks__/mockAssets.ts"],"sourcesContent":["import { type Asset, AssetType } from '../types';\n\n/**\n * Factory function to create a mock asset with customizable properties\n * @param overrides - Partial asset properties to override defaults\n * @returns A complete mock asset\n */\nexport const createMockAsset = (overrides: Partial<Asset> = {}): Asset => {\n const defaultAsset: Asset = {\n id: '1',\n fileName: 'Mock Asset.jpg',\n contentType: 'image/jpeg',\n url: './images/pizza-horizontal.jpg',\n createdBy: 'Mock User',\n updatedBy: 'Mock User',\n updatedAt: new Date().toISOString(),\n uploadedAt: new Date().toISOString(),\n orgId: '10121',\n brandId: '1',\n type: AssetType.IMAGE,\n metadata: { tags: ['mock'] },\n };\n\n return { ...defaultAsset, ...overrides };\n};\n\n/**\n * Generate multiple mock assets\n * @param count - Number of assets to generate\n * @param overridesArray - Optional array of overrides for each asset\n * @returns Array of mock assets\n */\nexport const createMockAssets = (count: number, overridesArray?: Array<Partial<Asset>>): Asset[] => {\n return Array.from({ length: count }, (_, index) => {\n const baseOverrides = overridesArray?.[index] || {};\n return createMockAsset({\n id: (index + 1).toString(),\n fileName: `Mock Asset ${index + 1}.jpg`,\n ...baseOverrides,\n });\n });\n};\n\n/**\n * Pre-defined mock assets for common testing scenarios\n */\nexport const mockAssets: Asset[] = [\n createMockAsset({\n id: '1',\n fileName: 'Pizza Special.jpg',\n createdBy: 'John Doe',\n updatedBy: 'John Doe',\n metadata: { tags: ['pizza', 'food'], altText: 'Delicious pizza with toppings' },\n }),\n createMockAsset({\n id: '2',\n fileName: 'Burger Combo.jpg',\n createdBy: 'Jane Smith',\n updatedBy: 'Jane Smith',\n metadata: { tags: ['burger', 'food'], altText: 'Juicy burger with fries' },\n }),\n createMockAsset({\n id: '3',\n fileName: 'Salad Fresh.jpg',\n createdBy: 'Bob Johnson',\n updatedBy: 'Bob Johnson',\n metadata: { tags: ['salad', 'healthy'], altText: 'Fresh green salad' },\n }),\n createMockAsset({\n id: '4',\n fileName: 'Pasta Delight.jpg',\n createdBy: 'Alice Brown',\n updatedBy: 'Alice Brown',\n metadata: { tags: ['pasta', 'italian'] },\n }),\n createMockAsset({\n id: '5',\n fileName: 'Dessert Special.jpg',\n createdBy: 'Charlie Davis',\n updatedBy: 'Charlie Davis',\n metadata: { tags: ['dessert', 'sweet'] },\n }),\n];\n"],"names":["createMockAsset","overrides","id","fileName","contentType","url","createdBy","updatedBy","updatedAt","Date","toISOString","uploadedAt","orgId","brandId","type","AssetType","IMAGE","metadata","tags","mockAssets","altText","count","overridesArray","Array","from","length","_","index","baseOverrides","toString"],"mappings":"0DAOaA,EAAkB,CAACC,EAA4B,MAgBnD,IAfqB,CAC1BC,GAAI,IACJC,SAAU,iBACVC,YAAa,aACbC,IAAK,gCACLC,UAAW,YACXC,UAAW,YACXC,WAAW,IAAIC,MAAOC,cACtBC,YAAY,IAAIF,MAAOC,cACvBE,MAAO,QACPC,QAAS,IACTC,KAAMC,EAAAA,UAAUC,MAChBC,SAAU,CAAEC,KAAM,CAAC,aAGQjB,IAuBlBkB,EAAsB,CACjCnB,EAAgB,CACdE,GAAI,IACJC,SAAU,oBACVG,UAAW,WACXC,UAAW,WACXU,SAAU,CAAEC,KAAM,CAAC,QAAS,QAASE,QAAS,mCAEhDpB,EAAgB,CACdE,GAAI,IACJC,SAAU,mBACVG,UAAW,aACXC,UAAW,aACXU,SAAU,CAAEC,KAAM,CAAC,SAAU,QAASE,QAAS,6BAEjDpB,EAAgB,CACdE,GAAI,IACJC,SAAU,kBACVG,UAAW,cACXC,UAAW,cACXU,SAAU,CAAEC,KAAM,CAAC,QAAS,WAAYE,QAAS,uBAEnDpB,EAAgB,CACdE,GAAI,IACJC,SAAU,oBACVG,UAAW,cACXC,UAAW,cACXU,SAAU,CAAEC,KAAM,CAAC,QAAS,cAE9BlB,EAAgB,CACdE,GAAI,IACJC,SAAU,sBACVG,UAAW,gBACXC,UAAW,gBACXU,SAAU,CAAEC,KAAM,CAAC,UAAW,gEAhDF,CAACG,EAAeC,IACvCC,MAAMC,KAAK,CAAEC,OAAQJ,IAAS,CAACK,EAAGC,KACvC,MAAMC,EAAgBN,IAAiBK,IAAU,CAAA,EACjD,OAAO3B,EAAgB,CACrBE,IAAKyB,EAAQ,GAAGE,WAChB1B,SAAU,cAAcwB,EAAQ,WAC7BC"}
@@ -0,0 +1,21 @@
1
+ import { Asset } from '../types/index.js';
2
+
3
+ /**
4
+ * Factory function to create a mock asset with customizable properties
5
+ * @param overrides - Partial asset properties to override defaults
6
+ * @returns A complete mock asset
7
+ */
8
+ declare const createMockAsset: (overrides?: Partial<Asset>) => Asset;
9
+ /**
10
+ * Generate multiple mock assets
11
+ * @param count - Number of assets to generate
12
+ * @param overridesArray - Optional array of overrides for each asset
13
+ * @returns Array of mock assets
14
+ */
15
+ declare const createMockAssets: (count: number, overridesArray?: Array<Partial<Asset>>) => Asset[];
16
+ /**
17
+ * Pre-defined mock assets for common testing scenarios
18
+ */
19
+ declare const mockAssets: Asset[];
20
+
21
+ export { createMockAsset, createMockAssets, mockAssets };
@@ -0,0 +1,2 @@
1
+ import{AssetType as e}from"../types/index.js";const a=(a={})=>({...{id:"1",fileName:"Mock Asset.jpg",contentType:"image/jpeg",url:"./images/pizza-horizontal.jpg",createdBy:"Mock User",updatedBy:"Mock User",updatedAt:(new Date).toISOString(),uploadedAt:(new Date).toISOString(),orgId:"10121",brandId:"1",type:e.IMAGE,metadata:{tags:["mock"]}},...a}),t=(e,t)=>Array.from({length:e},((e,i)=>{const d=t?.[i]||{};return a({id:(i+1).toString(),fileName:`Mock Asset ${i+1}.jpg`,...d})})),i=[a({id:"1",fileName:"Pizza Special.jpg",createdBy:"John Doe",updatedBy:"John Doe",metadata:{tags:["pizza","food"],altText:"Delicious pizza with toppings"}}),a({id:"2",fileName:"Burger Combo.jpg",createdBy:"Jane Smith",updatedBy:"Jane Smith",metadata:{tags:["burger","food"],altText:"Juicy burger with fries"}}),a({id:"3",fileName:"Salad Fresh.jpg",createdBy:"Bob Johnson",updatedBy:"Bob Johnson",metadata:{tags:["salad","healthy"],altText:"Fresh green salad"}}),a({id:"4",fileName:"Pasta Delight.jpg",createdBy:"Alice Brown",updatedBy:"Alice Brown",metadata:{tags:["pasta","italian"]}}),a({id:"5",fileName:"Dessert Special.jpg",createdBy:"Charlie Davis",updatedBy:"Charlie Davis",metadata:{tags:["dessert","sweet"]}})];export{a as createMockAsset,t as createMockAssets,i as mockAssets};
2
+ //# sourceMappingURL=mockAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockAssets.js","sources":["../../../../../src/components/organisms/AssetManager/__mocks__/mockAssets.ts"],"sourcesContent":["import { type Asset, AssetType } from '../types';\n\n/**\n * Factory function to create a mock asset with customizable properties\n * @param overrides - Partial asset properties to override defaults\n * @returns A complete mock asset\n */\nexport const createMockAsset = (overrides: Partial<Asset> = {}): Asset => {\n const defaultAsset: Asset = {\n id: '1',\n fileName: 'Mock Asset.jpg',\n contentType: 'image/jpeg',\n url: './images/pizza-horizontal.jpg',\n createdBy: 'Mock User',\n updatedBy: 'Mock User',\n updatedAt: new Date().toISOString(),\n uploadedAt: new Date().toISOString(),\n orgId: '10121',\n brandId: '1',\n type: AssetType.IMAGE,\n metadata: { tags: ['mock'] },\n };\n\n return { ...defaultAsset, ...overrides };\n};\n\n/**\n * Generate multiple mock assets\n * @param count - Number of assets to generate\n * @param overridesArray - Optional array of overrides for each asset\n * @returns Array of mock assets\n */\nexport const createMockAssets = (count: number, overridesArray?: Array<Partial<Asset>>): Asset[] => {\n return Array.from({ length: count }, (_, index) => {\n const baseOverrides = overridesArray?.[index] || {};\n return createMockAsset({\n id: (index + 1).toString(),\n fileName: `Mock Asset ${index + 1}.jpg`,\n ...baseOverrides,\n });\n });\n};\n\n/**\n * Pre-defined mock assets for common testing scenarios\n */\nexport const mockAssets: Asset[] = [\n createMockAsset({\n id: '1',\n fileName: 'Pizza Special.jpg',\n createdBy: 'John Doe',\n updatedBy: 'John Doe',\n metadata: { tags: ['pizza', 'food'], altText: 'Delicious pizza with toppings' },\n }),\n createMockAsset({\n id: '2',\n fileName: 'Burger Combo.jpg',\n createdBy: 'Jane Smith',\n updatedBy: 'Jane Smith',\n metadata: { tags: ['burger', 'food'], altText: 'Juicy burger with fries' },\n }),\n createMockAsset({\n id: '3',\n fileName: 'Salad Fresh.jpg',\n createdBy: 'Bob Johnson',\n updatedBy: 'Bob Johnson',\n metadata: { tags: ['salad', 'healthy'], altText: 'Fresh green salad' },\n }),\n createMockAsset({\n id: '4',\n fileName: 'Pasta Delight.jpg',\n createdBy: 'Alice Brown',\n updatedBy: 'Alice Brown',\n metadata: { tags: ['pasta', 'italian'] },\n }),\n createMockAsset({\n id: '5',\n fileName: 'Dessert Special.jpg',\n createdBy: 'Charlie Davis',\n updatedBy: 'Charlie Davis',\n metadata: { tags: ['dessert', 'sweet'] },\n }),\n];\n"],"names":["createMockAsset","overrides","id","fileName","contentType","url","createdBy","updatedBy","updatedAt","Date","toISOString","uploadedAt","orgId","brandId","type","AssetType","IMAGE","metadata","tags","createMockAssets","count","overridesArray","Array","from","length","_","index","baseOverrides","toString","mockAssets","altText"],"mappings":"oDAOaA,EAAkB,CAACC,EAA4B,MAgBnD,IAfqB,CAC1BC,GAAI,IACJC,SAAU,iBACVC,YAAa,aACbC,IAAK,gCACLC,UAAW,YACXC,UAAW,YACXC,WAAW,IAAIC,MAAOC,cACtBC,YAAY,IAAIF,MAAOC,cACvBE,MAAO,QACPC,QAAS,IACTC,KAAMC,EAAUC,MAChBC,SAAU,CAAEC,KAAM,CAAC,aAGQjB,IASlBkB,EAAmB,CAACC,EAAeC,IACvCC,MAAMC,KAAK,CAAEC,OAAQJ,IAAS,CAACK,EAAGC,KACvC,MAAMC,EAAgBN,IAAiBK,IAAU,CAAA,EACjD,OAAO1B,EAAgB,CACrBE,IAAKwB,EAAQ,GAAGE,WAChBzB,SAAU,cAAcuB,EAAQ,WAC7BC,OAQIE,EAAsB,CACjC7B,EAAgB,CACdE,GAAI,IACJC,SAAU,oBACVG,UAAW,WACXC,UAAW,WACXU,SAAU,CAAEC,KAAM,CAAC,QAAS,QAASY,QAAS,mCAEhD9B,EAAgB,CACdE,GAAI,IACJC,SAAU,mBACVG,UAAW,aACXC,UAAW,aACXU,SAAU,CAAEC,KAAM,CAAC,SAAU,QAASY,QAAS,6BAEjD9B,EAAgB,CACdE,GAAI,IACJC,SAAU,kBACVG,UAAW,cACXC,UAAW,cACXU,SAAU,CAAEC,KAAM,CAAC,QAAS,WAAYY,QAAS,uBAEnD9B,EAAgB,CACdE,GAAI,IACJC,SAAU,oBACVG,UAAW,cACXC,UAAW,cACXU,SAAU,CAAEC,KAAM,CAAC,QAAS,cAE9BlB,EAAgB,CACdE,GAAI,IACJC,SAAU,sBACVG,UAAW,gBACXC,UAAW,gBACXU,SAAU,CAAEC,KAAM,CAAC,UAAW"}
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("@tanstack/react-query"),s=require("../services/asset.service.cjs.js");exports.useGetAssets=(r,t=!0)=>e.useQuery({queryKey:[s.getAssetsKey,r],queryFn:()=>s.getAssets(r),enabled:t,staleTime:3e5,gcTime:6e5});
2
+ //# sourceMappingURL=useAssets.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAssets.cjs.js","sources":["../../../../../src/components/organisms/AssetManager/hooks/useAssets.ts"],"sourcesContent":["import { useQuery, type UseQueryResult } from '@tanstack/react-query';\n\nimport { getAssets, getAssetsKey } from '../services/asset.service';\nimport type { Asset } from '../types';\n\n/**\n * Hook to fetch assets from the API\n * Automatically determines the API URL based on environment and orgId\n * @param orgId - Organization ID\n * @param enabled - Whether the query should be enabled\n * @returns Query result with assets data, loading state, and error state\n */\nexport const useGetAssets = (orgId: string, enabled = true): UseQueryResult<Asset[], Error> => {\n return useQuery<Asset[]>({\n queryKey: [getAssetsKey, orgId],\n queryFn: () => getAssets(orgId),\n enabled,\n staleTime: 5 * 60 * 1000, // 5 minutes\n gcTime: 10 * 60 * 1000, // 10 minutes\n });\n};\n"],"names":["orgId","enabled","useQuery","queryKey","getAssetsKey","queryFn","getAssets","staleTime","gcTime"],"mappings":"uHAY4B,CAACA,EAAeC,GAAU,IAC7CC,WAAkB,CACvBC,SAAU,CAACC,EAAAA,aAAcJ,GACzBK,QAAS,IAAMC,EAAAA,UAAUN,GACzBC,UACAM,UAAW,IACXC,OAAQ"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hook to fetch assets from the API
3
+ * Automatically determines the API URL based on environment and orgId
4
+ * @param orgId - Organization ID
5
+ * @param enabled - Whether the query should be enabled
6
+ * @returns Query result with assets data, loading state, and error state
7
+ */
8
+ declare const useGetAssets: (orgId: string, enabled?: boolean) => QueryObserverResult<TData, TError>;
9
+
10
+ export { useGetAssets };
@@ -0,0 +1,2 @@
1
+ import{useQuery as e}from"@tanstack/react-query";import{getAssets as r,getAssetsKey as s}from"../services/asset.service.js";const t=(t,a=!0)=>e({queryKey:[s,t],queryFn:()=>r(t),enabled:a,staleTime:3e5,gcTime:6e5});export{t as useGetAssets};
2
+ //# sourceMappingURL=useAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAssets.js","sources":["../../../../../src/components/organisms/AssetManager/hooks/useAssets.ts"],"sourcesContent":["import { useQuery, type UseQueryResult } from '@tanstack/react-query';\n\nimport { getAssets, getAssetsKey } from '../services/asset.service';\nimport type { Asset } from '../types';\n\n/**\n * Hook to fetch assets from the API\n * Automatically determines the API URL based on environment and orgId\n * @param orgId - Organization ID\n * @param enabled - Whether the query should be enabled\n * @returns Query result with assets data, loading state, and error state\n */\nexport const useGetAssets = (orgId: string, enabled = true): UseQueryResult<Asset[], Error> => {\n return useQuery<Asset[]>({\n queryKey: [getAssetsKey, orgId],\n queryFn: () => getAssets(orgId),\n enabled,\n staleTime: 5 * 60 * 1000, // 5 minutes\n gcTime: 10 * 60 * 1000, // 10 minutes\n });\n};\n"],"names":["useGetAssets","orgId","enabled","useQuery","queryKey","getAssetsKey","queryFn","getAssets","staleTime","gcTime"],"mappings":"4HAYO,MAAMA,EAAe,CAACC,EAAeC,GAAU,IAC7CC,EAAkB,CACvBC,SAAU,CAACC,EAAcJ,GACzBK,QAAS,IAAMC,EAAUN,GACzBC,UACAM,UAAW,IACXC,OAAQ"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),i=require("@mui/material/styles"),r=require("@mui/material/Box"),a=require("../../atoms/Card/index.cjs.js"),s=require("@mui/material/Grid2"),l=require("@mui/material/Typography"),o=require("../../molecules/Modal/index.cjs.js"),n=require("../../../icons/CheckmarkCircleSolid/index.cjs.js");const c=i.styled(r)((({theme:e})=>({marginBottom:e.spacing(3)}))),d=i.styled(r,{shouldForwardProp:e=>"selected"!==e})((({theme:e,selected:t})=>({width:"100%",cursor:"pointer",position:"relative","& .MuiCard-root":{borderWidth:"2px",borderColor:t?e.palette.semantic.stroke["stroke-selected"]:"transparent",boxShadow:t?"none":`inset 0 0 0 1px ${e.palette.semantic.stroke["stroke-weak"]}`},"&:hover":{opacity:.9},"&:focus-visible .MuiCard-root":{borderColor:e.palette.semantic.stroke["stroke-selected"],boxShadow:"none"}}))),m=i.styled(n)((({theme:e})=>({position:"absolute",top:e.spacing(2),left:e.spacing(2),zIndex:1,color:e.palette.semantic.icon["icon-primary"],"& circle":{fill:e.palette.common.white}})));module.exports=({open:i,onClose:r,onSelect:n,assets:u,multiSelect:p=!1})=>{const[x,h]=t.useState([]);t.useEffect((()=>{i||h([])}),[i]);const g=()=>{h([]),r()},b=()=>{if(n&&u){const e=u.filter((e=>x.includes(e.id)));n(e)}h([]),r()},j=e=>{h((t=>p?t.includes(e)?t.filter((t=>t!==e)):[...t,e]:t.includes(e)?[]:[e]))};return e.jsxs(o,{actions:[{label:"Cancel",onClick:g,variant:"secondary",tone:"neutral",id:"asset-manager-cancel"},{label:"Select",onClick:b,variant:"primary",disabled:0===x.length,id:"asset-manager-select"}],onClose:g,open:i,size:"large",title:"Select Images",children:[e.jsx(c,{children:e.jsx(l,{variant:"h3Strong",children:"Tabs placeholder text"})}),e.jsx(s,{container:!0,component:"ul",spacing:1,sx:{listStyle:"none",margin:0,padding:0},children:u?.map((t=>{const i=x.includes(t.id);return e.jsx(s,{"aria-selected":i,component:"li",size:{widescreen:3,desktop:3,mobile:6,tablet:4},children:e.jsxs(d,{"aria-label":"Select "+t.fileName,onClick:()=>j(t.id),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),j(t.id))},role:"button",selected:i,tabIndex:0,children:[i&&e.jsx(m,{size:"lg"}),e.jsx(a,{content:t.fileName,heading:"",imageAlt:t.metadata.altText,imageSrc:t.url})]})},t.id)}))})]})};
1
+ "use strict";var e=require("react/jsx-runtime"),t=require("react"),s=require("@mui/material/styles"),i=require("@mui/material/Box"),r=require("../../atoms/Card/index.cjs.js"),a=require("../../atoms/CircularProgress/index.cjs.js"),l=require("@mui/material/Grid2"),n=require("@mui/material/Tab"),o=require("../../molecules/EmptyState/index.cjs.js"),c=require("../../molecules/Modal/index.cjs.js"),d=require("../../molecules/Tabs/index.cjs.js"),m=require("../../../icons/CheckmarkCircleSolid/index.cjs.js"),u=require("./hooks/useAssets.cjs.js");const p=s.styled(i)((({theme:e})=>({marginBottom:e.spacing(3)}))),x=s.styled(i,{shouldForwardProp:e=>"selected"!==e})((({theme:e,selected:t})=>({width:"100%",cursor:"pointer",position:"relative","& .MuiCard-root":{borderWidth:"2px",borderColor:t?e.palette.semantic.stroke["stroke-selected"]:"transparent",boxShadow:t?"none":`inset 0 0 0 1px ${e.palette.semantic.stroke["stroke-weak"]}`},"&:hover":{opacity:.9},"&:focus-visible .MuiCard-root":{borderColor:e.palette.semantic.stroke["stroke-selected"],boxShadow:"none"}}))),j=s.styled(m)((({theme:e})=>({position:"absolute",top:e.spacing(2),left:e.spacing(2),zIndex:1,color:e.palette.semantic.icon["icon-primary"],"& circle":{fill:e.palette.common.white}}))),g=s.styled(i)((({theme:e})=>({display:"flex",justifyContent:"center",alignItems:"center",minHeight:"200px",padding:e.spacing(4)}))),h=s.styled(i)((({theme:e})=>({padding:e.spacing(4)})));module.exports=({open:s,onClose:i,onSelect:m,orgId:y,multiSelect:b=!1})=>{const[C,k]=t.useState([]),{data:f,isLoading:S,error:q}=u.useGetAssets(y,s);t.useEffect((()=>{s||k([])}),[s]);const v=()=>{k([]),i()},w=()=>{if(m&&f){const e=f.filter((e=>C.includes(e.id)));m(e)}k([]),i()},E=e=>{k((t=>b?t.includes(e)?t.filter((t=>t!==e)):[...t,e]:t.includes(e)?[]:[e]))};return e.jsxs(c,{actions:[{label:"Cancel",onClick:v,variant:"secondary",tone:"neutral",id:"asset-manager-cancel"},{label:"Select",onClick:w,variant:"primary",disabled:0===C.length,id:"asset-manager-select"}],onClose:v,open:s,title:"Select Images",children:[e.jsx(p,{children:e.jsxs(d,{fdKey:"asset-manager-tabs",onChange:()=>{},value:1,children:[e.jsx(n,{label:"Upload"}),e.jsx(n,{label:"Library"})]})}),S?e.jsx(g,{children:e.jsx(a.CircularProgress,{size:"large"})}):q?e.jsx(h,{children:e.jsx(o.EmptyState,{description:"Failed to load assets. Please try again later.",title:"Error loading assets"})}):f&&0!==f.length?e.jsx(l,{container:!0,component:"ul",spacing:1,sx:{listStyle:"none",margin:0,padding:0},children:f.map((t=>{const s=C.includes(t.id);return e.jsx(l,{"aria-selected":s,component:"li",size:{widescreen:3,desktop:3,mobile:6,tablet:4},children:e.jsxs(x,{"aria-label":"Select "+t.fileName,onClick:()=>E(t.id),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),E(t.id))},role:"button",selected:s,tabIndex:0,children:[s&&e.jsx(j,{size:"lg"}),e.jsx(r,{content:t.fileName,heading:"",imageAlt:t.metadata.altText,imageSrc:t.url})]})},t.id)}))}):e.jsx(h,{children:e.jsx(o.EmptyState,{description:"No assets available to display.",title:"No assets found"})})]})};
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../../src/components/organisms/AssetManager/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Card from '@fd/components/atoms/Card';\nimport Grid from '@fd/components/atoms/Grid';\nimport Typography from '@fd/components/atoms/Typography';\nimport Modal from '@fd/components/molecules/Modal';\nimport CheckmarkCircleSolidIcon from '@fd/icons/CheckmarkCircleSolid';\n\nimport type { Asset } from './types';\n\nconst StyledTabsContainer = styled(Box)(({ theme }) => ({\n marginBottom: theme.spacing(3),\n}));\n\nconst StyledCardWrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'selected',\n})<{ selected?: boolean }>(({ theme, selected }) => ({\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n '& .MuiCard-root': {\n // Always use 2px border to prevent layout shift\n borderWidth: '2px',\n borderColor: selected ? theme.palette.semantic.stroke['stroke-selected'] : 'transparent',\n // Use box-shadow to create the visual 1px border when not selected\n // This prevents layout shift while maintaining the visual appearance\n boxShadow: selected ? 'none' : `inset 0 0 0 1px ${theme.palette.semantic.stroke['stroke-weak']}`,\n },\n '&:hover': {\n opacity: 0.9,\n },\n '&:focus-visible .MuiCard-root': {\n borderColor: theme.palette.semantic.stroke['stroke-selected'],\n boxShadow: 'none',\n },\n}));\n\nconst StyledCheckmarkIcon = styled(CheckmarkCircleSolidIcon)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(2),\n left: theme.spacing(2),\n zIndex: 1,\n color: theme.palette.semantic.icon['icon-primary'],\n '& circle': {\n fill: theme.palette.common.white,\n },\n}));\n\n/**\n * Props for the AssetManager component.\n * Provides a modal interface for selecting images from a grid display.\n * It supports both single and multiple image selection modes.\n *\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n *\n * ```tsx\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n */\nexport interface AssetManagerProps {\n /** Whether the asset manager modal is open */\n open: boolean;\n /** Callback function when the modal is closed or cancelled */\n onClose: () => void;\n /** Callback function when assets are selected */\n onSelect?: (selectedAssets: Asset[]) => void;\n /** Assets to display if no api is provided */\n assets?: Asset[];\n /** Whether multiple assets can be selected. Defaults to false */\n multiSelect?: boolean;\n}\n\nconst AssetManager: React.FC<AssetManagerProps> = ({\n open,\n onClose,\n onSelect,\n assets,\n multiSelect = false,\n}) => {\n const [selectedAssetIds, setSelectedAssetIds] = useState<string[]>([]);\n\n // Reset selection when modal opens/closes\n useEffect(() => {\n if (!open) {\n setSelectedAssetIds([]);\n }\n }, [open]);\n\n const handleCancel = (): void => {\n setSelectedAssetIds([]);\n onClose();\n };\n\n const handleSelect = (): void => {\n if (onSelect && assets) {\n const selectedAssets = assets.filter((asset) => selectedAssetIds.includes(asset.id));\n onSelect(selectedAssets);\n }\n setSelectedAssetIds([]);\n onClose();\n };\n\n const handleAssetClick = (assetId: string): void => {\n setSelectedAssetIds((prev) => {\n if (multiSelect) {\n if (prev.includes(assetId)) {\n return prev.filter((id) => id !== assetId);\n }\n return [...prev, assetId];\n } else {\n if (prev.includes(assetId)) {\n return [];\n }\n return [assetId];\n }\n });\n };\n\n const getActionButtons = (): Array<{\n disabled?: boolean;\n id: string;\n label: string;\n onClick: () => void;\n tone?: 'brand' | 'neutral';\n variant: 'primary' | 'secondary';\n }> => {\n return [\n {\n label: 'Cancel',\n onClick: handleCancel,\n variant: 'secondary',\n tone: 'neutral',\n id: 'asset-manager-cancel',\n },\n {\n label: 'Select',\n onClick: handleSelect,\n variant: 'primary',\n disabled: selectedAssetIds.length === 0,\n id: 'asset-manager-select',\n },\n ];\n };\n\n const renderBrowseTab = (): React.ReactElement => (\n <Grid container component=\"ul\" spacing={1} sx={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {assets?.map((asset: Asset) => {\n const isSelected = selectedAssetIds.includes(asset.id);\n return (\n <Grid\n key={asset.id}\n aria-selected={isSelected}\n component=\"li\"\n size={{ widescreen: 3, desktop: 3, mobile: 6, tablet: 4 }}\n >\n <StyledCardWrapper\n aria-label={'Select ' + asset.fileName} // TODO: translate this text when translate provider is added\n onClick={() => handleAssetClick(asset.id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleAssetClick(asset.id);\n }\n }}\n role=\"button\"\n selected={isSelected}\n tabIndex={0}\n >\n {isSelected && <StyledCheckmarkIcon size=\"lg\" />}\n <Card\n content={asset.fileName}\n heading=\"\"\n imageAlt={asset.metadata.altText}\n imageSrc={asset.url}\n />\n </StyledCardWrapper>\n </Grid>\n );\n })}\n </Grid>\n );\n\n return (\n <Modal\n actions={getActionButtons()}\n onClose={handleCancel}\n open={open}\n size=\"large\"\n title={'Select Images'} // TODO: translate this text when translate provider is added\n >\n <StyledTabsContainer>\n {/* TODO: replace this with tabs component when available */}\n <Typography variant=\"h3Strong\">Tabs placeholder text</Typography>\n </StyledTabsContainer>\n {renderBrowseTab()}\n </Modal>\n );\n};\n\nexport default AssetManager;\n"],"names":["StyledTabsContainer","styled","Box","theme","marginBottom","spacing","StyledCardWrapper","shouldForwardProp","prop","selected","width","cursor","position","borderWidth","borderColor","palette","semantic","stroke","boxShadow","opacity","StyledCheckmarkIcon","CheckmarkCircleSolidIcon","top","left","zIndex","color","icon","fill","common","white","open","onClose","onSelect","assets","multiSelect","selectedAssetIds","setSelectedAssetIds","useState","useEffect","handleCancel","handleSelect","selectedAssets","filter","asset","includes","id","handleAssetClick","assetId","prev","_jsxs","Modal","actions","label","onClick","variant","tone","disabled","length","size","title","children","_jsx","Typography","Grid","container","component","sx","listStyle","margin","padding","map","isSelected","widescreen","desktop","mobile","tablet","fileName","onKeyDown","e","key","preventDefault","role","tabIndex","Card","content","heading","imageAlt","metadata","altText","imageSrc","url"],"mappings":"oWAaA,MAAMA,EAAsBC,EAAAA,OAAOC,EAAPD,EAAY,EAAGE,YAAO,CAChDC,aAAcD,EAAME,QAAQ,OAGxBC,EAAoBL,EAAAA,OAAOC,EAAK,CACpCK,kBAAoBC,GAAkB,aAATA,GADLP,EAEC,EAAGE,QAAOM,eAAU,CAC7CC,MAAO,OACPC,OAAQ,UACRC,SAAU,WACV,kBAAmB,CAEjBC,YAAa,MACbC,YAAaL,EAAWN,EAAMY,QAAQC,SAASC,OAAO,mBAAqB,cAG3EC,UAAWT,EAAW,OAAS,mBAAmBN,EAAMY,QAAQC,SAASC,OAAO,kBAElF,UAAW,CACTE,QAAS,IAEX,gCAAiC,CAC/BL,YAAaX,EAAMY,QAAQC,SAASC,OAAO,mBAC3CC,UAAW,YAITE,EAAsBnB,EAAAA,OAAOoB,EAAPpB,EAAiC,EAAGE,YAAO,CACrES,SAAU,WACVU,IAAKnB,EAAME,QAAQ,GACnBkB,KAAMpB,EAAME,QAAQ,GACpBmB,OAAQ,EACRC,MAAOtB,EAAMY,QAAQC,SAASU,KAAK,gBACnC,WAAY,CACVC,KAAMxB,EAAMY,QAAQa,OAAOC,0BA2BmB,EAChDC,OACAC,UACAC,WACAC,SACAC,eAAc,MAEd,MAAOC,EAAkBC,GAAuBC,EAAAA,SAAmB,IAGnEC,EAAAA,WAAU,KACHR,GACHM,EAAoB,MAErB,CAACN,IAEJ,MAAMS,EAAe,KACnBH,EAAoB,IACpBL,KAGIS,EAAe,KACnB,GAAIR,GAAYC,EAAQ,CACtB,MAAMQ,EAAiBR,EAAOS,QAAQC,GAAUR,EAAiBS,SAASD,EAAME,MAChFb,EAASS,EACX,CACAL,EAAoB,IACpBL,KAGIe,EAAoBC,IACxBX,GAAqBY,GACfd,EACEc,EAAKJ,SAASG,GACTC,EAAKN,QAAQG,GAAOA,IAAOE,IAE7B,IAAIC,EAAMD,GAEbC,EAAKJ,SAASG,GACT,GAEF,CAACA,MAqEd,OACEE,EAAAA,KAACC,GACCC,QA1DK,CACL,CACEC,MAAO,SACPC,QAASd,EACTe,QAAS,YACTC,KAAM,UACNV,GAAI,wBAEN,CACEO,MAAO,SACPC,QAASb,EACTc,QAAS,UACTE,SAAsC,IAA5BrB,EAAiBsB,OAC3BZ,GAAI,yBA8CNd,QAASQ,EACTT,KAAMA,EACN4B,KAAK,QACLC,MAAO,gBAAeC,SAAA,CAEtBC,EAAAA,IAAC7D,EAAmB,CAAA4D,SAElBC,EAAAA,IAACC,EAAU,CAACR,QAAQ,gDA/CxBO,MAACE,EAAI,CAACC,WAAS,EAACC,UAAU,KAAK5D,QAAS,EAAG6D,GAAI,CAAEC,UAAW,OAAQC,OAAQ,EAAGC,QAAS,GAAGT,SACxF3B,GAAQqC,KAAK3B,IACZ,MAAM4B,EAAapC,EAAiBS,SAASD,EAAME,IACnD,OACEgB,EAAAA,IAACE,EAAI,CAAA,gBAEYQ,EACfN,UAAU,KACVP,KAAM,CAAEc,WAAY,EAAGC,QAAS,EAAGC,OAAQ,EAAGC,OAAQ,GAAGf,SAEzDX,EAAAA,KAAC3C,EAAiB,CAAA,aACJ,UAAYqC,EAAMiC,SAC9BvB,QAAS,IAAMP,EAAiBH,EAAME,IACtCgC,UAAYC,IACI,UAAVA,EAAEC,KAA6B,MAAVD,EAAEC,MACzBD,EAAEE,iBACFlC,EAAiBH,EAAME,MAG3BoC,KAAK,SACLxE,SAAU8D,EACVW,SAAU,EAACtB,SAAA,CAEVW,GAAcV,EAAAA,IAACzC,EAAmB,CAACsC,KAAK,OACzCG,EAAAA,IAACsB,EAAI,CACHC,QAASzC,EAAMiC,SACfS,QAAQ,GACRC,SAAU3C,EAAM4C,SAASC,QACzBC,SAAU9C,EAAM+C,UAvBf/C,EAAME"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/components/organisms/AssetManager/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Card from '@fd/components/atoms/Card';\nimport CircularProgress from '@fd/components/atoms/CircularProgress';\nimport Grid from '@fd/components/atoms/Grid';\nimport Tab from '@fd/components/atoms/Tab';\nimport EmptyState from '@fd/components/molecules/EmptyState';\nimport Modal from '@fd/components/molecules/Modal';\nimport Tabs from '@fd/components/molecules/Tabs';\nimport CheckmarkCircleSolidIcon from '@fd/icons/CheckmarkCircleSolid';\n\nimport { useGetAssets } from './hooks/useAssets';\nimport type { Asset } from './types';\n\nconst StyledTabsContainer = styled(Box)(({ theme }) => ({\n marginBottom: theme.spacing(3),\n}));\n\nconst StyledCardWrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'selected',\n})<{ selected?: boolean }>(({ theme, selected }) => ({\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n '& .MuiCard-root': {\n // Always use 2px border to prevent layout shift\n borderWidth: '2px',\n borderColor: selected ? theme.palette.semantic.stroke['stroke-selected'] : 'transparent',\n // Use box-shadow to create the visual 1px border when not selected\n // This prevents layout shift while maintaining the visual appearance\n boxShadow: selected ? 'none' : `inset 0 0 0 1px ${theme.palette.semantic.stroke['stroke-weak']}`,\n },\n '&:hover': {\n opacity: 0.9,\n },\n '&:focus-visible .MuiCard-root': {\n borderColor: theme.palette.semantic.stroke['stroke-selected'],\n boxShadow: 'none',\n },\n}));\n\nconst StyledCheckmarkIcon = styled(CheckmarkCircleSolidIcon)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(2),\n left: theme.spacing(2),\n zIndex: 1,\n color: theme.palette.semantic.icon['icon-primary'],\n '& circle': {\n fill: theme.palette.common.white,\n },\n}));\n\n/**\n * Props for the AssetManager component.\n * Provides a modal interface for selecting images from a grid display.\n * It supports both single and multiple image selection modes.\n *\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n *\n * ```tsx\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n */\nexport interface AssetManagerProps {\n /** Whether the asset manager modal is open */\n open: boolean;\n /** Callback function when the modal is closed or cancelled */\n onClose: () => void;\n /** Callback function when assets are selected */\n onSelect?: (selectedAssets: Asset[]) => void;\n /**\n * Organization ID for fetching assets\n */\n orgId: string;\n /** Whether multiple assets can be selected. Defaults to false */\n multiSelect?: boolean;\n}\n\nconst StyledLoadingContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '200px',\n padding: theme.spacing(4),\n}));\n\nconst StyledErrorContainer = styled(Box)(({ theme }) => ({\n padding: theme.spacing(4),\n}));\n\nconst AssetManager: React.FC<AssetManagerProps> = ({\n open,\n onClose,\n onSelect,\n orgId,\n multiSelect = false,\n}) => {\n const [selectedAssetIds, setSelectedAssetIds] = useState<string[]>([]);\n\n // Fetch assets from API - service handles everything\n const { data: assets, isLoading, error } = useGetAssets(orgId, open);\n\n // Reset selection when modal opens/closes\n useEffect(() => {\n if (!open) {\n setSelectedAssetIds([]);\n }\n }, [open]);\n\n const handleCancel = (): void => {\n setSelectedAssetIds([]);\n onClose();\n };\n\n const handleSelect = (): void => {\n if (onSelect && assets) {\n const selectedAssets = assets.filter((asset: Asset) => selectedAssetIds.includes(asset.id));\n onSelect(selectedAssets);\n }\n setSelectedAssetIds([]);\n onClose();\n };\n\n const handleAssetClick = (assetId: string): void => {\n setSelectedAssetIds((prev) => {\n if (multiSelect) {\n if (prev.includes(assetId)) {\n return prev.filter((id) => id !== assetId);\n }\n return [...prev, assetId];\n } else {\n if (prev.includes(assetId)) {\n return [];\n }\n return [assetId];\n }\n });\n };\n\n const getActions = () => {\n return [\n {\n label: 'Cancel',\n onClick: handleCancel,\n variant: 'secondary' as const,\n tone: 'neutral' as const,\n id: 'asset-manager-cancel',\n },\n {\n label: 'Select',\n onClick: handleSelect,\n variant: 'primary' as const,\n disabled: selectedAssetIds.length === 0,\n id: 'asset-manager-select',\n },\n ];\n };\n\n const renderBrowseTab = (): React.ReactElement => {\n if (isLoading) {\n return (\n <StyledLoadingContainer>\n <CircularProgress size=\"large\" />\n </StyledLoadingContainer>\n );\n }\n\n if (error) {\n return (\n <StyledErrorContainer>\n <EmptyState\n description=\"Failed to load assets. Please try again later.\"\n title=\"Error loading assets\"\n />\n </StyledErrorContainer>\n );\n }\n\n if (!assets || assets.length === 0) {\n return (\n <StyledErrorContainer>\n <EmptyState description=\"No assets available to display.\" title=\"No assets found\" />\n </StyledErrorContainer>\n );\n }\n\n return (\n <Grid container component=\"ul\" spacing={1} sx={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {assets.map((asset: Asset) => {\n const isSelected = selectedAssetIds.includes(asset.id);\n return (\n <Grid\n key={asset.id}\n aria-selected={isSelected}\n component=\"li\"\n size={{ widescreen: 3, desktop: 3, mobile: 6, tablet: 4 }}\n >\n <StyledCardWrapper\n aria-label={'Select ' + asset.fileName} // TODO: translate this text when translate provider is added\n onClick={() => handleAssetClick(asset.id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleAssetClick(asset.id);\n }\n }}\n role=\"button\"\n selected={isSelected}\n tabIndex={0}\n >\n {isSelected && <StyledCheckmarkIcon size=\"lg\" />}\n <Card\n content={asset.fileName}\n heading=\"\"\n imageAlt={asset.metadata.altText}\n imageSrc={asset.url}\n />\n </StyledCardWrapper>\n </Grid>\n );\n })}\n </Grid>\n );\n };\n\n return (\n // TODO: replace this with a new modal component when available\n <Modal actions={getActions()} onClose={handleCancel} open={open} title=\"Select Images\">\n <StyledTabsContainer>\n {/* TODO: replace this with a new tabs component when available */}\n <Tabs fdKey=\"asset-manager-tabs\" onChange={() => {}} value={1}>\n <Tab label=\"Upload\" />\n <Tab label=\"Library\" />\n </Tabs>\n </StyledTabsContainer>\n {renderBrowseTab()}\n </Modal>\n );\n};\n\nexport default AssetManager;\n"],"names":["StyledTabsContainer","styled","Box","theme","marginBottom","spacing","StyledCardWrapper","shouldForwardProp","prop","selected","width","cursor","position","borderWidth","borderColor","palette","semantic","stroke","boxShadow","opacity","StyledCheckmarkIcon","CheckmarkCircleSolidIcon","top","left","zIndex","color","icon","fill","common","white","StyledLoadingContainer","display","justifyContent","alignItems","minHeight","padding","StyledErrorContainer","open","onClose","onSelect","orgId","multiSelect","selectedAssetIds","setSelectedAssetIds","useState","data","assets","isLoading","error","useGetAssets","useEffect","handleCancel","handleSelect","selectedAssets","filter","asset","includes","id","handleAssetClick","assetId","prev","_jsxs","Modal","actions","label","onClick","variant","tone","disabled","length","title","children","_jsx","Tabs","fdKey","onChange","value","Tab","CircularProgress","size","EmptyState","description","Grid","container","component","sx","listStyle","margin","map","isSelected","widescreen","desktop","mobile","tablet","fileName","onKeyDown","e","key","preventDefault","role","tabIndex","Card","content","heading","imageAlt","metadata","altText","imageSrc","url"],"mappings":"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"}
@@ -18,8 +18,10 @@ interface AssetManagerProps {
18
18
  onClose: () => void;
19
19
  /** Callback function when assets are selected */
20
20
  onSelect?: (selectedAssets: Asset[]) => void;
21
- /** Assets to display if no api is provided */
22
- assets?: Asset[];
21
+ /**
22
+ * Organization ID for fetching assets
23
+ */
24
+ orgId: string;
23
25
  /** Whether multiple assets can be selected. Defaults to false */
24
26
  multiSelect?: boolean;
25
27
  }
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as o,useEffect as i}from"react";import{styled as r}from"@mui/material/styles";import a from"@mui/material/Box";import l from"../../atoms/Card/index.js";import n from"@mui/material/Grid2";import s from"@mui/material/Typography";import c from"../../molecules/Modal/index.js";import m from"../../../icons/CheckmarkCircleSolid/index.js";const d=r(a)((({theme:e})=>({marginBottom:e.spacing(3)}))),p=r(a,{shouldForwardProp:e=>"selected"!==e})((({theme:e,selected:t})=>({width:"100%",cursor:"pointer",position:"relative","& .MuiCard-root":{borderWidth:"2px",borderColor:t?e.palette.semantic.stroke["stroke-selected"]:"transparent",boxShadow:t?"none":`inset 0 0 0 1px ${e.palette.semantic.stroke["stroke-weak"]}`},"&:hover":{opacity:.9},"&:focus-visible .MuiCard-root":{borderColor:e.palette.semantic.stroke["stroke-selected"],boxShadow:"none"}}))),u=r(m)((({theme:e})=>({position:"absolute",top:e.spacing(2),left:e.spacing(2),zIndex:1,color:e.palette.semantic.icon["icon-primary"],"& circle":{fill:e.palette.common.white}}))),h=({open:r,onClose:a,onSelect:m,assets:h,multiSelect:f=!1})=>{const[g,b]=o([]);i((()=>{r||b([])}),[r]);const k=()=>{b([]),a()},x=e=>{b((t=>f?t.includes(e)?t.filter((t=>t!==e)):[...t,e]:t.includes(e)?[]:[e]))};return e(c,{actions:[{label:"Cancel",onClick:k,variant:"secondary",tone:"neutral",id:"asset-manager-cancel"},{label:"Select",onClick:()=>{if(m&&h){const e=h.filter((e=>g.includes(e.id)));m(e)}b([]),a()},variant:"primary",disabled:0===g.length,id:"asset-manager-select"}],onClose:k,open:r,size:"large",title:"Select Images",children:[t(d,{children:t(s,{variant:"h3Strong",children:"Tabs placeholder text"})}),t(n,{container:!0,component:"ul",spacing:1,sx:{listStyle:"none",margin:0,padding:0},children:h?.map((o=>{const i=g.includes(o.id);return t(n,{"aria-selected":i,component:"li",size:{widescreen:3,desktop:3,mobile:6,tablet:4},children:e(p,{"aria-label":"Select "+o.fileName,onClick:()=>x(o.id),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),x(o.id))},role:"button",selected:i,tabIndex:0,children:[i&&t(u,{size:"lg"}),t(l,{content:o.fileName,heading:"",imageAlt:o.metadata.altText,imageSrc:o.url})]})},o.id)}))})]})};export{h as default};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as i,useEffect as o}from"react";import{styled as r}from"@mui/material/styles";import a from"@mui/material/Box";import l from"../../atoms/Card/index.js";import{CircularProgress as n}from"../../atoms/CircularProgress/index.js";import s from"@mui/material/Grid2";import c from"@mui/material/Tab";import{EmptyState as d}from"../../molecules/EmptyState/index.js";import m from"../../molecules/Modal/index.js";import p from"../../molecules/Tabs/index.js";import u from"../../../icons/CheckmarkCircleSolid/index.js";import{useGetAssets as g}from"./hooks/useAssets.js";const h=r(a)((({theme:e})=>({marginBottom:e.spacing(3)}))),f=r(a,{shouldForwardProp:e=>"selected"!==e})((({theme:e,selected:t})=>({width:"100%",cursor:"pointer",position:"relative","& .MuiCard-root":{borderWidth:"2px",borderColor:t?e.palette.semantic.stroke["stroke-selected"]:"transparent",boxShadow:t?"none":`inset 0 0 0 1px ${e.palette.semantic.stroke["stroke-weak"]}`},"&:hover":{opacity:.9},"&:focus-visible .MuiCard-root":{borderColor:e.palette.semantic.stroke["stroke-selected"],boxShadow:"none"}}))),b=r(u)((({theme:e})=>({position:"absolute",top:e.spacing(2),left:e.spacing(2),zIndex:1,color:e.palette.semantic.icon["icon-primary"],"& circle":{fill:e.palette.common.white}}))),x=r(a)((({theme:e})=>({display:"flex",justifyContent:"center",alignItems:"center",minHeight:"200px",padding:e.spacing(4)}))),k=r(a)((({theme:e})=>({padding:e.spacing(4)}))),y=({open:r,onClose:a,onSelect:u,orgId:y,multiSelect:C=!1})=>{const[S,j]=i([]),{data:v,isLoading:w,error:I}=g(y,r);o((()=>{r||j([])}),[r]);const z=()=>{j([]),a()},N=e=>{j((t=>C?t.includes(e)?t.filter((t=>t!==e)):[...t,e]:t.includes(e)?[]:[e]))};return e(m,{actions:[{label:"Cancel",onClick:z,variant:"secondary",tone:"neutral",id:"asset-manager-cancel"},{label:"Select",onClick:()=>{if(u&&v){const e=v.filter((e=>S.includes(e.id)));u(e)}j([]),a()},variant:"primary",disabled:0===S.length,id:"asset-manager-select"}],onClose:z,open:r,title:"Select Images",children:[t(h,{children:e(p,{fdKey:"asset-manager-tabs",onChange:()=>{},value:1,children:[t(c,{label:"Upload"}),t(c,{label:"Library"})]})}),w?t(x,{children:t(n,{size:"large"})}):I?t(k,{children:t(d,{description:"Failed to load assets. Please try again later.",title:"Error loading assets"})}):v&&0!==v.length?t(s,{container:!0,component:"ul",spacing:1,sx:{listStyle:"none",margin:0,padding:0},children:v.map((i=>{const o=S.includes(i.id);return t(s,{"aria-selected":o,component:"li",size:{widescreen:3,desktop:3,mobile:6,tablet:4},children:e(f,{"aria-label":"Select "+i.fileName,onClick:()=>N(i.id),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),N(i.id))},role:"button",selected:o,tabIndex:0,children:[o&&t(b,{size:"lg"}),t(l,{content:i.fileName,heading:"",imageAlt:i.metadata.altText,imageSrc:i.url})]})},i.id)}))}):t(k,{children:t(d,{description:"No assets available to display.",title:"No assets found"})})]})};export{y as default};
2
2
  //# sourceMappingURL=index.js.map