wimui 0.58.0 → 0.59.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 (34) hide show
  1. package/dist/components/ai/PromptInput/PromptInput.cjs +1 -1
  2. package/dist/components/ai/PromptInput/PromptInput.js +30 -30
  3. package/dist/components/ai/Terminal/Terminal.cjs +2 -2
  4. package/dist/components/ai/Terminal/Terminal.js +16 -14
  5. package/dist/components/data-display/VirtualList/VirtualList.cjs +1 -1
  6. package/dist/components/data-display/VirtualList/VirtualList.d.ts +2 -0
  7. package/dist/components/data-display/VirtualList/VirtualList.js +15 -14
  8. package/dist/components/form/CopyButton/CopyButton.cjs +1 -1
  9. package/dist/components/form/CopyButton/CopyButton.d.ts +5 -1
  10. package/dist/components/form/CopyButton/CopyButton.js +17 -15
  11. package/dist/components/form/Dropzone/Dropzone.cjs +1 -1
  12. package/dist/components/form/Dropzone/Dropzone.d.ts +7 -1
  13. package/dist/components/form/Dropzone/Dropzone.js +29 -28
  14. package/dist/components/form/FileUpload/FileUpload.cjs +1 -1
  15. package/dist/components/form/FileUpload/FileUpload.d.ts +7 -1
  16. package/dist/components/form/FileUpload/FileUpload.js +22 -17
  17. package/dist/components/form/ImageCropper/ImageCropper.cjs +1 -1
  18. package/dist/components/form/ImageCropper/ImageCropper.js +102 -100
  19. package/dist/components/form/InlineEdit/InlineEdit.cjs +1 -1
  20. package/dist/components/form/InlineEdit/InlineEdit.js +62 -60
  21. package/dist/components/form/QueryBuilder/QueryBuilder.cjs +1 -1
  22. package/dist/components/form/QueryBuilder/QueryBuilder.d.ts +7 -1
  23. package/dist/components/form/QueryBuilder/QueryBuilder.js +104 -102
  24. package/dist/components/form/ThemeToggle/ThemeToggle.cjs +1 -1
  25. package/dist/components/form/ThemeToggle/ThemeToggle.js +59 -54
  26. package/dist/components/media/ImageCompare/ImageCompare.cjs +1 -1
  27. package/dist/components/media/ImageCompare/ImageCompare.js +33 -31
  28. package/dist/components/navigation/BackTop/BackTop.cjs +1 -1
  29. package/dist/components/navigation/BackTop/BackTop.d.ts +4 -0
  30. package/dist/components/navigation/BackTop/BackTop.js +18 -16
  31. package/dist/llms-full.txt +15 -1
  32. package/dist/llms.txt +1 -1
  33. package/dist/wimui.umd.js +4 -4
  34. package/package.json +1 -1
@@ -68,6 +68,12 @@ export interface QueryBuilderProps {
68
68
  * Labels for internationalization
69
69
  */
70
70
  labels?: QueryBuilderLabels;
71
+ /** Accessible name for the query builder region. Takes precedence over `labels.regionAriaLabel`. */
72
+ "aria-label"?: string;
73
+ /** ID of the element that labels the query builder region. Takes precedence over `aria-label`. */
74
+ "aria-labelledby"?: string;
75
+ /** ID of the element that describes the query builder region. */
76
+ "aria-describedby"?: string;
71
77
  }
72
78
  /**
73
79
  * 演算子の語彙。**利用者が `QueryRule.operator` に渡すのは `value`(記号)**で、
@@ -167,5 +173,5 @@ export type QueryOperator = (typeof DEFAULT_OPERATORS)[QueryFieldType][number]["
167
173
  /**
168
174
  * 複雑な検索条件をネスト状に組み立てるためのクエリビルダーコンポーネント。
169
175
  */
170
- export declare const QueryBuilder: ({ fields, query, defaultQuery, onChange, maxDepth, className, id: customId, labels, }: QueryBuilderProps) => React.JSX.Element;
176
+ export declare const QueryBuilder: ({ fields, query, defaultQuery, onChange, maxDepth, className, id: customId, labels, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, }: QueryBuilderProps) => React.JSX.Element;
171
177
  export {};
@@ -4,18 +4,18 @@ import { componentsNs as t } from "../../../i18n/generated/components.js";
4
4
  import { Button as n } from "../Button/Button.js";
5
5
  import { Input as r } from "../Input/Input.js";
6
6
  import { DatePicker as i } from "../DatePicker/DatePicker.js";
7
- import { NumberInput as a } from "../NumberInput/NumberInput.js";
8
- import { SegmentedControl as o } from "../SegmentedControl/SegmentedControl.js";
9
- import { Select as s } from "../Select/Select.js";
10
- import { Switch as c } from "../Switch/Switch.js";
11
- import { IconButton as l } from "../IconButton/IconButton.js";
12
- import u from "./querybuilder.module.js";
13
- import { warnUnknownOperator as d } from "./warn-unknown-operator.js";
14
- import { useCallback as f, useId as p, useRef as m, useState as h } from "react";
15
- import g from "classnames";
16
- import { jsx as _, jsxs as v } from "react/jsx-runtime";
7
+ import { NumberInput as ee } from "../NumberInput/NumberInput.js";
8
+ import { SegmentedControl as a } from "../SegmentedControl/SegmentedControl.js";
9
+ import { Select as o } from "../Select/Select.js";
10
+ import { Switch as s } from "../Switch/Switch.js";
11
+ import { IconButton as c } from "../IconButton/IconButton.js";
12
+ import l from "./querybuilder.module.js";
13
+ import { warnUnknownOperator as u } from "./warn-unknown-operator.js";
14
+ import { useCallback as d, useId as f, useRef as p, useState as m } from "react";
15
+ import h from "classnames";
16
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
17
17
  //#region src/components/form/QueryBuilder/QueryBuilder.tsx
18
- var y = 0, b = () => typeof window < "u" && window.__VRT__ ? (y += 1, `vrt-id-${y}`) : Math.random().toString(36).substring(2, 11), x = {
18
+ var v = 0, y = () => typeof window < "u" && window.__VRT__ ? (v += 1, `vrt-id-${v}`) : Math.random().toString(36).substring(2, 11), b = {
19
19
  string: [
20
20
  {
21
21
  value: "=",
@@ -132,19 +132,19 @@ var y = 0, b = () => typeof window < "u" && window.__VRT__ ? (y += 1, `vrt-id-${
132
132
  key: "is_not_null"
133
133
  }
134
134
  ]
135
- }, S = ({ fields: y, query: S, defaultQuery: C, onChange: w, maxDepth: ee = 3, className: te, id: ne, labels: T = {} }) => {
136
- let { t: E } = e(t), { ruleAdded: D = E("query.builder.rule_added"), groupAdded: O = E("query.builder.group_added"), removed: k = E("query.builder.removed"), ruleAriaLabel: A = E("query.builder.rule"), fieldAriaLabel: j = E("query.builder.field"), operatorAriaLabel: M = E("query.builder.operator"), valueAriaLabel: N = E("query.builder.value"), trueLabel: P = E("query.builder.true"), falseLabel: F = E("query.builder.false"), removeRuleAriaLabel: I = E("query.builder.remove_rule"), removeGroupAriaLabel: L = E("query.builder.remove_group"), addRuleLabel: R = E("query.builder.add_rule"), addGroupLabel: z = E("query.builder.add_group"), regionAriaLabel: B = E("query.builder.region_label"), combinatorAriaLabel: V = E("query.builder.combinator"), operators: H = {} } = T, U = p(), W = ne || `wim-qb-${U}`, G = m(null), [K, q] = h(C || {
137
- id: b(),
135
+ }, x = ({ fields: v, query: x, defaultQuery: S, onChange: C, maxDepth: te = 3, className: ne, id: re, labels: ie = {}, "aria-label": w, "aria-labelledby": T, "aria-describedby": E }) => {
136
+ let { t: D } = e(t), { ruleAdded: O = D("query.builder.rule_added"), groupAdded: k = D("query.builder.group_added"), removed: A = D("query.builder.removed"), ruleAriaLabel: j = D("query.builder.rule"), fieldAriaLabel: M = D("query.builder.field"), operatorAriaLabel: N = D("query.builder.operator"), valueAriaLabel: P = D("query.builder.value"), trueLabel: F = D("query.builder.true"), falseLabel: I = D("query.builder.false"), removeRuleAriaLabel: L = D("query.builder.remove_rule"), removeGroupAriaLabel: R = D("query.builder.remove_group"), addRuleLabel: z = D("query.builder.add_rule"), addGroupLabel: ae = D("query.builder.add_group"), regionAriaLabel: B = D("query.builder.region_label"), combinatorAriaLabel: V = D("query.builder.combinator"), operators: H = {} } = ie, U = f(), W = re || `wim-qb-${U}`, G = p(null), [K, q] = m(S || {
137
+ id: y(),
138
138
  combinator: "and",
139
139
  not: !1,
140
140
  rules: []
141
- }), J = S === void 0 ? K : S, Y = f((e) => {
141
+ }), J = x === void 0 ? K : x, Y = d((e) => {
142
142
  G.current && (G.current.textContent = "", setTimeout(() => {
143
143
  G.current && (G.current.textContent = e);
144
144
  }, 50));
145
- }, []), X = f((e) => {
146
- S === void 0 && q(e), w?.(e);
147
- }, [S, w]), Z = (e, t) => {
145
+ }, []), X = d((e) => {
146
+ x === void 0 && q(e), C?.(e);
147
+ }, [x, C]), Z = (e, t) => {
148
148
  let n = (r) => r.id === e ? {
149
149
  ...r,
150
150
  ...t
@@ -156,9 +156,9 @@ var y = 0, b = () => typeof window < "u" && window.__VRT__ ? (y += 1, `vrt-id-${
156
156
  } : "rules" in r ? n(r) : r)
157
157
  };
158
158
  X(n(J));
159
- }, re = (e) => {
160
- let t = y[0], n = {
161
- id: b(),
159
+ }, oe = (e) => {
160
+ let t = v[0], n = {
161
+ id: y(),
162
162
  field: t?.name || "",
163
163
  operator: "=",
164
164
  value: t?.type !== "boolean" && ""
@@ -169,10 +169,10 @@ var y = 0, b = () => typeof window < "u" && window.__VRT__ ? (y += 1, `vrt-id-${
169
169
  ...t,
170
170
  rules: t.rules.map((e) => "rules" in e ? r(e) : e)
171
171
  };
172
- X(r(J)), Y(D);
173
- }, ie = (e) => {
172
+ X(r(J)), Y(O);
173
+ }, se = (e) => {
174
174
  let t = {
175
- id: b(),
175
+ id: y(),
176
176
  combinator: "and",
177
177
  not: !1,
178
178
  rules: []
@@ -183,25 +183,25 @@ var y = 0, b = () => typeof window < "u" && window.__VRT__ ? (y += 1, `vrt-id-${
183
183
  ...r,
184
184
  rules: r.rules.map((e) => "rules" in e ? n(e) : e)
185
185
  };
186
- X(n(J)), Y(O);
186
+ X(n(J)), Y(k);
187
187
  }, Q = (e) => {
188
188
  let t = (n) => ({
189
189
  ...n,
190
190
  rules: n.rules.filter((t) => t.id !== e).map((e) => "rules" in e ? t(e) : e)
191
191
  });
192
- X(t(J)), Y(k);
192
+ X(t(J)), Y(A);
193
193
  }, $ = (e, t, r) => {
194
194
  let i = `${e.combinator.toUpperCase()} group`;
195
- return /* @__PURE__ */ v("div", {
195
+ return /* @__PURE__ */ _("div", {
196
196
  role: "group",
197
197
  "aria-label": i,
198
- className: g(u.group, t > 0 && u.nested, r && u.excluded),
198
+ className: h(l.group, t > 0 && l.nested, r && l.excluded),
199
199
  children: [
200
- /* @__PURE__ */ v("div", {
201
- className: u.groupHeader,
202
- children: [/* @__PURE__ */ v("div", {
203
- className: u.groupHeaderLeft,
204
- children: [/* @__PURE__ */ _(o, {
200
+ /* @__PURE__ */ _("div", {
201
+ className: l.groupHeader,
202
+ children: [/* @__PURE__ */ _("div", {
203
+ className: l.groupHeaderLeft,
204
+ children: [/* @__PURE__ */ g(a, {
205
205
  size: "md",
206
206
  options: [{
207
207
  label: "AND",
@@ -214,160 +214,162 @@ var y = 0, b = () => typeof window < "u" && window.__VRT__ ? (y += 1, `vrt-id-${
214
214
  onChange: (t) => Z(e.id, { combinator: t }),
215
215
  "aria-label": V,
216
216
  styles: {
217
- root: u.segmentedControl,
218
- item: u.segmentedControlItem,
219
- slider: u.segmentedControlSlider
217
+ root: l.segmentedControl,
218
+ item: l.segmentedControlItem,
219
+ slider: l.segmentedControlSlider
220
220
  }
221
- }), /* @__PURE__ */ _(c, {
221
+ }), /* @__PURE__ */ g(s, {
222
222
  size: "md",
223
223
  checked: e.not,
224
224
  onChange: (t) => Z(e.id, { not: t.target.checked }),
225
225
  children: "NOT"
226
226
  })]
227
- }), t > 0 && /* @__PURE__ */ _(l, {
227
+ }), t > 0 && /* @__PURE__ */ g(c, {
228
228
  iconName: "TrashIcon",
229
- "aria-label": L,
229
+ "aria-label": R,
230
230
  variant: "ghost",
231
231
  size: "md",
232
232
  intent: "danger",
233
233
  onClick: () => Q(e.id),
234
- className: u.removeGroup
234
+ className: l.removeGroup
235
235
  })]
236
236
  }),
237
- /* @__PURE__ */ _("div", {
238
- className: u.ruleList,
239
- children: e.rules.map((e) => "rules" in e ? $(e, t + 1, r) : ae(e))
237
+ /* @__PURE__ */ g("div", {
238
+ className: l.ruleList,
239
+ children: e.rules.map((e) => "rules" in e ? $(e, t + 1, r) : ce(e))
240
240
  }),
241
- /* @__PURE__ */ v("div", {
242
- className: u.groupActions,
243
- children: [/* @__PURE__ */ _(n, {
241
+ /* @__PURE__ */ _("div", {
242
+ className: l.groupActions,
243
+ children: [/* @__PURE__ */ g(n, {
244
244
  size: "md",
245
245
  variant: "ghost",
246
246
  icon: "PlusIcon",
247
- onClick: () => re(e.id),
248
- children: R
249
- }), t < ee && /* @__PURE__ */ _(n, {
247
+ onClick: () => oe(e.id),
248
+ children: z
249
+ }), t < te && /* @__PURE__ */ g(n, {
250
250
  size: "md",
251
251
  variant: "ghost",
252
252
  icon: "PlusIcon",
253
- onClick: () => ie(e.id),
254
- children: z
253
+ onClick: () => se(e.id),
254
+ children: ae
255
255
  })]
256
256
  })
257
257
  ]
258
258
  }, e.id);
259
- }, ae = (e) => {
260
- let t = y.find((t) => t.name === e.field)?.type || "string", n = x[t].map((e) => ({
259
+ }, ce = (e) => {
260
+ let t = v.find((t) => t.name === e.field)?.type || "string", n = b[t].map((e) => ({
261
261
  ...e,
262
- label: H[e.key] || E(`query.builder.operators.${e.key}`)
263
- })), o = (t) => {
264
- let n = y.find((e) => e.name === t);
262
+ label: H[e.key] || D(`query.builder.operators.${e.key}`)
263
+ })), a = (t) => {
264
+ let n = v.find((e) => e.name === t);
265
265
  Z(e.id, {
266
266
  field: t,
267
267
  operator: "=",
268
268
  value: n?.type !== "boolean" && ""
269
269
  });
270
270
  };
271
- n.some((t) => t.value === e.operator) || d(e.operator, t, n.map((e) => e.value));
272
- let c = e.operator === "is_null" || e.operator === "is_not_null";
273
- return /* @__PURE__ */ _("div", {
274
- className: u.rule,
271
+ n.some((t) => t.value === e.operator) || u(e.operator, t, n.map((e) => e.value));
272
+ let s = e.operator === "is_null" || e.operator === "is_not_null";
273
+ return /* @__PURE__ */ g("div", {
274
+ className: l.rule,
275
275
  role: "group",
276
- "aria-label": A,
277
- children: /* @__PURE__ */ v("div", {
278
- className: u.ruleFields,
276
+ "aria-label": j,
277
+ children: /* @__PURE__ */ _("div", {
278
+ className: l.ruleFields,
279
279
  children: [
280
- /* @__PURE__ */ _(s, {
281
- className: u.field,
282
- options: y.map((e) => ({
280
+ /* @__PURE__ */ g(o, {
281
+ className: l.field,
282
+ options: v.map((e) => ({
283
283
  label: e.label,
284
284
  value: e.name
285
285
  })),
286
286
  value: e.field,
287
- onChange: o,
288
- "aria-label": j,
287
+ onChange: a,
288
+ "aria-label": M,
289
289
  fullWidth: !0,
290
290
  styles: {
291
- root: u.select,
292
- trigger: u.selectTrigger,
293
- inputBase: { root: u.inputBase }
291
+ root: l.select,
292
+ trigger: l.selectTrigger,
293
+ inputBase: { root: l.inputBase }
294
294
  }
295
295
  }),
296
- /* @__PURE__ */ _(s, {
297
- className: u.operator,
296
+ /* @__PURE__ */ g(o, {
297
+ className: l.operator,
298
298
  options: n.map((e) => ({
299
299
  label: e.label,
300
300
  value: e.value
301
301
  })),
302
302
  value: e.operator,
303
303
  onChange: (t) => Z(e.id, { operator: t }),
304
- "aria-label": M,
304
+ "aria-label": N,
305
305
  fullWidth: !0,
306
306
  styles: {
307
- root: u.select,
308
- trigger: u.selectTrigger,
309
- inputBase: { root: u.inputBase }
307
+ root: l.select,
308
+ trigger: l.selectTrigger,
309
+ inputBase: { root: l.inputBase }
310
310
  }
311
311
  }),
312
- !c && /* @__PURE__ */ _("div", {
313
- className: u.value,
314
- children: t === "number" ? /* @__PURE__ */ _(a, {
312
+ !s && /* @__PURE__ */ g("div", {
313
+ className: l.value,
314
+ children: t === "number" ? /* @__PURE__ */ g(ee, {
315
315
  value: typeof e.value == "boolean" ? void 0 : e.value ?? void 0,
316
316
  onChange: (t) => Z(e.id, { value: t.target.value }),
317
- "aria-label": N
318
- }) : t === "date" ? /* @__PURE__ */ _(i, {
317
+ "aria-label": P
318
+ }) : t === "date" ? /* @__PURE__ */ g(i, {
319
319
  value: typeof e.value == "string" || typeof e.value == "number" ? new Date(e.value) : void 0,
320
320
  onChange: (t) => Z(e.id, { value: t ? t.toISOString() : "" }),
321
- "aria-label": N
322
- }) : t === "boolean" ? /* @__PURE__ */ _(s, {
321
+ "aria-label": P
322
+ }) : t === "boolean" ? /* @__PURE__ */ g(o, {
323
323
  options: [{
324
- label: P,
324
+ label: F,
325
325
  value: "true"
326
326
  }, {
327
- label: F,
327
+ label: I,
328
328
  value: "false"
329
329
  }],
330
330
  value: String(e.value),
331
331
  onChange: (t) => Z(e.id, { value: t === "true" }),
332
- "aria-label": N,
332
+ "aria-label": P,
333
333
  fullWidth: !0,
334
334
  styles: {
335
- root: u.select,
336
- trigger: u.selectTrigger,
337
- inputBase: { root: u.inputBase }
335
+ root: l.select,
336
+ trigger: l.selectTrigger,
337
+ inputBase: { root: l.inputBase }
338
338
  }
339
- }) : /* @__PURE__ */ _(r, {
339
+ }) : /* @__PURE__ */ g(r, {
340
340
  value: typeof e.value == "boolean" ? void 0 : e.value ?? void 0,
341
341
  onChange: (t) => Z(e.id, { value: t.target.value }),
342
- "aria-label": N,
343
- styles: { root: u.inputBase }
342
+ "aria-label": P,
343
+ styles: { root: l.inputBase }
344
344
  })
345
345
  }),
346
- /* @__PURE__ */ _(l, {
346
+ /* @__PURE__ */ g(c, {
347
347
  iconName: "TrashIcon",
348
- "aria-label": I,
348
+ "aria-label": L,
349
349
  variant: "ghost",
350
350
  size: "md",
351
351
  intent: "danger",
352
352
  onClick: () => Q(e.id),
353
- className: u.removeRule
353
+ className: l.removeRule
354
354
  })
355
355
  ]
356
356
  })
357
357
  }, e.id);
358
358
  };
359
- return /* @__PURE__ */ v("div", {
359
+ return /* @__PURE__ */ _("div", {
360
360
  id: W,
361
361
  role: "region",
362
- "aria-label": B,
363
- className: g("wim-query-builder", u.root, te),
364
- children: [/* @__PURE__ */ _("div", {
362
+ "aria-label": T ? void 0 : w ?? B,
363
+ "aria-labelledby": T,
364
+ "aria-describedby": E,
365
+ className: h("wim-query-builder", l.root, ne),
366
+ children: [/* @__PURE__ */ g("div", {
365
367
  ref: G,
366
368
  "aria-live": "polite",
367
369
  "aria-atomic": "true",
368
- className: u.srOnly
370
+ className: l.srOnly
369
371
  }), $(J, 0, !1)]
370
372
  });
371
373
  };
372
374
  //#endregion
373
- export { S as QueryBuilder };
375
+ export { x as QueryBuilder };
@@ -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("../../../icon/monitor.cjs"),a=require("../../../icon/moon.cjs"),o=require("../../../icon/sun.cjs"),s=require("../../media/Icon/Icon.cjs"),c=require("../../../theme.cjs"),l=require("./theme-toggle.module.cjs");let u=require("react");u=e.__toESM(u,1);let d=require("classnames");d=e.__toESM(d,1);let f=require("react/jsx-runtime");var p={light:o.default,dark:a.default,system:i.default},m=`wim-theme`,h=e=>e===`light`||e===`dark`||e===`system`,g=u.default.forwardRef(({value:e,defaultValue:i=`system`,onChange:a,modes:o=[`light`,`dark`],variant:g=`icon`,size:_=`md`,storageKey:v=m,applyToDocument:y=!0,labels:b,className:x,asChild:S=!1,children:C,...w},T)=>{let{t:E}=n.useWimTranslation(r.commonNs),{light:D=E(`common.light`),dark:O=E(`common.dark`),system:k=E(`theme.system`),toggle:A=E(`theme.toggle`)}=b??{},j={light:D,dark:O,system:k},M=e!==void 0,[N,P]=(0,u.useState)(()=>{if(typeof window<`u`&&v){let e=window.localStorage.getItem(v);if(h(e)&&o.includes(e))return e}return o.includes(i)?i:o[0]}),F=M?e:N;(0,u.useEffect)(()=>{y&&c.setWimTheme(F)},[F,y]);let I=(0,u.useCallback)(e=>{M||P(e),typeof window<`u`&&v&&window.localStorage.setItem(v,e),a?.(e)},[M,v,a]),L=()=>{let e=o[(o.indexOf(F)+1)%o.length];I(e)},R=S?t.Root:`div`;return g===`segmented`?(0,f.jsxs)(R,{ref:T,role:`group`,"aria-label":A,className:(0,d.default)(`wim-theme-toggle`,l.default.segmented,l.default[_],x),...w,children:[o.map(e=>{let t=e===F;return(0,f.jsx)(`button`,{type:`button`,className:(0,d.default)(l.default.segment,t&&l.default.active),"aria-pressed":t,"aria-label":j[e],title:j[e],onClick:()=>I(e),children:(0,f.jsx)(s.Icon,{component:p[e],size:_})},e)}),(0,f.jsx)(t.Slottable,{children:C})]}):(0,f.jsxs)(R,{ref:T,className:(0,d.default)(`wim-theme-toggle`,l.default.root,x),...w,children:[(0,f.jsx)(`button`,{type:`button`,className:(0,d.default)(l.default.iconButton,l.default[_]),"aria-label":`${A} (${j[F]})`,title:j[F],onClick:L,children:(0,f.jsx)(s.Icon,{component:p[F],size:_})}),(0,f.jsx)(t.Slottable,{children:C})]})});g.displayName=`ThemeToggle`,exports.ThemeToggle=g;
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("../../../icon/monitor.cjs"),a=require("../../../icon/moon.cjs"),o=require("../../../icon/sun.cjs"),s=require("../../media/Icon/Icon.cjs"),c=require("../../../theme.cjs"),l=require("./theme-toggle.module.cjs");let u=require("react");u=e.__toESM(u,1);let d=require("classnames");d=e.__toESM(d,1);let f=require("react/jsx-runtime");var p={light:o.default,dark:a.default,system:i.default},m=`wim-theme`,h=e=>e===`light`||e===`dark`||e===`system`,g=u.default.forwardRef(({value:e,defaultValue:i=`system`,onChange:a,modes:o=[`light`,`dark`],variant:g=`icon`,size:_=`md`,storageKey:v=m,applyToDocument:y=!0,labels:b,className:x,asChild:S=!1,children:C,"aria-label":w,"aria-labelledby":T,"aria-describedby":E,...D},O)=>{let{t:k}=n.useWimTranslation(r.commonNs),{light:A=k(`common.light`),dark:j=k(`common.dark`),system:M=k(`theme.system`),toggle:N=k(`theme.toggle`)}=b??{},P={light:A,dark:j,system:M},F=e!==void 0,[I,L]=(0,u.useState)(()=>{if(typeof window<`u`&&v){let e=window.localStorage.getItem(v);if(h(e)&&o.includes(e))return e}return o.includes(i)?i:o[0]}),R=F?e:I;(0,u.useEffect)(()=>{y&&c.setWimTheme(R)},[R,y]);let z=(0,u.useCallback)(e=>{F||L(e),typeof window<`u`&&v&&window.localStorage.setItem(v,e),a?.(e)},[F,v,a]),B=()=>{let e=o[(o.indexOf(R)+1)%o.length];z(e)},V=(0,u.useId)(),H=S?t.Root:`div`,U=`wim-theme-toggle-${V}`;return g===`segmented`?(0,f.jsxs)(H,{ref:O,role:`group`,"aria-label":T?void 0:w??N,"aria-labelledby":T,"aria-describedby":E,className:(0,d.default)(`wim-theme-toggle`,l.default.segmented,l.default[_],x),...D,children:[o.map(e=>{let t=e===R;return(0,f.jsx)(`button`,{type:`button`,className:(0,d.default)(l.default.segment,t&&l.default.active),"aria-pressed":t,"aria-label":P[e],title:P[e],onClick:()=>z(e),children:(0,f.jsx)(s.Icon,{component:p[e],size:_})},e)}),(0,f.jsx)(t.Slottable,{children:C})]}):(0,f.jsxs)(H,{ref:O,className:(0,d.default)(`wim-theme-toggle`,l.default.root,x),...D,children:[(0,f.jsx)(`button`,{type:`button`,className:(0,d.default)(l.default.iconButton,l.default[_]),id:U,"aria-label":T?P[R]:`${w??N} (${P[R]})`,"aria-labelledby":T?`${T} ${U}`:void 0,"aria-describedby":E,title:P[R],onClick:B,children:(0,f.jsx)(s.Icon,{component:p[R],size:_})}),(0,f.jsx)(t.Slottable,{children:C})]})});g.displayName=`ThemeToggle`,exports.ThemeToggle=g;
@@ -8,77 +8,82 @@ import o from "../../../icon/sun.js";
8
8
  import { Icon as s } from "../../media/Icon/Icon.js";
9
9
  import { setWimTheme as c } from "../../../theme.js";
10
10
  import l from "./theme-toggle.module.js";
11
- import u, { useCallback as d, useEffect as f, useState as p } from "react";
12
- import m from "classnames";
13
- import { jsx as h, jsxs as g } from "react/jsx-runtime";
11
+ import u, { useCallback as d, useEffect as f, useId as p, useState as m } from "react";
12
+ import h from "classnames";
13
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
14
14
  //#region src/components/form/ThemeToggle/ThemeToggle.tsx
15
- var _ = {
15
+ var v = {
16
16
  light: o,
17
17
  dark: a,
18
18
  system: i
19
- }, v = "wim-theme", y = (e) => e === "light" || e === "dark" || e === "system", b = u.forwardRef(({ value: i, defaultValue: a = "system", onChange: o, modes: u = ["light", "dark"], variant: b = "icon", size: x = "md", storageKey: S = v, applyToDocument: C = !0, labels: w, className: T, asChild: E = !1, children: D, ...O }, k) => {
20
- let { t: A } = n(r), { light: j = A("common.light"), dark: M = A("common.dark"), system: N = A("theme.system"), toggle: P = A("theme.toggle") } = w ?? {}, F = {
21
- light: j,
22
- dark: M,
23
- system: N
24
- }, I = i !== void 0, [L, R] = p(() => {
25
- if (typeof window < "u" && S) {
26
- let e = window.localStorage.getItem(S);
27
- if (y(e) && u.includes(e)) return e;
19
+ }, y = "wim-theme", b = (e) => e === "light" || e === "dark" || e === "system", x = u.forwardRef(({ value: i, defaultValue: a = "system", onChange: o, modes: u = ["light", "dark"], variant: x = "icon", size: S = "md", storageKey: C = y, applyToDocument: w = !0, labels: T, className: E, asChild: D = !1, children: O, "aria-label": k, "aria-labelledby": A, "aria-describedby": j, ...M }, N) => {
20
+ let { t: P } = n(r), { light: F = P("common.light"), dark: I = P("common.dark"), system: L = P("theme.system"), toggle: R = P("theme.toggle") } = T ?? {}, z = {
21
+ light: F,
22
+ dark: I,
23
+ system: L
24
+ }, B = i !== void 0, [V, H] = m(() => {
25
+ if (typeof window < "u" && C) {
26
+ let e = window.localStorage.getItem(C);
27
+ if (b(e) && u.includes(e)) return e;
28
28
  }
29
29
  return u.includes(a) ? a : u[0];
30
- }), z = I ? i : L;
30
+ }), U = B ? i : V;
31
31
  f(() => {
32
- C && c(z);
33
- }, [z, C]);
34
- let B = d((e) => {
35
- I || R(e), typeof window < "u" && S && window.localStorage.setItem(S, e), o?.(e);
32
+ w && c(U);
33
+ }, [U, w]);
34
+ let W = d((e) => {
35
+ B || H(e), typeof window < "u" && C && window.localStorage.setItem(C, e), o?.(e);
36
36
  }, [
37
- I,
38
- S,
37
+ B,
38
+ C,
39
39
  o
40
- ]), V = () => {
41
- let e = u[(u.indexOf(z) + 1) % u.length];
42
- B(e);
43
- }, H = E ? e : "div";
44
- return b === "segmented" ? /* @__PURE__ */ g(H, {
45
- ref: k,
40
+ ]), G = () => {
41
+ let e = u[(u.indexOf(U) + 1) % u.length];
42
+ W(e);
43
+ }, K = p(), q = D ? e : "div", J = `wim-theme-toggle-${K}`;
44
+ return x === "segmented" ? /* @__PURE__ */ _(q, {
45
+ ref: N,
46
46
  role: "group",
47
- "aria-label": P,
48
- className: m("wim-theme-toggle", l.segmented, l[x], T),
49
- ...O,
47
+ "aria-label": A ? void 0 : k ?? R,
48
+ "aria-labelledby": A,
49
+ "aria-describedby": j,
50
+ className: h("wim-theme-toggle", l.segmented, l[S], E),
51
+ ...M,
50
52
  children: [u.map((e) => {
51
- let t = e === z;
52
- return /* @__PURE__ */ h("button", {
53
+ let t = e === U;
54
+ return /* @__PURE__ */ g("button", {
53
55
  type: "button",
54
- className: m(l.segment, t && l.active),
56
+ className: h(l.segment, t && l.active),
55
57
  "aria-pressed": t,
56
- "aria-label": F[e],
57
- title: F[e],
58
- onClick: () => B(e),
59
- children: /* @__PURE__ */ h(s, {
60
- component: _[e],
61
- size: x
58
+ "aria-label": z[e],
59
+ title: z[e],
60
+ onClick: () => W(e),
61
+ children: /* @__PURE__ */ g(s, {
62
+ component: v[e],
63
+ size: S
62
64
  })
63
65
  }, e);
64
- }), /* @__PURE__ */ h(t, { children: D })]
65
- }) : /* @__PURE__ */ g(H, {
66
- ref: k,
67
- className: m("wim-theme-toggle", l.root, T),
68
- ...O,
69
- children: [/* @__PURE__ */ h("button", {
66
+ }), /* @__PURE__ */ g(t, { children: O })]
67
+ }) : /* @__PURE__ */ _(q, {
68
+ ref: N,
69
+ className: h("wim-theme-toggle", l.root, E),
70
+ ...M,
71
+ children: [/* @__PURE__ */ g("button", {
70
72
  type: "button",
71
- className: m(l.iconButton, l[x]),
72
- "aria-label": `${P} (${F[z]})`,
73
- title: F[z],
74
- onClick: V,
75
- children: /* @__PURE__ */ h(s, {
76
- component: _[z],
77
- size: x
73
+ className: h(l.iconButton, l[S]),
74
+ id: J,
75
+ "aria-label": A ? z[U] : `${k ?? R} (${z[U]})`,
76
+ "aria-labelledby": A ? `${A} ${J}` : void 0,
77
+ "aria-describedby": j,
78
+ title: z[U],
79
+ onClick: G,
80
+ children: /* @__PURE__ */ g(s, {
81
+ component: v[U],
82
+ size: S
78
83
  })
79
- }), /* @__PURE__ */ h(t, { children: D })]
84
+ }), /* @__PURE__ */ g(t, { children: O })]
80
85
  });
81
86
  });
82
- b.displayName = "ThemeToggle";
87
+ x.displayName = "ThemeToggle";
83
88
  //#endregion
84
- export { b as ThemeToggle };
89
+ export { x as ThemeToggle };
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../i18n/generated/common.cjs"),r=require("../../../icon/chevron-left.cjs"),i=require("../../../icon/chevron-right.cjs"),a=require("../Icon/Icon.cjs"),o=require("./image-compare.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=e=>Math.max(0,Math.min(100,e)),d=s.default.forwardRef(({before:e,after:d,beforeAlt:f=``,afterAlt:p=``,beforeLabel:m,afterLabel:h,defaultPosition:g=50,position:_,onPositionChange:v,orientation:y=`horizontal`,width:b,height:x,radius:S=`md`,labels:C,className:w,...T},E)=>{let{t:D}=t.useWimTranslation(n.commonNs),{handleAriaLabel:O=D(`imageCompare.handle`)}=C??{},k=_!==void 0,[A,j]=(0,s.useState)(u(g)),M=u(k?_:A),N=y===`vertical`,P=(0,s.useRef)(null),F=(0,s.useRef)(!1),I=(0,s.useCallback)(e=>{P.current=e,typeof E==`function`?E(e):E&&(E.current=e)},[E]),L=(0,s.useCallback)(e=>{let t=u(e);k||j(t),v?.(t)},[k,v]),R=(0,s.useCallback)((e,t)=>{let n=P.current?.getBoundingClientRect();if(!n)return;let r=N?(t-n.top)/n.height*100:(e-n.left)/n.width*100;L(r)},[N,L]),z=e=>{F.current=!0,e.currentTarget.setPointerCapture(e.pointerId),R(e.clientX,e.clientY)},B=e=>{F.current&&R(e.clientX,e.clientY)},V=e=>{F.current=!1,e.currentTarget.releasePointerCapture?.(e.pointerId)},H=e=>{let t=e.shiftKey?10:2,n=N?`ArrowUp`:`ArrowLeft`,r=N?`ArrowDown`:`ArrowRight`;e.key===n?(e.preventDefault(),L(M-t)):e.key===r?(e.preventDefault(),L(M+t)):e.key===`Home`?(e.preventDefault(),L(0)):e.key===`End`&&(e.preventDefault(),L(100))},U=N?{clipPath:`inset(0 0 ${100-M}% 0)`}:{clipPath:`inset(0 ${100-M}% 0 0)`},W=N?{top:`${M}%`}:{left:`${M}%`};return(0,l.jsxs)(`div`,{ref:I,className:(0,c.default)(`wim-image-compare`,o.default.root,N&&o.default.vertical,o.default[`radius-${S}`],w),style:{width:b,height:x},onPointerDown:z,onPointerMove:B,onPointerUp:V,...T,children:[(0,l.jsx)(`img`,{className:o.default.image,src:d,alt:p,draggable:!1}),h&&(0,l.jsx)(`span`,{className:(0,c.default)(o.default.label,o.default.afterLabel),children:h}),(0,l.jsxs)(`div`,{className:o.default.beforeLayer,style:U,children:[(0,l.jsx)(`img`,{className:o.default.image,src:e,alt:f,draggable:!1}),m&&(0,l.jsx)(`span`,{className:(0,c.default)(o.default.label,o.default.beforeLabel),children:m})]}),(0,l.jsxs)(`div`,{className:o.default.divider,style:W,children:[(0,l.jsx)(`span`,{className:o.default.line,"aria-hidden":`true`}),(0,l.jsxs)(`button`,{type:`button`,className:o.default.handle,role:`slider`,"aria-label":O,"aria-orientation":y,"aria-valuenow":Math.round(M),"aria-valuemin":0,"aria-valuemax":100,onKeyDown:H,onPointerDown:z,children:[(0,l.jsx)(a.Icon,{component:r.default,size:`sm`,className:o.default.arrow}),(0,l.jsx)(a.Icon,{component:i.default,size:`sm`,className:o.default.arrow})]})]})]})});d.displayName=`ImageCompare`,exports.ImageCompare=d;
2
+ const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../i18n/useWimTranslation.cjs"),n=require("../../../i18n/generated/common.cjs"),r=require("../../../icon/chevron-left.cjs"),i=require("../../../icon/chevron-right.cjs"),a=require("../Icon/Icon.cjs"),o=require("./image-compare.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=e=>Math.max(0,Math.min(100,e)),d=s.default.forwardRef(({before:e,after:d,beforeAlt:f=``,afterAlt:p=``,beforeLabel:m,afterLabel:h,defaultPosition:g=50,position:_,onPositionChange:v,orientation:y=`horizontal`,width:b,height:x,radius:S=`md`,labels:C,className:w,"aria-label":T,"aria-labelledby":E,"aria-describedby":D,...O},k)=>{let{t:A}=t.useWimTranslation(n.commonNs),{handleAriaLabel:j=A(`imageCompare.handle`)}=C??{},M=_!==void 0,[N,P]=(0,s.useState)(u(g)),F=u(M?_:N),I=y===`vertical`,L=(0,s.useRef)(null),R=(0,s.useRef)(!1),z=(0,s.useCallback)(e=>{L.current=e,typeof k==`function`?k(e):k&&(k.current=e)},[k]),B=(0,s.useCallback)(e=>{let t=u(e);M||P(t),v?.(t)},[M,v]),V=(0,s.useCallback)((e,t)=>{let n=L.current?.getBoundingClientRect();if(!n)return;let r=I?(t-n.top)/n.height*100:(e-n.left)/n.width*100;B(r)},[I,B]),H=e=>{R.current=!0,e.currentTarget.setPointerCapture(e.pointerId),V(e.clientX,e.clientY)},U=e=>{R.current&&V(e.clientX,e.clientY)},W=e=>{R.current=!1,e.currentTarget.releasePointerCapture?.(e.pointerId)},G=e=>{let t=e.shiftKey?10:2,n=I?`ArrowUp`:`ArrowLeft`,r=I?`ArrowDown`:`ArrowRight`;e.key===n?(e.preventDefault(),B(F-t)):e.key===r?(e.preventDefault(),B(F+t)):e.key===`Home`?(e.preventDefault(),B(0)):e.key===`End`&&(e.preventDefault(),B(100))},K=I?{clipPath:`inset(0 0 ${100-F}% 0)`}:{clipPath:`inset(0 ${100-F}% 0 0)`},q=I?{top:`${F}%`}:{left:`${F}%`};return(0,l.jsxs)(`div`,{ref:z,className:(0,c.default)(`wim-image-compare`,o.default.root,I&&o.default.vertical,o.default[`radius-${S}`],w),style:{width:b,height:x},onPointerDown:H,onPointerMove:U,onPointerUp:W,...O,children:[(0,l.jsx)(`img`,{className:o.default.image,src:d,alt:p,draggable:!1}),h&&(0,l.jsx)(`span`,{className:(0,c.default)(o.default.label,o.default.afterLabel),children:h}),(0,l.jsxs)(`div`,{className:o.default.beforeLayer,style:K,children:[(0,l.jsx)(`img`,{className:o.default.image,src:e,alt:f,draggable:!1}),m&&(0,l.jsx)(`span`,{className:(0,c.default)(o.default.label,o.default.beforeLabel),children:m})]}),(0,l.jsxs)(`div`,{className:o.default.divider,style:q,children:[(0,l.jsx)(`span`,{className:o.default.line,"aria-hidden":`true`}),(0,l.jsxs)(`button`,{type:`button`,className:o.default.handle,role:`slider`,"aria-label":E?void 0:T??j,"aria-labelledby":E,"aria-describedby":D,"aria-orientation":y,"aria-valuenow":Math.round(F),"aria-valuemin":0,"aria-valuemax":100,onKeyDown:G,onPointerDown:H,children:[(0,l.jsx)(a.Icon,{component:r.default,size:`sm`,className:o.default.arrow}),(0,l.jsx)(a.Icon,{component:i.default,size:`sm`,className:o.default.arrow})]})]})]})});d.displayName=`ImageCompare`,exports.ImageCompare=d;