@magicfeedback/popup-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +372 -0
- package/dist/index.css +730 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +190 -0
- package/dist/index.d.ts +190 -0
- package/dist/index.js +2261 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2251 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/@magicfeedback/native/dist/styles/magicfeedback-default.css"],"sourcesContent":["/**\n * @magicfeedback/native - Default Styles\n * Clean, minimal, and elegant survey rendering\n */\n\n/* ========================================\n CSS VARIABLES - Design System\n ======================================== */\n:root {\n /* Colors - Neutral Palette */\n --mf-primary: #2563eb;\n --mf-primary-hover: #1d4ed8;\n --mf-primary-light: #dbeafe;\n\n --mf-text-primary: #0f172a;\n --mf-text-secondary: #64748b;\n --mf-text-muted: #94a3b8;\n\n --mf-bg-primary: #ffffff;\n --mf-bg-secondary: #f8fafc;\n --mf-bg-hover: #f1f5f9;\n\n --mf-border: #e2e8f0;\n --mf-border-focus: #2563eb;\n\n --mf-success: #10b981;\n --mf-error: #ef4444;\n --mf-warning: #f59e0b;\n\n /* Spacing */\n --mf-space-xs: 0.25rem;\n --mf-space-sm: 0.5rem;\n --mf-space-md: 0.75rem;\n --mf-space-lg: 1rem;\n --mf-space-xl: 1.5rem;\n\n /* Border Radius */\n --mf-radius-sm: 0.375rem;\n --mf-radius-md: 0.5rem;\n --mf-radius-lg: 0.75rem;\n --mf-radius-full: 9999px;\n\n /* Shadows */\n --mf-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --mf-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --mf-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --mf-shadow-focus: 0 0 0 3px rgba(37, 99, 235, 0.1);\n\n /* Typography */\n --mf-font-sans: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n --mf-font-size-sm: 0.875rem;\n --mf-font-size-base: 1rem;\n --mf-font-size-lg: 1.125rem;\n --mf-font-size-xl: 1.25rem;\n --mf-line-height: 1.6;\n\n /* Transitions */\n --mf-transition: all 0.2s ease;\n --mf-transition-fast: all 0.15s ease;\n}\n\n/* ========================================\n ANIMATIONS\n ======================================== */\n@keyframes mf-fade-in {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes mf-slide-in {\n from {\n opacity: 0;\n transform: translateX(-16px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n@keyframes mf-scale-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes mf-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.8;\n }\n}\n\n/* ========================================\n BASE CONTAINER\n ======================================== */\n.magicfeedback-container {\n width: 100%;\n font-family: var(--mf-font-sans);\n color: var(--mf-text-primary);\n line-height: var(--mf-line-height);\n animation: mf-fade-in 0.4s ease-out;\n}\n\n/* ========================================\n MESSAGES\n ======================================== */\n.magicfeedback-success-message,\n.magicfeedback-info-message,\n.magicfeedback-start-message {\n padding: var(--mf-space-lg);\n margin: var(--mf-space-lg) 0;\n border-radius: var(--mf-radius-lg);\n background: var(--mf-bg-secondary);\n animation: mf-scale-in 0.3s ease-out;\n}\n\n.magicfeedback-success-message p,\n.magicfeedback-info-message p,\n.magicfeedback-start-message p {\n font-size: var(--mf-font-size-base);\n color: var(--mf-text-secondary);\n margin: 0;\n line-height: var(--mf-line-height);\n}\n\n.magicfeedback-success-message img,\n.magicfeedback-info-message img,\n.magicfeedback-start-message img {\n max-width: 100%;\n height: auto;\n margin: var(--mf-space-lg) auto;\n display: block;\n border-radius: var(--mf-radius-md);\n}\n\n.magicfeedback-image {\n max-height: 400px;\n height: auto;\n max-width: 100%;\n margin: var(--mf-space-lg) auto;\n display: block;\n border-radius: var(--mf-radius-md);\n}\n\n/* ========================================\n FORM STRUCTURE\n ======================================== */\n.magicfeedback-form {\n display: flex;\n flex-direction: column;\n gap: var(--mf-space-lg);\n width: 100%;\n}\n\n.magicfeedback-questions {\n display: flex;\n flex-direction: column;\n gap: var(--mf-space-xl);\n width: 100%;\n}\n\n.magicfeedback-div {\n display: flex;\n flex-direction: column;\n gap: var(--mf-space-sm);\n width: 100%;\n animation: mf-slide-in 0.3s ease-out;\n}\n\n/* ========================================\n LABELS & TYPOGRAPHY\n ======================================== */\n.magicfeedback-label {\n font-size: var(--mf-font-size-lg);\n font-weight: 500;\n color: var(--mf-text-primary);\n line-height: var(--mf-line-height);\n margin: 0 0 var(--mf-space-md) 0;\n text-align: left;\n}\n\nh2 {\n font-size: var(--mf-font-size-xl);\n font-weight: 600;\n color: var(--mf-text-primary);\n margin: 0 0 var(--mf-space-xl) 0;\n text-align: center;\n letter-spacing: -0.01em;\n}\n\np {\n margin: 0;\n font-size: var(--mf-font-size-sm);\n color: var(--mf-text-secondary);\n}\n\n/* ========================================\n FORM INPUTS\n ======================================== */\ninput[type=\"date\"],\ninput[type=\"text\"],\ninput[type=\"number\"],\ninput[type=\"email\"],\ninput[type=\"password\"],\ntextarea,\nselect {\n width: auto;\n padding: var(--mf-space-sm) var(--mf-space-md);\n font-size: var(--mf-font-size-base);\n font-family: inherit;\n color: var(--mf-text-primary);\n background-color: var(--mf-bg-primary);\n border: 1.5px solid var(--mf-border);\n border-radius: var(--mf-radius-md);\n outline: none;\n transition: var(--mf-transition);\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\ntextarea {\n min-height: 100px;\n resize: vertical;\n}\n\ninput:focus,\nselect:focus,\ntextarea:focus {\n border-color: var(--mf-border-focus);\n box-shadow: var(--mf-shadow-focus);\n}\n\ninput::placeholder,\ntextarea::placeholder {\n color: var(--mf-text-muted);\n}\n\n/* Remove number input spinners */\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\ninput[type=\"number\"] {\n -moz-appearance: textfield;\n}\n\n/* Custom Select Arrow */\nselect {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 9L1 4h10z'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right var(--mf-space-md) center;\n padding-right: var(--mf-space-xl);\n}\n\n/* Error State */\ninput.error,\nselect.error,\ntextarea.error {\n border-color: var(--mf-error);\n}\n\n.magicfeedback-error {\n margin-top: var(--mf-space-xs);\n font-size: var(--mf-font-size-sm);\n color: var(--mf-error);\n}\n\n/* ========================================\n CHECKBOX & RADIO OPTIONS\n ======================================== */\n.magicfeedback-checkbox,\n.magicfeedback-radio {\n display: flex;\n flex-direction: column;\n gap: var(--mf-space-sm);\n width: 100%;\n}\n\n.magicfeedback-checkbox-container,\n.magicfeedback-radio-container {\n display: flex;\n align-items: center;\n gap: var(--mf-space-sm);\n padding: var(--mf-space-md);\n background-color: var(--mf-bg-primary);\n border: 1.5px solid var(--mf-border);\n border-radius: var(--mf-radius-md);\n cursor: pointer;\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-checkbox-container:hover,\n.magicfeedback-radio-container:hover {\n background-color: var(--mf-bg-hover);\n border-color: var(--mf-primary);\n}\n\n.magicfeedback-checkbox-container:has(input:checked),\n.magicfeedback-radio-container:has(input:checked) {\n background-color: var(--mf-primary-light);\n border-color: var(--mf-primary);\n}\n\n.magicfeedback-checkbox input[type=\"checkbox\"],\n.magicfeedback-radio-container input[type=\"radio\"] {\n width: 18px;\n height: 18px;\n margin: 0;\n cursor: pointer;\n flex-shrink: 0;\n accent-color: var(--mf-primary);\n}\n\n.magicfeedback-checkbox label,\n.magicfeedback-radio-container label {\n font-size: var(--mf-font-size-base);\n text-align: left;\n color: var(--mf-text-primary);\n cursor: pointer;\n margin: 0;\n flex: 1;\n}\n\n/* ========================================\n BOOLEAN OPTIONS\n ======================================== */\n.magicfeedback-boolean-container {\n display: flex;\n gap: var(--mf-space-md);\n width: 100%;\n}\n\n.magicfeedback-boolean-option {\n flex: 1;\n position: relative;\n}\n\n.magicfeedback-boolean-option input[type=\"radio\"] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.magicfeedback-boolean-option label {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--mf-space-md);\n font-size: var(--mf-font-size-base);\n font-weight: 500;\n color: var(--mf-text-secondary);\n background-color: var(--mf-bg-primary);\n border: 1.5px solid var(--mf-border);\n border-radius: var(--mf-radius-md);\n cursor: pointer;\n transition: var(--mf-transition-fast);\n margin: 0;\n}\n\n.magicfeedback-boolean-option label:hover {\n background-color: var(--mf-bg-hover);\n border-color: var(--mf-primary);\n}\n\n.magicfeedback-boolean-option input[type=\"radio\"]:checked + label {\n color: var(--mf-primary);\n background-color: var(--mf-primary-light);\n border-color: var(--mf-primary);\n font-weight: 600;\n}\n\n/* ========================================\n RATING SYSTEMS\n ======================================== */\n.magicfeedback-rating,\n.magicfeedback-rating-number,\n.magicfeedback-rating-star {\n width: 100%;\n}\n\n.magicfeedback-rating-container,\n.magicfeedback-rating-number-container,\n.magicfeedback-rating-star-container {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mf-space-sm);\n justify-content: center;\n align-items: center;\n padding: var(--mf-space-md) 0;\n list-style: none;\n margin: 0;\n}\n\n.magicfeedback-rating-placeholder,\n.magicfeedback-rating-placeholder-value,\n.magicfeedback-rating-number-top-placeholder,\n.magicfeedback-rating-number-bottom-placeholder {\n width: 100%;\n text-align: center;\n font-size: var(--mf-font-size-sm);\n color: var(--mf-text-secondary);\n margin: var(--mf-space-sm) 0;\n}\n\n/* Rating with Images */\n.magicfeedback-rating-option-label-container input[type=\"radio\"] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.magicfeedback-rating-option-label-container img {\n width: 56px;\n height: 56px;\n cursor: pointer;\n transition: var(--mf-transition-fast);\n border-radius: var(--mf-radius-full);\n border: 2px solid transparent;\n}\n\n.magicfeedback-rating-option-label-container img:hover {\n transform: scale(1.1);\n border-color: var(--mf-primary);\n}\n\n.magicfeedback-rating-option-label-container input[type=\"radio\"]:checked + img {\n border-color: var(--mf-primary);\n box-shadow: 0 0 0 3px var(--mf-primary-light);\n}\n\n.magicfeedback-rating-option-label-container label {\n display: block;\n text-align: center;\n font-size: var(--mf-font-size-sm);\n color: var(--mf-text-secondary);\n margin-top: var(--mf-space-xs);\n cursor: pointer;\n}\n\n/* Rating Numbers */\n.magicfeedback-rating-number-option {\n flex: 1;\n min-width: 60px;\n}\n\n.magicfeedback-rating-number-option-label-container {\n position: relative;\n}\n\n.magicfeedback-rating-number-option-label-container input[type=\"radio\"] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.magicfeedback-rating-number-option-label-container label {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 48px;\n padding: var(--mf-space-sm);\n font-size: var(--mf-font-size-base);\n font-weight: 500;\n color: var(--mf-text-secondary);\n background-color: var(--mf-bg-primary);\n border: 1.5px solid var(--mf-border);\n border-radius: var(--mf-radius-md);\n cursor: pointer;\n transition: var(--mf-transition-fast);\n margin: 0;\n}\n\n.magicfeedback-rating-number-option-label-container label:hover {\n background-color: var(--mf-bg-hover);\n border-color: var(--mf-primary);\n transform: translateY(-2px);\n box-shadow: var(--mf-shadow-sm);\n}\n\n.magicfeedback-rating-number-option-label-container input[type=\"radio\"]:checked + label {\n color: var(--mf-primary);\n background-color: var(--mf-primary-light);\n border-color: var(--mf-primary);\n font-weight: 600;\n}\n\n/* Star Rating */\n.magicfeedback-rating-star-container {\n justify-content: center;\n}\n\n.magicfeedback-rating-star-option:not(:checked) > .rating__star {\n font-size: 40px;\n color: var(--mf-border);\n cursor: pointer;\n margin: 0 var(--mf-space-xs);\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-rating-star-option:not(:checked) > .rating__star:hover,\n.magicfeedback-rating-star-option:not(:checked) > .rating__star:hover ~ span {\n color: #fbbf24;\n transform: scale(1.1);\n}\n\n.magicfeedback-rating-star-selected {\n color: #fbbf24 !important;\n}\n\n/* ========================================\n MULTIPLE CHOICE WITH IMAGES\n ======================================== */\n.magicfeedback-multiple-choice-image-option {\n display: flex;\n border-radius: var(--mf-radius-md);\n overflow: hidden;\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-image-option-label-container {\n cursor: pointer;\n border-radius: var(--mf-radius-md);\n overflow: hidden;\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-image-option-label-container input[type=\"radio\"],\n.magicfeedback-image-option-label-container input[type=\"checkbox\"] {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.magicfeedback-image-option-label-container img {\n width: 100%;\n height: auto;\n display: block;\n border: 2px solid var(--mf-border);\n border-radius: var(--mf-radius-md);\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-image-option-label-container:hover img {\n border-color: var(--mf-primary);\n box-shadow: var(--mf-shadow-md);\n}\n\n.magicfeedback-image-option-label-container input:checked + img {\n border-color: var(--mf-primary);\n box-shadow: 0 0 0 3px var(--mf-primary-light);\n}\n\n/* ========================================\n MATRIX QUESTIONS\n ======================================== */\n.magicfeedback-multi-question-matrix-container {\n width: 100%;\n overflow-x: auto;\n border-radius: var(--mf-radius-md);\n}\n\n.magicfeedback-multi-question-matrix-table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 var(--mf-space-xs);\n}\n\n.magicfeedback-multi-question-matrix-table th {\n padding: var(--mf-space-md);\n text-align: center;\n font-size: var(--mf-font-size-sm);\n font-weight: 500;\n color: var(--mf-text-secondary);\n}\n\n.magicfeedback-multi-question-matrix-row-tr {\n background-color: var(--mf-bg-primary);\n border-radius: var(--mf-radius-md);\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-multi-question-matrix-row-tr:nth-child(even) {\n background-color: var(--mf-bg-secondary);\n}\n\n.magicfeedback-multi-question-matrix-row-tr:hover {\n background-color: var(--mf-bg-hover);\n box-shadow: var(--mf-shadow-sm);\n}\n\n.magicfeedback-multi-question-matrix-table td {\n padding: var(--mf-space-md);\n text-align: center;\n}\n\n.magicfeedback-multi-question-matrix-row-label {\n text-align: left;\n font-size: var(--mf-font-size-base);\n color: var(--mf-text-primary);\n}\n\n.magicfeedback-multi-question-matrix-table input[type=\"radio\"] {\n width: 20px;\n height: 20px;\n cursor: pointer;\n accent-color: var(--mf-primary);\n}\n\n/* ========================================\n PRIORITY LIST\n ======================================== */\n.magicfeedback-priority-list-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--mf-space-md);\n margin: var(--mf-space-sm) 0;\n background-color: var(--mf-bg-primary);\n border: 1.5px solid var(--mf-border);\n border-radius: var(--mf-radius-md);\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-priority-list-item:hover {\n box-shadow: var(--mf-shadow-sm);\n border-color: var(--mf-primary);\n}\n\n.magicfeedback-priority-list-item-label {\n flex: 1;\n font-size: var(--mf-font-size-base);\n text-align: left;\n color: var(--mf-text-primary);\n margin: 0;\n}\n\n.magicfeedback-priority-list-arrow-up,\n.magicfeedback-priority-list-arrow-down {\n padding: var(--mf-space-xs);\n font-size: var(--mf-font-size-lg);\n color: var(--mf-text-secondary);\n cursor: pointer;\n transition: var(--mf-transition-fast);\n user-select: none;\n}\n\n.magicfeedback-priority-list-arrow-up:hover,\n.magicfeedback-priority-list-arrow-down:hover {\n color: var(--mf-primary);\n transform: scale(1.2);\n}\n\n/* ========================================\n POINT SYSTEM\n ======================================== */\n.magicfeedback-point-system-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--mf-space-md);\n margin: var(--mf-space-sm) 0;\n background-color: var(--mf-bg-primary);\n border: 1.5px solid var(--mf-border);\n border-radius: var(--mf-radius-md);\n min-height: 60px;\n}\n\n.magicfeedback-point-system-item label {\n flex: 1;\n font-size: var(--mf-font-size-base);\n color: var(--mf-text-primary);\n margin: 0;\n}\n\n.magicfeedback-point-system-input-container {\n display: flex;\n align-items: center;\n gap: var(--mf-space-sm);\n}\n\n.magicfeedback-point-system-item input {\n width: 80px;\n min-width: 80px;\n padding: var(--mf-space-sm);\n text-align: center;\n font-size: var(--mf-font-size-base);\n border: 1.5px solid var(--mf-border);\n border-radius: var(--mf-radius-md);\n margin: 0;\n}\n\n.magicfeedback-point-system-total {\n display: flex;\n justify-content: flex-end;\n margin-top: var(--mf-space-md);\n font-size: var(--mf-font-size-base);\n font-weight: 600;\n color: var(--mf-text-primary);\n}\n\n/* ========================================\n CONSENT\n ======================================== */\n.magicfeedback-consent-container {\n display: flex;\n align-items: flex-start;\n gap: var(--mf-space-sm);\n padding: var(--mf-space-md);\n background-color: var(--mf-bg-secondary);\n border-radius: var(--mf-radius-md);\n margin: var(--mf-space-md) 0;\n}\n\n.magicfeedback-consent-container input[type=\"checkbox\"] {\n margin-top: 2px;\n flex-shrink: 0;\n accent-color: var(--mf-primary);\n}\n\n.magicfeedback-consent-container label {\n flex: 1;\n font-size: var(--mf-font-size-sm);\n text-align: left;\n color: var(--mf-text-secondary);\n line-height: var(--mf-line-height);\n cursor: pointer;\n}\n\n/* ========================================\n ACTION BUTTONS\n ======================================== */\n.magicfeedback-action-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mf-space-md);\n margin-top: var(--mf-space-xl);\n padding-top: var(--mf-space-lg);\n border-top: 1px solid var(--mf-border);\n}\n\n.magicfeedback-submit {\n padding: var(--mf-space-sm) var(--mf-space-xl);\n font-size: var(--mf-font-size-base);\n font-weight: 500;\n color: white;\n background-color: var(--mf-primary);\n border: none;\n border-radius: var(--mf-radius-md);\n cursor: pointer;\n transition: var(--mf-transition-fast);\n box-shadow: var(--mf-shadow-sm);\n}\n\n.magicfeedback-submit:hover {\n background-color: var(--mf-primary-hover);\n box-shadow: var(--mf-shadow-md);\n transform: translateY(-1px);\n}\n\n.magicfeedback-submit:active {\n transform: translateY(0);\n box-shadow: var(--mf-shadow-sm);\n}\n\n.magicfeedback-submit:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n}\n\n.magicfeedback-back {\n padding: var(--mf-space-sm) var(--mf-space-md);\n font-size: var(--mf-font-size-base);\n font-weight: 500;\n color: var(--mf-text-secondary);\n background-color: transparent;\n border: none;\n cursor: pointer;\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-back:hover {\n color: var(--mf-primary);\n}\n\n/* ========================================\n SKIP & COUNTER\n ======================================== */\n.magicfeedback-skip-container {\n display: flex;\n align-items: center;\n gap: var(--mf-space-xs);\n padding: 0;\n margin: 0;\n font-size: var(--mf-font-size-sm);\n color: var(--mf-text-muted);\n background: transparent;\n border: none;\n cursor: pointer;\n transition: var(--mf-transition-fast);\n}\n\n.magicfeedback-skip-container:hover {\n color: var(--mf-primary);\n}\n\n.magicfeedback-skip-container input[type=\"checkbox\"] {\n margin: 0;\n cursor: pointer;\n accent-color: var(--mf-primary);\n}\n\n.magicfeedback-counter {\n display: flex;\n justify-content: flex-end;\n margin-top: var(--mf-space-md);\n font-size: var(--mf-font-size-sm);\n color: var(--mf-text-muted);\n}\n\n/* ========================================\n RESPONSIVE DESIGN\n ======================================== */\n@media (max-width: 768px) {\n :root {\n --mf-space-lg: 1.25rem;\n --mf-space-xl: 1.5rem;\n }\n\n .magicfeedback-label {\n font-size: var(--mf-font-size-base);\n }\n\n .magicfeedback-boolean-container {\n flex-direction: column;\n }\n\n .magicfeedback-rating-number-container {\n justify-content: flex-start;\n }\n\n .magicfeedback-rating-number-option {\n min-width: calc(20% - var(--mf-space-sm));\n }\n\n .magicfeedback-action-container {\n flex-direction: column-reverse;\n }\n\n .magicfeedback-submit,\n .magicfeedback-back {\n width: 100%;\n text-align: center;\n }\n}\n\n/* ========================================\n ACCESSIBILITY\n ======================================== */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n/* Focus visible for keyboard navigation */\n*:focus-visible {\n outline: 2px solid var(--mf-primary);\n outline-offset: 2px;\n}\n\n/* ========================================\n UTILITY CLASSES\n ======================================== */\n.magicfeedback-visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}"],"mappings":"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","names":[]}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for initializing the DeepdotsPopups SDK
|
|
3
|
+
*/
|
|
4
|
+
interface DeepdotsInitParams {
|
|
5
|
+
/** API key for authentication */
|
|
6
|
+
apiKey?: string;
|
|
7
|
+
/** Node environment: 'development' or 'production' */
|
|
8
|
+
nodeEnv?: 'development' | 'production';
|
|
9
|
+
/** Execution mode: 'server' or 'client' */
|
|
10
|
+
mode?: 'server' | 'client';
|
|
11
|
+
/** Enable debug logging */
|
|
12
|
+
debug?: boolean;
|
|
13
|
+
/** Lista de definiciones de popups precargadas */
|
|
14
|
+
popups?: PopupDefinition[];
|
|
15
|
+
}
|
|
16
|
+
interface DeepdotsConfig {
|
|
17
|
+
/** API key for authentication */
|
|
18
|
+
apiKey?: string;
|
|
19
|
+
/** Base url to contact with the api */
|
|
20
|
+
baseUrl?: string;
|
|
21
|
+
/** Execution mode: 'server' or 'client' */
|
|
22
|
+
mode?: 'server' | 'client';
|
|
23
|
+
/** Enable debug logging */
|
|
24
|
+
debug?: boolean;
|
|
25
|
+
/** Lista de definiciones de popups precargadas */
|
|
26
|
+
popups?: PopupDefinition[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Options for configuring survey triggers
|
|
30
|
+
*/
|
|
31
|
+
interface TriggerConfig {
|
|
32
|
+
/** Trigger type: 'time' (delay), 'scroll' (scroll percentage), 'exit' (exit intent) */
|
|
33
|
+
type: 'time' | 'scroll' | 'exit';
|
|
34
|
+
/** Value for the trigger (milliseconds for time, percentage for scroll) */
|
|
35
|
+
value?: number;
|
|
36
|
+
/** Survey ID to show when triggered */
|
|
37
|
+
surveyId: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Options for showing a popup
|
|
41
|
+
*/
|
|
42
|
+
interface ShowOptions {
|
|
43
|
+
/** Survey ID to display */
|
|
44
|
+
surveyId: string;
|
|
45
|
+
/** Product ID associated with the survey */
|
|
46
|
+
productId: string;
|
|
47
|
+
/** Additional data to pass with the survey */
|
|
48
|
+
data?: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Event types emitted by the SDK
|
|
52
|
+
*/
|
|
53
|
+
type DeepdotsEventType = 'popup_shown' | 'popup_clicked' | 'survey_completed';
|
|
54
|
+
/**
|
|
55
|
+
* Event payload structure
|
|
56
|
+
*/
|
|
57
|
+
interface DeepdotsEvent {
|
|
58
|
+
type: DeepdotsEventType;
|
|
59
|
+
surveyId: string;
|
|
60
|
+
timestamp: number;
|
|
61
|
+
data?: Record<string, unknown>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Event listener callback
|
|
65
|
+
*/
|
|
66
|
+
type EventListener = (event: DeepdotsEvent) => void;
|
|
67
|
+
/** Tipo de trigger específico para definiciones de popup remotas */
|
|
68
|
+
type PopupTriggerType = 'time_on_page' | 'scroll' | 'exit';
|
|
69
|
+
/** Condición adicional para la activación del popup */
|
|
70
|
+
interface PopupTriggerCondition {
|
|
71
|
+
answered: boolean;
|
|
72
|
+
cooldownDays: number;
|
|
73
|
+
}
|
|
74
|
+
/** Trigger asociado a la definición del popup */
|
|
75
|
+
interface PopupTrigger {
|
|
76
|
+
type: PopupTriggerType;
|
|
77
|
+
value: number;
|
|
78
|
+
condition?: PopupTriggerCondition[];
|
|
79
|
+
}
|
|
80
|
+
/** Acción de aceptar (abrir encuesta) */
|
|
81
|
+
interface PopupActionAccept {
|
|
82
|
+
label: string;
|
|
83
|
+
surveyId: string;
|
|
84
|
+
}
|
|
85
|
+
/** Acción de declinar */
|
|
86
|
+
interface PopupActionDecline {
|
|
87
|
+
label: string;
|
|
88
|
+
cooldownDays?: number;
|
|
89
|
+
}
|
|
90
|
+
/** Conjunto de acciones disponibles en el popup */
|
|
91
|
+
interface PopupActions {
|
|
92
|
+
accept: PopupActionAccept;
|
|
93
|
+
decline: PopupActionDecline;
|
|
94
|
+
}
|
|
95
|
+
/** Estilos configurables del popup */
|
|
96
|
+
interface PopupStyle {
|
|
97
|
+
theme: 'light' | 'dark';
|
|
98
|
+
position: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | 'center';
|
|
99
|
+
imageUrl: string | null;
|
|
100
|
+
}
|
|
101
|
+
/** Segmentos o targeting para mostrar el popup */
|
|
102
|
+
interface PopupSegments {
|
|
103
|
+
lang?: string[];
|
|
104
|
+
path?: string[];
|
|
105
|
+
[key: string]: unknown;
|
|
106
|
+
}
|
|
107
|
+
/** Definición completa de un popup */
|
|
108
|
+
interface PopupDefinition {
|
|
109
|
+
id: string;
|
|
110
|
+
title: string;
|
|
111
|
+
message: string;
|
|
112
|
+
trigger: PopupTrigger;
|
|
113
|
+
actions: PopupActions;
|
|
114
|
+
surveyId: string;
|
|
115
|
+
productId: string;
|
|
116
|
+
style: PopupStyle;
|
|
117
|
+
segments?: PopupSegments;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
interface PopupRenderer {
|
|
121
|
+
/** Preparar recursos si aplica */
|
|
122
|
+
init?(): void;
|
|
123
|
+
/** Mostrar popup */
|
|
124
|
+
show(surveyId: string, productId: string, data: Record<string, unknown> | undefined, emit: (type: DeepdotsEventType, surveyId: string, data?: Record<string, unknown>) => void, onClose: () => void): void;
|
|
125
|
+
/** Ocultar popup */
|
|
126
|
+
hide(): void;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Main class for managing survey popups
|
|
131
|
+
*/
|
|
132
|
+
declare class DeepdotsPopups {
|
|
133
|
+
private config;
|
|
134
|
+
private listeners;
|
|
135
|
+
private triggers;
|
|
136
|
+
private initialized;
|
|
137
|
+
private renderer;
|
|
138
|
+
private popupContainer;
|
|
139
|
+
private popupDefinitions;
|
|
140
|
+
private popupsLoaded;
|
|
141
|
+
private pendingAutoLaunch;
|
|
142
|
+
private answeredSurveys;
|
|
143
|
+
private lastShown;
|
|
144
|
+
/** Initialize the SDK with configuration */
|
|
145
|
+
init(config: DeepdotsInitParams): void;
|
|
146
|
+
/** Enable auto-launch functionality with configured triggers */
|
|
147
|
+
autoLaunch(): void;
|
|
148
|
+
/** Inicia los triggers configurados */
|
|
149
|
+
private startTriggers;
|
|
150
|
+
/** Show a popup immediately (by surveyId) */
|
|
151
|
+
show(options: ShowOptions): void;
|
|
152
|
+
/** Mostrar popup por id de definición (usa surveyId interno) */
|
|
153
|
+
showByPopupId(popupId: string): void;
|
|
154
|
+
/** Configure triggers for auto-launching popups (manual) */
|
|
155
|
+
configureTriggers(triggers: TriggerConfig[]): void;
|
|
156
|
+
/** Deriva triggers desde las definiciones de popup */
|
|
157
|
+
private configureTriggersFromDefinitions;
|
|
158
|
+
/** Lógica para evaluar condiciones antes de mostrar una encuesta */
|
|
159
|
+
triggerSurvey(surveyId: string): void;
|
|
160
|
+
private shouldShow;
|
|
161
|
+
private evaluateCondition;
|
|
162
|
+
/** Marcar encuesta como contestada externamente */
|
|
163
|
+
markSurveyAnswered(surveyId: string): void;
|
|
164
|
+
/** Simula fetch al servidor para obtener popups */
|
|
165
|
+
private fetchPopupsFromServer;
|
|
166
|
+
/** Genera datos fake para pruebas en modo server */
|
|
167
|
+
private generateFakePopups;
|
|
168
|
+
/** Add an event listener */
|
|
169
|
+
on(eventType: DeepdotsEventType, listener: EventListener): void;
|
|
170
|
+
/** Remove an event listener */
|
|
171
|
+
off(eventType: DeepdotsEventType, listener: EventListener): void;
|
|
172
|
+
/** Setup popup container element */
|
|
173
|
+
private setupPopupContainer;
|
|
174
|
+
/** Render the popup UI */
|
|
175
|
+
private renderPopup;
|
|
176
|
+
/** Hide the popup */
|
|
177
|
+
private hidePopup;
|
|
178
|
+
/** Emit an event */
|
|
179
|
+
private emitEvent;
|
|
180
|
+
/** Log debug messages */
|
|
181
|
+
private log;
|
|
182
|
+
/** External debug method for triggers */
|
|
183
|
+
debug(...args: unknown[]): void;
|
|
184
|
+
/** Set a custom renderer */
|
|
185
|
+
setRenderer(renderer: PopupRenderer): void;
|
|
186
|
+
private isPopupDefinition;
|
|
187
|
+
private validatePopupDefinitions;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export { type DeepdotsConfig, type DeepdotsEvent, type DeepdotsEventType, DeepdotsPopups, type EventListener, type ShowOptions, type TriggerConfig };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for initializing the DeepdotsPopups SDK
|
|
3
|
+
*/
|
|
4
|
+
interface DeepdotsInitParams {
|
|
5
|
+
/** API key for authentication */
|
|
6
|
+
apiKey?: string;
|
|
7
|
+
/** Node environment: 'development' or 'production' */
|
|
8
|
+
nodeEnv?: 'development' | 'production';
|
|
9
|
+
/** Execution mode: 'server' or 'client' */
|
|
10
|
+
mode?: 'server' | 'client';
|
|
11
|
+
/** Enable debug logging */
|
|
12
|
+
debug?: boolean;
|
|
13
|
+
/** Lista de definiciones de popups precargadas */
|
|
14
|
+
popups?: PopupDefinition[];
|
|
15
|
+
}
|
|
16
|
+
interface DeepdotsConfig {
|
|
17
|
+
/** API key for authentication */
|
|
18
|
+
apiKey?: string;
|
|
19
|
+
/** Base url to contact with the api */
|
|
20
|
+
baseUrl?: string;
|
|
21
|
+
/** Execution mode: 'server' or 'client' */
|
|
22
|
+
mode?: 'server' | 'client';
|
|
23
|
+
/** Enable debug logging */
|
|
24
|
+
debug?: boolean;
|
|
25
|
+
/** Lista de definiciones de popups precargadas */
|
|
26
|
+
popups?: PopupDefinition[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Options for configuring survey triggers
|
|
30
|
+
*/
|
|
31
|
+
interface TriggerConfig {
|
|
32
|
+
/** Trigger type: 'time' (delay), 'scroll' (scroll percentage), 'exit' (exit intent) */
|
|
33
|
+
type: 'time' | 'scroll' | 'exit';
|
|
34
|
+
/** Value for the trigger (milliseconds for time, percentage for scroll) */
|
|
35
|
+
value?: number;
|
|
36
|
+
/** Survey ID to show when triggered */
|
|
37
|
+
surveyId: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Options for showing a popup
|
|
41
|
+
*/
|
|
42
|
+
interface ShowOptions {
|
|
43
|
+
/** Survey ID to display */
|
|
44
|
+
surveyId: string;
|
|
45
|
+
/** Product ID associated with the survey */
|
|
46
|
+
productId: string;
|
|
47
|
+
/** Additional data to pass with the survey */
|
|
48
|
+
data?: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Event types emitted by the SDK
|
|
52
|
+
*/
|
|
53
|
+
type DeepdotsEventType = 'popup_shown' | 'popup_clicked' | 'survey_completed';
|
|
54
|
+
/**
|
|
55
|
+
* Event payload structure
|
|
56
|
+
*/
|
|
57
|
+
interface DeepdotsEvent {
|
|
58
|
+
type: DeepdotsEventType;
|
|
59
|
+
surveyId: string;
|
|
60
|
+
timestamp: number;
|
|
61
|
+
data?: Record<string, unknown>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Event listener callback
|
|
65
|
+
*/
|
|
66
|
+
type EventListener = (event: DeepdotsEvent) => void;
|
|
67
|
+
/** Tipo de trigger específico para definiciones de popup remotas */
|
|
68
|
+
type PopupTriggerType = 'time_on_page' | 'scroll' | 'exit';
|
|
69
|
+
/** Condición adicional para la activación del popup */
|
|
70
|
+
interface PopupTriggerCondition {
|
|
71
|
+
answered: boolean;
|
|
72
|
+
cooldownDays: number;
|
|
73
|
+
}
|
|
74
|
+
/** Trigger asociado a la definición del popup */
|
|
75
|
+
interface PopupTrigger {
|
|
76
|
+
type: PopupTriggerType;
|
|
77
|
+
value: number;
|
|
78
|
+
condition?: PopupTriggerCondition[];
|
|
79
|
+
}
|
|
80
|
+
/** Acción de aceptar (abrir encuesta) */
|
|
81
|
+
interface PopupActionAccept {
|
|
82
|
+
label: string;
|
|
83
|
+
surveyId: string;
|
|
84
|
+
}
|
|
85
|
+
/** Acción de declinar */
|
|
86
|
+
interface PopupActionDecline {
|
|
87
|
+
label: string;
|
|
88
|
+
cooldownDays?: number;
|
|
89
|
+
}
|
|
90
|
+
/** Conjunto de acciones disponibles en el popup */
|
|
91
|
+
interface PopupActions {
|
|
92
|
+
accept: PopupActionAccept;
|
|
93
|
+
decline: PopupActionDecline;
|
|
94
|
+
}
|
|
95
|
+
/** Estilos configurables del popup */
|
|
96
|
+
interface PopupStyle {
|
|
97
|
+
theme: 'light' | 'dark';
|
|
98
|
+
position: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | 'center';
|
|
99
|
+
imageUrl: string | null;
|
|
100
|
+
}
|
|
101
|
+
/** Segmentos o targeting para mostrar el popup */
|
|
102
|
+
interface PopupSegments {
|
|
103
|
+
lang?: string[];
|
|
104
|
+
path?: string[];
|
|
105
|
+
[key: string]: unknown;
|
|
106
|
+
}
|
|
107
|
+
/** Definición completa de un popup */
|
|
108
|
+
interface PopupDefinition {
|
|
109
|
+
id: string;
|
|
110
|
+
title: string;
|
|
111
|
+
message: string;
|
|
112
|
+
trigger: PopupTrigger;
|
|
113
|
+
actions: PopupActions;
|
|
114
|
+
surveyId: string;
|
|
115
|
+
productId: string;
|
|
116
|
+
style: PopupStyle;
|
|
117
|
+
segments?: PopupSegments;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
interface PopupRenderer {
|
|
121
|
+
/** Preparar recursos si aplica */
|
|
122
|
+
init?(): void;
|
|
123
|
+
/** Mostrar popup */
|
|
124
|
+
show(surveyId: string, productId: string, data: Record<string, unknown> | undefined, emit: (type: DeepdotsEventType, surveyId: string, data?: Record<string, unknown>) => void, onClose: () => void): void;
|
|
125
|
+
/** Ocultar popup */
|
|
126
|
+
hide(): void;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Main class for managing survey popups
|
|
131
|
+
*/
|
|
132
|
+
declare class DeepdotsPopups {
|
|
133
|
+
private config;
|
|
134
|
+
private listeners;
|
|
135
|
+
private triggers;
|
|
136
|
+
private initialized;
|
|
137
|
+
private renderer;
|
|
138
|
+
private popupContainer;
|
|
139
|
+
private popupDefinitions;
|
|
140
|
+
private popupsLoaded;
|
|
141
|
+
private pendingAutoLaunch;
|
|
142
|
+
private answeredSurveys;
|
|
143
|
+
private lastShown;
|
|
144
|
+
/** Initialize the SDK with configuration */
|
|
145
|
+
init(config: DeepdotsInitParams): void;
|
|
146
|
+
/** Enable auto-launch functionality with configured triggers */
|
|
147
|
+
autoLaunch(): void;
|
|
148
|
+
/** Inicia los triggers configurados */
|
|
149
|
+
private startTriggers;
|
|
150
|
+
/** Show a popup immediately (by surveyId) */
|
|
151
|
+
show(options: ShowOptions): void;
|
|
152
|
+
/** Mostrar popup por id de definición (usa surveyId interno) */
|
|
153
|
+
showByPopupId(popupId: string): void;
|
|
154
|
+
/** Configure triggers for auto-launching popups (manual) */
|
|
155
|
+
configureTriggers(triggers: TriggerConfig[]): void;
|
|
156
|
+
/** Deriva triggers desde las definiciones de popup */
|
|
157
|
+
private configureTriggersFromDefinitions;
|
|
158
|
+
/** Lógica para evaluar condiciones antes de mostrar una encuesta */
|
|
159
|
+
triggerSurvey(surveyId: string): void;
|
|
160
|
+
private shouldShow;
|
|
161
|
+
private evaluateCondition;
|
|
162
|
+
/** Marcar encuesta como contestada externamente */
|
|
163
|
+
markSurveyAnswered(surveyId: string): void;
|
|
164
|
+
/** Simula fetch al servidor para obtener popups */
|
|
165
|
+
private fetchPopupsFromServer;
|
|
166
|
+
/** Genera datos fake para pruebas en modo server */
|
|
167
|
+
private generateFakePopups;
|
|
168
|
+
/** Add an event listener */
|
|
169
|
+
on(eventType: DeepdotsEventType, listener: EventListener): void;
|
|
170
|
+
/** Remove an event listener */
|
|
171
|
+
off(eventType: DeepdotsEventType, listener: EventListener): void;
|
|
172
|
+
/** Setup popup container element */
|
|
173
|
+
private setupPopupContainer;
|
|
174
|
+
/** Render the popup UI */
|
|
175
|
+
private renderPopup;
|
|
176
|
+
/** Hide the popup */
|
|
177
|
+
private hidePopup;
|
|
178
|
+
/** Emit an event */
|
|
179
|
+
private emitEvent;
|
|
180
|
+
/** Log debug messages */
|
|
181
|
+
private log;
|
|
182
|
+
/** External debug method for triggers */
|
|
183
|
+
debug(...args: unknown[]): void;
|
|
184
|
+
/** Set a custom renderer */
|
|
185
|
+
setRenderer(renderer: PopupRenderer): void;
|
|
186
|
+
private isPopupDefinition;
|
|
187
|
+
private validatePopupDefinitions;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export { type DeepdotsConfig, type DeepdotsEvent, type DeepdotsEventType, DeepdotsPopups, type EventListener, type ShowOptions, type TriggerConfig };
|