wimui 0.52.9 → 0.53.1

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.
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- var e=`_root_xia4z_4`,t=`_thinking_xia4z_23`,n=`_header_xia4z_41`,r=`_chevron_xia4z_76`,i=`_expanded_xia4z_81`,a=`_title_xia4z_84`,o=`_bodyWrapper_xia4z_89`,s=`_open_xia4z_94`,c=`_body_xia4z_89`,l=`_item_xia4z_119`,u=`_content_xia4z_122`,d=`_label_xia4z_125`,f=`_text_xia4z_141`,p=`_connector_xia4z_146`,m=`_spinner_xia4z_149`,h=`_pending_xia4z_168`,g=`_error_xia4z_171`,_=`_streaming_xia4z_177`,v={root:e,thinking:t,"thought-pulse":`_thought-pulse_xia4z_1`,header:n,chevron:r,expanded:i,title:a,bodyWrapper:o,open:s,body:c,item:l,content:u,label:d,text:f,connector:p,spinner:m,"thought-spin":`_thought-spin_xia4z_1`,pending:h,error:g,streaming:_,"cursor-blink":`_cursor-blink_xia4z_1`};exports.body=c,exports.bodyWrapper=o,exports.chevron=r,exports.connector=p,exports.content=u,exports.default=v,exports.error=g,exports.expanded=i,exports.header=n,exports.item=l,exports.label=d,exports.open=s,exports.pending=h,exports.root=e,exports.spinner=m,exports.streaming=_,exports.text=f,exports.thinking=t,exports.title=a;
2
+ var e=`_root_124ez_3`,t=`_thinking_124ez_22`,n=`_header_124ez_40`,r=`_chevron_124ez_75`,i=`_expanded_124ez_80`,a=`_title_124ez_83`,o=`_bodyWrapper_124ez_88`,s=`_open_124ez_93`,c=`_body_124ez_88`,l=`_item_124ez_118`,u=`_content_124ez_121`,d=`_label_124ez_124`,f=`_text_124ez_133`,p=`_connector_124ez_138`,m=`_spinner_124ez_141`,h=`_pending_124ez_160`,g=`_error_124ez_163`,_=`_streaming_124ez_169`,v={root:e,thinking:t,"thought-pulse":`_thought-pulse_124ez_1`,header:n,chevron:r,expanded:i,title:a,bodyWrapper:o,open:s,body:c,item:l,content:u,label:d,text:f,connector:p,spinner:m,"thought-spin":`_thought-spin_124ez_1`,pending:h,error:g,streaming:_,"cursor-blink":`_cursor-blink_124ez_1`};exports.body=c,exports.bodyWrapper=o,exports.chevron=r,exports.connector=p,exports.content=u,exports.default=v,exports.error=g,exports.expanded=i,exports.header=n,exports.item=l,exports.label=d,exports.open=s,exports.pending=h,exports.root=e,exports.spinner=m,exports.streaming=_,exports.text=f,exports.thinking=t,exports.title=a;
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  //#region src/components/ai/ThoughtProcess/thought-process.module.scss
3
- var e = "_root_xia4z_4", t = "_thinking_xia4z_23", n = "_header_xia4z_41", r = "_chevron_xia4z_76", i = "_expanded_xia4z_81", a = "_title_xia4z_84", o = "_bodyWrapper_xia4z_89", s = "_open_xia4z_94", c = "_body_xia4z_89", l = "_item_xia4z_119", u = "_content_xia4z_122", d = "_label_xia4z_125", f = "_text_xia4z_141", p = "_connector_xia4z_146", m = "_spinner_xia4z_149", h = "_pending_xia4z_168", g = "_error_xia4z_171", _ = "_streaming_xia4z_177", v = {
3
+ var e = "_root_124ez_3", t = "_thinking_124ez_22", n = "_header_124ez_40", r = "_chevron_124ez_75", i = "_expanded_124ez_80", a = "_title_124ez_83", o = "_bodyWrapper_124ez_88", s = "_open_124ez_93", c = "_body_124ez_88", l = "_item_124ez_118", u = "_content_124ez_121", d = "_label_124ez_124", f = "_text_124ez_133", p = "_connector_124ez_138", m = "_spinner_124ez_141", h = "_pending_124ez_160", g = "_error_124ez_163", _ = "_streaming_124ez_169", v = {
4
4
  root: e,
5
5
  thinking: t,
6
- "thought-pulse": "_thought-pulse_xia4z_1",
6
+ "thought-pulse": "_thought-pulse_124ez_1",
7
7
  header: n,
8
8
  chevron: r,
9
9
  expanded: i,
@@ -17,11 +17,11 @@ var e = "_root_xia4z_4", t = "_thinking_xia4z_23", n = "_header_xia4z_41", r = "
17
17
  text: f,
18
18
  connector: p,
19
19
  spinner: m,
20
- "thought-spin": "_thought-spin_xia4z_1",
20
+ "thought-spin": "_thought-spin_124ez_1",
21
21
  pending: h,
22
22
  error: g,
23
23
  streaming: _,
24
- "cursor-blink": "_cursor-blink_xia4z_1"
24
+ "cursor-blink": "_cursor-blink_124ez_1"
25
25
  };
26
26
  //#endregion
27
27
  export { c as body, o as bodyWrapper, r as chevron, p as connector, u as content, v as default, g as error, i as expanded, n as header, l as item, d as label, s as open, h as pending, e as root, m as spinner, _ as streaming, f as text, t as thinking, a as title };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../../i18n/useWimTranslation.cjs"),r=require("../../../i18n/generated/common.cjs"),i=require("../../layout/VisuallyHidden/VisuallyHidden.cjs"),a=require("../../../icon/more-horizontal.cjs"),o=require("../../media/Icon/Icon.cjs"),s=require("./kanban.module.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("classnames");l=e.__toESM(l,1);let u=require("react/jsx-runtime");var d=(0,c.forwardRef)(({columns:e,onMove:i,onCardMove:a,className:o,forceMobileUI:d=!1,children:p,asChild:m=!1,...g},v)=>{let{t:y}=n.useWimTranslation(r.commonNs),[b,x]=(0,c.useState)(null),[S,C]=(0,c.useState)(null),[w,T]=(0,c.useState)(null),E=i||a,D=(e,t,n)=>{x({itemId:t,columnId:n}),e.dataTransfer.setData(`text/plain`,`${n}:${t}`),e.dataTransfer.effectAllowed=`move`},O=(e,t)=>{e.preventDefault(),C(t)},k=(e,t)=>{e.preventDefault(),C(null);let[n,r]=e.dataTransfer.getData(`text/plain`).split(`:`);E?.(r,n,t),x(null)},A=(e,t,n)=>{E?.(e,t,n),T(null)},j=c.default.useMemo(()=>{if(e)return e;let t=[];return c.default.Children.forEach(p,e=>{if(c.default.isValidElement(e)){let n=e.props;typeof n.id==`string`&&typeof n.title==`string`&&t.push({id:n.id,title:n.title,items:[]})}}),t},[p,e]),M=()=>p||(e?e.map(e=>(0,u.jsx)(_,{id:e.id,title:e.title,cardCount:e.items.length,children:e.items.map(e=>(0,u.jsx)(h,{id:e.id,children:e.content},e.id))},e.id)):null),N=m?t.Root:`div`;return(0,u.jsx)(f.Provider,{value:{draggedItem:b,dragOverColumn:S,setDragOverColumn:C,handleDragStart:D,handleDragOver:O,handleDrop:k,handleMobileMove:A,activeMobileMenu:w,setActiveMobileMenu:T,columns:j},children:(0,u.jsx)(N,{...g,ref:v,className:(0,l.default)(`wim-kanban`,s.default.root,d&&s.default.touch,o),role:`region`,"aria-label":y(`a11y.kanban_board`),tabIndex:0,children:(0,u.jsx)(t.Slottable,{children:M()})})})}),f=c.default.createContext(null),p=()=>{let e=c.default.useContext(f);if(!e)throw Error(`Kanban compound components must be used within Kanban`);return e},m=({id:e,title:t,cardCount:a,children:o,className:d})=>{let{dragOverColumn:f,handleDragOver:m,handleDrop:h,setDragOverColumn:g}=p(),{t:_}=n.useWimTranslation(r.commonNs),v=c.default.useId();return(0,u.jsxs)(`div`,{className:(0,l.default)(s.default.column,{[s.default.dragOver]:f===e},d),role:`group`,"aria-labelledby":t?v:void 0,onDragOver:t=>m(t,e),onDrop:t=>h(t,e),onDragLeave:()=>g(null),children:[(0,u.jsxs)(`div`,{className:s.default.columnHeader,children:[(0,u.jsx)(`div`,{id:v,className:s.default.columnTitle,"aria-hidden":`true`,children:t}),a!==void 0&&(0,u.jsxs)(`div`,{className:s.default.columnCount,children:[(0,u.jsx)(`span`,{"aria-hidden":`true`,children:a}),(0,u.jsx)(i.VisuallyHidden,{children:_(`a11y.kanban_column_count`,{count:a})})]})]}),(0,u.jsx)(`div`,{className:s.default.columnBody,children:o})]})},h=({id:e,children:t,disabled:i,className:d})=>{let{t:f}=n.useWimTranslation(r.commonNs),{draggedItem:m,handleDragStart:h,handleMobileMove:_,activeMobileMenu:v,setActiveMobileMenu:y,columns:b}=p(),x=c.default.useContext(g);return(0,u.jsxs)(`div`,{className:(0,l.default)(s.default.card,{[s.default.dragging]:m?.itemId===e,[s.default.disabled]:i},d),draggable:!i,onDragStart:t=>x&&h(t,e,x),children:[(0,u.jsx)(`div`,{className:s.default.cardContent,children:t}),(0,u.jsxs)(`div`,{className:s.default.cardMove,children:[(0,u.jsx)(`button`,{type:`button`,className:s.default.cardMoveBtn,onClick:()=>y(v===e?null:e),"aria-label":f(`a11y.move_card`),disabled:i,children:(0,u.jsx)(o.Icon,{component:a.default,size:`sm`})}),v===e&&(0,u.jsx)(`div`,{className:s.default.cardMoveMenu,role:`listbox`,"aria-label":f(`a11y.move_to_column`),children:b.filter(e=>e.id!==x).map(t=>(0,u.jsx)(`button`,{type:`button`,className:s.default.cardMoveOption,onClick:()=>x&&_(e,x,t.id),role:`option`,"aria-selected":!1,children:t.title},t.id))})]})]})},g=c.default.createContext(null),_=e=>(0,u.jsx)(g.Provider,{value:e.id,children:(0,u.jsx)(m,{...e})}),v=d;v.Column=_,v.Card=h,d.displayName=`Kanban`,v.displayName=`KanbanBoard`,m.displayName=`KanbanColumn`,h.displayName=`KanbanCard`,_.displayName=`KanbanColumnWrapper`,exports.Kanban=d,exports.KanbanBoard=v,exports.default=v,exports.KanbanCard=h,exports.KanbanColumn=m;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../node_modules/@radix-ui/react-slot/dist/index.cjs"),n=require("../../../i18n/useWimTranslation.cjs"),r=require("../../../i18n/generated/common.cjs"),i=require("../../layout/VisuallyHidden/VisuallyHidden.cjs"),a=require("../../../icon/more-horizontal.cjs"),o=require("../../media/Icon/Icon.cjs"),s=require("./kanban.module.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("classnames");l=e.__toESM(l,1);let u=require("react/jsx-runtime");var d=(0,c.forwardRef)(({columns:e,onMove:i,onCardMove:a,className:o,forceMobileUI:d=!1,children:p,asChild:m=!1,...g},_)=>{let{t:y}=n.useWimTranslation(r.commonNs),[b,x]=(0,c.useState)(null),[S,C]=(0,c.useState)(null),[w,T]=(0,c.useState)(null),E=i||a,D=(e,t,n)=>{x({itemId:t,columnId:n}),e.dataTransfer.setData(`text/plain`,`${n}:${t}`),e.dataTransfer.effectAllowed=`move`},O=(e,t)=>{e.preventDefault(),C(t)},k=(e,t)=>{e.preventDefault(),C(null);let[n,r]=e.dataTransfer.getData(`text/plain`).split(`:`);E?.(r,n,t),x(null)},A=(e,t,n)=>{E?.(e,t,n),T(null)},j=c.default.useMemo(()=>{if(e)return e;let t=[];return c.default.Children.forEach(p,e=>{if(c.default.isValidElement(e)){let n=e.props;typeof n.id==`string`&&typeof n.title==`string`&&t.push({id:n.id,title:n.title,items:[]})}}),t},[p,e]),M=()=>p||(e?e.map(e=>(0,u.jsx)(v,{id:e.id,title:e.title,cardCount:e.items.length,children:e.items.map(e=>(0,u.jsx)(h,{id:e.id,children:e.content},e.id))},e.id)):null),N=m?t.Root:`div`;return(0,u.jsx)(f.Provider,{value:{draggedItem:b,dragOverColumn:S,setDragOverColumn:C,handleDragStart:D,handleDragOver:O,handleDrop:k,handleMobileMove:A,activeMobileMenu:w,setActiveMobileMenu:T,columns:j},children:(0,u.jsx)(N,{...g,ref:_,className:(0,l.default)(`wim-kanban`,s.default.root,d&&s.default.touch,o),role:`region`,"aria-label":y(`a11y.kanban_board`),tabIndex:0,children:(0,u.jsx)(t.Slottable,{children:M()})})})}),f=c.default.createContext(null),p=()=>{let e=c.default.useContext(f);if(!e)throw Error(`Kanban compound components must be used within Kanban`);return e},m=({id:e,title:t,cardCount:a,children:o,className:d})=>{let{dragOverColumn:f,handleDragOver:m,handleDrop:g,setDragOverColumn:v}=p(),{t:y}=n.useWimTranslation(r.commonNs),b=c.default.useId(),x=c.default.Children.toArray(o),S=x.length>0&&x.every(e=>c.default.isValidElement(e)&&e.type===h);return(0,u.jsxs)(`div`,{className:(0,l.default)(s.default.column,{[s.default.dragOver]:f===e},d),role:`group`,"aria-labelledby":t?b:void 0,onDragOver:t=>m(t,e),onDrop:t=>g(t,e),onDragLeave:()=>v(null),children:[(0,u.jsxs)(`div`,{className:s.default.columnHeader,children:[(0,u.jsx)(`div`,{id:b,className:s.default.columnTitle,"aria-hidden":`true`,children:t}),a!==void 0&&(0,u.jsxs)(`div`,{className:s.default.columnCount,children:[(0,u.jsx)(`span`,{"aria-hidden":`true`,children:a}),(0,u.jsx)(i.VisuallyHidden,{children:y(`a11y.kanban_column_count`,{count:a})})]})]}),(0,u.jsx)(`div`,{className:s.default.columnBody,role:S?`list`:void 0,children:(0,u.jsx)(_.Provider,{value:S,children:o})})]})},h=({id:e,children:t,disabled:i,className:d})=>{let{t:f}=n.useWimTranslation(r.commonNs),{draggedItem:m,handleDragStart:h,handleMobileMove:v,activeMobileMenu:y,setActiveMobileMenu:b,columns:x}=p(),S=c.default.useContext(g),C=c.default.useContext(_);return(0,u.jsxs)(`div`,{role:C?`listitem`:void 0,className:(0,l.default)(s.default.card,{[s.default.dragging]:m?.itemId===e,[s.default.disabled]:i},d),draggable:!i,onDragStart:t=>S&&h(t,e,S),children:[(0,u.jsx)(`div`,{className:s.default.cardContent,children:t}),(0,u.jsxs)(`div`,{className:s.default.cardMove,children:[(0,u.jsx)(`button`,{type:`button`,className:s.default.cardMoveBtn,onClick:()=>b(y===e?null:e),"aria-label":f(`a11y.move_card`),disabled:i,children:(0,u.jsx)(o.Icon,{component:a.default,size:`sm`})}),y===e&&(0,u.jsx)(`div`,{className:s.default.cardMoveMenu,role:`listbox`,"aria-label":f(`a11y.move_to_column`),children:x.filter(e=>e.id!==S).map(t=>(0,u.jsx)(`button`,{type:`button`,className:s.default.cardMoveOption,onClick:()=>S&&v(e,S,t.id),role:`option`,"aria-selected":!1,children:t.title},t.id))})]})]})},g=c.default.createContext(null),_=c.default.createContext(!1),v=e=>(0,u.jsx)(g.Provider,{value:e.id,children:(0,u.jsx)(m,{...e})}),y=d;y.Column=v,y.Card=h,d.displayName=`Kanban`,y.displayName=`KanbanBoard`,m.displayName=`KanbanColumn`,h.displayName=`KanbanCard`,v.displayName=`KanbanColumnWrapper`,exports.Kanban=d,exports.KanbanBoard=y,exports.default=y,exports.KanbanCard=h,exports.KanbanColumn=m;
@@ -11,7 +11,7 @@ import d from "classnames";
11
11
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
12
12
  //#region src/components/data-display/Kanban/Kanban.tsx
13
13
  var m = l(({ columns: i, onMove: a, onCardMove: o, className: l, forceMobileUI: p = !1, children: m, asChild: g = !1, ..._ }, y) => {
14
- let { t: x } = n(r), [S, C] = u(null), [w, T] = u(null), [E, D] = u(null), O = a || o, k = (e, t, n) => {
14
+ let { t: b } = n(r), [S, C] = u(null), [w, T] = u(null), [E, D] = u(null), O = a || o, k = (e, t, n) => {
15
15
  C({
16
16
  itemId: t,
17
17
  columnId: n
@@ -37,7 +37,7 @@ var m = l(({ columns: i, onMove: a, onCardMove: o, className: l, forceMobileUI:
37
37
  });
38
38
  }
39
39
  }), e;
40
- }, [m, i]), P = () => m || (i ? i.map((e) => /* @__PURE__ */ f(b, {
40
+ }, [m, i]), P = () => m || (i ? i.map((e) => /* @__PURE__ */ f(x, {
41
41
  id: e.id,
42
42
  title: e.title,
43
43
  cardCount: e.items.length,
@@ -64,7 +64,7 @@ var m = l(({ columns: i, onMove: a, onCardMove: o, className: l, forceMobileUI:
64
64
  ref: y,
65
65
  className: d("wim-kanban", s.root, p && s.touch, l),
66
66
  role: "region",
67
- "aria-label": x("a11y.kanban_board"),
67
+ "aria-label": b("a11y.kanban_board"),
68
68
  tabIndex: 0,
69
69
  children: /* @__PURE__ */ f(t, { children: P() })
70
70
  })
@@ -74,18 +74,18 @@ var m = l(({ columns: i, onMove: a, onCardMove: o, className: l, forceMobileUI:
74
74
  if (!e) throw Error("Kanban compound components must be used within Kanban");
75
75
  return e;
76
76
  }, _ = ({ id: e, title: t, cardCount: a, children: o, className: l }) => {
77
- let { dragOverColumn: u, handleDragOver: m, handleDrop: h, setDragOverColumn: _ } = g(), { t: v } = n(r), y = c.useId();
77
+ let { dragOverColumn: u, handleDragOver: m, handleDrop: h, setDragOverColumn: _ } = g(), { t: y } = n(r), x = c.useId(), S = c.Children.toArray(o), C = S.length > 0 && S.every((e) => c.isValidElement(e) && e.type === v);
78
78
  return /* @__PURE__ */ p("div", {
79
79
  className: d(s.column, { [s.dragOver]: u === e }, l),
80
80
  role: "group",
81
- "aria-labelledby": t ? y : void 0,
81
+ "aria-labelledby": t ? x : void 0,
82
82
  onDragOver: (t) => m(t, e),
83
83
  onDrop: (t) => h(t, e),
84
84
  onDragLeave: () => _(null),
85
85
  children: [/* @__PURE__ */ p("div", {
86
86
  className: s.columnHeader,
87
87
  children: [/* @__PURE__ */ f("div", {
88
- id: y,
88
+ id: x,
89
89
  className: s.columnTitle,
90
90
  "aria-hidden": "true",
91
91
  children: t
@@ -94,22 +94,27 @@ var m = l(({ columns: i, onMove: a, onCardMove: o, className: l, forceMobileUI:
94
94
  children: [/* @__PURE__ */ f("span", {
95
95
  "aria-hidden": "true",
96
96
  children: a
97
- }), /* @__PURE__ */ f(i, { children: v("a11y.kanban_column_count", { count: a }) })]
97
+ }), /* @__PURE__ */ f(i, { children: y("a11y.kanban_column_count", { count: a }) })]
98
98
  })]
99
99
  }), /* @__PURE__ */ f("div", {
100
100
  className: s.columnBody,
101
- children: o
101
+ role: C ? "list" : void 0,
102
+ children: /* @__PURE__ */ f(b.Provider, {
103
+ value: C,
104
+ children: o
105
+ })
102
106
  })]
103
107
  });
104
108
  }, v = ({ id: e, children: t, disabled: i, className: l }) => {
105
- let { t: u } = n(r), { draggedItem: m, handleDragStart: h, handleMobileMove: _, activeMobileMenu: v, setActiveMobileMenu: b, columns: x } = g(), S = c.useContext(y);
109
+ let { t: u } = n(r), { draggedItem: m, handleDragStart: h, handleMobileMove: _, activeMobileMenu: v, setActiveMobileMenu: x, columns: S } = g(), C = c.useContext(y), w = c.useContext(b);
106
110
  return /* @__PURE__ */ p("div", {
111
+ role: w ? "listitem" : void 0,
107
112
  className: d(s.card, {
108
113
  [s.dragging]: m?.itemId === e,
109
114
  [s.disabled]: i
110
115
  }, l),
111
116
  draggable: !i,
112
- onDragStart: (t) => S && h(t, e, S),
117
+ onDragStart: (t) => C && h(t, e, C),
113
118
  children: [/* @__PURE__ */ f("div", {
114
119
  className: s.cardContent,
115
120
  children: t
@@ -118,7 +123,7 @@ var m = l(({ columns: i, onMove: a, onCardMove: o, className: l, forceMobileUI:
118
123
  children: [/* @__PURE__ */ f("button", {
119
124
  type: "button",
120
125
  className: s.cardMoveBtn,
121
- onClick: () => b(v === e ? null : e),
126
+ onClick: () => x(v === e ? null : e),
122
127
  "aria-label": u("a11y.move_card"),
123
128
  disabled: i,
124
129
  children: /* @__PURE__ */ f(o, {
@@ -129,10 +134,10 @@ var m = l(({ columns: i, onMove: a, onCardMove: o, className: l, forceMobileUI:
129
134
  className: s.cardMoveMenu,
130
135
  role: "listbox",
131
136
  "aria-label": u("a11y.move_to_column"),
132
- children: x.filter((e) => e.id !== S).map((t) => /* @__PURE__ */ f("button", {
137
+ children: S.filter((e) => e.id !== C).map((t) => /* @__PURE__ */ f("button", {
133
138
  type: "button",
134
139
  className: s.cardMoveOption,
135
- onClick: () => S && _(e, S, t.id),
140
+ onClick: () => C && _(e, C, t.id),
136
141
  role: "option",
137
142
  "aria-selected": !1,
138
143
  children: t.title
@@ -140,10 +145,10 @@ var m = l(({ columns: i, onMove: a, onCardMove: o, className: l, forceMobileUI:
140
145
  })]
141
146
  })]
142
147
  });
143
- }, y = c.createContext(null), b = (e) => /* @__PURE__ */ f(y.Provider, {
148
+ }, y = c.createContext(null), b = c.createContext(!1), x = (e) => /* @__PURE__ */ f(y.Provider, {
144
149
  value: e.id,
145
150
  children: /* @__PURE__ */ f(_, { ...e })
146
- }), x = m;
147
- x.Column = b, x.Card = v, m.displayName = "Kanban", x.displayName = "KanbanBoard", _.displayName = "KanbanColumn", v.displayName = "KanbanCard", b.displayName = "KanbanColumnWrapper";
151
+ }), S = m;
152
+ S.Column = x, S.Card = v, m.displayName = "Kanban", S.displayName = "KanbanBoard", _.displayName = "KanbanColumn", v.displayName = "KanbanCard", x.displayName = "KanbanColumnWrapper";
148
153
  //#endregion
149
- export { m as Kanban, x as KanbanBoard, x as default, v as KanbanCard, _ as KanbanColumn };
154
+ export { m as Kanban, S as KanbanBoard, S as default, v as KanbanCard, _ as KanbanColumn };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./leaderboard.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=n.default.forwardRef(({entries:e,unit:n,size:a=`md`,className:o,...s},c)=>(0,i.jsx)(`ol`,{ref:c,className:(0,r.default)(`wim-leaderboard`,t.default.root,t.default[a],o),...s,children:e.map((e,a)=>{let o=a+1;return(0,i.jsxs)(`li`,{"aria-current":e.highlight?!0:void 0,className:(0,r.default)(t.default.item,o<=3&&t.default[`rank${o}`],e.highlight&&t.default.highlight),children:[(0,i.jsx)(`span`,{className:t.default.rank,"aria-hidden":`true`,children:o}),e.avatar&&(0,i.jsx)(`img`,{src:e.avatar,alt:``,className:t.default.avatar,"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:t.default.name,children:e.name}),(0,i.jsxs)(`span`,{className:t.default.score,children:[(0,i.jsx)(`span`,{className:t.default.scoreValue,children:e.score}),n&&(0,i.jsx)(`span`,{className:t.default.unit,children:n})]})]},e.id)})}));a.displayName=`Leaderboard`,exports.Leaderboard=a;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./leaderboard.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=n.default.forwardRef(({entries:e,unit:n,size:a=`md`,showMedals:o=!1,className:s,...c},l)=>(0,i.jsx)(`ol`,{ref:l,className:(0,r.default)(`wim-leaderboard`,t.default.root,t.default[a],s),...c,children:e.map((e,a)=>{let s=a+1;return(0,i.jsxs)(`li`,{"aria-current":e.highlight?!0:void 0,className:(0,r.default)(t.default.item,o&&s<=3&&t.default[`rank${s}`],e.highlight&&t.default.highlight),children:[(0,i.jsx)(`span`,{className:t.default.rank,"aria-hidden":`true`,children:s}),e.avatar&&(0,i.jsx)(`img`,{src:e.avatar,alt:``,className:t.default.avatar,"aria-hidden":`true`}),(0,i.jsx)(`span`,{className:t.default.name,children:e.name}),(0,i.jsxs)(`span`,{className:t.default.score,children:[(0,i.jsx)(`span`,{className:t.default.scoreValue,children:e.score}),n&&(0,i.jsx)(`span`,{className:t.default.unit,children:n})]})]},e.id)})}));a.displayName=`Leaderboard`,exports.Leaderboard=a;
@@ -14,9 +14,11 @@ export type LeaderboardProps = React.ComponentPropsWithoutRef<"ol"> & {
14
14
  unit?: string;
15
15
  /** Size */
16
16
  size?: ComponentSizeBasic;
17
+ /** Whether to paint the rank badges of the top three in gold, silver and bronze (off by default: the number and the order already say the rank) */
18
+ showMedals?: boolean;
17
19
  };
18
20
  /**
19
- * Component that displays a scored ranking. The top 3 entries get medal colors.
21
+ * Component that displays a scored ranking. Pass `showMedals` to give the top 3 entries medal colors.
20
22
  */
21
23
  export declare const Leaderboard: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & {
22
24
  /** List of ranking entries */
@@ -25,4 +27,6 @@ export declare const Leaderboard: React.ForwardRefExoticComponent<Omit<React.Det
25
27
  unit?: string;
26
28
  /** Size */
27
29
  size?: ComponentSizeBasic;
30
+ /** Whether to paint the rank badges of the top three in gold, silver and bronze (off by default: the number and the order already say the rank) */
31
+ showMedals?: boolean;
28
32
  } & React.RefAttributes<HTMLOListElement>>;
@@ -4,20 +4,20 @@ import t from "react";
4
4
  import n from "classnames";
5
5
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
6
  //#region src/components/data-display/Leaderboard/Leaderboard.tsx
7
- var a = t.forwardRef(({ entries: t, unit: a, size: o = "md", className: s, ...c }, l) => /* @__PURE__ */ r("ol", {
8
- ref: l,
9
- className: n("wim-leaderboard", e.root, e[o], s),
10
- ...c,
7
+ var a = t.forwardRef(({ entries: t, unit: a, size: o = "md", showMedals: s = !1, className: c, ...l }, u) => /* @__PURE__ */ r("ol", {
8
+ ref: u,
9
+ className: n("wim-leaderboard", e.root, e[o], c),
10
+ ...l,
11
11
  children: t.map((t, o) => {
12
- let s = o + 1;
12
+ let c = o + 1;
13
13
  return /* @__PURE__ */ i("li", {
14
14
  "aria-current": t.highlight ? !0 : void 0,
15
- className: n(e.item, s <= 3 && e[`rank${s}`], t.highlight && e.highlight),
15
+ className: n(e.item, s && c <= 3 && e[`rank${c}`], t.highlight && e.highlight),
16
16
  children: [
17
17
  /* @__PURE__ */ r("span", {
18
18
  className: e.rank,
19
19
  "aria-hidden": "true",
20
- children: s
20
+ children: c
21
21
  }),
22
22
  t.avatar && /* @__PURE__ */ r("img", {
23
23
  src: t.avatar,
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../layout/InteractiveArea/InteractiveArea.cjs"),n=require("../../../icon/alert-circle.cjs"),r=require("../../../icon/check.cjs"),i=require("../../../icon/circle.cjs"),a=require("../../../icon/info-circle.cjs"),o=require("../../media/Icon/Icon.cjs"),s=require("./result.module.cjs");let c=require("react");c=e.__toESM(c,1);let l=require("classnames");l=e.__toESM(l,1);let u=require("react/jsx-runtime");var d=({intent:e,status:t,className:s})=>{if(t)return(0,u.jsx)(o.Icon,{component:n.default,color:`text-tertiary`,className:s});switch(e){case`success`:return(0,u.jsx)(o.Icon,{component:r.default,color:`success`,className:s});case`danger`:return(0,u.jsx)(o.Icon,{component:n.default,color:`danger`,className:s});case`warning`:return(0,u.jsx)(o.Icon,{component:n.default,color:`warning`,className:s});case`info`:return(0,u.jsx)(o.Icon,{component:a.default,color:`info`,className:s});default:return(0,u.jsx)(o.Icon,{component:i.default,color:`text-tertiary`,className:s})}},f=({intent:e=`default`,status:n,title:r,description:i,extra:a,icon:o,iconSurface:c=!1,className:f,children:p})=>(0,u.jsx)(t.InteractiveArea,{icon:o||(0,u.jsx)(d,{intent:e,status:n,className:s.default.icon}),title:r??void 0,description:i??void 0,actions:a,variant:`none`,bgVariant:`transparent`,className:(0,l.default)(`wim-result`,s.default.root,e&&s.default[e],n&&s.default[n],c&&s.default.iconSurface,f),styles:{inner:s.default.inner,icon:s.default.icon,content:s.default.content},children:p});exports.Result=f;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../layout/InteractiveArea/InteractiveArea.cjs"),n=require("../../../icon/alert-circle.cjs"),r=require("../../../icon/check.cjs"),i=require("../../../icon/info-circle.cjs"),a=require("../../media/Icon/Icon.cjs"),o=require("./result.module.cjs");let s=require("react");s=e.__toESM(s,1);let c=require("classnames");c=e.__toESM(c,1);let l=require("react/jsx-runtime");var u=({intent:e,status:t,className:o})=>{if(t)return(0,l.jsx)(a.Icon,{component:n.default,color:`text-tertiary`,className:o});switch(e){case`success`:return(0,l.jsx)(a.Icon,{component:r.default,color:`success`,className:o});case`danger`:return(0,l.jsx)(a.Icon,{component:n.default,color:`danger`,className:o});case`warning`:return(0,l.jsx)(a.Icon,{component:n.default,color:`warning`,className:o});case`info`:return(0,l.jsx)(a.Icon,{component:i.default,color:`info`,className:o});default:return null}},d=({intent:e=`default`,status:n,title:r,description:i,extra:a,icon:s,iconSurface:d=!1,className:f,children:p})=>(0,l.jsx)(t.InteractiveArea,{icon:s||(n||e!=="default"?(0,l.jsx)(u,{intent:e,status:n,className:o.default.icon}):void 0),title:r??void 0,description:i??void 0,actions:a,variant:`none`,bgVariant:`transparent`,className:(0,c.default)(`wim-result`,o.default.root,e&&o.default[e],n&&o.default[n],d&&o.default.iconSurface,f),styles:{inner:o.default.inner,icon:o.default.icon,content:o.default.content},children:p});exports.Result=d;
@@ -4,7 +4,7 @@ export type ResultIntent = Extract<WimIntent, "default" | "success" | "danger" |
4
4
  export type ResultHttpStatus = "404" | "403" | "500";
5
5
  export type ResultProps = {
6
6
  /**
7
- * Semantic intent — determines the icon and color.
7
+ * Semantic intent — determines the icon and color. `default` draws no icon unless `icon` is passed.
8
8
  * @default "default"
9
9
  */
10
10
  intent?: ResultIntent;
@@ -2,65 +2,60 @@
2
2
  import { InteractiveArea as e } from "../../layout/InteractiveArea/InteractiveArea.js";
3
3
  import t from "../../../icon/alert-circle.js";
4
4
  import n from "../../../icon/check.js";
5
- import r from "../../../icon/circle.js";
6
- import i from "../../../icon/info-circle.js";
7
- import { Icon as a } from "../../media/Icon/Icon.js";
8
- import o from "./result.module.js";
5
+ import r from "../../../icon/info-circle.js";
6
+ import { Icon as i } from "../../media/Icon/Icon.js";
7
+ import a from "./result.module.js";
9
8
  import "react";
10
- import s from "classnames";
11
- import { jsx as c } from "react/jsx-runtime";
9
+ import o from "classnames";
10
+ import { jsx as s } from "react/jsx-runtime";
12
11
  //#region src/components/feedback/Result/Result.tsx
13
- var l = ({ intent: e, status: o, className: s }) => {
14
- if (o) return /* @__PURE__ */ c(a, {
12
+ var c = ({ intent: e, status: a, className: o }) => {
13
+ if (a) return /* @__PURE__ */ s(i, {
15
14
  component: t,
16
15
  color: "text-tertiary",
17
- className: s
16
+ className: o
18
17
  });
19
18
  switch (e) {
20
- case "success": return /* @__PURE__ */ c(a, {
19
+ case "success": return /* @__PURE__ */ s(i, {
21
20
  component: n,
22
21
  color: "success",
23
- className: s
22
+ className: o
24
23
  });
25
- case "danger": return /* @__PURE__ */ c(a, {
24
+ case "danger": return /* @__PURE__ */ s(i, {
26
25
  component: t,
27
26
  color: "danger",
28
- className: s
27
+ className: o
29
28
  });
30
- case "warning": return /* @__PURE__ */ c(a, {
29
+ case "warning": return /* @__PURE__ */ s(i, {
31
30
  component: t,
32
31
  color: "warning",
33
- className: s
32
+ className: o
34
33
  });
35
- case "info": return /* @__PURE__ */ c(a, {
36
- component: i,
37
- color: "info",
38
- className: s
39
- });
40
- default: return /* @__PURE__ */ c(a, {
34
+ case "info": return /* @__PURE__ */ s(i, {
41
35
  component: r,
42
- color: "text-tertiary",
43
- className: s
36
+ color: "info",
37
+ className: o
44
38
  });
39
+ default: return null;
45
40
  }
46
- }, u = ({ intent: t = "default", status: n, title: r, description: i, extra: a, icon: u, iconSurface: d = !1, className: f, children: p }) => /* @__PURE__ */ c(e, {
47
- icon: u || /* @__PURE__ */ c(l, {
41
+ }, l = ({ intent: t = "default", status: n, title: r, description: i, extra: l, icon: u, iconSurface: d = !1, className: f, children: p }) => /* @__PURE__ */ s(e, {
42
+ icon: u || (n || t !== "default" ? /* @__PURE__ */ s(c, {
48
43
  intent: t,
49
44
  status: n,
50
- className: o.icon
51
- }),
45
+ className: a.icon
46
+ }) : void 0),
52
47
  title: r ?? void 0,
53
48
  description: i ?? void 0,
54
- actions: a,
49
+ actions: l,
55
50
  variant: "none",
56
51
  bgVariant: "transparent",
57
- className: s("wim-result", o.root, t && o[t], n && o[n], d && o.iconSurface, f),
52
+ className: o("wim-result", a.root, t && a[t], n && a[n], d && a.iconSurface, f),
58
53
  styles: {
59
- inner: o.inner,
60
- icon: o.icon,
61
- content: o.content
54
+ inner: a.inner,
55
+ icon: a.icon,
56
+ content: a.content
62
57
  },
63
58
  children: p
64
59
  });
65
60
  //#endregion
66
- export { u as Result };
61
+ export { l as Result };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./anchor.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=({items:e=[],bounds:a=5,offset:o=0,direction:s=`vertical`,className:c,style:l})=>{let[u,d]=(0,n.useState)(``),[f,p]=(0,n.useState)({}),m=(0,n.useRef)(null),h=(e,t)=>{e.preventDefault();let n=t.replace(`#`,``),r=document.getElementById(n);r&&(window.scrollTo({top:r.offsetTop-o,behavior:`smooth`}),d(t))};(0,n.useLayoutEffect)(()=>{let t=()=>{let t=(e,n)=>{let r=[];return e.forEach(e=>{r.push({href:e.href,parentHref:n}),e.children&&(r=r.concat(t(e.children,n||e.href)))}),r},n=t(e),r=``,i=window.scrollY||document.documentElement.scrollTop,c=document.documentElement.scrollHeight,l=document.documentElement.clientHeight;if(i>0&&Math.ceil(i+l)>=c&&n.length>0){let e=n[n.length-1];r=s===`horizontal`&&e.parentHref?e.parentHref:e.href}else for(let e of n){let t=e.href.replace(`#`,``),n=document.getElementById(t);if(n){if(n.getBoundingClientRect().top<=o+a)r=s===`horizontal`&&e.parentHref?e.parentHref:e.href;else break}}r&&r!==u&&d(r)};return window.addEventListener(`scroll`,t),t(),()=>window.removeEventListener(`scroll`,t)},[e,o,a,u,s]),(0,n.useLayoutEffect)(()=>{if(!u||!m.current)return;let e=m.current.querySelector(`a[href="${u}"]`);if(e){let n=m.current.getBoundingClientRect();if(s===`vertical`){let t=e.getBoundingClientRect();p({top:t.top-n.top,height:t.height,opacity:1})}else{let r=m.current.querySelector(`.${t.default.list}`);if(r){let t=e.getBoundingClientRect(),i=r.getBoundingClientRect(),a=t.left-i.left+r.scrollLeft,o=a-i.width/2+t.width/2,s=r.scrollWidth-i.width,c=Math.max(0,Math.min(o,s)),l=a-c+(i.left-n.left);p({left:l,width:t.width,opacity:1}),r.scrollTo({left:c,behavior:`smooth`})}else{let t=e.getBoundingClientRect();p({left:t.left-m.current.getBoundingClientRect().left,width:t.width,opacity:1})}}}else p({opacity:0})},[u,s]);let g=e=>(0,i.jsx)(`ul`,{className:(0,r.default)(t.default.list,t.default[s]),children:e.map(e=>(0,i.jsxs)(`li`,{className:(0,r.default)(t.default.item,u===e.href&&t.default.active),children:[(0,i.jsx)(`a`,{href:e.href,className:t.default.link,onClick:t=>h(t,e.href),title:typeof e.title==`string`?e.title:void 0,children:e.title}),e.children&&s===`vertical`&&g(e.children)]},e.key))});return(0,i.jsxs)(`div`,{className:(0,r.default)(`wim-anchor`,t.default.root,t.default[s],c),style:l,ref:m,children:[(0,i.jsx)(`div`,{className:t.default.ink,children:(0,i.jsx)(`span`,{className:t.default.inkBall,style:f})}),g(e)]})};exports.Anchor=a,exports.default=a;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("./anchor.module.cjs");let n=require("react");n=e.__toESM(n,1);let r=require("classnames");r=e.__toESM(r,1);let i=require("react/jsx-runtime");var a=({items:e=[],bounds:a=5,offset:o=0,direction:s=`vertical`,className:c,style:l})=>{let[u,d]=(0,n.useState)(``),[f,p]=(0,n.useState)({}),m=(0,n.useRef)(null),h=(e,t)=>{e.preventDefault();let n=t.replace(`#`,``),r=document.getElementById(n);r&&(window.scrollTo({top:r.offsetTop-o,behavior:`smooth`}),d(t))};(0,n.useLayoutEffect)(()=>{let t=()=>{let t=(e,n)=>{let r=[];return e.forEach(e=>{r.push({href:e.href,parentHref:n}),e.children&&(r=r.concat(t(e.children,n||e.href)))}),r},n=t(e),r=``,i=window.scrollY||document.documentElement.scrollTop,c=document.documentElement.scrollHeight,l=document.documentElement.clientHeight;if(i>0&&Math.ceil(i+l)>=c&&n.length>0){let e=n[n.length-1];r=s===`horizontal`&&e.parentHref?e.parentHref:e.href}else for(let e of n){let t=e.href.replace(`#`,``),n=document.getElementById(t);if(n){if(n.getBoundingClientRect().top<=o+a)r=s===`horizontal`&&e.parentHref?e.parentHref:e.href;else break}}r&&r!==u&&d(r)};return window.addEventListener(`scroll`,t),t(),()=>window.removeEventListener(`scroll`,t)},[e,o,a,u,s]),(0,n.useLayoutEffect)(()=>{if(!u||!m.current)return;let e=m.current.querySelector(`a[href="${u}"]`);if(e){let n=m.current.getBoundingClientRect();if(s===`vertical`){let t=e.getBoundingClientRect();p({top:t.top-n.top,height:t.height,opacity:1})}else{let r=m.current.querySelector(`.${t.default.list}`);if(r){let t=e.getBoundingClientRect(),i=r.getBoundingClientRect(),a=t.left-i.left+r.scrollLeft,o=a-i.width/2+t.width/2,s=r.scrollWidth-i.width,c=Math.max(0,Math.min(o,s)),l=a-c+(i.left-n.left);p({left:l,width:t.width,opacity:1}),r.scrollTo({left:c,behavior:`smooth`})}else{let t=e.getBoundingClientRect();p({left:t.left-m.current.getBoundingClientRect().left,width:t.width,opacity:1})}}}else p({opacity:0})},[u,s]);let g=e=>(0,i.jsx)(`ul`,{className:(0,r.default)(t.default.list,t.default[s]),children:e.map(e=>(0,i.jsxs)(`li`,{className:(0,r.default)(t.default.item,u===e.href&&t.default.active),children:[(0,i.jsx)(`a`,{href:e.href,className:t.default.link,"aria-current":u===e.href?`location`:void 0,onClick:t=>h(t,e.href),title:typeof e.title==`string`?e.title:void 0,children:e.title}),e.children&&s===`vertical`&&g(e.children)]},e.key))});return(0,i.jsxs)(`div`,{className:(0,r.default)(`wim-anchor`,t.default.root,t.default[s],c),style:l,ref:m,children:[(0,i.jsx)(`div`,{className:t.default.ink,children:(0,i.jsx)(`span`,{className:t.default.inkBall,style:f})}),g(e)]})};exports.Anchor=a,exports.default=a;
@@ -85,6 +85,7 @@ var s = ({ items: s = [], bounds: c = 5, offset: l = 0, direction: u = "vertical
85
85
  children: [/* @__PURE__ */ a("a", {
86
86
  href: t.href,
87
87
  className: e.link,
88
+ "aria-current": p === t.href ? "location" : void 0,
88
89
  onClick: (e) => v(e, t.href),
89
90
  title: typeof t.title == "string" ? t.title : void 0,
90
91
  children: t.title
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## What this is
6
6
 
7
- **wimui** v0.52.9 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
7
+ **wimui** v0.53.1 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
8
8
 
9
9
  ## Install & required setup
10
10
 
@@ -854,7 +854,7 @@ number of pixels. Prefer the token so the gap follows the theme.
854
854
  @default "2xl"
855
855
  - `verticalSpacing: number | string` — Vertical spacing between rows (defaults to `spacing`)
856
856
  - `minChildWidth: number | string` — Minimum width of each child; columns wrap automatically to fit
857
- - **Splitter** — Split and resize panels
857
+ - **Splitter** — Split and resize panels (aka Resizable, Resizable Panels, Split Pane)
858
858
  - `orientation: "horizontal" | "vertical"` = "horizontal" — The orientation of the splitter.
859
859
  - `children: React.ReactNode` (required) — The components to render within the splitter. Usually a combination of `Splitter.Panel` and `Splitter.Handle`.
860
860
  - **Stack** — Vertical/Horizontal alignment
@@ -1051,7 +1051,7 @@ Use it when the field already does the same thing from the keyboard.
1051
1051
  so the unit does not have to be repeated in the label.
1052
1052
  - `styles: { root?: string; inner?: string; icon?: string; icons?: string; iconItem?: string; iconButton?: string; }` — Custom styles for internal parts
1053
1053
  - `asChild: boolean` = false — Whether to render as a child element.
1054
- - **Combobox** — Select with search
1054
+ - **Combobox** — Select with search (aka Autocomplete, Auto Complete)
1055
1055
  - `options: ComboboxOption[]` = [] — List of suggestion options
1056
1056
  - `onChange: (option: ComboboxOption) => void` — Callback when an option is selected
1057
1057
  - `placeholder: string` — Placeholder for the input
@@ -1198,7 +1198,7 @@ still do their job for assistive technology.
1198
1198
  - `htmlFor: string` — ID of the element the label points to
1199
1199
  - `errorId: string` — ID of the error message element
1200
1200
  - `styles: { root?: string; labelWrapper?: string; label?: string; content?: string; error?: string; }` — Custom styles for internal parts
1201
- - **FileUpload** — File selection
1201
+ - **FileUpload** — File selection (aka Upload, File Input)
1202
1202
  - `label: React.ReactNode` — Field label
1203
1203
  - `buttonLabel: React.ReactNode` — Label of the file selection button
1204
1204
  - `noFileLabel: React.ReactNode` — Text shown when no file is selected
@@ -1407,7 +1407,7 @@ so the unit does not have to be repeated in the label.
1407
1407
  - `allowDecimal: boolean` = false — Whether to allow decimal points (effective only when mode="number")
1408
1408
  - `allowNegative: boolean` = false — Whether to allow negative numbers (effective only when mode="number")
1409
1409
  - `asChild: boolean` = false — Whether to render as a child element.
1410
- - **OtpInput** — One-time password fields
1410
+ - **OtpInput** — One-time password fields (aka Pin Input, Input OTP, PIN Code Input)
1411
1411
  - `length: number` = 6 — Number of digits
1412
1412
  - `value: string` = "" — Current value (controlled)
1413
1413
  - `onChange: (value: string) => void` — Callback when the value changes
@@ -2000,7 +2000,7 @@ type therefore requires one of `label` / `aria-label` / `aria-labelledby`.
2000
2000
  - `indeterminate: boolean` = false — If true, shows an indeterminate animation instead of a value.
2001
2001
  @default false
2002
2002
  - **Result** — Task status indicator
2003
- - `intent: Extract< WimIntent, "default" | "success" | "danger" | "info" | "warning" >` = "default" — Semantic intent — determines the icon and color.
2003
+ - `intent: Extract< WimIntent, "default" | "success" | "danger" | "info" | "warning" >` = "default" — Semantic intent — determines the icon and color. `default` draws no icon unless `icon` is passed.
2004
2004
  @default "default"
2005
2005
  - `status: "404" | "403" | "500"` — HTTP error status — adds a status-specific CSS class and shows a neutral icon.
2006
2006
  Use for error pages (404, 403, 500).
@@ -2061,7 +2061,7 @@ follows the theme and never needs a hand-mixed colour.
2061
2061
  - `label: string` — Text label displayed next to the spinner.
2062
2062
  - `labelPosition: "right" | "bottom"` = "right" — Position of the label relative to the spinner.
2063
2063
  @default "right"
2064
- - **Toast** — Non-intrusive floating messages that provide feedback on system operations
2064
+ - **Toast** — Non-intrusive floating messages that provide feedback on system operations (aka Message, Sonner)
2065
2065
  - `id: string` — Identifier of the toast, passed to onClose. Used by ToastProvider to manage a stack.
2066
2066
  - `title: string` — Title of the toast.
2067
2067
  - `description: string` — Description text displayed below the title.
@@ -2208,7 +2208,7 @@ Defaults to a translated "Open menu" / "Close menu" (en / ja / pt), following th
2208
2208
  - `ariaLabel: string` — Accessibility label for the navigation
2209
2209
  - `onChange: (current: number) => void` — Callback function when a step is clicked (if applicable)
2210
2210
  - `asChild: boolean` — Whether to use the Radix Slot pattern
2211
- - **TabBar** — Mobile bottom navigation
2211
+ - **TabBar** — Mobile bottom navigation (aka Bottom Navigation, Bottom Tab Bar)
2212
2212
  - `fixed: boolean` = true — Pins the bar to the bottom of the **viewport**. Defaults to `true`.
2213
2213
 
2214
2214
  The pin is `position: fixed`, so the bar leaves whatever container you put
@@ -2483,10 +2483,11 @@ in; use `"center"` only when the empty state is the only thing in its region.
2483
2483
  - `onCardMove: (itemId: string, fromColumnId: string, toColumnId: string) => void` — Callback when a card is moved (legacy / alternative name).
2484
2484
  - `forceMobileUI: boolean` = false — Whether to force the touch-device UI.
2485
2485
  - `asChild: boolean` = false — Whether to render as a child element.
2486
- - **Leaderboard** — Display a ranked list of entries with scores and medal highlights for the top three positions.
2486
+ - **Leaderboard** — Display a ranked list of entries with scores. Medal colors for the top three are opt-in.
2487
2487
  - `entries: LeaderboardEntry[]` (required) — List of ranking entries
2488
2488
  - `unit: string` — Label for the score unit
2489
2489
  - `size: Extract<ComponentSize, "sm" | "md" | "lg">` = "md" — Size
2490
+ - `showMedals: boolean` = false — Whether to paint the rank badges of the top three in gold, silver and bronze (off by default: the number and the order already say the rank)
2490
2491
  - **List** — Structurally organized items in bullet points or numbered formats
2491
2492
  - `asChild: boolean` = false — Whether to render as a child element.
2492
2493
  - `size: Extract<ComponentSize, "sm" | "md" | "lg">` = "md" — Size of the list items
@@ -2641,7 +2642,7 @@ renders inline, next to whatever follows it.
2641
2642
  - `asChild: boolean` = false — If true, the component will be rendered as its child.
2642
2643
  - `onSortEnd: (oldIndex: number, newIndex: number) => void` — Callback called when reordering is completed.
2643
2644
  - `disabled: boolean` = false — Whether the entire list is disabled.
2644
- - **Stats** — A component to highlight key performance indicators and metrics
2645
+ - **Stats** — A component to highlight key performance indicators and metrics (aka Statistic, Stat)
2645
2646
  - `variant: React.ComponentProps<typeof Card>["variant"]` = "outline" — Visual style variant of the card
2646
2647
  - `asChild: boolean` = false — If true, the card will be rendered as its child, merging its props onto that child.
2647
2648
  - `interactive: boolean` = false — Whether the card is clickable: shows hover and press feedback and a pointer cursor
package/dist/llms.txt CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## What this is
6
6
 
7
- **wimui** v0.52.9 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
7
+ **wimui** v0.53.1 — a React 19 component library: 228 documented components across 10 categories, with design tokens, dark mode, i18n (en/ja/pt-BR) and WAI-ARIA compliant a11y. Peer deps: react ^19, react-dom ^19 (plus optional peers for specific components — see package.json).
8
8
 
9
9
  ## Install & required setup
10
10
 
@@ -221,7 +221,7 @@ export function BillingOverview() {
221
221
  - **ScrollArea** — A custom scrollbar component that provides high-performance, cross-browser consistent themes while maintaining a native-like feel.
222
222
  - **Sidebar** — A collapsible navigation or informational panel on the side of the screen (aka Source List, Inspector)
223
223
  - **SimpleGrid** — Responsive fixed grid
224
- - **Splitter** — Split and resize panels
224
+ - **Splitter** — Split and resize panels (aka Resizable, Resizable Panels, Split Pane)
225
225
  - **Stack** — Vertical/Horizontal alignment
226
226
  - **Toolbar** — Action strip for IconButton, ToggleGroup, and related controls with toolbar keyboard navigation. (aka Action Bar)
227
227
  - **Transition** — Utilities for managing smooth enter and leave animations with CSS classes
@@ -237,7 +237,7 @@ export function BillingOverview() {
237
237
  - **CheckboxGroup** — Shared state checkboxes
238
238
  - **ColorInput** — Input with color preview (aka Color Well, Color Field)
239
239
  - **ColorPicker** — Color selection picker
240
- - **Combobox** — Select with search
240
+ - **Combobox** — Select with search (aka Autocomplete, Auto Complete)
241
241
  - **CopyButton** — Copy to clipboard
242
242
  - **CounterTextarea** — Textarea with character count display
243
243
  - **CreditCardInput** — Payment card input with brand detection
@@ -247,7 +247,7 @@ export function BillingOverview() {
247
247
  - **FieldError** — Validation messages
248
248
  - **Fieldset** — Form grouping
249
249
  - **FieldTemplate** — Standardizes label placement, required markings, and error message display for all form-related components.
250
- - **FileUpload** — File selection
250
+ - **FileUpload** — File selection (aka Upload, File Input)
251
251
  - **FloatButton** — Floating action buttons
252
252
  - **IconButton** — A square button containing only an icon without a text label.
253
253
  - **ImageCropper** — Front-end image cropping and rotation tool.
@@ -260,7 +260,7 @@ export function BillingOverview() {
260
260
  - **Mentions** — @ / # suggestions
261
261
  - **MultiSelect** — Multiple selection
262
262
  - **NumberInput** — Input with step adjustments (aka Spin Button, Numeric Stepper)
263
- - **OtpInput** — One-time password fields
263
+ - **OtpInput** — One-time password fields (aka Pin Input, Input OTP, PIN Code Input)
264
264
  - **PasswordInput** — Password with toggle
265
265
  - **PasswordStrength** — Visual meter to indicate password security level. (aka Strength Meter)
266
266
  - **PhoneInput** — International phone number input
@@ -305,7 +305,7 @@ export function BillingOverview() {
305
305
  - **Skeleton** — Placeholder for content loading states. (aka Shimmer)
306
306
  - **Snackbar** — Bottom notifications
307
307
  - **Spinner** — A rotating icon indicating background activity or data fetching (aka Activity Indicator)
308
- - **Toast** — Non-intrusive floating messages that provide feedback on system operations
308
+ - **Toast** — Non-intrusive floating messages that provide feedback on system operations (aka Message, Sonner)
309
309
  - **Tour** — Sequential guided walkthroughs to onboard users or highlight features
310
310
 
311
311
  ### navigation — `import { … } from "wimui/navigation"`
@@ -323,7 +323,7 @@ export function BillingOverview() {
323
323
  - **SpeedDial** — Floating action button that expands sub-actions on hover or click.
324
324
  - **Stepper** — Visual sequence steps
325
325
  - ⚠️ Not the same as elsewhere: In Apple HIG and macOS, a "Stepper" is the control that increments a number — that is `NumberInput` here. WIM's `Stepper` shows progress through a sequence of steps, which is what Material calls a Stepper.
326
- - **TabBar** — Mobile bottom navigation
326
+ - **TabBar** — Mobile bottom navigation (aka Bottom Navigation, Bottom Tab Bar)
327
327
  - **TabNavigation** — Tab-based navigation
328
328
  - **Tabs** — A container to organize related content into switchable view panels
329
329
 
@@ -349,7 +349,7 @@ export function BillingOverview() {
349
349
  - **JsonDiffViewer** — Compares two JSON values as a formatted side-by-side or unified diff, built on top of CodeDiffViewer.
350
350
  - **JsonViewer** — Recursive tree viewer and editor for JSON data.
351
351
  - **Kanban** — Drag-and-drop board for visualizing workflow stages
352
- - **Leaderboard** — Display a ranked list of entries with scores and medal highlights for the top three positions.
352
+ - **Leaderboard** — Display a ranked list of entries with scores. Medal colors for the top three are opt-in.
353
353
  - **List** — Structurally organized items in bullet points or numbered formats
354
354
  - **Markdown** — A component for safely rendering text in Markdown format.
355
355
  - **Marquee** — Scrolling text animation (aka Ticker)
@@ -363,7 +363,7 @@ export function BillingOverview() {
363
363
  - **RelativeTime** — Display a timestamp as a localized relative phrase ("3 minutes ago", "yesterday") that updates automatically as time passes.
364
364
  - **ScheduleView** — Displays tasks or events on a chronological timeline or calendar view.
365
365
  - **SortableList** — Item rearrangement and reordering
366
- - **Stats** — A component to highlight key performance indicators and metrics
366
+ - **Stats** — A component to highlight key performance indicators and metrics (aka Statistic, Stat)
367
367
  - **SwipeableList** — Container for SwipeAction rows that keeps at most one row open at a time. (aka Swipeable List)
368
368
  - **SwipeAction** — Mobile-friendly swipe actions (delete, archive) for list items.
369
369
  - **Table** — Rows and columns for displaying structured data efficiently
@@ -117,7 +117,7 @@
117
117
  "reaction_desc": "Display emoji reaction buttons with toggleable state and counts",
118
118
  "keyboardShortcuts_desc": "Display a structured list of keyboard shortcuts",
119
119
  "autosave_desc": "Inline status indicator for automatic save state",
120
- "leaderboard_desc": "Display a ranked list of entries with scores and medal highlights for the top three positions.",
120
+ "leaderboard_desc": "Display a ranked list of entries with scores. Medal colors for the top three are opt-in.",
121
121
  "gallery_desc": "Displays a responsive image grid with configurable columns, aspect ratios, multi-select, and an optional lightbox.",
122
122
  "dashboard_desc": "Arranges widgets in a configurable grid with an edit mode for adding, removing, and resizing them.",
123
123
  "field_character_count_desc": "Standardizes the display of character counts and limit indicators across text-based form inputs.",
@@ -135,7 +135,7 @@
135
135
  "interactiveArea_desc": "枠線やホバー状態を持つ、一貫したインタラクティブエリアの基盤コンポーネント。",
136
136
  "jsonDiffViewer_desc": "2つの JSON 値を整形し、Side-by-Side または Unified 形式の差分として比較します。CodeDiffViewer をベースに構築されています。",
137
137
  "keyboardShortcuts_desc": "キーボードショートカットの一覧を構造化して表示する",
138
- "leaderboard_desc": "スコアと上位3件へのメダルハイライト付きランキングを表示するコンポーネント。",
138
+ "leaderboard_desc": "スコア付きのランキングを表示するコンポーネント。上位3件のメダル色は、指定したときだけ付きます。",
139
139
  "levels_title": "強度レベルの定義",
140
140
  "nodeGraph_desc": "ノード間の複雑なネットワークや関係性を視覚化します。",
141
141
  "overlay_base_desc": "Dialog, Drawer, BottomSheet に対して、ポータルによるレンダリング、バックドロップ、フォーカス管理を標準化します。",
@@ -135,7 +135,7 @@
135
135
  "interactiveArea_desc": "Componente base para áreas interativas consistentes com bordas e estados.",
136
136
  "jsonDiffViewer_desc": "Compara dois valores JSON como um diff formatado lado a lado ou unificado, construído sobre o CodeDiffViewer.",
137
137
  "keyboardShortcuts_desc": "Exibir uma lista estruturada de atalhos de teclado",
138
- "leaderboard_desc": "Exibe uma lista classificada de entradas com pontuações e destaques de medalhas para as três primeiras posições.",
138
+ "leaderboard_desc": "Exibe uma lista classificada de entradas com pontuações. As cores de medalha para as três primeiras posições são opcionais.",
139
139
  "levels_title": "Definições de Nível",
140
140
  "nodeGraph_desc": "Visualiza redes complexas e relações entre nós.",
141
141
  "overlay_base_desc": "Padroniza a renderização baseada em portal, o plano de fundo e o gerenciamento de foco para Diálogos, Gavetas e BottomSheets.",