@nordhealth/components 4.26.2 → 5.0.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 (583) hide show
  1. package/custom-elements.json +51620 -18552
  2. package/lib/Accordion.js +2 -0
  3. package/lib/Accordion.js.map +1 -0
  4. package/lib/AccordionHeader.js +2 -0
  5. package/lib/AccordionHeader.js.map +1 -0
  6. package/lib/AccordionItem.js +2 -0
  7. package/lib/AccordionItem.js.map +1 -0
  8. package/lib/AccordionPanel.js +2 -0
  9. package/lib/AccordionPanel.js.map +1 -0
  10. package/lib/AccordionTrigger.js +2 -0
  11. package/lib/AccordionTrigger.js.map +1 -0
  12. package/lib/ActiveDescendantController-BnMqM79O.js +2 -0
  13. package/lib/ActiveDescendantController-BnMqM79O.js.map +1 -0
  14. package/lib/Aside.js +5 -7
  15. package/lib/Aside.js.map +1 -1
  16. package/lib/AsideDrawer.js +7 -11
  17. package/lib/AsideDrawer.js.map +1 -1
  18. package/lib/AsideTrigger.js +3 -4
  19. package/lib/AsideTrigger.js.map +1 -1
  20. package/lib/Autocomplete.js +2 -0
  21. package/lib/Autocomplete.js.map +1 -0
  22. package/lib/Avatar.js +1 -1
  23. package/lib/Avatar.js.map +1 -1
  24. package/lib/Badge.js +1 -1
  25. package/lib/Badge.js.map +1 -1
  26. package/lib/Banner.js +1 -1
  27. package/lib/Banner.js.map +1 -1
  28. package/lib/Button.js +7 -12
  29. package/lib/Button.js.map +1 -1
  30. package/lib/ButtonGroup.js +1 -1
  31. package/lib/ButtonGroup.js.map +1 -1
  32. package/lib/Calendar-D47b20IT.js +2 -0
  33. package/lib/Calendar-D47b20IT.js.map +1 -0
  34. package/lib/Calendar.js +1 -1
  35. package/lib/Card.js +1 -1
  36. package/lib/Card.js.map +1 -1
  37. package/lib/Checkbox.js +1 -1
  38. package/lib/Checkbox.js.map +1 -1
  39. package/lib/CollapseController-BtKNFNyJ.js +2 -0
  40. package/lib/CollapseController-BtKNFNyJ.js.map +1 -0
  41. package/lib/Collapsible.js +2 -0
  42. package/lib/Collapsible.js.map +1 -0
  43. package/lib/CollapsiblePanel.js +2 -0
  44. package/lib/CollapsiblePanel.js.map +1 -0
  45. package/lib/CollapsibleTrigger.js +2 -0
  46. package/lib/CollapsibleTrigger.js.map +1 -0
  47. package/lib/Combobox-DBxXlbY7.js +2 -0
  48. package/lib/Combobox-DBxXlbY7.js.map +1 -0
  49. package/lib/Combobox.js +2 -0
  50. package/lib/Combobox.js.map +1 -0
  51. package/lib/ComboboxBase.js +2 -0
  52. package/lib/ComboboxBase.js.map +1 -0
  53. package/lib/ComboboxEvents.js +2 -0
  54. package/lib/ComboboxEvents.js.map +1 -0
  55. package/lib/ComboboxGroup.js +2 -0
  56. package/lib/ComboboxGroup.js.map +1 -0
  57. package/lib/ComboboxOption.js +2 -0
  58. package/lib/ComboboxOption.js.map +1 -0
  59. package/lib/CommandMenu.js +1 -1
  60. package/lib/CommandMenu.js.map +1 -1
  61. package/lib/CommandMenuAction.js +1 -1
  62. package/lib/CommandMenuAction.js.map +1 -1
  63. package/lib/Component-BJ5O5n8k.js +2 -0
  64. package/lib/Component-BJ5O5n8k.js.map +1 -0
  65. package/lib/DatePicker.js +1 -1
  66. package/lib/DatePicker.js.map +1 -1
  67. package/lib/DateRangeChangeEvent.js +2 -0
  68. package/lib/DateRangeChangeEvent.js.map +1 -0
  69. package/lib/DateRangePicker.js +2 -0
  70. package/lib/DateRangePicker.js.map +1 -0
  71. package/lib/DateRangeSelectEvent.js +2 -0
  72. package/lib/DateRangeSelectEvent.js.map +1 -0
  73. package/lib/Divider.js +1 -1
  74. package/lib/Divider.js.map +1 -1
  75. package/lib/DraftComponentMixin-4qug5Rky.js +2 -0
  76. package/lib/DraftComponentMixin-4qug5Rky.js.map +1 -0
  77. package/lib/Drawer.js +1 -1
  78. package/lib/Drawer.js.map +1 -1
  79. package/lib/Dropdown.js +1 -1
  80. package/lib/Dropdown.js.map +1 -1
  81. package/lib/DropdownGroup.js +1 -1
  82. package/lib/DropdownGroup.js.map +1 -1
  83. package/lib/DropdownItem-BYbOLth6.js +2 -0
  84. package/lib/DropdownItem-BYbOLth6.js.map +1 -0
  85. package/lib/DropdownItem.js +1 -1
  86. package/lib/DropdownItem.js.map +1 -1
  87. package/lib/DropdownSubmenu.js +1 -1
  88. package/lib/DropdownSubmenu.js.map +1 -1
  89. package/lib/EmptyState.js +1 -1
  90. package/lib/EmptyState.js.map +1 -1
  91. package/lib/Field.js +2 -0
  92. package/lib/Field.js.map +1 -0
  93. package/lib/FieldContent.js +2 -0
  94. package/lib/FieldContent.js.map +1 -0
  95. package/lib/FieldControlMixin-BXNZJXu9.js +2 -0
  96. package/lib/FieldControlMixin-BXNZJXu9.js.map +1 -0
  97. package/lib/FieldDescription.js +2 -0
  98. package/lib/FieldDescription.js.map +1 -0
  99. package/lib/FieldError.js +2 -0
  100. package/lib/FieldError.js.map +1 -0
  101. package/lib/FieldGroup.js +2 -0
  102. package/lib/FieldGroup.js.map +1 -0
  103. package/lib/FieldLabel.js +2 -0
  104. package/lib/FieldLabel.js.map +1 -0
  105. package/lib/FieldLegend.js +2 -0
  106. package/lib/FieldLegend.js.map +1 -0
  107. package/lib/FieldSeparator.js +2 -0
  108. package/lib/FieldSeparator.js.map +1 -0
  109. package/lib/FieldSet.js +2 -0
  110. package/lib/FieldSet.js.map +1 -0
  111. package/lib/FieldTitle.js +2 -0
  112. package/lib/FieldTitle.js.map +1 -0
  113. package/lib/Fieldset2.js +2 -0
  114. package/lib/Fieldset2.js.map +1 -0
  115. package/lib/FilterAddButton.js +2 -0
  116. package/lib/FilterAddButton.js.map +1 -0
  117. package/lib/FilterAddButtonEvents.js +2 -0
  118. package/lib/FilterAddButtonEvents.js.map +1 -0
  119. package/lib/FilterBar.js +2 -0
  120. package/lib/FilterBar.js.map +1 -0
  121. package/lib/FilterDateRange.js +2 -0
  122. package/lib/FilterDateRange.js.map +1 -0
  123. package/lib/FilterDateRangeEvents.js +2 -0
  124. package/lib/FilterDateRangeEvents.js.map +1 -0
  125. package/lib/FilterDropdown.js +2 -0
  126. package/lib/FilterDropdown.js.map +1 -0
  127. package/lib/FilterDropdownEvents.js +2 -0
  128. package/lib/FilterDropdownEvents.js.map +1 -0
  129. package/lib/FilterField.js +2 -0
  130. package/lib/FilterField.js.map +1 -0
  131. package/lib/FilterFieldEvents.js +2 -0
  132. package/lib/FilterFieldEvents.js.map +1 -0
  133. package/lib/FilterInput.js +2 -0
  134. package/lib/FilterInput.js.map +1 -0
  135. package/lib/FilterResetButton.js +2 -0
  136. package/lib/FilterResetButton.js.map +1 -0
  137. package/lib/FocusableWhenDisabledController-C_Mn1mfN.js +2 -0
  138. package/lib/FocusableWhenDisabledController-C_Mn1mfN.js.map +1 -0
  139. package/lib/Footer.js +1 -1
  140. package/lib/Footer.js.map +1 -1
  141. package/lib/FormAssociatedMixin-D9aPREgv.js +2 -0
  142. package/lib/FormAssociatedMixin-D9aPREgv.js.map +1 -0
  143. package/lib/FormField-CMgEFZCK.js +2 -0
  144. package/lib/FormField-CMgEFZCK.js.map +1 -0
  145. package/lib/Header.js +1 -1
  146. package/lib/Header.js.map +1 -1
  147. package/lib/Icon.js +1 -1
  148. package/lib/Icon.js.map +1 -1
  149. package/lib/Input.js +1 -1
  150. package/lib/Input.js.map +1 -1
  151. package/lib/Item.js +2 -0
  152. package/lib/Item.js.map +1 -0
  153. package/lib/ItemActions.js +2 -0
  154. package/lib/ItemActions.js.map +1 -0
  155. package/lib/ItemContent.js +2 -0
  156. package/lib/ItemContent.js.map +1 -0
  157. package/lib/ItemDescription.js +2 -0
  158. package/lib/ItemDescription.js.map +1 -0
  159. package/lib/ItemFooter.js +2 -0
  160. package/lib/ItemFooter.js.map +1 -0
  161. package/lib/ItemGroup.js +2 -0
  162. package/lib/ItemGroup.js.map +1 -0
  163. package/lib/ItemHeader.js +2 -0
  164. package/lib/ItemHeader.js.map +1 -0
  165. package/lib/ItemMedia.js +2 -0
  166. package/lib/ItemMedia.js.map +1 -0
  167. package/lib/ItemSeparator.js +2 -0
  168. package/lib/ItemSeparator.js.map +1 -0
  169. package/lib/ItemTitle.js +2 -0
  170. package/lib/ItemTitle.js.map +1 -0
  171. package/lib/Kbd.js +2 -0
  172. package/lib/Kbd.js.map +1 -0
  173. package/lib/KbdGroup.js +2 -0
  174. package/lib/KbdGroup.js.map +1 -0
  175. package/lib/KeyboardController.js +1 -1
  176. package/lib/KeyboardController.js.map +1 -1
  177. package/lib/Layout.js +1 -3
  178. package/lib/Layout.js.map +1 -1
  179. package/lib/{LightDismissController-4pH8cdko.js → LightDismissController-wcL1ziJa.js} +2 -2
  180. package/lib/{LightDismissController-4pH8cdko.js.map → LightDismissController-wcL1ziJa.js.map} +1 -1
  181. package/lib/LocalizeController.js +1 -1
  182. package/lib/LocalizeController.js.map +1 -1
  183. package/lib/Message.js +1 -1
  184. package/lib/Message.js.map +1 -1
  185. package/lib/Meter.js +2 -0
  186. package/lib/Meter.js.map +1 -0
  187. package/lib/Modal.js +1 -1
  188. package/lib/Modal.js.map +1 -1
  189. package/lib/ModalController.js +1 -1
  190. package/lib/ModalController.js.map +1 -1
  191. package/lib/NavGroup.js +1 -1
  192. package/lib/NavGroup.js.map +1 -1
  193. package/lib/NavItem.js +1 -1
  194. package/lib/NavItem.js.map +1 -1
  195. package/lib/NavToggle-BY83xpx0.js +2 -0
  196. package/lib/NavToggle-BY83xpx0.js.map +1 -0
  197. package/lib/NavToggle.js +1 -1
  198. package/lib/Navigation.js +1 -1
  199. package/lib/Navigation.js.map +1 -1
  200. package/lib/Notification.js +1 -1
  201. package/lib/Notification.js.map +1 -1
  202. package/lib/NotificationGroup.js +1 -1
  203. package/lib/NotificationGroup.js.map +1 -1
  204. package/lib/NumberField.js +2 -0
  205. package/lib/NumberField.js.map +1 -0
  206. package/lib/NumberFieldEvents.js +2 -0
  207. package/lib/NumberFieldEvents.js.map +1 -0
  208. package/lib/OpenStateController-CCnZ7up6.js +2 -0
  209. package/lib/OpenStateController-CCnZ7up6.js.map +1 -0
  210. package/lib/OtpField.js +2 -0
  211. package/lib/OtpField.js.map +1 -0
  212. package/lib/OtpFieldEvents.js +2 -0
  213. package/lib/OtpFieldEvents.js.map +1 -0
  214. package/lib/Outline.js +2 -0
  215. package/lib/Outline.js.map +1 -0
  216. package/lib/OutlineItem.js +2 -0
  217. package/lib/OutlineItem.js.map +1 -0
  218. package/lib/Pagination.js +2 -0
  219. package/lib/Pagination.js.map +1 -0
  220. package/lib/PaginationContent.js +2 -0
  221. package/lib/PaginationContent.js.map +1 -0
  222. package/lib/PaginationEllipsis.js +2 -0
  223. package/lib/PaginationEllipsis.js.map +1 -0
  224. package/lib/PaginationItem.js +2 -0
  225. package/lib/PaginationItem.js.map +1 -0
  226. package/lib/PaginationLink.js +2 -0
  227. package/lib/PaginationLink.js.map +1 -0
  228. package/lib/PaginationNext.js +2 -0
  229. package/lib/PaginationNext.js.map +1 -0
  230. package/lib/PaginationPrevious.js +2 -0
  231. package/lib/PaginationPrevious.js.map +1 -0
  232. package/lib/Popout-CFtFoCaA.js +2 -0
  233. package/lib/Popout-CFtFoCaA.js.map +1 -0
  234. package/lib/Popout.js +1 -1
  235. package/lib/Progress.js +1 -1
  236. package/lib/Progress.js.map +1 -1
  237. package/lib/ProgressBar.js +1 -1
  238. package/lib/ProgressBar.js.map +1 -1
  239. package/lib/Qrcode.js +2 -2
  240. package/lib/Qrcode.js.map +1 -1
  241. package/lib/Radio.js +1 -1
  242. package/lib/Radio.js.map +1 -1
  243. package/lib/Range.js +1 -1
  244. package/lib/Range.js.map +1 -1
  245. package/lib/ReadonlyMixin-BdJPGtQ3.js +2 -0
  246. package/lib/ReadonlyMixin-BdJPGtQ3.js.map +1 -0
  247. package/lib/ResizeController-14PUwRQy.js +2 -0
  248. package/lib/ResizeController-14PUwRQy.js.map +1 -0
  249. package/lib/ScrollArea.js +2 -0
  250. package/lib/ScrollArea.js.map +1 -0
  251. package/lib/SegmentedControl.js +1 -1
  252. package/lib/SegmentedControl.js.map +1 -1
  253. package/lib/SegmentedControlItem.js +23 -40
  254. package/lib/SegmentedControlItem.js.map +1 -1
  255. package/lib/Select.js +1 -1
  256. package/lib/Select.js.map +1 -1
  257. package/lib/ShortcutController-CV5b0BZl.js +2 -0
  258. package/lib/ShortcutController-CV5b0BZl.js.map +1 -0
  259. package/lib/Skeleton.js +1 -1
  260. package/lib/Skeleton.js.map +1 -1
  261. package/lib/Spinner.js +1 -1
  262. package/lib/Spinner.js.map +1 -1
  263. package/lib/Stack.js +1 -1
  264. package/lib/Stack.js.map +1 -1
  265. package/lib/StateAttributesController-BIh96sXZ.js +2 -0
  266. package/lib/StateAttributesController-BIh96sXZ.js.map +1 -0
  267. package/lib/Sticky-CZImMrGj.js +2 -0
  268. package/lib/Sticky-CZImMrGj.js.map +1 -0
  269. package/lib/Tab.js +1 -1
  270. package/lib/Tab.js.map +1 -1
  271. package/lib/TabGroup.js +1 -1
  272. package/lib/TabGroup.js.map +1 -1
  273. package/lib/TabPanel.js +1 -1
  274. package/lib/TabPanel.js.map +1 -1
  275. package/lib/Table.js +1 -1
  276. package/lib/Table.js.map +1 -1
  277. package/lib/Tag.js +1 -1
  278. package/lib/Tag.js.map +1 -1
  279. package/lib/TagGroup.js +1 -1
  280. package/lib/TagGroup.js.map +1 -1
  281. package/lib/TextField-CSKvieoG.js +2 -0
  282. package/lib/TextField-CSKvieoG.js.map +1 -0
  283. package/lib/TextSelectableMixin-Cfv__lHS.js.map +1 -1
  284. package/lib/Textarea.js +1 -1
  285. package/lib/Textarea.js.map +1 -1
  286. package/lib/TimePicker.js +2 -0
  287. package/lib/TimePicker.js.map +1 -0
  288. package/lib/Toast.js +1 -1
  289. package/lib/Toast.js.map +1 -1
  290. package/lib/ToastGroup.js +1 -1
  291. package/lib/ToastGroup.js.map +1 -1
  292. package/lib/Toggle.js +1 -1
  293. package/lib/Toggle.js.map +1 -1
  294. package/lib/Tooltip.js +1 -1
  295. package/lib/Tooltip.js.map +1 -1
  296. package/lib/TopBar.js +1 -1
  297. package/lib/TopBar.js.map +1 -1
  298. package/lib/Truncate.js +1 -1
  299. package/lib/Truncate.js.map +1 -1
  300. package/lib/VisuallyHidden.js +1 -1
  301. package/lib/VisuallyHidden.js.map +1 -1
  302. package/lib/bundle.js +91 -91
  303. package/lib/bundle.js.map +1 -1
  304. package/lib/combobox-context.js +2 -0
  305. package/lib/combobox-context.js.map +1 -0
  306. package/lib/context-consumer-BJVUulGf.js +7 -0
  307. package/lib/context-consumer-BJVUulGf.js.map +1 -0
  308. package/lib/context-provider-D8lrPLVi.js +12 -0
  309. package/lib/context-provider-D8lrPLVi.js.map +1 -0
  310. package/lib/context-request-event-CCRlXoeR.js +7 -0
  311. package/lib/context-request-event-CCRlXoeR.js.map +1 -0
  312. package/lib/create-context-CJ69ntlY.js +7 -0
  313. package/lib/create-context-CJ69ntlY.js.map +1 -0
  314. package/lib/currency.js +2 -0
  315. package/lib/currency.js.map +1 -0
  316. package/lib/date-adapter.js +1 -1
  317. package/lib/dates-C-ZvzXaC.js +2 -0
  318. package/lib/dates-C-ZvzXaC.js.map +1 -0
  319. package/lib/dates.js +2 -0
  320. package/lib/dates.js.map +1 -0
  321. package/lib/dismiss.js +2 -0
  322. package/lib/dismiss.js.map +1 -0
  323. package/lib/en-us.js +1 -1
  324. package/lib/en-us.js.map +1 -1
  325. package/lib/fi-fi.js +1 -1
  326. package/lib/fi-fi.js.map +1 -1
  327. package/lib/field-context.js +2 -0
  328. package/lib/field-context.js.map +1 -0
  329. package/lib/filter-chip-C97zd4PT.js +2 -0
  330. package/lib/filter-chip-C97zd4PT.js.map +1 -0
  331. package/lib/format.js +2 -0
  332. package/lib/format.js.map +1 -0
  333. package/lib/index.js +1 -1
  334. package/lib/interface-add-small-B-hv2v9J.js +2 -0
  335. package/lib/interface-add-small-B-hv2v9J.js.map +1 -0
  336. package/lib/interface-calendar-Cw2bJfbS.js +2 -0
  337. package/lib/interface-calendar-Cw2bJfbS.js.map +1 -0
  338. package/lib/interface-close-BvKnv9eh.js +2 -0
  339. package/lib/interface-close-BvKnv9eh.js.map +1 -0
  340. package/lib/interface-dropdown-small-CYvgxudU.js +2 -0
  341. package/lib/interface-dropdown-small-CYvgxudU.js.map +1 -0
  342. package/lib/interface-filter-CCsx9-u6.js +2 -0
  343. package/lib/interface-filter-CCsx9-u6.js.map +1 -0
  344. package/lib/interface-remove-small-DUaWSs90.js +2 -0
  345. package/lib/interface-remove-small-DUaWSs90.js.map +1 -0
  346. package/lib/light-dom-styles-DXsbiKU9.js +2 -0
  347. package/lib/light-dom-styles-DXsbiKU9.js.map +1 -0
  348. package/lib/localization.js +1 -1
  349. package/lib/localization.js.map +1 -1
  350. package/lib/localization10.js +2 -0
  351. package/lib/localization10.js.map +1 -0
  352. package/lib/localization11.js +2 -0
  353. package/lib/localization11.js.map +1 -0
  354. package/lib/localization12.js +2 -0
  355. package/lib/localization12.js.map +1 -0
  356. package/lib/localization13.js +2 -0
  357. package/lib/localization13.js.map +1 -0
  358. package/lib/localization14.js +2 -0
  359. package/lib/localization14.js.map +1 -0
  360. package/lib/localization15.js +2 -0
  361. package/lib/localization15.js.map +1 -0
  362. package/lib/localization16.js +2 -0
  363. package/lib/localization16.js.map +1 -0
  364. package/lib/localization17.js +2 -0
  365. package/lib/localization17.js.map +1 -0
  366. package/lib/localization18.js +2 -0
  367. package/lib/localization18.js.map +1 -0
  368. package/lib/localization19.js +2 -0
  369. package/lib/localization19.js.map +1 -0
  370. package/lib/localization2.js +1 -1
  371. package/lib/localization2.js.map +1 -1
  372. package/lib/localization20.js +2 -0
  373. package/lib/localization20.js.map +1 -0
  374. package/lib/localization21.js +2 -0
  375. package/lib/localization21.js.map +1 -0
  376. package/lib/localization22.js +2 -0
  377. package/lib/localization22.js.map +1 -0
  378. package/lib/localization23.js +2 -0
  379. package/lib/localization23.js.map +1 -0
  380. package/lib/localization3.js +1 -1
  381. package/lib/localization3.js.map +1 -1
  382. package/lib/localization4.js +1 -1
  383. package/lib/localization4.js.map +1 -1
  384. package/lib/localization5.js +1 -1
  385. package/lib/localization5.js.map +1 -1
  386. package/lib/localization6.js +1 -1
  387. package/lib/localization6.js.map +1 -1
  388. package/lib/localization7.js +1 -1
  389. package/lib/localization7.js.map +1 -1
  390. package/lib/localization8.js +1 -1
  391. package/lib/localization8.js.map +1 -1
  392. package/lib/localization9.js +1 -1
  393. package/lib/localization9.js.map +1 -1
  394. package/lib/navigation-search-CBbIGzo2.js +2 -0
  395. package/lib/navigation-search-CBbIGzo2.js.map +1 -0
  396. package/lib/paginate.js +2 -0
  397. package/lib/paginate.js.map +1 -0
  398. package/lib/parse.js +2 -0
  399. package/lib/parse.js.map +1 -0
  400. package/lib/primitives-Dj0vyf1-.js +2 -0
  401. package/lib/primitives-Dj0vyf1-.js.map +1 -0
  402. package/lib/react.d.ts +520 -0
  403. package/lib/src/accordion/Accordion.d.ts +121 -0
  404. package/lib/src/accordion/AccordionHeader.d.ts +28 -0
  405. package/lib/src/accordion/AccordionItem.d.ts +68 -0
  406. package/lib/src/accordion/AccordionPanel.d.ts +35 -0
  407. package/lib/src/accordion/AccordionTrigger.d.ts +48 -0
  408. package/lib/src/aside/Aside.d.ts +1 -1
  409. package/lib/src/aside-drawer/AsideDrawer.d.ts +3 -1
  410. package/lib/src/aside-trigger/AsideTrigger.d.ts +2 -0
  411. package/lib/src/autocomplete/Autocomplete.d.ts +190 -0
  412. package/lib/src/autocomplete/localization.d.ts +5 -0
  413. package/lib/src/avatar/Avatar.d.ts +1 -1
  414. package/lib/src/badge/Badge.d.ts +1 -1
  415. package/lib/src/banner/Banner.d.ts +3 -0
  416. package/lib/src/button-group/ButtonGroup.d.ts +1 -1
  417. package/lib/src/calendar/Calendar.d.ts +45 -1
  418. package/lib/src/calendar/DateRangeSelectEvent.d.ts +16 -0
  419. package/lib/src/card/Card.d.ts +1 -1
  420. package/lib/src/collapsible/Collapsible.d.ts +69 -0
  421. package/lib/src/collapsible/CollapsiblePanel.d.ts +35 -0
  422. package/lib/src/collapsible/CollapsibleTrigger.d.ts +38 -0
  423. package/lib/src/combobox/Combobox.d.ts +131 -0
  424. package/lib/src/combobox/ComboboxBase.d.ts +421 -0
  425. package/lib/src/combobox/ComboboxEvents.d.ts +25 -0
  426. package/lib/src/combobox/ComboboxGroup.d.ts +34 -0
  427. package/lib/src/combobox/ComboboxOption.d.ts +47 -0
  428. package/lib/src/combobox/combobox-context.d.ts +18 -0
  429. package/lib/src/combobox/localization.d.ts +6 -0
  430. package/lib/src/common/controllers/ActiveDescendantController.d.ts +45 -0
  431. package/lib/src/common/controllers/CollapseController.d.ts +50 -0
  432. package/lib/src/common/controllers/FocusableWhenDisabledController.d.ts +29 -0
  433. package/lib/src/common/controllers/OpenStateController.d.ts +58 -0
  434. package/lib/src/common/controllers/RovingFocusController.d.ts +40 -0
  435. package/lib/src/common/controllers/ShortcutController.d.ts +5 -5
  436. package/lib/src/common/controllers/StateAttributesController.d.ts +47 -0
  437. package/lib/src/common/controllers/TransitionStatusController.d.ts +48 -0
  438. package/lib/src/common/dates.d.ts +13 -0
  439. package/lib/src/common/light-dom-styles.d.ts +17 -0
  440. package/lib/src/common/mixins/FieldControlMixin.d.ts +60 -0
  441. package/lib/src/common/mixins/FormAssociatedMixin.d.ts +8 -25
  442. package/lib/src/common/mixins/TextSelectableMixin.d.ts +1 -0
  443. package/lib/src/common/prefers-reduced-motion.d.ts +7 -0
  444. package/lib/src/date-picker/DatePicker.d.ts +2 -0
  445. package/lib/src/date-range-picker/DateRangeChangeEvent.d.ts +27 -0
  446. package/lib/src/date-range-picker/DateRangePicker.d.ts +307 -0
  447. package/lib/src/date-range-picker/localization.d.ts +42 -0
  448. package/lib/src/divider/Divider.d.ts +1 -1
  449. package/lib/src/drawer/Drawer.d.ts +1 -1
  450. package/lib/src/dropdown/Dropdown.d.ts +1 -1
  451. package/lib/src/dropdown-group/DropdownGroup.d.ts +3 -1
  452. package/lib/src/dropdown-item/DropdownItem.d.ts +3 -1
  453. package/lib/src/dropdown-submenu/DropdownSubmenu.d.ts +2 -0
  454. package/lib/src/field/Field.d.ts +102 -0
  455. package/lib/src/field/FieldContent.d.ts +22 -0
  456. package/lib/src/field/FieldDescription.d.ts +21 -0
  457. package/lib/src/field/FieldError.d.ts +25 -0
  458. package/lib/src/field/FieldGroup.d.ts +25 -0
  459. package/lib/src/field/FieldLabel.d.ts +41 -0
  460. package/lib/src/field/FieldLegend.d.ts +20 -0
  461. package/lib/src/field/FieldSeparator.d.ts +21 -0
  462. package/lib/src/field/FieldSet.d.ts +28 -0
  463. package/lib/src/field/FieldTitle.d.ts +21 -0
  464. package/lib/src/field/field-context.d.ts +47 -0
  465. package/lib/src/fieldset/Fieldset.d.ts +12 -4
  466. package/lib/src/filter-add-button/FilterAddButton.d.ts +91 -0
  467. package/lib/src/filter-add-button/FilterAddButtonEvents.d.ts +17 -0
  468. package/lib/src/filter-add-button/localization.d.ts +4 -0
  469. package/lib/src/filter-bar/FilterBar.d.ts +37 -0
  470. package/lib/src/filter-date-range/FilterDateRange.d.ts +96 -0
  471. package/lib/src/filter-date-range/FilterDateRangeEvents.d.ts +37 -0
  472. package/lib/src/filter-date-range/localization.d.ts +11 -0
  473. package/lib/src/filter-dropdown/FilterDropdown.d.ts +247 -0
  474. package/lib/src/filter-dropdown/FilterDropdownEvents.d.ts +57 -0
  475. package/lib/src/filter-dropdown/localization.d.ts +14 -0
  476. package/lib/src/filter-field/FilterField.d.ts +89 -0
  477. package/lib/src/filter-field/FilterFieldEvents.d.ts +18 -0
  478. package/lib/src/filter-field/localization.d.ts +8 -0
  479. package/lib/src/filter-input/FilterInput.d.ts +102 -0
  480. package/lib/src/filter-input/localization.d.ts +5 -0
  481. package/lib/src/filter-reset-button/FilterResetButton.d.ts +50 -0
  482. package/lib/src/filter-reset-button/localization.d.ts +4 -0
  483. package/lib/src/footer/Footer.d.ts +1 -1
  484. package/lib/src/header/Header.d.ts +1 -1
  485. package/lib/src/icon/Icon.d.ts +1 -1
  486. package/lib/src/index.d.ts +61 -0
  487. package/lib/src/input/Input.d.ts +2 -1
  488. package/lib/src/item/Item.d.ts +44 -0
  489. package/lib/src/item/ItemActions.d.ts +20 -0
  490. package/lib/src/item/ItemContent.d.ts +22 -0
  491. package/lib/src/item/ItemDescription.d.ts +20 -0
  492. package/lib/src/item/ItemFooter.d.ts +20 -0
  493. package/lib/src/item/ItemGroup.d.ts +22 -0
  494. package/lib/src/item/ItemHeader.d.ts +20 -0
  495. package/lib/src/item/ItemMedia.d.ts +28 -0
  496. package/lib/src/item/ItemSeparator.d.ts +21 -0
  497. package/lib/src/item/ItemTitle.d.ts +19 -0
  498. package/lib/src/kbd/Kbd.d.ts +54 -0
  499. package/lib/src/kbd/KbdGroup.d.ts +22 -0
  500. package/lib/src/layout/Layout.d.ts +3 -3
  501. package/lib/src/localization/en-us.d.ts +88 -0
  502. package/lib/src/localization/translation.d.ts +88 -0
  503. package/lib/src/meter/Meter.d.ts +76 -0
  504. package/lib/src/nav-group/NavGroup.d.ts +2 -0
  505. package/lib/src/nav-item/NavItem.d.ts +2 -0
  506. package/lib/src/nav-toggle/NavToggle.d.ts +3 -1
  507. package/lib/src/notification-group/NotificationGroup.d.ts +2 -0
  508. package/lib/src/number-field/NumberField.d.ts +377 -0
  509. package/lib/src/number-field/NumberFieldEvents.d.ts +37 -0
  510. package/lib/src/number-field/currency.d.ts +24 -0
  511. package/lib/src/number-field/format.d.ts +8 -0
  512. package/lib/src/number-field/localization.d.ts +6 -0
  513. package/lib/src/number-field/parse.d.ts +44 -0
  514. package/lib/src/number-field/validate.d.ts +24 -0
  515. package/lib/src/otp-field/OtpField.d.ts +188 -0
  516. package/lib/src/otp-field/OtpFieldEvents.d.ts +38 -0
  517. package/lib/src/otp-field/localization.d.ts +4 -0
  518. package/lib/src/outline/Outline.d.ts +111 -0
  519. package/lib/src/outline/OutlineItem.d.ts +42 -0
  520. package/lib/src/outline/localization.d.ts +4 -0
  521. package/lib/src/pagination/Pagination.d.ts +51 -0
  522. package/lib/src/pagination/PaginationContent.d.ts +27 -0
  523. package/lib/src/pagination/PaginationEllipsis.d.ts +27 -0
  524. package/lib/src/pagination/PaginationItem.d.ts +24 -0
  525. package/lib/src/pagination/PaginationLink.d.ts +30 -0
  526. package/lib/src/pagination/PaginationNext.d.ts +24 -0
  527. package/lib/src/pagination/PaginationPrevious.d.ts +24 -0
  528. package/lib/src/pagination/localization.d.ts +4 -0
  529. package/lib/src/pagination/paginate.d.ts +20 -0
  530. package/lib/src/popout/Popout.d.ts +9 -0
  531. package/lib/src/qrcode/Qrcode.d.ts +1 -1
  532. package/lib/src/scroll-area/ScrollArea.d.ts +101 -0
  533. package/lib/src/segmented-control-item/SegmentedControlItem.d.ts +2 -0
  534. package/lib/src/stack/Stack.d.ts +1 -1
  535. package/lib/src/storybook-utils/dates.d.ts +2 -0
  536. package/lib/src/storybook-utils/dismiss.d.ts +1 -0
  537. package/lib/src/storybook-utils/story-descriptions.d.ts +2 -0
  538. package/lib/src/tab-group/TabGroup.d.ts +2 -0
  539. package/lib/src/tab-panel/TabPanel.d.ts +2 -0
  540. package/lib/src/tag/Tag.d.ts +1 -1
  541. package/lib/src/tag-group/TagGroup.d.ts +3 -1
  542. package/lib/src/time-picker/TimePicker.d.ts +105 -0
  543. package/lib/src/time-picker/localization.d.ts +4 -0
  544. package/lib/src/toast-group/ToastGroup.d.ts +11 -0
  545. package/lib/src/top-bar/TopBar.d.ts +1 -1
  546. package/lib/src/truncate/Truncate.d.ts +1 -1
  547. package/lib/src/visually-hidden/VisuallyHidden.d.ts +1 -1
  548. package/lib/story-descriptions.js +2 -0
  549. package/lib/story-descriptions.js.map +1 -0
  550. package/lib/tinykeys-DwvDXsEb.js +2 -0
  551. package/lib/tinykeys-DwvDXsEb.js.map +1 -0
  552. package/lib/translation.js +1 -1
  553. package/lib/translation.js.map +1 -1
  554. package/lib/validate.js +2 -0
  555. package/lib/validate.js.map +1 -0
  556. package/lib/vue.d.ts +418 -0
  557. package/package.json +10 -13
  558. package/lib/Calendar-ChNZdVRO.js +0 -2
  559. package/lib/Calendar-ChNZdVRO.js.map +0 -1
  560. package/lib/Component-DSU3Qp0O.js +0 -2
  561. package/lib/Component-DSU3Qp0O.js.map +0 -1
  562. package/lib/DropdownItem-Cb-7cHMg.js +0 -2
  563. package/lib/DropdownItem-Cb-7cHMg.js.map +0 -1
  564. package/lib/Fieldset.js +0 -2
  565. package/lib/Fieldset.js.map +0 -1
  566. package/lib/FormAssociatedMixin-B4Qj-CQN.js +0 -2
  567. package/lib/FormAssociatedMixin-B4Qj-CQN.js.map +0 -1
  568. package/lib/FormField-BFaVzUjk.js +0 -2
  569. package/lib/FormField-BFaVzUjk.js.map +0 -1
  570. package/lib/NavToggle-DzKbd-El.js +0 -2
  571. package/lib/NavToggle-DzKbd-El.js.map +0 -1
  572. package/lib/Popout-CYqn_dZu.js +0 -2
  573. package/lib/Popout-CYqn_dZu.js.map +0 -1
  574. package/lib/ShortcutController-BIb3WGzH.js +0 -2
  575. package/lib/ShortcutController-BIb3WGzH.js.map +0 -1
  576. package/lib/Sticky-DqnqENYN.js +0 -2
  577. package/lib/Sticky-DqnqENYN.js.map +0 -1
  578. package/lib/TextField-B955GOhe.js +0 -2
  579. package/lib/TextField-B955GOhe.js.map +0 -1
  580. package/lib/dates-CAAlPKZi.js +0 -2
  581. package/lib/dates-CAAlPKZi.js.map +0 -1
  582. package/lib/tinykeys.module-_6MZt7MP.js +0 -2
  583. package/lib/tinykeys.module-_6MZt7MP.js.map +0 -1
package/lib/Input.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../icons/lib/assets/navigation-search.js","../src/common/controllers/ResizeController.ts","../src/input/Input.ts","../src/common/input.ts","../src/common/form.ts"],"sourcesContent":["export default '<svg viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m16.03 14.61c1.23-1.54 1.97-3.49 1.97-5.61 0-4.97-4.03-9-9-9s-9 4.03-9 9 4.03 9 9 9c2.12 0 4.07-.74 5.61-1.97l3.97 3.97 1.41-1.41-3.97-3.97zm-7.03 1.39c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7z\" fill=\"currentColor\"/></svg>';\nexport const title = \"navigation-search\";\nexport const tags = \"nordicon navigation menu find search magnifying glass\";\n","import type { ReactiveController, ReactiveControllerHost } from 'lit'\nimport { isServer } from 'lit'\n\nexport class ResizeController implements ReactiveController {\n private observer?: ResizeObserver\n private hadFirstUpdate = false\n private borderBoxSize?: ResizeObserverSize\n\n constructor(\n host: ReactiveControllerHost,\n private target: () => HTMLElement,\n ) {\n host.addController(this)\n\n if (!isServer) {\n this.observer = new ResizeObserver(([entry]) => {\n const [borderBoxSize] = entry.borderBoxSize\n this.borderBoxSize = borderBoxSize\n host.requestUpdate()\n })\n }\n }\n\n get inlineSize() {\n return this.borderBoxSize?.inlineSize\n }\n\n get blockSize() {\n return this.borderBoxSize?.blockSize\n }\n\n hostUpdated() {\n if (!this.hadFirstUpdate && this.observer) {\n this.observer.observe(this.target())\n this.hadFirstUpdate = true\n }\n }\n\n hostConnected() {\n // in case the host has rendered, disconnected, and is now reconnected\n if (this.hadFirstUpdate && this.observer) {\n this.observer.observe(this.target())\n }\n }\n\n hostDisconnected() {\n if (this.observer) {\n this.observer.disconnect()\n }\n }\n}\n","import * as searchIcon from '@nordhealth/icons/lib/assets/navigation-search.js'\nimport { html, LitElement, nothing } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { ref } from 'lit/directives/ref.js'\n\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { DirectionController } from '../common/controllers/DirectionController.js'\nimport { ResizeController } from '../common/controllers/ResizeController.js'\nimport { cond } from '../common/directives/cond.js'\nimport { NordEvent } from '../common/events.js'\nimport { getSubmitButton } from '../common/form.js'\nimport { cleanValue } from '../common/input.js'\nimport { AutocompleteMixin } from '../common/mixins/AutocompleteMixin.js'\n\nimport { FocusableMixin } from '../common/mixins/FocusableMixin.js'\nimport { FormAssociatedMixin } from '../common/mixins/FormAssociatedMixin.js'\nimport { InputMixin } from '../common/mixins/InputMixin.js'\nimport { ReadonlyMixin } from '../common/mixins/ReadonlyMixin.js'\nimport { SizeMixin } from '../common/mixins/SizeMixin.js'\nimport { TextSelectableMixin } from '../common/mixins/TextSelectableMixin.js'\nimport componentStyle from '../common/styles/Component.css'\nimport formFieldStyle from '../common/styles/FormField.css'\nimport textFieldStyle from '../common/styles/TextField.css'\nimport Icon from '../icon/Icon.js'\nimport style from './Input.css'\n\nIcon.registerIcon(searchIcon)\n\nconst px = (value?: number) => (value ? `${value}px` : undefined)\n\ntype InputMode = 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\nconst defaultInputmodeMap: Record<string, InputMode> = {\n number: 'numeric',\n email: 'email',\n tel: 'tel',\n url: 'url',\n search: 'search',\n}\n\n/**\n * Inputs are used to allow users to provide text input when the expected input is short.\n * As well as plain text, Input supports various types of text, including passwords and numbers.\n *\n * @status ready\n * @category form\n * @slot label - Use when a label requires more than plain text.\n * @slot hint - Optional slot that holds hint text for the input.\n * @slot error - Optional slot that holds error text for the input.\n * @slot start - Optional slot used to place an icon or prefix at the start of the input.\n * @slot end - Optional slot used to place an icon or suffix at the end of the input.\n *\n * @cssprop [--n-input-inline-size=240px] - Controls the inline size, or width, of the input.\n * @cssprop [--n-input-background=var(--n-color-surface)] - Controls the background of the input, using our [color tokens](/tokens/#color).\n * @cssprop [--n-input-color=var(--n-color-text)] - Controls the text color of the input, using our [color tokens](/tokens/#color).\n * @cssprop [--n-input-border-color=var(--n-color-border-strong)] - Controls the border color of the input, using our [color tokens](/tokens/#color).\n * @cssprop [--n-input-border-radius=var(--n-border-radius-s)] - Controls how rounded the corners are, using [border radius tokens](/tokens/#border-radius).\n * @cssprop [--n-input-text-align=start] - Controls the alignment of text within the input itself.\n * @cssprop [--n-label-color=var(--n-color-text)] - Controls the text color of the label, using our [color tokens](/tokens/#color).\n */\n@customElement('nord-input')\nexport default class Input extends SizeMixin(\n FormAssociatedMixin(AutocompleteMixin(ReadonlyMixin(TextSelectableMixin(InputMixin(FocusableMixin(LitElement)))))),\n) {\n static styles = [componentStyle, formFieldStyle, textFieldStyle, style]\n\n @query('slot[name=\\'start\\']') private startSlot!: HTMLSlotElement\n @query('slot[name=\\'end\\']') private endSlot!: HTMLSlotElement\n private startObserver = new ResizeController(this, () => this.startSlot)\n private endObserver = new ResizeController(this, () => this.endSlot)\n private direction = new DirectionController(this)\n\n /**\n * The type of the input.\n */\n @property({ reflect: true }) type:\n | 'text'\n | 'email'\n | 'password'\n | 'tel'\n | 'url'\n | 'search'\n | 'number'\n | 'unit'\n | 'button' = 'text'\n\n /**\n * Controls whether the input expands to fill the width of its container.\n */\n @property({ reflect: true, type: Boolean }) expand = false\n\n /**\n * Optionally disallow certain characters from being used inside the input, using a regex pattern.\n */\n @property({ reflect: true, attribute: 'disallow-pattern' }) disallowPattern?: string = undefined\n\n /**\n * The inputmode attribute provides a hint to the browser about what type of keyboard to open on mobile devices.\n * Valid values: none, text, decimal, numeric, tel, search, email, url\n * When not explicitly set, defaults based on input type:\n * - type=\"number\" → inputmode=\"numeric\"\n * - type=\"email\" → inputmode=\"email\"\n * - type=\"tel\" → inputmode=\"tel\"\n * - type=\"url\" → inputmode=\"url\"\n * - type=\"search\" → inputmode=\"search\"\n * Can be explicitly overridden for any type.\n */\n @property({ reflect: true }) inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url' = undefined\n\n render() {\n const isNumber = this.type === 'number'\n\n const inputmodeValue = this.inputmode || defaultInputmodeMap[this.type]\n\n return html`\n ${this.renderLabel()}\n\n <div\n class=${classMap({\n 'n-input-container': true,\n 'is-rtl': this.direction.dir === 'rtl',\n })}\n style=${styleMap({\n '--_n-input-start-inline-size': px(this.startObserver.inlineSize),\n '--_n-input-end-inline-size': px(this.endObserver.inlineSize),\n })}\n >\n <slot name=\"start\">\n ${this.type === 'search' ? html`<nord-icon name=\"navigation-search\"></nord-icon>` : nothing}\n </slot>\n <input\n ${ref(this.textSelectableRef)}\n ${ref(this.focusableRef)}\n id=${this.inputId}\n class=\"n-input\"\n type=${isNumber || this.type === 'unit' ? 'text' : this.type}\n inputmode=${ifDefined(inputmodeValue)}\n pattern=${cond(isNumber, '[0-9]*')}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n name=${ifDefined(this.name)}\n .value=${this.value ?? ''}\n placeholder=${ifDefined(this.placeholder)}\n @input=${this.handleInputChange}\n @change=${this.handleChange}\n @keydown=${this.handleKeydown}\n @select=${this.handleSelect}\n aria-describedby=${ifDefined(this.getDescribedBy())}\n aria-invalid=${ifDefined(this.getInvalid())}\n spellcheck=\"false\"\n autocomplete=${this.autocomplete as any}\n />\n <slot name=\"end\"></slot>\n </div>\n\n ${this.renderError()}\n ${this.isHintBelow ? this.renderHint() : nothing}\n `\n }\n\n private handleKeydown(e: KeyboardEvent) {\n if (e.key !== 'Enter') {\n return\n }\n\n const { form } = this\n\n if (form) {\n const button = getSubmitButton(form)\n setTimeout(() => button?.click(), 0)\n }\n }\n\n private handleInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n // clean up any invalid characters\n if (this.disallowPattern) {\n cleanValue(target, new RegExp(this.disallowPattern, 'g'))\n }\n this.handleInput(e)\n }\n\n protected handleSelect(e: Event) {\n e.stopPropagation()\n\n /**\n * Fired when some text has been selected.\n */\n this.dispatchEvent(new NordEvent('select'))\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-input': Input\n }\n}\n","export function cleanValue(inputEl: HTMLInputElement, regex: RegExp): string {\n const { value } = inputEl\n const cursor = inputEl.selectionStart as number\n\n const beforeCursor = value.slice(0, cursor)\n const afterCursor = value.slice(cursor, value.length)\n\n const filteredBeforeCursor = beforeCursor.replace(regex, '')\n const filterAfterCursor = afterCursor.replace(regex, '')\n\n const newValue = filteredBeforeCursor + filterAfterCursor\n const newCursor = filteredBeforeCursor.length\n\n inputEl.value = newValue\n inputEl.selectionStart = newCursor\n inputEl.selectionEnd = newCursor\n\n return newValue\n}\n","/**\n * Finds a form's submit button. First looking for a button inside form,\n * and then looking for a button whose form attribute is equal to the ID of the form.\n */\nexport function getSubmitButton(form: HTMLFormElement): HTMLButtonElement | null {\n // we can get away with just looking for native <button> elements,\n // rather than our component, since our button component renders one to light dom.\n let button = form.querySelector<HTMLButtonElement>(`button[type=\"submit\"]`)\n\n if (!button && form.id) {\n const root = form.getRootNode() as ShadowRoot | Document\n button = root.querySelector<HTMLButtonElement>(`button[form=${form.id}]`)\n }\n\n return button\n}\n"],"names":["ResizeController","constructor","host","target","this","hadFirstUpdate","addController","isServer","observer","ResizeObserver","entry","borderBoxSize","requestUpdate","inlineSize","_a","blockSize","hostUpdated","observe","hostConnected","hostDisconnected","disconnect","Icon","registerIcon","searchIcon","px","value","undefined","defaultInputmodeMap","number","email","tel","url","search","Input","SizeMixin","FormAssociatedMixin","AutocompleteMixin","ReadonlyMixin","TextSelectableMixin","InputMixin","FocusableMixin","LitElement","startObserver","startSlot","endObserver","endSlot","direction","DirectionController","type","expand","disallowPattern","inputmode","handleInputChange","e","inputEl","regex","cursor","selectionStart","beforeCursor","slice","afterCursor","length","filteredBeforeCursor","replace","newValue","newCursor","selectionEnd","cleanValue","RegExp","handleInput","render","isNumber","inputmodeValue","html","renderLabel","classMap","dir","styleMap","nothing","ref","textSelectableRef","focusableRef","inputId","ifDefined","cond","disabled","required","readonly","name","placeholder","handleChange","handleKeydown","handleSelect","getDescribedBy","getInvalid","autocomplete","renderError","isHintBelow","renderHint","key","form","button","querySelector","id","getRootNode","getSubmitButton","setTimeout","click","stopPropagation","dispatchEvent","NordEvent","styles","componentStyle","formFieldStyle","textFieldStyle","style","__decorate","query","prototype","property","reflect","Boolean","attribute","customElement"],"mappings":"swCAAe,sTAEK,8DADC,4BCERA,EAKX,WAAAC,CACEC,EACQC,GAAAC,KAAMD,OAANA,EALFC,KAAcC,gBAAG,EAOvBH,EAAKI,cAAcF,MAEdG,IACHH,KAAKI,SAAW,IAAIC,gBAAe,EAAEC,MACnC,MAAOC,GAAiBD,EAAMC,cAC9BP,KAAKO,cAAgBA,EACrBT,EAAKU,eAAe,IAGzB,CAED,cAAIC,SACF,OAAyB,UAAlBT,KAAKO,qBAAa,IAAAG,OAAA,EAAAA,EAAED,UAC5B,CAED,aAAIE,SACF,OAAyB,UAAlBX,KAAKO,qBAAa,IAAAG,OAAA,EAAAA,EAAEC,SAC5B,CAED,WAAAC,IACOZ,KAAKC,gBAAkBD,KAAKI,WAC/BJ,KAAKI,SAASS,QAAQb,KAAKD,UAC3BC,KAAKC,gBAAiB,EAEzB,CAED,aAAAa,GAEMd,KAAKC,gBAAkBD,KAAKI,UAC9BJ,KAAKI,SAASS,QAAQb,KAAKD,SAE9B,CAED,gBAAAgB,GACMf,KAAKI,UACPJ,KAAKI,SAASY,YAEjB,syGCrBHC,EAAKC,aAAaC,GAElB,MAAMC,EAAMC,GAAoBA,EAAQ,GAAGA,WAAYC,EAGjDC,EAAiD,CACrDC,OAAQ,UACRC,MAAO,QACPC,IAAK,MACLC,IAAK,MACLC,OAAQ,UAwBK,IAAMC,EAAN,cAAoBC,EACjCC,EAAoBC,EAAkBC,EAAcC,EAAoBC,EAAWC,EAAeC,UADrF,WAAAxC,uBAOLG,KAAAsC,cAAgB,IAAI1C,EAAiBI,MAAM,IAAMA,KAAKuC,YACtDvC,KAAAwC,YAAc,IAAI5C,EAAiBI,MAAM,IAAMA,KAAKyC,UACpDzC,KAAA0C,UAAY,IAAIC,EAAoB3C,MAKfA,KAAI4C,KASlB,OAK6B5C,KAAM6C,QAAG,EAKO7C,KAAe8C,qBAAYxB,EAa1DtB,KAAS+C,eAAkFzB,EAmEhHtB,KAAAgD,kBAAqBC,IAC3B,MAAMlD,EAASkD,EAAElD,OAGbC,KAAK8C,iBCnLG,SAAWI,EAA2BC,GACpD,MAAM9B,MAAEA,GAAU6B,EACZE,EAASF,EAAQG,eAEjBC,EAAejC,EAAMkC,MAAM,EAAGH,GAC9BI,EAAcnC,EAAMkC,MAAMH,EAAQ/B,EAAMoC,QAExCC,EAAuBJ,EAAaK,QAAQR,EAAO,IAGnDS,EAAWF,EAFSF,EAAYG,QAAQR,EAAO,IAG/CU,EAAYH,EAAqBD,OAEvCP,EAAQ7B,MAAQuC,EAChBV,EAAQG,eAAiBQ,EACzBX,EAAQY,aAAeD,CAGzB,CDkKME,CAAWhE,EAAQ,IAAIiE,OAAOhE,KAAK8C,gBAAiB,MAEtD9C,KAAKiE,YAAYhB,EAAE,CAWtB,CAnFC,MAAAiB,SACE,MAAMC,EAAyB,WAAdnE,KAAK4C,KAEhBwB,EAAiBpE,KAAK+C,WAAaxB,EAAoBvB,KAAK4C,MAElE,OAAOyB,CAAI,GACPrE,KAAKsE,4BAGGC,EAAS,CACf,qBAAqB,EACrB,SAAiC,QAAvBvE,KAAK0C,UAAU8B,iBAEnBC,EAAS,CACf,+BAAgCrD,EAAGpB,KAAKsC,cAAc7B,YACtD,6BAA8BW,EAAGpB,KAAKwC,YAAY/B,qCAIlC,WAAdT,KAAK4C,KAAoByB,CAAI,mDAAqDK,kBAGlFC,EAAI3E,KAAK4E,sBACTD,EAAI3E,KAAK6E,qBACN7E,KAAK8E,kCAEHX,GAA0B,SAAdnE,KAAK4C,KAAkB,OAAS5C,KAAK4C,oBAC5CmC,EAAUX,gBACZY,EAAKb,EAAU,yBACbnE,KAAKiF,wBACLjF,KAAKkF,wBACLlF,KAAKmF,mBACVJ,EAAU/E,KAAKoF,kBACH,QAAV1E,EAAAV,KAAKqB,aAAK,IAAAX,EAAAA,EAAI,oBACTqE,EAAU/E,KAAKqF,yBACpBrF,KAAKgD,+BACJhD,KAAKsF,2BACJtF,KAAKuF,2BACNvF,KAAKwF,mCACIT,EAAU/E,KAAKyF,oCACnBV,EAAU/E,KAAK0F,mDAEf1F,KAAK2F,+CAKtB3F,KAAK4F,iBACL5F,KAAK6F,YAAc7F,KAAK8F,aAAepB,GAE5C,CAEO,aAAAa,CAActC,GACpB,GAAc,UAAVA,EAAE8C,IACJ,OAGF,MAAMC,KAAEA,GAAShG,KAEjB,GAAIgG,EAAM,CACR,MAAMC,EEtKN,SAA0BD,GAG9B,IAAIC,EAASD,EAAKE,cAAiC,0BAE9CD,GAAUD,EAAKG,KAElBF,EADaD,EAAKI,cACJF,cAAiC,eAAeF,EAAKG,QAGrE,OAAOF,CACT,CF2JqBI,CAAgBL,GAC/BM,YAAW,IAAML,aAAA,EAAAA,EAAQM,SAAS,EACnC,CACF,CAYS,YAAAf,CAAavC,GACrBA,EAAEuD,kBAKFxG,KAAKyG,cAAc,IAAIC,EAAU,UAClC,GA/HM7E,EAAM8E,OAAG,CAACC,EAAgBC,EAAgBC,EAAgBC,GAE1BC,EAAA,CAAtCC,EAAM,uBAA2DpF,EAAAqF,UAAA,iBAAA,GAC7BF,EAAA,CAApCC,EAAM,qBAAuDpF,EAAAqF,UAAA,eAAA,GAQjCF,EAAA,CAA5BG,EAAS,CAAEC,SAAS,KASAvF,EAAAqF,UAAA,YAAA,GAKuBF,EAAA,CAA3CG,EAAS,CAAEC,SAAS,EAAMxE,KAAMyE,WAAyBxF,EAAAqF,UAAA,cAAA,GAKEF,EAAA,CAA3DG,EAAS,CAAEC,SAAS,EAAME,UAAW,sBAA0DzF,EAAAqF,UAAA,uBAAA,GAanEF,EAAA,CAA5BG,EAAS,CAAEC,SAAS,KAA4GvF,EAAAqF,UAAA,iBAAA,GA9C9GrF,EAAKmF,EAAA,CADzBO,EAAc,eACM1F,SAAAA"}
1
+ {"version":3,"file":"Input.js","sources":["../src/input/Input.ts","../src/common/input.ts","../src/common/form.ts"],"sourcesContent":["import * as searchIcon from '@nordhealth/icons/lib/assets/navigation-search.js'\nimport { html, LitElement, nothing } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { ref } from 'lit/directives/ref.js'\n\nimport { styleMap } from 'lit/directives/style-map.js'\nimport { DirectionController } from '../common/controllers/DirectionController.js'\nimport { ResizeController } from '../common/controllers/ResizeController.js'\nimport { cond } from '../common/directives/cond.js'\nimport { NordEvent } from '../common/events.js'\nimport { getSubmitButton } from '../common/form.js'\nimport { cleanValue } from '../common/input.js'\nimport { AutocompleteMixin } from '../common/mixins/AutocompleteMixin.js'\n\nimport { FocusableMixin } from '../common/mixins/FocusableMixin.js'\nimport { FormAssociatedMixin } from '../common/mixins/FormAssociatedMixin.js'\nimport { InputMixin } from '../common/mixins/InputMixin.js'\nimport { ReadonlyMixin } from '../common/mixins/ReadonlyMixin.js'\nimport { SizeMixin } from '../common/mixins/SizeMixin.js'\nimport { TextSelectableMixin } from '../common/mixins/TextSelectableMixin.js'\nimport componentStyle from '../common/styles/Component.css'\nimport formFieldStyle from '../common/styles/FormField.css'\nimport textFieldStyle from '../common/styles/TextField.css'\nimport Icon from '../icon/Icon.js'\nimport style from './Input.css'\n\nIcon.registerIcon(searchIcon)\n\nconst px = (value?: number) => (value ? `${value}px` : undefined)\n\ntype InputMode = 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'\nconst defaultInputmodeMap: Record<string, InputMode> = {\n number: 'numeric',\n email: 'email',\n tel: 'tel',\n url: 'url',\n search: 'search',\n}\n\n/**\n * Inputs are used to allow users to provide text input when the expected input is short.\n * As well as plain text, Input supports various types of text, including passwords and numbers.\n *\n * @status ready\n * @category form\n * @slot label - Use when a label requires more than plain text.\n * @slot hint - Optional slot that holds hint text for the input.\n * @slot error - Optional slot that holds error text for the input.\n * @slot start - Optional slot used to place an icon or prefix at the start of the input.\n * @slot end - Optional slot used to place an icon or suffix at the end of the input.\n *\n * @cssprop [--n-input-inline-size=240px] - Controls the inline size, or width, of the input.\n * @cssprop [--n-input-block-size=var(--n-space-xl)] - Controls the block size, or height, of the input using our [spacing tokens](/tokens/#space).\n * @cssprop [--n-input-background=var(--n-color-surface)] - Controls the background of the input, using our [color tokens](/tokens/#color).\n * @cssprop [--n-input-color=var(--n-color-text)] - Controls the text color of the input, using our [color tokens](/tokens/#color).\n * @cssprop [--n-input-border-color=var(--n-color-border-strong)] - Controls the border color of the input, using our [color tokens](/tokens/#color).\n * @cssprop [--n-input-border-radius=var(--n-border-radius-s)] - Controls how rounded the corners are, using [border radius tokens](/tokens/#border-radius).\n * @cssprop [--n-input-text-align=start] - Controls the alignment of text within the input itself.\n * @cssprop [--n-label-color=var(--n-color-text)] - Controls the text color of the label, using our [color tokens](/tokens/#color).\n */\n@customElement('nord-input')\nexport default class Input extends SizeMixin(\n FormAssociatedMixin(AutocompleteMixin(ReadonlyMixin(TextSelectableMixin(InputMixin(FocusableMixin(LitElement)))))),\n) {\n static styles = [componentStyle, formFieldStyle, textFieldStyle, style]\n\n @query('slot[name=\\'start\\']') private startSlot!: HTMLSlotElement\n @query('slot[name=\\'end\\']') private endSlot!: HTMLSlotElement\n private startObserver = new ResizeController(this, () => this.startSlot)\n private endObserver = new ResizeController(this, () => this.endSlot)\n private direction = new DirectionController(this)\n\n /**\n * The type of the input.\n */\n @property({ reflect: true }) type:\n | 'text'\n | 'email'\n | 'password'\n | 'tel'\n | 'url'\n | 'search'\n | 'number'\n | 'date'\n | 'time'\n | 'datetime-local'\n | 'file'\n | 'unit'\n | 'button' = 'text'\n\n /**\n * Controls whether the input expands to fill the width of its container.\n */\n @property({ reflect: true, type: Boolean }) expand = false\n\n /**\n * Optionally disallow certain characters from being used inside the input, using a regex pattern.\n */\n @property({ reflect: true, attribute: 'disallow-pattern' }) disallowPattern?: string = undefined\n\n /**\n * The inputmode attribute provides a hint to the browser about what type of keyboard to open on mobile devices.\n * Valid values: none, text, decimal, numeric, tel, search, email, url\n * When not explicitly set, defaults based on input type:\n * - type=\"number\" → inputmode=\"numeric\"\n * - type=\"email\" → inputmode=\"email\"\n * - type=\"tel\" → inputmode=\"tel\"\n * - type=\"url\" → inputmode=\"url\"\n * - type=\"search\" → inputmode=\"search\"\n * Can be explicitly overridden for any type.\n */\n @property({ reflect: true }) inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url' = undefined\n\n render() {\n const isNumber = this.type === 'number'\n\n const inputmodeValue = this.inputmode || defaultInputmodeMap[this.type]\n\n return html`\n ${this.renderLabel()}\n\n <div\n class=${classMap({\n 'n-input-container': true,\n 'is-rtl': this.direction.dir === 'rtl',\n })}\n style=${styleMap({\n '--_n-input-start-inline-size': px(this.startObserver.inlineSize),\n '--_n-input-end-inline-size': px(this.endObserver.inlineSize),\n })}\n >\n <slot name=\"start\">\n ${this.type === 'search' ? html`<nord-icon name=\"navigation-search\"></nord-icon>` : nothing}\n </slot>\n <input\n ${ref(this.textSelectableRef)}\n ${ref(this.focusableRef)}\n id=${this.inputId}\n class=\"n-input\"\n type=${isNumber || this.type === 'unit' ? 'text' : this.type}\n inputmode=${ifDefined(inputmodeValue)}\n pattern=${cond(isNumber, '[0-9]*')}\n ?disabled=${this.effectiveDisabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n name=${ifDefined(this.name)}\n .value=${this.type === 'file' ? '' : (this.value ?? '')}\n placeholder=${ifDefined(this.placeholder)}\n @input=${this.handleInputChange}\n @change=${this.handleChange}\n @keydown=${this.handleKeydown}\n @select=${this.handleSelect}\n aria-label=${ifDefined(this.controlAriaLabel)}\n aria-describedby=${ifDefined(this.controlAriaDescribedby)}\n aria-invalid=${ifDefined(this.controlAriaInvalid)}\n spellcheck=\"false\"\n autocomplete=${this.autocomplete as any}\n />\n <slot name=\"end\"></slot>\n </div>\n\n ${this.renderError()}\n ${this.isHintBelow ? this.renderHint() : nothing}\n `\n }\n\n private handleKeydown(e: KeyboardEvent) {\n if (e.key !== 'Enter') {\n return\n }\n\n const { form } = this\n\n if (form) {\n const button = getSubmitButton(form)\n setTimeout(() => button?.click(), 0)\n }\n }\n\n private handleInputChange = (e: Event) => {\n const target = e.target as HTMLInputElement\n\n // clean up any invalid characters\n if (this.disallowPattern) {\n cleanValue(target, new RegExp(this.disallowPattern, 'g'))\n }\n this.handleInput(e)\n }\n\n protected handleSelect(e: Event) {\n e.stopPropagation()\n\n /**\n * Fired when some text has been selected.\n */\n this.dispatchEvent(new NordEvent('select'))\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-input': Input\n }\n}\n","export function cleanValue(inputEl: HTMLInputElement, regex: RegExp): string {\n const { value } = inputEl\n const cursor = inputEl.selectionStart as number\n\n const beforeCursor = value.slice(0, cursor)\n const afterCursor = value.slice(cursor, value.length)\n\n const filteredBeforeCursor = beforeCursor.replace(regex, '')\n const filterAfterCursor = afterCursor.replace(regex, '')\n\n const newValue = filteredBeforeCursor + filterAfterCursor\n const newCursor = filteredBeforeCursor.length\n\n inputEl.value = newValue\n inputEl.selectionStart = newCursor\n inputEl.selectionEnd = newCursor\n\n return newValue\n}\n","/**\n * Finds a form's submit button. First looking for a button inside form,\n * and then looking for a button whose form attribute is equal to the ID of the form.\n */\nexport function getSubmitButton(form: HTMLFormElement): HTMLButtonElement | null {\n // we can get away with just looking for native <button> elements,\n // rather than our component, since our button component renders one to light dom.\n let button = form.querySelector<HTMLButtonElement>(`button[type=\"submit\"]`)\n\n if (!button && form.id) {\n const root = form.getRootNode() as ShadowRoot | Document\n button = root.querySelector<HTMLButtonElement>(`button[form=${form.id}]`)\n }\n\n return button\n}\n"],"names":["Icon","registerIcon","searchIcon","px","value","undefined","defaultInputmodeMap","number","email","tel","url","search","Input","SizeMixin","FormAssociatedMixin","AutocompleteMixin","ReadonlyMixin","TextSelectableMixin","InputMixin","FocusableMixin","LitElement","constructor","this","startObserver","ResizeController","startSlot","endObserver","endSlot","direction","DirectionController","type","expand","disallowPattern","inputmode","handleInputChange","e","target","inputEl","regex","cursor","selectionStart","beforeCursor","slice","afterCursor","length","filteredBeforeCursor","replace","newValue","newCursor","selectionEnd","cleanValue","RegExp","handleInput","render","isNumber","inputmodeValue","html","renderLabel","classMap","dir","styleMap","inlineSize","nothing","ref","textSelectableRef","focusableRef","inputId","ifDefined","cond","effectiveDisabled","required","readonly","name","_a","placeholder","handleChange","handleKeydown","handleSelect","controlAriaLabel","controlAriaDescribedby","controlAriaInvalid","autocomplete","renderError","isHintBelow","renderHint","key","form","button","querySelector","id","getRootNode","getSubmitButton","setTimeout","click","stopPropagation","dispatchEvent","NordEvent","styles","componentStyle","formFieldStyle","textFieldStyle","style","__decorate","query","prototype","property","reflect","Boolean","attribute","customElement"],"mappings":"8mLA4BAA,EAAKC,aAAaC,GAElB,MAAMC,EAAMC,GAAoBA,EAAQ,GAAGA,WAAYC,EAGjDC,EAAiD,CACrDC,OAAQ,UACRC,MAAO,QACPC,IAAK,MACLC,IAAK,MACLC,OAAQ,UAyBK,IAAMC,EAAN,cAAoBC,EACjCC,EAAoBC,EAAkBC,EAAcC,EAAoBC,EAAWC,EAAeC,UADrF,WAAAC,uBAOLC,KAAAC,cAAgB,IAAIC,EAAiBF,MAAM,IAAMA,KAAKG,YACtDH,KAAAI,YAAc,IAAIF,EAAiBF,MAAM,IAAMA,KAAKK,UACpDL,KAAAM,UAAY,IAAIC,EAAoBP,MAKfA,KAAIQ,KAalB,OAK6BR,KAAMS,QAAG,EAKOT,KAAeU,qBAAY3B,EAa1DiB,KAASW,eAAkF5B,EAoEhHiB,KAAAY,kBAAqBC,IAC3B,MAAMC,EAASD,EAAEC,OAGbd,KAAKU,iBCzLG,SAAWK,EAA2BC,GACpD,MAAMlC,MAAEA,GAAUiC,EACZE,EAASF,EAAQG,eAEjBC,EAAerC,EAAMsC,MAAM,EAAGH,GAC9BI,EAAcvC,EAAMsC,MAAMH,EAAQnC,EAAMwC,QAExCC,EAAuBJ,EAAaK,QAAQR,EAAO,IAGnDS,EAAWF,EAFSF,EAAYG,QAAQR,EAAO,IAG/CU,EAAYH,EAAqBD,OAEvCP,EAAQjC,MAAQ2C,EAChBV,EAAQG,eAAiBQ,EACzBX,EAAQY,aAAeD,CAGzB,CDwKME,CAAWd,EAAQ,IAAIe,OAAO7B,KAAKU,gBAAiB,MAEtDV,KAAK8B,YAAYjB,EAAE,CAWtB,CApFC,MAAAkB,SACE,MAAMC,EAAyB,WAAdhC,KAAKQ,KAEhByB,EAAiBjC,KAAKW,WAAa3B,EAAoBgB,KAAKQ,MAElE,OAAO0B,CAAI,GACPlC,KAAKmC,4BAGGC,EAAS,CACf,qBAAqB,EACrB,SAAiC,QAAvBpC,KAAKM,UAAU+B,iBAEnBC,EAAS,CACf,+BAAgCzD,EAAGmB,KAAKC,cAAcsC,YACtD,6BAA8B1D,EAAGmB,KAAKI,YAAYmC,qCAIlC,WAAdvC,KAAKQ,KAAoB0B,CAAI,mDAAqDM,kBAGlFC,EAAIzC,KAAK0C,sBACTD,EAAIzC,KAAK2C,qBACN3C,KAAK4C,kCAEHZ,GAA0B,SAAdhC,KAAKQ,KAAkB,OAASR,KAAKQ,oBAC5CqC,EAAUZ,gBACZa,EAAKd,EAAU,yBACbhC,KAAK+C,iCACL/C,KAAKgD,wBACLhD,KAAKiD,mBACVJ,EAAU7C,KAAKkD,kBACC,SAAdlD,KAAKQ,KAAkB,GAAgB,QAAV2C,EAAAnD,KAAKlB,aAAK,IAAAqE,EAAAA,EAAI,oBACtCN,EAAU7C,KAAKoD,yBACpBpD,KAAKY,+BACJZ,KAAKqD,2BACJrD,KAAKsD,2BACNtD,KAAKuD,6BACFV,EAAU7C,KAAKwD,wCACTX,EAAU7C,KAAKyD,0CACnBZ,EAAU7C,KAAK0D,yDAEf1D,KAAK2D,+CAKtB3D,KAAK4D,iBACL5D,KAAK6D,YAAc7D,KAAK8D,aAAetB,GAE5C,CAEO,aAAAc,CAAczC,GACpB,GAAc,UAAVA,EAAEkD,IACJ,OAGF,MAAMC,KAAEA,GAAShE,KAEjB,GAAIgE,EAAM,CACR,MAAMC,EE5KN,SAA0BD,GAG9B,IAAIC,EAASD,EAAKE,cAAiC,0BAE9CD,GAAUD,EAAKG,KAElBF,EADaD,EAAKI,cACJF,cAAiC,eAAeF,EAAKG,QAGrE,OAAOF,CACT,CFiKqBI,CAAgBL,GAC/BM,YAAW,IAAML,aAAA,EAAAA,EAAQM,SAAS,EACnC,CACF,CAYS,YAAAhB,CAAa1C,GACrBA,EAAE2D,kBAKFxE,KAAKyE,cAAc,IAAIC,EAAU,UAClC,GApIMpF,EAAMqF,OAAG,CAACC,EAAgBC,EAAgBC,EAAgBC,GAE1BC,EAAA,CAAtCC,EAAM,uBAA2D3F,EAAA4F,UAAA,iBAAA,GAC7BF,EAAA,CAApCC,EAAM,qBAAuD3F,EAAA4F,UAAA,eAAA,GAQjCF,EAAA,CAA5BG,EAAS,CAAEC,SAAS,KAaA9F,EAAA4F,UAAA,YAAA,GAKuBF,EAAA,CAA3CG,EAAS,CAAEC,SAAS,EAAM5E,KAAM6E,WAAyB/F,EAAA4F,UAAA,cAAA,GAKEF,EAAA,CAA3DG,EAAS,CAAEC,SAAS,EAAME,UAAW,sBAA0DhG,EAAA4F,UAAA,uBAAA,GAanEF,EAAA,CAA5BG,EAAS,CAAEC,SAAS,KAA4G9F,EAAA4F,UAAA,iBAAA,GAlD9G5F,EAAK0F,EAAA,CADzBO,EAAc,eACMjG,SAAAA"}
package/lib/Item.js ADDED
@@ -0,0 +1,2 @@
1
+ import{_ as r}from"./tslib.es6-CmLYFWVC.js";import{css as e,LitElement as o}from"lit";import{property as a,customElement as n}from"lit/decorators.js";import{i as t}from"./light-dom-styles-DXsbiKU9.js";import{D as i}from"./DraftComponentMixin-4qug5Rky.js";const s=e`nord-item{--_n-item-gap:var(--n-item-gap,var(--n-space-m));--_n-item-padding:var(--n-item-padding,var(--n-space-m));--_n-item-border-radius:var(--n-item-border-radius,var(--n-border-radius-s));align-items:center;border:1px solid #0000;border-radius:var(--_n-item-border-radius);color:var(--n-color-text);display:flex;flex-wrap:wrap;font-family:var(--n-font-family);font-feature-settings:var(--n-font-features);font-size:var(--n-font-size-s);gap:var(--_n-item-gap);line-height:var(--n-line-height);padding:var(--_n-item-padding);transition:background-color var(--n-transition-quickly)}nord-item,nord-item *,nord-item :after,nord-item :before{box-sizing:border-box}nord-item[variant=outline]{border-color:var(--n-color-border)}nord-item[variant=muted]{background-color:var(--n-color-surface-lowered)}nord-item[size=s]{--_n-item-gap:var(--n-item-gap,var(--n-space-s));--_n-item-padding:var(--n-item-padding,var(--n-space-s))}nord-item[size=xs]{--_n-item-gap:var(--n-item-gap,var(--n-space-xs));--_n-item-padding:var(--n-item-padding,var(--n-space-xs))}a:has(>nord-item){color:inherit;text-decoration:none}a:hover>nord-item{background-color:var(--n-color-surface-lowered)}a:focus-visible{outline:none}a:focus-visible>nord-item{border-color:var(--n-color-accent);outline:2px solid var(--n-color-accent);outline-offset:1px}`;let d=class extends(i(o)){constructor(){super(...arguments),this.variant="default",this.size="s"}connectedCallback(){super.connectedCallback(),t(this,s)}createRenderRoot(){return this}};r([a({reflect:!0})],d.prototype,"variant",void 0),r([a({reflect:!0})],d.prototype,"size",void 0),d=r([n("nord-item")],d);var m=d;export{m as default};
2
+ //# sourceMappingURL=Item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Item.js","sources":["../src/item/Item.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport { DraftComponentMixin } from '../common/mixins/DraftComponentMixin.js'\nimport style from './Item.css'\n\n/**\n * Item is a flexible, composable row used to display a piece of content such as\n * a person, a file or a setting. Combine it with [Item Media](/components/item-media/),\n * [Item Content](/components/item-content/), [Item Title](/components/item-title/),\n * [Item Description](/components/item-description/) and [Item Actions](/components/item-actions/)\n * to build rich list rows. Stack several together with [Item Group](/components/item-group/).\n *\n * To make a whole Item act as a link, wrap it in an `<a>` element. The row\n * highlights on hover when wrapped this way.\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for the item parts (media, content, actions, header, footer).\n *\n * @cssprop [--n-item-gap] - Controls the spacing between the item parts, using our [spacing tokens](/tokens/#space).\n * @cssprop [--n-item-padding] - Controls the inner padding of the item, using our [spacing tokens](/tokens/#space).\n * @cssprop [--n-item-border-radius=var(--n-border-radius-s)] - Controls how rounded the corners are.\n */\n@customElement('nord-item')\nexport default class Item extends DraftComponentMixin(LitElement) {\n /**\n * The visual style of the item.\n *\n * - `default` has a transparent background and no border.\n * - `outline` adds a visible border.\n * - `muted` uses a subtle filled background for secondary content.\n */\n @property({ reflect: true }) variant: 'default' | 'outline' | 'muted' = 'default'\n\n /**\n * The size of the item, controlling its padding and gap.\n */\n @property({ reflect: true }) size: 'xs' | 's' | 'm' = 's'\n\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n // Render in the light DOM so the composed parts are the element's own content\n // and are styled by the injected stylesheet (no shadow boundary, like Table).\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item': Item\n }\n}\n"],"names":["Item","DraftComponentMixin","LitElement","constructor","this","variant","size","connectedCallback","super","injectLightDomStyles","style","createRenderRoot","__decorate","property","reflect","prototype","customElement"],"mappings":"gjDA4Be,IAAMA,EAAN,cAAmBC,EAAoBC,IAAvC,WAAAC,uBAQgBC,KAAOC,QAAoC,UAK3CD,KAAIE,KAAqB,GAYvD,CAVC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBL,KAAMM,EAC5B,CAIS,gBAAAC,GACR,OAAOP,IACR,GAhB4BQ,EAAA,CAA5BC,EAAS,CAAEC,SAAS,KAA4Dd,EAAAe,UAAA,eAAA,GAKpDH,EAAA,CAA5BC,EAAS,CAAEC,SAAS,KAAoCd,EAAAe,UAAA,YAAA,GAbtCf,EAAIY,EAAA,CADxBI,EAAc,cACMhB,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as e}from"./tslib.es6-CmLYFWVC.js";import{css as i,LitElement as o}from"lit";import{customElement as s}from"lit/decorators.js";import{i as n}from"./light-dom-styles-DXsbiKU9.js";const r=i`nord-item-actions{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;gap:var(--n-space-s)}nord-item-actions nord-icon,nord-item-actions svg{--n-icon-size:var(--n-size-icon-s);block-size:var(--n-size-icon-s);color:var(--n-color-text-weaker);flex-shrink:0;inline-size:var(--n-size-icon-s)}`;let t=class extends o{connectedCallback(){super.connectedCallback(),n(this,r)}createRenderRoot(){return this}};t=e([s("nord-item-actions")],t);var a=t;export{a as default};
2
+ //# sourceMappingURL=ItemActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemActions.js","sources":["../src/item/ItemActions.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemActions.css'\n\n/**\n * Item Actions holds the trailing controls of an [Item](/components/item/),\n * such as buttons or a chevron.\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for the actions, such as buttons or an icon.\n */\n@customElement('nord-item-actions')\nexport default class ItemActions extends LitElement {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-actions': ItemActions\n }\n}\n"],"names":["ItemActions","LitElement","connectedCallback","super","injectLightDomStyles","this","style","createRenderRoot","__decorate","customElement"],"mappings":"ufAiBe,IAAMA,EAAN,cAA0BC,EACvC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,EAC5B,CAES,gBAAAC,GACR,OAAOF,IACR,GARkBL,EAAWQ,EAAA,CAD/BC,EAAc,sBACMT,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as t}from"./tslib.es6-CmLYFWVC.js";import{css as e,LitElement as o}from"lit";import{customElement as n}from"lit/decorators.js";import{i as r}from"./light-dom-styles-DXsbiKU9.js";const s=e`nord-item-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;gap:var(--n-space-xs)}nord-item-content+nord-item-content{flex:none}`;let i=class extends o{connectedCallback(){super.connectedCallback(),r(this,s)}createRenderRoot(){return this}};i=t([n("nord-item-content")],i);var l=i;export{l as default};
2
+ //# sourceMappingURL=ItemContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemContent.js","sources":["../src/item/ItemContent.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemContent.css'\n\n/**\n * Item Content holds the textual content of an [Item](/components/item/),\n * typically an [Item Title](/components/item-title/) and an\n * [Item Description](/components/item-description/). It grows to fill the\n * available space.\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for the content, such as a title and description.\n */\n@customElement('nord-item-content')\nexport default class ItemContent extends LitElement {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-content': ItemContent\n }\n}\n"],"names":["ItemContent","LitElement","connectedCallback","super","injectLightDomStyles","this","style","createRenderRoot","__decorate","customElement"],"mappings":"6VAmBe,IAAMA,EAAN,cAA0BC,EACvC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,EAC5B,CAES,gBAAAC,GACR,OAAOF,IACR,GARkBL,EAAWQ,EAAA,CAD/BC,EAAc,sBACMT,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as e}from"./tslib.es6-CmLYFWVC.js";import{css as t,LitElement as o}from"lit";import{customElement as i}from"lit/decorators.js";import{i as r}from"./light-dom-styles-DXsbiKU9.js";const n=t`nord-item-description{box-sizing:border-box;color:var(--n-color-text-weaker);display:-webkit-box;font-size:var(--n-font-size-s);font-weight:var(--n-font-weight);line-height:var(--n-line-height);overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}nord-item-description a{color:var(--n-color-text-link);text-decoration:underline;text-underline-offset:2px}`;let l=class extends o{connectedCallback(){super.connectedCallback(),r(this,n)}createRenderRoot(){return this}};l=e([i("nord-item-description")],l);var s=l;export{s as default};
2
+ //# sourceMappingURL=ItemDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemDescription.js","sources":["../src/item/ItemDescription.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemDescription.css'\n\n/**\n * Item Description is the secondary, muted line of text in an\n * [Item](/components/item/). It is clamped to two lines.\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for the description text.\n */\n@customElement('nord-item-description')\nexport default class ItemDescription extends LitElement {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-description': ItemDescription\n }\n}\n"],"names":["ItemDescription","LitElement","connectedCallback","super","injectLightDomStyles","this","style","createRenderRoot","__decorate","customElement"],"mappings":"4kBAiBe,IAAMA,EAAN,cAA8BC,EAC3C,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,EAC5B,CAES,gBAAAC,GACR,OAAOF,IACR,GARkBL,EAAeQ,EAAA,CADnCC,EAAc,0BACMT,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as e}from"./tslib.es6-CmLYFWVC.js";import{css as t,LitElement as o}from"lit";import{customElement as s}from"lit/decorators.js";import{i as r}from"./light-dom-styles-DXsbiKU9.js";const i=t`nord-item-footer{align-items:center;box-sizing:border-box;display:flex;flex-basis:100%;gap:var(--n-space-s);justify-content:space-between}`;let a=class extends o{connectedCallback(){super.connectedCallback(),r(this,i)}createRenderRoot(){return this}};a=e([s("nord-item-footer")],a);var n=a;export{n as default};
2
+ //# sourceMappingURL=ItemFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemFooter.js","sources":["../src/item/ItemFooter.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemFooter.css'\n\n/**\n * Item Footer spans the full width at the bottom of an [Item](/components/item/),\n * useful for a row of metadata or trailing actions.\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for the footer content.\n */\n@customElement('nord-item-footer')\nexport default class ItemFooter extends LitElement {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-footer': ItemFooter\n }\n}\n"],"names":["ItemFooter","LitElement","connectedCallback","super","injectLightDomStyles","this","style","createRenderRoot","__decorate","customElement"],"mappings":"iVAiBe,IAAMA,EAAN,cAAyBC,EACtC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,EAC5B,CAES,gBAAAC,GACR,OAAOF,IACR,GARkBL,EAAUQ,EAAA,CAD9BC,EAAc,qBACMT,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as t}from"./tslib.es6-CmLYFWVC.js";import{css as e,LitElement as r}from"lit";import{customElement as o}from"lit/decorators.js";import{i as s}from"./light-dom-styles-DXsbiKU9.js";const i=e`nord-item-group{box-sizing:border-box;display:flex;flex-direction:column;font-family:var(--n-font-family);font-feature-settings:var(--n-font-features);gap:var(--n-space-m)}nord-item-group:has(nord-item[size=s]),nord-item-group:has(nord-item[size=xs]){gap:var(--n-space-s)}nord-item-group *,nord-item-group :after,nord-item-group :before{box-sizing:border-box}`;let n=class extends r{connectedCallback(){super.connectedCallback(),s(this,i),this.hasAttribute("role")||this.setAttribute("role","list")}createRenderRoot(){return this}firstUpdated(){for(const t of this.querySelectorAll(":scope > nord-item"))t.hasAttribute("role")||t.setAttribute("role","listitem")}};n=t([o("nord-item-group")],n);var a=n;export{a as default};
2
+ //# sourceMappingURL=ItemGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemGroup.js","sources":["../src/item/ItemGroup.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemGroup.css'\n\n/**\n * Item Group stacks a set of [Item](/components/item/) rows vertically and\n * exposes them to assistive technology as a list. Separate individual items\n * with [Item Separator](/components/item-separator/).\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for [Item](/components/item/) elements.\n */\n@customElement('nord-item-group')\nexport default class ItemGroup extends LitElement {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'list')\n }\n }\n\n protected createRenderRoot() {\n return this\n }\n\n protected firstUpdated() {\n // Expose direct child items as list items so the list role has the\n // required children. Mirrors the `role=\"listitem\"` the React demos add.\n for (const item of this.querySelectorAll(':scope > nord-item')) {\n if (!item.hasAttribute('role')) {\n item.setAttribute('role', 'listitem')\n }\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-group': ItemGroup\n }\n}\n"],"names":["ItemGroup","LitElement","connectedCallback","super","injectLightDomStyles","this","style","hasAttribute","setAttribute","createRenderRoot","firstUpdated","item","querySelectorAll","__decorate","customElement"],"mappings":"8iBAkBe,IAAMA,EAAN,cAAwBC,EACrC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,GACtBD,KAAKE,aAAa,SACrBF,KAAKG,aAAa,OAAQ,OAE7B,CAES,gBAAAC,GACR,OAAOJ,IACR,CAES,YAAAK,GAGR,IAAK,MAAMC,KAAQN,KAAKO,iBAAiB,sBAClCD,EAAKJ,aAAa,SACrBI,EAAKH,aAAa,OAAQ,WAG/B,GArBkBR,EAASa,EAAA,CAD7BC,EAAc,oBACMd,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as e}from"./tslib.es6-CmLYFWVC.js";import{css as r,LitElement as t}from"lit";import{customElement as s}from"lit/decorators.js";import{i}from"./light-dom-styles-DXsbiKU9.js";const o=r`nord-item-header{align-items:center;box-sizing:border-box;display:flex;flex-basis:100%;gap:var(--n-space-s);justify-content:space-between}nord-item-header img{aspect-ratio:1/1;border-radius:var(--n-border-radius-s);inline-size:100%;object-fit:cover}`;let a=class extends t{connectedCallback(){super.connectedCallback(),i(this,o)}createRenderRoot(){return this}};a=e([s("nord-item-header")],a);var n=a;export{n as default};
2
+ //# sourceMappingURL=ItemHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemHeader.js","sources":["../src/item/ItemHeader.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemHeader.css'\n\n/**\n * Item Header spans the full width at the top of an [Item](/components/item/),\n * useful for a leading image or a row of metadata.\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for the header content.\n */\n@customElement('nord-item-header')\nexport default class ItemHeader extends LitElement {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-header': ItemHeader\n }\n}\n"],"names":["ItemHeader","LitElement","connectedCallback","super","injectLightDomStyles","this","style","createRenderRoot","__decorate","customElement"],"mappings":"2bAiBe,IAAMA,EAAN,cAAyBC,EACtC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,EAC5B,CAES,gBAAAC,GACR,OAAOF,IACR,GARkBL,EAAUQ,EAAA,CAD9BC,EAAc,qBACMT,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as e}from"./tslib.es6-CmLYFWVC.js";import{css as i,LitElement as r}from"lit";import{property as n,customElement as o}from"lit/decorators.js";import{i as a}from"./light-dom-styles-DXsbiKU9.js";const s=i`nord-item-media{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;gap:var(--n-space-s);justify-content:center}nord-item-media nord-icon,nord-item-media svg{pointer-events:none}nord-item-media[variant=icon]{background-color:var(--n-color-surface-lowered);block-size:calc(var(--n-size-icon-m) + var(--n-space-s)*2);border:1px solid var(--n-color-border);border-radius:var(--n-border-radius-s);inline-size:calc(var(--n-size-icon-m) + var(--n-space-s)*2)}nord-item-media[variant=icon] nord-icon,nord-item-media[variant=icon] svg{--n-icon-size:var(--n-size-icon-s);block-size:var(--n-size-icon-s);inline-size:var(--n-size-icon-s)}nord-item-media[variant=image]{block-size:calc(var(--n-size-icon-l) + var(--n-space-s)*2);border-radius:var(--n-border-radius-s);inline-size:calc(var(--n-size-icon-l) + var(--n-space-s)*2);overflow:hidden}nord-item-media[variant=image] img{block-size:100%;inline-size:100%;object-fit:cover}`;let t=class extends r{constructor(){super(...arguments),this.variant="default"}connectedCallback(){super.connectedCallback(),a(this,s)}createRenderRoot(){return this}};e([n({reflect:!0})],t.prototype,"variant",void 0),t=e([o("nord-item-media")],t);var c=t;export{c as default};
2
+ //# sourceMappingURL=ItemMedia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemMedia.js","sources":["../src/item/ItemMedia.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemMedia.css'\n\n/**\n * Item Media holds the leading visual of an [Item](/components/item/), such as\n * an icon, an avatar or an image.\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for the media content (an icon, avatar or image).\n */\n@customElement('nord-item-media')\nexport default class ItemMedia extends LitElement {\n /**\n * The visual style of the media container.\n *\n * - `default` simply centers its content.\n * - `icon` renders a small bordered, muted square that centers an icon.\n * - `image` renders a rounded square that clips an image to a cover fit.\n */\n @property({ reflect: true }) variant: 'default' | 'icon' | 'image' = 'default'\n\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-media': ItemMedia\n }\n}\n"],"names":["ItemMedia","LitElement","constructor","this","variant","connectedCallback","super","injectLightDomStyles","style","createRenderRoot","__decorate","property","reflect","prototype","customElement"],"mappings":"0nCAiBe,IAAMA,EAAN,cAAwBC,EAAxB,WAAAC,uBAQgBC,KAAOC,QAAiC,SAUtE,CARC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBJ,KAAMK,EAC5B,CAES,gBAAAC,GACR,OAAON,IACR,GAT4BO,EAAA,CAA5BC,EAAS,CAAEC,SAAS,KAAyDZ,EAAAa,UAAA,eAAA,GAR3Db,EAASU,EAAA,CAD7BI,EAAc,oBACMd,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as r}from"./tslib.es6-CmLYFWVC.js";import{css as t,LitElement as e,html as o}from"lit";import{customElement as s}from"lit/decorators.js";import{i as a}from"./light-dom-styles-DXsbiKU9.js";const i=t`nord-item-separator{box-sizing:border-box;display:block}nord-item-separator hr{block-size:0;border:none;border-block-start:1px solid var(--n-color-border);margin:0}`;let d=class extends e{connectedCallback(){super.connectedCallback(),a(this,i),this.hasAttribute("aria-hidden")||this.setAttribute("aria-hidden","true")}createRenderRoot(){return this}render(){return o`<hr part="separator">`}};d=r([s("nord-item-separator")],d);var n=d;export{n as default};
2
+ //# sourceMappingURL=ItemSeparator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemSeparator.js","sources":["../src/item/ItemSeparator.ts"],"sourcesContent":["import { html, LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemSeparator.css'\n\n/**\n * Item Separator draws a horizontal divider between [Item](/components/item/)\n * rows inside an [Item Group](/components/item-group/).\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @part separator - The dividing line.\n */\n@customElement('nord-item-separator')\nexport default class ItemSeparator extends LitElement {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n // The separator is a purely visual divider between items. Hide it from\n // assistive technology so it can sit inside a `list` (whose only allowed\n // children are list items) without breaking required-children rules.\n if (!this.hasAttribute('aria-hidden')) {\n this.setAttribute('aria-hidden', 'true')\n }\n }\n\n // Renders its own divider markup; there are no user children to preserve.\n protected createRenderRoot() {\n return this\n }\n\n render() {\n return html`<hr part=\"separator\" />`\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-separator': ItemSeparator\n }\n}\n"],"names":["ItemSeparator","LitElement","connectedCallback","super","injectLightDomStyles","this","style","hasAttribute","setAttribute","createRenderRoot","render","html","__decorate","customElement"],"mappings":"qXAiBe,IAAMA,EAAN,cAA4BC,EACzC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,GAItBD,KAAKE,aAAa,gBACrBF,KAAKG,aAAa,cAAe,OAEpC,CAGS,gBAAAC,GACR,OAAOJ,IACR,CAED,MAAAK,GACE,OAAOC,CAAI,uBACZ,GAnBkBX,EAAaY,EAAA,CADjCC,EAAc,wBACMb,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as e}from"./tslib.es6-CmLYFWVC.js";import{css as i,LitElement as t}from"lit";import{customElement as n}from"lit/decorators.js";import{i as o}from"./light-dom-styles-DXsbiKU9.js";const s=i`nord-item-title{align-items:center;box-sizing:border-box;color:var(--n-color-text);display:flex;font-size:var(--n-font-size-s);font-weight:var(--n-font-weight-active);gap:var(--n-space-s);inline-size:fit-content;line-height:var(--n-line-height-tight)}nord-item-title nord-icon,nord-item-title svg{--n-icon-size:var(--n-size-icon-s);block-size:var(--n-size-icon-s);flex-shrink:0;inline-size:var(--n-size-icon-s)}`;let r=class extends t{connectedCallback(){super.connectedCallback(),o(this,s)}createRenderRoot(){return this}};r=e([n("nord-item-title")],r);var l=r;export{l as default};
2
+ //# sourceMappingURL=ItemTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemTitle.js","sources":["../src/item/ItemTitle.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport style from './ItemTitle.css'\n\n/**\n * Item Title is the primary line of text in an [Item](/components/item/).\n *\n * @status draft\n * @category list\n * @lightDom true\n *\n * @slot - Default slot for the title text (and optionally an inline icon).\n */\n@customElement('nord-item-title')\nexport default class ItemTitle extends LitElement {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-item-title': ItemTitle\n }\n}\n"],"names":["ItemTitle","LitElement","connectedCallback","super","injectLightDomStyles","this","style","createRenderRoot","__decorate","customElement"],"mappings":"kmBAgBe,IAAMA,EAAN,cAAwBC,EACrC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,EAC5B,CAES,gBAAAC,GACR,OAAOF,IACR,GARkBL,EAASQ,EAAA,CAD7BC,EAAc,oBACMT,SAAAA"}
package/lib/Kbd.js ADDED
@@ -0,0 +1,2 @@
1
+ import{_ as o}from"./tslib.es6-CmLYFWVC.js";import{css as n,LitElement as r}from"lit";import{property as d,customElement as a}from"lit/decorators.js";import{i as e}from"./light-dom-styles-DXsbiKU9.js";import{D as i}from"./DraftComponentMixin-4qug5Rky.js";const b=n`nord-kbd{--_n-kbd-color:var(--n-kbd-color,var(--n-color-icon));--_n-kbd-background-color:var(--n-kbd-background-color,var(--n-color-button));--_n-kbd-border-radius:var(--n-kbd-border-radius,var(--n-border-radius-s));--_n-kbd-padding-block:var(--n-kbd-padding-block,0.227em);--_n-kbd-padding-inline:var(--n-kbd-padding-inline,calc(var(--n-space-xs)/0.9));--_n-kbd-font-size:var(--n-kbd-font-size,var(--n-font-size-m));--_n-kbd-border-width:var(--n-kbd-border-width,1px);--_n-kbd-border-color:var(--n-kbd-border-color,var(--n-color-border-strong));--_n-kbd-box-shadow:var(--n-kbd-box-shadow,var(--n-box-shadow));box-sizing:border-box;display:inline-block;font-family:var(--n-font-family);font-size:var(--_n-kbd-font-size);font-weight:var(--n-font-weight);line-height:var(--n-line-height-tightest);padding-block:var(--_n-kbd-padding-block);padding-inline:var(--_n-kbd-padding-inline);text-align:center;text-transform:capitalize;vertical-align:middle;white-space:nowrap;text-box:trim-both cap alphabetic;align-self:center;background-color:var(--_n-kbd-background-color);border:var(--_n-kbd-border-width) solid var(--_n-kbd-border-color);border-radius:var(--_n-kbd-border-radius);box-shadow:var(--_n-kbd-box-shadow);color:var(--_n-kbd-color);pointer-events:none;user-select:none}nord-kbd nord-icon,nord-kbd svg{--_n-icon-size:var(--n-size-icon-xs);block-size:var(--n-size-icon-xs);inline-size:var(--n-size-icon-xs);vertical-align:middle}nord-kbd[size=xs]{--_n-kbd-padding-inline:var(--n-kbd-padding-inline,calc(var(--n-space-xs)/1.1));--_n-kbd-font-size:var(--n-kbd-font-size,var(--n-font-size-xs))}nord-kbd[size=s]{--_n-kbd-padding-inline:var(--n-kbd-padding-inline,var(--n-space-xs));--_n-kbd-font-size:var(--n-kbd-font-size,var(--n-font-size-s))}nord-kbd[size=l]{--_n-kbd-padding-inline:var(--n-kbd-padding-inline,calc(var(--n-space-xs)/0.8));--_n-kbd-font-size:var(--n-kbd-font-size,var(--n-font-size-l))}@supports (text-box:trim-both cap alphabetic){nord-kbd{--_n-kbd-padding-block:var(--n-kbd-padding-block,0.375em)}}nord-kbd[variant=light]{--_n-kbd-color:var(--n-kbd-color,#667680);--_n-kbd-background-color:var(--n-kbd-background-color,#fff);--_n-kbd-border-color:var(--n-kbd-border-color,#bcc5cc);--_n-kbd-box-shadow:var(--n-kbd-box-shadow,0 1px 3px #0c0c0c17)}nord-kbd[variant=dark]{--_n-kbd-color:var(--n-kbd-color,#fff);--_n-kbd-background-color:var(--n-kbd-background-color,#363636);--_n-kbd-border-color:var(--n-kbd-border-color,#ffffff08);--_n-kbd-box-shadow:var(--n-kbd-box-shadow,0 1px 5px 0 #0c0c0c0d,0 0 40px 0 #0c0c0c05)}nord-kbd[emphasize]{--_n-kbd-color:var(--n-kbd-color,var(--n-color-text))}nord-kbd[variant=light][emphasize]{--_n-kbd-color:var(--n-kbd-color,#0c1a3d)}nord-kbd[variant=dark][emphasize]{--_n-kbd-color:var(--n-kbd-color,#fff)}nord-kbd[borderless]{border:none;box-shadow:none}`;let t=class extends(i(r)){constructor(){super(...arguments),this.size="m",this.variant="default",this.borderless=!1,this.emphasize=!1}connectedCallback(){super.connectedCallback(),e(this,b)}createRenderRoot(){return this}};o([d({reflect:!0})],t.prototype,"size",void 0),o([d({reflect:!0})],t.prototype,"variant",void 0),o([d({reflect:!0,type:Boolean})],t.prototype,"borderless",void 0),o([d({reflect:!0,type:Boolean})],t.prototype,"emphasize",void 0),t=o([a("nord-kbd")],t);var s=t;export{s as default};
2
+ //# sourceMappingURL=Kbd.js.map
package/lib/Kbd.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kbd.js","sources":["../src/kbd/Kbd.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport { DraftComponentMixin } from '../common/mixins/DraftComponentMixin.js'\nimport style from './Kbd.css'\n\n/**\n * Kbd is used to display a keyboard key, such as a shortcut or a key the user\n * should press. Group related keys together with [Kbd Group](/components/kbd-group/).\n *\n * @status draft\n * @category content\n * @lightDom true\n *\n * @slot - Default slot for the key label (text or an icon).\n *\n * @cssprop [--n-kbd-color=var(--n-color-icon)] - Controls the text color of the key.\n * @cssprop [--n-kbd-background-color=var(--n-color-button)] - Controls the background color of the key.\n * @cssprop [--n-kbd-padding-block] - Controls the block padding of the key. Overrides the size default.\n * @cssprop [--n-kbd-padding-inline] - Controls the inline padding of the key. Overrides the size default.\n * @cssprop [--n-kbd-font-size] - Controls the font size of the key. Overrides the size default.\n * @cssprop [--n-kbd-border-radius=var(--n-border-radius-s)] - Controls how rounded the corners are.\n * @cssprop [--n-kbd-border-width=1px] - Controls the border width of the key.\n * @cssprop [--n-kbd-border-color] - Controls the border color of the key. Overrides the variant default.\n * @cssprop [--n-kbd-box-shadow] - Controls the box shadow of the key. Overrides the variant default.\n */\n@customElement('nord-kbd')\nexport default class Kbd extends DraftComponentMixin(LitElement) {\n /**\n * The size of the key. Each value maps to the matching font-size token\n * (`xs`→`--n-font-size-xs` … `l`→`--n-font-size-l`); `xs` suits dense\n * surfaces like dark tooltips, `l` is for more prominent keys.\n */\n @property({ reflect: true }) size: 'xs' | 's' | 'm' | 'l' = 'm'\n\n /**\n * The colour variant. `default` follows the active layout theme; `light` and\n * `dark` pin the key to fixed light/dark colours regardless of the theme\n * (e.g. a dark key on a dark tooltip).\n */\n @property({ reflect: true }) variant: 'default' | 'light' | 'dark' = 'default'\n\n /**\n * Removes the border and drop shadow, for a flat key with no outline.\n */\n @property({ reflect: true, type: Boolean }) borderless = false\n\n /**\n * Raises the text contrast — the theme's main text colour (`--n-color-text`)\n * on the `default` variant, or the pinned high-contrast colour (dark text /\n * white) on the fixed `light` / `dark` variants.\n */\n @property({ reflect: true, type: Boolean }) emphasize = false\n\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n // Render in the light DOM so the key label is the element's own content and\n // is styled by the injected stylesheet (no shadow boundary, like Table).\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-kbd': Kbd\n }\n}\n"],"names":["Kbd","DraftComponentMixin","LitElement","constructor","this","size","variant","borderless","emphasize","connectedCallback","super","injectLightDomStyles","style","createRenderRoot","__decorate","property","reflect","prototype","type","Boolean","customElement"],"mappings":"ogGA4Be,IAAMA,EAAN,cAAkBC,EAAoBC,IAAtC,WAAAC,uBAMgBC,KAAIC,KAA2B,IAO/BD,KAAOE,QAAiC,UAKzBF,KAAUG,YAAG,EAObH,KAASI,WAAG,CAYzD,CAVC,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBP,KAAMQ,EAC5B,CAIS,gBAAAC,GACR,OAAOT,IACR,GA9B4BU,EAAA,CAA5BC,EAAS,CAAEC,SAAS,KAA0ChB,EAAAiB,UAAA,YAAA,GAOlCH,EAAA,CAA5BC,EAAS,CAAEC,SAAS,KAAyDhB,EAAAiB,UAAA,eAAA,GAKlCH,EAAA,CAA3CC,EAAS,CAAEC,SAAS,EAAME,KAAMC,WAA6BnB,EAAAiB,UAAA,kBAAA,GAOlBH,EAAA,CAA3CC,EAAS,CAAEC,SAAS,EAAME,KAAMC,WAA4BnB,EAAAiB,UAAA,iBAAA,GAzB1CjB,EAAGc,EAAA,CADvBM,EAAc,aACMpB,SAAAA"}
@@ -0,0 +1,2 @@
1
+ import{_ as t}from"./tslib.es6-CmLYFWVC.js";import{css as e,LitElement as r}from"lit";import{customElement as i}from"lit/decorators.js";import{i as o}from"./light-dom-styles-DXsbiKU9.js";import{D as s}from"./DraftComponentMixin-4qug5Rky.js";const a=e`nord-kbd-group{align-items:center;display:inline-flex;gap:var(--n-space-xs);line-height:var(--n-line-height-tight);vertical-align:middle}`;let n=class extends(s(r)){connectedCallback(){super.connectedCallback(),o(this,a)}createRenderRoot(){return this}};n=t([i("nord-kbd-group")],n);var l=n;export{l as default};
2
+ //# sourceMappingURL=KbdGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KbdGroup.js","sources":["../src/kbd/KbdGroup.ts"],"sourcesContent":["import { LitElement } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { injectLightDomStyles } from '../common/light-dom-styles.js'\nimport { DraftComponentMixin } from '../common/mixins/DraftComponentMixin.js'\nimport style from './KbdGroup.css'\n\n/**\n * Kbd Group lays out a set of [Kbd](/components/kbd/) keys together, for example\n * to represent a multi-key shortcut such as <kbd>Ctrl</kbd> <kbd>K</kbd>.\n *\n * @status draft\n * @category content\n * @lightDom true\n *\n * @slot - Default slot for [Kbd](/components/kbd/) elements.\n */\n@customElement('nord-kbd-group')\nexport default class KbdGroup extends DraftComponentMixin(LitElement) {\n connectedCallback() {\n super.connectedCallback()\n injectLightDomStyles(this, style)\n }\n\n protected createRenderRoot() {\n return this\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nord-kbd-group': KbdGroup\n }\n}\n"],"names":["KbdGroup","DraftComponentMixin","LitElement","connectedCallback","super","injectLightDomStyles","this","style","createRenderRoot","__decorate","customElement"],"mappings":"sYAkBe,IAAMA,EAAN,cAAuBC,EAAoBC,IACxD,iBAAAC,GACEC,MAAMD,oBACNE,EAAqBC,KAAMC,EAC5B,CAES,gBAAAC,GACR,OAAOF,IACR,GARkBN,EAAQS,EAAA,CAD5BC,EAAc,mBACMV,SAAAA"}
@@ -1,2 +1,2 @@
1
- import{S as t}from"./ShortcutController-BIb3WGzH.js";import"./tinykeys.module-_6MZt7MP.js";function o(t){return o=>{o.preventDefault(),t(o)}}class r{constructor(r,s){this.host=r,r.addController(this),this.commandShortcuts=new t(r),this.globalShortcuts=new t(r,{"$mod+k":o(s.toggleOpen)}),this.navigationShortcuts=new t(r,{Enter:o(s.trigger),Backspace:s.goBack,End:o(s.end),Home:o(s.start),ArrowDown:o(s.next),ArrowUp:o(s.previous)},r)}registerCommandShortcuts(){const t={};for(const o of this.host.commands)o.shortcut&&(t[o.shortcut]=t=>{var r;o.forceShortcut&&t.preventDefault(),null===(r=o.handler)||void 0===r||r.call(o,this.host)});this.commandShortcuts.bind(t)}}export{r as KeyboardController};
1
+ import{S as t}from"./ShortcutController-CV5b0BZl.js";import"./tinykeys-DwvDXsEb.js";function o(t){return o=>{o.preventDefault(),t(o)}}class r{constructor(r,s){this.host=r,r.addController(this),this.commandShortcuts=new t(r),this.globalShortcuts=new t(r,{"$mod+k":o(s.toggleOpen)}),this.navigationShortcuts=new t(r,{Enter:o(s.trigger),Backspace:s.goBack,End:o(s.end),Home:o(s.start),ArrowDown:o(s.next),ArrowUp:o(s.previous)},r)}registerCommandShortcuts(){const t={};for(const o of this.host.commands)o.shortcut&&(t[o.shortcut]=t=>{var r;o.forceShortcut&&t.preventDefault(),null===(r=o.handler)||void 0===r||r.call(o,this.host)});this.commandShortcuts.bind(t)}}export{r as KeyboardController};
2
2
  //# sourceMappingURL=KeyboardController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardController.js","sources":["../src/command-menu/KeyboardController.ts"],"sourcesContent":["import type { ReactiveController } from 'lit'\nimport type { ShortcutMap } from '../common/controllers/ShortcutController.js'\nimport type CommandMenu from './CommandMenu.js'\nimport { ShortcutController } from '../common/controllers/ShortcutController.js'\n\ninterface KeyboardActions {\n trigger: () => void\n goBack: () => void\n start: () => void\n end: () => void\n next: () => void\n previous: () => void\n toggleOpen: () => void\n}\n\nfunction preventDefault(fn: (e: Event) => void) {\n return (e: Event) => {\n e.preventDefault()\n fn(e)\n }\n}\n\nexport class KeyboardController {\n private globalShortcuts: ShortcutController\n private navigationShortcuts: ShortcutController\n private commandShortcuts: ShortcutController\n\n constructor(\n private host: CommandMenu,\n actions: KeyboardActions,\n ) {\n host.addController(this as ReactiveController)\n\n this.commandShortcuts = new ShortcutController(host)\n this.globalShortcuts = new ShortcutController(host, { '$mod+k': preventDefault(actions.toggleOpen) })\n this.navigationShortcuts = new ShortcutController(\n host,\n {\n Enter: preventDefault(actions.trigger),\n Backspace: actions.goBack, // we don't want to prevent default, since that would stop backspace deleting chars\n End: preventDefault(actions.end),\n Home: preventDefault(actions.start),\n ArrowDown: preventDefault(actions.next),\n ArrowUp: preventDefault(actions.previous),\n },\n host,\n )\n }\n\n registerCommandShortcuts() {\n const shortcuts: ShortcutMap = {}\n\n for (const command of this.host.commands) {\n if (command.shortcut) {\n shortcuts[command.shortcut] = (event: Event) => {\n // The handler always fires. Only override the browser default when the\n // command explicitly opts in via `forceShortcut`, acknowledging it is\n // reclaiming a combo the browser may reserve (e.g. Alt+D = address bar).\n if (command.forceShortcut) {\n event.preventDefault()\n }\n command.handler?.(this.host)\n }\n }\n }\n\n this.commandShortcuts.bind(shortcuts)\n }\n}\n"],"names":["preventDefault","fn","e","KeyboardController","constructor","host","actions","this","addController","commandShortcuts","ShortcutController","globalShortcuts","toggleOpen","navigationShortcuts","Enter","trigger","Backspace","goBack","End","end","Home","start","ArrowDown","next","ArrowUp","previous","registerCommandShortcuts","shortcuts","command","commands","shortcut","event","forceShortcut","_a","handler","call","bind"],"mappings":"2FAeA,SAASA,EAAeC,GACtB,OAAQC,IACNA,EAAEF,iBACFC,EAAGC,EAAE,CAET,OAEaC,EAKX,WAAAC,CACUC,EACRC,GADQC,KAAIF,KAAJA,EAGRA,EAAKG,cAAcD,MAEnBA,KAAKE,iBAAmB,IAAIC,EAAmBL,GAC/CE,KAAKI,gBAAkB,IAAID,EAAmBL,EAAM,CAAE,SAAUL,EAAeM,EAAQM,cACvFL,KAAKM,oBAAsB,IAAIH,EAC7BL,EACA,CACES,MAAOd,EAAeM,EAAQS,SAC9BC,UAAWV,EAAQW,OACnBC,IAAKlB,EAAeM,EAAQa,KAC5BC,KAAMpB,EAAeM,EAAQe,OAC7BC,UAAWtB,EAAeM,EAAQiB,MAClCC,QAASxB,EAAeM,EAAQmB,WAElCpB,EAEH,CAED,wBAAAqB,GACE,MAAMC,EAAyB,CAAA,EAE/B,IAAK,MAAMC,KAAWrB,KAAKF,KAAKwB,SAC1BD,EAAQE,WACVH,EAAUC,EAAQE,UAAaC,UAIzBH,EAAQI,eACVD,EAAM/B,iBAEO,QAAfiC,EAAAL,EAAQM,eAAO,IAAAD,GAAAA,EAAAE,KAAAP,EAAGrB,KAAKF,KAAK,GAKlCE,KAAKE,iBAAiB2B,KAAKT,EAC5B"}
1
+ {"version":3,"file":"KeyboardController.js","sources":["../src/command-menu/KeyboardController.ts"],"sourcesContent":["import type { ReactiveController } from 'lit'\nimport type { ShortcutMap } from '../common/controllers/ShortcutController.js'\nimport type CommandMenu from './CommandMenu.js'\nimport { ShortcutController } from '../common/controllers/ShortcutController.js'\n\ninterface KeyboardActions {\n trigger: () => void\n goBack: () => void\n start: () => void\n end: () => void\n next: () => void\n previous: () => void\n toggleOpen: () => void\n}\n\nfunction preventDefault(fn: (e: Event) => void) {\n return (e: Event) => {\n e.preventDefault()\n fn(e)\n }\n}\n\nexport class KeyboardController {\n private globalShortcuts: ShortcutController\n private navigationShortcuts: ShortcutController\n private commandShortcuts: ShortcutController\n\n constructor(\n private host: CommandMenu,\n actions: KeyboardActions,\n ) {\n host.addController(this as ReactiveController)\n\n this.commandShortcuts = new ShortcutController(host)\n this.globalShortcuts = new ShortcutController(host, { '$mod+k': preventDefault(actions.toggleOpen) })\n this.navigationShortcuts = new ShortcutController(\n host,\n {\n Enter: preventDefault(actions.trigger),\n Backspace: actions.goBack, // we don't want to prevent default, since that would stop backspace deleting chars\n End: preventDefault(actions.end),\n Home: preventDefault(actions.start),\n ArrowDown: preventDefault(actions.next),\n ArrowUp: preventDefault(actions.previous),\n },\n host,\n )\n }\n\n registerCommandShortcuts() {\n const shortcuts: ShortcutMap = {}\n\n for (const command of this.host.commands) {\n if (command.shortcut) {\n shortcuts[command.shortcut] = (event: Event) => {\n // The handler always fires. Only override the browser default when the\n // command explicitly opts in via `forceShortcut`, acknowledging it is\n // reclaiming a combo the browser may reserve (e.g. Alt+D = address bar).\n if (command.forceShortcut) {\n event.preventDefault()\n }\n command.handler?.(this.host)\n }\n }\n }\n\n this.commandShortcuts.bind(shortcuts)\n }\n}\n"],"names":["preventDefault","fn","e","KeyboardController","constructor","host","actions","this","addController","commandShortcuts","ShortcutController","globalShortcuts","toggleOpen","navigationShortcuts","Enter","trigger","Backspace","goBack","End","end","Home","start","ArrowDown","next","ArrowUp","previous","registerCommandShortcuts","shortcuts","command","commands","shortcut","event","forceShortcut","_a","handler","call","bind"],"mappings":"oFAeA,SAASA,EAAeC,GACtB,OAAQC,IACNA,EAAEF,iBACFC,EAAGC,EAAE,CAET,OAEaC,EAKX,WAAAC,CACUC,EACRC,GADQC,KAAIF,KAAJA,EAGRA,EAAKG,cAAcD,MAEnBA,KAAKE,iBAAmB,IAAIC,EAAmBL,GAC/CE,KAAKI,gBAAkB,IAAID,EAAmBL,EAAM,CAAE,SAAUL,EAAeM,EAAQM,cACvFL,KAAKM,oBAAsB,IAAIH,EAC7BL,EACA,CACES,MAAOd,EAAeM,EAAQS,SAC9BC,UAAWV,EAAQW,OACnBC,IAAKlB,EAAeM,EAAQa,KAC5BC,KAAMpB,EAAeM,EAAQe,OAC7BC,UAAWtB,EAAeM,EAAQiB,MAClCC,QAASxB,EAAeM,EAAQmB,WAElCpB,EAEH,CAED,wBAAAqB,GACE,MAAMC,EAAyB,CAAA,EAE/B,IAAK,MAAMC,KAAWrB,KAAKF,KAAKwB,SAC1BD,EAAQE,WACVH,EAAUC,EAAQE,UAAaC,UAIzBH,EAAQI,eACVD,EAAM/B,iBAEO,QAAfiC,EAAAL,EAAQM,eAAO,IAAAD,GAAAA,EAAAE,KAAAP,EAAGrB,KAAKF,KAAK,GAKlCE,KAAKE,iBAAiB2B,KAAKT,EAC5B"}
package/lib/Layout.js CHANGED
@@ -1,4 +1,2 @@
1
- import{_ as e}from"./tslib.es6-CmLYFWVC.js";import{l as t}from"./NavToggle-DzKbd-El.js";import{css as n,LitElement as a,html as o,nothing as i}from"lit";import{query as s,state as r,property as l,customElement as d}from"lit/decorators.js";import{classMap as h}from"lit/directives/class-map.js";import{styleMap as c}from"lit/directives/style-map.js";import{D as v}from"./DirectionController-ChvNGESZ.js";import{E as p}from"./EventController-BBOmvfLa.js";import{L as u}from"./LightDismissController-4pH8cdko.js";import{S as m}from"./SlotController-Z6eG7LSZ.js";import{o as y}from"./observe-D0n0zOfU.js";import{c as g}from"./cond-CI1KbneT.js";import{f as b}from"./fsm-Bq5jMQrK.js";import{c as f}from"./number-Dg2vCfGd.js";import{s as w}from"./storage-CGZ-YX4-.js";import{s as z}from"./Component-DSU3Qp0O.js";import{s as k}from"./Sticky-DqnqENYN.js";import x from"./Icon.js";import{NavOpenChangeEvent as S}from"./NavOpenChangeEvent.js";import{NavResizeEvent as N}from"./NavResizeEvent.js";import"./Tooltip.js";import"lit/directives/ref.js";import"./FocusableMixin-BlQLNPdJ.js";import"./LocalizeController.js";import"./translation.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";import"./Button.js";import"./LightDomController-DIwtVelV.js";import"./InputMixin-LetXsCyv.js";import"./Spinner.js";import"lit/directives/if-defined.js";import"./VisuallyHidden.js";import"./ShortcutController-BIb3WGzH.js";import"./tinykeys.module-_6MZt7MP.js";import"lit/directives/unsafe-html.js";import"./IconManager.js";import"./events-Bv6wNHwJ.js";import"./positioning-D-K8Mueq.js";const _=()=>!0;class C{constructor(e,t){e.addController(this),this.options={enabled:_,...t}}hostConnected(){"undefined"!=typeof BroadcastChannel&&(this.channel=new BroadcastChannel(this.options.channelName),this.channel.addEventListener("message",this))}hostDisconnected(){var e,t;null===(e=this.channel)||void 0===e||e.removeEventListener("message",this),null===(t=this.channel)||void 0===t||t.close()}handleEvent(e){this.options.enabled()&&this.options.onMessage(e.data)}post(e){var t;this.options.enabled()&&(null===(t=this.channel)||void 0===t||t.postMessage(e))}}const W=n`:host{--_n-layout-padding:var(--n-layout-padding, var(--n-space-l));--_n-layout-drawer-inline-size:var(--n-layout-drawer-inline-size, 320px);--_n-layout-drawer-min-inline-size:var(--n-layout-drawer-min-inline-size, 0px);--_n-layout-background-color:var(--n-layout-background-color, var(--n-color-background));--_n-layout-nav-border-color:var(--n-layout-nav-border-color, var(--n-color-border));--_n-layout-nav-transition-duration:var(--n-transition-mobile);--_n-layout-header-size:var(--n-layout-header-size, var(--n-space-xxl));--_n-layout-header-size-s:calc(var(--n-space-xl) + var(--n-space-m));--_n-layout-footer-size:var(--n-space-xxl);--n-layout-main-min-inline-size:0;background:var(--_n-layout-background-color);color:var(--n-color-text);min-block-size:100vh}.n-layout{block-size:calc(100vh - var(--n-sticky-top) - var(--n-layout-block-size-offset,0px))}.n-layout-main,.n-layout-nav{background:var(--_n-layout-background-color);min-block-size:100%}.n-layout-nav{position:fixed;user-select:none;inline-size:var(--_n-layout-nav-width);z-index:var(--n-layout-nav-z-index,var(--n-index-top-bar));inset-block-start:0;inset-inline-start:0;inset-block-end:0;transform:translateX(var(--n-nav-transform));box-shadow:var(--n-box-shadow-nav)}[data-screen=wide][data-collapse-mode=hide]:is(:not([data-nav=opened],[data-nav=closed])) .n-layout-nav{inline-size:fit-content;min-inline-size:var(--_n-layout-nav-min-width);max-inline-size:min(var(--_n-layout-nav-max-width),100dvw)}[data-screen=wide][data-collapse-mode=hide]:is(:not([data-nav=opened],[data-nav=closed])) .n-layout-nav>slot[name=nav]::slotted(*){inline-size:100%}.n-layout-main{position:relative}main{padding:var(--_n-layout-padding)}.n-has-top-bar{--_n-sticky-top:var(--_n-layout-header-size)}:host([sticky]) .n-has-header{--_n-sticky-size:var(--_n-layout-header-size)}:host([sticky-footer]) .n-has-footer slot[name=footer]::slotted(*){position:fixed;display:block;inset-inline-start:0;inset-inline-end:0;z-index:var(--n-layout-sticky-footer-z-index,calc(var(--n-index-top-bar,1000) + 1))}:host([sticky-footer][nav-open]) .n-has-footer slot[name=footer]::slotted(*){inset-inline-start:250px!important}@media (min-width:768px){:host([sticky-footer]) .n-has-drawer.n-has-footer slot[name=footer]::slotted(*){--n-footer-padding-inline-end:calc(
2
- var(--n-footer-padding-inline, var(--n-space-l)) + var(--_n-layout-drawer-min-inline-size, 0px)
3
- )}}aside{position:fixed;z-index:var(--n-index-nav);inset-block:0;inset-inline-end:0;inline-size:var(--_n-layout-drawer-inline-size);max-inline-size:100%;background:var(--n-layout-drawer-background-color,var(--n-color-surface));box-shadow:var(--n-layout-drawer-box-shadow,var(--n-box-shadow-nav))}:host([sticky-footer]) .n-has-footer aside{inset-block-end:var(--n-layout-footer-block-size,var(--_n-layout-footer-size))}.n-has-drawer .n-layout-content{margin-inline-end:var(--_n-layout-drawer-min-inline-size)}@media (min-width:1240px){:host{--n-layout-main-min-inline-size:600px}.n-has-drawer .n-layout-content{margin-inline-end:var(--_n-layout-drawer-inline-size)}aside{box-shadow:var(--n-layout-drawer-box-shadow-wide,var(--n-box-shadow-header));border-inline-start:var(--n-layout-drawer-border-inline-start-width,0) solid var(--n-layout-drawer-border-inline-start-color,var(--n-color-border))}}slot[name=drawer]::slotted(*){block-size:100%!important}.n-has-top-bar aside{inset-block-start:var(--_n-layout-header-size)}:is(.n-has-top-bar,.n-has-header) ::slotted(nord-notification-group){inset-block-start:var(--_n-layout-header-size)}:is([data-nav=closed],[data-nav=unpeek]) .n-layout-nav{transform:translateX(-110%)}.n-rtl:is([data-nav=closed],[data-nav=unpeek]) .n-layout-nav{transform:translateX(110%)}[data-screen=wide][data-collapse-mode=rail]:is([data-nav=closed],[data-nav=peek],[data-nav=unpeek],[data-nav=wait]) .n-layout-nav{transform:none;inline-size:var(--_n-layout-nav-rail-width);inset-block:0;border-start-end-radius:0;border-end-end-radius:0;border-inline-end:1px solid var(--_n-layout-nav-border-color);box-shadow:none;overflow:visible}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-layout-main{margin-inline-start:var(--_n-layout-nav-rail-width)}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-top-bar-container{inset-inline-start:var(--_n-layout-nav-rail-width)}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) slot[name=footer]::slotted(*){inset-inline-start:var(--_n-layout-nav-rail-width)}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-collapse-btn{display:flex}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-collapse-btn nord-icon{transform:rotate(0)}.n-rtl[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-collapse-btn nord-icon{transform:rotate(180deg)}[data-screen=narrow] .n-layout-nav{z-index:var(--n-index-popout);transition:transform var(--_n-layout-nav-transition-duration)}[data-screen=wide]:is(:not([data-nav=opened],[data-nav=closed])) .n-layout-nav{transition:transform var(--_n-layout-nav-transition-duration);border-start-end-radius:var(--n-border-radius);border-end-end-radius:var(--n-border-radius);min-block-size:0;inset-block-start:calc(var(--n-space-m) * 4);inset-block-end:var(--n-space-l)}[data-screen=wide][data-nav=opened] .n-layout-nav{border-inline-end:1px solid var(--_n-layout-nav-border-color);box-shadow:none}[data-screen=wide][data-nav=opened]:not(.n-has-top-bar) .n-layout-nav{--n-navigation-header-padding-inline:calc(var(--n-space-l) / 1.5)}.n-has-top-bar[data-screen=wide][data-nav=opened] .n-layout-nav{--n-navigation-header-background:var(--n-color-accent-secondary);--n-navigation-header-color:var(--n-color-text-on-accent);--n-navigation-header-divider:none;--n-navigation-header-toggle-icon-color:rgb(255, 255, 255, 0.85);--n-navigation-header-focus-style:0 0 0 1px #fff inset,inset 0 0 0 100px rgb(255, 255, 255, 0.2);border-color:transparent;border-image-slice:1;border-image-source:linear-gradient(to bottom,rgb(255,255,255,.16) calc(var(--_n-layout-header-size) + 1px),var(--_n-layout-nav-border-color) calc(var(--_n-layout-header-size) + 1px));background:var(--n-color-accent-secondary);box-shadow:0 0 transparent}[data-screen=wide]:not([data-nav=opened]) .n-layout-nav{--n-navigation-header-block-size:var(--_n-layout-header-size-s);overflow:hidden}[data-screen=wide][data-nav=opened] .n-layout-main{margin-inline-start:var(--_n-layout-nav-width)}[data-screen=narrow] .n-layout-main::after{content:'';position:fixed;inset:0;z-index:var(--n-index-overlay);transition:opacity var(--n-transition-mobile),visibility var(--n-transition-mobile);background:var(--n-color-overlay)}[data-screen=narrow]:not([data-nav=opened],[data-nav=peek],[data-nav=blocked]) .n-layout-main::after{visibility:hidden;opacity:0}.n-resize{touch-action:none;position:absolute;block-size:var(--n-layout-resize-block-size,100%);inset-block:0;margin-block:auto;inset-inline-end:-8px;inline-size:10px;background:0 0}[data-nav=opened] .n-resize,[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-resize{cursor:col-resize}.n-resize::after{content:'';position:absolute;z-index:var(--n-index-sticky);inset-block:0;inset-inline-end:5px;inline-size:3px;background:var(--n-layout-resize-color,var(--n-color-accent));transition:opacity var(--n-transition-slowly);opacity:0}.n-resize:focus{outline:0}.n-dragging .n-resize::after,.n-resize:focus::after,[data-nav=opened] .n-resize:hover::after,[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-resize:hover::after{opacity:1;transition-delay:.15s}@supports selector(:focus-visible){.n-resize:focus::after{opacity:0}.n-resize:focus-visible::after{opacity:1}}.n-dragging{cursor:col-resize!important;user-select:none}.n-resize-tooltip{transform:translateY(var(--n-resize-tooltip-y,0))}.n-dragging .n-resize-tooltip{visibility:hidden!important;opacity:0!important}:host([padding=none]){--_n-layout-padding:var(--n-layout-padding, 0)}.n-top-bar-container{position:fixed;inset-inline-start:var(--_n-layout-nav-width);inset-inline-end:0;inset-block-start:0;z-index:var(--n-index-top-bar)}[data-screen=narrow] .n-top-bar-container,[data-screen=wide]:not([data-nav=opened]) .n-top-bar-container{inset-inline-start:0}.n-has-top-bar{--_n-layout-header-size:var(--_n-layout-header-size-s);--n-navigation-header-block-size:var(--_n-layout-header-size)}.n-has-top-bar :is([name=header],[name=drawer])::slotted(*){--n-header-block-size:var(--_n-layout-header-size)}.n-has-top-bar .n-layout-main{inset-block-start:var(--_n-layout-header-size)}.n-nav-toggle-container{position:absolute;padding-inline-start:var(--n-space-s);block-size:var(--_n-layout-header-size);display:flex;align-items:center;z-index:calc(var(--n-index-top-bar) + 1)}[data-screen=narrow] .n-nav-toggle-container{padding-inline-start:var(--n-space-xs)}.n-has-top-bar .n-nav-toggle-container,:host([sticky]) .n-nav-toggle-container{position:fixed;inset-block-start:0}[data-screen=wide][data-nav=opened] .n-nav-toggle-container{display:none}:host(:not([hide-default-nav-toggle])) .n-has-nav[data-screen=wide]:not([data-nav=opened]) ::slotted(nord-top-bar),:host(:not([hide-default-nav-toggle])) .n-has-nav[data-screen=wide]:not([data-nav=opened],.n-has-top-bar) ::slotted(nord-header[slot=header]){--_n-header-gutter:calc(var(--n-space-l) * 1.8)}:host(:not([hide-default-nav-toggle])) .n-has-nav[data-screen=narrow] ::slotted(nord-top-bar),:host(:not([hide-default-nav-toggle])) .n-has-nav[data-screen=narrow]:not(.n-has-top-bar) ::slotted(nord-header[slot=header]){--_n-header-gutter:var(--n-space-xl)}.n-has-top-bar :is(nord-nav-toggle,::slotted(nord-nav-toggle)){--n-button-background-color:transparent;color:rgb(255,255,255,.85)}.n-has-top-bar :is(nord-nav-toggle,::slotted(nord-nav-toggle)):focus{--n-button-background-color:rgb(0, 0, 0, 0.2)}.n-collapse-btn{--_n-collapse-btn-size:var(--n-space-l);position:fixed;inset-inline-start:calc(var(--_n-layout-nav-width) - (var(--_n-collapse-btn-size)/ 2));inset-block-start:calc(var(--_n-layout-header-size) + (var(--_n-layout-header-size) - var(--_n-collapse-btn-size))/ 2);border-radius:var(--n-border-radius-circle);block-size:var(--_n-collapse-btn-size);inline-size:var(--_n-collapse-btn-size);display:flex;align-items:center;justify-content:center;color:var(--n-color-icon);background:var(--n-color-button);box-shadow:var(--n-box-shadow-card);border:0;z-index:var(--n-index-sticky);cursor:pointer;transition:opacity var(--n-transition-slowly),visibility var(--n-transition-slowly),background-color var(--n-transition-quickly),color var(--n-transition-quickly)}.n-collapse-btn:hover{background:var(--n-color-accent);color:var(--n-color-text-on-accent)}.n-collapse-btn:focus{outline:0;box-shadow:0 0 0 2px var(--n-color-accent),var(--n-box-shadow)}[data-screen=narrow] .n-collapse-btn,[data-screen=wide]:not([data-nav=opened]) .n-collapse-btn{display:none}@media (hover:hover) and (pointer:fine){.n-collapse-btn{opacity:0;visibility:hidden}.n-collapse-btn:focus,.n-layout-nav:hover .n-collapse-btn{opacity:1;visibility:visible}}.n-collapse-btn nord-icon{transform:rotate(180deg)}.n-rtl .n-collapse-btn nord-icon{transform:rotate(0)}slot[name=footer]::slotted(*){inset-inline-start:var(--_n-layout-nav-width);inset-inline-end:0;inset-block-end:0}@media (min-width:1240px){.n-has-drawer slot[name=footer]::slotted(*){inset-inline-end:var(--_n-layout-drawer-inline-size)}}[data-screen=narrow] slot[name=footer]::slotted(*),[data-screen=wide]:not([data-nav=opened]) slot[name=footer]::slotted(*){inset-inline-start:0}:host([sticky-footer]) .n-has-footer .n-layout-content{padding-block-end:var(--_n-layout-footer-size)}@media (max-width:767px){:host([data-narrow-floating-drawer]) aside,:host([data-narrow-rail-bottom]) aside{inline-size:0;pointer-events:none;z-index:var(--n-layout-aside-narrow-z-index,calc(var(--n-index-top-bar,1000) + 5))}:host([sticky-footer][data-narrow-rail-bottom]) .n-has-footer slot[name=footer]::slotted(*){inset-block-end:var(--n-aside-rail-narrow-block-size,56px)}:host([data-narrow-rail-bottom]) .n-layout-content{padding-block-end:var(--n-aside-rail-narrow-block-size,56px)}:host([sticky-footer][data-narrow-rail-bottom]) .n-layout-content{padding-block-end:calc(var(--n-aside-rail-narrow-block-size,56px) + var(--n-layout-footer-block-size,var(--_n-layout-footer-size,0px)))}}`;x.registerIcon(t);let T=0;const E=250,j="undefined"!=typeof matchMedia?matchMedia("(min-width: 768px)"):{matches:!1,addEventListener(){}},M=w("nord-layout.navWidth",E),O=w("nord-layout.navWidthDefault",E),D=w("nord-layout.navOpen",!0);function $(e){for(const t of e)if(t instanceof HTMLElement&&"nord-nav-toggle"===t.localName)return t;return null}function L(e){return null!==$(e.composedPath())}const R=b({opened:{toggle:"closed",close:"closed"},closed:{toggle:"opened",open:"opened",focusin:"peek",pointerenter:"peek"},peek:{toggle:"opened",focusout:"unpeek",pointerleave:"wait",dropdownOpen:"blocked",click:"unpeek",open:"opened"},blocked:{dropdownClose:"peek",open:"opened"},wait:{toggle:"opened",focusin:"peek",pointerenter:"peek",timeout:"unpeek"},unpeek:{toggle:"opened",focusin:"peek",pointerenter:"peek",transitionend:"closed"}});let H=class extends a{constructor(){super(...arguments),this.resizeTooltipId="n-layout-resize-tip-"+ ++T,this.navSlot=new m(this,"nav"),this.drawerSlot=new m(this,"drawer"),this.topBarSlot=new m(this,"top-bar"),this.headerSlot=new m(this,"header"),this.footerSlot=new m(this,"footer"),this.dividerTooltipSlot=new m(this,"tooltip-divider"),this.direction=new v(this),this.events=new p(this),this.lightDismiss=new u(this,{isOpen:()=>"opened"===this.navState&&!this.wideScreen,onDismiss:()=>this.navTransition("close"),isDismissible:e=>e!==this.navEl}),this.applyingRemote=!1,this.broadcast=new C(this,{channelName:"nord-layout-nav-state",enabled:()=>this.syncNavState&&this.wideScreen,onMessage:e=>{this.applyingRemote=!0,"navOpen"in e&&(this.navOpen=e.navOpen),"navWidth"in e&&(this.navWidth=e.navWidth),this.updateComplete.then((()=>{this.applyingRemote=!1}))}}),this.navWidth=M.value,this.isDragging=!1,this.wideScreen=j.matches,this.persistNavState=!1,this.syncNavState=!1,this.defaultNavWidth=E,this.minNavWidth=220,this.maxNavWidth=400,this.navRailWidth=64,this.padding="m",this.sticky=!1,this.stickyFooter=!1,this.hideDefaultNavToggle=!1,this.hideCollapseButton=!1,this.toggleOnResizeClick=!1,this.collapseMode="hide",this.handleFooterSlotChange=()=>{var e,t;const n=null===(e=this.footerSlotEl)||void 0===e?void 0:e.assignedElements({flatten:!0})[0];n!==this.observedFooterElement&&(null===(t=this.footerSizeObserver)||void 0===t||t.disconnect(),this.observedFooterElement=n,n?(this.footerSizeObserver=new ResizeObserver((()=>this.publishFooterSize())),this.footerSizeObserver.observe(n),this.publishFooterSize()):this.style.removeProperty("--n-layout-footer-block-size"))},this.handleMediaQueryChange=()=>{this.wideScreen=j.matches,this.navTransition(this.wideScreen?"open":"close")},this.handleToggleClick=e=>{L(e)||this.navTransition("toggle")},this.handleHostClick=e=>{L(e)&&this.navTransition("toggle")},this.handleHostMouseOver=e=>{const t=$(e.composedPath());t&&(e.relatedTarget instanceof Node&&t.contains(e.relatedTarget)||this.handleMouseEnter())},this.handleHostMouseOut=e=>{const t=$(e.composedPath());t&&(e.relatedTarget instanceof Node&&t.contains(e.relatedTarget)||this.handleMouseLeave())},this.handleNavFocus=()=>{this.wideScreen&&"rail"===this.collapseMode||this.navTransition("focusin")},this.handleMainFocus=()=>{this.navTransition("focusout")},this.handleMouseEnter=()=>{this.wideScreen&&"rail"!==this.collapseMode&&this.navTransition("pointerenter")},this.handleMouseLeave=()=>{this.wideScreen&&"rail"===this.collapseMode||this.navTransition("pointerleave")},this.handleTransitionEnd=()=>{this.navTransition("transitionend")},this.dragStartX=0,this.hasDragged=!1,this.handleResizeHoverMove=e=>{const t=e.currentTarget;if(!t||!this.resizeTooltipEl)return;const n=t.getBoundingClientRect(),a=e.clientY-(n.top+n.height/2);this.resizeTooltipEl.style.setProperty("--n-resize-tooltip-y",`${a}px`)},this.handleResizePointerLeave=()=>{var e;this.stopDragging(),null===(e=this.resizeTooltipEl)||void 0===e||e.style.removeProperty("--n-resize-tooltip-y")}}get isNarrow(){return!this.wideScreen}connectedCallback(){super.connectedCallback(),this.events.listen(j,"change",this.handleMediaQueryChange),this.addEventListener("click",this.handleHostClick),this.addEventListener("mouseover",this.handleHostMouseOver),this.addEventListener("mouseout",this.handleHostMouseOut)}disconnectedCallback(){var e,t;super.disconnectedCallback(),this.removeEventListener("click",this.handleHostClick),this.removeEventListener("mouseover",this.handleHostMouseOver),this.removeEventListener("mouseout",this.handleHostMouseOut),null===(e=this.headerSizeObserver)||void 0===e||e.disconnect(),this.headerSizeObserver=void 0,null===(t=this.footerSizeObserver)||void 0===t||t.disconnect(),this.footerSizeObserver=void 0,this.observedFooterElement=void 0,this.style.removeProperty("--n-layout-header-block-size"),this.style.removeProperty("--n-layout-footer-block-size")}firstUpdated(){"undefined"!=typeof ResizeObserver&&(this.stickyHeaderEl&&(this.headerSizeObserver=new ResizeObserver((()=>this.publishHeaderSize())),this.headerSizeObserver.observe(this.stickyHeaderEl),this.publishHeaderSize()),this.footerSlotEl&&(this.footerSlotEl.addEventListener("slotchange",this.handleFooterSlotChange),this.handleFooterSlotChange()))}publishHeaderSize(){var e,t;const n=null!==(t=null===(e=this.stickyHeaderEl)||void 0===e?void 0:e.getBoundingClientRect().height)&&void 0!==t?t:0;n>0?this.style.setProperty("--n-layout-header-block-size",`${n}px`):this.style.removeProperty("--n-layout-header-block-size")}publishFooterSize(){var e,t;const n=null!==(t=null===(e=this.observedFooterElement)||void 0===e?void 0:e.getBoundingClientRect().height)&&void 0!==t?t:0;n>0?this.style.setProperty("--n-layout-footer-block-size",`${n}px`):this.style.removeProperty("--n-layout-footer-block-size")}willUpdate(){this.hasUpdated||(Number.isFinite(this.defaultNavWidth)||(this.defaultNavWidth=E),Number.isFinite(this.minNavWidth)||(this.minNavWidth=220),Number.isFinite(this.maxNavWidth)||(this.maxNavWidth=400),O.value!==this.defaultNavWidth?(this.setNavWidth(this.defaultNavWidth),M.value=this.navWidth,O.value=this.defaultNavWidth):this.setNavWidth(this.navWidth),this.isNarrow||this.persistNavState&&!1===D.value?this.navState="closed":this.navState="opened")}render(){const{navWidth:e,navState:t,navSlot:n,headerSlot:a,footerSlot:s,topBarSlot:r,drawerSlot:l,isDragging:d,direction:v}=this,p=this.wideScreen&&"rail"===this.collapseMode&&"opened"!==t,u="opened"===t&&this.wideScreen?e:p?64:this.defaultNavWidth;return o`<div class="${h({"n-layout":!0,"n-rtl":v.isRTL,"n-dragging":d,"n-has-header":a.hasContent,"n-has-footer":s.hasContent,"n-has-top-bar":r.hasContent,"n-has-drawer":l.hasContent,"n-has-nav":n.hasContent})}" style="${c({"--_n-layout-nav-width":`${u}px`,"--_n-layout-nav-rail-width":`var(--n-layout-nav-rail-width, ${this.navRailWidth}px)`,"--_n-layout-nav-min-width":`${this.minNavWidth}px`,"--_n-layout-nav-max-width":`${this.maxNavWidth}px`})}" data-nav="${n.hasContent?t:"closed"}" data-screen="${this.wideScreen?"wide":"narrow"}" data-collapse-mode="${this.collapseMode}"><div class="n-layout-nav" ?hidden="${n.isEmpty}" @focusin="${this.handleNavFocus}" @mouseenter="${this.handleMouseEnter}" @mouseleave="${this.handleMouseLeave}" @open="${this.handleDropdownOpen}" @close="${this.handleDropdownClose}"><slot name="nav" @click="${this.handleNavClick}"></slot><div class="n-resize" role="separator" aria-orientation="vertical" tabindex="0" aria-describedby="${g(this.dividerTooltipSlot.hasContent&&!d,this.resizeTooltipId)}" @pointerdown="${g("opened"===t||p,this.startDragging)}" @pointermove="${d?this.handleDrag:this.handleResizeHoverMove}" @pointerleave="${this.handleResizePointerLeave}" @pointerup="${this.stopDragging}" @keydown="${this.handleKeyboardResize}" ?hidden="${this.isNarrow}"></div>${this.dividerTooltipSlot.hasContent?o`<nord-tooltip id="${this.resizeTooltipId}" position="inline-end" class="n-resize-tooltip"><slot name="tooltip-divider"></slot></nord-tooltip>`:i} ${this.hideCollapseButton?i:this.renderNavCollapse()}</div><div class="n-layout-main" @focusin="${this.handleMainFocus}" @click="${this.handleMainClick}">${n.hasContent&&!this.hideDefaultNavToggle?this.renderNavToggle():i}<div class="n-top-bar-container"><slot name="top-bar"></slot></div><div class="n-layout-content"><div class="n-sticky"><slot name="header"></slot></div><main><slot></slot></main><slot name="footer"></slot></div><aside ?hidden="${this.drawerSlot.isEmpty}"><slot name="drawer"></slot></aside></div></div>`}renderNavToggle(){return o`<div class="n-nav-toggle-container"><slot name="nav-toggle" @click="${this.handleToggleClick}" @mouseover="${this.handleMouseEnter}" @mouseout="${this.handleMouseLeave}"><nord-nav-toggle></nord-nav-toggle></slot></div>`}renderNavCollapse(){return o`<button class="n-collapse-btn" @click="${this.handleToggleClick}"><nord-icon name="navigation-toggle-lock" size="s"></nord-icon></button>`}handleNavWidthChange(e){if(M.value=this.navWidth,null!=e){const e=this.navWidth;this.dispatchEvent(new N(e))}}handleNavStateChange(e){switch("wait"===e&&this.peekTimeoutId&&clearTimeout(this.peekTimeoutId),"unpeek"===e&&this.navEl.removeEventListener("transitionend",this.handleTransitionEnd),this.navState){case"closed":this.navOpen=!1;break;case"opened":this.navOpen=!0;break;case"wait":this.peekTimeoutId=setTimeout((()=>this.navTransition("timeout")),300);break;case"unpeek":this.navEl.addEventListener("transitionend",this.handleTransitionEnd,{once:!0})}}handleOpenChange(e){if(this.isDragging||this.setNavWidth(Math.max(this.navWidth,this.defaultNavWidth)),this.navTransition(this.navOpen?"open":"close"),this.persistNavState&&(D.value=this.navOpen),null!=e){const e=this.navOpen;this.applyingRemote||this.broadcast.post({navOpen:e}),this.dispatchEvent(new S(e))}}navTransition(e){this.navState=R.transition(this.navState,e)}handleNavClick(e){if(!e.defaultPrevented&&!this.wideScreen){const n=e.target;(e=>"nord-nav-item"===e.localName)(t=n)&&!t.hasSubNav&&this.navTransition("close")}var t}handleMainClick(){this.navTransition("click")}handleDropdownOpen(e){"nord-dropdown"===e.target.localName&&this.navTransition("dropdownOpen")}handleDropdownClose(e){"nord-dropdown"===e.target.localName&&this.navTransition("dropdownClose")}handleKeyboardResize(e){const{navWidth:t,direction:{isLTR:n}}=this;switch(e.key){case"ArrowLeft":this.setNavWidth(t+(n?-30:30));break;case"ArrowRight":this.setNavWidth(t+(n?30:-30));break;case"Enter":this.navTransition("toggle");break;case"Home":this.setNavWidth(this.minNavWidth);break;case"End":this.setNavWidth(this.maxNavWidth);break;default:return}this.broadcast.post({navWidth:this.navWidth}),e.preventDefault()}setNavWidth(e){this.navWidth=f(Math.round(e),this.minNavWidth,this.maxNavWidth)}startDragging(e){if(0===e.button){e.target.setPointerCapture(e.pointerId),this.isDragging=!0,this.dragStartX=e.clientX,this.hasDragged=!1}}stopDragging(){this.isDragging&&this.toggleOnResizeClick&&!this.hasDragged&&this.navTransition("toggle"),this.isDragging=!1,this.hasDragged=!1,this.broadcast.post({navWidth:this.navWidth})}handleDrag(e){if(!this.hasDragged&&Math.abs(e.clientX-this.dragStartX)<4)return;this.hasDragged=!0;const t=this.direction.isRTL?this.clientWidth-e.clientX:e.clientX;this.setNavWidth(t),this.navTransition(t>=100?"open":"close")}};H.styles=[z,k,W],e([s(".n-layout-nav",!0)],H.prototype,"navEl",void 0),e([s(".n-resize-tooltip")],H.prototype,"resizeTooltipEl",void 0),e([s(".n-sticky")],H.prototype,"stickyHeaderEl",void 0),e([s('slot[name="footer"]')],H.prototype,"footerSlotEl",void 0),e([r()],H.prototype,"navWidth",void 0),e([r()],H.prototype,"isDragging",void 0),e([r()],H.prototype,"navState",void 0),e([r()],H.prototype,"wideScreen",void 0),e([l({reflect:!0,type:Boolean,attribute:"nav-open"})],H.prototype,"navOpen",void 0),e([l({reflect:!0,type:Boolean,attribute:"persist-nav-state"})],H.prototype,"persistNavState",void 0),e([l({type:Boolean,reflect:!0,attribute:"sync-nav-state"})],H.prototype,"syncNavState",void 0),e([l({type:Number,reflect:!0,attribute:"default-nav-width"})],H.prototype,"defaultNavWidth",void 0),e([l({type:Number,reflect:!0,attribute:"min-nav-width"})],H.prototype,"minNavWidth",void 0),e([l({type:Number,reflect:!0,attribute:"max-nav-width"})],H.prototype,"maxNavWidth",void 0),e([l({type:Number,reflect:!0,attribute:"nav-rail-width"})],H.prototype,"navRailWidth",void 0),e([l({reflect:!0})],H.prototype,"padding",void 0),e([l({type:Boolean,reflect:!0})],H.prototype,"sticky",void 0),e([l({type:Boolean,reflect:!0,attribute:"sticky-footer"})],H.prototype,"stickyFooter",void 0),e([l({type:Boolean,reflect:!0,attribute:"hide-default-nav-toggle"})],H.prototype,"hideDefaultNavToggle",void 0),e([l({type:Boolean,reflect:!0,attribute:"hide-collapse-button"})],H.prototype,"hideCollapseButton",void 0),e([l({type:Boolean,reflect:!0,attribute:"toggle-on-resize-click"})],H.prototype,"toggleOnResizeClick",void 0),e([l({reflect:!0,attribute:"collapse-mode"})],H.prototype,"collapseMode",void 0),e([y("navWidth","updated")],H.prototype,"handleNavWidthChange",null),e([y("navState")],H.prototype,"handleNavStateChange",null),e([y("navOpen","updated")],H.prototype,"handleOpenChange",null),H=e([d("nord-layout")],H);var B=H;export{B as default};
1
+ import{_ as e}from"./tslib.es6-CmLYFWVC.js";import{l as t}from"./NavToggle-BY83xpx0.js";import{css as n,LitElement as a,html as o,nothing as i}from"lit";import{query as s,state as r,property as l,customElement as d}from"lit/decorators.js";import{classMap as h}from"lit/directives/class-map.js";import{styleMap as c}from"lit/directives/style-map.js";import{D as v}from"./DirectionController-ChvNGESZ.js";import{E as p}from"./EventController-BBOmvfLa.js";import{L as u}from"./LightDismissController-wcL1ziJa.js";import{S as m}from"./SlotController-Z6eG7LSZ.js";import{o as y}from"./observe-D0n0zOfU.js";import{c as g}from"./cond-CI1KbneT.js";import{f as b}from"./fsm-Bq5jMQrK.js";import{c as f}from"./number-Dg2vCfGd.js";import{s as z}from"./storage-CGZ-YX4-.js";import{s as w}from"./Component-BJ5O5n8k.js";import{s as k}from"./Sticky-CZImMrGj.js";import x from"./Icon.js";import{NavOpenChangeEvent as S}from"./NavOpenChangeEvent.js";import{NavResizeEvent as N}from"./NavResizeEvent.js";import"./Tooltip.js";import"lit/directives/ref.js";import"./FocusableMixin-BlQLNPdJ.js";import"./LocalizeController.js";import"./translation.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./localization6.js";import"./localization7.js";import"./localization8.js";import"./localization9.js";import"./localization10.js";import"./localization11.js";import"./localization12.js";import"./localization13.js";import"./localization14.js";import"./localization15.js";import"./localization16.js";import"./localization17.js";import"./localization18.js";import"./localization19.js";import"./localization20.js";import"./localization21.js";import"./localization22.js";import"./localization23.js";import"./Button.js";import"./LightDomController-DIwtVelV.js";import"./InputMixin-LetXsCyv.js";import"./Spinner.js";import"lit/directives/if-defined.js";import"./VisuallyHidden.js";import"./ShortcutController-CV5b0BZl.js";import"./tinykeys-DwvDXsEb.js";import"lit/directives/unsafe-html.js";import"./IconManager.js";import"./events-Bv6wNHwJ.js";import"./positioning-D-K8Mueq.js";const _=()=>!0;class C{constructor(e,t){e.addController(this),this.options={enabled:_,...t}}hostConnected(){"undefined"!=typeof BroadcastChannel&&(this.channel=new BroadcastChannel(this.options.channelName),this.channel.addEventListener("message",this))}hostDisconnected(){var e,t;null===(e=this.channel)||void 0===e||e.removeEventListener("message",this),null===(t=this.channel)||void 0===t||t.close()}handleEvent(e){this.options.enabled()&&this.options.onMessage(e.data)}post(e){var t;this.options.enabled()&&(null===(t=this.channel)||void 0===t||t.postMessage(e))}}const j=n`:host{--_n-layout-padding:var(--n-layout-padding,var(--n-space-l));--_n-layout-drawer-inline-size:var(--n-layout-drawer-inline-size,320px);--_n-layout-drawer-min-inline-size:var(--n-layout-drawer-min-inline-size,0px);--_n-layout-background-color:var(--n-layout-background-color,var(--n-color-background));--_n-layout-nav-border-color:var(--n-layout-nav-border-color,var(--n-color-border));--_n-layout-nav-transition-duration:var(--n-transition-mobile);--_n-layout-header-size:var(--n-layout-header-size,var(--n-space-xxl));--_n-layout-header-size-s:calc(var(--n-space-xl) + var(--n-space-m));--_n-layout-footer-size:var(--n-space-xxl);--n-layout-main-min-inline-size:0;background:var(--_n-layout-background-color);color:var(--n-color-text);min-block-size:100vh}.n-layout{block-size:calc(100vh - var(--n-sticky-top) - var(--n-layout-block-size-offset, 0px))}.n-layout-main,.n-layout-nav{background:var(--_n-layout-background-color);min-block-size:100%}.n-layout-nav{box-shadow:var(--n-box-shadow-nav);inline-size:var(--_n-layout-nav-width);inset-block-end:0;inset-block-start:0;inset-inline-start:0;position:fixed;transform:translateX(var(--n-nav-transform));user-select:none;z-index:var(--n-layout-nav-z-index,var(--n-index-top-bar))}[data-screen=wide][data-collapse-mode=hide]:is(:not([data-nav=opened],[data-nav=closed])) .n-layout-nav{inline-size:fit-content;max-inline-size:min(var(--_n-layout-nav-max-width),100dvw);min-inline-size:var(--_n-layout-nav-min-width)}[data-screen=wide][data-collapse-mode=hide]:is(:not([data-nav=opened],[data-nav=closed])) .n-layout-nav>slot[name=nav]::slotted(*){inline-size:100%}.n-layout-main{position:relative}main{padding:var(--_n-layout-padding)}.n-has-top-bar{--_n-sticky-top:var(--_n-layout-header-size)}:host([sticky]) .n-has-header{--_n-sticky-size:var(--_n-layout-header-size)}:host([sticky-footer]) .n-has-footer slot[name=footer]::slotted(*){display:block;inset-inline-end:0;inset-inline-start:0;position:fixed;z-index:var(--n-layout-sticky-footer-z-index,calc(var(--n-index-top-bar, 1000) + 1))}[data-screen=wide]:host([sticky-footer]) .n-has-footer .n-layout-nav{z-index:var(--n-layout-nav-z-index,calc(var(--n-index-top-bar, 1000) + 2))}:host([sticky-footer][nav-open]) .n-has-footer slot[name=footer]::slotted(*){inset-inline-start:var(--_n-layout-nav-width,250px)}@media (min-width:768px){:host([sticky-footer]) .n-has-drawer.n-has-footer slot[name=footer]::slotted(*){--n-footer-padding-inline-end:calc(var(--n-footer-padding-inline, var(--n-space-l)) + var(--_n-layout-drawer-min-inline-size, 0px))}}aside{background:var(--n-layout-drawer-background-color,var(--n-color-surface));inline-size:var(--_n-layout-drawer-inline-size);inset-block:0;inset-inline-end:0;max-inline-size:100%;position:fixed;z-index:var(--n-index-nav)}:host([sticky-footer]) .n-has-footer aside{inset-block-end:var(--n-layout-footer-block-size,var(--_n-layout-footer-size))}.n-has-drawer .n-layout-content{margin-inline-end:var(--_n-layout-drawer-min-inline-size)}@media (min-width:1240px){:host{--n-layout-main-min-inline-size:600px}.n-has-drawer .n-layout-content{margin-inline-end:var(--_n-layout-drawer-inline-size)}aside{border-inline-start:var(--n-layout-drawer-border-inline-start-width,0) solid var(--n-layout-drawer-border-inline-start-color,var(--n-color-border))}}slot[name=drawer]::slotted(*){block-size:100%!important}.n-has-top-bar aside{inset-block-start:var(--_n-layout-header-size)}:is(.n-has-top-bar,.n-has-header) ::slotted(nord-notification-group){inset-block-start:var(--_n-layout-header-size)}:is([data-nav=closed],[data-nav=unpeek]) .n-layout-nav{transform:translateX(-110%)}.n-rtl:is([data-nav=closed],[data-nav=unpeek]) .n-layout-nav{transform:translateX(110%)}[data-screen=wide][data-collapse-mode=rail]:is([data-nav=closed],[data-nav=peek],[data-nav=unpeek],[data-nav=wait]) .n-layout-nav{border-end-end-radius:0;border-inline-end:1px solid var(--_n-layout-nav-border-color);border-start-end-radius:0;box-shadow:none;inline-size:var(--_n-layout-nav-rail-width);inset-block:0;overflow:visible;transform:none}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-layout-main{margin-inline-start:var(--_n-layout-nav-rail-width)}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-top-bar-container{inset-inline-start:var(--_n-layout-nav-rail-width)}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) slot[name=footer]::slotted(*){inset-inline-start:var(--_n-layout-nav-rail-width)}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-collapse-btn{display:flex}[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-collapse-btn nord-icon{transform:rotate(0)}.n-rtl[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-collapse-btn nord-icon{transform:rotate(180deg)}[data-screen=narrow] .n-layout-nav{transition:transform var(--_n-layout-nav-transition-duration);z-index:var(--n-index-popout)}[data-screen=wide]:is(:not([data-nav=opened],[data-nav=closed])) .n-layout-nav{border-end-end-radius:var(--n-border-radius);border-start-end-radius:var(--n-border-radius);inset-block-end:var(--n-space-l);inset-block-start:calc(var(--n-space-m)*4);min-block-size:0;transition:transform var(--_n-layout-nav-transition-duration)}[data-screen=wide][data-nav=opened] .n-layout-nav{border-inline-end:1px solid var(--_n-layout-nav-border-color);box-shadow:none}[data-screen=wide][data-nav=opened]:not(.n-has-top-bar) .n-layout-nav{--n-navigation-header-padding-inline:calc(var(--n-space-l)/1.5)}.n-has-top-bar[data-screen=wide][data-nav=opened] .n-layout-nav{--n-navigation-header-background:var(--n-color-accent-secondary);--n-navigation-header-color:var(--n-color-text-on-accent);--n-navigation-header-divider:none;--n-navigation-header-toggle-icon-color:#ffffffd9;--n-navigation-header-focus-style:0 0 0 1px #fff inset,inset 0 0 0 100px #fff3;background:var(--n-color-accent-secondary);border-color:#0000;border-image-slice:1;border-image-source:linear-gradient(to bottom,#ffffff29 calc(var(--_n-layout-header-size) + 1px),var(--_n-layout-nav-border-color) calc(var(--_n-layout-header-size) + 1px));box-shadow:0 0 #0000}[data-screen=wide]:not([data-nav=opened]) .n-layout-nav{--n-navigation-header-block-size:var(--_n-layout-header-size-s);overflow:hidden}[data-screen=wide][data-nav=opened] .n-layout-main{margin-inline-start:var(--_n-layout-nav-width)}[data-screen=narrow] .n-layout-main:after{background:var(--n-color-overlay);content:"";inset:0;position:fixed;transition:opacity var(--n-transition-mobile),visibility var(--n-transition-mobile);z-index:var(--n-index-overlay)}[data-screen=narrow]:not([data-nav=opened],[data-nav=peek],[data-nav=blocked]) .n-layout-main:after{opacity:0;visibility:hidden}.n-resize{background:#0000;block-size:var(--n-layout-resize-block-size,100%);inline-size:10px;inset-block:0;inset-inline-end:-8px;margin-block:auto;position:absolute;touch-action:none}[data-nav=opened] .n-resize,[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-resize{cursor:col-resize}.n-resize:after{background:var(--n-layout-resize-color,var(--n-color-accent));content:"";inline-size:3px;inset-block:0;inset-inline-end:5px;opacity:0;position:absolute;transition:opacity var(--n-transition-slowly);z-index:var(--n-index-sticky)}.n-resize:focus{outline:none}.n-dragging .n-resize:after,.n-resize:focus:after,[data-nav=opened] .n-resize:hover:after,[data-screen=wide][data-collapse-mode=rail]:not([data-nav=opened]) .n-resize:hover:after{opacity:1;transition-delay:.15s}@supports selector(:focus-visible){.n-resize:focus:after{opacity:0}.n-resize:focus-visible:after{opacity:1}}.n-dragging{cursor:col-resize!important;user-select:none}.n-resize-tooltip{transform:translateY(var(--n-resize-tooltip-y,0))}.n-dragging .n-resize-tooltip{opacity:0!important;visibility:hidden!important}:host([padding=none]){--_n-layout-padding:var(--n-layout-padding,0)}.n-top-bar-container{inset-block-start:0;inset-inline-end:0;inset-inline-start:var(--_n-layout-nav-width);position:fixed;z-index:var(--n-index-top-bar)}[data-screen=narrow] .n-top-bar-container,[data-screen=wide]:not([data-nav=opened]) .n-top-bar-container{inset-inline-start:0}.n-has-top-bar{--_n-layout-header-size:var(--_n-layout-header-size-s);--n-navigation-header-block-size:var(--_n-layout-header-size)}.n-has-top-bar :is([name=header],[name=drawer])::slotted(*){--n-header-block-size:var(--_n-layout-header-size)}.n-has-top-bar .n-layout-main{inset-block-start:var(--_n-layout-header-size)}.n-nav-toggle-container{align-items:center;block-size:var(--_n-layout-header-size);display:flex;padding-inline-start:var(--n-space-s);position:absolute;z-index:calc(var(--n-index-top-bar) + 1)}[data-screen=narrow] .n-nav-toggle-container{padding-inline-start:var(--n-space-xs)}.n-has-top-bar .n-nav-toggle-container,:host([sticky]) .n-nav-toggle-container{inset-block-start:0;position:fixed}[data-screen=wide][data-nav=opened] .n-nav-toggle-container{display:none}:host(:not([hide-default-nav-toggle])) .n-has-nav[data-screen=wide]:not([data-nav=opened]) ::slotted(nord-top-bar),:host(:not([hide-default-nav-toggle])) .n-has-nav[data-screen=wide]:not([data-nav=opened],.n-has-top-bar) ::slotted(nord-header[slot=header]){--_n-header-gutter:calc(var(--n-space-l)*1.8)}:host(:not([hide-default-nav-toggle])) .n-has-nav[data-screen=narrow] ::slotted(nord-top-bar),:host(:not([hide-default-nav-toggle])) .n-has-nav[data-screen=narrow]:not(.n-has-top-bar) ::slotted(nord-header[slot=header]){--_n-header-gutter:var(--n-space-xl)}.n-has-top-bar :is(nord-nav-toggle,::slotted(nord-nav-toggle)){--n-button-background-color:#0000;color:#ffffffd9}.n-has-top-bar :is(nord-nav-toggle,::slotted(nord-nav-toggle)):focus{--n-button-background-color:#0003}.n-collapse-btn{--_n-collapse-btn-size:var(--n-space-l);align-items:center;background:var(--n-color-button);block-size:var(--_n-collapse-btn-size);border:0;border-radius:var(--n-border-radius-circle);box-shadow:var(--n-box-shadow-card);color:var(--n-color-icon);cursor:pointer;display:flex;inline-size:var(--_n-collapse-btn-size);inset-block-start:calc(var(--_n-layout-header-size) + (var(--_n-layout-header-size) - var(--_n-collapse-btn-size))/2);inset-inline-start:calc(var(--_n-layout-nav-width) - var(--_n-collapse-btn-size)/2);justify-content:center;position:fixed;transition:opacity var(--n-transition-slowly),visibility var(--n-transition-slowly),background-color var(--n-transition-quickly),color var(--n-transition-quickly);z-index:var(--n-index-sticky)}.n-collapse-btn:hover{background:var(--n-color-accent);color:var(--n-color-text-on-accent)}.n-collapse-btn:focus{box-shadow:0 0 0 2px var(--n-color-accent),var(--n-box-shadow);outline:0}[data-screen=narrow] .n-collapse-btn,[data-screen=wide]:not([data-nav=opened]) .n-collapse-btn{display:none}@media (hover:hover) and (pointer:fine){.n-collapse-btn{opacity:0;visibility:hidden}.n-collapse-btn:focus,.n-layout-nav:hover .n-collapse-btn{opacity:1;visibility:visible}}.n-collapse-btn nord-icon{transform:rotate(180deg)}.n-rtl .n-collapse-btn nord-icon{transform:rotate(0)}slot[name=footer]::slotted(*){inset-block-end:0;inset-inline-end:0;inset-inline-start:var(--_n-layout-nav-width)}@media (min-width:1240px){.n-has-drawer slot[name=footer]::slotted(*){inset-inline-end:var(--_n-layout-drawer-inline-size)}}[data-screen=narrow] slot[name=footer]::slotted(*),[data-screen=wide]:not([data-nav=opened]) slot[name=footer]::slotted(*){inset-inline-start:0}:host([sticky-footer]) .n-has-footer .n-layout-content{padding-block-end:var(--_n-layout-footer-size)}@media (max-width:767px){:host([data-narrow-floating-drawer]) aside,:host([data-narrow-rail-bottom]) aside{inline-size:0;pointer-events:none;z-index:var(--n-layout-aside-narrow-z-index,calc(var(--n-index-top-bar, 1000) + 5))}:host([sticky-footer][data-narrow-rail-bottom]) .n-has-footer slot[name=footer]::slotted(*){inset-block-end:var(--n-aside-rail-narrow-block-size,56px)}:host([data-narrow-rail-bottom]) .n-layout-content{padding-block-end:var(--n-aside-rail-narrow-block-size,56px)}:host([sticky-footer][data-narrow-rail-bottom]) .n-layout-content{padding-block-end:calc(var(--n-aside-rail-narrow-block-size, 56px) + var(--n-layout-footer-block-size, var(--_n-layout-footer-size, 0px)))}}`;x.registerIcon(t);let W=0;const T=250,E="undefined"!=typeof matchMedia?matchMedia("(min-width: 768px)"):{matches:!1,addEventListener(){}},M=z("nord-layout.navWidth",T),O=z("nord-layout.navWidthDefault",T),D=z("nord-layout.navOpen",!0);function $(e){for(const t of e)if(t instanceof HTMLElement&&"nord-nav-toggle"===t.localName)return t;return null}function L(e){return null!==$(e.composedPath())}const R=b({opened:{toggle:"closed",close:"closed"},closed:{toggle:"opened",open:"opened",focusin:"peek",pointerenter:"peek"},peek:{toggle:"opened",focusout:"unpeek",pointerleave:"wait",dropdownOpen:"blocked",click:"unpeek",open:"opened"},blocked:{dropdownClose:"peek",open:"opened"},wait:{toggle:"opened",focusin:"peek",pointerenter:"peek",timeout:"unpeek"},unpeek:{toggle:"opened",focusin:"peek",pointerenter:"peek",transitionend:"closed"}});let H=class extends a{constructor(){super(...arguments),this.resizeTooltipId="n-layout-resize-tip-"+ ++W,this.navSlot=new m(this,"nav"),this.drawerSlot=new m(this,"drawer"),this.topBarSlot=new m(this,"top-bar"),this.headerSlot=new m(this,"header"),this.footerSlot=new m(this,"footer"),this.dividerTooltipSlot=new m(this,"tooltip-divider"),this.direction=new v(this),this.events=new p(this),this.lightDismiss=new u(this,{isOpen:()=>"opened"===this.navState&&!this.wideScreen,onDismiss:()=>this.navTransition("close"),isDismissible:e=>e!==this.navEl}),this.applyingRemote=!1,this.broadcast=new C(this,{channelName:"nord-layout-nav-state",enabled:()=>this.syncNavState&&this.wideScreen,onMessage:e=>{this.applyingRemote=!0,"navOpen"in e&&(this.navOpen=e.navOpen),"navWidth"in e&&(this.navWidth=e.navWidth),this.updateComplete.then((()=>{this.applyingRemote=!1}))}}),this.navWidth=M.value,this.isDragging=!1,this.wideScreen=E.matches,this.persistNavState=!1,this.syncNavState=!1,this.defaultNavWidth=T,this.minNavWidth=220,this.maxNavWidth=400,this.navRailWidth=64,this.padding="m",this.sticky=!1,this.stickyFooter=!1,this.hideDefaultNavToggle=!1,this.hideCollapseButton=!1,this.toggleOnResizeClick=!1,this.collapseMode="hide",this.handleFooterSlotChange=()=>{var e,t;const n=null===(e=this.footerSlotEl)||void 0===e?void 0:e.assignedElements({flatten:!0})[0];n!==this.observedFooterElement&&(null===(t=this.footerSizeObserver)||void 0===t||t.disconnect(),this.observedFooterElement=n,n?(this.footerSizeObserver=new ResizeObserver((()=>this.publishFooterSize())),this.footerSizeObserver.observe(n),this.publishFooterSize()):this.style.removeProperty("--n-layout-footer-block-size"))},this.handleMediaQueryChange=()=>{this.wideScreen=E.matches,this.navTransition(this.wideScreen?"open":"close")},this.handleToggleClick=e=>{L(e)||this.navTransition("toggle")},this.handleHostClick=e=>{L(e)&&this.navTransition("toggle")},this.handleHostMouseOver=e=>{const t=$(e.composedPath());t&&(e.relatedTarget instanceof Node&&t.contains(e.relatedTarget)||this.handleMouseEnter())},this.handleHostMouseOut=e=>{const t=$(e.composedPath());t&&(e.relatedTarget instanceof Node&&t.contains(e.relatedTarget)||this.handleMouseLeave())},this.handleNavFocus=()=>{this.wideScreen&&"rail"===this.collapseMode||this.navTransition("focusin")},this.handleMainFocus=()=>{this.navTransition("focusout")},this.handleMouseEnter=()=>{this.wideScreen&&"rail"!==this.collapseMode&&this.navTransition("pointerenter")},this.handleMouseLeave=()=>{this.wideScreen&&"rail"===this.collapseMode||this.navTransition("pointerleave")},this.handleTransitionEnd=()=>{this.navTransition("transitionend")},this.dragStartX=0,this.hasDragged=!1,this.handleResizeHoverMove=e=>{const t=e.currentTarget;if(!t||!this.resizeTooltipEl)return;const n=t.getBoundingClientRect(),a=e.clientY-(n.top+n.height/2);this.resizeTooltipEl.style.setProperty("--n-resize-tooltip-y",`${a}px`)},this.handleResizePointerLeave=()=>{var e;this.stopDragging(),null===(e=this.resizeTooltipEl)||void 0===e||e.style.removeProperty("--n-resize-tooltip-y")}}get isNarrow(){return!this.wideScreen}connectedCallback(){super.connectedCallback(),this.events.listen(E,"change",this.handleMediaQueryChange),this.addEventListener("click",this.handleHostClick),this.addEventListener("mouseover",this.handleHostMouseOver),this.addEventListener("mouseout",this.handleHostMouseOut)}disconnectedCallback(){var e,t;super.disconnectedCallback(),this.removeEventListener("click",this.handleHostClick),this.removeEventListener("mouseover",this.handleHostMouseOver),this.removeEventListener("mouseout",this.handleHostMouseOut),null===(e=this.headerSizeObserver)||void 0===e||e.disconnect(),this.headerSizeObserver=void 0,null===(t=this.footerSizeObserver)||void 0===t||t.disconnect(),this.footerSizeObserver=void 0,this.observedFooterElement=void 0,this.style.removeProperty("--n-layout-header-block-size"),this.style.removeProperty("--n-layout-footer-block-size")}firstUpdated(){"undefined"!=typeof ResizeObserver&&(this.stickyHeaderEl&&(this.headerSizeObserver=new ResizeObserver((()=>this.publishHeaderSize())),this.headerSizeObserver.observe(this.stickyHeaderEl),this.publishHeaderSize()),this.footerSlotEl&&(this.footerSlotEl.addEventListener("slotchange",this.handleFooterSlotChange),this.handleFooterSlotChange()))}publishHeaderSize(){var e,t;const n=null!==(t=null===(e=this.stickyHeaderEl)||void 0===e?void 0:e.getBoundingClientRect().height)&&void 0!==t?t:0;n>0?this.style.setProperty("--n-layout-header-block-size",`${n}px`):this.style.removeProperty("--n-layout-header-block-size")}publishFooterSize(){var e,t;const n=null!==(t=null===(e=this.observedFooterElement)||void 0===e?void 0:e.getBoundingClientRect().height)&&void 0!==t?t:0;n>0?this.style.setProperty("--n-layout-footer-block-size",`${n}px`):this.style.removeProperty("--n-layout-footer-block-size")}willUpdate(){this.hasUpdated||(Number.isFinite(this.defaultNavWidth)||(this.defaultNavWidth=T),Number.isFinite(this.minNavWidth)||(this.minNavWidth=220),Number.isFinite(this.maxNavWidth)||(this.maxNavWidth=400),O.value!==this.defaultNavWidth?(this.setNavWidth(this.defaultNavWidth),M.value=this.navWidth,O.value=this.defaultNavWidth):this.setNavWidth(this.navWidth),this.isNarrow||this.persistNavState&&!1===D.value?this.navState="closed":this.navState="opened")}render(){const{navWidth:e,navState:t,navSlot:n,headerSlot:a,footerSlot:s,topBarSlot:r,drawerSlot:l,isDragging:d,direction:v}=this,p=this.wideScreen&&"rail"===this.collapseMode&&"opened"!==t,u="opened"===t&&this.wideScreen?e:p?64:this.defaultNavWidth;return o`<div class="${h({"n-layout":!0,"n-rtl":v.isRTL,"n-dragging":d,"n-has-header":a.hasContent,"n-has-footer":s.hasContent,"n-has-top-bar":r.hasContent,"n-has-drawer":l.hasContent,"n-has-nav":n.hasContent})}" style="${c({"--_n-layout-nav-width":`${u}px`,"--_n-layout-nav-rail-width":`var(--n-layout-nav-rail-width, ${this.navRailWidth}px)`,"--_n-layout-nav-min-width":`${this.minNavWidth}px`,"--_n-layout-nav-max-width":`${this.maxNavWidth}px`})}" data-nav="${n.hasContent?t:"closed"}" data-screen="${this.wideScreen?"wide":"narrow"}" data-collapse-mode="${this.collapseMode}"><div class="n-layout-nav" ?hidden="${n.isEmpty}" @focusin="${this.handleNavFocus}" @mouseenter="${this.handleMouseEnter}" @mouseleave="${this.handleMouseLeave}" @open="${this.handleDropdownOpen}" @close="${this.handleDropdownClose}"><slot name="nav" @click="${this.handleNavClick}"></slot><div class="n-resize" role="separator" aria-orientation="vertical" tabindex="0" aria-describedby="${g(this.dividerTooltipSlot.hasContent&&!d,this.resizeTooltipId)}" @pointerdown="${g("opened"===t||p,this.startDragging)}" @pointermove="${d?this.handleDrag:this.handleResizeHoverMove}" @pointerleave="${this.handleResizePointerLeave}" @pointerup="${this.stopDragging}" @keydown="${this.handleKeyboardResize}" ?hidden="${this.isNarrow}"></div>${this.dividerTooltipSlot.hasContent?o`<nord-tooltip id="${this.resizeTooltipId}" position="inline-end" class="n-resize-tooltip"><slot name="tooltip-divider"></slot></nord-tooltip>`:i} ${this.hideCollapseButton?i:this.renderNavCollapse()}</div><div class="n-layout-main" @focusin="${this.handleMainFocus}" @click="${this.handleMainClick}">${n.hasContent&&!this.hideDefaultNavToggle?this.renderNavToggle():i}<div class="n-top-bar-container"><slot name="top-bar"></slot></div><div class="n-layout-content"><div class="n-sticky"><slot name="header"></slot></div><main><slot></slot></main><slot name="footer"></slot></div><aside ?hidden="${this.drawerSlot.isEmpty}"><slot name="drawer"></slot></aside></div></div>`}renderNavToggle(){return o`<div class="n-nav-toggle-container"><slot name="nav-toggle" @click="${this.handleToggleClick}" @mouseover="${this.handleMouseEnter}" @mouseout="${this.handleMouseLeave}"><nord-nav-toggle></nord-nav-toggle></slot></div>`}renderNavCollapse(){return o`<button class="n-collapse-btn" @click="${this.handleToggleClick}"><nord-icon name="navigation-toggle-lock" size="s"></nord-icon></button>`}handleNavWidthChange(e){if(M.value=this.navWidth,null!=e){const e=this.navWidth;this.dispatchEvent(new N(e))}}handleNavStateChange(e){switch("wait"===e&&this.peekTimeoutId&&clearTimeout(this.peekTimeoutId),"unpeek"===e&&this.navEl.removeEventListener("transitionend",this.handleTransitionEnd),this.navState){case"closed":this.navOpen=!1;break;case"opened":this.navOpen=!0;break;case"wait":this.peekTimeoutId=setTimeout((()=>this.navTransition("timeout")),300);break;case"unpeek":this.navEl.addEventListener("transitionend",this.handleTransitionEnd,{once:!0})}}handleOpenChange(e){if(this.isDragging||this.setNavWidth(Math.max(this.navWidth,this.defaultNavWidth)),this.navTransition(this.navOpen?"open":"close"),this.persistNavState&&(D.value=this.navOpen),null!=e){const e=this.navOpen;this.applyingRemote||this.broadcast.post({navOpen:e}),this.dispatchEvent(new S(e))}}navTransition(e){this.navState=R.transition(this.navState,e)}handleNavClick(e){if(!e.defaultPrevented&&!this.wideScreen){const n=e.target;(e=>"nord-nav-item"===e.localName)(t=n)&&!t.hasSubNav&&this.navTransition("close")}var t}handleMainClick(){this.navTransition("click")}handleDropdownOpen(e){"nord-dropdown"===e.target.localName&&this.navTransition("dropdownOpen")}handleDropdownClose(e){"nord-dropdown"===e.target.localName&&this.navTransition("dropdownClose")}handleKeyboardResize(e){const{navWidth:t,direction:{isLTR:n}}=this;switch(e.key){case"ArrowLeft":this.setNavWidth(t+(n?-30:30));break;case"ArrowRight":this.setNavWidth(t+(n?30:-30));break;case"Enter":this.navTransition("toggle");break;case"Home":this.setNavWidth(this.minNavWidth);break;case"End":this.setNavWidth(this.maxNavWidth);break;default:return}this.broadcast.post({navWidth:this.navWidth}),e.preventDefault()}setNavWidth(e){this.navWidth=f(Math.round(e),this.minNavWidth,this.maxNavWidth)}startDragging(e){if(0===e.button){e.target.setPointerCapture(e.pointerId),this.isDragging=!0,this.dragStartX=e.clientX,this.hasDragged=!1}}stopDragging(){this.isDragging&&this.toggleOnResizeClick&&!this.hasDragged&&this.navTransition("toggle"),this.isDragging=!1,this.hasDragged=!1,this.broadcast.post({navWidth:this.navWidth})}handleDrag(e){if(!this.hasDragged&&Math.abs(e.clientX-this.dragStartX)<4)return;this.hasDragged=!0;const t=this.direction.isRTL?this.clientWidth-e.clientX:e.clientX;this.setNavWidth(t),this.navTransition(t>=100?"open":"close")}};H.styles=[w,k,j],e([s(".n-layout-nav",!0)],H.prototype,"navEl",void 0),e([s(".n-resize-tooltip")],H.prototype,"resizeTooltipEl",void 0),e([s(".n-sticky")],H.prototype,"stickyHeaderEl",void 0),e([s('slot[name="footer"]')],H.prototype,"footerSlotEl",void 0),e([r()],H.prototype,"navWidth",void 0),e([r()],H.prototype,"isDragging",void 0),e([r()],H.prototype,"navState",void 0),e([r()],H.prototype,"wideScreen",void 0),e([l({reflect:!0,type:Boolean,attribute:"nav-open"})],H.prototype,"navOpen",void 0),e([l({reflect:!0,type:Boolean,attribute:"persist-nav-state"})],H.prototype,"persistNavState",void 0),e([l({type:Boolean,reflect:!0,attribute:"sync-nav-state"})],H.prototype,"syncNavState",void 0),e([l({type:Number,reflect:!0,attribute:"default-nav-width"})],H.prototype,"defaultNavWidth",void 0),e([l({type:Number,reflect:!0,attribute:"min-nav-width"})],H.prototype,"minNavWidth",void 0),e([l({type:Number,reflect:!0,attribute:"max-nav-width"})],H.prototype,"maxNavWidth",void 0),e([l({type:Number,reflect:!0,attribute:"nav-rail-width"})],H.prototype,"navRailWidth",void 0),e([l({reflect:!0})],H.prototype,"padding",void 0),e([l({type:Boolean,reflect:!0})],H.prototype,"sticky",void 0),e([l({type:Boolean,reflect:!0,attribute:"sticky-footer"})],H.prototype,"stickyFooter",void 0),e([l({type:Boolean,reflect:!0,attribute:"hide-default-nav-toggle"})],H.prototype,"hideDefaultNavToggle",void 0),e([l({type:Boolean,reflect:!0,attribute:"hide-collapse-button"})],H.prototype,"hideCollapseButton",void 0),e([l({type:Boolean,reflect:!0,attribute:"toggle-on-resize-click"})],H.prototype,"toggleOnResizeClick",void 0),e([l({reflect:!0,attribute:"collapse-mode"})],H.prototype,"collapseMode",void 0),e([y("navWidth","updated")],H.prototype,"handleNavWidthChange",null),e([y("navState")],H.prototype,"handleNavStateChange",null),e([y("navOpen","updated")],H.prototype,"handleOpenChange",null),H=e([d("nord-layout")],H);var B=H;export{B as default};
4
2
  //# sourceMappingURL=Layout.js.map