@tcn/ui 0.12.5 → 0.13.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 (210) hide show
  1. package/dist/aside.css +1 -0
  2. package/dist/body.css +1 -1
  3. package/dist/inputs/color_input/color_input.js +18 -18
  4. package/dist/inputs/color_input/color_input.js.map +1 -1
  5. package/dist/inputs/control/control.d.ts +10 -0
  6. package/dist/inputs/control/control.d.ts.map +1 -0
  7. package/dist/inputs/control/control.js +17 -0
  8. package/dist/inputs/control/control.js.map +1 -0
  9. package/dist/inputs/control_set/control_set.d.ts +5 -0
  10. package/dist/inputs/control_set/control_set.d.ts.map +1 -0
  11. package/dist/inputs/control_set/control_set.js +20 -0
  12. package/dist/inputs/{input_group/input_group.js.map → control_set/control_set.js.map} +1 -1
  13. package/dist/inputs/date_picker/date_picker_input.js +20 -20
  14. package/dist/inputs/date_picker/date_picker_input.js.map +1 -1
  15. package/dist/inputs/index.d.ts +2 -1
  16. package/dist/inputs/index.d.ts.map +1 -1
  17. package/dist/inputs/index.js +27 -24
  18. package/dist/inputs/index.js.map +1 -1
  19. package/dist/inputs/input/input.js +6 -6
  20. package/dist/inputs/input/input.js.map +1 -1
  21. package/dist/inputs/phone_number_input/phone_number_country_select_adapter.js +15 -15
  22. package/dist/inputs/phone_number_input/phone_number_country_select_adapter.js.map +1 -1
  23. package/dist/inputs/phone_number_input/phone_number_input.d.ts +2 -1
  24. package/dist/inputs/phone_number_input/phone_number_input.d.ts.map +1 -1
  25. package/dist/inputs/phone_number_input/phone_number_input.js +45 -43
  26. package/dist/inputs/phone_number_input/phone_number_input.js.map +1 -1
  27. package/dist/inputs/phone_number_input/phone_number_input_adapter.js +21 -21
  28. package/dist/inputs/phone_number_input/phone_number_input_adapter.js.map +1 -1
  29. package/dist/inputs/phone_number_input/sip_input.d.ts +2 -1
  30. package/dist/inputs/phone_number_input/sip_input.d.ts.map +1 -1
  31. package/dist/inputs/phone_number_input/sip_input.js +51 -49
  32. package/dist/inputs/phone_number_input/sip_input.js.map +1 -1
  33. package/dist/inputs/select/select.js +6 -6
  34. package/dist/inputs/select/select.js.map +1 -1
  35. package/dist/inputs/textarea/textarea.js +8 -8
  36. package/dist/inputs/textarea/textarea.js.map +1 -1
  37. package/dist/inputs/unit_input/unit_input.js +20 -20
  38. package/dist/inputs/unit_input/unit_input.js.map +1 -1
  39. package/dist/layouts/body/body.d.ts +17 -0
  40. package/dist/layouts/body/body.d.ts.map +1 -1
  41. package/dist/layouts/body/body.js +11 -12
  42. package/dist/layouts/body/body.js.map +1 -1
  43. package/dist/layouts/index.d.ts +1 -2
  44. package/dist/layouts/index.d.ts.map +1 -1
  45. package/dist/layouts/index.js +38 -40
  46. package/dist/layouts/index.js.map +1 -1
  47. package/dist/layouts/scaffold/scaffold.js +1 -1
  48. package/dist/layouts/scaffold/scaffold.js.map +1 -1
  49. package/dist/layouts/section/section.d.ts.map +1 -1
  50. package/dist/layouts/section/section.js +14 -13
  51. package/dist/layouts/section/section.js.map +1 -1
  52. package/dist/overlay/frame/frame.d.ts +2 -2
  53. package/dist/overlay/frame/frame.d.ts.map +1 -1
  54. package/dist/overlay/frame/frame.js +67 -59
  55. package/dist/overlay/frame/frame.js.map +1 -1
  56. package/dist/overlay/slide/slide.d.ts +9 -0
  57. package/dist/overlay/slide/slide.d.ts.map +1 -0
  58. package/dist/overlay/slide/slide.js +29 -0
  59. package/dist/overlay/slide/slide.js.map +1 -0
  60. package/dist/page.css +1 -1
  61. package/dist/slide.css +1 -0
  62. package/dist/surfaces/aside/aside.d.ts +5 -0
  63. package/dist/surfaces/aside/aside.d.ts.map +1 -0
  64. package/dist/surfaces/aside/aside.js +19 -0
  65. package/dist/surfaces/aside/aside.js.map +1 -0
  66. package/dist/surfaces/drawers/drawer.d.ts +5 -0
  67. package/dist/surfaces/drawers/drawer.d.ts.map +1 -0
  68. package/dist/surfaces/drawers/drawer.js +31 -0
  69. package/dist/surfaces/drawers/drawer.js.map +1 -0
  70. package/dist/surfaces/index.d.ts +3 -6
  71. package/dist/surfaces/index.d.ts.map +1 -1
  72. package/dist/surfaces/index.js +20 -26
  73. package/dist/surfaces/index.js.map +1 -1
  74. package/dist/surfaces/modal/modal.d.ts +1 -1
  75. package/dist/surfaces/modal/modal.d.ts.map +1 -1
  76. package/dist/surfaces/modal/modal.js +22 -14
  77. package/dist/surfaces/modal/modal.js.map +1 -1
  78. package/dist/surfaces/page/page.d.ts +5 -0
  79. package/dist/surfaces/page/page.d.ts.map +1 -0
  80. package/dist/surfaces/page/page.js +19 -0
  81. package/dist/surfaces/page/page.js.map +1 -0
  82. package/dist/surfaces/pop_confirm/pop_confirm.d.ts.map +1 -1
  83. package/dist/surfaces/pop_confirm/pop_confirm.js +23 -16
  84. package/dist/surfaces/pop_confirm/pop_confirm.js.map +1 -1
  85. package/dist/surfaces/window/window.d.ts +1 -1
  86. package/dist/surfaces/window/window.d.ts.map +1 -1
  87. package/dist/surfaces/window/window.js +27 -19
  88. package/dist/surfaces/window/window.js.map +1 -1
  89. package/dist/themes/stylesheets/reset.css +1 -1
  90. package/dist/themes/stylesheets/reset.js +2 -2
  91. package/dist/themes/stylesheets/reset.js.map +1 -1
  92. package/dist/themes/themes/ergo/ergo_theme.css +1 -1
  93. package/dist/themes/themes/ergo/ergo_theme.js +134 -44
  94. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  95. package/dist/utils/dnd/hooks/use_drag_container.d.ts.map +1 -1
  96. package/dist/utils/dnd/hooks/use_drag_container.js.map +1 -1
  97. package/package.json +2 -2
  98. package/src/inputs/color_input/color_input.tsx +3 -3
  99. package/src/inputs/control/control.stories.tsx +158 -0
  100. package/src/inputs/control/control.tsx +32 -0
  101. package/src/inputs/control/control_stories.module.css +7 -0
  102. package/src/inputs/control_set/control_set.stories.tsx +46 -0
  103. package/src/inputs/{input_group/input_group.tsx → control_set/control_set.tsx} +5 -5
  104. package/src/inputs/date_picker/date_picker_input.stories.tsx +1 -1
  105. package/src/inputs/date_picker/date_picker_input.tsx +1 -1
  106. package/src/inputs/index.ts +2 -1
  107. package/src/inputs/input/input.tsx +1 -1
  108. package/src/inputs/phone_number_input/phone_number_country_select_adapter.tsx +1 -1
  109. package/src/inputs/phone_number_input/phone_number_input.tsx +4 -1
  110. package/src/inputs/phone_number_input/phone_number_input_adapter.tsx +2 -2
  111. package/src/inputs/phone_number_input/sip_input.tsx +7 -4
  112. package/src/inputs/select/select.tsx +1 -1
  113. package/src/inputs/textarea/textarea.stories.tsx +1 -1
  114. package/src/inputs/textarea/textarea.tsx +1 -1
  115. package/src/inputs/unit_input/unit_input.tsx +3 -3
  116. package/src/layouts/__stories__/composed_stories.module.css +1 -7
  117. package/src/layouts/__stories__/rail.stories.tsx +20 -13
  118. package/src/layouts/__stories__/scaffold.stories.tsx +34 -22
  119. package/src/layouts/__stories__/utils.tsx +10 -7
  120. package/src/layouts/body/body.module.css +0 -8
  121. package/src/layouts/body/body.tsx +19 -3
  122. package/src/layouts/index.ts +1 -2
  123. package/src/layouts/scaffold/scaffold.tsx +1 -1
  124. package/src/layouts/section/section.tsx +2 -1
  125. package/src/overlay/frame/frame.tsx +13 -16
  126. package/src/overlay/slide/slide.module.css +30 -0
  127. package/src/overlay/slide/slide.stories.tsx +61 -0
  128. package/src/overlay/slide/slide.tsx +51 -0
  129. package/src/surfaces/aside/aside.module.css +5 -0
  130. package/src/surfaces/aside/aside.stories.tsx +75 -0
  131. package/src/surfaces/aside/aside.tsx +22 -0
  132. package/src/surfaces/card/card.stories.tsx +8 -5
  133. package/src/surfaces/card/card_stories.module.css +4 -2
  134. package/src/surfaces/drawers/drawer.stories.tsx +144 -0
  135. package/src/surfaces/drawers/drawer.tsx +30 -0
  136. package/src/surfaces/index.ts +3 -6
  137. package/src/surfaces/modal/__stories__/modal.stories.tsx +21 -4
  138. package/src/surfaces/modal/modal.tsx +5 -1
  139. package/src/surfaces/page/page.module.css +0 -6
  140. package/src/surfaces/page/page.stories.tsx +71 -0
  141. package/src/surfaces/page/page.tsx +22 -0
  142. package/src/surfaces/panel/__stories__/panel.stories.tsx +66 -60
  143. package/src/surfaces/pop_confirm/pop_confirm.stories.tsx +43 -31
  144. package/src/surfaces/pop_confirm/pop_confirm.tsx +5 -1
  145. package/src/surfaces/tooltip/__stories__/tooltip.stories.tsx +31 -0
  146. package/src/surfaces/window/window.stories.tsx +15 -4
  147. package/src/surfaces/window/window.tsx +5 -1
  148. package/src/themes/stylesheets/reset.css +2 -2
  149. package/src/themes/themes/ergo/__stories__/components/tone_picker/sb_tone_card.tsx +16 -15
  150. package/src/themes/themes/ergo/__stories__/material.stories.tsx +6 -4
  151. package/src/themes/themes/ergo/ergo_theme.css +134 -44
  152. package/src/utils/dnd/hooks/use_drag_container.ts +0 -7
  153. package/dist/body.module-BbFZ7KNP.js +0 -5
  154. package/dist/body.module-BbFZ7KNP.js.map +0 -1
  155. package/dist/drawer_bottom.css +0 -1
  156. package/dist/drawer_end.css +0 -1
  157. package/dist/drawer_start.css +0 -1
  158. package/dist/drawer_top.css +0 -1
  159. package/dist/inputs/input_group/input_group.d.ts +0 -5
  160. package/dist/inputs/input_group/input_group.d.ts.map +0 -1
  161. package/dist/inputs/input_group/input_group.js +0 -20
  162. package/dist/layouts/body/h_body.d.ts +0 -6
  163. package/dist/layouts/body/h_body.d.ts.map +0 -1
  164. package/dist/layouts/body/h_body.js +0 -27
  165. package/dist/layouts/body/h_body.js.map +0 -1
  166. package/dist/layouts/body/v_body.d.ts +0 -6
  167. package/dist/layouts/body/v_body.d.ts.map +0 -1
  168. package/dist/layouts/body/v_body.js +0 -27
  169. package/dist/layouts/body/v_body.js.map +0 -1
  170. package/dist/page.module-DXhph-u6.js +0 -5
  171. package/dist/page.module-DXhph-u6.js.map +0 -1
  172. package/dist/surfaces/drawers/drawer_bottom/drawer_bottom.d.ts +0 -7
  173. package/dist/surfaces/drawers/drawer_bottom/drawer_bottom.d.ts.map +0 -1
  174. package/dist/surfaces/drawers/drawer_bottom/drawer_bottom.js +0 -22
  175. package/dist/surfaces/drawers/drawer_bottom/drawer_bottom.js.map +0 -1
  176. package/dist/surfaces/drawers/drawer_end/drawer_end.d.ts +0 -7
  177. package/dist/surfaces/drawers/drawer_end/drawer_end.d.ts.map +0 -1
  178. package/dist/surfaces/drawers/drawer_end/drawer_end.js +0 -20
  179. package/dist/surfaces/drawers/drawer_end/drawer_end.js.map +0 -1
  180. package/dist/surfaces/drawers/drawer_start/drawer_start.d.ts +0 -7
  181. package/dist/surfaces/drawers/drawer_start/drawer_start.d.ts.map +0 -1
  182. package/dist/surfaces/drawers/drawer_start/drawer_start.js +0 -22
  183. package/dist/surfaces/drawers/drawer_start/drawer_start.js.map +0 -1
  184. package/dist/surfaces/drawers/drawer_top/drawer_top.d.ts +0 -7
  185. package/dist/surfaces/drawers/drawer_top/drawer_top.d.ts.map +0 -1
  186. package/dist/surfaces/drawers/drawer_top/drawer_top.js +0 -20
  187. package/dist/surfaces/drawers/drawer_top/drawer_top.js.map +0 -1
  188. package/dist/surfaces/page/h_page.d.ts +0 -6
  189. package/dist/surfaces/page/h_page.d.ts.map +0 -1
  190. package/dist/surfaces/page/h_page.js +0 -22
  191. package/dist/surfaces/page/h_page.js.map +0 -1
  192. package/dist/surfaces/page/v_page.d.ts +0 -6
  193. package/dist/surfaces/page/v_page.d.ts.map +0 -1
  194. package/dist/surfaces/page/v_page.js +0 -21
  195. package/dist/surfaces/page/v_page.js.map +0 -1
  196. package/src/layouts/body/h_body.module.css +0 -7
  197. package/src/layouts/body/h_body.tsx +0 -28
  198. package/src/layouts/body/v_body.module.css +0 -7
  199. package/src/layouts/body/v_body.tsx +0 -28
  200. package/src/surfaces/drawers/__stories__/drawers.stories.tsx +0 -26
  201. package/src/surfaces/drawers/drawer_bottom/drawer_bottom.module.css +0 -5
  202. package/src/surfaces/drawers/drawer_bottom/drawer_bottom.tsx +0 -23
  203. package/src/surfaces/drawers/drawer_end/drawer_end.module.css +0 -5
  204. package/src/surfaces/drawers/drawer_end/drawer_end.tsx +0 -24
  205. package/src/surfaces/drawers/drawer_start/drawer_start.module.css +0 -5
  206. package/src/surfaces/drawers/drawer_start/drawer_start.tsx +0 -23
  207. package/src/surfaces/drawers/drawer_top/drawer_top.module.css +0 -5
  208. package/src/surfaces/drawers/drawer_top/drawer_top.tsx +0 -24
  209. package/src/surfaces/page/h_page.tsx +0 -23
  210. package/src/surfaces/page/v_page.tsx +0 -22
@@ -1,101 +1,103 @@
1
- import { jsxs as f, Fragment as z, jsx as e } from "react/jsx-runtime";
2
- import g, { useLayoutEffect as E } from "react";
3
- import { NotebookIcon as F } from "@tcn/icons/notebook_icon.js";
4
- import { Input as L } from "../input/input.js";
1
+ import { jsxs as f, Fragment as E, jsx as e } from "react/jsx-runtime";
2
+ import g, { useLayoutEffect as F } from "react";
3
+ import { NotebookIcon as L } from "@tcn/icons/notebook_icon.js";
4
+ import { Input as R } from "../input/input.js";
5
5
  import "../../actions/button/base_button/base_button.js";
6
6
  import "../../actions/button/button_group/button_group.js";
7
7
  import "../../actions/button/slim_button/slim_button.js";
8
- import { Button as R } from "../../actions/button/button/button.js";
8
+ import { Button as j } from "../../actions/button/button/button.js";
9
9
  import "../../actions/toggle/toggle.js";
10
- import { InputGroup as j } from "../input_group/input_group.js";
11
- import w from "clsx";
12
- import { usePhoneContext as y } from "./phone_number_context.js";
13
- import { PhoneNumberCountrySelectAdapter as V } from "./phone_number_country_select_adapter.js";
14
- import { SuggestionList as _ } from "../suggestions/suggestion_list.js";
15
- function Z({
10
+ import { ControlSet as w } from "../control_set/control_set.js";
11
+ import y from "clsx";
12
+ import { usePhoneContext as V } from "./phone_number_context.js";
13
+ import { PhoneNumberCountrySelectAdapter as _ } from "./phone_number_country_select_adapter.js";
14
+ import { SuggestionList as q } from "../suggestions/suggestion_list.js";
15
+ function oo({
16
16
  disabled: n,
17
17
  countries: d,
18
18
  name: k,
19
- "aria-label": B,
20
- autoFocus: S,
21
- placeholder: P
19
+ "aria-label": S,
20
+ autoFocus: B,
21
+ placeholder: P,
22
+ sipAutoComplete: b = "on"
22
23
  }) {
23
- const i = g.useRef(null), [u, t] = g.useState(null), l = u != null, {
24
+ const i = g.useRef(null), [l, t] = g.useState(null), u = l != null, {
24
25
  phoneBook: s,
25
26
  setValue: r,
26
- setCountry: b,
27
+ setCountry: C,
27
28
  ariaPhoneBookButtonLabel: I,
28
29
  sipAddress: p,
29
- setSipAddress: c,
30
- focusNumberInput: m,
30
+ setSipAddress: m,
31
+ focusNumberInput: c,
31
32
  setFocusNumberInput: a
32
- } = y(), C = s.length > 0;
33
- function x(o) {
34
- t(l ? null : o.currentTarget);
33
+ } = V(), x = s.length > 0;
34
+ function A(o) {
35
+ t(u ? null : o.currentTarget);
35
36
  }
36
37
  function h() {
37
38
  t(null);
38
39
  }
39
- function A(o) {
40
+ function N(o) {
40
41
  h(), a(!0), r(o);
41
42
  }
42
- const N = d?.map((o) => ({
43
+ const O = d?.map((o) => ({
43
44
  value: o,
44
45
  label: o
45
46
  })) || [];
46
- function O(o) {
47
- o !== "SIP" && (c(p), a(!0), r(""), b(o || "US"));
48
- }
49
47
  function v(o) {
50
- c(o), r(`sip:${o}`);
48
+ o !== "SIP" && (m(p), a(!0), r(""), C(o || "US"));
49
+ }
50
+ function z(o) {
51
+ m(o), r(`sip:${o}`);
51
52
  }
52
- return E(() => {
53
+ return F(() => {
53
54
  const o = i.current;
54
- o == null || !m || requestAnimationFrame(() => {
55
+ o == null || !c || requestAnimationFrame(() => {
55
56
  o.value.length > 0 ? o.select() : o.focus();
56
57
  });
57
- }, [m]), /* @__PURE__ */ f(z, { children: [
58
- /* @__PURE__ */ f(j, { children: [
58
+ }, [c]), /* @__PURE__ */ f(E, { children: [
59
+ /* @__PURE__ */ f(w, { children: [
59
60
  /* @__PURE__ */ e(
60
- V,
61
+ _,
61
62
  {
62
63
  value: "SIP",
63
- onChange: O,
64
- options: N,
64
+ onChange: v,
65
+ options: O,
65
66
  disabled: n
66
67
  }
67
68
  ),
68
69
  /* @__PURE__ */ e(
69
- L,
70
+ R,
70
71
  {
71
72
  ref: i,
72
73
  value: p,
73
74
  disabled: n,
74
- onChange: v,
75
+ onChange: z,
75
76
  name: k,
76
- "aria-label": B,
77
- autoFocus: S,
78
- placeholder: P
77
+ "aria-label": S,
78
+ autoFocus: B,
79
+ placeholder: P,
80
+ autoComplete: b
79
81
  }
80
82
  ),
81
- C && /* @__PURE__ */ e(
82
- R,
83
+ x && /* @__PURE__ */ e(
84
+ j,
83
85
  {
84
86
  disabled: n,
85
- className: w("tcn-input-group-slot", "tcn-phone-number-phone-book"),
87
+ className: y("tcn-control-set-item", "tcn-phone-number-phone-book"),
86
88
  "aria-label": I,
87
- onClick: x,
89
+ onClick: A,
88
90
  size: "md",
89
- children: /* @__PURE__ */ e(F, { size: "md" })
91
+ children: /* @__PURE__ */ e(L, { size: "md" })
90
92
  }
91
93
  )
92
94
  ] }),
93
95
  /* @__PURE__ */ e(
94
- _,
96
+ q,
95
97
  {
96
- open: l,
97
- anchorElement: u,
98
- onOptionSelect: A,
98
+ open: u,
99
+ anchorElement: l,
100
+ onOptionSelect: N,
99
101
  onClose: h,
100
102
  width: "300px",
101
103
  noSuggestionMessage: "No phone numbers found",
@@ -109,6 +111,6 @@ function Z({
109
111
  ] });
110
112
  }
111
113
  export {
112
- Z as SipInput
114
+ oo as SipInput
113
115
  };
114
116
  //# sourceMappingURL=sip_input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sip_input.js","sources":["../../../src/inputs/phone_number_input/sip_input.tsx"],"sourcesContent":["import React, { useLayoutEffect } from 'react';\nimport { NotebookIcon } from '@tcn/icons/notebook_icon.js';\nimport { Input } from '../input/input.js';\nimport { Button } from '../../actions/index.js';\nimport { InputGroup } from '../input_group/input_group.js';\nimport clsx from 'clsx';\nimport { usePhoneContext } from './phone_number_context.js';\nimport type { CountryCode } from 'libphonenumber-js';\nimport {\n PhoneNumberCountrySelectAdapter,\n type CountryOption,\n} from './phone_number_country_select_adapter.js';\nimport { SuggestionList } from '../suggestions/suggestion_list.js';\n\nexport interface SipInputProps {\n onChange: (value: string) => void;\n countries?: CountryCode[];\n disabled?: boolean;\n name?: string;\n 'aria-label'?: string;\n autoFocus?: boolean;\n placeholder?: string;\n}\n\nexport function SipInput({\n disabled,\n countries,\n name,\n 'aria-label': ariaLabel,\n autoFocus,\n placeholder,\n}: SipInputProps) {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [phoneBookElement, setPhoneBookElement] =\n React.useState<HTMLButtonElement | null>(null);\n const isPhoneBookOpen = phoneBookElement != null;\n\n const {\n phoneBook: phoneBookOptions,\n setValue,\n setCountry,\n ariaPhoneBookButtonLabel,\n sipAddress,\n setSipAddress,\n focusNumberInput,\n setFocusNumberInput,\n } = usePhoneContext();\n\n const showPhoneBook = phoneBookOptions.length > 0;\n\n function togglePhoneBook(e: React.MouseEvent<HTMLButtonElement>) {\n if (isPhoneBookOpen) {\n setPhoneBookElement(null);\n } else {\n setPhoneBookElement(e.currentTarget);\n }\n }\n\n function closePhoneBook() {\n setPhoneBookElement(null);\n }\n\n function handlePhoneBookOptionSelect(value: string) {\n closePhoneBook();\n setFocusNumberInput(true);\n setValue(value);\n }\n\n const options: CountryOption[] =\n countries?.map(country => ({\n value: country,\n label: country,\n })) || [];\n\n function selectCountry(countryCode?: string) {\n if (countryCode !== 'SIP') {\n setSipAddress(sipAddress);\n setFocusNumberInput(true);\n setValue('');\n setCountry((countryCode as CountryCode) || 'US');\n }\n }\n\n function updateSipValue(value: string) {\n setSipAddress(value);\n setValue(`sip:${value}`);\n }\n\n useLayoutEffect(() => {\n const input = inputRef.current;\n\n if (input == null || !focusNumberInput) {\n return;\n }\n\n requestAnimationFrame(() => {\n if (input.value.length > 0) {\n input.select();\n } else {\n input.focus();\n }\n });\n }, [focusNumberInput]);\n\n return (\n <>\n <InputGroup>\n <PhoneNumberCountrySelectAdapter\n value=\"SIP\"\n onChange={selectCountry}\n options={options}\n disabled={disabled}\n />\n <Input\n ref={inputRef}\n value={sipAddress}\n disabled={disabled}\n onChange={updateSipValue}\n name={name}\n aria-label={ariaLabel}\n autoFocus={autoFocus}\n placeholder={placeholder}\n />\n {showPhoneBook && (\n <Button\n disabled={disabled}\n className={clsx('tcn-input-group-slot', 'tcn-phone-number-phone-book')}\n aria-label={ariaPhoneBookButtonLabel}\n onClick={togglePhoneBook}\n size=\"md\"\n >\n <NotebookIcon size=\"md\" />\n </Button>\n )}\n </InputGroup>\n <SuggestionList\n open={isPhoneBookOpen}\n anchorElement={phoneBookElement}\n onOptionSelect={handlePhoneBookOptionSelect}\n onClose={closePhoneBook}\n width=\"300px\"\n noSuggestionMessage=\"No phone numbers found\"\n horizontalAnchor=\"end\"\n horizontalOrigin=\"end\"\n verticalAnchor=\"top\"\n verticalOrigin=\"top\"\n >\n {phoneBookOptions}\n </SuggestionList>\n </>\n );\n}\n"],"names":["SipInput","disabled","countries","name","ariaLabel","autoFocus","placeholder","inputRef","React","phoneBookElement","setPhoneBookElement","isPhoneBookOpen","phoneBookOptions","setValue","setCountry","ariaPhoneBookButtonLabel","sipAddress","setSipAddress","focusNumberInput","setFocusNumberInput","usePhoneContext","showPhoneBook","togglePhoneBook","e","closePhoneBook","handlePhoneBookOptionSelect","value","options","country","selectCountry","countryCode","updateSipValue","useLayoutEffect","input","jsxs","Fragment","InputGroup","jsx","PhoneNumberCountrySelectAdapter","Input","Button","clsx","NotebookIcon","SuggestionList"],"mappings":"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"}
1
+ {"version":3,"file":"sip_input.js","sources":["../../../src/inputs/phone_number_input/sip_input.tsx"],"sourcesContent":["import React, { useLayoutEffect } from 'react';\nimport { NotebookIcon } from '@tcn/icons/notebook_icon.js';\nimport { Input } from '../input/input.js';\nimport { Button } from '../../actions/index.js';\nimport { ControlSet } from '../control_set/control_set.js';\nimport clsx from 'clsx';\nimport { usePhoneContext } from './phone_number_context.js';\nimport type { CountryCode } from 'libphonenumber-js';\nimport {\n PhoneNumberCountrySelectAdapter,\n type CountryOption,\n} from './phone_number_country_select_adapter.js';\nimport { SuggestionList } from '../suggestions/suggestion_list.js';\n\nexport interface SipInputProps {\n onChange: (value: string) => void;\n sipAutoComplete?: string;\n countries?: CountryCode[];\n disabled?: boolean;\n name?: string;\n 'aria-label'?: string;\n autoFocus?: boolean;\n placeholder?: string;\n}\n\nexport function SipInput({\n disabled,\n countries,\n name,\n 'aria-label': ariaLabel,\n autoFocus,\n placeholder,\n sipAutoComplete = 'on',\n}: SipInputProps) {\n const inputRef = React.useRef<HTMLInputElement>(null);\n const [phoneBookElement, setPhoneBookElement] =\n React.useState<HTMLButtonElement | null>(null);\n const isPhoneBookOpen = phoneBookElement != null;\n\n const {\n phoneBook: phoneBookOptions,\n setValue,\n setCountry,\n ariaPhoneBookButtonLabel,\n sipAddress,\n setSipAddress,\n focusNumberInput,\n setFocusNumberInput,\n } = usePhoneContext();\n\n const showPhoneBook = phoneBookOptions.length > 0;\n\n function togglePhoneBook(e: React.MouseEvent<HTMLButtonElement>) {\n if (isPhoneBookOpen) {\n setPhoneBookElement(null);\n } else {\n setPhoneBookElement(e.currentTarget);\n }\n }\n\n function closePhoneBook() {\n setPhoneBookElement(null);\n }\n\n function handlePhoneBookOptionSelect(value: string) {\n closePhoneBook();\n setFocusNumberInput(true);\n setValue(value);\n }\n\n const options: CountryOption[] =\n countries?.map(country => ({\n value: country,\n label: country,\n })) || [];\n\n function selectCountry(countryCode?: string) {\n if (countryCode !== 'SIP') {\n setSipAddress(sipAddress);\n setFocusNumberInput(true);\n setValue('');\n setCountry((countryCode as CountryCode) || 'US');\n }\n }\n\n function updateSipValue(value: string) {\n setSipAddress(value);\n setValue(`sip:${value}`);\n }\n\n useLayoutEffect(() => {\n const input = inputRef.current;\n\n if (input == null || !focusNumberInput) {\n return;\n }\n\n requestAnimationFrame(() => {\n if (input.value.length > 0) {\n input.select();\n } else {\n input.focus();\n }\n });\n }, [focusNumberInput]);\n\n return (\n <>\n <ControlSet>\n <PhoneNumberCountrySelectAdapter\n value=\"SIP\"\n onChange={selectCountry}\n options={options}\n disabled={disabled}\n />\n <Input\n ref={inputRef}\n value={sipAddress}\n disabled={disabled}\n onChange={updateSipValue}\n name={name}\n aria-label={ariaLabel}\n autoFocus={autoFocus}\n placeholder={placeholder}\n autoComplete={sipAutoComplete}\n />\n {showPhoneBook && (\n <Button\n disabled={disabled}\n className={clsx('tcn-control-set-item', 'tcn-phone-number-phone-book')}\n aria-label={ariaPhoneBookButtonLabel}\n onClick={togglePhoneBook}\n size=\"md\"\n >\n <NotebookIcon size=\"md\" />\n </Button>\n )}\n </ControlSet>\n <SuggestionList\n open={isPhoneBookOpen}\n anchorElement={phoneBookElement}\n onOptionSelect={handlePhoneBookOptionSelect}\n onClose={closePhoneBook}\n width=\"300px\"\n noSuggestionMessage=\"No phone numbers found\"\n horizontalAnchor=\"end\"\n horizontalOrigin=\"end\"\n verticalAnchor=\"top\"\n verticalOrigin=\"top\"\n >\n {phoneBookOptions}\n </SuggestionList>\n </>\n );\n}\n"],"names":["SipInput","disabled","countries","name","ariaLabel","autoFocus","placeholder","sipAutoComplete","inputRef","React","phoneBookElement","setPhoneBookElement","isPhoneBookOpen","phoneBookOptions","setValue","setCountry","ariaPhoneBookButtonLabel","sipAddress","setSipAddress","focusNumberInput","setFocusNumberInput","usePhoneContext","showPhoneBook","togglePhoneBook","e","closePhoneBook","handlePhoneBookOptionSelect","value","options","country","selectCountry","countryCode","updateSipValue","useLayoutEffect","input","jsxs","Fragment","ControlSet","jsx","PhoneNumberCountrySelectAdapter","Input","Button","clsx","NotebookIcon","SuggestionList"],"mappings":"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"}
@@ -34,7 +34,7 @@ const de = F.forwardRef(function({
34
34
  }, K) {
35
35
  const M = F.Children.toArray(
36
36
  t
37
- ), l = c(""), j = c(!1), h = c(!1), [q, S] = w(null), i = c(null), [y, b] = w(!1), B = J(K, i), R = Z(M, m || ""), k = R == null ? x || "" : R.props.label;
37
+ ), l = c(""), j = c(!1), h = c(!1), [q, y] = w(null), i = c(null), [S, b] = w(!1), B = J(K, i), R = Z(M, m || ""), k = R == null ? x || "" : R.props.label;
38
38
  function _() {
39
39
  b(!0);
40
40
  }
@@ -58,14 +58,14 @@ const de = F.forwardRef(function({
58
58
  l.current = s, n && n(e);
59
59
  }
60
60
  function I(e) {
61
- S(e.currentTarget);
61
+ y(e.currentTarget);
62
62
  const s = l.current = e.key;
63
63
  l.current = "";
64
64
  const r = e.key;
65
- s && (r === "Enter" || r === " ") && (y ? o() : _()), f && f(e);
65
+ s && (r === "Enter" || r === " ") && (S ? o() : _()), f && f(e);
66
66
  }
67
67
  function P(e) {
68
- S(e.currentTarget), j.current = document.activeElement === e.currentTarget, p && p(e);
68
+ y(e.currentTarget), j.current = document.activeElement === e.currentTarget, p && p(e);
69
69
  }
70
70
  function z(e) {
71
71
  h.current && (h.current = !1, o()), _(), d && d(e);
@@ -75,7 +75,7 @@ const de = F.forwardRef(function({
75
75
  W,
76
76
  {
77
77
  ref: B,
78
- className: L(T, "tcn-select", "tcn-control", O.select),
78
+ className: L(T, "tcn-select", "tcn-entry", O.select),
79
79
  width: "100%",
80
80
  ...D,
81
81
  hAlign: "start",
@@ -90,7 +90,7 @@ const de = F.forwardRef(function({
90
90
  /* @__PURE__ */ u(
91
91
  Q,
92
92
  {
93
- open: y,
93
+ open: S,
94
94
  anchorElement: q,
95
95
  onClose: N,
96
96
  value: "",
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sources":["../../../src/inputs/select/select.tsx"],"sourcesContent":["import { useForkRef } from '../../utils/index.js';\nimport { clsx } from 'clsx';\nimport React, { useRef, useState } from 'react';\nimport { SuggestionList } from '../suggestions/suggestion_list.js';\nimport { OptionProps } from '../options/option.js';\nimport { Button, type ButtonProps } from '../../actions/index.js';\nimport styles from './select.module.css';\n\nfunction findOptionFromValue(options: React.ReactElement<OptionProps>[], value: string) {\n return options.find(option => option.props.value === value);\n}\n\nexport interface SelectProps\n extends Omit<ButtonProps, 'children' | 'onChange' | 'value'> {\n children?: React.ReactElement<OptionProps>[] | React.ReactElement<OptionProps>;\n onChange?: (value: string) => void;\n value?: string | null;\n placeholder?: string;\n noOptionMatchedMessage?: React.ReactNode;\n trimCustomInput?: boolean;\n}\n\nexport const Select = React.forwardRef(function Select(\n {\n children = [],\n onKeyDown,\n onKeyUp,\n value,\n placeholder = '-- Select --',\n noOptionMatchedMessage,\n trimCustomInput = false,\n className,\n onMouseDown,\n onMouseUp,\n onChange,\n ...props\n }: SelectProps,\n ref: React.Ref<HTMLButtonElement>\n) {\n const safeChildren = React.Children.toArray(\n children\n ) as React.ReactElement<OptionProps>[];\n const keyPressedDownRef = useRef('');\n const isAlreadyFocusedRef = useRef(false);\n const isClosingRef = useRef(false);\n const [anchorElement, setAnchorElement] = useState<HTMLButtonElement | null>(null);\n const internalButtonRef = useRef<HTMLButtonElement | null>(null);\n const [isSuggestionsOpen, setIsSuggestionsOpen] = useState(false);\n const forkedRef = useForkRef(ref, internalButtonRef);\n const selectedOption = findOptionFromValue(safeChildren, value || '');\n const selectedLabel =\n selectedOption == null ? placeholder || '' : selectedOption.props.label;\n\n function openSuggestions() {\n setIsSuggestionsOpen(true);\n }\n\n function closeSuggestions() {\n setIsSuggestionsOpen(false);\n }\n\n function handleClose() {\n const button = internalButtonRef.current;\n\n if (button != null) {\n requestAnimationFrame(() => {\n button.focus();\n });\n }\n\n closeSuggestions();\n }\n\n function handleSelection(value: string, _: string | undefined, isSuggestion: boolean) {\n const button = internalButtonRef.current;\n\n if (button != null) {\n requestAnimationFrame(() => {\n if (isSuggestion) {\n onChange && onChange(value);\n }\n button.focus();\n });\n }\n\n closeSuggestions();\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLButtonElement>) {\n const key = event.key;\n keyPressedDownRef.current = key;\n onKeyDown && onKeyDown(event);\n }\n\n function handleKeyUp(event: React.KeyboardEvent<HTMLButtonElement>) {\n setAnchorElement(event.currentTarget);\n const isSameKey = (keyPressedDownRef.current = event.key);\n\n keyPressedDownRef.current = '';\n const key = event.key;\n\n if (isSameKey && (key === 'Enter' || key === ' ')) {\n if (isSuggestionsOpen) {\n closeSuggestions();\n } else {\n openSuggestions();\n }\n }\n\n onKeyUp && onKeyUp(event);\n }\n\n function handlMouseDown(event: React.MouseEvent<HTMLButtonElement>) {\n setAnchorElement(event.currentTarget);\n isAlreadyFocusedRef.current = document.activeElement === event.currentTarget;\n onMouseDown && onMouseDown(event);\n }\n\n function handleMouseUp(event: React.MouseEvent<HTMLButtonElement>) {\n if (isClosingRef.current) {\n isClosingRef.current = false;\n closeSuggestions();\n }\n\n openSuggestions();\n onMouseUp && onMouseUp(event);\n }\n\n return (\n <>\n <Button\n ref={forkedRef}\n className={clsx(className, 'tcn-select', 'tcn-control', styles.select)}\n width=\"100%\"\n {...props}\n hAlign=\"start\"\n value={selectedLabel}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onMouseDown={handlMouseDown}\n onMouseUp={handleMouseUp}\n >\n <span className={clsx(styles.selectedLabel, 'tcn-select-selected-label')}>\n {selectedLabel}\n </span>\n </Button>\n <SuggestionList\n open={isSuggestionsOpen}\n anchorElement={anchorElement}\n onClose={handleClose}\n value={''}\n scrollToValue={value || ''}\n trimCustomInput={trimCustomInput}\n onOptionSelect={handleSelection}\n noSuggestionMessage={noOptionMatchedMessage}\n >\n {children}\n </SuggestionList>\n </>\n );\n});\n"],"names":["findOptionFromValue","options","value","option","Select","React","children","onKeyDown","onKeyUp","placeholder","noOptionMatchedMessage","trimCustomInput","className","onMouseDown","onMouseUp","onChange","props","ref","safeChildren","keyPressedDownRef","useRef","isAlreadyFocusedRef","isClosingRef","anchorElement","setAnchorElement","useState","internalButtonRef","isSuggestionsOpen","setIsSuggestionsOpen","forkedRef","useForkRef","selectedOption","selectedLabel","openSuggestions","closeSuggestions","handleClose","button","handleSelection","_","isSuggestion","handleKeyDown","event","key","handleKeyUp","isSameKey","handlMouseDown","handleMouseUp","jsxs","Fragment","jsx","Button","clsx","styles","SuggestionList"],"mappings":";;;;;;;;;;;;;;;;;AAQA,SAASA,EAAoBC,GAA4CC,GAAe;AACtF,SAAOD,EAAQ,KAAK,CAAAE,MAAUA,EAAO,MAAM,UAAUD,CAAK;AAC5D;AAYO,MAAME,KAASC,EAAM,WAAW,SACrC;AAAA,EACE,UAAAC,IAAW,CAAA;AAAA,EACX,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAN;AAAA,EACA,aAAAO,IAAc;AAAA,EACd,wBAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAeb,EAAM,SAAS;AAAA,IAClCC;AAAA,EAAA,GAEIa,IAAoBC,EAAO,EAAE,GAC7BC,IAAsBD,EAAO,EAAK,GAClCE,IAAeF,EAAO,EAAK,GAC3B,CAACG,GAAeC,CAAgB,IAAIC,EAAmC,IAAI,GAC3EC,IAAoBN,EAAiC,IAAI,GACzD,CAACO,GAAmBC,CAAoB,IAAIH,EAAS,EAAK,GAC1DI,IAAYC,EAAWb,GAAKS,CAAiB,GAC7CK,IAAiB/B,EAAoBkB,GAAchB,KAAS,EAAE,GAC9D8B,IACJD,KAAkB,OAAOtB,KAAe,KAAKsB,EAAe,MAAM;AAEpE,WAASE,IAAkB;AACzB,IAAAL,EAAqB,EAAI;AAAA,EAC3B;AAEA,WAASM,IAAmB;AAC1B,IAAAN,EAAqB,EAAK;AAAA,EAC5B;AAEA,WAASO,IAAc;AACrB,UAAMC,IAASV,EAAkB;AAEjC,IAAIU,KAAU,QACZ,sBAAsB,MAAM;AAC1B,MAAAA,EAAO,MAAA;AAAA,IACT,CAAC,GAGHF,EAAA;AAAA,EACF;AAEA,WAASG,EAAgBnC,GAAeoC,GAAuBC,GAAuB;AACpF,UAAMH,IAASV,EAAkB;AAEjC,IAAIU,KAAU,QACZ,sBAAsB,MAAM;AAC1B,MAAIG,KACFxB,KAAYA,EAASb,CAAK,GAE5BkC,EAAO,MAAA;AAAA,IACT,CAAC,GAGHF,EAAA;AAAA,EACF;AAEA,WAASM,EAAcC,GAA+C;AACpE,UAAMC,IAAMD,EAAM;AAClB,IAAAtB,EAAkB,UAAUuB,GAC5BnC,KAAaA,EAAUkC,CAAK;AAAA,EAC9B;AAEA,WAASE,EAAYF,GAA+C;AAClE,IAAAjB,EAAiBiB,EAAM,aAAa;AACpC,UAAMG,IAAazB,EAAkB,UAAUsB,EAAM;AAErD,IAAAtB,EAAkB,UAAU;AAC5B,UAAMuB,IAAMD,EAAM;AAElB,IAAIG,MAAcF,MAAQ,WAAWA,MAAQ,SACvCf,IACFO,EAAA,IAEAD,EAAA,IAIJzB,KAAWA,EAAQiC,CAAK;AAAA,EAC1B;AAEA,WAASI,EAAeJ,GAA4C;AAClE,IAAAjB,EAAiBiB,EAAM,aAAa,GACpCpB,EAAoB,UAAU,SAAS,kBAAkBoB,EAAM,eAC/D5B,KAAeA,EAAY4B,CAAK;AAAA,EAClC;AAEA,WAASK,EAAcL,GAA4C;AACjE,IAAInB,EAAa,YACfA,EAAa,UAAU,IACvBY,EAAA,IAGFD,EAAA,GACAnB,KAAaA,EAAU2B,CAAK;AAAA,EAC9B;AAEA,SACE,gBAAAM,EAAAC,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,KAAKrB;AAAA,QACL,WAAWsB,EAAKvC,GAAW,cAAc,eAAewC,EAAO,MAAM;AAAA,QACrE,OAAM;AAAA,QACL,GAAGpC;AAAA,QACJ,QAAO;AAAA,QACP,OAAOgB;AAAA,QACP,WAAWQ;AAAA,QACX,SAASG;AAAA,QACT,aAAaE;AAAA,QACb,WAAWC;AAAA,QAEX,UAAA,gBAAAG,EAAC,UAAK,WAAWE,EAAKC,EAAO,eAAe,2BAA2B,GACpE,UAAApB,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAiB;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAM1B;AAAA,QACN,eAAAJ;AAAA,QACA,SAASY;AAAA,QACT,OAAO;AAAA,QACP,eAAejC,KAAS;AAAA,QACxB,iBAAAS;AAAA,QACA,gBAAgB0B;AAAA,QAChB,qBAAqB3B;AAAA,QAEpB,UAAAJ;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ,CAAC;"}
1
+ {"version":3,"file":"select.js","sources":["../../../src/inputs/select/select.tsx"],"sourcesContent":["import { useForkRef } from '../../utils/index.js';\nimport { clsx } from 'clsx';\nimport React, { useRef, useState } from 'react';\nimport { SuggestionList } from '../suggestions/suggestion_list.js';\nimport { OptionProps } from '../options/option.js';\nimport { Button, type ButtonProps } from '../../actions/index.js';\nimport styles from './select.module.css';\n\nfunction findOptionFromValue(options: React.ReactElement<OptionProps>[], value: string) {\n return options.find(option => option.props.value === value);\n}\n\nexport interface SelectProps\n extends Omit<ButtonProps, 'children' | 'onChange' | 'value'> {\n children?: React.ReactElement<OptionProps>[] | React.ReactElement<OptionProps>;\n onChange?: (value: string) => void;\n value?: string | null;\n placeholder?: string;\n noOptionMatchedMessage?: React.ReactNode;\n trimCustomInput?: boolean;\n}\n\nexport const Select = React.forwardRef(function Select(\n {\n children = [],\n onKeyDown,\n onKeyUp,\n value,\n placeholder = '-- Select --',\n noOptionMatchedMessage,\n trimCustomInput = false,\n className,\n onMouseDown,\n onMouseUp,\n onChange,\n ...props\n }: SelectProps,\n ref: React.Ref<HTMLButtonElement>\n) {\n const safeChildren = React.Children.toArray(\n children\n ) as React.ReactElement<OptionProps>[];\n const keyPressedDownRef = useRef('');\n const isAlreadyFocusedRef = useRef(false);\n const isClosingRef = useRef(false);\n const [anchorElement, setAnchorElement] = useState<HTMLButtonElement | null>(null);\n const internalButtonRef = useRef<HTMLButtonElement | null>(null);\n const [isSuggestionsOpen, setIsSuggestionsOpen] = useState(false);\n const forkedRef = useForkRef(ref, internalButtonRef);\n const selectedOption = findOptionFromValue(safeChildren, value || '');\n const selectedLabel =\n selectedOption == null ? placeholder || '' : selectedOption.props.label;\n\n function openSuggestions() {\n setIsSuggestionsOpen(true);\n }\n\n function closeSuggestions() {\n setIsSuggestionsOpen(false);\n }\n\n function handleClose() {\n const button = internalButtonRef.current;\n\n if (button != null) {\n requestAnimationFrame(() => {\n button.focus();\n });\n }\n\n closeSuggestions();\n }\n\n function handleSelection(value: string, _: string | undefined, isSuggestion: boolean) {\n const button = internalButtonRef.current;\n\n if (button != null) {\n requestAnimationFrame(() => {\n if (isSuggestion) {\n onChange && onChange(value);\n }\n button.focus();\n });\n }\n\n closeSuggestions();\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLButtonElement>) {\n const key = event.key;\n keyPressedDownRef.current = key;\n onKeyDown && onKeyDown(event);\n }\n\n function handleKeyUp(event: React.KeyboardEvent<HTMLButtonElement>) {\n setAnchorElement(event.currentTarget);\n const isSameKey = (keyPressedDownRef.current = event.key);\n\n keyPressedDownRef.current = '';\n const key = event.key;\n\n if (isSameKey && (key === 'Enter' || key === ' ')) {\n if (isSuggestionsOpen) {\n closeSuggestions();\n } else {\n openSuggestions();\n }\n }\n\n onKeyUp && onKeyUp(event);\n }\n\n function handlMouseDown(event: React.MouseEvent<HTMLButtonElement>) {\n setAnchorElement(event.currentTarget);\n isAlreadyFocusedRef.current = document.activeElement === event.currentTarget;\n onMouseDown && onMouseDown(event);\n }\n\n function handleMouseUp(event: React.MouseEvent<HTMLButtonElement>) {\n if (isClosingRef.current) {\n isClosingRef.current = false;\n closeSuggestions();\n }\n\n openSuggestions();\n onMouseUp && onMouseUp(event);\n }\n\n return (\n <>\n <Button\n ref={forkedRef}\n className={clsx(className, 'tcn-select', 'tcn-entry', styles.select)}\n width=\"100%\"\n {...props}\n hAlign=\"start\"\n value={selectedLabel}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onMouseDown={handlMouseDown}\n onMouseUp={handleMouseUp}\n >\n <span className={clsx(styles.selectedLabel, 'tcn-select-selected-label')}>\n {selectedLabel}\n </span>\n </Button>\n <SuggestionList\n open={isSuggestionsOpen}\n anchorElement={anchorElement}\n onClose={handleClose}\n value={''}\n scrollToValue={value || ''}\n trimCustomInput={trimCustomInput}\n onOptionSelect={handleSelection}\n noSuggestionMessage={noOptionMatchedMessage}\n >\n {children}\n </SuggestionList>\n </>\n );\n});\n"],"names":["findOptionFromValue","options","value","option","Select","React","children","onKeyDown","onKeyUp","placeholder","noOptionMatchedMessage","trimCustomInput","className","onMouseDown","onMouseUp","onChange","props","ref","safeChildren","keyPressedDownRef","useRef","isAlreadyFocusedRef","isClosingRef","anchorElement","setAnchorElement","useState","internalButtonRef","isSuggestionsOpen","setIsSuggestionsOpen","forkedRef","useForkRef","selectedOption","selectedLabel","openSuggestions","closeSuggestions","handleClose","button","handleSelection","_","isSuggestion","handleKeyDown","event","key","handleKeyUp","isSameKey","handlMouseDown","handleMouseUp","jsxs","Fragment","jsx","Button","clsx","styles","SuggestionList"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { clsx as x } from "clsx";
1
+ import { jsx as x } from "react/jsx-runtime";
2
+ import { clsx as l } from "clsx";
3
3
  import f from "react";
4
- import '../../textarea.css';const d = "_textarea_8286394", i = { textarea: d }, b = f.forwardRef(function({ className: r, width: o, height: s, style: c, onChange: t, ...e }, l) {
5
- return /* @__PURE__ */ n(
4
+ import '../../textarea.css';const d = "_textarea_8286394", i = { textarea: d }, T = f.forwardRef(function({ className: r, width: s, height: o, style: c, onChange: t, ...e }, n) {
5
+ return /* @__PURE__ */ x(
6
6
  "textarea",
7
7
  {
8
- style: { width: o, height: s, ...c },
9
- className: x(r, i.textarea, "tcn-textarea", "tcn-control"),
8
+ style: { width: s, height: o, ...c },
9
+ className: l(r, i.textarea, "tcn-textarea", "tcn-entry"),
10
10
  "data-is-disabled": e.disabled || !1,
11
- ref: l,
11
+ ref: n,
12
12
  onChange: (a) => {
13
13
  t && t(a.currentTarget.value, a);
14
14
  },
@@ -17,6 +17,6 @@ import '../../textarea.css';const d = "_textarea_8286394", i = { textarea: d },
17
17
  );
18
18
  });
19
19
  export {
20
- b as Textarea
20
+ T as Textarea
21
21
  };
22
22
  //# sourceMappingURL=textarea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","sources":["../../../src/inputs/textarea/textarea.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport React from 'react';\nimport { TextareaHTMLAttributes } from 'react';\nimport styles from './textarea.module.css';\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange'> {\n value?: string;\n width?: string;\n height?: string;\n disabled?: boolean;\n placeholder?: string;\n onChange?: (value: string, event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n}\n\nexport const Textarea = React.forwardRef(function Textarea(\n { className, width, height, style, onChange, ...props }: TextareaProps,\n ref: React.Ref<HTMLTextAreaElement>\n) {\n return (\n <textarea\n style={{ width, height, ...style }}\n className={clsx(className, styles.textarea, 'tcn-textarea', 'tcn-control')}\n data-is-disabled={props.disabled || false}\n ref={ref}\n onChange={e => {\n onChange && onChange(e.currentTarget.value, e);\n }}\n {...props}\n />\n );\n});\n"],"names":["Textarea","React","className","width","height","style","onChange","props","ref","jsx","clsx","styles","e"],"mappings":";;;oDAeaA,IAAWC,EAAM,WAAW,SACvC,EAAE,WAAAC,GAAW,OAAAC,GAAO,QAAAC,GAAQ,OAAAC,GAAO,UAAAC,GAAU,GAAGC,EAAA,GAChDC,GACA;AACA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,OAAAN,GAAO,QAAAC,GAAQ,GAAGC,EAAA;AAAA,MAC3B,WAAWK,EAAKR,GAAWS,EAAO,UAAU,gBAAgB,aAAa;AAAA,MACzE,oBAAkBJ,EAAM,YAAY;AAAA,MACpC,KAAAC;AAAA,MACA,UAAU,CAAAI,MAAK;AACb,QAAAN,KAAYA,EAASM,EAAE,cAAc,OAAOA,CAAC;AAAA,MAC/C;AAAA,MACC,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;"}
1
+ {"version":3,"file":"textarea.js","sources":["../../../src/inputs/textarea/textarea.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport React from 'react';\nimport { TextareaHTMLAttributes } from 'react';\nimport styles from './textarea.module.css';\n\nexport interface TextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange'> {\n value?: string;\n width?: string;\n height?: string;\n disabled?: boolean;\n placeholder?: string;\n onChange?: (value: string, event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n}\n\nexport const Textarea = React.forwardRef(function Textarea(\n { className, width, height, style, onChange, ...props }: TextareaProps,\n ref: React.Ref<HTMLTextAreaElement>\n) {\n return (\n <textarea\n style={{ width, height, ...style }}\n className={clsx(className, styles.textarea, 'tcn-textarea', 'tcn-entry')}\n data-is-disabled={props.disabled || false}\n ref={ref}\n onChange={e => {\n onChange && onChange(e.currentTarget.value, e);\n }}\n {...props}\n />\n );\n});\n"],"names":["Textarea","React","className","width","height","style","onChange","props","ref","jsx","clsx","styles","e"],"mappings":";;;oDAeaA,IAAWC,EAAM,WAAW,SACvC,EAAE,WAAAC,GAAW,OAAAC,GAAO,QAAAC,GAAQ,OAAAC,GAAO,UAAAC,GAAU,GAAGC,EAAA,GAChDC,GACA;AACA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO,EAAE,OAAAN,GAAO,QAAAC,GAAQ,GAAGC,EAAA;AAAA,MAC3B,WAAWK,EAAKR,GAAWS,EAAO,UAAU,gBAAgB,WAAW;AAAA,MACvE,oBAAkBJ,EAAM,YAAY;AAAA,MACpC,KAAAC;AAAA,MACA,UAAU,CAAAI,MAAK;AACb,QAAAN,KAAYA,EAASM,EAAE,cAAc,OAAOA,CAAC;AAAA,MAC/C;AAAA,MACC,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;"}
@@ -10,10 +10,10 @@ import "../../utils/dnd/context.js";
10
10
  import "../../draggable.module-BgelQsuJ.js";
11
11
  import { Input as v } from "../input/input.js";
12
12
  import { Select as w } from "../select/select.js";
13
- import { InputGroup as h } from "../input_group/input_group.js";
13
+ import { ControlSet as h } from "../control_set/control_set.js";
14
14
  import '../../unit_input.css';const j = "_unit-input_4bd8bc8", k = "_unit-input-flex-box_8db2f9b", F = "_unit-input-number_c95f85a", H = "_unit-input-select_1bbbad9", l = { "unit-input": j, "unit-input-flex-box": k, "unit-input-number": F, "unit-input-select": H };
15
- function U(p) {
16
- return p.replace(/[^.\d-]/g, "").replace(/(?!^)-/g, "").replace(/(\..*?)\.+/g, "$1");
15
+ function U(s) {
16
+ return s.replace(/[^.\d-]/g, "").replace(/(?!^)-/g, "").replace(/(\..*?)\.+/g, "$1");
17
17
  }
18
18
  const Q = y.forwardRef(function({
19
19
  value: A,
@@ -22,27 +22,27 @@ const Q = y.forwardRef(function({
22
22
  onChange: t,
23
23
  inputRef: b,
24
24
  unitRef: x,
25
- disabled: s,
25
+ disabled: p,
26
26
  ...R
27
- }, I) {
28
- const c = E(null), N = V(b, c);
29
- function _(u, e) {
30
- if (e == null)
27
+ }, N) {
28
+ const c = E(null), _ = V(b, c);
29
+ function I(e, u) {
30
+ if (u == null)
31
31
  return;
32
- const n = e.currentTarget, a = n.selectionStart || 0, i = U(u), f = Number(i);
33
- n.value = i, i.length < u.length && n.setSelectionRange(a - 1, a - 1), i === "" ? t && t(null, r || "") : isNaN(f) || t && t(f, r || "");
32
+ const n = u.currentTarget, a = n.selectionStart || 0, i = U(e), f = Number(i);
33
+ n.value = i, i.length < e.length && n.setSelectionRange(a - 1, a - 1), i === "" ? t && t(null, r || "") : isNaN(f) || t && t(f, r || "");
34
34
  }
35
- function S(u) {
36
- const e = c.current;
37
- if (e == null)
35
+ function S(e) {
36
+ const u = c.current;
37
+ if (u == null)
38
38
  return;
39
- const n = Number(e.value);
40
- isNaN(n) ? t && t(null, u) : t && t(n, u);
39
+ const n = Number(u.value);
40
+ isNaN(n) ? t && t(null, e) : t && t(n, e);
41
41
  }
42
42
  return /* @__PURE__ */ g(
43
43
  h,
44
44
  {
45
- ref: I,
45
+ ref: N,
46
46
  className: o(l["unit-input"], "tcn-unit-input"),
47
47
  height: "auto",
48
48
  ...R,
@@ -52,9 +52,9 @@ const Q = y.forwardRef(function({
52
52
  {
53
53
  width: "flex",
54
54
  className: o(l["unit-input-number"], "tcn-unit-input-number"),
55
- ref: N,
56
- onChange: _,
57
- disabled: s,
55
+ ref: _,
56
+ onChange: I,
57
+ disabled: p,
58
58
  style: {
59
59
  borderEndEndRadius: 0,
60
60
  borderStartEndRadius: 0,
@@ -70,7 +70,7 @@ const Q = y.forwardRef(function({
70
70
  width: "auto",
71
71
  value: r,
72
72
  onChange: S,
73
- disabled: s,
73
+ disabled: p,
74
74
  style: { borderStartStartRadius: 0, borderEndStartRadius: 0 },
75
75
  children: d
76
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"unit_input.js","sources":["../../../src/inputs/unit_input/unit_input.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { clsx } from 'clsx';\nimport { useForkRef } from '../../utils/index.js';\nimport { type HStackProps } from '../../stacks/h_stack.js';\nimport { Input } from '../input/input.js';\nimport { Select } from '../select/select.js';\nimport { OptionProps } from '../options/option.js';\nimport styles from './unit_input.module.css';\n\nimport { InputGroup } from '../input_group/input_group.js';\n\nfunction getDisplayValue(value: string) {\n return value\n .replace(/[^.\\d-]/g, '') // Remove invalid characters\n .replace(/(?!^)-/g, '') // Ensure `-` only at the start\n .replace(/(\\..*?)\\.+/g, '$1'); // Allow only one dot\n}\n\nexport interface UnitInputProps extends Omit<HStackProps, 'onChange' | 'children'> {\n value?: number | null;\n unit?: string;\n children: React.ReactElement<OptionProps> | React.ReactElement<OptionProps>[];\n onChange?: (value: number | null, unit: string) => void;\n inputRef?: React.Ref<HTMLInputElement>;\n unitRef?: React.Ref<HTMLButtonElement>;\n disabled?: boolean;\n}\n\nexport const UnitInput = React.forwardRef(function UnitInput(\n {\n value,\n unit,\n children,\n onChange,\n inputRef,\n unitRef,\n disabled,\n ...props\n }: UnitInputProps,\n ref: React.Ref<HTMLElement>\n) {\n const internalInputRef = useRef<HTMLInputElement>(null);\n const forkedInputRef = useForkRef(inputRef, internalInputRef);\n\n function valueHandler(value: string, event?: React.ChangeEvent<HTMLInputElement>) {\n if (event == null) {\n return;\n }\n\n const input = event.currentTarget;\n const cursorPosition = input.selectionStart || 0;\n const displayValue = getDisplayValue(value);\n const potentialValue = Number(displayValue);\n\n input.value = displayValue;\n\n if (displayValue.length < value.length) {\n input.setSelectionRange(cursorPosition - 1, cursorPosition - 1);\n }\n\n if (displayValue === '') {\n onChange && onChange(null, unit || '');\n } else if (!isNaN(potentialValue)) {\n onChange && onChange(potentialValue, unit || '');\n }\n }\n\n function unitHandler(unit: string) {\n const input = internalInputRef.current;\n if (input == null) {\n return;\n }\n\n const potentialValue = Number(input.value);\n if (isNaN(potentialValue)) {\n onChange && onChange(null, unit);\n } else {\n onChange && onChange(potentialValue, unit);\n }\n }\n\n return (\n <InputGroup\n ref={ref}\n className={clsx(styles['unit-input'], 'tcn-unit-input')}\n height=\"auto\"\n {...props}\n >\n <Input\n width=\"flex\"\n className={clsx(styles['unit-input-number'], 'tcn-unit-input-number')}\n ref={forkedInputRef}\n onChange={valueHandler}\n disabled={disabled}\n style={{\n borderEndEndRadius: 0,\n borderStartEndRadius: 0,\n textAlign: 'start',\n }}\n />\n\n <Select\n className={clsx(styles['unit-input-select'], 'tcn-unit-input-select')}\n ref={unitRef}\n width=\"auto\"\n value={unit}\n onChange={unitHandler}\n disabled={disabled}\n style={{ borderStartStartRadius: 0, borderEndStartRadius: 0 }}\n >\n {children}\n </Select>\n </InputGroup>\n );\n});\n"],"names":["getDisplayValue","value","UnitInput","React","unit","children","onChange","inputRef","unitRef","disabled","props","ref","internalInputRef","useRef","forkedInputRef","useForkRef","valueHandler","event","input","cursorPosition","displayValue","potentialValue","unitHandler","jsxs","InputGroup","clsx","styles","jsx","Input","Select"],"mappings":";;;;;;;;;;;;;;AAWA,SAASA,EAAgBC,GAAe;AACtC,SAAOA,EACJ,QAAQ,YAAY,EAAE,EACtB,QAAQ,WAAW,EAAE,EACrB,QAAQ,eAAe,IAAI;AAChC;AAYO,MAAMC,IAAYC,EAAM,WAAW,SACxC;AAAA,EACE,OAAAF;AAAA,EACA,MAAAG;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAmBC,EAAyB,IAAI,GAChDC,IAAiBC,EAAWR,GAAUK,CAAgB;AAE5D,WAASI,EAAaf,GAAegB,GAA6C;AAChF,QAAIA,KAAS;AACX;AAGF,UAAMC,IAAQD,EAAM,eACdE,IAAiBD,EAAM,kBAAkB,GACzCE,IAAepB,EAAgBC,CAAK,GACpCoB,IAAiB,OAAOD,CAAY;AAE1C,IAAAF,EAAM,QAAQE,GAEVA,EAAa,SAASnB,EAAM,UAC9BiB,EAAM,kBAAkBC,IAAiB,GAAGA,IAAiB,CAAC,GAG5DC,MAAiB,KACnBd,KAAYA,EAAS,MAAMF,KAAQ,EAAE,IAC3B,MAAMiB,CAAc,KAC9Bf,KAAYA,EAASe,GAAgBjB,KAAQ,EAAE;AAAA,EAEnD;AAEA,WAASkB,EAAYlB,GAAc;AACjC,UAAMc,IAAQN,EAAiB;AAC/B,QAAIM,KAAS;AACX;AAGF,UAAMG,IAAiB,OAAOH,EAAM,KAAK;AACzC,IAAI,MAAMG,CAAc,IACtBf,KAAYA,EAAS,MAAMF,CAAI,IAE/BE,KAAYA,EAASe,GAAgBjB,CAAI;AAAA,EAE7C;AAEA,SACE,gBAAAmB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAb;AAAA,MACA,WAAWc,EAAKC,EAAO,YAAY,GAAG,gBAAgB;AAAA,MACtD,QAAO;AAAA,MACN,GAAGhB;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAiB;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,WAAWH,EAAKC,EAAO,mBAAmB,GAAG,uBAAuB;AAAA,YACpE,KAAKZ;AAAA,YACL,UAAUE;AAAA,YACV,UAAAP;AAAA,YACA,OAAO;AAAA,cACL,oBAAoB;AAAA,cACpB,sBAAsB;AAAA,cACtB,WAAW;AAAA,YAAA;AAAA,UACb;AAAA,QAAA;AAAA,QAGF,gBAAAkB;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,WAAWJ,EAAKC,EAAO,mBAAmB,GAAG,uBAAuB;AAAA,YACpE,KAAKlB;AAAA,YACL,OAAM;AAAA,YACN,OAAOJ;AAAA,YACP,UAAUkB;AAAA,YACV,UAAAb;AAAA,YACA,OAAO,EAAE,wBAAwB,GAAG,sBAAsB,EAAA;AAAA,YAEzD,UAAAJ;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
1
+ {"version":3,"file":"unit_input.js","sources":["../../../src/inputs/unit_input/unit_input.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { clsx } from 'clsx';\nimport { useForkRef } from '../../utils/index.js';\nimport { type HStackProps } from '../../stacks/h_stack.js';\nimport { Input } from '../input/input.js';\nimport { Select } from '../select/select.js';\nimport { OptionProps } from '../options/option.js';\nimport styles from './unit_input.module.css';\n\nimport { ControlSet } from '../control_set/control_set.js';\n\nfunction getDisplayValue(value: string) {\n return value\n .replace(/[^.\\d-]/g, '') // Remove invalid characters\n .replace(/(?!^)-/g, '') // Ensure `-` only at the start\n .replace(/(\\..*?)\\.+/g, '$1'); // Allow only one dot\n}\n\nexport interface UnitInputProps extends Omit<HStackProps, 'onChange' | 'children'> {\n value?: number | null;\n unit?: string;\n children: React.ReactElement<OptionProps> | React.ReactElement<OptionProps>[];\n onChange?: (value: number | null, unit: string) => void;\n inputRef?: React.Ref<HTMLInputElement>;\n unitRef?: React.Ref<HTMLButtonElement>;\n disabled?: boolean;\n}\n\nexport const UnitInput = React.forwardRef(function UnitInput(\n {\n value,\n unit,\n children,\n onChange,\n inputRef,\n unitRef,\n disabled,\n ...props\n }: UnitInputProps,\n ref: React.Ref<HTMLElement>\n) {\n const internalInputRef = useRef<HTMLInputElement>(null);\n const forkedInputRef = useForkRef(inputRef, internalInputRef);\n\n function valueHandler(value: string, event?: React.ChangeEvent<HTMLInputElement>) {\n if (event == null) {\n return;\n }\n\n const input = event.currentTarget;\n const cursorPosition = input.selectionStart || 0;\n const displayValue = getDisplayValue(value);\n const potentialValue = Number(displayValue);\n\n input.value = displayValue;\n\n if (displayValue.length < value.length) {\n input.setSelectionRange(cursorPosition - 1, cursorPosition - 1);\n }\n\n if (displayValue === '') {\n onChange && onChange(null, unit || '');\n } else if (!isNaN(potentialValue)) {\n onChange && onChange(potentialValue, unit || '');\n }\n }\n\n function unitHandler(unit: string) {\n const input = internalInputRef.current;\n if (input == null) {\n return;\n }\n\n const potentialValue = Number(input.value);\n if (isNaN(potentialValue)) {\n onChange && onChange(null, unit);\n } else {\n onChange && onChange(potentialValue, unit);\n }\n }\n\n return (\n <ControlSet\n ref={ref}\n className={clsx(styles['unit-input'], 'tcn-unit-input')}\n height=\"auto\"\n {...props}\n >\n <Input\n width=\"flex\"\n className={clsx(styles['unit-input-number'], 'tcn-unit-input-number')}\n ref={forkedInputRef}\n onChange={valueHandler}\n disabled={disabled}\n style={{\n borderEndEndRadius: 0,\n borderStartEndRadius: 0,\n textAlign: 'start',\n }}\n />\n\n <Select\n className={clsx(styles['unit-input-select'], 'tcn-unit-input-select')}\n ref={unitRef}\n width=\"auto\"\n value={unit}\n onChange={unitHandler}\n disabled={disabled}\n style={{ borderStartStartRadius: 0, borderEndStartRadius: 0 }}\n >\n {children}\n </Select>\n </ControlSet>\n );\n});\n"],"names":["getDisplayValue","value","UnitInput","React","unit","children","onChange","inputRef","unitRef","disabled","props","ref","internalInputRef","useRef","forkedInputRef","useForkRef","valueHandler","event","input","cursorPosition","displayValue","potentialValue","unitHandler","jsxs","ControlSet","clsx","styles","jsx","Input","Select"],"mappings":";;;;;;;;;;;;;;AAWA,SAASA,EAAgBC,GAAe;AACtC,SAAOA,EACJ,QAAQ,YAAY,EAAE,EACtB,QAAQ,WAAW,EAAE,EACrB,QAAQ,eAAe,IAAI;AAChC;AAYO,MAAMC,IAAYC,EAAM,WAAW,SACxC;AAAA,EACE,OAAAF;AAAA,EACA,MAAAG;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAmBC,EAAyB,IAAI,GAChDC,IAAiBC,EAAWR,GAAUK,CAAgB;AAE5D,WAASI,EAAaf,GAAegB,GAA6C;AAChF,QAAIA,KAAS;AACX;AAGF,UAAMC,IAAQD,EAAM,eACdE,IAAiBD,EAAM,kBAAkB,GACzCE,IAAepB,EAAgBC,CAAK,GACpCoB,IAAiB,OAAOD,CAAY;AAE1C,IAAAF,EAAM,QAAQE,GAEVA,EAAa,SAASnB,EAAM,UAC9BiB,EAAM,kBAAkBC,IAAiB,GAAGA,IAAiB,CAAC,GAG5DC,MAAiB,KACnBd,KAAYA,EAAS,MAAMF,KAAQ,EAAE,IAC3B,MAAMiB,CAAc,KAC9Bf,KAAYA,EAASe,GAAgBjB,KAAQ,EAAE;AAAA,EAEnD;AAEA,WAASkB,EAAYlB,GAAc;AACjC,UAAMc,IAAQN,EAAiB;AAC/B,QAAIM,KAAS;AACX;AAGF,UAAMG,IAAiB,OAAOH,EAAM,KAAK;AACzC,IAAI,MAAMG,CAAc,IACtBf,KAAYA,EAAS,MAAMF,CAAI,IAE/BE,KAAYA,EAASe,GAAgBjB,CAAI;AAAA,EAE7C;AAEA,SACE,gBAAAmB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAb;AAAA,MACA,WAAWc,EAAKC,EAAO,YAAY,GAAG,gBAAgB;AAAA,MACtD,QAAO;AAAA,MACN,GAAGhB;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAiB;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,WAAWH,EAAKC,EAAO,mBAAmB,GAAG,uBAAuB;AAAA,YACpE,KAAKZ;AAAA,YACL,UAAUE;AAAA,YACV,UAAAP;AAAA,YACA,OAAO;AAAA,cACL,oBAAoB;AAAA,cACpB,sBAAsB;AAAA,cACtB,WAAW;AAAA,YAAA;AAAA,UACb;AAAA,QAAA;AAAA,QAGF,gBAAAkB;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,WAAWJ,EAAKC,EAAO,mBAAmB,GAAG,uBAAuB;AAAA,YACpE,KAAKlB;AAAA,YACL,OAAM;AAAA,YACN,OAAOJ;AAAA,YACP,UAAUkB;AAAA,YACV,UAAAb;AAAA,YACA,OAAO,EAAE,wBAAwB,GAAG,sBAAsB,EAAA;AAAA,YAEzD,UAAAJ;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
@@ -2,5 +2,22 @@ import { default as React } from 'react';
2
2
  import { BoxProps } from '../../stacks/box/box.js';
3
3
  export interface BodyProps extends Omit<BoxProps, 'as'> {
4
4
  }
5
+ /**
6
+ * The Body component will fill the available space in in a flex container.
7
+ * It is typically used within a Scaffold or Rail component.
8
+ * And typically will return a Scaffold or Rail component to determine the scroll behavior of the body
9
+ * Example:
10
+ * <Body>
11
+ * <Scaffold>
12
+ * <VerticalContent />
13
+ * </Scaffold>
14
+ * </Body>
15
+ * or
16
+ * <Body>
17
+ * <Rail>
18
+ * <HorizontalContent />
19
+ * </Rail>
20
+ * </Body>
21
+ */
5
22
  export declare const Body: React.ForwardRefExoticComponent<BodyProps & React.RefAttributes<HTMLElement>>;
6
23
  //# sourceMappingURL=body.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/layouts/body/body.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;CAAG;AAI1D,eAAO,MAAM,IAAI,+EAcf,CAAC"}
1
+ {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/layouts/body/body.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAI7D,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;CAAG;AAE1D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,IAAI,+EAcf,CAAC"}
@@ -1,21 +1,20 @@
1
- import { jsx as s } from "react/jsx-runtime";
2
- import f from "react";
3
- import { clsx as a } from "clsx";
4
- import { s as d } from "../../body.module-BbFZ7KNP.js";
5
- import { Box as e } from "../../stacks/box/box.js";
6
- const x = f.forwardRef(function({ children: o, className: r, ...t }, m) {
7
- return /* @__PURE__ */ s(
8
- e,
1
+ import { jsx as c } from "react/jsx-runtime";
2
+ import d from "react";
3
+ import { clsx as m } from "clsx";
4
+ import { Box as a } from "../../stacks/box/box.js";
5
+ import '../../body.css';const e = "_body_42a1eac", f = { body: e }, l = d.forwardRef(function({ children: o, className: t, ...r }, s) {
6
+ return /* @__PURE__ */ c(
7
+ a,
9
8
  {
10
- ref: m,
9
+ ref: s,
11
10
  as: "div",
12
- className: a(d.body, r, "tcn-body"),
13
- ...t,
11
+ className: m(f.body, t, "tcn-body"),
12
+ ...r,
14
13
  children: o
15
14
  }
16
15
  );
17
16
  });
18
17
  export {
19
- x as Body
18
+ l as Body
20
19
  };
21
20
  //# sourceMappingURL=body.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"body.js","sources":["../../../src/layouts/body/body.tsx"],"sourcesContent":["import React from 'react';\nimport { clsx } from 'clsx';\nimport styles from './body.module.css';\nimport { Box, type BoxProps } from '../../stacks/box/box.js';\n\nexport interface BodyProps extends Omit<BoxProps, 'as'> {}\n\n// Under construction: although this component behaves correctly, a content/child component that manages scrolling is needed.\n// For now HBody and VBody are recommended.\nexport const Body = React.forwardRef<HTMLElement, BodyProps>(function Body(\n { children, className, ...props }: BodyProps,\n ref\n) {\n return (\n <Box\n ref={ref}\n as=\"div\"\n className={clsx(styles['body'], className, 'tcn-body')}\n {...props}\n >\n {children}\n </Box>\n );\n});\n"],"names":["Body","React","children","className","props","ref","jsx","Box","clsx","styles"],"mappings":";;;;;AASO,MAAMA,IAAOC,EAAM,WAAmC,SAC3D,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,EAAA,GAC1BC,GACA;AACA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,IAAG;AAAA,MACH,WAAWG,EAAKC,EAAO,MAASN,GAAW,UAAU;AAAA,MACpD,GAAGC;AAAA,MAEH,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
1
+ {"version":3,"file":"body.js","sources":["../../../src/layouts/body/body.tsx"],"sourcesContent":["import React from 'react';\nimport { clsx } from 'clsx';\nimport { Box, type BoxProps } from '../../stacks/box/box.js';\n\nimport styles from './body.module.css';\n\nexport interface BodyProps extends Omit<BoxProps, 'as'> {}\n\n/**\n * The Body component will fill the available space in in a flex container.\n * It is typically used within a Scaffold or Rail component.\n * And typically will return a Scaffold or Rail component to determine the scroll behavior of the body\n * Example:\n * <Body>\n * <Scaffold>\n * <VerticalContent />\n * </Scaffold>\n * </Body>\n * or\n * <Body>\n * <Rail>\n * <HorizontalContent />\n * </Rail>\n * </Body>\n */\nexport const Body = React.forwardRef<HTMLElement, BodyProps>(function Body(\n { children, className, ...props }: BodyProps,\n ref\n) {\n return (\n <Box\n ref={ref}\n as=\"div\"\n className={clsx(styles['body'], className, 'tcn-body')}\n {...props}\n >\n {children}\n </Box>\n );\n});\n"],"names":["Body","React","children","className","props","ref","jsx","Box","clsx","styles"],"mappings":";;;;4CAyBaA,IAAOC,EAAM,WAAmC,SAC3D,EAAE,UAAAC,GAAU,WAAAC,GAAW,GAAGC,EAAA,GAC1BC,GACA;AACA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAF;AAAA,MACA,IAAG;AAAA,MACH,WAAWG,EAAKC,EAAO,MAASN,GAAW,UAAU;AAAA,MACpD,GAAGC;AAAA,MAEH,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
@@ -6,8 +6,7 @@ export * from './list/list.js';
6
6
  export * from './sidebar_end/sidebar_end.js';
7
7
  export * from './sidebar_start/sidebar_start.js';
8
8
  export { Scaffold, type ScaffoldProps } from './scaffold/scaffold.js';
9
- export { HBody, type HBodyProps } from './body/h_body.js';
10
- export { VBody, type VBodyProps } from './body/v_body.js';
9
+ export { Body, type BodyProps } from './body/body.js';
11
10
  export { Footer, type FooterProps } from './footer/footer.js';
12
11
  export { Header, type HeaderProps } from './header/header.js';
13
12
  export { UtilityBar, type UtilityBarProps } from './utility_bar/utility_bar.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kCAAkC,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,uCAAuC,CAAC"}