{
  "schemaVersion": "1.0.0",
  "componentId": "024",
  "packageVersion": "1.0.319",
  "runtime": {
    "name": "BoneCalendar",
    "version": "1.0.97"
  },
  "htmlFunctionalClass": "bf-calendar",
  "htmlFunctionalClassBridgeVersion": "1.0.16",
  "dependencies": [
    {
      "componentId": "029",
      "name": "BoneNumberBox",
      "mode": "installed-required-for-voucher-entry",
      "overwrite": false
    },
    {
      "componentId": "048",
      "name": "BoneTable",
      "mode": "installed-required-for-editable-voucher-tables",
      "overwrite": false
    },
    {
      "componentId": "001",
      "name": "BoneCore",
      "runtimeVersion": "1.0.0",
      "mode": "installed-required",
      "overwrite": false,
      "minimumRuntimeVersion": "1.0.0"
    },
    {
      "componentId": "002",
      "name": "BoneJoint",
      "runtimeVersion": "1.1.36",
      "mode": "installed-required",
      "overwrite": false,
      "minimumRuntimeVersion": "1.1.36"
    },
    {
      "componentId": "020",
      "name": "BoneLabel",
      "runtimeVersion": "1.0.62",
      "mode": "installed-required",
      "overwrite": false,
      "minimumRuntimeVersion": "1.0.62"
    },
    {
      "componentId": "022",
      "name": "BoneHoverBorderEffect",
      "runtimeVersion": "1.0.12",
      "mode": "installed-required",
      "overwrite": false,
      "minimumRuntimeVersion": "1.0.12"
    },
    {
      "componentId": "040",
      "name": "BoneColorPicker",
      "runtimeVersion": "1.0.23",
      "mode": "installed-required",
      "overwrite": false,
      "minimumRuntimeVersion": "1.0.18",
      "verifiedCanonicalPackage": "BoneFlow_040_ColorPicker_DOC_Integration_v1.0.50_Candidate.zip"
    },
    {
      "componentId": "118",
      "name": "BoneTransition",
      "runtimeVersion": "1.0.3",
      "bridgeVersion": "1.0.4",
      "className": "bf-transition",
      "mode": "installed-transitive-required",
      "via": "040",
      "overwrite": false,
      "minimumRuntimeVersion": "1.0.3",
      "minimumBridgeVersion": "1.0.4"
    },
    {
      "name": "Shared BoneDocGuide",
      "mode": "installed-required",
      "overwrite": false
    }
  ],
  "runtimeVersion": null,
  "voucherInput": {
    "tableHTMLClass": "bf-table",
    "numberHTMLClass": "bf-numberbox",
    "requiresInstalledClassFiles": [
      "js/bone-table-functional-class.js",
      "js/bone-numberbox-functional-class.js"
    ],
    "frozenComponentsModified": false
  },
  "voucherFrozen029Snapshot": {
    "scope": "#024 standalone popup only",
    "files": {
      "bone-numberbox.css": "43d783ad25fe075cad4616457b3d45517b3a5a75f3604450f74c6c55eddb9c92",
      "bone-numberbox.js": "1c35fbb552cb96e1512583810378efa6028beb9300b42a86e8394a9549efb8d0",
      "bone-numberbox-functional-class.js": "9c957448eba4a8e214abd3e38ead62849d7e30b09a9282d1d50698e9571537dc"
    },
    "canonicalFrozenModified": false
  },
  "productProvidersV275": {
    "ui": "sample/024/calendar/bone-product-providers.v275.js",
    "css": "sample/024/calendar/bone-product-providers.v275.css",
    "credentials": "volatile browser memory only; not persisted",
    "validation": "real HTTP 2xx plus provider JSON shape; fail closed on CORS/error",
    "remoteProxyIncluded": false,
    "userVoucherWrites": false
  },
  "productProvidersV277": {
    "ui": "sample/024/calendar/bone-product-providers.v277.js",
    "css": "sample/024/calendar/bone-product-providers.v275.css",
    "mode": "client Web API only; no PHP/server relay",
    "rakutenJSONP": "only after explicit user consent; key in URL",
    "credentials": "volatile memory only",
    "validated": "provider 2xx JSON shape or user-opt-in Rakuten JSONP; false on CORS and errors",
    "persistentUserDataChanges": false
  },
  "productProvidersV278": {
    "runtime": "sample/024/calendar/bone-product-providers.v278.js",
    "css": "sample/024/calendar/bone-product-providers.v278.css",
    "mode": "HTML+JavaScript no PHP, Yahoo official Web API tab/manual JSON fallback",
    "yahooId": "volatile JS memory only; separate configured and connection verified",
    "manualJson": "format checked; NOT cryptographic or credential verification",
    "persistedDBChanges": false
  },
  "productProvidersV280": {
    "runtime": "sample/024/calendar/bone-product-providers.v280.js",
    "css": "sample/024/calendar/bone-product-providers.v280.css",
    "mode": "JAN-first explicitly triggered no-key searches; OFF then UPCitemdb FREE, optional provider advanced",
    "yahooCORS": "not registered or verified when browser fails; manual diagnostics optional",
    "sqliteWrites": false,
    "php": false
  },
  "productProvidersV281": {
    "runtime": "sample/024/calendar/bone-product-providers.v281.js",
    "css": "sample/024/calendar/bone-product-providers.v281.css",
    "flow": "registered verified API -> same JAN search -> display product image -> no additional product photography when image loads",
    "security": "verified only upon real usable API response; keys volatile; no PHP",
    "sqliteWrites": false
  },
  "keyFreeProductSearchV282": {
    "janPhoto": "sample/024/calendar/bone-jan-photo.v282.js",
    "runtime": "sample/024/calendar/bone-product-providers.v282.js",
    "css": "sample/024/calendar/bone-product-providers.v282.css",
    "keysNeeded": false,
    "php": false,
    "existingDataModified": false
  },
  "mobileCalendarReportV283": {
    "selection": "inline flow instead of absolute",
    "actionButtons": "below selected day",
    "summaryOrder": "below timebar",
    "report": "collapsible",
    "mobileFit": "calendar date, timeline, income and expense; all columns toggle",
    "frozenAssetsModified": false
  },
  "mobileCalendarReportV284": {
    "timeline": "permanently outside accordion",
    "heading": "settings collapsible only",
    "responsiveMoney": "plain amount without #029 voucher grid <=680px",
    "selection": "stable inline slot before action row",
    "mobileReport": "actual DOM child of calendar column; no overlay",
    "frozenAssetsModified": false
  },
  "sqlitePanelModalV285": {
    "management": "modal for voucher and read-only screens; native existing modal for masters",
    "restore": "separate dialog without changing adapter",
    "responsive": "single full-width CSS grid for calendar/selection/timeline",
    "frozenChanged": false
  }
}
