@khipu/design-system 0.2.0-alpha.99 → 0.3.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/dist/beercss/arch.svg +1 -0
- package/dist/beercss/arrow.svg +1 -0
- package/dist/beercss/boom.svg +1 -0
- package/dist/beercss/bun.svg +1 -0
- package/dist/beercss/burst.svg +1 -0
- package/dist/beercss/circle.svg +1 -0
- package/dist/beercss/clamshell.svg +1 -0
- package/dist/beercss/diamond.svg +1 -0
- package/dist/beercss/fan.svg +1 -0
- package/dist/beercss/flower.svg +1 -0
- package/dist/beercss/gem.svg +1 -0
- package/dist/beercss/ghost-ish.svg +1 -0
- package/dist/beercss/heart.svg +1 -0
- package/dist/beercss/khipu-beercss.css +868 -98
- package/dist/beercss/khipu-beercss.js +75 -0
- package/dist/beercss/khipu-beercss.min.css +1 -1
- package/dist/beercss/khipu-beercss.min.js +1 -1
- package/dist/beercss/khipu-beercss.scoped.css +868 -98
- package/dist/beercss/khipu-beercss.scoped.min.css +1 -1
- package/dist/beercss/leaf-clover4.svg +1 -0
- package/dist/beercss/leaf-clover8.svg +1 -0
- package/dist/beercss/loading-indicator.svg +1 -0
- package/dist/beercss/material-symbols-outlined.woff2 +0 -0
- package/dist/beercss/material-symbols-rounded.woff2 +0 -0
- package/dist/beercss/material-symbols-sharp.woff2 +0 -0
- package/dist/beercss/material-symbols-subset.woff2 +0 -0
- package/dist/beercss/metadata.json +5 -5
- package/dist/beercss/oval.svg +1 -0
- package/dist/beercss/pentagon.svg +1 -0
- package/dist/beercss/pill.svg +1 -0
- package/dist/beercss/pixel-circle.svg +1 -0
- package/dist/beercss/pixel-triangle.svg +1 -0
- package/dist/beercss/puffy-diamond.svg +1 -0
- package/dist/beercss/puffy.svg +1 -0
- package/dist/beercss/semicircle.svg +1 -0
- package/dist/beercss/sided-cookie12.svg +1 -0
- package/dist/beercss/sided-cookie4.svg +1 -0
- package/dist/beercss/sided-cookie6.svg +1 -0
- package/dist/beercss/sided-cookie7.svg +1 -0
- package/dist/beercss/sided-cookie9.svg +1 -0
- package/dist/beercss/slanted.svg +1 -0
- package/dist/beercss/soft-boom.svg +1 -0
- package/dist/beercss/soft-burst.svg +1 -0
- package/dist/beercss/square.svg +1 -0
- package/dist/beercss/sunny.svg +1 -0
- package/dist/beercss/triangle.svg +1 -0
- package/dist/beercss/very-sunny.svg +1 -0
- package/dist/beercss/wavy-circle.svg +1 -0
- package/dist/beercss/wavy.svg +1 -0
- package/dist/index.d.mts +128 -6
- package/dist/index.d.ts +128 -6
- package/dist/index.js +394 -156
- package/dist/index.mjs +373 -146
- package/package.json +3 -2
|
@@ -894,10 +894,85 @@ const ui = _context.ui;
|
|
|
894
894
|
initStickyInvoice();
|
|
895
895
|
initHideOnScroll();
|
|
896
896
|
initBankModal();
|
|
897
|
+
initMerchantLogoBackdrop();
|
|
897
898
|
|
|
898
899
|
console.log('Material Design initialization complete!');
|
|
899
900
|
}
|
|
900
901
|
|
|
902
|
+
/**
|
|
903
|
+
* Initialize merchant logo backdrop (KTUF-204)
|
|
904
|
+
* Los logos de comercio van sobre el fondo neutro, no sobre el color de marca (los PNG
|
|
905
|
+
* con transparencia se ahogan contra su propio color). La luminancia decide entre los
|
|
906
|
+
* dos neutros: paper para logos oscuros, gray-800 para logos claros. Espejo vanilla de
|
|
907
|
+
* KdsInvoiceMerchant/logoLuminance.ts para las vistas server-side (payment).
|
|
908
|
+
* @param {Element} root - Root element to scope the query (default: document)
|
|
909
|
+
*/
|
|
910
|
+
function initMerchantLogoBackdrop(root) {
|
|
911
|
+
root = root || document;
|
|
912
|
+
var LIGHT_LOGO_LUMINANCE_THRESHOLD = 0.72;
|
|
913
|
+
var SAMPLE_SIZE = 16;
|
|
914
|
+
var ALPHA_THRESHOLD = 128;
|
|
915
|
+
var MIN_OPAQUE_RATIO = 0.02;
|
|
916
|
+
|
|
917
|
+
root.querySelectorAll('.kds-invoice-merchant').forEach(function(tile) {
|
|
918
|
+
var img = tile.querySelector('img');
|
|
919
|
+
if (!img) return;
|
|
920
|
+
|
|
921
|
+
/* Con logo: fondo neutro; el color de marca queda solo para el fallback. */
|
|
922
|
+
var brandBackground = tile.style.background;
|
|
923
|
+
tile.style.background = '';
|
|
924
|
+
tile.classList.add('kds-invoice-merchant-neutral');
|
|
925
|
+
|
|
926
|
+
/* Si el logo falla (el onerror server-side lo reemplaza por el ícono),
|
|
927
|
+
restaurar el tile de color de marca. */
|
|
928
|
+
img.addEventListener('error', function() {
|
|
929
|
+
tile.classList.remove('kds-invoice-merchant-neutral', 'dark');
|
|
930
|
+
tile.style.background = brandBackground;
|
|
931
|
+
});
|
|
932
|
+
|
|
933
|
+
measureLogoLuminance(img.getAttribute('src'), function(luminance) {
|
|
934
|
+
if (luminance != null && luminance > LIGHT_LOGO_LUMINANCE_THRESHOLD &&
|
|
935
|
+
tile.classList.contains('kds-invoice-merchant-neutral')) {
|
|
936
|
+
tile.classList.add('dark');
|
|
937
|
+
}
|
|
938
|
+
});
|
|
939
|
+
});
|
|
940
|
+
|
|
941
|
+
function measureLogoLuminance(url, callback) {
|
|
942
|
+
if (!url) { callback(null); return; }
|
|
943
|
+
var probe = new Image();
|
|
944
|
+
probe.crossOrigin = 'anonymous';
|
|
945
|
+
probe.onload = function() {
|
|
946
|
+
try {
|
|
947
|
+
var canvas = document.createElement('canvas');
|
|
948
|
+
canvas.width = SAMPLE_SIZE;
|
|
949
|
+
canvas.height = SAMPLE_SIZE;
|
|
950
|
+
var context = canvas.getContext('2d');
|
|
951
|
+
if (!context) { callback(null); return; }
|
|
952
|
+
context.drawImage(probe, 0, 0, SAMPLE_SIZE, SAMPLE_SIZE);
|
|
953
|
+
var data = context.getImageData(0, 0, SAMPLE_SIZE, SAMPLE_SIZE).data;
|
|
954
|
+
var sum = 0;
|
|
955
|
+
var opaquePixels = 0;
|
|
956
|
+
for (var i = 0; i < data.length; i += 4) {
|
|
957
|
+
if (data[i + 3] < ALPHA_THRESHOLD) continue;
|
|
958
|
+
sum += (0.2126 * data[i] + 0.7152 * data[i + 1] + 0.0722 * data[i + 2]) / 255;
|
|
959
|
+
opaquePixels++;
|
|
960
|
+
}
|
|
961
|
+
if (opaquePixels < SAMPLE_SIZE * SAMPLE_SIZE * MIN_OPAQUE_RATIO) {
|
|
962
|
+
callback(null);
|
|
963
|
+
return;
|
|
964
|
+
}
|
|
965
|
+
callback(sum / opaquePixels);
|
|
966
|
+
} catch (e) {
|
|
967
|
+
/* canvas tainted: el origen no permite CORS — no medible */
|
|
968
|
+
callback(null);
|
|
969
|
+
}
|
|
970
|
+
};
|
|
971
|
+
probe.onerror = function() { callback(null); };
|
|
972
|
+
probe.src = url;
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
|
|
901
976
|
/**
|
|
902
977
|
* Initialize sidenav for mobile navigation
|
|
903
978
|
*/
|