@gunkin/uiify 0.0.19-alpha → 0.0.20-alpha

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 (209) hide show
  1. package/agents/components.md +1 -1
  2. package/agents/index.md +1 -0
  3. package/agents/reference/components/breadcrumb.md +11 -1
  4. package/agents/reference/components/button.md +4 -4
  5. package/agents/reference/components/candle-chart.md +20 -1
  6. package/agents/reference/components/carousel.md +3 -2
  7. package/agents/reference/components/combobox.md +2 -1
  8. package/agents/reference/components/drawer.md +8 -1
  9. package/agents/reference/components/dropdown-menu.md +1 -1
  10. package/agents/reference/components/file-upload.md +12 -1
  11. package/agents/reference/components/line-chart.md +1 -0
  12. package/agents/reference/components/modal.md +8 -1
  13. package/agents/reference/components/number-field.md +14 -3
  14. package/agents/reference/components/pagination.md +22 -1
  15. package/agents/reference/components/slider.md +9 -1
  16. package/agents/reference/components/spinner.md +8 -1
  17. package/agents/reference/components/toast.md +14 -1
  18. package/dist/components/behavior.css +9 -9
  19. package/dist/components/behavior.css.map +1 -1
  20. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
  21. package/dist/components/breadcrumb/Breadcrumb.js +21 -4
  22. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  23. package/dist/components/breadcrumb/index.d.ts +1 -1
  24. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  25. package/dist/components/breadcrumb/index.js.map +1 -1
  26. package/dist/components/breadcrumb/types.d.ts +7 -0
  27. package/dist/components/breadcrumb/types.d.ts.map +1 -1
  28. package/dist/components/button/types.d.ts +4 -0
  29. package/dist/components/button/types.d.ts.map +1 -1
  30. package/dist/components/candle-chart/CandleChart.d.ts +1 -1
  31. package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
  32. package/dist/components/candle-chart/CandleChart.js +81 -46
  33. package/dist/components/candle-chart/CandleChart.js.map +1 -1
  34. package/dist/components/candle-chart/client/CandleChartClient.d.ts.map +1 -1
  35. package/dist/components/candle-chart/client/CandleChartClient.js +5 -0
  36. package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
  37. package/dist/components/candle-chart/index.d.ts +1 -1
  38. package/dist/components/candle-chart/index.d.ts.map +1 -1
  39. package/dist/components/candle-chart/index.js.map +1 -1
  40. package/dist/components/candle-chart/types.d.ts +17 -0
  41. package/dist/components/candle-chart/types.d.ts.map +1 -1
  42. package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
  43. package/dist/components/carousel/CarouselMarkup.js +20 -3
  44. package/dist/components/carousel/CarouselMarkup.js.map +1 -1
  45. package/dist/components/carousel/carousel-markup.js +2 -2
  46. package/dist/components/carousel/carousel-markup.js.map +1 -1
  47. package/dist/components/carousel/types.d.ts +3 -2
  48. package/dist/components/carousel/types.d.ts.map +1 -1
  49. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  50. package/dist/components/combobox/Combobox.js +37 -23
  51. package/dist/components/combobox/Combobox.js.map +1 -1
  52. package/dist/components/combobox/combobox-store.d.ts.map +1 -1
  53. package/dist/components/combobox/combobox-store.js +5 -2
  54. package/dist/components/combobox/combobox-store.js.map +1 -1
  55. package/dist/components/combobox/types.d.ts +2 -3
  56. package/dist/components/combobox/types.d.ts.map +1 -1
  57. package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
  58. package/dist/components/context-menu/ContextMenu.js +25 -5
  59. package/dist/components/context-menu/ContextMenu.js.map +1 -1
  60. package/dist/components/drawer/DrawerNative.d.ts +1 -1
  61. package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
  62. package/dist/components/drawer/DrawerNative.js +5 -2
  63. package/dist/components/drawer/DrawerNative.js.map +1 -1
  64. package/dist/components/drawer/index.d.ts +1 -1
  65. package/dist/components/drawer/index.d.ts.map +1 -1
  66. package/dist/components/drawer/index.js.map +1 -1
  67. package/dist/components/drawer/types.d.ts +4 -0
  68. package/dist/components/drawer/types.d.ts.map +1 -1
  69. package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
  70. package/dist/components/dropdown-menu/DropdownMenu.js +31 -15
  71. package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
  72. package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
  73. package/dist/components/dropdown-menu/DropdownMenuBar.js +7 -5
  74. package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
  75. package/dist/components/dropdown-menu/types.d.ts +1 -1
  76. package/dist/components/dropdown-menu/types.d.ts.map +1 -1
  77. package/dist/components/file-upload/FileUpload.d.ts.map +1 -1
  78. package/dist/components/file-upload/FileUpload.js +11 -4
  79. package/dist/components/file-upload/FileUpload.js.map +1 -1
  80. package/dist/components/file-upload/FileUploadRoot.d.ts +1 -1
  81. package/dist/components/file-upload/FileUploadRoot.d.ts.map +1 -1
  82. package/dist/components/file-upload/FileUploadRoot.js +9 -0
  83. package/dist/components/file-upload/FileUploadRoot.js.map +1 -1
  84. package/dist/components/file-upload/index.d.ts +1 -1
  85. package/dist/components/file-upload/index.d.ts.map +1 -1
  86. package/dist/components/file-upload/index.js.map +1 -1
  87. package/dist/components/file-upload/types.d.ts +8 -0
  88. package/dist/components/file-upload/types.d.ts.map +1 -1
  89. package/dist/components/line-chart/LineChart.d.ts.map +1 -1
  90. package/dist/components/line-chart/LineChart.js +3 -2
  91. package/dist/components/line-chart/LineChart.js.map +1 -1
  92. package/dist/components/line-chart/line-chart-geometry.d.ts +2 -2
  93. package/dist/components/line-chart/line-chart-geometry.d.ts.map +1 -1
  94. package/dist/components/line-chart/line-chart-geometry.js +6 -6
  95. package/dist/components/line-chart/line-chart-geometry.js.map +1 -1
  96. package/dist/components/line-chart/types.d.ts +2 -0
  97. package/dist/components/line-chart/types.d.ts.map +1 -1
  98. package/dist/components/modal/Modal.d.ts +1 -1
  99. package/dist/components/modal/Modal.d.ts.map +1 -1
  100. package/dist/components/modal/Modal.js +5 -2
  101. package/dist/components/modal/Modal.js.map +1 -1
  102. package/dist/components/modal/index.d.ts +1 -1
  103. package/dist/components/modal/index.d.ts.map +1 -1
  104. package/dist/components/modal/index.js.map +1 -1
  105. package/dist/components/modal/types.d.ts +4 -0
  106. package/dist/components/modal/types.d.ts.map +1 -1
  107. package/dist/components/number-field/NumberField.d.ts +1 -1
  108. package/dist/components/number-field/NumberField.d.ts.map +1 -1
  109. package/dist/components/number-field/NumberField.js +25 -5
  110. package/dist/components/number-field/NumberField.js.map +1 -1
  111. package/dist/components/number-field/format.d.ts +1 -1
  112. package/dist/components/number-field/format.d.ts.map +1 -1
  113. package/dist/components/number-field/format.js +32 -7
  114. package/dist/components/number-field/format.js.map +1 -1
  115. package/dist/components/number-field/index.d.ts +1 -1
  116. package/dist/components/number-field/index.d.ts.map +1 -1
  117. package/dist/components/number-field/index.js.map +1 -1
  118. package/dist/components/number-field/types.d.ts +11 -2
  119. package/dist/components/number-field/types.d.ts.map +1 -1
  120. package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
  121. package/dist/components/otp-input/OtpInput.js +2 -0
  122. package/dist/components/otp-input/OtpInput.js.map +1 -1
  123. package/dist/components/pagination/Pagination.d.ts.map +1 -1
  124. package/dist/components/pagination/Pagination.js +93 -29
  125. package/dist/components/pagination/Pagination.js.map +1 -1
  126. package/dist/components/pagination/PaginationShell.d.ts +2 -1
  127. package/dist/components/pagination/PaginationShell.d.ts.map +1 -1
  128. package/dist/components/pagination/PaginationShell.js +44 -9
  129. package/dist/components/pagination/PaginationShell.js.map +1 -1
  130. package/dist/components/pagination/index.d.ts +1 -1
  131. package/dist/components/pagination/index.d.ts.map +1 -1
  132. package/dist/components/pagination/index.js.map +1 -1
  133. package/dist/components/pagination/types.d.ts +18 -0
  134. package/dist/components/pagination/types.d.ts.map +1 -1
  135. package/dist/components/slider/client/SliderClient.d.ts.map +1 -1
  136. package/dist/components/slider/client/SliderClient.js +11 -2
  137. package/dist/components/slider/client/SliderClient.js.map +1 -1
  138. package/dist/components/slider/index.d.ts +1 -1
  139. package/dist/components/slider/index.d.ts.map +1 -1
  140. package/dist/components/slider/index.js.map +1 -1
  141. package/dist/components/slider/types.d.ts +5 -0
  142. package/dist/components/slider/types.d.ts.map +1 -1
  143. package/dist/components/spinner/Spinner.d.ts.map +1 -1
  144. package/dist/components/spinner/Spinner.js +6 -3
  145. package/dist/components/spinner/Spinner.js.map +1 -1
  146. package/dist/components/spinner/index.d.ts +1 -1
  147. package/dist/components/spinner/index.d.ts.map +1 -1
  148. package/dist/components/spinner/index.js.map +1 -1
  149. package/dist/components/spinner/types.d.ts +4 -0
  150. package/dist/components/spinner/types.d.ts.map +1 -1
  151. package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
  152. package/dist/components/tags-input/TagsInput.js +2 -0
  153. package/dist/components/tags-input/TagsInput.js.map +1 -1
  154. package/dist/components/toast/Toast.d.ts +1 -1
  155. package/dist/components/toast/Toast.d.ts.map +1 -1
  156. package/dist/components/toast/Toast.js +33 -29
  157. package/dist/components/toast/Toast.js.map +1 -1
  158. package/dist/components/toast/ToastElements.d.ts.map +1 -1
  159. package/dist/components/toast/ToastElements.js +24 -12
  160. package/dist/components/toast/ToastElements.js.map +1 -1
  161. package/dist/components/toast/index.d.ts +1 -1
  162. package/dist/components/toast/index.d.ts.map +1 -1
  163. package/dist/components/toast/index.js.map +1 -1
  164. package/dist/components/toast/types.d.ts +10 -0
  165. package/dist/components/toast/types.d.ts.map +1 -1
  166. package/dist/components/toolbar/Toolbar.d.ts +2 -2
  167. package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
  168. package/dist/components/toolbar/Toolbar.js +8 -4
  169. package/dist/components/toolbar/Toolbar.js.map +1 -1
  170. package/dist/core/direction.d.ts +2 -0
  171. package/dist/core/direction.d.ts.map +1 -1
  172. package/dist/core/direction.js +8 -3
  173. package/dist/core/direction.js.map +1 -1
  174. package/dist/core/dismissable-layer-registry.d.ts.map +1 -1
  175. package/dist/core/dismissable-layer-registry.js +3 -1
  176. package/dist/core/dismissable-layer-registry.js.map +1 -1
  177. package/dist/core/format-label.d.ts +2 -0
  178. package/dist/core/format-label.d.ts.map +1 -0
  179. package/dist/core/format-label.js +13 -0
  180. package/dist/core/format-label.js.map +1 -0
  181. package/dist/core/ime.d.ts +16 -0
  182. package/dist/core/ime.d.ts.map +1 -0
  183. package/dist/core/ime.js +7 -0
  184. package/dist/core/ime.js.map +1 -0
  185. package/dist/core/index.d.ts +3 -0
  186. package/dist/core/index.d.ts.map +1 -1
  187. package/dist/core/index.js +3 -0
  188. package/dist/core/index.js.map +1 -1
  189. package/dist/core/roving-focus-store.d.ts +3 -2
  190. package/dist/core/roving-focus-store.d.ts.map +1 -1
  191. package/dist/core/roving-focus-store.js +5 -3
  192. package/dist/core/roving-focus-store.js.map +1 -1
  193. package/dist/core/roving-focus.d.ts.map +1 -1
  194. package/dist/core/roving-focus.js +10 -5
  195. package/dist/core/roving-focus.js.map +1 -1
  196. package/dist/core/text-direction.d.ts +7 -0
  197. package/dist/core/text-direction.d.ts.map +1 -0
  198. package/dist/core/text-direction.js +7 -0
  199. package/dist/core/text-direction.js.map +1 -0
  200. package/dist/styles/index.css +1 -1
  201. package/package.json +2 -1
  202. package/skills/uiify/SKILL.md +3 -0
  203. package/skills/uiify/references/elements/button.md +5 -5
  204. package/skills/uiify/references/elements/candle-chart.md +2 -0
  205. package/skills/uiify/references/elements/carousel.md +2 -0
  206. package/skills/uiify/references/elements/number-field.md +2 -0
  207. package/skills/uiify/references/elements/pagination.md +2 -0
  208. package/skills/uiify/references/guides/i18n.md +21 -0
  209. package/skills/uiify/scripts/static.mjs +79 -0
@@ -1,16 +1,31 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import { formatLabel } from "@gunkin/uiify/core/format-label";
2
3
  import { useRenderElement } from "@gunkin/uiify/core/render";
3
4
  import { buildPaginationItems } from "./pagination-engine.js";
4
5
  import { buildPaginationItems as buildPaginationItems2 } from "./pagination-engine.js";
6
+ const DEFAULT_PAGINATION_LABELS = {
7
+ root: "Pagination",
8
+ page: "Page {page}",
9
+ previous: "Previous page",
10
+ next: "Next page",
11
+ first: "First page",
12
+ last: "Last page",
13
+ previousText: "Previous",
14
+ nextText: "Next",
15
+ firstText: "First",
16
+ lastText: "Last"
17
+ };
5
18
  function PaginationRoot(props) {
6
19
  const {
7
20
  as,
8
21
  render,
9
- "aria-label": ariaLabel = "Pagination",
22
+ "aria-label": ariaLabel,
10
23
  boundaryCount = 1,
11
24
  count,
12
25
  disabled = false,
13
26
  getPageHref,
27
+ labels,
28
+ locale,
14
29
  page = 1,
15
30
  showFirstLast = false,
16
31
  siblingCount = 1,
@@ -19,6 +34,7 @@ function PaginationRoot(props) {
19
34
  onPageChange: _onPageChange,
20
35
  ...consumerProps
21
36
  } = props;
37
+ const mergedLabels = { ...DEFAULT_PAGINATION_LABELS, ...labels };
22
38
  const items = buildPaginationItems(
23
39
  count,
24
40
  page,
@@ -31,6 +47,8 @@ function PaginationRoot(props) {
31
47
  PaginationItemRenderer,
32
48
  {
33
49
  item,
50
+ labels: mergedLabels,
51
+ ...locale !== void 0 ? { locale } : {},
34
52
  page,
35
53
  ...paginationHrefProps(getPageHref)
36
54
  },
@@ -41,7 +59,7 @@ function PaginationRoot(props) {
41
59
  defaultTag: "nav",
42
60
  props: {
43
61
  ...consumerProps,
44
- "aria-label": ariaLabel,
62
+ "aria-label": ariaLabel ?? mergedLabels.root,
45
63
  children: content,
46
64
  "data-uiify-pagination": ""
47
65
  },
@@ -56,6 +74,8 @@ function paginationHrefProps(getPageHref) {
56
74
  function PaginationItemRenderer({
57
75
  getPageHref,
58
76
  item,
77
+ labels,
78
+ locale,
59
79
  page
60
80
  }) {
61
81
  const hrefProps = paginationHrefProps(getPageHref);
@@ -67,7 +87,8 @@ function PaginationItemRenderer({
67
87
  PaginationNavControl,
68
88
  {
69
89
  disabled: item.disabled,
70
- label: "Previous page",
90
+ label: labels.previous,
91
+ labelText: labels.previousText,
71
92
  page: page - 1,
72
93
  type: "previous",
73
94
  ...hrefProps
@@ -78,7 +99,8 @@ function PaginationItemRenderer({
78
99
  PaginationNavControl,
79
100
  {
80
101
  disabled: item.disabled,
81
- label: "Next page",
102
+ label: labels.next,
103
+ labelText: labels.nextText,
82
104
  page: page + 1,
83
105
  type: "next",
84
106
  ...hrefProps
@@ -89,7 +111,8 @@ function PaginationItemRenderer({
89
111
  PaginationNavControl,
90
112
  {
91
113
  disabled: item.disabled,
92
- label: "First page",
114
+ label: labels.first,
115
+ labelText: labels.firstText,
93
116
  page: 1,
94
117
  type: "first",
95
118
  ...hrefProps
@@ -100,7 +123,8 @@ function PaginationItemRenderer({
100
123
  PaginationNavControl,
101
124
  {
102
125
  disabled: item.disabled,
103
- label: "Last page",
126
+ label: labels.last,
127
+ labelText: labels.lastText,
104
128
  page: item.page ?? page,
105
129
  type: "last",
106
130
  ...hrefProps
@@ -111,6 +135,8 @@ function PaginationItemRenderer({
111
135
  PaginationLink,
112
136
  {
113
137
  disabled: item.disabled,
138
+ ...locale !== void 0 ? { locale } : {},
139
+ pageLabelTemplate: labels.page,
114
140
  page: item.page ?? 1,
115
141
  selected: item.selected,
116
142
  ...hrefProps
@@ -145,6 +171,8 @@ function PaginationLink(props) {
145
171
  render,
146
172
  disabled = false,
147
173
  getPageHref,
174
+ locale,
175
+ pageLabelTemplate = DEFAULT_PAGINATION_LABELS.page,
148
176
  page,
149
177
  selected = false,
150
178
  ...consumerProps
@@ -157,7 +185,7 @@ function PaginationLink(props) {
157
185
  props: {
158
186
  ...consumerProps,
159
187
  "aria-current": selected ? "page" : void 0,
160
- "aria-label": `Page ${page}`,
188
+ "aria-label": formatPageLabel(pageLabelTemplate, page, locale),
161
189
  "aria-disabled": disabled ? true : void 0,
162
190
  "data-disabled": disabled ? "" : void 0,
163
191
  "data-selected": selected ? "" : void 0,
@@ -166,7 +194,7 @@ function PaginationLink(props) {
166
194
  "data-uiify-button": "",
167
195
  "data-variant": "ghost",
168
196
  href,
169
- children: page
197
+ children: formatPageNumber(page, locale)
170
198
  },
171
199
  render,
172
200
  state: { selected }
@@ -176,11 +204,11 @@ function PaginationNavControl({
176
204
  disabled,
177
205
  getPageHref,
178
206
  label,
207
+ labelText,
179
208
  page,
180
209
  type
181
210
  }) {
182
211
  const href = !disabled && getPageHref ? getPageHref(page) : void 0;
183
- const labelText = type === "previous" ? "Previous" : type === "next" ? "Next" : type === "first" ? "First" : "Last";
184
212
  return /* @__PURE__ */ jsx(PaginationItemPart, { children: href ? /* @__PURE__ */ jsx(
185
213
  "a",
186
214
  {
@@ -205,6 +233,12 @@ function PaginationNavControl({
205
233
  ) });
206
234
  }
207
235
  PaginationNavControl.displayName = "PaginationNavControl";
236
+ function formatPageNumber(page, locale) {
237
+ return locale ? new Intl.NumberFormat(locale).format(page) : String(page);
238
+ }
239
+ function formatPageLabel(template, page, locale) {
240
+ return formatLabel(template, { page: locale === void 0 ? String(page) : page }, locale);
241
+ }
208
242
  function PaginationEllipsis(props) {
209
243
  const { as, render, ...consumerProps } = props;
210
244
  const element = useRenderElement({
@@ -230,6 +264,7 @@ const Pagination = {
230
264
  Root: PaginationRoot
231
265
  };
232
266
  export {
267
+ DEFAULT_PAGINATION_LABELS,
233
268
  Pagination,
234
269
  PaginationEllipsis,
235
270
  PaginationItemPart,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/pagination/PaginationShell.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { buildPaginationItems } from \"./pagination-engine.js\";\n\nimport type {\n PaginationItem,\n PaginationRootProps,\n PaginationListProps,\n PaginationItemProps,\n PaginationLinkProps,\n PaginationEllipsisProps,\n} from \"./types.js\";\n\nexport { buildPaginationItems } from \"./pagination-engine.js\";\n\nexport function PaginationRoot<TAs extends ElementType = \"nav\">(\n props: PaginationRootProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n \"aria-label\": ariaLabel = \"Pagination\",\n boundaryCount = 1,\n count,\n disabled = false,\n getPageHref,\n page = 1,\n showFirstLast = false,\n siblingCount = 1,\n children,\n defaultPage: _defaultPage,\n onPageChange: _onPageChange,\n ...consumerProps\n } = props as PaginationRootProps<\"nav\">;\n\n const items = buildPaginationItems(\n count,\n page,\n siblingCount,\n boundaryCount,\n disabled,\n showFirstLast,\n );\n\n const content = children ?? (\n <ol>\n {items.map((item, index) => (\n <PaginationItemRenderer\n item={item}\n key={`${item.type}-${item.page ?? index}`}\n page={page}\n {...paginationHrefProps(getPageHref)}\n />\n ))}\n </ol>\n );\n\n return useRenderElement({\n as,\n defaultTag: \"nav\",\n props: {\n ...consumerProps,\n \"aria-label\": ariaLabel,\n children: content,\n \"data-uiify-pagination\": \"\",\n },\n render,\n state: { page },\n });\n}\nPaginationRoot.displayName = \"PaginationRoot\";\n\nfunction paginationHrefProps(getPageHref?: (page: number) => string): {\n readonly getPageHref?: (page: number) => string;\n} {\n return getPageHref ? { getPageHref } : {};\n}\n\nfunction PaginationItemRenderer({\n getPageHref,\n item,\n page,\n}: {\n readonly getPageHref?: (page: number) => string;\n readonly item: PaginationItem;\n readonly page: number;\n}): ReactElement {\n const hrefProps = paginationHrefProps(getPageHref);\n\n switch (item.type) {\n case \"ellipsis\":\n return <PaginationEllipsis />;\n case \"previous\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label=\"Previous page\"\n page={page - 1}\n type=\"previous\"\n {...hrefProps}\n />\n );\n case \"next\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label=\"Next page\"\n page={page + 1}\n type=\"next\"\n {...hrefProps}\n />\n );\n case \"first\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label=\"First page\"\n page={1}\n type=\"first\"\n {...hrefProps}\n />\n );\n case \"last\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label=\"Last page\"\n page={item.page ?? page}\n type=\"last\"\n {...hrefProps}\n />\n );\n default:\n return (\n <PaginationLink\n disabled={item.disabled}\n page={item.page ?? 1}\n selected={item.selected}\n {...hrefProps}\n />\n );\n }\n}\nPaginationItemRenderer.displayName = \"PaginationItemRenderer\";\n\nexport function PaginationList<TAs extends ElementType = \"ol\">(\n props: PaginationListProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as PaginationListProps<\"ol\">;\n\n return useRenderElement({\n as,\n defaultTag: \"ol\",\n props: consumerProps,\n render,\n state: {},\n });\n}\n\nexport function PaginationItemPart<TAs extends ElementType = \"li\">(\n props: PaginationItemProps<TAs>,\n): ReactElement | null {\n const { as, render, children, ...consumerProps } = props as PaginationItemProps<\"li\">;\n\n return useRenderElement({\n as,\n defaultTag: \"li\",\n props: { ...consumerProps, children },\n render,\n state: {},\n });\n}\n\nexport function PaginationLink<TAs extends ElementType = \"a\">(\n props: PaginationLinkProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n disabled = false,\n getPageHref,\n page,\n selected = false,\n ...consumerProps\n } = props as PaginationLinkProps<\"a\">;\n\n const href = !disabled && getPageHref ? getPageHref(page) : undefined;\n const Tag = href ? \"a\" : \"span\";\n\n return useRenderElement({\n as: as ?? Tag,\n defaultTag: Tag,\n props: {\n ...consumerProps,\n \"aria-current\": selected ? \"page\" : undefined,\n \"aria-label\": `Page ${page}`,\n \"aria-disabled\": disabled ? true : undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-selected\": selected ? \"\" : undefined,\n \"data-size\": \"icon\",\n \"data-type\": \"page\",\n \"data-uiify-button\": \"\",\n \"data-variant\": \"ghost\",\n href,\n children: page,\n },\n render,\n state: { selected },\n });\n}\n\nfunction PaginationNavControl({\n disabled,\n getPageHref,\n label,\n page,\n type,\n}: {\n readonly disabled: boolean;\n readonly getPageHref?: (page: number) => string;\n readonly label: string;\n readonly page: number;\n readonly type: \"previous\" | \"next\" | \"first\" | \"last\";\n}): ReactElement {\n const href = !disabled && getPageHref ? getPageHref(page) : undefined;\n const labelText =\n type === \"previous\"\n ? \"Previous\"\n : type === \"next\"\n ? \"Next\"\n : type === \"first\"\n ? \"First\"\n : \"Last\";\n\n return (\n <PaginationItemPart>\n {href ? (\n <a\n aria-label={label}\n data-type={type}\n data-uiify-button=\"\"\n data-variant=\"ghost\"\n href={href}\n >\n {labelText}\n </a>\n ) : (\n <span\n aria-disabled={disabled ? true : undefined}\n aria-label={label}\n data-disabled={disabled ? \"\" : undefined}\n data-type={type}\n data-uiify-button=\"\"\n data-variant=\"ghost\"\n >\n {labelText}\n </span>\n )}\n </PaginationItemPart>\n );\n}\nPaginationNavControl.displayName = \"PaginationNavControl\";\n\nexport function PaginationEllipsis<TAs extends ElementType = \"span\">(\n props: PaginationEllipsisProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as PaginationEllipsisProps<\"span\">;\n const element = useRenderElement({\n as,\n defaultTag: \"span\",\n props: {\n ...consumerProps,\n \"aria-hidden\": true,\n \"data-type\": \"ellipsis\",\n children: \"…\",\n },\n render,\n state: {},\n });\n\n return <PaginationItemPart>{element}</PaginationItemPart>;\n}\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport const Pagination = {\n Ellipsis: PaginationEllipsis,\n Item: PaginationItemPart,\n Link: PaginationLink,\n List: PaginationList,\n Root: PaginationRoot,\n};\n"],"mappings":"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","names":["buildPaginationItems"]}
1
+ {"version":3,"sources":["../../../src/components/pagination/PaginationShell.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { formatLabel } from \"@gunkin/uiify/core/format-label\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { buildPaginationItems } from \"./pagination-engine.js\";\n\nimport type {\n PaginationItem,\n PaginationLabels,\n PaginationRootProps,\n PaginationListProps,\n PaginationItemProps,\n PaginationLinkProps,\n PaginationEllipsisProps,\n} from \"./types.js\";\n\nexport { buildPaginationItems } from \"./pagination-engine.js\";\n\nexport const DEFAULT_PAGINATION_LABELS: PaginationLabels = {\n root: \"Pagination\",\n page: \"Page {page}\",\n previous: \"Previous page\",\n next: \"Next page\",\n first: \"First page\",\n last: \"Last page\",\n previousText: \"Previous\",\n nextText: \"Next\",\n firstText: \"First\",\n lastText: \"Last\",\n};\n\nexport function PaginationRoot<TAs extends ElementType = \"nav\">(\n props: PaginationRootProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n \"aria-label\": ariaLabel,\n boundaryCount = 1,\n count,\n disabled = false,\n getPageHref,\n labels,\n locale,\n page = 1,\n showFirstLast = false,\n siblingCount = 1,\n children,\n defaultPage: _defaultPage,\n onPageChange: _onPageChange,\n ...consumerProps\n } = props as PaginationRootProps<\"nav\">;\n const mergedLabels = { ...DEFAULT_PAGINATION_LABELS, ...labels };\n\n const items = buildPaginationItems(\n count,\n page,\n siblingCount,\n boundaryCount,\n disabled,\n showFirstLast,\n );\n\n const content = children ?? (\n <ol>\n {items.map((item, index) => (\n <PaginationItemRenderer\n item={item}\n key={`${item.type}-${item.page ?? index}`}\n labels={mergedLabels}\n {...(locale !== undefined ? { locale } : {})}\n page={page}\n {...paginationHrefProps(getPageHref)}\n />\n ))}\n </ol>\n );\n\n return useRenderElement({\n as,\n defaultTag: \"nav\",\n props: {\n ...consumerProps,\n \"aria-label\": ariaLabel ?? mergedLabels.root,\n children: content,\n \"data-uiify-pagination\": \"\",\n },\n render,\n state: { page },\n });\n}\nPaginationRoot.displayName = \"PaginationRoot\";\n\nfunction paginationHrefProps(getPageHref?: (page: number) => string): {\n readonly getPageHref?: (page: number) => string;\n} {\n return getPageHref ? { getPageHref } : {};\n}\n\nfunction PaginationItemRenderer({\n getPageHref,\n item,\n labels,\n locale,\n page,\n}: {\n readonly getPageHref?: (page: number) => string;\n readonly item: PaginationItem;\n readonly labels: PaginationLabels;\n readonly locale?: string;\n readonly page: number;\n}): ReactElement {\n const hrefProps = paginationHrefProps(getPageHref);\n\n switch (item.type) {\n case \"ellipsis\":\n return <PaginationEllipsis />;\n case \"previous\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label={labels.previous}\n labelText={labels.previousText}\n page={page - 1}\n type=\"previous\"\n {...hrefProps}\n />\n );\n case \"next\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label={labels.next}\n labelText={labels.nextText}\n page={page + 1}\n type=\"next\"\n {...hrefProps}\n />\n );\n case \"first\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label={labels.first}\n labelText={labels.firstText}\n page={1}\n type=\"first\"\n {...hrefProps}\n />\n );\n case \"last\":\n return (\n <PaginationNavControl\n disabled={item.disabled}\n label={labels.last}\n labelText={labels.lastText}\n page={item.page ?? page}\n type=\"last\"\n {...hrefProps}\n />\n );\n default:\n return (\n <PaginationLink\n disabled={item.disabled}\n {...(locale !== undefined ? { locale } : {})}\n pageLabelTemplate={labels.page}\n page={item.page ?? 1}\n selected={item.selected}\n {...hrefProps}\n />\n );\n }\n}\nPaginationItemRenderer.displayName = \"PaginationItemRenderer\";\n\nexport function PaginationList<TAs extends ElementType = \"ol\">(\n props: PaginationListProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as PaginationListProps<\"ol\">;\n\n return useRenderElement({\n as,\n defaultTag: \"ol\",\n props: consumerProps,\n render,\n state: {},\n });\n}\n\nexport function PaginationItemPart<TAs extends ElementType = \"li\">(\n props: PaginationItemProps<TAs>,\n): ReactElement | null {\n const { as, render, children, ...consumerProps } = props as PaginationItemProps<\"li\">;\n\n return useRenderElement({\n as,\n defaultTag: \"li\",\n props: { ...consumerProps, children },\n render,\n state: {},\n });\n}\n\nexport function PaginationLink<TAs extends ElementType = \"a\">(\n props: PaginationLinkProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n disabled = false,\n getPageHref,\n locale,\n pageLabelTemplate = DEFAULT_PAGINATION_LABELS.page,\n page,\n selected = false,\n ...consumerProps\n } = props as PaginationLinkProps<\"a\">;\n\n const href = !disabled && getPageHref ? getPageHref(page) : undefined;\n const Tag = href ? \"a\" : \"span\";\n\n return useRenderElement({\n as: as ?? Tag,\n defaultTag: Tag,\n props: {\n ...consumerProps,\n \"aria-current\": selected ? \"page\" : undefined,\n \"aria-label\": formatPageLabel(pageLabelTemplate, page, locale),\n \"aria-disabled\": disabled ? true : undefined,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-selected\": selected ? \"\" : undefined,\n \"data-size\": \"icon\",\n \"data-type\": \"page\",\n \"data-uiify-button\": \"\",\n \"data-variant\": \"ghost\",\n href,\n children: formatPageNumber(page, locale),\n },\n render,\n state: { selected },\n });\n}\n\nfunction PaginationNavControl({\n disabled,\n getPageHref,\n label,\n labelText,\n page,\n type,\n}: {\n readonly disabled: boolean;\n readonly getPageHref?: (page: number) => string;\n readonly label: string;\n readonly labelText: string;\n readonly page: number;\n readonly type: \"previous\" | \"next\" | \"first\" | \"last\";\n}): ReactElement {\n const href = !disabled && getPageHref ? getPageHref(page) : undefined;\n return (\n <PaginationItemPart>\n {href ? (\n <a\n aria-label={label}\n data-type={type}\n data-uiify-button=\"\"\n data-variant=\"ghost\"\n href={href}\n >\n {labelText}\n </a>\n ) : (\n <span\n aria-disabled={disabled ? true : undefined}\n aria-label={label}\n data-disabled={disabled ? \"\" : undefined}\n data-type={type}\n data-uiify-button=\"\"\n data-variant=\"ghost\"\n >\n {labelText}\n </span>\n )}\n </PaginationItemPart>\n );\n}\nPaginationNavControl.displayName = \"PaginationNavControl\";\n\nfunction formatPageNumber(page: number, locale?: string): string {\n return locale ? new Intl.NumberFormat(locale).format(page) : String(page);\n}\n\nfunction formatPageLabel(template: string, page: number, locale?: string): string {\n return formatLabel(template, { page: locale === undefined ? String(page) : page }, locale);\n}\n\nexport function PaginationEllipsis<TAs extends ElementType = \"span\">(\n props: PaginationEllipsisProps<TAs>,\n): ReactElement | null {\n const { as, render, ...consumerProps } = props as PaginationEllipsisProps<\"span\">;\n const element = useRenderElement({\n as,\n defaultTag: \"span\",\n props: {\n ...consumerProps,\n \"aria-hidden\": true,\n \"data-type\": \"ellipsis\",\n children: \"…\",\n },\n render,\n state: {},\n });\n\n return <PaginationItemPart>{element}</PaginationItemPart>;\n}\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport const Pagination = {\n Ellipsis: PaginationEllipsis,\n Item: PaginationItemPart,\n Link: PaginationLink,\n List: PaginationList,\n Root: PaginationRoot,\n};\n"],"mappings":"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","names":["buildPaginationItems"]}
@@ -1,5 +1,5 @@
1
1
  export { buildPaginationItems } from "./pagination-engine.js";
2
2
  export type { PaginationItem as PaginationItemDescriptor, PaginationItemType, UsePaginationParams, } from "./types.js";
3
3
  export { Pagination, PaginationEllipsis, PaginationItemPart as PaginationItem, PaginationLink, PaginationList, PaginationRoot, } from "./Pagination.js";
4
- export type { PaginationEllipsisProps, PaginationEllipsisOwnProps, PaginationItemProps, PaginationItemOwnProps, PaginationLinkOwnProps, PaginationLinkProps, PaginationListOwnProps, PaginationListProps, PaginationRootOwnProps, PaginationRootProps, } from "./types.js";
4
+ export type { PaginationEllipsisProps, PaginationEllipsisOwnProps, PaginationItemProps, PaginationItemOwnProps, PaginationLinkOwnProps, PaginationLinkProps, PaginationListOwnProps, PaginationListProps, PaginationRootOwnProps, PaginationRootProps, PaginationLabels, } from "./types.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,cAAc,IAAI,wBAAwB,EAC1C,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,kBAAkB,IAAI,cAAc,EACpC,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,cAAc,IAAI,wBAAwB,EAC1C,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,kBAAkB,IAAI,cAAc,EACpC,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/pagination/index.ts"],"sourcesContent":["export { buildPaginationItems } from \"./pagination-engine.js\";\nexport type {\n PaginationItem as PaginationItemDescriptor,\n PaginationItemType,\n UsePaginationParams,\n} from \"./types.js\";\nexport {\n Pagination,\n PaginationEllipsis,\n PaginationItemPart as PaginationItem,\n PaginationLink,\n PaginationList,\n PaginationRoot,\n} from \"./Pagination.js\";\nexport type {\n PaginationEllipsisProps,\n PaginationEllipsisOwnProps,\n PaginationItemProps,\n PaginationItemOwnProps,\n PaginationLinkOwnProps,\n PaginationLinkProps,\n PaginationListOwnProps,\n PaginationListProps,\n PaginationRootOwnProps,\n PaginationRootProps,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,4BAA4B;AAMrC;AAAA,EACE;AAAA,EACA;AAAA,EACsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/pagination/index.ts"],"sourcesContent":["export { buildPaginationItems } from \"./pagination-engine.js\";\nexport type {\n PaginationItem as PaginationItemDescriptor,\n PaginationItemType,\n UsePaginationParams,\n} from \"./types.js\";\nexport {\n Pagination,\n PaginationEllipsis,\n PaginationItemPart as PaginationItem,\n PaginationLink,\n PaginationList,\n PaginationRoot,\n} from \"./Pagination.js\";\nexport type {\n PaginationEllipsisProps,\n PaginationEllipsisOwnProps,\n PaginationItemProps,\n PaginationItemOwnProps,\n PaginationLinkOwnProps,\n PaginationLinkProps,\n PaginationListOwnProps,\n PaginationListProps,\n PaginationRootOwnProps,\n PaginationRootProps,\n PaginationLabels,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,4BAA4B;AAMrC;AAAA,EACE;AAAA,EACA;AAAA,EACsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
@@ -14,6 +14,18 @@ export interface PaginationControlItem {
14
14
  readonly type: Exclude<PaginationItemType, "page">;
15
15
  }
16
16
  export type PaginationItem = PaginationPageItem | PaginationControlItem;
17
+ export interface PaginationLabels {
18
+ readonly root: string;
19
+ readonly page: string;
20
+ readonly previous: string;
21
+ readonly next: string;
22
+ readonly first: string;
23
+ readonly last: string;
24
+ readonly previousText: string;
25
+ readonly nextText: string;
26
+ readonly firstText: string;
27
+ readonly lastText: string;
28
+ }
17
29
  export interface UsePaginationParams {
18
30
  readonly boundaryCount?: number;
19
31
  readonly count: number;
@@ -32,6 +44,8 @@ export interface UsePaginationReturn {
32
44
  export interface PaginationContextValue {
33
45
  readonly count: number;
34
46
  readonly items: readonly PaginationItem[];
47
+ readonly labels: PaginationLabels;
48
+ readonly locale?: string;
35
49
  readonly page: number;
36
50
  readonly setPage: (page: number) => void;
37
51
  }
@@ -39,6 +53,8 @@ export interface PaginationRootOwnProps extends UsePaginationParams {
39
53
  readonly "aria-label"?: string;
40
54
  readonly children?: ReactNode;
41
55
  readonly getPageHref?: (page: number) => string;
56
+ readonly labels?: Partial<PaginationLabels>;
57
+ readonly locale?: string;
42
58
  }
43
59
  export type PaginationRootProps<TAs extends ElementType = "nav"> = RenderableProps<TAs, PaginationRootOwnProps, {
44
60
  page: number;
@@ -54,6 +70,8 @@ export type PaginationItemProps<TAs extends ElementType = "li"> = RenderableProp
54
70
  export interface PaginationLinkOwnProps {
55
71
  readonly disabled?: boolean;
56
72
  readonly getPageHref?: (page: number) => string;
73
+ readonly locale?: string;
74
+ readonly pageLabelTemplate?: string;
57
75
  readonly page: number;
58
76
  readonly selected?: boolean;
59
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/pagination/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SliderClient.d.ts","sourceRoot":"","sources":["../../../../src/components/slider/client/SliderClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,WAAW,EAEX,YAAY,EAEb,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,iBAAiB,EAAiC,MAAM,aAAa,CAAC;AA+CpF,wBAAgB,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC1D,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAC5B,YAAY,GAAG,IAAI,CA4KrB;yBA9Ke,YAAY"}
1
+ {"version":3,"file":"SliderClient.d.ts","sourceRoot":"","sources":["../../../../src/components/slider/client/SliderClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,WAAW,EAEX,YAAY,EAEb,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EAAE,iBAAiB,EAAiC,MAAM,aAAa,CAAC;AAoDpF,wBAAgB,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC1D,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAC5B,YAAY,GAAG,IAAI,CAoLrB;yBAtLe,YAAY"}
@@ -3,7 +3,12 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useState } from "react";
4
4
  import { useControllableState } from "@gunkin/uiify/hooks";
5
5
  import { useRenderElement } from "@gunkin/uiify/core/render";
6
+ import { resolveDirection } from "@gunkin/uiify/core/text-direction";
6
7
  import { getSliderStops, snapSliderToStops } from "../slider-values.js";
8
+ const DEFAULT_SLIDER_LABELS = {
9
+ minimum: "Minimum value",
10
+ maximum: "Maximum value"
11
+ };
7
12
  function normalizeValue(value, min, max) {
8
13
  if (typeof value === "number") return Math.max(min, Math.min(max, value));
9
14
  const first = Math.max(min, Math.min(max, value[0]));
@@ -39,6 +44,7 @@ function SliderClient(props) {
39
44
  disabled = false,
40
45
  orientation = "horizontal",
41
46
  marks = [],
47
+ labels,
42
48
  thumbLabels,
43
49
  "aria-label": ariaLabel,
44
50
  "aria-labelledby": ariaLabelledBy,
@@ -71,6 +77,7 @@ function SliderClient(props) {
71
77
  ) + "%"
72
78
  };
73
79
  const visibleMarks = marksInRange(marks, min, max);
80
+ const accessibleLabels = { ...DEFAULT_SLIDER_LABELS, ...labels };
74
81
  const setThumbValue = (index, proposed) => {
75
82
  if (disabled) return;
76
83
  if (!isRange) {
@@ -90,7 +97,9 @@ function SliderClient(props) {
90
97
  };
91
98
  const handleKeyDown = (index, event) => {
92
99
  if (disabled || step !== null) return;
93
- const direction = event.key === "ArrowRight" || event.key === "ArrowUp" ? 1 : event.key === "ArrowLeft" || event.key === "ArrowDown" ? -1 : 0;
100
+ const horizontalKey = event.key === "ArrowRight" || event.key === "ArrowLeft";
101
+ const mirror = horizontalKey && orientation !== "vertical" && resolveDirection(event.currentTarget) === "rtl" ? -1 : 1;
102
+ const direction = (event.key === "ArrowRight" || event.key === "ArrowUp" ? 1 : event.key === "ArrowLeft" || event.key === "ArrowDown" ? -1 : 0) * mirror;
94
103
  if (direction === 0) return;
95
104
  event.preventDefault();
96
105
  const currentValue = values[index];
@@ -100,7 +109,7 @@ function SliderClient(props) {
100
109
  if (nextValue !== void 0) setThumbValue(index, nextValue);
101
110
  };
102
111
  const inputNodes = values.map((currentValue, index) => {
103
- const inputLabel = isRange ? thumbLabels?.[index] ?? (index === 0 ? "Minimum value" : "Maximum value") : ariaLabel;
112
+ const inputLabel = isRange ? thumbLabels?.[index] ?? (index === 0 ? accessibleLabels.minimum : accessibleLabels.maximum) : ariaLabel;
104
113
  const inputLabelledBy = isRange ? void 0 : ariaLabelledBy;
105
114
  return /* @__PURE__ */ jsx(
106
115
  "input",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/slider/client/SliderClient.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n CSSProperties,\n ElementType,\n KeyboardEvent,\n ReactElement,\n SyntheticEvent,\n} from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useControllableState } from \"@gunkin/uiify/hooks\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\n\nimport { getSliderStops, snapSliderToStops } from \"../slider-values.js\";\nimport type { SliderClientProps, SliderClientValue, SliderMark } from \"../types.js\";\n\ntype SliderPositionStyle = CSSProperties & {\n readonly \"--uiify-slider-position\"?: string;\n readonly \"--uiify-slider-start\"?: string;\n readonly \"--uiify-slider-end\"?: string;\n readonly \"--uiify-slider-middle\"?: string;\n};\n\nfunction normalizeValue(value: SliderClientValue, min: number, max: number): SliderClientValue {\n if (typeof value === \"number\") return Math.max(min, Math.min(max, value));\n\n const first = Math.max(min, Math.min(max, value[0]));\n const second = Math.max(min, Math.min(max, value[1]));\n return first <= second ? [first, second] : [second, first];\n}\n\nfunction normalizeSelection(\n value: SliderClientValue,\n min: number,\n max: number,\n step: number | null,\n stops: readonly number[],\n): SliderClientValue {\n const normalized = normalizeValue(value, min, max);\n if (step !== null) return normalized;\n if (typeof normalized === \"number\") return snapSliderToStops(normalized, stops);\n\n const lowerStops = stops.filter((stop) => stop <= normalized[1]);\n const lower = snapSliderToStops(normalized[0], lowerStops);\n const upperStops = stops.filter((stop) => stop >= lower);\n return [lower, snapSliderToStops(normalized[1], upperStops)];\n}\n\nfunction position(value: number, min: number, max: number): number {\n if (max <= min) return 0;\n return Math.max(0, Math.min(100, ((value - min) / (max - min)) * 100));\n}\n\nfunction marksInRange(\n marks: readonly SliderMark[],\n min: number,\n max: number,\n): readonly SliderMark[] {\n return marks.filter(({ value }) => Number.isFinite(value) && value >= min && value <= max);\n}\n\nexport function SliderClient<TAs extends ElementType = \"div\">(\n props: SliderClientProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n value: controlledValue,\n defaultValue,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n orientation = \"horizontal\",\n marks = [],\n thumbLabels,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...consumerProps\n } = props as SliderClientProps<\"div\">;\n\n const stops = getSliderStops(min, max, marks);\n const initialValue = normalizeSelection(defaultValue ?? min, min, max, step, stops);\n const safeControlledValue =\n controlledValue === undefined\n ? undefined\n : normalizeSelection(controlledValue, min, max, step, stops);\n const [value, setValue] = useControllableState<SliderClientValue>({\n defaultValue: initialValue,\n onChange: onValueChange,\n value: safeControlledValue,\n });\n const [enhanced, setEnhanced] = useState(false);\n useEffect(() => setEnhanced(true), []);\n\n const normalizedValue = normalizeValue(value, min, max);\n const values: readonly number[] =\n typeof normalizedValue === \"number\"\n ? [normalizedValue]\n : [normalizedValue[0], normalizedValue[1]];\n const isRange = values.length === 2;\n const consumerStyle = \"style\" in consumerProps ? consumerProps.style : undefined;\n const consumerRole = \"role\" in consumerProps ? consumerProps.role : undefined;\n const positionStyles: readonly SliderPositionStyle[] = values.map((currentValue) => ({\n \"--uiify-slider-position\": String(position(currentValue, min, max)) + \"%\",\n }));\n const rootStyle: SliderPositionStyle = {\n ...consumerStyle,\n \"--uiify-slider-start\": String(position(values[0]!, min, max)) + \"%\",\n \"--uiify-slider-end\": String(position(values[values.length - 1]!, min, max)) + \"%\",\n \"--uiify-slider-middle\":\n String(\n (position(values[0]!, min, max) + position(values[values.length - 1]!, min, max)) / 2,\n ) + \"%\",\n };\n const visibleMarks = marksInRange(marks, min, max);\n\n const setThumbValue = (index: number, proposed: number): void => {\n if (disabled) return;\n\n if (!isRange) {\n const next = step === null ? snapSliderToStops(proposed, stops) : proposed;\n setValue(next);\n return;\n }\n\n const lower = index === 0 ? min : values[0]!;\n const upper = index === 0 ? values[1]! : max;\n const availableStops = stops.filter((stop) => stop >= lower && stop <= upper);\n const snapped = step === null ? snapSliderToStops(proposed, availableStops) : proposed;\n const nextValue =\n index === 0\n ? ([Math.min(snapped, values[1]!), values[1]!] as const)\n : ([values[0]!, Math.max(snapped, values[0]!)] as const);\n setValue(nextValue);\n };\n\n const handleChange = (index: number, event: SyntheticEvent<HTMLInputElement>): void => {\n setThumbValue(index, event.currentTarget.valueAsNumber);\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent<HTMLInputElement>): void => {\n if (disabled || step !== null) return;\n\n const direction =\n event.key === \"ArrowRight\" || event.key === \"ArrowUp\"\n ? 1\n : event.key === \"ArrowLeft\" || event.key === \"ArrowDown\"\n ? -1\n : 0;\n if (direction === 0) return;\n\n event.preventDefault();\n const currentValue = values[index]!;\n const availableStops = isRange\n ? stops.filter((stop) => (index === 0 ? stop <= values[1]! : stop >= values[0]!))\n : stops;\n const currentIndex = availableStops.indexOf(currentValue);\n const nextValue = availableStops[currentIndex + direction];\n if (nextValue !== undefined) setThumbValue(index, nextValue);\n };\n\n const inputNodes = values.map((currentValue, index) => {\n const inputLabel = isRange\n ? (thumbLabels?.[index] ?? (index === 0 ? \"Minimum value\" : \"Maximum value\"))\n : ariaLabel;\n const inputLabelledBy = isRange ? undefined : ariaLabelledBy;\n\n return (\n <input\n key={index}\n type=\"range\"\n min={min}\n max={max}\n step={step === null ? \"any\" : step}\n value={currentValue}\n disabled={disabled}\n aria-label={inputLabel}\n aria-labelledby={inputLabelledBy}\n aria-orientation={orientation}\n data-part=\"thumb\"\n data-state={String(currentValue)}\n data-orientation={orientation}\n data-disabled={disabled ? \"\" : undefined}\n onChange={(event) => handleChange(index, event)}\n onKeyDown={(event) => handleKeyDown(index, event)}\n />\n );\n });\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n role: isRange ? \"group\" : consumerRole,\n \"aria-label\": isRange ? ariaLabel : undefined,\n \"aria-labelledby\": isRange ? ariaLabelledBy : undefined,\n \"data-uiify-slider-client\": \"\",\n \"data-part\": \"root\",\n \"data-range\": isRange ? \"\" : undefined,\n \"data-state\": isRange ? \"range\" : String(values[0]),\n \"data-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-enhanced\": enhanced ? \"\" : undefined,\n style: rootStyle,\n children: (\n <>\n <div data-part=\"track\" aria-hidden=\"true\">\n <span data-part=\"range\" />\n {visibleMarks.map((mark) => (\n <span\n key={mark.value}\n data-part=\"mark\"\n style={\n {\n \"--uiify-slider-position\": String(position(mark.value, min, max)) + \"%\",\n } as SliderPositionStyle\n }\n >\n {mark.label}\n </span>\n ))}\n {positionStyles.map((style, index) => (\n <span key={index} data-part=\"visual-thumb\" style={style} />\n ))}\n </div>\n {inputNodes}\n </>\n ),\n },\n render,\n state: { disabled, orientation, value: normalizedValue },\n });\n}\n\nSliderClient.displayName = \"SliderClient\";\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/slider/client/SliderClient.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n CSSProperties,\n ElementType,\n KeyboardEvent,\n ReactElement,\n SyntheticEvent,\n} from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useControllableState } from \"@gunkin/uiify/hooks\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { resolveDirection } from \"@gunkin/uiify/core/text-direction\";\n\nimport { getSliderStops, snapSliderToStops } from \"../slider-values.js\";\nimport type { SliderClientProps, SliderClientValue, SliderMark } from \"../types.js\";\n\nconst DEFAULT_SLIDER_LABELS = {\n minimum: \"Minimum value\",\n maximum: \"Maximum value\",\n} as const;\n\ntype SliderPositionStyle = CSSProperties & {\n readonly \"--uiify-slider-position\"?: string;\n readonly \"--uiify-slider-start\"?: string;\n readonly \"--uiify-slider-end\"?: string;\n readonly \"--uiify-slider-middle\"?: string;\n};\n\nfunction normalizeValue(value: SliderClientValue, min: number, max: number): SliderClientValue {\n if (typeof value === \"number\") return Math.max(min, Math.min(max, value));\n\n const first = Math.max(min, Math.min(max, value[0]));\n const second = Math.max(min, Math.min(max, value[1]));\n return first <= second ? [first, second] : [second, first];\n}\n\nfunction normalizeSelection(\n value: SliderClientValue,\n min: number,\n max: number,\n step: number | null,\n stops: readonly number[],\n): SliderClientValue {\n const normalized = normalizeValue(value, min, max);\n if (step !== null) return normalized;\n if (typeof normalized === \"number\") return snapSliderToStops(normalized, stops);\n\n const lowerStops = stops.filter((stop) => stop <= normalized[1]);\n const lower = snapSliderToStops(normalized[0], lowerStops);\n const upperStops = stops.filter((stop) => stop >= lower);\n return [lower, snapSliderToStops(normalized[1], upperStops)];\n}\n\nfunction position(value: number, min: number, max: number): number {\n if (max <= min) return 0;\n return Math.max(0, Math.min(100, ((value - min) / (max - min)) * 100));\n}\n\nfunction marksInRange(\n marks: readonly SliderMark[],\n min: number,\n max: number,\n): readonly SliderMark[] {\n return marks.filter(({ value }) => Number.isFinite(value) && value >= min && value <= max);\n}\n\nexport function SliderClient<TAs extends ElementType = \"div\">(\n props: SliderClientProps<TAs>,\n): ReactElement | null {\n const {\n as,\n render,\n value: controlledValue,\n defaultValue,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n orientation = \"horizontal\",\n marks = [],\n labels,\n thumbLabels,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...consumerProps\n } = props as SliderClientProps<\"div\">;\n\n const stops = getSliderStops(min, max, marks);\n const initialValue = normalizeSelection(defaultValue ?? min, min, max, step, stops);\n const safeControlledValue =\n controlledValue === undefined\n ? undefined\n : normalizeSelection(controlledValue, min, max, step, stops);\n const [value, setValue] = useControllableState<SliderClientValue>({\n defaultValue: initialValue,\n onChange: onValueChange,\n value: safeControlledValue,\n });\n const [enhanced, setEnhanced] = useState(false);\n useEffect(() => setEnhanced(true), []);\n\n const normalizedValue = normalizeValue(value, min, max);\n const values: readonly number[] =\n typeof normalizedValue === \"number\"\n ? [normalizedValue]\n : [normalizedValue[0], normalizedValue[1]];\n const isRange = values.length === 2;\n const consumerStyle = \"style\" in consumerProps ? consumerProps.style : undefined;\n const consumerRole = \"role\" in consumerProps ? consumerProps.role : undefined;\n const positionStyles: readonly SliderPositionStyle[] = values.map((currentValue) => ({\n \"--uiify-slider-position\": String(position(currentValue, min, max)) + \"%\",\n }));\n const rootStyle: SliderPositionStyle = {\n ...consumerStyle,\n \"--uiify-slider-start\": String(position(values[0]!, min, max)) + \"%\",\n \"--uiify-slider-end\": String(position(values[values.length - 1]!, min, max)) + \"%\",\n \"--uiify-slider-middle\":\n String(\n (position(values[0]!, min, max) + position(values[values.length - 1]!, min, max)) / 2,\n ) + \"%\",\n };\n const visibleMarks = marksInRange(marks, min, max);\n const accessibleLabels = { ...DEFAULT_SLIDER_LABELS, ...labels };\n\n const setThumbValue = (index: number, proposed: number): void => {\n if (disabled) return;\n\n if (!isRange) {\n const next = step === null ? snapSliderToStops(proposed, stops) : proposed;\n setValue(next);\n return;\n }\n\n const lower = index === 0 ? min : values[0]!;\n const upper = index === 0 ? values[1]! : max;\n const availableStops = stops.filter((stop) => stop >= lower && stop <= upper);\n const snapped = step === null ? snapSliderToStops(proposed, availableStops) : proposed;\n const nextValue =\n index === 0\n ? ([Math.min(snapped, values[1]!), values[1]!] as const)\n : ([values[0]!, Math.max(snapped, values[0]!)] as const);\n setValue(nextValue);\n };\n\n const handleChange = (index: number, event: SyntheticEvent<HTMLInputElement>): void => {\n setThumbValue(index, event.currentTarget.valueAsNumber);\n };\n\n const handleKeyDown = (index: number, event: KeyboardEvent<HTMLInputElement>): void => {\n if (disabled || step !== null) return;\n\n const horizontalKey = event.key === \"ArrowRight\" || event.key === \"ArrowLeft\";\n const mirror =\n horizontalKey && orientation !== \"vertical\" && resolveDirection(event.currentTarget) === \"rtl\"\n ? -1\n : 1;\n const direction =\n (event.key === \"ArrowRight\" || event.key === \"ArrowUp\"\n ? 1\n : event.key === \"ArrowLeft\" || event.key === \"ArrowDown\"\n ? -1\n : 0) * mirror;\n if (direction === 0) return;\n\n event.preventDefault();\n const currentValue = values[index]!;\n const availableStops = isRange\n ? stops.filter((stop) => (index === 0 ? stop <= values[1]! : stop >= values[0]!))\n : stops;\n const currentIndex = availableStops.indexOf(currentValue);\n const nextValue = availableStops[currentIndex + direction];\n if (nextValue !== undefined) setThumbValue(index, nextValue);\n };\n\n const inputNodes = values.map((currentValue, index) => {\n const inputLabel = isRange\n ? (thumbLabels?.[index] ??\n (index === 0 ? accessibleLabels.minimum : accessibleLabels.maximum))\n : ariaLabel;\n const inputLabelledBy = isRange ? undefined : ariaLabelledBy;\n\n return (\n <input\n key={index}\n type=\"range\"\n min={min}\n max={max}\n step={step === null ? \"any\" : step}\n value={currentValue}\n disabled={disabled}\n aria-label={inputLabel}\n aria-labelledby={inputLabelledBy}\n aria-orientation={orientation}\n data-part=\"thumb\"\n data-state={String(currentValue)}\n data-orientation={orientation}\n data-disabled={disabled ? \"\" : undefined}\n onChange={(event) => handleChange(index, event)}\n onKeyDown={(event) => handleKeyDown(index, event)}\n />\n );\n });\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n role: isRange ? \"group\" : consumerRole,\n \"aria-label\": isRange ? ariaLabel : undefined,\n \"aria-labelledby\": isRange ? ariaLabelledBy : undefined,\n \"data-uiify-slider-client\": \"\",\n \"data-part\": \"root\",\n \"data-range\": isRange ? \"\" : undefined,\n \"data-state\": isRange ? \"range\" : String(values[0]),\n \"data-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : undefined,\n \"data-enhanced\": enhanced ? \"\" : undefined,\n style: rootStyle,\n children: (\n <>\n <div data-part=\"track\" aria-hidden=\"true\">\n <span data-part=\"range\" />\n {visibleMarks.map((mark) => (\n <span\n key={mark.value}\n data-part=\"mark\"\n style={\n {\n \"--uiify-slider-position\": String(position(mark.value, min, max)) + \"%\",\n } as SliderPositionStyle\n }\n >\n {mark.label}\n </span>\n ))}\n {positionStyles.map((style, index) => (\n <span key={index} data-part=\"visual-thumb\" style={style} />\n ))}\n </div>\n {inputNodes}\n </>\n ),\n },\n render,\n state: { disabled, orientation, value: normalizedValue },\n });\n}\n\nSliderClient.displayName = \"SliderClient\";\n"],"mappings":"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","names":[]}
@@ -1,3 +1,3 @@
1
1
  export { Slider } from "./Slider.js";
2
- export type { SliderOwnProps, SliderProps } from "./types.js";
2
+ export type { SliderLabels, SliderOwnProps, SliderProps } from "./types.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/slider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/slider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/slider/index.ts"],"sourcesContent":["export { Slider } from \"./Slider.js\";\nexport type { SliderOwnProps, SliderProps } from \"./types.js\";\n"],"mappings":"AAAA,SAAS,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/slider/index.ts"],"sourcesContent":["export { Slider } from \"./Slider.js\";\nexport type { SliderLabels, SliderOwnProps, SliderProps } from \"./types.js\";\n"],"mappings":"AAAA,SAAS,cAAc;","names":[]}
@@ -24,10 +24,15 @@ export interface SliderClientOwnProps {
24
24
  readonly disabled?: boolean;
25
25
  readonly orientation?: "horizontal" | "vertical";
26
26
  readonly marks?: readonly SliderMark[];
27
+ readonly labels?: Partial<SliderLabels>;
27
28
  readonly thumbLabels?: readonly [string, string];
28
29
  readonly "aria-label"?: string;
29
30
  readonly "aria-labelledby"?: string;
30
31
  }
32
+ export interface SliderLabels {
33
+ readonly minimum: string;
34
+ readonly maximum: string;
35
+ }
31
36
  export interface SliderClientRenderState {
32
37
  readonly disabled: boolean;
33
38
  readonly orientation: "horizontal" | "vertical";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/slider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC9E,GAAG,EACH,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,CACf,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,IAAI,eAAe,CAC1E,GAAG,EACH,cAAc,EACd,cAAc,EACd,gBAAgB,CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/slider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,YAAY,GAAG,UAAU,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,iBAAiB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CAC9E,GAAG,EACH,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,CACf,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,IAAI,eAAe,CAC1E,GAAG,EACH,cAAc,EACd,cAAc,EACd,gBAAgB,CACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhE,wBAAgB,OAAO,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACrD,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GACvB,YAAY,GAAG,IAAI,CAsCrB;yBAxCe,OAAO"}
1
+ {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAkC,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/E,wBAAgB,OAAO,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EACrD,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GACvB,YAAY,GAAG,IAAI,CAwCrB;yBA1Ce,OAAO"}
@@ -1,24 +1,27 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useRenderElement } from "@gunkin/uiify/core/render";
3
+ const DEFAULT_SPINNER_LABELS = { loading: "Loading" };
3
4
  function Spinner(props) {
4
5
  const {
5
6
  as,
6
7
  align,
7
8
  render,
8
9
  delay = 0,
9
- label = "Loading",
10
+ label,
11
+ labels,
10
12
  showLabel = false,
11
13
  size = "md",
12
14
  children,
13
15
  ...consumerProps
14
16
  } = props;
15
17
  const visible = delay === 0;
18
+ const resolvedLabel = label ?? labels?.loading ?? DEFAULT_SPINNER_LABELS.loading;
16
19
  return useRenderElement({
17
20
  as,
18
21
  defaultTag: "div",
19
22
  props: {
20
23
  ...consumerProps,
21
- "aria-label": label,
24
+ "aria-label": resolvedLabel,
22
25
  "aria-live": "polite",
23
26
  "data-align": align,
24
27
  "data-delay": delay > 0 ? `${delay}ms` : void 0,
@@ -27,7 +30,7 @@ function Spinner(props) {
27
30
  "data-uiify-spinner": "",
28
31
  role: "status",
29
32
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
30
- showLabel ? /* @__PURE__ */ jsx("span", { "data-part": "label", children: label }) : null,
33
+ showLabel ? /* @__PURE__ */ jsx("span", { "data-part": "label", children: resolvedLabel }) : null,
31
34
  children
32
35
  ] })
33
36
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { PolymorphicProps } from \"@gunkin/uiify/core/render\";\nimport type { SpinnerOwnProps, SpinnerProps } from \"./types.js\";\n\nexport function Spinner<TAs extends ElementType = \"div\">(\n props: SpinnerProps<TAs>,\n): ReactElement | null {\n const {\n as,\n align,\n render,\n delay = 0,\n label = \"Loading\",\n showLabel = false,\n size = \"md\",\n children,\n ...consumerProps\n } = props as PolymorphicProps<\"div\", SpinnerOwnProps>;\n\n const visible = delay === 0;\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n \"aria-label\": label,\n \"aria-live\": \"polite\",\n \"data-align\": align,\n \"data-delay\": delay > 0 ? `${delay}ms` : undefined,\n \"data-size\": size,\n \"data-state\": visible ? \"visible\" : \"delayed\",\n \"data-uiify-spinner\": \"\",\n role: \"status\",\n children: (\n <>\n {showLabel ? <span data-part=\"label\">{label}</span> : null}\n {children}\n </>\n ),\n },\n render,\n state: { visible },\n });\n}\nSpinner.displayName = \"Spinner\";\n"],"mappings":"AAoCQ,mBACe,KADf;AAnCR,SAAS,wBAAwB;AAI1B,SAAS,QACd,OACqB;AACrB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,UAAU,UAAU;AAE1B,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH,cAAc;AAAA,MACd,aAAa;AAAA,MACb,cAAc;AAAA,MACd,cAAc,QAAQ,IAAI,GAAG,KAAK,OAAO;AAAA,MACzC,aAAa;AAAA,MACb,cAAc,UAAU,YAAY;AAAA,MACpC,sBAAsB;AAAA,MACtB,MAAM;AAAA,MACN,UACE,iCACG;AAAA,oBAAY,oBAAC,UAAK,aAAU,SAAS,iBAAM,IAAU;AAAA,QACrD;AAAA,SACH;AAAA,IAEJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,QAAQ;AAAA,EACnB,CAAC;AACH;AACA,QAAQ,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["import type { ElementType, ReactElement } from \"react\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport type { PolymorphicProps } from \"@gunkin/uiify/core/render\";\nimport type { SpinnerLabels, SpinnerOwnProps, SpinnerProps } from \"./types.js\";\n\nconst DEFAULT_SPINNER_LABELS: SpinnerLabels = { loading: \"Loading\" };\n\nexport function Spinner<TAs extends ElementType = \"div\">(\n props: SpinnerProps<TAs>,\n): ReactElement | null {\n const {\n as,\n align,\n render,\n delay = 0,\n label,\n labels,\n showLabel = false,\n size = \"md\",\n children,\n ...consumerProps\n } = props as PolymorphicProps<\"div\", SpinnerOwnProps>;\n\n const visible = delay === 0;\n const resolvedLabel = label ?? labels?.loading ?? DEFAULT_SPINNER_LABELS.loading;\n\n return useRenderElement({\n as,\n defaultTag: \"div\",\n props: {\n ...consumerProps,\n \"aria-label\": resolvedLabel,\n \"aria-live\": \"polite\",\n \"data-align\": align,\n \"data-delay\": delay > 0 ? `${delay}ms` : undefined,\n \"data-size\": size,\n \"data-state\": visible ? \"visible\" : \"delayed\",\n \"data-uiify-spinner\": \"\",\n role: \"status\",\n children: (\n <>\n {showLabel ? <span data-part=\"label\">{resolvedLabel}</span> : null}\n {children}\n </>\n ),\n },\n render,\n state: { visible },\n });\n}\nSpinner.displayName = \"Spinner\";\n"],"mappings":"AAwCQ,mBACe,KADf;AAvCR,SAAS,wBAAwB;AAIjC,MAAM,yBAAwC,EAAE,SAAS,UAAU;AAE5D,SAAS,QACd,OACqB;AACrB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,UAAU,UAAU;AAC1B,QAAM,gBAAgB,SAAS,QAAQ,WAAW,uBAAuB;AAEzE,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,MACL,GAAG;AAAA,MACH,cAAc;AAAA,MACd,aAAa;AAAA,MACb,cAAc;AAAA,MACd,cAAc,QAAQ,IAAI,GAAG,KAAK,OAAO;AAAA,MACzC,aAAa;AAAA,MACb,cAAc,UAAU,YAAY;AAAA,MACpC,sBAAsB;AAAA,MACtB,MAAM;AAAA,MACN,UACE,iCACG;AAAA,oBAAY,oBAAC,UAAK,aAAU,SAAS,yBAAc,IAAU;AAAA,QAC7D;AAAA,SACH;AAAA,IAEJ;AAAA,IACA;AAAA,IACA,OAAO,EAAE,QAAQ;AAAA,EACnB,CAAC;AACH;AACA,QAAQ,cAAc;","names":[]}
@@ -1,3 +1,3 @@
1
1
  export { Spinner } from "./Spinner.js";
2
- export type { SpinnerAlign, SpinnerOwnProps, SpinnerProps, SpinnerSize } from "./types.js";
2
+ export type { SpinnerAlign, SpinnerLabels, SpinnerOwnProps, SpinnerProps, SpinnerSize, } from "./types.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/spinner/index.ts"],"sourcesContent":["export { Spinner } from \"./Spinner.js\";\nexport type { SpinnerAlign, SpinnerOwnProps, SpinnerProps, SpinnerSize } from \"./types.js\";\n"],"mappings":"AAAA,SAAS,eAAe;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/spinner/index.ts"],"sourcesContent":["export { Spinner } from \"./Spinner.js\";\nexport type {\n SpinnerAlign,\n SpinnerLabels,\n SpinnerOwnProps,\n SpinnerProps,\n SpinnerSize,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,eAAe;","names":[]}
@@ -2,11 +2,15 @@ import type { ElementType, ReactNode } from "react";
2
2
  import type { RenderableProps } from "@gunkin/uiify/core/render";
3
3
  export type SpinnerAlign = "center" | "fixed" | "absolute";
4
4
  export type SpinnerSize = "sm" | "md" | "lg";
5
+ export interface SpinnerLabels {
6
+ readonly loading: string;
7
+ }
5
8
  export interface SpinnerOwnProps {
6
9
  readonly align?: SpinnerAlign;
7
10
  readonly children?: ReactNode;
8
11
  readonly delay?: number;
9
12
  readonly label?: string;
13
+ readonly labels?: Partial<SpinnerLabels>;
10
14
  readonly showLabel?: boolean;
11
15
  readonly size?: SpinnerSize;
12
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CACzE,GAAG,EACH,eAAe,EACf;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACpB,WAAW,CACZ,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,IAAI,eAAe,CACzE,GAAG,EACH,eAAe,EACf;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACpB,WAAW,CACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TagsInput.d.ts","sourceRoot":"","sources":["../../../src/components/tags-input/TagsInput.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAiB,YAAY,EAAkB,MAAM,OAAO,CAAC;AAOtF,OAAO,KAAK,EAGV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAKpB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CA+F5E;yBA/Fe,aAAa;;;AAkG7B,wBAAgB,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,EAC9D,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CA4ErB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CA+B/E;yBA/Be,aAAa;;;AAkC7B,wBAAgB,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,IAAI,EACzD,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAC5B,YAAY,GAAG,IAAI,CA4CrB;yBA9Ce,YAAY;;;AAiD5B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,YAAY,GAAG,IAAI,CAgBzF;AAED,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC"}
1
+ {"version":3,"file":"TagsInput.d.ts","sourceRoot":"","sources":["../../../src/components/tags-input/TagsInput.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAiB,YAAY,EAAkB,MAAM,OAAO,CAAC;AAQtF,OAAO,KAAK,EAGV,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAKpB,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI,CA+F5E;yBA/Fe,aAAa;;;AAkG7B,wBAAgB,cAAc,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,EAC9D,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAC9B,YAAY,GAAG,IAAI,CA6ErB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CA+B/E;yBA/Be,aAAa;;;AAkC7B,wBAAgB,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,IAAI,EACzD,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAC5B,YAAY,GAAG,IAAI,CA4CrB;yBA9Ce,YAAY;;;AAiD5B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,YAAY,GAAG,IAAI,CAgBzF;AAED,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC"}
@@ -12,6 +12,7 @@ import {
12
12
  import { useControllableState, useId, useIsomorphicLayoutEffect } from "@gunkin/uiify/hooks";
13
13
  import { createPartContext } from "@gunkin/uiify/core";
14
14
  import { composeEventHandlers } from "@gunkin/uiify/core/compose-event-handlers";
15
+ import { isComposingKeyEvent } from "@gunkin/uiify/core/ime";
15
16
  import { RovingFocusItem, RovingFocusRoot } from "@gunkin/uiify/core/roving-focus";
16
17
  import { useRenderElement } from "@gunkin/uiify/core/render";
17
18
  import { createTagsInputStore, splitTags } from "./tags-input-store.js";
@@ -127,6 +128,7 @@ function TagsInputInput(props) {
127
128
  setInputValue(event.currentTarget.value);
128
129
  };
129
130
  const handleKeyDown = (event) => {
131
+ if (isComposingKeyEvent(event)) return;
130
132
  if (event.key === "Enter" || delimiters.includes(event.key)) {
131
133
  event.preventDefault();
132
134
  commitInput();