blunt-ui 0.3.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +117 -25
  2. package/dist/components/Badge/Badge.types.d.ts +4 -4
  3. package/dist/components/Badge/index.d.ts +1 -1
  4. package/dist/components/Badge/{Badge.stories.d.ts → stories/Badge.stories.d.ts} +1 -1
  5. package/dist/components/Button/Button.types.d.ts +4 -4
  6. package/dist/components/Button/index.d.ts +1 -1
  7. package/dist/components/Button/{Button.stories.d.ts → stories/Button.stories.d.ts} +1 -1
  8. package/dist/components/Checkbox/Checkbox.d.ts +5 -0
  9. package/dist/components/Checkbox/Checkbox.types.d.ts +11 -0
  10. package/dist/components/Checkbox/index.d.ts +2 -0
  11. package/dist/components/Checkbox/stories/Checkbox.stories.d.ts +11 -0
  12. package/dist/components/CollapsibleCard/{CollapsibleCard.stories.d.ts → stories/CollapsibleCard.stories.d.ts} +1 -1
  13. package/dist/components/ConfirmDialog/ConfirmDialog.hooks.d.ts +2 -0
  14. package/dist/components/ConfirmDialog/{useConfirm.d.ts → ConfirmDialog.provider.d.ts} +2 -2
  15. package/dist/components/ConfirmDialog/ConfirmDialog.types.d.ts +14 -2
  16. package/dist/components/ConfirmDialog/index.d.ts +4 -3
  17. package/dist/components/ConfirmDialog/{ConfirmDialog.stories.d.ts → stories/ConfirmDialog.stories.d.ts} +1 -1
  18. package/dist/components/DatePicker/DatePicker.d.ts +1 -1
  19. package/dist/components/DatePicker/DatePicker.types.d.ts +14 -6
  20. package/dist/components/DatePicker/index.d.ts +2 -1
  21. package/dist/components/DatePicker/{DatePicker.stories.d.ts → stories/DatePicker.stories.d.ts} +2 -1
  22. package/dist/components/Editable/{Editable.stories.d.ts → stories/Editable.stories.d.ts} +1 -1
  23. package/dist/components/Field/{Field.stories.d.ts → stories/Field.stories.d.ts} +1 -1
  24. package/dist/components/Form/{useForm.d.ts → Form.hooks.d.ts} +1 -1
  25. package/dist/components/Form/Form.types.d.ts +19 -7
  26. package/dist/components/Form/{FormField.d.ts → FormField/FormField.d.ts} +1 -1
  27. package/dist/components/Form/FormField/FormField.types.d.ts +8 -0
  28. package/dist/components/Form/FormField/index.d.ts +2 -0
  29. package/dist/components/Form/index.d.ts +4 -3
  30. package/dist/components/Form/{Form.stories.d.ts → stories/Form.stories.d.ts} +1 -1
  31. package/dist/components/Form/tests/Form.validators.test.d.ts +1 -0
  32. package/dist/components/Form/validators/Form.validators.d.ts +9 -0
  33. package/dist/components/Input/Input.types.d.ts +6 -6
  34. package/dist/components/Input/index.d.ts +1 -1
  35. package/dist/components/Input/{Input.stories.d.ts → stories/Input.stories.d.ts} +1 -1
  36. package/dist/components/Link/Link.types.d.ts +2 -2
  37. package/dist/components/Link/index.d.ts +2 -1
  38. package/dist/components/Link/{Link.stories.d.ts → stories/Link.stories.d.ts} +1 -1
  39. package/dist/components/Link/tests/Link.test.d.ts +0 -0
  40. package/dist/components/Modal/Modal.types.d.ts +2 -2
  41. package/dist/components/Modal/index.d.ts +1 -1
  42. package/dist/components/Modal/{Modal.stories.d.ts → stories/Modal.stories.d.ts} +1 -1
  43. package/dist/components/Modal/tests/Modal.test.d.ts +0 -0
  44. package/dist/components/Radio/Radio.d.ts +5 -0
  45. package/dist/components/Radio/Radio.types.d.ts +10 -0
  46. package/dist/components/Radio/index.d.ts +2 -0
  47. package/dist/components/Radio/stories/Radio.stories.d.ts +10 -0
  48. package/dist/components/Radio/tests/Radio.test.d.ts +0 -0
  49. package/dist/components/Select/Select.d.ts +1 -1
  50. package/dist/components/Select/Select.types.d.ts +15 -6
  51. package/dist/components/Select/index.d.ts +1 -1
  52. package/dist/components/Select/{Select.stories.d.ts → stories/Select.stories.d.ts} +1 -1
  53. package/dist/components/Select/tests/Select.test.d.ts +0 -0
  54. package/dist/components/Spinner/Spinner.types.d.ts +4 -4
  55. package/dist/components/Spinner/index.d.ts +1 -1
  56. package/dist/components/Spinner/{Spinner.stories.d.ts → stories/Spinner.stories.d.ts} +1 -1
  57. package/dist/components/Spinner/tests/Spinner.test.d.ts +0 -0
  58. package/dist/components/Switch/Switch.d.ts +5 -0
  59. package/dist/components/Switch/Switch.types.d.ts +8 -0
  60. package/dist/components/Switch/index.d.ts +2 -0
  61. package/dist/components/Switch/stories/Switch.stories.d.ts +9 -0
  62. package/dist/components/Switch/tests/Switch.test.d.ts +0 -0
  63. package/dist/components/Table/Table.consts.d.ts +3 -0
  64. package/dist/components/Table/Table.d.ts +1 -1
  65. package/dist/components/Table/Table.hooks.d.ts +29 -0
  66. package/dist/components/Table/Table.types.d.ts +15 -2
  67. package/dist/components/Table/index.d.ts +2 -3
  68. package/dist/components/Table/{Table.stories.d.ts → stories/Table.stories.d.ts} +2 -6
  69. package/dist/components/Table/tests/Table.test.d.ts +0 -0
  70. package/dist/components/Textarea/Textarea.types.d.ts +4 -4
  71. package/dist/components/Textarea/index.d.ts +1 -1
  72. package/dist/components/Textarea/{Textarea.stories.d.ts → stories/Textarea.stories.d.ts} +1 -1
  73. package/dist/components/Textarea/tests/Textarea.test.d.ts +0 -0
  74. package/dist/components/Toast/Toast.hooks.d.ts +2 -0
  75. package/dist/components/Toast/{useToast.d.ts → Toast.provider.d.ts} +2 -2
  76. package/dist/components/Toast/Toast.types.d.ts +18 -2
  77. package/dist/components/Toast/index.d.ts +4 -3
  78. package/dist/components/Toast/{Toast.stories.d.ts → stories/Toast.stories.d.ts} +1 -1
  79. package/dist/components/Toast/tests/Toast.provider.test.d.ts +0 -0
  80. package/dist/components/Toast/tests/Toast.test.d.ts +0 -0
  81. package/dist/index.cjs +543 -191
  82. package/dist/index.d.ts +19 -13
  83. package/dist/index.js +2009 -1082
  84. package/dist/themes/types.d.ts +9 -0
  85. package/package.json +2 -2
  86. package/dist/components/ConfirmDialog/useConfirm.types.d.ts +0 -14
  87. package/dist/components/Form/useForm.types.d.ts +0 -20
  88. package/dist/components/Table/useTable.d.ts +0 -12
  89. package/dist/components/Table/useTablePagination.d.ts +0 -16
  90. package/dist/components/Table/useTableSort.d.ts +0 -13
  91. package/dist/components/Toast/useToast.types.d.ts +0 -17
  92. /package/dist/components/{Button/Button.test.d.ts → Badge/tests/Badge.test.d.ts} +0 -0
  93. /package/dist/components/{CollapsibleCard/CollapsibleCard.test.d.ts → Button/tests/Button.test.d.ts} +0 -0
  94. /package/dist/components/{ConfirmDialog/ConfirmDialog.test.d.ts → Checkbox/tests/Checkbox.test.d.ts} +0 -0
  95. /package/dist/components/{ConfirmDialog/useConfirm.test.d.ts → CollapsibleCard/tests/CollapsibleCard.test.d.ts} +0 -0
  96. /package/dist/components/{DatePicker/DatePicker.test.d.ts → ConfirmDialog/tests/ConfirmDialog.provider.test.d.ts} +0 -0
  97. /package/dist/components/{Form/Form.test.d.ts → ConfirmDialog/tests/ConfirmDialog.test.d.ts} +0 -0
  98. /package/dist/components/{Input/Input.test.d.ts → DatePicker/tests/DatePicker.test.d.ts} +0 -0
  99. /package/dist/components/{Modal/Modal.test.d.ts → Editable/tests/Editable.test.d.ts} +0 -0
  100. /package/dist/components/{Select/Select.test.d.ts → Field/tests/Field.test.d.ts} +0 -0
  101. /package/dist/components/Form/{useForm.test.d.ts → tests/Form.hooks.test.d.ts} +0 -0
  102. /package/dist/components/{Toast/Toast.test.d.ts → Form/tests/Form.test.d.ts} +0 -0
  103. /package/dist/components/{Toast/useToast.test.d.ts → Input/tests/Input.test.d.ts} +0 -0
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),s=require("styled-components"),a=require("react"),bo=require("react-dom"),B=(o,r,n)=>s.css`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),s=require("styled-components"),a=require("react"),fo=require("react-dom"),no=(o,r,n)=>s.css`
2
2
  background: ${r};
3
3
  color: ${n};
4
4
  border: ${o.brutalism.borderWidth} solid ${o.colors.neutral[900]};
5
5
  box-shadow: 2px 2px 0 ${o.colors.neutral[900]};
6
- `,Oo=s.span`
6
+ `,fr=s.span`
7
7
  display: inline-flex;
8
8
  align-items: center;
9
- font-weight: 700;
9
+ font-weight: ${({theme:o})=>o.fontWeights.bold};
10
10
  letter-spacing: 0.04em;
11
11
  cursor: default;
12
12
  border-radius: ${({theme:o})=>o.radius.md};
@@ -16,14 +16,14 @@
16
16
  max-width: 20ch;
17
17
 
18
18
  ${({$size:o,theme:r})=>({sm:s.css`
19
- padding: 2px 8px;
19
+ padding: ${r.spacing[.5]} ${r.spacing[2]};
20
20
  font-size: ${r.fontSizes.xs};
21
21
  `,md:s.css`
22
- padding: 4px 10px;
22
+ padding: ${r.spacing[1]} ${r.spacing[3]};
23
23
  font-size: ${r.fontSizes.sm};
24
24
  `})[o]}
25
25
 
26
- ${({$variant:o,theme:r})=>r.brutalism?{primary:B(r,r.colors.primary[500],r.colors.primary.contrast),neutral:B(r,r.colors.neutral[200],r.colors.neutral[900]),success:B(r,r.colors.success[50],r.colors.success[500]),error:B(r,r.colors.error[50],r.colors.error[500]),warning:B(r,r.colors.warning[50],r.colors.warning[500]),info:B(r,r.colors.info[50],r.colors.info[500])}[o]:{primary:s.css`
26
+ ${({$variant:o,theme:r})=>r.brutalism?{primary:no(r,r.colors.primary[500],r.colors.primary.contrast),neutral:no(r,r.colors.neutral[200],r.colors.neutral[900]),success:no(r,r.colors.success[50],r.colors.success[500]),error:no(r,r.colors.error[50],r.colors.error[500]),warning:no(r,r.colors.warning[50],r.colors.warning[500]),info:no(r,r.colors.info[50],r.colors.info[500])}[o]:{primary:s.css`
27
27
  background: ${r.colors.primary[50]};
28
28
  color: ${r.colors.primary[500]};
29
29
  `,neutral:s.css`
@@ -42,7 +42,7 @@
42
42
  background: ${r.colors.info[50]};
43
43
  color: ${r.colors.info[500]};
44
44
  `}[o]}
45
- `;function go({variant:o="primary",size:r="md",children:n,...e}){return t.jsx(Oo,{$variant:o,$size:r,...e,children:n})}go.displayName="Badge";const J=(o,r,n)=>s.css`
45
+ `;function Lo({variant:o="primary",size:r="md",children:n,...e}){return t.jsx(fr,{$variant:o,$size:r,...e,children:n})}Lo.displayName="Badge";const $o=(o,r,n)=>s.css`
46
46
  background-color: ${r};
47
47
  color: ${n};
48
48
  border: ${o.brutalism.borderWidth} solid ${o.colors.neutral[900]};
@@ -55,12 +55,12 @@
55
55
  transform: translate(2px, 2px);
56
56
  box-shadow: 2px 2px 0 ${o.colors.neutral[900]};
57
57
  }
58
- `,No=s.button`
58
+ `,pr=s.button`
59
59
  display: inline-flex;
60
60
  align-items: center;
61
61
  justify-content: center;
62
62
  border-radius: ${({theme:o})=>o.radius.md};
63
- font-weight: 600;
63
+ font-weight: ${({theme:o})=>o.fontWeights.semibold};
64
64
  cursor: pointer;
65
65
  text-decoration: none;
66
66
 
@@ -74,7 +74,7 @@
74
74
  cursor: not-allowed;
75
75
  }
76
76
 
77
- ${({$variant:o,theme:r})=>r.brutalism?{primary:J(r,r.colors.primary[500],r.colors.primary.contrast),secondary:J(r,r.colors.neutral[100],r.colors.neutral[900]),outline:J(r,r.colors.neutral[0],r.colors.neutral[900])}[o]:{primary:s.css`
77
+ ${({$variant:o,theme:r})=>r.brutalism?{primary:$o(r,r.colors.primary[500],r.colors.primary.contrast),secondary:$o(r,r.colors.neutral[100],r.colors.neutral[900]),outline:$o(r,r.colors.neutral[0],r.colors.neutral[900])}[o]:{primary:s.css`
78
78
  background-color: ${r.colors.primary[500]};
79
79
  color: ${r.colors.neutral[0]};
80
80
  border: none;
@@ -107,18 +107,18 @@
107
107
  padding: ${r.spacing[3]} ${r.spacing[6]};
108
108
  font-size: ${r.fontSizes.lg};
109
109
  `})[o]}
110
- `;function H({ref:o,as:r,href:n,variant:e="primary",size:l="md",isLoading:i,disabled:c,children:d,...p}){const $=r??(n?"a":"button");return t.jsx(No,{ref:o,as:$,href:n,$variant:e,$size:l,disabled:i||c,...p,children:i?"Loading...":d})}H.displayName="Button";const Fo=s.div`
110
+ `;function co({ref:o,as:r,href:n,variant:e="primary",size:i="md",isLoading:l,disabled:d,children:f,...u}){const p=r??(n?"a":"button");return t.jsx(pr,{ref:o,as:p,href:n,$variant:e,$size:i,disabled:l||d,...u,children:l?"Loading...":f})}co.displayName="Button";const $r=s.div`
111
111
  display: flex;
112
112
  flex-direction: column;
113
113
  gap: ${({theme:o})=>o.spacing[1]};
114
114
  width: ${({$fullWidth:o})=>o?"100%":"auto"};
115
- `,Lo=s.label`
115
+ `,gr=s.label`
116
116
  font-size: ${({theme:o})=>o.fontSizes.sm};
117
- font-weight: ${({theme:o})=>o.brutalism?"700":"500"};
118
- `,Bo=s.span`
117
+ font-weight: ${({theme:o})=>o.brutalism?o.fontWeights.bold:o.fontWeights.medium};
118
+ `,br=s.span`
119
119
  font-size: ${({theme:o})=>o.fontSizes.xs};
120
120
  color: ${({$error:o,theme:r})=>o?r.colors.error[500]:r.colors.neutral[500]};
121
- `,Ro=s.div`
121
+ `,xr=s.div`
122
122
  display: flex;
123
123
  align-items: center;
124
124
  border-radius: ${({theme:o})=>o.radius.md};
@@ -160,7 +160,7 @@
160
160
  &:focus-within {
161
161
  box-shadow: ${({theme:o})=>o.shadows.focusRing};
162
162
  }
163
- `,Vo=s.input`
163
+ `,yr=s.input`
164
164
  flex: 1;
165
165
  border: none;
166
166
  outline: none;
@@ -171,11 +171,11 @@
171
171
  cursor: not-allowed;
172
172
  opacity: 0.6;
173
173
  }
174
- `,to=s.div`
174
+ `,zo=s.div`
175
175
  display: inline-flex;
176
176
  align-items: center;
177
177
  margin: 0 ${({theme:o})=>o.spacing[1]};
178
- `,_o=s.button`
178
+ `,hr=s.button`
179
179
  display: inline-flex;
180
180
  align-items: center;
181
181
  margin: 0 ${({theme:o})=>o.spacing[1]};
@@ -188,18 +188,18 @@
188
188
  &:hover {
189
189
  opacity: 0.8;
190
190
  }
191
- `;function xo({ref:o,type:r="text",size:n="md",variant:e="default",label:l,helperText:i,error:c,leftElement:d,rightElement:p,clearable:$,onClear:b,fullWidth:w,id:x,value:f,defaultValue:y,onChange:h,...j}){const I=a.useId(),v=x??I,g=`${v}-hint`,[k,z]=a.useState(y??""),S=f!==void 0,C=S?f:k,T=typeof c=="string"?c:void 0,D=!!(i||c),M=E=>{S||z(E.target.value),h?.(E)},R=()=>{S||z(""),b?.()};return t.jsxs(Fo,{$fullWidth:w,children:[l&&t.jsx(Lo,{htmlFor:v,children:l}),t.jsxs(Ro,{$size:n,$variant:e,$error:!!c,children:[d&&t.jsx(to,{children:d}),t.jsx(Vo,{id:v,ref:o,type:r,value:C,onChange:M,...j,"aria-invalid":!!c,"aria-describedby":D?g:void 0}),$&&C&&t.jsx(_o,{type:"button",onClick:R,"aria-label":"Clear input",children:"✕"}),p&&t.jsx(to,{children:p})]}),D&&t.jsx(Bo,{id:g,$error:!!c,children:T??i})]})}xo.displayName="Input";const Ao=s.div`
191
+ `;function No({ref:o,type:r="text",size:n="md",variant:e="default",label:i,helperText:l,error:d,leftElement:f,rightElement:u,clearable:p,onClear:g,fullWidth:w,id:v,value:y,defaultValue:k,onChange:j,...W}){const O=a.useId(),E=v??O,x=`${E}-hint`,[z,m]=a.useState(k??""),b=y!==void 0,S=b?y:z,I=typeof d=="string"?d:void 0,C=!!(l||d),M=F=>{b||m(F.target.value),j?.(F)},L=()=>{b||m(""),g?.()};return t.jsxs($r,{$fullWidth:w,children:[i&&t.jsx(gr,{htmlFor:E,children:i}),t.jsxs(xr,{$size:n,$variant:e,$error:!!d,children:[f&&t.jsx(zo,{children:f}),t.jsx(yr,{id:E,ref:o,type:r,value:S,onChange:M,...W,"aria-invalid":!!d,"aria-describedby":C?x:void 0}),p&&S&&t.jsx(hr,{type:"button",onClick:L,"aria-label":"Clear input",children:"✕"}),u&&t.jsx(zo,{children:u})]}),C&&t.jsx(br,{id:x,$error:!!d,children:I??l})]})}No.displayName="Input";const mr=s.div`
192
192
  display: flex;
193
193
  flex-direction: column;
194
194
  gap: ${({theme:o})=>o.spacing[1]};
195
195
  width: ${({$fullWidth:o})=>o?"100%":"auto"};
196
- `,Yo=s.label`
196
+ `,wr=s.label`
197
197
  font-size: ${({theme:o})=>o.fontSizes.sm};
198
- font-weight: ${({theme:o})=>o.brutalism?"700":"500"};
199
- `,Ho=s.span`
198
+ font-weight: ${({theme:o})=>o.brutalism?o.fontWeights.bold:o.fontWeights.medium};
199
+ `,vr=s.span`
200
200
  font-size: ${({theme:o})=>o.fontSizes.xs};
201
201
  color: ${({$error:o,theme:r})=>o?r.colors.error[500]:r.colors.neutral[500]};
202
- `,qo=s.div`
202
+ `,kr=s.div`
203
203
  display: flex;
204
204
  border-radius: ${({theme:o})=>o.radius.md};
205
205
  transition:
@@ -240,7 +240,7 @@
240
240
  &:focus-within {
241
241
  box-shadow: ${({theme:o})=>o.shadows.focusRing};
242
242
  }
243
- `,Uo=s.textarea`
243
+ `,Sr=s.textarea`
244
244
  flex: 1;
245
245
  border: none;
246
246
  outline: none;
@@ -253,25 +253,32 @@
253
253
  cursor: not-allowed;
254
254
  opacity: 0.6;
255
255
  }
256
- `;function yo({ref:o,size:r="md",variant:n="default",label:e,helperText:l,error:i,fullWidth:c,id:d,value:p,defaultValue:$,onChange:b,...w}){const x=a.useId(),f=d??x,y=`${f}-hint`,[h,j]=a.useState($??""),I=p!==void 0,v=I?p:h,g=typeof i=="string"?i:void 0,k=!!(l||i),z=S=>{I||j(S.target.value),b?.(S)};return t.jsxs(Ao,{$fullWidth:c,children:[e&&t.jsx(Yo,{htmlFor:f,children:e}),t.jsx(qo,{$size:r,$variant:n,$error:!!i,children:t.jsx(Uo,{id:f,ref:o,value:v,onChange:z,...w,"aria-invalid":!!i,"aria-describedby":k?y:void 0})}),k&&t.jsx(Ho,{id:y,$error:!!i,children:g??l})]})}yo.displayName="Textarea";const ho=(...o)=>o.filter((r,n,e)=>!!r&&r.trim()!==""&&e.indexOf(r)===n).join(" ").trim();const Ko=o=>o.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const Go=o=>o.replace(/^([A-Z])|[\s-_]+(\w)/g,(r,n,e)=>e?e.toUpperCase():n.toLowerCase());const eo=o=>{const r=Go(o);return r.charAt(0).toUpperCase()+r.slice(1)};var X={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const Jo=o=>{for(const r in o)if(r.startsWith("aria-")||r==="role"||r==="title")return!0;return!1},Xo=a.createContext({}),Zo=()=>a.useContext(Xo),Qo=a.forwardRef(({color:o,size:r,strokeWidth:n,absoluteStrokeWidth:e,className:l="",children:i,iconNode:c,...d},p)=>{const{size:$=24,strokeWidth:b=2,absoluteStrokeWidth:w=!1,color:x="currentColor",className:f=""}=Zo()??{},y=e??w?Number(n??b)*24/Number(r??$):n??b;return a.createElement("svg",{ref:p,...X,width:r??$??X.width,height:r??$??X.height,stroke:o??x,strokeWidth:y,className:ho("lucide",f,l),...!i&&!Jo(d)&&{"aria-hidden":"true"},...d},[...c.map(([h,j])=>a.createElement(h,j)),...Array.isArray(i)?i:[i]])});const N=(o,r)=>{const n=a.forwardRef(({className:e,...l},i)=>a.createElement(Qo,{ref:i,iconNode:r,className:ho(`lucide-${Ko(eo(o))}`,`lucide-${o}`,e),...l}));return n.displayName=eo(o),n};const or=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],rr=N("arrow-down",or);const sr=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],nr=N("arrow-up-down",sr);const tr=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],er=N("arrow-up",tr);const ir=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],ar=N("calendar",ir);const lr=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],wo=N("chevron-down",lr);const cr=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],dr=N("chevron-left",cr);const ur=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],pr=N("chevron-right",ur);const fr=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Q=N("x",fr),$r=s.div`
256
+ `;function Fo({ref:o,size:r="md",variant:n="default",label:e,helperText:i,error:l,fullWidth:d,id:f,value:u,defaultValue:p,onChange:g,...w}){const v=a.useId(),y=f??v,k=`${y}-hint`,[j,W]=a.useState(p??""),O=u!==void 0,E=O?u:j,x=typeof l=="string"?l:void 0,z=!!(i||l),m=b=>{O||W(b.target.value),g?.(b)};return t.jsxs(mr,{$fullWidth:d,children:[e&&t.jsx(wr,{htmlFor:y,children:e}),t.jsx(kr,{$size:r,$variant:n,$error:!!l,children:t.jsx(Sr,{id:y,ref:o,value:E,onChange:m,...w,"aria-invalid":!!l,"aria-describedby":z?k:void 0})}),z&&t.jsx(vr,{id:k,$error:!!l,children:x??i})]})}Fo.displayName="Textarea";const Bo=(...o)=>o.filter((r,n,e)=>!!r&&r.trim()!==""&&e.indexOf(r)===n).join(" ").trim();const jr=o=>o.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();const zr=o=>o.replace(/^([A-Z])|[\s-_]+(\w)/g,(r,n,e)=>e?e.toUpperCase():n.toLowerCase());const Co=o=>{const r=zr(o);return r.charAt(0).toUpperCase()+r.slice(1)};var go={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const Cr=o=>{for(const r in o)if(r.startsWith("aria-")||r==="role"||r==="title")return!0;return!1},Ir=a.createContext({}),Tr=()=>a.useContext(Ir),Dr=a.forwardRef(({color:o,size:r,strokeWidth:n,absoluteStrokeWidth:e,className:i="",children:l,iconNode:d,...f},u)=>{const{size:p=24,strokeWidth:g=2,absoluteStrokeWidth:w=!1,color:v="currentColor",className:y=""}=Tr()??{},k=e??w?Number(n??g)*24/Number(r??p):n??g;return a.createElement("svg",{ref:u,...go,width:r??p??go.width,height:r??p??go.height,stroke:o??v,strokeWidth:k,className:Bo("lucide",y,i),...!l&&!Cr(f)&&{"aria-hidden":"true"},...f},[...d.map(([j,W])=>a.createElement(j,W)),...Array.isArray(l)?l:[l]])});const G=(o,r)=>{const n=a.forwardRef(({className:e,...i},l)=>a.createElement(Dr,{ref:l,iconNode:r,className:Bo(`lucide-${jr(Co(o))}`,`lucide-${o}`,e),...i}));return n.displayName=Co(o),n};const Wr=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],Er=G("arrow-down",Wr);const Mr=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],Or=G("arrow-up-down",Mr);const Rr=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],Pr=G("arrow-up",Rr);const Lr=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],Nr=G("calendar",Lr);const Fr=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],Vo=G("chevron-down",Fr);const Br=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],Vr=G("chevron-left",Br);const Ar=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],_r=G("chevron-right",Ar);const Hr=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],po=G("x",Hr),Yr=s.div`
257
257
  display: inline-flex;
258
258
  flex-direction: column;
259
259
  gap: ${({theme:o})=>o.spacing[1]};
260
260
  width: ${({$fullWidth:o})=>o?"100%":"auto"};
261
- `,br=s.div`
262
261
  position: relative;
262
+ min-width: 0;
263
+ `,Ur=s.div`
264
+ height: 0;
265
+ overflow: hidden;
266
+ visibility: hidden;
267
+ pointer-events: none;
263
268
  display: flex;
264
- width: 100%;
265
- `,gr=s.span`
266
- font-size: ${({theme:o})=>o.fontSizes.xs};
267
- color: ${({$error:o,theme:r})=>o?r.colors.error[500]:r.colors.neutral[500]};
268
- `,xr=s.select`
269
+ flex-direction: column;
270
+ `,qr=s.button`
269
271
  appearance: none;
270
272
  width: 100%;
271
273
  border-radius: ${({theme:o})=>o.radius.md};
272
- cursor: pointer;
274
+ cursor: ${({$disabled:o})=>o?"not-allowed":"pointer"};
273
275
  font: inherit;
274
276
  color: ${({theme:o})=>o.colors.neutral[900]};
277
+ display: flex;
278
+ align-items: center;
279
+ gap: ${({theme:o})=>o.spacing[2]};
280
+ text-align: left;
281
+ background: none;
275
282
  transition:
276
283
  border-color 0.2s,
277
284
  box-shadow 0.2s;
@@ -287,8 +294,6 @@
287
294
  font-size: ${r.fontSizes.lg};
288
295
  `})[o]}
289
296
 
290
- padding-right: 2.5rem;
291
-
292
297
  ${({$variant:o,theme:r})=>r.brutalism?s.css`
293
298
  border: ${r.brutalism.borderWidth} solid
294
299
  ${r.colors.neutral[900]};
@@ -306,22 +311,106 @@
306
311
  border-color: ${r.colors.error[500]};
307
312
  `}
308
313
 
309
- &:focus {
314
+ ${({$disabled:o})=>o&&s.css`
315
+ opacity: 0.6;
316
+ `}
317
+
318
+ &:focus-visible {
310
319
  outline: none;
311
320
  box-shadow: ${({theme:o})=>o.shadows.focusRing};
312
321
  }
322
+ `,bo=s.span`
323
+ flex: 1;
324
+ overflow: hidden;
325
+ white-space: nowrap;
326
+ text-overflow: ellipsis;
327
+ color: ${({$placeholder:o,theme:r})=>o?r.colors.neutral[400]:r.colors.neutral[900]};
328
+ `,Kr=s.span`
329
+ display: flex;
330
+ align-items: center;
331
+ gap: ${({theme:o})=>o.spacing[1]};
332
+ flex-shrink: 0;
333
+ color: ${({theme:o})=>o.colors.neutral[500]};
334
+ `,Gr=s.span`
335
+ display: inline-flex;
336
+ align-items: center;
337
+ transition: transform 0.15s;
338
+ transform: ${({$open:o})=>o?"rotate(180deg)":"rotate(0deg)"};
339
+ `,Xr=s.ul`
340
+ z-index: ${({theme:o})=>o.zIndex.modal};
341
+ margin: 0;
342
+ padding: ${({theme:o})=>o.spacing[1]} 0;
343
+ list-style: none;
344
+ background-color: ${({theme:o})=>o.colors.neutral[0]};
345
+ border-radius: ${({theme:o})=>o.radius.md};
346
+ max-height: 240px;
347
+ overflow-y: auto;
313
348
 
314
- &:disabled {
315
- cursor: not-allowed;
316
- opacity: 0.6;
349
+ ${({theme:o})=>o.brutalism?s.css`
350
+ border: ${o.brutalism.borderWidth} solid
351
+ ${o.colors.neutral[900]};
352
+ box-shadow: ${o.brutalism.shadowOffset}
353
+ ${o.brutalism.shadowOffset} 0 ${o.colors.neutral[900]};
354
+ `:s.css`
355
+ border: 1px solid ${o.colors.neutral[300]};
356
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
357
+ `}
358
+ `,Jr=s.div`
359
+ padding: ${({theme:o})=>o.spacing[2]};
360
+ border-bottom: 1px solid ${({theme:o})=>o.colors.neutral[200]};
361
+ `,Qr=s.input`
362
+ width: 100%;
363
+ border: 1px solid ${({theme:o})=>o.colors.neutral[300]};
364
+ border-radius: ${({theme:o})=>o.radius.md};
365
+ padding: ${({theme:o})=>`${o.spacing[1]} ${o.spacing[2]}`};
366
+ font: inherit;
367
+ font-size: ${({theme:o})=>o.fontSizes.sm};
368
+ color: ${({theme:o})=>o.colors.neutral[900]};
369
+ background: ${({theme:o})=>o.colors.neutral[0]};
370
+ outline: none;
371
+
372
+ &:focus {
373
+ border-color: ${({theme:o})=>o.colors.primary[500]};
374
+ box-shadow: ${({theme:o})=>o.shadows.focusRing};
317
375
  }
318
- `,yr=s.button`
319
- position: absolute;
320
- right: ${({theme:o})=>o.spacing[3]};
321
- top: 50%;
322
- transform: translateY(-50%);
376
+
377
+ ${({theme:o})=>o.brutalism&&s.css`
378
+ border: ${o.brutalism.borderWidth} solid ${o.colors.neutral[900]};
379
+ &:focus {
380
+ box-shadow: ${o.shadows.focusRing};
381
+ }
382
+ `}
383
+ `,Zr=s.li`
384
+ padding: ${({theme:o})=>`${o.spacing[2]} ${o.spacing[3]}`};
385
+ font-size: ${({theme:o})=>o.fontSizes.sm};
386
+ color: ${({theme:o})=>o.colors.neutral[400]};
387
+ list-style: none;
388
+ `,os=s.li`
323
389
  display: flex;
324
390
  align-items: center;
391
+ padding: ${({theme:o})=>`${o.spacing[2]} ${o.spacing[3]}`};
392
+ font-size: ${({theme:o})=>o.fontSizes.md};
393
+ cursor: ${({$disabled:o})=>o?"not-allowed":"pointer"};
394
+ color: ${({$disabled:o,theme:r})=>o?r.colors.neutral[400]:r.colors.neutral[900]};
395
+
396
+ background-color: ${({$selected:o,$focused:r,theme:n})=>o?n.colors.primary[50]:r?n.colors.neutral[100]:"transparent"};
397
+
398
+ font-weight: ${({$selected:o,theme:r})=>o?r.fontWeights.semibold:r.fontWeights.normal};
399
+
400
+ ${({$selected:o,theme:r})=>o&&s.css`
401
+ border-left: ${r.spacing[1]} solid ${r.colors.primary[500]};
402
+ padding-left: ${r.spacing[2]};
403
+ `}
404
+
405
+ &:hover {
406
+ background-color: ${({$disabled:o,$selected:r,theme:n})=>o?"transparent":r?n.colors.primary[50]:n.colors.neutral[100]};
407
+ }
408
+ `,rs=s.span`
409
+ font-size: ${({theme:o})=>o.fontSizes.xs};
410
+ color: ${({$error:o,theme:r})=>o?r.colors.error[500]:r.colors.neutral[500]};
411
+ `,ss=s.button`
412
+ display: inline-flex;
413
+ align-items: center;
325
414
  padding: 0;
326
415
  background: none;
327
416
  border: none;
@@ -337,18 +426,9 @@
337
426
  outline-offset: 2px;
338
427
  border-radius: 2px;
339
428
  }
340
- `,hr=s.span`
341
- position: absolute;
342
- right: ${({theme:o})=>o.spacing[3]};
343
- top: 50%;
344
- transform: translateY(-50%);
345
- pointer-events: none;
346
- display: flex;
347
- align-items: center;
348
- color: ${({theme:o})=>o.colors.neutral[500]};
349
- `;function mo({options:o,placeholder:r,size:n="md",variant:e="default",error:l,fullWidth:i,clearable:c,onClear:d,id:p,value:$,defaultValue:b,onChange:w,...x}){const f=a.useId(),y=p??f,h=`${y}-hint`,j=typeof l=="string"?l:void 0,[I,v]=a.useState(b??""),g=$!==void 0,k=g?$:I,z=T=>{g||v(T.target.value),w?.(T)},S=()=>{g||v(""),d?.()},C=c&&!!k;return t.jsxs($r,{$fullWidth:i,children:[t.jsxs(br,{children:[t.jsxs(xr,{id:y,$size:n,$variant:e,$error:!!l,"aria-invalid":!!l,"aria-describedby":j?h:void 0,value:k,onChange:z,...x,children:[r&&t.jsx("option",{value:"",disabled:!0,children:r}),o.map(T=>t.jsx("option",{value:T.value,disabled:T.disabled,children:T.label},T.value))]}),C?t.jsx(yr,{type:"button",onClick:S,"aria-label":"Clear selection",children:t.jsx(Q,{size:14})}):t.jsx(hr,{"aria-hidden":"true",children:t.jsx(wo,{size:14})})]}),j&&t.jsx(gr,{id:h,$error:!0,children:j})]})}mo.displayName="Select";const io=s.span`
429
+ `;function Ao({options:o,placeholder:r,size:n="md",variant:e="default",error:i,fullWidth:l,clearable:d,onClear:f,id:u,name:p,value:g,defaultValue:w,onChange:v,disabled:y,searchable:k,"aria-label":j,"aria-describedby":W}){const O=a.useId(),E=u??O,x=`${E}-list`,z=`${E}-search`,m=typeof i=="string"?i:void 0,[b,S]=a.useState(!1),[I,C]=a.useState(-1),[M,L]=a.useState(""),[F,P]=a.useState({top:0,left:0,width:0}),[A,oo]=a.useState(w??""),D=g!==void 0,V=D?g:A,ro=a.useRef(null),_=a.useRef(null),X=a.useRef(null),U=a.useRef(null),so=o.find(c=>c.value===V),B=k&&M?o.filter(c=>c.label.toLowerCase().includes(M.toLowerCase())):o,H=a.useCallback(()=>{if(!_.current)return;const c=_.current.getBoundingClientRect();P({top:c.bottom+4,left:c.left,width:c.width})},[]);a.useEffect(()=>{if(b)return H(),window.addEventListener("scroll",H,!0),window.addEventListener("resize",H),()=>{window.removeEventListener("scroll",H,!0),window.removeEventListener("resize",H)}},[b,H]),a.useEffect(()=>{if(!b)return;const c=T=>{const Y=ro.current?.contains(T.target),io=X.current?.contains(T.target);!Y&&!io&&S(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[b]),a.useEffect(()=>{b&&k&&setTimeout(()=>U.current?.focus(),0),b||(L(""),C(-1))},[b,k]),a.useEffect(()=>{C(-1)},[M]),a.useEffect(()=>{if(I<0)return;const c=document.getElementById(`${x}-option-${I}`);c&&typeof c.scrollIntoView=="function"&&c.scrollIntoView({block:"nearest"})},[I,x]);function q(c,T){let Y=c+T;for(;Y>=0&&Y<B.length;){if(!B[Y].disabled)return Y;Y+=T}return c}function K(){return B.findIndex(c=>!c.disabled)}function J(){for(let c=B.length-1;c>=0;c--)if(!B[c].disabled)return c;return-1}function Q(c){if(c.disabled)return;D||oo(c.value);const T={target:{name:p??"",value:c.value},currentTarget:{name:p??"",value:c.value}};v?.(T),S(!1),_.current?.focus()}function h(c){c.stopPropagation(),D||oo(""),v?.({target:{name:p??"",value:""},currentTarget:{name:p??"",value:""}}),f?.(),_.current?.focus()}function N(c){if(!y){if(!b){["ArrowDown","ArrowUp","Enter"," "].includes(c.key)&&(c.preventDefault(),S(!0),k||C(K()));return}if(c.key==="Escape"){c.preventDefault(),S(!1);return}if(!k){if(c.key==="ArrowDown"){c.preventDefault(),C(T=>q(T,1));return}if(c.key==="ArrowUp"){c.preventDefault(),C(T=>q(T,-1));return}if(c.key==="Home"){c.preventDefault(),C(K());return}if(c.key==="End"){c.preventDefault(),C(J());return}(c.key==="Enter"||c.key===" ")&&I>=0&&(c.preventDefault(),Q(B[I]))}}}function Z(c){if(c.key==="Escape"){S(!1),_.current?.focus();return}if(c.key==="ArrowDown"){c.preventDefault(),C(T=>T<0?K():q(T,1));return}if(c.key==="ArrowUp"){c.preventDefault(),C(T=>T<0?J():q(T,-1));return}c.key==="Enter"&&I>=0&&(c.preventDefault(),Q(B[I]))}const $=d&&!!V&&!y,R=I>=0?`${x}-option-${I}`:void 0;return t.jsxs(Yr,{ref:ro,$fullWidth:l,children:[t.jsxs(Ur,{"aria-hidden":"true",children:[r&&t.jsx(bo,{children:r}),o.map(c=>t.jsx(bo,{children:c.label},c.value))]}),t.jsxs(qr,{ref:_,id:E,type:"button",role:"combobox","aria-expanded":b,"aria-haspopup":"listbox","aria-controls":b?x:void 0,"aria-activedescendant":b&&!k?R:void 0,"aria-invalid":!!i,"aria-label":j,"aria-describedby":W,$size:n,$variant:e,$error:!!i,$disabled:y,$open:b,disabled:y,onClick:()=>!y&&S(c=>!c),onKeyDown:N,children:[t.jsx(bo,{$placeholder:!so,children:so?.label??r??"Select..."}),t.jsxs(Kr,{children:[$&&t.jsx(ss,{type:"button",onClick:h,"aria-label":"Clear selection",children:t.jsx(po,{size:14})}),t.jsx(Gr,{$open:b,"aria-hidden":"true",children:t.jsx(Vo,{size:14})})]})]}),b&&fo.createPortal(t.jsxs(Xr,{ref:X,id:x,role:"listbox","aria-label":r??"Options",style:{position:"fixed",top:F.top,left:F.left,width:F.width},children:[k&&t.jsx(Jr,{children:t.jsx(Qr,{ref:U,id:z,type:"text",placeholder:"Search...",value:M,onChange:c=>L(c.target.value),onKeyDown:Z,"aria-label":"Search options","aria-controls":x,"aria-activedescendant":R})}),B.length===0&&t.jsx(Zr,{children:"No options found"}),B.map((c,T)=>t.jsx(os,{id:`${x}-option-${T}`,role:"option","aria-selected":c.value===V,"aria-disabled":c.disabled,$selected:c.value===V,$focused:T===I,$disabled:c.disabled,onClick:()=>Q(c),onMouseEnter:()=>!c.disabled&&C(T),children:c.label},c.value))]}),document.body),m&&t.jsx(rs,{$error:!0,children:m})]})}Ao.displayName="Select";const Io=s.span`
350
430
  display: inline-block;
351
- `,wr=s.span`
431
+ `,ns=s.span`
352
432
  display: inline-block;
353
433
  min-width: 60px;
354
434
  padding: ${({theme:o})=>`${o.spacing[1]} ${o.spacing[2]}`};
@@ -386,7 +466,7 @@
386
466
  box-shadow: ${r.shadows.focusRing};
387
467
  }
388
468
  `}
389
- `,mr=s.input`
469
+ `,ts=s.input`
390
470
  display: inline-block;
391
471
  min-width: 60px;
392
472
  padding: ${({theme:o})=>`${o.spacing[1]} ${o.spacing[2]}`};
@@ -405,7 +485,7 @@
405
485
  border: 1px solid ${o.colors.primary[500]};
406
486
  box-shadow: ${o.shadows.focusRing};
407
487
  `}
408
- `;function vo({value:o,defaultValue:r="",onChange:n,onSubmit:e,onCancel:l,placeholder:i="Click to edit",disabled:c=!1}){const d=o!==void 0,[p,$]=a.useState(r),b=d?o:p,[w,x]=a.useState(!1),[f,y]=a.useState(""),h=a.useRef(null),j=()=>{c||(y(b),x(!0),setTimeout(()=>{h.current?.focus(),h.current?.select()},0))},I=()=>{d||$(f),n?.(f),e?.(f),x(!1)},v=()=>{l?.(b),x(!1)},g=k=>{k.key==="Enter"?I():k.key==="Escape"&&v()};return w?t.jsx(io,{children:t.jsx(mr,{ref:h,value:f,size:Math.max(f.length,i.length,10),onChange:k=>y(k.target.value),onBlur:I,onKeyDown:g,"aria-label":"Edit value"})}):t.jsx(io,{children:t.jsx(wr,{role:c?void 0:"button",tabIndex:c?void 0:0,$disabled:c,$empty:!b,onClick:j,onKeyDown:k=>k.key==="Enter"&&j(),children:b||i})})}vo.displayName="Editable";const vr=s.a`
488
+ `;function _o({value:o,defaultValue:r="",onChange:n,onSubmit:e,onCancel:i,placeholder:l="Click to edit",disabled:d=!1}){const f=o!==void 0,[u,p]=a.useState(r),g=f?o:u,[w,v]=a.useState(!1),[y,k]=a.useState(""),j=a.useRef(null),W=()=>{d||(k(g),v(!0),setTimeout(()=>{j.current?.focus(),j.current?.select()},0))},O=()=>{f||p(y),n?.(y),e?.(y),v(!1)},E=()=>{i?.(g),v(!1)},x=z=>{z.key==="Enter"?O():z.key==="Escape"&&E()};return w?t.jsx(Io,{children:t.jsx(ts,{ref:j,value:y,size:Math.max(y.length,l.length,10),onChange:z=>k(z.target.value),onBlur:O,onKeyDown:x,"aria-label":"Edit value"})}):t.jsx(Io,{children:t.jsx(ns,{role:d?void 0:"button",tabIndex:d?void 0:0,$disabled:d,$empty:!g,onClick:W,onKeyDown:z=>z.key==="Enter"&&W(),children:g||l})})}_o.displayName="Editable";const es=s.a`
409
489
  text-decoration: underline;
410
490
  text-underline-offset: 2px;
411
491
  transition: color 0.15s;
@@ -427,30 +507,30 @@
427
507
  color: ${r.colors.neutral[900]};
428
508
  }
429
509
  `})[o]}
430
- `;function oo({variant:o="default",external:r,children:n,...e}){return t.jsx(vr,{$variant:o,...r&&{target:"_blank",rel:"noreferrer"},...e,children:n})}oo.displayName="Link";const kr=s.div`
510
+ `;function mo({variant:o="default",external:r,children:n,...e}){return t.jsx(es,{$variant:o,...r&&{target:"_blank",rel:"noreferrer"},...e,children:n})}mo.displayName="Link";const is=s.div`
431
511
  display: flex;
432
512
  flex-direction: column;
433
513
  gap: ${({theme:o})=>o.spacing[1]};
434
- `,Sr=s.span`
514
+ `,as=s.span`
435
515
  font-size: ${({theme:o})=>o.fontSizes.xs};
436
516
  color: ${({theme:o})=>o.colors.neutral[500]};
437
- font-weight: ${({theme:o})=>o.brutalism?"700":"500"};
438
- `,jr=s.span`
517
+ font-weight: ${({theme:o})=>o.brutalism?o.fontWeights.bold:o.fontWeights.medium};
518
+ `,ls=s.span`
439
519
  font-size: ${({theme:o})=>o.fontSizes.md};
440
520
  color: ${({theme:o})=>o.colors.neutral[900]};
441
- `;function ko({label:o,value:r,href:n}){return t.jsxs(kr,{children:[t.jsx(Sr,{children:o}),n?t.jsx(oo,{href:n,external:!0,children:r}):t.jsx(jr,{children:r??"—"})]})}ko.displayName="Field";const Cr=s.keyframes`
521
+ `;function Ho({label:o,value:r,href:n}){return t.jsxs(is,{children:[t.jsx(as,{children:o}),n?t.jsx(mo,{href:n,external:!0,children:r}):t.jsx(ls,{children:r??"—"})]})}Ho.displayName="Field";const cs=s.keyframes`
442
522
  from { opacity: 0; }
443
523
  to { opacity: 1; }
444
- `,zr=s.keyframes`
524
+ `,ds=s.keyframes`
445
525
  from { opacity: 1; }
446
526
  to { opacity: 0; }
447
- `,Tr=s.keyframes`
527
+ `,us=s.keyframes`
448
528
  from { opacity: 0; transform: scale(0.95) translateY(-8px); }
449
529
  to { opacity: 1; transform: scale(1) translateY(0); }
450
- `,Ir=s.keyframes`
530
+ `,fs=s.keyframes`
451
531
  from { opacity: 1; transform: scale(1) translateY(0); }
452
532
  to { opacity: 0; transform: scale(0.95) translateY(-8px); }
453
- `,Mr=s.div`
533
+ `,ps=s.div`
454
534
  position: fixed;
455
535
  inset: 0;
456
536
  background-color: rgba(0, 0, 0, 0.5);
@@ -458,9 +538,9 @@
458
538
  align-items: center;
459
539
  justify-content: center;
460
540
  z-index: ${({theme:o})=>o.zIndex.modal};
461
- animation: ${({$closing:o})=>o?zr:Cr} 0.15s ease
541
+ animation: ${({$closing:o})=>o?ds:cs} 0.15s ease
462
542
  forwards;
463
- `,Dr=s.div`
543
+ `,$s=s.div`
464
544
  position: relative;
465
545
  background: ${({theme:o})=>o.colors.neutral[0]};
466
546
  border-radius: ${({theme:o})=>o.radius.md};
@@ -469,7 +549,7 @@
469
549
  display: flex;
470
550
  flex-direction: column;
471
551
  max-height: 90vh;
472
- animation: ${({$closing:o})=>o?Ir:Tr} 0.15s ease
552
+ animation: ${({$closing:o})=>o?fs:us} 0.15s ease
473
553
  forwards;
474
554
 
475
555
  ${({$size:o})=>o==="sm"&&s.css`
@@ -487,19 +567,19 @@
487
567
  max-height: 100vh;
488
568
  border-radius: 0;
489
569
  `}
490
- `,Er=s.div`
570
+ `,gs=s.div`
491
571
  display: flex;
492
572
  align-items: center;
493
573
  gap: ${({theme:o})=>o.spacing[2]};
494
574
  padding: ${({theme:o})=>o.spacing[4]};
495
575
  border-bottom: 1px solid ${({theme:o})=>o.colors.neutral[200]};
496
576
  flex-shrink: 0;
497
- `,Pr=s.h2`
577
+ `,bs=s.h2`
498
578
  flex: 1;
499
579
  font-size: ${({theme:o})=>o.fontSizes.lg};
500
- font-weight: 600;
580
+ font-weight: ${({theme:o})=>o.fontWeights.semibold};
501
581
  margin: 0;
502
- `,Wr=s.button`
582
+ `,xs=s.button`
503
583
  display: inline-flex;
504
584
  align-items: center;
505
585
  justify-content: center;
@@ -524,11 +604,11 @@
524
604
  outline: 2px solid ${({theme:o})=>o.colors.primary[500]};
525
605
  outline-offset: 2px;
526
606
  }
527
- `,Or=s.div`
607
+ `,ys=s.div`
528
608
  padding: ${({theme:o})=>o.spacing[4]};
529
609
  overflow-y: auto;
530
610
  flex: 1;
531
- `,Nr=s.div`
611
+ `,hs=s.div`
532
612
  display: flex;
533
613
  align-items: center;
534
614
  justify-content: flex-end;
@@ -536,18 +616,37 @@
536
616
  padding: ${({theme:o})=>o.spacing[4]};
537
617
  border-top: 1px solid ${({theme:o})=>o.colors.neutral[200]};
538
618
  flex-shrink: 0;
539
- `,Fr=["button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","a[href]",'[tabindex]:not([tabindex="-1"])'].join(", ");function ao(o){return Array.from(o.querySelectorAll(Fr))}function ro({open:o,onClose:r,title:n,children:e,footer:l,size:i="md",closeOnBackdrop:c=!0,closeOnEscape:d=!0,ariaLabelledBy:p,ariaDescribedBy:$}){const b=a.useRef(null),w=a.useRef(null),x=a.useRef(r);x.current=r;const f=a.useId(),y=p??(n?f:void 0),[h,j]=a.useState(o),[I,v]=a.useState(!1);return a.useEffect(()=>{if(o)j(!0),v(!1);else if(h){v(!0);const g=setTimeout(()=>{j(!1),v(!1)},150);return()=>clearTimeout(g)}},[o,h]),a.useEffect(()=>{if(!o)return;const g=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=g}},[o]),a.useEffect(()=>{if(!o||!b.current)return;const g=b.current,k=document.activeElement;(ao(g)[0]??g).focus();const S=C=>{if(C.key==="Escape"&&d){x.current();return}if(C.key!=="Tab")return;const T=ao(g);if(T.length===0){C.preventDefault();return}const D=T[0],M=T[T.length-1];C.shiftKey?document.activeElement===D&&(C.preventDefault(),M.focus()):document.activeElement===M&&(C.preventDefault(),D.focus())};return document.addEventListener("keydown",S),()=>{document.removeEventListener("keydown",S),k?.focus()}},[o,d,h]),h?bo.createPortal(t.jsx(Mr,{$closing:I,onMouseDown:g=>{w.current=g.target},onClick:g=>{c&&w.current===g.currentTarget&&r()},children:t.jsxs(Dr,{ref:b,role:"dialog","aria-modal":"true","aria-labelledby":y,"aria-describedby":$,$size:i,$closing:I,tabIndex:-1,onClick:g=>g.stopPropagation(),children:[t.jsxs(Er,{children:[n&&t.jsx(Pr,{id:f,children:n}),t.jsx(Wr,{onClick:r,"aria-label":"Close modal",children:"×"})]}),t.jsx(Or,{children:e}),l&&t.jsx(Nr,{children:l})]})}),document.body):null}ro.displayName="Modal";const Lr=s.keyframes`
619
+ `,ms=["button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","a[href]",'[tabindex]:not([tabindex="-1"])'].join(", ");function To(o){return Array.from(o.querySelectorAll(ms))}function wo({open:o,onClose:r,title:n,children:e,footer:i,size:l="md",closeOnBackdrop:d=!0,closeOnEscape:f=!0,ariaLabelledBy:u,ariaDescribedBy:p}){const g=a.useRef(null),w=a.useRef(null),v=a.useRef(r);v.current=r;const y=a.useId(),k=u??(n?y:void 0),[j,W]=a.useState(o),[O,E]=a.useState(!1);return a.useEffect(()=>{if(o)W(!0),E(!1);else if(j){E(!0);const x=setTimeout(()=>{W(!1),E(!1)},150);return()=>clearTimeout(x)}},[o,j]),a.useEffect(()=>{if(!o)return;const x=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=x}},[o]),a.useEffect(()=>{if(!o||!g.current)return;const x=g.current,z=document.activeElement;(To(x)[0]??x).focus();const b=S=>{if(S.key==="Escape"&&f){v.current();return}if(S.key!=="Tab")return;const I=To(x);if(I.length===0){S.preventDefault();return}const C=I[0],M=I[I.length-1];S.shiftKey?document.activeElement===C&&(S.preventDefault(),M.focus()):document.activeElement===M&&(S.preventDefault(),C.focus())};return document.addEventListener("keydown",b),()=>{document.removeEventListener("keydown",b),z?.focus()}},[o,f,j]),j?fo.createPortal(t.jsx(ps,{$closing:O,onMouseDown:x=>{w.current=x.target},onClick:x=>{d&&w.current===x.currentTarget&&r()},children:t.jsxs($s,{ref:g,role:"dialog","aria-modal":"true","aria-labelledby":k,"aria-describedby":p,$size:l,$closing:O,tabIndex:-1,onClick:x=>x.stopPropagation(),children:[t.jsxs(gs,{children:[n&&t.jsx(bs,{id:y,children:n}),t.jsx(xs,{onClick:r,"aria-label":"Close modal",children:"×"})]}),t.jsx(ys,{children:e}),i&&t.jsx(hs,{children:i})]})}),document.body):null}wo.displayName="Modal";const Yo=s.keyframes`
540
620
  from { opacity: 0; transform: translateY(12px); }
541
621
  to { opacity: 1; transform: translateY(0); }
542
- `,Br=s.keyframes`
622
+ `,Uo=s.keyframes`
543
623
  from { opacity: 0; transform: translateY(-12px); }
544
624
  to { opacity: 1; transform: translateY(0); }
545
- `,Rr=s.keyframes`
625
+ `,qo=s.keyframes`
546
626
  from { opacity: 1; }
547
627
  to { opacity: 0; }
548
- `,Vr=s.div`
549
- position: fixed;
550
- z-index: ${({theme:o})=>o.zIndex.toast};
628
+ `,ao=(o,r,n)=>s.css`
629
+ background: ${r};
630
+ border: ${o.brutalism.borderWidth} solid ${n};
631
+ box-shadow: ${o.brutalism.shadowOffset} ${o.brutalism.shadowOffset}
632
+ 0 ${n};
633
+ `;function Ko(o,r){return r.brutalism?{success:ao(r,r.colors.success[50],r.colors.success[500]),error:ao(r,r.colors.error[50],r.colors.error[500]),warning:ao(r,r.colors.warning[50],r.colors.warning[500]),info:ao(r,r.colors.info[50],r.colors.info[500])}[o]:{success:s.css`
634
+ background: ${r.colors.success[50]};
635
+ border-left: ${r.spacing[1]} solid ${r.colors.success[500]};
636
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
637
+ `,error:s.css`
638
+ background: ${r.colors.error[50]};
639
+ border-left: ${r.spacing[1]} solid ${r.colors.error[500]};
640
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
641
+ `,warning:s.css`
642
+ background: ${r.colors.warning[50]};
643
+ border-left: ${r.spacing[1]} solid ${r.colors.warning[500]};
644
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
645
+ `,info:s.css`
646
+ background: ${r.colors.info[50]};
647
+ border-left: ${r.spacing[1]} solid ${r.colors.info[500]};
648
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
649
+ `}[o]}const Go=s.css`
551
650
  display: flex;
552
651
  align-items: center;
553
652
  gap: ${({theme:o})=>o.spacing[3]};
@@ -555,58 +654,79 @@
555
654
  max-width: 400px;
556
655
  padding: ${({theme:o})=>`${o.spacing[3]} ${o.spacing[4]}`};
557
656
  border-radius: ${({theme:o})=>o.radius.md};
657
+ `,ws={"bottom-right":s.css`
658
+ bottom: 24px;
659
+ right: 24px;
660
+ `,"bottom-left":s.css`
661
+ bottom: 24px;
662
+ left: 24px;
663
+ `,"top-right":s.css`
664
+ top: 24px;
665
+ right: 24px;
666
+ `,"top-left":s.css`
667
+ top: 24px;
668
+ left: 24px;
669
+ `},vs=s.div`
670
+ position: fixed;
671
+ z-index: ${({theme:o})=>o.zIndex.toast};
672
+ ${Go}
673
+
558
674
  animation: ${({$closing:o,$position:r})=>o?s.css`
559
- ${Rr} 0.2s ease forwards
675
+ ${qo} 0.2s ease forwards
560
676
  `:r.startsWith("top")?s.css`
561
- ${Br} 0.2s ease forwards
677
+ ${Uo} 0.2s ease forwards
678
+ `:s.css`
679
+ ${Yo} 0.2s ease forwards
680
+ `};
681
+
682
+ ${({$position:o})=>ws[o]}
683
+ ${({$variant:o,theme:r})=>Ko(o,r)}
684
+ `,ks=s.div`
685
+ ${Go}
686
+ pointer-events: all;
687
+
688
+ animation: ${({$closing:o,$isTop:r})=>o?s.css`
689
+ ${qo} 0.2s ease forwards
690
+ `:r?s.css`
691
+ ${Uo} 0.2s ease forwards
562
692
  `:s.css`
563
- ${Lr} 0.2s ease forwards
693
+ ${Yo} 0.2s ease forwards
564
694
  `};
565
695
 
696
+ ${({$variant:o,theme:r})=>Ko(o,r)}
697
+ `,Ss=s.div`
698
+ position: fixed;
699
+ z-index: ${({theme:o})=>o.zIndex.toast};
700
+ display: flex;
701
+ flex-direction: column;
702
+ gap: ${({theme:o})=>o.spacing[2]};
703
+ pointer-events: none;
704
+
566
705
  ${({$position:o,theme:r})=>({"bottom-right":s.css`
567
706
  bottom: ${r.spacing[6]};
568
707
  right: ${r.spacing[6]};
708
+ align-items: flex-end;
569
709
  `,"bottom-left":s.css`
570
710
  bottom: ${r.spacing[6]};
571
711
  left: ${r.spacing[6]};
712
+ align-items: flex-start;
572
713
  `,"top-right":s.css`
573
714
  top: ${r.spacing[6]};
574
715
  right: ${r.spacing[6]};
716
+ align-items: flex-end;
575
717
  `,"top-left":s.css`
576
718
  top: ${r.spacing[6]};
577
719
  left: ${r.spacing[6]};
720
+ align-items: flex-start;
578
721
  `})[o]}
579
- `,A=(o,r,n)=>s.css`
580
- background: ${r};
581
- border: ${o.brutalism.borderWidth} solid ${n};
582
- box-shadow: ${o.brutalism.shadowOffset} ${o.brutalism.shadowOffset}
583
- 0 ${n};
584
- `,_r=s(Vr)`
585
- ${({$variant:o,theme:r})=>r.brutalism?{success:A(r,r.colors.success[50],r.colors.success[500]),error:A(r,r.colors.error[50],r.colors.error[500]),warning:A(r,r.colors.warning[50],r.colors.warning[500]),info:A(r,r.colors.info[50],r.colors.info[500])}[o]:{success:s.css`
586
- background: ${r.colors.success[50]};
587
- border-left: 4px solid ${r.colors.success[500]};
588
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
589
- `,error:s.css`
590
- background: ${r.colors.error[50]};
591
- border-left: 4px solid ${r.colors.error[500]};
592
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
593
- `,warning:s.css`
594
- background: ${r.colors.warning[50]};
595
- border-left: 4px solid ${r.colors.warning[500]};
596
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
597
- `,info:s.css`
598
- background: ${r.colors.info[50]};
599
- border-left: 4px solid ${r.colors.info[500]};
600
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
601
- `}[o]}
602
- `,Ar=s.p`
722
+ `,Xo=s.p`
603
723
  flex: 1;
604
724
  margin: 0;
605
725
  font-size: ${({theme:o})=>o.fontSizes.sm};
606
- font-weight: ${({theme:o})=>o.brutalism?600:400};
726
+ font-weight: ${({theme:o})=>o.brutalism?o.fontWeights.semibold:o.fontWeights.normal};
607
727
  line-height: 1.5;
608
728
  color: ${({theme:o})=>o.colors.neutral[900]};
609
- `,Yr=s.button`
729
+ `,Jo=s.button`
610
730
  flex-shrink: 0;
611
731
  display: inline-flex;
612
732
  align-items: center;
@@ -628,25 +748,214 @@
628
748
  outline: 2px solid ${({theme:o})=>o.colors.primary[500]};
629
749
  outline-offset: 2px;
630
750
  }
631
- `;function so({open:o,onClose:r,message:n,variant:e="info",duration:l=4e3,position:i="bottom-right"}){const[c,d]=a.useState(o),[p,$]=a.useState(!1);return a.useEffect(()=>{if(o)d(!0),$(!1);else if(c){$(!0);const b=setTimeout(()=>{d(!1),$(!1)},200);return()=>{clearTimeout(b)}}},[o,c]),a.useEffect(()=>{if(!o||l===0)return;const b=setTimeout(r,l);return()=>{clearTimeout(b)}},[o,l,r]),c?bo.createPortal(t.jsxs(_r,{$position:i,$variant:e,$closing:p,role:"alert","aria-live":"polite",children:[t.jsx(Ar,{children:n}),t.jsx(Yr,{onClick:r,"aria-label":"Close notification",children:t.jsx(Q,{size:14,strokeWidth:2.5})})]}),document.body):null}so.displayName="Toast";const So=a.createContext(null);function Hr({children:o}){const[r,n]=a.useState(null),e=a.useCallback(i=>{n({...i,id:Date.now()})},[]),l=a.useMemo(()=>Object.assign(i=>e(i),{success:(i,c)=>e({...c,message:i,variant:"success"}),error:(i,c)=>e({...c,message:i,variant:"error"}),warning:(i,c)=>e({...c,message:i,variant:"warning"}),info:(i,c)=>e({...c,message:i,variant:"info"})}),[e]);return t.jsxs(So.Provider,{value:{toast:l},children:[o,r&&t.jsx(so,{open:!0,onClose:()=>n(null),message:r.message,variant:r.variant,duration:r.duration,position:r.position},r.id)]})}function qr(){const o=a.useContext(So);if(!o)throw new Error("useToast must be used within a ToastProvider");return o}const Ur=s.form`
751
+ `;function Qo({open:o,onClose:r,message:n,variant:e="info",duration:i=4e3,position:l="bottom-right"}){const[d,f]=a.useState(o),[u,p]=a.useState(!1);return a.useEffect(()=>{if(o)f(!0),p(!1);else if(d){p(!0);const g=setTimeout(()=>{f(!1),p(!1)},200);return()=>{clearTimeout(g)}}},[o,d]),a.useEffect(()=>{if(!o||i===0)return;const g=setTimeout(r,i);return()=>{clearTimeout(g)}},[o,i,r]),d?fo.createPortal(t.jsxs(vs,{$position:l,$variant:e,$closing:u,role:"alert","aria-live":"polite",children:[t.jsx(Xo,{children:n}),t.jsx(Jo,{onClick:r,"aria-label":"Close notification",children:t.jsx(po,{size:14,strokeWidth:2.5})})]}),document.body):null}Qo.displayName="Toast";const Zo=a.createContext(null),Do=5,js="bottom-right";function zs({toast:o,isTop:r,onClose:n}){return a.useEffect(()=>{const e=o.duration??4e3;if(e===0)return;const i=setTimeout(()=>n(o.id),e);return()=>clearTimeout(i)},[o.id,o.duration,n]),t.jsxs(ks,{$variant:o.variant??"info",$closing:o.closing,$isTop:r,role:"alert","aria-live":"polite",children:[t.jsx(Xo,{children:o.message}),t.jsx(Jo,{onClick:()=>n(o.id),"aria-label":"Close notification",children:t.jsx(po,{size:14,strokeWidth:2.5})})]})}function Cs({children:o}){const[r,n]=a.useState([]),e=a.useCallback(u=>{n(p=>p.map(g=>g.id===u?{...g,closing:!0}:g)),setTimeout(()=>{n(p=>p.filter(g=>g.id!==u))},200)},[]),i=a.useCallback(u=>{const p=Date.now();n(g=>{const w=[...g,{...u,id:p,closing:!1}];return w.length>Do?w.slice(w.length-Do):w})},[]),l=a.useMemo(()=>Object.assign(u=>i(u),{success:(u,p)=>i({...p,message:u,variant:"success"}),error:(u,p)=>i({...p,message:u,variant:"error"}),warning:(u,p)=>i({...p,message:u,variant:"warning"}),info:(u,p)=>i({...p,message:u,variant:"info"})}),[i]),d=r[r.length-1]?.position??js,f=d.startsWith("top");return t.jsxs(Zo.Provider,{value:{toast:l},children:[o,r.length>0&&fo.createPortal(t.jsx(Ss,{$position:d,children:r.map(u=>t.jsx(zs,{toast:u,isTop:f,onClose:e},u.id))}),document.body)]})}function Is(){const o=a.useContext(Zo);if(!o)throw new Error("useToast must be used within a ToastProvider");return o}const Ts=s.form`
632
752
  display: flex;
633
753
  flex-direction: column;
634
754
  gap: ${({theme:o})=>o.spacing[4]};
635
- `,Kr=s.div`
755
+ `;function or({onSubmit:o,children:r,...n}){return t.jsx(Ts,{onSubmit:e=>{e.preventDefault(),o?.(e)},noValidate:!0,...n,children:r})}or.displayName="Form";const Ds=s.div`
636
756
  display: flex;
637
757
  flex-direction: column;
638
758
  gap: ${({theme:o})=>o.spacing[1]};
639
- `,Gr=s.label`
759
+ `,Ws=s.label`
640
760
  font-size: ${({theme:o})=>o.fontSizes.sm};
641
- font-weight: 500;
761
+ font-weight: ${({theme:o})=>o.fontWeights.medium};
642
762
  color: ${({theme:o})=>o.colors.neutral[900]};
643
- `,Jr=s.span`
763
+ `,Es=s.span`
644
764
  color: ${({theme:o})=>o.colors.error[500]};
645
- margin-left: 2px;
646
- `,Xr=s.span`
765
+ margin-left: ${({theme:o})=>o.spacing[.5]};
766
+ `,Ms=s.span`
767
+ font-size: ${({theme:o})=>o.fontSizes.xs};
768
+ color: ${({$error:o,theme:r})=>o?r.colors.error[500]:r.colors.neutral[500]};
769
+ `;function vo({label:o,error:r,helperText:n,required:e,children:i}){const l=a.useId(),d=`${l}-hint`,f=!!(r||n),u=typeof r=="string"?r:void 0,p=a.isValidElement(i)?a.cloneElement(i,{id:l,...f&&{"aria-describedby":d},...r&&{"aria-invalid":!0}}):i;return t.jsxs(Ds,{children:[o&&t.jsxs(Ws,{htmlFor:l,children:[o,e&&t.jsx(Es,{"aria-hidden":"true",children:" *"})]}),p,f&&t.jsx(Ms,{id:d,$error:!!r,children:u??n})]})}vo.displayName="FormField";function Os({initialValues:o,validate:r,onSubmit:n,onError:e}){const[i,l]=a.useState(o),[d,f]=a.useState({}),[u,p]=a.useState({}),[g,w]=a.useState(!1),v=a.useRef(i);v.current=i;const y=a.useCallback(m=>{if(!r)return{};const b=r(m);return Object.fromEntries(Object.entries(b).filter(([,S])=>S!==void 0))},[r]),k=a.useRef(u);k.current=u;const j=a.useCallback(m=>{const{name:b,value:S}=m.target;process.env.NODE_ENV!=="production"&&!b&&console.warn("[useForm] handleChange: field is missing a `name` attribute — value will not be tracked.");const I={...v.current,[b]:S};l(I),k.current[b]&&f(y(I))},[y]),W=a.useCallback(m=>{const{name:b}=m.target;process.env.NODE_ENV!=="production"&&!b&&console.warn("[useForm] handleBlur: field is missing a `name` attribute — touched state will not be tracked."),p(S=>({...S,[b]:!0})),f(y(v.current))},[y]),O=a.useCallback(m=>{m?.preventDefault();const b=Object.keys(v.current).reduce((C,M)=>({...C,[M]:!0}),{});p(b);const S=y(v.current);if(f(S),Object.keys(S).length>0){e?.(S);return}(async()=>{w(!0);try{await n?.(v.current)}finally{w(!1)}})()},[y,n,e]),E=a.useCallback((m,b)=>{l(S=>({...S,[m]:b}))},[]),x=a.useCallback(m=>{l(m??o),f({}),p({}),w(!1)},[o]),z=Object.fromEntries(Object.entries(d).filter(([m])=>u[m]));return{values:i,errors:z,touched:u,handleChange:j,handleBlur:W,handleSubmit:O,setFieldValue:E,reset:x,isSubmitting:g}}const Rs=(o="Required")=>r=>{if(!r.trim())return o},Ps=(o,r)=>n=>{if(n.length<o)return r??`Must be at least ${o} characters`},Ls=(o,r)=>n=>{if(n.length>o)return r??`Must be at most ${o} characters`},Ns=(o="Enter a valid email")=>r=>{if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r))return o},Fs=(o="Enter a valid URL")=>r=>{try{new URL(r);return}catch{return o}},Bs=(o,r)=>n=>{if(!o.test(n))return r};function Vs(...o){return r=>{for(const n of o){const e=n(r);if(e!==void 0)return e}}}const As=s.div`
770
+ display: flex;
771
+ flex-direction: column;
772
+ gap: ${({theme:o})=>o.spacing[1]};
773
+ `,_s=s.label`
774
+ display: inline-flex;
775
+ align-items: center;
776
+ gap: ${({theme:o})=>o.spacing[2]};
777
+ cursor: ${({$disabled:o})=>o?"not-allowed":"pointer"};
778
+ opacity: ${({$disabled:o})=>o?.6:1};
779
+ `,Hs=s.input`
780
+ position: absolute;
781
+ opacity: 0;
782
+ width: 0;
783
+ height: 0;
784
+ margin: 0;
785
+ padding: 0;
786
+
787
+ &:focus-visible + div {
788
+ box-shadow: ${({theme:o})=>o.shadows.focusRing};
789
+ }
790
+ `,Ys=s.div`
791
+ position: relative;
792
+ display: flex;
793
+ align-items: center;
794
+ justify-content: center;
795
+ flex-shrink: 0;
796
+ border-radius: ${({theme:o})=>o.radius.md};
797
+ border: ${({theme:o})=>o.brutalism?.borderWidth??"2px"} solid
798
+ ${({$error:o,$borderColor:r,theme:n})=>o?n.colors.error[500]:r??n.colors.neutral[900]};
799
+ background-color: ${({$checked:o,$color:r,theme:n})=>o?r??n.colors.primary[500]:n.colors.neutral[0]};
800
+ transition:
801
+ background-color 0.1s,
802
+ border-color 0.1s;
803
+
804
+ ${({$size:o="md",theme:r})=>({sm:s.css`
805
+ width: ${r.spacing[4]};
806
+ height: ${r.spacing[4]};
807
+ `,md:s.css`
808
+ width: ${r.spacing[5]};
809
+ height: ${r.spacing[5]};
810
+ `})[o]}
811
+
812
+ ${({$checked:o,$checkColor:r})=>o&&s.css`
813
+ &::after {
814
+ content: "";
815
+ display: block;
816
+ width: 5px;
817
+ height: 9px;
818
+ border: 2px solid ${r??"currentColor"};
819
+ border-top: none;
820
+ border-left: none;
821
+ transform: rotate(45deg) translate(-1px, -1px);
822
+ }
823
+ `}
824
+ `,Us=s.span`
825
+ font-size: ${({$size:o="md",theme:r})=>o==="sm"?r.fontSizes.sm:r.fontSizes.md};
826
+ font-weight: ${({theme:o})=>o.fontWeights.medium};
827
+ `,qs=s.span`
828
+ font-size: ${({theme:o})=>o.fontSizes.xs};
829
+ color: ${({$error:o,theme:r})=>o?r.colors.error[500]:r.colors.neutral[500]};
830
+ `;function rr({ref:o,label:r,size:n="md",error:e,helperText:i,disabled:l,checked:d,id:f,color:u,borderColor:p,checkColor:g,...w}){const v=a.useId(),y=f??v,k=typeof e=="string"?e:void 0,j=!!(i||e);return t.jsxs(As,{children:[t.jsxs(_s,{htmlFor:y,$disabled:l,children:[t.jsx(Hs,{id:y,ref:o,type:"checkbox",checked:d,disabled:l,"aria-invalid":!!e,...w}),t.jsx(Ys,{$checked:d,$error:!!e,$disabled:l,$size:n,$color:u,$borderColor:p,$checkColor:g}),r&&t.jsx(Us,{$size:n,children:r})]}),j&&t.jsx(qs,{$error:!!e,children:k??i})]})}rr.displayName="Checkbox";const Ks=s.div`
831
+ display: flex;
832
+ flex-direction: column;
833
+ gap: ${({theme:o})=>o.spacing[1]};
834
+ `,Gs=s.label`
835
+ display: inline-flex;
836
+ align-items: center;
837
+ gap: ${({theme:o})=>o.spacing[2]};
838
+ cursor: ${({$disabled:o})=>o?"not-allowed":"pointer"};
839
+ opacity: ${({$disabled:o})=>o?.6:1};
840
+ `,Xs=s.input`
841
+ position: absolute;
842
+ opacity: 0;
843
+ width: 0;
844
+ height: 0;
845
+ margin: 0;
846
+ padding: 0;
847
+
848
+ &:focus-visible + div {
849
+ box-shadow: ${({theme:o})=>o.shadows.focusRing};
850
+ }
851
+ `,Js=s.div`
852
+ position: relative;
853
+ display: flex;
854
+ align-items: center;
855
+ justify-content: center;
856
+ flex-shrink: 0;
857
+ border-radius: 50%;
858
+ border: ${({theme:o})=>o.brutalism?.borderWidth??"2px"} solid
859
+ ${({$error:o,$borderColor:r,theme:n})=>o?n.colors.error[500]:r??n.colors.neutral[900]};
860
+ background-color: ${({theme:o})=>o.colors.neutral[0]};
861
+ transition:
862
+ background-color 0.1s,
863
+ border-color 0.1s;
864
+
865
+ ${({$size:o="md",theme:r})=>({sm:s.css`
866
+ width: ${r.spacing[4]};
867
+ height: ${r.spacing[4]};
868
+ `,md:s.css`
869
+ width: ${r.spacing[5]};
870
+ height: ${r.spacing[5]};
871
+ `})[o]}
872
+
873
+ ${({$checked:o,$color:r,theme:n})=>o&&s.css`
874
+ &::after {
875
+ content: "";
876
+ display: block;
877
+ width: 8px;
878
+ height: 8px;
879
+ border-radius: 50%;
880
+ background-color: ${r??n.colors.primary[500]};
881
+ }
882
+ `}
883
+ `,Qs=s.span`
884
+ font-size: ${({$size:o="md",theme:r})=>o==="sm"?r.fontSizes.sm:r.fontSizes.md};
885
+ font-weight: ${({theme:o})=>o.fontWeights.medium};
886
+ `,Zs=s.span`
647
887
  font-size: ${({theme:o})=>o.fontSizes.xs};
648
888
  color: ${({$error:o,theme:r})=>o?r.colors.error[500]:r.colors.neutral[500]};
649
- `;function jo({onSubmit:o,children:r,...n}){return t.jsx(Ur,{onSubmit:e=>{e.preventDefault(),o?.(e)},noValidate:!0,...n,children:r})}jo.displayName="Form";function Co({label:o,error:r,helperText:n,required:e,children:l}){const i=a.useId(),c=`${i}-hint`,d=!!(r||n),p=typeof r=="string"?r:void 0,$=a.isValidElement(l)?a.cloneElement(l,{id:i,...d&&{"aria-describedby":c},...r&&{"aria-invalid":!0}}):l;return t.jsxs(Kr,{children:[o&&t.jsxs(Gr,{htmlFor:i,children:[o,e&&t.jsx(Jr,{"aria-hidden":"true",children:" *"})]}),$,d&&t.jsx(Xr,{id:c,$error:!!r,children:p??n})]})}Co.displayName="FormField";function Zr({initialValues:o,validate:r,onSubmit:n,onError:e}){const[l,i]=a.useState(o),[c,d]=a.useState({}),[p,$]=a.useState({}),[b,w]=a.useState(!1),x=a.useRef(l);x.current=l;const f=a.useCallback(z=>{if(!r)return{};const S=r(z);return Object.fromEntries(Object.entries(S).filter(([,C])=>C!==void 0))},[r]),y=a.useRef(p);y.current=p;const h=a.useCallback(z=>{const{name:S,value:C}=z.target;process.env.NODE_ENV!=="production"&&!S&&console.warn("[useForm] handleChange: field is missing a `name` attribute — value will not be tracked.");const T={...x.current,[S]:C};i(T),y.current[S]&&d(f(T))},[f]),j=a.useCallback(z=>{const{name:S}=z.target;process.env.NODE_ENV!=="production"&&!S&&console.warn("[useForm] handleBlur: field is missing a `name` attribute — touched state will not be tracked."),$(C=>({...C,[S]:!0})),d(f(x.current))},[f]),I=a.useCallback(z=>{z?.preventDefault();const S=Object.keys(x.current).reduce((D,M)=>({...D,[M]:!0}),{});$(S);const C=f(x.current);if(d(C),Object.keys(C).length>0){e?.(C);return}(async()=>{w(!0);try{await n?.(x.current)}finally{w(!1)}})()},[f,n,e]),v=a.useCallback((z,S)=>{i(C=>({...C,[z]:S}))},[]),g=a.useCallback(z=>{i(z??o),d({}),$({}),w(!1)},[o]),k=Object.fromEntries(Object.entries(c).filter(([z])=>p[z]));return{values:l,errors:k,touched:p,handleChange:h,handleBlur:j,handleSubmit:I,setFieldValue:v,reset:g,isSubmitting:b}}const Qr=s.div`
889
+ `;function sr({ref:o,label:r,size:n="md",error:e,helperText:i,disabled:l,checked:d,id:f,color:u,borderColor:p,...g}){const w=a.useId(),v=f??w,y=!!(i||e);return t.jsxs(Ks,{children:[t.jsxs(Gs,{htmlFor:v,$disabled:l,children:[t.jsx(Xs,{id:v,ref:o,type:"radio",checked:d,disabled:l,"aria-invalid":!!e,...g}),t.jsx(Js,{$checked:d,$error:e,$disabled:l,$size:n,$color:u,$borderColor:p}),r&&t.jsx(Qs,{$size:n,children:r})]}),y&&t.jsx(Zs,{$error:e,children:i})]})}sr.displayName="Radio";const on=s.div`
890
+ display: flex;
891
+ flex-direction: column;
892
+ gap: ${({theme:o})=>o.spacing[1]};
893
+ `,rn=s.label`
894
+ display: inline-flex;
895
+ align-items: center;
896
+ gap: ${({theme:o})=>o.spacing[2]};
897
+ cursor: ${({$disabled:o})=>o?"not-allowed":"pointer"};
898
+ opacity: ${({$disabled:o})=>o?.6:1};
899
+ `,sn=s.input`
900
+ position: absolute;
901
+ opacity: 0;
902
+ width: 0;
903
+ height: 0;
904
+ margin: 0;
905
+ padding: 0;
906
+
907
+ &:focus-visible + div {
908
+ box-shadow: ${({theme:o})=>o.shadows.focusRing};
909
+ }
910
+ `,nn=s.div`
911
+ position: relative;
912
+ flex-shrink: 0;
913
+ border-radius: 9999px;
914
+ border: ${({theme:o})=>o.brutalism?.borderWidth??"2px"} solid
915
+ ${({$borderColor:o,theme:r})=>o??r.colors.neutral[900]};
916
+ background-color: ${({$checked:o,$color:r,theme:n})=>o?r??n.colors.primary[500]:n.colors.neutral[200]};
917
+ transition:
918
+ background-color 0.15s,
919
+ box-shadow 0.15s;
920
+
921
+ ${({$checked:o,theme:r})=>o&&s.css`
922
+ box-shadow: ${r.brutalism?.shadowOffset??"4px"}
923
+ ${r.brutalism?.shadowOffset??"4px"} 0 ${r.colors.neutral[900]};
924
+ `}
925
+
926
+ ${({$size:o="md"})=>({sm:s.css`
927
+ width: 36px;
928
+ height: 20px;
929
+ `,md:s.css`
930
+ width: 44px;
931
+ height: 24px;
932
+ `})[o]}
933
+
934
+ &::after {
935
+ content: "";
936
+ position: absolute;
937
+ top: 50%;
938
+ border-radius: 50%;
939
+ background-color: ${({theme:o})=>o.colors.neutral[0]};
940
+ border: 2px solid ${({theme:o})=>o.colors.neutral[900]};
941
+ transition: transform 0.15s;
942
+
943
+ ${({$size:o="md",$checked:r})=>{const n=s.css`
944
+ width: 12px;
945
+ height: 12px;
946
+ margin-top: -6px;
947
+ transform: translateX(${r?"calc(100% + 4px)":"2px"});
948
+ `,e=s.css`
949
+ width: 16px;
950
+ height: 16px;
951
+ margin-top: -8px;
952
+ transform: translateX(${r?"calc(100% + 4px)":"2px"});
953
+ `;return o==="sm"?n:e}}
954
+ }
955
+ `,tn=s.span`
956
+ font-size: ${({$size:o="md",theme:r})=>o==="sm"?r.fontSizes.sm:r.fontSizes.md};
957
+ font-weight: ${({theme:o})=>o.fontWeights.medium};
958
+ `;function nr({ref:o,label:r,size:n="md",disabled:e,checked:i,id:l,color:d,borderColor:f,...u}){const p=a.useId(),g=l??p;return t.jsx(on,{children:t.jsxs(rn,{htmlFor:g,$disabled:e,children:[t.jsx(sn,{id:g,ref:o,type:"checkbox",role:"switch",checked:i,disabled:e,...u}),t.jsx(nn,{$checked:i,$size:n,$color:d,$borderColor:f}),r&&t.jsx(tn,{$size:n,children:r})]})})}nr.displayName="Switch";const en=s.div`
650
959
  border-radius: ${({theme:o})=>o.radius.md};
651
960
  background: ${({theme:o})=>o.colors.neutral[0]};
652
961
  overflow: hidden;
@@ -661,7 +970,7 @@
661
970
  border: 1px solid ${r??o.colors.neutral[200]};
662
971
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
663
972
  `}
664
- `,os=s.button`
973
+ `,an=s.button`
665
974
  width: 100%;
666
975
  display: flex;
667
976
  align-items: flex-start;
@@ -681,19 +990,19 @@
681
990
  ${({theme:o,$accentColor:r})=>r??o.colors.primary[500]};
682
991
  outline-offset: -2px;
683
992
  }
684
- `,rs=s.div`
993
+ `,ln=s.div`
685
994
  flex: 1;
686
995
  min-width: 0;
687
- `,ss=s.span`
996
+ `,cn=s.span`
688
997
  display: block;
689
998
  font-size: ${({theme:o})=>o.fontSizes.md};
690
- font-weight: 600;
999
+ font-weight: ${({theme:o})=>o.fontWeights.semibold};
691
1000
  color: ${({theme:o})=>o.colors.neutral[900]};
692
- `,ns=s.span`
1001
+ `,dn=s.span`
693
1002
  display: block;
694
1003
  font-size: ${({theme:o})=>o.fontSizes.sm};
695
1004
  color: ${({theme:o})=>o.colors.neutral[500]};
696
- `,ts=s.div`
1005
+ `,un=s.div`
697
1006
  display: flex;
698
1007
  flex-direction: row;
699
1008
  align-items: center;
@@ -705,11 +1014,11 @@
705
1014
  align-items: flex-start;
706
1015
  gap: ${({theme:o})=>o.spacing[2]};
707
1016
  }
708
- `,es=s.div`
1017
+ `,fn=s.div`
709
1018
  display: flex;
710
1019
  align-items: center;
711
1020
  gap: ${({theme:o})=>o.spacing[2]};
712
- `,is=s.span`
1021
+ `,pn=s.span`
713
1022
  display: inline-flex;
714
1023
  align-items: center;
715
1024
  justify-content: center;
@@ -717,29 +1026,29 @@
717
1026
  transition: transform 0.2s ease;
718
1027
  transform: ${({$open:o})=>o?"rotate(180deg)":"rotate(0deg)"};
719
1028
  color: ${({theme:o,$accentColor:r})=>r??o.colors.neutral[500]};
720
- `,as=s.div`
1029
+ `,$n=s.div`
721
1030
  display: grid;
722
1031
  grid-template-rows: ${({$open:o})=>o?"1fr":"0fr"};
723
1032
  transition: grid-template-rows 0.2s ease;
724
- `,ls=s.div`
1033
+ `,gn=s.div`
725
1034
  overflow: hidden;
726
- `,cs=s.div`
1035
+ `,bn=s.div`
727
1036
  padding: ${({theme:o})=>o.spacing[4]};
728
1037
  border-top: 1px solid ${({theme:o})=>o.colors.neutral[200]};
729
- `;function zo({title:o,children:r,defaultOpen:n=!1,open:e,onToggle:l,subtitle:i,headerActions:c,accentColor:d}){const[p,$]=a.useState(n),b=a.useId(),w=e!==void 0,x=w?e:p,f=()=>{const y=!x;w||$(y),l?.(y)};return t.jsxs(Qr,{$accentColor:d,children:[t.jsxs(os,{type:"button",$open:x,$accentColor:d,"aria-expanded":x,"aria-controls":b,onClick:f,children:[t.jsxs(rs,{children:[t.jsx(ss,{children:o}),(i||c)&&t.jsxs(ts,{children:[i&&t.jsx(ns,{children:i}),c&&t.jsx(es,{onClick:y=>y.stopPropagation(),children:c})]})]}),t.jsx(is,{$open:x,$accentColor:d,"aria-hidden":"true",children:t.jsx(wo,{size:18,strokeWidth:2.5})})]}),t.jsx(as,{$open:x,children:t.jsx(ls,{id:b,role:"region","aria-label":o,children:t.jsx(cs,{children:r})})})]})}zo.displayName="CollapsibleCard";const ds=s.keyframes`
1038
+ `;function tr({title:o,children:r,defaultOpen:n=!1,open:e,onToggle:i,subtitle:l,headerActions:d,accentColor:f}){const[u,p]=a.useState(n),g=a.useId(),w=e!==void 0,v=w?e:u,y=()=>{const k=!v;w||p(k),i?.(k)};return t.jsxs(en,{$accentColor:f,children:[t.jsxs(an,{type:"button",$open:v,$accentColor:f,"aria-expanded":v,"aria-controls":g,onClick:y,children:[t.jsxs(ln,{children:[t.jsx(cn,{children:o}),(l||d)&&t.jsxs(un,{children:[l&&t.jsx(dn,{children:l}),d&&t.jsx(fn,{onClick:k=>k.stopPropagation(),children:d})]})]}),t.jsx(pn,{$open:v,$accentColor:f,"aria-hidden":"true",children:t.jsx(Vo,{size:18,strokeWidth:2.5})})]}),t.jsx($n,{$open:v,children:t.jsx(gn,{id:g,role:"region","aria-label":o,children:t.jsx(bn,{children:r})})})]})}tr.displayName="CollapsibleCard";const xn=s.keyframes`
730
1039
  to { transform: rotate(360deg); }
731
- `,us={sm:"16px",md:"24px",lg:"40px"},ps={thin:"2px",normal:"3px",bold:"5px"},fs=s.span`
1040
+ `,yn={sm:"16px",md:"24px",lg:"40px"},hn={thin:"2px",normal:"3px",bold:"5px"},mn=s.span`
732
1041
  display: inline-block;
733
1042
  border-radius: 50%;
734
- animation: ${ds} 0.7s linear infinite;
1043
+ animation: ${xn} 0.7s linear infinite;
735
1044
 
736
- ${({$size:o="md",$weight:r="normal",$color:n,theme:e})=>{const l=us[o],i=ps[r],c=e.colors.neutral[200],d=n??e.colors.primary[500];return s.css`
737
- width: ${l};
738
- height: ${l};
739
- border: ${i} solid ${c};
740
- border-top-color: ${d};
1045
+ ${({$size:o="md",$weight:r="normal",$color:n,theme:e})=>{const i=yn[o],l=hn[r],d=e.colors.neutral[200],f=n??e.colors.primary[500];return s.css`
1046
+ width: ${i};
1047
+ height: ${i};
1048
+ border: ${l} solid ${d};
1049
+ border-top-color: ${f};
741
1050
  `}}
742
- `;function To({size:o="md",weight:r="normal",color:n,label:e="Loading..."}){return t.jsx(fs,{$size:o,$weight:r,$color:n,role:"status","aria-label":e})}To.displayName="Spinner";function $s(o,r){return o?.key!==r?{key:r,direction:"asc"}:o.direction==="asc"?{key:r,direction:"desc"}:null}function bs({data:o,sort:r,defaultSort:n,onSortChange:e}){const l=r!==void 0,[i,c]=a.useState(n??null),d=l?r??null:i,p=b=>{const w=$s(d,b);return l||c(w),e?.(w),w},$=a.useMemo(()=>l||!d?o:[...o].sort((b,w)=>{const x=b[d.key],f=w[d.key],y=x<f?-1:x>f?1:0;return d.direction==="asc"?y:-y}),[o,d,l]);return{activeSort:d,sortedData:$,handleSort:p}}const gs=7,lo=3,co=1;function xs(o,r){if(r<=gs)return Array.from({length:r},(e,l)=>l+1);const n=[1];o>lo&&n.push("...");for(let e=Math.max(2,o-co);e<=Math.min(r-1,o+co);e++)n.push(e);return o<r-lo+1&&n.push("..."),n.push(r),n}function ys({data:o,pageSize:r,page:n,defaultPage:e,totalRows:l,onPageChange:i}){const c=n!==void 0,[d,p]=a.useState(e??1),$=c?n:d,b=h=>{c||p(h),i?.(h)},w=c||l!==void 0,x=l??o.length,f=r?Math.max(1,Math.ceil(x/r)):1,y=a.useMemo(()=>{if(!r||w)return o;const h=($-1)*r;return o.slice(h,h+r)},[o,r,$,w]);return{activePage:$,totalPages:f,displayData:y,handlePageChange:b}}const Io=(o,r)=>o==="sm"?`${r.spacing[1]} ${r.spacing[2]}`:o==="lg"?`${r.spacing[3]} ${r.spacing[4]}`:`${r.spacing[2]} ${r.spacing[3]}`,hs=s.div`
1051
+ `;function er({size:o="md",weight:r="normal",color:n,label:e="Loading..."}){return t.jsx(mn,{$size:o,$weight:r,$color:n,role:"status","aria-label":e})}er.displayName="Spinner";const wn=7,Wo=3,Eo=1;function vn({defaultSort:o,defaultPage:r=1}={}){const[n,e]=a.useState(o??null),[i,l]=a.useState(r);return{sort:n,page:i,onSortChange:u=>{e(u),l(1)},onPageChange:u=>{l(u)}}}function kn(o,r){return o?.key!==r?{key:r,direction:"asc"}:o.direction==="asc"?{key:r,direction:"desc"}:null}function Sn({data:o,sort:r,defaultSort:n,onSortChange:e}){const i=r!==void 0,[l,d]=a.useState(n??null),f=i?r??null:l,u=g=>{const w=kn(f,g);return i||d(w),e?.(w),w},p=a.useMemo(()=>i||!f?o:[...o].sort((g,w)=>{const v=g[f.key],y=w[f.key],k=v<y?-1:v>y?1:0;return f.direction==="asc"?k:-k}),[o,f,i]);return{activeSort:f,sortedData:p,handleSort:u}}function jn(o,r){if(r<=wn)return Array.from({length:r},(e,i)=>i+1);const n=[1];o>Wo&&n.push("...");for(let e=Math.max(2,o-Eo);e<=Math.min(r-1,o+Eo);e++)n.push(e);return o<r-Wo+1&&n.push("..."),n.push(r),n}function zn({data:o,pageSize:r,page:n,defaultPage:e,totalRows:i,onPageChange:l}){const d=n!==void 0,[f,u]=a.useState(e??1),p=d?n:f,g=j=>{d||u(j),l?.(j)},w=i!==void 0,v=i??o.length,y=r?Math.max(1,Math.ceil(v/r)):1,k=a.useMemo(()=>{if(!r||w)return o;const j=(p-1)*r;return o.slice(j,j+r)},[o,r,p,w]);return{activePage:p,totalPages:y,displayData:k,handlePageChange:g}}const ir=(o,r)=>o==="sm"?`${r.spacing[1]} ${r.spacing[2]}`:o==="lg"?`${r.spacing[3]} ${r.spacing[4]}`:`${r.spacing[2]} ${r.spacing[3]}`,Cn=s.div`
743
1052
  width: 100%;
744
1053
 
745
1054
  ${({theme:o,$borderColor:r})=>o.brutalism?s.css`
@@ -754,19 +1063,24 @@
754
1063
  overflow: hidden;
755
1064
  `}
756
1065
 
757
- overflow-x: auto;
758
- ${({$stickyHeader:o})=>o&&s.css`
759
- overflow-y: auto;
760
- `}
761
- `,ws=s.table`
1066
+ ${({$stickyPagination:o})=>o?s.css`
1067
+ display: flex;
1068
+ flex-direction: column;
1069
+ `:s.css`
1070
+ overflow-x: auto;
1071
+ `}
1072
+ `,In=s.div`
1073
+ overflow: auto;
1074
+ min-height: 0;
1075
+ `,Tn=s.table`
762
1076
  width: 100%;
763
1077
  border-collapse: collapse;
764
1078
  font-size: ${({$size:o,theme:r})=>({sm:r.fontSizes.sm,md:r.fontSizes.md,lg:r.fontSizes.lg})[o]};
765
1079
 
766
1080
  caption {
767
- padding: 8px 0;
1081
+ padding: ${({theme:o})=>o.spacing[2]} 0;
768
1082
  }
769
- `,ms=s.thead`
1083
+ `,Dn=s.thead`
770
1084
  ${({$stickyHeader:o})=>o&&s.css`
771
1085
  position: sticky;
772
1086
  top: 0;
@@ -786,7 +1100,7 @@
786
1100
  --th-text: ${o.colors.neutral[600]};
787
1101
  --th-sep: ${n??o.colors.neutral[300]};
788
1102
  `}
789
- `,vs=s.tbody`
1103
+ `,Wn=s.tbody`
790
1104
  ${({$rowColor:o})=>o&&s.css`
791
1105
  tr {
792
1106
  background-color: ${o};
@@ -806,7 +1120,7 @@
806
1120
  tr:hover td {
807
1121
  background-color: rgba(0, 0, 0, 0.04);
808
1122
  }
809
- `,Y=s.tr``,ks=s(Y)`
1123
+ `,lo=s.tr``,En=s(lo)`
810
1124
  cursor: pointer;
811
1125
 
812
1126
  td {
@@ -823,14 +1137,14 @@
823
1137
  box-shadow: inset 4px 0 0
824
1138
  ${({$accentColor:o,theme:r})=>o??r.colors.neutral[900]};
825
1139
  }
826
- `,Ss=s.th`
1140
+ `,Mn=s.th`
827
1141
  background-color: var(--th-bg);
828
1142
  color: var(--th-text);
829
1143
  text-align: left;
830
- font-weight: 700;
1144
+ font-weight: ${({theme:o})=>o.fontWeights.bold};
831
1145
  white-space: nowrap;
832
1146
 
833
- padding: ${({$size:o,theme:r})=>Io(o,r)};
1147
+ padding: ${({$size:o,theme:r})=>ir(o,r)};
834
1148
 
835
1149
  ${({theme:o,$bordered:r})=>o.brutalism?s.css``:s.css`
836
1150
  border-bottom: 2px solid var(--th-sep);
@@ -841,7 +1155,7 @@
841
1155
  }
842
1156
  `}
843
1157
  `}
844
- `,js=s.button`
1158
+ `,On=s.button`
845
1159
  display: inline-flex;
846
1160
  align-items: center;
847
1161
  gap: ${({theme:o})=>o.spacing[1]};
@@ -850,7 +1164,7 @@
850
1164
  cursor: pointer;
851
1165
  font: inherit;
852
1166
  color: inherit;
853
- font-weight: 700;
1167
+ font-weight: ${({theme:o})=>o.fontWeights.bold};
854
1168
  padding: 0;
855
1169
  width: 100%;
856
1170
  text-align: left;
@@ -860,12 +1174,12 @@
860
1174
  outline-offset: 2px;
861
1175
  border-radius: 2px;
862
1176
  }
863
- `,Cs=s.span`
1177
+ `,Rn=s.span`
864
1178
  opacity: 0.5;
865
1179
  display: inline-flex;
866
1180
  align-items: center;
867
- `,Mo=s.td`
868
- padding: ${({$size:o,theme:r})=>Io(o,r)};
1181
+ `,ar=s.td`
1182
+ padding: ${({$size:o,theme:r})=>ir(o,r)};
869
1183
 
870
1184
  ${({$bordered:o,$borderColor:r,theme:n})=>n.brutalism?s.css`
871
1185
  border-bottom: ${n.brutalism.borderWidth} solid
@@ -883,16 +1197,16 @@
883
1197
  border-bottom: 1px solid
884
1198
  ${r??n.colors.neutral[200]};
885
1199
  `}
886
- `,zs=s.td`
1200
+ `,Pn=s.td`
887
1201
  text-align: center;
888
1202
  color: ${({theme:o})=>o.colors.neutral[400]};
889
1203
  padding: ${({theme:o})=>`${o.spacing[4]} ${o.spacing[3]}`};
890
1204
  font-size: ${({theme:o})=>o.fontSizes.sm};
891
1205
  border-bottom: none;
892
- `,Ts=s.keyframes`
1206
+ `,Ln=s.keyframes`
893
1207
  0% { background-position: -400px 0; }
894
1208
  100% { background-position: 400px 0; }
895
- `,Is=s(Mo)``,Ms=s.div`
1209
+ `,Nn=s(ar)``,Fn=s.div`
896
1210
  height: 14px;
897
1211
  border-radius: 4px;
898
1212
  background: linear-gradient(
@@ -902,13 +1216,14 @@
902
1216
  ${({theme:o})=>o.colors.neutral[200]} 75%
903
1217
  );
904
1218
  background-size: 800px 100%;
905
- animation: ${Ts} 1.6s ease-in-out infinite;
906
- `,Ds=s.div`
1219
+ animation: ${Ln} 1.6s ease-in-out infinite;
1220
+ `,Bn=s.div`
907
1221
  display: flex;
908
1222
  align-items: center;
909
- justify-content: center;
1223
+ justify-content: ${({$hasPageSizeOptions:o})=>o?"space-between":"center"};
910
1224
  gap: ${({theme:o})=>o.spacing[1]};
911
1225
  padding: ${({theme:o})=>`${o.spacing[2]} ${o.spacing[3]}`};
1226
+ flex-shrink: 0;
912
1227
 
913
1228
  ${({theme:o})=>o.brutalism?s.css`
914
1229
  border-top: ${o.brutalism.borderWidth} solid
@@ -916,7 +1231,44 @@
916
1231
  `:s.css`
917
1232
  border-top: 1px solid ${o.colors.neutral[200]};
918
1233
  `}
919
- `,Z=s.button`
1234
+ `,Vn=s.label`
1235
+ display: flex;
1236
+ align-items: center;
1237
+ gap: ${({theme:o})=>o.spacing[2]};
1238
+ font-size: ${({theme:o})=>o.fontSizes.sm};
1239
+ color: ${({theme:o})=>o.colors.neutral[500]};
1240
+ white-space: nowrap;
1241
+
1242
+ select {
1243
+ padding: ${({theme:o})=>`${o.spacing[1]} ${o.spacing[2]}`};
1244
+ font-size: ${({theme:o})=>o.fontSizes.sm};
1245
+ font-family: inherit;
1246
+ color: ${({theme:o})=>o.colors.neutral[900]};
1247
+ background-color: ${({theme:o})=>o.colors.neutral[0]};
1248
+ cursor: pointer;
1249
+
1250
+ ${({theme:o})=>o.brutalism?s.css`
1251
+ border: ${o.brutalism.borderWidth} solid
1252
+ ${o.colors.neutral[900]};
1253
+ `:s.css`
1254
+ border: 1px solid ${o.colors.neutral[300]};
1255
+ border-radius: ${o.radius.md};
1256
+
1257
+ &:hover {
1258
+ border-color: ${o.colors.neutral[400]};
1259
+ }
1260
+
1261
+ &:focus {
1262
+ outline: 2px solid ${o.colors.primary[500]};
1263
+ outline-offset: 1px;
1264
+ }
1265
+ `}
1266
+ }
1267
+ `,An=s.div`
1268
+ display: flex;
1269
+ align-items: center;
1270
+ gap: ${({theme:o})=>o.spacing[1]};
1271
+ `,xo=s.button`
920
1272
  display: inline-flex;
921
1273
  align-items: center;
922
1274
  justify-content: center;
@@ -959,17 +1311,17 @@
959
1311
  outline: 2px solid ${({theme:o})=>o.colors.primary[500]};
960
1312
  outline-offset: 2px;
961
1313
  }
962
- `,Es=4;function Ps(o,r){return o?.key!==r?t.jsx(nr,{size:14}):o.direction==="asc"?t.jsx(er,{size:14}):t.jsx(rr,{size:14})}function Do({columns:o,data:r,rowKey:n,size:e="md",striped:l,bordered:i,stickyHeader:c,caption:d,emptyMessage:p="No data",loading:$,sort:b,defaultSort:w,onSortChange:x,pageSize:f,page:y,defaultPage:h,totalRows:j,onPageChange:I,onChange:v,onRowClick:g,borderColor:k,headerColor:z,rowColor:S,stripeColor:C,className:T,style:D}){const{activeSort:M,sortedData:R,handleSort:E}=bs({data:r,sort:b,defaultSort:w,onSortChange:x}),{activePage:P,totalPages:V,displayData:u,handlePageChange:O}=ys({data:R,pageSize:f,page:y,defaultPage:h,totalRows:j,onPageChange:I}),F=m=>{const W=E(m);v?.({sort:W,page:P})},L=m=>{O(m),v?.({sort:M,page:m})},U=(m,W)=>String(n?m[n]:W),K=!$&&u.length===0,Wo=f??Es;return t.jsxs(hs,{$borderColor:k,$stickyHeader:c,className:T,style:D,children:[t.jsxs(ws,{$size:e,children:[d&&t.jsx("caption",{children:d}),t.jsx(ms,{$headerColor:z,$borderColor:k,$stickyHeader:c,children:t.jsx(Y,{children:o.map(m=>t.jsx(Ss,{$size:e,$bordered:i,scope:"col",style:m.width?{width:m.width}:void 0,children:m.sortable?t.jsxs(js,{type:"button",onClick:()=>F(m.key),"aria-label":`Sort by ${m.header}${M?.key===m.key?`, ${M.direction}ending`:""}`,children:[m.header,t.jsx(Cs,{"aria-hidden":"true",children:Ps(M,m.key)})]}):m.header},m.key))})}),t.jsx(vs,{$striped:l,$rowColor:S,$stripeColor:C,children:$?Array.from({length:Wo}).map((m,W)=>t.jsx(Y,{children:o.map(G=>t.jsx(Is,{$size:e,$bordered:i,$borderColor:k,children:t.jsx(Ms,{})},G.key))},W)):K?t.jsx("tr",{children:t.jsx(zs,{colSpan:o.length,children:p})}):u.map((m,W)=>{const G=g?ks:Y;return t.jsx(G,{onClick:g?()=>g(m):void 0,$accentColor:g?k:void 0,children:o.map(_=>t.jsx(Mo,{$size:e,$bordered:i,$borderColor:k,children:_.render?_.render(m[_.key],m,W):String(m[_.key]??"")||" "},_.key))},U(m,W))})})]}),f&&V>1&&t.jsxs(Ds,{children:[t.jsx(Z,{type:"button",onClick:()=>L(P-1),disabled:P<=1,"aria-label":"Previous page",children:"←"}),xs(P,V).map((m,W)=>m==="..."?t.jsx("span",{"aria-hidden":"true",style:{padding:"0 4px"},children:"…"},`e${W}`):t.jsx(Z,{type:"button",$active:m===P,onClick:()=>L(m),"aria-label":`Page ${m}`,"aria-current":m===P?"page":void 0,children:m},m)),t.jsx(Z,{type:"button",onClick:()=>L(P+1),disabled:P>=V,"aria-label":"Next page",children:"→"})]})]})}Do.displayName="Table";function Ws({defaultSort:o,defaultPage:r=1}={}){const[n,e]=a.useState(o??null),[l,i]=a.useState(r);return{sort:n,page:l,onSortChange:p=>{e(p),i(1)},onPageChange:p=>{i(p)}}}const Os=s.p`
1314
+ `,_n=4;function Hn(o,r){return o?.key!==r?t.jsx(Or,{size:14}):o.direction==="asc"?t.jsx(Pr,{size:14}):t.jsx(Er,{size:14})}function lr({columns:o,data:r,rowKey:n,size:e="md",striped:i,bordered:l,stickyHeader:d,stickyPagination:f,caption:u,emptyMessage:p="No data",loading:g,sort:w,defaultSort:v,onSortChange:y,pageSize:k,page:j,defaultPage:W,totalRows:O,onPageChange:E,pageSizeOptions:x,onPageSizeChange:z,onChange:m,onRowClick:b,borderColor:S,headerColor:I,rowColor:C,stripeColor:M,className:L,style:F}){const{activeSort:P,sortedData:A,handleSort:oo}=Sn({data:r,sort:w,defaultSort:v,onSortChange:y}),{activePage:D,totalPages:V,displayData:ro,handlePageChange:_}=zn({data:A,pageSize:k,page:j,defaultPage:W,totalRows:O,onPageChange:E}),X=h=>{const N=oo(h);m?.({sort:N,page:D})},U=h=>{_(h),m?.({sort:P,page:h})},so=(h,N)=>String(n?h[n]:N),B=!g&&ro.length===0,H=k??_n,q=!!k&&V>1,K=!!x?.length,J=t.jsxs(Tn,{$size:e,children:[u&&t.jsx("caption",{children:u}),t.jsx(Dn,{$headerColor:I,$borderColor:S,$stickyHeader:d,children:t.jsx(lo,{children:o.map(h=>t.jsx(Mn,{$size:e,$bordered:l,scope:"col",style:h.width?{width:h.width}:void 0,children:h.sortable?t.jsxs(On,{type:"button",onClick:()=>X(h.key),"aria-label":`Sort by ${h.header}${P?.key===h.key?`, ${P.direction}ending`:""}`,children:[h.header,t.jsx(Rn,{"aria-hidden":"true",children:Hn(P,h.key)})]}):h.header},h.key))})}),t.jsx(Wn,{$striped:i,$rowColor:C,$stripeColor:M,children:g?Array.from({length:H}).map((h,N)=>t.jsx(lo,{children:o.map(Z=>t.jsx(Nn,{$size:e,$bordered:l,$borderColor:S,children:t.jsx(Fn,{})},Z.key))},N)):B?t.jsx("tr",{children:t.jsx(Pn,{colSpan:o.length,children:p})}):ro.map((h,N)=>{const Z=b?En:lo;return t.jsx(Z,{onClick:b?()=>b(h):void 0,$accentColor:b?S:void 0,children:o.map($=>t.jsx(ar,{$size:e,$bordered:l,$borderColor:S,children:$.render?$.render(h[$.key],h,N):String(h[$.key]??"")||" "},$.key))},so(h,N))})})]}),Q=(q||K)&&t.jsxs(Bn,{$hasPageSizeOptions:K,children:[K&&t.jsxs(Vn,{children:["Rows per page:",t.jsx("select",{value:k,onChange:h=>z?.(Number(h.target.value)),"aria-label":"Rows per page",children:x.map(h=>t.jsx("option",{value:h,children:h},h))})]}),q&&t.jsxs(An,{children:[t.jsx(xo,{type:"button",onClick:()=>U(D-1),disabled:D<=1,"aria-label":"Previous page",children:"←"}),jn(D,V).map((h,N)=>h==="..."?t.jsx("span",{"aria-hidden":"true",style:{padding:"0 4px"},children:"…"},`e${N}`):t.jsx(xo,{type:"button",$active:h===D,onClick:()=>U(h),"aria-label":`Page ${h}`,"aria-current":h===D?"page":void 0,children:h},h)),t.jsx(xo,{type:"button",onClick:()=>U(D+1),disabled:D>=V,"aria-label":"Next page",children:"→"})]})]});return t.jsxs(Cn,{$borderColor:S,$stickyPagination:f,className:L,style:F,children:[f?t.jsx(In,{children:J}):J,Q]})}lr.displayName="Table";const Yn=s.p`
963
1315
  margin: 0;
964
1316
  font-size: ${({theme:o})=>o.fontSizes.md};
965
1317
  color: ${({theme:o})=>o.colors.neutral[600]};
966
1318
  line-height: 1.5;
967
- `,Ns=s.button`
1319
+ `,Un=s.button`
968
1320
  display: inline-flex;
969
1321
  align-items: center;
970
1322
  justify-content: center;
971
1323
  border-radius: ${({theme:o})=>o.radius.md};
972
- font-weight: 600;
1324
+ font-weight: ${({theme:o})=>o.fontWeights.semibold};
973
1325
  cursor: pointer;
974
1326
  padding: ${({theme:o})=>o.spacing[2]} ${({theme:o})=>o.spacing[4]};
975
1327
  font-size: ${({theme:o})=>o.fontSizes.md};
@@ -1004,12 +1356,12 @@
1004
1356
  box-shadow: 2px 2px 0 ${o.colors.neutral[900]};
1005
1357
  }
1006
1358
  `}
1007
- `;function no({open:o,title:r="Are you sure?",message:n,confirmLabel:e="Confirm",cancelLabel:l="Cancel",variant:i="default",size:c="sm",onConfirm:d,onCancel:p}){return t.jsx(ro,{open:o,onClose:p,title:r,size:c,closeOnBackdrop:!1,footer:t.jsxs(t.Fragment,{children:[t.jsx(H,{variant:"outline",onClick:p,children:l}),i==="danger"?t.jsx(Ns,{type:"button",onClick:d,children:e}):t.jsx(H,{variant:"primary",onClick:d,children:e})]}),children:t.jsx(Os,{children:n})})}no.displayName="ConfirmDialog";const Eo=a.createContext(null);function Fs({children:o}){const[r,n]=a.useState(null),e=a.useCallback(c=>new Promise(d=>{n({...c,resolve:d})}),[]),l=()=>{r?.resolve(!0),n(null)},i=()=>{r?.resolve(!1),n(null)};return t.jsxs(Eo.Provider,{value:{confirm:e},children:[o,r&&t.jsx(no,{open:!0,title:r.title,message:r.message,confirmLabel:r.confirmLabel,cancelLabel:r.cancelLabel,variant:r.variant,size:r.size,onConfirm:l,onCancel:i})]})}function Ls(){const o=a.useContext(Eo);if(!o)throw new Error("useConfirm must be used within a ConfirmProvider");return o.confirm}const Bs=s.div`
1359
+ `;function ko({open:o,title:r="Are you sure?",message:n,confirmLabel:e="Confirm",cancelLabel:i="Cancel",variant:l="default",size:d="sm",onConfirm:f,onCancel:u}){return t.jsx(wo,{open:o,onClose:u,title:r,size:d,closeOnBackdrop:!1,footer:t.jsxs(t.Fragment,{children:[t.jsx(co,{variant:"outline",onClick:u,children:i}),l==="danger"?t.jsx(Un,{type:"button",onClick:f,children:e}):t.jsx(co,{variant:"primary",onClick:f,children:e})]}),children:t.jsx(Yn,{children:n})})}ko.displayName="ConfirmDialog";const cr=a.createContext(null);function qn({children:o}){const[r,n]=a.useState(null),e=a.useCallback(d=>new Promise(f=>{n({...d,resolve:f})}),[]),i=()=>{r?.resolve(!0),n(null)},l=()=>{r?.resolve(!1),n(null)};return t.jsxs(cr.Provider,{value:{confirm:e},children:[o,r&&t.jsx(ko,{open:!0,title:r.title,message:r.message,confirmLabel:r.confirmLabel,cancelLabel:r.cancelLabel,variant:r.variant,size:r.size,onConfirm:i,onCancel:l})]})}function Kn(){const o=a.useContext(cr);if(!o)throw new Error("useConfirm must be used within a ConfirmProvider");return o.confirm}const Gn=s.div`
1008
1360
  position: relative;
1009
1361
  display: inline-flex;
1010
1362
  flex-direction: column;
1011
1363
  gap: ${({theme:o})=>o.spacing[1]};
1012
- `,Rs=s.div`
1364
+ `,Xn=s.div`
1013
1365
  display: flex;
1014
1366
  align-items: center;
1015
1367
  border-radius: ${({theme:o})=>o.radius.md};
@@ -1054,19 +1406,19 @@
1054
1406
  outline: none;
1055
1407
  box-shadow: ${({theme:o})=>o.shadows.focusRing};
1056
1408
  }
1057
- `,Vs=s.span`
1409
+ `,Jn=s.span`
1058
1410
  flex: 1;
1059
1411
  color: ${({$hasValue:o,theme:r})=>o?r.colors.neutral[900]:r.colors.neutral[400]};
1060
1412
  white-space: nowrap;
1061
1413
  overflow: hidden;
1062
1414
  text-overflow: ellipsis;
1063
- `,_s=s.span`
1415
+ `,Qn=s.span`
1064
1416
  display: inline-flex;
1065
1417
  align-items: center;
1066
1418
  margin-left: ${({theme:o})=>o.spacing[2]};
1067
1419
  color: ${({theme:o})=>o.colors.neutral[500]};
1068
1420
  flex-shrink: 0;
1069
- `,As=s.button`
1421
+ `,Zn=s.button`
1070
1422
  display: inline-flex;
1071
1423
  align-items: center;
1072
1424
  margin-left: ${({theme:o})=>o.spacing[2]};
@@ -1086,10 +1438,10 @@
1086
1438
  outline-offset: 2px;
1087
1439
  border-radius: 2px;
1088
1440
  }
1089
- `,Ys=s.span`
1441
+ `;s.span`
1090
1442
  font-size: ${({theme:o})=>o.fontSizes.xs};
1091
1443
  color: ${({$error:o,theme:r})=>o?r.colors.error[500]:r.colors.neutral[500]};
1092
- `,Hs=s.div`
1444
+ `;const ot=s.div`
1093
1445
  position: absolute;
1094
1446
  top: calc(100% + 4px);
1095
1447
  left: 0;
@@ -1108,12 +1460,12 @@
1108
1460
  border: 1px solid ${o.colors.neutral[200]};
1109
1461
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
1110
1462
  `}
1111
- `,qs=s.div`
1463
+ `,rt=s.div`
1112
1464
  display: flex;
1113
1465
  align-items: center;
1114
1466
  justify-content: space-between;
1115
1467
  margin-bottom: ${({theme:o})=>o.spacing[3]};
1116
- `,uo=s.button`
1468
+ `,Mo=s.button`
1117
1469
  display: inline-flex;
1118
1470
  align-items: center;
1119
1471
  justify-content: center;
@@ -1143,24 +1495,24 @@
1143
1495
  transform: translate(1px, 1px);
1144
1496
  }
1145
1497
  `}
1146
- `,Us=s.span`
1147
- font-weight: 600;
1498
+ `,st=s.span`
1499
+ font-weight: ${({theme:o})=>o.fontWeights.semibold};
1148
1500
  font-size: ${({theme:o})=>o.fontSizes.md};
1149
1501
  color: ${({theme:o})=>o.colors.neutral[900]};
1150
- `,Ks=s.div`
1502
+ `,nt=s.div`
1151
1503
  display: grid;
1152
1504
  grid-template-columns: repeat(7, 1fr);
1153
- gap: 2px;
1154
- `,Gs=s.span`
1505
+ gap: ${({theme:o})=>o.spacing[.5]};
1506
+ `,tt=s.span`
1155
1507
  display: flex;
1156
1508
  align-items: center;
1157
1509
  justify-content: center;
1158
1510
  font-size: ${({theme:o})=>o.fontSizes.xs};
1159
- font-weight: 600;
1511
+ font-weight: ${({theme:o})=>o.fontWeights.semibold};
1160
1512
  color: ${({theme:o})=>o.colors.neutral[500]};
1161
1513
  padding: ${({theme:o})=>o.spacing[1]};
1162
- margin-bottom: 2px;
1163
- `,po=s.button`
1514
+ margin-bottom: ${({theme:o})=>o.spacing[.5]};
1515
+ `,yo=s.button`
1164
1516
  display: flex;
1165
1517
  align-items: center;
1166
1518
  justify-content: center;
@@ -1171,15 +1523,15 @@
1171
1523
  cursor: pointer;
1172
1524
  font-size: ${({theme:o})=>o.fontSizes.sm};
1173
1525
  padding: ${({theme:o})=>o.spacing[1]};
1174
- font-weight: ${({$today:o,$selected:r})=>o||r?"600":"400"};
1526
+ font-weight: ${({$today:o,$selected:r,$rangeStart:n,$rangeEnd:e,$inRange:i,theme:l})=>o||r||n||e?l.fontWeights.semibold:l.fontWeights.normal};
1175
1527
  pointer-events: ${({$currentMonth:o})=>o?"auto":"none"};
1176
1528
 
1177
- color: ${({$currentMonth:o,$selected:r,$today:n,theme:e})=>o?r?e.colors.primary.contrast:n?e.colors.primary[500]:e.colors.neutral[900]:e.colors.neutral[300]};
1529
+ color: ${({$currentMonth:o,$selected:r,$today:n,$rangeStart:e,$rangeEnd:i,theme:l})=>o?r||e||i?l.colors.primary.contrast:n?l.colors.primary[500]:l.colors.neutral[900]:l.colors.neutral[300]};
1178
1530
 
1179
- background-color: ${({$selected:o,theme:r})=>o?r.colors.primary[500]:"transparent"};
1531
+ background-color: ${({$selected:o,$rangeStart:r,$rangeEnd:n,$inRange:e,$currentMonth:i,theme:l})=>i?o||r||n?l.colors.primary[500]:e?l.colors.primary[50]:"transparent":"transparent"};
1180
1532
 
1181
1533
  &:hover:not(:disabled) {
1182
- background-color: ${({$selected:o,theme:r})=>o?r.colors.primary[700]:r.colors.neutral[100]};
1534
+ background-color: ${({$selected:o,$rangeStart:r,$rangeEnd:n,theme:e})=>o||r||n?e.colors.primary[700]:e.colors.neutral[100]};
1183
1535
  }
1184
1536
 
1185
1537
  &:disabled {
@@ -1192,13 +1544,13 @@
1192
1544
  outline-offset: 1px;
1193
1545
  }
1194
1546
 
1195
- ${({$selected:o,$today:r,theme:n})=>n.brutalism&&(o||r)&&s.css`
1196
- border: ${n.brutalism.borderWidth} solid ${n.colors.neutral[900]};
1197
- ${o&&s.css`
1198
- box-shadow: 2px 2px 0 ${n.colors.neutral[900]};
1547
+ ${({$selected:o,$rangeStart:r,$rangeEnd:n,$today:e,theme:i})=>i.brutalism&&(o||r||n||e)&&s.css`
1548
+ border: ${i.brutalism.borderWidth} solid ${i.colors.neutral[900]};
1549
+ ${(o||r||n)&&s.css`
1550
+ box-shadow: 2px 2px 0 ${i.colors.neutral[900]};
1199
1551
  `}
1200
1552
  `}
1201
- `,Js=["January","February","March","April","May","June","July","August","September","October","November","December"],Xs=["Su","Mo","Tu","We","Th","Fr","Sa"];function fo(o,r){return new Date(o,r+1,0).getDate()}function Zs(o,r){return new Date(o,r,1).getDay()}function $o(o,r){return o.getFullYear()===r.getFullYear()&&o.getMonth()===r.getMonth()&&o.getDate()===r.getDate()}function Qs(o,r,n){if(r){const e=new Date(r.getFullYear(),r.getMonth(),r.getDate());if(o<e)return!0}if(n){const e=new Date(n.getFullYear(),n.getMonth(),n.getDate());if(o>e)return!0}return!1}function on(o){return o.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}function rn(o){return o.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})}function Po({value:o=null,onChange:r,placeholder:n="Select date...",size:e="md",disabled:l=!1,clearable:i=!1,minDate:c,maxDate:d,formatDate:p,id:$,error:b}){const w=a.useId(),x=$??w,f=new Date,[y,h]=a.useState(!1),[j,I]=a.useState(()=>(o??f).getFullYear()),[v,g]=a.useState(()=>(o??f).getMonth()),k=a.useRef(null);a.useEffect(()=>{if(!y)return;const u=O=>{k.current&&!k.current.contains(O.target)&&h(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[y]),a.useEffect(()=>{o&&(I(o.getFullYear()),g(o.getMonth()))},[o]);const z=o?p?p(o):on(o):"",S=u=>{r?.(new Date(j,v,u)),h(!1)},C=u=>{u.stopPropagation(),r?.(null)},T=()=>{v===0?(g(11),I(u=>u-1)):g(u=>u-1)},D=()=>{v===11?(g(0),I(u=>u+1)):g(u=>u+1)},M=fo(j,v),R=Zs(j,v),E=[],P=fo(v===0?j-1:j,v===0?11:v-1);for(let u=R-1;u>=0;u--)E.push({day:P-u,currentMonth:!1});for(let u=1;u<=M;u++)E.push({day:u,currentMonth:!0});const V=42-E.length;for(let u=1;u<=V;u++)E.push({day:u,currentMonth:!1});return t.jsxs(Bs,{ref:k,children:[t.jsxs(Rs,{id:x,$size:e,$error:!!b,$disabled:l,role:"combobox","aria-haspopup":"true","aria-expanded":y,tabIndex:l?-1:0,onClick:()=>{l||h(u=>!u)},onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&!l&&(u.preventDefault(),h(O=>!O)),u.key==="Escape"&&h(!1)},children:[t.jsx(Vs,{$hasValue:!!o,children:z||n}),i&&o?t.jsx(As,{type:"button",onClick:C,"aria-label":"Clear date",children:t.jsx(Q,{size:14})}):t.jsx(_s,{"aria-hidden":"true",children:t.jsx(ar,{size:14})})]}),typeof b=="string"&&t.jsx(Ys,{$error:!0,children:b}),y&&t.jsxs(Hs,{role:"dialog","aria-label":"Calendar",children:[t.jsxs(qs,{children:[t.jsx(uo,{type:"button",onClick:T,"aria-label":"Previous month",children:t.jsx(dr,{size:16})}),t.jsxs(Us,{children:[Js[v]," ",j]}),t.jsx(uo,{type:"button",onClick:D,"aria-label":"Next month",children:t.jsx(pr,{size:16})})]}),t.jsxs(Ks,{children:[Xs.map(u=>t.jsx(Gs,{children:u},u)),E.map((u,O)=>{if(!u.currentMonth)return t.jsx(po,{type:"button",$currentMonth:!1,$selected:!1,$today:!1,disabled:!0,tabIndex:-1,children:u.day},O);const F=new Date(j,v,u.day),L=o?$o(F,o):!1,U=$o(F,f),K=Qs(F,c,d);return t.jsx(po,{type:"button",$currentMonth:!0,$selected:L,$today:U,disabled:K,"aria-label":rn(F),"aria-pressed":L,onClick:()=>S(u.day),children:u.day},O)})]})]})]})}Po.displayName="DatePicker";function sn(o){const r=parseInt(o.slice(1,3),16)/255,n=parseInt(o.slice(3,5),16)/255,e=parseInt(o.slice(5,7),16)/255,l=c=>c<=.03928?c/12.92:((c+.055)/1.055)**2.4;return .2126*l(r)+.7152*l(n)+.0722*l(e)>.179?"#111111":"#ffffff"}const q={colors:{primary:{50:"#fffde6",500:"#ffd000",700:"#ffd000",contrast:"#111111"},neutral:{0:"#ffffff",100:"#f5f0e8",200:"#e8e3db",300:"#ccc8c0",400:"#a8a49c",500:"#706c64",600:"#3c3830",900:"#111111"},error:{50:"#fff0f0",500:"#ff3333"},success:{50:"#f0fff4",500:"#00cc44"},warning:{50:"#fffbe6",500:"#ff9900"},info:{50:"#f0f0ff",500:"#3333ff"}},spacing:{1:"4px",2:"8px",3:"12px",4:"16px",5:"20px",6:"24px"},radius:{md:"2px"},zIndex:{modal:1e3,toast:1100},fontSizes:{xs:"12px",sm:"14px",md:"16px",lg:"18px"},shadows:{focusRing:"3px 3px 0 #111111"},brutalism:{borderWidth:"2px",shadowOffset:"4px"}};function nn(o){return{...q,colors:{...q.colors,primary:{50:"#fffff0",500:o,700:o,contrast:sn(o)}}}}function tn({theme:o=q,children:r}){return t.jsx(s.ThemeProvider,{theme:o,children:r})}const en=s.createGlobalStyle`
1553
+ `,et=["January","February","March","April","May","June","July","August","September","October","November","December"],it=["Su","Mo","Tu","We","Th","Fr","Sa"];function Oo(o,r){return new Date(o,r+1,0).getDate()}function at(o,r){return new Date(o,r,1).getDay()}function eo(o,r){return o.getFullYear()===r.getFullYear()&&o.getMonth()===r.getMonth()&&o.getDate()===r.getDate()}function lt(o,r,n){if(r){const e=new Date(r.getFullYear(),r.getMonth(),r.getDate());if(o<e)return!0}if(n){const e=new Date(n.getFullYear(),n.getMonth(),n.getDate());if(o>e)return!0}return!1}function Ro(o){return o.toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}function Po(o){return o.toLocaleDateString("en-US",{weekday:"long",month:"long",day:"numeric",year:"numeric"})}function ho(o){if(!o)return null;const r=o.split("-");if(r.length!==3)return null;const n=parseInt(r[0],10),e=parseInt(r[1],10),i=parseInt(r[2],10);return isNaN(n)||isNaN(e)||isNaN(i)?null:new Date(n,e-1,i)}function to(o){const r=o.getFullYear(),n=String(o.getMonth()+1).padStart(2,"0"),e=String(o.getDate()).padStart(2,"0");return`${r}-${n}-${e}`}function dr({name:o,label:r,value:n,onChange:e,placeholder:i="Select date...",size:l="md",disabled:d=!1,clearable:f=!1,minDate:u,maxDate:p,formatDate:g,error:w,required:v,helperText:y,mode:k="single",nameFrom:j,nameTo:W,valueFrom:O,valueTo:E}){const x=k==="range",z=ho(n??""),m=ho(O??""),b=ho(E??""),S=new Date,I=()=>x?m??b??S:z??S,[C,M]=a.useState(!1),[L,F]=a.useState(()=>I().getFullYear()),[P,A]=a.useState(()=>I().getMonth()),[oo,D]=a.useState("from"),V=a.useRef(null);a.useEffect(()=>{if(!C)return;const $=R=>{V.current&&!V.current.contains(R.target)&&(M(!1),x&&D("from"))};return document.addEventListener("mousedown",$),()=>document.removeEventListener("mousedown",$)},[C,x]),a.useEffect(()=>{!x&&z&&(F(z.getFullYear()),A(z.getMonth()))},[n,x]),a.useEffect(()=>{x&&m&&(F(m.getFullYear()),A(m.getMonth()))},[O,x]);const _=(()=>{if(!x)return z?g?g(z):Ro(z):"";if(!m&&!b)return"";const $=g??Ro;return m&&b?`${$(m)} - ${$(b)}`:m?`${$(m)} - ...`:""})(),X=x?!!(m||b):!!z,U=$=>{const R=new Date(L,P,$);if(!x){e(o??"",to(R)),M(!1);return}if(oo==="from"){e(j??"",to(R)),D("to");return}if(!m){e(j??"",to(R)),D("to");return}if(eo(R,m)){e(j??"",""),e(W??"",""),D("from");return}if(R>=m){e(W??"",to(R)),D("from"),M(!1);return}e(W??"",to(m)),e(j??"",to(R)),D("from"),M(!1)},so=$=>{$.stopPropagation(),x?(e(j??"",""),e(W??"",""),D("from")):e(o??"","")},B=()=>{if(d)return;const $=!C;M($),!$&&x&&D("from")},H=$=>{if(($.key==="Enter"||$.key===" ")&&!d){$.preventDefault();const R=!C;M(R),!R&&x&&D("from")}$.key==="Escape"&&(M(!1),x&&D("from"))},q=()=>{P===0?(A(11),F($=>$-1)):A($=>$-1)},K=()=>{P===11?(A(0),F($=>$+1)):A($=>$+1)},J=Oo(L,P),Q=at(L,P),h=[],N=Oo(P===0?L-1:L,P===0?11:P-1);for(let $=Q-1;$>=0;$--)h.push({day:N-$,currentMonth:!1});for(let $=1;$<=J;$++)h.push({day:$,currentMonth:!0});const Z=42-h.length;for(let $=1;$<=Z;$++)h.push({day:$,currentMonth:!1});return t.jsx(vo,{label:r,error:w,helperText:y,required:v,children:t.jsxs(Gn,{ref:V,children:[t.jsxs(Xn,{$size:l,$error:!!w,$disabled:d,role:"combobox","aria-haspopup":"true","aria-expanded":C,tabIndex:d?-1:0,onClick:B,onKeyDown:H,children:[t.jsx(Jn,{$hasValue:X,children:_||i}),f&&X?t.jsx(Zn,{type:"button",onClick:so,"aria-label":"Clear date",children:t.jsx(po,{size:14})}):t.jsx(Qn,{"aria-hidden":"true",children:t.jsx(Nr,{size:14})})]}),C&&t.jsxs(ot,{role:"dialog","aria-label":"Calendar",children:[t.jsxs(rt,{children:[t.jsx(Mo,{type:"button",onClick:q,"aria-label":"Previous month",children:t.jsx(Vr,{size:16})}),t.jsxs(st,{children:[et[P]," ",L]}),t.jsx(Mo,{type:"button",onClick:K,"aria-label":"Next month",children:t.jsx(_r,{size:16})})]}),t.jsxs(nt,{children:[it.map($=>t.jsx(tt,{children:$},$)),h.map(($,R)=>{if(!$.currentMonth)return t.jsx(yo,{type:"button",$currentMonth:!1,$selected:!1,$today:!1,disabled:!0,tabIndex:-1,children:$.day},R);const c=new Date(L,P,$.day),T=eo(c,S),Y=lt(c,u,p);if(x){const So=m?eo(c,m):!1,jo=b?eo(c,b):!1,ur=m&&b?c>m&&c<b:!1;return t.jsx(yo,{type:"button",$currentMonth:!0,$selected:!1,$today:T,$rangeStart:So,$rangeEnd:jo,$inRange:ur,disabled:Y,"aria-label":Po(c),"aria-pressed":So||jo,onClick:()=>U($.day),children:$.day},R)}const io=z?eo(c,z):!1;return t.jsx(yo,{type:"button",$currentMonth:!0,$selected:io,$today:T,disabled:Y,"aria-label":Po(c),"aria-pressed":io,onClick:()=>U($.day),children:$.day},R)})]})]})]})})}dr.displayName="DatePicker";function ct(o){const r=parseInt(o.slice(1,3),16)/255,n=parseInt(o.slice(3,5),16)/255,e=parseInt(o.slice(5,7),16)/255,i=d=>d<=.03928?d/12.92:((d+.055)/1.055)**2.4;return .2126*i(r)+.7152*i(n)+.0722*i(e)>.179?"#111111":"#ffffff"}const uo={colors:{primary:{50:"#fffde6",500:"#ffd000",700:"#ffd000",contrast:"#111111"},neutral:{0:"#ffffff",100:"#f5f0e8",200:"#e8e3db",300:"#ccc8c0",400:"#a8a49c",500:"#706c64",600:"#3c3830",900:"#111111"},error:{50:"#fff0f0",500:"#ff3333"},success:{50:"#f0fff4",500:"#00cc44"},warning:{50:"#fffbe6",500:"#ff9900"},info:{50:"#f0f0ff",500:"#3333ff"}},spacing:{.5:"2px",1:"4px",2:"8px",3:"12px",4:"16px",5:"20px",6:"24px",8:"32px",10:"40px"},radius:{md:"2px"},zIndex:{modal:1e3,toast:1100},fontSizes:{xs:"12px",sm:"14px",md:"16px",lg:"18px"},fontWeights:{normal:"400",medium:"500",semibold:"600",bold:"700"},shadows:{focusRing:"3px 3px 0 #111111"},brutalism:{borderWidth:"2px",shadowOffset:"4px"}};function dt(o){return{...uo,colors:{...uo.colors,primary:{50:"#fffff0",500:o,700:o,contrast:ct(o)}}}}function ut({theme:o=uo,children:r}){return t.jsx(s.ThemeProvider,{theme:o,children:r})}const ft=s.createGlobalStyle`
1202
1554
  *, *::before, *::after {
1203
1555
  box-sizing: border-box;
1204
1556
  margin: 0;
@@ -1215,4 +1567,4 @@
1215
1567
  button, input, select, textarea {
1216
1568
  font-family: inherit;
1217
1569
  }
1218
- `;exports.Badge=go;exports.Button=H;exports.CollapsibleCard=zo;exports.ConfirmDialog=no;exports.ConfirmProvider=Fs;exports.DatePicker=Po;exports.Editable=vo;exports.Field=ko;exports.Form=jo;exports.FormField=Co;exports.GlobalStyles=en;exports.Input=xo;exports.Link=oo;exports.Modal=ro;exports.Select=mo;exports.Spinner=To;exports.Table=Do;exports.Textarea=yo;exports.ThemeProvider=tn;exports.Toast=so;exports.ToastProvider=Hr;exports.createNeoBrutalTheme=nn;exports.neoBrutalTheme=q;exports.useConfirm=Ls;exports.useForm=Zr;exports.useTable=Ws;exports.useToast=qr;
1570
+ `;exports.Badge=Lo;exports.Button=co;exports.Checkbox=rr;exports.CollapsibleCard=tr;exports.ConfirmDialog=ko;exports.ConfirmProvider=qn;exports.DatePicker=dr;exports.Editable=_o;exports.Field=Ho;exports.Form=or;exports.FormField=vo;exports.GlobalStyles=ft;exports.Input=No;exports.Link=mo;exports.Modal=wo;exports.Radio=sr;exports.Select=Ao;exports.Spinner=er;exports.Switch=nr;exports.Table=lr;exports.Textarea=Fo;exports.ThemeProvider=ut;exports.Toast=Qo;exports.ToastProvider=Cs;exports.composeValidators=Vs;exports.createNeoBrutalTheme=dt;exports.isEmail=Ns;exports.isUrl=Fs;exports.maxLength=Ls;exports.minLength=Ps;exports.neoBrutalTheme=uo;exports.pattern=Bs;exports.required=Rs;exports.useConfirm=Kn;exports.useForm=Os;exports.useTable=vn;exports.useToast=Is;