deepnova-help-widget 0.0.0-stage → 1.1.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.
@@ -0,0 +1,1342 @@
1
+ "use strict";var DeepnovaHelpWidget=(()=>{var Tt=Object.create;var ve=Object.defineProperty;var St=Object.getOwnPropertyDescriptor;var Rt=Object.getOwnPropertyNames;var At=Object.getPrototypeOf,Ct=Object.prototype.hasOwnProperty;var Ze=(t,o)=>()=>(t&&(o=t(t=0)),o);var ne=(t,o)=>()=>(o||t((o={exports:{}}).exports,o),o.exports),Je=(t,o)=>{for(var n in o)ve(t,n,{get:o[n],enumerable:!0})},et=(t,o,n,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of Rt(o))!Ct.call(t,i)&&i!==n&&ve(t,i,{get:()=>o[i],enumerable:!(s=St(o,i))||s.enumerable});return t};var Se=(t,o,n)=>(n=t!=null?Tt(At(t)):{},et(o||!t||!t.__esModule?ve(n,"default",{value:t,enumerable:!0}):n,t)),Lt=t=>et(ve({},"__esModule",{value:!0}),t);var dt=ne(b=>{"use strict";var Ce=Symbol.for("react.transitional.element"),Ot=Symbol.for("react.portal"),It=Symbol.for("react.fragment"),jt=Symbol.for("react.strict_mode"),Pt=Symbol.for("react.profiler"),Mt=Symbol.for("react.consumer"),$t=Symbol.for("react.context"),Ht=Symbol.for("react.forward_ref"),Nt=Symbol.for("react.suspense"),zt=Symbol.for("react.memo"),st=Symbol.for("react.lazy"),Bt=Symbol.for("react.activity"),tt=Symbol.iterator;function Dt(t){return t===null||typeof t!="object"?null:(t=tt&&t[tt]||t["@@iterator"],typeof t=="function"?t:null)}var it={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},at=Object.assign,lt={};function se(t,o,n){this.props=t,this.context=o,this.refs=lt,this.updater=n||it}se.prototype.isReactComponent={};se.prototype.setState=function(t,o){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,t,o,"setState")};se.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function ct(){}ct.prototype=se.prototype;function Le(t,o,n){this.props=t,this.context=o,this.refs=lt,this.updater=n||it}var Oe=Le.prototype=new ct;Oe.constructor=Le;at(Oe,se.prototype);Oe.isPureReactComponent=!0;var rt=Array.isArray;function Ae(){}var I={H:null,A:null,T:null,S:null},ut=Object.prototype.hasOwnProperty;function Ie(t,o,n){var s=n.ref;return{$$typeof:Ce,type:t,key:o,ref:s!==void 0?s:null,props:n}}function qt(t,o){return Ie(t.type,o,t.props)}function je(t){return typeof t=="object"&&t!==null&&t.$$typeof===Ce}function Ft(t){var o={"=":"=0",":":"=2"};return"$"+t.replace(/[=:]/g,function(n){return o[n]})}var nt=/\/+/g;function Re(t,o){return typeof t=="object"&&t!==null&&t.key!=null?Ft(""+t.key):o.toString(36)}function Yt(t){switch(t.status){case"fulfilled":return t.value;case"rejected":throw t.reason;default:switch(typeof t.status=="string"?t.then(Ae,Ae):(t.status="pending",t.then(function(o){t.status==="pending"&&(t.status="fulfilled",t.value=o)},function(o){t.status==="pending"&&(t.status="rejected",t.reason=o)})),t.status){case"fulfilled":return t.value;case"rejected":throw t.reason}}throw t}function oe(t,o,n,s,i){var c=typeof t;(c==="undefined"||c==="boolean")&&(t=null);var d=!1;if(t===null)d=!0;else switch(c){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case Ce:case Ot:d=!0;break;case st:return d=t._init,oe(d(t._payload),o,n,s,i)}}if(d)return i=i(t),d=s===""?"."+Re(t,0):s,rt(i)?(n="",d!=null&&(n=d.replace(nt,"$&/")+"/"),oe(i,o,n,"",function(h){return h})):i!=null&&(je(i)&&(i=qt(i,n+(i.key==null||t&&t.key===i.key?"":(""+i.key).replace(nt,"$&/")+"/")+d)),o.push(i)),1;d=0;var m=s===""?".":s+":";if(rt(t))for(var f=0;f<t.length;f++)s=t[f],c=m+Re(s,f),d+=oe(s,o,n,c,i);else if(f=Dt(t),typeof f=="function")for(t=f.call(t),f=0;!(s=t.next()).done;)s=s.value,c=m+Re(s,f++),d+=oe(s,o,n,c,i);else if(c==="object"){if(typeof t.then=="function")return oe(Yt(t),o,n,s,i);throw o=String(t),Error("Objects are not valid as a React child (found: "+(o==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":o)+"). If you meant to render a collection of children, use an array instead.")}return d}function ye(t,o,n){if(t==null)return t;var s=[],i=0;return oe(t,s,"","",function(c){return o.call(n,c,i++)}),s}function Ut(t){if(t._status===-1){var o=t._result;o=o(),o.then(function(n){(t._status===0||t._status===-1)&&(t._status=1,t._result=n)},function(n){(t._status===0||t._status===-1)&&(t._status=2,t._result=n)}),t._status===-1&&(t._status=0,t._result=o)}if(t._status===1)return t._result.default;throw t._result}var ot=typeof reportError=="function"?reportError:function(t){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var o=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof t=="object"&&t!==null&&typeof t.message=="string"?String(t.message):String(t),error:t});if(!window.dispatchEvent(o))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",t);return}console.error(t)},Wt={map:ye,forEach:function(t,o,n){ye(t,function(){o.apply(this,arguments)},n)},count:function(t){var o=0;return ye(t,function(){o++}),o},toArray:function(t){return ye(t,function(o){return o})||[]},only:function(t){if(!je(t))throw Error("React.Children.only expected to receive a single React element child.");return t}};b.Activity=Bt;b.Children=Wt;b.Component=se;b.Fragment=It;b.Profiler=Pt;b.PureComponent=Le;b.StrictMode=jt;b.Suspense=Nt;b.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=I;b.__COMPILER_RUNTIME={__proto__:null,c:function(t){return I.H.useMemoCache(t)}};b.cache=function(t){return function(){return t.apply(null,arguments)}};b.cacheSignal=function(){return null};b.cloneElement=function(t,o,n){if(t==null)throw Error("The argument must be a React element, but you passed "+t+".");var s=at({},t.props),i=t.key;if(o!=null)for(c in o.key!==void 0&&(i=""+o.key),o)!ut.call(o,c)||c==="key"||c==="__self"||c==="__source"||c==="ref"&&o.ref===void 0||(s[c]=o[c]);var c=arguments.length-2;if(c===1)s.children=n;else if(1<c){for(var d=Array(c),m=0;m<c;m++)d[m]=arguments[m+2];s.children=d}return Ie(t.type,i,s)};b.createContext=function(t){return t={$$typeof:$t,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider=t,t.Consumer={$$typeof:Mt,_context:t},t};b.createElement=function(t,o,n){var s,i={},c=null;if(o!=null)for(s in o.key!==void 0&&(c=""+o.key),o)ut.call(o,s)&&s!=="key"&&s!=="__self"&&s!=="__source"&&(i[s]=o[s]);var d=arguments.length-2;if(d===1)i.children=n;else if(1<d){for(var m=Array(d),f=0;f<d;f++)m[f]=arguments[f+2];i.children=m}if(t&&t.defaultProps)for(s in d=t.defaultProps,d)i[s]===void 0&&(i[s]=d[s]);return Ie(t,c,i)};b.createRef=function(){return{current:null}};b.forwardRef=function(t){return{$$typeof:Ht,render:t}};b.isValidElement=je;b.lazy=function(t){return{$$typeof:st,_payload:{_status:-1,_result:t},_init:Ut}};b.memo=function(t,o){return{$$typeof:zt,type:t,compare:o===void 0?null:o}};b.startTransition=function(t){var o=I.T,n={};I.T=n;try{var s=t(),i=I.S;i!==null&&i(n,s),typeof s=="object"&&s!==null&&typeof s.then=="function"&&s.then(Ae,ot)}catch(c){ot(c)}finally{o!==null&&n.types!==null&&(o.types=n.types),I.T=o}};b.unstable_useCacheRefresh=function(){return I.H.useCacheRefresh()};b.use=function(t){return I.H.use(t)};b.useActionState=function(t,o,n){return I.H.useActionState(t,o,n)};b.useCallback=function(t,o){return I.H.useCallback(t,o)};b.useContext=function(t){return I.H.useContext(t)};b.useDebugValue=function(){};b.useDeferredValue=function(t,o){return I.H.useDeferredValue(t,o)};b.useEffect=function(t,o){return I.H.useEffect(t,o)};b.useEffectEvent=function(t){return I.H.useEffectEvent(t)};b.useId=function(){return I.H.useId()};b.useImperativeHandle=function(t,o,n){return I.H.useImperativeHandle(t,o,n)};b.useInsertionEffect=function(t,o){return I.H.useInsertionEffect(t,o)};b.useLayoutEffect=function(t,o){return I.H.useLayoutEffect(t,o)};b.useMemo=function(t,o){return I.H.useMemo(t,o)};b.useOptimistic=function(t,o){return I.H.useOptimistic(t,o)};b.useReducer=function(t,o,n){return I.H.useReducer(t,o,n)};b.useRef=function(t){return I.H.useRef(t)};b.useState=function(t){return I.H.useState(t)};b.useSyncExternalStore=function(t,o,n){return I.H.useSyncExternalStore(t,o,n)};b.useTransition=function(){return I.H.useTransition()};b.version="19.2.7"});var pt=ne((w,xe)=>{"use strict";process.env.NODE_ENV!=="production"&&(function(){function t(e,r){Object.defineProperty(s.prototype,e,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",r[0],r[1])}})}function o(e){return e===null||typeof e!="object"?null:(e=fe&&e[fe]||e["@@iterator"],typeof e=="function"?e:null)}function n(e,r){e=(e=e.constructor)&&(e.displayName||e.name)||"ReactClass";var l=e+"."+r;ze[l]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",r,e),ze[l]=!0)}function s(e,r,l){this.props=e,this.context=r,this.refs=ke,this.updater=l||Be}function i(){}function c(e,r,l){this.props=e,this.context=r,this.refs=ke,this.updater=l||Be}function d(){}function m(e){return""+e}function f(e){try{m(e);var r=!1}catch{r=!0}if(r){r=console;var l=r.error,u=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return l.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",u),m(e)}}function h(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===yt?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case ee:return"Fragment";case a:return"Profiler";case ce:return"StrictMode";case G:return"Suspense";case ue:return"SuspenseList";case te:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case le:return"Portal";case O:return e.displayName||"Context";case v:return(e._context.displayName||"Context")+".Consumer";case M:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case P:return r=e.displayName||null,r!==null?r:h(e.type)||"Memo";case z:r=e._payload,e=e._init;try{return h(e(r))}catch{}}return null}function R(e){if(e===ee)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===z)return"<...>";try{var r=h(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function p(){var e=_.A;return e===null?null:e.getOwner()}function S(){return Error("react-stack-top-frame")}function y(e){if(ge.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function A(e,r){function l(){Ye||(Ye=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}l.isReactWarning=!0,Object.defineProperty(e,"key",{get:l,configurable:!0})}function E(){var e=h(this.type);return We[e]||(We[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function L(e,r,l,u,g,k){var x=l.ref;return e={$$typeof:J,type:e,key:r,props:l,_owner:u},(x!==void 0?x:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:E}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:g}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:k}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function $(e,r){return r=L(e.type,r,e.props,e._owner,e._debugStack,e._debugTask),e._store&&(r._store.validated=e._store.validated),r}function H(e){N(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===z&&(e._payload.status==="fulfilled"?N(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function N(e){return typeof e=="object"&&e!==null&&e.$$typeof===J}function Q(e){var r={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(l){return r[l]})}function U(e,r){return typeof e=="object"&&e!==null&&e.key!=null?(f(e.key),Q(""+e.key)):r.toString(36)}function ie(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(d,d):(e.status="pending",e.then(function(r){e.status==="pending"&&(e.status="fulfilled",e.value=r)},function(r){e.status==="pending"&&(e.status="rejected",e.reason=r)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function D(e,r,l,u,g){var k=typeof e;(k==="undefined"||k==="boolean")&&(e=null);var x=!1;if(e===null)x=!0;else switch(k){case"bigint":case"string":case"number":x=!0;break;case"object":switch(e.$$typeof){case J:case le:x=!0;break;case z:return x=e._init,D(x(e._payload),r,l,u,g)}}if(x){x=e,g=g(x);var C=u===""?"."+U(x,0):u;return qe(g)?(l="",C!=null&&(l=C.replace(Ke,"$&/")+"/"),D(g,r,l,"",function(Y){return Y})):g!=null&&(N(g)&&(g.key!=null&&(x&&x.key===g.key||f(g.key)),l=$(g,l+(g.key==null||x&&x.key===g.key?"":(""+g.key).replace(Ke,"$&/")+"/")+C),u!==""&&x!=null&&N(x)&&x.key==null&&x._store&&!x._store.validated&&(l._store.validated=2),g=l),r.push(g)),1}if(x=0,C=u===""?".":u+":",qe(e))for(var T=0;T<e.length;T++)u=e[T],k=C+U(u,T),x+=D(u,r,l,k,g);else if(T=o(e),typeof T=="function")for(T===e.entries&&(Ge||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),Ge=!0),e=T.call(e),T=0;!(u=e.next()).done;)u=u.value,k=C+U(u,T++),x+=D(u,r,l,k,g);else if(k==="object"){if(typeof e.then=="function")return D(ie(e),r,l,u,g);throw r=String(e),Error("Objects are not valid as a React child (found: "+(r==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":r)+"). If you meant to render a collection of children, use an array instead.")}return x}function V(e,r,l){if(e==null)return e;var u=[],g=0;return D(e,u,"","",function(k){return r.call(l,k,g++)}),u}function ae(e){if(e._status===-1){var r=e._ioInfo;r!=null&&(r.start=r.end=performance.now()),r=e._result;var l=r();if(l.then(function(g){if(e._status===0||e._status===-1){e._status=1,e._result=g;var k=e._ioInfo;k!=null&&(k.end=performance.now()),l.status===void 0&&(l.status="fulfilled",l.value=g)}},function(g){if(e._status===0||e._status===-1){e._status=2,e._result=g;var k=e._ioInfo;k!=null&&(k.end=performance.now()),l.status===void 0&&(l.status="rejected",l.reason=g)}}),r=e._ioInfo,r!=null){r.value=l;var u=l.displayName;typeof u=="string"&&(r.name=u)}e._status===-1&&(e._status=0,e._result=l)}if(e._status===1)return r=e._result,r===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
2
+
3
+ Your code should look like:
4
+ const MyComponent = lazy(() => import('./MyComponent'))
5
+
6
+ Did you accidentally put curly braces around the import?`,r),"default"in r||console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
7
+
8
+ Your code should look like:
9
+ const MyComponent = lazy(() => import('./MyComponent'))`,r),r.default;throw e._result}function j(){var e=_.H;return e===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
10
+ 1. You might have mismatching versions of React and the renderer (such as React DOM)
11
+ 2. You might be breaking the Rules of Hooks
12
+ 3. You might have more than one copy of React in the same app
13
+ See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),e}function he(){_.asyncTransitions--}function q(e){if(me===null)try{var r=("require"+Math.random()).slice(0,7);me=(xe&&xe[r]).call(xe,"timers").setImmediate}catch{me=function(u){Ve===!1&&(Ve=!0,typeof MessageChannel>"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var g=new MessageChannel;g.port1.onmessage=u,g.port2.postMessage(void 0)}}return me(e)}function F(e){return 1<e.length&&typeof AggregateError=="function"?new AggregateError(e):e[0]}function X(e,r){r!==we-1&&console.error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "),we=r}function W(e,r,l){var u=_.actQueue;if(u!==null)if(u.length!==0)try{Z(u),q(function(){return W(e,r,l)});return}catch(g){_.thrownErrors.push(g)}else _.actQueue=null;0<_.thrownErrors.length?(u=F(_.thrownErrors),_.thrownErrors.length=0,l(u)):r(e)}function Z(e){if(!Te){Te=!0;var r=0;try{for(;r<e.length;r++){var l=e[r];do{_.didUsePromise=!1;var u=l(!1);if(u!==null){if(_.didUsePromise){e[r]=l,e.splice(0,r);return}l=u}else break}while(!0)}e.length=0}catch(g){e.splice(0,r+1),_.thrownErrors.push(g)}finally{Te=!1}}}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var J=Symbol.for("react.transitional.element"),le=Symbol.for("react.portal"),ee=Symbol.for("react.fragment"),ce=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),v=Symbol.for("react.consumer"),O=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),G=Symbol.for("react.suspense"),ue=Symbol.for("react.suspense_list"),P=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),te=Symbol.for("react.activity"),fe=Symbol.iterator,ze={},Be={isMounted:function(){return!1},enqueueForceUpdate:function(e){n(e,"forceUpdate")},enqueueReplaceState:function(e){n(e,"replaceState")},enqueueSetState:function(e){n(e,"setState")}},De=Object.assign,ke={};Object.freeze(ke),s.prototype.isReactComponent={},s.prototype.setState=function(e,r){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,r,"setState")},s.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};var B={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]};for(de in B)B.hasOwnProperty(de)&&t(de,B[de]);i.prototype=s.prototype,B=c.prototype=new i,B.constructor=c,De(B,s.prototype),B.isPureReactComponent=!0;var qe=Array.isArray,yt=Symbol.for("react.client.reference"),_={H:null,A:null,T:null,S:null,actQueue:null,asyncTransitions:0,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1,didUsePromise:!1,thrownErrors:[],getCurrentStack:null,recentlyCreatedOwnerStacks:0},ge=Object.prototype.hasOwnProperty,Fe=console.createTask?console.createTask:function(){return null};B={react_stack_bottom_frame:function(e){return e()}};var Ye,Ue,We={},xt=B.react_stack_bottom_frame.bind(B,S)(),_t=Fe(R(S)),Ge=!1,Ke=/\/+/g,Qe=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var r=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(r))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},Ve=!1,me=null,we=0,be=!1,Te=!1,Xe=typeof queueMicrotask=="function"?function(e){queueMicrotask(function(){return queueMicrotask(e)})}:q;B=Object.freeze({__proto__:null,c:function(e){return j().useMemoCache(e)}});var de={map:V,forEach:function(e,r,l){V(e,function(){r.apply(this,arguments)},l)},count:function(e){var r=0;return V(e,function(){r++}),r},toArray:function(e){return V(e,function(r){return r})||[]},only:function(e){if(!N(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};w.Activity=te,w.Children=de,w.Component=s,w.Fragment=ee,w.Profiler=a,w.PureComponent=c,w.StrictMode=ce,w.Suspense=G,w.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=_,w.__COMPILER_RUNTIME=B,w.act=function(e){var r=_.actQueue,l=we;we++;var u=_.actQueue=r!==null?r:[],g=!1;try{var k=e()}catch(T){_.thrownErrors.push(T)}if(0<_.thrownErrors.length)throw X(r,l),e=F(_.thrownErrors),_.thrownErrors.length=0,e;if(k!==null&&typeof k=="object"&&typeof k.then=="function"){var x=k;return Xe(function(){g||be||(be=!0,console.error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(T,Y){g=!0,x.then(function(re){if(X(r,l),l===0){try{Z(u),q(function(){return W(re,T,Y)})}catch(kt){_.thrownErrors.push(kt)}if(0<_.thrownErrors.length){var Et=F(_.thrownErrors);_.thrownErrors.length=0,Y(Et)}}else T(re)},function(re){X(r,l),0<_.thrownErrors.length&&(re=F(_.thrownErrors),_.thrownErrors.length=0),Y(re)})}}}var C=k;if(X(r,l),l===0&&(Z(u),u.length!==0&&Xe(function(){g||be||(be=!0,console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"))}),_.actQueue=null),0<_.thrownErrors.length)throw e=F(_.thrownErrors),_.thrownErrors.length=0,e;return{then:function(T,Y){g=!0,l===0?(_.actQueue=u,q(function(){return W(C,T,Y)})):T(C)}}},w.cache=function(e){return function(){return e.apply(null,arguments)}},w.cacheSignal=function(){return null},w.captureOwnerStack=function(){var e=_.getCurrentStack;return e===null?null:e()},w.cloneElement=function(e,r,l){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var u=De({},e.props),g=e.key,k=e._owner;if(r!=null){var x;e:{if(ge.call(r,"ref")&&(x=Object.getOwnPropertyDescriptor(r,"ref").get)&&x.isReactWarning){x=!1;break e}x=r.ref!==void 0}x&&(k=p()),y(r)&&(f(r.key),g=""+r.key);for(C in r)!ge.call(r,C)||C==="key"||C==="__self"||C==="__source"||C==="ref"&&r.ref===void 0||(u[C]=r[C])}var C=arguments.length-2;if(C===1)u.children=l;else if(1<C){x=Array(C);for(var T=0;T<C;T++)x[T]=arguments[T+2];u.children=x}for(u=L(e.type,g,u,k,e._debugStack,e._debugTask),g=2;g<arguments.length;g++)H(arguments[g]);return u},w.createContext=function(e){return e={$$typeof:O,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:v,_context:e},e._currentRenderer=null,e._currentRenderer2=null,e},w.createElement=function(e,r,l){for(var u=2;u<arguments.length;u++)H(arguments[u]);u={};var g=null;if(r!=null)for(T in Ue||!("__self"in r)||"key"in r||(Ue=!0,console.warn("Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform")),y(r)&&(f(r.key),g=""+r.key),r)ge.call(r,T)&&T!=="key"&&T!=="__self"&&T!=="__source"&&(u[T]=r[T]);var k=arguments.length-2;if(k===1)u.children=l;else if(1<k){for(var x=Array(k),C=0;C<k;C++)x[C]=arguments[C+2];Object.freeze&&Object.freeze(x),u.children=x}if(e&&e.defaultProps)for(T in k=e.defaultProps,k)u[T]===void 0&&(u[T]=k[T]);g&&A(u,typeof e=="function"?e.displayName||e.name||"Unknown":e);var T=1e4>_.recentlyCreatedOwnerStacks++;return L(e,g,u,p(),T?Error("react-stack-top-frame"):xt,T?Fe(R(e)):_t)},w.createRef=function(){var e={current:null};return Object.seal(e),e},w.forwardRef=function(e){e!=null&&e.$$typeof===P?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof e!="function"?console.error("forwardRef requires a render function but was given %s.",e===null?"null":typeof e):e.length!==0&&e.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",e.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),e!=null&&e.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var r={$$typeof:M,render:e},l;return Object.defineProperty(r,"displayName",{enumerable:!1,configurable:!0,get:function(){return l},set:function(u){l=u,e.name||e.displayName||(Object.defineProperty(e,"name",{value:u}),e.displayName=u)}}),r},w.isValidElement=N,w.lazy=function(e){e={_status:-1,_result:e};var r={$$typeof:z,_payload:e,_init:ae},l={name:"lazy",start:-1,end:-1,value:null,owner:null,debugStack:Error("react-stack-top-frame"),debugTask:console.createTask?console.createTask("lazy()"):null};return e._ioInfo=l,r._debugInfo=[{awaited:l}],r},w.memo=function(e,r){e==null&&console.error("memo: The first argument must be a component. Instead received: %s",e===null?"null":typeof e),r={$$typeof:P,type:e,compare:r===void 0?null:r};var l;return Object.defineProperty(r,"displayName",{enumerable:!1,configurable:!0,get:function(){return l},set:function(u){l=u,e.name||e.displayName||(Object.defineProperty(e,"name",{value:u}),e.displayName=u)}}),r},w.startTransition=function(e){var r=_.T,l={};l._updatedFibers=new Set,_.T=l;try{var u=e(),g=_.S;g!==null&&g(l,u),typeof u=="object"&&u!==null&&typeof u.then=="function"&&(_.asyncTransitions++,u.then(he,he),u.then(d,Qe))}catch(k){Qe(k)}finally{r===null&&l._updatedFibers&&(e=l._updatedFibers.size,l._updatedFibers.clear(),10<e&&console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.")),r!==null&&l.types!==null&&(r.types!==null&&r.types!==l.types&&console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."),r.types=l.types),_.T=r}},w.unstable_useCacheRefresh=function(){return j().useCacheRefresh()},w.use=function(e){return j().use(e)},w.useActionState=function(e,r,l){return j().useActionState(e,r,l)},w.useCallback=function(e,r){return j().useCallback(e,r)},w.useContext=function(e){var r=j();return e.$$typeof===v&&console.error("Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?"),r.useContext(e)},w.useDebugValue=function(e,r){return j().useDebugValue(e,r)},w.useDeferredValue=function(e,r){return j().useDeferredValue(e,r)},w.useEffect=function(e,r){return e==null&&console.warn("React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?"),j().useEffect(e,r)},w.useEffectEvent=function(e){return j().useEffectEvent(e)},w.useId=function(){return j().useId()},w.useImperativeHandle=function(e,r,l){return j().useImperativeHandle(e,r,l)},w.useInsertionEffect=function(e,r){return e==null&&console.warn("React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?"),j().useInsertionEffect(e,r)},w.useLayoutEffect=function(e,r){return e==null&&console.warn("React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?"),j().useLayoutEffect(e,r)},w.useMemo=function(e,r){return j().useMemo(e,r)},w.useOptimistic=function(e,r){return j().useOptimistic(e,r)},w.useReducer=function(e,r,l){return j().useReducer(e,r,l)},w.useRef=function(e){return j().useRef(e)},w.useState=function(e){return j().useState(e)},w.useSyncExternalStore=function(e,r,l){return j().useSyncExternalStore(e,r,l)},w.useTransition=function(){return j().useTransition()},w.version="19.2.7",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()});var Me=ne((tr,Pe)=>{"use strict";process.env.NODE_ENV==="production"?Pe.exports=dt():Pe.exports=pt()});var ft=ne(_e=>{"use strict";var Gt=Symbol.for("react.transitional.element"),Kt=Symbol.for("react.fragment");function ht(t,o,n){var s=null;if(n!==void 0&&(s=""+n),o.key!==void 0&&(s=""+o.key),"key"in o){n={};for(var i in o)i!=="key"&&(n[i]=o[i])}else n=o;return o=n.ref,{$$typeof:Gt,type:t,key:s,ref:o!==void 0?o:null,props:n}}_e.Fragment=Kt;_e.jsx=ht;_e.jsxs=ht});var gt=ne(Ee=>{"use strict";process.env.NODE_ENV!=="production"&&(function(){function t(a){if(a==null)return null;if(typeof a=="function")return a.$$typeof===he?null:a.displayName||a.name||null;if(typeof a=="string")return a;switch(a){case L:return"Fragment";case H:return"Profiler";case $:return"StrictMode";case ie:return"Suspense";case D:return"SuspenseList";case j:return"Activity"}if(typeof a=="object")switch(typeof a.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),a.$$typeof){case E:return"Portal";case Q:return a.displayName||"Context";case N:return(a._context.displayName||"Context")+".Consumer";case U:var v=a.render;return a=a.displayName,a||(a=v.displayName||v.name||"",a=a!==""?"ForwardRef("+a+")":"ForwardRef"),a;case V:return v=a.displayName||null,v!==null?v:t(a.type)||"Memo";case ae:v=a._payload,a=a._init;try{return t(a(v))}catch{}}return null}function o(a){return""+a}function n(a){try{o(a);var v=!1}catch{v=!0}if(v){v=console;var O=v.error,M=typeof Symbol=="function"&&Symbol.toStringTag&&a[Symbol.toStringTag]||a.constructor.name||"Object";return O.call(v,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",M),o(a)}}function s(a){if(a===L)return"<>";if(typeof a=="object"&&a!==null&&a.$$typeof===ae)return"<...>";try{var v=t(a);return v?"<"+v+">":"<...>"}catch{return"<...>"}}function i(){var a=q.A;return a===null?null:a.getOwner()}function c(){return Error("react-stack-top-frame")}function d(a){if(F.call(a,"key")){var v=Object.getOwnPropertyDescriptor(a,"key").get;if(v&&v.isReactWarning)return!1}return a.key!==void 0}function m(a,v){function O(){Z||(Z=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",v))}O.isReactWarning=!0,Object.defineProperty(a,"key",{get:O,configurable:!0})}function f(){var a=t(this.type);return J[a]||(J[a]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),a=this.props.ref,a!==void 0?a:null}function h(a,v,O,M,G,ue){var P=O.ref;return a={$$typeof:A,type:a,key:v,props:O,_owner:M},(P!==void 0?P:null)!==null?Object.defineProperty(a,"ref",{enumerable:!1,get:f}):Object.defineProperty(a,"ref",{enumerable:!1,value:null}),a._store={},Object.defineProperty(a._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(a,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(a,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:G}),Object.defineProperty(a,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ue}),Object.freeze&&(Object.freeze(a.props),Object.freeze(a)),a}function R(a,v,O,M,G,ue){var P=v.children;if(P!==void 0)if(M)if(X(P)){for(M=0;M<P.length;M++)p(P[M]);Object.freeze&&Object.freeze(P)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else p(P);if(F.call(v,"key")){P=t(a);var z=Object.keys(v).filter(function(fe){return fe!=="key"});M=0<z.length?"{key: someKey, "+z.join(": ..., ")+": ...}":"{key: someKey}",ce[P+M]||(z=0<z.length?"{"+z.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
14
+ let props = %s;
15
+ <%s {...props} />
16
+ React keys must be passed directly to JSX without using spread:
17
+ let props = %s;
18
+ <%s key={someKey} {...props} />`,M,P,z,P),ce[P+M]=!0)}if(P=null,O!==void 0&&(n(O),P=""+O),d(v)&&(n(v.key),P=""+v.key),"key"in v){O={};for(var te in v)te!=="key"&&(O[te]=v[te])}else O=v;return P&&m(O,typeof a=="function"?a.displayName||a.name||"Unknown":a),h(a,P,O,i(),G,ue)}function p(a){S(a)?a._store&&(a._store.validated=1):typeof a=="object"&&a!==null&&a.$$typeof===ae&&(a._payload.status==="fulfilled"?S(a._payload.value)&&a._payload.value._store&&(a._payload.value._store.validated=1):a._store&&(a._store.validated=1))}function S(a){return typeof a=="object"&&a!==null&&a.$$typeof===A}var y=Me(),A=Symbol.for("react.transitional.element"),E=Symbol.for("react.portal"),L=Symbol.for("react.fragment"),$=Symbol.for("react.strict_mode"),H=Symbol.for("react.profiler"),N=Symbol.for("react.consumer"),Q=Symbol.for("react.context"),U=Symbol.for("react.forward_ref"),ie=Symbol.for("react.suspense"),D=Symbol.for("react.suspense_list"),V=Symbol.for("react.memo"),ae=Symbol.for("react.lazy"),j=Symbol.for("react.activity"),he=Symbol.for("react.client.reference"),q=y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,F=Object.prototype.hasOwnProperty,X=Array.isArray,W=console.createTask?console.createTask:function(){return null};y={react_stack_bottom_frame:function(a){return a()}};var Z,J={},le=y.react_stack_bottom_frame.bind(y,c)(),ee=W(s(c)),ce={};Ee.Fragment=L,Ee.jsx=function(a,v,O){var M=1e4>q.recentlyCreatedOwnerStacks++;return R(a,v,O,!1,M?Error("react-stack-top-frame"):le,M?W(s(a)):ee)},Ee.jsxs=function(a,v,O){var M=1e4>q.recentlyCreatedOwnerStacks++;return R(a,v,O,!0,M?Error("react-stack-top-frame"):le,M?W(s(a)):ee)}})()});var He=ne((or,$e)=>{"use strict";process.env.NODE_ENV==="production"?$e.exports=ft():$e.exports=gt()});var wt,mt=Ze(()=>{wt=`:host {\r
19
+ --hw-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\r
20
+ font-family: var(--hw-font);\r
21
+ display: inline-block;\r
22
+ \r
23
+ /* Theme Tokens - Dark (Default) */\r
24
+ --hw-bg-sidebar: #0e1320;\r
25
+ --hw-bg-glass: rgba(14, 19, 32, 0.85);\r
26
+ --hw-border-glass: rgba(255, 255, 255, 0.08);\r
27
+ --hw-text-primary: #f8fafc;\r
28
+ --hw-text-secondary: #94a3b8;\r
29
+ --hw-text-muted: #64748b;\r
30
+ --hw-accent: #5d4fff;\r
31
+ --hw-accent-glow: rgba(93, 79, 255, 0.45);\r
32
+ --hw-accent-hover: #4c3fe0;\r
33
+ --hw-surface: #1e293b;\r
34
+ --hw-surface-hover: #334155;\r
35
+ --hw-input-bg: rgba(255, 255, 255, 0.04);\r
36
+ --hw-input-border: rgba(255, 255, 255, 0.1);\r
37
+ --hw-input-focus: #5d4fff;\r
38
+ --hw-bg-tabs: rgba(0, 0, 0, 0.15);\r
39
+ --hw-bg-faq-content: rgba(0, 0, 0, 0.1);\r
40
+ \r
41
+ /* Status Colors */\r
42
+ --hw-color-open: #38bdf8;\r
43
+ --hw-color-progress: #fbbf24;\r
44
+ --hw-color-pending: #c084fc;\r
45
+ --hw-color-resolved: #34d399;\r
46
+ --hw-color-closed: #94a3b8;\r
47
+ \r
48
+ --hw-bg-open: rgba(56, 189, 248, 0.1);\r
49
+ --hw-bg-progress: rgba(251, 191, 36, 0.1);\r
50
+ --hw-bg-pending: rgba(192, 132, 252, 0.1);\r
51
+ --hw-bg-resolved: rgba(52, 211, 153, 0.1);\r
52
+ --hw-bg-closed: rgba(148, 163, 184, 0.1);\r
53
+ }\r
54
+ \r
55
+ :host([theme="light"]) {\r
56
+ --hw-bg-sidebar: #ffffff;\r
57
+ --hw-bg-glass: rgba(255, 255, 255, 0.9);\r
58
+ --hw-border-glass: rgba(0, 0, 0, 0.08);\r
59
+ --hw-text-primary: #0f172a;\r
60
+ --hw-text-secondary: #475569;\r
61
+ --hw-text-muted: #94a3b8;\r
62
+ --hw-accent: #5d4fff;\r
63
+ --hw-accent-glow: rgba(93, 79, 255, 0.2);\r
64
+ --hw-accent-hover: #4c3fe0;\r
65
+ --hw-surface: #f1f5f9;\r
66
+ --hw-surface-hover: #e2e8f0;\r
67
+ --hw-input-bg: #ffffff;\r
68
+ --hw-input-border: #cbd5e1;\r
69
+ --hw-input-focus: #5d4fff;\r
70
+ --hw-bg-tabs: #f1f5f9;\r
71
+ --hw-bg-faq-content: #f8fafc;\r
72
+ }\r
73
+ \r
74
+ @media (prefers-color-scheme: light) {\r
75
+ :host(:not([theme="dark"])) {\r
76
+ --hw-bg-sidebar: #ffffff;\r
77
+ --hw-bg-glass: rgba(255, 255, 255, 0.9);\r
78
+ --hw-border-glass: rgba(0, 0, 0, 0.08);\r
79
+ --hw-text-primary: #0f172a;\r
80
+ --hw-text-secondary: #475569;\r
81
+ --hw-text-muted: #94a3b8;\r
82
+ --hw-accent: #5d4fff;\r
83
+ --hw-accent-glow: rgba(93, 79, 255, 0.2);\r
84
+ --hw-accent-hover: #4c3fe0;\r
85
+ --hw-surface: #f1f5f9;\r
86
+ --hw-surface-hover: #e2e8f0;\r
87
+ --hw-input-bg: #ffffff;\r
88
+ --hw-input-border: #cbd5e1;\r
89
+ --hw-input-focus: #5d4fff;\r
90
+ --hw-bg-tabs: #f1f5f9;\r
91
+ --hw-bg-faq-content: #f8fafc;\r
92
+ }\r
93
+ }\r
94
+ \r
95
+ /* Trigger Button Styling */\r
96
+ .hw-trigger-btn {\r
97
+ display: flex;\r
98
+ align-items: center;\r
99
+ justify-content: center;\r
100
+ width: 36px;\r
101
+ height: 36px;\r
102
+ border-radius: 10px;\r
103
+ border: 1px solid var(--hw-border-glass);\r
104
+ background: var(--hw-input-bg);\r
105
+ color: var(--hw-text-secondary);\r
106
+ font-size: 16px;\r
107
+ cursor: pointer;\r
108
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r
109
+ box-sizing: border-box;\r
110
+ outline: none;\r
111
+ }\r
112
+ \r
113
+ .hw-trigger-btn:hover {\r
114
+ background: var(--hw-surface);\r
115
+ color: var(--hw-accent);\r
116
+ border-color: var(--hw-accent);\r
117
+ box-shadow: 0 0 10px var(--hw-accent-glow);\r
118
+ transform: scale(1.03);\r
119
+ }\r
120
+ \r
121
+ .hw-trigger-btn.minimal {\r
122
+ border: none;\r
123
+ background: transparent;\r
124
+ width: auto;\r
125
+ height: auto;\r
126
+ padding: 6px;\r
127
+ }\r
128
+ \r
129
+ .hw-trigger-btn.hidden {\r
130
+ display: none;\r
131
+ }\r
132
+ \r
133
+ /* Backdrop Overlay */\r
134
+ .hw-backdrop {\r
135
+ position: fixed;\r
136
+ top: 0;\r
137
+ left: 0;\r
138
+ width: 100vw;\r
139
+ height: 100vh;\r
140
+ background: rgba(4, 7, 13, 0.4);\r
141
+ backdrop-filter: blur(8px);\r
142
+ -webkit-backdrop-filter: blur(8px);\r
143
+ z-index: 99998;\r
144
+ opacity: 0;\r
145
+ pointer-events: none;\r
146
+ transition: opacity 0.3s ease;\r
147
+ }\r
148
+ \r
149
+ .hw-backdrop.open {\r
150
+ opacity: 1;\r
151
+ pointer-events: auto;\r
152
+ }\r
153
+ \r
154
+ /* Sidebar Panel Drawer */\r
155
+ .hw-sidebar {\r
156
+ position: fixed;\r
157
+ top: 0;\r
158
+ right: -420px;\r
159
+ width: 100%;\r
160
+ max-width: 400px;\r
161
+ height: 100vh;\r
162
+ background: var(--hw-bg-sidebar);\r
163
+ border-left: 1px solid var(--hw-border-glass);\r
164
+ z-index: 99999;\r
165
+ box-shadow: -10px 0 30px rgba(0, 0, 0, 0.25);\r
166
+ transition: right 0.35s cubic-bezier(0.16, 1, 0.3, 1);\r
167
+ display: flex;\r
168
+ flex-direction: column;\r
169
+ box-sizing: border-box;\r
170
+ }\r
171
+ \r
172
+ .hw-sidebar.open {\r
173
+ right: 0;\r
174
+ }\r
175
+ \r
176
+ /* Sidebar Header */\r
177
+ .hw-header {\r
178
+ display: flex;\r
179
+ align-items: center;\r
180
+ justify-content: space-between;\r
181
+ padding: 20px;\r
182
+ border-bottom: 1px solid var(--hw-border-glass);\r
183
+ }\r
184
+ \r
185
+ .hw-header-title {\r
186
+ font-size: 18px;\r
187
+ font-weight: 700;\r
188
+ color: var(--hw-text-primary);\r
189
+ margin: 0;\r
190
+ display: flex;\r
191
+ align-items: center;\r
192
+ gap: 8px;\r
193
+ }\r
194
+ \r
195
+ .hw-close-btn {\r
196
+ background: transparent;\r
197
+ border: none;\r
198
+ color: var(--hw-text-secondary);\r
199
+ font-size: 18px;\r
200
+ cursor: pointer;\r
201
+ width: 32px;\r
202
+ height: 32px;\r
203
+ display: flex;\r
204
+ align-items: center;\r
205
+ justify-content: center;\r
206
+ border-radius: 8px;\r
207
+ transition: all 0.15s;\r
208
+ }\r
209
+ \r
210
+ .hw-close-btn:hover {\r
211
+ background: var(--hw-surface);\r
212
+ color: #ef4444;\r
213
+ }\r
214
+ \r
215
+ /* Tabs Navigation */\r
216
+ .hw-tabs {\r
217
+ display: flex;\r
218
+ padding: 12px 16px;\r
219
+ gap: 4px;\r
220
+ background: var(--hw-bg-tabs);\r
221
+ border-bottom: 1px solid var(--hw-border-glass);\r
222
+ }\r
223
+ \r
224
+ .hw-tab-btn {\r
225
+ flex: 1;\r
226
+ padding: 8px 4px;\r
227
+ background: transparent;\r
228
+ border: none;\r
229
+ color: var(--hw-text-secondary);\r
230
+ font-size: 12px;\r
231
+ font-weight: 600;\r
232
+ cursor: pointer;\r
233
+ border-radius: 8px;\r
234
+ transition: all 0.2s;\r
235
+ text-align: center;\r
236
+ white-space: nowrap;\r
237
+ }\r
238
+ \r
239
+ .hw-tab-btn:hover {\r
240
+ background: var(--hw-surface);\r
241
+ color: var(--hw-text-primary);\r
242
+ }\r
243
+ \r
244
+ .hw-tab-btn.active {\r
245
+ background: var(--hw-accent);\r
246
+ color: #ffffff;\r
247
+ box-shadow: 0 2px 8px var(--hw-accent-glow);\r
248
+ }\r
249
+ \r
250
+ /* Sidebar Body Viewport */\r
251
+ .hw-body {\r
252
+ flex: 1;\r
253
+ overflow-y: auto;\r
254
+ padding: 20px;\r
255
+ box-sizing: border-box;\r
256
+ display: flex;\r
257
+ flex-direction: column;\r
258
+ }\r
259
+ \r
260
+ .hw-tab-panel {\r
261
+ display: none;\r
262
+ flex-direction: column;\r
263
+ height: 100%;\r
264
+ }\r
265
+ \r
266
+ .hw-tab-panel.active {\r
267
+ display: flex;\r
268
+ animation: fadeIn 0.25s ease-out;\r
269
+ }\r
270
+ \r
271
+ @keyframes fadeIn {\r
272
+ from {\r
273
+ opacity: 0;\r
274
+ transform: translateY(6px);\r
275
+ }\r
276
+ \r
277
+ to {\r
278
+ opacity: 1;\r
279
+ transform: translateY(0);\r
280
+ }\r
281
+ }\r
282
+ \r
283
+ /* Help Guide Accordion */\r
284
+ .hw-faq-item {\r
285
+ border: 1px solid var(--hw-border-glass);\r
286
+ border-radius: 12px;\r
287
+ margin-bottom: 12px;\r
288
+ background: rgba(255, 255, 255, 0.01);\r
289
+ overflow: hidden;\r
290
+ transition: border-color 0.2s;\r
291
+ }\r
292
+ \r
293
+ .hw-faq-item:hover {\r
294
+ border-color: var(--hw-accent-glow);\r
295
+ }\r
296
+ \r
297
+ .hw-faq-header {\r
298
+ display: flex;\r
299
+ justify-content: space-between;\r
300
+ align-items: center;\r
301
+ padding: 12px 14px;\r
302
+ cursor: pointer;\r
303
+ user-select: none;\r
304
+ }\r
305
+ \r
306
+ .hw-faq-icon {\r
307
+ font-size: 11px;\r
308
+ color: var(--hw-text-muted);\r
309
+ transition: transform 0.2s;\r
310
+ }\r
311
+ \r
312
+ .hw-faq-item.open .hw-faq-icon {\r
313
+ transform: rotate(180deg);\r
314
+ }\r
315
+ \r
316
+ .hw-faq-content {\r
317
+ max-height: 0;\r
318
+ overflow: hidden;\r
319
+ transition: max-height 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r
320
+ background: var(--hw-bg-faq-content);\r
321
+ }\r
322
+ \r
323
+ .hw-faq-inner {\r
324
+ padding: 14px 16px;\r
325
+ border-top: 1px solid var(--hw-border-glass);\r
326
+ }\r
327
+ \r
328
+ /* Dynamic Step & Image Framework Styling */\r
329
+ .hw-guide-main-title {\r
330
+ font-size: 13px;\r
331
+ font-weight: 500;\r
332
+ color: var(--hw-text-secondary);\r
333
+ margin: 0 0 16px 0;\r
334
+ line-height: 1.5;\r
335
+ }\r
336
+ \r
337
+ .hw-process-title {\r
338
+ font-size: 12px;\r
339
+ font-weight: 700;\r
340
+ text-transform: uppercase;\r
341
+ letter-spacing: 0.05em;\r
342
+ color: var(--hw-text-primary);\r
343
+ margin: 24px 0 12px 0;\r
344
+ padding-bottom: 6px;\r
345
+ border-bottom: 1px solid var(--hw-border-glass);\r
346
+ line-height: 1.4;\r
347
+ display: flex;\r
348
+ align-items: center;\r
349
+ gap: 8px;\r
350
+ }\r
351
+ \r
352
+ .hw-process-title:first-of-type {\r
353
+ margin-top: 0;\r
354
+ }\r
355
+ \r
356
+ .hw-process-title::before {\r
357
+ content: "";\r
358
+ display: inline-block;\r
359
+ width: 4px;\r
360
+ height: 12px;\r
361
+ background: var(--hw-accent);\r
362
+ border-radius: 2px;\r
363
+ }\r
364
+ \r
365
+ .hw-step-header-left {\r
366
+ display: flex;\r
367
+ align-items: center;\r
368
+ gap: 10px;\r
369
+ }\r
370
+ \r
371
+ .hw-step-number {\r
372
+ display: flex;\r
373
+ align-items: center;\r
374
+ justify-content: center;\r
375
+ width: 24px;\r
376
+ height: 24px;\r
377
+ border-radius: 50%;\r
378
+ background: var(--hw-accent);\r
379
+ color: #ffffff;\r
380
+ font-size: 11px;\r
381
+ font-weight: 700;\r
382
+ box-shadow: 0 0 8px var(--hw-accent-glow);\r
383
+ flex-shrink: 0;\r
384
+ }\r
385
+ \r
386
+ .hw-step-title {\r
387
+ font-size: 13px;\r
388
+ font-weight: 600;\r
389
+ color: var(--hw-text-primary);\r
390
+ line-height: 1.4;\r
391
+ }\r
392
+ \r
393
+ .hw-step-desc {\r
394
+ margin: 0 0 12px 0;\r
395
+ font-size: 12px;\r
396
+ line-height: 1.6;\r
397
+ color: var(--hw-text-secondary);\r
398
+ }\r
399
+ \r
400
+ .hw-step-images-list {\r
401
+ display: flex;\r
402
+ flex-direction: column;\r
403
+ gap: 12px;\r
404
+ margin-top: 12px;\r
405
+ }\r
406
+ \r
407
+ .hw-step-image-wrap {\r
408
+ border: 2px solid #0ea5e9;\r
409
+ border-radius: 12px;\r
410
+ padding: 4px;\r
411
+ background: rgba(14, 165, 233, 0.04);\r
412
+ box-shadow: 0 0 12px rgba(14, 165, 233, 0.2);\r
413
+ overflow: hidden;\r
414
+ transition: transform 0.2s, box-shadow 0.2s;\r
415
+ }\r
416
+ \r
417
+ .hw-step-image-wrap:hover {\r
418
+ transform: scale(1.01);\r
419
+ box-shadow: 0 0 16px rgba(14, 165, 233, 0.35);\r
420
+ }\r
421
+ \r
422
+ .hw-step-img {\r
423
+ width: 100%;\r
424
+ height: auto;\r
425
+ display: block;\r
426
+ border-radius: 8px;\r
427
+ object-fit: contain;\r
428
+ cursor: zoom-in;\r
429
+ }\r
430
+ \r
431
+ .hw-step-note {\r
432
+ display: flex;\r
433
+ gap: 8px;\r
434
+ background: rgba(59, 130, 246, 0.08);\r
435
+ border: 1px solid rgba(59, 130, 246, 0.2);\r
436
+ border-radius: 8px;\r
437
+ padding: 10px 12px;\r
438
+ margin-top: 12px;\r
439
+ align-items: flex-start;\r
440
+ box-sizing: border-box;\r
441
+ }\r
442
+ \r
443
+ .hw-note-icon {\r
444
+ color: #3b82f6;\r
445
+ flex-shrink: 0;\r
446
+ margin-top: 2px;\r
447
+ }\r
448
+ \r
449
+ .hw-note-desc {\r
450
+ margin: 0;\r
451
+ font-size: 11px;\r
452
+ line-height: 1.5;\r
453
+ color: var(--hw-text-secondary);\r
454
+ text-align: left;\r
455
+ }\r
456
+ \r
457
+ .hw-step-important {\r
458
+ display: flex;\r
459
+ gap: 8px;\r
460
+ background: rgba(245, 158, 11, 0.08);\r
461
+ border: 1px solid rgba(245, 158, 11, 0.2);\r
462
+ border-radius: 8px;\r
463
+ padding: 10px 12px;\r
464
+ margin-top: 12px;\r
465
+ align-items: flex-start;\r
466
+ box-sizing: border-box;\r
467
+ text-align: left;\r
468
+ }\r
469
+ \r
470
+ .hw-important-icon {\r
471
+ color: #f59e0b;\r
472
+ flex-shrink: 0;\r
473
+ margin-top: 2px;\r
474
+ }\r
475
+ \r
476
+ .hw-important-title {\r
477
+ margin: 0 0 2px 0;\r
478
+ font-size: 11px;\r
479
+ font-weight: 700;\r
480
+ color: #f59e0b;\r
481
+ }\r
482
+ \r
483
+ .hw-important-desc {\r
484
+ margin: 0;\r
485
+ font-size: 11px;\r
486
+ line-height: 1.5;\r
487
+ color: var(--hw-text-secondary);\r
488
+ }\r
489
+ \r
490
+ /* Support & Feedback Form */\r
491
+ .hw-field {\r
492
+ margin-bottom: 16px;\r
493
+ }\r
494
+ \r
495
+ .hw-label {\r
496
+ display: block;\r
497
+ font-size: 11px;\r
498
+ font-weight: 600;\r
499
+ color: var(--hw-text-secondary);\r
500
+ text-transform: uppercase;\r
501
+ letter-spacing: 0.05em;\r
502
+ margin-bottom: 6px;\r
503
+ }\r
504
+ \r
505
+ .hw-input,\r
506
+ .hw-textarea,\r
507
+ .hw-select {\r
508
+ width: 100%;\r
509
+ padding: 10px 12px;\r
510
+ border-radius: 8px;\r
511
+ font-size: 13px;\r
512
+ background: var(--hw-input-bg);\r
513
+ border: 1px solid var(--hw-input-border);\r
514
+ color: var(--hw-text-primary);\r
515
+ outline: none;\r
516
+ box-sizing: border-box;\r
517
+ transition: all 0.2s;\r
518
+ }\r
519
+ \r
520
+ .hw-input:focus,\r
521
+ .hw-textarea:focus,\r
522
+ .hw-select:focus {\r
523
+ border-color: var(--hw-input-focus);\r
524
+ box-shadow: 0 0 0 2px var(--hw-accent-glow);\r
525
+ }\r
526
+ \r
527
+ .hw-textarea {\r
528
+ resize: vertical;\r
529
+ min-height: 90px;\r
530
+ }\r
531
+ \r
532
+ .hw-select option {\r
533
+ background: var(--hw-bg-sidebar);\r
534
+ color: var(--hw-text-primary);\r
535
+ }\r
536
+ \r
537
+ /* Upload Zone */\r
538
+ .hw-upload-zone {\r
539
+ width: 100%;\r
540
+ border-radius: 8px;\r
541
+ box-sizing: border-box;\r
542
+ border: 1px dashed var(--hw-input-border);\r
543
+ display: flex;\r
544
+ flex-direction: column;\r
545
+ align-items: center;\r
546
+ gap: 6px;\r
547
+ padding: 16px 12px;\r
548
+ transition: all 0.2s;\r
549
+ cursor: pointer;\r
550
+ }\r
551
+ \r
552
+ .hw-upload-zone.dragover {\r
553
+ border-color: var(--hw-accent);\r
554
+ background: var(--hw-accent-glow);\r
555
+ }\r
556
+ \r
557
+ .hw-upload-zone svg {\r
558
+ color: var(--hw-text-muted);\r
559
+ }\r
560
+ \r
561
+ .hw-upload-hint {\r
562
+ font-size: 12px;\r
563
+ color: var(--hw-text-secondary);\r
564
+ margin: 0;\r
565
+ text-align: center;\r
566
+ }\r
567
+ \r
568
+ .hw-upload-sub {\r
569
+ font-size: 10px;\r
570
+ color: var(--hw-text-muted);\r
571
+ margin: 0;\r
572
+ }\r
573
+ \r
574
+ .hw-upload-actions {\r
575
+ display: flex;\r
576
+ gap: 6px;\r
577
+ margin-top: 4px;\r
578
+ }\r
579
+ \r
580
+ .hw-btn-paste,\r
581
+ .hw-btn-browse {\r
582
+ display: flex;\r
583
+ align-items: center;\r
584
+ gap: 5px;\r
585
+ padding: 4px 10px;\r
586
+ border-radius: 6px;\r
587
+ font-size: 11px;\r
588
+ font-weight: 600;\r
589
+ cursor: pointer;\r
590
+ border: 1px solid var(--hw-input-border);\r
591
+ background: var(--hw-surface);\r
592
+ color: var(--hw-text-secondary);\r
593
+ transition: all 0.15s;\r
594
+ }\r
595
+ \r
596
+ .hw-btn-paste:hover,\r
597
+ .hw-btn-browse:hover {\r
598
+ background: var(--hw-surface-hover);\r
599
+ color: var(--hw-text-primary);\r
600
+ }\r
601
+ \r
602
+ .hw-file-input {\r
603
+ display: none;\r
604
+ }\r
605
+ \r
606
+ .hw-preview-wrap {\r
607
+ position: relative;\r
608
+ }\r
609
+ \r
610
+ .hw-preview-img {\r
611
+ width: 100%;\r
612
+ max-height: 120px;\r
613
+ object-fit: cover;\r
614
+ border-radius: 8px;\r
615
+ border: 1px solid var(--hw-input-border);\r
616
+ display: block;\r
617
+ cursor: zoom-in;\r
618
+ }\r
619
+ \r
620
+ .hw-preview-remove {\r
621
+ position: absolute;\r
622
+ top: 6px;\r
623
+ right: 6px;\r
624
+ background: rgba(0, 0, 0, 0.7);\r
625
+ border: none;\r
626
+ border-radius: 6px;\r
627
+ color: #ef4444;\r
628
+ cursor: pointer;\r
629
+ padding: 3px 6px;\r
630
+ font-size: 10px;\r
631
+ font-weight: 700;\r
632
+ transition: background 0.15s;\r
633
+ }\r
634
+ \r
635
+ .hw-preview-remove:hover {\r
636
+ background: rgba(0, 0, 0, 0.9);\r
637
+ }\r
638
+ \r
639
+ .hw-preview-name {\r
640
+ font-size: 11px;\r
641
+ color: var(--hw-text-muted);\r
642
+ margin-top: 4px;\r
643
+ text-align: center;\r
644
+ text-overflow: ellipsis;\r
645
+ overflow: hidden;\r
646
+ white-space: nowrap;\r
647
+ }\r
648
+ \r
649
+ /* Submit button */\r
650
+ .hw-btn-submit {\r
651
+ width: 100%;\r
652
+ padding: 11px;\r
653
+ border-radius: 8px;\r
654
+ font-size: 13px;\r
655
+ font-weight: 700;\r
656
+ background: var(--hw-accent);\r
657
+ border: none;\r
658
+ color: #ffffff;\r
659
+ cursor: pointer;\r
660
+ transition: all 0.2s;\r
661
+ box-shadow: 0 4px 12px var(--hw-accent-glow);\r
662
+ }\r
663
+ \r
664
+ .hw-btn-submit:hover {\r
665
+ background: var(--hw-accent-hover);\r
666
+ box-shadow: 0 4px 18px var(--hw-accent-glow);\r
667
+ transform: translateY(-1px);\r
668
+ }\r
669
+ \r
670
+ .hw-btn-submit:disabled {\r
671
+ opacity: 0.5;\r
672
+ cursor: not-allowed;\r
673
+ transform: none;\r
674
+ box-shadow: none;\r
675
+ }\r
676
+ \r
677
+ /* Status Notifications */\r
678
+ .hw-status-msg {\r
679
+ padding: 10px;\r
680
+ border-radius: 8px;\r
681
+ font-size: 12px;\r
682
+ font-weight: 500;\r
683
+ text-align: center;\r
684
+ margin-bottom: 12px;\r
685
+ animation: slideDown 0.2s ease;\r
686
+ }\r
687
+ \r
688
+ @keyframes slideDown {\r
689
+ from {\r
690
+ transform: translateY(-8px);\r
691
+ opacity: 0;\r
692
+ }\r
693
+ \r
694
+ to {\r
695
+ transform: translateY(0);\r
696
+ opacity: 1;\r
697
+ }\r
698
+ }\r
699
+ \r
700
+ .hw-status-msg.success {\r
701
+ background: rgba(52, 211, 153, 0.15);\r
702
+ color: #34d399;\r
703
+ border: 1px solid rgba(52, 211, 153, 0.25);\r
704
+ }\r
705
+ \r
706
+ .hw-status-msg.error {\r
707
+ background: rgba(239, 68, 68, 0.15);\r
708
+ color: #f87171;\r
709
+ border: 1px solid rgba(239, 68, 68, 0.25);\r
710
+ }\r
711
+ \r
712
+ /* Ticket Status Listing */\r
713
+ .hw-ticket-list {\r
714
+ display: flex;\r
715
+ flex-direction: column;\r
716
+ gap: 10px;\r
717
+ flex: 1;\r
718
+ }\r
719
+ \r
720
+ .hw-ticket-card {\r
721
+ background: rgba(255, 255, 255, 0.02);\r
722
+ border: 1px solid var(--hw-border-glass);\r
723
+ border-radius: 12px;\r
724
+ padding: 14px;\r
725
+ transition: all 0.2s;\r
726
+ }\r
727
+ \r
728
+ .hw-ticket-card:hover {\r
729
+ border-color: var(--hw-border-glass);\r
730
+ background: rgba(255, 255, 255, 0.04);\r
731
+ transform: translateY(-1px);\r
732
+ }\r
733
+ \r
734
+ .hw-ticket-card-header {\r
735
+ display: flex;\r
736
+ justify-content: space-between;\r
737
+ align-items: flex-start;\r
738
+ gap: 8px;\r
739
+ margin-bottom: 6px;\r
740
+ }\r
741
+ \r
742
+ .hw-ticket-card-number {\r
743
+ font-size: 11px;\r
744
+ font-family: monospace;\r
745
+ color: var(--hw-text-muted);\r
746
+ font-weight: 600;\r
747
+ }\r
748
+ \r
749
+ .hw-ticket-card-badge {\r
750
+ font-size: 10px;\r
751
+ font-weight: 700;\r
752
+ text-transform: uppercase;\r
753
+ padding: 2px 8px;\r
754
+ border-radius: 9999px;\r
755
+ letter-spacing: 0.05em;\r
756
+ }\r
757
+ \r
758
+ .hw-badge-open {\r
759
+ color: var(--hw-color-open);\r
760
+ background: var(--hw-bg-open);\r
761
+ }\r
762
+ \r
763
+ .hw-badge-progress {\r
764
+ color: var(--hw-color-progress);\r
765
+ background: var(--hw-bg-progress);\r
766
+ }\r
767
+ \r
768
+ .hw-badge-pending {\r
769
+ color: var(--hw-color-pending);\r
770
+ background: var(--hw-bg-pending);\r
771
+ }\r
772
+ \r
773
+ .hw-badge-resolved {\r
774
+ color: var(--hw-color-resolved);\r
775
+ background: var(--hw-bg-resolved);\r
776
+ }\r
777
+ \r
778
+ .hw-badge-closed {\r
779
+ color: var(--hw-color-closed);\r
780
+ background: var(--hw-bg-closed);\r
781
+ }\r
782
+ \r
783
+ .hw-ticket-card-subject {\r
784
+ font-size: 13px;\r
785
+ font-weight: 600;\r
786
+ color: var(--hw-text-primary);\r
787
+ margin: 0 0 6px 0;\r
788
+ line-height: 1.4;\r
789
+ }\r
790
+ \r
791
+ .hw-ticket-card-footer {\r
792
+ display: flex;\r
793
+ justify-content: space-between;\r
794
+ font-size: 10px;\r
795
+ color: var(--hw-text-muted);\r
796
+ }\r
797
+ \r
798
+ /* Utility Empty & Loader States */\r
799
+ .hw-empty-state {\r
800
+ display: flex;\r
801
+ flex-direction: column;\r
802
+ align-items: center;\r
803
+ justify-content: center;\r
804
+ gap: 8px;\r
805
+ color: var(--hw-text-muted);\r
806
+ font-size: 12px;\r
807
+ text-align: center;\r
808
+ padding: 40px 20px;\r
809
+ flex: 1;\r
810
+ }\r
811
+ \r
812
+ .hw-empty-state svg {\r
813
+ color: var(--hw-text-muted);\r
814
+ opacity: 0.5;\r
815
+ }\r
816
+ \r
817
+ .hw-loader {\r
818
+ width: 24px;\r
819
+ height: 24px;\r
820
+ border: 2px solid var(--hw-border-glass);\r
821
+ border-top-color: var(--hw-accent);\r
822
+ border-radius: 50%;\r
823
+ animation: hw-spin 0.6s linear infinite;\r
824
+ margin: 40px auto;\r
825
+ }\r
826
+ \r
827
+ @keyframes hw-spin {\r
828
+ to {\r
829
+ transform: rotate(360deg);\r
830
+ }\r
831
+ }\r
832
+ \r
833
+ .hw-list-header {\r
834
+ display: flex;\r
835
+ justify-content: space-between;\r
836
+ align-items: center;\r
837
+ margin-bottom: 12px;\r
838
+ }\r
839
+ \r
840
+ .hw-list-title {\r
841
+ font-size: 12px;\r
842
+ font-weight: 700;\r
843
+ text-transform: uppercase;\r
844
+ color: var(--hw-text-secondary);\r
845
+ letter-spacing: 0.05em;\r
846
+ margin: 0;\r
847
+ }\r
848
+ \r
849
+ .hw-btn-refresh {\r
850
+ background: transparent;\r
851
+ border: none;\r
852
+ color: var(--hw-accent);\r
853
+ font-size: 11px;\r
854
+ font-weight: 600;\r
855
+ cursor: pointer;\r
856
+ display: flex;\r
857
+ align-items: center;\r
858
+ gap: 3px;\r
859
+ padding: 2px 6px;\r
860
+ border-radius: 4px;\r
861
+ transition: all 0.15s;\r
862
+ }\r
863
+ \r
864
+ .hw-btn-refresh:hover {\r
865
+ background: var(--hw-surface);\r
866
+ color: var(--hw-accent-hover);\r
867
+ }\r
868
+ \r
869
+ /* Lightbox Fullscreen Modal Overlay */\r
870
+ .hw-lightbox {\r
871
+ position: fixed;\r
872
+ top: 0;\r
873
+ left: 0;\r
874
+ width: 100vw;\r
875
+ height: 100vh;\r
876
+ background: rgba(4, 7, 13, 0.88);\r
877
+ backdrop-filter: blur(8px);\r
878
+ -webkit-backdrop-filter: blur(8px);\r
879
+ z-index: 1000000;\r
880
+ display: flex;\r
881
+ align-items: center;\r
882
+ justify-content: center;\r
883
+ opacity: 0;\r
884
+ pointer-events: none;\r
885
+ transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1);\r
886
+ }\r
887
+ \r
888
+ .hw-lightbox.open {\r
889
+ opacity: 1;\r
890
+ pointer-events: auto;\r
891
+ }\r
892
+ \r
893
+ .hw-lightbox-img {\r
894
+ max-width: 90%;\r
895
+ max-height: 85%;\r
896
+ object-fit: contain;\r
897
+ border-radius: 12px;\r
898
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.6);\r
899
+ border: 1px solid rgba(255, 255, 255, 0.1);\r
900
+ transform: scale(0.95);\r
901
+ transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);\r
902
+ background: #000;\r
903
+ }\r
904
+ \r
905
+ .hw-lightbox.open .hw-lightbox-img {\r
906
+ transform: scale(1);\r
907
+ }\r
908
+ \r
909
+ .hw-lightbox-close {\r
910
+ position: absolute;\r
911
+ top: 24px;\r
912
+ right: 24px;\r
913
+ background: rgba(255, 255, 255, 0.08);\r
914
+ border: 1px solid rgba(255, 255, 255, 0.1);\r
915
+ border-radius: 50%;\r
916
+ width: 44px;\r
917
+ height: 44px;\r
918
+ color: #ffffff;\r
919
+ font-size: 22px;\r
920
+ cursor: pointer;\r
921
+ display: flex;\r
922
+ align-items: center;\r
923
+ justify-content: center;\r
924
+ transition: all 0.2s;\r
925
+ outline: none;\r
926
+ }\r
927
+ \r
928
+ .hw-lightbox-close:hover {\r
929
+ background: rgba(255, 255, 255, 0.18);\r
930
+ transform: scale(1.05);\r
931
+ color: #f43f5e;\r
932
+ }\r
933
+ \r
934
+ /* Ticket Comments Section styling */\r
935
+ .hw-ticket-comments-section {\r
936
+ margin-top: 10px;\r
937
+ border-top: 1px solid var(--hw-border-glass);\r
938
+ padding-top: 10px;\r
939
+ width: 100%;\r
940
+ }\r
941
+ \r
942
+ .hw-comments-toggle-btn {\r
943
+ display: flex;\r
944
+ align-items: center;\r
945
+ gap: 6px;\r
946
+ background: transparent;\r
947
+ border: none;\r
948
+ color: var(--hw-text-secondary);\r
949
+ font-size: 11px;\r
950
+ font-weight: 600;\r
951
+ cursor: pointer;\r
952
+ padding: 4px 8px;\r
953
+ border-radius: 6px;\r
954
+ transition: all 0.2s ease;\r
955
+ width: fit-content;\r
956
+ }\r
957
+ \r
958
+ .hw-comments-toggle-btn:hover {\r
959
+ background: var(--hw-surface);\r
960
+ color: var(--hw-text-primary);\r
961
+ }\r
962
+ \r
963
+ .hw-comments-toggle-chevron {\r
964
+ font-size: 9px;\r
965
+ color: var(--hw-text-muted);\r
966
+ transition: transform 0.25s ease;\r
967
+ margin-left: 2px;\r
968
+ }\r
969
+ \r
970
+ .hw-comments-toggle-btn.open .hw-comments-toggle-chevron {\r
971
+ transform: rotate(180deg);\r
972
+ }\r
973
+ \r
974
+ .hw-comments-list-wrapper {\r
975
+ max-height: 0;\r
976
+ overflow: hidden;\r
977
+ transition: max-height 0.25s cubic-bezier(0.4, 0, 0.2, 1);\r
978
+ }\r
979
+ \r
980
+ .hw-comments-list {\r
981
+ display: flex;\r
982
+ flex-direction: column;\r
983
+ gap: 8px;\r
984
+ padding: 8px 4px 4px 4px;\r
985
+ }\r
986
+ \r
987
+ .hw-comment-item {\r
988
+ background: rgba(255, 255, 255, 0.015);\r
989
+ border: 1px solid var(--hw-border-glass);\r
990
+ border-radius: 8px;\r
991
+ padding: 10px;\r
992
+ box-sizing: border-box;\r
993
+ }\r
994
+ \r
995
+ /* Highlights the staff's response with accent color */\r
996
+ .hw-comment-item.staff {\r
997
+ background: rgba(93, 79, 255, 0.04);\r
998
+ border-left: 3px solid var(--hw-accent);\r
999
+ }\r
1000
+ \r
1001
+ .hw-comment-meta {\r
1002
+ display: flex;\r
1003
+ justify-content: space-between;\r
1004
+ align-items: center;\r
1005
+ margin-bottom: 6px;\r
1006
+ font-size: 10px;\r
1007
+ }\r
1008
+ \r
1009
+ .hw-comment-author {\r
1010
+ font-weight: 700;\r
1011
+ color: var(--hw-text-primary);\r
1012
+ display: flex;\r
1013
+ align-items: center;\r
1014
+ gap: 6px;\r
1015
+ }\r
1016
+ \r
1017
+ .hw-comment-staff-badge {\r
1018
+ background: var(--hw-accent);\r
1019
+ color: #ffffff;\r
1020
+ font-size: 8px;\r
1021
+ padding: 1px 5px;\r
1022
+ border-radius: 4px;\r
1023
+ text-transform: uppercase;\r
1024
+ font-weight: 800;\r
1025
+ letter-spacing: 0.03em;\r
1026
+ }\r
1027
+ \r
1028
+ .hw-comment-date {\r
1029
+ color: var(--hw-text-muted);\r
1030
+ }\r
1031
+ \r
1032
+ .hw-comment-text {\r
1033
+ margin: 0;\r
1034
+ font-size: 11px;\r
1035
+ line-height: 1.5;\r
1036
+ color: var(--hw-text-secondary);\r
1037
+ word-break: break-word;\r
1038
+ }`});var bt={};Je(bt,{HelpSidebarWidgetElement:()=>pe});var Vt,pe,Ne=Ze(()=>{"use strict";mt();Vt=`
1039
+ <button class="hw-trigger-btn" id="hw-trigger-btn" title="Open Help & Support" aria-label="Help and Support">
1040
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round">
1041
+ <circle cx="12" cy="12" r="10"/>
1042
+ <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>
1043
+ <line x1="12" y1="17" x2="12.01" y2="17"/>
1044
+ </svg>
1045
+ </button>
1046
+
1047
+ <div class="hw-backdrop" id="hw-backdrop"></div>
1048
+
1049
+ <div class="hw-lightbox" id="hw-lightbox">
1050
+ <button class="hw-lightbox-close" id="hw-lightbox-close" aria-label="Close image preview">\u2715</button>
1051
+ <img class="hw-lightbox-img" id="hw-lightbox-img" src="" alt="Enlarged screenshot" />
1052
+ </div>
1053
+
1054
+ <div class="hw-sidebar" id="hw-sidebar">
1055
+ <div class="hw-header">
1056
+ <h2 class="hw-header-title">
1057
+ <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
1058
+ <circle cx="12" cy="12" r="10"/>
1059
+ <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>
1060
+ <line x1="12" y1="17" x2="12.01" y2="17"/>
1061
+ </svg>
1062
+ Help & Support
1063
+ </h2>
1064
+ <button class="hw-close-btn" id="hw-close-btn" aria-label="Close sidebar">\u2715</button>
1065
+ </div>
1066
+
1067
+ <div class="hw-tabs">
1068
+ <button class="hw-tab-btn active" data-tab="guide">Help Guide</button>
1069
+ <button class="hw-tab-btn" data-tab="feedback">Support & Feedback</button>
1070
+ <button class="hw-tab-btn" data-tab="status">Ticket Status</button>
1071
+ </div>
1072
+
1073
+ <div class="hw-body">
1074
+ <!-- 1. HELP GUIDE PANEL -->
1075
+ <div class="hw-tab-panel active" id="hw-panel-guide">
1076
+ <div id="hw-guide-loading" class="hw-loader"></div>
1077
+ <div id="hw-guide-container"></div>
1078
+ </div>
1079
+
1080
+ <!-- 2. SUPPORT & FEEDBACK PANEL -->
1081
+ <div class="hw-tab-panel" id="hw-panel-feedback">
1082
+ <div id="hw-form-status" style="display:none"></div>
1083
+
1084
+ <div class="hw-field">
1085
+ <label class="hw-label" for="hw-name">Full Name *</label>
1086
+ <input class="hw-input" id="hw-name" type="text" placeholder="Your name" required />
1087
+ </div>
1088
+
1089
+ <div class="hw-field">
1090
+ <label class="hw-label" for="hw-email">Email Address *</label>
1091
+ <input class="hw-input" id="hw-email" type="email" placeholder="your.email@domain.com" required />
1092
+ </div>
1093
+
1094
+ <div id="hw-custom-fields-container"></div>
1095
+
1096
+ <div class="hw-field">
1097
+ <label class="hw-label" for="hw-subject">Subject *</label>
1098
+ <input class="hw-input" id="hw-subject" type="text" placeholder="Brief summary of your request" required />
1099
+ </div>
1100
+
1101
+ <div class="hw-field">
1102
+ <label class="hw-label" for="hw-category">Category *</label>
1103
+ <select class="hw-select" id="hw-category">
1104
+ <option value="bug">Bug Report \u{1F41B}</option>
1105
+ <option value="feature">Feature Request \u{1F4A1}</option>
1106
+ <option value="support">General Support \u2754</option>
1107
+ <option value="other">Other \u{1F4DD}</option>
1108
+ </select>
1109
+ </div>
1110
+
1111
+ <div class="hw-field">
1112
+ <label class="hw-label" for="hw-description">Description *</label>
1113
+ <textarea class="hw-textarea" id="hw-description" placeholder="Describe your request in detail..." required></textarea>
1114
+ </div>
1115
+
1116
+ <div class="hw-field">
1117
+ <label class="hw-label">Screenshot (optional)</label>
1118
+ <input class="hw-file-input" id="hw-file" type="file" accept="image/*" />
1119
+ <div class="hw-upload-zone" id="hw-upload-zone" tabindex="0">
1120
+ <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
1121
+ <rect x="3" y="3" width="18" height="18" rx="2"/>
1122
+ <circle cx="8.5" cy="8.5" r="1.5"/>
1123
+ <polyline points="21 15 16 10 5 21"/>
1124
+ </svg>
1125
+ <p class="hw-upload-hint">Drag & drop image here, or paste</p>
1126
+ <p class="hw-upload-sub">PNG, JPG, GIF up to 10MB</p>
1127
+ <div class="hw-upload-actions">
1128
+ <button class="hw-btn-paste" id="hw-paste-btn" type="button">
1129
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
1130
+ <rect x="8" y="2" width="8" height="4" rx="1"/>
1131
+ <path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/>
1132
+ </svg>
1133
+ Paste (Ctrl+V)
1134
+ </button>
1135
+ <button class="hw-btn-browse" id="hw-browse-btn" type="button">
1136
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
1137
+ <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
1138
+ <polyline points="17 8 12 3 7 8"/>
1139
+ <line x1="12" y1="3" x2="12" y2="15"/>
1140
+ </svg>
1141
+ Browse
1142
+ </button>
1143
+ </div>
1144
+ </div>
1145
+ <div id="hw-preview" style="display:none"></div>
1146
+ </div>
1147
+
1148
+ <div style="margin-top:auto; padding-top:16px;">
1149
+ <button class="hw-btn-submit" id="hw-submit-btn">Submit Request</button>
1150
+ </div>
1151
+ </div>
1152
+
1153
+ <!-- 3. TICKET STATUS PANEL -->
1154
+ <div class="hw-tab-panel" id="hw-panel-status">
1155
+ <div class="hw-list-header">
1156
+ <h3 class="hw-list-title">Your Submitted Tickets</h3>
1157
+ <button class="hw-btn-refresh" id="hw-refresh-btn" type="button">
1158
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
1159
+ <path d="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"/>
1160
+ </svg>
1161
+ Refresh Status
1162
+ </button>
1163
+ </div>
1164
+
1165
+ <div id="hw-tickets-loading" class="hw-loader" style="display:none"></div>
1166
+ <div class="hw-ticket-list" id="hw-ticket-list"></div>
1167
+ </div>
1168
+ </div>
1169
+ </div>
1170
+ `,pe=class extends HTMLElement{constructor(){super();this._screenshotFile=null;this._guideData=null;this._customFields=[];this._shadow=this.attachShadow({mode:"open"})}static get observedAttributes(){return["user-name","user-email","button-style","theme","user-role","custom-fields"]}get userRole(){return this.getAttribute("user-role")||""}set userRole(n){this.setAttribute("user-role",n)}get customFields(){return this._customFields}set customFields(n){typeof n=="string"?this._parseCustomFieldsAttribute(n):Array.isArray(n)?this._customFields=n:this._customFields=[],this._renderCustomFields()}_parseCustomFieldsAttribute(n){if(n)try{let s=JSON.parse(n);Array.isArray(s)&&(this._customFields=s)}catch(s){console.warn("Failed to parse custom-fields attribute JSON:",s)}}_getCustomFieldsList(){if(this._customFields&&this._customFields.length>0)return this._customFields;let n=this.getAttribute("custom-fields");if(n)try{let s=JSON.parse(n);if(Array.isArray(s))return s}catch{}return[]}_renderCustomFields(){let n=this._shadow?.getElementById("hw-custom-fields-container");if(!n)return;let s={};n.querySelectorAll(".hw-custom-input").forEach(m=>{let f=m.dataset.customId;f&&m.value&&(s[f]=m.value)});let c=this._getCustomFieldsList();if(!c||c.length===0){n.innerHTML="";return}let d="";c.forEach(m=>{let f=`hw-custom-${m.id}`,h=m.required?" *":"",R=m.required?"required":"",p=m.type||"text",S=m.placeholder||"",y=s[m.id]!==void 0?s[m.id]:m.defaultValue||"";p==="textarea"?d+=`
1171
+ <div class="hw-field">
1172
+ <label class="hw-label" for="${f}">${m.label}${h}</label>
1173
+ <textarea
1174
+ class="hw-textarea hw-custom-input"
1175
+ data-custom-id="${m.id}"
1176
+ id="${f}"
1177
+ placeholder="${S}"
1178
+ ${R}
1179
+ >${y}</textarea>
1180
+ </div>
1181
+ `:d+=`
1182
+ <div class="hw-field">
1183
+ <label class="hw-label" for="${f}">${m.label}${h}</label>
1184
+ <input
1185
+ class="hw-input hw-custom-input"
1186
+ data-custom-id="${m.id}"
1187
+ id="${f}"
1188
+ type="${p}"
1189
+ placeholder="${S}"
1190
+ value="${y}"
1191
+ ${R}
1192
+ />
1193
+ </div>
1194
+ `}),n.innerHTML=d}attributeChangedCallback(n,s,i){if(this._shadow){if(n==="user-name"){let c=this._shadow.getElementById("hw-name");c&&(c.value=i||"")}if(n==="user-email"){let c=this._shadow.getElementById("hw-email");c&&(c.value=i||"")}n==="user-role"&&this._guideData&&this._renderHelpGuide(this._guideData),n==="custom-fields"&&(this._parseCustomFieldsAttribute(i),this._renderCustomFields())}}connectedCallback(){if(this._shadow.innerHTML=`<style>${wt}</style>${Vt}`,!document.getElementById("hw-font-link")){let i=document.createElement("link");i.id="hw-font-link",i.rel="stylesheet",i.href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",document.head.appendChild(i)}this._applyAttributes(),this._bindEvents(),this._parseCustomFieldsAttribute(this.getAttribute("custom-fields")),this._renderCustomFields();let n=this.getAttribute("user-name");if(n){let i=this._shadow.getElementById("hw-name");i&&(i.value=n)}let s=this.getAttribute("user-email");if(s){let i=this._shadow.getElementById("hw-email");i&&(i.value=s)}this._loadLocalHelpGuide()}_applyAttributes(){let n=this._shadow.getElementById("hw-trigger-btn");if(!n)return;let s=this.getAttribute("button-style");s==="minimal"?n.classList.add("minimal"):s==="hidden"&&n.classList.add("hidden")}_bindEvents(){let n=this._shadow;n.getElementById("hw-trigger-btn")?.addEventListener("click",()=>this.openSidebar()),n.getElementById("hw-close-btn")?.addEventListener("click",()=>this.closeSidebar()),n.getElementById("hw-backdrop")?.addEventListener("click",()=>this.closeSidebar());let s=n.querySelectorAll(".hw-tab-btn");s.forEach(h=>{h.addEventListener("click",()=>{s.forEach(S=>S.classList.remove("active")),n.querySelectorAll(".hw-tab-panel").forEach(S=>S.classList.remove("active")),h.classList.add("active");let R=h,p=`hw-panel-${R.dataset.tab}`;n.getElementById(p)?.classList.add("active"),R.dataset.tab==="status"&&this._loadTicketsStatus()})});let i=n.getElementById("hw-guide-container");i&&i.addEventListener("click",h=>{let p=h.target.closest(".hw-faq-header");if(!p)return;let S=p.parentElement;if(!S)return;let y=S.querySelector(".hw-faq-content");if(!y)return;let A=S.classList.contains("open");i.querySelectorAll(".hw-faq-item").forEach(E=>{E.classList.remove("open");let L=E.querySelector(".hw-faq-content");L&&(L.style.maxHeight="0px")}),A||(S.classList.add("open"),y.style.maxHeight=y.scrollHeight+"px")});let c=n.getElementById("hw-file");n.getElementById("hw-browse-btn")?.addEventListener("click",h=>{h.stopPropagation(),c?.click()}),c?.addEventListener("change",()=>{c.files&&c.files[0]&&this._handleFile(c.files[0])}),n.getElementById("hw-paste-btn")?.addEventListener("click",h=>{h.stopPropagation(),this._pasteFromClipboard()}),n.getElementById("hw-sidebar")?.addEventListener("paste",h=>{let R=h.clipboardData?.items||[];for(let p of R)if(p.type.startsWith("image/")){let S=p.getAsFile();if(S){this._handleFile(S);break}}});let d=n.getElementById("hw-upload-zone");d?.addEventListener("dragover",h=>{h.preventDefault(),d.classList.add("dragover")}),d?.addEventListener("dragleave",()=>d.classList.remove("dragover")),d?.addEventListener("drop",h=>{h.preventDefault(),d.classList.remove("dragover");let R=h.dataTransfer.files[0];R&&R.type.startsWith("image/")&&this._handleFile(R)}),n.getElementById("hw-submit-btn")?.addEventListener("click",()=>this._submitTicket()),n.getElementById("hw-refresh-btn")?.addEventListener("click",()=>this._loadTicketsStatus());let m=n.getElementById("hw-ticket-list");m&&m.addEventListener("click",h=>{let p=h.target.closest(".hw-comments-toggle-btn");if(!p)return;let S=p.dataset.ticket,y=m.querySelector(`#comments-list-${S}`);if(!y)return;p.classList.contains("open")?(p.classList.remove("open"),y.style.maxHeight="0px"):(p.classList.add("open"),y.style.maxHeight=y.scrollHeight+"px")}),i&&i.addEventListener("click",h=>{let R=h.target;if(R.classList.contains("hw-step-img")){let p=R.src;this._openLightbox(p)}});let f=n.getElementById("hw-preview");f&&f.addEventListener("click",h=>{let R=h.target;if(R.classList.contains("hw-preview-img")){let p=R.src;this._openLightbox(p)}}),n.getElementById("hw-lightbox-close")?.addEventListener("click",()=>this._closeLightbox()),n.getElementById("hw-lightbox")?.addEventListener("click",h=>{h.target===n.getElementById("hw-lightbox")&&this._closeLightbox()})}openSidebar(){this._shadow.getElementById("hw-sidebar")?.classList.add("open"),this._shadow.getElementById("hw-backdrop")?.classList.add("open")}closeSidebar(){this._shadow.getElementById("hw-sidebar")?.classList.remove("open"),this._shadow.getElementById("hw-backdrop")?.classList.remove("open"),this._hideStatus()}_openLightbox(n){let s=this._shadow.getElementById("hw-lightbox"),i=this._shadow.getElementById("hw-lightbox-img");s&&i&&(i.src=n,s.classList.add("open"))}_closeLightbox(){let n=this._shadow.getElementById("hw-lightbox");n&&n.classList.remove("open")}async _pasteFromClipboard(){try{let n=await navigator.clipboard.read();for(let s of n){let i=s.types.find(c=>c.startsWith("image/"));if(i){let c=await s.getType(i);this._handleFile(new File([c],"screenshot.png",{type:i}));return}}this._showStatus("No image found in clipboard. Copy a screenshot first, then paste.","error")}catch{this._showStatus("Press Ctrl+V inside this sidebar to paste a screenshot.","error")}}_handleFile(n){if(!n.type.startsWith("image/")){this._showStatus("Please upload an image file (PNG, JPG, GIF).","error");return}if(n.size>10*1024*1024){this._showStatus("Screenshot must be smaller than 10MB.","error");return}this._screenshotFile=n,this._hideStatus();let s=URL.createObjectURL(n),i=this._shadow.getElementById("hw-upload-zone"),c=this._shadow.getElementById("hw-preview");i&&(i.style.display="none"),c&&(c.style.display="block",c.innerHTML=`
1195
+ <div class="hw-preview-wrap">
1196
+ <img class="hw-preview-img" src="${s}" alt="Screenshot preview" />
1197
+ <button class="hw-preview-remove" id="hw-remove-ss-btn" type="button">\u2715 Remove</button>
1198
+ </div>
1199
+ <p class="hw-preview-name">${n.name}</p>
1200
+ `,c.querySelector("#hw-remove-ss-btn")?.addEventListener("click",()=>this._removeFile()))}_removeFile(){this._screenshotFile=null;let n=this._shadow.getElementById("hw-file");n&&(n.value="");let s=this._shadow.getElementById("hw-upload-zone");s&&(s.style.display="flex");let i=this._shadow.getElementById("hw-preview");i&&(i.style.display="none",i.innerHTML="")}_resetForm(){let n=this._shadow.getElementById("hw-name"),s=this._shadow.getElementById("hw-email"),i=this._shadow.getElementById("hw-subject"),c=this._shadow.getElementById("hw-description"),d=this._shadow.getElementById("hw-category");n&&(n.value=""),s&&(s.value=""),i&&(i.value=""),c&&(c.value=""),d&&(d.value="bug"),this._shadow.querySelectorAll(".hw-custom-input").forEach(h=>{h.value=""}),this._removeFile(),this._hideStatus();let f=this._shadow.getElementById("hw-submit-btn");f&&(f.disabled=!1,f.textContent="Submit Request")}async _submitTicket(){let n=this._shadow.getElementById("hw-name")?.value.trim()||"",s=this._shadow.getElementById("hw-email")?.value.trim()||"",i=this._shadow.getElementById("hw-subject")?.value.trim()||"",c=this._shadow.getElementById("hw-description")?.value.trim()||"",d=this._shadow.getElementById("hw-category")?.value||"bug";if(!n||!s||!i||!c){this._showStatus("Please fill in all required fields.","error");return}let m=this._getCustomFieldsList(),f={};for(let A of m){let E=this._shadow.querySelector(`[data-custom-id="${A.id}"]`),L=E?E.value.trim():"";if(A.required&&!L){this._showStatus(`Please fill in required field: ${A.label}`,"error");return}L&&(f[A.id]=L)}let h=(this.getAttribute("base-url")||"").replace(/\/$/,""),R=this.getAttribute("embed-key")||"";if(!h||!R){this._showStatus("Widget is misconfigured. Missing base-url or embed-key.","error");return}let p=this._shadow.getElementById("hw-submit-btn");p&&(p.disabled=!0,p.textContent="Submitting Request...");let S=c;if(Object.keys(f).length>0){let A=m.filter(E=>f[E.id]).map(E=>`${E.label}: ${f[E.id]}`);A.length>0&&(S+=`
1201
+
1202
+ --- Additional Information ---
1203
+ `+A.join(`
1204
+ `))}let y=new FormData;if(y.append("submitter_name",n),y.append("submitter_email",s),y.append("subject",i),y.append("description",S),y.append("category",d),y.append("embed_key",R),y.append("source_url",window.location.href),y.append("browser_metadata",JSON.stringify({userAgent:navigator.userAgent,resolution:`${screen.width}x${screen.height}`,viewport:`${window.innerWidth}x${window.innerHeight}`,language:navigator.language})),Object.keys(f).length>0){y.append("custom_fields",JSON.stringify(f));for(let[A,E]of Object.entries(f))y.append(A,E)}this._screenshotFile&&y.append("screenshot",this._screenshotFile,this._screenshotFile.name);try{let A=await fetch(`${h}/api/tickets/widget-submit/`,{method:"POST",body:y});if(A.ok)this._showStatus("Support request submitted successfully!","success"),setTimeout(()=>{this._resetForm();let E=this._shadow.querySelector('.hw-tab-btn[data-tab="status"]');E&&E.click()},1800);else{let E=await A.json().catch(()=>({}));this._showStatus(E.detail||E.error||"Failed to submit request. Please try again.","error"),p&&(p.disabled=!1,p.textContent="Submit Request")}}catch(A){console.error("Error submitting support request:",A),this._showStatus("Network error. Please check your internet connection.","error"),p&&(p.disabled=!1,p.textContent="Submit Request")}}async _loadTicketsStatus(){let n=(this.getAttribute("base-url")||"").replace(/\/$/,""),s=this.getAttribute("embed-key")||"",i=this._shadow.getElementById("hw-ticket-list"),c=this._shadow.getElementById("hw-tickets-loading");if(i){if(!n||!s){i.innerHTML='<div class="hw-empty-state">Widget configuration error (missing URL or key)</div>';return}c&&(c.style.display="block"),i.style.opacity="0.5";try{let d=await fetch(`${n}/api/tickets/widget-status/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({embed_key:s})});if(d.ok){let m=await d.json(),h=(m.data||m).tickets||[];if(h.length===0){i.innerHTML=`
1205
+ <div class="hw-empty-state">
1206
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
1207
+ <path d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z"/>
1208
+ <path d="M12 8v4"/>
1209
+ <path d="M12 16h.01"/>
1210
+ </svg>
1211
+ <p style="margin: 0; font-weight:600;">No support tickets yet</p>
1212
+ <p style="margin: 0; font-size:11px;">Any bug reports or tickets you or your teammates submit will appear here to let everyone track their real-time progress.</p>
1213
+ </div>
1214
+ `;return}let R="";h.forEach(p=>{let S=p.status||"open",y=p.ticket_number||"TKT-PENDING",A=new Date(p.created_at).toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"}),E="hw-badge-open";S==="in_progress"?E="hw-badge-progress":S==="pending"?E="hw-badge-pending":S==="resolved"?E="hw-badge-resolved":S==="closed"&&(E="hw-badge-closed");let L="",$=p.comments||[];$.length>0&&(L+=`
1215
+ <div class="hw-ticket-comments-section">
1216
+ <button class="hw-comments-toggle-btn" data-ticket="${y}">
1217
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" style="margin-right: 4px;">
1218
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
1219
+ </svg>
1220
+ <span>Replies (${$.length})</span>
1221
+ <span class="hw-comments-toggle-chevron">\u25BC</span>
1222
+ </button>
1223
+ <div class="hw-comments-list-wrapper" id="comments-list-${y}" style="max-height: 0px;">
1224
+ <div class="hw-comments-list">
1225
+ `,$.forEach(H=>{let N=new Date(H.created_at).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}),Q=H.is_staff||!1,U=Q?"hw-comment-item staff":"hw-comment-item",ie=Q?'<span class="hw-comment-staff-badge">Staff</span>':"";L+=`
1226
+ <div class="${U}">
1227
+ <div class="hw-comment-meta">
1228
+ <span class="hw-comment-author">${H.author_name||"Anonymous"} ${ie}</span>
1229
+ <span class="hw-comment-date">${N}</span>
1230
+ </div>
1231
+ <p class="hw-comment-text">${H.content}</p>
1232
+ </div>
1233
+ `}),L+=`
1234
+ </div>
1235
+ </div>
1236
+ </div>
1237
+ `),R+=`
1238
+ <div class="hw-ticket-card">
1239
+ <div class="hw-ticket-card-header">
1240
+ <span class="hw-ticket-card-number">${y}</span>
1241
+ <span class="hw-ticket-card-badge ${E}">${S.replace("_"," ")}</span>
1242
+ </div>
1243
+ <h4 class="hw-ticket-card-subject">${p.subject||"No Subject"}</h4>
1244
+ <div class="hw-ticket-card-footer" style="flex-direction: column; align-items: flex-start; gap: 4px;">
1245
+ <div style="display: flex; justify-content: space-between; width: 100%;">
1246
+ <span>Category: ${p.category.toUpperCase()}</span>
1247
+ <span>${A}</span>
1248
+ </div>
1249
+ <div style="font-size: 11px; color: #888; display: flex; align-items: center; gap: 4px; margin-top: 4px; border-top: 1px solid rgba(255,255,255,0.05); padding-top: 4px; width: 100%;">
1250
+ <span>\u{1F464} By: <strong>${p.submitter_name||"Anonymous"}</strong> (${p.submitter_email||"no-email"})</span>
1251
+ </div>
1252
+ </div>
1253
+ ${L}
1254
+ </div>
1255
+ `}),i.innerHTML=R}else throw new Error("Server status fetch failed")}catch(d){console.error("Failed to pull live ticket status:",d),i.innerHTML=`
1256
+ <div class="hw-empty-state">
1257
+ <p style="margin: 0; font-weight:600; color: #f43f5e;">Failed to load tickets</p>
1258
+ <p style="margin: 0; font-size:11px;">A connection error occurred. Click "Refresh Status" to retry.</p>
1259
+ </div>
1260
+ `}finally{c&&(c.style.display="none"),i.style.opacity="1"}}}_showStatus(n,s){let i=this._shadow.getElementById("hw-form-status");i&&(i.textContent=n,i.className=`hw-status-msg ${s}`,i.style.display="block")}_hideStatus(){let n=this._shadow.getElementById("hw-form-status");n&&(n.style.display="none")}async _loadLocalHelpGuide(){let n=this._shadow.getElementById("hw-guide-container"),s=this._shadow.getElementById("hw-guide-loading"),i=this.getAttribute("guide-url")||"/help-guide.json";try{let c=await fetch(i);if(c.ok){let d=await c.json();this._guideData=d,this._renderHelpGuide(d)}else throw new Error("Guide file not found")}catch{console.warn(`Dynamic help guide not found at ${i}. Falling back to default FAQs.`);let d=this._getDefaultHelpGuide();this._guideData=d,this._renderHelpGuide(d)}finally{s&&(s.style.display="none")}}_getDefaultHelpGuide(){return{processes:[{title:"Help Guide & FAQs",steps:[{step_number:1,title:"What is ThriveX AI Dashboard?",description:"ThriveX AI is an intelligent project workspace and agile issue tracking platform. You can manage tasks in Kanban boards, set priorities, assign developers, and aggregate support requests in one beautiful console."},{step_number:2,title:"How do I submit feedback / bugs?",description:"Click on the <strong>Support & Feedback</strong> tab in this sidebar, select your category, enter your subject and description, paste or attach an optional screenshot, and click submit."},{step_number:3,title:"How do I track my ticket status?",description:"Any ticket you submit from this browser will be listed under the <strong>Ticket Status</strong> tab. We use secure, unguessable ticket UUIDs saved locally to fetch live real-time statuses directly from the project server."},{step_number:4,title:"How do I invite members to my project?",description:"Go to the Workspace page inside the dashboard, select your project, click on <strong>Manage Members</strong> on the top-right, search for your team members by their username or email, and add them."}]}]}}_renderHelpGuide(n){let s=this._shadow.getElementById("hw-guide-container");if(!s)return;let i="",c=n.processes;if(!c&&n.steps&&(c=[{title:n.title||"Help Guide",steps:n.steps}]),!c||c.length===0){s.innerHTML='<div class="hw-empty-state">No guides available</div>';return}let d=(this.getAttribute("user-role")||"").trim().toLowerCase(),m=c.map(h=>{if(!(!(Array.isArray(h.roles)&&h.roles.length>0)||d&&h.roles.some(E=>typeof E=="string"&&E.trim().toLowerCase()===d)))return null;let S=h.steps||[],y=S.length,A=S.filter(E=>!(Array.isArray(E.roles)&&E.roles.length>0)||d&&E.roles.some($=>typeof $=="string"&&$.trim().toLowerCase()===d));return y>0&&A.length===0?null:{...h,steps:A}}).filter(h=>h!==null);if(m.length===0){s.innerHTML='<div class="hw-empty-state">No guides available for your role</div>';return}let f=0;m.forEach(h=>{h.title&&(i+=`<h3 class="hw-process-title">${h.title}</h3>`),(h.steps||[]).forEach((p,S)=>{let y=p.step_number||p.number||S+1,A=f===0?"open":"",E=f===0?'style="max-height: 1000px;"':'style="max-height: 0px;"';f++;let L="";Array.isArray(p.images)&&p.images.length>0&&(L='<div class="hw-step-images-list">',p.images.forEach(N=>{L+=`
1261
+ <div class="hw-step-image-wrap">
1262
+ <img class="hw-step-img" src="${N}" alt="Step ${y} screenshot" />
1263
+ </div>
1264
+ `}),L+="</div>");let $="";p.note&&($=`
1265
+ <div class="hw-step-note flex gap-2">
1266
+ <svg class="hw-note-icon text-blue-500" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="color: #3b82f6;"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>
1267
+ <p class="hw-note-desc">${p.note}</p>
1268
+ </div>
1269
+ `);let H="";p.importantNote&&(H=`
1270
+ <div class="hw-step-important flex gap-2">
1271
+ <svg class="hw-important-icon text-amber-500" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="color: #f59e0b;"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
1272
+ <div>
1273
+ <p class="hw-important-title">Important Note</p>
1274
+ <p class="hw-important-desc">${p.importantNote}</p>
1275
+ </div>
1276
+ </div>
1277
+ `),i+=`
1278
+ <div class="hw-faq-item ${A}">
1279
+ <div class="hw-faq-header">
1280
+ <div class="hw-step-header-left">
1281
+ <span class="hw-step-number">${y}</span>
1282
+ <span class="hw-step-title">${p.title}</span>
1283
+ </div>
1284
+ <span class="hw-faq-icon">\u25BC</span>
1285
+ </div>
1286
+ <div class="hw-faq-content" ${E}>
1287
+ <div class="hw-faq-inner">
1288
+ <p class="hw-step-desc">${p.description}</p>
1289
+ ${L}
1290
+ ${$}
1291
+ ${H}
1292
+ </div>
1293
+ </div>
1294
+ </div>
1295
+ `})}),s.innerHTML=i}};typeof window<"u"&&!customElements.get("help-sidebar-widget")&&customElements.define("help-sidebar-widget",pe)});var Zt={};Je(Zt,{HelpSidebarWidget:()=>Xt,HelpSidebarWidgetElement:()=>pe});var K=Se(Me()),vt=Se(He());function Xt({baseUrl:t,embedKey:o,theme:n="auto",buttonStyle:s="navbar",userName:i="",userEmail:c="",guideUrl:d="",userRole:m="",customFields:f}){let[h,R]=(0,K.useState)(!1),p=(0,K.useRef)(null);return(0,K.useEffect)(()=>{Promise.resolve().then(()=>(Ne(),bt)).then(()=>{R(!0)})},[]),(0,K.useEffect)(()=>{p.current&&f&&(p.current.customFields=f)},[h,f]),h?(0,vt.jsx)("help-sidebar-widget",{ref:p,"base-url":t,"embed-key":o,theme:n,"button-style":s,"user-name":i,"user-email":c,"guide-url":d,"user-role":m,"custom-fields":f&&f.length>0?JSON.stringify(f):void 0}):null}Ne();return Lt(Zt);})();
1296
+ /*! Bundled license information:
1297
+
1298
+ react/cjs/react.production.js:
1299
+ (**
1300
+ * @license React
1301
+ * react.production.js
1302
+ *
1303
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
1304
+ *
1305
+ * This source code is licensed under the MIT license found in the
1306
+ * LICENSE file in the root directory of this source tree.
1307
+ *)
1308
+
1309
+ react/cjs/react.development.js:
1310
+ (**
1311
+ * @license React
1312
+ * react.development.js
1313
+ *
1314
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
1315
+ *
1316
+ * This source code is licensed under the MIT license found in the
1317
+ * LICENSE file in the root directory of this source tree.
1318
+ *)
1319
+
1320
+ react/cjs/react-jsx-runtime.production.js:
1321
+ (**
1322
+ * @license React
1323
+ * react-jsx-runtime.production.js
1324
+ *
1325
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
1326
+ *
1327
+ * This source code is licensed under the MIT license found in the
1328
+ * LICENSE file in the root directory of this source tree.
1329
+ *)
1330
+
1331
+ react/cjs/react-jsx-runtime.development.js:
1332
+ (**
1333
+ * @license React
1334
+ * react-jsx-runtime.development.js
1335
+ *
1336
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
1337
+ *
1338
+ * This source code is licensed under the MIT license found in the
1339
+ * LICENSE file in the root directory of this source tree.
1340
+ *)
1341
+ */
1342
+ //# sourceMappingURL=index.global.js.map