dishui 0.0.3 → 0.0.5

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.
Files changed (68) hide show
  1. package/README.md +44 -74
  2. package/dist/dishui.es.js +97 -97
  3. package/dist/dishui.umd.js +3 -3
  4. package/dist/index.d.ts +1 -0
  5. package/dist/types/src/App.d.ts +3 -0
  6. package/dist/types/src/components/Badge/index.d.ts +10 -0
  7. package/dist/types/src/components/Button/index.d.ts +42 -0
  8. package/dist/types/src/components/Card/index.d.ts +38 -0
  9. package/dist/types/src/components/DataTable/DataTable.d.ts +78 -0
  10. package/dist/types/src/components/DataTable/Filters.d.ts +59 -0
  11. package/dist/types/src/components/DataTable/index.d.ts +16 -0
  12. package/dist/types/src/components/DataTable/utils.d.ts +56 -0
  13. package/dist/types/src/components/Demo/index.d.ts +10 -0
  14. package/dist/types/src/components/Input/index.d.ts +24 -0
  15. package/dist/types/src/components/Label/index.d.ts +36 -0
  16. package/dist/types/src/components/List/index.d.ts +38 -0
  17. package/dist/types/src/components/Select/index.d.ts +17 -0
  18. package/dist/types/src/components/Table/index.d.ts +56 -0
  19. package/dist/types/src/contexts/AppContext.d.ts +14 -0
  20. package/dist/types/src/index.d.ts +9 -0
  21. package/dist/types/src/index.routes.d.ts +7 -0
  22. package/dist/types/src/layouts/MainLayout.d.ts +6 -0
  23. package/dist/types/src/layouts/Navbar.d.ts +6 -0
  24. package/dist/types/src/layouts/Sidebar.d.ts +10 -0
  25. package/dist/types/src/main.d.ts +1 -0
  26. package/dist/types/src/pages/Home.d.ts +3 -0
  27. package/dist/types/src/pages/Home.en.d.ts +3 -0
  28. package/dist/types/src/pages/Home.zh.d.ts +3 -0
  29. package/dist/types/src/pages/components/Badge/index.d.ts +3 -0
  30. package/dist/types/src/pages/components/Badge/index.en.d.ts +3 -0
  31. package/dist/types/src/pages/components/Badge/index.zh.d.ts +3 -0
  32. package/dist/types/src/pages/components/Button/index.d.ts +3 -0
  33. package/dist/types/src/pages/components/Button/index.en.d.ts +3 -0
  34. package/dist/types/src/pages/components/Button/index.zh.d.ts +3 -0
  35. package/dist/types/src/pages/components/Card/index.d.ts +3 -0
  36. package/dist/types/src/pages/components/Card/index.en.d.ts +3 -0
  37. package/dist/types/src/pages/components/Card/index.zh.d.ts +3 -0
  38. package/dist/types/src/pages/components/DataTable/advanced.d.ts +3 -0
  39. package/dist/types/src/pages/components/DataTable/advanced.en.d.ts +3 -0
  40. package/dist/types/src/pages/components/DataTable/advanced.zh.d.ts +3 -0
  41. package/dist/types/src/pages/components/DataTable/advancedTreeTable.d.ts +3 -0
  42. package/dist/types/src/pages/components/DataTable/advancedTreeTable.en.d.ts +3 -0
  43. package/dist/types/src/pages/components/DataTable/advancedTreeTable.zh.d.ts +3 -0
  44. package/dist/types/src/pages/components/DataTable/index.d.ts +3 -0
  45. package/dist/types/src/pages/components/DataTable/index.en.d.ts +3 -0
  46. package/dist/types/src/pages/components/DataTable/index.zh.d.ts +3 -0
  47. package/dist/types/src/pages/components/Input/index.d.ts +3 -0
  48. package/dist/types/src/pages/components/Input/index.en.d.ts +3 -0
  49. package/dist/types/src/pages/components/Input/index.zh.d.ts +3 -0
  50. package/dist/types/src/pages/components/Label/index.d.ts +3 -0
  51. package/dist/types/src/pages/components/Label/index.en.d.ts +3 -0
  52. package/dist/types/src/pages/components/Label/index.zh.d.ts +3 -0
  53. package/dist/types/src/pages/components/List/index.d.ts +3 -0
  54. package/dist/types/src/pages/components/List/index.en.d.ts +3 -0
  55. package/dist/types/src/pages/components/List/index.zh.d.ts +3 -0
  56. package/dist/types/src/pages/components/Select/SelectExampleContent.d.ts +3 -0
  57. package/dist/types/src/pages/components/Select/index.d.ts +2 -0
  58. package/dist/types/src/pages/components/Select/index.en.d.ts +3 -0
  59. package/dist/types/src/pages/components/Select/index.zh.d.ts +3 -0
  60. package/dist/types/src/pages/components/Table/en.d.ts +3 -0
  61. package/dist/types/src/pages/components/Table/index.d.ts +3 -0
  62. package/dist/types/src/pages/components/Table/zh.d.ts +3 -0
  63. package/dist/types/src/pages/layouts/Sidebar/index.d.ts +3 -0
  64. package/dist/types/src/types/menu.d.ts +8 -0
  65. package/dist/types/src/utils/i18n.d.ts +25 -0
  66. package/dist/types/vite.config.d.mts +2 -0
  67. package/index.d.ts +3 -0
  68. package/package.json +15 -4
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * This source code is licensed under the MIT license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
- */var te;function le(){if(te)return J;te=1;var f=Symbol.for("react.transitional.element"),i=Symbol.for("react.fragment");function p(n,u,t){var v=null;if(t!==void 0&&(v=""+t),u.key!==void 0&&(v=""+u.key),"key"in u){t={};for(var c in u)c!=="key"&&(t[c]=u[c])}else t=u;return u=t.ref,{$$typeof:f,type:n,key:v,ref:u!==void 0?u:null,props:t}}return J.Fragment=i,J.jsx=p,J.jsxs=p,J}var X={};/**
9
+ */var te;function le(){if(te)return J;te=1;var f=Symbol.for("react.transitional.element"),i=Symbol.for("react.fragment");function p(s,u,r){var v=null;if(r!==void 0&&(v=""+r),u.key!==void 0&&(v=""+u.key),"key"in u){r={};for(var c in u)c!=="key"&&(r[c]=u[c])}else r=u;return u=r.ref,{$$typeof:f,type:s,key:v,ref:u!==void 0?u:null,props:r}}return J.Fragment=i,J.jsx=p,J.jsxs=p,J}var X={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,9 +14,9 @@
14
14
  *
15
15
  * This source code is licensed under the MIT license found in the
16
16
  * LICENSE file in the root directory of this source tree.
17
- */var re;function ie(){return re||(re=1,process.env.NODE_ENV!=="production"&&function(){function f(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===_?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case R:return"Fragment";case I:return"Profiler";case $:return"StrictMode";case q:return"Suspense";case M:return"SuspenseList";case z: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 a:return"Portal";case Y:return(e.displayName||"Context")+".Provider";case S:return(e._context.displayName||"Context")+".Consumer";case A:var s=e.render;return e=e.displayName,e||(e=s.displayName||s.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case V:return s=e.displayName||null,s!==null?s:f(e.type)||"Memo";case L:s=e._payload,e=e._init;try{return f(e(s))}catch{}}return null}function i(e){return""+e}function p(e){try{i(e);var s=!1}catch{s=!0}if(s){s=console;var l=s.error,b=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return l.call(s,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",b),i(e)}}function n(e){if(e===R)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===L)return"<...>";try{var s=f(e);return s?"<"+s+">":"<...>"}catch{return"<...>"}}function u(){var e=j.A;return e===null?null:e.getOwner()}function t(){return Error("react-stack-top-frame")}function v(e){if(N.call(e,"key")){var s=Object.getOwnPropertyDescriptor(e,"key").get;if(s&&s.isReactWarning)return!1}return e.key!==void 0}function c(e,s){function l(){U||(U=!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)",s))}l.isReactWarning=!0,Object.defineProperty(e,"key",{get:l,configurable:!0})}function g(){var e=f(this.type);return B[e]||(B[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 E(e,s,l,b,O,h,k,P){return l=h.ref,e={$$typeof:o,type:e,key:s,props:h,_owner:O},(l!==void 0?l:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:g}):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:k}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:P}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function w(e,s,l,b,O,h,k,P){var m=s.children;if(m!==void 0)if(b)if(G(m)){for(b=0;b<m.length;b++)T(m[b]);Object.freeze&&Object.freeze(m)}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 T(m);if(N.call(s,"key")){m=f(e);var F=Object.keys(s).filter(function(se){return se!=="key"});b=0<F.length?"{key: someKey, "+F.join(": ..., ")+": ...}":"{key: someKey}",Q[m+b]||(F=0<F.length?"{"+F.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
17
+ */var re;function ie(){return re||(re=1,process.env.NODE_ENV!=="production"&&function(){function f(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===_?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case R:return"Fragment";case I:return"Profiler";case $:return"StrictMode";case q:return"Suspense";case M:return"SuspenseList";case z: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 a:return"Portal";case Y:return(e.displayName||"Context")+".Provider";case S:return(e._context.displayName||"Context")+".Consumer";case A:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case V:return t=e.displayName||null,t!==null?t:f(e.type)||"Memo";case L:t=e._payload,e=e._init;try{return f(e(t))}catch{}}return null}function i(e){return""+e}function p(e){try{i(e);var t=!1}catch{t=!0}if(t){t=console;var l=t.error,b=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return l.call(t,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",b),i(e)}}function s(e){if(e===R)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===L)return"<...>";try{var t=f(e);return t?"<"+t+">":"<...>"}catch{return"<...>"}}function u(){var e=j.A;return e===null?null:e.getOwner()}function r(){return Error("react-stack-top-frame")}function v(e){if(N.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function l(){U||(U=!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)",t))}l.isReactWarning=!0,Object.defineProperty(e,"key",{get:l,configurable:!0})}function g(){var e=f(this.type);return B[e]||(B[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 E(e,t,l,b,O,h,k,P){return l=h.ref,e={$$typeof:o,type:e,key:t,props:h,_owner:O},(l!==void 0?l:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:g}):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:k}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:P}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function w(e,t,l,b,O,h,k,P){var m=t.children;if(m!==void 0)if(b)if(G(m)){for(b=0;b<m.length;b++)T(m[b]);Object.freeze&&Object.freeze(m)}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 T(m);if(N.call(t,"key")){m=f(e);var F=Object.keys(t).filter(function(se){return se!=="key"});b=0<F.length?"{key: someKey, "+F.join(": ..., ")+": ...}":"{key: someKey}",Q[m+b]||(F=0<F.length?"{"+F.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
18
  let props = %s;
19
19
  <%s {...props} />
20
20
  React keys must be passed directly to JSX without using spread:
21
21
  let props = %s;
22
- <%s key={someKey} {...props} />`,b,m,F,m),Q[m+b]=!0)}if(m=null,l!==void 0&&(p(l),m=""+l),v(s)&&(p(s.key),m=""+s.key),"key"in s){l={};for(var H in s)H!=="key"&&(l[H]=s[H])}else l=s;return m&&c(l,typeof e=="function"?e.displayName||e.name||"Unknown":e),E(e,m,h,O,u(),l,k,P)}function T(e){typeof e=="object"&&e!==null&&e.$$typeof===o&&e._store&&(e._store.validated=1)}var d=x,o=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),R=Symbol.for("react.fragment"),$=Symbol.for("react.strict_mode"),I=Symbol.for("react.profiler"),S=Symbol.for("react.consumer"),Y=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),q=Symbol.for("react.suspense"),M=Symbol.for("react.suspense_list"),V=Symbol.for("react.memo"),L=Symbol.for("react.lazy"),z=Symbol.for("react.activity"),_=Symbol.for("react.client.reference"),j=d.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,N=Object.prototype.hasOwnProperty,G=Array.isArray,W=console.createTask?console.createTask:function(){return null};d={"react-stack-bottom-frame":function(e){return e()}};var U,B={},D=d["react-stack-bottom-frame"].bind(d,t)(),Z=W(n(t)),Q={};X.Fragment=R,X.jsx=function(e,s,l,b,O){var h=1e4>j.recentlyCreatedOwnerStacks++;return w(e,s,l,!1,b,O,h?Error("react-stack-top-frame"):D,h?W(n(e)):Z)},X.jsxs=function(e,s,l,b,O){var h=1e4>j.recentlyCreatedOwnerStacks++;return w(e,s,l,!0,b,O,h?Error("react-stack-top-frame"):D,h?W(n(e)):Z)}}()),X}var ne;function ce(){return ne||(ne=1,process.env.NODE_ENV==="production"?K.exports=le():K.exports=ie()),K.exports}var r=ce();const ue=({children:f,variant:i="primary",size:p="md",outline:n=!1,dash:u=!1,soft:t=!1,active:v=!1,disabled:c=!1,wide:g=!1,block:E=!1,square:w=!1,circle:T=!1,leftSection:d,rightSection:o,onClick:a,className:R=""})=>{const $="btn",I=i?`btn-${i}`:"",S=p?`btn-${p}`:"",j=[$,I,S,n?"btn-outline":"",u?"btn-dash":"",t?"btn-soft":"",v?"btn-active":"",g?"btn-wide":"",E?"btn-block":"",w?"btn-square":"",T?"btn-circle":"",R].filter(Boolean).join(" ");return r.jsxs("button",{className:j,disabled:c,onClick:a,children:[d&&r.jsx("span",{className:"mr-2",children:d}),f,o&&r.jsx("span",{className:"ml-2",children:o})]})},fe=({children:f,vertical:i=!1,className:p="",rounded:n="none",radius:u="full",roundedStyle:t})=>{const v=["join",i?"join-vertical":"join-horizontal",p].filter(Boolean).join(" "),c=n!=="none"?"full":u;return r.jsx("div",{className:v,children:x.Children.map(f,(g,E)=>{if(!x.isValidElement(g))return g;const w=g,T=w.props.className||"",d=E===0,o=E===x.Children.count(f)-1;let a="";t?i?n==="left"&&d&&t.top?a=t.top:n==="right"&&o&&t.bottom?a=t.bottom:n==="both"&&(d&&t.top&&(a=t.top),o&&t.bottom&&(a=t.bottom)):n==="left"&&d&&t.left?a=t.left:n==="right"&&o&&t.right?a=t.right:n==="both"&&(d&&t.left&&(a=t.left),o&&t.right&&(a=t.right)):i?n==="left"&&d?a=`rounded-t-${c}`:n==="right"&&o?a=`rounded-b-${c}`:n==="both"&&(d&&(a=`rounded-t-${c}`),o&&(a=`rounded-b-${c}`)):n==="left"&&d?a=`rounded-l-${c}`:n==="right"&&o?a=`rounded-r-${c}`:n==="both"&&(d&&(a=`rounded-l-${c}`),o&&(a=`rounded-r-${c}`));const R=`${T} join-item ${a}`.trim();return x.cloneElement(w,{className:R})})})},de=({children:f,className:i=""})=>{const p=["join-item","flex","items-center","px-4","bg-base-200","border","border-base-300",i].filter(Boolean).join(" ");return r.jsx("div",{className:p,children:f})},ee=ue;ee.Group=fe,ee.GroupSection=de;const me=({children:f,variant:i="primary",size:p="md",outline:n=!1,className:u=""})=>{const t="badge",v=i?`badge-${i}`:"",c=p?`badge-${p}`:"",E=[t,v,c,n?"badge-outline":"",u].filter(Boolean).join(" ");return r.jsx("div",{className:E,children:f})},pe=({placeholder:f,value:i,onChange:p,type:n="text",variant:u,size:t="md",disabled:v=!1,required:c=!1,label:g,leftSection:E,rightSection:w,pattern:T,className:d="",validator:o=!1,validatorHint:a,validationRules:R=[]})=>{const[$,I]=x.useState(!1),[S,Y]=x.useState(""),[A,q]=x.useState(null),[M,V]=x.useState(!1),[L,z]=x.useState([]),_=x.useRef(null),j=n==="password"&&$?"text":n,N=h=>{const k=h.target.value;if(n==="password"&&k.length>(i||"").length){const P=k.slice((i||"").length);Y(P),setTimeout(()=>{Y("")},1e3)}o&&_.current&&G(k),p&&p(h)},G=h=>{if(!_.current)return;const k=_.current.checkValidity(),P=[];R.length>0&&R.forEach(m=>{m.pattern.test(h)||P.push(m.message)}),z(P),q(k&&P.length===0)},W=()=>{I(!$)},U=()=>{o&&!A&&V(!0)},B=()=>{V(!1)};let D="";o&&A!==null&&(D=A?"input-success":"input-error");const Z="input",Q=u&&!D?`input-${u}`:"",e=t?`input-${t}`:"",l=[Z,Q,e,o?"validator":"",D,d].filter(Boolean).join(" "),b=n==="password"&&r.jsx("span",{className:"cursor-pointer opacity-70 hover:opacity-100",onClick:W,children:$?r.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[r.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"}),r.jsx("path",{d:"M14.12 14.12a3 3 0 1 1-4.24-4.24"}),r.jsx("path",{d:"M1 1l22 22"}),r.jsx("path",{d:"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"})]}):r.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[r.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),r.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}),O=r.jsx("div",{className:"validation-tooltip",children:L.length>0?r.jsx("ul",{className:"text-xs list-disc pl-4 py-1",children:L.map((h,k)=>r.jsx("li",{children:h},k))}):a?r.jsx("p",{className:"text-xs py-1",children:a}):null});return g||E||w||n==="password"?r.jsxs("div",{className:"relative",onMouseEnter:U,onMouseLeave:B,children:[r.jsxs("label",{className:l,children:[E&&r.jsx("span",{children:E}),g&&r.jsx("span",{children:g}),r.jsx("input",{ref:_,type:j,placeholder:f,value:i,onChange:N,disabled:v,required:c,className:"grow",pattern:T}),n==="password"&&S&&r.jsx("span",{className:"password-recent absolute right-10 font-mono",children:S}),n==="password"?r.jsx("span",{children:b}):w?r.jsx("span",{children:w}):null]}),o&&a&&!M&&r.jsx("p",{className:"validator-hint text-xs mt-1 opacity-70",children:a}),M&&o&&!A&&r.jsx("div",{className:"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",children:O})]}):r.jsxs("div",{className:"relative",onMouseEnter:U,onMouseLeave:B,children:[r.jsx("input",{ref:_,type:j,placeholder:f,value:i,onChange:N,disabled:v,required:c,className:l,pattern:T}),o&&a&&!M&&r.jsx("p",{className:"validator-hint text-xs mt-1 opacity-70",children:a}),M&&o&&!A&&r.jsx("div",{className:"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",children:O})]})},be=({children:f,variant:i="neutral",size:p="md",outline:n=!1,dash:u=!1,soft:t=!1,bold:v=!1,italic:c=!1,underline:g=!1,ellipsis:E=!1,maxWidth:w,stateTimeout:T,styleConfig:d={},state:o,onStateChange:a,onClick:R,onDoubleClick:$,onMouseEnter:I,onMouseLeave:S,onDragStart:Y,onDragEnd:A,draggable:q=!1,className:M="",style:V={}})=>{var ae,oe;const[L,z]=x.useState("default"),_=o!==void 0?o:L,j=x.useRef(null),N=C=>{o===void 0&&z(C),a&&a(C),G(C)},G=(C=_)=>{j.current&&(clearTimeout(j.current),j.current=null),T&&C!=="default"&&o===void 0&&(j.current=setTimeout(()=>{z("default"),a&&a("default")},T))};x.useEffect(()=>(G(),()=>{j.current&&clearTimeout(j.current)}),[_,T,o]);const W="label",U=i?`text-${i}`:"",B={xs:"text-xs",sm:"text-sm",md:"text-base",lg:"text-lg",xl:"text-xl"},D=B[p]||B.md,h=[W,U,D,n?"border border-current px-2 py-1 rounded":"",u?"border border-dashed border-current px-2 py-1 rounded":"",t?"bg-opacity-10 bg-current px-2 py-1 rounded":"",v?"font-bold":"",c?"italic":"",g?"underline":"",E?"truncate":"",M].filter(Boolean).join(" "),k=C=>{N("clicked"),R&&R(C)},P=C=>{N("doubleClicked"),$&&$(C)},m=C=>{N("hover"),I&&I(C)},F=C=>{N("default"),S&&S(C)},H=C=>{N("dragging"),Y&&Y(C)},se=C=>{N("default"),A&&A(C)},he=((ae=d[_])==null?void 0:ae.style)||{},xe=((oe=d[_])==null?void 0:oe.className)||"",Ce={...V,...he,...w?{maxWidth:w}:{},...E?{display:"inline-block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:{}},ve=`${h} ${xe}`.trim();return r.jsx("span",{className:ve,style:Ce,onClick:k,onDoubleClick:P,onMouseEnter:m,onMouseLeave:F,onDragStart:H,onDragEnd:se,draggable:q,children:f})};y.Badge=me,y.Button=ee,y.Input=pe,y.Label=be,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})});
22
+ <%s key={someKey} {...props} />`,b,m,F,m),Q[m+b]=!0)}if(m=null,l!==void 0&&(p(l),m=""+l),v(t)&&(p(t.key),m=""+t.key),"key"in t){l={};for(var H in t)H!=="key"&&(l[H]=t[H])}else l=t;return m&&c(l,typeof e=="function"?e.displayName||e.name||"Unknown":e),E(e,m,h,O,u(),l,k,P)}function T(e){typeof e=="object"&&e!==null&&e.$$typeof===o&&e._store&&(e._store.validated=1)}var d=x,o=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),R=Symbol.for("react.fragment"),$=Symbol.for("react.strict_mode"),I=Symbol.for("react.profiler"),S=Symbol.for("react.consumer"),Y=Symbol.for("react.context"),A=Symbol.for("react.forward_ref"),q=Symbol.for("react.suspense"),M=Symbol.for("react.suspense_list"),V=Symbol.for("react.memo"),L=Symbol.for("react.lazy"),z=Symbol.for("react.activity"),_=Symbol.for("react.client.reference"),j=d.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,N=Object.prototype.hasOwnProperty,G=Array.isArray,W=console.createTask?console.createTask:function(){return null};d={"react-stack-bottom-frame":function(e){return e()}};var U,B={},D=d["react-stack-bottom-frame"].bind(d,r)(),Z=W(s(r)),Q={};X.Fragment=R,X.jsx=function(e,t,l,b,O){var h=1e4>j.recentlyCreatedOwnerStacks++;return w(e,t,l,!1,b,O,h?Error("react-stack-top-frame"):D,h?W(s(e)):Z)},X.jsxs=function(e,t,l,b,O){var h=1e4>j.recentlyCreatedOwnerStacks++;return w(e,t,l,!0,b,O,h?Error("react-stack-top-frame"):D,h?W(s(e)):Z)}}()),X}var ne;function ce(){return ne||(ne=1,process.env.NODE_ENV==="production"?K.exports=le():K.exports=ie()),K.exports}var n=ce();const ue=({children:f,variant:i="primary",size:p="md",outline:s=!1,dash:u=!1,soft:r=!1,active:v=!1,disabled:c=!1,wide:g=!1,block:E=!1,square:w=!1,circle:T=!1,leftSection:d,rightSection:o,onClick:a,className:R=""})=>{const $="btn",I=i?`btn-${i}`:"",S=p?`btn-${p}`:"",j=[$,I,S,s?"btn-outline":"",u?"btn-dash":"",r?"btn-soft":"",v?"btn-active":"",g?"btn-wide":"",E?"btn-block":"",w?"btn-square":"",T?"btn-circle":"",R].filter(Boolean).join(" ");return n.jsxs("button",{className:j,disabled:c,onClick:a,children:[d&&n.jsx("span",{className:"mr-2",children:d}),f,o&&n.jsx("span",{className:"ml-2",children:o})]})},fe=({children:f,vertical:i=!1,className:p="",rounded:s="none",radius:u="full",roundedStyle:r})=>{const v=["join",i?"join-vertical":"join-horizontal",p].filter(Boolean).join(" "),c=s!=="none"?"full":u;return n.jsx("div",{className:v,children:x.Children.map(f,(g,E)=>{if(!x.isValidElement(g))return g;const w=g,T=w.props.className||"",d=E===0,o=E===x.Children.count(f)-1;let a="";r?i?(s==="left"||s==="top")&&d&&r.top?a=r.top:(s==="right"||s==="bottom")&&o&&r.bottom?a=r.bottom:s==="both"&&(d&&r.top&&(a=r.top),o&&r.bottom&&(a=r.bottom)):(s==="left"||s==="top")&&d&&r.left?a=r.left:(s==="right"||s==="bottom")&&o&&r.right?a=r.right:s==="both"&&(d&&r.left&&(a=r.left),o&&r.right&&(a=r.right)):i?s==="left"||s==="top"?d&&(a=`rounded-t-${c}`):s==="right"||s==="bottom"?o&&(a=`rounded-b-${c}`):s==="both"&&(d&&(a=`rounded-t-${c}`),o&&(a=`rounded-b-${c}`)):s==="left"||s==="top"?d&&(a=`rounded-l-${c}`):s==="right"||s==="bottom"?o&&(a=`rounded-r-${c}`):s==="both"&&(d&&(a=`rounded-l-${c}`),o&&(a=`rounded-r-${c}`));const R=`${T} join-item ${a}`.trim();return x.cloneElement(w,{className:R})})})},de=({children:f,className:i=""})=>{const p=["join-item","flex","items-center","px-4","bg-base-200","border","border-base-300",i].filter(Boolean).join(" ");return n.jsx("div",{className:p,children:f})},ee=ue;ee.Group=fe,ee.GroupSection=de;const me=({children:f,variant:i="primary",size:p="md",outline:s=!1,className:u=""})=>{const r="badge",v=i?`badge-${i}`:"",c=p?`badge-${p}`:"",E=[r,v,c,s?"badge-outline":"",u].filter(Boolean).join(" ");return n.jsx("div",{className:E,children:f})},pe=({placeholder:f,value:i,onChange:p,type:s="text",variant:u,size:r="md",disabled:v=!1,required:c=!1,label:g,leftSection:E,rightSection:w,pattern:T,className:d="",validator:o=!1,validatorHint:a,validationRules:R=[]})=>{const[$,I]=x.useState(!1),[S,Y]=x.useState(""),[A,q]=x.useState(null),[M,V]=x.useState(!1),[L,z]=x.useState([]),_=x.useRef(null),j=s==="password"&&$?"text":s,N=h=>{const k=h.target.value;if(s==="password"&&k.length>(i||"").length){const P=k.slice((i||"").length);Y(P),setTimeout(()=>{Y("")},1e3)}o&&_.current&&G(k),p&&p(h)},G=h=>{if(!_.current)return;const k=_.current.checkValidity(),P=[];R.length>0&&R.forEach(m=>{m.pattern.test(h)||P.push(m.message)}),z(P),q(k&&P.length===0)},W=()=>{I(!$)},U=()=>{o&&!A&&V(!0)},B=()=>{V(!1)};let D="";o&&A!==null&&(D=A?"input-success":"input-error");const Z="input",Q=u&&!D?`input-${u}`:"",e=r?`input-${r}`:"",l=[Z,Q,e,o?"validator":"",D,d].filter(Boolean).join(" "),b=s==="password"&&n.jsx("span",{className:"cursor-pointer opacity-70 hover:opacity-100",onClick:W,children:$?n.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[n.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"}),n.jsx("path",{d:"M14.12 14.12a3 3 0 1 1-4.24-4.24"}),n.jsx("path",{d:"M1 1l22 22"}),n.jsx("path",{d:"M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"})]}):n.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-5 w-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[n.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),n.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}),O=n.jsx("div",{className:"validation-tooltip",children:L.length>0?n.jsx("ul",{className:"text-xs list-disc pl-4 py-1",children:L.map((h,k)=>n.jsx("li",{children:h},k))}):a?n.jsx("p",{className:"text-xs py-1",children:a}):null});return g||E||w||s==="password"?n.jsxs("div",{className:"relative",onMouseEnter:U,onMouseLeave:B,children:[n.jsxs("label",{className:l,children:[E&&n.jsx("span",{children:E}),g&&n.jsx("span",{children:g}),n.jsx("input",{ref:_,type:j,placeholder:f,value:i,onChange:N,disabled:v,required:c,className:"grow",pattern:T}),s==="password"&&S&&n.jsx("span",{className:"password-recent absolute right-10 font-mono",children:S}),s==="password"?n.jsx("span",{children:b}):w?n.jsx("span",{children:w}):null]}),o&&a&&!M&&n.jsx("p",{className:"validator-hint text-xs mt-1 opacity-70",children:a}),M&&o&&!A&&n.jsx("div",{className:"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",children:O})]}):n.jsxs("div",{className:"relative",onMouseEnter:U,onMouseLeave:B,children:[n.jsx("input",{ref:_,type:j,placeholder:f,value:i,onChange:N,disabled:v,required:c,className:l,pattern:T}),o&&a&&!M&&n.jsx("p",{className:"validator-hint text-xs mt-1 opacity-70",children:a}),M&&o&&!A&&n.jsx("div",{className:"absolute z-10 mt-1 bg-base-200 border border-error rounded shadow-lg text-error px-3 py-1",children:O})]})},be=({children:f,variant:i="neutral",size:p="md",outline:s=!1,dash:u=!1,soft:r=!1,bold:v=!1,italic:c=!1,underline:g=!1,ellipsis:E=!1,maxWidth:w,stateTimeout:T,styleConfig:d={},state:o,onStateChange:a,onClick:R,onDoubleClick:$,onMouseEnter:I,onMouseLeave:S,onDragStart:Y,onDragEnd:A,draggable:q=!1,className:M="",style:V={}})=>{var ae,oe;const[L,z]=x.useState("default"),_=o!==void 0?o:L,j=x.useRef(null),N=C=>{o===void 0&&z(C),a&&a(C),G(C)},G=(C=_)=>{j.current&&(clearTimeout(j.current),j.current=null),T&&C!=="default"&&o===void 0&&(j.current=setTimeout(()=>{z("default"),a&&a("default")},T))};x.useEffect(()=>(G(),()=>{j.current&&clearTimeout(j.current)}),[_,T,o]);const W="label",U=i?`text-${i}`:"",B={xs:"text-xs",sm:"text-sm",md:"text-base",lg:"text-lg",xl:"text-xl"},D=B[p]||B.md,h=[W,U,D,s?"border border-current px-2 py-1 rounded":"",u?"border border-dashed border-current px-2 py-1 rounded":"",r?"bg-opacity-10 bg-current px-2 py-1 rounded":"",v?"font-bold":"",c?"italic":"",g?"underline":"",E?"truncate":"",M].filter(Boolean).join(" "),k=C=>{N("clicked"),R&&R(C)},P=C=>{N("doubleClicked"),$&&$(C)},m=C=>{N("hover"),I&&I(C)},F=C=>{N("default"),S&&S(C)},H=C=>{N("dragging"),Y&&Y(C)},se=C=>{N("default"),A&&A(C)},he=((ae=d[_])==null?void 0:ae.style)||{},xe=((oe=d[_])==null?void 0:oe.className)||"",Ce={...V,...he,...w?{maxWidth:w}:{},...E?{display:"inline-block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:{}},ve=`${h} ${xe}`.trim();return n.jsx("span",{className:ve,style:Ce,onClick:k,onDoubleClick:P,onMouseEnter:m,onMouseLeave:F,onDragStart:H,onDragEnd:se,draggable:q,children:f})};y.Badge=me,y.Button=ee,y.Input=pe,y.Label=be,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})});
@@ -0,0 +1 @@
1
+ export * from './types/src/index';
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const App: React.FC;
3
+ export default App;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export type BadgeProps = {
3
+ children: React.ReactNode;
4
+ variant?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'ghost';
5
+ size?: 'xs' | 'sm' | 'md' | 'lg';
6
+ outline?: boolean;
7
+ className?: string;
8
+ };
9
+ declare const Badge: React.FC<BadgeProps>;
10
+ export default Badge;
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ export type ButtonProps = {
3
+ children: React.ReactNode;
4
+ variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'ghost' | 'link';
5
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
6
+ outline?: boolean;
7
+ dash?: boolean;
8
+ soft?: boolean;
9
+ active?: boolean;
10
+ disabled?: boolean;
11
+ wide?: boolean;
12
+ block?: boolean;
13
+ square?: boolean;
14
+ circle?: boolean;
15
+ leftSection?: React.ReactNode;
16
+ rightSection?: React.ReactNode;
17
+ onClick?: () => void;
18
+ className?: string;
19
+ };
20
+ export type ButtonGroupProps = {
21
+ children: React.ReactNode;
22
+ vertical?: boolean;
23
+ className?: string;
24
+ rounded?: 'left' | 'right' | 'both' | 'none' | 'top' | 'bottom';
25
+ radius?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full';
26
+ roundedStyle?: {
27
+ left?: string;
28
+ right?: string;
29
+ top?: string;
30
+ bottom?: string;
31
+ };
32
+ };
33
+ export type ButtonGroupSectionProps = {
34
+ children: React.ReactNode;
35
+ className?: string;
36
+ };
37
+ interface ButtonCompound extends React.FC<ButtonProps> {
38
+ Group: React.FC<ButtonGroupProps>;
39
+ GroupSection: React.FC<ButtonGroupSectionProps>;
40
+ }
41
+ declare const ButtonWithCompounds: ButtonCompound;
42
+ export default ButtonWithCompounds;
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ export type CardProps = {
3
+ children: React.ReactNode;
4
+ variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';
5
+ bordered?: boolean;
6
+ dash?: boolean;
7
+ side?: boolean;
8
+ imageFull?: boolean;
9
+ compact?: boolean;
10
+ hover?: boolean;
11
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
12
+ className?: string;
13
+ };
14
+ export type CardTitleProps = {
15
+ children: React.ReactNode;
16
+ className?: string;
17
+ };
18
+ export type CardBodyProps = {
19
+ children: React.ReactNode;
20
+ className?: string;
21
+ };
22
+ export type CardActionsProps = {
23
+ children: React.ReactNode;
24
+ className?: string;
25
+ justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
26
+ };
27
+ export type CardFigureProps = {
28
+ children: React.ReactNode;
29
+ className?: string;
30
+ };
31
+ interface CardCompound extends React.FC<CardProps> {
32
+ Title: React.FC<CardTitleProps>;
33
+ Body: React.FC<CardBodyProps>;
34
+ Actions: React.FC<CardActionsProps>;
35
+ Figure: React.FC<CardFigureProps>;
36
+ }
37
+ declare const CardWithCompounds: CardCompound;
38
+ export default CardWithCompounds;
@@ -0,0 +1,78 @@
1
+ import React from 'react';
2
+ import { ColumnDef, ColumnFiltersState, SortingState, VisibilityState, RowSelectionState, Column } from '@tanstack/react-table';
3
+ export type CellEventHandler = (row: any, column: any, event: React.MouseEvent) => void;
4
+ export type RowEventHandler = (row: any, event: React.MouseEvent) => void;
5
+ export type ColumnEventHandler = (column: any, event: React.MouseEvent) => void;
6
+ export type TableEventHandler = (event: React.MouseEvent) => void;
7
+ export type ExpandRowHandler = (row: any, isExpanded: boolean) => void;
8
+ export interface BulkAction {
9
+ label: string;
10
+ action: string;
11
+ onClick: (selectedRows: Record<string, boolean>, selectedRowData?: any[]) => void;
12
+ className?: string;
13
+ }
14
+ export interface CustomFilterPanelProps {
15
+ column: Column<any, unknown>;
16
+ onClose: () => void;
17
+ }
18
+ export interface ToolbarOptions {
19
+ enabled?: boolean;
20
+ enableColumnSelector?: boolean;
21
+ enableFiltering?: boolean;
22
+ enableBulkActions?: boolean;
23
+ bulkActions?: BulkAction[];
24
+ customComponents?: React.ReactNode;
25
+ }
26
+ export interface DataTableProps<T extends object> {
27
+ data: T[];
28
+ columns: ColumnDef<T, any>[];
29
+ className?: string;
30
+ enableSorting?: boolean;
31
+ enableFiltering?: boolean;
32
+ enablePagination?: boolean;
33
+ enableSelection?: boolean;
34
+ enableColumnReordering?: boolean;
35
+ enableColumnResizing?: boolean;
36
+ enableExpanding?: boolean;
37
+ subDataKey?: string;
38
+ onRowExpand?: ExpandRowHandler;
39
+ expandedRows?: Record<string, boolean>;
40
+ onExpandedRowsChange?: (expandedRows: Record<string, boolean>) => void;
41
+ getRowId?: (row: T, index: number) => string;
42
+ indentSize?: number;
43
+ enableTreeSort?: boolean;
44
+ toolbar?: ToolbarOptions;
45
+ customFilterPanel?: React.ComponentType<CustomFilterPanelProps>;
46
+ onRowClick?: RowEventHandler;
47
+ onRowDoubleClick?: RowEventHandler;
48
+ onRowMouseEnter?: RowEventHandler;
49
+ onRowMouseLeave?: RowEventHandler;
50
+ onCellClick?: CellEventHandler;
51
+ onCellDoubleClick?: CellEventHandler;
52
+ onCellMouseEnter?: CellEventHandler;
53
+ onCellMouseLeave?: CellEventHandler;
54
+ onColumnClick?: ColumnEventHandler;
55
+ onColumnMouseEnter?: ColumnEventHandler;
56
+ onColumnMouseLeave?: ColumnEventHandler;
57
+ onTableClick?: TableEventHandler;
58
+ onTableMouseEnter?: TableEventHandler;
59
+ onTableMouseLeave?: TableEventHandler;
60
+ pageSize?: number;
61
+ pageIndex?: number;
62
+ onPageChange?: (page: number) => void;
63
+ onPageSizeChange?: (pageSize: number) => void;
64
+ selectedRows?: RowSelectionState;
65
+ onRowSelectionChange?: (selectedRows: RowSelectionState) => void;
66
+ sortingState?: SortingState;
67
+ onSortingChange?: (sortingState: SortingState) => void;
68
+ columnFilters?: ColumnFiltersState;
69
+ onColumnFiltersChange?: (columnFilters: ColumnFiltersState) => void;
70
+ columnVisibility?: VisibilityState;
71
+ onColumnVisibilityChange?: (columnVisibility: VisibilityState) => void;
72
+ columnOrder?: string[];
73
+ onColumnOrderChange?: (columnOrder: string[]) => void;
74
+ }
75
+ interface DataTableCompoundComponent extends React.FC<DataTableProps<any>> {
76
+ }
77
+ declare const DataTableExport: DataTableCompoundComponent;
78
+ export default DataTableExport;
@@ -0,0 +1,59 @@
1
+ import React from 'react';
2
+ import { Column } from '@tanstack/react-table';
3
+ declare module '@tanstack/react-table' {
4
+ interface ColumnMeta<TData extends unknown, TValue> {
5
+ filterType?: 'text' | 'number' | 'select' | 'boolean' | 'date' | 'multiSelect';
6
+ filterOptions?: {
7
+ value: any;
8
+ label: string;
9
+ }[];
10
+ }
11
+ }
12
+ export interface TextFilterProps {
13
+ column: Column<any, unknown>;
14
+ placeholder?: string;
15
+ }
16
+ export declare const TextFilter: React.FC<TextFilterProps>;
17
+ export interface NumberFilterProps {
18
+ column: Column<any, unknown>;
19
+ min?: number;
20
+ max?: number;
21
+ step?: number;
22
+ }
23
+ export declare const NumberRangeFilter: React.FC<NumberFilterProps>;
24
+ export interface SelectFilterProps {
25
+ column: Column<any, unknown>;
26
+ options: {
27
+ value: any;
28
+ label: string;
29
+ }[];
30
+ placeholder?: string;
31
+ }
32
+ export declare const SelectFilter: React.FC<SelectFilterProps>;
33
+ export interface BooleanFilterProps {
34
+ column: Column<any, unknown>;
35
+ trueLabel?: string;
36
+ falseLabel?: string;
37
+ allLabel?: string;
38
+ }
39
+ export declare const BooleanFilter: React.FC<BooleanFilterProps>;
40
+ export interface DateRangeFilterProps {
41
+ column: Column<any, unknown>;
42
+ }
43
+ export declare const DateRangeFilter: React.FC<DateRangeFilterProps>;
44
+ export declare const MultiSelectFilter: React.FC<SelectFilterProps>;
45
+ export interface FilterPanelProps {
46
+ column: Column<any, unknown>;
47
+ onClose: () => void;
48
+ }
49
+ export declare const FilterPanel: React.FC<FilterPanelProps>;
50
+ declare const _default: {
51
+ TextFilter: React.FC<TextFilterProps>;
52
+ NumberRangeFilter: React.FC<NumberFilterProps>;
53
+ SelectFilter: React.FC<SelectFilterProps>;
54
+ BooleanFilter: React.FC<BooleanFilterProps>;
55
+ DateRangeFilter: React.FC<DateRangeFilterProps>;
56
+ MultiSelectFilter: React.FC<SelectFilterProps>;
57
+ FilterPanel: React.FC<FilterPanelProps>;
58
+ };
59
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import DataTableComponent from './DataTable';
2
+ import * as Filters from './Filters';
3
+ import * as Utils from './utils';
4
+ export declare const TextFilter: import("react").FC<Filters.TextFilterProps>, NumberRangeFilter: import("react").FC<Filters.NumberFilterProps>, SelectFilter: import("react").FC<Filters.SelectFilterProps>, BooleanFilter: import("react").FC<Filters.BooleanFilterProps>, DateRangeFilter: import("react").FC<Filters.DateRangeFilterProps>, MultiSelectFilter: import("react").FC<Filters.SelectFilterProps>, FilterPanel: import("react").FC<Filters.FilterPanelProps>;
5
+ export declare const createColumn: typeof Utils.createColumn, createComputedColumn: typeof Utils.createComputedColumn, createActionColumn: typeof Utils.createActionColumn, createSelectionColumn: typeof Utils.createSelectionColumn, numericSort: import("@tanstack/react-table").SortingFn<any>, dateSort: import("@tanstack/react-table").SortingFn<any>, stringSort: import("@tanstack/react-table").SortingFn<any>, treeSort: <T extends Utils.TreeDataRow>(sortFn: import("@tanstack/react-table").SortingFn<T>, subDataKey: string) => import("@tanstack/react-table").SortingFn<T>, createSelectOptions: typeof Utils.createSelectOptions, extractUniqueOptions: typeof Utils.extractUniqueOptions, defaultFilterFunctions: {
6
+ text: (row: any, columnId: string, filterValue: string) => boolean;
7
+ range: (row: any, columnId: string, filterValue: [number | undefined, number | undefined]) => boolean;
8
+ dateRange: (row: any, columnId: string, filterValue: [string | undefined, string | undefined]) => boolean;
9
+ boolean: (row: any, columnId: string, filterValue: boolean) => boolean;
10
+ multiSelect: (row: any, columnId: string, filterValue: string[]) => boolean;
11
+ };
12
+ export type { DataTableProps, CellEventHandler, RowEventHandler, ColumnEventHandler, TableEventHandler } from './DataTable';
13
+ export type { FilterPanelProps, TextFilterProps, NumberFilterProps, SelectFilterProps, BooleanFilterProps, DateRangeFilterProps } from './Filters';
14
+ export type { TreeDataRow } from './utils';
15
+ export type { ColumnDef, ColumnFiltersState, SortingState, VisibilityState, RowSelectionState, PaginationState } from '@tanstack/react-table';
16
+ export default DataTableComponent;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { ColumnDef, Row, SortingFn } from '@tanstack/react-table';
3
+ export declare function createColumn<T extends object>(accessorKeyOrOptions: keyof T | string | Partial<ColumnDef<T>>, headerOrNone?: string, options?: Partial<ColumnDef<T>>): ColumnDef<T>;
4
+ export declare function createComputedColumn<T extends object>(idOrOptions: string | Partial<ColumnDef<T>>, headerOrNone?: string, accessorFnOrNone?: (row: T) => any, options?: Partial<ColumnDef<T>>): ColumnDef<T>;
5
+ export declare function createActionColumn<T extends object>(idOrOptions: string | Partial<ColumnDef<T>>, headerOrNone?: string, cellOrNone?: (props: {
6
+ row: Row<T>;
7
+ }) => React.ReactNode, options?: Partial<ColumnDef<T>>): ColumnDef<T>;
8
+ export declare function createSelectionColumn<T extends object>(options?: Partial<ColumnDef<T>>): ColumnDef<T>;
9
+ export declare const numericSort: SortingFn<any>;
10
+ export declare const dateSort: SortingFn<any>;
11
+ export declare const stringSort: SortingFn<any>;
12
+ export interface TreeDataRow {
13
+ __depth?: number;
14
+ __id?: string;
15
+ __parentId?: string;
16
+ __hasChildren?: boolean;
17
+ __isExpanded?: boolean;
18
+ __childCount?: number;
19
+ [key: string]: any;
20
+ }
21
+ export declare const treeSort: <T extends TreeDataRow>(sortFn: SortingFn<T>, subDataKey: string) => SortingFn<T>;
22
+ export declare function createSelectOptions<T>(items: T[], labelField: keyof T, valueField?: keyof T): {
23
+ label: string;
24
+ value: string;
25
+ }[];
26
+ export declare function extractUniqueOptions<T>(data: T[], field: keyof T): {
27
+ label: string;
28
+ value: string;
29
+ }[];
30
+ export declare const defaultFilterFunctions: {
31
+ text: (row: any, columnId: string, filterValue: string) => boolean;
32
+ range: (row: any, columnId: string, filterValue: [number | undefined, number | undefined]) => boolean;
33
+ dateRange: (row: any, columnId: string, filterValue: [string | undefined, string | undefined]) => boolean;
34
+ boolean: (row: any, columnId: string, filterValue: boolean) => boolean;
35
+ multiSelect: (row: any, columnId: string, filterValue: string[]) => boolean;
36
+ };
37
+ declare const _default: {
38
+ createColumn: typeof createColumn;
39
+ createComputedColumn: typeof createComputedColumn;
40
+ createActionColumn: typeof createActionColumn;
41
+ createSelectionColumn: typeof createSelectionColumn;
42
+ numericSort: SortingFn<any>;
43
+ dateSort: SortingFn<any>;
44
+ stringSort: SortingFn<any>;
45
+ treeSort: <T extends TreeDataRow>(sortFn: SortingFn<T>, subDataKey: string) => SortingFn<T>;
46
+ createSelectOptions: typeof createSelectOptions;
47
+ extractUniqueOptions: typeof extractUniqueOptions;
48
+ defaultFilterFunctions: {
49
+ text: (row: any, columnId: string, filterValue: string) => boolean;
50
+ range: (row: any, columnId: string, filterValue: [number | undefined, number | undefined]) => boolean;
51
+ dateRange: (row: any, columnId: string, filterValue: [string | undefined, string | undefined]) => boolean;
52
+ boolean: (row: any, columnId: string, filterValue: boolean) => boolean;
53
+ multiSelect: (row: any, columnId: string, filterValue: string[]) => boolean;
54
+ };
55
+ };
56
+ export default _default;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface DemoProps {
3
+ title: string;
4
+ description?: string;
5
+ children: React.ReactNode;
6
+ code: string;
7
+ language?: string;
8
+ }
9
+ declare const Demo: React.FC<DemoProps>;
10
+ export default Demo;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ export type InputProps = {
3
+ placeholder?: string;
4
+ value?: string;
5
+ onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
6
+ type?: string;
7
+ variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'ghost';
8
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
+ disabled?: boolean;
10
+ required?: boolean;
11
+ label?: string;
12
+ leftSection?: React.ReactNode;
13
+ rightSection?: React.ReactNode;
14
+ pattern?: string;
15
+ className?: string;
16
+ validator?: boolean;
17
+ validatorHint?: string;
18
+ validationRules?: {
19
+ pattern: RegExp;
20
+ message: string;
21
+ }[];
22
+ };
23
+ declare const Input: ({ placeholder, value, onChange, type, variant, size, disabled, required, label, leftSection, rightSection, pattern, className, validator, validatorHint, validationRules, }: InputProps) => import("react/jsx-runtime").JSX.Element;
24
+ export default Input;
@@ -0,0 +1,36 @@
1
+ import React, { DragEvent } from 'react';
2
+ export type LabelState = string;
3
+ export type LabelStyleConfig = {
4
+ [key: string]: {
5
+ className?: string;
6
+ style?: React.CSSProperties;
7
+ };
8
+ };
9
+ export type LabelProps = {
10
+ children: React.ReactNode;
11
+ variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';
12
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
13
+ outline?: boolean;
14
+ dash?: boolean;
15
+ soft?: boolean;
16
+ bold?: boolean;
17
+ italic?: boolean;
18
+ underline?: boolean;
19
+ ellipsis?: boolean;
20
+ maxWidth?: string;
21
+ stateTimeout?: number;
22
+ styleConfig?: LabelStyleConfig;
23
+ state?: LabelState;
24
+ onStateChange?: (newState: LabelState) => void;
25
+ onClick?: (e: React.MouseEvent) => void;
26
+ onDoubleClick?: (e: React.MouseEvent) => void;
27
+ onMouseEnter?: (e: React.MouseEvent) => void;
28
+ onMouseLeave?: (e: React.MouseEvent) => void;
29
+ onDragStart?: (e: DragEvent<HTMLSpanElement>) => void;
30
+ onDragEnd?: (e: DragEvent<HTMLSpanElement>) => void;
31
+ draggable?: boolean;
32
+ className?: string;
33
+ style?: React.CSSProperties;
34
+ };
35
+ declare const Label: ({ children, variant, size, outline, dash, soft, bold, italic, underline, ellipsis, maxWidth, stateTimeout, styleConfig, state: userState, onStateChange, onClick, onDoubleClick, onMouseEnter, onMouseLeave, onDragStart, onDragEnd, draggable, className, style, }: LabelProps) => import("react/jsx-runtime").JSX.Element;
36
+ export default Label;
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ export type ListProps = {
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ onClick?: (e: React.MouseEvent) => void;
6
+ onMouseEnter?: (e: React.MouseEvent) => void;
7
+ onMouseLeave?: (e: React.MouseEvent) => void;
8
+ };
9
+ export type ListRowProps = {
10
+ children: React.ReactNode;
11
+ className?: string;
12
+ selected?: boolean;
13
+ onClick?: (e: React.MouseEvent) => void;
14
+ onDoubleClick?: (e: React.MouseEvent) => void;
15
+ onMouseEnter?: (e: React.MouseEvent) => void;
16
+ onMouseLeave?: (e: React.MouseEvent) => void;
17
+ onContextMenu?: (e: React.MouseEvent) => void;
18
+ };
19
+ export type ListColWrapProps = {
20
+ children: React.ReactNode;
21
+ className?: string;
22
+ };
23
+ export type ListColGrowProps = {
24
+ children: React.ReactNode;
25
+ className?: string;
26
+ };
27
+ export type ListHeaderProps = {
28
+ children: React.ReactNode;
29
+ className?: string;
30
+ };
31
+ interface ListCompound extends React.FC<ListProps> {
32
+ Row: React.FC<ListRowProps>;
33
+ ColWrap: React.FC<ListColWrapProps>;
34
+ ColGrow: React.FC<ListColGrowProps>;
35
+ Header: React.FC<ListHeaderProps>;
36
+ }
37
+ declare const ListWithCompounds: ListCompound;
38
+ export default ListWithCompounds;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ interface Option {
3
+ value: string | number;
4
+ label: string;
5
+ }
6
+ interface SelectProps {
7
+ options: Option[];
8
+ value?: string | number | (string | number)[];
9
+ onChange: (value: string | number | (string | number)[]) => void;
10
+ placeholder?: string;
11
+ multiple?: boolean;
12
+ fixedHeight?: boolean;
13
+ style?: React.CSSProperties;
14
+ className?: string;
15
+ }
16
+ declare const Select: React.FC<SelectProps>;
17
+ export default Select;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ export type TableProps = {
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ onClick?: (e: React.MouseEvent) => void;
6
+ onMouseEnter?: (e: React.MouseEvent) => void;
7
+ onMouseLeave?: (e: React.MouseEvent) => void;
8
+ };
9
+ export type TableHeadProps = {
10
+ children: React.ReactNode;
11
+ className?: string;
12
+ };
13
+ export type TableBodyProps = {
14
+ children: React.ReactNode;
15
+ className?: string;
16
+ };
17
+ export type TableRowProps = {
18
+ children: React.ReactNode;
19
+ className?: string;
20
+ selected?: boolean;
21
+ onClick?: (e: React.MouseEvent) => void;
22
+ onDoubleClick?: (e: React.MouseEvent) => void;
23
+ onMouseEnter?: (e: React.MouseEvent) => void;
24
+ onMouseLeave?: (e: React.MouseEvent) => void;
25
+ };
26
+ export type TableCellProps = {
27
+ children: React.ReactNode;
28
+ className?: string;
29
+ onClick?: (e: React.MouseEvent) => void;
30
+ colSpan?: number;
31
+ onDoubleClick?: (e: React.MouseEvent) => void;
32
+ onMouseEnter?: (e: React.MouseEvent) => void;
33
+ onMouseLeave?: (e: React.MouseEvent) => void;
34
+ };
35
+ export type TableHeaderCellProps = {
36
+ children: React.ReactNode;
37
+ className?: string;
38
+ onClick?: (e: React.MouseEvent) => void;
39
+ sortable?: boolean;
40
+ sortDirection?: 'asc' | 'desc' | null;
41
+ draggable?: boolean;
42
+ onDragStart?: (e: React.DragEvent) => void;
43
+ onDragOver?: (e: React.DragEvent) => void;
44
+ onDrop?: (e: React.DragEvent) => void;
45
+ onMouseEnter?: (e: React.MouseEvent) => void;
46
+ onMouseLeave?: (e: React.MouseEvent) => void;
47
+ };
48
+ interface TableCompound extends React.FC<TableProps> {
49
+ Head: React.FC<TableHeadProps>;
50
+ Body: React.FC<TableBodyProps>;
51
+ Row: React.FC<TableRowProps>;
52
+ Cell: React.FC<TableCellProps>;
53
+ HeaderCell: React.FC<TableHeaderCellProps>;
54
+ }
55
+ declare const TableWithCompounds: TableCompound;
56
+ export default TableWithCompounds;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export type ThemeType = 'light' | 'dark' | 'retro' | 'cyberpunk' | 'customblue' | 'ghibli';
3
+ type AppContextType = {
4
+ language: 'zh' | 'en';
5
+ theme: ThemeType;
6
+ setLanguage: (lang: 'zh' | 'en') => void;
7
+ setTheme: (theme: ThemeType) => void;
8
+ };
9
+ export declare const useAppContext: () => AppContextType;
10
+ type AppProviderProps = {
11
+ children: React.ReactNode;
12
+ };
13
+ export declare const AppProvider: React.FC<AppProviderProps>;
14
+ export default AppProvider;
@@ -0,0 +1,9 @@
1
+ import './styles/index.css';
2
+ export { default as Button } from './components/Button';
3
+ export type { ButtonProps, ButtonGroupProps, ButtonGroupSectionProps } from './components/Button';
4
+ export { default as Badge } from './components/Badge';
5
+ export type { BadgeProps } from './components/Badge';
6
+ export { default as Input } from './components/Input';
7
+ export type { InputProps } from './components/Input';
8
+ export { default as Label } from './components/Label';
9
+ export type { LabelProps, LabelState, LabelStyleConfig } from './components/Label';