@sirsluginston/sharedui 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -0
- package/dist/index.d.ts +444 -0
- package/dist/sharedui.js +2895 -0
- package/dist/sharedui.umd.cjs +76 -0
- package/dist/style.css +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
(function(p,j){typeof exports=="object"&&typeof module<"u"?j(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],j):(p=typeof globalThis<"u"?globalThis:p||self,j(p.SharedUI={},p.React))})(this,function(p,j){"use strict";function ve(o){const[t,s]=j.useState(()=>{if(typeof window>"u")return!1;const n=localStorage.getItem("theme-mode");return n?n==="dark":o.theme.defaultTheme==="dark"?!0:o.theme.defaultTheme==="auto"?window.matchMedia("(prefers-color-scheme: dark)").matches:!1});j.useEffect(()=>{pe(o.theme)},[o.theme]),j.useEffect(()=>{document.body.classList.toggle("dark-mode",t),localStorage.setItem("theme-mode",t?"dark":"light")},[t]);const i=j.useCallback(()=>{s(n=>!n)},[]);return{darkMode:t,toggleDarkMode:i}}function pe(o){const t=document.documentElement;t.style.setProperty("--primary-color",o.primaryColor),t.style.setProperty("--secondary-color",o.secondaryColor),t.style.setProperty("--accent-color",o.accentColor),o.surfaceLight&&t.style.setProperty("--surface-light",o.surfaceLight),o.surfaceDark&&t.style.setProperty("--surface-dark",o.surfaceDark),o.textLight&&t.style.setProperty("--text-light",o.textLight),o.textDark&&t.style.setProperty("--text-dark",o.textDark)}var oe={exports:{}},H={};/**
|
|
2
|
+
* @license React
|
|
3
|
+
* react-jsx-runtime.production.min.js
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/var ge;function Je(){if(ge)return H;ge=1;var o=j,t=Symbol.for("react.element"),s=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,n=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function c(u,f,w){var g,b={},k=null,M=null;w!==void 0&&(k=""+w),f.key!==void 0&&(k=""+f.key),f.ref!==void 0&&(M=f.ref);for(g in f)i.call(f,g)&&!l.hasOwnProperty(g)&&(b[g]=f[g]);if(u&&u.defaultProps)for(g in f=u.defaultProps,f)b[g]===void 0&&(b[g]=f[g]);return{$$typeof:t,type:u,key:k,ref:M,props:b,_owner:n.current}}return H.Fragment=s,H.jsx=c,H.jsxs=c,H}var V={};/**
|
|
10
|
+
* @license React
|
|
11
|
+
* react-jsx-runtime.development.js
|
|
12
|
+
*
|
|
13
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the MIT license found in the
|
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/var me;function Ke(){return me||(me=1,process.env.NODE_ENV!=="production"&&function(){var o=j,t=Symbol.for("react.element"),s=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),u=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),g=Symbol.for("react.suspense_list"),b=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),M=Symbol.for("react.offscreen"),T=Symbol.iterator,_="@@iterator";function wr(r){if(r===null||typeof r!="object")return null;var a=T&&r[T]||r[_];return typeof a=="function"?a:null}var N=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function R(r){{for(var a=arguments.length,d=new Array(a>1?a-1:0),v=1;v<a;v++)d[v-1]=arguments[v];Sr("error",r,d)}}function Sr(r,a,d){{var v=N.ReactDebugCurrentFrame,h=v.getStackAddendum();h!==""&&(a+="%s",d=d.concat([h]));var x=d.map(function(y){return String(y)});x.unshift("Warning: "+a),Function.prototype.apply.call(console[r],console,x)}}var Cr=!1,Tr=!1,Rr=!1,Er=!1,Fr=!1,we;we=Symbol.for("react.module.reference");function Ir(r){return!!(typeof r=="string"||typeof r=="function"||r===i||r===l||Fr||r===n||r===w||r===g||Er||r===M||Cr||Tr||Rr||typeof r=="object"&&r!==null&&(r.$$typeof===k||r.$$typeof===b||r.$$typeof===c||r.$$typeof===u||r.$$typeof===f||r.$$typeof===we||r.getModuleId!==void 0))}function _r(r,a,d){var v=r.displayName;if(v)return v;var h=a.displayName||a.name||"";return h!==""?d+"("+h+")":d}function Se(r){return r.displayName||"Context"}function D(r){if(r==null)return null;if(typeof r.tag=="number"&&R("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r;switch(r){case i:return"Fragment";case s:return"Portal";case l:return"Profiler";case n:return"StrictMode";case w:return"Suspense";case g:return"SuspenseList"}if(typeof r=="object")switch(r.$$typeof){case u:var a=r;return Se(a)+".Consumer";case c:var d=r;return Se(d._context)+".Provider";case f:return _r(r,r.render,"ForwardRef");case b:var v=r.displayName||null;return v!==null?v:D(r.type)||"Memo";case k:{var h=r,x=h._payload,y=h._init;try{return D(y(x))}catch{return null}}}return null}var z=Object.assign,K=0,Ce,Te,Re,Ee,Fe,Ie,_e;function Me(){}Me.__reactDisabledLog=!0;function Mr(){{if(K===0){Ce=console.log,Te=console.info,Re=console.warn,Ee=console.error,Fe=console.group,Ie=console.groupCollapsed,_e=console.groupEnd;var r={configurable:!0,enumerable:!0,value:Me,writable:!0};Object.defineProperties(console,{info:r,log:r,warn:r,error:r,group:r,groupCollapsed:r,groupEnd:r})}K++}}function Dr(){{if(K--,K===0){var r={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:z({},r,{value:Ce}),info:z({},r,{value:Te}),warn:z({},r,{value:Re}),error:z({},r,{value:Ee}),group:z({},r,{value:Fe}),groupCollapsed:z({},r,{value:Ie}),groupEnd:z({},r,{value:_e})})}K<0&&R("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ne=N.ReactCurrentDispatcher,se;function Z(r,a,d){{if(se===void 0)try{throw Error()}catch(h){var v=h.stack.trim().match(/\n( *(at )?)/);se=v&&v[1]||""}return`
|
|
18
|
+
`+se+r}}var ie=!1,q;{var Pr=typeof WeakMap=="function"?WeakMap:Map;q=new Pr}function De(r,a){if(!r||ie)return"";{var d=q.get(r);if(d!==void 0)return d}var v;ie=!0;var h=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var x;x=ne.current,ne.current=null,Mr();try{if(a){var y=function(){throw Error()};if(Object.defineProperty(y.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(y,[])}catch(F){v=F}Reflect.construct(r,[],y)}else{try{y.call()}catch(F){v=F}r.call(y.prototype)}}else{try{throw Error()}catch(F){v=F}r()}}catch(F){if(F&&v&&typeof F.stack=="string"){for(var m=F.stack.split(`
|
|
19
|
+
`),E=v.stack.split(`
|
|
20
|
+
`),S=m.length-1,C=E.length-1;S>=1&&C>=0&&m[S]!==E[C];)C--;for(;S>=1&&C>=0;S--,C--)if(m[S]!==E[C]){if(S!==1||C!==1)do if(S--,C--,C<0||m[S]!==E[C]){var I=`
|
|
21
|
+
`+m[S].replace(" at new "," at ");return r.displayName&&I.includes("<anonymous>")&&(I=I.replace("<anonymous>",r.displayName)),typeof r=="function"&&q.set(r,I),I}while(S>=1&&C>=0);break}}}finally{ie=!1,ne.current=x,Dr(),Error.prepareStackTrace=h}var $=r?r.displayName||r.name:"",A=$?Z($):"";return typeof r=="function"&&q.set(r,A),A}function zr(r,a,d){return De(r,!1)}function Ar(r){var a=r.prototype;return!!(a&&a.isReactComponent)}function ee(r,a,d){if(r==null)return"";if(typeof r=="function")return De(r,Ar(r));if(typeof r=="string")return Z(r);switch(r){case w:return Z("Suspense");case g:return Z("SuspenseList")}if(typeof r=="object")switch(r.$$typeof){case f:return zr(r.render);case b:return ee(r.type,a,d);case k:{var v=r,h=v._payload,x=v._init;try{return ee(x(h),a,d)}catch{}}}return""}var G=Object.prototype.hasOwnProperty,Pe={},ze=N.ReactDebugCurrentFrame;function re(r){if(r){var a=r._owner,d=ee(r.type,r._source,a?a.type:null);ze.setExtraStackFrame(d)}else ze.setExtraStackFrame(null)}function Wr(r,a,d,v,h){{var x=Function.call.bind(G);for(var y in r)if(x(r,y)){var m=void 0;try{if(typeof r[y]!="function"){var E=Error((v||"React class")+": "+d+" type `"+y+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof r[y]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw E.name="Invariant Violation",E}m=r[y](a,y,v,d,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(S){m=S}m&&!(m instanceof Error)&&(re(h),R("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",v||"React class",d,y,typeof m),re(null)),m instanceof Error&&!(m.message in Pe)&&(Pe[m.message]=!0,re(h),R("Failed %s type: %s",d,m.message),re(null))}}}var Br=Array.isArray;function le(r){return Br(r)}function Lr(r){{var a=typeof Symbol=="function"&&Symbol.toStringTag,d=a&&r[Symbol.toStringTag]||r.constructor.name||"Object";return d}}function Or(r){try{return Ae(r),!1}catch{return!0}}function Ae(r){return""+r}function We(r){if(Or(r))return R("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Lr(r)),Ae(r)}var Be=N.ReactCurrentOwner,Yr={key:!0,ref:!0,__self:!0,__source:!0},Le,Oe;function Nr(r){if(G.call(r,"ref")){var a=Object.getOwnPropertyDescriptor(r,"ref").get;if(a&&a.isReactWarning)return!1}return r.ref!==void 0}function Ur(r){if(G.call(r,"key")){var a=Object.getOwnPropertyDescriptor(r,"key").get;if(a&&a.isReactWarning)return!1}return r.key!==void 0}function $r(r,a){typeof r.ref=="string"&&Be.current}function Hr(r,a){{var d=function(){Le||(Le=!0,R("%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://reactjs.org/link/special-props)",a))};d.isReactWarning=!0,Object.defineProperty(r,"key",{get:d,configurable:!0})}}function Vr(r,a){{var d=function(){Oe||(Oe=!0,R("%s: `ref` 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://reactjs.org/link/special-props)",a))};d.isReactWarning=!0,Object.defineProperty(r,"ref",{get:d,configurable:!0})}}var Xr=function(r,a,d,v,h,x,y){var m={$$typeof:t,type:r,key:a,ref:d,props:y,_owner:x};return m._store={},Object.defineProperty(m._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(m,"_self",{configurable:!1,enumerable:!1,writable:!1,value:v}),Object.defineProperty(m,"_source",{configurable:!1,enumerable:!1,writable:!1,value:h}),Object.freeze&&(Object.freeze(m.props),Object.freeze(m)),m};function Jr(r,a,d,v,h){{var x,y={},m=null,E=null;d!==void 0&&(We(d),m=""+d),Ur(a)&&(We(a.key),m=""+a.key),Nr(a)&&(E=a.ref,$r(a,h));for(x in a)G.call(a,x)&&!Yr.hasOwnProperty(x)&&(y[x]=a[x]);if(r&&r.defaultProps){var S=r.defaultProps;for(x in S)y[x]===void 0&&(y[x]=S[x])}if(m||E){var C=typeof r=="function"?r.displayName||r.name||"Unknown":r;m&&Hr(y,C),E&&Vr(y,C)}return Xr(r,m,E,h,v,Be.current,y)}}var ce=N.ReactCurrentOwner,Ye=N.ReactDebugCurrentFrame;function U(r){if(r){var a=r._owner,d=ee(r.type,r._source,a?a.type:null);Ye.setExtraStackFrame(d)}else Ye.setExtraStackFrame(null)}var de;de=!1;function ue(r){return typeof r=="object"&&r!==null&&r.$$typeof===t}function Ne(){{if(ce.current){var r=D(ce.current.type);if(r)return`
|
|
22
|
+
|
|
23
|
+
Check the render method of \``+r+"`."}return""}}function Kr(r){return""}var Ue={};function Gr(r){{var a=Ne();if(!a){var d=typeof r=="string"?r:r.displayName||r.name;d&&(a=`
|
|
24
|
+
|
|
25
|
+
Check the top-level render call using <`+d+">.")}return a}}function $e(r,a){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var d=Gr(a);if(Ue[d])return;Ue[d]=!0;var v="";r&&r._owner&&r._owner!==ce.current&&(v=" It was passed a child from "+D(r._owner.type)+"."),U(r),R('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',d,v),U(null)}}function He(r,a){{if(typeof r!="object")return;if(le(r))for(var d=0;d<r.length;d++){var v=r[d];ue(v)&&$e(v,a)}else if(ue(r))r._store&&(r._store.validated=!0);else if(r){var h=wr(r);if(typeof h=="function"&&h!==r.entries)for(var x=h.call(r),y;!(y=x.next()).done;)ue(y.value)&&$e(y.value,a)}}}function Qr(r){{var a=r.type;if(a==null||typeof a=="string")return;var d;if(typeof a=="function")d=a.propTypes;else if(typeof a=="object"&&(a.$$typeof===f||a.$$typeof===b))d=a.propTypes;else return;if(d){var v=D(a);Wr(d,r.props,"prop",v,r)}else if(a.PropTypes!==void 0&&!de){de=!0;var h=D(a);R("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",h||"Unknown")}typeof a.getDefaultProps=="function"&&!a.getDefaultProps.isReactClassApproved&&R("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Zr(r){{for(var a=Object.keys(r.props),d=0;d<a.length;d++){var v=a[d];if(v!=="children"&&v!=="key"){U(r),R("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",v),U(null);break}}r.ref!==null&&(U(r),R("Invalid attribute `ref` supplied to `React.Fragment`."),U(null))}}var Ve={};function Xe(r,a,d,v,h,x){{var y=Ir(r);if(!y){var m="";(r===void 0||typeof r=="object"&&r!==null&&Object.keys(r).length===0)&&(m+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var E=Kr();E?m+=E:m+=Ne();var S;r===null?S="null":le(r)?S="array":r!==void 0&&r.$$typeof===t?(S="<"+(D(r.type)||"Unknown")+" />",m=" Did you accidentally export a JSX literal instead of a component?"):S=typeof r,R("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",S,m)}var C=Jr(r,a,d,h,x);if(C==null)return C;if(y){var I=a.children;if(I!==void 0)if(v)if(le(I)){for(var $=0;$<I.length;$++)He(I[$],r);Object.freeze&&Object.freeze(I)}else R("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 He(I,r)}if(G.call(a,"key")){var A=D(r),F=Object.keys(a).filter(function(ao){return ao!=="key"}),fe=F.length>0?"{key: someKey, "+F.join(": ..., ")+": ...}":"{key: someKey}";if(!Ve[A+fe]){var to=F.length>0?"{"+F.join(": ..., ")+": ...}":"{}";R(`A props object containing a "key" prop is being spread into JSX:
|
|
26
|
+
let props = %s;
|
|
27
|
+
<%s {...props} />
|
|
28
|
+
React keys must be passed directly to JSX without using spread:
|
|
29
|
+
let props = %s;
|
|
30
|
+
<%s key={someKey} {...props} />`,fe,A,to,A),Ve[A+fe]=!0}}return r===i?Zr(C):Qr(C),C}}function qr(r,a,d){return Xe(r,a,d,!0)}function eo(r,a,d){return Xe(r,a,d,!1)}var ro=eo,oo=qr;V.Fragment=i,V.jsx=ro,V.jsxs=oo}()),V}process.env.NODE_ENV==="production"?oe.exports=Je():oe.exports=Ke();var e=oe.exports;const Ge=({variant:o="primary",size:t="md",loading:s=!1,icon:i,children:n,disabled:l,...c})=>{const u={sm:{padding:"var(--space-xs) var(--space-sm)",fontSize:"0.85rem"},md:{padding:"var(--space-sm) var(--space-md)",fontSize:"1rem"},lg:{padding:"var(--space-md) var(--space-lg)",fontSize:"1.1rem"}},f={primary:{backgroundColor:"var(--primary-color)",color:"var(--surface-light)",border:"2px solid var(--primary-color)",boxShadow:"2px 2px 0 var(--secondary-color)"},secondary:{backgroundColor:"var(--secondary-color)",color:"var(--surface-light)",border:"2px solid var(--secondary-color)",boxShadow:"2px 2px 0 var(--primary-color)"},outline:{backgroundColor:"transparent",color:"var(--primary-color)",border:"2px solid var(--primary-color)",boxShadow:"none"},ghost:{backgroundColor:"transparent",color:"var(--text-color)",border:"2px solid transparent",boxShadow:"none"},danger:{backgroundColor:"var(--danger-color)",color:"var(--surface-light)",border:"2px solid var(--danger-color)",boxShadow:"2px 2px 0 rgba(0,0,0,0.2)"}},w={...u[t],...f[o],borderRadius:"var(--radius-md)",fontFamily:"var(--font-sans)",fontWeight:600,cursor:l||s?"not-allowed":"pointer",opacity:l?.5:1,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"var(--space-sm)",transition:"transform var(--transition-fast), box-shadow var(--transition-fast)",outline:"none"};return e.jsxs("button",{...c,disabled:l||s,style:{...w,...c.style},onMouseDown:g=>{var b;!l&&!s&&(g.currentTarget.style.transform="translate(2px, 2px)",g.currentTarget.style.boxShadow="none"),(b=c.onMouseDown)==null||b.call(c,g)},onMouseUp:g=>{var b;g.currentTarget.style.transform="translate(0, 0)",g.currentTarget.style.boxShadow=f[o].boxShadow||"none",(b=c.onMouseUp)==null||b.call(c,g)},onMouseLeave:g=>{var b;g.currentTarget.style.transform="translate(0, 0)",g.currentTarget.style.boxShadow=f[o].boxShadow||"none",(b=c.onMouseLeave)==null||b.call(c,g)},children:[s?e.jsx(Qe,{size:16}):i,n]})},Qe=({size:o})=>e.jsxs("svg",{width:o,height:o,viewBox:"0 0 24 24",style:{animation:"spin 0.8s linear infinite"},children:[e.jsx("circle",{cx:"12",cy:"12",r:"10",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeDasharray:"31.4 31.4",strokeLinecap:"round"}),e.jsx("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),Ze=({title:o,subtitle:t,children:s,hoverable:i=!1,padding:n="lg",className:l,style:c,onClick:u})=>{const f={none:"0",sm:"var(--space-sm)",md:"var(--space-md)",lg:"var(--space-lg)"};return e.jsxs("div",{className:l,onClick:u,style:{backgroundColor:"var(--bg-color)",borderRadius:"var(--radius-md)",padding:f[n],border:"2px solid var(--border-color)",display:"flex",flexDirection:"column",gap:"var(--space-md)",transition:"transform var(--transition-fast), box-shadow var(--transition-fast)",cursor:u?"pointer":"default",...c},onMouseEnter:w=>{i&&(w.currentTarget.style.transform="translateY(-4px)",w.currentTarget.style.boxShadow="var(--shadow-lg)")},onMouseLeave:w=>{i&&(w.currentTarget.style.transform="translateY(0)",w.currentTarget.style.boxShadow="none")},children:[(o||t)&&e.jsxs("div",{style:{borderBottom:"1px solid var(--border-color)",paddingBottom:"var(--space-sm)"},children:[o&&e.jsx("h3",{style:{margin:0,fontFamily:"var(--font-serif)",fontSize:"1.25rem",fontWeight:700,color:"var(--primary-color)"},children:o}),t&&e.jsx("p",{style:{margin:"var(--space-xs) 0 0",fontFamily:"var(--font-sans)",fontSize:"0.9rem",color:"var(--text-color)",opacity:.7},children:t})]}),e.jsx("div",{style:{fontFamily:"var(--font-sans)",lineHeight:1.6},children:s})]})},qe=({children:o,variant:t="default",size:s="md"})=>{const i={sm:{padding:"2px var(--space-xs)",fontSize:"0.7rem"},md:{padding:"var(--space-xs) var(--space-sm)",fontSize:"0.8rem"}},n={default:{backgroundColor:"var(--secondary-color)",color:"var(--surface-light)"},primary:{backgroundColor:"var(--primary-color)",color:"var(--surface-light)"},secondary:{backgroundColor:"var(--accent-color)",color:"var(--primary-color)"},success:{backgroundColor:"var(--success-color)",color:"var(--surface-light)"},warning:{backgroundColor:"var(--warning-color)",color:"var(--surface-dark)"},danger:{backgroundColor:"var(--danger-color)",color:"var(--surface-light)"},outline:{backgroundColor:"transparent",color:"var(--primary-color)",border:"1px solid var(--primary-color)"}};return e.jsx("span",{style:{...i[s],...n[t],borderRadius:"var(--radius-full)",fontFamily:"var(--font-sans)",fontWeight:600,display:"inline-flex",alignItems:"center",justifyContent:"center",whiteSpace:"nowrap",lineHeight:1,textTransform:"uppercase",letterSpacing:"0.03em"},children:o})},er=({label:o,error:t,hint:s,icon:i,...n})=>{const l=!!t;return e.jsxs("div",{style:{marginBottom:"var(--space-md)",width:"100%"},children:[o&&e.jsx("label",{style:{display:"block",marginBottom:"var(--space-xs)",fontFamily:"var(--font-sans)",fontSize:"0.9rem",fontWeight:600,color:"var(--text-color)"},children:o}),e.jsxs("div",{style:{position:"relative"},children:[i&&e.jsx("span",{style:{position:"absolute",left:"var(--space-sm)",top:"50%",transform:"translateY(-50%)",color:"var(--text-color)",opacity:.5},children:i}),e.jsx("input",{...n,style:{width:"100%",padding:i?"var(--space-sm) var(--space-sm) var(--space-sm) var(--space-xl)":"var(--space-sm) var(--space-md)",borderRadius:"var(--radius-md)",border:`2px solid ${l?"var(--danger-color)":"var(--border-color)"}`,fontFamily:"var(--font-sans)",fontSize:"1rem",backgroundColor:"var(--bg-color)",color:"var(--text-color)",boxSizing:"border-box",transition:"border-color var(--transition-fast), box-shadow var(--transition-fast)",outline:"none",...n.style},onFocus:c=>{var u;c.currentTarget.style.borderColor=l?"var(--danger-color)":"var(--primary-color)",c.currentTarget.style.boxShadow=`0 0 0 3px ${l?"rgba(229, 62, 62, 0.2)":"rgba(26, 54, 93, 0.2)"}`,(u=n.onFocus)==null||u.call(n,c)},onBlur:c=>{var u;c.currentTarget.style.borderColor=l?"var(--danger-color)":"var(--border-color)",c.currentTarget.style.boxShadow="none",(u=n.onBlur)==null||u.call(n,c)}})]}),(t||s)&&e.jsx("p",{style:{margin:"var(--space-xs) 0 0",fontFamily:"var(--font-sans)",fontSize:"0.8rem",color:t?"var(--danger-color)":"var(--text-color)",opacity:t?1:.6},children:t||s})]})};function rr({columns:o,data:t,keyExtractor:s,onRowClick:i,emptyMessage:n="No data available",striped:l=!0}){return e.jsx("div",{style:{overflowX:"auto",border:"2px solid var(--border-color)",borderRadius:"var(--radius-md)"},children:e.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontFamily:"var(--font-sans)"},children:[e.jsx("thead",{children:e.jsx("tr",{style:{backgroundColor:"var(--secondary-color)"},children:o.map(c=>e.jsx("th",{style:{padding:"var(--space-md)",textAlign:c.align||"left",fontWeight:600,fontSize:"0.9rem",color:"var(--surface-light)",width:c.width,whiteSpace:"nowrap"},children:c.header},String(c.key)))})}),e.jsx("tbody",{children:t.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:o.length,style:{padding:"var(--space-xl)",textAlign:"center",color:"var(--text-color)",opacity:.6},children:n})}):t.map((c,u)=>e.jsx("tr",{onClick:()=>i==null?void 0:i(c),style:{backgroundColor:l&&u%2===1?"var(--secondary-color)":"transparent",cursor:i?"pointer":"default",transition:"background-color var(--transition-fast)"},onMouseEnter:f=>{i&&(f.currentTarget.style.backgroundColor="var(--accent-color)")},onMouseLeave:f=>{f.currentTarget.style.backgroundColor=l&&u%2===1?"var(--secondary-color)":"transparent"},children:o.map(f=>e.jsx("td",{style:{padding:"var(--space-md)",textAlign:f.align||"left",color:"var(--text-color)",borderBottom:"1px solid var(--border-color)"},children:f.render?f.render(c):String(c[f.key]??"")},String(f.key)))},s(c)))})]})})}const or=({open:o,onClose:t,title:s,children:i,size:n="md",showCloseButton:l=!0})=>{if(j.useEffect(()=>{const u=f=>{f.key==="Escape"&&t()};return o&&(document.addEventListener("keydown",u),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",u),document.body.style.overflow=""}},[o,t]),!o)return null;const c={sm:"400px",md:"560px",lg:"800px"};return e.jsxs("div",{role:"dialog","aria-modal":"true","aria-labelledby":s?"modal-title":void 0,style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,padding:"var(--space-md)",animation:"fadeIn 0.2s ease"},onClick:t,children:[e.jsxs("div",{style:{backgroundColor:"var(--bg-color)",borderRadius:"var(--radius-lg)",border:"2px solid var(--border-color)",boxShadow:"var(--shadow-lg)",width:"100%",maxWidth:c[n],maxHeight:"90vh",overflow:"hidden",display:"flex",flexDirection:"column",animation:"slideUp 0.2s ease"},onClick:u=>u.stopPropagation(),children:[(s||l)&&e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"var(--space-md) var(--space-lg)",borderBottom:"1px solid var(--border-color)"},children:[s&&e.jsx("h2",{id:"modal-title",style:{margin:0,fontFamily:"var(--font-serif)",fontSize:"1.25rem",fontWeight:700,color:"var(--text-color)"},children:s}),l&&e.jsx("button",{onClick:t,"aria-label":"Close modal",style:{background:"none",border:"none",cursor:"pointer",padding:"var(--space-xs)",borderRadius:"var(--radius-sm)",color:"var(--text-color)",opacity:.7,transition:"opacity var(--transition-fast)"},onMouseEnter:u=>u.currentTarget.style.opacity="1",onMouseLeave:u=>u.currentTarget.style.opacity="0.7",children:e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("path",{d:"M18 6L6 18M6 6l12 12"})})})]}),e.jsx("div",{style:{padding:"var(--space-lg)",overflowY:"auto",flex:1},children:i})]}),e.jsx("style",{children:`
|
|
31
|
+
@keyframes fadeIn {
|
|
32
|
+
from { opacity: 0; }
|
|
33
|
+
to { opacity: 1; }
|
|
34
|
+
}
|
|
35
|
+
@keyframes slideUp {
|
|
36
|
+
from { opacity: 0; transform: translateY(20px); }
|
|
37
|
+
to { opacity: 1; transform: translateY(0); }
|
|
38
|
+
}
|
|
39
|
+
`})]})},tr=({children:o,variant:t="info",title:s,dismissible:i=!1,onDismiss:n})=>{const c={info:{backgroundColor:"rgba(49, 130, 206, 0.1)",borderColor:"var(--info-color)",iconColor:"var(--info-color)",icon:"ℹ️"},success:{backgroundColor:"rgba(56, 161, 105, 0.1)",borderColor:"var(--success-color)",iconColor:"var(--success-color)",icon:"✓"},warning:{backgroundColor:"rgba(214, 158, 46, 0.1)",borderColor:"var(--warning-color)",iconColor:"var(--warning-color)",icon:"⚠"},danger:{backgroundColor:"rgba(229, 62, 62, 0.1)",borderColor:"var(--danger-color)",iconColor:"var(--danger-color)",icon:"✕"}}[t];return e.jsxs("div",{role:"alert",style:{backgroundColor:c.backgroundColor,borderLeft:`4px solid ${c.borderColor}`,borderRadius:"var(--radius-md)",padding:"var(--space-md) var(--space-lg)",display:"flex",alignItems:"flex-start",gap:"var(--space-md)",margin:"var(--space-md) 0"},children:[e.jsx("span",{style:{fontSize:"1.2rem",lineHeight:1,flexShrink:0},children:c.icon}),e.jsxs("div",{style:{flex:1},children:[s&&e.jsx("h4",{style:{margin:"0 0 var(--space-xs)",fontFamily:"var(--font-sans)",fontWeight:600,fontSize:"1rem",color:"var(--text-color)"},children:s}),e.jsx("div",{style:{fontFamily:"var(--font-sans)",fontSize:"0.95rem",color:"var(--text-color)",lineHeight:1.5},children:o})]}),i&&e.jsx("button",{onClick:n,"aria-label":"Dismiss",style:{background:"none",border:"none",cursor:"pointer",padding:"var(--space-xs)",color:"var(--text-color)",opacity:.5,transition:"opacity var(--transition-fast)",flexShrink:0},onMouseEnter:u=>u.currentTarget.style.opacity="1",onMouseLeave:u=>u.currentTarget.style.opacity="0.5",children:"✕"})]})},ar=({tabs:o,activeTab:t,onTabChange:s,variant:i="underline"})=>{const n=i==="underline";return e.jsxs("div",{style:{width:"100%"},children:[e.jsx("div",{role:"tablist",style:{display:"flex",gap:n?"var(--space-md)":"var(--space-xs)",borderBottom:n?"2px solid var(--border-color)":"none",padding:n?"0":"var(--space-xs)",backgroundColor:n?"transparent":"var(--secondary-color)",borderRadius:n?"0":"var(--radius-md)"},children:o.map(l=>{const c=l.id===t;return e.jsx("button",{role:"tab","aria-selected":c,"aria-controls":`panel-${l.id}`,disabled:l.disabled,onClick:()=>!l.disabled&&s(l.id),style:{background:n?"none":c?"var(--primary-color)":"transparent",border:"none",borderBottom:n&&c?"3px solid var(--primary-color)":"none",marginBottom:n?"-2px":"0",padding:"var(--space-sm) var(--space-md)",borderRadius:n?"0":"var(--radius-sm)",fontFamily:"var(--font-sans)",fontWeight:600,fontSize:"0.95rem",color:c?n?"var(--primary-color)":"var(--surface-light)":"var(--text-color)",opacity:l.disabled?.5:1,cursor:l.disabled?"not-allowed":"pointer",transition:"all var(--transition-fast)"},onMouseEnter:u=>{!l.disabled&&!c&&(u.currentTarget.style.backgroundColor=n?"rgba(0,0,0,0.05)":"var(--accent-color)")},onMouseLeave:u=>{!l.disabled&&!c&&(u.currentTarget.style.backgroundColor="transparent")},children:l.label},l.id)})}),e.jsx("div",{style:{marginTop:"var(--space-lg)"},children:o.map(l=>e.jsx("div",{id:`panel-${l.id}`,role:"tabpanel",hidden:l.id!==t,style:{display:l.id===t?"block":"none"},children:l.content},l.id))})]})},nr=({content:o,children:t,position:s="top",delay:i=200})=>{const[n,l]=j.useState(!1),c=j.useRef(null),u=j.useRef(),f=()=>{u.current=window.setTimeout(()=>{l(!0)},i)},w=()=>{u.current&&clearTimeout(u.current),l(!1)};j.useEffect(()=>()=>{u.current&&clearTimeout(u.current)},[]);const g={top:{bottom:"100%",left:"50%",transform:"translateX(-50%) translateY(-8px)"},bottom:{top:"100%",left:"50%",transform:"translateX(-50%) translateY(8px)"},left:{right:"100%",top:"50%",transform:"translateY(-50%) translateX(-8px)"},right:{left:"100%",top:"50%",transform:"translateY(-50%) translateX(8px)"}};return e.jsxs("span",{ref:c,style:{position:"relative",display:"inline-block"},onMouseEnter:f,onMouseLeave:w,onFocus:f,onBlur:w,children:[t,n&&e.jsxs("span",{role:"tooltip",style:{position:"absolute",...g[s],backgroundColor:"var(--secondary-color)",color:"var(--surface-light)",padding:"var(--space-xs) var(--space-sm)",borderRadius:"var(--radius-sm)",fontFamily:"var(--font-sans)",fontSize:"0.85rem",whiteSpace:"nowrap",zIndex:1e3,boxShadow:"var(--shadow-md)",pointerEvents:"none",animation:"tooltipFadeIn 0.15s ease"},children:[o,e.jsx("style",{children:`
|
|
40
|
+
@keyframes tooltipFadeIn {
|
|
41
|
+
from { opacity: 0; }
|
|
42
|
+
to { opacity: 1; }
|
|
43
|
+
}
|
|
44
|
+
`})]})]})},ye=({size:o="md",color:t="var(--primary-color)"})=>{const i={sm:20,md:32,lg:48}[o];return e.jsxs("svg",{width:i,height:i,viewBox:"0 0 50 50",style:{animation:"spinnerRotate 0.8s linear infinite"},children:[e.jsx("circle",{cx:"25",cy:"25",r:"20",fill:"none",stroke:t,strokeWidth:"4",strokeDasharray:"80 40",strokeLinecap:"round"}),e.jsx("style",{children:`
|
|
45
|
+
@keyframes spinnerRotate {
|
|
46
|
+
from { transform: rotate(0deg); }
|
|
47
|
+
to { transform: rotate(360deg); }
|
|
48
|
+
}
|
|
49
|
+
`})]})},sr=({message:o="Loading..."})=>e.jsxs("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"var(--space-md)",zIndex:1e3},children:[e.jsx(ye,{size:"lg",color:"var(--surface-light)"}),e.jsx("span",{style:{fontFamily:"var(--font-sans)",fontSize:"1rem",color:"var(--surface-light)"},children:o})]}),te=({width:o="100%",height:t=20,variant:s="text",animation:i="wave"})=>{const n={text:{borderRadius:"var(--radius-sm)"},rect:{borderRadius:"var(--radius-md)"},circle:{borderRadius:"50%"}},l={pulse:{animation:"skeletonPulse 1.5s ease-in-out infinite"},wave:{backgroundImage:"linear-gradient(90deg, var(--secondary-color) 0%, var(--bg-color) 50%, var(--secondary-color) 100%)",backgroundSize:"200% 100%",animation:"skeletonWave 1.5s ease-in-out infinite"},none:{}};return e.jsx("div",{style:{width:o,height:t,backgroundColor:i==="wave"?void 0:"var(--secondary-color)",...n[s],...l[i]},children:e.jsx("style",{children:`
|
|
50
|
+
@keyframes skeletonPulse {
|
|
51
|
+
0%, 100% { opacity: 1; }
|
|
52
|
+
50% { opacity: 0.5; }
|
|
53
|
+
}
|
|
54
|
+
@keyframes skeletonWave {
|
|
55
|
+
0% { background-position: 200% 0; }
|
|
56
|
+
100% { background-position: -200% 0; }
|
|
57
|
+
}
|
|
58
|
+
`})})},he=({lines:o=3})=>e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-sm)"},children:Array.from({length:o}).map((t,s)=>e.jsx(te,{width:s===o-1?"60%":"100%",height:16},s))}),ir=()=>e.jsxs("div",{style:{padding:"var(--space-lg)",border:"2px solid var(--border-color)",borderRadius:"var(--radius-md)",display:"flex",flexDirection:"column",gap:"var(--space-md)"},children:[e.jsx(te,{height:24,width:"50%"}),e.jsx(he,{lines:3})]}),xe=({brand:o,darkMode:t,onThemeToggle:s,onAccountClick:i,onNotificationClick:n})=>{const[l,c]=j.useState(!1),[u,f]=j.useState(!1),[w,g]=j.useState(null);j.useEffect(()=>{const k=()=>c(window.innerWidth<768);return k(),window.addEventListener("resize",k),()=>window.removeEventListener("resize",k)},[]);const b=o.navItems.filter(k=>k.inNavbar!==!1);return e.jsxs("header",{style:{backgroundColor:"var(--primary-color)",borderBottom:"4px solid var(--accent-color)",position:"sticky",top:0,zIndex:100},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",padding:"var(--space-sm) var(--space-lg)",gap:"var(--space-md)",maxWidth:1400,margin:"0 auto"},children:[o.logoUrl&&e.jsx("div",{style:{width:40,height:40,borderRadius:"var(--radius-md)",overflow:"hidden",backgroundColor:"var(--bg-color)",border:"2px solid var(--accent-color)",flexShrink:0},children:e.jsx("img",{src:o.logoUrl,alt:o.name,style:{width:"100%",height:"100%",objectFit:"cover"}})}),e.jsx("h1",{style:{margin:0,fontFamily:"var(--font-serif)",fontSize:l?"1.1rem":"1.4rem",fontWeight:700,color:"var(--surface-light)",whiteSpace:"nowrap",flexShrink:0},children:o.name}),!l&&e.jsx("nav",{style:{display:"flex",alignItems:"center",gap:"var(--space-sm)",flex:1,justifyContent:"center"},children:b.map(k=>e.jsx(lr,{item:k,isActive:w===k.label,onHover:M=>g(M),onLeave:()=>g(null)},k.label))}),l&&e.jsx("div",{style:{flex:1}}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-xs)",flexShrink:0},children:[l&&e.jsx(Q,{onClick:()=>f(!u),label:"Menu",size:36,children:e.jsx(pr,{})}),e.jsx(Q,{onClick:s,label:"Toggle theme",size:36,children:t?e.jsx(ur,{}):e.jsx(dr,{})}),!l&&n&&e.jsx(Q,{onClick:n,label:"Notifications",size:36,children:e.jsx(fr,{})}),e.jsx(Q,{onClick:i,label:"Account",size:40,children:e.jsx(vr,{})})]})]}),l&&u&&e.jsx("div",{style:{backgroundColor:"var(--bg-color)",borderTop:"1px solid var(--border-color)",padding:"var(--space-sm)"},children:b.map(k=>e.jsx(cr,{item:k,onClose:()=>f(!1)},k.label))})]})},Q=({onClick:o,label:t,size:s=36,children:i})=>e.jsx("button",{onClick:o,"aria-label":t,style:{width:s,height:s,borderRadius:"var(--radius-full)",backgroundColor:"rgba(255,255,255,0.1)",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",transition:"background var(--transition-fast)",color:"var(--surface-light)"},onMouseEnter:n=>n.currentTarget.style.backgroundColor="rgba(255,255,255,0.2)",onMouseLeave:n=>n.currentTarget.style.backgroundColor="rgba(255,255,255,0.1)",children:i}),lr=({item:o,isActive:t,onHover:s,onLeave:i})=>e.jsxs("div",{onMouseEnter:()=>o.children&&s(o.label),onMouseLeave:i,style:{position:"relative"},children:[e.jsxs("button",{onClick:o.onClick,style:{background:"none",border:"none",color:"var(--surface-light)",cursor:"pointer",fontFamily:"var(--font-sans)",fontWeight:500,fontSize:"0.9rem",padding:"var(--space-xs) var(--space-sm)",borderRadius:"var(--radius-sm)",transition:"background var(--transition-fast)"},onMouseEnter:n=>n.currentTarget.style.backgroundColor="rgba(255,255,255,0.1)",onMouseLeave:n=>n.currentTarget.style.backgroundColor="transparent",children:[o.label," ",o.children&&"▾"]}),o.children&&t&&e.jsx("div",{style:{position:"absolute",top:"100%",left:"50%",transform:"translateX(-50%)",backgroundColor:"var(--bg-color)",minWidth:160,boxShadow:"var(--shadow-lg)",borderRadius:"var(--radius-md)",padding:"var(--space-xs) 0",zIndex:200,marginTop:4},children:o.children.map(n=>e.jsx("button",{onClick:n.onClick,style:{display:"block",width:"100%",padding:"var(--space-sm) var(--space-md)",border:"none",background:"none",textAlign:"left",cursor:"pointer",fontFamily:"var(--font-sans)",fontSize:"0.9rem",color:"var(--text-color)",transition:"background var(--transition-fast)"},onMouseEnter:l=>l.currentTarget.style.backgroundColor="var(--secondary-color)",onMouseLeave:l=>l.currentTarget.style.backgroundColor="transparent",children:n.label},n.label))})]}),cr=({item:o,onClose:t})=>e.jsx("button",{onClick:()=>{var s;(s=o.onClick)==null||s.call(o),t()},style:{display:"block",width:"100%",padding:"var(--space-sm) var(--space-md)",border:"none",background:"none",textAlign:"left",cursor:"pointer",fontFamily:"var(--font-sans)",fontWeight:500,fontSize:"0.95rem",color:"var(--text-color)",borderRadius:"var(--radius-sm)"},children:o.label}),dr=()=>e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("circle",{cx:"12",cy:"12",r:"5"}),e.jsx("path",{d:"M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"})]}),ur=()=>e.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"})}),fr=()=>e.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("path",{d:"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0"})}),vr=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),e.jsx("circle",{cx:"12",cy:"7",r:"4"})]}),pr=()=>e.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("path",{d:"M3 12h18M3 6h18M3 18h18"})}),be=({copyrightBrand:o,yearCreated:t,poweredBy:s,links:i})=>{const n=new Date().getFullYear(),l=t===n?n.toString():`${t}-${n}`;return e.jsx("footer",{style:{backgroundColor:"var(--primary-color)",color:"var(--bg-color)",padding:"var(--space-lg) var(--space-xl)",borderTop:"4px solid var(--accent-color)"},children:e.jsxs("div",{style:{maxWidth:1200,margin:"0 auto",display:"flex",flexDirection:"column",gap:"var(--space-md)",alignItems:"center",textAlign:"center"},children:[i&&i.length>0&&e.jsx("nav",{style:{display:"flex",flexWrap:"wrap",gap:"var(--space-md)",justifyContent:"center"},children:i.map(c=>e.jsx("a",{href:c.url,style:{color:"var(--bg-color)",textDecoration:"none",fontFamily:"var(--font-sans)",fontSize:"0.9rem",opacity:.9,transition:"opacity var(--transition-fast)"},onMouseEnter:u=>u.currentTarget.style.opacity="1",onMouseLeave:u=>u.currentTarget.style.opacity="0.9",children:c.label},c.label))}),e.jsxs("p",{style:{margin:0,fontFamily:"var(--font-sans)",fontSize:"0.85rem",opacity:.8},children:["© ",l," ",o,". All rights reserved."]}),s&&e.jsxs("p",{style:{margin:0,fontFamily:"var(--font-sans)",fontSize:"0.75rem",opacity:.6},children:["Powered by"," ",e.jsx("span",{style:{color:"var(--org-color)",fontWeight:600},children:s})]})]})})},je=()=>e.jsxs(e.Fragment,{children:[e.jsx("style",{children:`
|
|
59
|
+
.mobile-ad-banner {
|
|
60
|
+
display: none;
|
|
61
|
+
}
|
|
62
|
+
@media (max-width: 1200px) {
|
|
63
|
+
.mobile-ad-banner {
|
|
64
|
+
display: block;
|
|
65
|
+
position: sticky;
|
|
66
|
+
bottom: 0;
|
|
67
|
+
left: 0;
|
|
68
|
+
right: 0;
|
|
69
|
+
padding: 8px;
|
|
70
|
+
background-color: var(--bg-color);
|
|
71
|
+
border-top: 2px solid var(--border-color);
|
|
72
|
+
text-align: center;
|
|
73
|
+
margin-top: auto;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
`}),e.jsx("div",{className:"mobile-ad-banner",children:e.jsx("div",{"data-ad-slot":"mobile-banner",style:{width:"100%",maxWidth:468,height:60,margin:"0 auto",backgroundColor:"var(--secondary-color)",border:"2px dashed var(--border-color)",borderRadius:"4px",display:"flex",alignItems:"center",justifyContent:"center",fontFamily:"var(--font-sans)",fontSize:"0.8rem",color:"var(--text-color)",opacity:.6},children:"Ad (468×60)"})})]}),W=({brand:o,children:t,onAccountClick:s,onNotificationClick:i})=>{const{darkMode:n,toggleDarkMode:l}=ve(o);return e.jsxs("div",{className:"shell",style:{display:"flex",flexDirection:"column",minHeight:"100vh"},children:[e.jsx(xe,{brand:o,darkMode:n,onThemeToggle:l,onAccountClick:s,onNotificationClick:i}),e.jsxs("div",{style:{flex:1,display:"flex",flexDirection:"column"},children:[e.jsx("main",{style:{flex:1,backgroundColor:"var(--bg-color)"},children:t}),e.jsx(je,{})]}),e.jsx(be,{copyrightBrand:o.footer.copyrightBrand,yearCreated:o.footer.yearCreated,poweredBy:o.footer.poweredBy,links:o.footer.links})]})},B=({title:o,subtitle:t,breadcrumbs:s,score:i})=>e.jsxs("section",{style:{backgroundColor:"var(--secondary-color)",padding:"var(--space-lg) var(--space-lg)",textAlign:"center",borderBottom:"4px solid var(--accent-color)"},children:[s&&s.length>0&&e.jsx("nav",{style:{marginBottom:"var(--space-md)",display:"flex",justifyContent:"center",gap:"var(--space-sm)",fontFamily:"var(--font-sans)",fontSize:"0.9rem",fontWeight:600},children:s.map((n,l)=>e.jsxs(j.Fragment,{children:[l>0&&e.jsx("span",{style:{color:"var(--surface-light)",opacity:.4},children:"/"}),n.path?e.jsx("a",{href:n.path,style:{color:"var(--accent-color)",textDecoration:"none"},children:n.label}):e.jsx("span",{style:{color:"var(--surface-light)",opacity:.8},children:n.label})]},n.label))}),e.jsx("h1",{style:{margin:0,fontFamily:"var(--font-serif)",fontSize:"clamp(2rem, 5vw, 3.5rem)",fontWeight:700,color:"var(--text-dark)",letterSpacing:"0.02em"},children:o}),t&&e.jsx("p",{style:{margin:"var(--space-sm) 0 0",fontFamily:"var(--font-sans)",fontSize:"1.1rem",color:"var(--text-dark)",opacity:.8},children:t}),i&&e.jsxs("div",{style:{marginTop:"var(--space-md)",display:"inline-flex",flexDirection:"column",alignItems:"center",gap:"var(--space-xs)"},children:[e.jsxs("div",{style:{backgroundColor:"var(--accent-color)",color:"white",padding:"var(--space-sm) var(--space-lg)",borderRadius:"var(--radius-full)",fontFamily:"var(--font-sans)",fontWeight:700,fontSize:"1.5rem",display:"flex",alignItems:"center",gap:"var(--space-sm)",boxShadow:"var(--shadow-md)"},children:[e.jsx("span",{children:i.value}),e.jsx("span",{style:{fontSize:"0.9rem",fontWeight:500},children:i.label})]}),i.betaDisclaimer&&e.jsx("span",{style:{fontFamily:"var(--font-sans)",fontSize:"0.75rem",color:"var(--text-dark)",opacity:.6,fontStyle:"italic"},children:"Score algorithm is a work in progress"})]})]}),P={violations:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"var(--warning-color)",strokeWidth:"2",children:[e.jsx("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"}),e.jsx("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),e.jsx("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),injuries:e.jsx("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"var(--info-color)",strokeWidth:"2",children:e.jsx("path",{d:"M22 12h-4l-3 9L9 3l-3 9H2"})}),fatalities:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"var(--danger-color)",strokeWidth:"2",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),e.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),fines:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"var(--success-color)",strokeWidth:"2",children:[e.jsx("line",{x1:"12",y1:"1",x2:"12",y2:"23"}),e.jsx("path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"})]}),avgFine:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"var(--secondary-color)",strokeWidth:"2",children:[e.jsx("line",{x1:"18",y1:"20",x2:"18",y2:"10"}),e.jsx("line",{x1:"12",y1:"20",x2:"12",y2:"4"}),e.jsx("line",{x1:"6",y1:"20",x2:"6",y2:"14"})]}),trendUp:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"var(--danger-color)",strokeWidth:"2",children:[e.jsx("polyline",{points:"23 6 13.5 15.5 8.5 10.5 1 18"}),e.jsx("polyline",{points:"17 6 23 6 23 12"})]}),trendDown:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"var(--success-color)",strokeWidth:"2",children:[e.jsx("polyline",{points:"23 18 13.5 8.5 8.5 13.5 1 6"}),e.jsx("polyline",{points:"17 18 23 18 23 12"})]})},L=({stats:o,columns:t=4})=>{const s=[{label:"Total Incidents",value:o.totalViolations,icon:P.violations},o.totalInjuries!==void 0&&{label:"Injuries",value:o.totalInjuries,icon:P.injuries},o.totalFatalities!==void 0&&{label:"Fatalities",value:o.totalFatalities,icon:P.fatalities},o.totalFines!==void 0&&{label:"Total Fines",value:ke(o.totalFines),icon:P.fines},o.avgFines!==void 0&&{label:"Avg Fine",value:ke(o.avgFines),icon:P.avgFine},o.trend&&{label:"YoY Change",value:`${o.trend.direction==="up"?"↑":o.trend.direction==="down"?"↓":"→"} ${o.trend.percentage}%`,icon:o.trend.direction==="down"?P.trendDown:P.trendUp}].filter(Boolean);return e.jsx("section",{style:{marginBottom:"var(--space-lg)"},children:e.jsx("div",{className:"stat-grid",style:{display:"grid",gridTemplateColumns:`repeat(${t}, 1fr)`,gap:"var(--space-md)"},children:s.map(i=>e.jsx(gr,{...i},i.label))})})},gr=({label:o,value:t,icon:s})=>e.jsxs("div",{style:{padding:"var(--space-lg)",borderRadius:"var(--radius-md)",backgroundColor:"var(--bg-color)",border:"2px solid var(--border-color)",display:"flex",alignItems:"center",gap:"var(--space-md)",transition:"transform var(--transition-fast), box-shadow var(--transition-fast)",cursor:"default"},onMouseEnter:i=>{i.currentTarget.style.transform="translateY(-2px)",i.currentTarget.style.boxShadow="var(--shadow-md)"},onMouseLeave:i=>{i.currentTarget.style.transform="translateY(0)",i.currentTarget.style.boxShadow="none"},children:[e.jsx("span",{style:{display:"flex",alignItems:"center",justifyContent:"center"},children:s}),e.jsxs("div",{children:[e.jsx("div",{style:{fontFamily:"var(--font-sans)",fontWeight:700,fontSize:"1.5rem",color:"var(--primary-color)"},children:typeof t=="number"?t.toLocaleString():t}),e.jsx("div",{style:{fontFamily:"var(--font-sans)",fontSize:"0.9rem",color:"var(--text-color)",opacity:.8},children:o})]})]});function ke(o){return o>=1e6?`$${(o/1e6).toFixed(1)}M`:o>=1e3?`$${(o/1e3).toFixed(0)}K`:`$${o.toLocaleString()}`}const X=({title:o,items:t,basePath:s,emptyMessage:i="No items found",showSearch:n=!0,initialLimit:l=30})=>{const[c,u]=j.useState(""),[f,w]=j.useState(!1),g=t.filter(T=>T.name.toLowerCase().includes(c.toLowerCase())),b=f||c.length>0,k=b?g:g.slice(0,l),M=g.length>l&&!b;return e.jsx("section",{style:{marginBottom:"var(--space-lg)"},children:e.jsxs("div",{children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"var(--space-md)",flexWrap:"wrap",gap:"var(--space-sm)"},children:[e.jsxs("h2",{style:{margin:0,fontFamily:"var(--font-serif)",fontSize:"1.5rem",color:"var(--text-color)"},children:[o,e.jsxs("span",{style:{marginLeft:"var(--space-sm)",fontSize:"1rem",opacity:.6},children:["(",t.length,")"]})]}),n&&t.length>10&&e.jsx("input",{type:"text",placeholder:"Search...",value:c,onChange:T=>u(T.target.value),style:{padding:"var(--space-sm) var(--space-md)",borderRadius:"var(--radius-md)",border:"2px solid var(--border-color)",fontFamily:"var(--font-sans)",fontSize:"0.9rem",backgroundColor:"var(--bg-color)",color:"var(--text-color)",width:200}})]}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"var(--space-sm)",padding:"var(--space-md)",border:"2px solid var(--border-color)",borderRadius:"var(--radius-md)"},children:g.length===0?e.jsx("p",{style:{width:"100%",textAlign:"center",color:"var(--text-color)",opacity:.6,margin:0,padding:"var(--space-lg)"},children:i}):e.jsxs(e.Fragment,{children:[k.map(T=>e.jsxs("a",{href:`${s}/${T.slug}`,style:{display:"inline-flex",alignItems:"center",gap:"var(--space-xs)",padding:"var(--space-xs) var(--space-sm)",backgroundColor:"var(--bg-color)",border:"1px solid var(--border-color)",borderRadius:"var(--radius-sm)",textDecoration:"none",color:"var(--text-color)",fontFamily:"var(--font-sans)",fontSize:"0.85rem",transition:"all var(--transition-fast)",whiteSpace:"nowrap"},onMouseEnter:_=>{_.currentTarget.style.backgroundColor="var(--primary-color)",_.currentTarget.style.color="var(--surface-light)",_.currentTarget.style.borderColor="var(--primary-color)"},onMouseLeave:_=>{_.currentTarget.style.backgroundColor="var(--bg-color)",_.currentTarget.style.color="var(--text-color)",_.currentTarget.style.borderColor="var(--border-color)"},children:[e.jsx("span",{style:{fontWeight:500},children:T.name}),e.jsx("span",{title:`${T.count.toLocaleString()} incidents`,style:{backgroundColor:"var(--secondary-color)",color:"var(--surface-light)",padding:"2px 6px",borderRadius:"var(--radius-full)",fontSize:"0.75rem",fontWeight:600},children:T.count.toLocaleString()})]},T.slug)),(M||f)&&e.jsx("button",{onClick:()=>w(!f),style:{display:"inline-flex",alignItems:"center",gap:"var(--space-xs)",padding:"var(--space-xs) var(--space-sm)",backgroundColor:"var(--accent-color)",border:"none",borderRadius:"var(--radius-sm)",color:"var(--surface-light)",fontFamily:"var(--font-sans)",fontSize:"0.85rem",fontWeight:500,cursor:"pointer",transition:"all var(--transition-fast)"},onMouseEnter:T=>{T.currentTarget.style.opacity="0.8"},onMouseLeave:T=>{T.currentTarget.style.opacity="1"},children:f?"Show less":`+${g.length-l} more`})]})})]})})},J=({title:o,events:t,viewMorePath:s,showAgencyBadge:i=!1})=>t.length===0?null:e.jsx("section",{style:{marginBottom:"var(--space-lg)"},children:e.jsxs("div",{children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"var(--space-md)"},children:[e.jsx("h2",{style:{margin:0,fontFamily:"var(--font-serif)",fontSize:"1.5rem",color:"var(--text-color)"},children:o}),s&&e.jsx("a",{href:s,style:{color:"var(--accent-color)",textDecoration:"none",fontFamily:"var(--font-sans)",fontWeight:600,fontSize:"0.9rem"},children:"View More →"})]}),e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-sm)"},children:t.map(n=>e.jsx(mr,{event:n,showAgencyBadge:i},n.eventId))})]})}),mr=({event:o,showAgencyBadge:t})=>e.jsx("div",{style:{padding:"var(--space-md) var(--space-lg)",border:"2px solid var(--border-color)",borderRadius:"var(--radius-md)",backgroundColor:"var(--bg-color)"},children:e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",gap:"var(--space-md)",flexWrap:"wrap"},children:[e.jsxs("div",{style:{flex:1,minWidth:200},children:[e.jsx("h3",{style:{margin:0,fontFamily:"var(--font-sans)",fontWeight:600,fontSize:"1rem",color:"var(--text-color)"},children:o.eventTitle}),o.eventDescription&&e.jsx("p",{style:{margin:"var(--space-xs) 0 0",fontFamily:"var(--font-sans)",fontSize:"0.9rem",color:"var(--text-color)",opacity:.7,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:o.eventDescription})]}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:"var(--space-xs)"},children:[t&&e.jsx("span",{style:{backgroundColor:"var(--primary-color)",color:"var(--bg-color)",padding:"var(--space-xs) var(--space-sm)",borderRadius:"var(--radius-sm)",fontFamily:"var(--font-sans)",fontWeight:600,fontSize:"0.75rem",textTransform:"uppercase"},children:o.agency}),o.eventDate&&e.jsx("span",{style:{fontFamily:"var(--font-sans)",fontSize:"0.85rem",color:"var(--text-color)",opacity:.6},children:yr(o.eventDate)}),(o.city||o.state)&&e.jsx("span",{style:{fontFamily:"var(--font-sans)",fontSize:"0.85rem",color:"var(--text-color)",opacity:.6},children:[o.city,o.state].filter(Boolean).join(", ")}),o.companyName&&e.jsxs("a",{href:`/company/${o.companySlug}`,style:{fontFamily:"var(--font-sans)",fontSize:"0.85rem",color:"var(--primary-color)",textDecoration:"none",fontWeight:600,transition:"color var(--transition-fast)"},onMouseEnter:s=>s.currentTarget.style.color="var(--accent-color)",onMouseLeave:s=>s.currentTarget.style.color="var(--primary-color)",children:[o.companyName," →"]})]})]})});function yr(o){try{return new Date(o).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}catch{return o}}const ae=({position:o,width:t,height:s})=>{const i={sidebar:{width:t??280,height:s??250},"left-sidebar":{width:t??"100%",height:s??200},banner:{width:t??"100%",height:s??90},inline:{width:t??"100%",height:s??120}},{width:n,height:l}=i[o];return e.jsxs("div",{"data-ad-slot":o,style:{width:n,height:l,backgroundColor:"var(--secondary-color)",border:"2px dashed var(--border-color)",borderRadius:"var(--radius-md)",display:"flex",alignItems:"center",justifyContent:"center",fontFamily:"var(--font-sans)",fontSize:"0.85rem",color:"var(--text-color)",opacity:.5},children:["Ad Placeholder (",o,")"]})},O=({meta:o,showAd:t=!0})=>{if(!o&&!t)return null;const s=o?[o.population&&{label:"Population",value:o.population.toLocaleString()},o.industry&&{label:"Industry",value:o.industry},o.founded&&{label:"Founded",value:o.founded},o.headquarters&&{label:"HQ",value:o.headquarters}].filter(Boolean):[];return e.jsxs("aside",{className:"page-sidebar",style:{display:"flex",flexDirection:"column",gap:"var(--space-md)"},children:[s.length>0&&e.jsxs("div",{style:{padding:"var(--space-lg)",backgroundColor:"var(--bg-color)",border:"2px solid var(--border-color)",borderRadius:"var(--radius-md)"},children:[(o==null?void 0:o.logoUrl)&&e.jsx("div",{style:{width:80,height:80,margin:"0 auto var(--space-md)",borderRadius:"var(--radius-md)",overflow:"hidden",backgroundColor:"white",display:"flex",alignItems:"center",justifyContent:"center"},children:e.jsx("img",{src:o.logoUrl,alt:"",style:{maxWidth:"100%",maxHeight:"100%"}})}),(o==null?void 0:o.flagUrl)&&e.jsx("div",{style:{width:"100%",margin:"0 auto var(--space-md)",borderRadius:"var(--radius-sm)",overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--border-color)"},children:e.jsx("img",{src:o.flagUrl,alt:"",style:{width:"100%",height:"auto",display:"block"}})}),e.jsx("dl",{style:{margin:0},children:s.map(({label:i,value:n})=>e.jsxs("div",{style:{padding:"var(--space-sm) 0",borderBottom:"1px solid var(--border-color)"},children:[e.jsx("dt",{style:{fontFamily:"var(--font-sans)",fontSize:"0.75rem",color:"var(--text-color)",opacity:.6,textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"2px"},children:i}),e.jsx("dd",{style:{margin:0,fontFamily:"var(--font-sans)",fontSize:"0.9rem",fontWeight:600,color:"var(--text-color)"},children:n})]},i))})]}),t&&e.jsx(ae,{position:"sidebar"})]})},Y=({showAd:o=!0})=>e.jsxs("aside",{className:"page-filters",style:{display:"flex",flexDirection:"column",gap:"var(--space-md)"},children:[e.jsxs("div",{style:{padding:"var(--space-md)",backgroundColor:"var(--bg-color)",border:"2px solid var(--border-color)",borderRadius:"var(--radius-md)"},children:[e.jsx("h3",{style:{margin:"0 0 var(--space-md)",fontFamily:"var(--font-serif)",fontSize:"1.1rem",color:"var(--text-color)"},children:"Filters"}),e.jsxs("div",{style:{marginBottom:"var(--space-md)"},children:[e.jsx("label",{style:{display:"block",fontSize:"0.85rem",fontWeight:500,marginBottom:"var(--space-xs)",color:"var(--text-color)"},children:"Date Range"}),e.jsxs("select",{style:{width:"100%",padding:"var(--space-sm)",borderRadius:"var(--radius-sm)",border:"1px solid var(--border-color)",backgroundColor:"var(--bg-color)",color:"var(--text-color)",fontSize:"0.9rem"},children:[e.jsx("option",{children:"All Time"}),e.jsx("option",{children:"Last Year"}),e.jsx("option",{children:"Last 5 Years"}),e.jsx("option",{children:"Last 10 Years"})]})]}),e.jsxs("div",{style:{marginBottom:"var(--space-md)"},children:[e.jsx("label",{style:{display:"block",fontSize:"0.85rem",fontWeight:500,marginBottom:"var(--space-xs)",color:"var(--text-color)"},children:"Severity"}),e.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-xs)"},children:["All","Fatalities","Hospitalizations","Amputations"].map(t=>e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"var(--space-xs)",fontSize:"0.85rem",cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",defaultChecked:t==="All",style:{accentColor:"var(--primary-color)"}}),t]},t))})]}),e.jsxs("div",{children:[e.jsx("label",{style:{display:"block",fontSize:"0.85rem",fontWeight:500,marginBottom:"var(--space-xs)",color:"var(--text-color)"},children:"Sort By"}),e.jsxs("select",{style:{width:"100%",padding:"var(--space-sm)",borderRadius:"var(--radius-sm)",border:"1px solid var(--border-color)",backgroundColor:"var(--bg-color)",color:"var(--text-color)",fontSize:"0.9rem"},children:[e.jsx("option",{children:"Most Incidents"}),e.jsx("option",{children:"Most Recent"}),e.jsx("option",{children:"Highest Fines"}),e.jsx("option",{children:"Alphabetical"})]})]})]}),o&&e.jsx(ae,{position:"left-sidebar"})]}),hr=({brand:o,data:t,onAccountClick:s,onNotificationClick:i})=>{const n=[{label:"Explore",path:"/explore"},{label:t.name}],l=o.scoreConfig&&t.stats.score!==void 0?{value:t.stats.score,label:o.scoreConfig.name,betaDisclaimer:o.scoreConfig.betaDisclaimer}:void 0;return e.jsxs(W,{brand:o,onAccountClick:s,onNotificationClick:i,children:[e.jsx(B,{title:t.name,subtitle:o.tagline||"Explore worker safety data across the nation",breadcrumbs:n,score:l}),e.jsxs("div",{className:"page-layout",children:[e.jsx(Y,{showAd:!0}),e.jsxs("main",{className:"page-main",children:[e.jsx(L,{stats:t.stats,columns:4}),e.jsx(X,{title:"States & Territories",items:t.directory,basePath:"",initialLimit:60})]}),e.jsx(O,{meta:t.meta,showAd:!0})]})]})},xr=({brand:o,data:t,onAccountClick:s,onNotificationClick:i})=>{const n=[{label:"USA",path:"/explore"},{label:t.name}],l=o.scoreConfig&&t.stats.score!==void 0?{value:t.stats.score,label:o.scoreConfig.name,betaDisclaimer:o.scoreConfig.betaDisclaimer}:void 0,c=Object.keys(t.recentByAgency);return e.jsxs(W,{brand:o,onAccountClick:s,onNotificationClick:i,children:[e.jsx(B,{title:t.name,subtitle:`Worker safety data for ${t.name}`,breadcrumbs:n,score:l}),e.jsxs("div",{className:"page-layout",children:[e.jsx(Y,{showAd:!0}),e.jsxs("main",{className:"page-main",children:[e.jsx(L,{stats:t.stats}),e.jsx(X,{title:"Cities",items:t.directory,basePath:`/${t.slug.toLowerCase()}`}),c.map(u=>e.jsx(J,{title:`Recent ${u} Incidents`,events:t.recentByAgency[u],viewMorePath:`/${t.slug.toLowerCase()}/events/${u.toLowerCase()}`,showAgencyBadge:!1},u))]}),e.jsx(O,{meta:t.meta,showAd:!0})]})]})},br=({brand:o,data:t,onAccountClick:s,onNotificationClick:i})=>{const n=[{label:"USA",path:"/explore"},{label:t.stateName,path:`/${t.state.toLowerCase()}`},{label:t.name}],l=o.scoreConfig&&t.stats.score!==void 0?{value:t.stats.score,label:o.scoreConfig.name,betaDisclaimer:o.scoreConfig.betaDisclaimer}:void 0,c=Object.keys(t.recentByAgency),u=`/${t.state.toLowerCase()}/${t.slug}`;return e.jsxs(W,{brand:o,onAccountClick:s,onNotificationClick:i,children:[e.jsx(B,{title:`${t.name}, ${t.state}`,subtitle:`Worker safety data for ${t.name}`,breadcrumbs:n,score:l}),e.jsxs("div",{className:"page-layout",children:[e.jsx(Y,{showAd:!0}),e.jsxs("main",{className:"page-main",children:[e.jsx(L,{stats:t.stats}),e.jsx(X,{title:"Companies",items:t.directory,basePath:"/company"}),c.map(f=>e.jsx(J,{title:`Recent ${f} Incidents`,events:t.recentByAgency[f],viewMorePath:`${u}/events/${f.toLowerCase()}`,showAgencyBadge:!1},f))]}),e.jsx(O,{meta:t.meta,showAd:!0})]})]})},jr=({brand:o,data:t,onAccountClick:s,onNotificationClick:i})=>{var u;const n=[{label:"USA",path:"/explore"},{label:"Companies",path:"/companies"},{label:t.name}],l=o.scoreConfig&&t.stats.score!==void 0?{value:t.stats.score,label:o.scoreConfig.name,betaDisclaimer:o.scoreConfig.betaDisclaimer}:void 0,c=t.sites&&t.sites.length>0;return e.jsxs(W,{brand:o,onAccountClick:s,onNotificationClick:i,children:[e.jsx(B,{title:t.name,subtitle:(u=t.meta)!=null&&u.industry?`${t.meta.industry}`:void 0,breadcrumbs:n,score:l}),e.jsxs("div",{className:"page-layout",children:[e.jsx(Y,{showAd:!0}),e.jsxs("main",{className:"page-main",children:[e.jsx(L,{stats:t.stats}),c&&e.jsx(X,{title:"Locations",items:t.sites,basePath:`/company/${t.slug}/site`}),e.jsx(J,{title:"Recent Incidents",events:t.recentEvents.slice(0,c?5:10),viewMorePath:`/company/${t.slug}/events`,showAgencyBadge:!0})]}),e.jsx(O,{meta:t.meta,showAd:!0})]})]})},kr=({brand:o,data:t,onAccountClick:s,onNotificationClick:i})=>{const n=[{label:"USA",path:"/explore"},{label:"Companies",path:"/companies"},{label:t.companyName,path:`/company/${t.companySlug}`},{label:`#${t.siteId}`}],l=o.scoreConfig&&t.stats.score!==void 0?{value:t.stats.score,label:o.scoreConfig.name,betaDisclaimer:o.scoreConfig.betaDisclaimer}:void 0;return e.jsxs(W,{brand:o,onAccountClick:s,onNotificationClick:i,children:[e.jsx(B,{title:t.name,subtitle:`Location #${t.siteId} of ${t.companyName}`,breadcrumbs:n,score:l}),e.jsxs("div",{className:"page-layout",children:[e.jsx(Y,{showAd:!0}),e.jsxs("main",{className:"page-main",children:[e.jsx(L,{stats:t.stats}),t.siblings&&t.siblings.length>0&&e.jsxs("section",{style:{padding:"var(--space-lg)",backgroundColor:"var(--bg-color)",marginBottom:"var(--space-lg)",borderRadius:"var(--radius-md)",border:"1px solid var(--border-color)"},children:[e.jsx("h2",{style:{margin:"0 0 var(--space-md)",fontFamily:"var(--font-serif)",fontSize:"1.5rem",color:"var(--text-color)"},children:"Compare to Other Locations"}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"var(--space-sm)"},children:t.siblings.slice(0,10).map(c=>e.jsxs("a",{href:`/company/${t.companySlug}/site/${c.slug}`,style:{padding:"var(--space-sm) var(--space-md)",backgroundColor:"var(--secondary-color)",borderRadius:"var(--radius-md)",textDecoration:"none",color:"var(--text-dark)",fontFamily:"var(--font-sans)",fontSize:"0.9rem",display:"flex",alignItems:"center",gap:"var(--space-xs)",transition:"background var(--transition-fast)"},onMouseEnter:u=>u.currentTarget.style.backgroundColor="var(--accent-color)",onMouseLeave:u=>u.currentTarget.style.backgroundColor="var(--secondary-color)",children:[e.jsxs("span",{children:["#",c.name]}),e.jsx("span",{style:{backgroundColor:"var(--primary-color)",color:"var(--text-dark)",padding:"2px 6px",borderRadius:"var(--radius-sm)",fontSize:"0.75rem"},children:c.count})]},c.slug))})]}),e.jsx(J,{title:"Recent Incidents",events:t.recentEvents,viewMorePath:`/company/${t.companySlug}/site/${t.siteId}/events`,showAgencyBadge:!0})]}),e.jsx(O,{meta:t.meta,showAd:!0})]})]})};p.AdSlot=ae,p.Alert=tr,p.Badge=qe,p.Button=Ge,p.Card=Ze,p.CityPage=br,p.CompanyPage=jr,p.Directory=X,p.FilterSidebar=Y,p.Footer=be,p.Header=xe,p.Hero=B,p.InfoSidebar=O,p.Input=er,p.LoadingOverlay=sr,p.MobileAdBanner=je,p.Modal=or,p.NationPage=hr,p.RecentEvents=J,p.Shell=W,p.SitePage=kr,p.Skeleton=te,p.SkeletonCard=ir,p.SkeletonText=he,p.Spinner=ye,p.StatGrid=L,p.StatePage=xr,p.Table=rr,p.Tabs=ar,p.Tooltip=nr,p.applyTheme=pe,p.useTheme=ve,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&family=Roboto:wght@300;400;500;700&display=swap";:root{--primary-color: #1a365d;--secondary-color: #2d3748;--accent-color: #319795;--surface-light: #fafafa;--surface-dark: #1a1a2e;--text-light: #1a1a1a;--text-dark: #f5f5f5;--org-color: #D2691E;--success-color: #38a169;--warning-color: #d69e2e;--danger-color: #e53e3e;--info-color: #3182ce;--bg-color: var(--surface-light);--text-color: var(--text-light);--border-color: var(--secondary-color);--font-sans: "Roboto", system-ui, sans-serif;--font-serif: "Lora", Georgia, serif;--font-mono: "Fira Code", monospace;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 32px;--space-xl: 64px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease}.dark-mode{--bg-color: var(--surface-dark);--text-color: var(--text-dark);--border-color: var(--accent-color)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);background-color:var(--bg-color);color:var(--text-color);line-height:1.5;transition:background-color var(--transition-normal),color var(--transition-normal)}:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-color)}::-webkit-scrollbar-thumb{background:var(--secondary-color);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--primary-color)}.page-layout{display:grid;grid-template-columns:220px 1fr 280px;gap:var(--space-lg);padding:var(--space-lg);padding-top:var(--space-xl);max-width:1800px;margin:0 auto;align-items:start}.page-main{min-width:0}.page-filters{position:sticky;top:100px;max-height:calc(100vh - 120px);overflow-y:auto}.page-sidebar{position:sticky;top:100px;max-height:calc(100vh - 120px);overflow-y:auto;overflow-x:hidden}.page-sidebar::-webkit-scrollbar,.page-filters::-webkit-scrollbar{width:0;background:transparent}.page-content.with-filters{padding-left:260px}@media (max-width: 1400px){.page-layout{grid-template-columns:180px 1fr 260px}.stat-grid{grid-template-columns:repeat(3,1fr)!important}}@media (max-width: 1200px){.page-layout{grid-template-columns:1fr 240px}.page-filters{display:none!important}.stat-grid{grid-template-columns:repeat(3,1fr)!important}}@media (max-width: 992px){.page-layout{grid-template-columns:1fr;padding:var(--space-md)}.page-sidebar,.page-filters{display:none!important}.stat-grid{grid-template-columns:repeat(2,1fr)!important}}@media (max-width: 768px){.page-layout{padding:var(--space-sm);gap:var(--space-md)}.stat-grid{grid-template-columns:repeat(2,1fr)!important}}@media (max-width: 480px){.stat-grid{grid-template-columns:1fr!important}}.mobile-ad-banner{display:block;position:fixed;bottom:0;left:0;right:0;padding:var(--space-sm);background:var(--bg-color);border-top:2px solid var(--border-color);z-index:1000;text-align:center}@media (min-width: 1201px){.mobile-ad-banner{display:none}}@media (max-width: 1200px){.page-layout{padding-bottom:80px}}.mobile-info-bar{display:none}@media (max-width: 992px){.mobile-info-bar{display:flex;gap:var(--space-sm);padding:var(--space-sm);background:var(--secondary-color);border-radius:var(--radius-md);margin-bottom:var(--space-md);overflow-x:auto;white-space:nowrap}.mobile-info-bar>span{padding:var(--space-xs) var(--space-sm);background:var(--bg-color);border-radius:var(--radius-sm);font-size:.8rem;color:var(--text-color)}}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sirsluginston/sharedui",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Server-Driven UI component library for SirSluginston Co projects",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/sharedui.js",
|
|
7
|
+
"module": "dist/sharedui.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/sharedui.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./style.css": "./dist/style.css"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"sideEffects": [
|
|
20
|
+
"**/*.css"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"dev": "vite",
|
|
24
|
+
"build": "tsc && vite build",
|
|
25
|
+
"preview": "vite preview"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"react": "^18.0.0",
|
|
29
|
+
"react-dom": "^18.0.0"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/react": "^18.2.0",
|
|
33
|
+
"@types/react-dom": "^18.2.0",
|
|
34
|
+
"@vitejs/plugin-react": "^4.2.0",
|
|
35
|
+
"react": "^18.3.1",
|
|
36
|
+
"react-dom": "^18.3.1",
|
|
37
|
+
"typescript": "^5.3.0",
|
|
38
|
+
"vite": "^5.0.0",
|
|
39
|
+
"vite-plugin-dts": "^3.7.0"
|
|
40
|
+
},
|
|
41
|
+
"keywords": [
|
|
42
|
+
"react",
|
|
43
|
+
"ui",
|
|
44
|
+
"components",
|
|
45
|
+
"sdui",
|
|
46
|
+
"server-driven-ui",
|
|
47
|
+
"sirsluginston"
|
|
48
|
+
],
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "https://github.com/SirSluginston/VentureOS.git",
|
|
52
|
+
"directory": "SharedUI"
|
|
53
|
+
},
|
|
54
|
+
"homepage": "https://github.com/SirSluginston/VentureOS/tree/main/SharedUI",
|
|
55
|
+
"bugs": {
|
|
56
|
+
"url": "https://github.com/SirSluginston/VentureOS/issues"
|
|
57
|
+
},
|
|
58
|
+
"author": "SirSluginston",
|
|
59
|
+
"license": "MIT"
|
|
60
|
+
}
|