1(()=>{(function(){"use strict";var c="/api/feedback",t="skill_feedback_submitted";document.addEventListener("DOMContentLoaded",function(){d(),m(),p()});function d(){document.addEventListener("click",function(e){var t=e.target.closest(".btn-feedback");if(!t)return;e.preventDefault(),l(t)})}function l(e){var t=e.dataset.skillId,i=e.dataset.skillSlug,s=e.dataset.rating;if(!t||!s){console.error("[Feedback] Missing skill ID or rating");return}if(e.disabled)return;s==="down"?o(t,i,e):n(e,t,i,s,null)}function n(e,t,n,o,c){var h,l=e.closest(".feedback-buttons"),d=l?l.querySelectorAll(".btn-feedback"):[];d.forEach(function(e){e.disabled=!0}),h=Array.from(e.childNodes).map(function(e){return e.cloneNode(!0)}),i(e),r(t,n,o,c).then(function(n){if(n.success)u(t,o),s(e,l,o);else throw new Error(n.error&&n.error.message?n.error.message:"Failed to submit feedback")}).catch(function(t){console.error("[Feedback] Error:",t),a(e,h),d.forEach(function(e){e.disabled=!1}),f("Failed to submit feedback. Please try again.","error")})}function i(e){for(;e.firstChild;)e.removeChild(e.firstChild);var n,t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttribute("width","18"),t.setAttribute("height","18"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","2.5"),t.setAttribute("aria-hidden","true"),t.classList.add("spin"),n=document.createElementNS("http://www.w3.org/2000/svg","circle"),n.setAttribute("cx","12"),n.setAttribute("cy","12"),n.setAttribute("r","10"),n.setAttribute("stroke-dasharray","50"),n.setAttribute("stroke-dashoffset","20"),t.appendChild(n),e.appendChild(t),e.appendChild(document.createTextNode(" Sending..."))}function a(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);t.forEach(function(t){e.appendChild(t)})}function r(e,t,n,s){var o,i,a={"Content-Type":"application/json"};return typeof AuthModule!="undefined"&&AuthModule.getAccessToken&&(o=AuthModule.getAccessToken(),o&&(a.Authorization="Bearer "+o)),i={skill_id:e,skill_slug:t,rating:n},s&&(i.feedback_text=s),fetch(c,{method:"POST",headers:a,body:JSON.stringify(i)}).then(function(e){return e.json()})}function o(t,s,o){var i,a,r,c,l,d,u,h,m,f,p,g,v=document.getElementById("feedback-modal");v&&v.remove(),i=document.createElement("div"),i.id="feedback-modal",i.className="feedback-modal-backdrop",i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true"),i.setAttribute("aria-labelledby","feedback-modal-title"),c=document.createElement("div"),c.className="feedback-modal",d=document.createElement("div"),d.className="feedback-modal-header",p=document.createElement("h3"),p.id="feedback-modal-title",p.textContent="What went wrong?",d.appendChild(p),r=document.createElement("button"),r.className="feedback-modal-close",r.setAttribute("aria-label","Close modal"),r.textContent="\xD7",r.addEventListener("click",function(){e(i)}),d.appendChild(r),c.appendChild(d),l=document.createElement("div"),l.className="feedback-modal-body",g=document.createElement("p"),g.textContent="Help us improve this skill by sharing what issues you encountered.",l.appendChild(g),a=document.createElement("textarea"),a.id="feedback-text",a.
1className="feedback-textarea",a.setAttribute("placeholder","e.g., The prompt didn't work with Claude, it gave an error about..."),a.setAttribute("rows","4"),a.setAttribute("maxlength","1000"),l.appendChild(a),u=document.createElement("div"),u.className="feedback-char-count",u.textContent="0 / 1000",l.appendChild(u),a.addEventListener("input",function(){u.textContent=a.value.length+" / 1000"}),c.appendChild(l),h=document.createElement("div"),h.className="feedback-modal-footer",m=document.createElement("button"),m.className="btn btn-secondary feedback-cancel-btn",m.textContent="Cancel",m.addEventListener("click",function(){e(i)}),h.appendChild(m),f=document.createElement("button"),f.className="btn btn-primary feedback-submit-btn",f.textContent="Submit Feedback",f.addEventListener("click",function(){var r=a.value.trim();e(i),n(o,t,s,"down",r)}),h.appendChild(f),c.appendChild(h),i.appendChild(c),document.body.appendChild(i),setTimeout(function(){a.focus()},100),i.addEventListener("click",function(t){t.target===i&&e(i)}),document.addEventListener("keydown",function t(n){n.key==="Escape"&&(e(i),document.removeEventListener("keydown",t))}),requestAnimationFrame(function(){i.classList.add("feedback-modal-visible")})}function e(e){e.classList.remove("feedback-modal-visible"),setTimeout(function(){e.remove()},200)}function s(e,t,n){var s,o,i,a,r,c,l,d,h,m,f,p,u=t?t.closest(".skill-feedback"):null;if(u&&(m=n==="up",p=m?"Thanks for the feedback!":"Thanks! We'll look into it.",u.classList.add("feedback-submitted"),a=u.querySelector(".feedback-buttons"),a)){for(;a.firstChild;)a.removeChild(a.firstChild);c=document.createElement("div"),c.className="feedback-thank-you",s=document.createElementNS("http://www.w3.org/2000/svg","svg"),s.setAttribute("width","24"),s.setAttribute("height","24"),s.setAttribute("viewBox","0 0 24 24"),s.setAttribute("fill","none"),s.setAttribute("stroke","currentColor"),s.setAttribute("stroke-width","2"),s.setAttribute("aria-hidden","true"),m?(l=document.createElementNS("http://www.w3.org/2000/svg","path"),l.setAttribute("d","M22 11.08V12a10 10 0 1 1-5.93-9.14"),s.appendChild(l),d=document.createElementNS("http://www.w3.org/2000/svg","polyline"),d.setAttribute("points","22 4 12 14.01 9 11.01"),s.appendChild(d)):(r=document.createElementNS("http://www.w3.org/2000/svg","circle"),r.setAttribute("cx","12"),r.setAttribute("cy","12"),r.setAttribute("r","10"),s.appendChild(r),h=document.createElementNS("http://www.w3.org/2000/svg","path"),h.setAttribute("d","M8 15h8"),s.appendChild(h),i=document.createElementNS("http://www.w3.org/2000/svg","line"),i.setAttribute("x1","9"),i.setAttribute("y1","9"),i.setAttribute("x2","9.01"),i.setAttribute("y2","9"),s.appendChild(i),o=document.createElementNS("http://www.w3.org/2000/svg","line"),o.setAttribute("x1","15"),o.setAttribute("y1","9"),o.setAttribute("x2","15.01"),o.setAttribute("y2","9"),s.appendChild(o)),c.appendChild(s),f=document.createElement("span"),f.textContent=p,c.appendChild(f),a.appendChild(c)}}function u(e,n){try{var s=JSON.parse(localStorage.getItem(t)||"{}");s[e]={rating:n,timestamp:Date.now()},localStorage.setItem(t,JSON.stringify(s))}catch(e){console.warn("[Feedback] Could not save to localStorage:",e)}}function h(e){try{var n=JSON.parse(localStorage.getItem(t)||"{}");return n[e]||null}catch{return null}}function m(){var e=document.querySelectorAll(".btn-feedback");e.forEach(function(e){var t,o=e.dataset.skillId,n=h(o);n&&(t=e.closest(".feedback-buttons"),t&&s(e,t,n.rating))})}function f(e,t){if(t=t||"info",typeof window.showToast=="function"){window.showToast(e,t);return}var n=document.createElement("div");n.className="toast toast--"+t,n.textContent=e,n.style.position="fixed",n.style.bottom="20px",n.style.left="50%",n.style.transform="translateX(-50%)",n.style.padding="12px 24px",n.style.background=t==="error"?"var(--color-error, #ef4444)":"var(--color-success, #22c55e)",n.style.color="white",n.style.borderRadius="8px",n.style.fontSize="14px",n.style.zIndex="9999",n.style.boxShadow="0 4px 12px rgba(0, 0, 0, 0.15)",n.style.animation="feedbackSlideUp 0.3s ease-out",document.body.appendChild(n),setTimeout(function(){n.style.animation="fadeOut 0.3s ease-out forwards",setTimeout(function(){n.remove()},300)},3e3)}function p(){if(document.getElementById("feedback-styles"))return;var e=document.createElement("style");e.id="feedback-styles",e.textContent=["/* Animations */","@keyframes feedbackSlideUp {"," from { opacity: 0; transform: translateX(-50%) translateY(20px); }"," to { opacity: 1; transform: translateX(-50%) translateY(0); }","}","@keyframes fadeOut {"," from { opacity: 1; }"," to { opacity: 0; }","}",".spin {"," animation: spin 1s linear infinite;","}","@keyframes spin {"," from { transform: rotate(0deg); }"," to { transform: rotate(360deg); }","}","@keyframes fadeIn {"," from { opacity: 0; }"," to { opacity: 1; }","}","","/* Thank you state */",".feedback-thank-you {"," display: flex;"," align-items: center;"," gap: var(--space-3, 12px);"," padding: var(--space-4, 16px) var(--space-6, 24px);"," background: rgba(34, 197, 94, 0.1);"," border: 1px solid rgba(34, 197, 94, 0.2);"," border-radius: var(--radius-lg, 12px);"," color: var(--color-success, #22c55e);"," font-weight: 500;","}",".feedback-submitted .feedback-buttons {"," animation: fadeIn 0.3s ease-out;","}","","/* Modal backdrop */",".feedback-modal-backdrop {"," position: fixed;"," inset: 0;"," background: rgba(0, 0, 0, 0.6);"," backdrop-filter: blur(4px);"," display: flex;"," align-items: center;"," justify-content: center;"," z-index: 10000;"," opacity: 0;"," transition: opacity 0.2s ease-out;"," padding: var(--space-4, 16px);","}",".feedback-modal-backdrop.feedback-modal-visible {"," opacity: 1;","}","","/* Modal */",".feedback-modal {"," background: var(--color-bg-primary, #0f0f12);"," border: 1px solid var(--color-border-primary, rgba(255, 255, 255, 0.1));"," border-radius: var(--radius-xl, 16px);"," max-width: 480px;"," width: 100%;"," box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);"," transform: scale(0.95);"," transition: transform 0.2s ease-out;","}",".feedback-modal-visible .feedback-modal {"," transform: scale(1);","}","","/* Modal header */",".feedback-modal-header {"," display: flex;"," align-items: center;"," justify-content: space-between;"," padding: var(--space-5, 20px) var(--space-6, 24px);"," border-bottom: 1px solid var(--color-border-primary, rgba(255, 255, 255, 0.1));","}",".feedback-modal-header h3 {"," margin: 0;"," font-size: var(--text-lg, 1.125rem);"," font-weight: 600;"," color: var(--color-text-primary, #ffffff);","}",".feedback-modal-close {"," background: none;"," border: none;"," font-size: 24px;"," color: var(--color-text-tertiary, rgba(255, 255, 255, 0.5));"," cursor: pointer;"," padding: 0;"," line-height: 1;"," transition: color 0.15s;","}
1",".feedback-modal-close:hover {"," color: var(--color-text-primary, #ffffff);","}","","/* Modal body */",".feedback-modal-body {"," padding: var(--space-6, 24px);","}",".feedback-modal-body p {"," margin: 0 0 var(--space-4, 16px) 0;"," color: var(--color-text-secondary, rgba(255, 255, 255, 0.7));"," font-size: var(--text-sm, 0.875rem);","}",".feedback-textarea {"," width: 100%;"," padding: var(--space-3, 12px);"," background: var(--color-bg-secondary, rgba(255, 255, 255, 0.05));"," border: 1px solid var(--color-border-primary, rgba(255, 255, 255, 0.1));"," border-radius: var(--radius-lg, 12px);"," color: var(--color-text-primary, #ffffff);"," font-size: var(--text-sm, 0.875rem);"," font-family: inherit;"," resize: vertical;"," min-height: 100px;"," transition: border-color 0.15s;","}",".feedback-textarea:focus {"," outline: none;"," border-color: var(--color-primary, #5856d6);","}",".feedback-textarea::placeholder {"," color: var(--color-text-tertiary, rgba(255, 255, 255, 0.4));","}",".feedback-char-count {"," text-align: right;"," font-size: var(--text-xs, 0.75rem);"," color: var(--color-text-tertiary, rgba(255, 255, 255, 0.4));"," margin-top: var(--space-2, 8px);","}","","/* Modal footer */",".feedback-modal-footer {"," display: flex;"," gap: var(--space-3, 12px);"," justify-content: flex-end;"," padding: var(--space-4, 16px) var(--space-6, 24px);"," border-top: 1px solid var(--color-border-primary, rgba(255, 255, 255, 0.1));","}",".feedback-cancel-btn {"," background: transparent;"," border: 1px solid var(--color-border-primary, rgba(255, 255, 255, 0.1));"," color: var(--color-text-secondary, rgba(255, 255, 255, 0.7));"," padding: var(--space-2, 8px) var(--space-4, 16px);"," border-radius: var(--radius-md, 8px);"," font-size: var(--text-sm, 0.875rem);"," cursor: pointer;"," transition: all 0.15s;","}",".feedback-cancel-btn:hover {"," background: rgba(255, 255, 255, 0.05);"," border-color: rgba(255, 255, 255, 0.2);","}",".feedback-submit-btn {"," background: var(--color-primary, #5856d6);"," border: none;"," color: white;"," padding: var(--space-2, 8px) var(--space-4, 16px);"," border-radius: var(--radius-md, 8px);"," font-size: var(--text-sm, 0.875rem);"," font-weight: 500;"," cursor: pointer;"," transition: all 0.15s;","}",".feedback-submit-btn:hover {"," background: var(--color-primary-hover, #4845c7);","}","","/* Light mode overrides */",':root:not([data-theme="dark"]) .feedback-modal {'," background: #ffffff;"," border-color: rgba(0, 0, 0, 0.1);"," box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);","}",':root:not([data-theme="dark"]) .feedback-modal-header {'," border-bottom-color: rgba(0, 0, 0, 0.1);","}",':root:not([data-theme="dark"]) .feedback-modal-header h3 {'," color: #1a1a1a;","}",':root:not([data-theme="dark"]) .feedback-modal-close {'," color: rgba(0, 0, 0, 0.4);","}",':root:not([data-theme="dark"]) .feedback-modal-close:hover {'," color: #1a1a1a;","}",':root:not([data-theme="dark"]) .feedback-modal-body p {'," color: #4a4a4a;","}",':root:not([data-theme="dark"]) .feedback-textarea {'," background: #f5f5f7;"," border-color: rgba(0, 0, 0, 0.1);"," color: #1a1a1a;","}",':root:not([data-theme="dark"]) .feedback-textarea:focus {'," border-color: var(--color-primary, #5856d6);","}",':root:not([data-theme="dark"]) .feedback-textarea::placeholder {'," color: rgba(0, 0, 0, 0.4);","}",':root:not([data-theme="dark"]) .feedback-char-count {'," color: rgba(0, 0, 0, 0.4);","}",':root:not([data-theme="dark"]) .feedback-modal-footer {'," border-top-color: rgba(0, 0, 0, 0.1);","}",':root:not([data-theme="dark"]) .feedback-cancel-btn {'," border-color: rgba(0, 0, 0, 0.15);"," color: #4a4a4a;","}",':root:not([data-theme="dark"]) .feedback-cancel-btn:hover {'," background: rgba(0, 0, 0, 0.05);"," border-color: rgba(0, 0, 0, 0.2);","}",':root:not([data-theme="dark"]) .feedback-thank-you {'," background: rgba(34, 197, 94, 0.08);"," border-color: rgba(34, 197, 94, 0.15);","}"].join(` 2`),document.head.appendChild(e)}})()})()
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.