@backstage/ui 0.18.0 → 0.19.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 (263) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/analytics/getNodeText.esm.js.map +1 -1
  3. package/dist/analytics/useAnalytics.esm.js.map +1 -1
  4. package/dist/components/Accordion/Accordion.esm.js.map +1 -1
  5. package/dist/components/Accordion/Accordion.module.css.esm.js +2 -2
  6. package/dist/components/Accordion/Accordion.module.css.esm.js.map +1 -1
  7. package/dist/components/Accordion/definition.esm.js.map +1 -1
  8. package/dist/components/Alert/Alert.esm.js.map +1 -1
  9. package/dist/components/Alert/Alert.module.css.esm.js +2 -2
  10. package/dist/components/Alert/Alert.module.css.esm.js.map +1 -1
  11. package/dist/components/Alert/definition.esm.js.map +1 -1
  12. package/dist/components/Avatar/Avatar.esm.js.map +1 -1
  13. package/dist/components/Avatar/Avatar.module.css.esm.js +2 -2
  14. package/dist/components/Avatar/Avatar.module.css.esm.js.map +1 -1
  15. package/dist/components/Avatar/definition.esm.js.map +1 -1
  16. package/dist/components/Badge/Badge.esm.js.map +1 -1
  17. package/dist/components/Badge/Badge.module.css.esm.js +2 -2
  18. package/dist/components/Badge/Badge.module.css.esm.js.map +1 -1
  19. package/dist/components/Badge/definition.esm.js.map +1 -1
  20. package/dist/components/Box/Box.esm.js.map +1 -1
  21. package/dist/components/Box/Box.module.css.esm.js +2 -2
  22. package/dist/components/Box/Box.module.css.esm.js.map +1 -1
  23. package/dist/components/Box/definition.esm.js.map +1 -1
  24. package/dist/components/Button/Button.esm.js.map +1 -1
  25. package/dist/components/Button/Button.module.css.esm.js +2 -2
  26. package/dist/components/Button/Button.module.css.esm.js.map +1 -1
  27. package/dist/components/Button/definition.esm.js.map +1 -1
  28. package/dist/components/ButtonIcon/ButtonIcon.esm.js.map +1 -1
  29. package/dist/components/ButtonIcon/ButtonIcon.module.css.esm.js +2 -2
  30. package/dist/components/ButtonIcon/ButtonIcon.module.css.esm.js.map +1 -1
  31. package/dist/components/ButtonIcon/definition.esm.js.map +1 -1
  32. package/dist/components/ButtonLink/ButtonLink.esm.js.map +1 -1
  33. package/dist/components/ButtonLink/ButtonLink.module.css.esm.js +2 -2
  34. package/dist/components/ButtonLink/ButtonLink.module.css.esm.js.map +1 -1
  35. package/dist/components/ButtonLink/definition.esm.js.map +1 -1
  36. package/dist/components/Card/Card.esm.js.map +1 -1
  37. package/dist/components/Card/Card.module.css.esm.js +2 -2
  38. package/dist/components/Card/Card.module.css.esm.js.map +1 -1
  39. package/dist/components/Card/definition.esm.js.map +1 -1
  40. package/dist/components/Checkbox/Checkbox.esm.js.map +1 -1
  41. package/dist/components/Checkbox/Checkbox.module.css.esm.js +2 -2
  42. package/dist/components/Checkbox/Checkbox.module.css.esm.js.map +1 -1
  43. package/dist/components/Checkbox/definition.esm.js.map +1 -1
  44. package/dist/components/CheckboxGroup/CheckboxGroup.esm.js.map +1 -1
  45. package/dist/components/CheckboxGroup/CheckboxGroup.module.css.esm.js +2 -2
  46. package/dist/components/CheckboxGroup/CheckboxGroup.module.css.esm.js.map +1 -1
  47. package/dist/components/CheckboxGroup/definition.esm.js.map +1 -1
  48. package/dist/components/Combobox/Combobox.esm.js +72 -10
  49. package/dist/components/Combobox/Combobox.esm.js.map +1 -1
  50. package/dist/components/Combobox/Combobox.module.css.esm.js +2 -2
  51. package/dist/components/Combobox/Combobox.module.css.esm.js.map +1 -1
  52. package/dist/components/Combobox/ComboboxInput.esm.js.map +1 -1
  53. package/dist/components/Combobox/ComboboxItem.esm.js.map +1 -1
  54. package/dist/components/Combobox/ComboboxListBox.esm.js +11 -34
  55. package/dist/components/Combobox/ComboboxListBox.esm.js.map +1 -1
  56. package/dist/components/Combobox/definition.esm.js +1 -1
  57. package/dist/components/Combobox/definition.esm.js.map +1 -1
  58. package/dist/components/Combobox/useAsyncComboboxState.esm.js.map +1 -1
  59. package/dist/components/Container/Container.esm.js.map +1 -1
  60. package/dist/components/Container/Container.module.css.esm.js +2 -2
  61. package/dist/components/Container/Container.module.css.esm.js.map +1 -1
  62. package/dist/components/Container/definition.esm.js.map +1 -1
  63. package/dist/components/DatePicker/DatePicker.esm.js.map +1 -1
  64. package/dist/components/DatePicker/DatePicker.module.css.esm.js +2 -2
  65. package/dist/components/DatePicker/DatePicker.module.css.esm.js.map +1 -1
  66. package/dist/components/DatePicker/DatePickerCalendar.esm.js.map +1 -1
  67. package/dist/components/DatePicker/DatePickerGroup.esm.js.map +1 -1
  68. package/dist/components/DatePicker/definition.esm.js.map +1 -1
  69. package/dist/components/DateRangePicker/DateRangePicker.esm.js.map +1 -1
  70. package/dist/components/DateRangePicker/DateRangePicker.module.css.esm.js +2 -2
  71. package/dist/components/DateRangePicker/DateRangePicker.module.css.esm.js.map +1 -1
  72. package/dist/components/DateRangePicker/DateRangePickerCalendar.esm.js.map +1 -1
  73. package/dist/components/DateRangePicker/DateRangePickerGroup.esm.js.map +1 -1
  74. package/dist/components/DateRangePicker/definition.esm.js.map +1 -1
  75. package/dist/components/Dialog/Dialog.esm.js.map +1 -1
  76. package/dist/components/Dialog/Dialog.module.css.esm.js +2 -2
  77. package/dist/components/Dialog/Dialog.module.css.esm.js.map +1 -1
  78. package/dist/components/Dialog/definition.esm.js.map +1 -1
  79. package/dist/components/FieldError/FieldError.esm.js.map +1 -1
  80. package/dist/components/FieldError/FieldError.module.css.esm.js +2 -2
  81. package/dist/components/FieldError/FieldError.module.css.esm.js.map +1 -1
  82. package/dist/components/FieldError/definition.esm.js.map +1 -1
  83. package/dist/components/FieldLabel/FieldLabel.esm.js.map +1 -1
  84. package/dist/components/FieldLabel/FieldLabel.module.css.esm.js +2 -2
  85. package/dist/components/FieldLabel/FieldLabel.module.css.esm.js.map +1 -1
  86. package/dist/components/FieldLabel/definition.esm.js.map +1 -1
  87. package/dist/components/Flex/Flex.esm.js.map +1 -1
  88. package/dist/components/Flex/Flex.module.css.esm.js +2 -2
  89. package/dist/components/Flex/Flex.module.css.esm.js.map +1 -1
  90. package/dist/components/Flex/definition.esm.js.map +1 -1
  91. package/dist/components/FullPage/FullPage.esm.js.map +1 -1
  92. package/dist/components/FullPage/FullPage.module.css.esm.js +2 -2
  93. package/dist/components/FullPage/FullPage.module.css.esm.js.map +1 -1
  94. package/dist/components/FullPage/definition.esm.js.map +1 -1
  95. package/dist/components/Grid/Grid.esm.js.map +1 -1
  96. package/dist/components/Grid/Grid.module.css.esm.js +2 -2
  97. package/dist/components/Grid/Grid.module.css.esm.js.map +1 -1
  98. package/dist/components/Grid/definition.esm.js.map +1 -1
  99. package/dist/components/Header/Header.esm.js.map +1 -1
  100. package/dist/components/Header/Header.module.css.esm.js +2 -2
  101. package/dist/components/Header/Header.module.css.esm.js.map +1 -1
  102. package/dist/components/Header/HeaderMetadataStatus.esm.js.map +1 -1
  103. package/dist/components/Header/HeaderMetadataStatus.module.css.esm.js +2 -2
  104. package/dist/components/Header/HeaderMetadataStatus.module.css.esm.js.map +1 -1
  105. package/dist/components/Header/HeaderMetadataUsers.esm.js.map +1 -1
  106. package/dist/components/Header/HeaderMetadataUsers.module.css.esm.js +2 -2
  107. package/dist/components/Header/HeaderMetadataUsers.module.css.esm.js.map +1 -1
  108. package/dist/components/Header/HeaderNav.esm.js.map +1 -1
  109. package/dist/components/Header/HeaderNav.module.css.esm.js +2 -2
  110. package/dist/components/Header/HeaderNav.module.css.esm.js.map +1 -1
  111. package/dist/components/Header/HeaderNavDefinition.esm.js.map +1 -1
  112. package/dist/components/Header/HeaderNavIndicators.esm.js.map +1 -1
  113. package/dist/components/Header/definition.esm.js.map +1 -1
  114. package/dist/components/Link/Link.esm.js.map +1 -1
  115. package/dist/components/Link/Link.module.css.esm.js +2 -2
  116. package/dist/components/Link/Link.module.css.esm.js.map +1 -1
  117. package/dist/components/Link/definition.esm.js.map +1 -1
  118. package/dist/components/List/List.esm.js.map +1 -1
  119. package/dist/components/List/List.module.css.esm.js +2 -2
  120. package/dist/components/List/List.module.css.esm.js.map +1 -1
  121. package/dist/components/List/definition.esm.js.map +1 -1
  122. package/dist/components/Menu/Menu.esm.js.map +1 -1
  123. package/dist/components/Menu/Menu.module.css.esm.js +2 -2
  124. package/dist/components/Menu/Menu.module.css.esm.js.map +1 -1
  125. package/dist/components/Menu/definition.esm.js.map +1 -1
  126. package/dist/components/NumberField/NumberField.esm.js.map +1 -1
  127. package/dist/components/NumberField/NumberField.module.css.esm.js +2 -2
  128. package/dist/components/NumberField/NumberField.module.css.esm.js.map +1 -1
  129. package/dist/components/NumberField/definition.esm.js.map +1 -1
  130. package/dist/components/PasswordField/PasswordField.esm.js.map +1 -1
  131. package/dist/components/PasswordField/PasswordField.module.css.esm.js +2 -2
  132. package/dist/components/PasswordField/PasswordField.module.css.esm.js.map +1 -1
  133. package/dist/components/PasswordField/definition.esm.js.map +1 -1
  134. package/dist/components/PluginHeader/PluginHeader.esm.js.map +1 -1
  135. package/dist/components/PluginHeader/PluginHeader.module.css.esm.js +2 -2
  136. package/dist/components/PluginHeader/PluginHeader.module.css.esm.js.map +1 -1
  137. package/dist/components/PluginHeader/PluginHeaderBreadcrumbs.esm.js.map +1 -1
  138. package/dist/components/PluginHeader/definition.esm.js.map +1 -1
  139. package/dist/components/PluginHeader/useIsTruncated.esm.js.map +1 -1
  140. package/dist/components/Popover/Popover.esm.js.map +1 -1
  141. package/dist/components/Popover/Popover.module.css.esm.js +2 -2
  142. package/dist/components/Popover/Popover.module.css.esm.js.map +1 -1
  143. package/dist/components/Popover/definition.esm.js.map +1 -1
  144. package/dist/components/RadioGroup/RadioGroup.esm.js.map +1 -1
  145. package/dist/components/RadioGroup/RadioGroup.module.css.esm.js +2 -2
  146. package/dist/components/RadioGroup/RadioGroup.module.css.esm.js.map +1 -1
  147. package/dist/components/RadioGroup/definition.esm.js.map +1 -1
  148. package/dist/components/SearchAutocomplete/SearchAutocomplete.esm.js.map +1 -1
  149. package/dist/components/SearchAutocomplete/SearchAutocomplete.module.css.esm.js +2 -2
  150. package/dist/components/SearchAutocomplete/SearchAutocomplete.module.css.esm.js.map +1 -1
  151. package/dist/components/SearchAutocomplete/definition.esm.js.map +1 -1
  152. package/dist/components/SearchField/SearchField.esm.js.map +1 -1
  153. package/dist/components/SearchField/SearchField.module.css.esm.js +2 -2
  154. package/dist/components/SearchField/SearchField.module.css.esm.js.map +1 -1
  155. package/dist/components/SearchField/definition.esm.js.map +1 -1
  156. package/dist/components/Select/Select.esm.js.map +1 -1
  157. package/dist/components/Select/Select.module.css.esm.js +2 -2
  158. package/dist/components/Select/Select.module.css.esm.js.map +1 -1
  159. package/dist/components/Select/SelectContent.esm.js.map +1 -1
  160. package/dist/components/Select/SelectItem.esm.js.map +1 -1
  161. package/dist/components/Select/SelectListBox.esm.js.map +1 -1
  162. package/dist/components/Select/SelectTrigger.esm.js.map +1 -1
  163. package/dist/components/Select/definition.esm.js.map +1 -1
  164. package/dist/components/Skeleton/Skeleton.esm.js.map +1 -1
  165. package/dist/components/Skeleton/Skeleton.module.css.esm.js +2 -2
  166. package/dist/components/Skeleton/Skeleton.module.css.esm.js.map +1 -1
  167. package/dist/components/Skeleton/definition.esm.js.map +1 -1
  168. package/dist/components/Slider/Slider.esm.js.map +1 -1
  169. package/dist/components/Slider/Slider.module.css.esm.js +2 -2
  170. package/dist/components/Slider/Slider.module.css.esm.js.map +1 -1
  171. package/dist/components/Slider/definition.esm.js.map +1 -1
  172. package/dist/components/Switch/Switch.esm.js.map +1 -1
  173. package/dist/components/Switch/Switch.module.css.esm.js +2 -2
  174. package/dist/components/Switch/Switch.module.css.esm.js.map +1 -1
  175. package/dist/components/Switch/definition.esm.js.map +1 -1
  176. package/dist/components/Table/Table.module.css.esm.js +2 -2
  177. package/dist/components/Table/Table.module.css.esm.js.map +1 -1
  178. package/dist/components/Table/components/Cell.esm.js.map +1 -1
  179. package/dist/components/Table/components/CellProfile.esm.js.map +1 -1
  180. package/dist/components/Table/components/CellText.esm.js.map +1 -1
  181. package/dist/components/Table/components/Column.esm.js.map +1 -1
  182. package/dist/components/Table/components/Row.esm.js.map +1 -1
  183. package/dist/components/Table/components/Table.esm.js.map +1 -1
  184. package/dist/components/Table/components/TableBody.esm.js.map +1 -1
  185. package/dist/components/Table/components/TableBodySkeleton.esm.js.map +1 -1
  186. package/dist/components/Table/components/TableHeader.esm.js.map +1 -1
  187. package/dist/components/Table/components/TableRoot.esm.js.map +1 -1
  188. package/dist/components/Table/definition.esm.js.map +1 -1
  189. package/dist/components/Table/hooks/getEffectivePageSize.esm.js.map +1 -1
  190. package/dist/components/Table/hooks/useCompletePagination.esm.js.map +1 -1
  191. package/dist/components/Table/hooks/useCursorPagination.esm.js.map +1 -1
  192. package/dist/components/Table/hooks/useDebouncedReload.esm.js.map +1 -1
  193. package/dist/components/Table/hooks/useDebouncedValue.esm.js.map +1 -1
  194. package/dist/components/Table/hooks/useOffsetPagination.esm.js.map +1 -1
  195. package/dist/components/Table/hooks/usePageCache.esm.js.map +1 -1
  196. package/dist/components/Table/hooks/useQueryState.esm.js.map +1 -1
  197. package/dist/components/Table/hooks/useStableCallback.esm.js.map +1 -1
  198. package/dist/components/Table/hooks/useTable.esm.js.map +1 -1
  199. package/dist/components/TablePagination/TablePagination.esm.js.map +1 -1
  200. package/dist/components/TablePagination/TablePagination.module.css.esm.js +2 -2
  201. package/dist/components/TablePagination/TablePagination.module.css.esm.js.map +1 -1
  202. package/dist/components/TablePagination/definition.esm.js.map +1 -1
  203. package/dist/components/Tabs/Tabs.esm.js.map +1 -1
  204. package/dist/components/Tabs/Tabs.module.css.esm.js +2 -2
  205. package/dist/components/Tabs/Tabs.module.css.esm.js.map +1 -1
  206. package/dist/components/Tabs/TabsIndicators.esm.js.map +1 -1
  207. package/dist/components/Tabs/definition.esm.js.map +1 -1
  208. package/dist/components/TagGroup/TagGroup.esm.js.map +1 -1
  209. package/dist/components/TagGroup/TagGroup.module.css.esm.js +2 -2
  210. package/dist/components/TagGroup/TagGroup.module.css.esm.js.map +1 -1
  211. package/dist/components/TagGroup/definition.esm.js.map +1 -1
  212. package/dist/components/Text/Text.esm.js.map +1 -1
  213. package/dist/components/Text/Text.module.css.esm.js +2 -2
  214. package/dist/components/Text/Text.module.css.esm.js.map +1 -1
  215. package/dist/components/Text/definition.esm.js.map +1 -1
  216. package/dist/components/TextAreaField/TextAreaField.esm.js.map +1 -1
  217. package/dist/components/TextAreaField/TextAreaField.module.css.esm.js +2 -2
  218. package/dist/components/TextAreaField/TextAreaField.module.css.esm.js.map +1 -1
  219. package/dist/components/TextAreaField/definition.esm.js.map +1 -1
  220. package/dist/components/TextField/TextField.esm.js.map +1 -1
  221. package/dist/components/TextField/TextField.module.css.esm.js +2 -2
  222. package/dist/components/TextField/TextField.module.css.esm.js.map +1 -1
  223. package/dist/components/TextField/definition.esm.js.map +1 -1
  224. package/dist/components/ToggleButton/ToggleButton.esm.js.map +1 -1
  225. package/dist/components/ToggleButton/ToggleButton.module.css.esm.js +2 -2
  226. package/dist/components/ToggleButton/ToggleButton.module.css.esm.js.map +1 -1
  227. package/dist/components/ToggleButton/definition.esm.js.map +1 -1
  228. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.esm.js.map +1 -1
  229. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.module.css.esm.js +2 -2
  230. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.module.css.esm.js.map +1 -1
  231. package/dist/components/ToggleButtonGroup/definition.esm.js.map +1 -1
  232. package/dist/components/Tooltip/Tooltip.esm.js.map +1 -1
  233. package/dist/components/Tooltip/Tooltip.module.css.esm.js +2 -2
  234. package/dist/components/Tooltip/Tooltip.module.css.esm.js.map +1 -1
  235. package/dist/components/Tooltip/definition.esm.js.map +1 -1
  236. package/dist/components/VisuallyHidden/VisuallyHidden.esm.js.map +1 -1
  237. package/dist/components/VisuallyHidden/VisuallyHidden.module.css.esm.js +2 -2
  238. package/dist/components/VisuallyHidden/VisuallyHidden.module.css.esm.js.map +1 -1
  239. package/dist/components/VisuallyHidden/definition.esm.js.map +1 -1
  240. package/dist/css/styles.css +39 -1
  241. package/dist/hooks/useBg.esm.js.map +1 -1
  242. package/dist/hooks/useBreakpoint.esm.js.map +1 -1
  243. package/dist/hooks/useCollectionAdapter.esm.js.map +1 -1
  244. package/dist/hooks/useDefinition/defineComponent.esm.js.map +1 -1
  245. package/dist/hooks/useDefinition/helpers.esm.js.map +1 -1
  246. package/dist/hooks/useDefinition/useDefinition.esm.js.map +1 -1
  247. package/dist/hooks/useDefinition/useDefinitionNavigation.esm.js.map +1 -1
  248. package/dist/hooks/useDelayedVisibility.esm.js.map +1 -1
  249. package/dist/hooks/useIsomorphicLayoutEffect.esm.js.map +1 -1
  250. package/dist/hooks/useResolvedHref.esm.js.map +1 -1
  251. package/dist/hooks/useTrackedSelectionKeys.esm.js.map +1 -1
  252. package/dist/index.d.ts +7 -2
  253. package/dist/navigation/BUIRoutingProvider.esm.js.map +1 -1
  254. package/dist/navigation/useNavigation.esm.js.map +1 -1
  255. package/dist/navigation/useRouting.esm.js.map +1 -1
  256. package/dist/node_modules_dist/style-inject/dist/style-inject.es.esm.js.map +1 -1
  257. package/dist/provider/BUIContext.esm.js.map +1 -1
  258. package/dist/provider/BUIProvider.esm.js.map +1 -1
  259. package/dist/utils/linkUtils.esm.js.map +1 -1
  260. package/dist/utils/selectableCollection.esm.js +13 -1
  261. package/dist/utils/selectableCollection.esm.js.map +1 -1
  262. package/dist/utils/utilityClassMap.esm.js.map +1 -1
  263. package/package.json +6 -6
@@ -1,7 +1,7 @@
1
1
  import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
2
 
3
- var css_248z = "/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, utilities;\n\n@layer components {\n .Combobox_bui-Combobox__984a47d42c,\n .Combobox_bui-ComboboxPopover__984a47d42c {\n &[data-size='small'] {\n --combobox-item-height: 2rem;\n }\n\n &[data-size='medium'] {\n --combobox-item-height: 2.5rem;\n }\n }\n\n .Combobox_bui-Combobox__984a47d42c {\n display: flex;\n flex-direction: column;\n width: 100%;\n flex: 1;\n }\n\n .Combobox_bui-ComboboxPopover__984a47d42c {\n min-width: var(--trigger-width);\n\n .bui-PopoverContent {\n padding: 0;\n }\n }\n\n .Combobox_bui-ComboboxInput__984a47d42c {\n box-sizing: border-box;\n border-radius: var(--bui-radius-3);\n border: none;\n outline: none;\n background-color: var(--bui-bg-neutral-1);\n transition: box-shadow 0.2s ease-in-out;\n\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-3);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-4);\n }\n\n .Combobox_bui-Combobox__984a47d42c[data-focus-within] & {\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n\n .Combobox_bui-Combobox__984a47d42c[data-invalid] & {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n display: flex;\n align-items: center;\n gap: var(--bui-space-2);\n width: 100%;\n height: var(--combobox-item-height);\n\n .Combobox_bui-Combobox__984a47d42c[data-size='small'] & {\n padding-inline: var(--bui-space-3) 0;\n }\n\n .Combobox_bui-Combobox__984a47d42c[data-size='medium'] & {\n padding-inline: var(--bui-space-4) 0;\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n }\n }\n\n .Combobox_bui-ComboboxInputIcon__984a47d42c {\n display: grid;\n place-content: center;\n flex-shrink: 0;\n color: var(--bui-fg-secondary);\n pointer-events: none;\n\n .Combobox_bui-Combobox__984a47d42c[data-size='small'] & svg {\n width: 1rem;\n height: 1rem;\n }\n\n .Combobox_bui-Combobox__984a47d42c[data-size='medium'] & svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n }\n\n .Combobox_bui-ComboboxInputField__984a47d42c {\n flex: 1;\n min-width: 0;\n width: 100%;\n border: none;\n outline: none;\n background-color: transparent;\n padding: 0;\n color: var(--bui-fg-primary);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: var(--combobox-item-height);\n height: 100%;\n text-overflow: ellipsis;\n\n &::placeholder {\n color: var(--bui-fg-secondary);\n }\n\n &[disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n }\n\n .Combobox_bui-ComboboxInputChevron__984a47d42c {\n flex-shrink: 0;\n flex-grow: 0;\n display: grid;\n place-content: center;\n width: var(--combobox-item-height);\n height: var(--combobox-item-height);\n background-color: transparent;\n border: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n color: var(--bui-fg-secondary);\n outline: none;\n transition: color 0.2s ease-in-out;\n\n &:hover {\n color: var(--bui-fg-primary);\n }\n\n & svg {\n .Combobox_bui-Combobox__984a47d42c[data-size='small'] & {\n width: 1rem;\n height: 1rem;\n }\n\n .Combobox_bui-Combobox__984a47d42c[data-size='medium'] & {\n width: 1.25rem;\n height: 1.25rem;\n }\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n }\n\n .Combobox_bui-ComboboxList__984a47d42c {\n padding-block: var(--bui-space-1);\n padding-inline: var(--bui-space-1);\n transition: opacity 0.2s ease-in-out;\n\n &[data-stale] {\n opacity: 0.6;\n }\n\n &[data-focus-visible] {\n outline: none;\n }\n }\n\n .Combobox_bui-ComboboxItem__984a47d42c {\n box-sizing: border-box;\n position: relative;\n display: block;\n min-height: var(--combobox-item-height);\n padding-block: var(--bui-space-1);\n padding-left: var(--bui-space-3);\n padding-right: var(--bui-space-4);\n color: var(--bui-fg-primary);\n cursor: pointer;\n user-select: none;\n font-size: var(--bui-font-size-3);\n line-height: 1.15;\n outline: none;\n border-radius: var(--bui-radius-2);\n\n &:has(> .Combobox_bui-ComboboxItemIndicator__984a47d42c) {\n display: grid;\n grid-template-areas: 'icon text';\n grid-template-columns: 1rem 1fr;\n align-items: center;\n gap: var(--bui-space-2);\n }\n\n &[data-focused] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n\n &[data-selected] .Combobox_bui-ComboboxItemIndicator__984a47d42c {\n opacity: 1;\n }\n }\n\n .Combobox_bui-ComboboxItemIndicator__984a47d42c {\n grid-area: icon;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n }\n\n .Combobox_bui-ComboboxItemLabel__984a47d42c {\n flex: 1;\n grid-area: text;\n }\n\n .Combobox_bui-ComboboxItemContent__984a47d42c {\n display: flex;\n align-items: center;\n gap: var(--bui-space-2);\n grid-area: text;\n min-width: 0;\n }\n\n .Combobox_bui-ComboboxItemText__984a47d42c,\n .Combobox_bui-ComboboxItemProfile__984a47d42c {\n min-width: 0;\n }\n\n .Combobox_bui-ComboboxItemTextLeadingIcon__984a47d42c {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n\n & > svg {\n width: 1em;\n height: 1em;\n }\n }\n\n .Combobox_bui-ComboboxItemAvatar__984a47d42c {\n flex-shrink: 0;\n }\n\n .Combobox_bui-ComboboxItemTextContent__984a47d42c {\n display: flex;\n flex-direction: column;\n min-width: 0;\n }\n\n .Combobox_bui-ComboboxItemTitle__984a47d42c,\n .Combobox_bui-ComboboxItemDescription__984a47d42c {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .Combobox_bui-ComboboxItemDescription__984a47d42c {\n font-size: var(--bui-font-size-2);\n color: var(--bui-fg-secondary);\n }\n\n .Combobox_bui-ComboboxSection__984a47d42c {\n &:first-child .Combobox_bui-ComboboxSectionHeader__984a47d42c {\n padding-top: 0;\n }\n }\n\n .Combobox_bui-ComboboxSectionHeader__984a47d42c {\n height: 2rem;\n display: flex;\n align-items: center;\n padding-top: var(--bui-space-3);\n padding-left: var(--bui-space-3);\n color: var(--bui-fg-primary);\n font-size: var(--bui-font-size-1);\n line-height: 1.15;\n font-weight: bold;\n letter-spacing: 0.05rem;\n text-transform: uppercase;\n }\n\n .Combobox_bui-ComboboxNoResults__984a47d42c {\n padding-inline: var(--bui-space-3);\n padding-block: var(--bui-space-2);\n color: var(--bui-fg-secondary);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n }\n\n .Combobox_bui-ComboboxLoading__984a47d42c {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .Combobox_bui-ComboboxLoadingRow__984a47d42c {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n min-height: var(--combobox-item-height);\n padding-block: var(--bui-space-1);\n padding-left: calc(var(--bui-space-3) + 1rem + var(--bui-space-2));\n padding-right: var(--bui-space-4);\n }\n}\n";
4
- var styles = {"bui-Combobox":"Combobox_bui-Combobox__984a47d42c","bui-ComboboxPopover":"Combobox_bui-ComboboxPopover__984a47d42c","bui-ComboboxInput":"Combobox_bui-ComboboxInput__984a47d42c","bui-ComboboxInputIcon":"Combobox_bui-ComboboxInputIcon__984a47d42c","bui-ComboboxInputField":"Combobox_bui-ComboboxInputField__984a47d42c","bui-ComboboxInputChevron":"Combobox_bui-ComboboxInputChevron__984a47d42c","bui-ComboboxList":"Combobox_bui-ComboboxList__984a47d42c","bui-ComboboxItem":"Combobox_bui-ComboboxItem__984a47d42c","bui-ComboboxItemIndicator":"Combobox_bui-ComboboxItemIndicator__984a47d42c","bui-ComboboxItemLabel":"Combobox_bui-ComboboxItemLabel__984a47d42c","bui-ComboboxItemContent":"Combobox_bui-ComboboxItemContent__984a47d42c","bui-ComboboxItemText":"Combobox_bui-ComboboxItemText__984a47d42c","bui-ComboboxItemProfile":"Combobox_bui-ComboboxItemProfile__984a47d42c","bui-ComboboxItemTextLeadingIcon":"Combobox_bui-ComboboxItemTextLeadingIcon__984a47d42c","bui-ComboboxItemAvatar":"Combobox_bui-ComboboxItemAvatar__984a47d42c","bui-ComboboxItemTextContent":"Combobox_bui-ComboboxItemTextContent__984a47d42c","bui-ComboboxItemTitle":"Combobox_bui-ComboboxItemTitle__984a47d42c","bui-ComboboxItemDescription":"Combobox_bui-ComboboxItemDescription__984a47d42c","bui-ComboboxSection":"Combobox_bui-ComboboxSection__984a47d42c","bui-ComboboxSectionHeader":"Combobox_bui-ComboboxSectionHeader__984a47d42c","bui-ComboboxNoResults":"Combobox_bui-ComboboxNoResults__984a47d42c","bui-ComboboxLoading":"Combobox_bui-ComboboxLoading__984a47d42c","bui-ComboboxLoadingRow":"Combobox_bui-ComboboxLoadingRow__984a47d42c"};
3
+ var css_248z = "/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, theme, utilities;\n\n@layer components {\n .Combobox_bui-Combobox__b37ad52723,\n .Combobox_bui-ComboboxPopover__b37ad52723 {\n &[data-size='small'] {\n --combobox-item-height: 2rem;\n }\n\n &[data-size='medium'] {\n --combobox-item-height: 2.5rem;\n }\n }\n\n .Combobox_bui-Combobox__b37ad52723 {\n display: flex;\n flex-direction: column;\n width: 100%;\n flex: 1;\n }\n\n .Combobox_bui-ComboboxPopover__b37ad52723 {\n min-width: var(--trigger-width);\n\n .bui-PopoverContent {\n padding: 0;\n }\n }\n\n .Combobox_bui-ComboboxInput__b37ad52723 {\n box-sizing: border-box;\n border-radius: var(--bui-radius-3);\n border: none;\n outline: none;\n background-color: var(--bui-bg-neutral-1);\n transition: box-shadow 0.2s ease-in-out;\n\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-3);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-4);\n }\n\n .Combobox_bui-Combobox__b37ad52723[data-focus-within] & {\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n\n .Combobox_bui-Combobox__b37ad52723[data-invalid] & {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n display: flex;\n align-items: center;\n gap: var(--bui-space-2);\n width: 100%;\n height: var(--combobox-item-height);\n\n .Combobox_bui-Combobox__b37ad52723[data-size='small'] & {\n padding-inline: var(--bui-space-3) 0;\n }\n\n .Combobox_bui-Combobox__b37ad52723[data-size='medium'] & {\n padding-inline: var(--bui-space-4) 0;\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n }\n }\n\n .Combobox_bui-ComboboxInputIcon__b37ad52723 {\n display: grid;\n place-content: center;\n flex-shrink: 0;\n color: var(--bui-fg-secondary);\n pointer-events: none;\n\n .Combobox_bui-Combobox__b37ad52723[data-size='small'] & svg {\n width: 1rem;\n height: 1rem;\n }\n\n .Combobox_bui-Combobox__b37ad52723[data-size='medium'] & svg {\n width: 1.25rem;\n height: 1.25rem;\n }\n }\n\n .Combobox_bui-ComboboxInputField__b37ad52723 {\n flex: 1;\n min-width: 0;\n width: 100%;\n border: none;\n outline: none;\n background-color: transparent;\n padding: 0;\n color: var(--bui-fg-primary);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: var(--combobox-item-height);\n height: 100%;\n text-overflow: ellipsis;\n\n &::placeholder {\n color: var(--bui-fg-secondary);\n }\n\n &[disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n }\n\n .Combobox_bui-ComboboxInputChevron__b37ad52723 {\n flex-shrink: 0;\n flex-grow: 0;\n display: grid;\n place-content: center;\n width: var(--combobox-item-height);\n height: var(--combobox-item-height);\n background-color: transparent;\n border: none;\n padding: 0;\n margin: 0;\n cursor: pointer;\n color: var(--bui-fg-secondary);\n outline: none;\n transition: color 0.2s ease-in-out;\n\n &:hover {\n color: var(--bui-fg-primary);\n }\n\n & svg {\n .Combobox_bui-Combobox__b37ad52723[data-size='small'] & {\n width: 1rem;\n height: 1rem;\n }\n\n .Combobox_bui-Combobox__b37ad52723[data-size='medium'] & {\n width: 1.25rem;\n height: 1.25rem;\n }\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n }\n\n .Combobox_bui-ComboboxList__b37ad52723 {\n padding-block: var(--bui-space-1);\n padding-inline: var(--bui-space-1);\n transition: opacity 0.2s ease-in-out;\n\n &[data-stale] {\n opacity: 0.6;\n }\n\n &[data-focus-visible] {\n outline: none;\n }\n }\n\n .Combobox_bui-ComboboxItem__b37ad52723 {\n box-sizing: border-box;\n position: relative;\n display: block;\n min-height: var(--combobox-item-height);\n padding-block: var(--bui-space-1);\n padding-left: var(--bui-space-3);\n padding-right: var(--bui-space-4);\n color: var(--bui-fg-primary);\n cursor: pointer;\n user-select: none;\n font-size: var(--bui-font-size-3);\n line-height: 1.15;\n outline: none;\n border-radius: var(--bui-radius-2);\n\n &:has(> .Combobox_bui-ComboboxItemIndicator__b37ad52723) {\n display: grid;\n grid-template-areas: 'icon text';\n grid-template-columns: 1rem 1fr;\n align-items: center;\n gap: var(--bui-space-2);\n }\n\n &[data-focused] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n color: var(--bui-fg-disabled);\n }\n\n &[data-selected] .Combobox_bui-ComboboxItemIndicator__b37ad52723 {\n opacity: 1;\n }\n }\n\n .Combobox_bui-ComboboxItemIndicator__b37ad52723 {\n grid-area: icon;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n }\n\n .Combobox_bui-ComboboxItemLabel__b37ad52723 {\n flex: 1;\n grid-area: text;\n }\n\n .Combobox_bui-ComboboxItemContent__b37ad52723 {\n display: flex;\n align-items: center;\n gap: var(--bui-space-2);\n grid-area: text;\n min-width: 0;\n }\n\n .Combobox_bui-ComboboxItemText__b37ad52723,\n .Combobox_bui-ComboboxItemProfile__b37ad52723 {\n min-width: 0;\n }\n\n .Combobox_bui-ComboboxItemTextLeadingIcon__b37ad52723 {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n\n & > svg {\n width: 1em;\n height: 1em;\n }\n }\n\n .Combobox_bui-ComboboxItemAvatar__b37ad52723 {\n flex-shrink: 0;\n }\n\n .Combobox_bui-ComboboxItemTextContent__b37ad52723 {\n display: flex;\n flex-direction: column;\n min-width: 0;\n }\n\n .Combobox_bui-ComboboxItemTitle__b37ad52723,\n .Combobox_bui-ComboboxItemDescription__b37ad52723 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .Combobox_bui-ComboboxItemDescription__b37ad52723 {\n font-size: var(--bui-font-size-2);\n color: var(--bui-fg-secondary);\n }\n\n .Combobox_bui-ComboboxSection__b37ad52723 {\n &:first-child .Combobox_bui-ComboboxSectionHeader__b37ad52723 {\n padding-top: 0;\n }\n }\n\n .Combobox_bui-ComboboxSectionHeader__b37ad52723 {\n height: 2rem;\n display: flex;\n align-items: center;\n padding-top: var(--bui-space-3);\n padding-left: var(--bui-space-3);\n color: var(--bui-fg-primary);\n font-size: var(--bui-font-size-1);\n line-height: 1.15;\n font-weight: bold;\n letter-spacing: 0.05rem;\n text-transform: uppercase;\n }\n\n .Combobox_bui-ComboboxNoResults__b37ad52723 {\n padding-inline: var(--bui-space-3);\n padding-block: var(--bui-space-2);\n color: var(--bui-fg-secondary);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n }\n\n .Combobox_bui-ComboboxLoading__b37ad52723 {\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n .Combobox_bui-ComboboxLoadingRow__b37ad52723 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n min-height: var(--combobox-item-height);\n padding-block: var(--bui-space-1);\n padding-left: calc(var(--bui-space-3) + 1rem + var(--bui-space-2));\n padding-right: var(--bui-space-4);\n }\n}\n";
4
+ var styles = {"bui-Combobox":"Combobox_bui-Combobox__b37ad52723","bui-ComboboxPopover":"Combobox_bui-ComboboxPopover__b37ad52723","bui-ComboboxInput":"Combobox_bui-ComboboxInput__b37ad52723","bui-ComboboxInputIcon":"Combobox_bui-ComboboxInputIcon__b37ad52723","bui-ComboboxInputField":"Combobox_bui-ComboboxInputField__b37ad52723","bui-ComboboxInputChevron":"Combobox_bui-ComboboxInputChevron__b37ad52723","bui-ComboboxList":"Combobox_bui-ComboboxList__b37ad52723","bui-ComboboxItem":"Combobox_bui-ComboboxItem__b37ad52723","bui-ComboboxItemIndicator":"Combobox_bui-ComboboxItemIndicator__b37ad52723","bui-ComboboxItemLabel":"Combobox_bui-ComboboxItemLabel__b37ad52723","bui-ComboboxItemContent":"Combobox_bui-ComboboxItemContent__b37ad52723","bui-ComboboxItemText":"Combobox_bui-ComboboxItemText__b37ad52723","bui-ComboboxItemProfile":"Combobox_bui-ComboboxItemProfile__b37ad52723","bui-ComboboxItemTextLeadingIcon":"Combobox_bui-ComboboxItemTextLeadingIcon__b37ad52723","bui-ComboboxItemAvatar":"Combobox_bui-ComboboxItemAvatar__b37ad52723","bui-ComboboxItemTextContent":"Combobox_bui-ComboboxItemTextContent__b37ad52723","bui-ComboboxItemTitle":"Combobox_bui-ComboboxItemTitle__b37ad52723","bui-ComboboxItemDescription":"Combobox_bui-ComboboxItemDescription__b37ad52723","bui-ComboboxSection":"Combobox_bui-ComboboxSection__b37ad52723","bui-ComboboxSectionHeader":"Combobox_bui-ComboboxSectionHeader__b37ad52723","bui-ComboboxNoResults":"Combobox_bui-ComboboxNoResults__b37ad52723","bui-ComboboxLoading":"Combobox_bui-ComboboxLoading__b37ad52723","bui-ComboboxLoadingRow":"Combobox_bui-ComboboxLoadingRow__b37ad52723"};
5
5
  styleInject(css_248z);
6
6
 
7
7
  export { styles as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"Combobox.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxInput.esm.js","sources":["../../../src/components/Combobox/ComboboxInput.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button, Group, Input } from 'react-aria-components';\nimport { RiArrowDownSLine } from '@remixicon/react';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { ComboboxInputDefinition } from './definition';\nimport type { ComboboxInputOwnProps } from './types';\n\nexport function ComboboxInput(props: ComboboxInputOwnProps) {\n const { ownProps, dataAttributes } = useDefinition(\n ComboboxInputDefinition,\n props,\n );\n const { classes, icon, placeholder } = ownProps;\n\n return (\n <Group className={classes.root} {...dataAttributes}>\n {icon ? (\n <div className={classes.icon} aria-hidden=\"true\">\n {icon}\n </div>\n ) : null}\n <Input className={classes.input} placeholder={placeholder} />\n <Button className={classes.chevron}>\n <RiArrowDownSLine aria-hidden=\"true\" />\n </Button>\n </Group>\n );\n}\n"],"names":[],"mappings":";;;;;;AAsBO,SAAS,cAAc,KAAA,EAA8B;AAC1D,EAAA,MAAM,EAAE,QAAA,EAAU,cAAA,EAAe,GAAI,aAAA;AAAA,IACnC,uBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAM,WAAA,EAAY,GAAI,QAAA;AAEvC,EAAA,4BACG,KAAA,EAAA,EAAM,SAAA,EAAW,OAAA,CAAQ,IAAA,EAAO,GAAG,cAAA,EACjC,QAAA,EAAA;AAAA,IAAA,IAAA,mBACC,GAAA,CAAC,SAAI,SAAA,EAAW,OAAA,CAAQ,MAAM,aAAA,EAAY,MAAA,EACvC,gBACH,CAAA,GACE,IAAA;AAAA,oBACJ,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAW,OAAA,CAAQ,OAAO,WAAA,EAA0B,CAAA;AAAA,oBAC3D,GAAA,CAAC,UAAO,SAAA,EAAW,OAAA,CAAQ,SACzB,QAAA,kBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,aAAA,EAAY,MAAA,EAAO,CAAA,EACvC;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ComboboxInput.esm.js","sources":["../../../src/components/Combobox/ComboboxInput.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button, Group, Input } from 'react-aria-components';\nimport { RiArrowDownSLine } from '@remixicon/react';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { ComboboxInputDefinition } from './definition';\nimport type { ComboboxInputOwnProps } from './types';\n\nexport function ComboboxInput(props: ComboboxInputOwnProps) {\n const { ownProps, dataAttributes } = useDefinition(\n ComboboxInputDefinition,\n props,\n );\n const { classes, icon, placeholder } = ownProps;\n\n return (\n <Group className={classes.root} {...dataAttributes}>\n {icon ? (\n <div className={classes.icon} aria-hidden=\"true\">\n {icon}\n </div>\n ) : null}\n <Input className={classes.input} placeholder={placeholder} />\n <Button className={classes.chevron}>\n <RiArrowDownSLine aria-hidden=\"true\" />\n </Button>\n </Group>\n );\n}\n"],"names":[],"mappings":";;;;;;AAsBO,SAAS,cAAc,KAAA,EAA8B;AAC1D,EAAA,MAAM,EAAE,QAAA,EAAU,cAAA,EAAe,GAAI,aAAA;AAAA,IACnC,uBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAM,WAAA,EAAY,GAAI,QAAA;AAEvC,EAAA,4BACG,KAAA,EAAA,EAAM,SAAA,EAAW,OAAA,CAAQ,IAAA,EAAO,GAAG,cAAA,EACjC,QAAA,EAAA;AAAA,IAAA,IAAA,mBACC,GAAA,CAAC,SAAI,SAAA,EAAW,OAAA,CAAQ,MAAM,aAAA,EAAY,MAAA,EACvC,gBACH,CAAA,GACE,IAAA;AAAA,oBACJ,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAW,OAAA,CAAQ,OAAO,WAAA,EAA0B,CAAA;AAAA,oBAC3D,GAAA,CAAC,UAAO,SAAA,EAAW,OAAA,CAAQ,SACzB,QAAA,kBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,aAAA,EAAY,MAAA,EAAO,CAAA,EACvC;AAAA,GAAA,EACF,CAAA;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxItem.esm.js","sources":["../../../src/components/Combobox/ComboboxItem.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ListBoxItem, Text } from 'react-aria-components';\nimport { RiCheckLine } from '@remixicon/react';\nimport { Avatar } from '../Avatar';\nimport {\n useDefinition,\n type UseDefinitionResult,\n} from '../../hooks/useDefinition';\nimport {\n ComboboxItemDefinition,\n ComboboxItemProfileDefinition,\n ComboboxItemTextDefinition,\n} from './definition';\nimport type {\n ComboboxItemProfileProps,\n ComboboxItemProps,\n ComboboxItemTextProps,\n} from './types';\nimport {\n getReactAriaAnchorProps,\n type AnchorNavigation,\n} from '../../navigation/useNavigation';\n\ntype ComboboxItemViewProps = {\n definitionResult: UseDefinitionResult<\n typeof ComboboxItemDefinition,\n ComboboxItemProps\n >;\n navigation: AnchorNavigation;\n};\n\nfunction ComboboxItemView({\n definitionResult,\n navigation,\n}: ComboboxItemViewProps) {\n const { ownProps, restProps } = definitionResult;\n const { classes, children, textValue, showSelectionIndicator } = ownProps;\n const navigationProps = getReactAriaAnchorProps(navigation, restProps);\n\n return (\n <ListBoxItem\n {...restProps}\n className={classes.root}\n textValue={textValue}\n {...navigationProps}\n >\n {values => {\n const content =\n typeof children === 'function' ? children(values) : children;\n\n if (!showSelectionIndicator) {\n return content;\n }\n\n return (\n <>\n <div className={classes.indicator}>\n <RiCheckLine aria-hidden=\"true\" />\n </div>\n <div className={classes.content}>{content}</div>\n </>\n );\n }}\n </ListBoxItem>\n );\n}\n\n/**\n * A combobox item wrapper for custom content.\n *\n * @public\n */\nexport function ComboboxItem<T extends object = object>(\n props: ComboboxItemProps<T>,\n) {\n const definitionResult = useDefinition(ComboboxItemDefinition, props);\n const Navigation = definitionResult.navigation;\n\n return (\n <Navigation\n props={definitionResult.restProps}\n view={ComboboxItemView}\n viewProps={{ definitionResult }}\n />\n );\n}\n\n/**\n * A combobox item that renders a title with an optional description and\n * leading icon.\n *\n * @public\n */\nexport function ComboboxItemText<T extends object = object>(\n props: ComboboxItemTextProps<T>,\n) {\n const { ownProps, restProps } = useDefinition(\n ComboboxItemTextDefinition,\n props,\n );\n const { classes, title, description, leadingIcon, textValue } = ownProps;\n\n return (\n <ComboboxItem\n {...restProps}\n className={classes.root}\n textValue={textValue ?? title}\n showSelectionIndicator\n >\n {leadingIcon && <div className={classes.leadingIcon}>{leadingIcon}</div>}\n <div className={classes.text}>\n <Text slot=\"label\" className={classes.title}>\n {title}\n </Text>\n {description && (\n <Text slot=\"description\" className={classes.description}>\n {description}\n </Text>\n )}\n </div>\n </ComboboxItem>\n );\n}\n\n/**\n * A combobox item that renders a profile name with an optional avatar.\n *\n * @public\n */\nexport function ComboboxItemProfile<T extends object = object>(\n props: ComboboxItemProfileProps<T>,\n) {\n const { ownProps, restProps } = useDefinition(\n ComboboxItemProfileDefinition,\n props,\n );\n const { classes, name, src, textValue } = ownProps;\n\n return (\n <ComboboxItem\n {...restProps}\n className={classes.root}\n textValue={textValue ?? name}\n showSelectionIndicator\n >\n <div className={classes.avatar}>\n <Avatar\n src={src ?? ''}\n name={name}\n size=\"x-small\"\n purpose=\"decoration\"\n />\n </div>\n <Text slot=\"label\" className={classes.name}>\n {name}\n </Text>\n </ComboboxItem>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ComboboxItem.esm.js","sources":["../../../src/components/Combobox/ComboboxItem.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ListBoxItem, Text } from 'react-aria-components';\nimport { RiCheckLine } from '@remixicon/react';\nimport { Avatar } from '../Avatar';\nimport {\n useDefinition,\n type UseDefinitionResult,\n} from '../../hooks/useDefinition';\nimport {\n ComboboxItemDefinition,\n ComboboxItemProfileDefinition,\n ComboboxItemTextDefinition,\n} from './definition';\nimport type {\n ComboboxItemProfileProps,\n ComboboxItemProps,\n ComboboxItemTextProps,\n} from './types';\nimport {\n getReactAriaAnchorProps,\n type AnchorNavigation,\n} from '../../navigation/useNavigation';\n\ntype ComboboxItemViewProps = {\n definitionResult: UseDefinitionResult<\n typeof ComboboxItemDefinition,\n ComboboxItemProps\n >;\n navigation: AnchorNavigation;\n};\n\nfunction ComboboxItemView({\n definitionResult,\n navigation,\n}: ComboboxItemViewProps) {\n const { ownProps, restProps } = definitionResult;\n const { classes, children, textValue, showSelectionIndicator } = ownProps;\n const navigationProps = getReactAriaAnchorProps(navigation, restProps);\n\n return (\n <ListBoxItem\n {...restProps}\n className={classes.root}\n textValue={textValue}\n {...navigationProps}\n >\n {values => {\n const content =\n typeof children === 'function' ? children(values) : children;\n\n if (!showSelectionIndicator) {\n return content;\n }\n\n return (\n <>\n <div className={classes.indicator}>\n <RiCheckLine aria-hidden=\"true\" />\n </div>\n <div className={classes.content}>{content}</div>\n </>\n );\n }}\n </ListBoxItem>\n );\n}\n\n/**\n * A combobox item wrapper for custom content.\n *\n * @public\n */\nexport function ComboboxItem<T extends object = object>(\n props: ComboboxItemProps<T>,\n) {\n const definitionResult = useDefinition(ComboboxItemDefinition, props);\n const Navigation = definitionResult.navigation;\n\n return (\n <Navigation\n props={definitionResult.restProps}\n view={ComboboxItemView}\n viewProps={{ definitionResult }}\n />\n );\n}\n\n/**\n * A combobox item that renders a title with an optional description and\n * leading icon.\n *\n * @public\n */\nexport function ComboboxItemText<T extends object = object>(\n props: ComboboxItemTextProps<T>,\n) {\n const { ownProps, restProps } = useDefinition(\n ComboboxItemTextDefinition,\n props,\n );\n const { classes, title, description, leadingIcon, textValue } = ownProps;\n\n return (\n <ComboboxItem\n {...restProps}\n className={classes.root}\n textValue={textValue ?? title}\n showSelectionIndicator\n >\n {leadingIcon && <div className={classes.leadingIcon}>{leadingIcon}</div>}\n <div className={classes.text}>\n <Text slot=\"label\" className={classes.title}>\n {title}\n </Text>\n {description && (\n <Text slot=\"description\" className={classes.description}>\n {description}\n </Text>\n )}\n </div>\n </ComboboxItem>\n );\n}\n\n/**\n * A combobox item that renders a profile name with an optional avatar.\n *\n * @public\n */\nexport function ComboboxItemProfile<T extends object = object>(\n props: ComboboxItemProfileProps<T>,\n) {\n const { ownProps, restProps } = useDefinition(\n ComboboxItemProfileDefinition,\n props,\n );\n const { classes, name, src, textValue } = ownProps;\n\n return (\n <ComboboxItem\n {...restProps}\n className={classes.root}\n textValue={textValue ?? name}\n showSelectionIndicator\n >\n <div className={classes.avatar}>\n <Avatar\n src={src ?? ''}\n name={name}\n size=\"x-small\"\n purpose=\"decoration\"\n />\n </div>\n <Text slot=\"label\" className={classes.name}>\n {name}\n </Text>\n </ComboboxItem>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import { useContext, cloneElement } from 'react';
3
- import { ComboBoxStateContext, ListBox, SelectableCollectionContext, Collection, ListBoxLoadMoreItem, ListBoxSection, Header, Text } from 'react-aria-components';
4
- import { useFilter } from 'react-aria';
2
+ import { cloneElement } from 'react';
3
+ import { ListBox, SelectableCollectionContext, Collection, ListBoxLoadMoreItem, ListBoxSection, Header, Text } from 'react-aria-components';
5
4
  import clsx from 'clsx';
6
5
  import { useDefinition } from '../../hooks/useDefinition/useDefinition.esm.js';
7
6
  import { normalizeOptions } from '../../utils/selectableCollection.esm.js';
@@ -77,25 +76,6 @@ function renderComboboxOption(item) {
77
76
  }
78
77
  return /* @__PURE__ */ jsx(ComboboxOptionItem, { option: item }, item.id);
79
78
  }
80
- function getCollectionFilter({
81
- search,
82
- hasItems,
83
- inputValue,
84
- contains
85
- }) {
86
- const searchProps = typeof search === "object" ? search : void 0;
87
- if (searchProps?.mode === "server") {
88
- return void 0;
89
- }
90
- const customFilter = searchProps?.filter;
91
- if (customFilter) {
92
- return (_textValue, node) => customFilter(node.value, inputValue);
93
- }
94
- if (search || hasItems) {
95
- return (textValue) => contains(textValue, inputValue);
96
- }
97
- return void 0;
98
- }
99
79
  function ComboboxCollection({
100
80
  normalizedOptions,
101
81
  items,
@@ -170,22 +150,13 @@ function ComboboxListBox(props) {
170
150
  options,
171
151
  items,
172
152
  children,
153
+ hiddenKey,
173
154
  dependencies,
174
- search,
175
155
  loading,
176
156
  isStale,
177
157
  getItemTextValue
178
158
  } = ownProps;
179
159
  const normalizedOptions = options && normalizeOptions(options);
180
- const state = useContext(ComboBoxStateContext);
181
- const { contains } = useFilter({ sensitivity: "base" });
182
- const inputValue = state?.inputValue ?? "";
183
- const filter = getCollectionFilter({
184
- search,
185
- hasItems: items !== void 0,
186
- inputValue,
187
- contains
188
- });
189
160
  const isCollectionLoading = loading?.state === "loading" || loading?.state === "filtering" || loading?.state === "sorting";
190
161
  const isBusy = isCollectionLoading || loading?.state === "loadingMore";
191
162
  const showStale = useDelayedVisibility(
@@ -234,10 +205,16 @@ function ComboboxListBox(props) {
234
205
  }
235
206
  );
236
207
  const busyListBox = /* @__PURE__ */ jsx("div", { "aria-busy": isBusy || void 0, children: listBox });
237
- if (!filter) {
208
+ if (hiddenKey === void 0) {
238
209
  return busyListBox;
239
210
  }
240
- return /* @__PURE__ */ jsx(SelectableCollectionContext.Provider, { value: { filter }, children: busyListBox });
211
+ return /* @__PURE__ */ jsx(
212
+ SelectableCollectionContext.Provider,
213
+ {
214
+ value: { filter: (_textValue, node) => node.key !== hiddenKey },
215
+ children: busyListBox
216
+ }
217
+ );
241
218
  }
242
219
 
243
220
  export { ComboboxListBox };
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxListBox.esm.js","sources":["../../../src/components/Combobox/ComboboxListBox.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cloneElement, useContext } from 'react';\nimport {\n Collection,\n ComboBoxStateContext,\n Header,\n ListBox,\n ListBoxLoadMoreItem,\n ListBoxSection,\n SelectableCollectionContext,\n Text,\n} from 'react-aria-components';\nimport { useFilter } from 'react-aria';\nimport clsx from 'clsx';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { normalizeOptions } from '../../utils/selectableCollection';\nimport { ComboboxItem } from './ComboboxItem';\nimport {\n ComboboxItemTextDefinition,\n ComboboxListBoxDefinition,\n ComboboxListBoxItemDefinition,\n ComboboxSectionDefinition,\n} from './definition';\nimport type {\n CollectionItem,\n LoadingConfig,\n NormalizedOption,\n NormalizedOptionSection,\n} from '../../types/selectableCollection';\nimport type { ComboboxListBoxOwnProps } from './types';\nimport type { Node } from '@react-types/shared';\nimport { Skeleton } from '../Skeleton';\nimport { useDelayedVisibility } from '../../hooks/useDelayedVisibility';\n\nconst loadingRowWidths = ['70%', '55%', '65%'];\nconst loadingIndicatorDelayMs = 300;\n\nfunction LoadingRows({\n count,\n className,\n rowClassName,\n}: {\n count: number;\n className: string;\n rowClassName: string;\n}) {\n return (\n <div className={className} aria-hidden=\"true\">\n {loadingRowWidths.slice(0, count).map(width => (\n <div key={width} className={rowClassName}>\n <Skeleton width={width} height=\"0.75rem\" />\n </div>\n ))}\n </div>\n );\n}\n\nconst NoResults = () => {\n const { ownProps } = useDefinition(ComboboxListBoxDefinition, {});\n const { classes } = ownProps;\n\n return <div className={classes.noResults}>No results found.</div>;\n};\n\nfunction ComboboxOptionItem({ option }: { option: NormalizedOption }) {\n const { ownProps } = useDefinition(ComboboxItemTextDefinition, {\n title: option.label,\n description: option.description,\n leadingIcon: option.leadingIcon,\n });\n const { classes } = ownProps;\n const {\n ownProps: { classes: legacyOptionClasses },\n } = useDefinition(ComboboxListBoxItemDefinition, {});\n\n return (\n <ComboboxItem\n id={option.id}\n value={option}\n className={classes.root}\n textValue={option.label}\n isDisabled={option.disabled}\n showSelectionIndicator\n >\n {option.leadingIcon && (\n <div className={classes.leadingIcon}>{option.leadingIcon}</div>\n )}\n <div className={classes.text}>\n <Text\n slot=\"label\"\n className={clsx(classes.title, legacyOptionClasses.label)}\n >\n {option.label}\n </Text>\n {option.description && (\n <Text slot=\"description\" className={classes.description}>\n {option.description}\n </Text>\n )}\n </div>\n </ComboboxItem>\n );\n}\n\nfunction ComboboxSectionItems({\n section,\n}: {\n section: NormalizedOptionSection;\n}) {\n const { ownProps } = useDefinition(ComboboxSectionDefinition, {});\n const { classes } = ownProps;\n\n return (\n <ListBoxSection className={classes.root}>\n <Header className={classes.header}>{section.title}</Header>\n {section.options.map(option => (\n <ComboboxOptionItem key={option.id} option={option} />\n ))}\n </ListBoxSection>\n );\n}\n\nfunction renderComboboxOption(\n item: NormalizedOption | NormalizedOptionSection,\n) {\n if ('options' in item) {\n return <ComboboxSectionItems key={item.title} section={item} />;\n }\n\n return <ComboboxOptionItem key={item.id} option={item} />;\n}\n\nfunction getCollectionFilter<T extends CollectionItem>({\n search,\n hasItems,\n inputValue,\n contains,\n}: {\n search?: ComboboxListBoxOwnProps<T>['search'];\n hasItems: boolean;\n inputValue: string;\n contains: (textValue: string, inputValue: string) => boolean;\n}) {\n const searchProps = typeof search === 'object' ? search : undefined;\n if (searchProps?.mode === 'server') {\n return undefined;\n }\n\n const customFilter = searchProps?.filter;\n if (customFilter) {\n return (_textValue: string, node: Node<T>) =>\n customFilter(node.value as T, inputValue);\n }\n\n if (search || hasItems) {\n return (textValue: string) => contains(textValue, inputValue);\n }\n\n return undefined;\n}\n\nfunction ComboboxCollection<T extends CollectionItem>({\n normalizedOptions,\n items,\n children,\n dependencies,\n getItemTextValue,\n}: {\n normalizedOptions?: Array<NormalizedOption | NormalizedOptionSection>;\n items?: Iterable<T>;\n children?: React.ReactNode | ((item: T) => React.ReactElement);\n dependencies?: ReadonlyArray<unknown>;\n getItemTextValue?: (item: T) => string;\n}) {\n if (normalizedOptions) {\n return <>{normalizedOptions.map(renderComboboxOption)}</>;\n }\n\n if (items) {\n const renderItemWithTextValue = (item: T) => {\n let renderedItem: React.ReactElement;\n if (typeof children === 'function') {\n renderedItem = children(item);\n } else {\n renderedItem = (\n <ComboboxOptionItem option={item as unknown as NormalizedOption} />\n );\n }\n\n if (!getItemTextValue) {\n return renderedItem;\n }\n\n return cloneElement(renderedItem, {\n textValue: getItemTextValue(item),\n });\n };\n\n return (\n <Collection items={items} dependencies={dependencies}>\n {renderItemWithTextValue}\n </Collection>\n );\n }\n\n return children as React.ReactNode;\n}\n\nfunction ComboboxEmptyState({\n isLoading,\n className,\n rowClassName,\n}: {\n isLoading: boolean;\n className: string;\n rowClassName: string;\n}) {\n if (!isLoading) {\n return <NoResults />;\n }\n\n return (\n <LoadingRows count={3} className={className} rowClassName={rowClassName} />\n );\n}\n\nfunction ComboboxLoadMoreIndicator({\n loading,\n isCollectionLoading,\n isIndicatorVisible,\n className,\n rowClassName,\n}: {\n loading?: LoadingConfig;\n isCollectionLoading: boolean;\n isIndicatorVisible: boolean;\n className: string;\n rowClassName: string;\n}) {\n if (!loading?.onLoadMore || isCollectionLoading) {\n return null;\n }\n\n const onLoadMore =\n loading.state === 'loadingMore' ? undefined : loading.onLoadMore;\n\n return (\n <ListBoxLoadMoreItem\n isLoading={isIndicatorVisible}\n onLoadMore={onLoadMore}\n scrollOffset={0}\n >\n <LoadingRows\n count={1}\n className={className}\n rowClassName={rowClassName}\n />\n </ListBoxLoadMoreItem>\n );\n}\n\nexport function ComboboxListBox<T extends CollectionItem>(\n props: ComboboxListBoxOwnProps<T>,\n) {\n const { ownProps } = useDefinition(ComboboxListBoxDefinition, props);\n const {\n classes,\n options,\n items,\n children,\n dependencies,\n search,\n loading,\n isStale,\n getItemTextValue,\n } = ownProps;\n const normalizedOptions = options && normalizeOptions(options);\n const state = useContext(ComboBoxStateContext);\n const { contains } = useFilter({ sensitivity: 'base' });\n const inputValue = state?.inputValue ?? '';\n const filter = getCollectionFilter({\n search,\n hasItems: items !== undefined,\n inputValue,\n contains,\n });\n const isCollectionLoading =\n loading?.state === 'loading' ||\n loading?.state === 'filtering' ||\n loading?.state === 'sorting';\n const isBusy = isCollectionLoading || loading?.state === 'loadingMore';\n const showStale = useDelayedVisibility(\n isStale ?? false,\n loadingIndicatorDelayMs,\n );\n const showLoadMoreIndicator = useDelayedVisibility(\n loading?.state === 'loadingMore',\n loadingIndicatorDelayMs,\n );\n\n const listBox = (\n <ListBox\n className={classes.root}\n data-stale={showStale || undefined}\n renderEmptyState={() => (\n <ComboboxEmptyState\n isLoading={isCollectionLoading}\n className={classes.loading}\n rowClassName={classes.loadingRow}\n />\n )}\n >\n <ComboboxCollection\n normalizedOptions={normalizedOptions}\n items={items}\n dependencies={dependencies}\n getItemTextValue={getItemTextValue}\n >\n {children}\n </ComboboxCollection>\n <ComboboxLoadMoreIndicator\n loading={loading}\n isCollectionLoading={isCollectionLoading}\n isIndicatorVisible={showLoadMoreIndicator}\n className={classes.loading}\n rowClassName={classes.loadingRow}\n />\n </ListBox>\n );\n\n const busyListBox = <div aria-busy={isBusy || undefined}>{listBox}</div>;\n\n if (!filter) {\n return busyListBox;\n }\n\n return (\n <SelectableCollectionContext.Provider value={{ filter }}>\n {busyListBox}\n </SelectableCollectionContext.Provider>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ComboboxListBox.esm.js","sources":["../../../src/components/Combobox/ComboboxListBox.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cloneElement } from 'react';\nimport {\n Collection,\n Header,\n ListBox,\n ListBoxLoadMoreItem,\n ListBoxSection,\n SelectableCollectionContext,\n Text,\n} from 'react-aria-components';\nimport clsx from 'clsx';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { normalizeOptions } from '../../utils/selectableCollection';\nimport { ComboboxItem } from './ComboboxItem';\nimport {\n ComboboxItemTextDefinition,\n ComboboxListBoxDefinition,\n ComboboxListBoxItemDefinition,\n ComboboxSectionDefinition,\n} from './definition';\nimport type {\n CollectionItem,\n LoadingConfig,\n NormalizedOption,\n NormalizedOptionSection,\n} from '../../types/selectableCollection';\nimport type { ComboboxListBoxOwnProps } from './types';\nimport { Skeleton } from '../Skeleton';\nimport { useDelayedVisibility } from '../../hooks/useDelayedVisibility';\n\nconst loadingRowWidths = ['70%', '55%', '65%'];\nconst loadingIndicatorDelayMs = 300;\n\nfunction LoadingRows({\n count,\n className,\n rowClassName,\n}: {\n count: number;\n className: string;\n rowClassName: string;\n}) {\n return (\n <div className={className} aria-hidden=\"true\">\n {loadingRowWidths.slice(0, count).map(width => (\n <div key={width} className={rowClassName}>\n <Skeleton width={width} height=\"0.75rem\" />\n </div>\n ))}\n </div>\n );\n}\n\nconst NoResults = () => {\n const { ownProps } = useDefinition(ComboboxListBoxDefinition, {});\n const { classes } = ownProps;\n\n return <div className={classes.noResults}>No results found.</div>;\n};\n\nfunction ComboboxOptionItem({ option }: { option: NormalizedOption }) {\n const { ownProps } = useDefinition(ComboboxItemTextDefinition, {\n title: option.label,\n description: option.description,\n leadingIcon: option.leadingIcon,\n });\n const { classes } = ownProps;\n const {\n ownProps: { classes: legacyOptionClasses },\n } = useDefinition(ComboboxListBoxItemDefinition, {});\n\n return (\n <ComboboxItem\n id={option.id}\n value={option}\n className={classes.root}\n textValue={option.label}\n isDisabled={option.disabled}\n showSelectionIndicator\n >\n {option.leadingIcon && (\n <div className={classes.leadingIcon}>{option.leadingIcon}</div>\n )}\n <div className={classes.text}>\n <Text\n slot=\"label\"\n className={clsx(classes.title, legacyOptionClasses.label)}\n >\n {option.label}\n </Text>\n {option.description && (\n <Text slot=\"description\" className={classes.description}>\n {option.description}\n </Text>\n )}\n </div>\n </ComboboxItem>\n );\n}\n\nfunction ComboboxSectionItems({\n section,\n}: {\n section: NormalizedOptionSection;\n}) {\n const { ownProps } = useDefinition(ComboboxSectionDefinition, {});\n const { classes } = ownProps;\n\n return (\n <ListBoxSection className={classes.root}>\n <Header className={classes.header}>{section.title}</Header>\n {section.options.map(option => (\n <ComboboxOptionItem key={option.id} option={option} />\n ))}\n </ListBoxSection>\n );\n}\n\nfunction renderComboboxOption(\n item: NormalizedOption | NormalizedOptionSection,\n) {\n if ('options' in item) {\n return <ComboboxSectionItems key={item.title} section={item} />;\n }\n\n return <ComboboxOptionItem key={item.id} option={item} />;\n}\n\nfunction ComboboxCollection<T extends CollectionItem>({\n normalizedOptions,\n items,\n children,\n dependencies,\n getItemTextValue,\n}: {\n normalizedOptions?: Array<NormalizedOption | NormalizedOptionSection>;\n items?: Iterable<T>;\n children?: React.ReactNode | ((item: T) => React.ReactElement);\n dependencies?: ReadonlyArray<unknown>;\n getItemTextValue?: (item: T) => string;\n}) {\n if (normalizedOptions) {\n return <>{normalizedOptions.map(renderComboboxOption)}</>;\n }\n\n if (items) {\n const renderItemWithTextValue = (item: T) => {\n let renderedItem: React.ReactElement;\n if (typeof children === 'function') {\n renderedItem = children(item);\n } else {\n renderedItem = (\n <ComboboxOptionItem option={item as unknown as NormalizedOption} />\n );\n }\n\n if (!getItemTextValue) {\n return renderedItem;\n }\n\n return cloneElement(renderedItem, {\n textValue: getItemTextValue(item),\n });\n };\n\n return (\n <Collection items={items} dependencies={dependencies}>\n {renderItemWithTextValue}\n </Collection>\n );\n }\n\n return children as React.ReactNode;\n}\n\nfunction ComboboxEmptyState({\n isLoading,\n className,\n rowClassName,\n}: {\n isLoading: boolean;\n className: string;\n rowClassName: string;\n}) {\n if (!isLoading) {\n return <NoResults />;\n }\n\n return (\n <LoadingRows count={3} className={className} rowClassName={rowClassName} />\n );\n}\n\nfunction ComboboxLoadMoreIndicator({\n loading,\n isCollectionLoading,\n isIndicatorVisible,\n className,\n rowClassName,\n}: {\n loading?: LoadingConfig;\n isCollectionLoading: boolean;\n isIndicatorVisible: boolean;\n className: string;\n rowClassName: string;\n}) {\n if (!loading?.onLoadMore || isCollectionLoading) {\n return null;\n }\n\n const onLoadMore =\n loading.state === 'loadingMore' ? undefined : loading.onLoadMore;\n\n return (\n <ListBoxLoadMoreItem\n isLoading={isIndicatorVisible}\n onLoadMore={onLoadMore}\n scrollOffset={0}\n >\n <LoadingRows\n count={1}\n className={className}\n rowClassName={rowClassName}\n />\n </ListBoxLoadMoreItem>\n );\n}\n\nexport function ComboboxListBox<T extends CollectionItem>(\n props: ComboboxListBoxOwnProps<T>,\n) {\n const { ownProps } = useDefinition(ComboboxListBoxDefinition, props);\n const {\n classes,\n options,\n items,\n children,\n hiddenKey,\n dependencies,\n loading,\n isStale,\n getItemTextValue,\n } = ownProps;\n const normalizedOptions = options && normalizeOptions(options);\n const isCollectionLoading =\n loading?.state === 'loading' ||\n loading?.state === 'filtering' ||\n loading?.state === 'sorting';\n const isBusy = isCollectionLoading || loading?.state === 'loadingMore';\n const showStale = useDelayedVisibility(\n isStale ?? false,\n loadingIndicatorDelayMs,\n );\n const showLoadMoreIndicator = useDelayedVisibility(\n loading?.state === 'loadingMore',\n loadingIndicatorDelayMs,\n );\n\n const listBox = (\n <ListBox\n className={classes.root}\n data-stale={showStale || undefined}\n renderEmptyState={() => (\n <ComboboxEmptyState\n isLoading={isCollectionLoading}\n className={classes.loading}\n rowClassName={classes.loadingRow}\n />\n )}\n >\n <ComboboxCollection\n normalizedOptions={normalizedOptions}\n items={items}\n dependencies={dependencies}\n getItemTextValue={getItemTextValue}\n >\n {children}\n </ComboboxCollection>\n <ComboboxLoadMoreIndicator\n loading={loading}\n isCollectionLoading={isCollectionLoading}\n isIndicatorVisible={showLoadMoreIndicator}\n className={classes.loading}\n rowClassName={classes.loadingRow}\n />\n </ListBox>\n );\n\n const busyListBox = <div aria-busy={isBusy || undefined}>{listBox}</div>;\n\n if (hiddenKey === undefined) {\n return busyListBox;\n }\n\n return (\n <SelectableCollectionContext.Provider\n value={{ filter: (_textValue, node) => node.key !== hiddenKey }}\n >\n {busyListBox}\n </SelectableCollectionContext.Provider>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -61,8 +61,8 @@ const ComboboxListBoxDefinition = defineComponent()({
61
61
  options: {},
62
62
  items: {},
63
63
  children: {},
64
+ hiddenKey: {},
64
65
  dependencies: {},
65
- search: {},
66
66
  loading: {},
67
67
  isStale: {},
68
68
  getItemTextValue: {}
@@ -1 +1 @@
1
- {"version":3,"file":"definition.esm.js","sources":["../../../src/components/Combobox/definition.ts"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type {\n ComboboxOwnProps,\n ComboboxInputOwnProps,\n ComboboxItemOwnProps,\n ComboboxItemProfileOwnProps,\n ComboboxItemTextOwnProps,\n ComboboxListBoxOwnProps,\n ComboboxListBoxItemOwnProps,\n ComboboxSectionOwnProps,\n} from './types';\nimport styles from './Combobox.module.css';\n\n/** @public */\nexport const ComboboxDefinition = defineComponent<ComboboxOwnProps>()({\n styles,\n classNames: {\n root: 'bui-Combobox',\n popover: 'bui-ComboboxPopover',\n },\n propDefs: {\n icon: {},\n size: { dataAttribute: true, default: 'small' },\n options: {},\n items: {},\n children: {},\n dependencies: {},\n search: {},\n loading: {},\n placeholder: {},\n label: {},\n secondaryLabel: {},\n description: {},\n isRequired: {},\n className: {},\n },\n});\n\n/** @public */\nexport const ComboboxInputDefinition = defineComponent<ComboboxInputOwnProps>()(\n {\n styles,\n classNames: {\n root: 'bui-ComboboxInput',\n icon: 'bui-ComboboxInputIcon',\n input: 'bui-ComboboxInputField',\n chevron: 'bui-ComboboxInputChevron',\n },\n bg: 'consumer',\n propDefs: {\n icon: {},\n placeholder: {},\n },\n },\n);\n\n/** @public */\nexport const ComboboxListBoxDefinition = defineComponent<\n ComboboxListBoxOwnProps<any>\n>()({\n styles,\n classNames: {\n root: 'bui-ComboboxList',\n noResults: 'bui-ComboboxNoResults',\n loading: 'bui-ComboboxLoading',\n loadingRow: 'bui-ComboboxLoadingRow',\n },\n propDefs: {\n options: {},\n items: {},\n children: {},\n dependencies: {},\n search: {},\n loading: {},\n isStale: {},\n getItemTextValue: {},\n },\n});\n\n/** @public */\nexport const ComboboxListBoxItemDefinition =\n defineComponent<ComboboxListBoxItemOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxItem',\n indicator: 'bui-ComboboxItemIndicator',\n label: 'bui-ComboboxItemLabel',\n },\n propDefs: {},\n });\n\n/** @public */\nexport const ComboboxItemDefinition = defineComponent<ComboboxItemOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxItem',\n indicator: 'bui-ComboboxItemIndicator',\n content: 'bui-ComboboxItemContent',\n },\n navigation: { type: 'anchor' },\n propDefs: {\n children: {},\n textValue: {},\n showSelectionIndicator: {},\n className: {},\n },\n});\n\n/** @public */\nexport const ComboboxItemTextDefinition =\n defineComponent<ComboboxItemTextOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxItemText',\n leadingIcon: 'bui-ComboboxItemTextLeadingIcon',\n text: 'bui-ComboboxItemTextContent',\n title: 'bui-ComboboxItemTitle',\n description: 'bui-ComboboxItemDescription',\n },\n propDefs: {\n title: {},\n description: {},\n leadingIcon: {},\n textValue: {},\n className: {},\n },\n });\n\n/** @public */\nexport const ComboboxItemProfileDefinition =\n defineComponent<ComboboxItemProfileOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxItemProfile',\n avatar: 'bui-ComboboxItemAvatar',\n name: 'bui-ComboboxItemTitle',\n },\n propDefs: {\n name: {},\n src: {},\n textValue: {},\n className: {},\n },\n });\n\n/** @public */\nexport const ComboboxSectionDefinition =\n defineComponent<ComboboxSectionOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxSection',\n header: 'bui-ComboboxSectionHeader',\n },\n propDefs: {},\n });\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definition.esm.js","sources":["../../../src/components/Combobox/definition.ts"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type {\n ComboboxOwnProps,\n ComboboxInputOwnProps,\n ComboboxItemOwnProps,\n ComboboxItemProfileOwnProps,\n ComboboxItemTextOwnProps,\n ComboboxListBoxOwnProps,\n ComboboxListBoxItemOwnProps,\n ComboboxSectionOwnProps,\n} from './types';\nimport styles from './Combobox.module.css';\n\n/** @public */\nexport const ComboboxDefinition = defineComponent<ComboboxOwnProps>()({\n styles,\n classNames: {\n root: 'bui-Combobox',\n popover: 'bui-ComboboxPopover',\n },\n propDefs: {\n icon: {},\n size: { dataAttribute: true, default: 'small' },\n options: {},\n items: {},\n children: {},\n dependencies: {},\n search: {},\n loading: {},\n placeholder: {},\n label: {},\n secondaryLabel: {},\n description: {},\n isRequired: {},\n className: {},\n },\n});\n\n/** @public */\nexport const ComboboxInputDefinition = defineComponent<ComboboxInputOwnProps>()(\n {\n styles,\n classNames: {\n root: 'bui-ComboboxInput',\n icon: 'bui-ComboboxInputIcon',\n input: 'bui-ComboboxInputField',\n chevron: 'bui-ComboboxInputChevron',\n },\n bg: 'consumer',\n propDefs: {\n icon: {},\n placeholder: {},\n },\n },\n);\n\n/** @public */\nexport const ComboboxListBoxDefinition = defineComponent<\n ComboboxListBoxOwnProps<any>\n>()({\n styles,\n classNames: {\n root: 'bui-ComboboxList',\n noResults: 'bui-ComboboxNoResults',\n loading: 'bui-ComboboxLoading',\n loadingRow: 'bui-ComboboxLoadingRow',\n },\n propDefs: {\n options: {},\n items: {},\n children: {},\n hiddenKey: {},\n dependencies: {},\n loading: {},\n isStale: {},\n getItemTextValue: {},\n },\n});\n\n/** @public */\nexport const ComboboxListBoxItemDefinition =\n defineComponent<ComboboxListBoxItemOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxItem',\n indicator: 'bui-ComboboxItemIndicator',\n label: 'bui-ComboboxItemLabel',\n },\n propDefs: {},\n });\n\n/** @public */\nexport const ComboboxItemDefinition = defineComponent<ComboboxItemOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxItem',\n indicator: 'bui-ComboboxItemIndicator',\n content: 'bui-ComboboxItemContent',\n },\n navigation: { type: 'anchor' },\n propDefs: {\n children: {},\n textValue: {},\n showSelectionIndicator: {},\n className: {},\n },\n});\n\n/** @public */\nexport const ComboboxItemTextDefinition =\n defineComponent<ComboboxItemTextOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxItemText',\n leadingIcon: 'bui-ComboboxItemTextLeadingIcon',\n text: 'bui-ComboboxItemTextContent',\n title: 'bui-ComboboxItemTitle',\n description: 'bui-ComboboxItemDescription',\n },\n propDefs: {\n title: {},\n description: {},\n leadingIcon: {},\n textValue: {},\n className: {},\n },\n });\n\n/** @public */\nexport const ComboboxItemProfileDefinition =\n defineComponent<ComboboxItemProfileOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxItemProfile',\n avatar: 'bui-ComboboxItemAvatar',\n name: 'bui-ComboboxItemTitle',\n },\n propDefs: {\n name: {},\n src: {},\n textValue: {},\n className: {},\n },\n });\n\n/** @public */\nexport const ComboboxSectionDefinition =\n defineComponent<ComboboxSectionOwnProps>()({\n styles,\n classNames: {\n root: 'bui-ComboboxSection',\n header: 'bui-ComboboxSectionHeader',\n },\n propDefs: {},\n });\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAsyncComboboxState.esm.js","sources":["../../../src/components/Combobox/useAsyncComboboxState.ts"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { Key } from 'react-aria-components';\nimport type {\n AsyncListSource,\n CollectionItem,\n} from '../../types/selectableCollection';\n\ntype AsyncComboboxItem = CollectionItem &\n ({ textValue: string } | { label: string });\n\nfunction getItemTextValue(item: AsyncComboboxItem) {\n return 'textValue' in item ? item.textValue : item.label;\n}\n\nfunction resolveNextSelectedItem<T extends CollectionItem>({\n key,\n currentItem,\n sourceItems,\n isControlled,\n}: {\n key: Key | null;\n currentItem: T | null;\n sourceItems: T[];\n isControlled: boolean;\n}) {\n if (key === null) {\n return null;\n }\n\n if (isControlled && currentItem?.id === key) {\n return currentItem;\n }\n\n return sourceItems.find(item => item.id === key) ?? currentItem;\n}\n\ntype UseAsyncComboboxStateProps<T extends CollectionItem> = {\n source: AsyncListSource<T>;\n value?: T | null;\n defaultValue?: T | null;\n onChange?: (value: T | null) => void;\n allowsCustomValue?: boolean;\n};\n\n/** @internal */\nexport function useAsyncComboboxState<T extends CollectionItem>(\n props?: UseAsyncComboboxStateProps<T>,\n) {\n const isEnabled = props !== undefined;\n const { source, value, defaultValue, onChange, allowsCustomValue } =\n props ?? {};\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<T | null>(\n defaultValue ?? null,\n );\n const selectedItem = isControlled ? value ?? null : uncontrolledValue;\n const selectedItemRef = useRef(selectedItem);\n const sourceItemsRef = useRef<T[]>([]);\n const inputValueRef = useRef('');\n const sourceFilterText = source?.filterText ?? '';\n const setSourceFilterText = source?.setFilterText;\n const sourceFilterTextRef = useRef(sourceFilterText);\n const preserveInputOnClearRef = useRef(false);\n const [inputValue, setInputValue] = useState(() =>\n selectedItem\n ? getAsyncComboboxItemTextValue(selectedItem)\n : sourceFilterText,\n );\n\n selectedItemRef.current = selectedItem;\n sourceItemsRef.current = source ? [...source.items] : [];\n inputValueRef.current = inputValue;\n sourceFilterTextRef.current = sourceFilterText;\n\n const updateInputValue = useCallback(\n (nextInputValue: string) => {\n setInputValue(nextInputValue);\n if (\n isEnabled &&\n setSourceFilterText &&\n sourceFilterTextRef.current !== nextInputValue\n ) {\n sourceFilterTextRef.current = nextInputValue;\n setSourceFilterText(nextInputValue);\n }\n },\n [isEnabled, setSourceFilterText],\n );\n\n useEffect(() => {\n if (isEnabled) {\n setInputValue(sourceFilterText);\n }\n }, [isEnabled, sourceFilterText]);\n\n const selectedId = selectedItem?.id ?? null;\n const selectedTextValue = selectedItem\n ? getAsyncComboboxItemTextValue(selectedItem)\n : undefined;\n const previousSelectedId = useRef<Key | null>(null);\n const previousSelectedTextValue = useRef<string>();\n\n useEffect(() => {\n if (!isEnabled) {\n return;\n }\n\n const selectionChanged =\n previousSelectedId.current !== selectedId ||\n previousSelectedTextValue.current !== selectedTextValue;\n\n previousSelectedId.current = selectedId;\n previousSelectedTextValue.current = selectedTextValue;\n\n if (selectionChanged) {\n if (selectedTextValue !== undefined) {\n updateInputValue(selectedTextValue);\n } else if (preserveInputOnClearRef.current) {\n preserveInputOnClearRef.current = false;\n } else {\n updateInputValue('');\n }\n }\n }, [isEnabled, selectedId, selectedTextValue, updateInputValue]);\n\n const freshSelectedItem = selectedItem\n ? sourceItemsRef.current.find(item => item.id === selectedItem.id)\n : undefined;\n const isEditing =\n selectedTextValue !== undefined &&\n inputValueRef.current !== selectedTextValue;\n\n useEffect(() => {\n if (\n isEnabled &&\n !isControlled &&\n !isEditing &&\n freshSelectedItem &&\n freshSelectedItem !== selectedItemRef.current\n ) {\n setUncontrolledValue(freshSelectedItem);\n }\n }, [freshSelectedItem, isControlled, isEditing, isEnabled]);\n\n const handleChange = useCallback(\n (key: Key | null) => {\n const currentItem = selectedItemRef.current;\n const currentTextValue = currentItem\n ? getAsyncComboboxItemTextValue(currentItem)\n : undefined;\n\n if (\n key === null &&\n allowsCustomValue &&\n currentTextValue === inputValueRef.current\n ) {\n updateInputValue(currentTextValue);\n return;\n }\n\n if (key === null && allowsCustomValue && currentItem) {\n preserveInputOnClearRef.current = true;\n }\n\n if (key === null && !currentItem && !allowsCustomValue) {\n updateInputValue('');\n return;\n }\n\n const nextItem = resolveNextSelectedItem({\n key,\n currentItem,\n sourceItems: sourceItemsRef.current,\n isControlled,\n });\n\n if (nextItem) {\n updateInputValue(getAsyncComboboxItemTextValue(nextItem));\n }\n\n if (!isControlled) {\n setUncontrolledValue(nextItem);\n }\n\n if (nextItem?.id !== currentItem?.id) {\n onChange?.(nextItem);\n }\n },\n [allowsCustomValue, isControlled, onChange, updateInputValue],\n );\n\n if (!isEnabled) {\n return undefined;\n }\n\n return {\n value: selectedItem?.id ?? null,\n inputValue,\n onChange: handleChange,\n onInputChange: updateInputValue,\n };\n}\n\n/** @internal */\nexport function getAsyncComboboxItemTextValue(item: CollectionItem) {\n return getItemTextValue(item as AsyncComboboxItem);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAsyncComboboxState.esm.js","sources":["../../../src/components/Combobox/useAsyncComboboxState.ts"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { Key } from 'react-aria-components';\nimport type {\n AsyncListSource,\n CollectionItem,\n} from '../../types/selectableCollection';\n\ntype AsyncComboboxItem = CollectionItem &\n ({ textValue: string } | { label: string });\n\nfunction getItemTextValue(item: AsyncComboboxItem) {\n return 'textValue' in item ? item.textValue : item.label;\n}\n\nfunction resolveNextSelectedItem<T extends CollectionItem>({\n key,\n currentItem,\n sourceItems,\n isControlled,\n}: {\n key: Key | null;\n currentItem: T | null;\n sourceItems: T[];\n isControlled: boolean;\n}) {\n if (key === null) {\n return null;\n }\n\n if (isControlled && currentItem?.id === key) {\n return currentItem;\n }\n\n return sourceItems.find(item => item.id === key) ?? currentItem;\n}\n\ntype UseAsyncComboboxStateProps<T extends CollectionItem> = {\n source: AsyncListSource<T>;\n value?: T | null;\n defaultValue?: T | null;\n onChange?: (value: T | null) => void;\n allowsCustomValue?: boolean;\n};\n\n/** @internal */\nexport function useAsyncComboboxState<T extends CollectionItem>(\n props?: UseAsyncComboboxStateProps<T>,\n) {\n const isEnabled = props !== undefined;\n const { source, value, defaultValue, onChange, allowsCustomValue } =\n props ?? {};\n const isControlled = value !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<T | null>(\n defaultValue ?? null,\n );\n const selectedItem = isControlled ? value ?? null : uncontrolledValue;\n const selectedItemRef = useRef(selectedItem);\n const sourceItemsRef = useRef<T[]>([]);\n const inputValueRef = useRef('');\n const sourceFilterText = source?.filterText ?? '';\n const setSourceFilterText = source?.setFilterText;\n const sourceFilterTextRef = useRef(sourceFilterText);\n const preserveInputOnClearRef = useRef(false);\n const [inputValue, setInputValue] = useState(() =>\n selectedItem\n ? getAsyncComboboxItemTextValue(selectedItem)\n : sourceFilterText,\n );\n\n selectedItemRef.current = selectedItem;\n sourceItemsRef.current = source ? [...source.items] : [];\n inputValueRef.current = inputValue;\n sourceFilterTextRef.current = sourceFilterText;\n\n const updateInputValue = useCallback(\n (nextInputValue: string) => {\n setInputValue(nextInputValue);\n if (\n isEnabled &&\n setSourceFilterText &&\n sourceFilterTextRef.current !== nextInputValue\n ) {\n sourceFilterTextRef.current = nextInputValue;\n setSourceFilterText(nextInputValue);\n }\n },\n [isEnabled, setSourceFilterText],\n );\n\n useEffect(() => {\n if (isEnabled) {\n setInputValue(sourceFilterText);\n }\n }, [isEnabled, sourceFilterText]);\n\n const selectedId = selectedItem?.id ?? null;\n const selectedTextValue = selectedItem\n ? getAsyncComboboxItemTextValue(selectedItem)\n : undefined;\n const previousSelectedId = useRef<Key | null>(null);\n const previousSelectedTextValue = useRef<string>();\n\n useEffect(() => {\n if (!isEnabled) {\n return;\n }\n\n const selectionChanged =\n previousSelectedId.current !== selectedId ||\n previousSelectedTextValue.current !== selectedTextValue;\n\n previousSelectedId.current = selectedId;\n previousSelectedTextValue.current = selectedTextValue;\n\n if (selectionChanged) {\n if (selectedTextValue !== undefined) {\n updateInputValue(selectedTextValue);\n } else if (preserveInputOnClearRef.current) {\n preserveInputOnClearRef.current = false;\n } else {\n updateInputValue('');\n }\n }\n }, [isEnabled, selectedId, selectedTextValue, updateInputValue]);\n\n const freshSelectedItem = selectedItem\n ? sourceItemsRef.current.find(item => item.id === selectedItem.id)\n : undefined;\n const isEditing =\n selectedTextValue !== undefined &&\n inputValueRef.current !== selectedTextValue;\n\n useEffect(() => {\n if (\n isEnabled &&\n !isControlled &&\n !isEditing &&\n freshSelectedItem &&\n freshSelectedItem !== selectedItemRef.current\n ) {\n setUncontrolledValue(freshSelectedItem);\n }\n }, [freshSelectedItem, isControlled, isEditing, isEnabled]);\n\n const handleChange = useCallback(\n (key: Key | null) => {\n const currentItem = selectedItemRef.current;\n const currentTextValue = currentItem\n ? getAsyncComboboxItemTextValue(currentItem)\n : undefined;\n\n if (\n key === null &&\n allowsCustomValue &&\n currentTextValue === inputValueRef.current\n ) {\n updateInputValue(currentTextValue);\n return;\n }\n\n if (key === null && allowsCustomValue && currentItem) {\n preserveInputOnClearRef.current = true;\n }\n\n if (key === null && !currentItem && !allowsCustomValue) {\n updateInputValue('');\n return;\n }\n\n const nextItem = resolveNextSelectedItem({\n key,\n currentItem,\n sourceItems: sourceItemsRef.current,\n isControlled,\n });\n\n if (nextItem) {\n updateInputValue(getAsyncComboboxItemTextValue(nextItem));\n }\n\n if (!isControlled) {\n setUncontrolledValue(nextItem);\n }\n\n if (nextItem?.id !== currentItem?.id) {\n onChange?.(nextItem);\n }\n },\n [allowsCustomValue, isControlled, onChange, updateInputValue],\n );\n\n if (!isEnabled) {\n return undefined;\n }\n\n return {\n value: selectedItem?.id ?? null,\n inputValue,\n onChange: handleChange,\n onInputChange: updateInputValue,\n };\n}\n\n/** @internal */\nexport function getAsyncComboboxItemTextValue(item: CollectionItem) {\n return getItemTextValue(item as AsyncComboboxItem);\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Container.esm.js","sources":["../../../src/components/Container/Container.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { forwardRef } from 'react';\nimport type { ContainerProps } from './types';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { ContainerDefinition } from './definition';\n\n/**\n * A centered layout wrapper that constrains content to a maximum width and provides consistent page-level padding.\n *\n * @public\n */\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n (props, ref) => {\n const { ownProps, restProps, utilityStyle } = useDefinition(\n ContainerDefinition,\n props,\n );\n const { classes, children, style } = ownProps;\n\n return (\n <div\n ref={ref}\n className={classes.root}\n style={{ ...utilityStyle, ...style }}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nContainer.displayName = 'Container';\n"],"names":[],"mappings":";;;;;AA0BO,MAAM,SAAA,GAAY,UAAA;AAAA,EACvB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,YAAA,EAAa,GAAI,aAAA;AAAA,MAC5C,mBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,KAAA,EAAM,GAAI,QAAA;AAErC,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAW,OAAA,CAAQ,IAAA;AAAA,QACnB,KAAA,EAAO,EAAE,GAAG,YAAA,EAAc,GAAG,KAAA,EAAM;AAAA,QAClC,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;;;;"}
1
+ {"version":3,"file":"Container.esm.js","sources":["../../../src/components/Container/Container.tsx"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { forwardRef } from 'react';\nimport type { ContainerProps } from './types';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { ContainerDefinition } from './definition';\n\n/**\n * A centered layout wrapper that constrains content to a maximum width and provides consistent page-level padding.\n *\n * @public\n */\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n (props, ref) => {\n const { ownProps, restProps, utilityStyle } = useDefinition(\n ContainerDefinition,\n props,\n );\n const { classes, children, style } = ownProps;\n\n return (\n <div\n ref={ref}\n className={classes.root}\n style={{ ...utilityStyle, ...style }}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nContainer.displayName = 'Container';\n"],"names":[],"mappings":";;;;;AA0BO,MAAM,SAAA,GAAY,UAAA;AAAA,EACvB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,YAAA,EAAa,GAAI,aAAA;AAAA,MAC5C,mBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,KAAA,EAAM,GAAI,QAAA;AAErC,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,WAAW,OAAA,CAAQ,IAAA;AAAA,QACnB,KAAA,EAAO,EAAE,GAAG,YAAA,EAAc,GAAG,KAAA,EAAM;AAAA,QAClC,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;;"}
@@ -1,7 +1,7 @@
1
1
  import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
2
 
3
- var css_248z = "/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, utilities;\n\n@layer components {\n .Container_bui-Container__773777452b {\n flex: 1;\n width: 100%;\n max-width: 120rem;\n padding-inline: var(--bui-space-4);\n margin-inline: auto;\n margin-bottom: var(--bui-space-8);\n }\n\n @media (min-width: 640px) {\n .Container_bui-Container__773777452b {\n padding-inline: var(--bui-space-5);\n }\n }\n}\n";
4
- var styles = {"bui-Container":"Container_bui-Container__773777452b"};
3
+ var css_248z = "/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, theme, utilities;\n\n@layer components {\n .Container_bui-Container__4df60bab55 {\n flex: 1;\n width: 100%;\n max-width: 120rem;\n padding-inline: var(--bui-space-4);\n margin-inline: auto;\n margin-bottom: var(--bui-space-8);\n }\n\n @media (min-width: 640px) {\n .Container_bui-Container__4df60bab55 {\n padding-inline: var(--bui-space-5);\n }\n }\n}\n";
4
+ var styles = {"bui-Container":"Container_bui-Container__4df60bab55"};
5
5
  styleInject(css_248z);
6
6
 
7
7
  export { styles as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Container.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"Container.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"definition.esm.js","sources":["../../../src/components/Container/definition.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type { ContainerOwnProps } from './types';\nimport styles from './Container.module.css';\n\n/**\n * Component definition for Container\n * @public\n */\nexport const ContainerDefinition = defineComponent<ContainerOwnProps>()({\n styles,\n classNames: {\n root: 'bui-Container',\n },\n propDefs: {\n children: {},\n className: {},\n style: {},\n },\n utilityProps: ['my', 'mt', 'mb', 'py', 'pt', 'pb', 'display'],\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAwBO,MAAM,mBAAA,GAAsB,iBAAmC,CAAE;AAAA,EACtE,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAU,EAAC;AAAA,IACX,WAAW,EAAC;AAAA,IACZ,OAAO;AAAC,GACV;AAAA,EACA,YAAA,EAAc,CAAC,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,SAAS;AAC9D,CAAC;;;;"}
1
+ {"version":3,"file":"definition.esm.js","sources":["../../../src/components/Container/definition.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type { ContainerOwnProps } from './types';\nimport styles from './Container.module.css';\n\n/**\n * Component definition for Container\n * @public\n */\nexport const ContainerDefinition = defineComponent<ContainerOwnProps>()({\n styles,\n classNames: {\n root: 'bui-Container',\n },\n propDefs: {\n children: {},\n className: {},\n style: {},\n },\n utilityProps: ['my', 'mt', 'mb', 'py', 'pt', 'pb', 'display'],\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAwBO,MAAM,mBAAA,GAAsB,iBAAmC,CAAE;AAAA,EACtE,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAU,EAAC;AAAA,IACX,WAAW,EAAC;AAAA,IACZ,OAAO;AAAC,GACV;AAAA,EACA,YAAA,EAAc,CAAC,IAAA,EAAM,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,SAAS;AAC9D,CAAC;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.esm.js","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { forwardRef, useEffect } from 'react';\nimport { DatePicker as AriaDatePicker } from 'react-aria-components';\nimport { FieldLabel } from '../FieldLabel';\nimport { FieldError } from '../FieldError';\nimport { Popover } from '../Popover';\nimport { DatePickerGroup } from './DatePickerGroup';\nimport { DatePickerCalendar } from './DatePickerCalendar';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { DatePickerDefinition } from './definition';\nimport type { DatePickerProps } from './types';\n\n/**\n * A date picker that combines a date field and a calendar popover, allowing\n * users to enter or select a date with full keyboard and screen reader\n * accessibility.\n *\n * @public\n */\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (props, ref) => {\n const { ownProps, restProps, dataAttributes } = useDefinition(\n DatePickerDefinition,\n props,\n );\n\n const { classes, label, description, secondaryLabel } = ownProps;\n\n const ariaLabel = restProps['aria-label'];\n const ariaLabelledBy = restProps['aria-labelledby'];\n\n useEffect(() => {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n 'DatePicker requires either a visible label, aria-label, or aria-labelledby for accessibility',\n );\n }\n }, [label, ariaLabel, ariaLabelledBy]);\n\n const secondaryLabelText =\n secondaryLabel || (restProps.isRequired ? 'Required' : null);\n\n return (\n <AriaDatePicker\n className={classes.root}\n {...dataAttributes}\n {...restProps}\n ref={ref}\n >\n <FieldLabel\n label={label}\n secondaryLabel={secondaryLabelText}\n description={description}\n descriptionSlot=\"description\"\n />\n <DatePickerGroup dataSize={dataAttributes['data-size']} />\n <FieldError />\n <Popover hideArrow>\n <DatePickerCalendar />\n </Popover>\n </AriaDatePicker>\n );\n },\n);\n\nDatePicker.displayName = 'DatePicker';\n"],"names":["AriaDatePicker"],"mappings":";;;;;;;;;;;;;;AAkCO,MAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,cAAA,EAAe,GAAI,aAAA;AAAA,MAC9C,oBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,gBAAe,GAAI,QAAA;AAExD,IAAA,MAAM,SAAA,GAAY,UAAU,YAAY,CAAA;AACxC,IAAA,MAAM,cAAA,GAAiB,UAAU,iBAAiB,CAAA;AAElD,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,SAAA,IAAa,CAAC,cAAA,EAAgB;AAC3C,QAAA,OAAA,CAAQ,IAAA;AAAA,UACN;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAA,EAAG,CAAC,KAAA,EAAO,SAAA,EAAW,cAAc,CAAC,CAAA;AAErC,IAAA,MAAM,kBAAA,GACJ,cAAA,KAAmB,SAAA,CAAU,UAAA,GAAa,UAAA,GAAa,IAAA,CAAA;AAEzD,IAAA,uBACE,IAAA;AAAA,MAACA,YAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAA,CAAQ,IAAA;AAAA,QAClB,GAAG,cAAA;AAAA,QACH,GAAG,SAAA;AAAA,QACJ,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA;AAAA,cACA,cAAA,EAAgB,kBAAA;AAAA,cAChB,WAAA;AAAA,cACA,eAAA,EAAgB;AAAA;AAAA,WAClB;AAAA,0BACA,GAAA,CAAC,eAAA,EAAA,EAAgB,QAAA,EAAU,cAAA,CAAe,WAAW,CAAA,EAAG,CAAA;AAAA,8BACvD,UAAA,EAAA,EAAW,CAAA;AAAA,8BACX,OAAA,EAAA,EAAQ,SAAA,EAAS,IAAA,EAChB,QAAA,kBAAA,GAAA,CAAC,sBAAmB,CAAA,EACtB;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}
1
+ {"version":3,"file":"DatePicker.esm.js","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { forwardRef, useEffect } from 'react';\nimport { DatePicker as AriaDatePicker } from 'react-aria-components';\nimport { FieldLabel } from '../FieldLabel';\nimport { FieldError } from '../FieldError';\nimport { Popover } from '../Popover';\nimport { DatePickerGroup } from './DatePickerGroup';\nimport { DatePickerCalendar } from './DatePickerCalendar';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { DatePickerDefinition } from './definition';\nimport type { DatePickerProps } from './types';\n\n/**\n * A date picker that combines a date field and a calendar popover, allowing\n * users to enter or select a date with full keyboard and screen reader\n * accessibility.\n *\n * @public\n */\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (props, ref) => {\n const { ownProps, restProps, dataAttributes } = useDefinition(\n DatePickerDefinition,\n props,\n );\n\n const { classes, label, description, secondaryLabel } = ownProps;\n\n const ariaLabel = restProps['aria-label'];\n const ariaLabelledBy = restProps['aria-labelledby'];\n\n useEffect(() => {\n if (!label && !ariaLabel && !ariaLabelledBy) {\n console.warn(\n 'DatePicker requires either a visible label, aria-label, or aria-labelledby for accessibility',\n );\n }\n }, [label, ariaLabel, ariaLabelledBy]);\n\n const secondaryLabelText =\n secondaryLabel || (restProps.isRequired ? 'Required' : null);\n\n return (\n <AriaDatePicker\n className={classes.root}\n {...dataAttributes}\n {...restProps}\n ref={ref}\n >\n <FieldLabel\n label={label}\n secondaryLabel={secondaryLabelText}\n description={description}\n descriptionSlot=\"description\"\n />\n <DatePickerGroup dataSize={dataAttributes['data-size']} />\n <FieldError />\n <Popover hideArrow>\n <DatePickerCalendar />\n </Popover>\n </AriaDatePicker>\n );\n },\n);\n\nDatePicker.displayName = 'DatePicker';\n"],"names":["AriaDatePicker"],"mappings":";;;;;;;;;;;;;;AAkCO,MAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,OAAO,GAAA,KAAQ;AACd,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,cAAA,EAAe,GAAI,aAAA;AAAA,MAC9C,oBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,WAAA,EAAa,gBAAe,GAAI,QAAA;AAExD,IAAA,MAAM,SAAA,GAAY,UAAU,YAAY,CAAA;AACxC,IAAA,MAAM,cAAA,GAAiB,UAAU,iBAAiB,CAAA;AAElD,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,CAAC,KAAA,IAAS,CAAC,SAAA,IAAa,CAAC,cAAA,EAAgB;AAC3C,QAAA,OAAA,CAAQ,IAAA;AAAA,UACN;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAA,EAAG,CAAC,KAAA,EAAO,SAAA,EAAW,cAAc,CAAC,CAAA;AAErC,IAAA,MAAM,kBAAA,GACJ,cAAA,KAAmB,SAAA,CAAU,UAAA,GAAa,UAAA,GAAa,IAAA,CAAA;AAEzD,IAAA,uBACE,IAAA;AAAA,MAACA,YAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAA,CAAQ,IAAA;AAAA,QAClB,GAAG,cAAA;AAAA,QACH,GAAG,SAAA;AAAA,QACJ,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA;AAAA,cACA,cAAA,EAAgB,kBAAA;AAAA,cAChB,WAAA;AAAA,cACA,eAAA,EAAgB;AAAA;AAAA,WAClB;AAAA,0BACA,GAAA,CAAC,eAAA,EAAA,EAAgB,QAAA,EAAU,cAAA,CAAe,WAAW,CAAA,EAAG,CAAA;AAAA,8BACvD,UAAA,EAAA,EAAW,CAAA;AAAA,8BACX,OAAA,EAAA,EAAQ,SAAA,EAAS,IAAA,EAChB,QAAA,kBAAA,GAAA,CAAC,sBAAmB,CAAA,EACtB;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;"}
@@ -1,7 +1,7 @@
1
1
  import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
2
 
3
- var css_248z = "/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, utilities;\n\n@layer components {\n /* ============================================================\n Root\n ============================================================ */\n\n .DatePicker_bui-DatePicker__86a3b4043d {\n display: flex;\n flex-direction: column;\n font-family: var(--bui-font-regular);\n width: 100%;\n flex: 1;\n }\n\n /* ============================================================\n Field group — custom container (not reusing any BUI field)\n ============================================================ */\n\n .DatePicker_bui-DatePickerGroup__86a3b4043d {\n display: flex;\n align-items: center;\n background-color: var(--bui-bg-neutral-1);\n border-radius: var(--bui-radius-2);\n padding: 0 var(--bui-space-1) 0 var(--bui-space-3);\n width: fit-content;\n min-width: 200px;\n max-width: 100%;\n overflow: clip;\n transition: box-shadow 0.2s ease-in-out;\n cursor: text;\n\n /* bg consumer — auto-increment background based on parent context */\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-3);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-4);\n }\n\n &[data-focus-within] {\n outline: none;\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n\n &[data-invalid] {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n &[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Sizes */\n &[data-size='small'] {\n height: 2rem;\n padding-inline-start: var(--bui-space-2);\n }\n\n &[data-size='medium'] {\n height: 2.5rem;\n min-width: 210px;\n padding-inline-end: var(--bui-space-1);\n\n & .DatePicker_bui-DatePickerButton__86a3b4043d {\n width: 2rem;\n height: 2rem;\n }\n }\n }\n\n /* ============================================================\n Date input\n ============================================================ */\n\n .DatePicker_bui-DatePickerDateInput__86a3b4043d {\n flex: 1;\n display: inline-flex;\n align-items: center;\n width: unset;\n min-width: unset;\n padding: unset;\n border: unset;\n box-shadow: none;\n background: none;\n height: auto;\n overflow-x: auto;\n overflow-y: clip;\n scrollbar-width: none;\n }\n\n /* ============================================================\n Date segments (month, day, year literals and placeholders)\n ============================================================ */\n\n .DatePicker_bui-DatePickerSegment__86a3b4043d {\n display: inline-block;\n padding: var(--bui-space-0_5) var(--bui-space-1);\n border-radius: var(--bui-radius-1);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n caret-color: transparent;\n outline: none;\n font-variant-numeric: tabular-nums;\n\n &[data-placeholder] {\n color: var(--bui-fg-secondary);\n }\n\n &[data-type='literal'] {\n color: var(--bui-fg-secondary);\n padding: 0;\n }\n\n &[data-focused] {\n background-color: var(--bui-bg-solid);\n color: var(--bui-fg-solid);\n border-radius: var(--bui-radius-1);\n\n &[data-placeholder] {\n color: var(--bui-fg-solid);\n }\n }\n\n &[data-disabled] {\n color: var(--bui-fg-disabled);\n }\n }\n\n /* ============================================================\n Calendar trigger button\n ============================================================ */\n\n .DatePicker_bui-DatePickerButton__86a3b4043d {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n background: none;\n border: none;\n border-radius: var(--bui-radius-2);\n color: var(--bui-fg-secondary);\n cursor: pointer;\n margin-left: auto;\n transition: color 0.15s ease-in-out;\n outline: none;\n\n &[data-hovered] {\n color: var(--bui-fg-primary);\n }\n\n &[data-focus-visible] {\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n\n &[data-pressed] {\n color: var(--bui-fg-primary);\n }\n }\n\n /* ============================================================\n Calendar (inside Popover)\n ============================================================ */\n\n .DatePicker_bui-DatePickerCalendar__86a3b4043d {\n width: fit-content;\n outline: none;\n }\n\n .DatePicker_bui-DatePickerCalendarHeader__86a3b4043d {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--bui-space-3);\n }\n\n .DatePicker_bui-DatePickerCalendarHeading__86a3b4043d {\n font-size: var(--bui-font-size-3);\n font-weight: var(--bui-font-weight-bold);\n font-family: var(--bui-font-regular);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n flex: 1;\n text-align: center;\n }\n\n .DatePicker_bui-DatePickerCalendarNavButton__86a3b4043d {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--bui-space-8);\n height: var(--bui-space-8);\n background: none;\n border: none;\n border-radius: var(--bui-radius-2);\n color: var(--bui-fg-secondary);\n cursor: pointer;\n transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;\n\n &[data-hovered] {\n background-color: var(--bui-bg-neutral-2);\n color: var(--bui-fg-primary);\n }\n\n &[data-focus-visible] {\n outline: 2px solid var(--bui-ring);\n outline-offset: 1px;\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-2);\n }\n }\n\n /* ============================================================\n Calendar grid\n ============================================================ */\n\n .DatePicker_bui-DatePickerCalendarGrid__86a3b4043d {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 2px;\n }\n\n .DatePicker_bui-DatePickerCalendarHeaderCell__86a3b4043d {\n font-size: var(--bui-font-size-2);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n color: var(--bui-fg-secondary);\n text-align: center;\n padding-bottom: var(--bui-space-2);\n width: 40px;\n }\n\n /* ============================================================\n Calendar cells\n ============================================================ */\n\n .DatePicker_bui-DatePickerCalendarCell__86a3b4043d {\n position: relative;\n width: 40px;\n height: 40px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n outline: none;\n cursor: default;\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n border-radius: var(--bui-radius-full);\n\n &[data-outside-month] {\n color: var(--bui-fg-disabled);\n }\n\n &[data-disabled] {\n color: var(--bui-fg-disabled);\n cursor: not-allowed;\n }\n\n &[data-unavailable] {\n color: var(--bui-fg-disabled);\n cursor: not-allowed;\n text-decoration: line-through;\n }\n\n &[data-hovered]:not([data-disabled]):not([data-unavailable]):not(\n [data-selected]\n ) {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-focus-visible] {\n outline: 2px solid var(--bui-ring);\n outline-offset: -2px;\n }\n\n /* Today marker */\n &[data-today]:not([data-selected]) {\n font-weight: var(--bui-font-weight-bold);\n }\n\n /* Selected day */\n &[data-selected] {\n background-color: var(--bui-bg-solid);\n color: var(--bui-fg-solid);\n }\n }\n}\n";
4
- var styles = {"bui-DatePicker":"DatePicker_bui-DatePicker__86a3b4043d","bui-DatePickerGroup":"DatePicker_bui-DatePickerGroup__86a3b4043d","bui-DatePickerButton":"DatePicker_bui-DatePickerButton__86a3b4043d","bui-DatePickerDateInput":"DatePicker_bui-DatePickerDateInput__86a3b4043d","bui-DatePickerSegment":"DatePicker_bui-DatePickerSegment__86a3b4043d","bui-DatePickerCalendar":"DatePicker_bui-DatePickerCalendar__86a3b4043d","bui-DatePickerCalendarHeader":"DatePicker_bui-DatePickerCalendarHeader__86a3b4043d","bui-DatePickerCalendarHeading":"DatePicker_bui-DatePickerCalendarHeading__86a3b4043d","bui-DatePickerCalendarNavButton":"DatePicker_bui-DatePickerCalendarNavButton__86a3b4043d","bui-DatePickerCalendarGrid":"DatePicker_bui-DatePickerCalendarGrid__86a3b4043d","bui-DatePickerCalendarHeaderCell":"DatePicker_bui-DatePickerCalendarHeaderCell__86a3b4043d","bui-DatePickerCalendarCell":"DatePicker_bui-DatePickerCalendarCell__86a3b4043d"};
3
+ var css_248z = "/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n@layer tokens, base, components, theme, utilities;\n\n@layer components {\n /* ============================================================\n Root\n ============================================================ */\n\n .DatePicker_bui-DatePicker__3f0c9df846 {\n display: flex;\n flex-direction: column;\n font-family: var(--bui-font-regular);\n width: 100%;\n flex: 1;\n }\n\n /* ============================================================\n Field group — custom container (not reusing any BUI field)\n ============================================================ */\n\n .DatePicker_bui-DatePickerGroup__3f0c9df846 {\n display: flex;\n align-items: center;\n background-color: var(--bui-bg-neutral-1);\n border-radius: var(--bui-radius-2);\n padding: 0 var(--bui-space-1) 0 var(--bui-space-3);\n width: fit-content;\n min-width: 200px;\n max-width: 100%;\n overflow: clip;\n transition: box-shadow 0.2s ease-in-out;\n cursor: text;\n\n /* bg consumer — auto-increment background based on parent context */\n &[data-on-bg='neutral-1'] {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-on-bg='neutral-2'] {\n background-color: var(--bui-bg-neutral-3);\n }\n\n &[data-on-bg='neutral-3'] {\n background-color: var(--bui-bg-neutral-4);\n }\n\n &[data-focus-within] {\n outline: none;\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n\n &[data-invalid] {\n box-shadow: inset 0 0 0 1px var(--bui-border-danger);\n }\n\n &[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Sizes */\n &[data-size='small'] {\n height: 2rem;\n padding-inline-start: var(--bui-space-2);\n }\n\n &[data-size='medium'] {\n height: 2.5rem;\n min-width: 210px;\n padding-inline-end: var(--bui-space-1);\n\n & .DatePicker_bui-DatePickerButton__3f0c9df846 {\n width: 2rem;\n height: 2rem;\n }\n }\n }\n\n /* ============================================================\n Date input\n ============================================================ */\n\n .DatePicker_bui-DatePickerDateInput__3f0c9df846 {\n flex: 1;\n display: inline-flex;\n align-items: center;\n width: unset;\n min-width: unset;\n padding: unset;\n border: unset;\n box-shadow: none;\n background: none;\n height: auto;\n overflow-x: auto;\n overflow-y: clip;\n scrollbar-width: none;\n }\n\n /* ============================================================\n Date segments (month, day, year literals and placeholders)\n ============================================================ */\n\n .DatePicker_bui-DatePickerSegment__3f0c9df846 {\n display: inline-block;\n padding: var(--bui-space-0_5) var(--bui-space-1);\n border-radius: var(--bui-radius-1);\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n caret-color: transparent;\n outline: none;\n font-variant-numeric: tabular-nums;\n\n &[data-placeholder] {\n color: var(--bui-fg-secondary);\n }\n\n &[data-type='literal'] {\n color: var(--bui-fg-secondary);\n padding: 0;\n }\n\n &[data-focused] {\n background-color: var(--bui-bg-solid);\n color: var(--bui-fg-solid);\n border-radius: var(--bui-radius-1);\n\n &[data-placeholder] {\n color: var(--bui-fg-solid);\n }\n }\n\n &[data-disabled] {\n color: var(--bui-fg-disabled);\n }\n }\n\n /* ============================================================\n Calendar trigger button\n ============================================================ */\n\n .DatePicker_bui-DatePickerButton__3f0c9df846 {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 1.5rem;\n height: 1.5rem;\n padding: 0;\n background: none;\n border: none;\n border-radius: var(--bui-radius-2);\n color: var(--bui-fg-secondary);\n cursor: pointer;\n margin-left: auto;\n transition: color 0.15s ease-in-out;\n outline: none;\n\n &[data-hovered] {\n color: var(--bui-fg-primary);\n }\n\n &[data-focus-visible] {\n box-shadow: inset 0 0 0 1px var(--bui-ring);\n }\n\n &[data-pressed] {\n color: var(--bui-fg-primary);\n }\n }\n\n /* ============================================================\n Calendar (inside Popover)\n ============================================================ */\n\n .DatePicker_bui-DatePickerCalendar__3f0c9df846 {\n width: fit-content;\n outline: none;\n }\n\n .DatePicker_bui-DatePickerCalendarHeader__3f0c9df846 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--bui-space-3);\n }\n\n .DatePicker_bui-DatePickerCalendarHeading__3f0c9df846 {\n font-size: var(--bui-font-size-3);\n font-weight: var(--bui-font-weight-bold);\n font-family: var(--bui-font-regular);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n flex: 1;\n text-align: center;\n }\n\n .DatePicker_bui-DatePickerCalendarNavButton__3f0c9df846 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--bui-space-8);\n height: var(--bui-space-8);\n background: none;\n border: none;\n border-radius: var(--bui-radius-2);\n color: var(--bui-fg-secondary);\n cursor: pointer;\n transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;\n\n &[data-hovered] {\n background-color: var(--bui-bg-neutral-2);\n color: var(--bui-fg-primary);\n }\n\n &[data-focus-visible] {\n outline: 2px solid var(--bui-ring);\n outline-offset: 1px;\n }\n\n &[data-pressed] {\n background-color: var(--bui-bg-neutral-2);\n }\n }\n\n /* ============================================================\n Calendar grid\n ============================================================ */\n\n .DatePicker_bui-DatePickerCalendarGrid__3f0c9df846 {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0 2px;\n }\n\n .DatePicker_bui-DatePickerCalendarHeaderCell__3f0c9df846 {\n font-size: var(--bui-font-size-2);\n font-weight: var(--bui-font-weight-regular);\n line-height: 1.15;\n color: var(--bui-fg-secondary);\n text-align: center;\n padding-bottom: var(--bui-space-2);\n width: 40px;\n }\n\n /* ============================================================\n Calendar cells\n ============================================================ */\n\n .DatePicker_bui-DatePickerCalendarCell__3f0c9df846 {\n position: relative;\n width: 40px;\n height: 40px;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n outline: none;\n cursor: default;\n font-size: var(--bui-font-size-3);\n font-family: var(--bui-font-regular);\n line-height: 1.15;\n color: var(--bui-fg-primary);\n border-radius: var(--bui-radius-full);\n\n &[data-outside-month] {\n color: var(--bui-fg-disabled);\n }\n\n &[data-disabled] {\n color: var(--bui-fg-disabled);\n cursor: not-allowed;\n }\n\n &[data-unavailable] {\n color: var(--bui-fg-disabled);\n cursor: not-allowed;\n text-decoration: line-through;\n }\n\n &[data-hovered]:not([data-disabled]):not([data-unavailable]):not(\n [data-selected]\n ) {\n background-color: var(--bui-bg-neutral-2);\n }\n\n &[data-focus-visible] {\n outline: 2px solid var(--bui-ring);\n outline-offset: -2px;\n }\n\n /* Today marker */\n &[data-today]:not([data-selected]) {\n font-weight: var(--bui-font-weight-bold);\n }\n\n /* Selected day */\n &[data-selected] {\n background-color: var(--bui-bg-solid);\n color: var(--bui-fg-solid);\n }\n }\n}\n";
4
+ var styles = {"bui-DatePicker":"DatePicker_bui-DatePicker__3f0c9df846","bui-DatePickerGroup":"DatePicker_bui-DatePickerGroup__3f0c9df846","bui-DatePickerButton":"DatePicker_bui-DatePickerButton__3f0c9df846","bui-DatePickerDateInput":"DatePicker_bui-DatePickerDateInput__3f0c9df846","bui-DatePickerSegment":"DatePicker_bui-DatePickerSegment__3f0c9df846","bui-DatePickerCalendar":"DatePicker_bui-DatePickerCalendar__3f0c9df846","bui-DatePickerCalendarHeader":"DatePicker_bui-DatePickerCalendarHeader__3f0c9df846","bui-DatePickerCalendarHeading":"DatePicker_bui-DatePickerCalendarHeading__3f0c9df846","bui-DatePickerCalendarNavButton":"DatePicker_bui-DatePickerCalendarNavButton__3f0c9df846","bui-DatePickerCalendarGrid":"DatePicker_bui-DatePickerCalendarGrid__3f0c9df846","bui-DatePickerCalendarHeaderCell":"DatePicker_bui-DatePickerCalendarHeaderCell__3f0c9df846","bui-DatePickerCalendarCell":"DatePicker_bui-DatePickerCalendarCell__3f0c9df846"};
5
5
  styleInject(css_248z);
6
6
 
7
7
  export { styles as default };
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"DatePicker.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerCalendar.esm.js","sources":["../../../src/components/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Calendar,\n CalendarGrid,\n CalendarGridHeader,\n CalendarHeaderCell,\n CalendarGridBody,\n CalendarCell,\n Heading,\n Button,\n} from 'react-aria-components';\nimport { RiArrowLeftSLine, RiArrowRightSLine } from '@remixicon/react';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { DatePickerCalendarDefinition } from './definition';\n\n/**\n * Calendar popover content for DatePicker — renders the Calendar with\n * navigation and a full calendar grid.\n *\n * @internal\n */\nexport const DatePickerCalendar = () => {\n const { ownProps } = useDefinition(DatePickerCalendarDefinition, {});\n const { classes } = ownProps;\n\n return (\n <Calendar className={classes.root}>\n <header className={classes.header}>\n <Button slot=\"previous\" className={classes.navButton}>\n <RiArrowLeftSLine size={16} aria-hidden=\"true\" />\n </Button>\n <Heading className={classes.heading} />\n <Button slot=\"next\" className={classes.navButton}>\n <RiArrowRightSLine size={16} aria-hidden=\"true\" />\n </Button>\n </header>\n <CalendarGrid className={classes.grid}>\n <CalendarGridHeader className={classes.gridHeader}>\n {day => (\n <CalendarHeaderCell className={classes.headerCell}>\n {day}\n </CalendarHeaderCell>\n )}\n </CalendarGridHeader>\n <CalendarGridBody className={classes.gridBody}>\n {date => <CalendarCell className={classes.cell} date={date} />}\n </CalendarGridBody>\n </CalendarGrid>\n </Calendar>\n );\n};\n"],"names":[],"mappings":";;;;;;AAoCO,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,aAAA,CAAc,4BAAA,EAA8B,EAAE,CAAA;AACnE,EAAA,MAAM,EAAE,SAAQ,GAAI,QAAA;AAEpB,EAAA,uBACE,IAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,OAAA,CAAQ,IAAA,EAC3B,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,MAAA,EACzB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,UAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,SAAA,EACzC,QAAA,kBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,IAAA,EAAM,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,CAAA,EACjD,CAAA;AAAA,sBACA,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,OAAA,CAAQ,OAAA,EAAS,CAAA;AAAA,sBACrC,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,MAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,SAAA,EACrC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAM,EAAA,EAAI,aAAA,EAAY,QAAO,CAAA,EAClD;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,OAAA,CAAQ,IAAA,EAC/B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAW,OAAA,CAAQ,UAAA,EACpC,QAAA,EAAA,CAAA,GAAA,qBACC,GAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAW,OAAA,CAAQ,UAAA,EACpC,QAAA,EAAA,GAAA,EACH,CAAA,EAEJ,CAAA;AAAA,sBACA,GAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAW,OAAA,CAAQ,QAAA,EAClC,QAAA,EAAA,CAAA,IAAA,qBAAQ,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAY,CAAA,EAC9D;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DatePickerCalendar.esm.js","sources":["../../../src/components/DatePicker/DatePickerCalendar.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Calendar,\n CalendarGrid,\n CalendarGridHeader,\n CalendarHeaderCell,\n CalendarGridBody,\n CalendarCell,\n Heading,\n Button,\n} from 'react-aria-components';\nimport { RiArrowLeftSLine, RiArrowRightSLine } from '@remixicon/react';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { DatePickerCalendarDefinition } from './definition';\n\n/**\n * Calendar popover content for DatePicker — renders the Calendar with\n * navigation and a full calendar grid.\n *\n * @internal\n */\nexport const DatePickerCalendar = () => {\n const { ownProps } = useDefinition(DatePickerCalendarDefinition, {});\n const { classes } = ownProps;\n\n return (\n <Calendar className={classes.root}>\n <header className={classes.header}>\n <Button slot=\"previous\" className={classes.navButton}>\n <RiArrowLeftSLine size={16} aria-hidden=\"true\" />\n </Button>\n <Heading className={classes.heading} />\n <Button slot=\"next\" className={classes.navButton}>\n <RiArrowRightSLine size={16} aria-hidden=\"true\" />\n </Button>\n </header>\n <CalendarGrid className={classes.grid}>\n <CalendarGridHeader className={classes.gridHeader}>\n {day => (\n <CalendarHeaderCell className={classes.headerCell}>\n {day}\n </CalendarHeaderCell>\n )}\n </CalendarGridHeader>\n <CalendarGridBody className={classes.gridBody}>\n {date => <CalendarCell className={classes.cell} date={date} />}\n </CalendarGridBody>\n </CalendarGrid>\n </Calendar>\n );\n};\n"],"names":[],"mappings":";;;;;;AAoCO,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,aAAA,CAAc,4BAAA,EAA8B,EAAE,CAAA;AACnE,EAAA,MAAM,EAAE,SAAQ,GAAI,QAAA;AAEpB,EAAA,uBACE,IAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,OAAA,CAAQ,IAAA,EAC3B,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,MAAA,EACzB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,UAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,SAAA,EACzC,QAAA,kBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,IAAA,EAAM,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,CAAA,EACjD,CAAA;AAAA,sBACA,GAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,OAAA,CAAQ,OAAA,EAAS,CAAA;AAAA,sBACrC,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,MAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,SAAA,EACrC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAM,EAAA,EAAI,aAAA,EAAY,QAAO,CAAA,EAClD;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,OAAA,CAAQ,IAAA,EAC/B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAW,OAAA,CAAQ,UAAA,EACpC,QAAA,EAAA,CAAA,GAAA,qBACC,GAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAW,OAAA,CAAQ,UAAA,EACpC,QAAA,EAAA,GAAA,EACH,CAAA,EAEJ,CAAA;AAAA,sBACA,GAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAW,OAAA,CAAQ,QAAA,EAClC,QAAA,EAAA,CAAA,IAAA,qBAAQ,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,OAAA,CAAQ,IAAA,EAAM,IAAA,EAAY,CAAA,EAC9D;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerGroup.esm.js","sources":["../../../src/components/DatePicker/DatePickerGroup.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Group, DateInput, DateSegment, Button } from 'react-aria-components';\nimport { RiCalendarLine } from '@remixicon/react';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { DatePickerGroupDefinition } from './definition';\n\n/**\n * Custom field group for DatePicker — renders a single DateInput field\n * and a calendar trigger button.\n *\n * @internal\n */\nexport const DatePickerGroup = ({ dataSize }: { dataSize?: string }) => {\n const { ownProps, dataAttributes } = useDefinition(\n DatePickerGroupDefinition,\n {},\n );\n const { classes } = ownProps;\n\n return (\n <Group\n className={classes.root}\n {...dataAttributes}\n {...(dataSize ? { 'data-size': dataSize } : {})}\n >\n <DateInput className={classes.dateInput}>\n {segment => (\n <DateSegment segment={segment} className={classes.segment} />\n )}\n </DateInput>\n <Button className={classes.button} aria-label=\"Open calendar\">\n <RiCalendarLine size={16} aria-hidden=\"true\" />\n </Button>\n </Group>\n );\n};\n"],"names":[],"mappings":";;;;;;AA2BO,MAAM,eAAA,GAAkB,CAAC,EAAE,QAAA,EAAS,KAA6B;AACtE,EAAA,MAAM,EAAE,QAAA,EAAU,cAAA,EAAe,GAAI,aAAA;AAAA,IACnC,yBAAA;AAAA,IACA;AAAC,GACH;AACA,EAAA,MAAM,EAAE,SAAQ,GAAI,QAAA;AAEpB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,OAAA,CAAQ,IAAA;AAAA,MAClB,GAAG,cAAA;AAAA,MACH,GAAI,QAAA,GAAW,EAAE,WAAA,EAAa,QAAA,KAAa,EAAC;AAAA,MAE7C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAW,OAAA,CAAQ,SAAA,EAC3B,QAAA,EAAA,CAAA,OAAA,qBACC,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,SAAA,EAAW,OAAA,CAAQ,OAAA,EAAS,CAAA,EAE/D,CAAA;AAAA,wBACA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,MAAA,EAAQ,YAAA,EAAW,eAAA,EAC5C,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAM,EAAA,EAAI,aAAA,EAAY,QAAO,CAAA,EAC/C;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"DatePickerGroup.esm.js","sources":["../../../src/components/DatePicker/DatePickerGroup.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Group, DateInput, DateSegment, Button } from 'react-aria-components';\nimport { RiCalendarLine } from '@remixicon/react';\nimport { useDefinition } from '../../hooks/useDefinition';\nimport { DatePickerGroupDefinition } from './definition';\n\n/**\n * Custom field group for DatePicker — renders a single DateInput field\n * and a calendar trigger button.\n *\n * @internal\n */\nexport const DatePickerGroup = ({ dataSize }: { dataSize?: string }) => {\n const { ownProps, dataAttributes } = useDefinition(\n DatePickerGroupDefinition,\n {},\n );\n const { classes } = ownProps;\n\n return (\n <Group\n className={classes.root}\n {...dataAttributes}\n {...(dataSize ? { 'data-size': dataSize } : {})}\n >\n <DateInput className={classes.dateInput}>\n {segment => (\n <DateSegment segment={segment} className={classes.segment} />\n )}\n </DateInput>\n <Button className={classes.button} aria-label=\"Open calendar\">\n <RiCalendarLine size={16} aria-hidden=\"true\" />\n </Button>\n </Group>\n );\n};\n"],"names":[],"mappings":";;;;;;AA2BO,MAAM,eAAA,GAAkB,CAAC,EAAE,QAAA,EAAS,KAA6B;AACtE,EAAA,MAAM,EAAE,QAAA,EAAU,cAAA,EAAe,GAAI,aAAA;AAAA,IACnC,yBAAA;AAAA,IACA;AAAC,GACH;AACA,EAAA,MAAM,EAAE,SAAQ,GAAI,QAAA;AAEpB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,OAAA,CAAQ,IAAA;AAAA,MAClB,GAAG,cAAA;AAAA,MACH,GAAI,QAAA,GAAW,EAAE,WAAA,EAAa,QAAA,KAAa,EAAC;AAAA,MAE7C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAW,OAAA,CAAQ,SAAA,EAC3B,QAAA,EAAA,CAAA,OAAA,qBACC,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,SAAA,EAAW,OAAA,CAAQ,OAAA,EAAS,CAAA,EAE/D,CAAA;AAAA,wBACA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAW,OAAA,CAAQ,MAAA,EAAQ,YAAA,EAAW,eAAA,EAC5C,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAM,EAAA,EAAI,aAAA,EAAY,QAAO,CAAA,EAC/C;AAAA;AAAA;AAAA,GACF;AAEJ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"definition.esm.js","sources":["../../../src/components/DatePicker/definition.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type { DatePickerOwnProps } from './types';\nimport styles from './DatePicker.module.css';\n\n/**\n * Component definition for DatePicker\n * @public\n */\nexport const DatePickerDefinition = defineComponent<DatePickerOwnProps>()({\n styles,\n classNames: {\n root: 'bui-DatePicker',\n },\n propDefs: {\n size: { dataAttribute: true, default: 'small' },\n className: {},\n label: {},\n description: {},\n secondaryLabel: {},\n },\n});\n\n/**\n * Component definition for DatePickerGroup\n * @public\n */\nexport const DatePickerGroupDefinition = defineComponent<\n Record<string, never>\n>()({\n styles,\n classNames: {\n root: 'bui-DatePickerGroup',\n dateInput: 'bui-DatePickerDateInput',\n segment: 'bui-DatePickerSegment',\n button: 'bui-DatePickerButton',\n },\n bg: 'consumer',\n propDefs: {},\n});\n\n/**\n * Component definition for DatePickerCalendar\n * @public\n */\nexport const DatePickerCalendarDefinition = defineComponent<\n Record<string, never>\n>()({\n styles,\n classNames: {\n root: 'bui-DatePickerCalendar',\n header: 'bui-DatePickerCalendarHeader',\n heading: 'bui-DatePickerCalendarHeading',\n navButton: 'bui-DatePickerCalendarNavButton',\n grid: 'bui-DatePickerCalendarGrid',\n gridHeader: 'bui-DatePickerCalendarGridHeader',\n headerCell: 'bui-DatePickerCalendarHeaderCell',\n gridBody: 'bui-DatePickerCalendarGridBody',\n cell: 'bui-DatePickerCalendarCell',\n },\n propDefs: {},\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAwBO,MAAM,oBAAA,GAAuB,iBAAoC,CAAE;AAAA,EACxE,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,EAAE,aAAA,EAAe,IAAA,EAAM,SAAS,OAAA,EAAQ;AAAA,IAC9C,WAAW,EAAC;AAAA,IACZ,OAAO,EAAC;AAAA,IACR,aAAa,EAAC;AAAA,IACd,gBAAgB;AAAC;AAErB,CAAC;AAMM,MAAM,yBAAA,GAA4B,iBAEvC,CAAE;AAAA,EACF,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,qBAAA;AAAA,IACN,SAAA,EAAW,yBAAA;AAAA,IACX,OAAA,EAAS,uBAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,EAAA,EAAI,UAAA;AAAA,EACJ,UAAU;AACZ,CAAC;AAMM,MAAM,4BAAA,GAA+B,iBAE1C,CAAE;AAAA,EACF,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,wBAAA;AAAA,IACN,MAAA,EAAQ,8BAAA;AAAA,IACR,OAAA,EAAS,+BAAA;AAAA,IACT,SAAA,EAAW,iCAAA;AAAA,IACX,IAAA,EAAM,4BAAA;AAAA,IACN,UAAA,EAAY,kCAAA;AAAA,IACZ,UAAA,EAAY,kCAAA;AAAA,IACZ,QAAA,EAAU,gCAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,UAAU;AACZ,CAAC;;;;"}
1
+ {"version":3,"file":"definition.esm.js","sources":["../../../src/components/DatePicker/definition.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { defineComponent } from '../../hooks/useDefinition';\nimport type { DatePickerOwnProps } from './types';\nimport styles from './DatePicker.module.css';\n\n/**\n * Component definition for DatePicker\n * @public\n */\nexport const DatePickerDefinition = defineComponent<DatePickerOwnProps>()({\n styles,\n classNames: {\n root: 'bui-DatePicker',\n },\n propDefs: {\n size: { dataAttribute: true, default: 'small' },\n className: {},\n label: {},\n description: {},\n secondaryLabel: {},\n },\n});\n\n/**\n * Component definition for DatePickerGroup\n * @public\n */\nexport const DatePickerGroupDefinition = defineComponent<\n Record<string, never>\n>()({\n styles,\n classNames: {\n root: 'bui-DatePickerGroup',\n dateInput: 'bui-DatePickerDateInput',\n segment: 'bui-DatePickerSegment',\n button: 'bui-DatePickerButton',\n },\n bg: 'consumer',\n propDefs: {},\n});\n\n/**\n * Component definition for DatePickerCalendar\n * @public\n */\nexport const DatePickerCalendarDefinition = defineComponent<\n Record<string, never>\n>()({\n styles,\n classNames: {\n root: 'bui-DatePickerCalendar',\n header: 'bui-DatePickerCalendarHeader',\n heading: 'bui-DatePickerCalendarHeading',\n navButton: 'bui-DatePickerCalendarNavButton',\n grid: 'bui-DatePickerCalendarGrid',\n gridHeader: 'bui-DatePickerCalendarGridHeader',\n headerCell: 'bui-DatePickerCalendarHeaderCell',\n gridBody: 'bui-DatePickerCalendarGridBody',\n cell: 'bui-DatePickerCalendarCell',\n },\n propDefs: {},\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAwBO,MAAM,oBAAA,GAAuB,iBAAoC,CAAE;AAAA,EACxE,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,EAAE,aAAA,EAAe,IAAA,EAAM,SAAS,OAAA,EAAQ;AAAA,IAC9C,WAAW,EAAC;AAAA,IACZ,OAAO,EAAC;AAAA,IACR,aAAa,EAAC;AAAA,IACd,gBAAgB;AAAC;AAErB,CAAC;AAMM,MAAM,yBAAA,GAA4B,iBAEvC,CAAE;AAAA,EACF,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,qBAAA;AAAA,IACN,SAAA,EAAW,yBAAA;AAAA,IACX,OAAA,EAAS,uBAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,EAAA,EAAI,UAAA;AAAA,EACJ,UAAU;AACZ,CAAC;AAMM,MAAM,4BAAA,GAA+B,iBAE1C,CAAE;AAAA,EACF,MAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,wBAAA;AAAA,IACN,MAAA,EAAQ,8BAAA;AAAA,IACR,OAAA,EAAS,+BAAA;AAAA,IACT,SAAA,EAAW,iCAAA;AAAA,IACX,IAAA,EAAM,4BAAA;AAAA,IACN,UAAA,EAAY,kCAAA;AAAA,IACZ,UAAA,EAAY,kCAAA;AAAA,IACZ,QAAA,EAAU,gCAAA;AAAA,IACV,IAAA,EAAM;AAAA,GACR;AAAA,EACA,UAAU;AACZ,CAAC;;"}