@caprionlinesrl/puck-plugin-media 0.1.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Modal/Modal.module.css","../src/components/SearchBar/SearchBar.module.css","../src/components/LoadMoreButton/LoadMoreButton.module.css","../src/components/ConfirmDialog/ConfirmDialog.module.css","../src/components/SelectionToolbar/SelectionToolbar.module.css","../src/components/ImageGrid/ImageGrid.module.css","../src/components/UploadDropzone/UploadDropzone.module.css","../src/components/UploadQueue/UploadQueue.module.css","../src/components/ImagePickerModal/ImagePickerModal.module.css","../src/components/ImageField/ImageField.module.css","../src/components/GalleryPickerModal/GalleryPickerModal.module.css","../src/components/GalleryField/GalleryField.module.css","../src/components/DocumentPickerModal/DocumentPickerModal.module.css","../src/components/DocumentField/DocumentField.module.css","../src/components/MediaPanel/MediaPanel.module.css"],"sourcesContent":[".backdrop {\n position: fixed;\n inset: 0;\n z-index: 9999;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n animation: fadeIn 0.15s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.modal {\n position: relative;\n width: 100%;\n max-width: 900px;\n max-height: calc(100vh - 48px);\n background: white;\n border-radius: 12px;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: slideUp 0.2s ease;\n}\n\n.modal.small {\n max-width: 700px;\n}\n\n@keyframes slideUp {\n from { opacity: 0; transform: translateY(16px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n border-bottom: 1px solid #e5e5e5;\n flex-shrink: 0;\n}\n\n.title {\n flex: 1;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #171717;\n}\n\n.headerActions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.closeButton {\n padding: 8px;\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n color: #737373;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s, color 0.15s;\n}\n\n.closeButton:hover {\n background: #f5f5f5;\n color: #171717;\n}\n\n.toolbar {\n padding: 16px 20px;\n border-bottom: 1px solid #e5e5e5;\n flex-shrink: 0;\n}\n\n.content {\n flex: 1;\n overflow-y: scroll;\n padding: 20px;\n min-height: 200px;\n}\n\n.loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n height: 200px;\n color: #737373;\n font-size: 14px;\n}\n\n.spinner {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n.empty {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: #737373;\n font-size: 14px;\n text-align: center;\n}\n\n.footer {\n flex-shrink: 0;\n padding: 12px 20px;\n border-top: 1px solid #e5e5e5;\n background: #fafafa;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n\n/* Mobile Responsive */\n@media (max-width: 640px) {\n .backdrop {\n padding: 0;\n align-items: flex-end;\n }\n\n .modal {\n width: 100%;\n max-width: 100%;\n max-height: 90vh;\n min-height: 400px;\n border-radius: 12px 12px 0 0;\n }\n\n .header {\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .headerActions {\n flex-wrap: wrap;\n }\n\n .footer {\n flex-direction: column;\n gap: 12px;\n }\n}\n",".container {\n position: relative;\n flex: 1;\n}\n\n.icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: #a3a3a3;\n pointer-events: none;\n}\n\n.input {\n width: 100%;\n padding: 10px 40px 10px 44px;\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n font-size: 14px;\n background: #fafafa;\n transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;\n}\n\n.input:focus {\n outline: none;\n border-color: #3b82f6;\n background: white;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.input::placeholder {\n color: #a3a3a3;\n}\n\n.input::-webkit-search-cancel-button {\n display: none;\n}\n\n.clearButton {\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n padding: 4px;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n color: #737373;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.clearButton:hover {\n background: #e5e5e5;\n color: #171717;\n}\n",".container {\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n\n.button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: #f5f5f5;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #171717;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.button:hover:not(:disabled) {\n background: #ebebeb;\n border-color: #d4d4d4;\n}\n\n.button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.spinner {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n",".overlay {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n animation: fadeIn 0.15s ease;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.dialog {\n background: white;\n border-radius: 12px;\n padding: 24px;\n max-width: 400px;\n width: 90%;\n box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);\n animation: slideUp 0.2s ease;\n}\n\n@keyframes slideUp {\n from { opacity: 0; transform: translateY(16px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.title {\n margin: 0 0 12px 0;\n font-size: 18px;\n font-weight: 600;\n color: #171717;\n}\n\n.message {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: #525252;\n line-height: 1.5;\n}\n\n.actions {\n display: flex;\n gap: 12px;\n justify-content: flex-end;\n}\n\n.cancelButton {\n padding: 10px 16px;\n background: #f5f5f5;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #171717;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.cancelButton:hover:not(:disabled) {\n background: #ebebeb;\n}\n\n.cancelButton:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.confirmButton {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n background: #3b82f6;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.confirmButton:hover:not(:disabled) {\n background: #2563eb;\n}\n\n.confirmButton.danger {\n background: #dc2626;\n}\n\n.confirmButton.danger:hover:not(:disabled) {\n background: #b91c1c;\n}\n\n.confirmButton:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.spinner {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* Mobile Responsive */\n@media (max-width: 640px) {\n .actions {\n flex-direction: column;\n }\n\n .cancelButton,\n .confirmButton {\n width: 100%;\n justify-content: center;\n }\n}\n",".toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n gap: 16px;\n}\n\n.selectAllButton {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: #525252;\n transition: background 0.15s;\n}\n\n.selectAllButton:hover {\n background: rgba(0, 0, 0, 0.05);\n}\n\n.checkbox {\n width: 20px;\n height: 20px;\n border: 2px solid #d4d4d4;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s, border-color 0.15s;\n background: white;\n}\n\n.checked .checkbox {\n background: #3b82f6;\n border-color: #3b82f6;\n color: white;\n}\n\n.indeterminate .checkbox {\n background: #3b82f6;\n border-color: #3b82f6;\n}\n\n.indeterminateLine {\n width: 10px;\n height: 2px;\n background: white;\n border-radius: 1px;\n}\n\n.actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.cancelButton {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #525252;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.cancelButton:hover {\n background: #f5f5f5;\n border-color: #d4d4d4;\n}\n\n.deleteButton {\n padding: 8px 16px;\n background: #dc2626;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s, opacity 0.15s;\n}\n\n.deleteButton:hover:not(:disabled) {\n background: #b91c1c;\n}\n\n.deleteButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Mobile Responsive */\n@media (max-width: 640px) {\n .toolbar {\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .selectAllButton {\n order: 1;\n }\n\n .actions {\n order: 2;\n width: 100%;\n justify-content: stretch;\n }\n\n .cancelButton,\n .deleteButton {\n flex: 1;\n }\n}\n",".grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 12px;\n}\n\n@media (min-width: 640px) {\n .grid {\n grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n }\n}\n\n.itemContainer {\n display: flex;\n flex-direction: column;\n background: white;\n border: 2px solid #e5e5e5;\n border-radius: 8px;\n overflow: hidden;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.itemContainer:hover {\n border-color: #3b82f6;\n box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);\n}\n\n.itemContainer:has(.item:focus) {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);\n}\n\n.itemContainer:has(.selected) {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);\n}\n\n.item {\n display: block;\n background: transparent;\n border: none;\n cursor: pointer;\n text-align: left;\n padding: 0;\n transition: transform 0.15s;\n}\n\n.item:focus {\n outline: none;\n}\n\n.item:active {\n transform: scale(0.98);\n}\n\n.imageWrapper {\n position: relative;\n aspect-ratio: 1;\n background: #f5f5f5;\n overflow: hidden;\n}\n\n.image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n transition: transform 0.2s;\n}\n\n.itemContainer:hover .image {\n transform: scale(1.05);\n}\n\n/* Checkmark for selection (normal mode) */\n.checkmark {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 24px;\n height: 24px;\n background: #3b82f6;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n/* Checkbox for manage mode */\n.checkbox {\n position: absolute;\n top: 8px;\n left: 8px;\n width: 22px;\n height: 22px;\n background: white;\n border: 2px solid #d4d4d4;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: background 0.15s, border-color 0.15s;\n}\n\n.checkbox:hover {\n border-color: #3b82f6;\n}\n\n.checkboxChecked {\n background: #3b82f6;\n border-color: #3b82f6;\n}\n\n.info {\n padding: 8px 10px;\n min-height: 48px;\n}\n\n.infoRow {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 4px;\n}\n\n.infoText {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.filename {\n font-size: 12px;\n font-weight: 500;\n color: #171717;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.4;\n}\n\n.meta {\n display: flex;\n gap: 8px;\n font-size: 11px;\n color: #737373;\n}\n\n.meta span {\n white-space: nowrap;\n}\n\n/* Edit Button */\n.editButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n color: #a3a3a3;\n transition: background 0.15s, color 0.15s;\n flex-shrink: 0;\n}\n\n.editButton:hover {\n background: #f5f5f5;\n color: #3b82f6;\n}\n\n.editButton:focus {\n outline: none;\n background: #f5f5f5;\n color: #3b82f6;\n}\n",".dropzone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 20px 16px;\n border: 2px dashed #d4d4d4;\n border-radius: 8px;\n background: #fafafa;\n cursor: pointer;\n transition: border-color 0.15s, background 0.15s;\n user-select: none;\n}\n\n.dropzone:hover:not(.disabled) {\n border-color: #3b82f6;\n background: #eff6ff;\n}\n\n.dropzone:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);\n}\n\n.dropzone.dragging {\n border-color: #3b82f6;\n background: #dbeafe;\n border-style: solid;\n}\n\n.dropzone.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.input {\n display: none;\n}\n\n.icon {\n color: #737373;\n transition: color 0.15s;\n}\n\n.dropzone:hover:not(.disabled) .icon,\n.dropzone.dragging .icon {\n color: #3b82f6;\n}\n\n.text {\n font-size: 14px;\n font-weight: 500;\n color: #525252;\n text-align: center;\n}\n\n.dropzone:hover:not(.disabled) .text,\n.dropzone.dragging .text {\n color: #3b82f6;\n}\n\n.hint {\n font-size: 12px;\n color: #a3a3a3;\n text-align: center;\n}\n",".container {\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n background: white;\n overflow: hidden;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n background: #f5f5f5;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.title {\n font-size: 13px;\n font-weight: 500;\n color: #171717;\n}\n\n.clearButton {\n padding: 4px 8px;\n background: transparent;\n border: none;\n border-radius: 4px;\n font-size: 12px;\n color: #3b82f6;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.clearButton:hover {\n background: #eff6ff;\n}\n\n.list {\n max-height: 200px;\n overflow-y: auto;\n}\n\n.item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 12px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.item:last-child {\n border-bottom: none;\n}\n\n.preview {\n position: relative;\n width: 40px;\n height: 40px;\n border-radius: 4px;\n overflow: hidden;\n flex-shrink: 0;\n background: #f5f5f5;\n}\n\n.previewImage {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.previewPlaceholder {\n width: 100%;\n height: 100%;\n background: linear-gradient(135deg, #e5e5e5 0%, #f5f5f5 100%);\n}\n\n.progressOverlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(0, 0, 0, 0.3);\n}\n\n.progressBar {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.5);\n transition: height 0.2s ease;\n}\n\n.progressText {\n position: relative;\n z-index: 1;\n font-size: 10px;\n font-weight: 600;\n color: white;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);\n}\n\n.info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.filename {\n font-size: 13px;\n color: #171717;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.size {\n font-size: 11px;\n color: #737373;\n}\n\n.error {\n font-size: 11px;\n color: #dc2626;\n}\n\n.actions {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.cancelButton {\n padding: 4px;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n color: #737373;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s, color 0.15s;\n}\n\n.cancelButton:hover {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.spinner {\n color: #3b82f6;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.successIcon {\n color: #16a34a;\n}\n\n.errorIcon {\n color: #dc2626;\n}\n\n/* Status-based item styles */\n.item.completed {\n background: #f0fdf4;\n}\n\n.item.error {\n background: #fef2f2;\n}\n","/* Header Buttons */\n.backButton {\n padding: 8px;\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n color: #737373;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s, color 0.15s;\n}\n\n.backButton:hover {\n background: #f5f5f5;\n color: #171717;\n}\n\n.selectModeButton {\n padding: 8px 14px;\n background: #f5f5f5;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #525252;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.selectModeButton:hover {\n background: #ebebeb;\n border-color: #d4d4d4;\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n gap: 12px;\n}\n\n/* Upload Section */\n.uploadSection {\n margin-bottom: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Footer */\n.footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n width: 100%;\n}\n\n.footerInfo {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n flex: 1;\n}\n\n.footerImage {\n width: 36px;\n height: 36px;\n object-fit: cover;\n border-radius: 4px;\n border: 1px solid #e5e5e5;\n flex-shrink: 0;\n}\n\n.footerFilename {\n font-size: 13px;\n font-weight: 500;\n color: #171717;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.footerMeta {\n font-size: 12px;\n color: #737373;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.selectButton {\n padding: 10px 20px;\n background: #3b82f6;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s;\n flex-shrink: 0;\n}\n\n.selectButton:hover {\n background: #2563eb;\n}\n\n/* Edit View */\n.editContent {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.editPreview {\n display: flex;\n justify-content: center;\n align-items: center;\n background: #f5f5f5;\n border-radius: 8px;\n padding: 20px;\n min-height: 200px;\n max-height: 300px;\n}\n\n.editImage {\n max-width: 100%;\n max-height: 260px;\n object-fit: contain;\n border-radius: 4px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n}\n\n.editInfo {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 16px;\n background: #fafafa;\n border-radius: 8px;\n}\n\n.editInfoRow {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.editInfoLabel {\n font-size: 13px;\n font-weight: 500;\n color: #737373;\n min-width: 100px;\n}\n\n.editInfoValue {\n font-size: 13px;\n color: #171717;\n}\n\n.editField {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.editFieldHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.editFieldLabel {\n font-size: 14px;\n font-weight: 600;\n color: #171717;\n margin: 0;\n}\n\n.langTabs {\n display: flex;\n gap: 2px;\n background: #e5e5e5;\n border-radius: 6px;\n padding: 3px;\n}\n\n.langTab {\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 600;\n color: #737373;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.langTab:hover {\n color: #525252;\n}\n\n.langTabActive {\n background: white;\n color: #171717;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.editInput {\n padding: 12px 14px;\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n font-size: 14px;\n background: white;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.editInput:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.editInput::placeholder {\n color: #a3a3a3;\n}\n\n.editFooter {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.saveButton {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: #10b981;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.saveButton:hover:not(:disabled) {\n background: #059669;\n}\n\n.saveButton:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.spinner {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* Mobile Responsive */\n@media (max-width: 640px) {\n .footer {\n flex-direction: column;\n gap: 12px;\n }\n\n .footerInfo {\n width: 100%;\n }\n\n .selectButton {\n width: 100%;\n }\n\n .editPreview {\n min-height: 150px;\n max-height: 200px;\n }\n\n .editImage {\n max-height: 160px;\n }\n\n .editInfoRow {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n\n .editInfoLabel {\n min-width: auto;\n }\n}\n",".container {\n margin-top: 8px;\n}\n\n.preview {\n position: relative;\n border-radius: 6px;\n overflow: hidden;\n border: 1px solid #e5e5e5;\n background: #f5f5f5;\n}\n\n.image {\n width: 100%;\n height: 128px;\n object-fit: cover;\n display: block;\n}\n\n.overlay {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.preview:hover .overlay {\n opacity: 1;\n}\n\n.changeButton {\n padding: 8px 16px;\n background: white;\n border: none;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.changeButton:hover {\n background: #f0f0f0;\n}\n\n.removeButton {\n padding: 8px;\n background: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #dc2626;\n transition: background 0.15s;\n}\n\n.removeButton:hover {\n background: #fee2e2;\n}\n\n.selectButton {\n width: 100%;\n padding: 24px 16px;\n border: 2px dashed #d4d4d4;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n color: #737373;\n font-size: 13px;\n transition: border-color 0.15s, color 0.15s, background 0.15s;\n}\n\n.selectButton:hover {\n border-color: #3b82f6;\n color: #3b82f6;\n background: #eff6ff;\n}\n\n.selectButton:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n}\n","/* Header Buttons */\n.backButton {\n padding: 8px;\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n color: #737373;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s, color 0.15s;\n}\n\n.backButton:hover {\n background: #f5f5f5;\n color: #171717;\n}\n\n.selectModeButton {\n padding: 8px 16px;\n background: #f5f5f5;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #525252;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.selectModeButton:hover {\n background: #ebebeb;\n border-color: #d4d4d4;\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n gap: 12px;\n}\n\n.createButton {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: #3b82f6;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s;\n}\n\n.createButton:hover {\n background: #2563eb;\n}\n\n/* Create Form */\n.createForm {\n display: flex;\n gap: 8px;\n padding: 12px;\n background: #f5f5f5;\n border-radius: 8px;\n margin-bottom: 16px;\n}\n\n.createInput {\n flex: 1;\n padding: 8px 12px;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n}\n\n.createInput:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.createSubmitButton {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #3b82f6;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.createSubmitButton:hover:not(:disabled) {\n background: #2563eb;\n}\n\n.createSubmitButton:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.createCancelButton {\n padding: 8px 12px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n font-size: 14px;\n color: #525252;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.createCancelButton:hover {\n background: #f5f5f5;\n}\n\n/* Upload Section */\n.uploadSection {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Gallery Grid */\n.galleryGrid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n gap: 16px;\n}\n\n.galleryCard {\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.galleryCardButton {\n display: block;\n width: 100%;\n padding: 0;\n background: white;\n border: 2px solid #e5e5e5;\n border-radius: 8px;\n cursor: pointer;\n text-align: left;\n transition: border-color 0.15s, box-shadow 0.15s;\n overflow: hidden;\n}\n\n.galleryCardButton:hover {\n border-color: #3b82f6;\n box-shadow: 0 4px 12px rgba(59, 130, 246, 0.15);\n}\n\n.galleryCardButton.selected {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);\n}\n\n.checkbox {\n position: absolute;\n top: 8px;\n left: 8px;\n width: 22px;\n height: 22px;\n background: white;\n border: 2px solid #d4d4d4;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n transition: background 0.15s, border-color 0.15s;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.checkboxChecked {\n background: #3b82f6;\n border-color: #3b82f6;\n color: white;\n}\n\n.galleryCover {\n aspect-ratio: 4/3;\n background: #f5f5f5;\n overflow: hidden;\n}\n\n.galleryCover img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: transform 0.2s;\n}\n\n.galleryCardButton:hover .galleryCover img {\n transform: scale(1.05);\n}\n\n.galleryCoverPlaceholder {\n width: 100%;\n height: 100%;\n background: linear-gradient(135deg, #e5e5e5 0%, #f5f5f5 100%);\n}\n\n.galleryInfo {\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.galleryName {\n font-size: 14px;\n font-weight: 500;\n color: #171717;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.galleryCount {\n font-size: 12px;\n color: #737373;\n}\n\n/* Footer */\n.footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n width: 100%;\n}\n\n.footerInfo {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n}\n\n.footerText {\n font-size: 13px;\n color: #737373;\n}\n\n.selectButton {\n padding: 10px 20px;\n background: #3b82f6;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s;\n flex-shrink: 0;\n}\n\n.selectButton:hover {\n background: #2563eb;\n}\n\n/* Edit View */\n.editContent {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.editPreview {\n display: flex;\n justify-content: center;\n align-items: center;\n background: #f5f5f5;\n border-radius: 8px;\n padding: 20px;\n min-height: 200px;\n max-height: 300px;\n}\n\n.editImage {\n max-width: 100%;\n max-height: 260px;\n object-fit: contain;\n border-radius: 4px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n}\n\n.editInfo {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 16px;\n background: #fafafa;\n border-radius: 8px;\n}\n\n.editInfoRow {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.editInfoLabel {\n font-size: 13px;\n font-weight: 500;\n color: #737373;\n min-width: 100px;\n}\n\n.editInfoValue {\n font-size: 13px;\n color: #171717;\n}\n\n.editField {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.editFieldHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.editFieldLabel {\n font-size: 14px;\n font-weight: 600;\n color: #171717;\n margin: 0;\n}\n\n.langTabs {\n display: flex;\n gap: 2px;\n background: #e5e5e5;\n border-radius: 6px;\n padding: 3px;\n}\n\n.langTab {\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 600;\n color: #737373;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.langTab:hover {\n color: #525252;\n}\n\n.langTabActive {\n background: white;\n color: #171717;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.editInput {\n padding: 12px 14px;\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n font-size: 14px;\n background: white;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.editInput:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.editInput::placeholder {\n color: #a3a3a3;\n}\n\n.editFooter {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.saveButton {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: #10b981;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.saveButton:hover:not(:disabled) {\n background: #059669;\n}\n\n.saveButton:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.spinner {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* Mobile Responsive */\n@media (max-width: 640px) {\n .toolbar {\n flex-direction: column;\n }\n\n .createButton {\n width: 100%;\n justify-content: center;\n }\n\n .footer {\n flex-direction: column;\n gap: 12px;\n }\n\n .footerInfo {\n width: 100%;\n }\n\n .selectButton {\n width: 100%;\n }\n\n .editPreview {\n min-height: 150px;\n max-height: 200px;\n }\n\n .editImage {\n max-height: 160px;\n }\n\n .editInfoRow {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n\n .editInfoLabel {\n min-width: auto;\n }\n}\n",".container {\n margin-top: 8px;\n}\n\n.preview {\n border-radius: 6px;\n border: 1px solid #e5e5e5;\n background: #fafafa;\n padding: 12px;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.name {\n font-size: 14px;\n font-weight: 500;\n color: #171717;\n}\n\n.count {\n font-size: 12px;\n color: #737373;\n}\n\n.thumbnails {\n display: flex;\n gap: 6px;\n margin-bottom: 12px;\n}\n\n.thumbnail {\n width: 48px;\n height: 48px;\n border-radius: 4px;\n overflow: hidden;\n border: 1px solid #e5e5e5;\n background: #f5f5f5;\n}\n\n.thumbnail img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.more {\n width: 48px;\n height: 48px;\n border-radius: 4px;\n border: 1px solid #e5e5e5;\n background: #f5f5f5;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 500;\n color: #737373;\n}\n\n.actions {\n display: flex;\n gap: 8px;\n}\n\n.changeButton {\n flex: 1;\n padding: 8px 12px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 4px;\n font-size: 13px;\n font-weight: 500;\n color: #525252;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.changeButton:hover {\n background: #f5f5f5;\n border-color: #d4d4d4;\n}\n\n.removeButton {\n padding: 8px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #dc2626;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.removeButton:hover {\n background: #fee2e2;\n border-color: #fecaca;\n}\n\n.selectButton {\n width: 100%;\n padding: 24px 16px;\n border: 2px dashed #d4d4d4;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n color: #737373;\n font-size: 13px;\n transition: border-color 0.15s, color 0.15s, background 0.15s;\n}\n\n.selectButton:hover {\n border-color: #3b82f6;\n color: #3b82f6;\n background: #eff6ff;\n}\n\n.selectButton:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n}\n","/* Header Buttons */\n.backButton {\n padding: 8px;\n background: transparent;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n color: #737373;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s, color 0.15s;\n}\n\n.backButton:hover {\n background: #f5f5f5;\n color: #171717;\n}\n\n.selectModeButton {\n padding: 8px 16px;\n background: #f5f5f5;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: #525252;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.selectModeButton:hover {\n background: #ebebeb;\n border-color: #d4d4d4;\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n gap: 12px;\n}\n\n/* Upload Section */\n.uploadSection {\n margin-bottom: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Document List */\n.documentList {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.documentItemContainer {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.documentItem {\n flex: 1;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n cursor: pointer;\n text-align: left;\n transition: border-color 0.15s, background 0.15s;\n}\n\n.documentItem:hover {\n border-color: #3b82f6;\n background: #f9fafb;\n}\n\n.documentItem.selected {\n border-color: #3b82f6;\n background: #eff6ff;\n}\n\n.checkbox {\n width: 20px;\n height: 20px;\n border: 2px solid #d4d4d4;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.checkboxChecked {\n background: #3b82f6;\n border-color: #3b82f6;\n color: white;\n}\n\n.documentIcon {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f5f5f5;\n border-radius: 6px;\n}\n\n.pdfIcon {\n color: #dc2626;\n}\n\n.fileIcon {\n color: #737373;\n}\n\n.documentInfo {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.documentName {\n font-size: 14px;\n font-weight: 500;\n color: #171717;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.documentMeta {\n font-size: 12px;\n color: #737373;\n}\n\n.checkmark {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n background: #3b82f6;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n}\n\n.editButton {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n padding: 8px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 6px;\n cursor: pointer;\n color: #737373;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.15s, background 0.15s, color 0.15s;\n}\n\n.documentItemContainer:hover .editButton {\n opacity: 1;\n}\n\n.editButton:hover {\n background: #f5f5f5;\n color: #171717;\n}\n\n/* Footer */\n.footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n width: 100%;\n}\n\n.footerInfo {\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n flex: 1;\n}\n\n.footerIcon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border-radius: 6px;\n border: 1px solid #e5e5e5;\n flex-shrink: 0;\n}\n\n.footerFilename {\n font-size: 13px;\n font-weight: 500;\n color: #171717;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.footerMeta {\n font-size: 12px;\n color: #737373;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.selectButton {\n padding: 10px 20px;\n background: #3b82f6;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s;\n flex-shrink: 0;\n}\n\n.selectButton:hover {\n background: #2563eb;\n}\n\n/* Edit View */\n.editContent {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.editPreview {\n display: flex;\n justify-content: center;\n align-items: center;\n background: #f5f5f5;\n border-radius: 8px;\n padding: 40px;\n}\n\n.editIcon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border-radius: 12px;\n border: 1px solid #e5e5e5;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n}\n\n.editIcon svg {\n width: 40px;\n height: 40px;\n}\n\n.editInfo {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 16px;\n background: #fafafa;\n border-radius: 8px;\n}\n\n.editInfoRow {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.editInfoLabel {\n font-size: 13px;\n font-weight: 500;\n color: #737373;\n min-width: 80px;\n}\n\n.editInfoValue {\n font-size: 13px;\n color: #171717;\n}\n\n.editField {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.editFieldHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.editFieldLabel {\n font-size: 14px;\n font-weight: 600;\n color: #171717;\n margin: 0;\n}\n\n.langTabs {\n display: flex;\n gap: 2px;\n background: #e5e5e5;\n border-radius: 6px;\n padding: 3px;\n}\n\n.langTab {\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 600;\n color: #737373;\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n\n.langTab:hover {\n color: #525252;\n}\n\n.langTabActive {\n background: white;\n color: #171717;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.editInput {\n padding: 12px 14px;\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n font-size: 14px;\n background: white;\n transition: border-color 0.15s, box-shadow 0.15s;\n}\n\n.editInput:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.editInput::placeholder {\n color: #a3a3a3;\n}\n\n.editFooter {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n\n.saveButton {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: #10b981;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n color: white;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.saveButton:hover:not(:disabled) {\n background: #059669;\n}\n\n.saveButton:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.spinner {\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n/* Mobile Responsive */\n@media (max-width: 640px) {\n .footer {\n flex-direction: column;\n gap: 12px;\n }\n\n .footerInfo {\n width: 100%;\n }\n\n .selectButton {\n width: 100%;\n }\n\n .editInfoRow {\n flex-direction: column;\n align-items: flex-start;\n gap: 4px;\n }\n\n .editInfoLabel {\n min-width: auto;\n }\n}\n",".container {\n margin-top: 8px;\n}\n\n.preview {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border-radius: 6px;\n border: 1px solid #e5e5e5;\n background: #fafafa;\n}\n\n.iconWrapper {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n border-radius: 6px;\n border: 1px solid #e5e5e5;\n}\n\n.pdfIcon {\n color: #dc2626;\n}\n\n.fileIcon {\n color: #737373;\n}\n\n.info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.title {\n font-size: 13px;\n font-weight: 500;\n color: #171717;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.meta {\n font-size: 11px;\n color: #737373;\n}\n\n.actions {\n flex-shrink: 0;\n display: flex;\n gap: 6px;\n}\n\n.changeButton {\n padding: 6px 12px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n color: #525252;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.changeButton:hover {\n background: #f5f5f5;\n border-color: #d4d4d4;\n}\n\n.removeButton {\n padding: 6px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 4px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #dc2626;\n transition: background 0.15s, border-color 0.15s;\n}\n\n.removeButton:hover {\n background: #fee2e2;\n border-color: #fecaca;\n}\n\n.selectButton {\n width: 100%;\n padding: 24px 16px;\n border: 2px dashed #d4d4d4;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n color: #737373;\n font-size: 13px;\n transition: border-color 0.15s, color 0.15s, background 0.15s;\n}\n\n.selectButton:hover {\n border-color: #3b82f6;\n color: #3b82f6;\n background: #eff6ff;\n}\n\n.selectButton:focus {\n outline: none;\n border-color: #3b82f6;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n}\n",".panel {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: var(--puck-color-grey-12, #f5f5f5);\n border: 1px solid var(--puck-color-grey-09, #e5e5e5);\n border-radius: 8px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n color: var(--puck-color-grey-02, #171717);\n transition: background 0.15s, border-color 0.15s;\n text-align: left;\n width: 100%;\n}\n\n.item:hover {\n background: var(--puck-color-grey-11, #ebebeb);\n border-color: var(--puck-color-grey-08, #d4d4d4);\n}\n\n.item:active {\n background: var(--puck-color-grey-10, #e0e0e0);\n}\n\n.item svg {\n flex-shrink: 0;\n color: var(--puck-color-grey-05, #737373);\n}\n\n.item:hover svg {\n color: var(--puck-color-grey-03, #525252);\n}\n"],"mappings":"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","names":["backdrop","fadeIn","modal","small","slideUp","header","title","headerActions","closeButton","toolbar","content","loading","spinner","spin","empty","footer","container","icon","input","clearButton","container","button","spinner","spin","overlay","fadeIn","dialog","slideUp","title","message","actions","cancelButton","confirmButton","danger","spinner","spin","toolbar","selectAllButton","checkbox","checked","indeterminate","indeterminateLine","actions","cancelButton","deleteButton","grid","itemContainer","item","selected","imageWrapper","image","checkmark","checkbox","checkboxChecked","info","infoRow","infoText","filename","meta","editButton","dropzone","disabled","dragging","input","icon","text","hint","container","header","title","clearButton","list","item","preview","previewImage","previewPlaceholder","progressOverlay","progressBar","progressText","info","filename","size","error","actions","cancelButton","spinner","spin","successIcon","errorIcon","completed","backButton","selectModeButton","toolbar","uploadSection","footer","footerInfo","footerImage","footerFilename","footerMeta","selectButton","editContent","editPreview","editImage","editInfo","editInfoRow","editInfoLabel","editInfoValue","editField","editFieldHeader","editFieldLabel","langTabs","langTab","langTabActive","editInput","editFooter","saveButton","spinner","spin","container","preview","image","overlay","changeButton","removeButton","selectButton","backButton","selectModeButton","toolbar","createButton","createForm","createInput","createSubmitButton","createCancelButton","uploadSection","galleryGrid","galleryCard","galleryCardButton","selected","checkbox","checkboxChecked","galleryCover","galleryCoverPlaceholder","galleryInfo","galleryName","galleryCount","footer","footerInfo","footerText","selectButton","editContent","editPreview","editImage","editInfo","editInfoRow","editInfoLabel","editInfoValue","editField","editFieldHeader","editFieldLabel","langTabs","langTab","langTabActive","editInput","editFooter","saveButton","spinner","spin","container","preview","header","name","count","thumbnails","thumbnail","more","actions","changeButton","removeButton","selectButton","backButton","selectModeButton","toolbar","uploadSection","documentList","documentItemContainer","documentItem","selected","checkbox","checkboxChecked","documentIcon","pdfIcon","fileIcon","documentInfo","documentName","documentMeta","checkmark","editButton","footer","footerInfo","footerIcon","footerFilename","footerMeta","selectButton","editContent","editPreview","editIcon","editInfo","editInfoRow","editInfoLabel","editInfoValue","editField","editFieldHeader","editFieldLabel","langTabs","langTab","langTabActive","editInput","editFooter","saveButton","spinner","spin","container","preview","iconWrapper","pdfIcon","fileIcon","info","title","meta","actions","changeButton","removeButton","selectButton","panel","item"]}
@@ -0,0 +1,479 @@
1
+ import { ReactNode } from 'react';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+
4
+ /**
5
+ * Language configuration for multilingual fields
6
+ */
7
+ interface Language {
8
+ code: string;
9
+ label: string;
10
+ }
11
+ /**
12
+ * Default languages when not specified
13
+ */
14
+ declare const DEFAULT_LANGUAGES: Language[];
15
+ /**
16
+ * Localized string value (e.g., { en: 'Hello', it: 'Ciao' })
17
+ */
18
+ type LocalizedString = Record<string, string | undefined>;
19
+ /**
20
+ * Image item - used both for API responses and stored values in Puck JSON
21
+ */
22
+ interface ImageItem {
23
+ /** Unique identifier */
24
+ id: string;
25
+ /** Full URL to the image file */
26
+ url: string;
27
+ /** Original filename */
28
+ filename?: string;
29
+ /** Alt text (multilingual) */
30
+ alt?: LocalizedString;
31
+ /** Image width in pixels */
32
+ width?: number;
33
+ /** Image height in pixels */
34
+ height?: number;
35
+ /** File size in bytes */
36
+ size?: number;
37
+ /** Thumbnail URL for faster loading in picker (falls back to url if not provided) */
38
+ thumbnailUrl?: string;
39
+ /** Creation date (useful for cache invalidation) */
40
+ createdAt?: string;
41
+ }
42
+ /**
43
+ * Document item - used both for API responses and stored values in Puck JSON
44
+ */
45
+ interface DocumentItem {
46
+ /** Unique identifier */
47
+ id: string;
48
+ /** Full URL to the document file */
49
+ url: string;
50
+ /** Original filename */
51
+ filename: string;
52
+ /** Display title (multilingual) */
53
+ title?: LocalizedString;
54
+ /** MIME type (e.g., 'application/pdf') */
55
+ mimeType: string;
56
+ /** File size in bytes */
57
+ size: number;
58
+ /** File extension (e.g., 'pdf', 'docx') */
59
+ extension: string;
60
+ /** Creation date (useful for cache invalidation) */
61
+ createdAt?: string;
62
+ }
63
+ /**
64
+ * Gallery item - used both for API responses and stored values in Puck JSON
65
+ */
66
+ interface GalleryItem {
67
+ /** Unique identifier */
68
+ id: string;
69
+ /** Gallery name */
70
+ name: string;
71
+ /** Cover image for preview */
72
+ coverImage?: ImageItem;
73
+ /** Images in the gallery */
74
+ images: ImageItem[];
75
+ /** Number of images in the gallery (optional, can be calculated from images.length) */
76
+ imageCount?: number;
77
+ /** Creation date (useful for cache invalidation) */
78
+ createdAt?: string;
79
+ }
80
+ /**
81
+ * Parameters passed to fetchList functions
82
+ */
83
+ interface FetchListParams {
84
+ /** Search query string */
85
+ query?: string;
86
+ /** Page number (1-indexed) */
87
+ page?: number;
88
+ /** Items per page */
89
+ pageSize?: number;
90
+ /** Additional filters */
91
+ filters?: Record<string, unknown>;
92
+ }
93
+ /**
94
+ * Result from fetchList - paginated result
95
+ */
96
+ interface FetchListResult<T> {
97
+ /** Array of items */
98
+ items: T[];
99
+ /** Total number of items (for pagination) */
100
+ total?: number;
101
+ /** Whether there are more items to load */
102
+ hasMore?: boolean;
103
+ }
104
+ /**
105
+ * Generic fetch list function type
106
+ */
107
+ type FetchListFn<T> = (params: FetchListParams) => Promise<T[] | FetchListResult<T>>;
108
+ /**
109
+ * Callbacks passed to upload functions
110
+ */
111
+ interface UploadCallbacks {
112
+ /** Called with upload progress (0-100) */
113
+ onProgress: (percent: number) => void;
114
+ }
115
+ /**
116
+ * Upload function that handles single or multiple files
117
+ */
118
+ type UploadFn<T> = (files: File | File[], callbacks: UploadCallbacks) => Promise<T | T[]>;
119
+ /**
120
+ * Configuration for file uploads
121
+ */
122
+ interface UploadConfig {
123
+ /**
124
+ * Accepted file types (MIME types or extensions)
125
+ * @default 'image/*' for images, '*' for documents
126
+ */
127
+ accept?: string;
128
+ /**
129
+ * Maximum file size in bytes
130
+ * @default 10485760 (10MB)
131
+ */
132
+ maxSize?: number;
133
+ /**
134
+ * Allow multiple file uploads
135
+ * @default true
136
+ */
137
+ multiple?: boolean;
138
+ }
139
+ /**
140
+ * Status of a file being uploaded
141
+ */
142
+ type UploadStatus = 'pending' | 'uploading' | 'completed' | 'error';
143
+ /**
144
+ * State of a file in the upload queue
145
+ */
146
+ interface UploadingFile {
147
+ /** Unique ID for this upload */
148
+ id: string;
149
+ /** The file being uploaded */
150
+ file: File;
151
+ /** Upload progress (0-100) */
152
+ progress: number;
153
+ /** Current upload status */
154
+ status: UploadStatus;
155
+ /** Error message if status is 'error' */
156
+ error?: string;
157
+ /** Resulting item if status is 'completed' */
158
+ result?: ImageItem | DocumentItem;
159
+ /** Preview URL for the file (blob URL) */
160
+ previewUrl?: string;
161
+ }
162
+ /**
163
+ * Image-related callbacks
164
+ */
165
+ interface ImageOptions {
166
+ /** Function to fetch image list from your API */
167
+ fetchList: FetchListFn<ImageItem>;
168
+ /** Function to upload images (optional) */
169
+ upload?: UploadFn<ImageItem>;
170
+ /** Function to update image metadata (alt text) */
171
+ update?: (id: string, data: {
172
+ alt?: LocalizedString;
173
+ }) => Promise<ImageItem>;
174
+ /** Function to delete an image (optional) */
175
+ delete?: (id: string) => Promise<void>;
176
+ /** Configuration for file uploads */
177
+ uploadConfig?: UploadConfig;
178
+ }
179
+ /**
180
+ * Gallery-related callbacks
181
+ */
182
+ interface GalleryOptions {
183
+ /** Function to fetch gallery list from your API (required) */
184
+ fetchList: FetchListFn<GalleryItem>;
185
+ /** Function to fetch a single gallery by ID */
186
+ fetch: (id: string) => Promise<GalleryItem>;
187
+ /** Function to create a new gallery */
188
+ create: (name: string) => Promise<GalleryItem>;
189
+ /** Function to delete a gallery */
190
+ delete: (id: string) => Promise<void>;
191
+ /** Function to upload images to a gallery */
192
+ upload: (galleryId: string, files: File | File[], callbacks: UploadCallbacks) => Promise<ImageItem | ImageItem[]>;
193
+ /** Function to remove an image from a gallery */
194
+ removeImage: (galleryId: string, imageId: string) => Promise<void>;
195
+ /** Function to update image metadata within a gallery (optional - hides alt editing if not provided) */
196
+ updateImage?: (galleryId: string, imageId: string, data: {
197
+ alt?: LocalizedString;
198
+ }) => Promise<ImageItem>;
199
+ }
200
+ /**
201
+ * Document-related callbacks
202
+ */
203
+ interface DocumentOptions {
204
+ /** Function to fetch document list from your API */
205
+ fetchList: FetchListFn<DocumentItem>;
206
+ /** Function to upload documents (optional - hides upload area if not provided) */
207
+ upload?: UploadFn<DocumentItem>;
208
+ /** Function to update document metadata (title) (optional - hides edit icon if not provided) */
209
+ update?: (id: string, data: {
210
+ title?: LocalizedString;
211
+ }) => Promise<DocumentItem>;
212
+ /** Function to delete a document (optional - hides manage button if not provided) */
213
+ delete?: (id: string) => Promise<void>;
214
+ /** Configuration for file uploads */
215
+ uploadConfig?: UploadConfig;
216
+ }
217
+ /**
218
+ * Plugin configuration options
219
+ */
220
+ interface MediaPluginOptions {
221
+ /**
222
+ * Languages for multilingual fields (alt, title)
223
+ * @default [{ code: 'it', label: 'Italiano' }, { code: 'en', label: 'English' }]
224
+ */
225
+ languages?: Language[];
226
+ /**
227
+ * Image-related configuration (required)
228
+ */
229
+ image: ImageOptions;
230
+ /**
231
+ * Gallery-related configuration (optional)
232
+ */
233
+ gallery?: GalleryOptions;
234
+ /**
235
+ * Document-related configuration (optional)
236
+ */
237
+ document?: DocumentOptions;
238
+ }
239
+ /**
240
+ * Internal props passed to ImageField component
241
+ */
242
+ interface ImageFieldProps {
243
+ name: string;
244
+ value: ImageItem | null;
245
+ onChange: (value: ImageItem | null) => void;
246
+ field: {
247
+ label?: string;
248
+ [key: string]: unknown;
249
+ };
250
+ languages: Language[];
251
+ imageOptions: ImageOptions;
252
+ }
253
+ /**
254
+ * Internal props passed to GalleryField component
255
+ */
256
+ interface GalleryFieldProps {
257
+ name: string;
258
+ value: GalleryItem | null;
259
+ onChange: (value: GalleryItem | null) => void;
260
+ field: {
261
+ label?: string;
262
+ [key: string]: unknown;
263
+ };
264
+ languages: Language[];
265
+ galleryOptions: GalleryOptions;
266
+ }
267
+ /**
268
+ * Internal props passed to DocumentField component
269
+ */
270
+ interface DocumentFieldProps {
271
+ name: string;
272
+ value: DocumentItem | null;
273
+ onChange: (value: DocumentItem | null) => void;
274
+ field: {
275
+ label?: string;
276
+ [key: string]: unknown;
277
+ };
278
+ languages: Language[];
279
+ documentOptions: DocumentOptions;
280
+ }
281
+ /**
282
+ * Props for ImagePickerModal component
283
+ */
284
+ interface ImagePickerModalProps {
285
+ languages: Language[];
286
+ imageOptions: ImageOptions;
287
+ title?: string;
288
+ selectedImage?: ImageItem | null;
289
+ onSelect?: (item: ImageItem) => void;
290
+ onClose: () => void;
291
+ /** When false, hides the "Select Image" button. Useful for media library mode. Default: true */
292
+ selectable?: boolean;
293
+ }
294
+ /**
295
+ * Props for GalleryPickerModal component
296
+ */
297
+ interface GalleryPickerModalProps {
298
+ languages: Language[];
299
+ galleryOptions: GalleryOptions;
300
+ title?: string;
301
+ selectedGallery?: GalleryItem | null;
302
+ onSelect?: (gallery: GalleryItem) => void;
303
+ onClose: () => void;
304
+ /** When false, hides the "Select Gallery" button. Useful for media library mode. Default: true */
305
+ selectable?: boolean;
306
+ }
307
+ /**
308
+ * Props for DocumentPickerModal component
309
+ */
310
+ interface DocumentPickerModalProps {
311
+ languages: Language[];
312
+ documentOptions: DocumentOptions;
313
+ title?: string;
314
+ selectedDocument?: DocumentItem | null;
315
+ onSelect?: (item: DocumentItem) => void;
316
+ onClose: () => void;
317
+ /** When false, hides the "Select Document" button. Useful for media library mode. Default: true */
318
+ selectable?: boolean;
319
+ }
320
+ /**
321
+ * Props for ImageGrid component
322
+ */
323
+ interface ImageGridProps {
324
+ items: ImageItem[];
325
+ onSelect: (item: ImageItem) => void;
326
+ selectedId?: string;
327
+ loading?: boolean;
328
+ /** Callback when user clicks edit icon */
329
+ onEditAlt?: (item: ImageItem) => void;
330
+ /** Whether manage mode is active (for bulk delete) */
331
+ manageMode?: boolean;
332
+ /** Set of selected item IDs for bulk operations */
333
+ selectedIds?: Set<string>;
334
+ /** Callback when user toggles selection in manage mode */
335
+ onToggleSelect?: (item: ImageItem) => void;
336
+ }
337
+ /**
338
+ * Puck Plugin type
339
+ */
340
+ interface PuckPlugin {
341
+ name: string;
342
+ label?: string;
343
+ icon?: ReactNode;
344
+ render?: () => ReactNode;
345
+ overrides?: {
346
+ fieldTypes?: Record<string, (props: unknown) => ReactNode>;
347
+ [key: string]: unknown;
348
+ };
349
+ }
350
+
351
+ /**
352
+ * Create a Puck plugin for media library integration
353
+ *
354
+ * @example
355
+ * ```tsx
356
+ * import { createMediaPlugin } from '@onda-suite/puck-plugin-media';
357
+ *
358
+ * const mediaPlugin = createMediaPlugin({
359
+ * // Optional: configure languages for alt/title fields
360
+ * languages: [
361
+ * { code: 'it', label: 'Italiano' },
362
+ * { code: 'en', label: 'English' },
363
+ * ],
364
+ *
365
+ * // Image configuration (required)
366
+ * image: {
367
+ * fetchList: async ({ query, page, pageSize }) => {
368
+ * const res = await fetch(`/api/images?q=${query}&page=${page}`);
369
+ * return res.json();
370
+ * },
371
+ * upload: async (file, { onProgress }) => {
372
+ * // Upload with progress tracking...
373
+ * return uploadedImageItem;
374
+ * },
375
+ * update: async (id, { alt }) => {
376
+ * // Update alt text
377
+ * return updatedImageItem;
378
+ * },
379
+ * delete: async (id) => {
380
+ * // Delete image (enables "Select Items" mode)
381
+ * },
382
+ * uploadConfig: {
383
+ * accept: 'image/*',
384
+ * maxSize: 10 * 1024 * 1024, // 10MB
385
+ * multiple: true,
386
+ * },
387
+ * },
388
+ *
389
+ * // Gallery configuration (optional)
390
+ * gallery: {
391
+ * fetchList: async ({ query, page }) => { ... },
392
+ * fetch: async (id) => { ... },
393
+ * create: async (name) => { ... },
394
+ * delete: async (id) => { ... },
395
+ * upload: async (galleryId, file, { onProgress }) => { ... },
396
+ * removeImage: async (galleryId, imageId) => { ... },
397
+ * updateImage: async (galleryId, imageId, { alt }) => { ... },
398
+ * },
399
+ *
400
+ * // Document configuration (optional)
401
+ * document: {
402
+ * fetchList: async ({ query, page }) => { ... },
403
+ * upload: async (file, { onProgress }) => { ... },
404
+ * update: async (id, { title }) => { ... },
405
+ * delete: async (id) => {
406
+ * // Delete document (enables "Select Items" mode)
407
+ * },
408
+ * uploadConfig: {
409
+ * accept: '.pdf,.doc,.docx,.xls,.xlsx',
410
+ * maxSize: 20 * 1024 * 1024, // 20MB
411
+ * multiple: true,
412
+ * },
413
+ * },
414
+ * });
415
+ *
416
+ * <Puck config={config} plugins={[mediaPlugin]} />
417
+ * ```
418
+ */
419
+ declare function createMediaPlugin(options: MediaPluginOptions): PuckPlugin;
420
+
421
+ declare function ImageField({ value, onChange, field, languages, imageOptions, }: ImageFieldProps): react_jsx_runtime.JSX.Element;
422
+
423
+ declare function ImagePickerModal({ languages, imageOptions, title, selectedImage, onSelect, onClose, selectable, }: ImagePickerModalProps): react_jsx_runtime.JSX.Element;
424
+
425
+ declare function ImageGrid({ items, onSelect, selectedId, onEditAlt, manageMode, selectedIds, onToggleSelect, }: ImageGridProps): react_jsx_runtime.JSX.Element;
426
+
427
+ declare function GalleryField({ value, onChange, field, languages, galleryOptions, }: GalleryFieldProps): react_jsx_runtime.JSX.Element;
428
+
429
+ declare function GalleryPickerModal({ languages, galleryOptions, title, selectedGallery: _initialSelectedGallery, onSelect, onClose, selectable, }: GalleryPickerModalProps): react_jsx_runtime.JSX.Element;
430
+
431
+ declare function DocumentField({ value, onChange, field, languages, documentOptions, }: DocumentFieldProps): react_jsx_runtime.JSX.Element;
432
+
433
+ declare function DocumentPickerModal({ languages, documentOptions, title, selectedDocument, onSelect, onClose, selectable, }: DocumentPickerModalProps): react_jsx_runtime.JSX.Element;
434
+
435
+ interface MediaPanelProps {
436
+ languages: Language[];
437
+ imageOptions: ImageOptions;
438
+ galleryOptions?: GalleryOptions;
439
+ documentOptions?: DocumentOptions;
440
+ }
441
+ declare function MediaPanel({ languages, imageOptions, galleryOptions, documentOptions, }: MediaPanelProps): react_jsx_runtime.JSX.Element;
442
+
443
+ interface UploadDropzoneProps {
444
+ onFilesSelected: (files: FileList) => void;
445
+ config: Required<UploadConfig>;
446
+ disabled?: boolean;
447
+ }
448
+ declare function UploadDropzone({ onFilesSelected, config, disabled, }: UploadDropzoneProps): react_jsx_runtime.JSX.Element;
449
+
450
+ interface UploadQueueProps {
451
+ files: UploadingFile[];
452
+ onCancel: (id: string) => void;
453
+ onClearCompleted: () => void;
454
+ }
455
+ declare function UploadQueue({ files, onCancel, onClearCompleted }: UploadQueueProps): react_jsx_runtime.JSX.Element | null;
456
+
457
+ declare const formatFileSize: (bytes: number) => string;
458
+ interface UseUploadOptions<T extends ImageItem | DocumentItem> {
459
+ upload: UploadFn<T>;
460
+ config?: UploadConfig;
461
+ onUploadComplete?: (item: T) => void;
462
+ }
463
+ interface UseUploadReturn {
464
+ /** Files currently being uploaded */
465
+ uploading: UploadingFile[];
466
+ /** Whether any upload is in progress */
467
+ isUploading: boolean;
468
+ /** Add files to upload queue */
469
+ addFiles: (files: FileList | File[]) => void;
470
+ /** Cancel a specific upload */
471
+ cancelUpload: (id: string) => void;
472
+ /** Clear completed/errored uploads */
473
+ clearCompleted: () => void;
474
+ /** The merged config being used */
475
+ uploadConfig: Required<UploadConfig>;
476
+ }
477
+ declare function useUpload<T extends ImageItem | DocumentItem>({ upload, config, onUploadComplete, }: UseUploadOptions<T>): UseUploadReturn;
478
+
479
+ export { DEFAULT_LANGUAGES, DocumentField, type DocumentItem, type DocumentOptions, DocumentPickerModal, type FetchListFn, type FetchListParams, type FetchListResult, GalleryField, type GalleryItem, type GalleryOptions, GalleryPickerModal, ImageField, ImageGrid, type ImageItem, type ImageOptions, ImagePickerModal, type Language, type LocalizedString, MediaPanel, type MediaPluginOptions, type UploadCallbacks, type UploadConfig, UploadDropzone, type UploadFn, UploadQueue, type UploadStatus, type UploadingFile, createMediaPlugin, formatFileSize, useUpload };