@seedgrid/fe-components 2026.11.1 → 2026.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/ai/seedgrid-components.manifest.json +1180 -0
  2. package/dist/generated/compiledStyles.d.ts +1 -1
  3. package/dist/generated/compiledStyles.d.ts.map +1 -1
  4. package/dist/generated/compiledStyles.js +1 -1
  5. package/dist/i18n/en-US.d.ts.map +1 -1
  6. package/dist/i18n/en-US.js +29 -0
  7. package/dist/i18n/es.d.ts.map +1 -1
  8. package/dist/i18n/es.js +29 -0
  9. package/dist/i18n/fr.d.ts.map +1 -1
  10. package/dist/i18n/fr.js +29 -0
  11. package/dist/i18n/pt-BR.d.ts.map +1 -1
  12. package/dist/i18n/pt-BR.js +29 -0
  13. package/dist/i18n/pt-PT.d.ts.map +1 -1
  14. package/dist/i18n/pt-PT.js +29 -0
  15. package/dist/index.d.ts +9 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +4 -0
  18. package/dist/inputs/SgCameraCapture.d.ts +25 -0
  19. package/dist/inputs/SgCameraCapture.d.ts.map +1 -0
  20. package/dist/inputs/SgCameraCapture.js +114 -0
  21. package/dist/inputs/SgCameraCapture.meta.d.ts +4 -0
  22. package/dist/inputs/SgCameraCapture.meta.d.ts.map +1 -0
  23. package/dist/inputs/SgCameraCapture.meta.js +63 -0
  24. package/dist/inputs/SgFileUpload.d.ts +69 -0
  25. package/dist/inputs/SgFileUpload.d.ts.map +1 -0
  26. package/dist/inputs/SgFileUpload.js +234 -0
  27. package/dist/inputs/SgFileUpload.meta.d.ts +4 -0
  28. package/dist/inputs/SgFileUpload.meta.d.ts.map +1 -0
  29. package/dist/inputs/SgFileUpload.meta.js +71 -0
  30. package/dist/inputs/SgImageUpload.d.ts +20 -0
  31. package/dist/inputs/SgImageUpload.d.ts.map +1 -0
  32. package/dist/inputs/SgImageUpload.js +74 -0
  33. package/dist/inputs/SgImageUpload.meta.d.ts +4 -0
  34. package/dist/inputs/SgImageUpload.meta.d.ts.map +1 -0
  35. package/dist/inputs/SgImageUpload.meta.js +73 -0
  36. package/dist/inputs/SgInputDateTime.d.ts +29 -0
  37. package/dist/inputs/SgInputDateTime.d.ts.map +1 -0
  38. package/dist/inputs/SgInputDateTime.js +130 -0
  39. package/dist/inputs/SgInputDateTime.meta.d.ts +4 -0
  40. package/dist/inputs/SgInputDateTime.meta.d.ts.map +1 -0
  41. package/dist/inputs/SgInputDateTime.meta.js +73 -0
  42. package/dist/inputs/cameraLogic.d.ts +27 -0
  43. package/dist/inputs/cameraLogic.d.ts.map +1 -0
  44. package/dist/inputs/cameraLogic.js +57 -0
  45. package/dist/inputs/dateTimeLogic.d.ts +22 -0
  46. package/dist/inputs/dateTimeLogic.d.ts.map +1 -0
  47. package/dist/inputs/dateTimeLogic.js +140 -0
  48. package/dist/inputs/fileUploadLogic.d.ts +62 -0
  49. package/dist/inputs/fileUploadLogic.d.ts.map +1 -0
  50. package/dist/inputs/fileUploadLogic.js +254 -0
  51. package/dist/inputs/imageUploadLogic.d.ts +31 -0
  52. package/dist/inputs/imageUploadLogic.d.ts.map +1 -0
  53. package/dist/inputs/imageUploadLogic.js +70 -0
  54. package/dist/menus/SgDockMenu.d.ts.map +1 -1
  55. package/dist/menus/SgDockMenu.js +2 -0
  56. package/dist/sandbox.cjs +62 -51
  57. package/dist/style.css +1 -1
  58. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5G,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACjI,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAG7G,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,EACf,aAAa,EACb,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAChH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACxI,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC3K,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,2BAA2B,EAC3B,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EACV,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACnF,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,YAAY,EACV,wBAAwB,EAAE,WAAW,EACrC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAC5G,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACvH,OAAO,EAAE,uBAAuB,EAAE,sCAAsC,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAC7I,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACtO,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC7I,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,YAAY,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EACV,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClG,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACvF,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,sBAAsB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,UAAU,EACV,OAAO,EACP,QAAQ,EACR,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAC1oB,YAAY,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,WAAW,EACX,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC5F,YAAY,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,MAAM,EACP,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACjF,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,YAAY,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AACjG,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,EACb,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC5J,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,4BAA4B,EAC5B,kCAAkC,EAClC,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,CAAC,IAAI,WAAW,EAChB,aAAa,IAAI,uBAAuB,EACxC,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,EAC7B,MAAM,QAAQ,CAAC;AAChB,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,+BAA+B,EAChC,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -16,6 +16,10 @@ export { SgInputOTP } from "./inputs/SgInputOTP";
16
16
  export { SgSlider } from "./inputs/SgSlider";
17
17
  export { SgStepperInput } from "./inputs/SgStepperInput";
18
18
  export { SgInputDate } from "./inputs/SgInputDate";
19
+ export { SgInputDateTime } from "./inputs/SgInputDateTime";
20
+ export { SgFileUpload } from "./inputs/SgFileUpload";
21
+ export { SgImageUpload } from "./inputs/SgImageUpload";
22
+ export { SgCameraCapture } from "./inputs/SgCameraCapture";
19
23
  export { SgInputBirthDate } from "./inputs/SgInputBirthDate";
20
24
  export { SgToggleSwitch } from "./inputs/SgToggleSwitch";
21
25
  export { SgAutocomplete } from "./inputs/SgAutocomplete";
@@ -0,0 +1,25 @@
1
+ import { type CameraErrorCode, type CameraFacing, type CameraGuide, type CameraResolution } from "./cameraLogic";
2
+ export type SgCameraCaptureProps = {
3
+ id: string;
4
+ label?: string;
5
+ labelText?: string;
6
+ /** Camera inicial: `user` (frontal) ou `environment` (traseira). Padrao `user`. */
7
+ facing?: CameraFacing;
8
+ /** Guia de enquadramento sobre a pre-visualizacao: `none` (padrao), `oval` ou `rect`. */
9
+ guide?: CameraGuide;
10
+ /** Resolucao pedida: `low` (640x480), `medium` (1280x720, padrao) ou `high` (1920x1080). */
11
+ resolution?: CameraResolution;
12
+ /** Disparado ao capturar, com a imagem JPEG. O envio ao servidor e do host. */
13
+ onCapture?: (image: Blob) => void;
14
+ /** Disparado quando a camera nao abre: `permission`, `noCamera` ou `failed`. `message` ja vem traduzida. */
15
+ onError?: (code: CameraErrorCode, message: string) => void;
16
+ /** Mostra o botao de alternar entre frontal e traseira (padrao `true`). */
17
+ allowSwitch?: boolean;
18
+ /** Altura da pre-visualizacao em px (padrao 320). */
19
+ previewHeight?: number;
20
+ hintText?: string;
21
+ disabled?: boolean;
22
+ className?: string;
23
+ };
24
+ export declare function SgCameraCapture(props: SgCameraCaptureProps): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=SgCameraCapture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SgCameraCapture.d.ts","sourceRoot":"","sources":["../../src/inputs/SgCameraCapture.tsx"],"names":[],"mappings":"AAKA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,yFAAyF;IACzF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,4GAA4G;IAC5G,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CA6L1D"}
@@ -0,0 +1,114 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React from "react";
4
+ import { Camera, RefreshCw, SwitchCamera } from "lucide-react";
5
+ import { t, useComponentsI18n } from "../i18n";
6
+ import { classifyCameraError, guideBox, nextFacing, resolutionSize } from "./cameraLogic";
7
+ export function SgCameraCapture(props) {
8
+ const i18n = useComponentsI18n();
9
+ const { id, label, labelText, facing: initialFacing = "user", guide = "none", resolution = "medium", onCapture, onError, allowSwitch = true, previewHeight = 320, hintText, disabled, className } = props;
10
+ const [facing, setFacing] = React.useState(initialFacing);
11
+ const [status, setStatus] = React.useState("starting");
12
+ const [attempt, setAttempt] = React.useState(0);
13
+ const [box, setBox] = React.useState({ w: 0, h: 0 });
14
+ const videoRef = React.useRef(null);
15
+ const frameRef = React.useRef(null);
16
+ const onErrorRef = React.useRef(onError);
17
+ onErrorRef.current = onError;
18
+ // `useComponentsI18n()` devolve um objeto NOVO a cada render quando ha i18n em tempo de execucao: como dependencia do
19
+ // efeito de abrir a camera, ela fechava e reabria a cada render (a camera "piscava"). Por isso vai por referencia.
20
+ const i18nRef = React.useRef(i18n);
21
+ i18nRef.current = i18n;
22
+ const text = label ?? labelText ?? "";
23
+ React.useEffect(() => setFacing(initialFacing), [initialFacing]);
24
+ React.useEffect(() => {
25
+ const el = frameRef.current;
26
+ if (!el)
27
+ return undefined;
28
+ const update = () => setBox({ w: el.clientWidth, h: el.clientHeight });
29
+ update();
30
+ if (typeof ResizeObserver === "undefined")
31
+ return undefined;
32
+ const observer = new ResizeObserver(update);
33
+ observer.observe(el);
34
+ return () => observer.disconnect();
35
+ }, []);
36
+ // Abre a camera e libera a trilha ao trocar de camera/resolucao ou desmontar.
37
+ React.useEffect(() => {
38
+ if (disabled)
39
+ return undefined;
40
+ let cancelled = false;
41
+ let stream = null;
42
+ setStatus("starting");
43
+ const fail = (name) => {
44
+ if (cancelled)
45
+ return;
46
+ const code = classifyCameraError(name);
47
+ setStatus(code);
48
+ onErrorRef.current?.(code, t(i18nRef.current, `components.inputs.camera.${code}`));
49
+ };
50
+ if (typeof navigator === "undefined" || !navigator.mediaDevices?.getUserMedia) {
51
+ fail("NotFoundError");
52
+ return undefined;
53
+ }
54
+ const size = resolutionSize(resolution);
55
+ navigator.mediaDevices
56
+ .getUserMedia({
57
+ audio: false,
58
+ video: { facingMode: { ideal: facing }, width: { ideal: size.width }, height: { ideal: size.height } }
59
+ })
60
+ .then((s) => {
61
+ if (cancelled) {
62
+ s.getTracks().forEach((track) => track.stop());
63
+ return;
64
+ }
65
+ stream = s;
66
+ const video = videoRef.current;
67
+ if (video) {
68
+ video.srcObject = s;
69
+ void video.play?.().catch(() => undefined);
70
+ }
71
+ setStatus("ready");
72
+ })
73
+ .catch((error) => fail(error instanceof Error ? error.name : String(error)));
74
+ return () => {
75
+ cancelled = true;
76
+ stream?.getTracks().forEach((track) => track.stop());
77
+ if (videoRef.current)
78
+ videoRef.current.srcObject = null;
79
+ };
80
+ }, [disabled, facing, resolution, attempt]);
81
+ const capture = () => {
82
+ const video = videoRef.current;
83
+ if (!video || status !== "ready")
84
+ return;
85
+ const width = video.videoWidth || resolutionSize(resolution).width;
86
+ const height = video.videoHeight || resolutionSize(resolution).height;
87
+ const canvas = document.createElement("canvas");
88
+ canvas.width = width;
89
+ canvas.height = height;
90
+ const context = canvas.getContext("2d");
91
+ if (!context)
92
+ return;
93
+ context.drawImage(video, 0, 0, width, height);
94
+ canvas.toBlob((blob) => {
95
+ if (blob)
96
+ onCapture?.(blob);
97
+ }, "image/jpeg", 0.92);
98
+ };
99
+ const g = guideBox(guide, box.w, box.h);
100
+ const failed = status === "permission" || status === "noCamera" || status === "failed";
101
+ return (_jsxs("div", { className: ["w-full", className].filter(Boolean).join(" "), children: [text ? _jsx("p", { className: "mb-1 text-xs font-medium text-foreground/70", children: text }) : null, _jsxs("div", { ref: frameRef, id: id, role: "group", "aria-label": text || t(i18n, "components.inputs.camera.capture"), style: { height: previewHeight }, className: "relative w-full overflow-hidden rounded-md border border-border bg-black", children: [_jsx("video", { ref: videoRef, muted: true, playsInline: true, autoPlay: true,
102
+ // Camera frontal: a previa e espelhada (como um espelho, para enquadrar o rosto); a foto capturada NAO e espelhada.
103
+ style: facing === "user" ? { transform: "scaleX(-1)" } : undefined, className: ["h-full w-full object-cover", status === "ready" ? "" : "invisible"].join(" ") }), status === "ready" && g ? (_jsx("div", { "data-guide": guide, "aria-hidden": "true", style: {
104
+ position: "absolute",
105
+ left: g.x,
106
+ top: g.y,
107
+ width: g.width,
108
+ height: g.height,
109
+ borderRadius: guide === "oval" ? "50%" : 8,
110
+ boxShadow: "0 0 0 9999px rgba(0,0,0,0.45)",
111
+ border: "2px solid rgba(255,255,255,0.85)",
112
+ pointerEvents: "none"
113
+ } })) : null, status === "starting" && !disabled ? (_jsx("div", { className: "absolute inset-0 flex items-center justify-center text-sm text-white/80", children: t(i18n, "components.inputs.camera.starting") })) : null, failed ? (_jsxs("div", { role: "alert", className: "absolute inset-0 flex flex-col items-center justify-center gap-2 px-4 text-center text-sm text-white", children: [_jsx("span", { children: t(i18n, `components.inputs.camera.${status}`) }), _jsxs("button", { type: "button", onClick: () => setAttempt((n) => n + 1), className: "inline-flex items-center gap-1 rounded border border-white/60 px-2 py-1 text-xs hover:bg-white/10", children: [_jsx(RefreshCw, { className: "size-3.5", "aria-hidden": "true" }), t(i18n, "components.inputs.camera.retry")] })] })) : null] }), _jsxs("div", { className: "mt-2 flex items-center gap-2", children: [_jsxs("button", { type: "button", onClick: capture, disabled: disabled || status !== "ready", "aria-label": t(i18n, "components.inputs.camera.capture"), className: "inline-flex items-center gap-2 rounded-md border border-border bg-[hsl(var(--primary))] px-3 py-2 text-sm font-medium text-[hsl(var(--primary-foreground))] disabled:cursor-not-allowed disabled:opacity-50", children: [_jsx(Camera, { className: "size-4", "aria-hidden": "true" }), t(i18n, "components.inputs.camera.capture")] }), allowSwitch ? (_jsxs("button", { type: "button", onClick: () => setFacing((f) => nextFacing(f)), disabled: disabled, "aria-label": t(i18n, "components.inputs.camera.switch"), className: "inline-flex items-center gap-2 rounded-md border border-border px-3 py-2 text-sm hover:bg-muted/40 disabled:cursor-not-allowed disabled:opacity-50", children: [_jsx(SwitchCamera, { className: "size-4", "aria-hidden": "true" }), t(i18n, "components.inputs.camera.switch")] })) : null] }), hintText ? _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: hintText }) : null] }));
114
+ }
@@ -0,0 +1,4 @@
1
+ import type { SgAiHintsV0, SgMetaV0 } from "../ai-meta/types";
2
+ export declare const sgMeta: SgMetaV0;
3
+ export declare const aiHints: SgAiHintsV0;
4
+ //# sourceMappingURL=SgCameraCapture.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SgCameraCapture.meta.d.ts","sourceRoot":"","sources":["../../src/inputs/SgCameraCapture.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QA2CpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAmBrB,CAAC"}
@@ -0,0 +1,63 @@
1
+ export const sgMeta = {
2
+ version: "0.1",
3
+ componentId: "form.input.camera-capture",
4
+ package: "@seedgrid/fe-components",
5
+ exportName: "SgCameraCapture",
6
+ slug: "sg-camera-capture",
7
+ displayName: "SgCameraCapture",
8
+ category: "input",
9
+ subcategory: "camera",
10
+ description: "Pre-visualizacao da camera com guia de enquadramento (oval ou retangulo), alternancia entre frontal e traseira e captura que devolve a imagem ao pai. Mostra os estados sem permissao e sem camera. Nao envia nada ao servidor.",
11
+ tags: ["camera", "photo", "capture", "selfie", "getUserMedia", "input"],
12
+ capabilities: ["camera", "preview", "guide-overlay", "switch-camera", "capture"],
13
+ fieldSemantics: ["photo", "selfie", "picture", "documentPhoto", "avatar"],
14
+ props: [
15
+ { name: "id", type: "string", required: true, description: "Identificador unico do componente.", semanticRole: "data", bindable: false },
16
+ { name: "label", type: "string", description: "Rotulo exibido acima da pre-visualizacao.", semanticRole: "label", bindable: true },
17
+ { name: "facing", type: '"user" | "environment"', default: "user", description: "Camera inicial: frontal (user) ou traseira (environment).", semanticRole: "appearance", bindable: true },
18
+ { name: "guide", type: '"none" | "oval" | "rect"', default: "none", description: "Guia de enquadramento sobre a pre-visualizacao.", semanticRole: "appearance", bindable: true },
19
+ { name: "resolution", type: '"low" | "medium" | "high"', default: "medium", description: "Resolucao pedida (640x480, 1280x720, 1920x1080).", semanticRole: "appearance", bindable: true },
20
+ { name: "allowSwitch", type: "boolean", default: true, description: "Mostra o botao de alternar entre frontal e traseira.", semanticRole: "appearance", bindable: true },
21
+ { name: "previewHeight", type: "number", default: 320, description: "Altura da pre-visualizacao em px.", semanticRole: "appearance", bindable: true },
22
+ { name: "disabled", type: "boolean", default: false, description: "Nao abre a camera nem permite capturar.", semanticRole: "appearance", bindable: true },
23
+ { name: "onCapture", type: "(image: Blob) => void", description: "Imagem JPEG capturada.", semanticRole: "event", bindable: false },
24
+ { name: "onError", type: "(code, message) => void", description: "Camera indisponivel (permission, noCamera, failed).", semanticRole: "event", bindable: false }
25
+ ],
26
+ states: ["default", "starting", "ready", "permission", "noCamera", "failed", "disabled"],
27
+ examples: [
28
+ {
29
+ id: "basic",
30
+ title: "Basico",
31
+ file: "apps/showcase/src/app/components/sg-camera-capture/samples/basico.tsx.sample",
32
+ kind: "sample"
33
+ },
34
+ {
35
+ id: "playground",
36
+ title: "Playground",
37
+ file: "apps/showcase/src/app/components/sg-camera-capture/sg-camera-capture.tsx.playground",
38
+ kind: "playground"
39
+ }
40
+ ],
41
+ showcase: { route: "/components/sg-camera-capture", hasPlayground: true, hasPropsTable: true },
42
+ sdui: { rendererType: "field.camera", acceptsDataBinding: false, defaultProps: {} }
43
+ };
44
+ export const aiHints = {
45
+ version: "0.1",
46
+ preferredUseCases: [
47
+ "Tirar foto na hora (selfie, foto de documento, portaria) com guia de enquadramento.",
48
+ "Fluxos que precisam da camera do dispositivo e de tratamento de permissao negada.",
49
+ "Capturar uma imagem para entregar ao host enviar."
50
+ ],
51
+ avoidUseCases: [
52
+ "Escolher uma imagem ja existente; para isso use SgImageUpload.",
53
+ "Gravar video ou audio; o componente captura apenas fotos.",
54
+ "Analise de qualidade ou reconhecimento facial; isso e do host."
55
+ ],
56
+ synonyms: ["camera", "tirar foto", "captura de foto", "selfie", "webcam", "take photo"],
57
+ relatedEntityFields: ["photo", "selfie", "documentPhoto", "avatar", "picture"],
58
+ compositionHints: [
59
+ "Combine com SgImageUpload: camera para tirar na hora, upload para escolher da galeria.",
60
+ "Envie o Blob recebido em onCapture pelo servico de arquivos do host."
61
+ ],
62
+ rankingSignals: { freeText: 0, structuredChoice: 0, date: 0, number: 0, denseLayout: 0.3 }
63
+ };
@@ -0,0 +1,69 @@
1
+ import React from "react";
2
+ import { type RhfFieldProps } from "../rhf";
3
+ import { type FileErrorCode, type MediaType, type SizeLimit } from "./fileUploadLogic";
4
+ /** Arquivo ja salvo no servidor (sem bytes): entra na lista como valor inicial ou controlado. */
5
+ export type SgSavedFile = {
6
+ name: string;
7
+ url: string;
8
+ size?: number;
9
+ type?: string;
10
+ };
11
+ /** Item da lista de arquivos: um `File` escolhido agora ou um arquivo ja salvo (`url`). */
12
+ export type SgFileValue = File | SgSavedFile;
13
+ /** Recusa de um arquivo por uma regra de quem usa o componente (ex.: dimensao de imagem). */
14
+ export type SgFileRejection = {
15
+ code: FileErrorCode;
16
+ message: string;
17
+ };
18
+ export type SgFileUploadProps = RhfFieldProps & {
19
+ id: string;
20
+ label?: string;
21
+ labelText?: string;
22
+ /** Arquivos controlados (sempre lista; um arquivo = lista de um). */
23
+ value?: SgFileValue[] | null;
24
+ /** Arquivos iniciais (campo nao controlado). */
25
+ defaultValue?: SgFileValue[];
26
+ /** Lista de arquivos validos apos escolher ou remover. O envio ao servidor e do host. */
27
+ onChange?: (files: SgFileValue[]) => void;
28
+ /** Arquivo recusado: codigo, mensagem ja traduzida e nome do arquivo. Os demais seguem validos. */
29
+ onError?: (code: FileErrorCode, message: string, fileName: string) => void;
30
+ /** Tipos aceitos (`image`, `pdf`, `xlsx`...). O tipo e conferido pelo conteudo do arquivo. */
31
+ mediaType?: MediaType[];
32
+ /** Tipos extras em texto livre (`.pdf`, `image/png`, `image/*`), separados por virgula; soma-se ao mediaType. */
33
+ accept?: string;
34
+ /** Quantos arquivos o campo guarda (padrao 1). Com 1, escolher outro substitui; maior que 1 liga a selecao multipla. */
35
+ maxFiles?: number;
36
+ /** Tamanho maximo de cada arquivo: bytes (numero) ou texto com unidade ("500KB", "1.5MB", "1GB"). */
37
+ maxSizePerFile?: SizeLimit;
38
+ /** Tamanho maximo da soma dos arquivos (mesmo formato). */
39
+ maxSizeTotal?: SizeLimit;
40
+ hintText?: string;
41
+ required?: boolean;
42
+ requiredMessage?: string;
43
+ disabled?: boolean;
44
+ readOnly?: boolean;
45
+ className?: string;
46
+ onEnter?: () => void;
47
+ onExit?: () => void;
48
+ /** Regra extra, assincrona, por arquivo (depois da conferencia de tipo). E como o SgImageUpload confere dimensao. */
49
+ extraCheck?: (file: File, info: {
50
+ mime: string;
51
+ }) => Promise<SgFileRejection | null>;
52
+ /** Miniatura de cada arquivo (sem ela, a lista usa o icone do tipo). */
53
+ thumbnailBuilder?: (file: SgFileValue, size: number) => React.ReactNode;
54
+ /** Lado da miniatura em px (padrao 96). */
55
+ thumbnailSize?: number;
56
+ /** Chaves de i18n do texto da area vazia (um arquivo / varios). */
57
+ dropTextKey?: string;
58
+ dropManyTextKey?: string;
59
+ /** Texto dos tipos aceitos na mensagem de tipo recusado (padrao: mediaType/accept). */
60
+ typeNames?: string;
61
+ /** Valor do atributo `accept` do seletor do navegador (padrao: derivado de mediaType/accept). */
62
+ pickerAccept?: string;
63
+ /** Prefixo do `data-sg` dos elementos internos (`sg-file`, `sg-image`). */
64
+ keyPrefix?: string;
65
+ };
66
+ /** Atributo `accept` do seletor: grupos viram `image/*`, formatos viram MIME + extensoes; `all` libera tudo. */
67
+ export declare function pickerAcceptFor(mediaType?: MediaType[], accept?: string): string | undefined;
68
+ export declare function SgFileUpload(props: SgFileUploadProps): import("react/jsx-runtime").JSX.Element;
69
+ //# sourceMappingURL=SgFileUpload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SgFileUpload.d.ts","sourceRoot":"","sources":["../../src/inputs/SgFileUpload.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React from "react";
4
+ import { Controller } from "react-hook-form";
5
+ import { File as FileIcon, FileArchive, FileAudio, FileImage, FileSpreadsheet, FileText, FileVideo, Presentation, Upload, X } from "lucide-react";
6
+ import { resolveFieldError } from "../rhf";
7
+ import { t, useComponentsI18n } from "../i18n";
8
+ import { MEDIA_TYPES, formatFileSize, matchesMedia, parseSize, planAdd, resolveMime } from "./fileUploadLogic";
9
+ const HEAD_BYTES = 256;
10
+ function isNative(file) {
11
+ return typeof File !== "undefined" && file instanceof File;
12
+ }
13
+ function sizeOf(file) {
14
+ return isNative(file) ? file.size : file.size ?? 0;
15
+ }
16
+ function typeOf(file) {
17
+ return file.type ?? "";
18
+ }
19
+ async function readHead(file) {
20
+ try {
21
+ const slice = file.slice(0, HEAD_BYTES);
22
+ if (typeof slice.arrayBuffer === "function")
23
+ return new Uint8Array(await slice.arrayBuffer());
24
+ // Ambientes sem Blob.arrayBuffer (testes em jsdom, navegadores antigos).
25
+ return await new Promise((resolve) => {
26
+ const reader = new FileReader();
27
+ reader.onload = () => resolve(new Uint8Array(reader.result));
28
+ reader.onerror = () => resolve(new Uint8Array(0));
29
+ reader.readAsArrayBuffer(slice);
30
+ });
31
+ }
32
+ catch {
33
+ return new Uint8Array(0);
34
+ }
35
+ }
36
+ /** Atributo `accept` do seletor: grupos viram `image/*`, formatos viram MIME + extensoes; `all` libera tudo. */
37
+ export function pickerAcceptFor(mediaType, accept) {
38
+ const tokens = new Set();
39
+ for (const m of mediaType ?? []) {
40
+ if (m === "all")
41
+ return undefined;
42
+ const info = MEDIA_TYPES[m];
43
+ if (!info)
44
+ continue;
45
+ if (info.group)
46
+ tokens.add(`${info.group}*`);
47
+ if (info.mime)
48
+ tokens.add(info.mime);
49
+ for (const ext of info.extensions)
50
+ tokens.add(`.${ext}`);
51
+ }
52
+ for (const token of (accept ?? "").split(",")) {
53
+ const trimmed = token.trim();
54
+ if (trimmed)
55
+ tokens.add(trimmed);
56
+ }
57
+ return tokens.size === 0 ? undefined : Array.from(tokens).join(",");
58
+ }
59
+ function iconFor(mime) {
60
+ const cls = "size-5 shrink-0";
61
+ if (mime.startsWith("image/"))
62
+ return _jsx(FileImage, { className: cls, "aria-hidden": "true" });
63
+ if (mime.startsWith("video/"))
64
+ return _jsx(FileVideo, { className: cls, "aria-hidden": "true" });
65
+ if (mime.startsWith("audio/"))
66
+ return _jsx(FileAudio, { className: cls, "aria-hidden": "true" });
67
+ if (mime === "application/pdf")
68
+ return _jsx(FileText, { className: cls, "aria-hidden": "true" });
69
+ if (mime.includes("spreadsheet") || mime === "application/vnd.ms-excel" || mime === "text/csv") {
70
+ return _jsx(FileSpreadsheet, { className: cls, "aria-hidden": "true" });
71
+ }
72
+ if (mime.includes("presentation") || mime === "application/vnd.ms-powerpoint") {
73
+ return _jsx(Presentation, { className: cls, "aria-hidden": "true" });
74
+ }
75
+ if (mime.includes("zip"))
76
+ return _jsx(FileArchive, { className: cls, "aria-hidden": "true" });
77
+ if (mime.startsWith("text/") || mime.includes("word") || mime === "application/msword") {
78
+ return _jsx(FileText, { className: cls, "aria-hidden": "true" });
79
+ }
80
+ return _jsx(FileIcon, { className: cls, "aria-hidden": "true" });
81
+ }
82
+ function SgFileUploadBase(props) {
83
+ const i18n = useComponentsI18n();
84
+ const { id, label, labelText, value, defaultValue, onChange, onError, mediaType, accept, maxFiles, maxSizePerFile, maxSizeTotal, hintText, required, disabled, readOnly, className, onEnter, onExit, extraCheck, thumbnailBuilder, thumbnailSize = 96, dropTextKey, dropManyTextKey, typeNames, pickerAccept, keyPrefix = "sg-file", error } = props;
85
+ const max = Math.max(1, Math.floor(maxFiles ?? 1));
86
+ const multi = max > 1;
87
+ const controlled = value !== undefined;
88
+ const [inner, setInner] = React.useState(defaultValue ?? []);
89
+ const current = controlled ? value ?? [] : inner;
90
+ const currentRef = React.useRef(current);
91
+ currentRef.current = current;
92
+ const [internalError, setInternalError] = React.useState(null);
93
+ const [loading, setLoading] = React.useState(false);
94
+ const [dragging, setDragging] = React.useState(false);
95
+ const inputRef = React.useRef(null);
96
+ const locked = Boolean(disabled || readOnly);
97
+ const text = label ?? labelText ?? "";
98
+ const typesText = () => {
99
+ if (typeNames)
100
+ return typeNames;
101
+ const names = [...(mediaType ?? []), ...((accept ?? "").trim() ? [(accept ?? "").trim()] : [])];
102
+ return names.length === 0 ? "all" : names.join(", ");
103
+ };
104
+ const messageFor = (code) => {
105
+ switch (code) {
106
+ case "type":
107
+ return t(i18n, "components.inputs.fileupload.type", { types: typesText() });
108
+ case "size":
109
+ return t(i18n, "components.inputs.fileupload.size", { max: formatFileSize(parseSize(maxSizePerFile) ?? 0, i18n.locale) });
110
+ case "total":
111
+ return t(i18n, "components.inputs.fileupload.total", { max: formatFileSize(parseSize(maxSizeTotal) ?? 0, i18n.locale) });
112
+ case "count":
113
+ return t(i18n, "components.inputs.fileupload.count", { max: String(max) });
114
+ default:
115
+ return ""; // dimension e aspect so chegam por extraCheck, que traz a propria mensagem.
116
+ }
117
+ };
118
+ const commit = (files, errorText = null) => {
119
+ setInternalError(errorText);
120
+ if (!controlled)
121
+ setInner(files);
122
+ onChange?.(files);
123
+ };
124
+ const addFiles = async (picked) => {
125
+ const rejected = [];
126
+ const survivors = [];
127
+ if (extraCheck)
128
+ setLoading(true);
129
+ for (const file of picked) {
130
+ const head = await readHead(file);
131
+ const mime = resolveMime(file.name, file.type, head);
132
+ if (matchesMedia(file.name, mime, mediaType, accept) && extraCheck) {
133
+ const rejection = await extraCheck(file, { mime });
134
+ if (rejection) {
135
+ rejected.push({ file, code: rejection.code, message: rejection.message });
136
+ continue;
137
+ }
138
+ }
139
+ survivors.push({ file, head });
140
+ }
141
+ if (extraCheck)
142
+ setLoading(false);
143
+ const existing = currentRef.current;
144
+ const plan = planAdd(existing.map(sizeOf), survivors.map(({ file, head }) => ({ name: file.name, type: file.type, size: file.size, head })), { mediaType, accept, maxFiles: max, maxSizePerFile, maxSizeTotal });
145
+ for (const r of plan.rejected) {
146
+ const survivor = survivors[r.index];
147
+ if (survivor)
148
+ rejected.push({ file: survivor.file, code: r.code, message: messageFor(r.code) });
149
+ }
150
+ const lines = rejected.map((r) => t(i18n, "components.inputs.fileupload.file", { name: r.file.name, message: r.message }));
151
+ const errorText = lines.length === 0 ? null : lines.join("\n");
152
+ for (const r of rejected)
153
+ onError?.(r.code, r.message, r.file.name);
154
+ if (plan.accepted.length === 0) {
155
+ setInternalError(errorText);
156
+ return;
157
+ }
158
+ const added = plan.accepted.map((index) => survivors[index]?.file).filter((f) => Boolean(f));
159
+ commit(plan.replace ? added : [...existing, ...added], errorText);
160
+ };
161
+ const onPick = (event) => {
162
+ const files = Array.from(event.currentTarget.files ?? []);
163
+ event.currentTarget.value = ""; // permite escolher o mesmo arquivo de novo
164
+ if (files.length > 0)
165
+ void addFiles(files);
166
+ };
167
+ const onDrop = (event) => {
168
+ event.preventDefault();
169
+ setDragging(false);
170
+ if (locked)
171
+ return;
172
+ const files = Array.from(event.dataTransfer.files ?? []);
173
+ if (files.length > 0)
174
+ void addFiles(multi ? files : files.slice(0, 1));
175
+ };
176
+ const open = () => {
177
+ if (locked || loading)
178
+ return;
179
+ onEnter?.();
180
+ inputRef.current?.click();
181
+ };
182
+ const remove = (index) => {
183
+ commit(current.filter((_, i) => i !== index));
184
+ };
185
+ const shownError = resolveFieldError(error, internalError ?? undefined);
186
+ const hasError = Boolean(shownError);
187
+ const full = current.length >= max;
188
+ // Um arquivo so: a area some quando ha arquivo (tocar em "Trocar" escolhe outro). Varios: itens + area enquanto couber.
189
+ const showZone = multi ? !full : current.length === 0;
190
+ const dropText = multi
191
+ ? t(i18n, dropManyTextKey ?? "components.inputs.fileupload.dropMany", { max: String(max) })
192
+ : t(i18n, dropTextKey ?? "components.inputs.fileupload.drop");
193
+ const removeLabel = t(i18n, "components.inputs.fileupload.remove");
194
+ const acceptAttr = pickerAccept ?? pickerAcceptFor(mediaType, accept);
195
+ const renderItem = (file, index) => {
196
+ const sizeText = formatFileSize(sizeOf(file), i18n.locale);
197
+ const removeButton = locked ? null : (_jsx("button", { type: "button", onClick: () => remove(index), "aria-label": removeLabel, "data-sg": `${keyPrefix}-remove-${id}-${index}`, className: "inline-flex size-6 shrink-0 items-center justify-center rounded-full hover:bg-muted/60", children: _jsx(X, { className: "size-4", "aria-hidden": "true" }) }));
198
+ if (thumbnailBuilder) {
199
+ return (_jsxs("div", { "data-sg": `${keyPrefix}-item-${id}-${index}`, style: { width: thumbnailSize }, children: [_jsxs("div", { className: "relative overflow-hidden rounded-md", style: { width: thumbnailSize, height: thumbnailSize }, children: [thumbnailBuilder(file, thumbnailSize), removeButton ? _jsx("span", { className: "absolute right-0 top-0 rounded-full bg-background/85", children: removeButton }) : null] }), _jsx("div", { className: "mt-1 truncate text-xs", children: file.name }), _jsx("div", { className: "text-[10px] text-muted-foreground", children: sizeText })] }, `${file.name}-${index}`));
200
+ }
201
+ const mime = resolveMime(file.name, typeOf(file), new Uint8Array(0));
202
+ return (_jsxs("div", { "data-sg": `${keyPrefix}-item-${id}-${index}`, className: "flex items-center gap-2 rounded-md border border-border px-2 py-1", children: [iconFor(mime), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("div", { className: "truncate text-sm", children: file.name }), _jsx("div", { className: "text-[10px] text-muted-foreground", children: sizeText })] }), removeButton] }, `${file.name}-${index}`));
203
+ };
204
+ return (_jsxs("div", { className: ["w-full", className].filter(Boolean).join(" "), children: [text ? (_jsxs("label", { htmlFor: id, className: "mb-1 block text-xs font-medium text-foreground/70", children: [text, required ? _jsx("span", { "aria-hidden": "true", children: " *" }) : null] })) : null, _jsx("input", { ref: inputRef, id: id, type: "file", multiple: multi, accept: acceptAttr, className: "sr-only", disabled: locked, required: required && current.length === 0, "aria-invalid": hasError || undefined, "aria-describedby": hasError ? `${id}-error` : hintText ? `${id}-hint` : undefined, onChange: onPick, onFocus: () => onEnter?.(), onBlur: () => onExit?.() }), current.length > 0 ? (_jsx("div", { className: ["mb-2", thumbnailBuilder ? "flex flex-wrap gap-2" : "flex flex-col gap-1.5"].join(" "), "data-sg": `${keyPrefix}-list-${id}`, children: current.map(renderItem) })) : null, showZone || loading ? (_jsx("div", { role: "button", tabIndex: locked ? -1 : 0, "aria-disabled": locked || undefined, "aria-label": text || dropText, "data-sg": `${keyPrefix}-open-${id}`, "data-dragging": dragging || undefined, onClick: open, onKeyDown: (event) => {
205
+ if (event.key === "Enter" || event.key === " ") {
206
+ event.preventDefault();
207
+ open();
208
+ }
209
+ }, onDragOver: (event) => {
210
+ event.preventDefault();
211
+ if (!locked)
212
+ setDragging(true);
213
+ }, onDragLeave: () => setDragging(false), onDrop: onDrop, className: [
214
+ "relative flex min-h-24 w-full items-center justify-center overflow-hidden rounded-md border border-dashed bg-[var(--sg-input-bg,hsl(var(--background)))] text-sm shadow-sm outline-none transition-colors",
215
+ hasError ? "border-[hsl(var(--destructive))]" : dragging ? "border-[hsl(var(--primary))] bg-muted/40" : "border-border",
216
+ locked ? "cursor-not-allowed opacity-60" : "cursor-pointer focus-visible:ring-2 focus-visible:ring-[hsl(var(--primary)/0.4)]"
217
+ ].join(" "), children: loading ? (_jsx("span", { className: "text-muted-foreground", children: t(i18n, "components.inputs.fileupload.loading") })) : (_jsxs("span", { className: "flex flex-col items-center gap-2 px-4 py-4 text-center text-muted-foreground", children: [_jsx(Upload, { className: "size-6", "aria-hidden": "true" }), dropText] })) })) : null, !multi && current.length > 0 && !locked && !loading ? (_jsx("button", { type: "button", onClick: open, "data-sg": `${keyPrefix}-change-${id}`, className: "mt-1 inline-flex items-center gap-1 rounded px-2 py-1 text-xs text-primary hover:bg-muted/40", children: t(i18n, "components.inputs.imageupload.change") })) : null, hasError ? (_jsx("p", { id: `${id}-error`, role: "alert", className: "mt-1 whitespace-pre-line text-xs text-[hsl(var(--destructive))]", children: shownError })) : hintText ? (_jsx("p", { id: `${id}-hint`, className: "mt-1 text-xs text-muted-foreground", children: hintText })) : null] }));
218
+ }
219
+ export function SgFileUpload(props) {
220
+ const { control, name, rules, required, requiredMessage, onChange, error } = props;
221
+ const i18n = useComponentsI18n();
222
+ if (control && name) {
223
+ const resolvedRules = {
224
+ ...(required ? { required: requiredMessage ?? t(i18n, "components.inputs.required") } : {}),
225
+ ...rules
226
+ };
227
+ return (_jsx(Controller, { name: name, control: control, rules: resolvedRules, render: ({ field, fieldState }) => (_jsx(SgFileUploadBase, { ...props, control: undefined, value: Array.isArray(field.value) ? field.value : [], onChange: (files) => {
228
+ // Lista vazia vira null no formulario, para o "obrigatorio" acusar o campo sem arquivo.
229
+ field.onChange(files.length === 0 ? null : files);
230
+ onChange?.(files);
231
+ }, error: resolveFieldError(error, fieldState.error?.message) })) }));
232
+ }
233
+ return _jsx(SgFileUploadBase, { ...props });
234
+ }
@@ -0,0 +1,4 @@
1
+ import type { SgAiHintsV0, SgMetaV0 } from "../ai-meta/types";
2
+ export declare const sgMeta: SgMetaV0;
3
+ export declare const aiHints: SgAiHintsV0;
4
+ //# sourceMappingURL=SgFileUpload.meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SgFileUpload.meta.d.ts","sourceRoot":"","sources":["../../src/inputs/SgFileUpload.meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,eAAO,MAAM,MAAM,EAAE,QAmDpB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WAmBrB,CAAC"}