@koide-labs/ui 0.1.1 → 0.1.2

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 (93) hide show
  1. package/dist/accordion.css +1 -1
  2. package/dist/alert-dialog.css +1 -1
  3. package/dist/anchor.css +1 -1
  4. package/dist/avatar.css +1 -1
  5. package/dist/badge.css +1 -1
  6. package/dist/button.css +1 -1
  7. package/dist/checkbox.css +1 -1
  8. package/dist/code.css +1 -1
  9. package/dist/collapse.css +1 -1
  10. package/dist/command.css +1 -1
  11. package/dist/components/accordion/accordion.js +40 -40
  12. package/dist/components/alert-dialog/alert-dialog.js +9 -9
  13. package/dist/components/anchor/anchor.js +5 -5
  14. package/dist/components/avatar/avatar.js +26 -26
  15. package/dist/components/badge/badge.js +13 -13
  16. package/dist/components/button/button.js +13 -13
  17. package/dist/components/checkbox/checkbox.js +1 -1
  18. package/dist/components/code/code.js +48 -48
  19. package/dist/components/collapse/collapse.js +14 -14
  20. package/dist/components/command/command.js +121 -121
  21. package/dist/components/context-menu/context-menu.js +6 -6
  22. package/dist/components/dialog/dialog.js +1 -1
  23. package/dist/components/heading/heading.js +6 -6
  24. package/dist/components/icon/icon.js +12 -12
  25. package/dist/components/icon-button/icon-button.js +26 -26
  26. package/dist/components/inline-code/inline-code.js +2 -2
  27. package/dist/components/input/input.js +1 -1
  28. package/dist/components/meter/meter.js +40 -40
  29. package/dist/components/multiline-input/multiline-input.js +1 -1
  30. package/dist/components/number-input/number-input.js +7 -7
  31. package/dist/components/password-input/password-input.js +2 -2
  32. package/dist/components/pill/pill.js +11 -11
  33. package/dist/components/popover/popover.js +21 -21
  34. package/dist/components/preview-card/preview-card.js +2 -2
  35. package/dist/components/radio-group/radio-group.js +54 -54
  36. package/dist/components/search-bar/search-bar.js +8 -8
  37. package/dist/components/select/select.js +75 -75
  38. package/dist/components/separator/index.js +1 -1
  39. package/dist/components/separator/separator.js +1 -1
  40. package/dist/components/slider/slider.js +128 -128
  41. package/dist/components/spinner/spinner.js +4 -4
  42. package/dist/components/stacked-avatars/stacked-avatars.js +35 -35
  43. package/dist/components/status-banner/status-banner.js +22 -22
  44. package/dist/components/surface/surface.js +14 -14
  45. package/dist/components/switch/switch.js +28 -28
  46. package/dist/components/tabs/tabs.js +132 -132
  47. package/dist/components/text/text.js +15 -15
  48. package/dist/components/timestamp/timestamp.js +73 -73
  49. package/dist/components/toaster/toaster.js +165 -165
  50. package/dist/components/tooltip/index.js +1 -1
  51. package/dist/components/tooltip/tooltip.js +1 -1
  52. package/dist/components/view/view.js +40 -40
  53. package/dist/context-menu.css +1 -1
  54. package/dist/dialog.css +1 -1
  55. package/dist/{dialog.module-DsbQRp-d.js → dialog.module-Pi1eHwli.js} +13 -13
  56. package/dist/heading.css +1 -1
  57. package/dist/icon-button.css +1 -1
  58. package/dist/icon.css +1 -1
  59. package/dist/index.js +2 -2
  60. package/dist/inline-code.css +1 -1
  61. package/dist/input.css +1 -1
  62. package/dist/input.module-zw1dlr1_.js +8 -0
  63. package/dist/integrations/react-markdown/index.js +1 -1
  64. package/dist/meter.css +1 -1
  65. package/dist/number-input.css +1 -1
  66. package/dist/password-input.css +1 -1
  67. package/dist/pill.css +1 -1
  68. package/dist/popover.css +1 -1
  69. package/dist/preview-card.css +1 -1
  70. package/dist/radio-group.css +1 -1
  71. package/dist/search-bar.css +1 -1
  72. package/dist/select.css +1 -1
  73. package/dist/{separator-fh_wDZNf.js → separator-wNYojB9q.js} +8 -8
  74. package/dist/separator.css +1 -1
  75. package/dist/slider.css +1 -1
  76. package/dist/spinner.css +1 -1
  77. package/dist/stacked-avatars.css +1 -1
  78. package/dist/status-banner.css +1 -1
  79. package/dist/styles/core.css +1 -1
  80. package/dist/surface.css +1 -1
  81. package/dist/switch.css +1 -1
  82. package/dist/tabs.css +1 -1
  83. package/dist/text.css +1 -1
  84. package/dist/timestamp.css +1 -1
  85. package/dist/toaster.css +1 -1
  86. package/dist/{tooltip-oCp-elli.js → tooltip-DZkByWDR.js} +63 -63
  87. package/dist/tooltip.css +1 -1
  88. package/dist/view.css +1 -1
  89. package/dist/view.module-DlwuNdUj.js +6 -0
  90. package/dist/view2.css +1 -1
  91. package/package.json +1 -1
  92. package/dist/input.module-CtE19OH8.js +0 -8
  93. package/dist/view.module-Dj7wj0kk.js +0 -6
@@ -1,12 +1,12 @@
1
1
  import { jsx as n } from "react/jsx-runtime";
2
- import { c as o } from "../../clsx-OuTLNxxd.js";
2
+ import { c as e } from "../../clsx-OuTLNxxd.js";
3
3
  import { View as i } from "../view/view.js";
4
4
  import { Icon as s } from "../icon/icon.js";
5
- import '../../spinner.css';const m = "_spinner_16nxb_2", p = {
5
+ import '../../spinner.css';const m = "_spinner_1hyco_2", p = {
6
6
  spinner: m
7
7
  };
8
- function f({ className: r, ...e }) {
9
- return /* @__PURE__ */ n(i, { className: o(p.spinner, r), ...e, children: /* @__PURE__ */ n(s, { name: "loader-2-line" }) });
8
+ function f({ className: r, ...o }) {
9
+ return /* @__PURE__ */ n(i, { className: e(p.spinner, r), ...o, children: /* @__PURE__ */ n(s, { name: "loader-2-line" }) });
10
10
  }
11
11
  export {
12
12
  f as Spinner
@@ -1,53 +1,53 @@
1
1
  import { jsx as t, jsxs as c } from "react/jsx-runtime";
2
- import { c as v } from "../../clsx-OuTLNxxd.js";
3
- import { T as x } from "../../tooltip-oCp-elli.js";
4
- import { View as r } from "../view/view.js";
5
- import { Avatar as o } from "../avatar/avatar.js";
2
+ import { c as o } from "../../clsx-OuTLNxxd.js";
3
+ import { T as n } from "../../tooltip-DZkByWDR.js";
4
+ import { View as i } from "../view/view.js";
5
+ import { Avatar as d } from "../avatar/avatar.js";
6
6
  import { Text as k } from "../text/text.js";
7
7
  import '../../stacked-avatars.css';const a = {
8
- "stacked-avatars": "_stacked-avatars_qhxl3_2",
9
- "stacked-avatars__avatar": "_stacked-avatars__avatar_qhxl3_8",
10
- "stacked-avatars__avatar_color": "_stacked-avatars__avatar_color_qhxl3_13",
11
- "stacked-avatars__visible": "_stacked-avatars__visible_qhxl3_17",
12
- "stacked-avatars__visible_size_sm": "_stacked-avatars__visible_size_sm_qhxl3_35",
13
- "stacked-avatars__visible_size_md": "_stacked-avatars__visible_size_md_qhxl3_39",
14
- "stacked-avatars__visible_size_lg": "_stacked-avatars__visible_size_lg_qhxl3_43",
15
- "stacked-avatars__visible_size_xl": "_stacked-avatars__visible_size_xl_qhxl3_47",
16
- "stacked-avatars__visible_size_2xl": "_stacked-avatars__visible_size_2xl_qhxl3_51",
17
- "stacked-avatars__visible_size_3xl": "_stacked-avatars__visible_size_3xl_qhxl3_55",
18
- "stacked-avatars__tooltip-content": "_stacked-avatars__tooltip-content_qhxl3_60",
19
- "stacked-avatars__tooltip-user": "_stacked-avatars__tooltip-user_qhxl3_70",
20
- "stacked-avatars__tooltip-text": "_stacked-avatars__tooltip-text_qhxl3_78"
8
+ "stacked-avatars": "_stacked-avatars_1iola_2",
9
+ "stacked-avatars__avatar": "_stacked-avatars__avatar_1iola_8",
10
+ "stacked-avatars__avatar_color": "_stacked-avatars__avatar_color_1iola_13",
11
+ "stacked-avatars__visible": "_stacked-avatars__visible_1iola_17",
12
+ "stacked-avatars__visible_size_sm": "_stacked-avatars__visible_size_sm_1iola_35",
13
+ "stacked-avatars__visible_size_md": "_stacked-avatars__visible_size_md_1iola_39",
14
+ "stacked-avatars__visible_size_lg": "_stacked-avatars__visible_size_lg_1iola_43",
15
+ "stacked-avatars__visible_size_xl": "_stacked-avatars__visible_size_xl_1iola_47",
16
+ "stacked-avatars__visible_size_2xl": "_stacked-avatars__visible_size_2xl_1iola_51",
17
+ "stacked-avatars__visible_size_3xl": "_stacked-avatars__visible_size_3xl_1iola_55",
18
+ "stacked-avatars__tooltip-content": "_stacked-avatars__tooltip-content_1iola_60",
19
+ "stacked-avatars__tooltip-user": "_stacked-avatars__tooltip-user_1iola_70",
20
+ "stacked-avatars__tooltip-text": "_stacked-avatars__tooltip-text_1iola_78"
21
21
  };
22
- function f({
22
+ function N({
23
23
  users: s,
24
24
  visibleUsers: e = 3,
25
- size: d = "md"
25
+ size: v = "md"
26
26
  }) {
27
27
  return /* @__PURE__ */ t(
28
- x,
28
+ n,
29
29
  {
30
30
  className: a["stacked-avatars__tooltip-content"],
31
- trigger: /* @__PURE__ */ c(r, { className: a["stacked-avatars"], children: [
32
- s.slice(0, e).map(({ color: l, className: i, ..._ }, m) => /* @__PURE__ */ t(r, { color: l, children: /* @__PURE__ */ t(
33
- o,
31
+ trigger: /* @__PURE__ */ c(i, { className: a["stacked-avatars"], children: [
32
+ s.slice(0, e).map(({ color: r, className: l, ..._ }, m) => /* @__PURE__ */ t(i, { color: r, children: /* @__PURE__ */ t(
33
+ d,
34
34
  {
35
- size: d,
36
- className: v(
35
+ size: v,
36
+ className: o(
37
37
  a["stacked-avatars__avatar"],
38
38
  a["stacked-avatars__avatar_color"],
39
- i
39
+ l
40
40
  ),
41
41
  style: { zIndex: m },
42
42
  ..._
43
43
  }
44
44
  ) }, _.username)),
45
45
  s.length > e && /* @__PURE__ */ t(
46
- r,
46
+ i,
47
47
  {
48
- className: v(
48
+ className: o(
49
49
  a["stacked-avatars__visible"],
50
- a[`stacked-avatars__visible_size_${d}`]
50
+ a[`stacked-avatars__visible_size_${v}`]
51
51
  ),
52
52
  style: { zIndex: e + 1 },
53
53
  children: /* @__PURE__ */ c(k, { size: "sm", children: [
@@ -57,16 +57,16 @@ function f({
57
57
  }
58
58
  )
59
59
  ] }),
60
- children: s.map(({ color: l, className: i, ..._ }) => /* @__PURE__ */ c(
61
- r,
60
+ children: s.map(({ color: r, className: l, ..._ }) => /* @__PURE__ */ c(
61
+ i,
62
62
  {
63
- color: l,
63
+ color: r,
64
64
  className: a["stacked-avatars__tooltip-user"],
65
65
  children: [
66
66
  /* @__PURE__ */ t(
67
- o,
67
+ d,
68
68
  {
69
- className: v(a["stacked-avatars__avatar_color"], i),
69
+ className: o(a["stacked-avatars__avatar_color"], l),
70
70
  ..._,
71
71
  size: "sm"
72
72
  },
@@ -88,5 +88,5 @@ function f({
88
88
  );
89
89
  }
90
90
  export {
91
- f as StackedAvatars
91
+ N as StackedAvatars
92
92
  };
@@ -1,19 +1,19 @@
1
- import { jsxs as _, jsx as s } from "react/jsx-runtime";
1
+ import { jsxs as _, jsx as a } from "react/jsx-runtime";
2
2
  import { c as b } from "../../clsx-OuTLNxxd.js";
3
3
  import { View as i } from "../view/view.js";
4
4
  import { Icon as d } from "../icon/icon.js";
5
- import { Heading as p } from "../heading/heading.js";
6
- import { Text as y } from "../text/text.js";
5
+ import { Heading as v } from "../heading/heading.js";
6
+ import { Text as p } from "../text/text.js";
7
7
  import '../../status-banner.css';const t = {
8
- "status-banner": "_status-banner_1ci6y_2",
9
- "status-banner_variant_neutral": "_status-banner_variant_neutral_1ci6y_15",
10
- "status-banner_variant_colorway": "_status-banner_variant_colorway_1ci6y_21",
11
- "status-banner_size_md": "_status-banner_size_md_1ci6y_27",
12
- "status-banner_size_lg": "_status-banner_size_lg_1ci6y_33",
13
- "status-banner__content": "_status-banner__content_1ci6y_39",
14
- "status-banner__description": "_status-banner__description_1ci6y_45",
15
- "status-banner__close": "_status-banner__close_1ci6y_50"
16
- }, a = {
8
+ "status-banner": "_status-banner_vyl9a_2",
9
+ "status-banner_variant_neutral": "_status-banner_variant_neutral_vyl9a_15",
10
+ "status-banner_variant_colorway": "_status-banner_variant_colorway_vyl9a_21",
11
+ "status-banner_size_md": "_status-banner_size_md_vyl9a_27",
12
+ "status-banner_size_lg": "_status-banner_size_lg_vyl9a_33",
13
+ "status-banner__content": "_status-banner__content_vyl9a_39",
14
+ "status-banner__description": "_status-banner__description_vyl9a_45",
15
+ "status-banner__close": "_status-banner__close_vyl9a_50"
16
+ }, s = {
17
17
  md: {
18
18
  icon: "md",
19
19
  title: "md",
@@ -28,35 +28,35 @@ import '../../status-banner.css';const t = {
28
28
  function w({
29
29
  color: e,
30
30
  icon: r,
31
- title: c,
31
+ title: l,
32
32
  description: o,
33
33
  size: n = "lg",
34
- render: l,
35
- className: u,
34
+ render: u,
35
+ className: c,
36
36
  ...m
37
37
  }) {
38
38
  return /* @__PURE__ */ _(
39
39
  i,
40
40
  {
41
- render: l,
41
+ render: u,
42
42
  ...m,
43
43
  color: e,
44
44
  className: b(
45
45
  t["status-banner"],
46
46
  t[`status-banner_size_${n}`],
47
47
  e ? t["status-banner_variant_colorway"] : t["status-banner_variant_neutral"],
48
- u
48
+ c
49
49
  ),
50
50
  children: [
51
- r ? /* @__PURE__ */ s(d, { name: r, size: a[n].icon }) : null,
51
+ r ? /* @__PURE__ */ a(d, { name: r, size: s[n].icon }) : null,
52
52
  /* @__PURE__ */ _(i, { className: t["status-banner__content"], children: [
53
- /* @__PURE__ */ s(p, { level: 1, size: a[n].title, color: "inherit", children: c }),
54
- /* @__PURE__ */ s(
55
- y,
53
+ /* @__PURE__ */ a(v, { level: 1, size: s[n].title, color: "inherit", children: l }),
54
+ /* @__PURE__ */ a(
55
+ p,
56
56
  {
57
57
  className: t["status-banner__description"],
58
58
  multiline: !0,
59
- size: a[n].description,
59
+ size: s[n].description,
60
60
  color: "inherit",
61
61
  children: o
62
62
  }
@@ -1,25 +1,25 @@
1
- import { jsx as a } from "react/jsx-runtime";
1
+ import { jsx as s } from "react/jsx-runtime";
2
2
  import { c as u } from "../../clsx-OuTLNxxd.js";
3
3
  import { createContext as i, useContext as h } from "react";
4
4
  import { View as l } from "../view/view.js";
5
- import '../../surface.css';const _ = "_surface_38ylh_2", s = {
5
+ import '../../surface.css';const _ = "_surface_8k4fs_2", a = {
6
6
  surface: _,
7
- "surface--root": "_surface--root_38ylh_6",
8
- "surface--default": "_surface--default_38ylh_14",
9
- "surface--higher": "_surface--higher_38ylh_22",
10
- "surface--highest": "_surface--highest_38ylh_30"
11
- }, c = i(0);
12
- function p({ background: e, elevated: r, className: n, ...f }) {
13
- let t = h(c);
14
- return e ? t = m(e) : r && t++, /* @__PURE__ */ a(c.Provider, { value: t, children: /* @__PURE__ */ a(
7
+ "surface--root": "_surface--root_8k4fs_6",
8
+ "surface--default": "_surface--default_8k4fs_14",
9
+ "surface--higher": "_surface--higher_8k4fs_22",
10
+ "surface--highest": "_surface--highest_8k4fs_30"
11
+ }, f = i(0);
12
+ function p({ background: e, elevated: r, className: c, ...n }) {
13
+ let t = h(f);
14
+ return e ? t = m(e) : r && t++, /* @__PURE__ */ s(f.Provider, { value: t, children: /* @__PURE__ */ s(
15
15
  l,
16
16
  {
17
17
  className: u(
18
- s.surface,
19
- s[`surface--${g(t)}`],
20
- n
18
+ a.surface,
19
+ a[`surface--${g(t)}`],
20
+ c
21
21
  ),
22
- ...f
22
+ ...n
23
23
  }
24
24
  ) });
25
25
  }
@@ -1,12 +1,12 @@
1
- import { jsxs as ae, jsx as d } from "react/jsx-runtime";
1
+ import { jsxs as ae, jsx as c } from "react/jsx-runtime";
2
2
  import { View as se } from "../view/view.js";
3
3
  import * as s from "react";
4
4
  import { f as ie } from "../../formatErrorMessage-BqPuTBN-.js";
5
- import { d as re, m as ce, u as M } from "../../useRenderElement-DngNDu_P.js";
6
- import { f as de, c as le, a as O, u as ue, b as fe } from "../../LabelableContext-Be1u-eFg.js";
5
+ import { d as re, m as de, u as M } from "../../useRenderElement-DngNDu_P.js";
6
+ import { f as ce, c as le, a as O, u as ue, b as fe } from "../../LabelableContext-Be1u-eFg.js";
7
7
  import { u as me } from "../../useControlled-Du4sJyMj.js";
8
- import { u as pe } from "../../useStableCallback-DKZHlUAT.js";
9
- import { u as he } from "../../useIsoLayoutEffect-CIDbvm3Q.js";
8
+ import { u as he } from "../../useStableCallback-DKZHlUAT.js";
9
+ import { u as pe } from "../../useIsoLayoutEffect-CIDbvm3Q.js";
10
10
  import { v as ke } from "../../visuallyHidden-CpJ-mhai.js";
11
11
  import { u as ve } from "../../useBaseUiId-B7WyxtIE.js";
12
12
  import { u as Ce } from "../../useLabelableId-CX4tcfzK.js";
@@ -25,7 +25,7 @@ let B = /* @__PURE__ */ (function(e) {
25
25
  return e.checked = "data-checked", e.unchecked = "data-unchecked", e.disabled = "data-disabled", e.readonly = "data-readonly", e.required = "data-required", e.valid = "data-valid", e.invalid = "data-invalid", e.touched = "data-touched", e.dirty = "data-dirty", e.filled = "data-filled", e.focused = "data-focused", e;
26
26
  })({});
27
27
  const T = {
28
- ...de,
28
+ ...ce,
29
29
  checked(e) {
30
30
  return e ? {
31
31
  [B.checked]: ""
@@ -37,8 +37,8 @@ const T = {
37
37
  const {
38
38
  checked: b,
39
39
  className: j,
40
- defaultChecked: p,
41
- id: h,
40
+ defaultChecked: h,
41
+ id: p,
42
42
  inputRef: k,
43
43
  name: v,
44
44
  nativeButton: U = !1,
@@ -65,13 +65,13 @@ const T = {
65
65
  validation: n
66
66
  } = O(), {
67
67
  labelId: $
68
- } = ue(), o = Y || z, r = Z ?? v, _ = pe(H), c = s.useRef(null), E = re(c, k, n.inputRef), f = s.useRef(null), N = ve(), R = Ce({
69
- id: h,
68
+ } = ue(), o = Y || z, r = Z ?? v, _ = he(H), d = s.useRef(null), E = re(d, k, n.inputRef), f = s.useRef(null), N = ve(), R = Ce({
69
+ id: p,
70
70
  implicit: !1,
71
71
  controlRef: f
72
72
  }), [t, P] = me({
73
73
  controlled: b,
74
- default: !!p,
74
+ default: !!h,
75
75
  name: "Switch",
76
76
  state: "checked"
77
77
  });
@@ -82,9 +82,9 @@ const T = {
82
82
  controlRef: f,
83
83
  name: r,
84
84
  getValue: () => t
85
- }), he(() => {
86
- c.current && C(c.current.checked);
87
- }, [c, C]), we(t, () => {
85
+ }), pe(() => {
86
+ d.current && C(d.current.checked);
87
+ }, [d, C]), we(t, () => {
88
88
  G(r), K(t !== Q.initialValue), C(t), W() ? n.commit(t) : n.commit(t, !0);
89
89
  });
90
90
  const {
@@ -103,13 +103,13 @@ const T = {
103
103
  o || x(!0);
104
104
  },
105
105
  onBlur() {
106
- const a = c.current;
106
+ const a = d.current;
107
107
  !a || o || (J(!0), x(!1), X === "onBlur" && n.commit(a.checked));
108
108
  },
109
109
  onClick(a) {
110
- l || o || (a.preventDefault(), c?.current?.click());
110
+ l || o || (a.preventDefault(), d?.current?.click());
111
111
  }
112
- }, ne = s.useMemo(() => ce({
112
+ }, ne = s.useMemo(() => de({
113
113
  checked: t,
114
114
  disabled: o,
115
115
  id: R,
@@ -143,11 +143,11 @@ const T = {
143
143
  });
144
144
  return /* @__PURE__ */ ae(y.Provider, {
145
145
  value: V,
146
- children: [oe, !t && r && w !== void 0 && /* @__PURE__ */ d("input", {
146
+ children: [oe, !t && r && w !== void 0 && /* @__PURE__ */ c("input", {
147
147
  type: "hidden",
148
148
  name: r,
149
149
  value: w
150
- }), /* @__PURE__ */ d("input", {
150
+ }), /* @__PURE__ */ c("input", {
151
151
  ...ne
152
152
  })]
153
153
  });
@@ -157,34 +157,34 @@ const L = /* @__PURE__ */ s.forwardRef(function(i, m) {
157
157
  const {
158
158
  render: b,
159
159
  className: j,
160
- ...p
160
+ ...h
161
161
  } = i, {
162
- state: h
162
+ state: p
163
163
  } = O(), k = xe(), v = {
164
- ...h,
164
+ ...p,
165
165
  ...k
166
166
  };
167
167
  return M("span", i, {
168
168
  state: v,
169
169
  ref: m,
170
170
  stateAttributesMapping: T,
171
- props: p
171
+ props: h
172
172
  });
173
173
  });
174
174
  process.env.NODE_ENV !== "production" && (L.displayName = "SwitchThumb");
175
- const _e = "_switch__thumb_m68cc_25", F = {
176
- switch: "_switch_m68cc_2",
175
+ const _e = "_switch__thumb_1hdfo_25", F = {
176
+ switch: "_switch_1hdfo_2",
177
177
  switch__thumb: _e
178
178
  };
179
179
  function Ue({ color: e = "primary", ...i }) {
180
- return /* @__PURE__ */ d(
180
+ return /* @__PURE__ */ c(
181
181
  se,
182
182
  {
183
- render: /* @__PURE__ */ d(q, { ...i }),
183
+ render: /* @__PURE__ */ c(q, { ...i }),
184
184
  className: F.switch,
185
185
  interactive: "fill-outline",
186
186
  color: e,
187
- children: /* @__PURE__ */ d(L, { className: F.switch__thumb })
187
+ children: /* @__PURE__ */ c(L, { className: F.switch__thumb })
188
188
  }
189
189
  );
190
190
  }