@wildo-ai/presets-components 1.1.1 → 1.1.3

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 (503) hide show
  1. package/dist/esm/.native.tsbuildinfo +1 -0
  2. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  3. package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
  4. package/dist/esm/components/actions/action-button.d.ts +1 -4
  5. package/dist/esm/components/actions/action-button.d.ts.map +1 -1
  6. package/dist/esm/components/actions/action-button.js +21 -5
  7. package/dist/esm/components/actions/action-button.js.map +1 -1
  8. package/dist/esm/components/actions/action-button.labels.d.ts.map +1 -1
  9. package/dist/esm/components/actions/button-group.d.ts.map +1 -1
  10. package/dist/esm/components/actions/button.d.ts.map +1 -1
  11. package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
  12. package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
  13. package/dist/esm/components/ai-elements/artifacts/artifact-browser.js +7 -3
  14. package/dist/esm/components/ai-elements/artifacts/artifact-browser.js.map +1 -1
  15. package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
  16. package/dist/esm/components/ai-elements/artifacts/artifact.labels.d.ts.map +1 -1
  17. package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
  18. package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
  19. package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
  20. package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
  21. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
  22. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
  23. package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
  24. package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
  25. package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
  26. package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
  27. package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
  28. package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
  29. package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
  30. package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
  31. package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
  32. package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
  33. package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
  34. package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
  35. package/dist/esm/components/ai-elements/decision/approval.d.ts +18 -3
  36. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  37. package/dist/esm/components/ai-elements/decision/approval.js +5 -3
  38. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  39. package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
  40. package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
  41. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  42. package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
  43. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  44. package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
  45. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  46. package/dist/esm/components/ai-elements/execution/task.js +10 -2
  47. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  48. package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
  49. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  50. package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
  51. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  52. package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
  53. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  54. package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
  55. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  56. package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  58. package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
  60. package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
  61. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  62. package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
  63. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  64. package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
  65. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  66. package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
  67. package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
  68. package/dist/esm/components/ai-elements/meta/agent.js +23 -3
  69. package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
  70. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
  72. package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  74. package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  76. package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  78. package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
  79. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  80. package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
  81. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  82. package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
  83. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  84. package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  86. package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  88. package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
  89. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  90. package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
  91. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  92. package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
  93. package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
  94. package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
  95. package/dist/esm/components/app/app-layout-main-container.labels.js +10 -2
  96. package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
  97. package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
  98. package/dist/esm/components/app/public-layout-main-container.js +52 -5
  99. package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
  100. package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
  101. package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
  102. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  103. package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
  104. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  105. package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
  106. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  107. package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
  108. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  109. package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
  110. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  111. package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
  112. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  113. package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
  114. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  115. package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
  116. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  117. package/dist/esm/components/data-display/description-list.js +10 -7
  118. package/dist/esm/components/data-display/description-list.js.map +1 -1
  119. package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
  120. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  121. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
  122. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  123. package/dist/esm/components/data-display/formatters/display-field-boolean.js +20 -1
  124. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  125. package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
  126. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  127. package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
  128. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  129. package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
  130. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  131. package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
  132. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  133. package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
  134. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  135. package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
  136. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  137. package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
  138. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  139. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
  140. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  141. package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
  142. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  143. package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
  144. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  145. package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
  146. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  147. package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
  148. package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
  149. package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
  150. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  151. package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
  152. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  153. package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
  154. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  155. package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
  156. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  157. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
  158. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  159. package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
  160. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  161. package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
  162. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  163. package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
  164. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  165. package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
  166. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  167. package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
  168. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  169. package/dist/esm/components/data-display/formatters/display-field-string.js +3 -0
  170. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  171. package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
  172. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  173. package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
  174. package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
  175. package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
  176. package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
  177. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  178. package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
  179. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  180. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
  181. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  182. package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
  183. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  184. package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
  185. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  186. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  187. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  188. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  189. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  190. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  191. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  192. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  193. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  194. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  195. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  196. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js +7 -0
  197. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  198. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  199. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  200. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  201. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  202. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  203. package/dist/esm/components/feedback/notification-center.d.ts +5 -3
  204. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  205. package/dist/esm/components/feedback/notification-center.js +7 -5
  206. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  207. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  208. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  209. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  210. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  211. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  212. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  213. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  214. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  215. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  216. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  217. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  218. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  219. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  220. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  221. package/dist/esm/components/form/chromes/form-primitive.labels.js +2 -2
  222. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  223. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  224. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  225. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  226. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  227. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  228. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  229. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  230. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  231. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  232. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  233. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  234. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  235. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  236. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  237. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  238. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  239. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  240. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  241. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  242. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  243. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  244. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  245. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  246. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  247. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  248. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  249. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  250. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  251. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  252. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  253. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  254. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  255. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  256. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  257. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  258. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  259. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  260. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  261. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  262. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  263. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  264. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
  265. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  266. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  267. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  268. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  269. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  270. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  271. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  272. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  273. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  274. package/dist/esm/components/form/controls/string/color-picker-surface.js +1 -1
  275. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  276. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  277. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  278. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  279. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  280. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  281. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  282. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  283. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  284. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  285. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  286. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  287. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  288. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  289. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  290. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  291. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  292. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  293. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  294. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  295. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  296. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  297. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  298. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  299. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  300. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  301. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  302. package/dist/esm/components/navigation/app-level/menu-user-org.js +8 -2
  303. package/dist/esm/components/navigation/app-level/menu-user-org.js.map +1 -1
  304. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  305. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  306. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  307. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  308. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  309. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  310. package/dist/esm/components/navigation/app-level/notification-center.js +22 -19
  311. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  312. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  313. package/dist/esm/components/navigation/app-level/notification-center.labels.js +11 -14
  314. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  315. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  316. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  317. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  318. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  319. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  320. package/dist/esm/components/navigation/app-level/sidebar.js +32 -15
  321. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  322. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  323. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  324. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  325. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  326. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  327. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  328. package/dist/esm/components/navigation/app-level/utility-panel.js +41 -8
  329. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  330. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  331. package/dist/esm/components/navigation/app-level/utility-panel.labels.js +1 -0
  332. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  333. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  334. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  335. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  336. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  337. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  338. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  339. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  340. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  341. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  342. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  343. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  344. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  345. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  346. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  347. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  348. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  349. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  350. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  351. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  352. package/dist/esm/components/overlays/containers/sheet.js +2 -2
  353. package/dist/esm/components/overlays/containers/sheet.js.map +1 -1
  354. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  355. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  356. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  357. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  358. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  359. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  360. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  361. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  362. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  363. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  364. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  365. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  366. package/dist/esm/components/sections/accordion.js +43 -13
  367. package/dist/esm/components/sections/accordion.js.map +1 -1
  368. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  369. package/dist/esm/components/sections/card.d.ts.map +1 -1
  370. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  371. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  372. package/dist/esm/components/sections/collapsible.js +17 -3
  373. package/dist/esm/components/sections/collapsible.js.map +1 -1
  374. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  375. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  376. package/dist/esm/components/sections/content-section.js +11 -7
  377. package/dist/esm/components/sections/content-section.js.map +1 -1
  378. package/dist/esm/components/sections/disclosure-nesting.d.ts +20 -0
  379. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -0
  380. package/dist/esm/components/sections/disclosure-nesting.js +20 -0
  381. package/dist/esm/components/sections/disclosure-nesting.js.map +1 -0
  382. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  383. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  384. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  385. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  386. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  387. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  388. package/dist/esm/components/sections/table.d.ts.map +1 -1
  389. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  390. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  391. package/dist/esm/components/sections/tabs.js +141 -10
  392. package/dist/esm/components/sections/tabs.js.map +1 -1
  393. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  394. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  395. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  396. package/dist/esm/components/typography/label.d.ts.map +1 -1
  397. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  398. package/dist/esm/components/typography/link.d.ts.map +1 -1
  399. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  400. package/dist/esm/components/typography/text.d.ts.map +1 -1
  401. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  402. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  403. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  404. package/dist/esm/config/index.d.ts.map +1 -1
  405. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  406. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  407. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  408. package/dist/esm/config/preset-kits.js +0 -4
  409. package/dist/esm/config/preset-kits.js.map +1 -1
  410. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  411. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  412. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  413. package/dist/esm/config/preset-shell.js +0 -4
  414. package/dist/esm/config/preset-shell.js.map +1 -1
  415. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  416. package/dist/esm/config/presets.d.ts.map +1 -1
  417. package/dist/esm/config/presets.js +0 -1
  418. package/dist/esm/config/presets.js.map +1 -1
  419. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  420. package/dist/esm/config/resources/application.resource-presets.js +6 -6
  421. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  422. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  423. package/dist/esm/config/resources/billing.resource-presets.js +8 -8
  424. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  425. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  426. package/dist/esm/config/resources/guidance.resource-presets.js +7 -7
  427. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  428. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  429. package/dist/esm/config/resources/identity.resource-presets.js +13 -7
  430. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  431. package/dist/esm/config/resources/index.d.ts +23 -1
  432. package/dist/esm/config/resources/index.d.ts.map +1 -1
  433. package/dist/esm/config/resources/index.js +24 -3
  434. package/dist/esm/config/resources/index.js.map +1 -1
  435. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  436. package/dist/esm/config/resources/organizations.resource-presets.js +8 -8
  437. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  438. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  439. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  440. package/dist/esm/config/resources/security.resource-presets.js +104 -13
  441. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  442. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  443. package/dist/esm/index.d.ts +0 -3
  444. package/dist/esm/index.d.ts.map +1 -1
  445. package/dist/esm/index.js +0 -3
  446. package/dist/esm/index.js.map +1 -1
  447. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  448. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  449. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  450. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  451. package/dist/esm/registration/register-common-enums.js +20 -1
  452. package/dist/esm/registration/register-common-enums.js.map +1 -1
  453. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  454. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  455. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  456. package/dist/esm/registration/register-default-presets.js +0 -4
  457. package/dist/esm/registration/register-default-presets.js.map +1 -1
  458. package/dist/esm/shiki-subset.d.ts.map +1 -1
  459. package/dist/esm/theme-exports.d.ts.map +1 -1
  460. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  461. package/dist/esm/themes/cozy.theme.js +8 -3
  462. package/dist/esm/themes/cozy.theme.js.map +1 -1
  463. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  464. package/dist/esm/themes/dense.theme.js +8 -5
  465. package/dist/esm/themes/dense.theme.js.map +1 -1
  466. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  467. package/dist/esm/themes/editorial.theme.js +8 -3
  468. package/dist/esm/themes/editorial.theme.js.map +1 -1
  469. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  470. package/dist/esm/themes/glass.theme.js +10 -4
  471. package/dist/esm/themes/glass.theme.js.map +1 -1
  472. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  473. package/dist/esm/themes/neo-brutalist.theme.js +8 -3
  474. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  475. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  476. package/dist/esm/themes/terminal.theme.js +8 -3
  477. package/dist/esm/themes/terminal.theme.js.map +1 -1
  478. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  479. package/dist/esm/themes/trading.theme.js +8 -3
  480. package/dist/esm/themes/trading.theme.js.map +1 -1
  481. package/dist/tsconfig.build.tsbuildinfo +1 -1
  482. package/package.json +7 -7
  483. package/dist/esm/.builder.pid +0 -9
  484. package/dist/esm/components/billing/billing-plan-change-preview.d.ts +0 -13
  485. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +0 -1
  486. package/dist/esm/components/billing/billing-plan-change-preview.js +0 -44
  487. package/dist/esm/components/billing/billing-plan-change-preview.js.map +0 -1
  488. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +0 -3
  489. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +0 -1
  490. package/dist/esm/components/billing/billing-plan-change-preview.labels.js +0 -36
  491. package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +0 -1
  492. package/dist/esm/components/billing/billing-promotion-code-input.d.ts +0 -10
  493. package/dist/esm/components/billing/billing-promotion-code-input.d.ts.map +0 -1
  494. package/dist/esm/components/billing/billing-promotion-code-input.js +0 -68
  495. package/dist/esm/components/billing/billing-promotion-code-input.js.map +0 -1
  496. package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts +0 -3
  497. package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts.map +0 -1
  498. package/dist/esm/components/billing/billing-promotion-code-input.labels.js +0 -14
  499. package/dist/esm/components/billing/billing-promotion-code-input.labels.js.map +0 -1
  500. package/dist/esm/config/resources/infrastructure.resource-presets.d.ts +0 -16
  501. package/dist/esm/config/resources/infrastructure.resource-presets.d.ts.map +0 -1
  502. package/dist/esm/config/resources/infrastructure.resource-presets.js +0 -110
  503. package/dist/esm/config/resources/infrastructure.resource-presets.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { resourceUIBehavior, resourceUIBehaviorFrom, StandardIconReference, ActionVisibility, } from '@wildo-ai/saas-frontend-lib';
3
- import { DisplayField, DisplayLayout, FormField, FormLayout, ObjectScope, RelatedResourceSections, Section, SummaryLayout, } from '@wildo-ai/saas-frontend-lib';
3
+ import { DisplayField, DisplayLayout, FormField, FormLayout, ObjectScope, RelatedResourceSections, Section, SummaryLayout, SummaryFlow, SummaryMeta, SummaryTitle, } from '@wildo-ai/saas-frontend-lib';
4
4
  import { BadgeSemanticVariant, DisplayChromeMode, EditChromeMode, EnumDisplayMode, SectionMode } from '@wildo-ai/zod-decorators';
5
5
  import { Archive, ArchiveRestore, Ban, CirclePause, GitBranch, Move, Paintbrush, Power, RotateCcw, Send, ToggleLeft, ToggleRight, Trash2, UserPlus, } from 'lucide-react';
6
6
  import { CoreResourceType as R, CoreResourceOperation as Op, OrganizationStatus, OrganizationMemberStatus, OrganizationUnit_Operations, OrganizationMembers_Operations, OrganizationProfile_Operations, Organization_Lifecycle_Operations, OrganizationFeatures_Operations, organizationResourceConfiguration_InitializationFactory as orgFactory, organizationUnitResourceConfiguration_InitializationFactory as orgUnitFactory, organizationMembersResourceConfiguration_InitializationFactory as orgMembersFactory, organizationProfileResourceConfiguration_InitializationFactory as orgProfileFactory, organizationNotificationsResourceConfiguration_InitializationFactory as orgNotificationsFactory, organizationPreferencesResourceConfiguration_InitializationFactory as orgPreferencesFactory, organizationFeaturesResourceConfiguration_InitializationFactory as orgFeaturesFactory, OrganizationSchema, OrganizationUnitSchema, OrganizationMemberSchema, OrganizationProfileSchema, OrganizationNotificationsSchema, OrganizationPreferencesSchema, ScopeFeaturesWithOverridesSchema, } from '@wildo-ai/saas-models';
@@ -49,7 +49,7 @@ export function buildOrganizationsMainPresets() {
49
49
  // label-left / value-right rows; the list/summary stays compact.
50
50
  defaultChromeMode: { display: DisplayChromeMode.SETTINGS_ROW, summary: DisplayChromeMode.INLINE, edit: EditChromeMode.SETTINGS_ROW },
51
51
  display: () => (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "name" }), _jsx(DisplayField, { name: "slug" }), _jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "type" })] }), _jsx(Section, { name: "lifecycle", children: _jsx(DisplayField, { name: "createdAt" }) }), _jsx(RelatedResourceSections, { config: { mode: SectionMode.TABS }, targets: [R.ORGANIZATION_UNITS, R.ORGANIZATION_MEMBERS, R.ORGANIZATION_FEATURES] })] })),
52
- summary: () => (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx("div", { className: "font-medium leading-tight", children: _jsx(DisplayField, { name: "name", hideLabel: true }) }), _jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [_jsx(DisplayField, { name: "slug" }), _jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "createdAt" })] })] })),
52
+ summary: () => (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "name" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "slug" }), _jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "createdAt" })] })] })),
53
53
  edit: () => (_jsx(FormLayout, { children: _jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "name" }), _jsx(FormField, { name: "slug" }), _jsx(FormField, { name: "status" }), _jsx(FormField, { name: "type" })] }) })),
54
54
  },
55
55
  fields: {
@@ -87,7 +87,7 @@ export function buildOrganizationsMainPresets() {
87
87
  layout: {
88
88
  refs: { sections: ['identity', 'hierarchy'] },
89
89
  display: () => (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "identity", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "name" }), _jsx(DisplayField, { name: "code" }), _jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "status" })] }), _jsxs(Section, { name: "hierarchy", children: [_jsx(DisplayField, { name: "parentUnitId" }), _jsx(DisplayField, { name: "path" }), _jsx(DisplayField, { name: "inheritanceType" })] }), _jsx(RelatedResourceSections, { config: { mode: SectionMode.TABS }, targets: [R.ORGANIZATION_UNITS] })] })),
90
- summary: () => (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx("div", { className: "font-medium leading-tight", children: _jsx(DisplayField, { name: "name", hideLabel: true }) }), _jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [_jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "status" })] })] })),
90
+ summary: () => (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "name" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "status" })] })] })),
91
91
  edit: () => (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "identity", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "name" }), _jsx(FormField, { name: "code" }), _jsx(FormField, { name: "type" }), _jsx(FormField, { name: "status" })] }), _jsxs(Section, { name: "hierarchy", children: [_jsx(FormField, { name: "parentUnitId" }), _jsx(FormField, { name: "inheritanceType" })] })] })),
92
92
  },
93
93
  views: [
@@ -109,7 +109,7 @@ export function buildOrganizationsMainPresets() {
109
109
  // Settings-page chrome (Settings Hub → Members): label-left / value-right rows.
110
110
  defaultChromeMode: { display: DisplayChromeMode.SETTINGS_ROW, summary: DisplayChromeMode.INLINE, edit: EditChromeMode.SETTINGS_ROW },
111
111
  display: () => (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "userTitle" }), _jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "roles" })] }), _jsx(Section, { name: "membership", children: _jsx(DisplayField, { name: "createdAt" }) })] })),
112
- summary: () => (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx("div", { className: "font-medium leading-tight", children: _jsx(DisplayField, { name: "userTitle", hideLabel: true }) }), _jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [_jsx(DisplayField, { name: "roles" }), _jsx(DisplayField, { name: "status" })] })] })),
112
+ summary: () => (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "userTitle" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "roles" }), _jsx(DisplayField, { name: "status" })] })] })),
113
113
  edit: () => (_jsx(FormLayout, { children: _jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "userEmail" }), _jsx(FormField, { name: "userTitle" }), _jsx(FormField, { name: "status" }), _jsx(FormField, { name: "roles" })] }) })),
114
114
  },
115
115
  fields: {
@@ -165,7 +165,7 @@ export function buildOrganizationsMainPresets() {
165
165
  layout: {
166
166
  refs: { sections: ['company', 'classification', 'location', 'branding', 'social'] },
167
167
  display: () => (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "company", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "displayName" }), _jsx(DisplayField, { name: "domain" }), _jsx(DisplayField, { name: "website" }), _jsx(DisplayField, { name: "phone" }), _jsx(DisplayField, { name: "description" })] }), _jsxs(Section, { name: "classification", children: [_jsx(DisplayField, { name: "industry" }), _jsx(DisplayField, { name: "size" }), _jsx(DisplayField, { name: "founded" }), _jsx(DisplayField, { name: "timezone" })] }), _jsx(Section, { name: "location", children: _jsx(DisplayField, { name: "address" }) }), _jsx(Section, { name: "branding", children: _jsxs(ObjectScope, { name: "branding", children: [_jsx(DisplayField, { name: "logo" }), _jsx(DisplayField, { name: "favicon" }), _jsx(DisplayField, { name: "primaryColor" }), _jsx(DisplayField, { name: "secondaryColor" }), _jsx(DisplayField, { name: "customDomain" })] }) }), _jsx(Section, { name: "social", children: _jsxs(ObjectScope, { name: "socialLinks", children: [_jsx(DisplayField, { name: "linkedin" }), _jsx(DisplayField, { name: "twitter" }), _jsx(DisplayField, { name: "facebook" }), _jsx(DisplayField, { name: "github" })] }) })] })),
168
- summary: () => (_jsx(SummaryLayout, { className: "text-sm", children: _jsx(DisplayField, { name: "displayName" }) })),
168
+ summary: () => (_jsx(SummaryLayout, { children: _jsx(DisplayField, { name: "displayName" }) })),
169
169
  edit: () => (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "company", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "displayName" }), _jsx(FormField, { name: "domain" }), _jsx(FormField, { name: "website" }), _jsx(FormField, { name: "phone" }), _jsx(FormField, { name: "description" })] }), _jsxs(Section, { name: "classification", children: [_jsx(FormField, { name: "industry" }), _jsx(FormField, { name: "size" }), _jsx(FormField, { name: "founded" }), _jsx(FormField, { name: "timezone" })] }), _jsx(Section, { name: "location", children: _jsx(FormField, { name: "address" }) }), _jsx(Section, { name: "branding", children: _jsxs(ObjectScope, { name: "branding", children: [_jsx(FormField, { name: "logo" }), _jsx(FormField, { name: "favicon" }), _jsx(FormField, { name: "primaryColor" }), _jsx(FormField, { name: "secondaryColor" }), _jsx(FormField, { name: "customDomain" })] }) }), _jsx(Section, { name: "social", children: _jsxs(ObjectScope, { name: "socialLinks", children: [_jsx(FormField, { name: "linkedin" }), _jsx(FormField, { name: "twitter" }), _jsx(FormField, { name: "facebook" }), _jsx(FormField, { name: "github" })] }) })] })),
170
170
  },
171
171
  views: [
@@ -179,7 +179,7 @@ export function buildOrganizationsMainPresets() {
179
179
  layout: {
180
180
  refs: { sections: ['addresses', 'categories'] },
181
181
  display: () => (_jsxs(DisplayLayout, { children: [_jsx(Section, { name: "addresses", appearance: SectionMode.CARD, children: _jsxs(ObjectScope, { name: "emailNotifications", children: [_jsx(DisplayField, { name: "defaultEmailAddress" }), _jsx(DisplayField, { name: "billingAddress" }), _jsx(DisplayField, { name: "securityAddress" }), _jsx(DisplayField, { name: "administrativeAddress" }), _jsx(DisplayField, { name: "usersManagementAddress" })] }) }), _jsx(Section, { name: "categories", children: _jsxs(ObjectScope, { name: "emailNotifications", children: [_jsx(DisplayField, { name: "billing" }), _jsx(DisplayField, { name: "administrative" }), _jsx(DisplayField, { name: "security" }), _jsx(DisplayField, { name: "usersManagement" })] }) })] })),
182
- summary: () => (_jsx(SummaryLayout, { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm", children: _jsx(ObjectScope, { name: "emailNotifications", children: _jsx(DisplayField, { name: "defaultEmailAddress" }) }) })),
182
+ summary: () => (_jsx(SummaryLayout, { flow: SummaryFlow.ROW, children: _jsx(ObjectScope, { name: "emailNotifications", children: _jsx(DisplayField, { name: "defaultEmailAddress" }) }) })),
183
183
  edit: () => (_jsxs(FormLayout, { children: [_jsx(Section, { name: "addresses", appearance: SectionMode.CARD, children: _jsxs(ObjectScope, { name: "emailNotifications", children: [_jsx(FormField, { name: "defaultEmailAddress" }), _jsx(FormField, { name: "billingAddress" }), _jsx(FormField, { name: "securityAddress" }), _jsx(FormField, { name: "administrativeAddress" }), _jsx(FormField, { name: "usersManagementAddress" })] }) }), _jsx(Section, { name: "categories", children: _jsxs(ObjectScope, { name: "emailNotifications", children: [_jsx(FormField, { name: "billing" }), _jsx(FormField, { name: "administrative" }), _jsx(FormField, { name: "security" }), _jsx(FormField, { name: "usersManagement" })] }) })] })),
184
184
  },
185
185
  views: [
@@ -192,7 +192,7 @@ export function buildOrganizationsMainPresets() {
192
192
  layout: {
193
193
  refs: { sections: ['regional', 'language', 'overrides'] },
194
194
  display: () => (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "regional", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "timezone" }), _jsx(DisplayField, { name: "locale" }), _jsx(DisplayField, { name: "dateFormat" }), _jsx(DisplayField, { name: "timeFormat" })] }), _jsx(Section, { name: "language", children: _jsxs(ObjectScope, { name: "languagePreferences", children: [_jsx(DisplayField, { name: "primaryLanguage" }), _jsx(DisplayField, { name: "supportedLanguages" }), _jsx(DisplayField, { name: "allowUserOverride" }), _jsx(DisplayField, { name: "enforceForAllMembers" })] }) }), _jsx(Section, { name: "overrides", children: _jsx(DisplayField, { name: "allowMemberEmailOverride" }) })] })),
195
- summary: () => (_jsxs(SummaryLayout, { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm", children: [_jsx(DisplayField, { name: "timezone" }), _jsx(DisplayField, { name: "locale" }), _jsx(ObjectScope, { name: "languagePreferences", children: _jsx(DisplayField, { name: "primaryLanguage" }) })] })),
195
+ summary: () => (_jsxs(SummaryLayout, { flow: SummaryFlow.ROW, children: [_jsx(DisplayField, { name: "timezone" }), _jsx(DisplayField, { name: "locale" }), _jsx(ObjectScope, { name: "languagePreferences", children: _jsx(DisplayField, { name: "primaryLanguage" }) })] })),
196
196
  edit: () => (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "regional", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "timezone" }), _jsx(FormField, { name: "locale" }), _jsx(FormField, { name: "dateFormat" }), _jsx(FormField, { name: "timeFormat" })] }), _jsx(Section, { name: "language", children: _jsxs(ObjectScope, { name: "languagePreferences", children: [_jsx(FormField, { name: "primaryLanguage" }), _jsx(FormField, { name: "supportedLanguages" }), _jsx(FormField, { name: "allowUserOverride" }), _jsx(FormField, { name: "enforceForAllMembers" })] }) }), _jsx(Section, { name: "overrides", children: _jsx(FormField, { name: "allowMemberEmailOverride" }) })] })),
197
197
  },
198
198
  views: [
@@ -204,7 +204,7 @@ export function buildOrganizationsMainPresets() {
204
204
  layout: {
205
205
  refs: { sections: ['overview', 'overrides'] },
206
206
  display: () => (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "features" }), _jsx(DisplayField, { name: "limits" })] }), _jsx(Section, { name: "overrides", children: _jsxs(ObjectScope, { name: "manualOverrides", children: [_jsx(DisplayField, { name: "addedFeatures" }), _jsx(DisplayField, { name: "removedFeatures" }), _jsx(DisplayField, { name: "limitOverrides" })] }) })] })),
207
- summary: () => (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx(DisplayField, { name: "features" }), _jsx(DisplayField, { name: "limits" })] })),
207
+ summary: () => (_jsxs(SummaryLayout, { children: [_jsx(DisplayField, { name: "features" }), _jsx(DisplayField, { name: "limits" })] })),
208
208
  edit: () => (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "features" }), _jsx(FormField, { name: "limits" })] }), _jsx(Section, { name: "overrides", children: _jsxs(ObjectScope, { name: "manualOverrides", children: [_jsx(FormField, { name: "addedFeatures" }), _jsx(FormField, { name: "removedFeatures" }), _jsx(FormField, { name: "limitOverrides" })] }) })] })),
209
209
  },
210
210
  views: [
@@ -1 +1 @@
1
- {"version":3,"file":"organizations.resource-presets.js","sourceRoot":"","sources":["../../../../../src/config/resources/organizations.resource-presets.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport type { ResourceUIBehavior, ResourceOperationFrontendConfig } from '@wildo-ai/saas-frontend-lib';\nimport {\n resourceUIBehavior,\n resourceUIBehaviorFrom,\n StandardIconReference,\n ActionVisibility,\n} from '@wildo-ai/saas-frontend-lib';\nimport {\n DisplayField,\n DisplayLayout,\n FormField,\n FormLayout,\n ObjectScope,\n RelatedResourceSections,\n Section,\n SummaryLayout,\n} from '@wildo-ai/saas-frontend-lib';\nimport { BadgeSemanticVariant, DisplayChromeMode, EditChromeMode, EnumDisplayMode, SectionMode } from '@wildo-ai/zod-decorators';\nimport {\n Archive,\n ArchiveRestore,\n Ban,\n CirclePause,\n GitBranch,\n Move,\n Paintbrush,\n Power,\n RotateCcw,\n Send,\n ToggleLeft,\n ToggleRight,\n Trash2,\n UserPlus,\n} from 'lucide-react';\nimport {\n CoreResourceType as R,\n CoreResourceOperation as Op,\n OrganizationStatus,\n OrganizationMemberStatus,\n OrganizationUnit_Operations,\n OrganizationMembers_Operations,\n OrganizationProfile_Operations,\n Organization_Lifecycle_Operations,\n OrganizationFeatures_Operations,\n organizationResourceConfiguration_InitializationFactory as orgFactory,\n organizationUnitResourceConfiguration_InitializationFactory as orgUnitFactory,\n organizationMembersResourceConfiguration_InitializationFactory as orgMembersFactory,\n organizationProfileResourceConfiguration_InitializationFactory as orgProfileFactory,\n organizationNotificationsResourceConfiguration_InitializationFactory as orgNotificationsFactory,\n organizationPreferencesResourceConfiguration_InitializationFactory as orgPreferencesFactory,\n organizationFeaturesResourceConfiguration_InitializationFactory as orgFeaturesFactory,\n OrganizationSchema,\n OrganizationUnitSchema,\n OrganizationMemberSchema,\n OrganizationProfileSchema,\n OrganizationNotificationsSchema,\n OrganizationPreferencesSchema,\n ScopeFeaturesWithOverridesSchema,\n} from '@wildo-ai/saas-models';\nimport { addressable, notAddressable, apiOnly } from './resource.config.utils';\n\n/**\n * Organizations — Resource frontend presets\n *\n * Domain: ORGANIZATIONS, ORGANIZATION_UNITS, ORGANIZATION_MEMBERS,\n * ORGANIZATION_PROFILES,\n * ORGANIZATION_NOTIFICATIONS, ORGANIZATION_PREFERENCES, ORGANIZATION_FEATURES\n *\n * Enum badges use inline `values` and `showDescription: true` like `billing.resource-presets.tsx`.\n * Layout templates are implemented inline in each resource config.\n */\n\n/**\n * Org lifecycle-transition action config, shared by the main and admin org\n * presets (the same super-admin transitions surface in the main-app settings\n * hub today and will surface in the dedicated admin app later).\n *\n * ACTIVATE/SUSPEND are direct status transitions with no intermediate view, so\n * they are gated purely by their `enabledCondition` (org status). The\n * `WHEN_AVAILABLE` visibility makes each action **vanish** (rather than render\n * disabled) when its precondition is unmet: ACTIVATE shows only on a\n * suspended/expired org, SUSPEND only on an active/trial one. The icon overrides\n * give the custom ops a meaningful glyph instead of the action-bar fallback.\n */\nconst organizationLifecycleOpViews: Array<[Organization_Lifecycle_Operations, ResourceOperationFrontendConfig]> = [\n [Organization_Lifecycle_Operations.ACTIVATE, notAddressable({ iconOverride: Power, actionVisibility: ActionVisibility.WHEN_AVAILABLE })],\n [Organization_Lifecycle_Operations.SUSPEND, notAddressable({ iconOverride: CirclePause, actionVisibility: ActionVisibility.WHEN_AVAILABLE, hasDescription: true })],\n // Tenant teardown (WS-A). `request_deletion` is the tenant-facing delete — it REPLACED the\n // org-admin `DELETE` action, which no longer exists as an API door. `hasDescription` because the\n // confirmation copy has to say the thing a delete dialog normally cannot: this is reversible,\n // and until when.\n [Organization_Lifecycle_Operations.REQUEST_DELETION, notAddressable({ iconOverride: Trash2, actionVisibility: ActionVisibility.WHEN_AVAILABLE, hasDescription: true })],\n // Only ever available on a marked tenant, and only to a platform super-admin — the role gate on\n // the action bar hides it from everyone else, and `WHEN_AVAILABLE` hides it on a live tenant.\n [Organization_Lifecycle_Operations.RESTORE, notAddressable({ iconOverride: RotateCcw, actionVisibility: ActionVisibility.WHEN_AVAILABLE, hasDescription: true })],\n];\n\nexport function buildOrganizationsMainPresets(): Partial<ResourceUIBehavior> {\n return {\n [R.ORGANIZATIONS]: resourceUIBehavior(orgFactory, OrganizationSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.ORGANIZATION,\n layout: {\n refs: { sections: ['overview', 'lifecycle'] },\n // Settings-page chrome: shown in the Settings Hub (General). Read + edit render as\n // label-left / value-right rows; the list/summary stays compact.\n defaultChromeMode: { display: DisplayChromeMode.SETTINGS_ROW, summary: DisplayChromeMode.INLINE, edit: EditChromeMode.SETTINGS_ROW },\n display: () => (\n <DisplayLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <DisplayField name=\"name\" />\n <DisplayField name=\"slug\" />\n <DisplayField name=\"status\" />\n <DisplayField name=\"type\" />\n </Section>\n <Section name=\"lifecycle\">\n <DisplayField name=\"createdAt\" />\n </Section>\n {/*\n The organization's own children, named here rather than curated\n through per-edge relationship config.\n\n Placing them makes this template OWN the child region: automatic\n composition stands down, so the tenant's APPLICATION resources\n (todo lists, todos, tasks — org-scoped, and therefore owned children\n of every organization) stop appearing as tabs on an engine admin\n surface that only ever intended these three. That leak was the\n price of composing every owned child by default; naming them is\n what removes it, and it removes the ~16 `hidden: true` opt-outs\n that used to say the same thing edge by edge.\n\n Titles come from each child resource's own header label, so this\n adds no `layout.refs` entry and no specification slot.\n */}\n <RelatedResourceSections\n config={{ mode: SectionMode.TABS }}\n targets={[R.ORGANIZATION_UNITS, R.ORGANIZATION_MEMBERS, R.ORGANIZATION_FEATURES]}\n />\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout className=\"flex flex-col gap-2 text-sm\">\n <div className=\"font-medium leading-tight\">\n <DisplayField name=\"name\" hideLabel />\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1\">\n <DisplayField name=\"slug\" />\n <DisplayField name=\"status\" />\n <DisplayField name=\"type\" />\n <DisplayField name=\"createdAt\" />\n </div>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <FormField name=\"name\" />\n <FormField name=\"slug\" />\n <FormField name=\"status\" />\n <FormField name=\"type\" />\n </Section>\n </FormLayout>\n ),\n },\n fields: {\n status: schemaShape.status.enumUI({\n display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },\n edit: { showDescription: true },\n values: {\n [OrganizationStatus.ACTIVE]: { color: BadgeSemanticVariant.SUCCESS },\n [OrganizationStatus.SUSPENDED]: { color: BadgeSemanticVariant.DESTRUCTIVE },\n [OrganizationStatus.TRIAL]: { color: BadgeSemanticVariant.INFO },\n [OrganizationStatus.TRIAL_EXPIRED]: { color: BadgeSemanticVariant.WARNING },\n [OrganizationStatus.CANCELLED]: { color: BadgeSemanticVariant.SECONDARY },\n [OrganizationStatus.DELETED]: { color: BadgeSemanticVariant.DESTRUCTIVE },\n },\n }),\n },\n getFrontendResourceLabel: ({ currentObject }) => currentObject.name,\n views: [\n // Organizations are created via the registration/signup flow, not a resource\n // create form — headless (no form view, created programmatically by the flow).\n [Op.CREATE, apiOnly()],\n [Op.READ, notAddressable()],\n [Op.UPDATE, notAddressable()],\n // NO `Op.DELETE` view. Since the WS-A teardown split the DEFAULT delete variant is a\n // route-less INTERNAL_CALL owned by the `organization-purge` batch, so there is no HTTP\n // door for this view to drive — rendering an action for it would produce a button that\n // cannot be invoked. The tenant-facing verb is `request_deletion`, below. The `admin`\n // purge-now variant keeps its view in the admin presets.\n ...organizationLifecycleOpViews,\n ],\n })),\n\n [R.ORGANIZATION_UNITS]: resourceUIBehavior(orgUnitFactory, OrganizationUnitSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: GitBranch,\n getFrontendResourceLabel: ({ currentObject }) => currentObject.name,\n layout: {\n refs: { sections: ['identity', 'hierarchy'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"identity\" appearance={SectionMode.CARD}>\n <DisplayField name=\"name\" />\n <DisplayField name=\"code\" />\n <DisplayField name=\"type\" />\n <DisplayField name=\"status\" />\n </Section>\n <Section name=\"hierarchy\">\n <DisplayField name=\"parentUnitId\" />\n <DisplayField name=\"path\" />\n <DisplayField name=\"inheritanceType\" />\n </Section>\n {/*\n Sub-units — a SELF-REFERENCING edge, so this nests: a unit shows its\n children, each of which is a unit that shows its own. Bounded by the\n framework embed-depth default and by the cycle guard keyed on\n `(edge, host row)`, which admits a genuine hierarchy over distinct\n rows while refusing a row that reappears on its own path.\n */}\n <RelatedResourceSections\n config={{ mode: SectionMode.TABS }}\n targets={[R.ORGANIZATION_UNITS]}\n />\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout className=\"flex flex-col gap-2 text-sm\">\n <div className=\"font-medium leading-tight\">\n <DisplayField name=\"name\" hideLabel />\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1\">\n <DisplayField name=\"type\" />\n <DisplayField name=\"status\" />\n </div>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"identity\" appearance={SectionMode.CARD}>\n <FormField name=\"name\" />\n <FormField name=\"code\" />\n <FormField name=\"type\" />\n <FormField name=\"status\" />\n </Section>\n <Section name=\"hierarchy\">\n <FormField name=\"parentUnitId\" />\n <FormField name=\"inheritanceType\" />\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.CREATE, notAddressable()],\n [Op.READ, notAddressable()],\n [Op.LIST, notAddressable()],\n [Op.SEARCH, notAddressable()],\n [Op.UPDATE, notAddressable()],\n [Op.DELETE, notAddressable()],\n [OrganizationUnit_Operations.MOVE, notAddressable({ iconOverride: Move })],\n [OrganizationUnit_Operations.ARCHIVE, notAddressable({ iconOverride: Archive })],\n [OrganizationUnit_Operations.RESTORE, notAddressable({ iconOverride: ArchiveRestore })],\n ],\n })),\n\n [R.ORGANIZATION_MEMBERS]: resourceUIBehavior(orgMembersFactory, OrganizationMemberSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.TEAM,\n layout: {\n refs: { sections: ['overview', 'membership'] },\n // Settings-page chrome (Settings Hub → Members): label-left / value-right rows.\n defaultChromeMode: { display: DisplayChromeMode.SETTINGS_ROW, summary: DisplayChromeMode.INLINE, edit: EditChromeMode.SETTINGS_ROW },\n display: () => (\n <DisplayLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <DisplayField name=\"userTitle\" />\n <DisplayField name=\"status\" />\n <DisplayField name=\"roles\" />\n </Section>\n {/* Unit assignments moved out of this row entirely (D-B5): they are now\n ORGANIZATION_UNIT_MEMBERS rows, surfaced through that resource rather than as an\n embedded field here. The section keeps its slot ref for `createdAt`. */}\n <Section name=\"membership\">\n <DisplayField name=\"createdAt\" />\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout className=\"flex flex-col gap-2 text-sm\">\n <div className=\"font-medium leading-tight\">\n <DisplayField name=\"userTitle\" hideLabel />\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1\">\n <DisplayField name=\"roles\" />\n <DisplayField name=\"status\" />\n </div>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n {/* Invite email — the admin's invitee address. Renders on the CREATE (invite)\n form only: `userEmail` is `.excludeFromUpdate()`, so it's absent from the\n UPDATE DTO and this FormField auto-skips on the edit form. The invite prefix\n find-or-creates the User by this email. Placed first — it's the primary input. */}\n <FormField name=\"userEmail\" />\n <FormField name=\"userTitle\" />\n <FormField name=\"status\" />\n <FormField name=\"roles\" />\n </Section>\n {/* No `membership` section on the edit form: its only field was\n `organizationUnitsMembership`, now the ORGANIZATION_UNIT_MEMBERS junction (D-B5).\n Assigning a member to a unit is a write against that resource, not a field edit\n here — which is also what makes it role-ceiling governed. */}\n </FormLayout>\n ),\n },\n fields: {\n status: schemaShape.status.enumUI({\n display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },\n edit: { showDescription: true },\n values: {\n [OrganizationMemberStatus.INVITED]: { color: BadgeSemanticVariant.INFO },\n [OrganizationMemberStatus.ACTIVE]: { color: BadgeSemanticVariant.SUCCESS },\n [OrganizationMemberStatus.INACTIVE]: { color: BadgeSemanticVariant.SECONDARY },\n [OrganizationMemberStatus.SUSPENDED]: { color: BadgeSemanticVariant.DESTRUCTIVE },\n },\n }),\n },\n // A membership has no inherent name — its identity is the related user.\n // `instanceLabel` is a server-resolved virtual field that forwards the\n // user's name live from `USER_PROFILES` (see `forwardedLabel` on\n // `OrganizationMemberSchema`), so the label is a plain, synchronous field\n // ref — never stale, tenant-safe, no async frontend resolver. `userTitle`\n // is the distinct authored job title and stays its own FIELD.\n getFrontendResourceLabel: ['instanceLabel'],\n views: [\n [Op.COUNT, notAddressable()],\n // CREATE is the org-admin INVITE entry point (it mints the invitee's pending\n // membership row directly on this junction — invitations are no longer a separate\n // resource). Surfaced as an EMBEDDED action (\"Invite member\", UserPlus): the\n // collection toolbar shows the button, which opens the invite form overlay (email +\n // roles + optional title/units). NOT `apiOnly()` — that hid it entirely, leaving no\n // way to invite from the UI.\n [Op.CREATE, notAddressable({ iconOverride: UserPlus })],\n [Op.READ, notAddressable()],\n [Op.LIST, addressable()],\n [Op.SEARCH, notAddressable()],\n [Op.UPDATE, notAddressable()],\n [Op.DELETE, notAddressable()],\n // Role changes ride `UPDATE` — the PROMOTE/DEMOTE verbs were removed on 2026-08-01\n // (routed but never implemented, so they answered 200 having changed nothing).\n [OrganizationMembers_Operations.SUSPEND, notAddressable({ iconOverride: CirclePause })],\n [OrganizationMembers_Operations.REACTIVATE, notAddressable({ iconOverride: Power })],\n // Invitation management on a still-INVITED row (invitations live in this list, not a\n // separate section): REVOKE cancels the pending invite (deletes the row + revokes its\n // accept token), RESEND re-issues the accept link. `WHEN_AVAILABLE` hides (not disables)\n // both on non-INVITED rows — they vanish on ACTIVE members rather than sit greyed out —\n // driven by the ops' `enabledCondition: status === INVITED` (resources-config). Surfaced\n // here so the spec's frontend `views` matches the merged config (companion validator).\n [OrganizationMembers_Operations.REVOKE, notAddressable({ iconOverride: Ban, actionVisibility: ActionVisibility.WHEN_AVAILABLE })],\n [OrganizationMembers_Operations.RESEND, notAddressable({ iconOverride: Send, actionVisibility: ActionVisibility.WHEN_AVAILABLE })],\n ],\n })),\n\n [R.ORGANIZATION_PROFILES]: resourceUIBehavior(orgProfileFactory, OrganizationProfileSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.PROFILE,\n getFrontendResourceLabel: ({ currentObject }) => currentObject.displayName || `Organization ${currentObject.organizationId}`,\n layout: {\n refs: { sections: ['company', 'classification', 'location', 'branding', 'social'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"company\" appearance={SectionMode.CARD}>\n <DisplayField name=\"displayName\" />\n <DisplayField name=\"domain\" />\n <DisplayField name=\"website\" />\n <DisplayField name=\"phone\" />\n <DisplayField name=\"description\" />\n </Section>\n <Section name=\"classification\">\n <DisplayField name=\"industry\" />\n <DisplayField name=\"size\" />\n <DisplayField name=\"founded\" />\n <DisplayField name=\"timezone\" />\n </Section>\n <Section name=\"location\">\n <DisplayField name=\"address\" />\n </Section>\n <Section name=\"branding\">\n <ObjectScope name=\"branding\">\n <DisplayField name=\"logo\" />\n <DisplayField name=\"favicon\" />\n <DisplayField name=\"primaryColor\" />\n <DisplayField name=\"secondaryColor\" />\n <DisplayField name=\"customDomain\" />\n </ObjectScope>\n </Section>\n <Section name=\"social\">\n <ObjectScope name=\"socialLinks\">\n <DisplayField name=\"linkedin\" />\n <DisplayField name=\"twitter\" />\n <DisplayField name=\"facebook\" />\n <DisplayField name=\"github\" />\n </ObjectScope>\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout className=\"text-sm\">\n <DisplayField name=\"displayName\" />\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"company\" appearance={SectionMode.CARD}>\n <FormField name=\"displayName\" />\n <FormField name=\"domain\" />\n <FormField name=\"website\" />\n <FormField name=\"phone\" />\n <FormField name=\"description\" />\n </Section>\n <Section name=\"classification\">\n <FormField name=\"industry\" />\n <FormField name=\"size\" />\n <FormField name=\"founded\" />\n <FormField name=\"timezone\" />\n </Section>\n <Section name=\"location\">\n <FormField name=\"address\" />\n </Section>\n <Section name=\"branding\">\n <ObjectScope name=\"branding\">\n <FormField name=\"logo\" />\n <FormField name=\"favicon\" />\n <FormField name=\"primaryColor\" />\n <FormField name=\"secondaryColor\" />\n <FormField name=\"customDomain\" />\n </ObjectScope>\n </Section>\n <Section name=\"social\">\n <ObjectScope name=\"socialLinks\">\n <FormField name=\"linkedin\" />\n <FormField name=\"twitter\" />\n <FormField name=\"facebook\" />\n <FormField name=\"github\" />\n </ObjectScope>\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.READ, notAddressable()],\n [Op.UPDATE, notAddressable()],\n [OrganizationProfile_Operations.UPDATE_BRANDING, notAddressable({ iconOverride: Paintbrush })],\n ],\n })),\n\n [R.ORGANIZATION_NOTIFICATIONS]: resourceUIBehavior(orgNotificationsFactory, OrganizationNotificationsSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.NOTIFICATION,\n layout: {\n refs: { sections: ['addresses', 'categories'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"addresses\" appearance={SectionMode.CARD}>\n <ObjectScope name=\"emailNotifications\">\n <DisplayField name=\"defaultEmailAddress\" />\n <DisplayField name=\"billingAddress\" />\n <DisplayField name=\"securityAddress\" />\n <DisplayField name=\"administrativeAddress\" />\n <DisplayField name=\"usersManagementAddress\" />\n </ObjectScope>\n </Section>\n <Section name=\"categories\">\n <ObjectScope name=\"emailNotifications\">\n <DisplayField name=\"billing\" />\n <DisplayField name=\"administrative\" />\n <DisplayField name=\"security\" />\n <DisplayField name=\"usersManagement\" />\n </ObjectScope>\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout className=\"flex flex-wrap items-center gap-x-3 gap-y-1 text-sm\">\n <ObjectScope name=\"emailNotifications\">\n <DisplayField name=\"defaultEmailAddress\" />\n </ObjectScope>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"addresses\" appearance={SectionMode.CARD}>\n <ObjectScope name=\"emailNotifications\">\n <FormField name=\"defaultEmailAddress\" />\n <FormField name=\"billingAddress\" />\n <FormField name=\"securityAddress\" />\n <FormField name=\"administrativeAddress\" />\n <FormField name=\"usersManagementAddress\" />\n </ObjectScope>\n </Section>\n <Section name=\"categories\">\n <ObjectScope name=\"emailNotifications\">\n <FormField name=\"billing\" />\n <FormField name=\"administrative\" />\n <FormField name=\"security\" />\n <FormField name=\"usersManagement\" />\n </ObjectScope>\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.READ, notAddressable()],\n [Op.UPDATE, notAddressable()],\n ],\n })),\n\n [R.ORGANIZATION_PREFERENCES]: resourceUIBehavior(orgPreferencesFactory, OrganizationPreferencesSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.SETTINGS,\n layout: {\n refs: { sections: ['regional', 'language', 'overrides'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"regional\" appearance={SectionMode.CARD}>\n <DisplayField name=\"timezone\" />\n <DisplayField name=\"locale\" />\n <DisplayField name=\"dateFormat\" />\n <DisplayField name=\"timeFormat\" />\n </Section>\n <Section name=\"language\">\n <ObjectScope name=\"languagePreferences\">\n <DisplayField name=\"primaryLanguage\" />\n <DisplayField name=\"supportedLanguages\" />\n <DisplayField name=\"allowUserOverride\" />\n <DisplayField name=\"enforceForAllMembers\" />\n </ObjectScope>\n </Section>\n <Section name=\"overrides\">\n <DisplayField name=\"allowMemberEmailOverride\" />\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout className=\"flex flex-wrap items-center gap-x-3 gap-y-1 text-sm\">\n <DisplayField name=\"timezone\" />\n <DisplayField name=\"locale\" />\n <ObjectScope name=\"languagePreferences\">\n <DisplayField name=\"primaryLanguage\" />\n </ObjectScope>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"regional\" appearance={SectionMode.CARD}>\n <FormField name=\"timezone\" />\n <FormField name=\"locale\" />\n <FormField name=\"dateFormat\" />\n <FormField name=\"timeFormat\" />\n </Section>\n <Section name=\"language\">\n <ObjectScope name=\"languagePreferences\">\n <FormField name=\"primaryLanguage\" />\n <FormField name=\"supportedLanguages\" />\n <FormField name=\"allowUserOverride\" />\n <FormField name=\"enforceForAllMembers\" />\n </ObjectScope>\n </Section>\n <Section name=\"overrides\">\n <FormField name=\"allowMemberEmailOverride\" />\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.READ, notAddressable()],\n [Op.UPDATE, notAddressable()],\n ],\n })),\n\n [R.ORGANIZATION_FEATURES]: resourceUIBehavior(orgFeaturesFactory, ScopeFeaturesWithOverridesSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n layout: {\n refs: { sections: ['overview', 'overrides'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <DisplayField name=\"features\" />\n <DisplayField name=\"limits\" />\n </Section>\n <Section name=\"overrides\">\n <ObjectScope name=\"manualOverrides\">\n <DisplayField name=\"addedFeatures\" />\n <DisplayField name=\"removedFeatures\" />\n <DisplayField name=\"limitOverrides\" />\n </ObjectScope>\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout className=\"flex flex-col gap-2 text-sm\">\n <DisplayField name=\"features\" />\n <DisplayField name=\"limits\" />\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <FormField name=\"features\" />\n <FormField name=\"limits\" />\n </Section>\n <Section name=\"overrides\">\n <ObjectScope name=\"manualOverrides\">\n <FormField name=\"addedFeatures\" />\n <FormField name=\"removedFeatures\" />\n <FormField name=\"limitOverrides\" />\n </ObjectScope>\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.READ, notAddressable()],\n [Op.SEARCH, notAddressable()],\n // Org feature flags are toggled programmatically, not via a generic edit form —\n // UPDATE is headless.\n [Op.UPDATE, apiOnly()],\n ],\n })),\n };\n}\n\nexport function buildOrganizationsAdminPresets(main: Partial<ResourceUIBehavior>): Partial<ResourceUIBehavior> {\n return {\n [R.ORGANIZATIONS]: resourceUIBehaviorFrom(orgFactory, main[R.ORGANIZATIONS]!, ({ base, opsVariantResolver }) => ({\n icon: base.icon,\n layout: base.layout,\n fields: base.fields,\n views: [\n [opsVariantResolver(Op.READ, 'admin'), notAddressable()],\n [Op.LIST, notAddressable()],\n [Op.SEARCH, notAddressable()],\n [opsVariantResolver(Op.CREATE, 'admin'), addressable()],\n [opsVariantResolver(Op.UPDATE, 'admin'), notAddressable()],\n [opsVariantResolver(Op.DELETE, 'admin'), notAddressable()],\n ...organizationLifecycleOpViews,\n ],\n })),\n [R.ORGANIZATION_FEATURES]: resourceUIBehaviorFrom(orgFeaturesFactory, main[R.ORGANIZATION_FEATURES]!, ({ base }) => ({\n icon: base.icon,\n layout: base.layout,\n views: [\n [Op.UPDATE, notAddressable()],\n [OrganizationFeatures_Operations.ENABLE_FEATURE, notAddressable({ iconOverride: ToggleRight })],\n [OrganizationFeatures_Operations.DISABLE_FEATURE, notAddressable({ iconOverride: ToggleLeft })],\n [OrganizationFeatures_Operations.RESET_FEATURES, notAddressable({ iconOverride: RotateCcw })],\n ],\n })),\n };\n}\n\nexport const organizationsMainPresets = buildOrganizationsMainPresets();\nexport const organizationsAdminPresets = buildOrganizationsAdminPresets(organizationsMainPresets);\n\nexport const organizationsMainOrgResourceUIBehavior = organizationsMainPresets[R.ORGANIZATIONS]!;\nexport const organizationsAdminOrgResourceUIBehavior = organizationsAdminPresets[R.ORGANIZATIONS]!;\nexport const organizationUnitsMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_UNITS]!;\nexport const organizationMembersMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_MEMBERS]!;\nexport const organizationProfilesMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_PROFILES]!;\nexport const organizationNotificationsMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_NOTIFICATIONS]!;\nexport const organizationPreferencesMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_PREFERENCES]!;\nexport const organizationFeaturesMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_FEATURES]!;\nexport const organizationFeaturesAdminResourceUIBehavior = organizationsAdminPresets[R.ORGANIZATION_FEATURES]!;\n"]}
1
+ {"version":3,"file":"organizations.resource-presets.js","sourceRoot":"","sources":["../../../../../src/config/resources/organizations.resource-presets.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport type { ResourceUIBehavior, ResourceOperationFrontendConfig } from '@wildo-ai/saas-frontend-lib';\nimport {\n resourceUIBehavior,\n resourceUIBehaviorFrom,\n StandardIconReference,\n ActionVisibility,\n} from '@wildo-ai/saas-frontend-lib';\nimport {\n DisplayField,\n DisplayLayout,\n FormField,\n FormLayout,\n ObjectScope,\n RelatedResourceSections,\n Section,\n SummaryLayout,\n SummaryFlow,\n SummaryMeta,\n SummaryTitle,\n} from '@wildo-ai/saas-frontend-lib';\nimport { BadgeSemanticVariant, DisplayChromeMode, EditChromeMode, EnumDisplayMode, SectionMode } from '@wildo-ai/zod-decorators';\nimport {\n Archive,\n ArchiveRestore,\n Ban,\n CirclePause,\n GitBranch,\n Move,\n Paintbrush,\n Power,\n RotateCcw,\n Send,\n ToggleLeft,\n ToggleRight,\n Trash2,\n UserPlus,\n} from 'lucide-react';\nimport {\n CoreResourceType as R,\n CoreResourceOperation as Op,\n OrganizationStatus,\n OrganizationMemberStatus,\n OrganizationUnit_Operations,\n OrganizationMembers_Operations,\n OrganizationProfile_Operations,\n Organization_Lifecycle_Operations,\n OrganizationFeatures_Operations,\n organizationResourceConfiguration_InitializationFactory as orgFactory,\n organizationUnitResourceConfiguration_InitializationFactory as orgUnitFactory,\n organizationMembersResourceConfiguration_InitializationFactory as orgMembersFactory,\n organizationProfileResourceConfiguration_InitializationFactory as orgProfileFactory,\n organizationNotificationsResourceConfiguration_InitializationFactory as orgNotificationsFactory,\n organizationPreferencesResourceConfiguration_InitializationFactory as orgPreferencesFactory,\n organizationFeaturesResourceConfiguration_InitializationFactory as orgFeaturesFactory,\n OrganizationSchema,\n OrganizationUnitSchema,\n OrganizationMemberSchema,\n OrganizationProfileSchema,\n OrganizationNotificationsSchema,\n OrganizationPreferencesSchema,\n ScopeFeaturesWithOverridesSchema,\n} from '@wildo-ai/saas-models';\nimport { addressable, notAddressable, apiOnly } from './resource.config.utils';\n\n/**\n * Organizations — Resource frontend presets\n *\n * Domain: ORGANIZATIONS, ORGANIZATION_UNITS, ORGANIZATION_MEMBERS,\n * ORGANIZATION_PROFILES,\n * ORGANIZATION_NOTIFICATIONS, ORGANIZATION_PREFERENCES, ORGANIZATION_FEATURES\n *\n * Enum badges use inline `values` and `showDescription: true` like `billing.resource-presets.tsx`.\n * Layout templates are implemented inline in each resource config.\n */\n\n/**\n * Org lifecycle-transition action config, shared by the main and admin org\n * presets (the same super-admin transitions surface in the main-app settings\n * hub today and will surface in the dedicated admin app later).\n *\n * ACTIVATE/SUSPEND are direct status transitions with no intermediate view, so\n * they are gated purely by their `enabledCondition` (org status). The\n * `WHEN_AVAILABLE` visibility makes each action **vanish** (rather than render\n * disabled) when its precondition is unmet: ACTIVATE shows only on a\n * suspended/expired org, SUSPEND only on an active/trial one. The icon overrides\n * give the custom ops a meaningful glyph instead of the action-bar fallback.\n */\nconst organizationLifecycleOpViews: Array<[Organization_Lifecycle_Operations, ResourceOperationFrontendConfig]> = [\n [Organization_Lifecycle_Operations.ACTIVATE, notAddressable({ iconOverride: Power, actionVisibility: ActionVisibility.WHEN_AVAILABLE })],\n [Organization_Lifecycle_Operations.SUSPEND, notAddressable({ iconOverride: CirclePause, actionVisibility: ActionVisibility.WHEN_AVAILABLE, hasDescription: true })],\n // Tenant teardown (WS-A). `request_deletion` is the tenant-facing delete — it REPLACED the\n // org-admin `DELETE` action, which no longer exists as an API door. `hasDescription` because the\n // confirmation copy has to say the thing a delete dialog normally cannot: this is reversible,\n // and until when.\n [Organization_Lifecycle_Operations.REQUEST_DELETION, notAddressable({ iconOverride: Trash2, actionVisibility: ActionVisibility.WHEN_AVAILABLE, hasDescription: true })],\n // Only ever available on a marked tenant, and only to a platform super-admin — the role gate on\n // the action bar hides it from everyone else, and `WHEN_AVAILABLE` hides it on a live tenant.\n [Organization_Lifecycle_Operations.RESTORE, notAddressable({ iconOverride: RotateCcw, actionVisibility: ActionVisibility.WHEN_AVAILABLE, hasDescription: true })],\n];\n\nexport function buildOrganizationsMainPresets(): Partial<ResourceUIBehavior> {\n return {\n [R.ORGANIZATIONS]: resourceUIBehavior(orgFactory, OrganizationSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.ORGANIZATION,\n layout: {\n refs: { sections: ['overview', 'lifecycle'] },\n // Settings-page chrome: shown in the Settings Hub (General). Read + edit render as\n // label-left / value-right rows; the list/summary stays compact.\n defaultChromeMode: { display: DisplayChromeMode.SETTINGS_ROW, summary: DisplayChromeMode.INLINE, edit: EditChromeMode.SETTINGS_ROW },\n display: () => (\n <DisplayLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <DisplayField name=\"name\" />\n <DisplayField name=\"slug\" />\n <DisplayField name=\"status\" />\n <DisplayField name=\"type\" />\n </Section>\n <Section name=\"lifecycle\">\n <DisplayField name=\"createdAt\" />\n </Section>\n {/*\n The organization's own children, named here rather than curated\n through per-edge relationship config.\n\n Placing them makes this template OWN the child region: automatic\n composition stands down, so the tenant's APPLICATION resources\n (todo lists, todos, tasks — org-scoped, and therefore owned children\n of every organization) stop appearing as tabs on an engine admin\n surface that only ever intended these three. That leak was the\n price of composing every owned child by default; naming them is\n what removes it, and it removes the ~16 `hidden: true` opt-outs\n that used to say the same thing edge by edge.\n\n Titles come from each child resource's own header label, so this\n adds no `layout.refs` entry and no specification slot.\n */}\n <RelatedResourceSections\n config={{ mode: SectionMode.TABS }}\n targets={[R.ORGANIZATION_UNITS, R.ORGANIZATION_MEMBERS, R.ORGANIZATION_FEATURES]}\n />\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout>\n <SummaryTitle name=\"name\" />\n <SummaryMeta>\n <DisplayField name=\"slug\" />\n <DisplayField name=\"status\" />\n <DisplayField name=\"type\" />\n <DisplayField name=\"createdAt\" />\n </SummaryMeta>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <FormField name=\"name\" />\n <FormField name=\"slug\" />\n <FormField name=\"status\" />\n <FormField name=\"type\" />\n </Section>\n </FormLayout>\n ),\n },\n fields: {\n status: schemaShape.status.enumUI({\n display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },\n edit: { showDescription: true },\n values: {\n [OrganizationStatus.ACTIVE]: { color: BadgeSemanticVariant.SUCCESS },\n [OrganizationStatus.SUSPENDED]: { color: BadgeSemanticVariant.DESTRUCTIVE },\n [OrganizationStatus.TRIAL]: { color: BadgeSemanticVariant.INFO },\n [OrganizationStatus.TRIAL_EXPIRED]: { color: BadgeSemanticVariant.WARNING },\n [OrganizationStatus.CANCELLED]: { color: BadgeSemanticVariant.SECONDARY },\n [OrganizationStatus.DELETED]: { color: BadgeSemanticVariant.DESTRUCTIVE },\n },\n }),\n },\n getFrontendResourceLabel: ({ currentObject }) => currentObject.name,\n views: [\n // Organizations are created via the registration/signup flow, not a resource\n // create form — headless (no form view, created programmatically by the flow).\n [Op.CREATE, apiOnly()],\n [Op.READ, notAddressable()],\n [Op.UPDATE, notAddressable()],\n // NO `Op.DELETE` view. Since the WS-A teardown split the DEFAULT delete variant is a\n // route-less INTERNAL_CALL owned by the `organization-purge` batch, so there is no HTTP\n // door for this view to drive — rendering an action for it would produce a button that\n // cannot be invoked. The tenant-facing verb is `request_deletion`, below. The `admin`\n // purge-now variant keeps its view in the admin presets.\n ...organizationLifecycleOpViews,\n ],\n })),\n\n [R.ORGANIZATION_UNITS]: resourceUIBehavior(orgUnitFactory, OrganizationUnitSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: GitBranch,\n getFrontendResourceLabel: ({ currentObject }) => currentObject.name,\n layout: {\n refs: { sections: ['identity', 'hierarchy'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"identity\" appearance={SectionMode.CARD}>\n <DisplayField name=\"name\" />\n <DisplayField name=\"code\" />\n <DisplayField name=\"type\" />\n <DisplayField name=\"status\" />\n </Section>\n <Section name=\"hierarchy\">\n <DisplayField name=\"parentUnitId\" />\n <DisplayField name=\"path\" />\n <DisplayField name=\"inheritanceType\" />\n </Section>\n {/*\n Sub-units — a SELF-REFERENCING edge, so this nests: a unit shows its\n children, each of which is a unit that shows its own. Bounded by the\n framework embed-depth default and by the cycle guard keyed on\n `(edge, host row)`, which admits a genuine hierarchy over distinct\n rows while refusing a row that reappears on its own path.\n */}\n <RelatedResourceSections\n config={{ mode: SectionMode.TABS }}\n targets={[R.ORGANIZATION_UNITS]}\n />\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout>\n <SummaryTitle name=\"name\" />\n <SummaryMeta>\n <DisplayField name=\"type\" />\n <DisplayField name=\"status\" />\n </SummaryMeta>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"identity\" appearance={SectionMode.CARD}>\n <FormField name=\"name\" />\n <FormField name=\"code\" />\n <FormField name=\"type\" />\n <FormField name=\"status\" />\n </Section>\n <Section name=\"hierarchy\">\n <FormField name=\"parentUnitId\" />\n <FormField name=\"inheritanceType\" />\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.CREATE, notAddressable()],\n [Op.READ, notAddressable()],\n [Op.LIST, notAddressable()],\n [Op.SEARCH, notAddressable()],\n [Op.UPDATE, notAddressable()],\n [Op.DELETE, notAddressable()],\n [OrganizationUnit_Operations.MOVE, notAddressable({ iconOverride: Move })],\n [OrganizationUnit_Operations.ARCHIVE, notAddressable({ iconOverride: Archive })],\n [OrganizationUnit_Operations.RESTORE, notAddressable({ iconOverride: ArchiveRestore })],\n ],\n })),\n\n [R.ORGANIZATION_MEMBERS]: resourceUIBehavior(orgMembersFactory, OrganizationMemberSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.TEAM,\n layout: {\n refs: { sections: ['overview', 'membership'] },\n // Settings-page chrome (Settings Hub → Members): label-left / value-right rows.\n defaultChromeMode: { display: DisplayChromeMode.SETTINGS_ROW, summary: DisplayChromeMode.INLINE, edit: EditChromeMode.SETTINGS_ROW },\n display: () => (\n <DisplayLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <DisplayField name=\"userTitle\" />\n <DisplayField name=\"status\" />\n <DisplayField name=\"roles\" />\n </Section>\n {/* Unit assignments moved out of this row entirely (D-B5): they are now\n ORGANIZATION_UNIT_MEMBERS rows, surfaced through that resource rather than as an\n embedded field here. The section keeps its slot ref for `createdAt`. */}\n <Section name=\"membership\">\n <DisplayField name=\"createdAt\" />\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout>\n <SummaryTitle name=\"userTitle\" />\n <SummaryMeta>\n <DisplayField name=\"roles\" />\n <DisplayField name=\"status\" />\n </SummaryMeta>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n {/* Invite email — the admin's invitee address. Renders on the CREATE (invite)\n form only: `userEmail` is `.excludeFromUpdate()`, so it's absent from the\n UPDATE DTO and this FormField auto-skips on the edit form. The invite prefix\n find-or-creates the User by this email. Placed first — it's the primary input. */}\n <FormField name=\"userEmail\" />\n <FormField name=\"userTitle\" />\n <FormField name=\"status\" />\n <FormField name=\"roles\" />\n </Section>\n {/* No `membership` section on the edit form: its only field was\n `organizationUnitsMembership`, now the ORGANIZATION_UNIT_MEMBERS junction (D-B5).\n Assigning a member to a unit is a write against that resource, not a field edit\n here — which is also what makes it role-ceiling governed. */}\n </FormLayout>\n ),\n },\n fields: {\n status: schemaShape.status.enumUI({\n display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },\n edit: { showDescription: true },\n values: {\n [OrganizationMemberStatus.INVITED]: { color: BadgeSemanticVariant.INFO },\n [OrganizationMemberStatus.ACTIVE]: { color: BadgeSemanticVariant.SUCCESS },\n [OrganizationMemberStatus.INACTIVE]: { color: BadgeSemanticVariant.SECONDARY },\n [OrganizationMemberStatus.SUSPENDED]: { color: BadgeSemanticVariant.DESTRUCTIVE },\n },\n }),\n },\n // A membership has no inherent name — its identity is the related user.\n // `instanceLabel` is a server-resolved virtual field that forwards the\n // user's name live from `USER_PROFILES` (see `forwardedLabel` on\n // `OrganizationMemberSchema`), so the label is a plain, synchronous field\n // ref — never stale, tenant-safe, no async frontend resolver. `userTitle`\n // is the distinct authored job title and stays its own FIELD.\n getFrontendResourceLabel: ['instanceLabel'],\n views: [\n [Op.COUNT, notAddressable()],\n // CREATE is the org-admin INVITE entry point (it mints the invitee's pending\n // membership row directly on this junction — invitations are no longer a separate\n // resource). Surfaced as an EMBEDDED action (\"Invite member\", UserPlus): the\n // collection toolbar shows the button, which opens the invite form overlay (email +\n // roles + optional title/units). NOT `apiOnly()` — that hid it entirely, leaving no\n // way to invite from the UI.\n [Op.CREATE, notAddressable({ iconOverride: UserPlus })],\n [Op.READ, notAddressable()],\n [Op.LIST, addressable()],\n [Op.SEARCH, notAddressable()],\n [Op.UPDATE, notAddressable()],\n [Op.DELETE, notAddressable()],\n // Role changes ride `UPDATE` — the PROMOTE/DEMOTE verbs were removed on 2026-08-01\n // (routed but never implemented, so they answered 200 having changed nothing).\n [OrganizationMembers_Operations.SUSPEND, notAddressable({ iconOverride: CirclePause })],\n [OrganizationMembers_Operations.REACTIVATE, notAddressable({ iconOverride: Power })],\n // Invitation management on a still-INVITED row (invitations live in this list, not a\n // separate section): REVOKE cancels the pending invite (deletes the row + revokes its\n // accept token), RESEND re-issues the accept link. `WHEN_AVAILABLE` hides (not disables)\n // both on non-INVITED rows — they vanish on ACTIVE members rather than sit greyed out —\n // driven by the ops' `enabledCondition: status === INVITED` (resources-config). Surfaced\n // here so the spec's frontend `views` matches the merged config (companion validator).\n [OrganizationMembers_Operations.REVOKE, notAddressable({ iconOverride: Ban, actionVisibility: ActionVisibility.WHEN_AVAILABLE })],\n [OrganizationMembers_Operations.RESEND, notAddressable({ iconOverride: Send, actionVisibility: ActionVisibility.WHEN_AVAILABLE })],\n ],\n })),\n\n [R.ORGANIZATION_PROFILES]: resourceUIBehavior(orgProfileFactory, OrganizationProfileSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.PROFILE,\n getFrontendResourceLabel: ({ currentObject }) => currentObject.displayName || `Organization ${currentObject.organizationId}`,\n layout: {\n refs: { sections: ['company', 'classification', 'location', 'branding', 'social'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"company\" appearance={SectionMode.CARD}>\n <DisplayField name=\"displayName\" />\n <DisplayField name=\"domain\" />\n <DisplayField name=\"website\" />\n <DisplayField name=\"phone\" />\n <DisplayField name=\"description\" />\n </Section>\n <Section name=\"classification\">\n <DisplayField name=\"industry\" />\n <DisplayField name=\"size\" />\n <DisplayField name=\"founded\" />\n <DisplayField name=\"timezone\" />\n </Section>\n <Section name=\"location\">\n <DisplayField name=\"address\" />\n </Section>\n <Section name=\"branding\">\n <ObjectScope name=\"branding\">\n <DisplayField name=\"logo\" />\n <DisplayField name=\"favicon\" />\n <DisplayField name=\"primaryColor\" />\n <DisplayField name=\"secondaryColor\" />\n <DisplayField name=\"customDomain\" />\n </ObjectScope>\n </Section>\n <Section name=\"social\">\n <ObjectScope name=\"socialLinks\">\n <DisplayField name=\"linkedin\" />\n <DisplayField name=\"twitter\" />\n <DisplayField name=\"facebook\" />\n <DisplayField name=\"github\" />\n </ObjectScope>\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout>\n <DisplayField name=\"displayName\" />\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"company\" appearance={SectionMode.CARD}>\n <FormField name=\"displayName\" />\n <FormField name=\"domain\" />\n <FormField name=\"website\" />\n <FormField name=\"phone\" />\n <FormField name=\"description\" />\n </Section>\n <Section name=\"classification\">\n <FormField name=\"industry\" />\n <FormField name=\"size\" />\n <FormField name=\"founded\" />\n <FormField name=\"timezone\" />\n </Section>\n <Section name=\"location\">\n <FormField name=\"address\" />\n </Section>\n <Section name=\"branding\">\n <ObjectScope name=\"branding\">\n <FormField name=\"logo\" />\n <FormField name=\"favicon\" />\n <FormField name=\"primaryColor\" />\n <FormField name=\"secondaryColor\" />\n <FormField name=\"customDomain\" />\n </ObjectScope>\n </Section>\n <Section name=\"social\">\n <ObjectScope name=\"socialLinks\">\n <FormField name=\"linkedin\" />\n <FormField name=\"twitter\" />\n <FormField name=\"facebook\" />\n <FormField name=\"github\" />\n </ObjectScope>\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.READ, notAddressable()],\n [Op.UPDATE, notAddressable()],\n [OrganizationProfile_Operations.UPDATE_BRANDING, notAddressable({ iconOverride: Paintbrush })],\n ],\n })),\n\n [R.ORGANIZATION_NOTIFICATIONS]: resourceUIBehavior(orgNotificationsFactory, OrganizationNotificationsSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.NOTIFICATION,\n layout: {\n refs: { sections: ['addresses', 'categories'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"addresses\" appearance={SectionMode.CARD}>\n <ObjectScope name=\"emailNotifications\">\n <DisplayField name=\"defaultEmailAddress\" />\n <DisplayField name=\"billingAddress\" />\n <DisplayField name=\"securityAddress\" />\n <DisplayField name=\"administrativeAddress\" />\n <DisplayField name=\"usersManagementAddress\" />\n </ObjectScope>\n </Section>\n <Section name=\"categories\">\n <ObjectScope name=\"emailNotifications\">\n <DisplayField name=\"billing\" />\n <DisplayField name=\"administrative\" />\n <DisplayField name=\"security\" />\n <DisplayField name=\"usersManagement\" />\n </ObjectScope>\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout flow={SummaryFlow.ROW}>\n <ObjectScope name=\"emailNotifications\">\n <DisplayField name=\"defaultEmailAddress\" />\n </ObjectScope>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"addresses\" appearance={SectionMode.CARD}>\n <ObjectScope name=\"emailNotifications\">\n <FormField name=\"defaultEmailAddress\" />\n <FormField name=\"billingAddress\" />\n <FormField name=\"securityAddress\" />\n <FormField name=\"administrativeAddress\" />\n <FormField name=\"usersManagementAddress\" />\n </ObjectScope>\n </Section>\n <Section name=\"categories\">\n <ObjectScope name=\"emailNotifications\">\n <FormField name=\"billing\" />\n <FormField name=\"administrative\" />\n <FormField name=\"security\" />\n <FormField name=\"usersManagement\" />\n </ObjectScope>\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.READ, notAddressable()],\n [Op.UPDATE, notAddressable()],\n ],\n })),\n\n [R.ORGANIZATION_PREFERENCES]: resourceUIBehavior(orgPreferencesFactory, OrganizationPreferencesSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n icon: StandardIconReference.SETTINGS,\n layout: {\n refs: { sections: ['regional', 'language', 'overrides'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"regional\" appearance={SectionMode.CARD}>\n <DisplayField name=\"timezone\" />\n <DisplayField name=\"locale\" />\n <DisplayField name=\"dateFormat\" />\n <DisplayField name=\"timeFormat\" />\n </Section>\n <Section name=\"language\">\n <ObjectScope name=\"languagePreferences\">\n <DisplayField name=\"primaryLanguage\" />\n <DisplayField name=\"supportedLanguages\" />\n <DisplayField name=\"allowUserOverride\" />\n <DisplayField name=\"enforceForAllMembers\" />\n </ObjectScope>\n </Section>\n <Section name=\"overrides\">\n <DisplayField name=\"allowMemberEmailOverride\" />\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout flow={SummaryFlow.ROW}>\n <DisplayField name=\"timezone\" />\n <DisplayField name=\"locale\" />\n <ObjectScope name=\"languagePreferences\">\n <DisplayField name=\"primaryLanguage\" />\n </ObjectScope>\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"regional\" appearance={SectionMode.CARD}>\n <FormField name=\"timezone\" />\n <FormField name=\"locale\" />\n <FormField name=\"dateFormat\" />\n <FormField name=\"timeFormat\" />\n </Section>\n <Section name=\"language\">\n <ObjectScope name=\"languagePreferences\">\n <FormField name=\"primaryLanguage\" />\n <FormField name=\"supportedLanguages\" />\n <FormField name=\"allowUserOverride\" />\n <FormField name=\"enforceForAllMembers\" />\n </ObjectScope>\n </Section>\n <Section name=\"overrides\">\n <FormField name=\"allowMemberEmailOverride\" />\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.READ, notAddressable()],\n [Op.UPDATE, notAddressable()],\n ],\n })),\n\n [R.ORGANIZATION_FEATURES]: resourceUIBehavior(orgFeaturesFactory, ScopeFeaturesWithOverridesSchema, ({ schema, schemaShape, opsVariantResolver }) => ({\n layout: {\n refs: { sections: ['overview', 'overrides'] },\n display: () => (\n <DisplayLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <DisplayField name=\"features\" />\n <DisplayField name=\"limits\" />\n </Section>\n <Section name=\"overrides\">\n <ObjectScope name=\"manualOverrides\">\n <DisplayField name=\"addedFeatures\" />\n <DisplayField name=\"removedFeatures\" />\n <DisplayField name=\"limitOverrides\" />\n </ObjectScope>\n </Section>\n </DisplayLayout>\n ),\n summary: () => (\n <SummaryLayout>\n <DisplayField name=\"features\" />\n <DisplayField name=\"limits\" />\n </SummaryLayout>\n ),\n edit: () => (\n <FormLayout>\n <Section name=\"overview\" appearance={SectionMode.CARD}>\n <FormField name=\"features\" />\n <FormField name=\"limits\" />\n </Section>\n <Section name=\"overrides\">\n <ObjectScope name=\"manualOverrides\">\n <FormField name=\"addedFeatures\" />\n <FormField name=\"removedFeatures\" />\n <FormField name=\"limitOverrides\" />\n </ObjectScope>\n </Section>\n </FormLayout>\n ),\n },\n views: [\n [Op.READ, notAddressable()],\n [Op.SEARCH, notAddressable()],\n // Org feature flags are toggled programmatically, not via a generic edit form —\n // UPDATE is headless.\n [Op.UPDATE, apiOnly()],\n ],\n })),\n };\n}\n\nexport function buildOrganizationsAdminPresets(main: Partial<ResourceUIBehavior>): Partial<ResourceUIBehavior> {\n return {\n [R.ORGANIZATIONS]: resourceUIBehaviorFrom(orgFactory, main[R.ORGANIZATIONS]!, ({ base, opsVariantResolver }) => ({\n icon: base.icon,\n layout: base.layout,\n fields: base.fields,\n views: [\n [opsVariantResolver(Op.READ, 'admin'), notAddressable()],\n [Op.LIST, notAddressable()],\n [Op.SEARCH, notAddressable()],\n [opsVariantResolver(Op.CREATE, 'admin'), addressable()],\n [opsVariantResolver(Op.UPDATE, 'admin'), notAddressable()],\n [opsVariantResolver(Op.DELETE, 'admin'), notAddressable()],\n ...organizationLifecycleOpViews,\n ],\n })),\n [R.ORGANIZATION_FEATURES]: resourceUIBehaviorFrom(orgFeaturesFactory, main[R.ORGANIZATION_FEATURES]!, ({ base }) => ({\n icon: base.icon,\n layout: base.layout,\n views: [\n [Op.UPDATE, notAddressable()],\n [OrganizationFeatures_Operations.ENABLE_FEATURE, notAddressable({ iconOverride: ToggleRight })],\n [OrganizationFeatures_Operations.DISABLE_FEATURE, notAddressable({ iconOverride: ToggleLeft })],\n [OrganizationFeatures_Operations.RESET_FEATURES, notAddressable({ iconOverride: RotateCcw })],\n ],\n })),\n };\n}\n\nexport const organizationsMainPresets = buildOrganizationsMainPresets();\nexport const organizationsAdminPresets = buildOrganizationsAdminPresets(organizationsMainPresets);\n\nexport const organizationsMainOrgResourceUIBehavior = organizationsMainPresets[R.ORGANIZATIONS]!;\nexport const organizationsAdminOrgResourceUIBehavior = organizationsAdminPresets[R.ORGANIZATIONS]!;\nexport const organizationUnitsMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_UNITS]!;\nexport const organizationMembersMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_MEMBERS]!;\nexport const organizationProfilesMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_PROFILES]!;\nexport const organizationNotificationsMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_NOTIFICATIONS]!;\nexport const organizationPreferencesMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_PREFERENCES]!;\nexport const organizationFeaturesMainResourceUIBehavior = organizationsMainPresets[R.ORGANIZATION_FEATURES]!;\nexport const organizationFeaturesAdminResourceUIBehavior = organizationsAdminPresets[R.ORGANIZATION_FEATURES]!;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resource.config.utils.d.ts","sourceRoot":"","sources":["../../../../../src/config/resources/resource.config.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAGnF;;;GAGG;AACH,KAAK,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC,CAAC;AAExF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,+BAA+B,CAE/F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,+BAA+B,CAElG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,IAAI,+BAA+B,CAEzD"}
1
+ {"version":3,"file":"resource.config.utils.d.ts","sourceRoot":"","sources":["../../../../src/config/resources/resource.config.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAGnF;;;GAGG;AACH,KAAK,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC,CAAC;AAExF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,+BAA+B,CAE/F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,+BAA+B,CAElG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,IAAI,+BAA+B,CAEzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"security.resource-presets.d.ts","sourceRoot":"","sources":["../../../../../src/config/resources/security.resource-presets.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AA8dtE,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAwXtE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4MxG;AAED,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,6BAAiD,CAAC;AAEnF,eAAO,MAAM,gCAAgC,gGAAuC,CAAC;AACrF,eAAO,MAAM,iCAAiC,gGAAwC,CAAC;AACvF,eAAO,MAAM,+BAA+B,gGAAqC,CAAC"}
1
+ {"version":3,"file":"security.resource-presets.d.ts","sourceRoot":"","sources":["../../../../src/config/resources/security.resource-presets.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAqetE,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA0dtE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA+MxG;AAED,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAC9D,eAAO,MAAM,oBAAoB,6BAAiD,CAAC;AAEnF,eAAO,MAAM,gCAAgC,gGAAuC,CAAC;AACrF,eAAO,MAAM,iCAAiC,gGAAwC,CAAC;AACvF,eAAO,MAAM,+BAA+B,gGAAqC,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { resourceUIBehavior, resourceUIBehaviorFrom, polymorphicResourceUIBehavior, polymorphicResourceUIBehaviorFrom, StandardIconReference, ResourceOperationActionScope, } from '@wildo-ai/saas-frontend-lib';
3
- import { DisplayField, DisplayLayout, FormField, FormLayout, ObjectScope, Section, SummaryLayout, useFormTemplateContext, useDisplayTemplateContext, ResourceLayoutPreset_Create_SamlWizard, ResourceLayoutPreset_Read_SsoSaml, } from '@wildo-ai/saas-frontend-lib';
3
+ import { DisplayField, DisplayLayout, FormField, FormLayout, ObjectScope, Section, SummaryLayout, useFormTemplateContext, useDisplayTemplateContext, ResourceLayoutPreset_Create_SamlWizard, ResourceLayoutPreset_Read_SsoSaml, SummaryFlow, SummaryMeta, SummaryTitle, } from '@wildo-ai/saas-frontend-lib';
4
4
  import { BadgeSemanticVariant, BooleanDisplayMode, BooleanEditMode, BooleanLabellingValue, SectionMode, DisplayChromeMode, EditChromeMode, EnumDisplayMode, ShowWhenOperator, StringDisplayMode, } from '@wildo-ai/zod-decorators';
5
- import { Key, ShieldCheck, Fingerprint, UserCog, KeyRound, Radio, AlertTriangle, RotateCw, RefreshCw, PowerOff, Power, CalendarPlus, ChartColumn, Download, Trash2, PlugZap, Search, ShieldX, } from 'lucide-react';
6
- import { CoreResourceType as R, CoreResourceOperation as Op, ApiKeyStatus, OrgApiKeys_Operations, AuditLogs_Operations, SiemDeliveryDlq_Operations, SsoConnection_Operations, ScimTokens_Operations, orgApiKeysResourceConfiguration_InitializationFactory as orgApiKeysFactory, auditLogsResourceConfiguration_InitializationFactory as auditLogsFactory, siemExportConfigPolymorphicFactories, siemDeliveryDlqPolymorphicFactories, ssoConfigPolymorphicFactories, ssoConnectionPolymorphicFactories, scimProvisioningConfigPolymorphicFactories, scimTokensPolymorphicFactories, ApiKeyOrganizationSchema, AuditableEvent_BaseSchema, SiemExportConfigBaseSchema, SiemDeliveryDlqBaseSchema, SiemDeliveryDlqStatus, SsoConfigBaseSchema, SsoConnectionBaseSchema, ScimProvisioningConfigBaseSchema, ScimTokenBaseSchema, SsoProtocol, SIEMAuthMethod, } from '@wildo-ai/saas-models';
5
+ import { Key, ShieldCheck, Globe, Unlink, Fingerprint, UserCog, KeyRound, Radio, AlertTriangle, RotateCw, RefreshCw, PowerOff, Power, CalendarPlus, ChartColumn, Download, Trash2, PlugZap, Search, ShieldX, } from 'lucide-react';
6
+ import { CoreResourceType as R, CoreResourceOperation as Op, ApiKeyStatus, OrgApiKeys_Operations, AuditLogs_Operations, SiemDeliveryDlq_Operations, SsoConnection_Operations, ScimTokens_Operations, orgApiKeysResourceConfiguration_InitializationFactory as orgApiKeysFactory, orgProviderCredentialsResourceConfiguration_InitializationFactory as orgProviderCredentialsFactory, OrganizationProviderCredentialSchema, userProviderCredentialsResourceConfiguration_InitializationFactory as userProviderCredentialsFactory, UserProviderCredentialSchema, ProviderCredentialValidationState, auditLogsResourceConfiguration_InitializationFactory as auditLogsFactory, siemExportConfigPolymorphicFactories, siemDeliveryDlqPolymorphicFactories, ssoConfigPolymorphicFactories, SsoConfig_Operations, ssoConnectionPolymorphicFactories, scimProvisioningConfigPolymorphicFactories, scimTokensPolymorphicFactories, ApiKeyOrganizationSchema, AuditableEvent_BaseSchema, SiemExportConfigBaseSchema, SiemDeliveryDlqBaseSchema, SiemDeliveryDlqStatus, SsoConfigBaseSchema, SsoConnectionBaseSchema, ScimProvisioningConfigBaseSchema, ScimTokenBaseSchema, SsoProtocol, SIEMAuthMethod, } from '@wildo-ai/saas-models';
7
7
  import { addressable, notAddressable } from './resource.config.utils.js';
8
8
  // ── SIEM export config — field overrides (shared across polymorphic variants) ─
9
9
  const siemExportFieldOverrides = {
@@ -48,46 +48,46 @@ function OrgApiKeyEditTemplate() {
48
48
  return (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "name" }), _jsx(FormField, { name: "status" }), _jsx(FormField, { name: "expiresAt" })] }), _jsxs(Section, { name: "access", children: [_jsx(FormField, { name: "roles" }), _jsx(FormField, { name: "description" })] })] }));
49
49
  }
50
50
  function OrgApiKeySummaryTemplate() {
51
- return (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx("div", { className: "font-medium leading-tight", children: _jsx(DisplayField, { name: "name", hideLabel: true }) }), _jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [_jsx(DisplayField, { name: "scope" }), _jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "keyPrefix" })] })] }));
51
+ return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "name" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "scope" }), _jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "keyPrefix" })] })] }));
52
52
  }
53
53
  function AuditLogDisplayTemplate() {
54
54
  return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "eventType" }), _jsx(DisplayField, { name: "eventCategory" }), _jsx(DisplayField, { name: "severity" }), _jsx(DisplayField, { name: "riskLevel" })] }), _jsxs(Section, { name: "actors", children: [_jsx(DisplayField, { name: "userId" }), _jsx(DisplayField, { name: "organizationId" })] }), _jsxs(Section, { name: "payload", children: [_jsx(DisplayField, { name: "eventData" }), _jsx(DisplayField, { name: "createdAt" })] })] }));
55
55
  }
56
56
  function AuditLogSummaryTemplate() {
57
- return (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx("div", { className: "font-medium leading-tight", children: _jsx(DisplayField, { name: "eventType", hideLabel: true }) }), _jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [_jsx(DisplayField, { name: "eventCategory" }), _jsx(DisplayField, { name: "severity" }), _jsx(DisplayField, { name: "createdAt" })] })] }));
57
+ return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "eventType" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "eventCategory" }), _jsx(DisplayField, { name: "severity" }), _jsx(DisplayField, { name: "createdAt" })] })] }));
58
58
  }
59
59
  function SiemExportSummaryTemplate() {
60
- return (_jsx(SummaryLayout, { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm", children: _jsx(DisplayField, { name: "enabled" }) }));
60
+ return (_jsx(SummaryLayout, { flow: SummaryFlow.ROW, children: _jsx(DisplayField, { name: "enabled" }) }));
61
61
  }
62
62
  function SiemDlqDisplayTemplate() {
63
63
  return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "failureReason" })] }), _jsxs(Section, { name: "delivery", children: [_jsx(DisplayField, { name: "eventId" }), _jsx(DisplayField, { name: "failureCount" }), _jsx(DisplayField, { name: "lastAttemptAt" }), _jsx(DisplayField, { name: "nextRetryAt" })] }), _jsx(Section, { name: "payload", children: _jsx(DisplayField, { name: "eventPayload" }) })] }));
64
64
  }
65
65
  function SiemDlqSummaryTemplate() {
66
- return (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx("div", { className: "font-medium leading-tight", children: _jsx(DisplayField, { name: "failureReason", hideLabel: true }) }), _jsx("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: _jsx(DisplayField, { name: "status" }) })] }));
66
+ return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "failureReason" }), _jsx(SummaryMeta, { children: _jsx(DisplayField, { name: "status" }) })] }));
67
67
  }
68
68
  function SsoConfigDisplayTemplate() {
69
- return (_jsxs(DisplayLayout, { children: [_jsx(Section, { name: "enforcement", appearance: SectionMode.CARD, children: _jsxs(ObjectScope, { name: "enforcement", children: [_jsx(DisplayField, { name: "requireSSO" }), _jsx(DisplayField, { name: "allowPasswordFallback" }), _jsx(DisplayField, { name: "enforceForAdmins" }), _jsx(DisplayField, { name: "graceLoginAttempts" })] }) }), _jsx(Section, { name: "domains", children: _jsxs(ObjectScope, { name: "domains", children: [_jsx(DisplayField, { name: "verifiedDomains" }), _jsx(DisplayField, { name: "ssoEnabledDomains" }), _jsx(DisplayField, { name: "domainHinting" }), _jsx(DisplayField, { name: "allowExternalDomains" }), _jsx(DisplayField, { name: "domainVerificationStatus" })] }) }), _jsx(Section, { name: "provisioning", children: _jsxs(ObjectScope, { name: "provisioning", children: [_jsx(DisplayField, { name: "autoCreateUsers" }), _jsx(DisplayField, { name: "autoUpdateUsers" }), _jsx(DisplayField, { name: "autoDeactivateUsers" }), _jsx(DisplayField, { name: "defaultRole" }), _jsx(DisplayField, { name: "requiredAttributes" }), _jsx(DisplayField, { name: "syncFrequencyHours" })] }) }), _jsx(Section, { name: "session", children: _jsxs(ObjectScope, { name: "sessionSettings", children: [_jsx(DisplayField, { name: "ssoSessionDurationMinutes" }), _jsx(DisplayField, { name: "requireReauthForSensitive" }), _jsx(DisplayField, { name: "singleLogoutEnabled" }), _jsx(DisplayField, { name: "maxConcurrentSessions" })] }) }), _jsx(Section, { name: "audit", children: _jsxs(ObjectScope, { name: "auditConfig", children: [_jsx(DisplayField, { name: "logAllSSOEvents" }), _jsx(DisplayField, { name: "logProviderSwitching" }), _jsx(DisplayField, { name: "logRoleMapping" }), _jsx(DisplayField, { name: "complianceReporting" }), _jsx(DisplayField, { name: "retentionDays" })] }) }), _jsx(Section, { name: "emergency", children: _jsxs(ObjectScope, { name: "emergencyAccess", children: [_jsx(DisplayField, { name: "enabled" }), _jsx(DisplayField, { name: "breakGlassAccounts" }), _jsx(DisplayField, { name: "requireApproval" }), _jsx(DisplayField, { name: "maxDurationHours" }), _jsx(DisplayField, { name: "auditLevel" })] }) }), _jsxs(Section, { name: "oauth", children: [_jsxs(ObjectScope, { name: "oauth2ProviderRestrictions", children: [_jsx(DisplayField, { name: "allowedProviders" }), _jsx(DisplayField, { name: "blockedProviders" }), _jsx(DisplayField, { name: "requireEnterpriseSSOOnly" })] }), _jsx(DisplayField, { name: "socialCredentialOverrides" })] })] }));
69
+ return (_jsxs(DisplayLayout, { children: [_jsx(Section, { name: "enforcement", appearance: SectionMode.CARD, children: _jsxs(ObjectScope, { name: "enforcement", children: [_jsx(DisplayField, { name: "requireSSO" }), _jsx(DisplayField, { name: "allowPasswordFallback" }), _jsx(DisplayField, { name: "graceLoginAttempts" })] }) }), _jsx(Section, { name: "domains", children: _jsxs(ObjectScope, { name: "domains", children: [_jsx(DisplayField, { name: "verifiedDomains" }), _jsx(DisplayField, { name: "ssoEnabledDomains" }), _jsx(DisplayField, { name: "domainHinting" }), _jsx(DisplayField, { name: "allowExternalDomains" }), _jsx(DisplayField, { name: "domainVerificationStatus" })] }) }), _jsx(Section, { name: "provisioning", children: _jsxs(ObjectScope, { name: "provisioning", children: [_jsx(DisplayField, { name: "autoCreateUsers" }), _jsx(DisplayField, { name: "autoUpdateUsers" }), _jsx(DisplayField, { name: "autoDeactivateUsers" }), _jsx(DisplayField, { name: "defaultRole" }), _jsx(DisplayField, { name: "requiredAttributes" }), _jsx(DisplayField, { name: "syncFrequencyHours" })] }) }), _jsx(Section, { name: "session", children: _jsxs(ObjectScope, { name: "sessionSettings", children: [_jsx(DisplayField, { name: "ssoSessionDurationMinutes" }), _jsx(DisplayField, { name: "requireReauthForSensitive" }), _jsx(DisplayField, { name: "singleLogoutEnabled" }), _jsx(DisplayField, { name: "maxConcurrentSessions" })] }) }), _jsx(Section, { name: "audit", children: _jsxs(ObjectScope, { name: "auditConfig", children: [_jsx(DisplayField, { name: "logAllSSOEvents" }), _jsx(DisplayField, { name: "logProviderSwitching" }), _jsx(DisplayField, { name: "logRoleMapping" }), _jsx(DisplayField, { name: "complianceReporting" }), _jsx(DisplayField, { name: "retentionDays" })] }) }), _jsx(Section, { name: "emergency", children: _jsxs(ObjectScope, { name: "emergencyAccess", children: [_jsx(DisplayField, { name: "enabled" }), _jsx(DisplayField, { name: "breakGlassAccounts" })] }) }), _jsxs(Section, { name: "oauth", children: [_jsxs(ObjectScope, { name: "oauth2ProviderRestrictions", children: [_jsx(DisplayField, { name: "allowedProviders" }), _jsx(DisplayField, { name: "blockedProviders" }), _jsx(DisplayField, { name: "requireEnterpriseSSOOnly" })] }), _jsx(DisplayField, { name: "socialCredentialOverrides" })] })] }));
70
70
  }
71
71
  function SsoConfigSummaryTemplate() {
72
- return (_jsx(SummaryLayout, { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm", children: _jsx(ObjectScope, { name: "enforcement", children: _jsx(DisplayField, { name: "requireSSO" }) }) }));
72
+ return (_jsx(SummaryLayout, { flow: SummaryFlow.ROW, children: _jsx(ObjectScope, { name: "enforcement", children: _jsx(DisplayField, { name: "requireSSO" }) }) }));
73
73
  }
74
74
  function SsoConnectionDisplayTemplate() {
75
- return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "displayName" }), _jsx(DisplayField, { name: "protocol" }), _jsx(DisplayField, { name: "enabled" }), _jsx(DisplayField, { name: "isDefault" }), _jsx(DisplayField, { name: "externalProviderId" })] }), _jsx(Section, { name: "oidc", children: _jsxs(ObjectScope, { name: "oidc", children: [_jsx(DisplayField, { name: "templateMode" }), _jsx(DisplayField, { name: "discoveryUrl" }), _jsx(DisplayField, { name: "issuer" }), _jsx(DisplayField, { name: "authorizationEndpoint" }), _jsx(DisplayField, { name: "tokenEndpoint" }), _jsx(DisplayField, { name: "userInfoEndpoint" }), _jsx(DisplayField, { name: "jwksUri" }), _jsx(DisplayField, { name: "endSessionEndpoint" }), _jsx(DisplayField, { name: "clientId" }), _jsx(DisplayField, { name: "scopes" }), _jsx(DisplayField, { name: "responseType" }), _jsx(DisplayField, { name: "responseMode" }), _jsx(DisplayField, { name: "validateIssuer" }), _jsx(DisplayField, { name: "validateAudience" }), _jsx(DisplayField, { name: "pkceEnabled" }), _jsx(DisplayField, { name: "pkceMethod" }), _jsx(DisplayField, { name: "prompt" }), _jsx(DisplayField, { name: "claimsMapping" }), _jsx(DisplayField, { name: "auditSettings" })] }) }), _jsx(Section, { name: "saml", children: _jsxs(ObjectScope, { name: "saml", children: [_jsx(DisplayField, { name: "entityId" }), _jsx(DisplayField, { name: "ssoUrl" }), _jsx(DisplayField, { name: "sloUrl" }), _jsx(DisplayField, { name: "x509CertificatePem" }), _jsx(DisplayField, { name: "attributeMapping" }), _jsx(DisplayField, { name: "signRequests" }), _jsx(DisplayField, { name: "wantAssertionsSigned" }), _jsx(DisplayField, { name: "allowedClockDrift" }), _jsx(DisplayField, { name: "forceAuthn" }), _jsx(DisplayField, { name: "maxAuthAge" }), _jsx(DisplayField, { name: "nameIdFormat" }), _jsx(DisplayField, { name: "allowIdpInitiated" }), _jsx(DisplayField, { name: "auditSettings" })] }) }), _jsxs(Section, { name: "provisioning", children: [_jsx(DisplayField, { name: "autoCreateUsers" }), _jsx(DisplayField, { name: "autoVerifyEmail" }), _jsx(DisplayField, { name: "bypassAppMFA" }), _jsx(DisplayField, { name: "defaultRole" }), _jsx(DisplayField, { name: "allowedDomains" }), _jsx(DisplayField, { name: "roleMapping" }), _jsx(DisplayField, { name: "groupMapping" })] })] }));
75
+ return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "displayName" }), _jsx(DisplayField, { name: "protocol" }), _jsx(DisplayField, { name: "enabled" }), _jsx(DisplayField, { name: "isDefault" }), _jsx(DisplayField, { name: "externalProviderId" })] }), _jsx(Section, { name: "oidc", children: _jsxs(ObjectScope, { name: "oidc", children: [_jsx(DisplayField, { name: "templateMode" }), _jsx(DisplayField, { name: "discoveryUrl" }), _jsx(DisplayField, { name: "issuer" }), _jsx(DisplayField, { name: "authorizationEndpoint" }), _jsx(DisplayField, { name: "tokenEndpoint" }), _jsx(DisplayField, { name: "userInfoEndpoint" }), _jsx(DisplayField, { name: "jwksUri" }), _jsx(DisplayField, { name: "endSessionEndpoint" }), _jsx(DisplayField, { name: "clientId" }), _jsx(DisplayField, { name: "scopes" }), _jsx(DisplayField, { name: "responseType" }), _jsx(DisplayField, { name: "responseMode" }), _jsx(DisplayField, { name: "pkceEnabled" }), _jsx(DisplayField, { name: "pkceMethod" }), _jsx(DisplayField, { name: "prompt" }), _jsx(DisplayField, { name: "acrValues" }), _jsx(DisplayField, { name: "maxAge" }), _jsx(DisplayField, { name: "claimsMapping" }), _jsx(DisplayField, { name: "auditSettings" })] }) }), _jsx(Section, { name: "saml", children: _jsxs(ObjectScope, { name: "saml", children: [_jsx(DisplayField, { name: "entityId" }), _jsx(DisplayField, { name: "ssoUrl" }), _jsx(DisplayField, { name: "sloUrl" }), _jsx(DisplayField, { name: "x509CertificatePem" }), _jsx(DisplayField, { name: "attributeMapping" }), _jsx(DisplayField, { name: "signRequests" }), _jsx(DisplayField, { name: "wantAssertionsSigned" }), _jsx(DisplayField, { name: "allowedClockDrift" }), _jsx(DisplayField, { name: "forceAuthn" }), _jsx(DisplayField, { name: "maxAuthAge" }), _jsx(DisplayField, { name: "nameIdFormat" }), _jsx(DisplayField, { name: "allowIdpInitiated" }), _jsx(DisplayField, { name: "auditSettings" })] }) }), _jsxs(Section, { name: "provisioning", children: [_jsx(DisplayField, { name: "autoCreateUsers" }), _jsx(DisplayField, { name: "autoVerifyEmail" }), _jsx(DisplayField, { name: "bypassAppMFA" }), _jsx(DisplayField, { name: "defaultRole" }), _jsx(DisplayField, { name: "allowedDomains" }), _jsx(DisplayField, { name: "roleMapping" }), _jsx(DisplayField, { name: "groupMapping" })] })] }));
76
76
  }
77
77
  function SsoConnectionSummaryTemplate() {
78
- return (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx("div", { className: "font-medium leading-tight", children: _jsx(DisplayField, { name: "displayName", hideLabel: true }) }), _jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [_jsx(DisplayField, { name: "protocol" }), _jsx(DisplayField, { name: "enabled" })] })] }));
78
+ return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "displayName" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "protocol" }), _jsx(DisplayField, { name: "enabled" })] })] }));
79
79
  }
80
80
  function ScimProvisioningDisplayTemplate() {
81
81
  return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "autoCreateUsers" }), _jsx(DisplayField, { name: "autoVerifyEmail" }), _jsx(DisplayField, { name: "autoDeactivateUsers" }), _jsx(DisplayField, { name: "defaultRole" })] }), _jsx(Section, { name: "mapping", children: _jsx(DisplayField, { name: "attributeMapping" }) }), _jsxs(Section, { name: "lifecycle", children: [_jsx(DisplayField, { name: "createdAt" }), _jsx(DisplayField, { name: "updatedAt" })] })] }));
82
82
  }
83
83
  function ScimProvisioningSummaryTemplate() {
84
- return (_jsx(SummaryLayout, { className: "flex flex-wrap items-center gap-x-3 gap-y-1 text-sm", children: _jsx(DisplayField, { name: "autoCreateUsers" }) }));
84
+ return (_jsx(SummaryLayout, { flow: SummaryFlow.ROW, children: _jsx(DisplayField, { name: "autoCreateUsers" }) }));
85
85
  }
86
86
  function ScimTokenDisplayTemplate() {
87
87
  return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "displayName" }), _jsx(DisplayField, { name: "isActive" }), _jsx(DisplayField, { name: "createdByUserId" })] }), _jsxs(Section, { name: "lifecycle", children: [_jsx(DisplayField, { name: "lastUsedAt" }), _jsx(DisplayField, { name: "expiresAt" }), _jsx(DisplayField, { name: "createdAt" })] })] }));
88
88
  }
89
89
  function ScimTokenSummaryTemplate() {
90
- return (_jsxs(SummaryLayout, { className: "flex flex-col gap-2 text-sm", children: [_jsx("div", { className: "font-medium leading-tight", children: _jsx(DisplayField, { name: "displayName", hideLabel: true }) }), _jsx("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: _jsx(DisplayField, { name: "isActive" }) })] }));
90
+ return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "displayName" }), _jsx(SummaryMeta, { children: _jsx(DisplayField, { name: "isActive" }) })] }));
91
91
  }
92
92
  export function buildSecurityMainPresets() {
93
93
  return {
@@ -138,6 +138,88 @@ export function buildSecurityMainPresets() {
138
138
  [OrgApiKeys_Operations.USAGE_STATS, notAddressable({ iconOverride: ChartColumn })],
139
139
  ],
140
140
  })),
141
+ /**
142
+ * The tenant's OWN credentials toward third parties.
143
+ *
144
+ * Easy to read as a sibling of API keys and it is their mirror image: an API key lets somebody
145
+ * reach THIS application, and one of these lets this application reach somebody else AS THIS
146
+ * TENANT. Same administrator, opposite direction — which is why they sit next to each other in
147
+ * Settings and must not be described in the same words.
148
+ *
149
+ * ## No layout refs, deliberately
150
+ *
151
+ * Declaring `layout.refs.sections` creates a contract the resource SPECIFICATION has to document
152
+ * slot for slot, validated at load; this resource has eight visible fields and no section would
153
+ * earn that coupling. Field-level UI is the whole surface until it needs one.
154
+ *
155
+ * ## What the administrator can see, and what they cannot
156
+ *
157
+ * `secretValue` is `.isWriteOnlySecret()`, so it is present in the CREATE and UPDATE forms and
158
+ * masked on every read — the operator supplies and rotates it, and no screen ever shows it back.
159
+ * Nothing here weakens that; the preset only names the fields that are already readable.
160
+ */
161
+ [R.ORG_PROVIDER_CREDENTIALS]: resourceUIBehavior(orgProviderCredentialsFactory, OrganizationProviderCredentialSchema, ({ schemaShape }) => ({
162
+ icon: KeyRound,
163
+ fields: {
164
+ validationState: schemaShape.validationState.enumUI({
165
+ display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },
166
+ edit: { showDescription: true },
167
+ values: {
168
+ // UNVALIDATED is the honest default and is not a warning: storing a credential proves
169
+ // only that somebody typed one, which is a normal state rather than a problem.
170
+ [ProviderCredentialValidationState.UNVALIDATED]: { color: BadgeSemanticVariant.SECONDARY },
171
+ [ProviderCredentialValidationState.VALID]: { color: BadgeSemanticVariant.SUCCESS },
172
+ // The provider REJECTED it on its last use, so the tenant is acting as nobody until it
173
+ // is rotated. That is a call to action, not an error the screen has to explain away.
174
+ [ProviderCredentialValidationState.INVALID]: { color: BadgeSemanticVariant.WARNING },
175
+ },
176
+ }),
177
+ },
178
+ getFrontendResourceLabel: ({ currentObject }) => `${currentObject.providerRef} · ${currentObject.secretSlug}`,
179
+ emptyState: { primaryAction: Op.CREATE },
180
+ views: [
181
+ [Op.READ, notAddressable()],
182
+ [Op.LIST, addressable()],
183
+ [Op.CREATE, notAddressable()],
184
+ [Op.UPDATE, notAddressable()],
185
+ [Op.DELETE, notAddressable()],
186
+ ],
187
+ })),
188
+ [R.USER_PROVIDER_CREDENTIALS]: resourceUIBehavior(userProviderCredentialsFactory, UserProviderCredentialSchema, ({ schemaShape }) => ({
189
+ icon: KeyRound,
190
+ fields: {
191
+ // The same three states as the tenant's, coloured identically on purpose: a person reading
192
+ // their own connections and an administrator reading the tenant's are answering the same
193
+ // question, and two colour languages for one vocabulary is how a reader learns to distrust
194
+ // both. The WORDS come from the enum's i18n entry, authored once for every surface.
195
+ validationState: schemaShape.validationState.enumUI({
196
+ display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },
197
+ edit: { showDescription: true },
198
+ values: {
199
+ // UNVALIDATED is the honest default and is not a warning: storing a credential proves
200
+ // only that somebody typed one, which is a normal state rather than a problem.
201
+ [ProviderCredentialValidationState.UNVALIDATED]: { color: BadgeSemanticVariant.SECONDARY },
202
+ [ProviderCredentialValidationState.VALID]: { color: BadgeSemanticVariant.SUCCESS },
203
+ // The provider REJECTED it on its last use. For a person this is the more actionable of
204
+ // the two failure shapes: nobody else can rotate it for them, so the badge is the only
205
+ // notice they will get that their own integration has stopped working.
206
+ [ProviderCredentialValidationState.INVALID]: { color: BadgeSemanticVariant.WARNING },
207
+ },
208
+ }),
209
+ },
210
+ getFrontendResourceLabel: ({ currentObject }) => `${currentObject.providerRef} · ${currentObject.secretSlug}`,
211
+ emptyState: { primaryAction: Op.CREATE },
212
+ // No `layout.refs`, matching the tenant sibling: this resource declares no layout sections in
213
+ // its specification, and a preset naming refs the layout does not declare fails the
214
+ // structural-slot validator at import time and crash-loops the companion.
215
+ views: [
216
+ [Op.READ, notAddressable()],
217
+ [Op.LIST, addressable()],
218
+ [Op.CREATE, notAddressable()],
219
+ [Op.UPDATE, notAddressable()],
220
+ [Op.DELETE, notAddressable()],
221
+ ],
222
+ })),
141
223
  [R.AUDIT_LOGS]: resourceUIBehavior(auditLogsFactory, AuditableEvent_BaseSchema, ({ schema, schemaShape, opsVariantResolver }) => ({
142
224
  icon: ShieldCheck,
143
225
  getFrontendResourceLabel: ({ currentObject }) => `${currentObject.eventType ?? 'Audit Event'} — ${currentObject.createdAt?.toISOString?.() ?? ''}`,
@@ -271,6 +353,12 @@ export function buildSecurityMainPresets() {
271
353
  },
272
354
  views: [
273
355
  [Op.READ, addressable()],
356
+ // Domain ownership is the one publicly mutable part of this policy row (#424). The three
357
+ // actions live beside the `domains` section: claim returns a DNS record to copy, verify
358
+ // resolves it, revoke releases the domain for another scope to verify.
359
+ [SsoConfig_Operations.CLAIM_DOMAIN, notAddressable({ iconOverride: Globe })],
360
+ [SsoConfig_Operations.VERIFY_DOMAIN, notAddressable({ iconOverride: ShieldCheck })],
361
+ [SsoConfig_Operations.REVOKE_DOMAIN, notAddressable({ iconOverride: Unlink })],
274
362
  ],
275
363
  variantOverrides: {
276
364
  [R.APPLICATION]: { views: [] },
@@ -431,6 +519,9 @@ export function buildSecurityAdminPresets(main) {
431
519
  layout: base.layout,
432
520
  views: [
433
521
  [Op.READ, addressable()],
522
+ [SsoConfig_Operations.CLAIM_DOMAIN, notAddressable({ iconOverride: Globe })],
523
+ [SsoConfig_Operations.VERIFY_DOMAIN, notAddressable({ iconOverride: ShieldCheck })],
524
+ [SsoConfig_Operations.REVOKE_DOMAIN, notAddressable({ iconOverride: Unlink })],
434
525
  ],
435
526
  variantOverrides: {
436
527
  [R.ORGANIZATIONS]: {