@wildo-ai/presets-components 1.1.3 → 1.1.5

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 (707) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  2. package/dist/esm/components/actions/action-bar.js +61 -7
  3. package/dist/esm/components/actions/action-bar.js.map +1 -1
  4. package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
  5. package/dist/esm/components/actions/action-button.d.ts.map +1 -1
  6. package/dist/esm/components/actions/action-button.js +3 -3
  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.js +62 -3
  12. package/dist/esm/components/actions/button.js.map +1 -1
  13. package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
  14. package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.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.js +1 -1
  19. package/dist/esm/components/ai-elements/artifacts/code-block.js.map +1 -1
  20. package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
  21. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts +4 -0
  22. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts.map +1 -0
  23. package/dist/esm/components/ai-elements/artifacts/diff-block.js +165 -0
  24. package/dist/esm/components/ai-elements/artifacts/diff-block.js.map +1 -0
  25. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts +3 -0
  26. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts.map +1 -0
  27. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js +63 -0
  28. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js.map +1 -0
  29. package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
  30. package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
  31. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
  32. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
  33. package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
  34. package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
  35. package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
  36. package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
  37. package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
  38. package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
  39. package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
  40. package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
  41. package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
  42. package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
  43. package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
  44. package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
  45. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts +68 -0
  46. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts.map +1 -0
  47. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js +208 -0
  48. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js.map +1 -0
  49. package/dist/esm/components/ai-elements/decision/approval.d.ts +36 -4
  50. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  51. package/dist/esm/components/ai-elements/decision/approval.js +77 -7
  52. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  53. package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
  54. package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
  55. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  56. package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  58. package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  60. package/dist/esm/components/ai-elements/execution/task.js +1 -1
  61. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  62. package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
  63. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  64. package/dist/esm/components/ai-elements/execution/tool.js +8 -1
  65. package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
  66. package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
  67. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  68. package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
  69. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  70. package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  72. package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  74. package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
  76. package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/graph/graph.lazy.js +15 -15
  78. package/dist/esm/components/ai-elements/graph/graph.lazy.js.map +1 -1
  79. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  80. package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
  81. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  82. package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
  83. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  84. package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/meta/agent.d.ts +0 -1
  86. package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/meta/agent.js +23 -18
  88. package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
  89. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  90. package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
  91. package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
  92. package/dist/esm/components/ai-elements/meta/context.lazy.js +13 -11
  93. package/dist/esm/components/ai-elements/meta/context.lazy.js.map +1 -1
  94. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  95. package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
  96. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  97. package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
  98. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  99. package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
  100. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  101. package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
  102. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  103. package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
  104. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts +6 -0
  105. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  106. package/dist/esm/components/ai-elements/trace/chain-of-thought.js +13 -1
  107. package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
  108. package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
  109. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  110. package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
  111. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  112. package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
  113. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  114. package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
  115. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  116. package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
  117. package/dist/esm/components/app/app-layout-consent-gate.d.ts +23 -0
  118. package/dist/esm/components/app/app-layout-consent-gate.d.ts.map +1 -0
  119. package/dist/esm/components/app/app-layout-consent-gate.js +133 -0
  120. package/dist/esm/components/app/app-layout-consent-gate.js.map +1 -0
  121. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts +19 -0
  122. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts.map +1 -0
  123. package/dist/esm/components/app/app-layout-document-acceptance-gate.js +56 -0
  124. package/dist/esm/components/app/app-layout-document-acceptance-gate.js.map +1 -0
  125. package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
  126. package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
  127. package/dist/esm/components/app/app-layout-main-container.labels.js +21 -0
  128. package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
  129. package/dist/esm/components/app/public-layout-main-container.d.ts +1 -1
  130. package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
  131. package/dist/esm/components/app/public-layout-main-container.js +9 -8
  132. package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
  133. package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
  134. package/dist/esm/components/app/public-layout-terms.d.ts +46 -0
  135. package/dist/esm/components/app/public-layout-terms.d.ts.map +1 -0
  136. package/dist/esm/components/app/public-layout-terms.js +137 -0
  137. package/dist/esm/components/app/public-layout-terms.js.map +1 -0
  138. package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
  139. package/dist/esm/components/billing/billing-invoice-history.d.ts +1 -1
  140. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  141. package/dist/esm/components/billing/billing-invoice-history.js +3 -1
  142. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  143. package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
  144. package/dist/esm/components/billing/billing-invoice-history.labels.js +1 -0
  145. package/dist/esm/components/billing/billing-invoice-history.labels.js.map +1 -1
  146. package/dist/esm/components/billing/billing-plan-change-preview.d.ts +5 -0
  147. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +1 -0
  148. package/dist/esm/components/billing/billing-plan-change-preview.js +22 -0
  149. package/dist/esm/components/billing/billing-plan-change-preview.js.map +1 -0
  150. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +3 -0
  151. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +1 -0
  152. package/dist/esm/components/billing/billing-plan-change-preview.labels.js +19 -0
  153. package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +1 -0
  154. package/dist/esm/components/billing/billing-portal-link.d.ts +1 -1
  155. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  156. package/dist/esm/components/billing/billing-portal-link.js +3 -1
  157. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  158. package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
  159. package/dist/esm/components/billing/billing-portal-link.labels.js +1 -0
  160. package/dist/esm/components/billing/billing-portal-link.labels.js.map +1 -1
  161. package/dist/esm/components/billing/billing-pricing-table.d.ts +1 -1
  162. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  163. package/dist/esm/components/billing/billing-pricing-table.js +4 -2
  164. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  165. package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
  166. package/dist/esm/components/billing/billing-pricing-table.labels.js +1 -0
  167. package/dist/esm/components/billing/billing-pricing-table.labels.js.map +1 -1
  168. package/dist/esm/components/billing/billing-subscription-status.d.ts +1 -1
  169. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  170. package/dist/esm/components/billing/billing-subscription-status.js +3 -1
  171. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  172. package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
  173. package/dist/esm/components/billing/billing-subscription-status.labels.js +1 -0
  174. package/dist/esm/components/billing/billing-subscription-status.labels.js.map +1 -1
  175. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +1 -1
  176. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  177. package/dist/esm/components/billing/billing-usage-dashboard.js +4 -4
  178. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  179. package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
  180. package/dist/esm/components/billing/billing-usage-dashboard.labels.js +2 -0
  181. package/dist/esm/components/billing/billing-usage-dashboard.labels.js.map +1 -1
  182. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  183. package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
  184. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  185. package/dist/esm/components/data-display/badge.js +16 -15
  186. package/dist/esm/components/data-display/badge.js.map +1 -1
  187. package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
  188. package/dist/esm/components/data-display/description-list.d.ts +2 -1
  189. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  190. package/dist/esm/components/data-display/description-list.js +24 -8
  191. package/dist/esm/components/data-display/description-list.js.map +1 -1
  192. package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
  193. package/dist/esm/components/data-display/duration.d.ts +15 -0
  194. package/dist/esm/components/data-display/duration.d.ts.map +1 -0
  195. package/dist/esm/components/data-display/duration.js +50 -0
  196. package/dist/esm/components/data-display/duration.js.map +1 -0
  197. package/dist/esm/components/data-display/duration.labels.d.ts +15 -0
  198. package/dist/esm/components/data-display/duration.labels.d.ts.map +1 -0
  199. package/dist/esm/components/data-display/duration.labels.js +35 -0
  200. package/dist/esm/components/data-display/duration.labels.js.map +1 -0
  201. package/dist/esm/components/data-display/formatters/display-field-address.d.ts +21 -0
  202. package/dist/esm/components/data-display/formatters/display-field-address.d.ts.map +1 -0
  203. package/dist/esm/components/data-display/formatters/display-field-address.js +75 -0
  204. package/dist/esm/components/data-display/formatters/display-field-address.js.map +1 -0
  205. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts +3 -0
  206. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts.map +1 -0
  207. package/dist/esm/components/data-display/formatters/display-field-address.labels.js +13 -0
  208. package/dist/esm/components/data-display/formatters/display-field-address.labels.js.map +1 -0
  209. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  210. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js +6 -2
  211. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
  212. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
  213. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  214. package/dist/esm/components/data-display/formatters/display-field-boolean.js +2 -2
  215. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  216. package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
  217. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  218. package/dist/esm/components/data-display/formatters/display-field-code.js +2 -2
  219. package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
  220. package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
  221. package/dist/esm/components/data-display/formatters/display-field-date.d.ts +3 -3
  222. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  223. package/dist/esm/components/data-display/formatters/display-field-date.js +17 -4
  224. package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
  225. package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
  226. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts +3 -3
  227. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  228. package/dist/esm/components/data-display/formatters/display-field-datetime.js +17 -4
  229. package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
  230. package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
  231. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  232. package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
  233. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  234. package/dist/esm/components/data-display/formatters/display-field-enum.js +12 -8
  235. package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
  236. package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
  237. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  238. package/dist/esm/components/data-display/formatters/display-field-file-audio.js +2 -1
  239. package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
  240. package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
  241. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts +4 -1
  242. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  243. package/dist/esm/components/data-display/formatters/display-field-file-document.js +18 -5
  244. package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
  245. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
  246. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js +20 -0
  247. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js.map +1 -1
  248. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  249. package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
  250. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  251. package/dist/esm/components/data-display/formatters/display-field-file-image.js +3 -1
  252. package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
  253. package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
  254. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  255. package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
  256. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  257. package/dist/esm/components/data-display/formatters/display-field-file.js +2 -2
  258. package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
  259. package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
  260. package/dist/esm/components/data-display/formatters/display-field-file.labels.js +1 -0
  261. package/dist/esm/components/data-display/formatters/display-field-file.labels.js.map +1 -1
  262. package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
  263. package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
  264. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  265. package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
  266. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  267. package/dist/esm/components/data-display/formatters/display-field-number.js +2 -2
  268. package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
  269. package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
  270. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  271. package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
  272. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  273. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
  274. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  275. package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
  276. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  277. package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
  278. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  279. package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
  280. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  281. package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
  282. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  283. package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
  284. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  285. package/dist/esm/components/data-display/formatters/display-field-string.js +82 -7
  286. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  287. package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
  288. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  289. package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
  290. package/dist/esm/components/data-display/identifier.d.ts +19 -0
  291. package/dist/esm/components/data-display/identifier.d.ts.map +1 -0
  292. package/dist/esm/components/data-display/identifier.js +21 -0
  293. package/dist/esm/components/data-display/identifier.js.map +1 -0
  294. package/dist/esm/components/data-display/kbd.d.ts +17 -0
  295. package/dist/esm/components/data-display/kbd.d.ts.map +1 -0
  296. package/dist/esm/components/data-display/kbd.js +18 -0
  297. package/dist/esm/components/data-display/kbd.js.map +1 -0
  298. package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
  299. package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
  300. package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
  301. package/dist/esm/components/data-display/markdown-stream.lazy.js +13 -2
  302. package/dist/esm/components/data-display/markdown-stream.lazy.js.map +1 -1
  303. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  304. package/dist/esm/components/data-display/notification-indicator.js +3 -11
  305. package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
  306. package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
  307. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts +63 -0
  308. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts.map +1 -0
  309. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js +75 -0
  310. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js.map +1 -0
  311. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts +32 -0
  312. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts.map +1 -0
  313. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js +36 -0
  314. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js.map +1 -0
  315. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts +46 -6
  316. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  317. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js +70 -46
  318. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js.map +1 -1
  319. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts +12 -2
  320. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
  321. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js +3 -2
  322. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js.map +1 -1
  323. package/dist/esm/components/data-display/timeline.d.ts +3 -0
  324. package/dist/esm/components/data-display/timeline.d.ts.map +1 -0
  325. package/dist/esm/components/data-display/timeline.js +92 -0
  326. package/dist/esm/components/data-display/timeline.js.map +1 -0
  327. package/dist/esm/components/feedback/celebration-overlay.d.ts +13 -4
  328. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  329. package/dist/esm/components/feedback/celebration-overlay.js +146 -22
  330. package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
  331. package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
  332. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  333. package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
  334. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  335. package/dist/esm/components/feedback/empty-state.js +11 -1
  336. package/dist/esm/components/feedback/empty-state.js.map +1 -1
  337. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  338. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  339. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  340. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  341. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  342. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  343. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  344. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  345. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  346. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  347. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  348. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  349. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  350. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  351. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  352. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  353. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  354. package/dist/esm/components/feedback/notification-center.js +6 -6
  355. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  356. package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
  357. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  358. package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
  359. package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
  360. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  361. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  362. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  363. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  364. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  365. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  366. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  367. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  368. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  369. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  370. package/dist/esm/components/form/chromes/field.js +11 -3
  371. package/dist/esm/components/form/chromes/field.js.map +1 -1
  372. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  373. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  374. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  375. package/dist/esm/components/form/chromes/form-primitive.labels.js +28 -0
  376. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  377. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  378. package/dist/esm/components/form/combobox.js +4 -3
  379. package/dist/esm/components/form/combobox.js.map +1 -1
  380. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  381. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  382. package/dist/esm/components/form/controls/boolean/checkbox.js +2 -2
  383. package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
  384. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  385. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  386. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  387. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  388. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  389. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  390. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  391. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  392. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  393. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  394. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js +11 -2
  395. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js.map +1 -1
  396. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  397. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  398. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  399. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  400. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  401. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  402. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  403. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  404. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  405. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  406. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  407. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  408. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js +11 -2
  409. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js.map +1 -1
  410. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  411. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  412. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  413. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  414. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js +11 -2
  415. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js.map +1 -1
  416. package/dist/esm/components/form/controls/enum/radio.d.ts +1 -1
  417. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  418. package/dist/esm/components/form/controls/enum/radio.js +13 -12
  419. package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
  420. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  421. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  422. package/dist/esm/components/form/controls/enum/select-multiple.js +5 -3
  423. package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
  424. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  425. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  426. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  427. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  428. package/dist/esm/components/form/controls/enum/toggle-group.js +96 -5
  429. package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
  430. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  431. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  432. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  433. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  434. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  435. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts +44 -0
  436. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts.map +1 -0
  437. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js +137 -0
  438. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js.map +1 -0
  439. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts +22 -0
  440. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts.map +1 -0
  441. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js +27 -0
  442. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js.map +1 -0
  443. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts +54 -0
  444. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -0
  445. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +159 -0
  446. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -0
  447. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +22 -0
  448. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -0
  449. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +27 -0
  450. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -0
  451. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +41 -0
  452. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -0
  453. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +129 -0
  454. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -0
  455. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +22 -0
  456. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -0
  457. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +27 -0
  458. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -0
  459. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  460. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  461. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  462. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  463. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  464. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  465. package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
  466. package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
  467. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  468. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  469. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  470. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  471. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  472. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  473. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  474. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  475. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  476. package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
  477. package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
  478. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  479. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  480. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  481. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  482. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  483. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  484. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  485. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  486. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  487. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  488. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  489. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  490. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  491. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  492. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  493. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  494. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  495. package/dist/esm/components/navigation/app-level/command-menu.js +2 -2
  496. package/dist/esm/components/navigation/app-level/command-menu.js.map +1 -1
  497. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  498. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  499. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  500. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  501. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  502. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  503. package/dist/esm/components/navigation/app-level/menubar.js +35 -13
  504. package/dist/esm/components/navigation/app-level/menubar.js.map +1 -1
  505. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  506. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  507. package/dist/esm/components/navigation/app-level/navigation-back.js +10 -2
  508. package/dist/esm/components/navigation/app-level/navigation-back.js.map +1 -1
  509. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  510. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  511. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  512. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  513. package/dist/esm/components/navigation/app-level/notification-center.labels.js +15 -0
  514. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  515. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  516. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  517. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js +4 -0
  518. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js.map +1 -1
  519. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  520. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  521. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  522. package/dist/esm/components/navigation/app-level/sidebar.js +38 -22
  523. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  524. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  525. package/dist/esm/components/navigation/app-level/sidebar.labels.js +1 -0
  526. package/dist/esm/components/navigation/app-level/sidebar.labels.js.map +1 -1
  527. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  528. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  529. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  530. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  531. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  532. package/dist/esm/components/navigation/app-level/utility-panel.js +30 -5
  533. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  534. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  535. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  536. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  537. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  538. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  539. package/dist/esm/components/navigation/command.js +2 -2
  540. package/dist/esm/components/navigation/command.js.map +1 -1
  541. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  542. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  543. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  544. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  545. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  546. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  547. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  548. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  549. package/dist/esm/components/overlays/containers/alert-dialog.js +11 -1
  550. package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
  551. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  552. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  553. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  554. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  555. package/dist/esm/components/overlays/containers/dialog.js +11 -1
  556. package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
  557. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  558. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  559. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  560. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  561. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  562. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  563. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  564. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  565. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  566. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  567. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  568. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  569. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  570. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  571. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  572. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  573. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  574. package/dist/esm/components/sections/card.d.ts.map +1 -1
  575. package/dist/esm/components/sections/card.js +71 -6
  576. package/dist/esm/components/sections/card.js.map +1 -1
  577. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  578. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  579. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  580. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  581. package/dist/esm/components/sections/content-section.js +36 -6
  582. package/dist/esm/components/sections/content-section.js.map +1 -1
  583. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -1
  584. package/dist/esm/components/sections/option-gesture.d.ts +15 -0
  585. package/dist/esm/components/sections/option-gesture.d.ts.map +1 -0
  586. package/dist/esm/components/sections/option-gesture.js +66 -0
  587. package/dist/esm/components/sections/option-gesture.js.map +1 -0
  588. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  589. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  590. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  591. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  592. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  593. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  594. package/dist/esm/components/sections/table.d.ts.map +1 -1
  595. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  596. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  597. package/dist/esm/components/sections/tabs.js +64 -15
  598. package/dist/esm/components/sections/tabs.js.map +1 -1
  599. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  600. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  601. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  602. package/dist/esm/components/typography/label.d.ts.map +1 -1
  603. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  604. package/dist/esm/components/typography/link.d.ts.map +1 -1
  605. package/dist/esm/components/typography/link.js +9 -3
  606. package/dist/esm/components/typography/link.js.map +1 -1
  607. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  608. package/dist/esm/components/typography/text.d.ts +1 -1
  609. package/dist/esm/components/typography/text.d.ts.map +1 -1
  610. package/dist/esm/components/typography/text.js +3 -2
  611. package/dist/esm/components/typography/text.js.map +1 -1
  612. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  613. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  614. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  615. package/dist/esm/config/index.d.ts.map +1 -1
  616. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  617. package/dist/esm/config/preset-design-system.js +37 -60
  618. package/dist/esm/config/preset-design-system.js.map +1 -1
  619. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  620. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  621. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  622. package/dist/esm/config/preset-navigation.js +0 -5
  623. package/dist/esm/config/preset-navigation.js.map +1 -1
  624. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  625. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  626. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  627. package/dist/esm/config/presets.d.ts.map +1 -1
  628. package/dist/esm/config/resources/application.resource-presets.d.ts +2 -0
  629. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  630. package/dist/esm/config/resources/application.resource-presets.js +163 -7
  631. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  632. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  633. package/dist/esm/config/resources/billing.resource-presets.js +1 -0
  634. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  635. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  636. package/dist/esm/config/resources/guidance.resource-presets.js +21 -5
  637. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  638. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  639. package/dist/esm/config/resources/identity.resource-presets.js +25 -3
  640. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  641. package/dist/esm/config/resources/index.d.ts.map +1 -1
  642. package/dist/esm/config/resources/index.js.map +1 -1
  643. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  644. package/dist/esm/config/resources/organizations.resource-presets.js +90 -12
  645. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  646. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  647. package/dist/esm/config/resources/security.resource-presets.d.ts +8 -2
  648. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  649. package/dist/esm/config/resources/security.resource-presets.js +185 -29
  650. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  651. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  652. package/dist/esm/config/resources/webhooks.resource-presets.js +27 -2
  653. package/dist/esm/config/resources/webhooks.resource-presets.js.map +1 -1
  654. package/dist/esm/index.d.ts +7 -1
  655. package/dist/esm/index.d.ts.map +1 -1
  656. package/dist/esm/index.js +7 -1
  657. package/dist/esm/index.js.map +1 -1
  658. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  659. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  660. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  661. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  662. package/dist/esm/registration/register-common-enums.js +48 -34
  663. package/dist/esm/registration/register-common-enums.js.map +1 -1
  664. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  665. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  666. package/dist/esm/registration/register-default-icons.js +3 -1
  667. package/dist/esm/registration/register-default-icons.js.map +1 -1
  668. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  669. package/dist/esm/registration/register-default-presets.js +36 -4
  670. package/dist/esm/registration/register-default-presets.js.map +1 -1
  671. package/dist/esm/registration/register-provider-components.d.ts +31 -0
  672. package/dist/esm/registration/register-provider-components.d.ts.map +1 -0
  673. package/dist/esm/registration/register-provider-components.js +50 -0
  674. package/dist/esm/registration/register-provider-components.js.map +1 -0
  675. package/dist/esm/shiki-subset.d.ts +11 -3
  676. package/dist/esm/shiki-subset.d.ts.map +1 -1
  677. package/dist/esm/shiki-subset.js +10 -2
  678. package/dist/esm/shiki-subset.js.map +1 -1
  679. package/dist/esm/theme-exports.d.ts.map +1 -1
  680. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  681. package/dist/esm/themes/cozy.theme.js +19 -5
  682. package/dist/esm/themes/cozy.theme.js.map +1 -1
  683. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  684. package/dist/esm/themes/dense.theme.js +56 -10
  685. package/dist/esm/themes/dense.theme.js.map +1 -1
  686. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  687. package/dist/esm/themes/editorial.theme.js +19 -5
  688. package/dist/esm/themes/editorial.theme.js.map +1 -1
  689. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  690. package/dist/esm/themes/glass.theme.js +5 -1
  691. package/dist/esm/themes/glass.theme.js.map +1 -1
  692. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  693. package/dist/esm/themes/neo-brutalist.theme.js +9 -2
  694. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  695. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  696. package/dist/esm/themes/terminal.theme.js +19 -5
  697. package/dist/esm/themes/terminal.theme.js.map +1 -1
  698. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  699. package/dist/esm/themes/trading.theme.js +22 -6
  700. package/dist/esm/themes/trading.theme.js.map +1 -1
  701. package/dist/tsconfig.build.tsbuildinfo +1 -1
  702. package/package.json +29 -44
  703. package/dist/esm/.native.tsbuildinfo +0 -1
  704. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts +0 -16
  705. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +0 -1
  706. package/dist/esm/components/form/controls/form-field-checkbox-group.js +0 -143
  707. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Dropbox file picker — the component the `dropbox` provider contributes for `FRONTEND_FILE_PICKER`.
3
+ *
4
+ * ## Why it declares BROWSER_READABLE_URL, like OneDrive and unlike Drive
5
+ *
6
+ * The Chooser opened with `linkType: 'direct'` returns each chosen file carrying a link that needs no
7
+ * credential to fetch and expires after four hours. The browser genuinely can read the bytes, so the
8
+ * honest arm is `BROWSER_READABLE_URL` and the framework ingests the result into the field's own
9
+ * storage. Drive's picker returns metadata only, whose bytes need a credential the browser must not
10
+ * hold — which is why #383 was answered PER VENDOR rather than once.
11
+ *
12
+ * spec-cite: Dropbox Chooser reference —
13
+ * https://docs.dropboxapi.com/dropbox-api/docs/pre-built-components/chooser — for the `choose`
14
+ * options used here, the direct link being credential-free, and the returned file's fields.
15
+ * Paraphrased rather than quoted.
16
+ *
17
+ * ## The app key does NOT ride on the script tag
18
+ *
19
+ * The vendor documents `data-app-key` on a script carrying `id="dropboxjs"`, which the framework's
20
+ * declarative `scripts` channel cannot express: that declaration is static engine data and the key is
21
+ * per-application configuration. Reading the shipped `dropins.js` shows a second, public source —
22
+ * `Dropbox.init({ appKey })` — so the script is declared plainly in the provider module and the key
23
+ * is supplied HERE from `publicConfig`, after the script has executed.
24
+ *
25
+ * ## Two vendor limits worth knowing before debugging one
26
+ *
27
+ * `choose` has NO error callback — only `success` and `cancel` — so a failure inside the vendor's own
28
+ * overlay surfaces as a cancel or as silence. Everything this component CAN detect is checked before
29
+ * `choose` is called, which is why the guards below are eager rather than defensive.
30
+ *
31
+ * And a chosen file carries no MIME type. The selection therefore omits `mimeType` rather than
32
+ * guessing one from the extension: absent means UNKNOWN, and the field validates every chosen file
33
+ * against `allowedMimeTypes` on its own.
34
+ *
35
+ * ## Not proven in a browser
36
+ *
37
+ * Nothing here has been driven against a real Dropbox account. Tracked on #460, which is where the
38
+ * DROPBOX storage member's fate lives: this picker is the ATTACH-only offering, the governed path is
39
+ * not built, and `google-drive` remains the one proven governed mechanism.
40
+ */
41
+ import { useEffect, useRef } from 'react';
42
+ import { ProviderFrontendSelectionDelivery, } from '@wildo-ai/saas-models/public-runtime';
43
+ function readString(value) {
44
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
45
+ }
46
+ function readNumber(value) {
47
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
48
+ }
49
+ /** Opens the Chooser as soon as it mounts — see the Drive picker for why mounting IS opening. */
50
+ export function DropboxPicker(props) {
51
+ const openedRef = useRef(false);
52
+ useEffect(() => {
53
+ if (openedRef.current)
54
+ return;
55
+ openedRef.current = true;
56
+ let cancelled = false;
57
+ const fail = (message) => {
58
+ if (!cancelled)
59
+ props.onError(new Error(message));
60
+ };
61
+ const globals = window;
62
+ const dropbox = globals.Dropbox;
63
+ if (dropbox === undefined) {
64
+ fail('The Dropbox Chooser script has not loaded, so the picker cannot open. The `dropbox` provider declares it '
65
+ + 'in `scripts`; check that the surface injects provider scripts and that the composed '
66
+ + 'Content-Security-Policy admits https://www.dropbox.com.');
67
+ return;
68
+ }
69
+ const appKey = readString(props.publicConfig.appKey);
70
+ if (appKey === undefined) {
71
+ fail("The `dropbox` provider's publicConfig declares no `appKey`, which the Dropbox Chooser requires.");
72
+ return;
73
+ }
74
+ // The framework injects the script WITHOUT the vendor's documented `data-app-key` attribute — see
75
+ // the module note — so `init` is the only thing that can supply the key. A build of `dropins.js`
76
+ // without it would leave the Chooser keyless and throw from inside the vendor's own code, which is
77
+ // far harder to read than this sentence.
78
+ if (typeof dropbox.init !== 'function') {
79
+ fail('The loaded Dropbox Chooser script exposes no `Dropbox.init`, so its app key cannot be supplied. The '
80
+ + 'framework injects the script without the vendor-documented `data-app-key` attribute because that key is '
81
+ + 'per-application configuration, and `Dropbox.init({ appKey })` is the documented alternative.');
82
+ return;
83
+ }
84
+ dropbox.init({ appKey });
85
+ dropbox.choose({
86
+ // `direct` is what makes this picker's result browser-readable: it is the value that returns a
87
+ // credential-free download link rather than a shareable preview page. Changing it to `preview`
88
+ // would change what a selection CONTAINS, and the provider's declared `selectionDelivery` would
89
+ // then be a lie the framework refuses — see `receiveProviderFileSelections`.
90
+ linkType: 'direct',
91
+ multiselect: props.constraints.maxFiles !== undefined && props.constraints.maxFiles > 1,
92
+ // Incompatible with `linkType: 'direct'` by the vendor's own contract, and meaningless for a
93
+ // file field regardless: a folder has no bytes to ingest.
94
+ folderselect: false,
95
+ // Dropbox enforces this itself, so the user is stopped in the overlay rather than after
96
+ // choosing. Unlike the MIME allow-list, which the vendor filters by EXTENSION and so cannot be
97
+ // translated faithfully — that stays with the field, which validates every chosen file anyway.
98
+ ...(props.constraints.maxSize === undefined ? {} : { sizeLimit: props.constraints.maxSize }),
99
+ success: (files) => {
100
+ if (cancelled)
101
+ return;
102
+ const selections = [];
103
+ for (const file of files) {
104
+ const url = readString(file.link);
105
+ // No link means the Chooser did not run with `linkType: 'direct'` — a misconfiguration, and
106
+ // the one case where handing the selection up anyway would break the declaration this
107
+ // provider makes.
108
+ if (url === undefined) {
109
+ fail('Dropbox returned a chosen file with no link. The Chooser must be opened with `linkType: "direct"` '
110
+ + 'for its result to be browser-readable, which is what this provider declares.');
111
+ return;
112
+ }
113
+ selections.push({
114
+ kind: ProviderFrontendSelectionDelivery.BROWSER_READABLE_URL,
115
+ url,
116
+ displayName: readString(file.name),
117
+ // No `mimeType`: Dropbox does not return one, and guessing from the extension would put an
118
+ // invented value where the framework reads a fact.
119
+ sizeBytes: readNumber(file.bytes),
120
+ });
121
+ }
122
+ props.onSelect(selections);
123
+ },
124
+ cancel: () => {
125
+ if (!cancelled)
126
+ props.onCancel();
127
+ },
128
+ });
129
+ return () => {
130
+ cancelled = true;
131
+ };
132
+ // Mount-only — see the Drive picker.
133
+ // eslint-disable-next-line react-hooks/exhaustive-deps
134
+ }, []);
135
+ return null;
136
+ }
137
+ //# sourceMappingURL=dropbox-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropbox-picker.js","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/dropbox-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Dropbox file picker — the component the `dropbox` provider contributes for `FRONTEND_FILE_PICKER`.\n *\n * ## Why it declares BROWSER_READABLE_URL, like OneDrive and unlike Drive\n *\n * The Chooser opened with `linkType: 'direct'` returns each chosen file carrying a link that needs no\n * credential to fetch and expires after four hours. The browser genuinely can read the bytes, so the\n * honest arm is `BROWSER_READABLE_URL` and the framework ingests the result into the field's own\n * storage. Drive's picker returns metadata only, whose bytes need a credential the browser must not\n * hold — which is why #383 was answered PER VENDOR rather than once.\n *\n * spec-cite: Dropbox Chooser reference —\n * https://docs.dropboxapi.com/dropbox-api/docs/pre-built-components/chooser — for the `choose`\n * options used here, the direct link being credential-free, and the returned file's fields.\n * Paraphrased rather than quoted.\n *\n * ## The app key does NOT ride on the script tag\n *\n * The vendor documents `data-app-key` on a script carrying `id=\"dropboxjs\"`, which the framework's\n * declarative `scripts` channel cannot express: that declaration is static engine data and the key is\n * per-application configuration. Reading the shipped `dropins.js` shows a second, public source —\n * `Dropbox.init({ appKey })` — so the script is declared plainly in the provider module and the key\n * is supplied HERE from `publicConfig`, after the script has executed.\n *\n * ## Two vendor limits worth knowing before debugging one\n *\n * `choose` has NO error callback — only `success` and `cancel` — so a failure inside the vendor's own\n * overlay surfaces as a cancel or as silence. Everything this component CAN detect is checked before\n * `choose` is called, which is why the guards below are eager rather than defensive.\n *\n * And a chosen file carries no MIME type. The selection therefore omits `mimeType` rather than\n * guessing one from the extension: absent means UNKNOWN, and the field validates every chosen file\n * against `allowedMimeTypes` on its own.\n *\n * ## Not proven in a browser\n *\n * Nothing here has been driven against a real Dropbox account. Tracked on #460, which is where the\n * DROPBOX storage member's fate lives: this picker is the ATTACH-only offering, the governed path is\n * not built, and `google-drive` remains the one proven governed mechanism.\n */\n\nimport { useEffect, useRef } from 'react';\nimport {\n ProviderFrontendSelectionDelivery,\n type ProviderFilePickerProps,\n type ProviderFileSelection,\n} from '@wildo-ai/saas-models/public-runtime';\n\n/** The slice of a chosen Dropbox file this component reads. */\ninterface DropboxChosenFile {\n readonly id?: unknown;\n readonly name?: unknown;\n readonly link?: unknown;\n readonly bytes?: unknown;\n readonly isDir?: unknown;\n}\n\ninterface DropboxChooseOptions {\n linkType: string;\n multiselect: boolean;\n folderselect: boolean;\n sizeLimit?: number;\n success(files: readonly DropboxChosenFile[]): void;\n cancel(): void;\n}\n\n/**\n * The `Dropbox` global `dropins.js` installs.\n *\n * Typed locally for the same reason as the Drive and OneDrive pickers: the surface used is two\n * functions, and a `@types` package for a global that may not be present buys nothing this file does\n * not already state.\n */\ninterface DropboxGlobals {\n readonly Dropbox?: {\n choose(options: DropboxChooseOptions): void;\n init?(options: { appKey: string }): void;\n };\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction readNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\n/** Opens the Chooser as soon as it mounts — see the Drive picker for why mounting IS opening. */\nexport function DropboxPicker(props: ProviderFilePickerProps): null {\n const openedRef = useRef(false);\n\n useEffect(() => {\n if (openedRef.current) return;\n openedRef.current = true;\n\n let cancelled = false;\n const fail = (message: string): void => {\n if (!cancelled) props.onError(new Error(message));\n };\n\n const globals = window as unknown as DropboxGlobals;\n const dropbox = globals.Dropbox;\n if (dropbox === undefined) {\n fail(\n 'The Dropbox Chooser script has not loaded, so the picker cannot open. The `dropbox` provider declares it '\n + 'in `scripts`; check that the surface injects provider scripts and that the composed '\n + 'Content-Security-Policy admits https://www.dropbox.com.',\n );\n return;\n }\n\n const appKey = readString(props.publicConfig.appKey);\n if (appKey === undefined) {\n fail(\"The `dropbox` provider's publicConfig declares no `appKey`, which the Dropbox Chooser requires.\");\n return;\n }\n\n // The framework injects the script WITHOUT the vendor's documented `data-app-key` attribute — see\n // the module note — so `init` is the only thing that can supply the key. A build of `dropins.js`\n // without it would leave the Chooser keyless and throw from inside the vendor's own code, which is\n // far harder to read than this sentence.\n if (typeof dropbox.init !== 'function') {\n fail(\n 'The loaded Dropbox Chooser script exposes no `Dropbox.init`, so its app key cannot be supplied. The '\n + 'framework injects the script without the vendor-documented `data-app-key` attribute because that key is '\n + 'per-application configuration, and `Dropbox.init({ appKey })` is the documented alternative.',\n );\n return;\n }\n dropbox.init({ appKey });\n\n dropbox.choose({\n // `direct` is what makes this picker's result browser-readable: it is the value that returns a\n // credential-free download link rather than a shareable preview page. Changing it to `preview`\n // would change what a selection CONTAINS, and the provider's declared `selectionDelivery` would\n // then be a lie the framework refuses — see `receiveProviderFileSelections`.\n linkType: 'direct',\n multiselect: props.constraints.maxFiles !== undefined && props.constraints.maxFiles > 1,\n // Incompatible with `linkType: 'direct'` by the vendor's own contract, and meaningless for a\n // file field regardless: a folder has no bytes to ingest.\n folderselect: false,\n // Dropbox enforces this itself, so the user is stopped in the overlay rather than after\n // choosing. Unlike the MIME allow-list, which the vendor filters by EXTENSION and so cannot be\n // translated faithfully — that stays with the field, which validates every chosen file anyway.\n ...(props.constraints.maxSize === undefined ? {} : { sizeLimit: props.constraints.maxSize }),\n success: (files) => {\n if (cancelled) return;\n\n const selections: ProviderFileSelection[] = [];\n for (const file of files) {\n const url = readString(file.link);\n // No link means the Chooser did not run with `linkType: 'direct'` — a misconfiguration, and\n // the one case where handing the selection up anyway would break the declaration this\n // provider makes.\n if (url === undefined) {\n fail(\n 'Dropbox returned a chosen file with no link. The Chooser must be opened with `linkType: \"direct\"` '\n + 'for its result to be browser-readable, which is what this provider declares.',\n );\n return;\n }\n selections.push({\n kind: ProviderFrontendSelectionDelivery.BROWSER_READABLE_URL,\n url,\n displayName: readString(file.name),\n // No `mimeType`: Dropbox does not return one, and guessing from the extension would put an\n // invented value where the framework reads a fact.\n sizeBytes: readNumber(file.bytes),\n });\n }\n props.onSelect(selections);\n },\n cancel: () => {\n if (!cancelled) props.onCancel();\n },\n });\n\n return () => {\n cancelled = true;\n };\n // Mount-only — see the Drive picker.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return null;\n}\n"]}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DropboxPickerLazy — the ONLY public door onto the DropboxPicker module.
3
+ *
4
+ * Lazy-boundary wrapper (`*.lazy.tsx` convention, PdfViewerLazy precedent): owns the
5
+ * `React.lazy(() => import(...))` split point so the picker's code never lands in the
6
+ * application's entry chunk, and `pnpm check:lazy-boundaries` refuses any static import of
7
+ * the wrapped module from anywhere else. A provider picker is opened by a user who asked
8
+ * for one; every other visitor pays nothing for it.
9
+ *
10
+ * No Suspense fallback with a shape: a picker renders NOTHING of its own (it opens a
11
+ * vendor overlay), so reserving layout would draw a box where there will never be one.
12
+ */
13
+ import * as React from "react";
14
+ import type { ProviderFilePickerProps } from "@wildo-ai/saas-models/public-runtime";
15
+ /**
16
+ * A chunk that fails to download throws during render, and Suspense does not catch it. The door
17
+ * catches it and reports it through the picker contract's own `onError` — the channel the host
18
+ * already turns into `onProviderFailure` — so a picker that could not arrive is a reported failure,
19
+ * not a crashed form.
20
+ */
21
+ export declare function DropboxPickerLazy(props: ProviderFilePickerProps): React.JSX.Element;
22
+ //# sourceMappingURL=dropbox-picker.lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropbox-picker.lazy.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/dropbox-picker.lazy.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAKnF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQnF"}
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * DropboxPickerLazy — the ONLY public door onto the DropboxPicker module.
5
+ *
6
+ * Lazy-boundary wrapper (`*.lazy.tsx` convention, PdfViewerLazy precedent): owns the
7
+ * `React.lazy(() => import(...))` split point so the picker's code never lands in the
8
+ * application's entry chunk, and `pnpm check:lazy-boundaries` refuses any static import of
9
+ * the wrapped module from anywhere else. A provider picker is opened by a user who asked
10
+ * for one; every other visitor pays nothing for it.
11
+ *
12
+ * No Suspense fallback with a shape: a picker renders NOTHING of its own (it opens a
13
+ * vendor overlay), so reserving layout would draw a box where there will never be one.
14
+ */
15
+ import * as React from "react";
16
+ import { LazyDoorErrorBoundary } from "@wildo-ai/saas-frontend-lib";
17
+ const LazyDropboxPicker = React.lazy(async () => ({ default: (await import("./dropbox-picker.js")).DropboxPicker }));
18
+ /**
19
+ * A chunk that fails to download throws during render, and Suspense does not catch it. The door
20
+ * catches it and reports it through the picker contract's own `onError` — the channel the host
21
+ * already turns into `onProviderFailure` — so a picker that could not arrive is a reported failure,
22
+ * not a crashed form.
23
+ */
24
+ export function DropboxPickerLazy(props) {
25
+ return (_jsx(LazyDoorErrorBoundary, { doorName: "DropboxPickerLazy", fallback: null, onError: props.onError, children: _jsx(React.Suspense, { fallback: null, children: _jsx(LazyDropboxPicker, { ...props }) }) }));
26
+ }
27
+ //# sourceMappingURL=dropbox-picker.lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropbox-picker.lazy.js","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/dropbox-picker.lazy.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEnE,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAA;AAEjH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA8B;IAC9D,OAAO,CACL,KAAC,qBAAqB,IAAC,QAAQ,EAAC,mBAAmB,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,YACxF,KAAC,KAAK,CAAC,QAAQ,IAAC,QAAQ,EAAE,IAAI,YAC5B,KAAC,iBAAiB,OAAK,KAAK,GAAI,GACjB,GACK,CACzB,CAAA;AACH,CAAC","sourcesContent":["\"use client\"\n\n/**\n * DropboxPickerLazy — the ONLY public door onto the DropboxPicker module.\n *\n * Lazy-boundary wrapper (`*.lazy.tsx` convention, PdfViewerLazy precedent): owns the\n * `React.lazy(() => import(...))` split point so the picker's code never lands in the\n * application's entry chunk, and `pnpm check:lazy-boundaries` refuses any static import of\n * the wrapped module from anywhere else. A provider picker is opened by a user who asked\n * for one; every other visitor pays nothing for it.\n *\n * No Suspense fallback with a shape: a picker renders NOTHING of its own (it opens a\n * vendor overlay), so reserving layout would draw a box where there will never be one.\n */\n\nimport * as React from \"react\"\nimport type { ProviderFilePickerProps } from \"@wildo-ai/saas-models/public-runtime\"\nimport { LazyDoorErrorBoundary } from \"@wildo-ai/saas-frontend-lib\"\n\nconst LazyDropboxPicker = React.lazy(async () => ({ default: (await import(\"./dropbox-picker\")).DropboxPicker }))\n\n/**\n * A chunk that fails to download throws during render, and Suspense does not catch it. The door\n * catches it and reports it through the picker contract's own `onError` — the channel the host\n * already turns into `onProviderFailure` — so a picker that could not arrive is a reported failure,\n * not a crashed form.\n */\nexport function DropboxPickerLazy(props: ProviderFilePickerProps): React.JSX.Element {\n return (\n <LazyDoorErrorBoundary doorName=\"DropboxPickerLazy\" fallback={null} onError={props.onError}>\n <React.Suspense fallback={null}>\n <LazyDropboxPicker {...props} />\n </React.Suspense>\n </LazyDoorErrorBoundary>\n )\n}\n"]}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Google Drive file picker — the component the `google-drive` provider contributes for
3
+ * `FRONTEND_FILE_PICKER`.
4
+ *
5
+ * ## Why it declares REMOTE_REFERENCE
6
+ *
7
+ * Drive's Picker hands back file METADATA — an id, a name, a mime type — never
8
+ * the bytes. Fetching the bytes is a separate authenticated call to the Drive
9
+ * API, and in a Wildo application the credential that call needs belongs to the
10
+ * backend. So a selection here is an opaque handle the application's executor
11
+ * door resolves, which is exactly `REMOTE_REFERENCE`.
12
+ *
13
+ * Its sibling `onedrive-picker.tsx` declares the OTHER arm,
14
+ * and the contrast is why issue #383 was answered per-vendor rather than
15
+ * globally: two real pickers for one capability genuinely return different
16
+ * things, and a framework insisting on one contract would have had to exclude
17
+ * one of them.
18
+ *
19
+ * ## Why it lives in presets-components, behind a lazy boundary
20
+ *
21
+ * The engine's provider MODULES live in `@wildo-ai/external-connectors-public`,
22
+ * which ships into three browser bundles behind a one-entry allow-list and
23
+ * deliberately has no renderer. A component cannot live there, and that
24
+ * package cannot name a loader that reaches this one either — it would close a
25
+ * package cycle. So the module DECLARES the picker (its delivery, its keys) and
26
+ * this library REGISTERS the loader beside its presets (`register-provider-components.ts`),
27
+ * keyed by capability and provider ref. `google-drive-picker.lazy.tsx` is the
28
+ * only door onto this file, and `check:lazy-boundaries` keeps it that way.
29
+ *
30
+ * This component has no vendor dependency: the Picker arrives as a `<script>`
31
+ * global the provider module declares. A per-vendor package was built for it
32
+ * first and retired for exactly that reason (#394).
33
+ *
34
+ * ## Not proven in a browser
35
+ *
36
+ * Nothing here has been driven against a real Drive account: the Picker
37
+ * authorizes as the SIGNED-IN USER, so it needs a user-consented OAuth token,
38
+ * which is the account-connection surface (#333) and does not exist yet. Without
39
+ * one this picker reports through `onError` and opens nothing — deliberately,
40
+ * rather than reading a token from `publicConfig`, which is served to every
41
+ * browser. Tracked on #569, which is this picker's own unproven record — a Drive file picked, linked
42
+ * and read through the GOOGLE_DRIVE storage by somebody who did not write it. (The previous pointer
43
+ * here was #359, which is closed.)
44
+ */
45
+ import { type ProviderFilePickerProps } from '@wildo-ai/saas-models/public-runtime';
46
+ /**
47
+ * Opens the Drive picker as soon as it mounts.
48
+ *
49
+ * Mounting IS opening: the framework host mounts a picker only once a user has
50
+ * asked for one, so an extra button inside the component would be a second click
51
+ * for the same intent.
52
+ */
53
+ export declare function GoogleDrivePicker(props: ProviderFilePickerProps): null;
54
+ //# sourceMappingURL=google-drive-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-drive-picker.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/google-drive-picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,sCAAsC,CAAC;AAsD9C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAuGtE"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Google Drive file picker — the component the `google-drive` provider contributes for
3
+ * `FRONTEND_FILE_PICKER`.
4
+ *
5
+ * ## Why it declares REMOTE_REFERENCE
6
+ *
7
+ * Drive's Picker hands back file METADATA — an id, a name, a mime type — never
8
+ * the bytes. Fetching the bytes is a separate authenticated call to the Drive
9
+ * API, and in a Wildo application the credential that call needs belongs to the
10
+ * backend. So a selection here is an opaque handle the application's executor
11
+ * door resolves, which is exactly `REMOTE_REFERENCE`.
12
+ *
13
+ * Its sibling `onedrive-picker.tsx` declares the OTHER arm,
14
+ * and the contrast is why issue #383 was answered per-vendor rather than
15
+ * globally: two real pickers for one capability genuinely return different
16
+ * things, and a framework insisting on one contract would have had to exclude
17
+ * one of them.
18
+ *
19
+ * ## Why it lives in presets-components, behind a lazy boundary
20
+ *
21
+ * The engine's provider MODULES live in `@wildo-ai/external-connectors-public`,
22
+ * which ships into three browser bundles behind a one-entry allow-list and
23
+ * deliberately has no renderer. A component cannot live there, and that
24
+ * package cannot name a loader that reaches this one either — it would close a
25
+ * package cycle. So the module DECLARES the picker (its delivery, its keys) and
26
+ * this library REGISTERS the loader beside its presets (`register-provider-components.ts`),
27
+ * keyed by capability and provider ref. `google-drive-picker.lazy.tsx` is the
28
+ * only door onto this file, and `check:lazy-boundaries` keeps it that way.
29
+ *
30
+ * This component has no vendor dependency: the Picker arrives as a `<script>`
31
+ * global the provider module declares. A per-vendor package was built for it
32
+ * first and retired for exactly that reason (#394).
33
+ *
34
+ * ## Not proven in a browser
35
+ *
36
+ * Nothing here has been driven against a real Drive account: the Picker
37
+ * authorizes as the SIGNED-IN USER, so it needs a user-consented OAuth token,
38
+ * which is the account-connection surface (#333) and does not exist yet. Without
39
+ * one this picker reports through `onError` and opens nothing — deliberately,
40
+ * rather than reading a token from `publicConfig`, which is served to every
41
+ * browser. Tracked on #569, which is this picker's own unproven record — a Drive file picked, linked
42
+ * and read through the GOOGLE_DRIVE storage by somebody who did not write it. (The previous pointer
43
+ * here was #359, which is closed.)
44
+ */
45
+ import { useEffect, useRef } from 'react';
46
+ import { ProviderFrontendSelectionDelivery, } from '@wildo-ai/saas-models/public-runtime';
47
+ function readString(value) {
48
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
49
+ }
50
+ function readNumber(value) {
51
+ if (typeof value === 'number' && Number.isFinite(value))
52
+ return value;
53
+ // Drive reports `sizeBytes` as a decimal STRING for large files, so this is a
54
+ // real case rather than defensiveness. A bare `Number()` would turn an empty
55
+ // string into 0 and claim the file is empty.
56
+ const parsed = typeof value === 'string' && value.trim() !== '' ? Number(value) : Number.NaN;
57
+ return Number.isFinite(parsed) ? parsed : undefined;
58
+ }
59
+ /**
60
+ * Opens the Drive picker as soon as it mounts.
61
+ *
62
+ * Mounting IS opening: the framework host mounts a picker only once a user has
63
+ * asked for one, so an extra button inside the component would be a second click
64
+ * for the same intent.
65
+ */
66
+ export function GoogleDrivePicker(props) {
67
+ // A picker must open exactly once per mount. Without this, any re-render
68
+ // caused by a parent — a resize, a sibling's state — would open a second Drive
69
+ // dialog over the first, and dismissing one would leave the other live.
70
+ const openedRef = useRef(false);
71
+ useEffect(() => {
72
+ if (openedRef.current)
73
+ return;
74
+ openedRef.current = true;
75
+ let cancelled = false;
76
+ const fail = (message) => {
77
+ if (!cancelled)
78
+ props.onError(new Error(message));
79
+ };
80
+ void (async () => {
81
+ const globals = window;
82
+ if (globals.gapi === undefined) {
83
+ fail('The Google API script has not loaded, so the Drive picker cannot open. The `google-drive` provider '
84
+ + 'declares it in `scripts`; check that the surface injects provider scripts and that the composed '
85
+ + 'Content-Security-Policy admits https://apis.google.com.');
86
+ return;
87
+ }
88
+ const token = await props.getAccessToken?.();
89
+ if (token === undefined) {
90
+ fail('No Google access token is available for this user, so the Drive picker cannot open. The Picker '
91
+ + "authorizes as the SIGNED-IN USER, so the application must connect the user's Google account "
92
+ + 'first. A token must never be read from `publicConfig`, which is served to every browser.');
93
+ return;
94
+ }
95
+ const appId = readString(props.publicConfig.appId);
96
+ if (appId === undefined) {
97
+ fail("The `google-drive` provider's publicConfig declares no `appId`, which the Drive picker requires.");
98
+ return;
99
+ }
100
+ globals.gapi.load('picker', () => {
101
+ const picker = window.google?.picker;
102
+ if (picker === undefined) {
103
+ fail('The Google Picker module loaded but installed no `google.picker` global.');
104
+ return;
105
+ }
106
+ const builder = new picker.PickerBuilder()
107
+ .setOAuthToken(token)
108
+ .setAppId(appId)
109
+ .addView(new picker.DocsView(picker.ViewId.DOCS))
110
+ .setCallback((data) => {
111
+ if (cancelled)
112
+ return;
113
+ if (data.action === picker.Action.CANCEL) {
114
+ props.onCancel();
115
+ return;
116
+ }
117
+ if (data.action !== picker.Action.PICKED)
118
+ return;
119
+ const selections = [];
120
+ for (const document of data.docs ?? []) {
121
+ const externalId = readString(document.id);
122
+ // A document with no id is one the backend could never resolve.
123
+ // Reporting beats handing up a selection whose reference is empty,
124
+ // which would fail later and somewhere else.
125
+ if (externalId === undefined) {
126
+ fail('Google Picker returned a selected document with no id, which cannot be resolved.');
127
+ return;
128
+ }
129
+ selections.push({
130
+ kind: ProviderFrontendSelectionDelivery.REMOTE_REFERENCE,
131
+ externalId,
132
+ displayName: readString(document.name),
133
+ mimeType: readString(document.mimeType),
134
+ sizeBytes: readNumber(document.sizeBytes),
135
+ });
136
+ }
137
+ props.onSelect(selections);
138
+ });
139
+ if (props.constraints.maxFiles !== undefined && props.constraints.maxFiles > 1) {
140
+ builder.enableFeature('multiselectEnabled');
141
+ }
142
+ const developerKey = readString(props.publicConfig.developerKey);
143
+ if (developerKey !== undefined)
144
+ builder.setDeveloperKey(developerKey);
145
+ builder.build().setVisible(true);
146
+ });
147
+ })();
148
+ return () => {
149
+ cancelled = true;
150
+ };
151
+ // Mount-only: re-running this opens a second dialog, and every prop it reads
152
+ // is fixed for the life of one picker.
153
+ // eslint-disable-next-line react-hooks/exhaustive-deps
154
+ }, []);
155
+ // The picker is a vendor-owned overlay. This component renders nothing of its
156
+ // own and must not put a placeholder behind it.
157
+ return null;
158
+ }
159
+ //# sourceMappingURL=google-drive-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-drive-picker.js","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/google-drive-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Google Drive file picker — the component the `google-drive` provider contributes for\n * `FRONTEND_FILE_PICKER`.\n *\n * ## Why it declares REMOTE_REFERENCE\n *\n * Drive's Picker hands back file METADATA — an id, a name, a mime type — never\n * the bytes. Fetching the bytes is a separate authenticated call to the Drive\n * API, and in a Wildo application the credential that call needs belongs to the\n * backend. So a selection here is an opaque handle the application's executor\n * door resolves, which is exactly `REMOTE_REFERENCE`.\n *\n * Its sibling `onedrive-picker.tsx` declares the OTHER arm,\n * and the contrast is why issue #383 was answered per-vendor rather than\n * globally: two real pickers for one capability genuinely return different\n * things, and a framework insisting on one contract would have had to exclude\n * one of them.\n *\n * ## Why it lives in presets-components, behind a lazy boundary\n *\n * The engine's provider MODULES live in `@wildo-ai/external-connectors-public`,\n * which ships into three browser bundles behind a one-entry allow-list and\n * deliberately has no renderer. A component cannot live there, and that\n * package cannot name a loader that reaches this one either — it would close a\n * package cycle. So the module DECLARES the picker (its delivery, its keys) and\n * this library REGISTERS the loader beside its presets (`register-provider-components.ts`),\n * keyed by capability and provider ref. `google-drive-picker.lazy.tsx` is the\n * only door onto this file, and `check:lazy-boundaries` keeps it that way.\n *\n * This component has no vendor dependency: the Picker arrives as a `<script>`\n * global the provider module declares. A per-vendor package was built for it\n * first and retired for exactly that reason (#394).\n *\n * ## Not proven in a browser\n *\n * Nothing here has been driven against a real Drive account: the Picker\n * authorizes as the SIGNED-IN USER, so it needs a user-consented OAuth token,\n * which is the account-connection surface (#333) and does not exist yet. Without\n * one this picker reports through `onError` and opens nothing — deliberately,\n * rather than reading a token from `publicConfig`, which is served to every\n * browser. Tracked on #569, which is this picker's own unproven record — a Drive file picked, linked\n * and read through the GOOGLE_DRIVE storage by somebody who did not write it. (The previous pointer\n * here was #359, which is closed.)\n */\n\nimport { useEffect, useRef } from 'react';\nimport {\n ProviderFrontendSelectionDelivery,\n type ProviderFilePickerProps,\n type ProviderFileSelection,\n} from '@wildo-ai/saas-models/public-runtime';\n\n/** The slice of Drive's picker metadata this component reads. */\ninterface GooglePickerDocument {\n readonly id?: unknown;\n readonly name?: unknown;\n readonly mimeType?: unknown;\n readonly sizeBytes?: unknown;\n}\n\ninterface GooglePickerBuilder {\n setOAuthToken(token: string): GooglePickerBuilder;\n setAppId(appId: string): GooglePickerBuilder;\n setDeveloperKey(key: string): GooglePickerBuilder;\n addView(view: object): GooglePickerBuilder;\n enableFeature(feature: string): GooglePickerBuilder;\n setCallback(\n callback: (data: { action?: unknown; docs?: readonly GooglePickerDocument[] }) => void,\n ): GooglePickerBuilder;\n build(): { setVisible(visible: boolean): void };\n}\n\n/**\n * The `gapi` / `google.picker` globals the vendor's `<script>` installs.\n *\n * Typed structurally and locally rather than through `@types/gapi`: the surface\n * used here is four calls wide, and a `@types` package for a global that may not\n * be present is a dependency bought for a shape this file already states.\n */\ninterface GooglePickerGlobals {\n readonly gapi?: { load(name: string, callback: () => void): void };\n readonly google?: {\n readonly picker?: {\n readonly Action: { readonly PICKED: string; readonly CANCEL: string };\n readonly ViewId: { readonly DOCS: string };\n readonly PickerBuilder: new () => GooglePickerBuilder;\n readonly DocsView: new (viewId: string) => object;\n };\n };\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\n\nfunction readNumber(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n // Drive reports `sizeBytes` as a decimal STRING for large files, so this is a\n // real case rather than defensiveness. A bare `Number()` would turn an empty\n // string into 0 and claim the file is empty.\n const parsed = typeof value === 'string' && value.trim() !== '' ? Number(value) : Number.NaN;\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\n/**\n * Opens the Drive picker as soon as it mounts.\n *\n * Mounting IS opening: the framework host mounts a picker only once a user has\n * asked for one, so an extra button inside the component would be a second click\n * for the same intent.\n */\nexport function GoogleDrivePicker(props: ProviderFilePickerProps): null {\n // A picker must open exactly once per mount. Without this, any re-render\n // caused by a parent — a resize, a sibling's state — would open a second Drive\n // dialog over the first, and dismissing one would leave the other live.\n const openedRef = useRef(false);\n\n useEffect(() => {\n if (openedRef.current) return;\n openedRef.current = true;\n\n let cancelled = false;\n const fail = (message: string): void => {\n if (!cancelled) props.onError(new Error(message));\n };\n\n void (async () => {\n const globals = window as unknown as GooglePickerGlobals;\n if (globals.gapi === undefined) {\n fail(\n 'The Google API script has not loaded, so the Drive picker cannot open. The `google-drive` provider '\n + 'declares it in `scripts`; check that the surface injects provider scripts and that the composed '\n + 'Content-Security-Policy admits https://apis.google.com.',\n );\n return;\n }\n\n const token = await props.getAccessToken?.();\n if (token === undefined) {\n fail(\n 'No Google access token is available for this user, so the Drive picker cannot open. The Picker '\n + \"authorizes as the SIGNED-IN USER, so the application must connect the user's Google account \"\n + 'first. A token must never be read from `publicConfig`, which is served to every browser.',\n );\n return;\n }\n\n const appId = readString(props.publicConfig.appId);\n if (appId === undefined) {\n fail(\"The `google-drive` provider's publicConfig declares no `appId`, which the Drive picker requires.\");\n return;\n }\n\n globals.gapi.load('picker', () => {\n const picker = (window as unknown as GooglePickerGlobals).google?.picker;\n if (picker === undefined) {\n fail('The Google Picker module loaded but installed no `google.picker` global.');\n return;\n }\n\n const builder = new picker.PickerBuilder()\n .setOAuthToken(token)\n .setAppId(appId)\n .addView(new picker.DocsView(picker.ViewId.DOCS))\n .setCallback((data) => {\n if (cancelled) return;\n if (data.action === picker.Action.CANCEL) {\n props.onCancel();\n return;\n }\n if (data.action !== picker.Action.PICKED) return;\n\n const selections: ProviderFileSelection[] = [];\n for (const document of data.docs ?? []) {\n const externalId = readString(document.id);\n // A document with no id is one the backend could never resolve.\n // Reporting beats handing up a selection whose reference is empty,\n // which would fail later and somewhere else.\n if (externalId === undefined) {\n fail('Google Picker returned a selected document with no id, which cannot be resolved.');\n return;\n }\n selections.push({\n kind: ProviderFrontendSelectionDelivery.REMOTE_REFERENCE,\n externalId,\n displayName: readString(document.name),\n mimeType: readString(document.mimeType),\n sizeBytes: readNumber(document.sizeBytes),\n });\n }\n props.onSelect(selections);\n });\n\n if (props.constraints.maxFiles !== undefined && props.constraints.maxFiles > 1) {\n builder.enableFeature('multiselectEnabled');\n }\n const developerKey = readString(props.publicConfig.developerKey);\n if (developerKey !== undefined) builder.setDeveloperKey(developerKey);\n\n builder.build().setVisible(true);\n });\n })();\n\n return () => {\n cancelled = true;\n };\n // Mount-only: re-running this opens a second dialog, and every prop it reads\n // is fixed for the life of one picker.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // The picker is a vendor-owned overlay. This component renders nothing of its\n // own and must not put a placeholder behind it.\n return null;\n}\n"]}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * GoogleDrivePickerLazy — the ONLY public door onto the GoogleDrivePicker module.
3
+ *
4
+ * Lazy-boundary wrapper (`*.lazy.tsx` convention, PdfViewerLazy precedent): owns the
5
+ * `React.lazy(() => import(...))` split point so the picker's code never lands in the
6
+ * application's entry chunk, and `pnpm check:lazy-boundaries` refuses any static import of
7
+ * the wrapped module from anywhere else. A provider picker is opened by a user who asked
8
+ * for one; every other visitor pays nothing for it.
9
+ *
10
+ * No Suspense fallback with a shape: a picker renders NOTHING of its own (it opens a
11
+ * vendor overlay), so reserving layout would draw a box where there will never be one.
12
+ */
13
+ import * as React from "react";
14
+ import type { ProviderFilePickerProps } from "@wildo-ai/saas-models/public-runtime";
15
+ /**
16
+ * A chunk that fails to download throws during render, and Suspense does not catch it. The door
17
+ * catches it and reports it through the picker contract's own `onError` — the channel the host
18
+ * already turns into `onProviderFailure` — so a picker that could not arrive is a reported failure,
19
+ * not a crashed form.
20
+ */
21
+ export declare function GoogleDrivePickerLazy(props: ProviderFilePickerProps): React.JSX.Element;
22
+ //# sourceMappingURL=google-drive-picker.lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-drive-picker.lazy.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/google-drive-picker.lazy.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAKnF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQvF"}
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * GoogleDrivePickerLazy — the ONLY public door onto the GoogleDrivePicker module.
5
+ *
6
+ * Lazy-boundary wrapper (`*.lazy.tsx` convention, PdfViewerLazy precedent): owns the
7
+ * `React.lazy(() => import(...))` split point so the picker's code never lands in the
8
+ * application's entry chunk, and `pnpm check:lazy-boundaries` refuses any static import of
9
+ * the wrapped module from anywhere else. A provider picker is opened by a user who asked
10
+ * for one; every other visitor pays nothing for it.
11
+ *
12
+ * No Suspense fallback with a shape: a picker renders NOTHING of its own (it opens a
13
+ * vendor overlay), so reserving layout would draw a box where there will never be one.
14
+ */
15
+ import * as React from "react";
16
+ import { LazyDoorErrorBoundary } from "@wildo-ai/saas-frontend-lib";
17
+ const LazyGoogleDrivePicker = React.lazy(async () => ({ default: (await import("./google-drive-picker.js")).GoogleDrivePicker }));
18
+ /**
19
+ * A chunk that fails to download throws during render, and Suspense does not catch it. The door
20
+ * catches it and reports it through the picker contract's own `onError` — the channel the host
21
+ * already turns into `onProviderFailure` — so a picker that could not arrive is a reported failure,
22
+ * not a crashed form.
23
+ */
24
+ export function GoogleDrivePickerLazy(props) {
25
+ return (_jsx(LazyDoorErrorBoundary, { doorName: "GoogleDrivePickerLazy", fallback: null, onError: props.onError, children: _jsx(React.Suspense, { fallback: null, children: _jsx(LazyGoogleDrivePicker, { ...props }) }) }));
26
+ }
27
+ //# sourceMappingURL=google-drive-picker.lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-drive-picker.lazy.js","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/google-drive-picker.lazy.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAEnE,MAAM,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;AAE9H;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA8B;IAClE,OAAO,CACL,KAAC,qBAAqB,IAAC,QAAQ,EAAC,uBAAuB,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,YAC5F,KAAC,KAAK,CAAC,QAAQ,IAAC,QAAQ,EAAE,IAAI,YAC5B,KAAC,qBAAqB,OAAK,KAAK,GAAI,GACrB,GACK,CACzB,CAAA;AACH,CAAC","sourcesContent":["\"use client\"\n\n/**\n * GoogleDrivePickerLazy — the ONLY public door onto the GoogleDrivePicker module.\n *\n * Lazy-boundary wrapper (`*.lazy.tsx` convention, PdfViewerLazy precedent): owns the\n * `React.lazy(() => import(...))` split point so the picker's code never lands in the\n * application's entry chunk, and `pnpm check:lazy-boundaries` refuses any static import of\n * the wrapped module from anywhere else. A provider picker is opened by a user who asked\n * for one; every other visitor pays nothing for it.\n *\n * No Suspense fallback with a shape: a picker renders NOTHING of its own (it opens a\n * vendor overlay), so reserving layout would draw a box where there will never be one.\n */\n\nimport * as React from \"react\"\nimport type { ProviderFilePickerProps } from \"@wildo-ai/saas-models/public-runtime\"\nimport { LazyDoorErrorBoundary } from \"@wildo-ai/saas-frontend-lib\"\n\nconst LazyGoogleDrivePicker = React.lazy(async () => ({ default: (await import(\"./google-drive-picker\")).GoogleDrivePicker }))\n\n/**\n * A chunk that fails to download throws during render, and Suspense does not catch it. The door\n * catches it and reports it through the picker contract's own `onError` — the channel the host\n * already turns into `onProviderFailure` — so a picker that could not arrive is a reported failure,\n * not a crashed form.\n */\nexport function GoogleDrivePickerLazy(props: ProviderFilePickerProps): React.JSX.Element {\n return (\n <LazyDoorErrorBoundary doorName=\"GoogleDrivePickerLazy\" fallback={null} onError={props.onError}>\n <React.Suspense fallback={null}>\n <LazyGoogleDrivePicker {...props} />\n </React.Suspense>\n </LazyDoorErrorBoundary>\n )\n}\n"]}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * OneDrive file picker — the component the `microsoft-onedrive` provider contributes for
3
+ * `FRONTEND_FILE_PICKER`.
4
+ *
5
+ * ## Why it declares BROWSER_READABLE_URL, where its Google sibling declares REMOTE_REFERENCE
6
+ *
7
+ * This is the pair that shows why issue #383 was answered PER VENDOR.
8
+ *
9
+ * OneDrive's picker, opened with the `download` action, returns each chosen file
10
+ * carrying a pre-authenticated download URL — a short-lived link that needs no
11
+ * credential to fetch. The browser genuinely can read the bytes, so the honest
12
+ * declaration is `BROWSER_READABLE_URL` and the framework uploads the result the
13
+ * way it uploads any other file.
14
+ *
15
+ * spec-cite: Microsoft Graph `driveItem` reference —
16
+ * https://learn.microsoft.com/en-us/graph/api/resources/driveitem — for the
17
+ * pre-authenticated `@microsoft.graph.downloadUrl` property. Paraphrased rather
18
+ * than quoted; the reading that matters here is that the URL carries its own
19
+ * authorization and expires, which is what makes the browser-readable arm
20
+ * available at all.
21
+ *
22
+ * Drive's picker returns metadata only, so its bytes need a credential the
23
+ * browser must not hold. Two real vendors, two different contracts, and a
24
+ * framework that insisted on one would have had to drop one of them.
25
+ *
26
+ * ## Not proven in a browser
27
+ *
28
+ * Nothing here has been driven against a real OneDrive account. Unlike the Drive
29
+ * picker this one authenticates through the vendor's own popup rather than
30
+ * needing a token from the application, so it does not depend on #333 — but it
31
+ * still needs a real `clientId` and a real user.
32
+ *
33
+ * Tracked on #570, which is where OneDrive's whole state lives — and #570 is DEFERRED by decision:
34
+ * this v7.2 picker stays as the OneDrive offering, the governed v8 path is not built, and the
35
+ * capability is honest about being "OneDrive files can be attached" rather than "stored in OneDrive".
36
+ * (The previous pointer here was #359, which is closed.)
37
+ */
38
+ import { type ProviderFilePickerProps } from '@wildo-ai/saas-models/public-runtime';
39
+ /** Opens the OneDrive picker as soon as it mounts — see the Drive picker for why mounting IS opening. */
40
+ export declare function OneDrivePicker(props: ProviderFilePickerProps): null;
41
+ //# sourceMappingURL=onedrive-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onedrive-picker.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/onedrive-picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,sCAAsC,CAAC;AAwC9C,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAyFnE"}