@legalaidalberta/luic 0.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/CHANGELOG.md +93 -0
- package/README.md +73 -0
- package/dist/components/card/card.d.ts +6 -0
- package/dist/components/card/card.stories.d.ts +24 -0
- package/dist/components/card/index.d.ts +1 -0
- package/dist/components/checkbox/checkbox.d.ts +24 -0
- package/dist/components/checkbox/checkbox.stories.d.ts +47 -0
- package/dist/components/checkbox/index.d.ts +1 -0
- package/dist/components/color-picker/color-picker.d.ts +32 -0
- package/dist/components/color-picker/color-picker.stories.d.ts +74 -0
- package/dist/components/color-picker/index.d.ts +1 -0
- package/dist/components/currency-input/currency-input.d.ts +48 -0
- package/dist/components/currency-input/currency-input.stories.d.ts +86 -0
- package/dist/components/currency-input/index.d.ts +1 -0
- package/dist/components/data-table/data-table.d.ts +100 -0
- package/dist/components/data-table/data-table.stories.d.ts +82 -0
- package/dist/components/data-table/index.d.ts +1 -0
- package/dist/components/date-picker/date-picker.d.ts +33 -0
- package/dist/components/date-picker/date-picker.stories.d.ts +65 -0
- package/dist/components/date-picker/index.d.ts +1 -0
- package/dist/components/file-upload/file-upload.d.ts +44 -0
- package/dist/components/file-upload/file-upload.stories.d.ts +72 -0
- package/dist/components/file-upload/index.d.ts +1 -0
- package/dist/components/multi-select/index.d.ts +1 -0
- package/dist/components/multi-select/multi-select.d.ts +63 -0
- package/dist/components/multi-select/multi-select.stories.d.ts +71 -0
- package/dist/components/numeric-input/index.d.ts +1 -0
- package/dist/components/numeric-input/numeric-input.d.ts +65 -0
- package/dist/components/numeric-input/numeric-input.stories.d.ts +90 -0
- package/dist/components/password-input/index.d.ts +1 -0
- package/dist/components/password-input/password-input.d.ts +32 -0
- package/dist/components/password-input/password-input.stories.d.ts +64 -0
- package/dist/components/percentage-input/index.d.ts +1 -0
- package/dist/components/percentage-input/percentage-input.d.ts +44 -0
- package/dist/components/percentage-input/percentage-input.stories.d.ts +78 -0
- package/dist/components/radio/index.d.ts +1 -0
- package/dist/components/radio/radio.d.ts +26 -0
- package/dist/components/radio/radio.stories.d.ts +46 -0
- package/dist/components/rating/index.d.ts +1 -0
- package/dist/components/rating/rating.d.ts +51 -0
- package/dist/components/rating/rating.stories.d.ts +81 -0
- package/dist/components/search-input/index.d.ts +1 -0
- package/dist/components/search-input/search-input.d.ts +35 -0
- package/dist/components/search-input/search-input.stories.d.ts +64 -0
- package/dist/components/select/index.d.ts +1 -0
- package/dist/components/select/select.d.ts +41 -0
- package/dist/components/select/select.stories.d.ts +47 -0
- package/dist/components/shared/FormErrorText.d.ts +12 -0
- package/dist/components/shared/FormField.d.ts +61 -0
- package/dist/components/shared/FormHelperText.d.ts +12 -0
- package/dist/components/shared/FormLabel.d.ts +25 -0
- package/dist/components/shared/index.d.ts +7 -0
- package/dist/components/slider/index.d.ts +1 -0
- package/dist/components/slider/slider.d.ts +59 -0
- package/dist/components/slider/slider.stories.d.ts +86 -0
- package/dist/components/tag-input/index.d.ts +1 -0
- package/dist/components/tag-input/tag-input.d.ts +55 -0
- package/dist/components/tag-input/tag-input.stories.d.ts +68 -0
- package/dist/components/text-input/index.d.ts +1 -0
- package/dist/components/text-input/text-input.d.ts +24 -0
- package/dist/components/text-input/text-input.stories.d.ts +54 -0
- package/dist/components/textarea/index.d.ts +1 -0
- package/dist/components/textarea/textarea.d.ts +36 -0
- package/dist/components/textarea/textarea.stories.d.ts +68 -0
- package/dist/components/time-picker/index.d.ts +1 -0
- package/dist/components/time-picker/time-picker.d.ts +37 -0
- package/dist/components/time-picker/time-picker.stories.d.ts +73 -0
- package/dist/components/toggle/index.d.ts +1 -0
- package/dist/components/toggle/toggle.d.ts +34 -0
- package/dist/components/toggle/toggle.stories.d.ts +61 -0
- package/dist/components/url-input/index.d.ts +1 -0
- package/dist/components/url-input/url-input.d.ts +28 -0
- package/dist/components/url-input/url-input.stories.d.ts +60 -0
- package/dist/hooks/useControllableValue.d.ts +44 -0
- package/dist/hooks/useFormField.d.ts +73 -0
- package/dist/index.d.ts +27 -0
- package/dist/luic.cjs.js +6 -0
- package/dist/luic.es.js +2475 -0
- package/dist/luic.umd.js +6 -0
- package/dist/styles.css +2 -0
- package/dist/types/common.d.ts +59 -0
- package/dist/utils/cn.d.ts +18 -0
- package/package.json +77 -0
package/dist/luic.umd.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
(function(k,y){typeof exports=="object"&&typeof module<"u"?y(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],y):(k=typeof globalThis<"u"?globalThis:k||self,y(k.luic={},k.React))})(this,(function(k,y){"use strict";var ee={exports:{}},q={};var re;function Se(){if(re)return q;re=1;var t=Symbol.for("react.transitional.element"),l=Symbol.for("react.fragment");function r(a,i,s){var d=null;if(s!==void 0&&(d=""+s),i.key!==void 0&&(d=""+i.key),"key"in i){s={};for(var u in i)u!=="key"&&(s[u]=i[u])}else s=i;return i=s.ref,{$$typeof:t,type:a,key:d,ref:i!==void 0?i:null,props:s}}return q.Fragment=l,q.jsx=r,q.jsxs=r,q}var $={};var ue;function _e(){return ue||(ue=1,process.env.NODE_ENV!=="production"&&(function(){function t(c){if(c==null)return null;if(typeof c=="function")return c.$$typeof===R?null:c.displayName||c.name||null;if(typeof c=="string")return c;switch(c){case v:return"Fragment";case z:return"Profiler";case T:return"StrictMode";case Y:return"Suspense";case W:return"SuspenseList";case _:return"Activity"}if(typeof c=="object")switch(typeof c.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),c.$$typeof){case b:return"Portal";case A:return c.displayName||"Context";case O:return(c._context.displayName||"Context")+".Consumer";case L:var j=c.render;return c=c.displayName,c||(c=j.displayName||j.name||"",c=c!==""?"ForwardRef("+c+")":"ForwardRef"),c;case F:return j=c.displayName||null,j!==null?j:t(c.type)||"Memo";case I:j=c._payload,c=c._init;try{return t(c(j))}catch{}}return null}function l(c){return""+c}function r(c){try{l(c);var j=!1}catch{j=!0}if(j){j=console;var S=j.error,V=typeof Symbol=="function"&&Symbol.toStringTag&&c[Symbol.toStringTag]||c.constructor.name||"Object";return S.call(j,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",V),l(c)}}function a(c){if(c===v)return"<>";if(typeof c=="object"&&c!==null&&c.$$typeof===I)return"<...>";try{var j=t(c);return j?"<"+j+">":"<...>"}catch{return"<...>"}}function i(){var c=P.A;return c===null?null:c.getOwner()}function s(){return Error("react-stack-top-frame")}function d(c){if(D.call(c,"key")){var j=Object.getOwnPropertyDescriptor(c,"key").get;if(j&&j.isReactWarning)return!1}return c.key!==void 0}function u(c,j){function S(){C||(C=!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)",j))}S.isReactWarning=!0,Object.defineProperty(c,"key",{get:S,configurable:!0})}function n(){var c=t(this.type);return H[c]||(H[c]=!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.")),c=this.props.ref,c!==void 0?c:null}function o(c,j,S,V,le,ie){var B=S.ref;return c={$$typeof:w,type:c,key:j,props:S,_owner:V},(B!==void 0?B:null)!==null?Object.defineProperty(c,"ref",{enumerable:!1,get:n}):Object.defineProperty(c,"ref",{enumerable:!1,value:null}),c._store={},Object.defineProperty(c._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(c,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(c,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:le}),Object.defineProperty(c,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:ie}),Object.freeze&&(Object.freeze(c.props),Object.freeze(c)),c}function g(c,j,S,V,le,ie){var B=j.children;if(B!==void 0)if(V)if(J(B)){for(V=0;V<B.length;V++)f(B[V]);Object.freeze&&Object.freeze(B)}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 f(B);if(D.call(j,"key")){B=t(c);var Q=Object.keys(j).filter(function(Fe){return Fe!=="key"});V=0<Q.length?"{key: someKey, "+Q.join(": ..., ")+": ...}":"{key: someKey}",G[B+V]||(Q=0<Q.length?"{"+Q.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
2
|
+
let props = %s;
|
|
3
|
+
<%s {...props} />
|
|
4
|
+
React keys must be passed directly to JSX without using spread:
|
|
5
|
+
let props = %s;
|
|
6
|
+
<%s key={someKey} {...props} />`,V,B,Q,B),G[B+V]=!0)}if(B=null,S!==void 0&&(r(S),B=""+S),d(j)&&(r(j.key),B=""+j.key),"key"in j){S={};for(var ce in j)ce!=="key"&&(S[ce]=j[ce])}else S=j;return B&&u(S,typeof c=="function"?c.displayName||c.name||"Unknown":c),o(c,B,S,i(),le,ie)}function f(c){x(c)?c._store&&(c._store.validated=1):typeof c=="object"&&c!==null&&c.$$typeof===I&&(c._payload.status==="fulfilled"?x(c._payload.value)&&c._payload.value._store&&(c._payload.value._store.validated=1):c._store&&(c._store.validated=1))}function x(c){return typeof c=="object"&&c!==null&&c.$$typeof===w}var m=y,w=Symbol.for("react.transitional.element"),b=Symbol.for("react.portal"),v=Symbol.for("react.fragment"),T=Symbol.for("react.strict_mode"),z=Symbol.for("react.profiler"),O=Symbol.for("react.consumer"),A=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),Y=Symbol.for("react.suspense"),W=Symbol.for("react.suspense_list"),F=Symbol.for("react.memo"),I=Symbol.for("react.lazy"),_=Symbol.for("react.activity"),R=Symbol.for("react.client.reference"),P=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,D=Object.prototype.hasOwnProperty,J=Array.isArray,N=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(c){return c()}};var C,H={},h=m.react_stack_bottom_frame.bind(m,s)(),E=N(a(s)),G={};$.Fragment=v,$.jsx=function(c,j,S){var V=1e4>P.recentlyCreatedOwnerStacks++;return g(c,j,S,!1,V?Error("react-stack-top-frame"):h,V?N(a(c)):E)},$.jsxs=function(c,j,S){var V=1e4>P.recentlyCreatedOwnerStacks++;return g(c,j,S,!0,V?Error("react-stack-top-frame"):h,V?N(a(c)):E)}})()),$}var te;function Pe(){return te||(te=1,process.env.NODE_ENV==="production"?ee.exports=Se():ee.exports=_e()),ee.exports}var e=Pe();const Ce=({title:t,description:l})=>e.jsx("div",{className:"ui",children:e.jsx("div",{className:"luic:bg-white luic:rounded-lg luic:shadow-lg luic:overflow-hidden sm:max-w-xs lg:max-w-sm xl:max-w-md",children:e.jsxs("div",{className:"luic:px-6 luic:py-4",children:[e.jsx("h1",{className:"luic:font-sans luic:text-red-700 luic:font-bold luic:text-xl luic:mb-2",children:t}),e.jsx("p",{className:"luic:bg-white luic:border-none luic:rounded-none luic:font-sans luic:text-gray-700 luic:text-base",children:l})]})})});function p(...t){const l=[];return t.forEach(r=>{if(r)if(typeof r=="string"||typeof r=="number")l.push(String(r));else if(Array.isArray(r)){const a=p(...r);a&&l.push(a)}else typeof r=="object"&&Object.entries(r).forEach(([a,i])=>{i&&l.push(a)})}),l.join(" ").trim()}function M(t){const{id:l,error:r,helperText:a}=t,i=y.useId(),s=l||i,d=!!r,u=`${s}-error`,n=`${s}-helper`;return{fieldId:s,hasError:d,ariaProps:{"aria-invalid":d?"true":"false","aria-describedby":d?u:a?n:void 0},errorId:u,helperId:n}}const X=({disabled:t,hasError:l,required:r,className:a,children:i,...s})=>e.jsxs("label",{className:p("luic:text-sm luic:font-medium",t?"luic:text-gray-400":"luic:text-gray-700",l&&"luic:text-red-600",a),...s,children:[i,r&&e.jsx("span",{className:"luic:text-red-500 luic:ml-1",children:"*"})]}),K=({className:t,children:l,...r})=>e.jsx("span",{className:p("luic:text-xs luic:text-gray-500",t),...r,children:l}),Z=({className:t,children:l,...r})=>e.jsx("span",{className:p("luic:text-xs luic:text-red-600",t),...r,children:l}),se=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,id:s,...d},u)=>{const{fieldId:n,ariaProps:o,errorId:g,helperId:f}=M({id:s,error:l,helperText:r});return e.jsx("div",{className:"ui",children:e.jsxs("div",{className:"luic:flex luic:items-start luic:gap-3",children:[e.jsx("input",{ref:u,type:"checkbox",id:n,disabled:i,className:p("luic:w-5 luic:h-5 luic:text-blue-600 luic:rounded","luic:border-gray-300 luic:cursor-pointer","focus:luic:ring-2 focus:luic:ring-blue-500 focus:luic:ring-offset-2","disabled:luic:opacity-50 disabled:luic:cursor-not-allowed",l&&"luic:border-red-500",a),...o,...d}),t&&e.jsxs("div",{className:"luic:flex luic:flex-col luic:gap-1",children:[e.jsx(X,{htmlFor:n,disabled:i,hasError:!!l,className:"luic:cursor-pointer",children:t}),r&&!l&&e.jsx(K,{id:f,children:r}),l&&e.jsx(Z,{id:g,children:l})]})]})})});se.displayName="Checkbox";const ne=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,id:s,...d},u)=>{const{fieldId:n,ariaProps:o,errorId:g,helperId:f}=M({id:s,error:l,helperText:r});return e.jsx("div",{className:"ui",children:e.jsxs("div",{className:"luic:flex luic:items-start luic:gap-3",children:[e.jsx("input",{ref:u,type:"radio",id:n,disabled:i,className:p("luic:w-5 luic:h-5 luic:text-green-600 luic:cursor-pointer","luic:border-gray-300","focus:luic:ring-2 focus:luic:ring-green-500 focus:luic:ring-offset-2","disabled:luic:opacity-50 disabled:luic:cursor-not-allowed",l&&"luic:border-red-500",a),...o,...d}),t&&e.jsxs("div",{className:"luic:flex luic:flex-col luic:gap-1",children:[e.jsx(X,{htmlFor:n,disabled:i,hasError:!!l,className:"luic:cursor-pointer",children:t}),r&&!l&&e.jsx(K,{id:f,children:r}),l&&e.jsx(Z,{id:g,children:l})]})]})})});ne.displayName="Radio";const U=({children:t,label:l,error:r,helperText:a,fieldId:i,disabled:s,required:d,errorId:u,helperId:n,className:o})=>e.jsx("div",{className:"ui",children:e.jsxs("div",{className:`luic:flex luic:flex-col luic:gap-1.5 luic:w-full ${o||""}`,children:[l&&e.jsx(X,{htmlFor:i,disabled:s,hasError:!!r,required:d,children:l}),t,a&&!r&&e.jsx(K,{id:n,children:a}),r&&e.jsx(Z,{id:u,children:r})]})}),oe=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,type:s="text",id:d,...u},n)=>{const{fieldId:o,ariaProps:g,errorId:f,helperId:x}=M({id:d,error:l,helperText:r});return e.jsx(U,{label:t,error:l,helperText:r,fieldId:o,disabled:i,errorId:f,helperId:x,children:e.jsx("input",{ref:n,type:s,id:o,disabled:i,className:p("luic:w-full luic:px-4 luic:py-2 luic:bg-white luic:text-gray-900","luic:rounded luic:border",l?"luic:border-red-500 focus:luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300 focus:luic:border-purple-500 focus:luic:ring-purple-500","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-0","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","placeholder:luic:text-gray-400",a),...g,...u})})});oe.displayName="TextInput";const ae=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,rows:u=4,resize:n="vertical",...o},g)=>{const{fieldId:f,ariaProps:x,errorId:m,helperId:w}=M({id:d,error:l,helperText:r}),b={none:"luic:resize-none",vertical:"luic:resize-y",horizontal:"luic:resize-x",both:"luic:resize"}[n];return e.jsx(U,{label:t,error:l,helperText:r,fieldId:f,disabled:i,errorId:m,helperId:w,required:s,children:e.jsx("textarea",{ref:g,id:f,disabled:i,required:s,rows:u,className:p("luic:w-full luic:px-4 luic:py-2","luic:bg-white luic:text-gray-900","luic:border luic:rounded-md","luic:transition-colors luic:duration-200","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-0",l?"luic:border-red-500 focus:luic:border-red-500 focus:luic:ring-red-200":"luic:border-gray-300 focus:luic:border-purple-500 focus:luic:ring-purple-200",i&&"luic:bg-gray-100 luic:text-gray-500 luic:cursor-not-allowed",b,a),...x,...o})})});ae.displayName="Textarea";const de=y.forwardRef(({label:t,error:l,helperText:r,options:a,placeholder:i,className:s="",disabled:d,id:u,...n},o)=>{const{fieldId:g,ariaProps:f,errorId:x,helperId:m}=M({id:u,error:l,helperText:r});return e.jsx(U,{label:t,error:l,helperText:r,fieldId:g,disabled:d,errorId:x,helperId:m,children:e.jsxs("select",{ref:o,id:g,disabled:d,className:p("luic:w-full luic:px-4 luic:py-2 luic:bg-white luic:text-gray-900","luic:rounded luic:border luic:cursor-pointer",l?"luic:border-red-500 focus:luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300 focus:luic:border-indigo-500 focus:luic:ring-indigo-500","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-0","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed",s),...f,...n,children:[i&&e.jsx("option",{value:"",disabled:!0,children:i}),a.map(w=>e.jsx("option",{value:w.value,disabled:w.disabled,children:w.label},w.value))]})})});de.displayName="Select";const fe=y.forwardRef(({label:t,error:l,helperText:r,onLabel:a,offLabel:i,className:s="",disabled:d,checked:u,id:n,...o},g)=>{const{fieldId:f,ariaProps:x,errorId:m,helperId:w}=M({id:n,error:l,helperText:r});return e.jsx("div",{className:"ui",children:e.jsxs("div",{className:"luic:flex luic:flex-col luic:gap-1.5 luic:w-full",children:[t&&e.jsx(X,{htmlFor:f,disabled:d,hasError:!!l,children:t}),e.jsxs("div",{className:"luic:flex luic:items-center luic:gap-3",children:[e.jsx("button",{type:"button",role:"switch","aria-checked":u,"aria-labelledby":f,disabled:d,onClick:()=>{const b=document.getElementById(f);b&&b.click()},className:p("luic:relative luic:inline-flex luic:h-6 luic:w-11 luic:items-center","luic:rounded-full luic:transition-colors","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-yellow-500 focus:luic:ring-offset-2",u?"luic:bg-yellow-500":"luic:bg-gray-300",d?"luic:opacity-50 luic:cursor-not-allowed":"luic:cursor-pointer",s),children:e.jsx("span",{className:p("luic:inline-block luic:h-4 luic:w-4 luic:transform","luic:rounded-full luic:bg-white luic:transition-transform",u?"luic:translate-x-6":"luic:translate-x-1")})}),(a||i)&&e.jsx("span",{className:"luic:text-sm luic:text-gray-700",children:u?a||"On":i||"Off"}),e.jsx("input",{ref:g,type:"checkbox",id:f,disabled:d,checked:u,className:"luic:sr-only",...x,...o})]}),r&&!l&&e.jsx(K,{id:w,children:r}),l&&e.jsx(Z,{id:m,children:l})]})})});fe.displayName="Toggle";const pe=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,min:u=0,max:n=100,step:o=1,value:g=0,showValue:f=!0,showMinMax:x=!0,formatValue:m=v=>String(v),...w},b)=>{const{fieldId:v,ariaProps:T,errorId:z,helperId:O}=M({id:d,error:l,helperText:r});return e.jsx("div",{className:"ui",children:e.jsxs("div",{className:"luic:flex luic:flex-col luic:gap-1.5 luic:w-full",children:[t&&e.jsxs("div",{className:"luic:flex luic:items-center luic:justify-between",children:[e.jsx(X,{htmlFor:v,disabled:i,hasError:!!l,required:s,children:t}),f&&e.jsx("span",{className:p("luic:text-sm luic:font-medium",i?"luic:text-gray-400":"luic:text-yellow-600"),children:m(Number(g))})]}),e.jsxs("div",{className:"luic:flex luic:flex-col luic:gap-2",children:[e.jsx("input",{ref:b,type:"range",id:v,disabled:i,required:s,min:u,max:n,step:o,value:g,className:p("luic:w-full luic:h-2","luic:bg-gray-200 luic:rounded-lg","luic:appearance-none luic:cursor-pointer","luic:accent-yellow-500","[&::-webkit-slider-thumb]:luic:appearance-none","[&::-webkit-slider-thumb]:luic:w-4","[&::-webkit-slider-thumb]:luic:h-4","[&::-webkit-slider-thumb]:luic:rounded-full","[&::-webkit-slider-thumb]:luic:bg-yellow-500","[&::-webkit-slider-thumb]:luic:cursor-pointer","[&::-webkit-slider-thumb]:hover:luic:bg-yellow-600","[&::-webkit-slider-thumb]:luic:transition-colors","[&::-moz-range-thumb]:luic:w-4","[&::-moz-range-thumb]:luic:h-4","[&::-moz-range-thumb]:luic:rounded-full","[&::-moz-range-thumb]:luic:bg-yellow-500","[&::-moz-range-thumb]:luic:border-0","[&::-moz-range-thumb]:luic:cursor-pointer","[&::-moz-range-thumb]:hover:luic:bg-yellow-600","[&::-moz-range-thumb]:luic:transition-colors","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-yellow-500 focus:luic:ring-offset-2",i&&"luic:opacity-50 luic:cursor-not-allowed [&::-webkit-slider-thumb]:luic:cursor-not-allowed [&::-moz-range-thumb]:luic:cursor-not-allowed",l&&"luic:accent-red-500",a),...T,...w}),x&&e.jsxs("div",{className:"luic:flex luic:justify-between luic:text-xs luic:text-gray-500",children:[e.jsx("span",{children:m(u)}),e.jsx("span",{children:m(n)})]})]}),r&&!l&&e.jsx(K,{id:O,children:r}),l&&e.jsx(Z,{id:z,children:l})]})})});pe.displayName="Slider";const ge=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,value:u=[],onChange:n,maxTags:o,delimiters:g=["Enter"],allowDuplicates:f=!1,validateTag:x,tagClassName:m="",placeholder:w="Type and press Enter",...b},v)=>{const{fieldId:T,ariaProps:z,errorId:O,helperId:A}=M({id:d,error:l,helperText:r}),[L,Y]=y.useState(""),W=R=>{const P=R.trim();P&&(o&&u.length>=o||!f&&u.includes(P)||x&&!x(P)||(n?.([...u,P]),Y("")))},F=R=>{const P=u.filter((D,J)=>J!==R);n?.(P)},I=R=>{g.includes(R.key)?(R.preventDefault(),W(L)):R.key==="Backspace"&&!L&&u.length>0&&F(u.length-1)},_=()=>{L.trim()&&W(L)};return e.jsx("div",{className:"ui",children:e.jsxs("div",{className:"luic:flex luic:flex-col luic:gap-1.5 luic:w-full",children:[t&&e.jsx(X,{htmlFor:T,disabled:i,hasError:!!l,required:s,children:t}),e.jsxs("div",{className:p("luic:min-h-[42px] luic:w-full luic:px-3 luic:py-2","luic:bg-white luic:border luic:rounded-md","luic:flex luic:flex-wrap luic:gap-2 luic:items-center","luic:transition-colors luic:duration-200",l?"luic:border-red-500 focus-within:luic:border-red-500 focus-within:luic:ring-2 focus-within:luic:ring-red-200":"luic:border-gray-300 focus-within:luic:border-purple-500 focus-within:luic:ring-2 focus-within:luic:ring-purple-200",i&&"luic:bg-gray-100 luic:cursor-not-allowed",a),children:[u.map((R,P)=>e.jsxs("span",{className:p("luic:inline-flex luic:items-center luic:gap-1.5","luic:px-3 luic:py-1","luic:bg-purple-500 luic:text-white","luic:rounded-full luic:text-sm","luic:transition-colors",i&&"luic:opacity-50",m),children:[R,!i&&e.jsx("button",{type:"button",onClick:()=>F(P),className:"luic:text-white hover:luic:text-purple-200 luic:transition-colors focus:luic:outline-none","aria-label":`Remove ${R}`,children:"✕"})]},P)),e.jsx("input",{ref:v,type:"text",id:T,disabled:i,required:s&&u.length===0,value:L,onChange:R=>Y(R.target.value),onKeyDown:I,onBlur:_,placeholder:u.length===0?w:"",className:p("luic:flex-1 luic:min-w-[120px]","luic:bg-transparent luic:outline-none","luic:text-gray-900",i&&"luic:cursor-not-allowed"),...z,...b})]}),r&&!l&&e.jsxs(K,{id:A,children:[r,o&&e.jsxs("span",{className:"luic:ml-2",children:["(",u.length,"/",o,")"]})]}),l&&e.jsx(Z,{id:O,children:l})]})})});ge.displayName="TagInput";const Te=({filled:t,size:l})=>e.jsx("svg",{width:l,height:l,viewBox:"0 0 24 24",fill:t?"currentColor":"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"})}),he=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,value:u=0,onChange:n,max:o=5,size:g="md",readOnly:f=!1,color:x="yellow",...m},w)=>{const{fieldId:b,ariaProps:v,errorId:T,helperId:z}=M({id:d,error:l,helperText:r}),[O,A]=y.useState(null),L=D=>{i||f||n?.(D)},Y=D=>{i||f||A(D)},W=()=>{A(null)},F={sm:20,md:32,lg:40},I={yellow:"luic:text-yellow-500",red:"luic:text-red-500",orange:"luic:text-orange-500",purple:"luic:text-purple-500"},_=F[g],R=I[x],P=O!==null?O:u;return e.jsx("div",{className:"ui",children:e.jsxs("div",{className:"luic:flex luic:flex-col luic:gap-1.5 luic:w-full",children:[t&&e.jsx(X,{htmlFor:b,disabled:i,hasError:!!l,required:s,children:t}),e.jsxs("div",{className:p("luic:flex luic:gap-1",i&&"luic:opacity-50",a),onMouseLeave:W,role:"radiogroup","aria-labelledby":t?b:void 0,children:[Array.from({length:o},(D,J)=>{const N=J+1,C=N<=P;return e.jsx("button",{type:"button",onClick:()=>L(N),onMouseEnter:()=>Y(N),disabled:i||f,className:p("luic:transition-all luic:duration-200","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-2",C?R:"luic:text-gray-300",!i&&!f&&"hover:luic:scale-110",i||f?"luic:cursor-default":"luic:cursor-pointer",l&&"focus:luic:ring-red-500"),"aria-label":`Rate ${N} out of ${o} stars`,"aria-checked":N===u,role:"radio",children:e.jsx(Te,{filled:C,size:_})},N)}),e.jsx("input",{ref:w,type:"hidden",id:b,value:u,required:s,disabled:i,...v,...m})]}),u>0&&!l&&e.jsxs("span",{className:"luic:text-sm luic:text-gray-600",children:[u," out of ",o," stars"]}),r&&!l&&e.jsx(K,{id:z,children:r}),l&&e.jsx(Z,{id:T,children:l})]})})});he.displayName="Rating";const xe=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,showToggle:u=!0,wrapperClassName:n="",...o},g)=>{const[f,x]=y.useState(!1),{fieldId:m,ariaProps:w,errorId:b,helperId:v}=M({id:d,error:l,helperText:r}),T=()=>{x(z=>!z)};return e.jsx(U,{label:t,error:l,helperText:r,fieldId:m,disabled:i,errorId:b,helperId:v,required:s,children:e.jsxs("div",{className:p("luic:relative luic:w-full",n),children:[e.jsx("input",{ref:g,type:f?"text":"password",id:m,disabled:i,required:s,className:p("luic:w-full luic:px-4 luic:py-2 luic:border luic:rounded-lg","luic:text-gray-900 luic:bg-white","placeholder:luic:text-gray-400","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-purple-500 focus:luic:border-transparent","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed",l?"luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300",u&&"luic:pr-12",a),...w,...o}),u&&e.jsx("button",{type:"button",onClick:T,disabled:i,className:p("luic:absolute luic:right-3 luic:top-1/2 luic:-translate-y-1/2","luic:text-gray-500 hover:luic:text-gray-700","luic:transition-colors","disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-purple-500 focus:luic:rounded"),"aria-label":f?"Hide password":"Show password",children:f?e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"luic:h-5 luic:w-5",viewBox:"0 0 20 20",fill:"currentColor",children:[e.jsx("path",{fillRule:"evenodd",d:"M3.707 2.293a1 1 0 00-1.414 1.414l14 14a1 1 0 001.414-1.414l-1.473-1.473A10.014 10.014 0 0019.542 10C18.268 5.943 14.478 3 10 3a9.958 9.958 0 00-4.512 1.074l-1.78-1.781zm4.261 4.26l1.514 1.515a2.003 2.003 0 012.45 2.45l1.514 1.514a4 4 0 00-5.478-5.478z",clipRule:"evenodd"}),e.jsx("path",{d:"M12.454 16.697L9.75 13.992a4 4 0 01-3.742-3.741L2.335 6.578A9.98 9.98 0 00.458 10c1.274 4.057 5.065 7 9.542 7 .847 0 1.669-.105 2.454-.303z"})]}):e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"luic:h-5 luic:w-5",viewBox:"0 0 20 20",fill:"currentColor",children:[e.jsx("path",{d:"M10 12a2 2 0 100-4 2 2 0 000 4z"}),e.jsx("path",{fillRule:"evenodd",d:"M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z",clipRule:"evenodd"})]})})]})})});xe.displayName="PasswordInput";const me=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,onClear:u,showClear:n=!0,wrapperClassName:o="",value:g,onChange:f,...x},m)=>{const[w,b]=y.useState(""),{fieldId:v,ariaProps:T,errorId:z,helperId:O}=M({id:d,error:l,helperText:r}),A=g!==void 0,L=A?g:w,Y=String(L).length>0,W=I=>{A||b(I.target.value),f?.(I)},F=()=>{A||b(""),u?.()};return e.jsx(U,{label:t,error:l,helperText:r,fieldId:v,disabled:i,errorId:z,helperId:O,required:s,children:e.jsxs("div",{className:p("luic:relative luic:w-full",o),children:[e.jsx("div",{className:"luic:absolute luic:left-3 luic:top-1/2 luic:-translate-y-1/2 luic:pointer-events-none",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:p("luic:h-5 luic:w-5",i?"luic:text-gray-400":"luic:text-gray-500"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})})}),e.jsx("input",{ref:m,type:"search",id:v,disabled:i,required:s,value:L,onChange:W,className:p("luic:w-full luic:pl-10 luic:py-2 luic:border luic:rounded-lg","luic:text-gray-900 luic:bg-white","placeholder:luic:text-gray-400","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-purple-500 focus:luic:border-transparent","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed",l?"luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300",n&&Y?"luic:pr-12":"luic:pr-4",a),...T,...x}),n&&Y&&!i&&e.jsx("button",{type:"button",onClick:F,className:p("luic:absolute luic:right-3 luic:top-1/2 luic:-translate-y-1/2","luic:text-gray-500 hover:luic:text-gray-700","luic:transition-colors","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-purple-500 focus:luic:rounded"),"aria-label":"Clear search",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"luic:h-5 luic:w-5",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})})]})})});me.displayName="SearchInput";const be=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,min:u,max:n,step:o=1,value:g,onChange:f,onValueChange:x,showSteppers:m=!0,wrapperClassName:w="",allowDecimal:b=!1,allowNegative:v=!0,...T},z)=>{const[O,A]=y.useState(""),{fieldId:L,ariaProps:Y,errorId:W,helperId:F}=M({id:d,error:l,helperText:r}),I=g!==void 0,_=I?g:O,R=h=>{if(h===""||h==="-")return null;const E=b?parseFloat(h):parseInt(h,10);return isNaN(E)?null:E},P=h=>{let E=h;return u!==void 0&&E<u&&(E=u),n!==void 0&&E>n&&(E=n),E},D=h=>{const E=h.target.value;if(E===""){I||A(""),f?.(h),x?.(null);return}if(E==="-"&&v){I||A("-"),f?.(h);return}if(!(b?v?/^-?\d*\.?\d*$/:/^\d*\.?\d*$/:v?/^-?\d*$/:/^\d*$/).test(E))return;I||A(E),f?.(h);const c=R(E);c!==null&&x?.(c)},J=()=>{const h=R(String(_))??0,E=P(h+o);I||A(E),x?.(E)},N=()=>{const h=R(String(_))??0,E=P(h-o);I||A(E),x?.(E)},C=()=>{if(i)return!1;const h=R(String(_));return h===null?!0:n!==void 0?h<n:!0},H=()=>{if(i)return!1;const h=R(String(_));return h===null?!0:u!==void 0?h>u:!0};return e.jsx(U,{label:t,error:l,helperText:r,fieldId:L,disabled:i,errorId:W,helperId:F,required:s,children:e.jsxs("div",{className:p("luic:relative luic:w-full",w),children:[e.jsx("input",{ref:z,type:"text",inputMode:"numeric",id:L,disabled:i,required:s,value:_,onChange:D,className:p("luic:w-full luic:px-4 luic:py-2 luic:border luic:rounded-lg","luic:text-gray-900 luic:bg-white","placeholder:luic:text-gray-400","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-purple-500 focus:luic:border-transparent","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed",l?"luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300",m&&"luic:pr-20",a),...Y,...T}),m&&e.jsxs("div",{className:"luic:absolute luic:right-1 luic:top-1/2 luic:-translate-y-1/2 luic:flex luic:gap-1",children:[e.jsx("button",{type:"button",onClick:N,disabled:!H(),className:p("luic:w-8 luic:h-8 luic:flex luic:items-center luic:justify-center","luic:bg-gray-100 luic:rounded luic:text-gray-700","hover:luic:bg-gray-200 active:luic:bg-gray-300","disabled:luic:bg-gray-50 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-purple-500","luic:transition-colors"),"aria-label":"Decrement value",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"luic:h-4 luic:w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z",clipRule:"evenodd"})})}),e.jsx("button",{type:"button",onClick:J,disabled:!C(),className:p("luic:w-8 luic:h-8 luic:flex luic:items-center luic:justify-center","luic:bg-gray-100 luic:rounded luic:text-gray-700","hover:luic:bg-gray-200 active:luic:bg-gray-300","disabled:luic:bg-gray-50 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-purple-500","luic:transition-colors"),"aria-label":"Increment value",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"luic:h-4 luic:w-4",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z",clipRule:"evenodd"})})})]})]})})});be.displayName="NumericInput";const ye=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,options:u=[],value:n=[],onChange:o,placeholder:g="Select options...",maxDisplay:f=2,showSelectAll:x=!0,dropdownClassName:m=""},w)=>{const[b,v]=y.useState(!1),[T,z]=y.useState(n),O=y.useRef(null),{fieldId:A,ariaProps:L,errorId:Y,helperId:W}=M({id:d,error:l,helperText:r}),F=n!==void 0,I=F?n:T;y.useEffect(()=>{const N=C=>{O.current&&!O.current.contains(C.target)&&v(!1)};if(b)return document.addEventListener("mousedown",N),()=>document.removeEventListener("mousedown",N)},[b]);const _=N=>{z(C=>{const H=F?I:C,h=H.includes(N)?H.filter(E=>E!==N):[...H,N];return o&&o(h),F?C:h})},R=()=>{const N=u.filter(C=>!C.disabled).map(C=>C.value);z(N),o?.(N)},P=()=>{z([]),o?.([])},D=()=>I.length===0?g:I.length<=f?I.map(N=>u.find(C=>C.value===N)?.label||N).join(", "):`${I.length} selected`,J=N=>{i||(N.key==="Enter"||N.key===" "?(N.preventDefault(),v(!b)):N.key==="Escape"&&v(!1))};return e.jsx(U,{label:t,error:l,helperText:r,fieldId:A,disabled:i,errorId:Y,helperId:W,required:s,children:e.jsx("div",{ref:O,className:"luic:relative luic:w-full",children:e.jsxs("div",{ref:w,children:[e.jsxs("button",{type:"button",id:A,disabled:i,onClick:()=>!i&&v(!b),onKeyDown:J,className:p("luic:w-full luic:px-4 luic:py-2 luic:border luic:rounded-lg","luic:text-left luic:bg-white","luic:flex luic:items-center luic:justify-between","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-purple-500 focus:luic:border-transparent","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed",l?"luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300",I.length===0&&"luic:text-gray-400",a),"aria-expanded":b,"aria-haspopup":"listbox",...L,children:[e.jsx("span",{className:"luic:truncate",children:D()}),e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:p("luic:h-5 luic:w-5 luic:ml-2 luic:transition-transform luic:flex-shrink-0",b&&"luic:rotate-180"),viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",clipRule:"evenodd"})})]}),b&&!i&&e.jsxs("div",{className:p("luic:absolute luic:z-10 luic:w-full luic:mt-1","luic:bg-white luic:border luic:border-gray-300 luic:rounded-lg luic:shadow-lg","luic:max-h-60 luic:overflow-auto",m),role:"listbox","aria-multiselectable":"true",children:[x&&u.length>0&&e.jsxs("div",{className:"luic:flex luic:gap-2 luic:p-2 luic:border-b luic:border-gray-200",children:[e.jsx("button",{type:"button",onClick:R,className:"luic:flex-1 luic:px-3 luic:py-1 luic:text-sm luic:bg-purple-50 luic:text-purple-700 luic:rounded hover:luic:bg-purple-100 luic:transition-colors",children:"Select All"}),e.jsx("button",{type:"button",onClick:P,className:"luic:flex-1 luic:px-3 luic:py-1 luic:text-sm luic:bg-gray-100 luic:text-gray-700 luic:rounded hover:luic:bg-gray-200 luic:transition-colors",children:"Clear"})]}),u.length===0?e.jsx("div",{className:"luic:px-4 luic:py-3 luic:text-sm luic:text-gray-500",children:"No options available"}):u.map(N=>{const C=I.includes(N.value);return e.jsxs("div",{role:"option","aria-selected":C,onClick:()=>!N.disabled&&_(N.value),className:p("luic:px-4 luic:py-2 luic:cursor-pointer","luic:flex luic:items-center luic:gap-3","hover:luic:bg-gray-50",C&&"luic:bg-purple-50",N.disabled&&"luic:opacity-50 luic:cursor-not-allowed hover:luic:bg-white"),children:[e.jsx("div",{className:p("luic:w-4 luic:h-4 luic:border-2 luic:rounded","luic:flex luic:items-center luic:justify-center",C?"luic:bg-purple-500 luic:border-purple-500":"luic:border-gray-300"),children:C&&e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"luic:h-3 luic:w-3 luic:text-white",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})}),e.jsx("span",{className:"luic:text-gray-900",children:N.label})]},N.value)})]})]})})})});ye.displayName="MultiSelect";const we=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,min:u,max:n,...o},g)=>{const{fieldId:f,ariaProps:x,errorId:m,helperId:w}=M({id:d,error:l,helperText:r});return e.jsx(U,{label:t,error:l,helperText:r,fieldId:f,disabled:i,required:s,errorId:m,helperId:w,children:e.jsx("input",{ref:g,type:"date",id:f,disabled:i,required:s,min:u,max:n,className:p("luic:w-full luic:px-4 luic:py-2 luic:bg-white luic:text-gray-900","luic:rounded luic:border",l?"luic:border-red-500 focus:luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300 focus:luic:border-purple-500 focus:luic:ring-purple-500","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-0","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","luic:cursor-pointer disabled:luic:cursor-not-allowed",a),...x,...o})})});we.displayName="DatePicker";const je=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,accept:u,multiple:n=!1,maxSize:o,onFilesSelected:g,showFileList:f=!0,onChange:x,...m},w)=>{const{fieldId:b,ariaProps:v,errorId:T,helperId:z}=M({id:d,error:l,helperText:r}),[O,A]=y.useState(null),[L,Y]=y.useState(""),W=_=>{const R=_.target.files;if(R&&o&&Array.from(R).filter(D=>D.size>o).length>0){Y(`File size exceeds maximum of ${(o/1024/1024).toFixed(2)}MB`),_.target.value="",A(null),g?.(null),x?.(_);return}Y(""),A(R),g?.(R),x?.(_)},F=_=>{if(_===0)return"0 Bytes";const R=1024,P=["Bytes","KB","MB","GB"],D=Math.floor(Math.log(_)/Math.log(R));return Math.round(_/Math.pow(R,D)*100)/100+" "+P[D]},I=L||l;return e.jsx(U,{label:t,error:I,helperText:r,fieldId:b,disabled:i,required:s,errorId:T,helperId:z,children:e.jsxs("div",{className:"luic:w-full",children:[e.jsxs("label",{htmlFor:b,className:p("luic:block luic:w-full luic:px-6 luic:py-8","luic:border-2 luic:border-dashed luic:rounded-lg","luic:text-center luic:cursor-pointer","luic:transition-colors",I?"luic:border-red-500 hover:luic:border-red-600":"luic:border-gray-300 hover:luic:border-purple-500",i&&"luic:opacity-50 luic:cursor-not-allowed hover:luic:border-gray-300",a),children:[e.jsx("svg",{className:"luic:mx-auto luic:h-12 luic:w-12 luic:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})}),e.jsxs("p",{className:"luic:mt-2 luic:text-sm luic:text-gray-600",children:[e.jsx("span",{className:"luic:font-semibold",children:"Click to upload"})," or drag and drop"]}),u&&e.jsx("p",{className:"luic:mt-1 luic:text-xs luic:text-gray-500",children:u}),o&&e.jsxs("p",{className:"luic:mt-1 luic:text-xs luic:text-gray-500",children:["Max size: ",F(o)]})]}),e.jsx("input",{ref:w,type:"file",id:b,disabled:i,required:s,accept:u,multiple:n,onChange:W,className:"luic:sr-only",...v,...m}),f&&O&&O.length>0&&e.jsx("div",{className:"luic:mt-4 luic:space-y-2",children:Array.from(O).map((_,R)=>e.jsxs("div",{className:"luic:flex luic:items-center luic:justify-between luic:p-3 luic:bg-gray-50 luic:rounded-lg",children:[e.jsxs("div",{className:"luic:flex-1 luic:min-w-0",children:[e.jsx("p",{className:"luic:text-sm luic:font-medium luic:text-gray-900 luic:truncate",children:_.name}),e.jsx("p",{className:"luic:text-xs luic:text-gray-500",children:F(_.size)})]}),e.jsx("svg",{className:"luic:h-5 luic:w-5 luic:text-green-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})})]},R))})]})})});je.displayName="FileUpload";const ve=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,min:u,max:n,step:o,...g},f)=>{const{fieldId:x,ariaProps:m,errorId:w,helperId:b}=M({id:d,error:l,helperText:r});return e.jsx(U,{label:t,error:l,helperText:r,fieldId:x,disabled:i,required:s,errorId:w,helperId:b,children:e.jsx("input",{ref:f,type:"time",id:x,disabled:i,required:s,min:u,max:n,step:o,className:p("luic:w-full luic:px-4 luic:py-2 luic:bg-white luic:text-gray-900","luic:rounded luic:border",l?"luic:border-red-500 focus:luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300 focus:luic:border-purple-500 focus:luic:ring-purple-500","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-0","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","luic:cursor-pointer disabled:luic:cursor-not-allowed",a),...m,...g})})});ve.displayName="TimePicker";const Ne=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,currencySymbol:u="$",symbolPosition:n="left",min:o=0,max:g,step:f=.01,...x},m)=>{const{fieldId:w,ariaProps:b,errorId:v,helperId:T}=M({id:d,error:l,helperText:r});return e.jsx(U,{label:t,error:l,helperText:r,fieldId:w,disabled:i,required:s,errorId:v,helperId:T,children:e.jsxs("div",{className:"luic:relative luic:w-full",children:[n==="left"&&e.jsx("span",{className:p("luic:absolute luic:left-3 luic:top-1/2 luic:-translate-y-1/2","luic:text-gray-900 luic:pointer-events-none",i&&"luic:text-gray-400"),children:u}),e.jsx("input",{ref:m,type:"number",id:w,disabled:i,required:s,min:o,max:g,step:f,className:p("luic:w-full luic:py-2 luic:bg-white luic:text-gray-900","luic:rounded luic:border",n==="left"?"luic:pl-8 luic:pr-4":"luic:pl-4 luic:pr-8",l?"luic:border-red-500 focus:luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300 focus:luic:border-purple-500 focus:luic:ring-purple-500","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-0","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","placeholder:luic:text-gray-400",a),...b,...x}),n==="right"&&e.jsx("span",{className:p("luic:absolute luic:right-3 luic:top-1/2 luic:-translate-y-1/2","luic:text-gray-900 luic:pointer-events-none",i&&"luic:text-gray-400"),children:u})]})})});Ne.displayName="CurrencyInput";const Re=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,min:u=0,max:n=100,step:o=1,allowOver100:g=!1,...f},x)=>{const{fieldId:m,ariaProps:w,errorId:b,helperId:v}=M({id:d,error:l,helperText:r}),T=g?void 0:n;return e.jsx(U,{label:t,error:l,helperText:r,fieldId:m,disabled:i,required:s,errorId:b,helperId:v,children:e.jsxs("div",{className:"luic:relative luic:w-full",children:[e.jsx("input",{ref:x,type:"number",id:m,disabled:i,required:s,min:u,max:T,step:o,className:p("luic:w-full luic:py-2 luic:pl-4 luic:pr-8 luic:bg-white luic:text-gray-900","luic:rounded luic:border",l?"luic:border-red-500 focus:luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300 focus:luic:border-purple-500 focus:luic:ring-purple-500","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-0","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","placeholder:luic:text-gray-400",a),...w,...f}),e.jsx("span",{className:p("luic:absolute luic:right-3 luic:top-1/2 luic:-translate-y-1/2","luic:text-gray-900 luic:pointer-events-none",i&&"luic:text-gray-400"),children:"%"})]})})});Re.displayName="PercentageInput";const ke=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,showIcon:u=!0,...n},o)=>{const{fieldId:g,ariaProps:f,errorId:x,helperId:m}=M({id:d,error:l,helperText:r});return e.jsx(U,{label:t,error:l,helperText:r,fieldId:g,disabled:i,required:s,errorId:x,helperId:m,children:e.jsxs("div",{className:"luic:relative luic:w-full",children:[u&&e.jsx("div",{className:"luic:absolute luic:left-3 luic:top-1/2 luic:-translate-y-1/2 luic:pointer-events-none",children:e.jsx("svg",{className:p("luic:h-5 luic:w-5",i?"luic:text-gray-400":"luic:text-gray-500"),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"})})}),e.jsx("input",{ref:o,type:"url",id:g,disabled:i,required:s,className:p("luic:w-full luic:py-2 luic:bg-white luic:text-gray-900","luic:rounded luic:border",u?"luic:pl-10 luic:pr-4":"luic:px-4",l?"luic:border-red-500 focus:luic:border-red-500 focus:luic:ring-red-500":"luic:border-gray-300 focus:luic:border-purple-500 focus:luic:ring-purple-500","focus:luic:outline-none focus:luic:ring-2 focus:luic:ring-offset-0","disabled:luic:bg-gray-100 disabled:luic:text-gray-400 disabled:luic:cursor-not-allowed","placeholder:luic:text-gray-400",a),...f,...n})]})})});ke.displayName="URLInput";const Ie=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,showPreview:u=!0,showHexValue:n=!0,value:o="#3b82f6",...g},f)=>{const{fieldId:x,ariaProps:m,errorId:w,helperId:b}=M({id:d,error:l,helperText:r});return e.jsx(U,{label:t,error:l,helperText:r,fieldId:x,disabled:i,required:s,errorId:w,helperId:b,children:e.jsxs("div",{className:"luic:flex luic:items-center luic:gap-4",children:[e.jsx("input",{ref:f,type:"color",id:x,disabled:i,required:s,value:o,className:p("luic:h-12 luic:w-12 luic:rounded luic:border-2",l?"luic:border-red-500":"luic:border-gray-300","luic:cursor-pointer disabled:luic:cursor-not-allowed","disabled:luic:opacity-50",a),...m,...g}),e.jsxs("div",{className:"luic:flex-1",children:[n&&e.jsx("div",{className:p("luic:text-sm luic:font-medium luic:font-mono",i?"luic:text-gray-400":"luic:text-gray-900"),children:o}),u&&e.jsx("div",{className:p("luic:mt-2 luic:h-8 luic:rounded luic:border-2",l?"luic:border-red-500":"luic:border-gray-300"),style:{backgroundColor:o},"aria-hidden":"true"})]})]})})});Ie.displayName="ColorPicker";const Ee=y.forwardRef(({label:t,error:l,helperText:r,className:a="",disabled:i,required:s,id:d,columns:u,data:n,rowKey:o,selectable:g=!1,selectedRows:f,onSelectionChange:x,onRowClick:m,hoverable:w=!0,striped:b=!1,size:v="md",...T},z)=>{const{fieldId:O,errorId:A,helperId:L}=M({id:d,error:l,helperText:r}),[Y,W]=y.useState([]),F=f??Y,I=x??W,_=h=>typeof o=="function"?o(h):h[o],R=n.length>0&&F.length===n.length,P=F.length>0&&!R,D=()=>{I(R?[]:n.map(_))},J=h=>{F.includes(h)?I(F.filter(E=>E!==h)):I([...F,h])},N=(h,E)=>{m?m(h):g&&J(E)},C={sm:"luic:text-sm",md:"luic:text-base",lg:"luic:text-lg"},H={sm:"luic:px-2 luic:py-1",md:"luic:px-4 luic:py-2",lg:"luic:px-6 luic:py-3"};return e.jsx(U,{label:t,error:l,helperText:r,fieldId:O,disabled:i,required:s,errorId:A,helperId:L,children:e.jsx("div",{className:"luic:overflow-x-auto luic:rounded-lg luic:border luic:border-gray-300",children:e.jsxs("table",{ref:z,id:O,className:p("luic:w-full luic:border-collapse",C[v],i&&"luic:opacity-50 luic:cursor-not-allowed",a),...T,children:[e.jsx("thead",{className:"luic:bg-gray-100 luic:border-b luic:border-gray-300",children:e.jsxs("tr",{children:[g&&e.jsx("th",{className:p("luic:text-left luic:font-semibold luic:text-gray-900",H[v]),style:{width:"48px"},children:e.jsx("input",{type:"checkbox",checked:R,ref:h=>{h&&(h.indeterminate=P)},onChange:D,disabled:i||n.length===0,className:p("luic:h-4 luic:w-4 luic:rounded luic:border-gray-300","luic:cursor-pointer disabled:luic:cursor-not-allowed"),"aria-label":"Select all rows"})}),u.map(h=>e.jsx("th",{className:p("luic:text-left luic:font-semibold luic:text-gray-900",H[v],h.className),style:h.width?{width:h.width}:void 0,children:h.header},h.key))]})}),e.jsx("tbody",{children:n.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:u.length+(g?1:0),className:p("luic:text-center luic:text-gray-500",H[v]),children:"No data available"})}):n.map((h,E)=>{const G=_(h),c=F.includes(G),j=b&&E%2===1;return e.jsxs("tr",{className:p("luic:border-t luic:border-gray-200",w&&!i&&"hover:luic:bg-gray-50 luic:transition-colors",c&&"luic:bg-blue-50",j&&!c&&"luic:bg-gray-50",(m||g)&&!i&&"luic:cursor-pointer"),onClick:()=>!i&&N(h,G),children:[g&&e.jsx("td",{className:H[v],children:e.jsx("input",{type:"checkbox",checked:c,onChange:S=>{S.stopPropagation(),J(G)},disabled:i,className:p("luic:h-4 luic:w-4 luic:rounded luic:border-gray-300","luic:cursor-pointer disabled:luic:cursor-not-allowed"),"aria-label":`Select row ${G}`})}),u.map(S=>e.jsx("td",{className:p("luic:text-gray-900",H[v],S.className),children:S.render?S.render(h):h[S.key]},S.key))]},G)})})]})})})});Ee.displayName="DataTable";function Ae({value:t,defaultValue:l,onChange:r}){const a=y.useRef(t!==void 0),i=t!==void 0;y.useEffect(()=>{process.env.NODE_ENV!=="production"&&a.current!==i&&console.warn("A component is changing from "+(a.current?"controlled":"uncontrolled")+" to "+(i?"controlled":"uncontrolled")+". This is likely caused by the value changing from "+(a.current?"a defined value to undefined":"undefined to a defined value")+", which should not happen. Decide between using a controlled or uncontrolled component for the lifetime of the component.")},[i]);const[s,d]=y.useState(l),u=i?t:s,n=y.useCallback(o=>{i||d(o),r?.(o)},[i,r]);return[u,n]}k.Card=Ce,k.Checkbox=se,k.ColorPicker=Ie,k.CurrencyInput=Ne,k.DataTable=Ee,k.DatePicker=we,k.FileUpload=je,k.FormErrorText=Z,k.FormField=U,k.FormHelperText=K,k.FormLabel=X,k.MultiSelect=ye,k.NumericInput=be,k.PasswordInput=xe,k.PercentageInput=Re,k.Radio=ne,k.Rating=he,k.SearchInput=me,k.Select=de,k.Slider=pe,k.TagInput=ge,k.TextInput=oe,k.Textarea=ae,k.TimePicker=ve,k.Toggle=fe,k.URLInput=ke,k.cn=p,k.useControllableValue=Ae,k.useFormField=M,Object.defineProperty(k,Symbol.toStringTag,{value:"Module"})}));
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--luic-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--luic-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--luic-color-red-100:oklch(93.6% .032 17.717);--luic-color-red-500:oklch(63.7% .237 25.331);--luic-color-red-600:oklch(57.7% .245 27.325);--luic-color-red-700:oklch(50.5% .213 27.518);--luic-color-red-800:oklch(44.4% .177 26.899);--luic-color-orange-500:oklch(70.5% .213 47.604);--luic-color-yellow-100:oklch(97.3% .071 103.193);--luic-color-yellow-500:oklch(79.5% .184 86.047);--luic-color-yellow-600:oklch(68.1% .162 75.834);--luic-color-yellow-800:oklch(47.6% .114 61.907);--luic-color-green-100:oklch(96.2% .044 156.743);--luic-color-green-500:oklch(72.3% .219 149.579);--luic-color-green-600:oklch(62.7% .194 149.214);--luic-color-green-800:oklch(44.8% .119 151.328);--luic-color-blue-50:oklch(97% .014 254.604);--luic-color-blue-100:oklch(93.2% .032 255.585);--luic-color-blue-600:oklch(54.6% .245 262.881);--luic-color-blue-800:oklch(42.4% .199 265.638);--luic-color-purple-50:oklch(97.7% .014 308.299);--luic-color-purple-500:oklch(62.7% .265 303.9);--luic-color-purple-700:oklch(49.6% .265 301.924);--luic-color-gray-50:oklch(98.5% .002 247.839);--luic-color-gray-100:oklch(96.7% .003 264.542);--luic-color-gray-200:oklch(92.8% .006 264.531);--luic-color-gray-300:oklch(87.2% .01 258.338);--luic-color-gray-400:oklch(70.7% .022 261.325);--luic-color-gray-500:oklch(55.1% .027 264.364);--luic-color-gray-600:oklch(44.6% .03 256.802);--luic-color-gray-700:oklch(37.3% .034 259.733);--luic-color-gray-900:oklch(21% .034 264.665);--luic-color-white:#fff;--luic-spacing:.25rem;--luic-text-xs:.75rem;--luic-text-xs--line-height:calc(1/.75);--luic-text-sm:.875rem;--luic-text-sm--line-height:calc(1.25/.875);--luic-text-base:1rem;--luic-text-base--line-height:calc(1.5/1);--luic-text-lg:1.125rem;--luic-text-lg--line-height:calc(1.75/1.125);--luic-text-xl:1.25rem;--luic-text-xl--line-height:calc(1.75/1.25);--luic-font-weight-medium:500;--luic-font-weight-semibold:600;--luic-font-weight-bold:700;--luic-radius-md:.375rem;--luic-radius-lg:.5rem;--luic-default-transition-duration:.15s;--luic-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--luic-default-font-family:var(--luic-font-sans);--luic-default-mono-font-family:var(--luic-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--luic-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--luic-default-font-feature-settings,normal);font-variation-settings:var(--luic-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--luic-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--luic-default-mono-font-feature-settings,normal);font-variation-settings:var(--luic-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.ui .luic\:pointer-events-none{pointer-events:none}.ui .luic\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ui .luic\:absolute{position:absolute}.ui .luic\:relative{position:relative}.ui .luic\:top-1\/2{top:50%}.ui .luic\:right-1{right:calc(var(--luic-spacing)*1)}.ui .luic\:right-3{right:calc(var(--luic-spacing)*3)}.ui .luic\:left-3{left:calc(var(--luic-spacing)*3)}.ui .luic\:z-10{z-index:10}.ui .luic\:mx-auto{margin-inline:auto}.ui .luic\:mt-1{margin-top:calc(var(--luic-spacing)*1)}.ui .luic\:mt-2{margin-top:calc(var(--luic-spacing)*2)}.ui .luic\:mt-4{margin-top:calc(var(--luic-spacing)*4)}.ui .luic\:mb-2{margin-bottom:calc(var(--luic-spacing)*2)}.ui .luic\:mb-4{margin-bottom:calc(var(--luic-spacing)*4)}.ui .luic\:ml-1{margin-left:calc(var(--luic-spacing)*1)}.ui .luic\:ml-2{margin-left:calc(var(--luic-spacing)*2)}.ui .luic\:block{display:block}.ui .luic\:flex{display:flex}.ui .luic\:inline-block{display:inline-block}.ui .luic\:inline-flex{display:inline-flex}.ui .luic\:h-2{height:calc(var(--luic-spacing)*2)}.ui .luic\:h-3{height:calc(var(--luic-spacing)*3)}.ui .luic\:h-4{height:calc(var(--luic-spacing)*4)}.ui .luic\:h-5{height:calc(var(--luic-spacing)*5)}.ui .luic\:h-6{height:calc(var(--luic-spacing)*6)}.ui .luic\:h-8{height:calc(var(--luic-spacing)*8)}.ui .luic\:h-12{height:calc(var(--luic-spacing)*12)}.ui .luic\:max-h-60{max-height:calc(var(--luic-spacing)*60)}.ui .luic\:min-h-\[42px\]{min-height:42px}.ui .luic\:w-3{width:calc(var(--luic-spacing)*3)}.ui .luic\:w-4{width:calc(var(--luic-spacing)*4)}.ui .luic\:w-5{width:calc(var(--luic-spacing)*5)}.ui .luic\:w-8{width:calc(var(--luic-spacing)*8)}.ui .luic\:w-11{width:calc(var(--luic-spacing)*11)}.ui .luic\:w-12{width:calc(var(--luic-spacing)*12)}.ui .luic\:w-full{width:100%}.ui .luic\:min-w-0{min-width:calc(var(--luic-spacing)*0)}.ui .luic\:min-w-\[120px\]{min-width:120px}.ui .luic\:flex-1{flex:1}.ui .luic\:flex-shrink-0{flex-shrink:0}.ui .luic\:border-collapse{border-collapse:collapse}.ui .luic\:translate-x-1{--tw-translate-x:calc(var(--luic-spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.ui .luic\:translate-x-6{--tw-translate-x:calc(var(--luic-spacing)*6);translate:var(--tw-translate-x)var(--tw-translate-y)}.ui .luic\:-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.ui .luic\:rotate-180{rotate:180deg}.ui .luic\:transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.ui .luic\:cursor-default{cursor:default}.ui .luic\:cursor-not-allowed{cursor:not-allowed}.ui .luic\:cursor-pointer{cursor:pointer}.ui .luic\:resize{resize:both}.ui .luic\:resize-none{resize:none}.ui .luic\:resize-x{resize:horizontal}.ui .luic\:resize-y{resize:vertical}.ui .luic\:appearance-none{appearance:none}.ui .luic\:flex-col{flex-direction:column}.ui .luic\:flex-wrap{flex-wrap:wrap}.ui .luic\:items-center{align-items:center}.ui .luic\:items-start{align-items:flex-start}.ui .luic\:justify-between{justify-content:space-between}.ui .luic\:justify-center{justify-content:center}.ui .luic\:gap-1{gap:calc(var(--luic-spacing)*1)}.ui .luic\:gap-1\.5{gap:calc(var(--luic-spacing)*1.5)}.ui .luic\:gap-2{gap:calc(var(--luic-spacing)*2)}.ui .luic\:gap-3{gap:calc(var(--luic-spacing)*3)}.ui .luic\:gap-4{gap:calc(var(--luic-spacing)*4)}:where(.ui .luic\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--luic-spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--luic-spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.ui .luic\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--luic-spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--luic-spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.ui .luic\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--luic-spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--luic-spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.ui .luic\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--luic-spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--luic-spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.ui .luic\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ui .luic\:overflow-auto{overflow:auto}.ui .luic\:overflow-hidden{overflow:hidden}.ui .luic\:overflow-x-auto{overflow-x:auto}.ui .luic\:rounded{border-radius:.25rem}.ui .luic\:rounded-full{border-radius:3.40282e38px}.ui .luic\:rounded-lg{border-radius:var(--luic-radius-lg)}.ui .luic\:rounded-md{border-radius:var(--luic-radius-md)}.ui .luic\:rounded-none{border-radius:0}.ui .luic\:border{border-style:var(--tw-border-style);border-width:1px}.ui .luic\:border-2{border-style:var(--tw-border-style);border-width:2px}.ui .luic\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.ui .luic\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.ui .luic\:border-dashed{--tw-border-style:dashed;border-style:dashed}.ui .luic\:border-none{--tw-border-style:none;border-style:none}.ui .luic\:border-gray-200{border-color:var(--luic-color-gray-200)}.ui .luic\:border-gray-300{border-color:var(--luic-color-gray-300)}.ui .luic\:border-purple-500{border-color:var(--luic-color-purple-500)}.ui .luic\:border-red-500{border-color:var(--luic-color-red-500)}.ui .luic\:bg-blue-50{background-color:var(--luic-color-blue-50)}.ui .luic\:bg-blue-100{background-color:var(--luic-color-blue-100)}.ui .luic\:bg-gray-50{background-color:var(--luic-color-gray-50)}.ui .luic\:bg-gray-100{background-color:var(--luic-color-gray-100)}.ui .luic\:bg-gray-200{background-color:var(--luic-color-gray-200)}.ui .luic\:bg-gray-300{background-color:var(--luic-color-gray-300)}.ui .luic\:bg-green-100{background-color:var(--luic-color-green-100)}.ui .luic\:bg-purple-50{background-color:var(--luic-color-purple-50)}.ui .luic\:bg-purple-500{background-color:var(--luic-color-purple-500)}.ui .luic\:bg-red-100{background-color:var(--luic-color-red-100)}.ui .luic\:bg-transparent{background-color:#0000}.ui .luic\:bg-white{background-color:var(--luic-color-white)}.ui .luic\:bg-yellow-100{background-color:var(--luic-color-yellow-100)}.ui .luic\:bg-yellow-500{background-color:var(--luic-color-yellow-500)}.ui .luic\:p-2{padding:calc(var(--luic-spacing)*2)}.ui .luic\:p-3{padding:calc(var(--luic-spacing)*3)}.ui .luic\:px-2{padding-inline:calc(var(--luic-spacing)*2)}.ui .luic\:px-3{padding-inline:calc(var(--luic-spacing)*3)}.ui .luic\:px-4{padding-inline:calc(var(--luic-spacing)*4)}.ui .luic\:px-6{padding-inline:calc(var(--luic-spacing)*6)}.ui .luic\:py-1{padding-block:calc(var(--luic-spacing)*1)}.ui .luic\:py-2{padding-block:calc(var(--luic-spacing)*2)}.ui .luic\:py-3{padding-block:calc(var(--luic-spacing)*3)}.ui .luic\:py-4{padding-block:calc(var(--luic-spacing)*4)}.ui .luic\:py-8{padding-block:calc(var(--luic-spacing)*8)}.ui .luic\:pr-4{padding-right:calc(var(--luic-spacing)*4)}.ui .luic\:pr-8{padding-right:calc(var(--luic-spacing)*8)}.ui .luic\:pr-12{padding-right:calc(var(--luic-spacing)*12)}.ui .luic\:pr-20{padding-right:calc(var(--luic-spacing)*20)}.ui .luic\:pl-4{padding-left:calc(var(--luic-spacing)*4)}.ui .luic\:pl-8{padding-left:calc(var(--luic-spacing)*8)}.ui .luic\:pl-10{padding-left:calc(var(--luic-spacing)*10)}.ui .luic\:text-center{text-align:center}.ui .luic\:text-left{text-align:left}.ui .luic\:font-mono{font-family:var(--luic-font-mono)}.ui .luic\:font-sans{font-family:var(--luic-font-sans)}.ui .luic\:text-base{font-size:var(--luic-text-base);line-height:var(--tw-leading,var(--luic-text-base--line-height))}.ui .luic\:text-lg{font-size:var(--luic-text-lg);line-height:var(--tw-leading,var(--luic-text-lg--line-height))}.ui .luic\:text-sm{font-size:var(--luic-text-sm);line-height:var(--tw-leading,var(--luic-text-sm--line-height))}.ui .luic\:text-xl{font-size:var(--luic-text-xl);line-height:var(--tw-leading,var(--luic-text-xl--line-height))}.ui .luic\:text-xs{font-size:var(--luic-text-xs);line-height:var(--tw-leading,var(--luic-text-xs--line-height))}.ui .luic\:font-bold{--tw-font-weight:var(--luic-font-weight-bold);font-weight:var(--luic-font-weight-bold)}.ui .luic\:font-medium{--tw-font-weight:var(--luic-font-weight-medium);font-weight:var(--luic-font-weight-medium)}.ui .luic\:font-semibold{--tw-font-weight:var(--luic-font-weight-semibold);font-weight:var(--luic-font-weight-semibold)}.ui .luic\:text-blue-600{color:var(--luic-color-blue-600)}.ui .luic\:text-blue-800{color:var(--luic-color-blue-800)}.ui .luic\:text-gray-300{color:var(--luic-color-gray-300)}.ui .luic\:text-gray-400{color:var(--luic-color-gray-400)}.ui .luic\:text-gray-500{color:var(--luic-color-gray-500)}.ui .luic\:text-gray-600{color:var(--luic-color-gray-600)}.ui .luic\:text-gray-700{color:var(--luic-color-gray-700)}.ui .luic\:text-gray-900{color:var(--luic-color-gray-900)}.ui .luic\:text-green-500{color:var(--luic-color-green-500)}.ui .luic\:text-green-600{color:var(--luic-color-green-600)}.ui .luic\:text-green-800{color:var(--luic-color-green-800)}.ui .luic\:text-orange-500{color:var(--luic-color-orange-500)}.ui .luic\:text-purple-500{color:var(--luic-color-purple-500)}.ui .luic\:text-purple-700{color:var(--luic-color-purple-700)}.ui .luic\:text-red-500{color:var(--luic-color-red-500)}.ui .luic\:text-red-600{color:var(--luic-color-red-600)}.ui .luic\:text-red-700{color:var(--luic-color-red-700)}.ui .luic\:text-red-800{color:var(--luic-color-red-800)}.ui .luic\:text-white{color:var(--luic-color-white)}.ui .luic\:text-yellow-500{color:var(--luic-color-yellow-500)}.ui .luic\:text-yellow-600{color:var(--luic-color-yellow-600)}.ui .luic\:text-yellow-800{color:var(--luic-color-yellow-800)}.ui .luic\:accent-red-500{accent-color:var(--luic-color-red-500)}.ui .luic\:accent-yellow-500{accent-color:var(--luic-color-yellow-500)}.ui .luic\:opacity-50{opacity:.5}.ui .luic\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ui .luic\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--luic-default-transition-timing-function));transition-duration:var(--tw-duration,var(--luic-default-transition-duration))}.ui .luic\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--luic-default-transition-timing-function));transition-duration:var(--tw-duration,var(--luic-default-transition-duration))}.ui .luic\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--luic-default-transition-timing-function));transition-duration:var(--tw-duration,var(--luic-default-transition-duration))}.ui .luic\:duration-200{--tw-duration:.2s;transition-duration:.2s}.ui .luic\:outline-none{--tw-outline-style:none;outline-style:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common shared types used across components
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Base props shared by all form field components
|
|
6
|
+
*/
|
|
7
|
+
export interface BaseFormFieldProps {
|
|
8
|
+
/**
|
|
9
|
+
* Label text to display above the form field
|
|
10
|
+
*/
|
|
11
|
+
label?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Error message to display below the form field
|
|
14
|
+
* Takes precedence over helperText when present
|
|
15
|
+
*/
|
|
16
|
+
error?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Helper text to display below the form field
|
|
19
|
+
* Hidden when error is present
|
|
20
|
+
*/
|
|
21
|
+
helperText?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Whether the form field is disabled
|
|
24
|
+
*/
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the form field is required
|
|
28
|
+
* Note: This adds the HTML required attribute but doesn't add visual indicators
|
|
29
|
+
*/
|
|
30
|
+
required?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Size variant options for components
|
|
34
|
+
*/
|
|
35
|
+
export type SizeVariant = 'sm' | 'md' | 'lg';
|
|
36
|
+
/**
|
|
37
|
+
* Color variant options for components
|
|
38
|
+
*/
|
|
39
|
+
export type ColorVariant = 'default' | 'primary' | 'success' | 'error' | 'warning';
|
|
40
|
+
/**
|
|
41
|
+
* Utility type: require at least one of the specified keys
|
|
42
|
+
*/
|
|
43
|
+
export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
|
|
44
|
+
[K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
|
|
45
|
+
}[Keys];
|
|
46
|
+
/**
|
|
47
|
+
* Utility type: require only one of the specified keys
|
|
48
|
+
*/
|
|
49
|
+
export type RequireOnlyOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
|
|
50
|
+
[K in Keys]-?: Required<Pick<T, K>> & Partial<Record<Exclude<Keys, K>, undefined>>;
|
|
51
|
+
}[Keys];
|
|
52
|
+
/**
|
|
53
|
+
* Utility type: make specific keys optional
|
|
54
|
+
*/
|
|
55
|
+
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
56
|
+
/**
|
|
57
|
+
* Utility type: make specific keys required
|
|
58
|
+
*/
|
|
59
|
+
export type RequiredBy<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility function for conditional className merging
|
|
3
|
+
* Handles strings, objects, arrays, and filters out falsy values
|
|
4
|
+
*/
|
|
5
|
+
type ClassValue = string | number | boolean | undefined | null | ClassValue[] | Record<string, boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* Combines multiple class names into a single string
|
|
8
|
+
* @param classes - Variable number of class values
|
|
9
|
+
* @returns Combined class string with duplicates removed and trimmed
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* cn('foo', 'bar') // 'foo bar'
|
|
13
|
+
* cn('foo', { bar: true, baz: false }) // 'foo bar'
|
|
14
|
+
* cn('foo', undefined, null, 'bar') // 'foo bar'
|
|
15
|
+
* cn(['foo', 'bar'], 'baz') // 'foo bar baz'
|
|
16
|
+
*/
|
|
17
|
+
export declare function cn(...classes: ClassValue[]): string;
|
|
18
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@legalaidalberta/luic",
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"description": "This is the corporate React JS component library for Legal Aid Alberta. Although freely available the intended audience is only Legal Aid Alberta",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/luic.es.js",
|
|
11
|
+
"require": "./dist/luic.cjs.js"
|
|
12
|
+
},
|
|
13
|
+
"./styles.css": "./dist/styles.css",
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"CHANGELOG.md"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"changeset-create": "npx changeset",
|
|
22
|
+
"changeset-status": "npx changeset status",
|
|
23
|
+
"version-packages": "npx changeset version",
|
|
24
|
+
"dev": "vite",
|
|
25
|
+
"build": "tsc -b && vite build && pnpm build:css",
|
|
26
|
+
"build:css": "pnpm exec tailwindcss -m -i ./src/tailwind-entry.css -o ./dist/styles.css",
|
|
27
|
+
"lint": "eslint .",
|
|
28
|
+
"preview": "vite preview",
|
|
29
|
+
"test": "vitest run",
|
|
30
|
+
"test:ui": "vitest --ui",
|
|
31
|
+
"test:coverage": "vitest run --coverage",
|
|
32
|
+
"storybook": "concurrently \"pnpm storybook:css\" \"storybook dev -p 6006\"",
|
|
33
|
+
"storybook:css": "pnpm exec tailwindcss -w -i ./src/tailwind-entry.css -o ./src/index.css",
|
|
34
|
+
"build-storybook": "concurrently \"pnpm build-storybook:css\" \"storybook build\"",
|
|
35
|
+
"build-storybook:css": "pnpm exec tailwindcss -m -i ./src/tailwind-entry.css -o ./src/index.css",
|
|
36
|
+
"prepublishOnly": "pnpm build"
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"react": "^19.2.0",
|
|
40
|
+
"react-dom": "^19.2.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@changesets/cli": "^2.29.8",
|
|
44
|
+
"@chromatic-com/storybook": "^4.1.3",
|
|
45
|
+
"@eslint/js": "^9.39.1",
|
|
46
|
+
"@storybook/addon-a11y": "^10.1.6",
|
|
47
|
+
"@storybook/addon-docs": "^10.1.6",
|
|
48
|
+
"@storybook/addon-onboarding": "^10.1.6",
|
|
49
|
+
"@storybook/addon-vitest": "^10.1.6",
|
|
50
|
+
"@storybook/react-vite": "^10.1.6",
|
|
51
|
+
"@tailwindcss/cli": "^4.1.17",
|
|
52
|
+
"@testing-library/dom": "^10.4.1",
|
|
53
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
54
|
+
"@testing-library/react": "^16.3.0",
|
|
55
|
+
"@testing-library/user-event": "^14.6.1",
|
|
56
|
+
"@types/node": "^25.0.0",
|
|
57
|
+
"@types/react": "^19.2.7",
|
|
58
|
+
"@types/react-dom": "^19.2.3",
|
|
59
|
+
"@vitejs/plugin-react": "^5.1.2",
|
|
60
|
+
"@vitest/browser-playwright": "^4.0.15",
|
|
61
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
62
|
+
"concurrently": "^9.2.1",
|
|
63
|
+
"eslint": "^9.39.1",
|
|
64
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
65
|
+
"eslint-plugin-react-refresh": "^0.4.24",
|
|
66
|
+
"eslint-plugin-storybook": "^10.1.6",
|
|
67
|
+
"globals": "^16.5.0",
|
|
68
|
+
"playwright": "^1.57.0",
|
|
69
|
+
"storybook": "^10.1.6",
|
|
70
|
+
"tailwindcss": "^4.1.17",
|
|
71
|
+
"typescript": "~5.9.3",
|
|
72
|
+
"typescript-eslint": "^8.49.0",
|
|
73
|
+
"vite": "^7.2.7",
|
|
74
|
+
"vite-plugin-dts": "^4.5.4",
|
|
75
|
+
"vitest": "^4.0.15"
|
|
76
|
+
}
|
|
77
|
+
}
|