gtag("consent", "update", ...){
"name": "CookieManager",
"view": "Default",
"section": "SectionFooter",
"settings": {
"daysEffective": 30,
"blocks": [
{
"title": "Sample title",
"content": "Sample content",
"toggle": {
"cookieCategory": "analytics",
"isEnabled": true,
"isReadOnly": false
}
},
...
],
"consentVersion": "Sample consent version",
"id": "Component Id",
"section": "SectionFooter",
"type": "NoirCookieManager",
"name": "CookieManager",
"configuredInContentApi": true,
"view": "Default",
"displayName": "",
"cssClass": ""
},
"translations": {
"cookieCardTitle": "Sample translation",
"cookieCardDescription": "Sample translation",
"cookieSettings": "Sample translation",
"...": "..."
}
}settings.idcomp-{{ id }}settings.daysEffective (number)settings.blocks[] (array)title (string)content (string, optional)toggle object with:cookieCategory (string, e.g. analytics, advertising)isEnabled (boolean)isReadOnly (boolean)settings.cssClass(UNDEFINED).settings.consentVersion (string)x-data='cookiemanagerdefault.initComponent(daysEffective, blocks, consentVersion, currentTab)'initComponent(...) returns Alpine state + actions for:servicesreusabledefault.setShopranosCookie(...)gtag("consent", "update", ...)servicesreusabledefault.setShopranosCookie(...), and Google Consent Mode update)._shopranos cookie and consent version.daysEffective) and returns it as a timestamp string.setShopranosCookie(...), updates Google consent, and hides the banner._shopranos cookie and returns the consent types as a dot-split array.required).gtag is not a function:console.error("gtag function not found.") and returnsad_user_data, ad_personalization, ad_storage, analytics_storage = "denied"analytics_storage if consent includes "analytics""advertising"gtag("consent", "update", consentState)gtag is missing.document.cookie on ; <name>=nulldecodeURIComponent(...) when needed.Alpine.store("toast").removeAll();
Alpine.store("toast").add(message, "ic-warning", "error", true);servicesreusabledefault.setShopranosCookie(value, expirationDate)/api/cookies) so consent is stored server-side as well.Alpine.store("toast")servicesreusabledefault.setShopranosCookie(...)gtag (optional; if missing, consent update logs an error)_shopranos using a dot-separated format:required.analytics.advertising.version-<consentVersion>consentVersion changes, the component forces the banner to show again (re-consent).gtag isn’t available, Google Consent Mode won’t update (the component will still persist consent).x-data='cookiemanagerdefault.initComponent(daysEffective, blocks, consentVersion, currentTab)'showCookieBanner controls whether the UI is visible.showCookiesDetails toggles between:inforequiredsettings.blocks[] where toggle.cookieCategory exists.