@krollins/blueprint 0.1.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 (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +407 -0
  3. package/dist/components/accordion/accordion.d.ts +113 -0
  4. package/dist/components/accordion/accordion.d.ts.map +1 -0
  5. package/dist/components/accordion/accordion.style.d.ts +2 -0
  6. package/dist/components/accordion/accordion.style.d.ts.map +1 -0
  7. package/dist/components/alert/alert.d.ts +37 -0
  8. package/dist/components/alert/alert.d.ts.map +1 -0
  9. package/dist/components/alert/alert.style.d.ts +2 -0
  10. package/dist/components/alert/alert.style.d.ts.map +1 -0
  11. package/dist/components/avatar/avatar.d.ts +75 -0
  12. package/dist/components/avatar/avatar.d.ts.map +1 -0
  13. package/dist/components/avatar/avatar.style.d.ts +2 -0
  14. package/dist/components/avatar/avatar.style.d.ts.map +1 -0
  15. package/dist/components/badge/badge.d.ts +46 -0
  16. package/dist/components/badge/badge.d.ts.map +1 -0
  17. package/dist/components/badge/badge.style.d.ts +2 -0
  18. package/dist/components/badge/badge.style.d.ts.map +1 -0
  19. package/dist/components/breadcrumb/breadcrumb.d.ts +110 -0
  20. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -0
  21. package/dist/components/breadcrumb/breadcrumb.style.d.ts +2 -0
  22. package/dist/components/breadcrumb/breadcrumb.style.d.ts.map +1 -0
  23. package/dist/components/button/button.d.ts +19 -0
  24. package/dist/components/button/button.d.ts.map +1 -0
  25. package/dist/components/button/button.style.d.ts +2 -0
  26. package/dist/components/button/button.style.d.ts.map +1 -0
  27. package/dist/components/card/card.d.ts +62 -0
  28. package/dist/components/card/card.d.ts.map +1 -0
  29. package/dist/components/card/card.style.d.ts +2 -0
  30. package/dist/components/card/card.style.d.ts.map +1 -0
  31. package/dist/components/checkbox/checkbox.d.ts +89 -0
  32. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  33. package/dist/components/checkbox/checkbox.style.d.ts +2 -0
  34. package/dist/components/checkbox/checkbox.style.d.ts.map +1 -0
  35. package/dist/components/color-picker/color-picker.d.ts +366 -0
  36. package/dist/components/color-picker/color-picker.d.ts.map +1 -0
  37. package/dist/components/color-picker/color-picker.style.d.ts +14 -0
  38. package/dist/components/color-picker/color-picker.style.d.ts.map +1 -0
  39. package/dist/components/color-picker/color-picker.utils.d.ts +100 -0
  40. package/dist/components/color-picker/color-picker.utils.d.ts.map +1 -0
  41. package/dist/components/combobox/combobox.d.ts +74 -0
  42. package/dist/components/combobox/combobox.d.ts.map +1 -0
  43. package/dist/components/combobox/combobox.style.d.ts +2 -0
  44. package/dist/components/combobox/combobox.style.d.ts.map +1 -0
  45. package/dist/components/date-picker/date-picker.d.ts +65 -0
  46. package/dist/components/date-picker/date-picker.d.ts.map +1 -0
  47. package/dist/components/date-picker/date-picker.style.d.ts +2 -0
  48. package/dist/components/date-picker/date-picker.style.d.ts.map +1 -0
  49. package/dist/components/divider/divider.d.ts +54 -0
  50. package/dist/components/divider/divider.d.ts.map +1 -0
  51. package/dist/components/divider/divider.style.d.ts +2 -0
  52. package/dist/components/divider/divider.style.d.ts.map +1 -0
  53. package/dist/components/drawer/drawer.d.ts +113 -0
  54. package/dist/components/drawer/drawer.d.ts.map +1 -0
  55. package/dist/components/drawer/drawer.style.d.ts +2 -0
  56. package/dist/components/drawer/drawer.style.d.ts.map +1 -0
  57. package/dist/components/dropdown/dropdown.d.ts +80 -0
  58. package/dist/components/dropdown/dropdown.d.ts.map +1 -0
  59. package/dist/components/dropdown/dropdown.style.d.ts +2 -0
  60. package/dist/components/dropdown/dropdown.style.d.ts.map +1 -0
  61. package/dist/components/file-upload/file-upload.d.ts +116 -0
  62. package/dist/components/file-upload/file-upload.d.ts.map +1 -0
  63. package/dist/components/file-upload/file-upload.style.d.ts +2 -0
  64. package/dist/components/file-upload/file-upload.style.d.ts.map +1 -0
  65. package/dist/components/heading/heading.d.ts +46 -0
  66. package/dist/components/heading/heading.d.ts.map +1 -0
  67. package/dist/components/heading/heading.style.d.ts +2 -0
  68. package/dist/components/heading/heading.style.d.ts.map +1 -0
  69. package/dist/components/icon/icon.d.ts +57 -0
  70. package/dist/components/icon/icon.d.ts.map +1 -0
  71. package/dist/components/icon/icon.style.d.ts +2 -0
  72. package/dist/components/icon/icon.style.d.ts.map +1 -0
  73. package/dist/components/icon/icons/registry.generated.d.ts +25 -0
  74. package/dist/components/icon/icons/registry.generated.d.ts.map +1 -0
  75. package/dist/components/index.d.ts +45 -0
  76. package/dist/components/index.d.ts.map +1 -0
  77. package/dist/components/input/input.d.ts +56 -0
  78. package/dist/components/input/input.d.ts.map +1 -0
  79. package/dist/components/input/input.style.d.ts +2 -0
  80. package/dist/components/input/input.style.d.ts.map +1 -0
  81. package/dist/components/link/link.d.ts +62 -0
  82. package/dist/components/link/link.d.ts.map +1 -0
  83. package/dist/components/link/link.style.d.ts +2 -0
  84. package/dist/components/link/link.style.d.ts.map +1 -0
  85. package/dist/components/menu/menu.d.ts +86 -0
  86. package/dist/components/menu/menu.d.ts.map +1 -0
  87. package/dist/components/menu/menu.style.d.ts +2 -0
  88. package/dist/components/menu/menu.style.d.ts.map +1 -0
  89. package/dist/components/modal/modal.d.ts +40 -0
  90. package/dist/components/modal/modal.d.ts.map +1 -0
  91. package/dist/components/modal/modal.style.d.ts +2 -0
  92. package/dist/components/modal/modal.style.d.ts.map +1 -0
  93. package/dist/components/multi-select/multi-select.d.ts +69 -0
  94. package/dist/components/multi-select/multi-select.d.ts.map +1 -0
  95. package/dist/components/multi-select/multi-select.style.d.ts +2 -0
  96. package/dist/components/multi-select/multi-select.style.d.ts.map +1 -0
  97. package/dist/components/notification/notification.d.ts +102 -0
  98. package/dist/components/notification/notification.d.ts.map +1 -0
  99. package/dist/components/notification/notification.style.d.ts +2 -0
  100. package/dist/components/notification/notification.style.d.ts.map +1 -0
  101. package/dist/components/number-input/number-input.d.ts +139 -0
  102. package/dist/components/number-input/number-input.d.ts.map +1 -0
  103. package/dist/components/number-input/number-input.style.d.ts +2 -0
  104. package/dist/components/number-input/number-input.style.d.ts.map +1 -0
  105. package/dist/components/pagination/pagination.d.ts +49 -0
  106. package/dist/components/pagination/pagination.d.ts.map +1 -0
  107. package/dist/components/pagination/pagination.style.d.ts +2 -0
  108. package/dist/components/pagination/pagination.style.d.ts.map +1 -0
  109. package/dist/components/popover/popover.d.ts +153 -0
  110. package/dist/components/popover/popover.d.ts.map +1 -0
  111. package/dist/components/popover/popover.style.d.ts +2 -0
  112. package/dist/components/popover/popover.style.d.ts.map +1 -0
  113. package/dist/components/progress/progress.d.ts +50 -0
  114. package/dist/components/progress/progress.d.ts.map +1 -0
  115. package/dist/components/progress/progress.style.d.ts +2 -0
  116. package/dist/components/progress/progress.style.d.ts.map +1 -0
  117. package/dist/components/radio/radio.d.ts +95 -0
  118. package/dist/components/radio/radio.d.ts.map +1 -0
  119. package/dist/components/radio/radio.style.d.ts +2 -0
  120. package/dist/components/radio/radio.style.d.ts.map +1 -0
  121. package/dist/components/select/select.d.ts +49 -0
  122. package/dist/components/select/select.d.ts.map +1 -0
  123. package/dist/components/select/select.style.d.ts +2 -0
  124. package/dist/components/select/select.style.d.ts.map +1 -0
  125. package/dist/components/skeleton/skeleton.d.ts +50 -0
  126. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  127. package/dist/components/skeleton/skeleton.style.d.ts +2 -0
  128. package/dist/components/skeleton/skeleton.style.d.ts.map +1 -0
  129. package/dist/components/slider/slider.d.ts +115 -0
  130. package/dist/components/slider/slider.d.ts.map +1 -0
  131. package/dist/components/slider/slider.style.d.ts +2 -0
  132. package/dist/components/slider/slider.style.d.ts.map +1 -0
  133. package/dist/components/spinner/spinner.d.ts +36 -0
  134. package/dist/components/spinner/spinner.d.ts.map +1 -0
  135. package/dist/components/spinner/spinner.style.d.ts +2 -0
  136. package/dist/components/spinner/spinner.style.d.ts.map +1 -0
  137. package/dist/components/stepper/stepper.d.ts +228 -0
  138. package/dist/components/stepper/stepper.d.ts.map +1 -0
  139. package/dist/components/stepper/stepper.style.d.ts +2 -0
  140. package/dist/components/stepper/stepper.style.d.ts.map +1 -0
  141. package/dist/components/switch/switch.d.ts +90 -0
  142. package/dist/components/switch/switch.d.ts.map +1 -0
  143. package/dist/components/switch/switch.style.d.ts +2 -0
  144. package/dist/components/switch/switch.style.d.ts.map +1 -0
  145. package/dist/components/table/table.d.ts +176 -0
  146. package/dist/components/table/table.d.ts.map +1 -0
  147. package/dist/components/table/table.style.d.ts +2 -0
  148. package/dist/components/table/table.style.d.ts.map +1 -0
  149. package/dist/components/tabs/tabs.d.ts +124 -0
  150. package/dist/components/tabs/tabs.d.ts.map +1 -0
  151. package/dist/components/tabs/tabs.style.d.ts +2 -0
  152. package/dist/components/tabs/tabs.style.d.ts.map +1 -0
  153. package/dist/components/tag/tag.d.ts +64 -0
  154. package/dist/components/tag/tag.d.ts.map +1 -0
  155. package/dist/components/tag/tag.style.d.ts +2 -0
  156. package/dist/components/tag/tag.style.d.ts.map +1 -0
  157. package/dist/components/text/text.d.ts +86 -0
  158. package/dist/components/text/text.d.ts.map +1 -0
  159. package/dist/components/text/text.style.d.ts +2 -0
  160. package/dist/components/text/text.style.d.ts.map +1 -0
  161. package/dist/components/textarea/textarea.d.ts +94 -0
  162. package/dist/components/textarea/textarea.d.ts.map +1 -0
  163. package/dist/components/textarea/textarea.style.d.ts +2 -0
  164. package/dist/components/textarea/textarea.style.d.ts.map +1 -0
  165. package/dist/components/time-picker/time-picker.d.ts +51 -0
  166. package/dist/components/time-picker/time-picker.d.ts.map +1 -0
  167. package/dist/components/time-picker/time-picker.style.d.ts +2 -0
  168. package/dist/components/time-picker/time-picker.style.d.ts.map +1 -0
  169. package/dist/components/tooltip/tooltip.d.ts +52 -0
  170. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  171. package/dist/components/tooltip/tooltip.style.d.ts +2 -0
  172. package/dist/components/tooltip/tooltip.style.d.ts.map +1 -0
  173. package/dist/components/tree/tree.d.ts +188 -0
  174. package/dist/components/tree/tree.d.ts.map +1 -0
  175. package/dist/components/tree/tree.style.d.ts +2 -0
  176. package/dist/components/tree/tree.style.d.ts.map +1 -0
  177. package/dist/index.css +1 -0
  178. package/dist/index.d.ts +5 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +17802 -0
  181. package/dist/index.js.map +1 -0
  182. package/dist/utilities/boolean-converter.d.ts +23 -0
  183. package/dist/utilities/boolean-converter.d.ts.map +1 -0
  184. package/dist/utilities/debounce.d.ts +12 -0
  185. package/dist/utilities/debounce.d.ts.map +1 -0
  186. package/dist/utilities/index.d.ts +5 -0
  187. package/dist/utilities/index.d.ts.map +1 -0
  188. package/dist/utilities/memoize.d.ts +7 -0
  189. package/dist/utilities/memoize.d.ts.map +1 -0
  190. package/dist/utilities/throttle.d.ts +12 -0
  191. package/dist/utilities/throttle.d.ts.map +1 -0
  192. package/package.json +93 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../source/components/button/button.style.ts","../source/components/button/button.ts","../source/components/input/input.style.ts","../source/utilities/debounce.ts","../source/components/input/input.ts","../source/components/badge/badge.style.ts","../source/components/badge/badge.ts","../source/components/icon/icon.style.ts","../source/assets/icons/airplay.svg?raw","../source/assets/icons/alarm_clock.svg?raw","../source/assets/icons/align_horizontal.svg?raw","../source/assets/icons/align_vertical.svg?raw","../source/assets/icons/angle.svg?raw","../source/assets/icons/archive.svg?raw","../source/assets/icons/arrow_bottom_left.svg?raw","../source/assets/icons/arrow_bottom_right.svg?raw","../source/assets/icons/arrow_down.svg?raw","../source/assets/icons/arrow_down_circle.svg?raw","../source/assets/icons/arrow_left.svg?raw","../source/assets/icons/arrow_left_circle.svg?raw","../source/assets/icons/arrow_right.svg?raw","../source/assets/icons/arrow_right_circle.svg?raw","../source/assets/icons/arrow_top_left.svg?raw","../source/assets/icons/arrow_top_right.svg?raw","../source/assets/icons/arrow_up.svg?raw","../source/assets/icons/arrow_up_circle.svg?raw","../source/assets/icons/audio_wave.svg?raw","../source/assets/icons/backspace.svg?raw","../source/assets/icons/backward.svg?raw","../source/assets/icons/bag.svg?raw","../source/assets/icons/battery_75.svg?raw","../source/assets/icons/battery_charging.svg?raw","../source/assets/icons/battery_empty.svg?raw","../source/assets/icons/battery_full.svg?raw","../source/assets/icons/battery_half.svg?raw","../source/assets/icons/battery_low.svg?raw","../source/assets/icons/bell.svg?raw","../source/assets/icons/bell_disabled.svg?raw","../source/assets/icons/bell_ringing.svg?raw","../source/assets/icons/bell_snooze.svg?raw","../source/assets/icons/bluetooth.svg?raw","../source/assets/icons/book.svg?raw","../source/assets/icons/book_closed.svg?raw","../source/assets/icons/book_text.svg?raw","../source/assets/icons/bookmark.svg?raw","../source/assets/icons/bookmark_book.svg?raw","../source/assets/icons/box.svg?raw","../source/assets/icons/box_add.svg?raw","../source/assets/icons/box_download.svg?raw","../source/assets/icons/box_open.svg?raw","../source/assets/icons/box_remove.svg?raw","../source/assets/icons/boxes.svg?raw","../source/assets/icons/branch.svg?raw","../source/assets/icons/briefcase.svg?raw","../source/assets/icons/browser.svg?raw","../source/assets/icons/browser_alt.svg?raw","../source/assets/icons/button_add.svg?raw","../source/assets/icons/button_minus.svg?raw","../source/assets/icons/calculator.svg?raw","../source/assets/icons/calendar.svg?raw","../source/assets/icons/calendar_add.svg?raw","../source/assets/icons/calendar_date.svg?raw","../source/assets/icons/calendar_day.svg?raw","../source/assets/icons/calendar_days.svg?raw","../source/assets/icons/calendar_last_day.svg?raw","../source/assets/icons/calendar_month.svg?raw","../source/assets/icons/calendar_move.svg?raw","../source/assets/icons/calendar_remove.svg?raw","../source/assets/icons/calendar_split.svg?raw","../source/assets/icons/calendar_week.svg?raw","../source/assets/icons/camera.svg?raw","../source/assets/icons/camera_alt.svg?raw","../source/assets/icons/camera_noflash.svg?raw","../source/assets/icons/camera_noflash_alt.svg?raw","../source/assets/icons/capture.svg?raw","../source/assets/icons/card_timeline.svg?raw","../source/assets/icons/card_view.svg?raw","../source/assets/icons/carousel.svg?raw","../source/assets/icons/cart.svg?raw","../source/assets/icons/cast.svg?raw","../source/assets/icons/chain.svg?raw","../source/assets/icons/chat_add.svg?raw","../source/assets/icons/check.svg?raw","../source/assets/icons/check_circle.svg?raw","../source/assets/icons/check_circle_outside.svg?raw","../source/assets/icons/checkbox_checked.svg?raw","../source/assets/icons/checkbox_empty.svg?raw","../source/assets/icons/chevron_close.svg?raw","../source/assets/icons/chevron_down.svg?raw","../source/assets/icons/chevron_down_circle.svg?raw","../source/assets/icons/chevron_down_double.svg?raw","../source/assets/icons/chevron_left.svg?raw","../source/assets/icons/chevron_left_circle.svg?raw","../source/assets/icons/chevron_left_double.svg?raw","../source/assets/icons/chevron_open.svg?raw","../source/assets/icons/chevron_right.svg?raw","../source/assets/icons/chevron_right_circle.svg?raw","../source/assets/icons/chevron_right_double.svg?raw","../source/assets/icons/chevron_up.svg?raw","../source/assets/icons/chevron_up_circle.svg?raw","../source/assets/icons/chevron_up_double.svg?raw","../source/assets/icons/circle.svg?raw","../source/assets/icons/circle_menu.svg?raw","../source/assets/icons/circle_split.svg?raw","../source/assets/icons/clipboard.svg?raw","../source/assets/icons/clipboard_add.svg?raw","../source/assets/icons/clipboard_check.svg?raw","../source/assets/icons/clipboard_copy.svg?raw","../source/assets/icons/clipboard_cross.svg?raw","../source/assets/icons/clipboard_notes.svg?raw","../source/assets/icons/clipboard_remove.svg?raw","../source/assets/icons/clock.svg?raw","../source/assets/icons/close.svg?raw","../source/assets/icons/cloud.svg?raw","../source/assets/icons/cloud_disconnect.svg?raw","../source/assets/icons/cloud_download.svg?raw","../source/assets/icons/cloud_download_alt.svg?raw","../source/assets/icons/cloud_upload.svg?raw","../source/assets/icons/cloud_upload_alt.svg?raw","../source/assets/icons/code.svg?raw","../source/assets/icons/coffee.svg?raw","../source/assets/icons/coin.svg?raw","../source/assets/icons/coins.svg?raw","../source/assets/icons/compass.svg?raw","../source/assets/icons/component_add.svg?raw","../source/assets/icons/contacts.svg?raw","../source/assets/icons/contract.svg?raw","../source/assets/icons/create.svg?raw","../source/assets/icons/credit_card.svg?raw","../source/assets/icons/crop.svg?raw","../source/assets/icons/cross.svg?raw","../source/assets/icons/cross_circle.svg?raw","../source/assets/icons/crosshair.svg?raw","../source/assets/icons/cube.svg?raw","../source/assets/icons/cubes.svg?raw","../source/assets/icons/cylinder.svg?raw","../source/assets/icons/database.svg?raw","../source/assets/icons/diamond.svg?raw","../source/assets/icons/directions.svg?raw","../source/assets/icons/disc.svg?raw","../source/assets/icons/display.svg?raw","../source/assets/icons/display_alt.svg?raw","../source/assets/icons/document.svg?raw","../source/assets/icons/document_justified.svg?raw","../source/assets/icons/document_list.svg?raw","../source/assets/icons/document_stack.svg?raw","../source/assets/icons/document_words.svg?raw","../source/assets/icons/door.svg?raw","../source/assets/icons/door_alt.svg?raw","../source/assets/icons/download.svg?raw","../source/assets/icons/download_alt.svg?raw","../source/assets/icons/downward.svg?raw","../source/assets/icons/drag.svg?raw","../source/assets/icons/drag_circle.svg?raw","../source/assets/icons/drag_vertical.svg?raw","../source/assets/icons/duplicate.svg?raw","../source/assets/icons/duplicate_alt.svg?raw","../source/assets/icons/enter.svg?raw","../source/assets/icons/enter_alt.svg?raw","../source/assets/icons/episodes.svg?raw","../source/assets/icons/exit_left.svg?raw","../source/assets/icons/exit_right.svg?raw","../source/assets/icons/expand.svg?raw","../source/assets/icons/expand_height.svg?raw","../source/assets/icons/expand_width.svg?raw","../source/assets/icons/external.svg?raw","../source/assets/icons/eye.svg?raw","../source/assets/icons/eye_closed.svg?raw","../source/assets/icons/eye_no.svg?raw","../source/assets/icons/face_delighted.svg?raw","../source/assets/icons/face_happy.svg?raw","../source/assets/icons/face_neutral.svg?raw","../source/assets/icons/face_sad.svg?raw","../source/assets/icons/file_download.svg?raw","../source/assets/icons/file_upload.svg?raw","../source/assets/icons/files_history.svg?raw","../source/assets/icons/files_multi.svg?raw","../source/assets/icons/files_stack.svg?raw","../source/assets/icons/film.svg?raw","../source/assets/icons/filter.svg?raw","../source/assets/icons/filter_circle.svg?raw","../source/assets/icons/filter_single.svg?raw","../source/assets/icons/filtering.svg?raw","../source/assets/icons/fingerprint.svg?raw","../source/assets/icons/flag.svg?raw","../source/assets/icons/flame.svg?raw","../source/assets/icons/flame_alt.svg?raw","../source/assets/icons/flip_view.svg?raw","../source/assets/icons/floppy.svg?raw","../source/assets/icons/folder_add.svg?raw","../source/assets/icons/folder_closed.svg?raw","../source/assets/icons/folder_minus.svg?raw","../source/assets/icons/folder_open.svg?raw","../source/assets/icons/fork_git.svg?raw","../source/assets/icons/forward.svg?raw","../source/assets/icons/frame.svg?raw","../source/assets/icons/fullscreen.svg?raw","../source/assets/icons/funnel.svg?raw","../source/assets/icons/gauge.svg?raw","../source/assets/icons/gift.svg?raw","../source/assets/icons/globe.svg?raw","../source/assets/icons/gps.svg?raw","../source/assets/icons/grab.svg?raw","../source/assets/icons/graph_bar.svg?raw","../source/assets/icons/graph_box.svg?raw","../source/assets/icons/graph_increase.svg?raw","../source/assets/icons/grid.svg?raw","../source/assets/icons/grid_circles.svg?raw","../source/assets/icons/grid_circles_add.svg?raw","../source/assets/icons/grid_small.svg?raw","../source/assets/icons/grid_squares.svg?raw","../source/assets/icons/grid_squares_add.svg?raw","../source/assets/icons/hand.svg?raw","../source/assets/icons/harddrive.svg?raw","../source/assets/icons/hash.svg?raw","../source/assets/icons/heart.svg?raw","../source/assets/icons/heart_rate.svg?raw","../source/assets/icons/heart_remove.svg?raw","../source/assets/icons/height.svg?raw","../source/assets/icons/hierarchy.svg?raw","../source/assets/icons/home.svg?raw","../source/assets/icons/home_alt.svg?raw","../source/assets/icons/home_check.svg?raw","../source/assets/icons/home_door.svg?raw","../source/assets/icons/import.svg?raw","../source/assets/icons/inbox.svg?raw","../source/assets/icons/inbox_alt.svg?raw","../source/assets/icons/info_circle.svg?raw","../source/assets/icons/iphone_landscape.svg?raw","../source/assets/icons/iphone_portrait.svg?raw","../source/assets/icons/jump_backward.svg?raw","../source/assets/icons/jump_forward.svg?raw","../source/assets/icons/jump_left.svg?raw","../source/assets/icons/jump_right.svg?raw","../source/assets/icons/keyboard.svg?raw","../source/assets/icons/laptop.svg?raw","../source/assets/icons/lightbulb.svg?raw","../source/assets/icons/lightbulb_on.svg?raw","../source/assets/icons/lightning.svg?raw","../source/assets/icons/lightning_alt.svg?raw","../source/assets/icons/lineweight.svg?raw","../source/assets/icons/link.svg?raw","../source/assets/icons/link_alt.svg?raw","../source/assets/icons/link_broken.svg?raw","../source/assets/icons/link_horizontal.svg?raw","../source/assets/icons/link_vertical.svg?raw","../source/assets/icons/list.svg?raw","../source/assets/icons/list_add.svg?raw","../source/assets/icons/list_numbered.svg?raw","../source/assets/icons/loader.svg?raw","../source/assets/icons/location.svg?raw","../source/assets/icons/lock.svg?raw","../source/assets/icons/lock_open.svg?raw","../source/assets/icons/mail.svg?raw","../source/assets/icons/mail_add.svg?raw","../source/assets/icons/mail_delete.svg?raw","../source/assets/icons/mail_minus.svg?raw","../source/assets/icons/mail_new.svg?raw","../source/assets/icons/mail_open.svg?raw","../source/assets/icons/mail_remove.svg?raw","../source/assets/icons/marquee.svg?raw","../source/assets/icons/maximise.svg?raw","../source/assets/icons/menu_hamburger.svg?raw","../source/assets/icons/menu_horizontal.svg?raw","../source/assets/icons/menu_vertical.svg?raw","../source/assets/icons/message.svg?raw","../source/assets/icons/message_writing.svg?raw","../source/assets/icons/microphone.svg?raw","../source/assets/icons/microphone_disabled.svg?raw","../source/assets/icons/microphone_muted.svg?raw","../source/assets/icons/midpoint.svg?raw","../source/assets/icons/mini_player.svg?raw","../source/assets/icons/minimise.svg?raw","../source/assets/icons/minus.svg?raw","../source/assets/icons/minus_circle.svg?raw","../source/assets/icons/moon.svg?raw","../source/assets/icons/move.svg?raw","../source/assets/icons/newspaper.svg?raw","../source/assets/icons/no_sign.svg?raw","../source/assets/icons/notebook.svg?raw","../source/assets/icons/notification.svg?raw","../source/assets/icons/nut.svg?raw","../source/assets/icons/pages.svg?raw","../source/assets/icons/panel_bottom.svg?raw","../source/assets/icons/panel_center.svg?raw","../source/assets/icons/panel_left.svg?raw","../source/assets/icons/panel_right.svg?raw","../source/assets/icons/panel_sectioned.svg?raw","../source/assets/icons/panel_top.svg?raw","../source/assets/icons/paper.svg?raw","../source/assets/icons/paper_folded.svg?raw","../source/assets/icons/paper_plane.svg?raw","../source/assets/icons/paper_plane_alt.svg?raw","../source/assets/icons/paperclip.svg?raw","../source/assets/icons/paragraph_center.svg?raw","../source/assets/icons/paragraph_end.svg?raw","../source/assets/icons/paragraph_left.svg?raw","../source/assets/icons/paragraph_right.svg?raw","../source/assets/icons/paragraph_start.svg?raw","../source/assets/icons/pen.svg?raw","../source/assets/icons/phone_landscape.svg?raw","../source/assets/icons/phone_portrait.svg?raw","../source/assets/icons/picture.svg?raw","../source/assets/icons/pie_half.svg?raw","../source/assets/icons/pie_quarter.svg?raw","../source/assets/icons/pie_third.svg?raw","../source/assets/icons/pill.svg?raw","../source/assets/icons/play_button.svg?raw","../source/assets/icons/plus.svg?raw","../source/assets/icons/plus_circle.svg?raw","../source/assets/icons/postcard.svg?raw","../source/assets/icons/printer.svg?raw","../source/assets/icons/projector.svg?raw","../source/assets/icons/pull_down.svg?raw","../source/assets/icons/pull_left.svg?raw","../source/assets/icons/pull_right.svg?raw","../source/assets/icons/pull_up.svg?raw","../source/assets/icons/push_down.svg?raw","../source/assets/icons/push_left.svg?raw","../source/assets/icons/push_right.svg?raw","../source/assets/icons/push_up.svg?raw","../source/assets/icons/question_circle.svg?raw","../source/assets/icons/radio_on.svg?raw","../source/assets/icons/receipt.svg?raw","../source/assets/icons/record.svg?raw","../source/assets/icons/redo.svg?raw","../source/assets/icons/refresh.svg?raw","../source/assets/icons/refresh_alt.svg?raw","../source/assets/icons/replicate.svg?raw","../source/assets/icons/replicate_alt.svg?raw","../source/assets/icons/reset.svg?raw","../source/assets/icons/reset_alt.svg?raw","../source/assets/icons/reset_forward.svg?raw","../source/assets/icons/reset_hard.svg?raw","../source/assets/icons/reset_temporary.svg?raw","../source/assets/icons/retweet.svg?raw","../source/assets/icons/reuse.svg?raw","../source/assets/icons/reverse.svg?raw","../source/assets/icons/reverse_alt.svg?raw","../source/assets/icons/revert.svg?raw","../source/assets/icons/rocket.svg?raw","../source/assets/icons/ruler.svg?raw","../source/assets/icons/scale.svg?raw","../source/assets/icons/scale_contract.svg?raw","../source/assets/icons/scale_extend.svg?raw","../source/assets/icons/scalpel.svg?raw","../source/assets/icons/search.svg?raw","../source/assets/icons/server.svg?raw","../source/assets/icons/settings.svg?raw","../source/assets/icons/share.svg?raw","../source/assets/icons/share_alt.svg?raw","../source/assets/icons/shuffle.svg?raw","../source/assets/icons/side_menu.svg?raw","../source/assets/icons/signal_full.svg?raw","../source/assets/icons/signal_low.svg?raw","../source/assets/icons/signal_medium.svg?raw","../source/assets/icons/signal_none.svg?raw","../source/assets/icons/slash_backward.svg?raw","../source/assets/icons/slash_forward.svg?raw","../source/assets/icons/sliders.svg?raw","../source/assets/icons/sort.svg?raw","../source/assets/icons/sort_alt.svg?raw","../source/assets/icons/speaker.svg?raw","../source/assets/icons/speech_bubble.svg?raw","../source/assets/icons/speech_typing.svg?raw","../source/assets/icons/split.svg?raw","../source/assets/icons/split_three.svg?raw","../source/assets/icons/star.svg?raw","../source/assets/icons/sun.svg?raw","../source/assets/icons/support.svg?raw","../source/assets/icons/swap.svg?raw","../source/assets/icons/switch.svg?raw","../source/assets/icons/table.svg?raw","../source/assets/icons/table_header.svg?raw","../source/assets/icons/tag.svg?raw","../source/assets/icons/tag_milestone.svg?raw","../source/assets/icons/tags.svg?raw","../source/assets/icons/target.svg?raw","../source/assets/icons/terminal.svg?raw","../source/assets/icons/thread.svg?raw","../source/assets/icons/thumbs_down.svg?raw","../source/assets/icons/thumbs_up.svg?raw","../source/assets/icons/ticket.svg?raw","../source/assets/icons/timeline.svg?raw","../source/assets/icons/todo.svg?raw","../source/assets/icons/toggle.svg?raw","../source/assets/icons/toggles.svg?raw","../source/assets/icons/translate.svg?raw","../source/assets/icons/trash.svg?raw","../source/assets/icons/trash_alt.svg?raw","../source/assets/icons/trophy.svg?raw","../source/assets/icons/tv_mode.svg?raw","../source/assets/icons/unarchive.svg?raw","../source/assets/icons/undo.svg?raw","../source/assets/icons/undo_history.svg?raw","../source/assets/icons/unlink_horizontal.svg?raw","../source/assets/icons/unlink_vertical.svg?raw","../source/assets/icons/upload.svg?raw","../source/assets/icons/upload_alt.svg?raw","../source/assets/icons/upward.svg?raw","../source/assets/icons/user.svg?raw","../source/assets/icons/user_add.svg?raw","../source/assets/icons/user_circle.svg?raw","../source/assets/icons/user_male.svg?raw","../source/assets/icons/user_male_circle.svg?raw","../source/assets/icons/user_remove.svg?raw","../source/assets/icons/users.svg?raw","../source/assets/icons/venn.svg?raw","../source/assets/icons/version.svg?raw","../source/assets/icons/versions.svg?raw","../source/assets/icons/video.svg?raw","../source/assets/icons/volume_0.svg?raw","../source/assets/icons/volume_add.svg?raw","../source/assets/icons/volume_disabled.svg?raw","../source/assets/icons/volume_high.svg?raw","../source/assets/icons/volume_low.svg?raw","../source/assets/icons/volume_minus.svg?raw","../source/assets/icons/volume_muted.svg?raw","../source/assets/icons/wallet.svg?raw","../source/assets/icons/warning_circle.svg?raw","../source/assets/icons/warning_hex.svg?raw","../source/assets/icons/warning_triangle.svg?raw","../source/assets/icons/waves.svg?raw","../source/assets/icons/width.svg?raw","../source/assets/icons/wifi.svg?raw","../source/assets/icons/wifi_error.svg?raw","../source/assets/icons/wifi_none.svg?raw","../source/assets/icons/window.svg?raw","../source/assets/icons/window_collapse_left.svg?raw","../source/assets/icons/window_collapse_right.svg?raw","../source/assets/icons/window_content.svg?raw","../source/assets/icons/wrap_back.svg?raw","../source/assets/icons/wrap_forward.svg?raw","../source/assets/icons/write.svg?raw","../source/assets/icons/zoom_cancel.svg?raw","../source/assets/icons/zoom_in.svg?raw","../source/assets/icons/zoom_out.svg?raw","../source/assets/icons/zoom_reset.svg?raw","../source/components/icon/icons/registry.generated.ts","../source/components/icon/icon.ts","../source/components/spinner/spinner.style.ts","../source/components/spinner/spinner.ts","../source/components/avatar/avatar.style.ts","../source/components/avatar/avatar.ts","../source/components/divider/divider.style.ts","../source/components/divider/divider.ts","../source/components/link/link.style.ts","../source/components/link/link.ts","../source/components/heading/heading.style.ts","../source/components/heading/heading.ts","../source/components/text/text.style.ts","../source/components/text/text.ts","../source/components/checkbox/checkbox.style.ts","../source/components/checkbox/checkbox.ts","../source/components/radio/radio.style.ts","../source/components/radio/radio.ts","../source/components/switch/switch.style.ts","../source/components/switch/switch.ts","../source/components/tooltip/tooltip.style.ts","../source/components/tooltip/tooltip.ts","../source/components/progress/progress.style.ts","../source/components/progress/progress.ts","../source/components/card/card.style.ts","../source/components/card/card.ts","../source/components/alert/alert.style.ts","../source/components/alert/alert.ts","../source/components/select/select.style.ts","../source/components/select/select.ts","../source/components/textarea/textarea.style.ts","../source/utilities/boolean-converter.ts","../source/components/textarea/textarea.ts","../source/components/tag/tag.style.ts","../source/components/tag/tag.ts","../source/components/modal/modal.style.ts","../source/components/modal/modal.ts","../source/components/multi-select/multi-select.style.ts","../source/utilities/memoize.ts","../source/components/multi-select/multi-select.ts","../source/components/combobox/combobox.style.ts","../source/components/combobox/combobox.ts","../source/components/date-picker/date-picker.style.ts","../source/components/date-picker/date-picker.ts","../source/components/time-picker/time-picker.style.ts","../source/components/time-picker/time-picker.ts","../source/components/slider/slider.style.ts","../source/utilities/throttle.ts","../source/components/slider/slider.ts","../source/components/number-input/number-input.style.ts","../source/components/number-input/number-input.ts","../source/components/file-upload/file-upload.style.ts","../source/components/file-upload/file-upload.ts","../source/components/tabs/tabs.style.ts","../source/components/tabs/tabs.ts","../source/components/breadcrumb/breadcrumb.style.ts","../source/components/breadcrumb/breadcrumb.ts","../source/components/pagination/pagination.style.ts","../source/components/pagination/pagination.ts","../source/components/menu/menu.style.ts","../source/components/menu/menu.ts","../source/components/dropdown/dropdown.style.ts","../source/components/dropdown/dropdown.ts","../source/components/skeleton/skeleton.style.ts","../source/components/skeleton/skeleton.ts","../source/components/notification/notification.style.ts","../source/components/notification/notification.ts","../source/components/accordion/accordion.style.ts","../source/components/accordion/accordion.ts","../source/components/table/table.style.ts","../source/components/table/table.ts","../source/components/tree/tree.style.ts","../source/components/tree/tree.ts","../source/components/drawer/drawer.style.ts","../source/components/drawer/drawer.ts","../source/components/popover/popover.style.ts","../source/components/popover/popover.ts","../source/components/color-picker/color-picker.style.ts","../source/components/color-picker/color-picker.utils.ts","../source/components/color-picker/color-picker.ts","../source/components/stepper/stepper.style.ts","../source/components/stepper/stepper.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const buttonStyles = css`\n /* Base styles */\n :host {\n display: inline-block;\n }\n\n .button {\n /* Reset */\n appearance: none;\n border: none;\n margin: 0;\n\n /* Layout */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--bp-spacing-sm);\n cursor: pointer;\n user-select: none;\n\n /* Typography */\n font-family: var(--bp-font-family);\n font-weight: var(--bp-font-weight-medium);\n text-decoration: none;\n white-space: nowrap;\n\n /* Visual */\n border-radius: var(--bp-border-radius-md);\n transition: all var(--bp-duration-fast);\n\n /* Accessibility */\n outline: none;\n }\n\n /* Variants */\n .button--primary {\n background: var(--bp-color-primary);\n color: var(--bp-color-text-inverse);\n }\n\n .button--success {\n background: var(--bp-color-success);\n color: var(--bp-color-text-inverse);\n }\n\n .button--error {\n background: var(--bp-color-error);\n color: var(--bp-color-text-inverse);\n }\n\n .button--warning {\n background: var(--bp-color-warning);\n color: var(--bp-color-text-inverse);\n }\n\n .button--info {\n background: var(--bp-color-info);\n color: var(--bp-color-text-inverse);\n }\n\n .button--secondary {\n background: var(--bp-color-surface-elevated);\n color: var(--bp-color-text);\n border: var(--bp-border-width) solid var(--bp-color-border-strong);\n }\n\n /* Sizes */\n .button--sm {\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n font-size: var(--bp-font-size-sm);\n line-height: var(--bp-line-height-tight);\n }\n\n .button--md {\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-normal);\n }\n\n .button--lg {\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n font-size: var(--bp-font-size-lg);\n line-height: var(--bp-line-height-normal);\n }\n\n /* States */\n .button:hover:not(:disabled) {\n box-shadow: var(--bp-shadow-md);\n }\n\n .button--primary:hover:not(:disabled) {\n background: var(--bp-color-primary-hover);\n }\n\n .button--success:hover:not(:disabled) {\n background: var(--bp-color-success-hover);\n }\n\n .button--error:hover:not(:disabled) {\n background: var(--bp-color-error-hover);\n }\n\n .button--warning:hover:not(:disabled) {\n background: var(--bp-color-warning-hover);\n }\n\n .button--info:hover:not(:disabled) {\n background: var(--bp-color-info-hover);\n }\n\n .button--secondary:hover:not(:disabled) {\n background: var(--bp-color-surface);\n border-color: var(--bp-color-border-strong);\n }\n\n .button:active:not(:disabled) {\n box-shadow: inset 0 2px 4px oklch(0 0 0 / 0.15);\n }\n\n .button--primary:active:not(:disabled) {\n background: var(--bp-color-primary-active);\n }\n\n .button:disabled {\n cursor: not-allowed;\n opacity: var(--bp-opacity-disabled);\n }\n\n .button:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { buttonStyles } from './button.style.js';\n\nexport type ButtonVariant =\n | 'primary'\n | 'success'\n | 'error'\n | 'warning'\n | 'info'\n | 'secondary';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\n@customElement('bp-button')\nexport class BpButton extends LitElement {\n @property({ type: String, reflect: true }) declare variant: ButtonVariant;\n @property({ type: String, reflect: true }) declare size: ButtonSize;\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n @property({ type: String, reflect: true }) declare type:\n | 'button'\n | 'submit'\n | 'reset';\n\n static styles = [buttonStyles];\n\n constructor() {\n super();\n this.variant = 'primary';\n this.size = 'md';\n this.disabled = false;\n this.type = 'button';\n }\n\n private handleClick(e: MouseEvent) {\n if (this.disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n this.dispatchEvent(\n new CustomEvent('bp-click', {\n detail: { originalEvent: e },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n render() {\n return html`\n <button\n part=\"button\"\n class=\"button button--${this.variant} button--${this.size}\"\n type=${this.type}\n ?disabled=${this.disabled}\n @click=${this.handleClick}\n aria-disabled=${this.disabled ? 'true' : 'false'}\n >\n <slot></slot>\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-button': BpButton;\n }\n}\n","import { css } from 'lit';\n\nexport const inputStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .input-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--bp-spacing-xs);\n }\n\n .input-label {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-sm);\n font-weight: var(--bp-font-weight-medium);\n color: var(--bp-color-text);\n line-height: var(--bp-line-height-normal);\n }\n\n .input-required {\n color: var(--bp-color-error);\n margin-left: var(--bp-spacing-xs);\n }\n\n .input {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text);\n background-color: var(--bp-color-background);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n box-shadow: inset 0 1px 2px oklch(0 0 0 / 0.05);\n transition:\n border-color var(--bp-transition-fast),\n box-shadow var(--bp-transition-fast);\n width: 100%;\n box-sizing: border-box;\n }\n\n .input::placeholder {\n color: var(--bp-color-text-muted);\n opacity: var(--bp-opacity-subtle);\n }\n\n /* Variants */\n .input--default {\n border-color: var(--bp-color-border);\n }\n\n .input--success {\n border-color: var(--bp-color-success);\n }\n\n .input--error {\n border-color: var(--bp-color-error);\n }\n\n .input--warning {\n border-color: var(--bp-color-warning);\n }\n\n .input--info {\n border-color: var(--bp-color-info);\n }\n\n /* Sizes */\n .input--sm {\n font-size: var(--bp-font-size-sm);\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n }\n\n .input--md {\n font-size: var(--bp-font-size-base);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n }\n\n .input--lg {\n font-size: var(--bp-font-size-lg);\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n }\n\n /* States */\n .input:hover:not(:disabled):not(:focus) {\n border-color: var(--bp-color-border-strong);\n }\n\n .input:focus {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-focus);\n }\n\n .input:focus-visible {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-focus);\n }\n\n .input:disabled {\n opacity: var(--bp-opacity-disabled);\n cursor: not-allowed;\n background-color: var(--bp-color-surface-subdued);\n }\n\n .input:read-only {\n background-color: var(--bp-color-surface);\n cursor: default;\n }\n\n /* Variant-specific focus states */\n .input--success:focus,\n .input--success:focus-visible {\n border-color: var(--bp-color-success);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-success);\n }\n\n .input--error:focus,\n .input--error:focus-visible {\n border-color: var(--bp-color-error);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-error);\n }\n\n .input--warning:focus,\n .input--warning:focus-visible {\n border-color: var(--bp-color-warning);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-warning);\n }\n\n .input--info:focus,\n .input--info:focus-visible {\n border-color: var(--bp-color-info);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-info);\n }\n\n /* Messages */\n .input-message {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-sm);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text-muted);\n }\n\n .input-message--error {\n color: var(--bp-color-error);\n }\n\n /* iOS zoom prevention: ensure 16px minimum on touch devices */\n @media (max-width: 768px) {\n .input--sm {\n font-size: 16px;\n }\n }\n`;\n","/**\r\n * Debounce utility for delaying function execution until after a period of inactivity.\r\n * Trailing-edge by default: fires after the delay has elapsed since the last call.\r\n */\r\n\r\ntype DebouncedFunction<T extends (...args: never[]) => unknown> = {\r\n (...args: Parameters<T>): void;\r\n cancel: () => void;\r\n flush: () => void;\r\n};\r\n\r\nexport function debounce<T extends (...args: never[]) => unknown>(\r\n fn: T,\r\n delay: number\r\n): DebouncedFunction<T> {\r\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\r\n let pendingArgs: Parameters<T> | null = null;\r\n\r\n const debounced = (...args: Parameters<T>): void => {\r\n pendingArgs = args;\r\n\r\n if (timeoutId !== null) {\r\n clearTimeout(timeoutId);\r\n }\r\n\r\n timeoutId = setTimeout(() => {\r\n timeoutId = null;\r\n if (pendingArgs !== null) {\r\n const args = pendingArgs;\r\n pendingArgs = null;\r\n fn(...args);\r\n }\r\n }, delay);\r\n };\r\n\r\n debounced.cancel = () => {\r\n if (timeoutId !== null) {\r\n clearTimeout(timeoutId);\r\n timeoutId = null;\r\n }\r\n pendingArgs = null;\r\n };\r\n\r\n debounced.flush = () => {\r\n if (timeoutId !== null) {\r\n clearTimeout(timeoutId);\r\n timeoutId = null;\r\n }\r\n if (pendingArgs !== null) {\r\n const args = pendingArgs;\r\n pendingArgs = null;\r\n fn(...args);\r\n }\r\n };\r\n\r\n return debounced;\r\n}\r\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { inputStyles } from './input.style.js';\nimport { debounce } from '../../utilities/debounce.js';\n\nexport type InputVariant = 'default' | 'success' | 'error' | 'warning' | 'info';\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type InputType =\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'search';\n\nexport type InputModeType =\n | 'none'\n | 'text'\n | 'tel'\n | 'url'\n | 'email'\n | 'numeric'\n | 'decimal'\n | 'search';\n\nexport type AutocompleteType =\n | 'on'\n | 'off'\n | 'name'\n | 'email'\n | 'username'\n | 'new-password'\n | 'current-password'\n | 'tel'\n | 'url'\n | 'street-address'\n | 'address-line1'\n | 'address-line2'\n | 'address-line3'\n | 'address-level1'\n | 'address-level2'\n | 'address-level3'\n | 'address-level4'\n | 'country'\n | 'country-name'\n | 'postal-code'\n | 'cc-name'\n | 'cc-given-name'\n | 'cc-additional-name'\n | 'cc-family-name'\n | 'cc-number'\n | 'cc-exp'\n | 'cc-exp-month'\n | 'cc-exp-year'\n | 'cc-csc'\n | 'cc-type'\n | 'transaction-currency'\n | 'transaction-amount'\n | 'language'\n | 'bday'\n | 'bday-day'\n | 'bday-month'\n | 'bday-year'\n | 'sex'\n | 'tel-country-code'\n | 'tel-national'\n | 'tel-area-code'\n | 'tel-local'\n | 'tel-extension'\n | 'organization'\n | 'organization-title';\n\n@customElement('bp-input')\nexport class BpInput extends LitElement {\n @property({ type: String, reflect: true }) variant: InputVariant = 'default';\n @property({ type: String, reflect: true }) size: InputSize = 'md';\n @property({ type: String, reflect: true }) type: InputType = 'text';\n @property({ type: String, reflect: true }) value: string = '';\n @property({ type: String, reflect: true }) placeholder?: string;\n @property({ type: String, reflect: true }) label?: string;\n @property({ type: String, reflect: true }) helperText?: string;\n @property({ type: String, reflect: true }) errorMessage?: string;\n @property({ type: Boolean, reflect: true }) disabled: boolean = false;\n @property({ type: Boolean, reflect: true }) required: boolean = false;\n @property({ type: Boolean, reflect: true }) readonly: boolean = false;\n @property({ type: String, reflect: true }) name?: string;\n @property({ type: String, reflect: true }) autocomplete?: AutocompleteType;\n @property({ type: Number, reflect: true }) minlength?: number;\n @property({ type: Number, reflect: true }) maxlength?: number;\n @property({ type: String, reflect: true }) pattern?: string;\n @property({ type: Number, reflect: true }) step?: number;\n @property({ type: Number, reflect: true }) min?: number;\n @property({ type: Number, reflect: true }) max?: number;\n @property({ type: String, reflect: true }) inputmode?: InputModeType;\n\n @query('input') private inputElement?: HTMLInputElement;\n\n private debouncedDispatchInput = debounce(\n (value: string, originalEvent: InputEvent) => {\n this.dispatchEvent(\n new CustomEvent('bp-input', {\n detail: { value, originalEvent },\n bubbles: true,\n composed: true,\n })\n );\n },\n 150\n );\n\n static styles = [inputStyles];\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.debouncedDispatchInput.cancel();\n }\n\n private handleInput(e: InputEvent) {\n const target = e.target as HTMLInputElement;\n this.value = target.value;\n this.debouncedDispatchInput(this.value, e);\n }\n\n private handleChange(e: Event) {\n const target = e.target as HTMLInputElement;\n this.value = target.value;\n\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { value: this.value, originalEvent: e },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleFocus(e: FocusEvent) {\n this.dispatchEvent(\n new CustomEvent('bp-focus', {\n detail: { originalEvent: e },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleBlur(e: FocusEvent) {\n this.debouncedDispatchInput.flush();\n this.dispatchEvent(\n new CustomEvent('bp-blur', {\n detail: { originalEvent: e },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Focuses the input element\n */\n public focus() {\n this.inputElement?.focus();\n }\n\n /**\n * Blurs the input element\n */\n public blur() {\n this.inputElement?.blur();\n }\n\n /**\n * Selects the text in the input\n */\n public select() {\n this.inputElement?.select();\n }\n\n private get messageId(): string {\n const showError = this.variant === 'error' && this.errorMessage;\n const showHelper = this.helperText && !showError;\n if (showError) return 'error-message';\n if (showHelper) return 'helper-text';\n return '';\n }\n\n render() {\n const showError = this.variant === 'error' && this.errorMessage;\n const showHelper = this.helperText && !showError;\n\n return html`\n <div class=\"input-wrapper\">\n ${this.label\n ? html`\n <label class=\"input-label\" for=\"input\">\n ${this.label}\n ${this.required\n ? html`<span class=\"input-required\">*</span>`\n : ''}\n </label>\n `\n : ''}\n\n <input\n part=\"input\"\n id=\"input\"\n class=\"input input--${this.variant} input--${this.size}\"\n type=${this.type}\n .value=${live(this.value)}\n placeholder=${ifDefined(this.placeholder)}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n name=${ifDefined(this.name)}\n autocomplete=${ifDefined(this.autocomplete)}\n minlength=${ifDefined(this.minlength)}\n maxlength=${ifDefined(this.maxlength)}\n pattern=${ifDefined(this.pattern)}\n step=${ifDefined(this.step)}\n min=${ifDefined(this.min)}\n max=${ifDefined(this.max)}\n inputmode=${ifDefined(this.inputmode)}\n aria-invalid=${this.variant === 'error' ? 'true' : 'false'}\n aria-describedby=${this.messageId || nothing}\n @input=${this.handleInput}\n @change=${this.handleChange}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n />\n\n ${showError\n ? html`\n <div\n id=\"error-message\"\n class=\"input-message input-message--error\"\n role=\"alert\"\n >\n ${this.errorMessage}\n </div>\n `\n : ''}\n ${showHelper\n ? html`<div id=\"helper-text\" class=\"input-message\">\n ${this.helperText}\n </div>`\n : ''}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-input': BpInput;\n }\n}\n","import { css } from 'lit';\r\n\r\nexport const badgeStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-family: var(--bp-font-family);\r\n font-weight: var(--bp-font-weight-medium);\r\n line-height: 1;\r\n border-radius: var(--bp-border-radius-full);\r\n white-space: nowrap;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n /* Variants */\r\n .badge--primary {\r\n background-color: var(--bp-color-primary);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--success {\r\n background-color: var(--bp-color-success);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--error {\r\n background-color: var(--bp-color-error);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--warning {\r\n background-color: var(--bp-color-warning);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--info {\r\n background-color: var(--bp-color-info);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .badge--neutral {\r\n background-color: var(--bp-color-border-strong);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n /* Sizes */\r\n .badge--sm {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-xs);\r\n font-size: var(--bp-font-size-xs);\r\n min-width: var(--bp-spacing-5);\r\n height: var(--bp-spacing-5);\r\n }\r\n\r\n .badge--md {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n font-size: var(--bp-font-size-sm);\r\n min-width: var(--bp-spacing-6);\r\n height: var(--bp-spacing-6);\r\n }\r\n\r\n .badge--lg {\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n font-size: var(--bp-font-size-base);\r\n min-width: var(--bp-spacing-8);\r\n height: var(--bp-spacing-8);\r\n }\r\n\r\n /* Dot variant */\r\n .badge--dot {\r\n padding: 0;\r\n border-radius: var(--bp-border-radius-full);\r\n }\r\n\r\n .badge--dot.badge--sm {\r\n width: var(--bp-spacing-2);\r\n height: var(--bp-spacing-2);\r\n min-width: var(--bp-spacing-2);\r\n }\r\n\r\n .badge--dot.badge--md {\r\n width: var(--bp-spacing-3);\r\n height: var(--bp-spacing-3);\r\n min-width: var(--bp-spacing-3);\r\n }\r\n\r\n .badge--dot.badge--lg {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n min-width: var(--bp-spacing-4);\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { badgeStyles } from './badge.style.js';\r\n\r\n/**\r\n * Badge component for displaying status indicators, counts, and labels.\r\n *\r\n * @element bp-badge\r\n *\r\n * @slot - Default slot for badge content (text or icons)\r\n *\r\n * @csspart badge - The badge container element\r\n *\r\n * @example\r\n * ```html\r\n * <bp-badge>New</bp-badge>\r\n * <bp-badge variant=\"success\">Active</bp-badge>\r\n * <bp-badge variant=\"error\" size=\"sm\">3</bp-badge>\r\n * ```\r\n */\r\n@customElement('bp-badge')\r\nexport class BpBadge extends LitElement {\r\n /**\r\n * Visual variant of the badge\r\n * @type {'primary' | 'success' | 'error' | 'warning' | 'info' | 'neutral'}\r\n * @default 'primary'\r\n */\r\n @property({ type: String, reflect: true }) declare variant:\r\n | 'primary'\r\n | 'success'\r\n | 'error'\r\n | 'warning'\r\n | 'info'\r\n | 'neutral';\r\n\r\n /**\r\n * Size of the badge\r\n * @type {'sm' | 'md' | 'lg'}\r\n * @default 'md'\r\n */\r\n @property({ type: String, reflect: true }) declare size:\r\n | 'sm'\r\n | 'md'\r\n | 'lg';\r\n\r\n /**\r\n * Whether the badge is a dot/pill shape (for count indicators)\r\n * @type {boolean}\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) declare dot: boolean;\r\n\r\n static styles = [badgeStyles];\r\n\r\n constructor() {\r\n super();\r\n this.variant = 'primary';\r\n this.size = 'md';\r\n this.dot = false;\r\n }\r\n\r\n render() {\r\n return html`\r\n <span\r\n class=${classMap({\r\n badge: true,\r\n [`badge--${this.variant}`]: true,\r\n [`badge--${this.size}`]: true,\r\n 'badge--dot': this.dot,\r\n })}\r\n part=\"badge\"\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n >\r\n <slot></slot>\r\n </span>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-badge': BpBadge;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const iconStyles = css`\n /* Base styles */\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n }\n\n :host([size='full']) {\n display: flex;\n width: 100%;\n height: 100%;\n }\n\n .icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n color: var(--bp-color-text);\n }\n\n .icon svg,\n .icon ::slotted(svg) {\n width: 100%;\n height: 100%;\n display: block;\n fill: currentColor;\n }\n\n /* Color variants */\n .icon--default {\n color: var(--bp-color-text);\n }\n\n .icon--primary {\n color: var(--bp-color-primary);\n }\n\n .icon--success {\n color: var(--bp-color-success);\n }\n\n .icon--warning {\n color: var(--bp-color-warning);\n }\n\n .icon--error {\n color: var(--bp-color-error);\n }\n\n .icon--muted {\n color: var(--bp-color-text-muted);\n }\n\n /* Size variants */\n .icon--xs {\n width: var(--bp-icon-size-xs);\n height: var(--bp-icon-size-xs);\n }\n\n .icon--sm {\n width: var(--bp-icon-size-sm);\n height: var(--bp-icon-size-sm);\n }\n\n .icon--md {\n width: var(--bp-icon-size-md);\n height: var(--bp-icon-size-md);\n }\n\n .icon--lg {\n width: var(--bp-icon-size-lg);\n height: var(--bp-icon-size-lg);\n }\n\n .icon--xl {\n width: var(--bp-icon-size-xl);\n height: var(--bp-icon-size-xl);\n }\n\n .icon--2xl {\n width: var(--bp-icon-size-2xl);\n height: var(--bp-icon-size-2xl);\n }\n\n .icon--3xl {\n width: var(--bp-icon-size-3xl);\n height: var(--bp-icon-size-3xl);\n }\n\n .icon--4xl {\n width: var(--bp-icon-size-4xl);\n height: var(--bp-icon-size-4xl);\n }\n\n .icon--full {\n width: 100%;\n height: 100%;\n }\n`;\n","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m3.5 10.5-1-.0345601c-1.10193561-.0037085-2-.93261826-2-2.03456011v-5.9654399c0-1.1045695.8954305-2 2-2l10-.00245977c1.1045695 0 2 .8954305 2 2v6.00245977c0 1.1045695-.8954305 2.00000001-2 2.00000001-.0014957 0-.3348291.01234-1 .0370199\\\"/><path d=\\\"m7.5 12.5-3-3h6z\\\" transform=\\\"matrix(1 0 0 -1 0 22)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 1 19 2)\\\"><path d=\\\"m7.5 2.56534572h2c3.3137085 0 6 2.6862915 6 6v1.93465428c0 3.3137085-2.6862915 6-6 6h-2c-3.3137085 0-6-2.6862915-6-6v-1.93465428c0-3.3137085 2.6862915-6 6-6zm-3.03187447-1.06810595c-.88435284-.63912003-2.08877116-.7093269-2.96812553.00276023-.90620024.73382648-1.25812628 1.95919459-.82225162 2.96879869m11.79055952-2.92496449c.889667-.68192972 2.1314103-.77286806 3.0316921-.0438342.9064946.73406486 1.2583549 1.95999074.8218266 2.96978251\\\"/><path d=\\\"m8.5 5.5v4h-3.5\\\"/><path d=\\\"m14 15 2 2\\\"/><path d=\\\"m1 15 2 2\\\" transform=\\\"matrix(-1 0 0 1 4 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 1)\\\"><path d=\\\"m4.5 4.5 3 3 3-3\\\"/><path d=\\\"m7.5.5v7\\\"/><path d=\\\"m4.5 14.5 3-3 3 3\\\"/><path d=\\\"m7.5 11.5v7\\\"/><path d=\\\"m.5 9.5h14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 3)\\\"><path d=\\\"m14.5 4.5-3 3 3 3\\\"/><path d=\\\"m18.5 7.5h-7\\\"/><path d=\\\"m4.5 4.5 3 3-3 3\\\"/><path d=\\\"m7.5 7.5h-7\\\"/><path d=\\\"m9.5.5v14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 5)\\\"><path d=\\\"m5.5 11.5c0-2.76142375-2.23857625-5-5-5\\\"/><path d=\\\"m.5.5v11h11\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m1.5 4.5h14v7.9976807c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2zm0-3.9777832h14c.5522847 0 1 .44771525 1 1v1.9777832c0 .55228475-.4477153 1-1 1h-14c-.55228475 0-1-.44771525-1-1v-1.9777832c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m6.5 7.5h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 6)\\\"><path d=\\\"m.5 1.5v7h7\\\"/><path d=\\\"m8.5.5-8 8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 6)\\\"><path d=\\\"m8.5 1.5v7h-7\\\"/><path d=\\\"m.5.5 8 8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 4)\\\"><path d=\\\"m.5 9.499 4 4.001 4-4.001\\\"/><path d=\\\"m4.5.5v13\\\" transform=\\\"matrix(-1 0 0 -1 9 14)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m5.5 9.5 3 3 3-3\\\"/><path d=\\\"m8.5 12.5v-8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 6)\\\"><path d=\\\"m4.499.497-3.999 4.002 4 4.001\\\"/><path d=\\\"m13.5 4.5h-13\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m7.5 11.5-3-3 3-3\\\"/><path d=\\\"m8.5 4.5v8\\\" transform=\\\"matrix(0 1 -1 0 17 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 6)\\\"><path d=\\\"m9.5.497 4 4.002-4 4.001\\\"/><path d=\\\"m.5 4.5h13\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m9.5 11.5 3-3-3-3\\\"/><path d=\\\"m8.5 4.5v8\\\" transform=\\\"matrix(0 1 -1 0 17 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 6)\\\"><path d=\\\"m.5 7.5v-7h7\\\"/><path d=\\\"m.5.5 8 8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 6)\\\"><path d=\\\"m8.5 7.5v-7h-7\\\"/><path d=\\\"m8.5.5-8 8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 3)\\\"><path d=\\\"m8.5 4.5-4-4-4.029 4\\\"/><path d=\\\"m4.5.5v13\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m11.5 7.5-3-3-3 3\\\"/><path d=\\\"m8.5 4.5v8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m6.5 8.5v4\\\"/><path d=\\\"m8.5 6.5v9\\\"/><path d=\\\"m10.5 9.5v2\\\"/><path d=\\\"m12.5 7.5v6.814\\\"/><path d=\\\"m14.5 4.5v12\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(0 -1 1 0 2.5 15.5)\\\"><path d=\\\"m0 5.82842712v7.17157288c0 1.1045695.8954305 2 2 2h6c1.1045695 0 2-.8954305 2-2v-7.17157288c0-.53043297-.21071368-1.0391408-.58578644-1.41421356l-3.70710678-3.70710678c-.39052429-.39052429-1.02368927-.39052429-1.41421356 0l-3.70710678 3.70710678c-.37507276.37507276-.58578644.88378059-.58578644 1.41421356z\\\"/><g transform=\\\"matrix(0 1 -1 0 14 4)\\\"><path d=\\\"m3 11 4-4\\\"/><path d=\\\"m3 7 4 4\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m5.66116524 3.36827202c5.18469776-.47094658 8.51890836 1.5289737 9.99999996 6-2.8248102-3.14044041-6.34158528-3.71816233-9.99999996-2v2.99999998l-5-4.99999998 5-5z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2.839 4.132)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 4)\\\"><path d=\\\"m2.42575356.50254623 8.09559774-.00228586c.5209891-.00014706.9548019.39973175.9969972.91900932l.8938128 10.99973961c.0447299.5504704-.3652538 1.0329756-.9157242 1.0777056l-.0809907.0032851h-9.83555122c-.55228475 0-1-.4477152-1-1l.00294679-.076713.84614072-10.99745378c.0400765-.52088193.4743495-.92313949.99677087-.92328699z\\\"/><path d=\\\"m9.5 4.5v.64527222c0 1.10456949-1.8954305 1.35472778-3 1.35472778s-3-.3954305-3-1.5v-.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 6)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v3c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-3c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m3 2h7c.5522847 0 1 .44771525 1 1v2.04629283c0 .55228475-.4477153 1-1 1h-7c-.55228475 0-1-.44771525-1-1v-2.04629283c0-.55228475.44771525-1 1-1z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m16.5 2.5v3\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m10.5 2.5 2-.00147513c1.104569-.00182524 2.0005267.89307776 2.0011772 1.99764707l-.0011772 3.00117786c0 1.1045695-.8954305 2-2 2l-2 .0026502m-5 0h-3.01261486c-1.1045695 0-2-.8954305-2-2v-3c0-1.1045695.8954305-2 2-2h2.01261486\\\"/><path d=\\\"m8.5 5.5h2.5l-3.6 6.5.1-5.5h-3l4-6z\\\"/><path d=\\\"m16.5 4.5v3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 6)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v3c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-3c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m16.5 2.5v3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 6)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v3c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-3c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m3 2h9c.5522847 0 1 .44771525 1 1v2c0 .55228475-.4477153 1-1 1h-9c-.55228475 0-1-.44771525-1-1v-2c0-.55228475.44771525-1 1-1z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m16.5 2.5v3\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 6)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v3c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-3c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m3 2h4c.55228475 0 1 .44771525 1 1v2c0 .55228475-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1v-2c0-.55228475.44771525-1 1-1z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m16.5 2.5v3\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 6)\\\"><path d=\\\"m2.5.49734981h10c1.1045695 0 2 .8954305 2 2v3.00265019c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-3.00265019c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m3 2c.55228475 0 1 .44771525 1 1v2c0 .55228475-.44771525 1-1 1s-1-.44771525-1-1v-2c0-.55228475.44771525-1 1-1z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m16.5 2.5v1.5 1.5\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m2.41547595 3.5h10.16904815c.9116644 0 1.6507144.73905002 1.6507144 1.65071443 0 .299182-.0813106.59273912-.2352385.84928557-.9815222 1.63587038-1.5 3.50773964-1.5 5.4154759v1.0845241c0 2.209139-1.790861 4-4 4h-2c-2.209139 0-4-1.790861-4-4v-1.0845241c0-1.90773626-.51847777-3.77960552-1.5-5.4154759-.46904747-.78174578-.2155554-1.79571405.56619038-2.26476152.25654645-.15392786.55010357-.23523848.84928557-.23523848zm2.58452405-1.5c.66666667-1 1.5-1.5 2.5-1.5s1.83333333.5 2.5 1.5\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 -1 18 19)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 -1 18 19)\\\"><path d=\\\"m2.5 3.5h10.0845241c.9116644 0 1.6507144.73905002 1.6507144 1.65071443 0 .299182-.0813106.59273912-.2352385.84928557-.9815222 1.63587038-1.5 3.50773964-1.5 5.4154759v1.0845241c0 .2743851.0526244.7411502 0 1m-1.3634603 2.0081694c-.7039698.6174972-1.62653961.9918306-2.6365397.9918306h-2c-2.209139 0-4-1.790861-4-4v-1.0845241c0-1.90773626-.51847777-3.77960552-1.5-5.4154759-.23818692-.39697819-.29005196-.85383979-.18103675-1.26881839\\\"/><path d=\\\"m.5 1.5 14 14\\\"/><path d=\\\"m5 2c.66666667-1 1.5-1.5 2.5-1.5s1.83333333.5 2.5 1.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m2.41547595 3.5h10.16904815c.9116644 0 1.6507144.73905002 1.6507144 1.65071443 0 .299182-.0813106.59273912-.2352385.84928557-.9815222 1.63587038-1.5 3.50773964-1.5 5.4154759v1.0845241c0 2.209139-1.790861 4-4 4h-2c-2.209139 0-4-1.790861-4-4v-1.0845241c0-1.90773626-.51847777-3.77960552-1.5-5.4154759-.46904747-.78174578-.2155554-1.79571405.56619038-2.26476152.25654645-.15392786.55010357-.23523848.84928557-.23523848zm-1.91547595 11c.2671216.9337883.60045494 1.6004549 1 2s1.06621173.7328784 2 1m10.9115854-3c-.2081785.9337883-.5120403 1.6004549-.9115854 2s-1.0956833.7328784-2.0884146 1m-6.4115854-15.5c.66666667-1 1.5-1.5 2.5-1.5s1.83333333.5 2.5 1.5\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 -1 18 19)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 1)\\\"><path d=\\\"m12.4997505 6.58452405c0 1.90773631.5184778 3.77960555 1.5 5.41547595.4690475.7817458.2155554 1.795714-.5661903 2.2647615-.2565465.1539279-.5501036.2352385-.8492856.2352385h-10.16904812c-.91166441 0-1.65071443-.73905-1.65071443-1.6507144 0-.299182.08131061-.5927392.23523848-.8492856.98152223-1.6358704 1.5-3.50773964 1.5-5.41547595v-1.08452405c0-2.209139 1.790861-4 4-4h2c.80352907 0 1.55172027.23692942 2.17852347.64473803\\\"/><path d=\\\"m7.5 4.5h2l-2 3h2\\\"/><path d=\\\"m11.5.5h3l-3 4h3\\\"/><path d=\\\"m5 17.5c.66666667-1 1.5-1.5 2.5-1.5s1.83333333.5 2.5 1.5\\\" transform=\\\"matrix(-1 0 0 -1 15 33.5)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m0 3.75 7 7.5-3.5 3.75v-15l3.5 3.75-7 7.5\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(7 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m16.5 1.59090909c-1.3333333-.72727273-2.6666667-1.09090909-4-1.09090909s-2.66666667.36363636-4 1.09090909v9.90909091c1.33333333-.6666667 2.6666667-1 4-1s2.6666667.3333333 4 1zm-8 0c-1.33333333-.72727273-2.66666667-1.09090909-4-1.09090909s-2.66666667.36363636-4 1.09090909v9.90909091c1.33333333-.6666667 2.66666667-1 4-1s2.66666667.3333333 4 1z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m2.5.5h9c.5522847 0 1 .44771525 1 1v12c0 .5522847-.4477153 1-1 1h-9c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m2.5 10.5h10v3c0 .5522847-.4477153 1-1 1h-9c-1.1045695 0-2-.8954305-2-2s.8954305-2 2-2z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m16.5 1.59090909c-1.3333333-.72727273-2.6666667-1.09090909-4-1.09090909s-2.66666667.36363636-4 1.09090909v9.90909091c1.33333333-.6666667 2.6666667-1 4-1s2.6666667.3333333 4 1z\\\"/><path d=\\\"m14.5559265 2.78819322c-.6853088-.19212881-1.3706177-.28819322-2.0559265-.28819322s-1.3706177.09606441-2.0559265.28819322m4.111853 2c-.6853088-.19212881-1.3706177-.28819322-2.0559265-.28819322s-1.3706177.09606441-2.0559265.28819322m4.111853 2c-.6853088-.19212881-1.3706177-.28819322-2.0559265-.28819322s-1.3706177.09606441-2.0559265.28819322m4.111853 2c-.6853088-.19212881-1.3706177-.28819322-2.0559265-.28819322s-1.3706177.09606441-2.0559265.28819322m-3.88814699-6c-.68530883-.19212881-1.37061767-.28819322-2.05592651-.28819322s-1.37061768.09606441-2.05592651.28819322m4.11185302 2c-.68530883-.19212881-1.37061767-.28819322-2.05592651-.28819322s-1.37061768.09606441-2.05592651.28819322m4.11185302 2c-.68530883-.19212881-1.37061767-.28819322-2.05592651-.28819322s-1.37061768.09606441-2.05592651.28819322m4.11185302 2c-.68530883-.19212881-1.37061767-.28819322-2.05592651-.28819322s-1.37061768.09606441-2.05592651.28819322\\\"/><path d=\\\"m8.5 1.59090909c-1.33333333-.72727273-2.66666667-1.09090909-4-1.09090909s-2.66666667.36363636-4 1.09090909v9.90909091c1.33333333-.6666667 2.66666667-1 4-1s2.66666667.3333333 4 1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m1.5.5h6c.55228475 0 1 .44771525 1 1v12l-4-4-4 4v-12c0-.55228475.44771525-1 1-1z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 4)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m2.5.5h8c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-8c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m3.5.5h4v5.012l-2-2.012-2 2.012z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m8.49227788 1.06701593 5.00000002 2.85714286c.62315.35608571 1.0077221 1.01877259 1.0077221 1.73648628v4.67870983c0 .7177137-.3845721 1.3804006-1.0077221 1.7364863l-5.00000002 2.8571429c-.61486534.3513516-1.36969042.3513516-1.98455576 0l-5-2.8571429c-.62314999-.3560857-1.00772212-1.0187726-1.00772212-1.7364863v-4.67870983c0-.71771369.38457213-1.38040057 1.00772212-1.73648628l5-2.85714286c.61486534-.35135162 1.36969042-.35135162 1.98455576 0z\\\"/><path d=\\\"m11 6.5-7-4\\\"/><path d=\\\"m1 5 5.55180035 2.98943096c.59195265.31874373 1.30444665.31874373 1.8963993 0l5.55180035-2.98943096\\\"/><path d=\\\"m7.5 8.5v6.5\\\"/></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M11.492 4.067l5 2.857A2 2 0 0117.5 8.661v4.678a2 2 0 01-1.008 1.737l-5 2.857a2 2 0 01-1.984 0l-5-2.857A2 2 0 013.5 13.339V8.661a2 2 0 011.008-1.737l5-2.857a2 2 0 011.984 0zM17.5 1.5v4M19.5 3.5h-4M14 9.5l-7-4\\\"/><path d=\\\"M4 8l5.552 2.99a2 2 0 001.896 0L17 8M10.5 11.5V18\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m7.5 10.5v-8c0-1.1045695-.8954305-2-2-2h-3c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-10c0-1.1045695-.8954305-2-2-2h-3\\\"/><path d=\\\"m4.5 7.5 3 3 3-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(0 1)\\\"><path d=\\\"m3.5 6.5 7-4 5.9922779 3.42415879c.62315.35608571 1.0077221 1.01877259 1.0077221 1.73648628v4.67870983c0 .7177137-.3845721 1.3804006-1.0077221 1.7364863l-5 2.8571429c-.6148654.3513516-1.3696904.3513516-1.98455578 0l-5-2.8571429c-.62314999-.3560857-1.00772212-1.0187726-1.00772212-1.7364863 0-1.2454967 0-2.1796192 0-2.8023676\\\"/><path d=\\\"m9.55180035 9.98943096c.59195265.31874374 1.30444665.31874374 1.89639925 0l5.5518004-2.98943096\\\"/><path d=\\\"m10.5 10.5v6.5\\\"/><path d=\\\"m3.5 6.5 7 4-3 1-7-4z\\\"/><path d=\\\"m10.5 2.5 7 4 2-2-7-4z\\\"/></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M11.492 4.067l5 2.857A2 2 0 0117.5 8.661v4.678a2 2 0 01-1.008 1.737l-5 2.857a2 2 0 01-1.984 0l-5-2.857A2 2 0 013.5 13.339V8.661a2 2 0 011.008-1.737l5-2.857a2 2 0 011.984 0zM19.5 3.5h-4M14 9.5l-7-4\\\"/><path d=\\\"M4 8l5.552 2.99a2 2 0 001.896 0L17 8M10.5 11.5V18\\\"/></g></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M10.5 15.429l3.548 1.837a1 1 0 00.907.006l2.992-1.496a1 1 0 00.553-.894v-2.764a1 1 0 00-.553-.894L14.5 9.5l-3.46 1.792a1 1 0 00-.54.888v3.249z\\\"/><path d=\\\"M3.04 15.708l3.008 1.558a1 1 0 00.907.006L10.5 15.5v-3.382a1 1 0 00-.553-.894L6.5 9.5l-3.46 1.792a1 1 0 00-.54.888v2.64a1 1 0 00.54.888zM6.5 9.429l3.548 1.837a1 1 0 00.907.006L14.5 9.5V6.118a1 1 0 00-.553-.894l-2.992-1.496a1 1 0 00-.907.006L7.04 5.292a1 1 0 00-.54.888v3.249z\\\"/><path d=\\\"M6.846 5.673l3.207 1.603a1 1 0 00.894 0L14.12 5.69h0M8.799 4.649L12.5 6.5M12.799 10.649L16.5 12.5M4.799 10.649L8.5 12.5M10.846 11.673l3.207 1.603a1 1 0 00.894 0l3.172-1.586h0M2.846 11.673l3.207 1.603a1 1 0 00.894 0l3.172-1.586h0M10.5 7.5v4M14.5 13.5V17M6.5 13.5V17\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 1 17.335 3)\\\"><path d=\\\"m12.835 5.5v-5h-5\\\"/><path d=\\\"m12.835.5-6 6v8\\\"/><path d=\\\"m4.835 4.5-4-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m2.49999919 3.5h10.00000001c1.1045695 0 2 .8954305 2 2v5c0 1.1045695-.8954305 2-2 2h-10.00000001c-1.1045695 0-2-.8954305-2-2v-5c0-1.1045695.8954305-2 2-2zm4.00000081-3h2c1.1045695 0 2 .8954305 2 2v1h-6v-1c0-1.1045695.8954305-2 2-2z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m16.5 11.5v-9c0-1.1045695-.8954305-2-2-2h-12c-1.1045695 0-2 .8954305-2 2v9c0 1.1045695.8954305 2 2 2h12c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m14.5 10.5v-3c0-.55228475-.4477153-1-1-1h-10c-.55228475 0-1 .44771525-1 1v3c0 .5522847.44771525 1 1 1h10c.5522847 0 1-.4477153 1-1z\\\"/><path d=\\\"m6.5 3.498h8\\\"/><path d=\\\"m2.5 3.5h2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m16.5 11.5v-9c0-1.1045695-.8954305-2-2-2h-12c-1.1045695 0-2 .8954305-2 2v9c0 1.1045695.8954305 2 2 2h12c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m6.5 10.5v-7c0-.55228475-.44771525-1-1-1h-2c-.55228475 0-1 .44771525-1 1v7c0 .5522847.44771525 1 1 1h2c.55228475 0 1-.4477153 1-1zm8-6.00000052v-1c0-.55228475-.4477153-1-1-1h-4c-.55228475 0-1 .44771525-1 1v1c0 .55228475.44771525 1 1 1h4c.5522847 0 1-.44771525 1-1zm0 6.00000052v-2c0-.55228475-.4477153-1-1-1h-4c-.55228475 0-1 .44771525-1 1v2c0 .5522847.44771525 1 1 1h4c.5522847 0 1-.4477153 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 4)\\\"><path d=\\\"m12.5 10.5v-8c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v8c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m6.5 3.5v6.056\\\"/><path d=\\\"m6.5 3.5v6\\\" transform=\\\"matrix(0 1 -1 0 13 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 4)\\\"><path d=\\\"m12.5 10.5v-8c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v8c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m6.5 3.5v6\\\" transform=\\\"matrix(0 1 -1 0 13 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(5 4)\\\"><path d=\\\"m2.5.5h6c1.1045695 0 2 .8954305 2 2v9c0 1.1045695-.8954305 2-2 2h-6c-1.1045695 0-2-.8954305-2-2v-9c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m.5 5.5h10\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><g fill=\\\"currentColor\\\"><circle cx=\\\"2.5\\\" cy=\\\"7.5\\\" r=\\\"1\\\"/><circle cx=\\\"4.5\\\" cy=\\\"7.5\\\" r=\\\"1\\\"/><circle cx=\\\"6.5\\\" cy=\\\"7.5\\\" r=\\\"1\\\"/><circle cx=\\\"8.5\\\" cy=\\\"7.5\\\" r=\\\"1\\\"/><circle cx=\\\"2.5\\\" cy=\\\"9.5\\\" r=\\\"1\\\"/><circle cx=\\\"4.5\\\" cy=\\\"9.5\\\" r=\\\"1\\\"/><circle cx=\\\"6.5\\\" cy=\\\"9.5\\\" r=\\\"1\\\"/><circle cx=\\\"8.5\\\" cy=\\\"9.5\\\" r=\\\"1\\\"/><circle cx=\\\"2.5\\\" cy=\\\"11.5\\\" r=\\\"1\\\"/><circle cx=\\\"4.5\\\" cy=\\\"11.5\\\" r=\\\"1\\\"/><circle cx=\\\"6.5\\\" cy=\\\"11.5\\\" r=\\\"1\\\"/><circle cx=\\\"8.5\\\" cy=\\\"11.5\\\" r=\\\"1\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v12c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-12c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m.5 4.5h16\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v12c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-12c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m.5 4.5h16\\\"/><path d=\\\"m8.5 7.5v6.056\\\"/><path d=\\\"m8.5 7.5v6\\\" transform=\\\"matrix(0 1 -1 0 19 2)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v11.9903615c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-11.9903615c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m.659 4.5h15.841\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><g fill=\\\"currentColor\\\"><path d=\\\"m4.81640625 11.1552734v-1.0791015h.87890625c.66894531 0 1.12304688-.39550784 1.12304688-.97167971 0-.52734375-.41503907-.92773438-1.10351563-.92773438-.71289063 0-1.15234375.36621094-1.20117187.99609375h-1.36230469c.04882812-1.29882812 1.04980469-2.17285156 2.63671875-2.17285156 1.5625 0 2.43164062.86425781 2.42675781 1.89453125-.00488281.85449219-.54199219 1.41601565-1.29882813 1.60156255v.0927734c.98144532.1416016 1.57714844.7666016 1.57714844 1.7089844 0 1.2353515-1.16210937 2.109375-2.75390625 2.109375-1.59179687 0-2.67578125-.8691407-2.73925781-2.2021485h1.41113281c.04394531.5957031.55175781.9765625 1.30859375.9765625.74707032 0 1.26953125-.4052734 1.26953125-1.015625 0-.625-.48828125-1.0107422-1.27929687-1.0107422z\\\"/><path d=\\\"m11.516 14.227v-5.611h-.087l-1.729 1.192v-1.372l1.821-1.255h1.47v7.046z\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12.0269119c1.1045695 0 2 .8954305 2 2v11.9907459c0 1.0543618-.8158778 1.9181651-1.8507376 1.9945143l-.1588615.0054627-12.02691193-.0577246c-1.10080997-.0052835-1.99040087-.8991544-1.99040087-1.999977v-11.9330213c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m.5 4.5h16.027\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"4.5\\\" cy=\\\"8.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v12c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-12c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m.5 4.5h16\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><g fill=\\\"currentColor\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"1\\\"/><circle cx=\\\"4.5\\\" cy=\\\"8.5\\\" r=\\\"1\\\"/><circle cx=\\\"4.5\\\" cy=\\\"12.5\\\" r=\\\"1\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12.0269119c1.1045695 0 2 .8954305 2 2v11.9907459c0 1.0543618-.8158778 1.9181651-1.8507376 1.9945143l-.1588615.0054627-12.02691193-.0577246c-1.10080997-.0052835-1.99040087-.8991544-1.99040087-1.999977v-11.9330213c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m.5 4.5h16.027\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"12.5\\\" cy=\\\"12.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v12c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-12c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m.5 4.5h16\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><g fill=\\\"currentColor\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"1\\\"/><circle cx=\\\"4.5\\\" cy=\\\"8.5\\\" r=\\\"1\\\"/><circle cx=\\\"12.5\\\" cy=\\\"8.5\\\" r=\\\"1\\\"/><circle cx=\\\"8.5\\\" cy=\\\"12.5\\\" r=\\\"1\\\"/><circle cx=\\\"4.5\\\" cy=\\\"12.5\\\" r=\\\"1\\\"/><circle cx=\\\"12.5\\\" cy=\\\"12.5\\\" r=\\\"1\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 2)\\\"><path d=\\\"m1.5 8.46153846v-6.02882304c0-1.1045695.8954305-2 2-2h.00961527l12.00000003.05771542c1.1008036.00529233 1.9903847.89916054 1.9903847 1.99997689v11.99995377c0 1.1045695-.8954305 2-2 2-.0032051 0-.0064102 0-.0096153 0l-11.99999997-.0577154c-1.10080364-.0052923-1.99038473-.8991606-1.99038473-1.9999769v-1.9326692\\\"/><path d=\\\"m1.5 4.5h16\\\"/><path d=\\\"m9.621 8.379v4.242h-4.242\\\" transform=\\\"matrix(.70710678 .70710678 .70710678 -.70710678 -5.228144 12.621856)\\\"/><path d=\\\"m5.5 5.5v10\\\" transform=\\\"matrix(0 1 -1 0 16 5)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v12c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-12c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m.5 4.5h16\\\"/><path d=\\\"m8.5 7.5v6\\\" transform=\\\"matrix(0 1 -1 0 19 2)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v12c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-12c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m.5 4.5h16\\\"/><path d=\\\"m8.5 4.5v12\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v12c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-12c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m.5 4.5h16\\\"/><path d=\\\"m3.5 7.5v6\\\"/><path d=\\\"m5.5 7.5v6\\\"/><path d=\\\"m7.5 7.5v6\\\"/><path d=\\\"m9.5 7.5v6\\\"/><path d=\\\"m11.5 7.5v6\\\"/><path d=\\\"m13.5 7.5v6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m.5 10.5v-6c0-1.1045695.8954305-2 2-2h12c1.1045695 0 2 .8954305 2 2v6c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m15 5c0-.55228475-.4477153-1-1-1s-1 .44771525-1 1 .4477153 1 1 1 1-.44771525 1-1z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m11.5 7.5c0-1.65685425-1.3431458-3-3-3-1.65685425 0-3 1.34314575-3 3s1.34314575 3 3 3c1.6568542 0 3-1.34314575 3-3zm-4-7h2c.5522847 0 1 .44771525 1 1v1h-4v-1c0-.55228475.44771525-1 1-1z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m.5 10.5v-6c0-1.1045695.8954305-2 2-2h2l2.07861328-2h3.92016602l1.9194336 2h2.0817871c1.1045695 0 2 .8954305 2 2v6c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2z\\\"/><path d=\\\"m11.5 7.5c0-1.65685425-1.3431458-3-3-3-1.65685425 0-3 1.34314575-3 3s1.34314575 3 3 3c1.6568542 0 3-1.34314575 3-3z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m6.5 2.5h8c1.1045695 0 2 .8954305 2 2v6c0 .5586494-.2290469 1.063802-.5983542 1.4266713m-2.4016458.5733287h-11c-1.1045695 0-2-.8954305-2-2v-6c0-1.1045695.8954305-2 2-2h1\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m1.5.5 14 14\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m15 5c0-.55228475-.4477153-1-1-1s-1 .44771525-1 1 .4477153 1 1 1 1-.44771525 1-1z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m6.21451797 5.55656756c-.44560472.52352158-.71451797 1.20207298-.71451797 1.94343244 0 1.65685425 1.34314575 3 3 3 .76116342 0 1.45611838-.2834721 1.9850534-.75060483m1.0149466-2.24939517c0-1.65685425-1.3431458-3-3-3m-1-4h2c.5522847 0 1 .44771525 1 1v1h-4v-1c0-.55228475.44771525-1 1-1z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3.8)\\\"><path d=\\\"m5.53930664 1.7 1.03930664-1h3.92016602l1.9194336 2h2.0817871c1.1045695 0 2 .8954305 2 2v6c0 .5021261-.1850424.9610332-.4906558 1.3122498m-2.5093442.6877502h-11c-1.1045695 0-2-.8954305-2-2v-6c0-1.1045695.8954305-2 2-2h1\\\"/><path d=\\\"m1.5.7 14 14\\\"/><path d=\\\"m6.3057638 5.65417596c-.49988337.53591416-.8057638 1.255148-.8057638 2.04582404 0 1.65685425 1.34314575 3 3 3 .77231532 0 1.47646791-.2918393 2.0081946-.77125485m.9918054-2.22874515c0-1.65685425-1.3431458-3-3-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m16.5 5.5v-3.00587878c0-1.10227102-.8918463-1.99674657-1.9941126-1.99999134l-3.0058874-.00884851m5 11.01471863v3c0 1.1045695-.8954305 2-2 2h-3m-6-16.01471863-3.00588742.00884851c-1.10226624.00324477-1.99411258.89772032-1.99411258 1.99999134v3.00587878m5 11h-3c-1.1045695 0-2-.8954305-2-2v-3\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m2.49999999 1.5h-1c-.55228475 0-1 .44771525-1 1v8c0 .5522847.44771525 1 1 1h1c.55228475 0 1-.4477153 1-1v-8c0-.55228475-.44771525-1-1-1zm13.00000001 0h-1c-.5522848 0-1 .44771525-1 1v8c0 .5522847.4477152 1 1 1h1c.5522847 0 1-.4477153 1-1v-8c0-.55228475-.4477153-1-1-1zm-5-1h-4.00000001c-.55228475 0-1 .44771525-1 1v10c0 .5522847.44771525 1 1 1h4.00000001c.5522847 0 1-.4477153 1-1v-10c0-.55228475-.4477153-1-1-1z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m5.5.5h6c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-6c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2zm8 2.5h1c1.1045695 0 2 .8954305 2 2v5c0 1.1045695-.8954305 2-2 2h-1z\\\"/><path d=\\\"m.5 3h1c1.1045695 0 2 .8954305 2 2v5c0 1.1045695-.8954305 2-2 2h-1z\\\" transform=\\\"matrix(-1 0 0 1 4 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m12.5.5h-8.00000001c-1.1045695 0-2 .8954305-2 2v6c0 1.1045695.8954305 2 2 2h8.00000001c1.1045695 0 2-.8954305 2-2v-6c0-1.1045695-.8954305-2-2-2z\\\"/><path d=\\\"m16.5.5v10\\\"/><path d=\\\"m.5.5v10\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m3 2.5h12.5l-1.5855549 5.54944226c-.2453152.85860311-1.0300872 1.45055774-1.9230479 1.45055774h-6.70131161c-1.01909844 0-1.87522688-.76627159-1.98776747-1.77913695l-.80231812-7.22086305h-2\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><g fill=\\\"currentColor\\\"><circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"/><circle cx=\\\"13\\\" cy=\\\"12\\\" r=\\\"1\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m.5 2.5c0-1.1045695.8954305-2 2-2h10c1.1045695 0 2 .8954305 2 2v8c0 1.1045695-.8954305 2-2 2h-2m-2 0c0-4.418278-3.581722-8-8-8m5 8c0-2.76142375-2.23857625-5-5-5m2 5c0-1.1045695-.8954305-2-2-2\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 4)\\\"><path d=\\\"m5.5 7.5c.96940983 1.36718798 3.01111566 1.12727011 4.01111565 0l1.98888435-2c1.1243486-1.22807966 1.1641276-2.81388365 0-4-1.135619-1.15706921-2.86438099-1.15706947-4 0l-2 2\\\"/><path d=\\\"m7.5 6.56977319c-.96940983-1.36718798-3-1.1970433-4-.06977319l-2 1.97487373c-1.12434863 1.22807966-1.16412758 2.83900987 0 4.02512627 1.13561901 1.1570692 2.86438099 1.1570695 4 0l2-2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m11.4182262 1.21376122c-.904128-.29938651-1.88845542-.46376122-2.9182262-.46376122-4.418278 0-8 3.02593755-8 6.75862069 0 1.45741942.54603279 2.80709561 1.47469581 3.91098161l-.97469581 4.5803977 3.91607376-2.4472652c1.07810761.4571647 2.29544433.7145066 3.58392624.7145066 4.418278 0 8-3.0259376 8-6.75862071 0-.68476204-.1205394-1.34573924-.3446699-1.96861327\\\"/><path d=\\\"m14.5.5v4\\\"/><path d=\\\"m14.5.5v4\\\" transform=\\\"matrix(0 1 -1 0 17 -12)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m.5 5.5 3 3 8.028-8\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 6)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m5.5 9.5 2 2 5-5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m12.8571123 1.79063546c-3.70547974-2.40636667-8.66011018-1.35322746-11.06647684 2.35225226-2.40636667 3.70547972-1.35322746 8.66011018 2.35225226 11.06647678 1.40713892.9138067 2.9944136 1.3287299 4.55387082 1.2889715 2.54712886-.0649393 5.02004606-1.3428829 6.51260596-3.6412237 1.5774991-2.4291355 1.6682799-5.39509184.4997393-7.82805117\\\"/><path d=\\\"m4.5 7.5 3 3 8-8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m4.5 7.5 2 2 4-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(7 6)\\\"><path d=\\\"m.5 9.5 3-3 3 3\\\"/><path d=\\\"m.5.5 3 3 3-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m8.5.5-4 4-4-4\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 8)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m5.466 7.466 3 3.068 3-3.068\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 6)\\\"><path d=\\\"m8.5.5-4 4-4-4\\\"/><path d=\\\"m8.5 4.5-4 4-4-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m4.5 8.5-4-4 4-4\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(7 6)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m9.55 11.4-3-2.9 3-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 6)\\\"><path d=\\\"m8.5 8.5-4-4 4-4\\\"/><path d=\\\"m4.5 8.5-4-4 4-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(7 5)\\\"><path d=\\\"m.5 3.5 3-3 3 3\\\"/><path d=\\\"m.5 8.5 3 3 3-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m.5 8.5 4-4-4-4\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(9 6)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m7.5 11.5 3-3-3.068-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(7 6)\\\"><path d=\\\"m.5 8.5 4-4-4-4\\\"/><path d=\\\"m4.5 8.5 4-4-4-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m.5 4.5 4-4 4 4\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 8)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m11.5 9.5-3-3-3 3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 6)\\\"><path d=\\\"m.5 8.5 4-4 4 4\\\"/><path d=\\\"m.5 4.5 4-4 4 4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" fill=\\\"none\\\" r=\\\"8\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m8.5 9.5c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm-4 0c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm8 0c.5 0 1-.5 1-1s-.5-1-1-1-.9988403.5-.9988403 1 .4988403 1 .9988403 1z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m8.5.5.027 16\\\" transform=\\\"matrix(-1 0 0 1 17.027 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m3.5 1.5c-.44119105-.00021714-1.03893772-.0044496-1.99754087-.00501204-.51283429-.00116132-.93645365.3838383-.99544161.88103343l-.00701752.11906336v10.99753785c.00061498.5520447.44795562.9996604 1 1.0006148l10 .0061982c.5128356.0008356.9357441-.3849039.993815-.882204l.006185-.1172316v-11c0-.55228475-.4477152-1-1-1-.8704853-.00042798-1.56475733.00021399-2 0\\\"/><path d=\\\"m4.5.5h4c.55228475 0 1 .44771525 1 1s-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1s.44771525-1 1-1z\\\"/><path d=\\\"m2.5 5.5h5\\\"/><path d=\\\"m2.5 7.5h7\\\"/><path d=\\\"m2.5 9.5h3\\\"/><path d=\\\"m2.5 11.5h6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m3.5 1.5c-.42139382 0-1.08806048 0-2 0-.55228475 0-1 .44771525-1 1v11c0 .5522848.44771525 1 1 1h10c.5522847 0 1-.4477152 1-1v-11c0-.55228475-.4477153-1-1-1-.8888889 0-1.55555556 0-2 0\\\"/><path d=\\\"m4.5.5h4c.55228475 0 1 .44771525 1 1s-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1s.44771525-1 1-1z\\\"/><path d=\\\"m6.5 5.5v6.056\\\"/><path d=\\\"m6.5 5.5v6\\\" transform=\\\"matrix(0 1 -1 0 15 2)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m3.5 1.5c-.42139382 0-1.08806048 0-2 0-.55228475 0-1 .44771525-1 1v11c0 .5522848.44771525 1 1 1h10c.5522847 0 1-.4477152 1-1v-11c0-.55228475-.4477153-1-1-1-.8888889 0-1.55555556 0-2 0\\\"/><path d=\\\"m4.5.5h4c.55228475 0 1 .44771525 1 1s-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1s.44771525-1 1-1z\\\"/><path d=\\\"m3.5 8.5 2 2 5-5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m6.5 11.5-3-3 3-3\\\"/><path d=\\\"m3.5 8.5h11\\\"/><path d=\\\"m12.5 6.5v-4.00491374c0-.51283735-.3860402-.93550867-.8833789-.99327378l-.1190802-.00672622-1.9975409.00491374m-6 0-1.99754087-.00492752c-.51283429-.00124584-.93645365.38375378-.99544161.88094891l-.00701752.11906329v10.99753792c.00061497.5520447.44795562.9996604 1 1.0006148l10 .0061554c.5128356.0008784.9357441-.3848611.993815-.8821612l.006185-.1172316v-2.5\\\"/><path d=\\\"m4.5.5h4c.55228475 0 1 .44771525 1 1s-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1s.44771525-1 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m3.5 1.5c-.42139382 0-1.08806048 0-2 0-.55228475 0-1 .44771525-1 1v11c0 .5522848.44771525 1 1 1h10c.5522847 0 1-.4477152 1-1v-11c0-.55228475-.4477153-1-1-1-.8888889 0-1.55555556 0-2 0\\\"/><path d=\\\"m4.5.5h4c.55228475 0 1 .44771525 1 1s-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1s.44771525-1 1-1z\\\"/><g transform=\\\"matrix(0 1 -1 0 15 2)\\\"><path d=\\\"m3.5 11.5 6-6\\\"/><path d=\\\"m3.5 5.5 6 6\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m3.5 1.5c-.42139382 0-1.08806048 0-2 0-.55228475 0-1 .44771525-1 1v11c0 .5522848.44771525 1 1 1h10c.5522847 0 1-.4477152 1-1v-11c0-.55228475-.4477153-1-1-1-.8888889 0-1.55555556 0-2 0\\\"/><path d=\\\"m4.5.5h4c.55228475 0 1 .44771525 1 1s-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1s.44771525-1 1-1z\\\"/><path d=\\\"m5.5 5.5h5\\\"/><path d=\\\"m5.5 8.5h5\\\"/><path d=\\\"m5.5 11.5h5\\\"/><path d=\\\"m2.5 5.5h1\\\"/><path d=\\\"m2.5 8.5h1\\\"/><path d=\\\"m2.5 11.5h1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m3.5 1.5c-.42139382 0-1.08806048 0-2 0-.55228475 0-1 .44771525-1 1v11c0 .5522848.44771525 1 1 1h10c.5522847 0 1-.4477152 1-1v-11c0-.55228475-.4477153-1-1-1-.8888889 0-1.55555556 0-2 0\\\"/><path d=\\\"m4.5.5h4c.55228475 0 1 .44771525 1 1s-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1s.44771525-1 1-1z\\\"/><path d=\\\"m6.5 5.5v6\\\" transform=\\\"matrix(0 1 -1 0 15 2)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 1 19 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m8.5 5.5v4h-3.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m7.5 7.5 6 6\\\"/><path d=\\\"m13.5 7.5-6 6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m8.5.5c2.7614237 0 5 2.23857625 5 5 0 .48543539-.0691781.95471338-.1982137 1.39851335.3339576-.25026476.748773-.39851335 1.1982137-.39851335 1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2c-1.104407 0-10.16182706 0-11 0-1.65685425 0-3-1.34314575-3-3s1.34314575-3 3-3c.03335948 0 .06659179.00054449.09968852.00162508.46264217-2.28304993 2.48077946-4.00162508 4.90031148-4.00162508z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m6.7387371 1.81902812c.54779873-.20621538 1.1413564-.31902812 1.7612629-.31902812 2.7614237 0 5 2.23857625 5 5 0 .48543539-.0691781.95471338-.1982137 1.39851335.3339576-.25026476.748773-.39851335 1.1982137-.39851335 1.1045695 0 2 .8954305 2 2 0 .7252268-.3860055 1.3602973-.963771 1.7109657m-2.103856.2890343c-2.7134953 0-9.22769921 0-9.932373 0-1.65685425 0-3-1.3431458-3-3 0-1.65685425 1.34314575-3 3-3 .03335948 0 .06659179.00054449.09968852.00162508.19090431-.94207596.64666454-1.78803816 1.28619295-2.45679888\\\"/><path d=\\\"m2 0 13 13.071\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m8.5.5c2.7614237 0 5 2.23857625 5 5 0 .48543539-.0691781.95471338-.1982137 1.39851335.3339576-.25026476.748773-.39851335 1.1982137-.39851335 1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2c-1.104407 0-10.16182706 0-11 0-1.65685425 0-3-1.34314575-3-3s1.34314575-3 3-3c.03335948 0 .06659179.00054449.09968852.00162508.46264217-2.28304993 2.48077946-4.00162508 4.90031148-4.00162508z\\\"/><path d=\\\"m10.5 6.5-2 2-2-2\\\"/><path d=\\\"m8.5 2.5v6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m6.5 10.5h-4c-1.15200478-.4188699-2-1.70322102-2-3 0-1.65685425 1.34314575-3 3-3 .03335948 0 .06659179.00054449.09968852.00162508.46264217-2.28304993 2.48077946-4.00162508 4.90031148-4.00162508 2.7614237 0 5 2.23857625 5 5 0 .48543539-.0691781.95471338-.1982137 1.39851335.3339576-.25026476.748773-.39851335 1.1982137-.39851335 1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2h-4\\\"/><path d=\\\"m6.5 12.5 2 2 2-2\\\"/><path d=\\\"m8.5 4.5v10\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m8.5.5c2.7614237 0 5 2.23857625 5 5 0 .48543539-.0691781.95471338-.1982137 1.39851335.3339576-.25026476.748773-.39851335 1.1982137-.39851335 1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2c-1.104407 0-10.16182706 0-11 0-1.65685425 0-3-1.34314575-3-3s1.34314575-3 3-3c.03335948 0 .06659179.00054449.09968852.00162508.46264217-2.28304993 2.48077946-4.00162508 4.90031148-4.00162508z\\\"/><path d=\\\"m6.5 4.5 2-2 2 2\\\"/><path d=\\\"m8.5 2.5v6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m11.5779891 4.55941656c1.1699828.91516665 1.9220109 2.34005226 1.9220109 3.94058344 0 .48543539-.0691781.95471338-.1982137 1.39851335.3339576-.25026476.748773-.39851335 1.1982137-.39851335 1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2c-1.104407 0-10.16182706 0-11 0-1.65685425 0-3-1.3431458-3-3 0-1.65685425 1.34314575-3 3-3 .03335948 0 .06659179.00054449.09968852.00162508.242805-1.19819586.9140534-2.24091357 1.84691265-2.96132058\\\"/><path d=\\\"m6.5 2.5 2-2 2 2\\\"/><path d=\\\"m8.5.5v9\\\"/></g></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><line x1=\\\"10.5\\\" x2=\\\"6.5\\\" y1=\\\".5\\\" y2=\\\"14.5\\\"/><polyline points=\\\"7.328 2.672 7.328 8.328 1.672 8.328\\\" transform=\\\"rotate(135 4.5 5.5)\\\"/><polyline points=\\\"15.328 6.672 15.328 12.328 9.672 12.328\\\" transform=\\\"scale(1 -1) rotate(-45 -10.435 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 2)\\\"><path d=\\\"m2.5 6.5h6c1.1045695 0 2 .8954305 2 2v2.5c0 2.4852814-2.01471863 4.5-4.5 4.5h-1c-2.48528137 0-4.5-2.0147186-4.5-4.5v-2.5c0-1.1045695.8954305-2 2-2zm8 2h1c1.1045695 0 2 .8954305 2 2s-.8954305 2-2 2h-1\\\"/><path d=\\\"m4.5 4.5v-4\\\"/><path d=\\\"m6.5 4.5v-2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 6)\\\"><path d=\\\"m.5 3.5c0-1.29949353 3.13400675-3 7-3 3.8659932 0 7 1.70050647 7 3v3c0 1.29949353-3.1340068 3-7 3-3.86599325 0-7-1.70050647-7-3 0-.64128315 0-2.35871685 0-3z\\\"/><path d=\\\"m7.5 6.48363266c3.8659932 0 7-1.60524012 7-2.985952 0-1.38071187-3.1340068-2.99768066-7-2.99768066-3.86599325 0-7 1.61696879-7 2.99768066 0 1.38071188 3.13400675 2.985952 7 2.985952z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 3)\\\"><path d=\\\"m17.5 8.5v3c0 1.2994935-3.1340068 3-7 3-3.86599325 0-7-1.7005065-7-3 0-.4275221 0-1.2608554 0-2.5\\\"/><path d=\\\"m3.79385803 9.25873308c.86480173 1.14823502 3.53999333 2.22489962 6.70614197 2.22489962 3.8659932 0 7-1.60524016 7-2.98595204 0-.77476061-.9867994-1.62391104-2.5360034-2.22001882\\\"/><path d=\\\"m14.5 3.5v3c0 1.29949353-3.1340068 3-7 3-3.86599325 0-7-1.70050647-7-3 0-.64128315 0-2.35871685 0-3\\\"/><path d=\\\"m7.5 6.48363266c3.8659932 0 7-1.60524012 7-2.985952 0-1.38071187-3.1340068-2.99768066-7-2.99768066-3.86599325 0-7 1.61696879-7 2.99768066 0 1.38071188 3.13400675 2.985952 7 2.985952z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m10.5 9.5-4 3v-5l4-3z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m6.5 3.5h-4c-1.1045695 0-2 .8954305-2 2v7c0 1.1045695.8954305 2 2 2h7c1.1045695 0 2-.8954305 2-2v-3.5-.5\\\"/><path d=\\\"m11.5.5v6\\\"/><path d=\\\"m11.5.5v6\\\" transform=\\\"matrix(0 1 -1 0 15 -8)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><circle cx=\\\"7.5\\\" cy=\\\"5.5\\\" r=\\\"2\\\"/><path d=\\\"m.5 3.5h1v-1c0-1.1045695.8954305-2 2-2h8c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-8c-1.1045695 0-2-.8954305-2-2v-1h-1\\\"/><path d=\\\"m.5 7.5h1\\\"/><path d=\\\"m.5 5.5h1\\\"/><path d=\\\"m.5 9.5h1\\\"/><path d=\\\"m10.5 10.5v-1c0-1.1045695-.8954305-2-2-2h-2c-1.1045695 0-2 .8954305-2 2v1c0 .5522847.44771525 1 1 1h4c.5522847 0 1-.4477153 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m7.5 14.5v-4.978l-5-.022\\\"/><path d=\\\"m16.5.5-7 7\\\"/><path d=\\\"m14.5 7.5-5 .023v-5.023\\\"/><path d=\\\"m7.5 9.5-7 7\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\"\\r\\n xmlns=\\\"http://www.w3.org/2000/svg\\\">\\r\\n <g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\">\\r\\n <path d=\\\"m7 1.5h-4.5c-1.1045695 0-2 .8954305-2 2v9.0003682c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-4.5003682\\\"/>\\r\\n <path d=\\\"m14.5.46667982c.5549155.5734054.5474396 1.48588056-.0167966 2.05011677l-6.9832034 6.98320341-3 1 1-3 6.9874295-7.04563515c.5136195-.5178979 1.3296676-.55351813 1.8848509-.1045243z\\\"/>\\r\\n <path d=\\\"m12.5 2.5.953 1\\\"/>\\r\\n </g>\\r\\n</svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m2.5.5h12c1.1045695 0 2 .8954305 2 2v7c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-7c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m0 4h17v2h-17z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 4)\\\"><path d=\\\"m5.5 3.5h4v4\\\"/><path d=\\\"m9.5 9.5v3\\\"/><path d=\\\"m3.5 3.5h-3.5\\\"/><path d=\\\"m3.5.5v9h9\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 5)\\\"><path d=\\\"m10.5 10.5-10-10z\\\"/><path d=\\\"m10.5.5-10 10\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><g transform=\\\"matrix(0 1 -1 0 17 0)\\\"><path d=\\\"m5.5 11.5 6-6\\\"/><path d=\\\"m5.5 5.5 6 6\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 4)\\\"><path d=\\\"m6.5 12.5c3.32850184 0 6-2.64471245 6-5.97321429s-2.67149816-6.02678571-6-6.02678571-6 2.69828387-6 6.02678571 2.67149816 5.97321429 6 5.97321429z\\\"/><path d=\\\"m.5 6.5h2\\\"/><path d=\\\"m10.5 6.5h2\\\"/><path d=\\\"m5.5 1.5h2\\\" transform=\\\"matrix(0 1 -1 0 8 -5)\\\"/><path d=\\\"m5.5 11.5h2\\\" transform=\\\"matrix(0 1 -1 0 18 5)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m8.49227788 1.06701593 5.00000002 2.85714286c.62315.35608571 1.0077221 1.01877259 1.0077221 1.73648628v4.67870983c0 .7177137-.3845721 1.3804006-1.0077221 1.7364863l-5.00000002 2.8571429c-.61486534.3513516-1.36969042.3513516-1.98455576 0l-5-2.8571429c-.62314999-.3560857-1.00772212-1.0187726-1.00772212-1.7364863v-4.67870983c0-.71771369.38457213-1.38040057 1.00772212-1.73648628l5-2.85714286c.61486534-.35135162 1.36969042-.35135162 1.98455576 0z\\\"/><path d=\\\"m7.5 8.5v6.5\\\"/><path d=\\\"m1 5 5.55180035 2.98943096c.59195265.31874373 1.30444665.31874373 1.8963993 0l5.55180035-2.98943096\\\"/></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M10.5 15.429l3.548 1.837a1 1 0 00.907.006l2.992-1.496a1 1 0 00.553-.894v-2.764a1 1 0 00-.553-.894L14.5 9.5l-3.46 1.792a1 1 0 00-.54.888v3.249z\\\"/><path d=\\\"M3.04 15.708l3.008 1.558a1 1 0 00.907.006L10.5 15.5v-3.382a1 1 0 00-.553-.894L6.5 9.5l-3.46 1.792a1 1 0 00-.54.888v2.64a1 1 0 00.54.888zM6.5 9.429l3.548 1.837a1 1 0 00.907.006L14.5 9.5V6.118a1 1 0 00-.553-.894l-2.992-1.496a1 1 0 00-.907.006L7.04 5.292a1 1 0 00-.54.888v3.249z\\\"/><path d=\\\"M6.846 5.673l3.207 1.603a1 1 0 00.894 0L14.12 5.69h0M10.846 11.673l3.207 1.603a1 1 0 00.894 0l3.172-1.586h0M2.846 11.673l3.207 1.603a1 1 0 00.894 0l3.172-1.586h0M10.5 7.5v4M14.5 13.5V17M6.5 13.5V17\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 2)\\\"><path d=\\\"m.5 3.35294118c0-1.29949353 2-2.85294118 5-2.85294118s5 1.55344765 5 2.85294118v10.29411762c0 1.2994936-2 2.8529412-5 2.8529412s-5-1.5534476-5-2.8529412c0-.6412831 0-9.65283447 0-10.29411762z\\\"/><path d=\\\"m.5 3.5c0 1.38071187 2 3 5 3s5-1.61928813 5-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 2)\\\"><path d=\\\"m.5 3.20588235c0-1.29949353 2.5-2.74110534 6-2.70588235s6 1.55344765 6 2.85294118v10.29411762c0 1.2994936-2.5 2.8529412-6 2.8529412s-6-1.7005065-6-3c0-.6412832 0-9.65283449 0-10.29411765z\\\"/><path d=\\\"m.5 3.5c0 1.38071187 2 3 6 3s6-1.63689962 6-3.0176115m-12 5.0176115c0 1.38071187 2 3 6 3s6-1.63689962 6-3.0176115\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m13.5 0 3 4-8 10-8-10 3.009-4z\\\"/><path d=\\\"m.5 4h16\\\"/><path d=\\\"m5.5 4 3 10\\\"/><path d=\\\"m11.5 4-3 10\\\"/><path d=\\\"m3.509 0 1.991 4 3-4 3 4 2-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m1.5.5h11l2 2-2 2h-11c-.55228475 0-1-.44771525-1-1v-2c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m1.5 7.5h11l2 2-2 2h-11c-.55228475 0-1-.4477153-1-1v-2c0-.55228475.44771525-1 1-1z\\\" transform=\\\"matrix(-1 0 0 1 15 0)\\\"/><path d=\\\"m7.5 4.5v3\\\"/><path d=\\\"m7.5 11.5v3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"8\\\"/><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2 .5h11c1.1045695 0 2 .8954305 2 2v6.04882185c0 1.05436179-.8158778 1.91816515-1.8507377 1.99451425l-.1567755.0054716-10.99999997-.0413227c-1.10162878-.0041384-1.99248683-.89834933-1.99248683-1.99998589v-6.00749911c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m2.464 12.5h10.036\\\"/><path d=\\\"m4.5 14.5h6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2 4.5h11c1.1045695 0 2 .8954305 2 2v6.0488218c0 1.0543618-.8158778 1.9181652-1.8507377 1.9945143l-.1567755.0054716-10.99999997-.0413227c-1.10162878-.0041384-1.99248683-.8983493-1.99248683-1.9999859v-6.0074991c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m2.464 2.5h10.036\\\"/><path d=\\\"m4.5.5h6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m12.5 12.5v-7l-5-5h-5c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m2.5 7.5h5\\\"/><path d=\\\"m2.5 9.5h7\\\"/><path d=\\\"m2.5 11.5h3\\\"/><path d=\\\"m7.5.5v3c0 1.1045695.8954305 2 2 2h3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><g><path d=\\\"m12.5 12.5v-10c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m3.5 4.5h6\\\"/><path d=\\\"m3.5 7.5h6\\\"/><path d=\\\"m3.5 10.5h6\\\"/></g><g><path d=\\\"m12.5 12.5v-10c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m3.5 4.5h6\\\"/><path d=\\\"m3.5 7.5h6\\\"/><path d=\\\"m3.5 10.5h6\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m12.5 12.5v-10c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m5.5 4.5h5\\\"/><path d=\\\"m2.5 4.5h1\\\"/><path d=\\\"m5.5 7.5h5\\\"/><path d=\\\"m2.5 7.5h1\\\"/><path d=\\\"m5.5 10.5h5\\\"/><path d=\\\"m2.5 10.5h1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 2)\\\"><path d=\\\"m16.5 12.5v-10c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m4.30542777 2.93478874-2.00419132.72946598c-1.03795581.37778502-1.57312998 1.52546972-1.19534496 2.56342553l3.42020143 9.39692625c.37778502 1.0379558 1.52546972 1.5731299 2.56342553 1.1953449l5.56843115-2.1980811\\\"/><path d=\\\"m7.5 5.5h5\\\"/><path d=\\\"m7.5 7.5h6\\\"/><path d=\\\"m7.5 9.5h3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m12.5 12.5v-10c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m3.5 5.5h5\\\"/><path d=\\\"m3.5 7.5h6\\\"/><path d=\\\"m3.5 9.5h3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m2.5.5h8c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-8c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m10.2022469 14.5-3.64502265-1.9482581c-.65083781-.3478717-1.05722425-1.0258787-1.05722425-1.763852v-6.57577979c0-.73797327.40638644-1.41598036 1.05722425-1.76385201l3.64502265-1.9482581\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"7.5\\\" cy=\\\"7.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(4 1)\\\"><path d=\\\"m2.5 2.5h2v14h-2c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2zm4.70224688-1.98665742 4.00000002 1.5c.7806074.29272779 1.2977531 1.03896923 1.2977531 1.87265836v11.22799816c0 .8336891-.5171457 1.5799305-1.2977531 1.8726583l-4.00000002 1.5c-1.03424065.3878403-2.18706499-.1361708-2.57490524-1.1704115-.08420779-.2245541-.12734164-.4624229-.12734164-.7022468v-14.22799816c0-1.1045695.8954305-2 2-2 .2398239 0 .47769277.04313385.70224688.12734164z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"6.5\\\" cy=\\\"9.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m2.5 7.5 4 4.232 4-4.191\\\"/><path d=\\\"m6.5.5v11\\\"/><path d=\\\"m.5 14.5h12\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m11.5 8.5-3.978 4-4.022-4\\\"/><path d=\\\"m7.522.521v11.979\\\"/><path d=\\\"m.5 9v4.5c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-4.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m3.22943808 4.22919114c3.26440562-3.78890403 6.68792626-5.03196774 10.27056192-3.72919114-3.55184544.64579008-6.00894821 2.85549827-7.37130831 6.62912456l2.37130831 2.37087544h-8v-8z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 6)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m4.5 7.5h12\\\"/><path d=\\\"m4.498 10.5h11.997\\\"/><path d=\\\"m4.5 13.5h11.995\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"8\\\"/><path d=\\\"m6.5 8.5h8\\\"/><path d=\\\"m6.5 10.5h8\\\"/><path d=\\\"m6.5 12.5h8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\"><path d=\\\"m7 5h2v2h-2z\\\"/><path d=\\\"m12 5h2v2h-2z\\\"/><path d=\\\"m7 9h2v2h-2z\\\"/><path d=\\\"m12 9h2v2h-2z\\\"/><path d=\\\"m7 13h2v2h-2z\\\"/><path d=\\\"m12 13h2v2h-2z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m16.5 10.5v-8c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v8c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m4.5 4.50345827h-2c-1.1045695 0-2 .8954305-2 2v7.99654173c0 1.1045695.8954305 2 2 2h.00345528l8.00000002-.0138241c1.1032187-.001906 1.9965447-.8967767 1.9965447-1.9999971v-1.9827205\\\"/><path d=\\\"m10.5 3.5v6\\\"/><path d=\\\"m10.5 3.5v6\\\" transform=\\\"matrix(0 1 -1 0 17 -4)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m12.5 14.5v-8c0-1.1045695-.8954305-2-2-2h-8c-1.1045695 0-2 .8954305-2 2v8c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m12.5 12.5h2c1.1045695 0 2-.8954305 2-2v-7.99654173c0-1.1045695-.8954305-2-2-2-.0011518 0-.0023035 0-.0034553 0l-7.99999998.01382415c-1.10321873.00190597-1.99654472.89677664-1.99654472 1.99999701v1.98272057\\\"/><path d=\\\"m6.5 7.5v6\\\"/><path d=\\\"m6.5 7.5v6\\\" transform=\\\"matrix(0 1 -1 0 17 4)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m6.5 10.5 3-3-3-3\\\"/><path d=\\\"m5 3v9\\\" transform=\\\"matrix(0 1 -1 0 12.5 2.5)\\\"/><path d=\\\"m1.5 5.5v-3.0079176c0-1.10147263.89060277-1.99561512 1.99206673-1.99998427l7.95228497-.03160773c1.1045608-.00432011 2.0035361.8875515 2.0079175 1.99211231l.0398162 10.02918369c.0043323 1.1045608-.8875404 2.003535-1.9921012 2.0079309-.0026436 0-.0052873 0-.0079309 0h-7.9920533c-1.1045695 0-2-.8954305-2-2v-2.9897173\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4.5 3.508)\\\"><path d=\\\"m7 10.027-3-3.035 3-3\\\"/><path d=\\\"m9 1.992v10\\\" transform=\\\"matrix(0 1 -1 0 15.992 -2.008)\\\"/><path d=\\\"m12 4.9918869v-2.95924861c0-1.10138928-.890473-1.99549696-1.9918531-1.99998341l-8.00000001-.03267133c-1.10456034-.0044159-2.00363089.88735968-2.00814689 1.99192002v.00814689 9.99183644c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2v-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 4)\\\"><path d=\\\"m13.5 12.5v-6c0-1.1045695-.8954305-2-2-2h-9c-1.1045695 0-2 .8954305-2 2v6c0 1.1045695.8954305 2 2 2h9c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m15.5 12.5v-6.99481259c0-1.65685425-1.3431458-3-3-3-.0017276 0-.0034553 0-.0051829 0l-8.9948171.01554432\\\"/><path d=\\\"m17.5 10.5v-5.99308345c0-2.209139-1.790861-4-4-4-.0023035 0-.004607 0-.0069106 0l-7.9930894.01381519\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 1 18 3)\\\"><path d=\\\"m10.595 10.5 2.905-3-2.905-3\\\"/><path d=\\\"m13.5 7.5h-9\\\"/><path d=\\\"m10.5.5-8 .00224609c-1.1043501.00087167-1.9994384.89621131-2 2.00056153v9.99438478c.0005616 1.1043502.8956499 1.9996898 2 2.0005615l8 .0022461\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m10.595 10.5 2.905-3-2.905-3\\\"/><path d=\\\"m13.5 7.5h-9\\\"/><path d=\\\"m10.5.5-8 .00224609c-1.1043501.00087167-1.9994384.89621131-2 2.00056153v9.99438478c0 1.1045695.8954305 2 2 2h8.0954792\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m16.5 5.5v-5h-5\\\"/><path d=\\\"m16.5.5-6 5.929\\\"/><path d=\\\"m5.5 16.5-5 .023v-5.023\\\"/><path d=\\\"m6.5 10.5-6 6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 1)\\\"><path d=\\\"m16.51.51h-16.02\\\"/><path d=\\\"m16.51 18.51h-16.02\\\"/><path d=\\\"m6.503 18.525 4-4-4-4.015\\\" transform=\\\"matrix(0 1 -1 0 23.021 6.015)\\\"/><path d=\\\"m10.503 8.525-4-4 4-4.015\\\" transform=\\\"matrix(0 1 -1 0 13.021 -3.985)\\\"/><path d=\\\"m8.51 16.51v-14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 2)\\\"><path d=\\\"m.5.5v16.021\\\"/><path d=\\\"m18.5.5v16.021\\\"/><path d=\\\"m12.507 12.515 4-4-4-4.015\\\"/><path d=\\\"m6.507 12.515-4-4 4-4.015\\\"/><path d=\\\"m16.5 8.5h-14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m15.5.5v5h-5\\\" transform=\\\"matrix(1 0 0 -1 0 6)\\\"/><path d=\\\"m12-.95v9.9\\\" transform=\\\"matrix(.70710678 .70710678 -.70710678 .70710678 6.343146 -7.313708)\\\"/><path d=\\\"m7.5.5h-5c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h11c1.1045695 0 2-.8954305 2-2v-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m8.5 11c3.1296136 0 5.9629469-1.83333333 8.5-5.5-2.5370531-3.66666667-5.3703864-5.5-8.5-5.5-3.12961358 0-5.96294692 1.83333333-8.5 5.5 2.53705308 3.66666667 5.37038642 5.5 8.5 5.5z\\\"/><path d=\\\"m8.5 2c.18463928 0 .36593924.01429736.54285316.04184538-.02850842.148891-.04285316.30184762-.04285316.45815462 0 1.38071187 1.1192881 2.5 2.5 2.5.156307 0 .3092636-.01434474.4576252-.04178957.0280774.17585033.0423748.35715029.0423748.54178957 0 1.93299662-1.5670034 3.5-3.5 3.5-1.93299662 0-3.5-1.56700338-3.5-3.5s1.56700338-3.5 3.5-3.5z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 10)\\\"><path d=\\\"m0 .5c2.53705308 3.66666667 5.37038642 5.5 8.5 5.5 3.1296136 0 5.9629469-1.83333333 8.5-5.5\\\"/><path d=\\\"m2.5 3.423-2 2.077\\\"/><path d=\\\"m14.5 3.423 2 2.077\\\"/><path d=\\\"m10.5 6 1 2.5\\\"/><path d=\\\"m6.5 6-1 2.5\\\"/></g></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"M4.21098664 2.25927021C2.72674608 3.17424129 1.32308387 4.58781789 0 6.5 2.53705308 10.1666667 5.37038642 12 8.5 12 9.9230893 12 11.2849174 11.6209257 12.5854843 10.8627772M14.173426 9.72269094C15.1532781 8.88149971 16.0954695 7.8072694 17 6.5 14.4629469 2.83333333 11.6296136 1 8.5 1 7.66950473 1 6.85987336 1.1291024 6.0711059 1.38730721\\\"/><line x1=\\\"2\\\" x2=\\\"15\\\" y2=\\\"13.071\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"6\\\" cy=\\\"6\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><circle cx=\\\"11\\\" cy=\\\"6\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><path d=\\\"m4.5 10.5c.66628011 2 1.99961344 3 4 3 2.0003866 0 3.3337199-1 4-3z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"6\\\" cy=\\\"6\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><circle cx=\\\"11\\\" cy=\\\"6\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><path d=\\\"m5.5 9.5c.60286458 1.3333333 1.60286458 2 3 2s2.3971354-.6666667 3-2\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"6\\\" cy=\\\"6\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><circle cx=\\\"11\\\" cy=\\\"6\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><path d=\\\"m5.5 10.5h6\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(1 0 0 -1 0 21)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m8.5 16.5c4.418278 0 8-3.581722 8-8s-3.581722-8-8-8-8 3.581722-8 8 3.581722 8 8 8z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"6\\\" cy=\\\"6\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><circle cx=\\\"11\\\" cy=\\\"6\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><path d=\\\"m5.5 11.5c.60286458-1.3333333 1.60286458-2 3-2s2.3971354.6666667 3 2\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 2)\\\"><path d=\\\"m4.5 1.5h-2.00245461c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8.00000001c1.1043778-.000491 1.9997288-.8956223 2.0004909-2l.0019637-8-4-4\\\"/><path d=\\\"m9.5 8.586-3 2.914-3-2.914\\\"/><path d=\\\"m6.5.5v11\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m8.5 14.5h2c1.1045695 0 2-.8954305 2-2v-8l-4-4h-6c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h2\\\"/><path d=\\\"m3.5 7.5 3-3 3 3\\\"/><path d=\\\"m6.5 4.5v11\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m14.5 12.5v-7l-5-5h-5c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m8.5 4.5v4h3\\\"/><path d=\\\"m2.5 2.5c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m14.5 12.5v-7l-5-5h-5c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m.5 2.5v10c0 2.209139 1.790861 4 4 4h8m-3-16v3c0 1.1045695.8954305 2 2 2h3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m14.5 12.5v-7l-5-5h-5c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m9.5.5v3c0 1.1045695.8954305 2 2 2h3m-12-3c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m2.49999919.50000565h10.00000001c1.1045695 0 2 .8954305 2 2v8.00000005c0 1.1045695-.8954305 2-2 2h-10.00000001c-1.1045695 0-2-.8954305-2-2v-8.00000005c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m3.5.5v12\\\"/><path d=\\\"m11.5.5v12\\\"/><path d=\\\"m11.5 3.5h3\\\"/><path d=\\\"m11.5 9.5h3\\\"/><path d=\\\"m.5 3.5h3\\\"/><path d=\\\"m.5 6.5h14\\\"/><path d=\\\"m.5 9.5h3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m4.5 7.5h12\\\"/><path d=\\\"m6.5 10.5h8\\\"/><path d=\\\"m8.5 13.5h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"8\\\"/><path d=\\\"m6.5 8.5h8\\\"/><path d=\\\"m8.5 10.5h4\\\"/><path d=\\\"m9.5 12.5h2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m10.5 8v-5.5\\\"/><path d=\\\"m10.5 18.5v-5.5\\\"/><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"2.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m4.5 0c.55228475 0 1 .44771525 1 1v2c0 .55228475-.44771525 1-1 1s-1-.44771525-1-1v-2c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m16.5 2h-11\\\"/><path d=\\\"m3.5 2h-3\\\"/><path d=\\\"m4.5 10c.55228475 0 1 .4477153 1 1v2c0 .5522847-.44771525 1-1 1s-1-.4477153-1-1v-2c0-.5522847.44771525-1 1-1z\\\"/><path d=\\\"m16.5 12h-11\\\"/><path d=\\\"m3.5 12h-3\\\"/><path d=\\\"m12.5 5c.5522847 0 1 .44771525 1 1v2c0 .55228475-.4477153 1-1 1s-1-.44771525-1-1v-2c0-.55228475.4477153-1 1-1z\\\"/><path d=\\\"m11.5 7h-11\\\"/><path d=\\\"m16.5 7h-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4.5 2.5)\\\"><path d=\\\"m12 10.03c0 2.7448552-1.2554932 5.97-6 5.97-.75780542 0-1.42660143-.0822778-2.01548904-.2317346m-1.76100565-.7815476c-1.68909404-1.1706539-2.22350531-3.1659055-2.22350531-4.9567178v-4.03c0-1.56622031.65466451-2.97953554 1.70527792-3.98123005m1.67130335-1.35397567c.77973587-.42395337 1.6734516-.66479428 2.62341873-.66479428 1.75280799 0 3.49283909.72275393 4.5 2m1.2058722 1.22085393c.1906672.55804827.2941278 1.15651492.2941278 1.77914607 0-.66666667 0 .33333333 0 3\\\"/><path d=\\\"m6 14c-1.33333333-.6666667-2-1.6566667-2-2.97v-5.03c0-1.1045695.8954305-2 2-2s2 .8954305 2 2v4.03c0 .6666667.33333333 1 1 1s1-.3333333 1-1v-4.46441832c0-.45607794-.10398763-.90615253-.30405487-1.31600639-.73207609-1.49971686-1.9640578-2.24957529-3.69594513-2.24957529-1.73187932 0-2.96385765.7498515-3.69593498 2.2495545-.20007634.40985541-.30406502.85993519-.30406502 1.31601852v5.43442698c0 1 .16666667 1.6666667.5 2\\\"/><path d=\\\"m6 6v4.03c0 1.98 1 2.97 3 2.97\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 4)\\\"><path d=\\\"m.5 13.5v-11\\\"/><path d=\\\"m.5 2.5c.66666667-1.33333333 1.66666667-2 3-2 2 0 2 2 4 2 1.33333333 0 2.33333333-.33333333 3-1v6c-.66666667.66666667-1.66666667 1-3 1-2 0-2-2-4-2-1.33333333 0-2.33333333.66666667-3 2z\\\"/></g></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\">\\n <g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 3)\\\">\\n <path d=\\\"M5.5,16 C8.53756612,16 11,13.5714286 11,9.28571429 C11,6.42857143 9.16666667,3.33333333 5.5,0 C1.83333333,3.33333333 0,6.42857143 0,9.28571429 C0,13.5714286 2.46243388,16 5.5,16 Z\\\"/>\\n <path d=\\\"M5.5,16 C7.01878306,16 8.25,14.7857143 8.25,12.6428571 C8.25,11.2142857 7.33333333,9.66666667 5.5,8 C3.66666667,9.66666667 2.75,11.2142857 2.75,12.6428571 C2.75,14.7857143 3.98121694,16 5.5,16 Z\\\"/>\\n </g>\\n</svg>\\n\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m5.5 0c3.66666667 3.33333333 5.5 6.42857143 5.5 9.28571429 0 3.07807311-1.27021139 5.19816551-3.11142285 6.14857691.23027671-.4916139.36142285-1.0920694.36142285-1.7914341 0-1.4285714-.91666667-2.9761904-2.75-4.6428571-1.83333333 1.6666667-2.75 3.2142857-2.75 4.6428571 0 .6993647.13114614 1.2998202.36063321 1.7914341-1.84042182-.9504114-3.11063321-3.0705038-3.11063321-6.14857691 0-2.85714286 1.83333333-5.95238096 5.5-9.28571429z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m15.6893661 13.7425356.5-2c.1339487-.5357949-.191812-1.0787294-.7276069-1.2126781-.0793206-.0198302-.1607738-.0298575-.2425356-.0298575h-13.43844719c-.55228475 0-1 .4477153-1 1 0 .0817618.01002735.163215.0298575.2425356l.5 2c.11129175.445167.51127485.7574644.9701425.7574644h12.43844719c.4588676 0 .8588507-.3122974.9701425-.7574644zm-.1893661-5.2425356.5606576-1.68197288c.1746478-.52394332-.1085122-1.09026329-.6324555-1.26491107-.1023789-.03412629-.2096068-.05145569-.3175235-.0513167l-13.22209729.01713315c-.55228428.00071562-.99941904.44901061-.99870428 1.0012949 0 .10774719.01769263.21476369.05197848.31691043l.55814449 1.66286217m14-5 .3059335-1.83560101c.0907951-.54477032-.2772246-1.05999786-.8219949-1.15079291-.0543315-.00905524-.1093182-.01360608-.164399-.01360608h-12.63907918c-.55228475 0-1 .44771525-1 1 0 .05508086.00455084.11006756.01360608.16439899l.3059335 1.83560101\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 4)\\\"><path d=\\\"m2.5.5h7l3 3v7c0 1.1045695-.8954305 2-2 2h-8c-1.1045695 0-2-.8954305-2-2v-8c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m4.50000081 8.5h4c.55228475 0 1 .44771525 1 1v3h-6v-3c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m3.5 3.5h2v2h-2z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m.5 1.5v9c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-6.00280762c.000802-1.1045695-.8946285-2-1.999198-2-.0002674 0-.0005348.00000006-.0008018.00080218l-5.0000002.00200544-2-2h-4c-.55228475 0-1 .44771525-1 1z\\\"/><path d=\\\"m5.5 7.5h4\\\"/><path d=\\\"m7.5 9.556v-4.056\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m.5 1.5v9c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-6.00280762c.0007656-1.05436179-.8150774-1.91816512-1.8499357-1.99451426l-.1500643-.00468356-5 .00200544-2-2h-4c-.55228475 0-1 .44771525-1 1z\\\"/><path d=\\\"m.5 2.5h7\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m.5 1.5v9c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-6.00280762c.0007656-1.05436179-.8150774-1.91816512-1.8499357-1.99451426l-.1500643-.00468356-5 .00200544-2-2h-4c-.55228475 0-1 .44771525-1 1z\\\"/><path d=\\\"m5.5 7.5h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m15.5 4.5c.000802-1.10737712-.8946285-2.00280762-1.999198-2.00280762l-5.000802.00280762-2-2h-4c-.55228475 0-1 .44771525-1 1v.99719238 2.00280762\\\"/><path d=\\\"m.81056316 5.74177845 1.31072322 5.24326075c.22257179.8903496 1.02254541 1.5149608 1.94029301 1.5149608h8.87667761c.9177969 0 1.7178001-.6246768 1.9403251-1.5150889l1.3108108-5.24508337c.1339045-.53580596-.1919011-1.07871356-.727707-1.21261805-.079341-.0198283-.1608148-.02983749-.2425959-.02983749l-13.43852073.00188666c-.55228474.00007754-.99985959.44785564-.99985959 1.00014038 0 .08170931.01003737.16310922.02985348.24237922z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m12.5.5 3 3-3 3\\\"/><path d=\\\"m15.5 3.5h-5l-4 5.086\\\"/><path d=\\\"m12.5 9.5 3 3-3 3\\\"/><path d=\\\"m15.5 12.5h-5l-4-4h-6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m10.604816 3.36827202c-5.18469775-.47094658-8.51890831 1.5289737-9.99999995 6 2.82481024-3.14044041 6.34158531-3.71816233 9.99999995-2v2.99999998l5-4.99999998-5-5z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1.895 4.132)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m6.5 4v14\\\"/><path d=\\\"m14.5 4v14\\\"/><path d=\\\"m3.5 7h14\\\"/><path d=\\\"m3.5 15h14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m16.5 5.5v-4.978l-5.5.014\\\"/><path d=\\\"m16.5.522-6 5.907\\\"/><path d=\\\"m11 16.521 5.5.002-.013-5.5\\\"/><path d=\\\"m16.5 16.429-6-5.907\\\"/><path d=\\\"m.5 5.5v-5h5.5\\\"/><path d=\\\"m6.5 6.429-6-5.907\\\"/><path d=\\\"m6 16.516-5.5.007v-5.023\\\"/><path d=\\\"m6.5 10.5-6 6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m.5.5h12l-4 7v3l-3 3v-6z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 4)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m14 14c1.4477153-1.4477153 2.5-3.290861 2.5-5.5 0-4.418278-3.581722-8-8-8s-8 3.581722-8 8c0 2.209139 1.05228475 4.0522847 2.5 5.5\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m8.5 8.5-4-4\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" fill=\\\"currentColor\\\" r=\\\"1.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m1.5 6.5h12v5c0 1.1045695-.8954305 2-2 2h-8c-1.1045695 0-2-.8954305-2-2z\\\"/><path d=\\\"m7.5 3.5v10\\\"/><path d=\\\"m4.5 3.5h3v-2c0-1.5-2.21895142-1.78104858-3-1s-.78104858 2.21895142 0 3zm6 0h-3v-2c0-1.5 2.21895142-1.78104858 3-1 .7810486.78104858.7810486 2.21895142 0 3zm-9 0h12c.5522847 0 1 .44771525 1 1v1c0 .55228475-.4477153 1-1 1h-12c-.55228475 0-1-.44771525-1-1v-1c0-.55228475.44771525-1 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m8 16c4.4380025 0 8-3.5262833 8-7.96428571 0-4.43800246-3.5619975-8.03571429-8-8.03571429-4.43800245 0-8 3.59771183-8 8.03571429 0 4.43800241 3.56199755 7.96428571 8 7.96428571z\\\"/><path d=\\\"m1 5h14\\\"/><path d=\\\"m1 11h14\\\"/><path d=\\\"m8 16c2.2190012 0 4-3.5262833 4-7.96428571 0-4.43800246-1.7809988-8.03571429-4-8.03571429-2.21900123 0-4 3.59771183-4 8.03571429 0 4.43800241 1.78099877 7.96428571 4 7.96428571z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m8.5 14.5c3.3285018 0 6-2.6447124 6-5.97321429 0-3.32850184-2.6714982-6.02678571-6-6.02678571-3.32850184 0-6 2.69828387-6 6.02678571 0 3.32850189 2.67149816 5.97321429 6 5.97321429z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" fill=\\\"currentColor\\\" r=\\\"3.5\\\"/><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m.5 8.5h2\\\"/><path d=\\\"m14.5 8.5h2\\\"/><path d=\\\"m7.5 1.5h2\\\" transform=\\\"matrix(0 1 -1 0 10 -7)\\\"/><path d=\\\"m7.5 15.5h2\\\" transform=\\\"matrix(0 1 -1 0 24 7)\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 6)\\\"><path d=\\\"m2.35073766 3.50548574.14926234-.00548574v-1c0-.55228475.44771525-1 1-1s1 .44771525 1 1v-1c0-.55228475.44771525-1 1-1s1 .44771525 1 1v1c0-.55228475.44771525-1 1-1s1 .44771525 1 1v1c0-.55228475.44771525-1 1-1 .5522847 0 1 .44771525 1 1v4c0 2.7614237-2.23857625 5-5 5h-.5c-2.48528137 0-4.5-2.0147186-4.5-4.5v-2.5c0-1.0543618.81587779-1.91816512 1.85073766-1.99451426z\\\"/><path d=\\\"m2.5 2.5v3\\\"/><path d=\\\"m4.5 1.5v2\\\"/><path d=\\\"m6.5 1.5v2\\\"/><path d=\\\"m8.5 2.5v2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m.5.5v12c0 1.1045695.8954305 2 2 2h11.5\\\"/><path d=\\\"m3.5 8.5v3\\\"/><path d=\\\"m7.5 5.5v6\\\"/><path d=\\\"m11.5 2.5v9\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m4.5 11.435v-7.935\\\"/><path d=\\\"m7.5 11.485v-3.985\\\"/><path d=\\\"m10.5 11.5v-6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m.5.5v11c0 1.1045695.8954305 2 2 2h11\\\"/><path d=\\\"m2.5 9.5 3-3 2 2 5-5\\\"/><path d=\\\"m12.5 6.5v-3h-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m9.5.5h4c.5522847 0 1 .44771525 1 1v4c0 .55228475-.4477153 1-1 1h-4c-.55228475 0-1-.44771525-1-1v-4c0-.55228475.44771525-1 1-1zm-8 0h4c.55228475 0 1 .44771525 1 1v4c0 .55228475-.44771525 1-1 1h-4c-.55228475 0-1-.44771525-1-1v-4c0-.55228475.44771525-1 1-1zm8 8h4c.5522847 0 1 .44771525 1 1v4c0 .5522847-.4477153 1-1 1h-4c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1zm-8 0h4c.55228475 0 1 .44771525 1 1v4c0 .5522847-.44771525 1-1 1h-4c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"7.5\\\" cy=\\\"7.5\\\" r=\\\"2\\\"/><circle cx=\\\"13.5\\\" cy=\\\"7.5\\\" r=\\\"2\\\"/><circle cx=\\\"7.5\\\" cy=\\\"13.5\\\" r=\\\"2\\\"/><circle cx=\\\"13.5\\\" cy=\\\"13.5\\\" r=\\\"2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"13.5\\\" cy=\\\"7.5\\\" r=\\\"2\\\"/><circle cx=\\\"7.5\\\" cy=\\\"7.5\\\" r=\\\"2\\\"/><circle cx=\\\"7.5\\\" cy=\\\"13.5\\\" r=\\\"2\\\"/><path d=\\\"m13.5 11.5v4\\\"/><path d=\\\"m15.5 13.5h-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m5 4h1c.55228475 0 1 .44771525 1 1v1c0 .55228475-.44771525 1-1 1h-1c-.55228475 0-1-.44771525-1-1v-1c0-.55228475.44771525-1 1-1zm0-4h1c.55228475 0 1 .44771525 1 1v1c0 .55228475-.44771525 1-1 1h-1c-.55228475 0-1-.44771525-1-1v-1c0-.55228475.44771525-1 1-1zm4 4h1c.5522847 0 1 .44771525 1 1v1c0 .55228475-.4477153 1-1 1h-1c-.55228475 0-1-.44771525-1-1v-1c0-.55228475.44771525-1 1-1zm0-4h1c.5522847 0 1 .44771525 1 1v1c0 .55228475-.4477153 1-1 1h-1c-.55228475 0-1-.44771525-1-1v-1c0-.55228475.44771525-1 1-1zm0 8h1c.5522847 0 1 .44771525 1 1v1c0 .5522847-.4477153 1-1 1h-1c-.55228475 0-1-.4477153-1-1v-1c0-.55228475.44771525-1 1-1zm-4 0h1c.55228475 0 1 .44771525 1 1v1c0 .5522847-.44771525 1-1 1h-1c-.55228475 0-1-.4477153-1-1v-1c0-.55228475.44771525-1 1-1zm-4-4h1c.55228475 0 1 .44771525 1 1v1c0 .55228475-.44771525 1-1 1h-1c-.55228475 0-1-.44771525-1-1v-1c0-.55228475.44771525-1 1-1zm0-4h1c.55228475 0 1 .44771525 1 1v1c0 .55228475-.44771525 1-1 1h-1c-.55228475 0-1-.44771525-1-1v-1c0-.55228475.44771525-1 1-1zm0 8h1c.55228475 0 1 .44771525 1 1v1c0 .5522847-.44771525 1-1 1h-1c-.55228475 0-1-.4477153-1-1v-1c0-.55228475.44771525-1 1-1z\\\" fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(5 5)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m3.49859901.50058486-2 .00245141c-.55180573.00067635-.9987743.4481931-.9987743.99999924v1.99673096c0 .51283584.38604019.93550716.88337888.99327227l.11784682.00672698 2-.00245141c.55180573-.00067635.9987743-.4481931.9987743-.99999925v-1.9967302c0-.51283659-.38604019-.93550791-.88337887-.99327302zm6 0-2 .00245141c-.55180573.00067635-.9987743.4481931-.9987743.99999924v1.99673096c0 .51283584.38604019.93550716.88337888.99327227l.11784682.00672698 2-.00245141c.55180569-.00067635.99877429-.4481931.99877429-.99999925v-1.9967302c0-.51283659-.3860402-.93550791-.88337886-.99327302zm-6 6-2 .00245141c-.55180573.00067635-.9987743.4481931-.9987743.99999924v1.99673096c0 .51283583.38604019.93550713.88337888.99327223l.11784682.006727 2-.0024514c.55180573-.0006763.9987743-.4481931.9987743-.99999924v-1.9967302c0-.51283659-.38604019-.93550791-.88337887-.99327302zm6 0-2 .00245141c-.55180573.00067635-.9987743.4481931-.9987743.99999924v1.99673096c0 .51283583.38604019.93550713.88337888.99327223l.11784682.006727 2-.0024514c.55180569-.0006763.99877429-.4481931.99877429-.99999924v-1.9967302c0-.51283659-.3860402-.93550791-.88337886-.99327302z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 5)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 5)\\\"><path d=\\\"m3.49859901.50058486-2 .00245141c-.55180573.00067635-.9987743.4481931-.9987743.99999924v1.99673096c0 .51283584.38604019.93550716.88337888.99327227l.11784682.00672698 2-.00245141c.55180573-.00067635.9987743-.4481931.9987743-.99999925v-1.9967302c0-.51283659-.38604019-.93550791-.88337887-.99327302zm6 0-2 .00245141c-.55180573.00067635-.9987743.4481931-.9987743.99999924v1.99673096c0 .51283584.38604019.93550716.88337888.99327227l.11784682.00672698 2-.00245141c.55180569-.00067635.99877429-.4481931.99877429-.99999925v-1.9967302c0-.51283659-.3860402-.93550791-.88337886-.99327302zm-6 6-2 .00245141c-.55180573.00067635-.9987743.4481931-.9987743.99999924v1.99673096c0 .51283583.38604019.93550713.88337888.99327223l.11784682.006727 2-.0024514c.55180573-.0006763.9987743-.4481931.9987743-.99999924v-1.9967302c0-.51283659-.38604019-.93550791-.88337887-.99327302z\\\"/><path d=\\\"m8.5 6.5v4\\\"/><path d=\\\"m10.5 8.5h-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m1.25 6.25c.72440521-.14488104 1.44906675.24766687 1.72343208.93358019l.52656792 1.31641981v-6c0-.55228475.44771525-1 1-1s1 .44771525 1 1v-1.5c0-.55228475.44771525-1 1-1s1 .44771525 1 1v1c0-.55228475.44771525-1 1-1s1 .44771525 1 1v1.5c0-.55228475.44771525-1 1-1 .5522847 0 1 .44771525 1 1v8c0 2.209139-1.790861 4-4 4-2.3508274 0-4.39998311-1.5999324-4.9701425-3.88057l-.0298575-.11943-1.92991229-3.85982457c-.24048169-.48096339-.04553276-1.06581018.43543063-1.30629188.07740388-.03870194.15962204-.06691163.24448166-.08388355z\\\"/><path d=\\\"m5.5 1.5v6\\\"/><path d=\\\"m7.5 1.5v5\\\"/><path d=\\\"m9.5 3.5v4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"matrix(0 -1 1 0 2 18)\\\"><path d=\\\"m2.5.5h4l5.7878386 2.48050226c.7353677.31515758 1.2121614 1.03823384 1.2121614 1.83829006v7.36241538c0 .8000562-.4767937 1.5231325-1.2121614 1.83829l-5.7878386 2.4805023h-4c-1.1045695 0-2-.8954305-2-2v-12c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"4\\\" cy=\\\"3\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/><path d=\\\"m6.5 1v15\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m13.5 5.5-2 10\\\"/><path d=\\\"m9.5 5.5-2 10\\\"/><path d=\\\"m6.5 8.5h9\\\"/><path d=\\\"m5.5 12.5h9\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m7.24264069 2.24264069c.5-2.5 4.34314571-2.65685425 6.00000001-1 1.6034073 1.60340734 1.4999617 4.3343931 0 6l-6.00000001 6.00000001-6-6.00000001c-1.65685425-1.65685425-1.65685425-4.34314575 0-6 1.54996042-1.54996043 5.5-1.5 6 1z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.257 4.257)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m0 6.5h2l2.5-6 2 12 3-9 2.095 6 1.405-3h2\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.257 3.257)\\\"><path d=\\\"m10.6718483 10.813433c-.6501741.6501742-1.80095146 1.8009515-3.42920761 3.4292077l-6-6.00000001c-1.65685425-1.65685425-1.65685425-4.34314575 0-6 .16405182-.16405183.35499091-.3101803.56588065-.4373774m2.45362752-.60559794c1.38818727.03475311 2.70563079.66867016 2.98049183 2.04297534.5-2.5 4.34314571-2.65685425 6.00000001-1 1.6034073 1.60340734 1.4999617 4.3343931 0 6-.4165558.41655583-.7289727.7289727-.9372506.93725061\\\"/><path d=\\\"m.743.743 13 13.071\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6.314 1.314)\\\"><path d=\\\"m8.205 4.183-4-4-4.015 4\\\"/><path d=\\\"m8.205 14.183-4 4-4.015-4\\\"/><path d=\\\"m4.19.19v18\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m5.5.5h6v5h-6z\\\"/><path d=\\\"m10.5 11.5h6v5h-6z\\\"/><path d=\\\"m.5 11.5h6v5h-6z\\\"/><path d=\\\"m3.498 11.5v-3h10v3\\\"/><path d=\\\"m8.5 8.5v-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 1)\\\"><path d=\\\"m.5 9.5 9-9 9 9\\\"/><path d=\\\"m2.5 7.5v7c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-7\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 1)\\\"><path d=\\\"m.5 9.5 9-9 9 9\\\"/><path d=\\\"m2.5 10.5v4c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 1)\\\"><path d=\\\"m.5 9.5 9-9 9 9\\\"/><path d=\\\"m2.5 7.5v7c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-7\\\"/><path d=\\\"m6.5 10.5 2 2 4-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 1)\\\"><path d=\\\"m.5 9.5 9-9 9 9\\\"/><path d=\\\"m2.5 7.5v8c0 .5522847.44771525 1 1 1h3c.55228475 0 1-.4477153 1-1v-4c0-.5522847.44771525-1 1-1h2c.5522847 0 1 .4477153 1 1v4c0 .5522847.4477153 1 1 1h3c.5522847 0 1-.4477153 1-1v-8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m6.5.5h-4c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-10\\\"/><path d=\\\"m10.5 7.5-3 3-3-3\\\"/><path d=\\\"m14.5.5h-4c-1.65685425 0-3 1.34314575-3 3v7\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2.5 4.5)\\\"><path d=\\\"m3.65939616 0h8.68120764c.4000282 0 .7615663.23839685.9191451.6060807l2.7402511 6.3939193v4c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-4l2.74025113-6.3939193c.15757879-.36768385.51911692-.6060807.91914503-.6060807z\\\"/><path d=\\\"m0 7h4c.55228475 0 1 .44771525 1 1v1c0 .55228475.44771525 1 1 1h4c.5522847 0 1-.44771525 1-1v-1c0-.55228475.4477153-1 1-1h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2.5 1.5)\\\"><path d=\\\"m10 3h2.3406038c.4000282 0 .7615663.23839685.9191451.6060807l2.7402511 6.3939193v4c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-4l2.74025113-6.3939193c.15757879-.36768385.51911692-.6060807.91914503-.6060807h2.34060384\\\"/><path d=\\\"m11 6.086-3 2.914-3-2.914\\\"/><path d=\\\"m8 0v9\\\"/><path d=\\\"m0 10h4c.55228475 0 1 .4477153 1 1v1c0 .5522847.44771525 1 1 1h4c.5522847 0 1-.4477153 1-1v-1c0-.5522847.4477153-1 1-1h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m8.5 12.5v-4h-1\\\"/><path d=\\\"m7.5 12.5h2\\\"/></g><circle cx=\\\"8.5\\\" cy=\\\"5.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 5)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v6c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-6c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"11.5\\\" cy=\\\"5.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(5 3)\\\"><path d=\\\"m2.5.5h6c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-6c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"5.5\\\" cy=\\\"11.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.5 6.5)\\\"><path d=\\\"m14 8v-2c0-1.65685425-1.3431458-3-3-3h-8\\\"/><path d=\\\"m3 6-3.001-3 3.001-3\\\"/><path d=\\\"m6 6-3.001-3 3.001-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.5 6.5)\\\"><path d=\\\"m0 8v-2c0-1.65685425 1.34314575-3 3-3h8\\\"/><path d=\\\"m7.999 6 3.001-3-3.001-3\\\"/><path d=\\\"m10.999 6 3.001-3-3.001-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4.5 6.5)\\\"><path d=\\\"m11 8v-2c0-1.65685425-1.34314575-3-3-3h-8\\\"/><path d=\\\"m3 6-3.001-3 3.001-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5.5 6.5)\\\"><path d=\\\"m0 8v-2c0-1.65685425 1.34314575-3 3-3h8\\\"/><path d=\\\"m7.999 6 3.001-3-3.001-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(1 5)\\\"><path d=\\\"m18.5 8.5v-6c0-1.1045695-.8954305-2-2-2h-14c-1.1045695 0-2 .8954305-2 2v6c0 1.1045695.8954305 2 2 2h14c1.1045695 0 2-.8954305 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><g fill=\\\"currentColor\\\"><circle cx=\\\"3.5\\\" cy=\\\"2.5\\\" r=\\\"1\\\"/><circle cx=\\\"6.5\\\" cy=\\\"2.5\\\" r=\\\"1\\\"/><circle cx=\\\"9.5\\\" cy=\\\"2.5\\\" r=\\\"1\\\"/><circle cx=\\\"12.5\\\" cy=\\\"2.5\\\" r=\\\"1\\\"/><circle cx=\\\"15.5\\\" cy=\\\"2.5\\\" r=\\\"1\\\"/><circle cx=\\\"3.5\\\" cy=\\\"4.5\\\" r=\\\"1\\\"/><circle cx=\\\"6.5\\\" cy=\\\"4.5\\\" r=\\\"1\\\"/><circle cx=\\\"9.5\\\" cy=\\\"4.5\\\" r=\\\"1\\\"/><circle cx=\\\"12.5\\\" cy=\\\"4.5\\\" r=\\\"1\\\"/><circle cx=\\\"15.5\\\" cy=\\\"4.5\\\" r=\\\"1\\\"/><circle cx=\\\"3.5\\\" cy=\\\"6.5\\\" r=\\\"1\\\"/><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"1\\\"/><circle cx=\\\"9.5\\\" cy=\\\"6.5\\\" r=\\\"1\\\"/><circle cx=\\\"12.5\\\" cy=\\\"6.5\\\" r=\\\"1\\\"/><circle cx=\\\"15.5\\\" cy=\\\"6.5\\\" r=\\\"1\\\"/><circle cx=\\\"3.5\\\" cy=\\\"8.5\\\" r=\\\"1\\\"/><circle cx=\\\"15.5\\\" cy=\\\"8.5\\\" r=\\\"1\\\"/></g><path d=\\\"m6.5 8.5h6\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m2.5.48528137h11c.5522847 0 1 .44771525 1 1v8.01471863h-13v-8.01471863c0-.55228475.44771525-1 1-1zm-1.38196601 13.01471863h13.76393201c.5522848 0 1-.4477153 1-1 0-.1552451-.0361451-.3083582-.1055728-.4472136l-1.2763932-2.5527864h-13l-1.2763932 2.5527864c-.24698925.4939785-.0467649 1.0946515.44721359 1.3416408.13885544.0694277.2919685.1055728.4472136.1055728z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 5)\\\"><path d=\\\"m2.5 13.5h4\\\"/><path d=\\\"m4.5 0c2.48528137 0 4.5 2.01471863 4.5 4.5 0 1.76637512-1.01772197 3.29504854-2.49877863 4.03163297l-.00122137.96836703c0 1.1045695-.8954305 2-2 2s-2-.8954305-2-2l-.00021218-.96786527c-1.48160351-.73639182-2.49978782-2.26535843-2.49978782-4.03213473 0-2.48528137 2.01471863-4.5 4.5-4.5z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 1)\\\"><path d=\\\"m6.5 17.5h4\\\"/><path d=\\\"m8.5 4c2.4852814 0 4.5 2.01471863 4.5 4.5 0 1.7663751-1.017722 3.2950485-2.4987786 4.031633l-.0012214.968367c0 1.1045695-.8954305 2-2 2s-2-.8954305-2-2l-.00021218-.9678653c-1.48160351-.7363918-2.49978782-2.2653584-2.49978782-4.0321347 0-2.48528137 2.01471863-4.5 4.5-4.5z\\\"/><path d=\\\"m8.5 1.5v-1\\\"/><path d=\\\"m13.5 3.5 1-1\\\"/><path d=\\\"m2.5 3.5 1-1\\\" transform=\\\"matrix(-1 0 0 1 6 0)\\\"/><path d=\\\"m13.5 13.5 1-1\\\" transform=\\\"matrix(1 0 0 -1 0 26)\\\"/><path d=\\\"m2.5 13.5 1-1\\\" transform=\\\"matrix(-1 0 0 -1 6 26)\\\"/><path d=\\\"m1.5 7.5h-1\\\"/><path d=\\\"m16.5 7.5h-1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m6.5 7.5h4l-6 9v-6.997l-4-.003 6-9z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 2)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m5.5 6.5h5l-6 8.997v-5.997h-4l2-9h5z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 2)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\"><rect fill=\\\"currentColor\\\" height=\\\"2\\\" rx=\\\"1\\\" width=\\\"14\\\" x=\\\"3.5\\\" y=\\\"6.5\\\"/><path d=\\\"m3.5 11.5h14v1h-14z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m3.5 15.5h13.981\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 5)\\\"><path d=\\\"m5.5 2.5 1-1c1.1045695-1.1045695 2.8954305-1.1045695 4 0s1.1045695 2.8954305 0 4l-1 1m-3 3-1 1c-1.1045695 1.1045695-2.8954305 1.1045695-4 0s-1.1045695-2.8954305 0-4l1-1\\\"/><path d=\\\"m3.5 8.5 5-5\\\"/></g></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M1.38757706,5.69087183 C0.839076291,5.14050909 0.5,4.38129902 0.5,3.54289344 C0.5,1.8623496 1.8623496,0.5 3.542893,0.5 L8.457107,0.5 C10.1376504,0.5 11.5,1.86235004 11.5,3.54289344 C11.5,5.22343727 10.1376504,6.5 8.457107,6.5 L6,6.5\\\" transform=\\\"translate(3 6)\\\"/><path d=\\\"M4.38757706,8.69087183 C3.83907629,8.14050909 3.5,7.38129902 3.5,6.54289344 C3.5,4.8623496 4.8623496,3.5 6.542893,3.5 L11.457107,3.5 C13.1376504,3.5 14.5,4.86235004 14.5,6.54289344 C14.5,8.22343727 13.1376504,9.5 11.457107,9.5 L9,9.5\\\" transform=\\\"translate(3 6) rotate(-180 9 6.5)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m7.5 5.32842712 1-1c1.1045695-1.10456949 2.8954305-1.10456949 4 0 1.1045695 1.1045695 1.1045695 2.89543051 0 4l-1 1m-3.17157288 3.17157288-1 1c-1.10456949 1.1045695-2.8954305 1.1045695-4 0-1.10456949-1.1045695-1.10456949-2.8954305 0-4l1-1\\\"/><path d=\\\"m5.5 3.5v-3\\\"/><path d=\\\"m.5 5.5h3\\\"/><path d=\\\"m11.5 16.5v-3\\\"/><path d=\\\"m13.5 11.5h3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 6)\\\"><path d=\\\"m5.5 8.5c-.39387503 0-.0547637 0-1 0-2.209139 0-4-1.790861-4-4s1.790861-4 4-4h1m4 0h1c2.209139 0 4 1.790861 4 4s-1.790861 4-4 4c-.88888889 0-.55555556 0-1 0\\\"/><path d=\\\"m10.5 4.5h-6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 3)\\\"><path d=\\\"m8.5 9.5v1c0 2.209139-1.790861 4-4 4s-4-1.790861-4-4c0-.92155 0-.61385143 0-1m0-4c0-.44444444 0-.11111111 0-1 0-2.209139 1.790861-4 4-4s4 1.790861 4 4v1\\\"/><path d=\\\"m4.5 4.5v6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(4 5)\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m11.5 5.5h-7\\\"/><path d=\\\"m11.5 9.5h-7\\\"/><path d=\\\"m11.5 1.5h-7\\\"/></g><path d=\\\"m1.49884033 2.5c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm0 4c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm0 4c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 6)\\\"><path d=\\\"m.5.5h12\\\"/><path d=\\\"m.5 4.5h12\\\"/><path d=\\\"m.5 8.5h7\\\"/><path d=\\\"m9.5 8.5h4zm2 2v-4z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(4 5)\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m11.5 5.5h-7\\\"/><path d=\\\"m11.5 9.5h-7\\\"/><path d=\\\"m11.5 1.5h-7\\\"/></g><path d=\\\"m1.88 3v-2.172h-.037l-.68.459v-.617l.717-.488h.717v2.818z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m.89941406 5.06835938c0-.57226563.45117188-.96289063 1.109375-.96289063.65234375 0 1.04101563.35351563 1.04101563.8359375 0 .33398437-.1484375.5546875-.59765625.9609375l-.5546875.50195313v.03710937h1.18554687v.55859375h-2.14257812v-.47851562l1.0078125-.91210938c.34765625-.31835938.40625-.43945312.40625-.60546875 0-.1953125-.13671875-.35742187-.3828125-.35742187-.26171875 0-.41601563.17773437-.41601563.421875zm.71289063 4.73046874v-.484375h.36132812c.23828125 0 .39257813-.13867187.39257813-.34179687 0-.19140625-.14648438-.33203125-.38867188-.33203125-.25390625 0-.40820312.13476562-.41992187.36328125h-.65234375c.00976562-.54101563.4375-.8984375 1.10742187-.8984375.66015625 0 1.02148438.34570313 1.01953125.765625 0 .33984375-.21875.56445313-.52734375.63671875v.03710938c.40625.05664062.640625.30859374.640625.67968752 0 .5039062-.48046875.8515625-1.15820312.8515625-.66992188 0-1.125-.3613281-1.15039063-.9160157h.68359375c.00976563.2167969.18554688.3515626.45703125.3515626.26171875 0 .43945313-.1425782.43945313-.3554688 0-.22265625-.16796875-.35742188-.44335938-.35742188z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m10.5 3.5v2\\\"/><path d=\\\"m15.5 5.5-1.5 1.5\\\"/><path d=\\\"m5.5 5.5 1.5 1.5\\\"/><path d=\\\"m10.5 17.5v-2\\\"/><path d=\\\"m15.5 15.5-1.5-1.5\\\"/><path d=\\\"m5.5 15.5 1.5-1.5\\\"/><path d=\\\"m3.5 10.5h2\\\"/><path d=\\\"m15.5 10.5h2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 2)\\\"><path d=\\\"m6.5 16.5407715.6311176-.7118691c.71585099-.8191184 1.36011688-1.5983525 1.93279767-2.3377022l.4733382-.6239608c1.97516433-2.6615039 2.96274653-4.77276704 2.96274653-6.33378943 0-3.33218241-2.6862915-6.03344997-6-6.03344997s-6 2.70126756-6 6.03344997c0 1.56102239.98758218 3.67228553 2.96274653 6.33378943l.4733382.6239608c.73630387.9505925 1.5909423 1.9671163 2.56391527 3.0495713z\\\"/><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"2.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(4 1)\\\"><path d=\\\"m2.5 8.5-.00586729-1.99475098c-.00728549-4.00349935 1.32800361-6.00524902 4.00586729-6.00524902s4.0112203 2.00174967 4.0000699 6.00524902v1.99475098m-8.0000699 0h8.0225317c1.0543618 0 1.9181652.81587779 1.9945143 1.8507377l.0054778.1548972-.0169048 6c-.0031058 1.1023652-.8976224 1.9943651-1.999992 1.9943651h-8.005627c-1.1045695 0-2-.8954305-2-2v-6c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"6.5\\\" cy=\\\"13.5\\\" fill=\\\"currentColor\\\" r=\\\"1.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(4 1)\\\"><path d=\\\"m2.5 8.5-.00586729-1.99475098c-.00728549-4.00349935 1.32800361-6.00524902 4.00586729-6.00524902 2.19134421 0 3.6093703 1.31907891 4 4m-8 4h8.0225317c1.0543618 0 1.9181652.81587779 1.9945143 1.8507377l.0054778.1548972-.0169048 6c-.0031058 1.1023652-.8976224 1.9943651-1.999992 1.9943651h-8.005627c-1.1045695 0-2-.8954305-2-2v-6c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"6.5\\\" cy=\\\"13.5\\\" fill=\\\"currentColor\\\" r=\\\"1.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.5 4.5)\\\"><path d=\\\"m0 2v8c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-8c0-1.1045695-.8954305-2-2-2h-10c-1.1045695 0-2 .8954305-2 2z\\\"/><path d=\\\"m2 3 5 3 5-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2.5 3.5)\\\"><path d=\\\"m10 2h-8c-1.1045695 0-2 .8954305-2 2v7c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-5\\\"/><path d=\\\"m2 5 5 3 5-3\\\"/><path d=\\\"m14 0v4\\\"/><path d=\\\"m12 2h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.5 3.5)\\\"><path d=\\\"m6.00772212.56701593-5 2.85714286c-.62314999.35608571-1.00772212 1.01877259-1.00772212 1.73648628v6.83935493c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-6.83935493c0-.71771369-.3845721-1.38040057-1.0077221-1.73648628l-5.00000002-2.85714286c-.61486534-.35135162-1.36969042-.35135162-1.98455576 0z\\\"/><path d=\\\"m10 5-6 6\\\"/><path d=\\\"m4 5 6 6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2.5 4.5)\\\"><path d=\\\"m10 1h-8c-1.1045695 0-2 .8954305-2 2v7c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-7\\\"/><path d=\\\"m2 4 5 3 5-3\\\"/><path d=\\\"m12 1h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.5 3.5)\\\"><path d=\\\"m6.00772212.56701593-5 2.85714286c-.62314999.35608571-1.00772212 1.01877259-1.00772212 1.73648628v6.83935493c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-6.83935493c0-.71771369-.3845721-1.38040057-1.0077221-1.73648628l-5.00000002-2.85714286c-.61486534-.35135162-1.36969042-.35135162-1.98455576 0z\\\"/><path d=\\\"m7 5v6\\\"/><path d=\\\"m4 8h6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.5 2.5)\\\"><path d=\\\"m0 4.31879232v7.68120768c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-7.68120768c0-.80005622-.4767937-1.52313248-1.2121614-1.83829006l-5-2.14285715c-.50309759-.21561325-1.07257961-.21561325-1.5756772 0l-5 2.14285715c-.73536769.31515758-1.2121614 1.03823384-1.2121614 1.83829006z\\\"/><path d=\\\"m2 5 5 3 5-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3.5 3.5)\\\"><path d=\\\"m6.00772212.56701593-5 2.85714286c-.62314999.35608571-1.00772212 1.01877259-1.00772212 1.73648628v6.83935493c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-6.83935493c0-.71771369-.3845721-1.38040057-1.0077221-1.73648628l-5.00000002-2.85714286c-.61486534-.35135162-1.36969042-.35135162-1.98455576 0z\\\"/><path d=\\\"m4 8h6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m.5 3.5v-1c0-1.1045695.8954305-2 2-2h1m0 16h-1c-1.1045695 0-2-.8954305-2-2v-1m16-10v-1c0-1.1045695-.8954305-2-2-2h-1m0 16h1c1.1045695 0 2-.8954305 2-2v-1\\\"/><path d=\\\"m5.5.5h2\\\"/><path d=\\\"m9.5.5h2\\\"/><path d=\\\"m5.5 16.5h2\\\"/><path d=\\\"m9.5 16.5h2\\\"/><path d=\\\"m16.5 5.498v2.002\\\"/><path d=\\\"m16.5 9.498v2.002\\\"/><path d=\\\"m.5 5.498v2.002\\\"/><path d=\\\"m.5 9.498v2.002\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m16.5 14.5v-12c0-1.1045695-.8954305-2-2-2h-12c-1.1045695 0-2 .8954305-2 2v12c0 1.1045695.8954305 2 2 2h12c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m.5 12.5h10c1.1045695 0 2-.8954305 2-2v-10\\\"/><path d=\\\"m.5 8.5h7c.55228475 0 1-.44771525 1-1v-7\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m4.5 6.5h12\\\"/><path d=\\\"m4.498 10.5h11.997\\\"/><path d=\\\"m4.5 14.5h11.995\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"1\\\"/><circle cx=\\\"5.5\\\" cy=\\\"10.5\\\" r=\\\"1\\\"/><circle cx=\\\"15.5\\\" cy=\\\"10.5\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"1\\\"/><circle cx=\\\"10.5\\\" cy=\\\"5.5\\\" r=\\\"1\\\"/><circle cx=\\\"10.5\\\" cy=\\\"15.5\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m14.5.5c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2l-2.999-.001-2.29389322 2.2938932c-.36048396.360484-.92771502.3882135-1.32000622.0831886l-.09420734-.0831886-2.29389322-2.2938932-2.999.001c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m13.5 5.5h-6\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m4.49884033 6.5c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm0 4c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m13.5 9.5h-6\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m14.5.5c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2l-2.999-.001-2.29389322 2.2938932c-.36048396.360484-.92771502.3882135-1.32000622.0831886l-.09420734-.0831886-2.29389322-2.2938932-2.999.001c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m8.49884033 8.5c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm-4 0c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm7.99999997 0c.5 0 1-.5 1-1s-.5-1-1-1-.9988403.5-.9988403 1 .4988403 1 .9988403 1z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 2)\\\"><path d=\\\"m5.38916302.61501045.11083698-.00409775c1.5967308-.05903257 2.93899223 1.18751813 2.9980248 2.78424894.00131669.0356141.0019752.07124949.0019752.10688793v3.99795043c0 1.65685425-1.34314575 3-3 3s-3-1.34314575-3-3v-3.88703773c0-1.61372368 1.27654106-2.93833174 2.88916302-2.99795182z\\\"/><path d=\\\"m10.5 7.5c0 2.7614237-2.23857625 5-5 5-2.6887547 0-4.88181811-2.1223067-4.99538049-4.78311038l-.00461951-.21688962\\\"/><path d=\\\"m5.5 12.5v4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m12.5 7.5c0 .91813853-.2474698 1.7784774-.6793465 2.5179537m-1.4246464 1.5584561c-.81714521.5815728-1.81663493.9235902-2.8960071.9235902-2.76142375 0-5-2.2385763-5-5m2.19580617-4.95506382c.41696847-1.09403231 1.45627406-1.88418967 2.69335685-1.92992573l.11083698-.00409775c1.5967308-.05903257 2.9389922 1.18751813 2.9980248 2.78424894.0013167.0356141.0019752.07124949.0019752.10688793v3.99795043c0 .38785203-.0736015.75851351-.2075993 1.09877923\\\"/><path d=\\\"m8.95666861 10.1232407c-.4313298.2400274-.92803148.3767593-1.45666861.3767593-1.65685425 0-3-1.34314575-3-3 0-.93326823 0-1.53336589 0-2\\\"/><path d=\\\"m.5 1.5 14 14\\\"/><path d=\\\"m7.5 12.5v4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 2)\\\"><path d=\\\"m8.5 6 .00115967 1.5c-.21419271 2-1.21535238 3-3.00115967 3s-2.78464762-1-2.99884033-3l-.00115967-3.5c0-2 1.85706111-3.2309912 2.5-3.5\\\"/><g transform=\\\"translate(6)\\\"><path d=\\\"m.5 4.5 4-4\\\"/><path d=\\\"m4.5 4.5-4-4z\\\"/></g><path d=\\\"m10.5 7.5c0 2.7614237-2.23857625 5-5 5-2.6887547 0-4.88181811-2.1223067-4.99538049-4.78311038l-.00461951-.21688962\\\"/><path d=\\\"m5.522 12.5v4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m16.5 5.5v-3c0-1.1045695-.8954305-2-2-2h-3\\\"/><path d=\\\"m8.5 10.5v-4\\\"/><path d=\\\"m6.5 8.5h4\\\"/><path d=\\\"m16.5 11.5v3c0 1.1045695-.8954305 2-2 2h-3m-6-16h-3c-1.1045695 0-2 .8954305-2 2v3m5 11h-3c-1.1045695 0-2-.8954305-2-2v-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v8c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-8c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m9.5 6.5h2c.5522847 0 1 .44771525 1 1v2c0 .5522847-.4477153 1-1 1h-2c-.55228475 0-1-.4477153-1-1v-2c0-.55228475.44771525-1 1-1z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m5.5 14.5v-5h-5\\\"/><path d=\\\"m14.5 9.5h-5v5\\\"/><path d=\\\"m.5 5.5h5v-5\\\"/><path d=\\\"m9.5.5v5h5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m5.5 10.5h10\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m8 16c4.4380025 0 8-3.5262833 8-7.96428571 0-4.43800246-3.5619975-8.03571429-8-8.03571429-4.43800245 0-8 3.59771183-8 8.03571429 0 4.43800241 3.56199755 7.96428571 8 7.96428571z\\\"/><path d=\\\"m4 8h8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m7.5.5c1.3280962 0 2.5698071.36985953 3.6277499 1.01219586-3.14075981.19184303-5.6277499 2.79938976-5.6277499 5.98780414 0 3.1884144 2.48699009 5.7959611 5.6269199 5.9885898-1.0571128.6415507-2.2988237 1.0114102-3.6269199 1.0114102-3.86599325 0-7-3.1340068-7-7 0-3.86599325 3.13400675-7 7-7z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 1)\\\"><path d=\\\"m18.5 9.5h-18\\\"/><path d=\\\"m9.5.5v18\\\"/><path d=\\\"m15.5 12.5 3-3-3-3\\\"/><path d=\\\"m3.5 12.5-3-3 3-3\\\"/><path d=\\\"m6.5 3.5 3-3 3 3\\\"/><path d=\\\"m6.5 15.5 3 3 3-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 4)\\\"><path d=\\\"m3.5 3.165h9\\\"/><path d=\\\"m4.48122025 6.20339509 1-.01878307c.5127454-.00963092.94259192.36840352 1.00968673.86456969l.00909302.13525035v.9832835c0 .54496455-.4363518.98958934-.98122025.99982364l-1 .01878306c-.5127454.00963093-.94259192-.36840352-1.00968673-.86456968l-.00909302-.13525396v-.98327989c0-.54496455.4363518-.98958935.98122025-.99982364z\\\"/><path d=\\\"m2.5.1507576h11c1.1045695 0 2 .8954305 2 2v10.0147186h-13c-1.1045695 0-2-.8954305-2-2v-8.0147186c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m8.5 6.165h4\\\"/><path d=\\\"m8.5 9.165h4\\\"/><path d=\\\"m15 12.1654762c1.3807119 0 2.5-1.1192881 2.5-2.49999998v-6.5h-2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m3 3 11 11\\\" transform=\\\"matrix(-1 0 0 1 17 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m2.5.5h8c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-8c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m3.5 14.5v-14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m14.5000013 6.5v7c0 1.1045695-.8954305 2-2 2h-9.95715484c-1.10122462 0-1.99526352-.8902166-1.99998165-1.9914311l-.04295509-10.00000003c-.00462213-1.10455936.88696373-2.00381805 1.99152309-2.00856887h.00856888 6.99999831\\\"/><circle cx=\\\"14\\\" cy=\\\"2\\\" fill=\\\"currentColor\\\" r=\\\"2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m6.5.5 6 4v6l-6 4-6-4v-6z\\\"/><circle cx=\\\"6.5\\\" cy=\\\"7.5\\\" r=\\\"3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m11.5.5h-7c-1.1045695 0-2 .8954305-2 2v9c0 1.1045695.8954305 2 2 2h7c1.1045695 0 2-.8954305 2-2v-9c0-1.1045695-.8954305-2-2-2z\\\"/><path d=\\\"m2.5 2.5c-1.1045695 0-2 .8954305-2 2v8c0 1.6568542 1.34314575 3 3 3h6c1.1045695 0 2-.8954305 2-2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m3.5 12.5h8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m5.5 4.5h4c.5522847 0 1 .44771525 1 1v4c0 .5522847-.4477153 1-1 1h-4c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m2.5 11.5v-8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m12.5 11.5v-8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m14.4978951 12.4978973-.0105089-9.99999996c-.0011648-1.10374784-.8962548-1.99789734-2-1.99789734h-9.99999995c-1.0543629 0-1.91816623.81587779-1.99451537 1.85073766l-.00548463.151365.0105133 10.00000004c.0011604 1.1037478.89625045 1.9978973 1.99999889 1.9978973h9.99999776c1.0543618 0 1.9181652-.8158778 1.9945143-1.8507377z\\\"/><path d=\\\"m7.5.5v13.817\\\"/><path d=\\\"m14.5 7.5h-14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m3.5 2.5h8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m12.5 12.5v-8l-4-4h-6c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m12.5 12.5v-7l-5-5h-5c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m7.5.5v3c0 1.1045695.8954305 2 2 2h3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 2)\\\"><path d=\\\"m.5 7 16-6.535-2.8 14.535z\\\"/><path d=\\\"m16.5.5-11 10\\\"/><path d=\\\"m5.5 10.5v5l3-3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m15.5.465-8 8.033\\\"/><path d=\\\"m10.5 16.5-3-8.002-7-2.998 15-5z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m9.24264069 5.05025253v7.07106777c.17157287 3.7363257-1.24264069 5.6219437-4.24264069 5.6568543-3 .0349105-4.41421356-1.8507075-4.24264069-5.6568543v-7.07106777c-.11438191-2.82842712.82842713-4.24264068 2.82842713-4.24264068s2.94280904 1.41421356 2.82842712 4.24264068v7.07106777c.07786153 1.4142136-.39354299 2.1213204-1.41421356 2.1213204s-1.49207509-.7071068-1.41421356-2.1213204v-7.07106777\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(.70710678 .70710678 -.70710678 .70710678 13.535219 1.393091)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m4.5 6.5h12\\\"/><path d=\\\"m7.498 10.5h5.997\\\"/><path d=\\\"m5.5 14.5h9.995\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m3.5 5.5h13.978\\\"/><path d=\\\"m3.5 7.5h13.978\\\"/><path d=\\\"m3.5 9.5h13.978\\\"/><path d=\\\"m3.5 11.5h13.978\\\"/><path d=\\\"m3.5 13.5h13.978\\\"/><path d=\\\"m3.5 15.5h7\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m4.5 6.5h12\\\"/><path d=\\\"m4.498 10.5h5.997\\\"/><path d=\\\"m4.5 14.5h9.995\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m4.5 6.5h12\\\"/><path d=\\\"m10.498 10.5h5.997\\\"/><path d=\\\"m6.5 14.5h9.995\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m3.5 7.5h13.978\\\"/><path d=\\\"m3.5 9.5h13.978\\\"/><path d=\\\"m3.5 11.5h13.978\\\"/><path d=\\\"m3.5 5.5h7\\\"/><path d=\\\"m3.5 13.5h13.978\\\"/><path d=\\\"m3.5 15.5h13.978\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m14 1c.8284271.82842712.8284271 2.17157288 0 3l-9.5 9.5-4 1 1-3.9436508 9.5038371-9.55252193c.7829896-.78700064 2.0312313-.82943964 2.864366-.12506788z\\\"/><path d=\\\"m12.5 3.5 1 1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(0 -1 1 0 3 17)\\\"><path d=\\\"m2.52487173.5h5.97512827c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-5.99966647c-1.05436781 0-1.91817114-.8158778-1.99452028-1.8507377l-.00547971-.1541711.02454421-10.00000003c.00270637-1.10264965.89734101-1.99509117 1.99999398-1.99509117z\\\"/><path d=\\\"m7.5 12.5h-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 3)\\\"><path d=\\\"m2.5.5h6c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-6c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m3.5 12.5h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 3)\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m14.5 10.5-3-3-3 2.985\\\"/><path d=\\\"m12.5 14.5-9-9-3 3\\\"/></g><circle cx=\\\"11\\\" cy=\\\"4\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m6.518813.74721736c-3.4599961.88152537-6.018813 4.01833215-6.018813 7.75278264 0 3.7184732 2.53696873 6.8444056 5.97445344 7.7413445m10.02554656-7.7413445c0 4.418278-3.581722 8-8 8v-16c4.418278 0 8 3.581722 8 8z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m6.518813.74721736c-3.4599961.88152537-6.018813 4.01833215-6.018813 7.75278264 0 4.418278 3.581722 8 8 8 3.6942119 0 6.8035899-2.5039716 7.723504-5.9072849\\\"/><path d=\\\"m16.5 8.5c0-4.418278-3.581722-8-8-8v8z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m6.518813.74721736c-2.85207705.72664194-5.09182846 2.98568348-5.79082981 5.84870021m7.77201681-6.09591757c4.418278 0 8 3.581722 8 8s-3.581722 8-8 8-8-3.5-8-8h8c0-1.77777778 0-4.44444444 0-8z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"/></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M10.5 7.5v5.817M3.5 10.5a3 3 0 003 3h8a3 3 0 000-6h-8a3 3 0 00-3 3z\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m2.49368982.53498937 11.99999998-.03787142c1.0543566-.00331643 1.9207298.80983192 2.0003436 1.84444575l.0059666.15555425v6.00288205c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2v-5.96502059c0-1.10210602.89158929-1.9965128 1.99368982-1.99999004z\\\"/><path d=\\\"m7.5 7.5 3-2-3-2z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m5.5 10.5h10\\\"/><path d=\\\"m10.5 5.5v10\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m8 16c4.4380025 0 8-3.5262833 8-7.96428571 0-4.43800246-3.5619975-8.03571429-8-8.03571429-4.43800245 0-8 3.59771183-8 8.03571429 0 4.43800241 3.56199755 7.96428571 8 7.96428571z\\\"/><path d=\\\"m4 8h8\\\"/><path d=\\\"m8 12.0563492v-8.0563492z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v8c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-8c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m10.5 2.5h1c.5522847 0 1 .44771525 1 1v1c0 .55228475-.4477153 1-1 1h-1c-.55228475 0-1-.44771525-1-1v-1c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m2.5 7.5h5\\\"/><path d=\\\"m2.5 9.5h5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"matrix(0 -1 1 0 2 19)\\\"><path d=\\\"m3.5 4.38378906v-1.89752528c0-1.1045695.8954305-2 2-2h4c1.1045695 0 2 .8954305 2 2v12.01373622c0 1.1045695-.8954305 2-2 2h-4c-1.1045695 0-2-.8954305-2-2v-2\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m1.5 4.5h5.0013251v8h-5.0013251c-.55228475 0-1-.4477153-1-1v-6c0-.55228475.44771525-1 1-1zm12 0h2c.5522847 0 1 .44771525 1 1v6c0 .5522847-.4477153 1-1 1h-2\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"9\\\" cy=\\\"14\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 2)\\\"><path d=\\\"m16.5 12.5v-10.01471863h-14v10.01471863c0 .5522847.44771525 1 1 1h12c.5522847 0 1-.4477153 1-1z\\\"/><path d=\\\"m7.5 13.5-2 3.5\\\"/><path d=\\\"m13.5 13.5-2 3\\\" transform=\\\"matrix(-1 0 0 1 25 0)\\\"/><path d=\\\"m.5 2.5h18\\\"/><path d=\\\"m9.49894742.49789429c1.05502148.00261296 1.91822238.81840641 1.99543358 1.85289779l.0056181.1492082-4.00000003-.00210599c-.00105165-1.1045695.89437885-2 1.99894835-2z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m3.5 10.5 4 4 4-4\\\"/><path d=\\\"m7.5 3.5v11\\\"/><path d=\\\"m.5.5h14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m7.328 4.672v5.656h-5.656\\\" transform=\\\"matrix(-.70710678 -.70710678 -.70710678 .70710678 12.985309 5.378691)\\\"/><path d=\\\"m11.5 7.5h-11\\\"/><path d=\\\"m14.5.5v14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(0 1 -1 0 17.5 3.5)\\\"><path d=\\\"m11 4-4-4-4 4\\\"/><path d=\\\"m7 0v11\\\"/><path d=\\\"m0 14h14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m3.5 4.753 4-4.253 4 4.212\\\"/><path d=\\\"m7.5.5v11\\\"/><path d=\\\"m.5 14.5h14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m3.5 7.5 4 4 4-4\\\"/><path d=\\\"m7.5.5v11\\\"/><path d=\\\"m.5 14.5h14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(0 1 -1 0 17.5 3.5)\\\"><path d=\\\"m3 7 4 4 4-4\\\"/><path d=\\\"m7 0v11\\\"/><path d=\\\"m0 14h14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m5.5 9.5 4-4 4 4\\\" transform=\\\"matrix(0 1 -1 0 17 -2)\\\"/><path d=\\\"m11.5 7.5h-11\\\"/><path d=\\\"m14.5.5v14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m3.5 7.5 4-4 4 4\\\"/><path d=\\\"m7.5 3.5v11\\\"/><path d=\\\"m.5.5h14\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m8.5 9.5v-1l1.41421356-1.41421356c.37507274-.37507276.58578644-.88378059.58578644-1.41421356v-.17157288c0-.61286606-.3462631-1.17313156-.89442719-1.4472136l-.21114562-.1055728c-.56305498-.2815275-1.2257994-.2815275-1.78885438 0l-.10557281.0527864c-.61286606.30643303-1 .9328289-1 1.61803399v.88196601\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"8.5\\\" cy=\\\"12.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"8\\\"/><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" fill=\\\"currentColor\\\" r=\\\"5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m13.5 4.5h2c.5522847 0 1-.44771525 1-1v-2c0-.55228475-.4477153-1-1-1h-14c-.55228475 0-1 .44771525-1 1v2c0 .55228475.44771525 1 1 1h2\\\"/><path d=\\\"m3.5.5h10v11.5c0 .5522847-.4477153 1-1 1h-8c-.55228475 0-1-.4477153-1-1z\\\"/><path d=\\\"m6.5 7.5 2 2 2-2\\\"/><path d=\\\"m8.5 9.5v-6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"5\\\"/><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" fill=\\\"currentColor\\\" r=\\\"3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 7)\\\"><path d=\\\"m16.5 6.5c-3.1700033-4-6.1700033-6-9-6-2.82999674 0-5.16333008 1-7 3\\\"/><path d=\\\"m11.5 6.5h5v-5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m4.5 1.5c-2.41169541 1.37786776-4 4.02354835-4 7 0 4.418278 3.581722 8 8 8m4-1c2.2866288-1.4081018 4-4.1175492 4-7 0-4.418278-3.581722-8-8-8\\\"/><path d=\\\"m4.5 5.5v-4h-4\\\"/><path d=\\\"m12.5 11.5v4h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 1)\\\"><path d=\\\"m1.5 5.5c1.37786776-2.41169541 4.02354835-4 7-4 4.418278 0 8 3.581722 8 8m-1 4c-1.4081018 2.2866288-4.1175492 4-7 4-4.418278 0-8-3.581722-8-8\\\"/><path d=\\\"m6.5 5.5h-5v-5\\\"/><path d=\\\"m10.5 13.5h5v5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m11.5 9.5v-7c0-1.1045695-.8954305-2-2-2h-7c-1.1045695 0-2 .8954305-2 2v7c0 1.1045695.8954305 2 2 2h7c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m3.5 11.5v1c0 1.1045695.8954305 2 2 2h7c1.1045695 0 2-.8954305 2-2v-7c0-1.1045695-.8954305-2-2-2h-1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m14.5 9.5v-7c0-1.1045695-.8954305-2-2-2h-7c-1.1045695 0-2 .8954305-2 2v7c0 1.1045695.8954305 2 2 2h7c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m11.5 11.5v1c0 1.1045695-.8954305 2-2 2h-7c-1.1045695 0-2-.8954305-2-2v-7c0-1.1045695.8954305-2 2-2h1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(0 1 1 0 2.5 2.5)\\\"><path d=\\\"m3.98652376 1.07807068c-2.38377179 1.38514556-3.98652376 3.96636605-3.98652376 6.92192932 0 4.418278 3.581722 8 8 8s8-3.581722 8-8-3.581722-8-8-8\\\"/><path d=\\\"m4 1v4h-4\\\" transform=\\\"matrix(1 0 0 -1 0 6)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m12.5 1.5c2.4138473 1.37729434 4 4.02194088 4 7 0 4.418278-3.581722 8-8 8s-8-3.581722-8-8 3.581722-8 8-8\\\"/><path d=\\\"m12.5 5.5v-4h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m4.5 1.5c-2.4138473 1.37729434-4 4.02194088-4 7 0 4.418278 3.581722 8 8 8s8-3.581722 8-8-3.581722-8-8-8\\\"/><path d=\\\"m4.5 5.5v-4h-4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(0 1 1 0 2.5 2.5)\\\"><path d=\\\"m13 11 3 3v-6c0-3.36502327-2.0776-6.24479706-5.0200433-7.42656457-.9209869-.36989409-1.92670197-.57343543-2.9799567-.57343543-4.418278 0-8 3.581722-8 8s3.581722 8 8 8c1.48966767 0 3.4724708-.3698516 5.0913668-1.5380762\\\" transform=\\\"matrix(-1 0 0 -1 16 16)\\\"/><path d=\\\"m5 5 6 6\\\"/><path d=\\\"m11 5-6 6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(0 1 1 0 2.5 2.5)\\\"><path d=\\\"m3.98652376 1.07807068c-2.38377179 1.38514556-3.98652376 3.96636605-3.98652376 6.92192932 0 4.418278 3.581722 8 8 8s8-3.581722 8-8-3.581722-8-8-8\\\"/><circle cx=\\\"8\\\" cy=\\\"8\\\" fill=\\\"currentColor\\\" r=\\\"2\\\"/><path d=\\\"m4 1v4h-4\\\" transform=\\\"matrix(1 0 0 -1 0 6)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 4)\\\"><path d=\\\"m12.5 9.5 3 3 3-3\\\"/><path d=\\\"m8.5.5h3c2.209139 0 4 1.790861 4 4v8\\\"/><path d=\\\"m6.5 3.5-3-3-3 3\\\"/><path d=\\\"m10.5 12.5h-3c-2.209139 0-4-1.790861-4-4v-8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m.5.5h5v5\\\"/><path d=\\\"m11 11c-2.83666992-3.33333333-5.67000326-5-8.5-5-2.82999674 0-5.32999674 1-7.5 3\\\" transform=\\\"matrix(0 -1 1 0 -5.5 11.5)\\\"/><path d=\\\"m14.5 16.5h-5v-5\\\"/><path d=\\\"m9.5 16.5c3.3333333-2.8366699 5-5.6700033 5-8.5 0-2.82999674-1-5.32999674-3-7.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 2)\\\"><path d=\\\"m4.5 8.5-4 4 4 4\\\"/><path d=\\\"m12.5 12.5h-12\\\"/><path d=\\\"m8.5.5 4 4-4 4\\\"/><path d=\\\"m12.5 4.5h-12\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m6.5 6.5-4 4 4 4\\\"/><path d=\\\"m14.5 10.5h-12\\\"/><path d=\\\"m8.5.5 4 4-4 4\\\"/><path d=\\\"m12.5 4.5h-12\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m5.5 3.5-3-3h6c3.3650233 0 6.2447971 2.07760003 7.4265646 5.0200433.3698941.92098687.5734354 1.92670197.5734354 2.9799567 0 4.418278-3.581722 8-8 8s-8-3.581722-8-8c0-1.48966767.36985163-3.47247085 1.53807623-5.09136684\\\"/><path d=\\\"m8.5 3.5v5h3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 1)\\\"><path d=\\\"m6.5 18.5c3-2.5021966 4-5.5021966 4-9 0-3.49780342-1-6.49780342-4-9-3 2.50219658-4 5.50219658-4 9 0 3.4978034 1 6.4978034 4 9z\\\"/><path d=\\\"m10.0620355 13.3616971c.4244504.2452152.814833.5459803 1.1711478.9022951 1.1190122 1.1190122 1.6901459 2.5740294 1.7134011 4.3650515-2.5082701-.109848-3.88207621-.7645704-4.92553235-1.6471655m-5.11545113-3.6201811c-.42445038.2452152-.81483298.5459803-1.17114781.9022951-1.11901221 1.1190122-1.6901459 2.5740294-1.71340106 4.3650515 2.50827003-.109848 3.88207616-.7645704 4.9255323-1.6471655\\\"/><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 8)\\\"><path d=\\\"m1.5.5h14c.5522847 0 1 .44771525 1 1v4c0 .55228475-.4477153 1-1 1h-14c-.55228475 0-1-.44771525-1-1v-4c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m3.5 1v2.5\\\"/><path d=\\\"m5.5 1v2.5\\\"/><path d=\\\"m7.5 1v3.5\\\"/><path d=\\\"m9.5 1v2.5\\\"/><path d=\\\"m11.5 1v2.5\\\"/><path d=\\\"m13.5 1v3.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m14.5 4.5v-4h-4\\\"/><path d=\\\"m6.5 4.5v4h4\\\"/><path d=\\\"m10.5-1.157v11.314\\\" transform=\\\"matrix(.70710678 .70710678 -.70710678 .70710678 6.257359 -6.106602)\\\"/><path d=\\\"m8.5.5h-6c-1.1045695 0-2 .8954305-2 2v10c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-6\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 5)\\\"><path d=\\\"m10.5 4.5-4 .022v-4.022\\\"/><path d=\\\"m4.5 10.523v-4l-4-.023\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 5)\\\"><path d=\\\"m10.5 4.5v-3.978l-4-.022\\\"/><path d=\\\"m4.5 10.523h-4v-4.023\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m6 10 7-7c.5522847-.55228475.5522847-1.44771525 0-2s-1.4477153-.55228475-2 0l-10.5 10.5h7l-3.5-3.5\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 5)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"5\\\"/><path d=\\\"m17.571 17.5-5.571-5.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m.5 10.5v-2c0-1.1045695.8954305-2 2-2h12c1.1045695 0 2 .8954305 2 2v2c0 1.1045695-.8954305 2-2 2h-12c-1.1045695 0-2-.8954305-2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m4.5 9.5c0-.55228475-.44771525-1-1-1s-1 .44771525-1 1c0 .5522847.44771525 1 1 1s1-.4477153 1-1z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m.5 4.49375668.00936503-2c.00344048-1.10212675.89785814-1.99375668 1.99999025-1.99375668h11.99057232c1.0543617 0 1.9181651.81587779 1.9945142 1.85073766l.005476.15550566-.009365 2c-.0034405 1.10212675-.8978582 1.99375668-1.9999903 1.99375668h-11.9905625c-1.05437154 0-1.91817487-.81587779-1.99452401-1.85073766z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m4.5 3.5c0-.55228475-.44771525-1-1-1s-1 .44771525-1 1 .44771525 1 1 1 1-.44771525 1-1z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m7.5.5c.35132769 0 .69661025.02588228 1.03404495.07584411l.50785434 1.53911115c.44544792.12730646.86820077.30839026 1.26078721.53578009l1.4600028-.70360861c.5166435.39719686.9762801.86487779 1.3645249 1.388658l-.7293289 1.44720284c.2201691.39604534.3936959.82158734.5131582 1.2692035l1.5298263.5338186c.0390082.29913986.0591302.60421522.0591302.91399032 0 .35132769-.0258823.69661025-.0758441 1.03404495l-1.5391112.50785434c-.1273064.44544792-.3083902.86820077-.5357801 1.26078721l.7036087 1.4600028c-.3971969.5166435-.8648778.9762801-1.388658 1.3645249l-1.4472029-.7293289c-.39604532.2201691-.82158732.3936959-1.26920348.5131582l-.5338186 1.5298263c-.29913986.0390082-.60421522.0591302-.91399032.0591302-.35132769 0-.69661025-.0258823-1.03404495-.0758441l-.50785434-1.5391112c-.44544792-.1273064-.86820077-.3083902-1.26078723-.5357801l-1.46000277.7036087c-.51664349-.3971969-.97628006-.8648778-1.36452491-1.388658l.72932886-1.4472029c-.2203328-.39633993-.39395403-.82222042-.51342462-1.27020241l-1.52968981-.53381682c-.03892294-.29882066-.05900023-.60356226-.05900023-.91299317 0-.35132769.02588228-.69661025.07584411-1.03404495l1.53911115-.50785434c.12730646-.44544792.30839026-.86820077.53578009-1.26078723l-.70360861-1.46000277c.39719686-.51664349.86487779-.97628006 1.388658-1.36452491l1.44720284.72932886c.39633995-.2203328.82222044-.39395403 1.27020243-.51342462l.53381682-1.52968981c.29882066-.03892294.60356226-.05900023.91299317-.05900023z\\\" stroke-width=\\\".933\\\"/><circle cx=\\\"7.5\\\" cy=\\\"7.5\\\" r=\\\"3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m11.5 4.5-3.978-4-4.022 4\\\"/><path d=\\\"m7.522.521v11.979\\\"/><path d=\\\"m4.5 7.5h-2c-1.1045695 0-2 .8954305-2 2v4c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-4c0-1.1045695-.8954305-2-2-2h-2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 2)\\\"><path d=\\\"m8.5 2.5-1.978-2-2.022 2\\\"/><path d=\\\"m6.5.5v9\\\"/><path d=\\\"m3.5 4.5h-1c-1.1045695 0-2 .8954305-2 2v7c0 1.1045695.8954305 2 2 2h8c1.1045695 0 2-.8954305 2-2v-7c0-1.1045695-.8954305-2-2-2h-1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m4.501 8.5-3.001 3 3.001 3\\\"/><path d=\\\"m12.5 6.5v2c0 1.6568542-1.3431458 3-3 3h-8\\\"/><path d=\\\"m8.499 6.5 3.001-3-3.001-3\\\"/><path d=\\\"m.5 8.5v-2c0-1.65685425 1.34314575-3 3-3h8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 5)\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m4.5 1.5h8\\\"/><path d=\\\"m4.5 5.498h5\\\"/><path d=\\\"m4.5 9.5h8\\\"/></g><path d=\\\"m1.49884033 2.5c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm0 4c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm0 4c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g fill=\\\"currentColor\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M5.5 16.5v-3a1 1 0 112 0v3a1 1 0 01-2 0zM9.5 16.5v-6a1 1 0 112 0v6a1 1 0 01-2 0zM13.5 16.5v-9a1 1 0 112 0v9a1 1 0 01-2 0z\\\"/></g></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M5.5 16.5v-3a1 1 0 112 0v3a1 1 0 01-2 0z\\\" fill=\\\"currentColor\\\"/><path d=\\\"M9.5 16.5v-6a1 1 0 112 0v6a1 1 0 01-2 0zM13.5 16.5v-9a1 1 0 112 0v9a1 1 0 01-2 0z\\\"/></g></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M5.5 16.5v-3a1 1 0 112 0v3a1 1 0 01-2 0zM9.5 16.5v-6a1 1 0 112 0v6a1 1 0 01-2 0z\\\" fill=\\\"currentColor\\\"/><path d=\\\"M13.5 16.5v-9a1 1 0 112 0v9a1 1 0 01-2 0z\\\"/></g></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M5.5 16.5v-3a1 1 0 112 0v3a1 1 0 01-2 0zM9.5 16.5v-6a1 1 0 112 0v6a1 1 0 01-2 0zM13.5 16.5v-9a1 1 0 112 0v9a1 1 0 01-2 0z\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m4.5.5-4 14\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 1 13 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m12.5 3.5-4 14\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m14.5 9v-6.5\\\"/><path d=\\\"m14.5 18.5v-4.5\\\"/><circle cx=\\\"14.5\\\" cy=\\\"11.5\\\" r=\\\"2.5\\\"/><path d=\\\"m6.5 5v-2.5\\\"/><path d=\\\"m6.5 18.5v-8.5\\\"/><circle cx=\\\"6.5\\\" cy=\\\"7.5\\\" r=\\\"2.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m8.5 8.5 4 4.107 4-4.107\\\"/><path d=\\\"m8.5 4.5-4-4-4 3.997\\\"/><path d=\\\"m4.5.5v12\\\"/><path d=\\\"m12.5.5v12\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2.5 2.5)\\\"><path d=\\\"m16 10-4-4-4 4\\\" transform=\\\"matrix(-1 0 0 -1 24 16)\\\"/><path d=\\\"m12 0v10\\\"/><path d=\\\"m0 6 4 4.044 4-4.044\\\" transform=\\\"matrix(-1 0 0 -1 8 16.044)\\\"/><path d=\\\"m4 6v10\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(5 3)\\\"><path d=\\\"m2.5.5h6c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-6c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"5.5\\\" cy=\\\"9.5\\\" r=\\\"3\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"5.5\\\" cy=\\\"3.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m8 13.5172414c4.418278 0 8-3.2845583 8-7.0172414 0-3.73268314-3.581722-6.5-8-6.5s-8 3.02593755-8 6.75862069c0 1.45741942.5460328 2.80709561 1.47469581 3.91098161l-.97469581 4.5803977 3.91607376-2.4472652c1.07810761.4571647 2.29544433.7145066 3.58392624.7145066z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m8 13.5172414c4.418278 0 8-3.0259376 8-6.75862071 0-3.73268314-3.581722-6.75862069-8-6.75862069s-8 3.02593755-8 6.75862069c0 1.45741942.5460328 2.80709561 1.47469581 3.91098161l-.97469581 4.5803977 3.91607376-2.4472652c1.07810761.4571647 2.29544433.7145066 3.58392624.7145066z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m7.99884033 8c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm-4 0c.5 0 1-.5 1-1s-.5-1-1-1-.99884033.5-.99884033 1 .49884033 1 .99884033 1zm8.00057947 0c.5002901 0 1.0005802-.5 1.0005802-1s-.5002901-1-1.0005802-1-.9994198.5-.9994198 1 .4991297 1 .9994198 1z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 5)\\\"><path d=\\\"m12.5.5h-10.00000001c-1.1045695 0-2 .8954305-2 2v6c0 1.1045695.8954305 2 2 2h10.00000001c1.1045695 0 2-.8954305 2-2v-6c0-1.1045695-.8954305-2-2-2z\\\"/><path d=\\\"m7.5.5v10\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 5)\\\"><path d=\\\"m14.5.5h-12.00000001c-1.1045695 0-2 .8954305-2 2v6c0 1.1045695.8954305 2 2 2h12.00000001c1.1045695 0 2-.8954305 2-2v-6c0-1.1045695-.8954305-2-2-2z\\\"/><path d=\\\"m5.5.5v10\\\"/><path d=\\\"m11.5.5v10\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m7.5 11.5-5 3 2-5.131-4-3.869h5l2-5 2 5h5l-4 4 2 5z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(-210 -1)\\\"><g opacity=\\\".3\\\" transform=\\\"matrix(.96592583 .25881905 -.25881905 .96592583 214.136029 .477376)\\\"><path d=\\\"m9 13c2.2190012 0 4-1.7631416 4-3.98214286 0-2.21900122-1.7809988-4.01785714-4-4.01785714-2.21900123 0-4 1.78099877-4 4 0 2.2190012 1.78099877 4 4 4z\\\" transform=\\\"matrix(.96592583 -.25881905 .25881905 .96592583 -2.022704 2.636039)\\\"/><g transform=\\\"matrix(.8660254 .5 -.5 .8660254 1.4558 4.066879)\\\"><path d=\\\"m0 .5h2\\\"/><path d=\\\"m16 .5h2\\\"/></g><g transform=\\\"matrix(.96592583 -.25881905 .25881905 .96592583 .17726 10.84642)\\\"><path d=\\\"m0 .5h2\\\"/><path d=\\\"m16 .5h2\\\"/></g><g transform=\\\"matrix(.5 -.8660254 .8660254 .5 4.066879 16.544042)\\\"><path d=\\\"m0 .5h2\\\"/><path d=\\\"m16 .5h2\\\"/></g><g transform=\\\"matrix(-.25881905 -.96592583 .96592583 -.25881905 10.846233 17.822607)\\\"><path d=\\\"m0 .5h2\\\"/><path d=\\\"m16 .5h2\\\"/></g></g><g><path d=\\\"m220.5 2.5v2\\\"/><path d=\\\"m227 5-1.5 1.5\\\"/><circle cx=\\\"220.5\\\" cy=\\\"11.5\\\" r=\\\"4\\\"/><path d=\\\"m214 5 1.5 1.5\\\"/><path d=\\\"m220.5 20.5v-2\\\"/><path d=\\\"m227 18-1.5-1.5\\\"/><path d=\\\"m214 18 1.5-1.5\\\"/><path d=\\\"m211.5 11.5h2\\\"/><path d=\\\"m227.5 11.5h2\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"8\\\"/><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"4\\\"/><path d=\\\"m13.5 7.5 2.5-2.5\\\"/><path d=\\\"m13.5 13.5 2.5 2.5\\\"/><path d=\\\"m7.5 13.5-2.5 2.5\\\"/><path d=\\\"m7.5 7.5-2.5-2.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(0 1 -1 0 18.5 2.5)\\\"><g transform=\\\"matrix(0 -1 1 0 .5 16.5)\\\"><path d=\\\"m16 0v5h-5\\\" transform=\\\"matrix(0 1 1 0 11 -11)\\\"/><path d=\\\"m16 5c-2.8366699-3.33333333-5.6700033-5-8.5-5-2.82999674 0-5.32999674 1-7.5 3\\\"/></g><g transform=\\\"matrix(0 1 -1 0 14 1)\\\"><path d=\\\"m16 0v5h-5\\\" transform=\\\"matrix(0 1 1 0 11 -11)\\\"/><path d=\\\"m16 5c-2.8366699-3.33333333-5.6700033-5-8.5-5-2.82999674 0-5.32999674 1-7.5 3\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 3)\\\"><path d=\\\"m1.5.5h6c.55228475 0 1 .44771525 1 1v12c0 .5522847-.44771525 1-1 1h-6c-.55228475 0-1-.4477153-1-1v-12c0-.55228475.44771525-1 1-1z\\\"/><circle cx=\\\"4.5\\\" cy=\\\"4\\\" r=\\\"1.5\\\"/><path d=\\\"m.5 7.5h8\\\"/><path d=\\\"m3 11h3\\\" transform=\\\"matrix(0 1 -1 0 15.5 6.5)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m14.4978951 12.4978973-.0105089-9.99999996c-.0011648-1.10374784-.8962548-1.99789734-2-1.99789734h-9.99999995c-1.0543629 0-1.91816623.81587779-1.99451537 1.85073766l-.00548463.151365.0105133 10.00000004c.0011604 1.1037478.89625045 1.9978973 1.99999889 1.9978973h9.99999776c1.0543618 0 1.9181652-.8158778 1.9945143-1.8507377z\\\"/><path d=\\\"m4.5.5v13.817\\\"/><path d=\\\"m7-2v14\\\" transform=\\\"matrix(0 1 -1 0 12.5 -2.5)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m14.4978951 12.4978973-.0105089-9.99999996c-.0011648-1.10374784-.8962548-1.99789734-2-1.99789734h-9.99999995c-1.0543629 0-1.91816623.81587779-1.99451537 1.85073766l-.00548463.151365.0105133 10.00000004c.0011604 1.1037478.89625045 1.9978973 1.99999889 1.9978973h9.99999776c1.0543618 0 1.9181652-.8158778 1.9945143-1.8507377z\\\"/><path d=\\\"m4.5 4.5v9.817\\\"/><path d=\\\"m7-2v14\\\" transform=\\\"matrix(0 1 -1 0 12.5 -2.5)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m8.91421356.5h3.58578644c1.1045695 0 2 .8954305 2 2v3.58578644c0 .26521649-.1053568.5195704-.2928932.70710678l-6.79289324 6.79289318c-.78104858.7810486-2.04737854.7810486-2.82842712 0l-3.17157288-3.1715728c-.78104858-.78104862-.78104858-2.04737858 0-2.82842716l6.79289322-6.79289322c.18753638-.18753638.44189029-.29289322.70710678-.29289322z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"12\\\" cy=\\\"3\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m.5 6.22409987v6.27590013c0 1.1045695.8954305 2 2 2h6c1.1045695 0 2-.8954305 2-2v-6.27590013c0-.46787301-.1640324-.9209388-.4635574-1.2803688l-3.76822132-4.52186553c-.35356408-.4242769-.98412878-.48160097-1.40840568-.12803688-.04646306.03871922-.08931766.08157381-.12803688.12803688l-3.76822128 4.52186553c-.299525.35943-.46355744.81249579-.46355744 1.2803688z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(5 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(1 3)\\\"><path d=\\\"m11.9142136.5h3.5857864c1.1045695 0 2 .8954305 2 2v3.58578644c0 .26521649-.1053568.5195704-.2928932.70710678l-6.7928932 6.79289318c-.78104862.7810486-2.04737858.7810486-2.82842716 0l-3.17157288-3.1715728c-.78104858-.78104862-.78104858-2.04737858 0-2.82842716l6.79289324-6.79289322c.1875364-.18753638.4418903-.29289322.7071068-.29289322z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m7.5 13.5-2.01296191 1.006481c-.98795699.4939785-2.18930307.0935298-2.68328157-.8944272-.03127543-.0625509-.05924851-.1266991-.08380397-.1921803l-1.61484253-4.30624679c-.34775942-.92735845.03559029-1.96957132.90137249-2.45056144l7.49351749-4.16306527\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><rect fill=\\\"currentColor\\\" height=\\\"2\\\" rx=\\\"1\\\" width=\\\"2\\\" x=\\\"14\\\" y=\\\"2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"8\\\"/><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"2\\\"/><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"5\\\"/></g></svg>\"","export default \"<svg width=\\\"21\\\" height=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><g stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M5.5 4.5h10a2 2 0 012 2v8a2 2 0 01-2 2h-10a2 2 0 01-2-2v-8a2 2 0 012-2zM10.5 13.5h3\\\"/><path d=\\\"M6.5 12.5l2-2-2-2\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 1)\\\"><path d=\\\"m8.5 4.5c-1.65685425 0-3 1.34314575-3 3v5c0 1.6568542 1.34314575 3 3 3l2.468-.001 1.7152977 2.4298518c.1639804.2320786.4176379.3818336.6960544.4156462l.1206479.0072945c.5128358 0 .9355072-.3860402.9932723-.8833789l.0067277-.1166211.001-1.8527925.999.001c1.6568542 0 3-1.3431458 3-3v-5c0-1.65685425-1.3431458-3-3-3z\\\"/><path d=\\\"m5.5 12.5-2 2v-4h-.90625561c-1.09544195 0-1.98704628-.88123276-1.9998631-1.97659973l-.07020561-6c-.01292361-1.10449389.87196894-2.01033976 1.97646283-2.02326337.00779976-.00009127.01559998-.0001369.02340027-.0001369h8.97646122c1.1045695 0 2 .8954305 2 2v2\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(1 0 0 -1 2 18)\\\"><path d=\\\"m11.6427217 13.7567397-3.14377399-1.2567396h-4v-7.00000002h2l2.80105246-5.5c.57989907 0 1.07487363.2050252 1.48492373.61507546.4100508.41005058.6150761.90502516.6150755 1.48492425l-.8999994 2.40000029 4.0310597 1.34368655c.9979872.33266243 1.5591794 1.37584131 1.3086286 2.37964122l-.0684258.21997226-1.5536355 4.14302809c-.3878403 1.0342407-1.5406646 1.5582517-2.5749053 1.1704115z\\\"/><path d=\\\"m1.5 4.5h2c.55228475 0 1 .44771525 1 1v8c0 .5522847-.44771525 1-1 1h-2c-.55228475 0-1-.4477153-1-1v-8c0-.55228475.44771525-1 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m11.6427217 13.7567397-3.14377399-1.2567396h-4v-7.00000002h2l2.80105246-5.5c.57989907 0 1.07487363.2050252 1.48492373.61507546.4100508.41005058.6150761.90502516.6150755 1.48492425l-.8999994 2.40000029 4.0310597 1.34368655c.9979872.33266243 1.5591794 1.37584131 1.3086286 2.37964122l-.0684258.21997226-1.5536355 4.14302809c-.3878403 1.0342407-1.5406646 1.5582517-2.5749053 1.1704115z\\\"/><path d=\\\"m1.5 4.5h2c.55228475 0 1 .44771525 1 1v8c0 .5522847-.44771525 1-1 1h-2c-.55228475 0-1-.4477153-1-1v-8c0-.55228475.44771525-1 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 2)\\\"><path d=\\\"m4.00004961.48576352-.00004961.01423648c0 1.1045695.8954305 2 2 2s2-.8954305 2-2l-.001-.01471863h2.501c.5522847 0 1 .44771525 1 1v13.01471863c0 .5522847-.4477153 1-1 1h-2.5c0-1.1045695-.8954305-2-2-2s-2 .8954305-2 2h-2.5c-.55228475 0-1-.4477153-1-1v-13.01471863c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m2.5 4.5h1\\\"/><path d=\\\"m5.5 4.5h1\\\"/><path d=\\\"m8.5 4.5h1\\\"/><path d=\\\"m2.5 11.5h1\\\"/><path d=\\\"m5.5 11.5h1\\\"/><path d=\\\"m8.5 11.5h1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"m3.5 7.5h7\\\"/><path d=\\\"m7.498 11.5h6.669\\\"/><path d=\\\"m7.498 9.5h5.002\\\"/><path d=\\\"m9.498 13.5h8.002\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><g fill=\\\"currentColor\\\"><circle cx=\\\"7.5\\\" cy=\\\"7.5\\\" r=\\\"1\\\" transform=\\\"matrix(-1 0 0 1 15 0)\\\"/><circle cx=\\\"3.5\\\" cy=\\\"7.5\\\" r=\\\"1\\\"/><circle cx=\\\"11.5\\\" cy=\\\"7.5\\\" r=\\\"1\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 7)\\\"><circle cx=\\\"3.5\\\" cy=\\\"3.5\\\" r=\\\"3\\\"/><path d=\\\"m6 1.5h6.5c.8284271 0 2 .3248291 2 2s-1.1715729 2-2 2h-6.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><circle cx=\\\"3.5\\\" cy=\\\"3.5\\\" r=\\\"3\\\"/><path d=\\\"m6 1.5h6.5c.8284271 0 2 .3248291 2 2s-1.1715729 2-2 2h-6.5m5.5 8c-1.65685425 0-3-1.3431458-3-3 0-1.65685425 1.34314575-3 3-3 1.6568542 0 3 1.34314575 3 3 0 1.6568542-1.3431458 3-3 3z\\\"/><path d=\\\"m9 8.5h-6.5c-.82842712 0-2 .3248291-2 2s1.17157288 2 2 2h6.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m16.5 8.5v-6c0-1.1045695-.8954305-2-2-2h-6c-1.1045695 0-2 .8954305-2 2v6c0 1.1045695.8954305 2 2 2h6c1.1045695 0 2-.8954305 2-2z\\\"/><path d=\\\"m4.5 6.50344846h-2.00001427c-1.1045695 0-2 .8954305-2 2v5.99943324c0 1.1045695.8954305 2 2 2h.00345627l6.00001428-.0103718c1.10321833-.0019065 1.99654372-.8967771 1.99654372-1.999997v-1.9925129\\\"/><g transform=\\\"translate(2.502 9.5)\\\"><path d=\\\"m2.998 1.003h-3\\\"/><path d=\\\"m4.49841597 2.5c-.33333333.33333333-.66666667.66666667-1 1s-1.16666667.83333333-2.5 1.5\\\"/><path d=\\\"m.99841597 1.00316806c.33333333 1.16613866.83333333 1.99894398 1.5 2.49841597s1.5.99894398 2.5 1.49841597\\\"/></g><g transform=\\\"translate(8.5 2.5)\\\"><path d=\\\"m3 0-3 6\\\"/><path d=\\\"m3 0 3 6\\\"/><path d=\\\"m3 2v4\\\" transform=\\\"matrix(0 1 -1 0 7 1)\\\"/></g></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m2.5 2.5h10v12c0 1.1045695-.8954305 2-2 2h-6c-1.1045695 0-2-.8954305-2-2zm5-2c1.0543618 0 1.91816512.81587779 1.99451426 1.85073766l.00548574.14926234h-4c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m.5 2.5h14\\\"/><path d=\\\"m5.5 5.5v8\\\"/><path d=\\\"m9.5 5.5v8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m3.04312645.77339244c1.30458237-.50251803 2.79020688-.75708722 4.45687355-.76370756 1.66666667-.00645659 3.1522912.2481126 4.4568735.76370756 1.4533332.41523806 2.3707846 1.84683012 2.1409518 3.3407434l-1.0760143 6.99409286c-.3002042 1.9513268-1.9792025 3.3917713-3.95348683 3.3917713h-3.13664834c-1.97428433 0-3.65328268-1.4404445-3.95348679-3.3917713l-1.0760143-6.99409286c-.22983281-1.49391328.68761852-2.92550534 2.14095171-3.3407434z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m7.5 6c3.5555556 0 5-1.5 5-2.5s-1.4444444-2.25-5-2.25c-3.55555556 0-5 1.25-5 2.25s1.44444444 2.5 5 2.5z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m4.5.5h6c.5522847 0 1 .44771525 1 1v5c0 2.209139-1.790861 4-4 4s-4-1.790861-4-4v-5c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m7.5 10.5v3\\\"/><path d=\\\"m4.5 13.5h6c.5522847 0 1 .4477153 1 1s-.4477153 1-1 1h-6c-.55228475 0-1-.4477153-1-1s.44771525-1 1-1zm7-11h2c.5522847 0 1 .44771525 1 1v1c0 1.1045695-.8954305 2-2 2h-1zm-8 0h-2c-.55228475 0-1 .44771525-1 1v1c0 1.1045695.8954305 2 2 2h1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 5)\\\"><path d=\\\"m2.49278838.53409401 10.00000002-.03605833c1.1045623-.00398287 2.0032157.88821306 2.0071986 1.99277538.0000087.00240386.000013.00480774.000013.00721162v5.00197732c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-4.965919c0-1.10175423.89104131-1.99601428 1.99278838-1.99998699z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m9.46666667 4.6-2.66666667-2c-.2209139-.16568542-.53431458-.1209139-.7.1-.06491106.08654809-.1.19181489-.1.3v4c0 .27614237.22385763.5.5.5.10818511 0 .21345191-.03508894.3-.1l2.66666667-2c.2209139-.16568542.26568542-.4790861.1-.7-.02842713-.03790283-.06209717-.07157288-.1-.1z\\\" fill=\\\"currentColor\\\" fill-rule=\\\"nonzero\\\"/><path d=\\\"m2.464 11.5h10.036\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 3)\\\"><path d=\\\"m1.5 4.5h14v8c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2zm0-3.9777832h14c.5522847 0 1 .44771525 1 1v1.9777832c0 .55228475-.4477153 1-1 1h-14c-.55228475 0-1-.44771525-1-1v-1.9777832c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m5.5 10.5 3-3 3 3\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 7)\\\"><path d=\\\"m.5 6.5c3.33333333-4 6.33333333-6 9-6 2.6666667 0 5 1 7 3\\\"/><path d=\\\"m.5 1.5v5h5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"matrix(0 1 1 0 0 2)\\\"><path d=\\\"m8.54949429 2.5c-2.77910025-.01404818-5.48733216 1.42226095-6.97636172 4.0013358-2.209139 3.826341-.89813776 8.7190642 2.92820323 10.9282032s8.7190642.8981378 10.9282032-2.9282032.8981378-8.71906423-2.9282032-10.92820323\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m11.5 2.5-3 2.5v-5z\\\" fill=\\\"currentColor\\\" fill-rule=\\\"nonzero\\\"/><path d=\\\"m4.5 10.5h5v3\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m5.5 8.5c-.39387503 0-.0547637 0-1 0-2.209139 0-4-1.790861-4-4s1.790861-4 4-4h1m4 0h1c2.209139 0 4 1.790861 4 4s-1.790861 4-4 4c-.88888889 0-.55555556 0-1 0\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 6)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m8.5 9.5v1c0 2.209139-1.790861 4-4 4s-4-1.790861-4-4c0-.92155 0-.61385143 0-1m0-4c0-.44444444 0-.11111111 0-1 0-2.209139 1.790861-4 4-4s4 1.790861 4 4v1\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 3)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 3)\\\"><path d=\\\"m2.5 4.753 4-4.232 4 4.191\\\"/><path d=\\\"m6.5.5v11\\\"/><path d=\\\"m.5 14.5h12\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m11.5 4.5-3.978-4-4.022 4\\\"/><path d=\\\"m7.522.521v11.979\\\"/><path d=\\\"m.5 9v4.5c0 1.1045695.8954305 2 2 2h10c1.1045695 0 2-.8954305 2-2v-4.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m11.2101335 6.21112294c-3.40495694 3.85142476-6.97500142 5.27848636-10.7101335 4.28118476 3.71128748-.990935 6.28166929-3.41797502 7.71114545-7.28112007l-2.71114545-2.71118763h8v8z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m8.5 2.5 2 2v1c0 1.65685425-1.34314575 3-3 3-1.59768088 0-2.90366088-1.24891996-2.99490731-2.82372721l-.00509269-1.17627279z\\\" stroke-linecap=\\\"round\\\"/><path d=\\\"m2.5 10v-4.5c0-2.76142375 2.23857625-5 5-5 2.7614237 0 5 2.23857625 5 5v4.5\\\"/><path d=\\\"m14.5 14.5v-.7281753c0-3.1864098-3.6862915-5.2718247-7-5.2718247s-7 2.0854149-7 5.2718247v.7281753c0 .5522847.44771525 1 1 1h12c.5522847 0 1-.4477153 1-1z\\\" stroke-linecap=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m7.5.5c1.65685425 0 3 1.34314575 3 3v2c0 1.65685425-1.34314575 3-3 3s-3-1.34314575-3-3v-2c0-1.65685425 1.34314575-3 3-3z\\\"/><path d=\\\"m14.5 2.5v4\\\"/><path d=\\\"m16.5 4.5h-4\\\"/><path d=\\\"m14.5 14.5v-.7281753c0-3.1864098-3.6862915-5.2718247-7-5.2718247s-7 2.0854149-7 5.2718247v.7281753c0 .5522847.44771525 1 1 1h12c.5522847 0 1-.4477153 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\" stroke-linecap=\\\"round\\\"/><path d=\\\"m9.5 4.5 2 2v1c0 1.65685425-1.3431458 3-3 3-1.65685425 0-3-1.34314575-3-3v-1z\\\" stroke-linecap=\\\"round\\\"/><path d=\\\"m3.5 12v-4.5c0-2.76142375 2.23857625-5 5-5 2.7614237 0 5 2.23857625 5 5v4.5\\\"/><path d=\\\"m14.5 13.4041808c-.6615287-2.2735218-3.1995581-2.9293071-6-2.9293071-2.72749327 0-5.27073171.77299-6 2.9293071\\\" stroke-linecap=\\\"round\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m7.5.5c1.65685425 0 3 1.34314575 3 3v2c0 1.65685425-1.34314575 3-3 3s-3-1.34314575-3-3v-2c0-1.65685425 1.34314575-3 3-3zm7 14v-.7281753c0-3.1864098-3.6862915-5.2718247-7-5.2718247s-7 2.0854149-7 5.2718247v.7281753c0 .5522847.44771525 1 1 1h12c.5522847 0 1-.4477153 1-1z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"8\\\"/><path d=\\\"m14.5 13.5c-.6615287-2.2735217-3.1995581-3.0251263-6-3.0251263-2.72749327 0-5.27073171.8688092-6 3.0251263\\\"/><path d=\\\"m8.5 2.5c1.6568542 0 3 1.34314575 3 3v2c0 1.65685425-1.3431458 3-3 3-1.65685425 0-3-1.34314575-3-3v-2c0-1.65685425 1.34314575-3 3-3z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m7.5.5c1.65685425 0 3 1.34314575 3 3v2c0 1.65685425-1.34314575 3-3 3s-3-1.34314575-3-3v-2c0-1.65685425 1.34314575-3 3-3z\\\"/><path d=\\\"m16.5 4.5h-4\\\"/><path d=\\\"m14.5 14.5v-.7281753c0-3.1864098-3.6862915-5.2718247-7-5.2718247s-7 2.0854149-7 5.2718247v.7281753c0 .5522847.44771525 1 1 1h12c.5522847 0 1-.4477153 1-1z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 2)\\\"><path d=\\\"m7.5.5c1.65685425 0 3 1.34314575 3 3v2c0 1.65685425-1.34314575 3-3 3s-3-1.34314575-3-3v-2c0-1.65685425 1.34314575-3 3-3zm7 14v-.7281753c0-3.1864098-3.6862915-5.2718247-7-5.2718247s-7 2.0854149-7 5.2718247v.7281753c0 .5522847.44771525 1 1 1h12c.5522847 0 1-.4477153 1-1z\\\"/><path d=\\\"m11.5199327.67783074c1.1547685.41741154 1.9800673 1.52341097 1.9800673 2.82216926v1c0 1.29707884-.8475766 2.5813505-2 3 .6742649-.91876977 1.0109204-2.0857069 1.0099664-3.50081137s-.3309652-2.52222377-.9900337-3.32135789zm4.9800673 14.82216926h1c.5522847 0 1-.4477153 1-1 0-.2427251 0-.4854502 0-.7281753 0-2.1698712-1.7094418-3.82917861-3.8465775-4.66705336 0 0 2.8465775 2.39522866 1.8465775 6.39522866z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><circle cx=\\\"13.5\\\" cy=\\\"10.5\\\" r=\\\"5\\\"/><circle cx=\\\"7.5\\\" cy=\\\"10.5\\\" r=\\\"5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 4)\\\"><path d=\\\"m.5 8.5 8 4 8.017-4\\\"/><path d=\\\"m.5 4.657 8.008 3.843 8.009-3.843-8.009-4.157z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m.5 8.5 8 4 8.017-4\\\"/><path d=\\\"m.5 12.5 8 4 8.017-4\\\"/><path d=\\\"m.5 4.657 8.008 3.843 8.009-3.843-8.009-4.157z\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m2.5.5h6c1.1045695 0 2 .8954305 2 2v4c0 1.1045695-.8954305 2-2 2h-6c-1.1045695 0-2-.8954305-2-2v-4c0-1.1045695.8954305-2 2-2zm8 3 2.4-1.8c.4418278-.33137085 1.0686292-.2418278 1.4.2.1298221.17309617.2.38362979.2.6v4c0 .55228475-.4477153 1-1 1-.2163702 0-.4269038-.07017787-.6-.2l-2.4-1.8z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 6)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m1.5 5.5h3l5-5v16l-5-5h-3c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1z\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m1.5 5.5h3l5-5v16l-5-5h-3c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m11.5 8.5h4\\\"/><path d=\\\"m14.9142136 9.91421356-2.8284272-2.82842712z\\\" transform=\\\"matrix(.70710678 .70710678 -.70710678 .70710678 9.964466 -7.056349)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m9.5 7.5v9l-5-5h-3c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1h3l1.5-1.5\\\"/><path d=\\\"m7.521 2.479 1.979-1.979v5\\\"/><path d=\\\"m3.5 1.5 12 12\\\"/><path d=\\\"m11.5 6.5v1\\\"/><path d=\\\"m13.7200616 11.7079223c-.3369299.4755068-1.0769504 1.0728661-2.2200616 1.7920777\\\"/><path d=\\\"m11.5 9.5v1\\\"/><path d=\\\"m14.5 10c0-.69729457 0-1.19729457 0-1.5 0-1.82842712-.8333333-3.32842712-2.5-4.5\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m1.5 5.5h3l5-5v16l-5-5h-3c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1zm10 8c1.3333333-1 2-2.6666667 2-5 0-2.33333333-.6666667-4-2-5\\\"/><path d=\\\"m11.5 6.5v4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 2)\\\"><path d=\\\"m1.5 5.5h3l5-5v16l-5-5h-3c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m11.5 6.5v4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m1.5 5.5h3l5-5v16l-5-5h-3c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m11.5 8.5h4\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(2 2)\\\"><path d=\\\"m1.5 5.5h3l5-5v16l-5-5h-3c-.55228475 0-1-.4477153-1-1v-4c0-.55228475.44771525-1 1-1z\\\"/><path d=\\\"m11.5 6.5 4 4\\\"/><path d=\\\"m15.5 10.5-4-4z\\\" transform=\\\"matrix(0 1 -1 0 22 -5)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m.5 2.5h12c1.1045695 0 2 .8954305 2 2v6c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2zm1-2h9c.5522847 0 1 .44771525 1 1v1h-11v-1c0-.55228475.44771525-1 1-1z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"11.5\\\" cy=\\\"7.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"><circle cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"8\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m10.5 11.5v-5\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"10.5\\\" cy=\\\"14.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(-1 -1)\\\"><path d=\\\"m14.517 3.5 4.983 5v6l-4.983 5h-6.017l-5-5v-6l5-5z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m11.5 12.5v-5\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"11.5\\\" cy=\\\"15.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(1 1)\\\"><path d=\\\"m9.5.5 9 16h-18z\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><path d=\\\"m9.5 10.5v-5\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/><circle cx=\\\"9.5\\\" cy=\\\"13.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m8.5 8.5c0-4.418278-3.581722-8-8-8m5 8c0-2.76142375-2.23857625-5-5-5m2 5c0-1.1045695-.8954305-2-2-2\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(6 6)\\\"/></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1.228 .814)\\\"><path d=\\\"m14.279 13.701 4-4-4-4.015\\\"/><path d=\\\"m4.279 13.701-4-4 4-4.015\\\"/><path d=\\\"m15.636 3.322-12.728 12.728\\\" transform=\\\"matrix(.70710678 .70710678 -.70710678 .70710678 9.564742 -3.71933)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 6)\\\"><path d=\\\"m2.72727273 5.03333352c2.78085705-2.26478038 6.81913659-2.26478038 9.60000027 0m-12.04090936-2.36666667c4.12260033-3.55320047 10.30465946-3.55320047 14.42727306 0m-9.57954579 4.74000005c1.41874807-.9855538 3.31988897-.9855538 4.7386367 0\\\"/><circle cx=\\\"7.5\\\" cy=\\\"9.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m2.72727273 7.03333352c.83153145-.67721428 1.77549265-1.15192805 2.76464632-1.42414131m4.05036413-.00556707c.99655252.27128439 1.94775872.74785385 2.78498982 1.42970838\\\"/><path d=\\\"m7.5 8.5.027-8\\\"/><path d=\\\"m.28636364 4.66666685c1.5285413-1.31742426 3.34019897-2.14638559 5.22503093-2.48688401m4.08697814.02039968c1.84534719.35249472 3.61641569 1.17465617 5.11526399 2.46648433m-9.57954579 4.73999982c.16101236-.11184953.32823746-.21100517.50026542-.29746717m3.70520939-.01635045c.18361827.09024549.36190455.19485144.53316189.31381785\\\"/><circle cx=\\\"7.5\\\" cy=\\\"11.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 4)\\\"><path d=\\\"m2.72727273 7.03333352c1.02437795-.83427197 2.21938157-1.36122508 3.4593052-1.58085933m2.49530185-.03060587c1.30622661.19837518 2.56985592.73553025 3.64539322 1.6114652m-12.04090936-2.36666667c1.00768121-.86850363 2.13840543-1.52472018 3.3320224-1.96864965m2.08967936-.55194893c3.14127124-.50961507 6.4645995.33058446 9.0055713 2.52059858\\\"/><path d=\\\"m1 0 13 13.071\\\"/><path d=\\\"m5.13409091 9.4066669c1.41874807-.9855538 3.31988897-.9855538 4.7386367 0\\\"/><circle cx=\\\"7.5\\\" cy=\\\"11.5\\\" fill=\\\"currentColor\\\" r=\\\"1\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m2.5 2.5h10c1.1045695 0 2 .8954305 2 2v-2c0-1-.8954305-2-2-2h-10c-1.1045695 0-2 1-2 2v2c0-1.1045695.8954305-2 2-2z\\\" fill=\\\"currentColor\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m.5 12.5v-10c0-1.1045695.8954305-2 2-2h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2z\\\"/><path d=\\\"m2.5 12.5v-10c0-1.1045695.8954305-2 2-2h-2c-1 0-2 .8954305-2 2v10c0 1.1045695 1 2 2 2h2c-1.1045695 0-2-.8954305-2-2z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m7.5 10.5-3-3 3-3\\\"/><path d=\\\"m12.5 7.5h-8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m.5 12.5v-10c0-1.1045695.8954305-2 2-2h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2z\\\"/><path d=\\\"m12.5 12.5v-10c0-1.1045695-.8954305-2-2-2h2c1 0 2 .8954305 2 2v10c0 1.1045695-1 2-2 2h-2c1.1045695 0 2-.8954305 2-2z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m7.5 10.5 3-3-3-3\\\"/><path d=\\\"m10.5 7.5h-8\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m2.5.5h10c1.1045695 0 2 .8954305 2 2v10c0 1.1045695-.8954305 2-2 2h-10c-1.1045695 0-2-.8954305-2-2v-10c0-1.1045695.8954305-2 2-2z\\\"/><path d=\\\"m2.5 2.5h10c1.1045695 0 2 .8954305 2 2v-2c0-1-.8954305-2-2-2h-10c-1.1045695 0-2 1-2 2v2c0-1.1045695.8954305-2 2-2z\\\" fill=\\\"currentColor\\\"/><path d=\\\"m4.498 7.5h1\\\"/><path d=\\\"m4.498 5.5h3.997\\\"/><path d=\\\"m4.498 9.5h5.997\\\"/><path d=\\\"m4.498 11.5h3.997\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 6)\\\"><path d=\\\"m1.378 1.376 4.243.003v4.242\\\" transform=\\\"matrix(-.70710678 .70710678 .70710678 .70710678 3.500179 -1.449821)\\\"/><path d=\\\"m5.5 9.49998326h5c2 .00089417 3-.99910025 3-2.99998326s-1-3.00088859-3-3.00001674h-10\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(4 6)\\\"><path d=\\\"m8.378 1.376 4.243.003v4.242\\\" transform=\\\"matrix(.70710678 -.70710678 -.70710678 -.70710678 5.549155 13.396845)\\\"/><path d=\\\"m5.5 9.49996362h5c2 .00090726 3-.99908061 3-2.99996362s-1-3.00089514-3-3.00003638h-10\\\" transform=\\\"matrix(-1 0 0 1 14 0)\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><path d=\\\"m14 1c.8284271.82842712.8284271 2.17157288 0 3l-9.5 9.5-4 1 1-3.9436508 9.5038371-9.55252193c.7829896-.78700064 2.0312313-.82943964 2.864366-.12506788z\\\"/><path d=\\\"m6.5 14.5h8\\\"/><path d=\\\"m12.5 3.5 1 1\\\"/></g></svg>\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><circle cx=\\\"5.5\\\" cy=\\\"5.5\\\" r=\\\"5\\\"/><path d=\\\"M8.32842712 5.5L2.67157288 5.5 8.32842712 5.5zM5.5 8.32842712L5.5 2.67157288 5.5 8.32842712z\\\" transform=\\\"rotate(45 5.5 5.5)\\\"/><line x1=\\\"14.5\\\" x2=\\\"9.076\\\" y1=\\\"14.5\\\" y2=\\\"9.076\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><circle cx=\\\"5.5\\\" cy=\\\"5.5\\\" r=\\\"5\\\"/><path d=\\\"m7.5 5.5h-4zm-2 2v-4z\\\"/><path d=\\\"m14.5 14.5-5.367-5.367\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 3)\\\"><circle cx=\\\"5.5\\\" cy=\\\"5.5\\\" r=\\\"5\\\"/><path d=\\\"m7.5 5.5h-4z\\\"/><path d=\\\"m14.571 14.5-5.45-5.381\\\"/></g></svg>\"","export default \"<svg height=\\\"21\\\" viewBox=\\\"0 0 21 21\\\" width=\\\"21\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"currentColor\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(3 1)\\\"><path d=\\\"m.5 7.5c0 2.7614237 2.23857625 5 5 5 2.76142375 0 5-2.2385763 5-5 0-2.76142375-2.23857625-5-5-5-1.60217594 0-3.02834512.75357449-3.94340319 1.92561913\\\"/><path d=\\\"m1.5.5v4h4\\\"/><path d=\\\"m14.5 16.5-5.379-5.379\\\"/></g></svg>\"","/**\n * Auto-generated icon registry from System UI Icons\n * Generated: 2026-01-01T04:23:26.978Z\n * Total icons: 430\n *\n * DO NOT EDIT THIS FILE MANUALLY\n * Run: node source/components/icon/generate-icon-registry.js\n */\n\nimport { html, type TemplateResult } from 'lit';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n\nimport airplay from '../../../assets/icons/airplay.svg?raw';\nimport alarm_clock from '../../../assets/icons/alarm_clock.svg?raw';\nimport align_horizontal from '../../../assets/icons/align_horizontal.svg?raw';\nimport align_vertical from '../../../assets/icons/align_vertical.svg?raw';\nimport angle from '../../../assets/icons/angle.svg?raw';\nimport archive from '../../../assets/icons/archive.svg?raw';\nimport arrow_bottom_left from '../../../assets/icons/arrow_bottom_left.svg?raw';\nimport arrow_bottom_right from '../../../assets/icons/arrow_bottom_right.svg?raw';\nimport arrow_down from '../../../assets/icons/arrow_down.svg?raw';\nimport arrow_down_circle from '../../../assets/icons/arrow_down_circle.svg?raw';\nimport arrow_left from '../../../assets/icons/arrow_left.svg?raw';\nimport arrow_left_circle from '../../../assets/icons/arrow_left_circle.svg?raw';\nimport arrow_right from '../../../assets/icons/arrow_right.svg?raw';\nimport arrow_right_circle from '../../../assets/icons/arrow_right_circle.svg?raw';\nimport arrow_top_left from '../../../assets/icons/arrow_top_left.svg?raw';\nimport arrow_top_right from '../../../assets/icons/arrow_top_right.svg?raw';\nimport arrow_up from '../../../assets/icons/arrow_up.svg?raw';\nimport arrow_up_circle from '../../../assets/icons/arrow_up_circle.svg?raw';\nimport audio_wave from '../../../assets/icons/audio_wave.svg?raw';\nimport backspace from '../../../assets/icons/backspace.svg?raw';\nimport backward from '../../../assets/icons/backward.svg?raw';\nimport bag from '../../../assets/icons/bag.svg?raw';\nimport battery_75 from '../../../assets/icons/battery_75.svg?raw';\nimport battery_charging from '../../../assets/icons/battery_charging.svg?raw';\nimport battery_empty from '../../../assets/icons/battery_empty.svg?raw';\nimport battery_full from '../../../assets/icons/battery_full.svg?raw';\nimport battery_half from '../../../assets/icons/battery_half.svg?raw';\nimport battery_low from '../../../assets/icons/battery_low.svg?raw';\nimport bell from '../../../assets/icons/bell.svg?raw';\nimport bell_disabled from '../../../assets/icons/bell_disabled.svg?raw';\nimport bell_ringing from '../../../assets/icons/bell_ringing.svg?raw';\nimport bell_snooze from '../../../assets/icons/bell_snooze.svg?raw';\nimport bluetooth from '../../../assets/icons/bluetooth.svg?raw';\nimport book from '../../../assets/icons/book.svg?raw';\nimport book_closed from '../../../assets/icons/book_closed.svg?raw';\nimport book_text from '../../../assets/icons/book_text.svg?raw';\nimport bookmark from '../../../assets/icons/bookmark.svg?raw';\nimport bookmark_book from '../../../assets/icons/bookmark_book.svg?raw';\nimport box from '../../../assets/icons/box.svg?raw';\nimport box_add from '../../../assets/icons/box_add.svg?raw';\nimport box_download from '../../../assets/icons/box_download.svg?raw';\nimport box_open from '../../../assets/icons/box_open.svg?raw';\nimport box_remove from '../../../assets/icons/box_remove.svg?raw';\nimport boxes from '../../../assets/icons/boxes.svg?raw';\nimport branch from '../../../assets/icons/branch.svg?raw';\nimport briefcase from '../../../assets/icons/briefcase.svg?raw';\nimport browser from '../../../assets/icons/browser.svg?raw';\nimport browser_alt from '../../../assets/icons/browser_alt.svg?raw';\nimport button_add from '../../../assets/icons/button_add.svg?raw';\nimport button_minus from '../../../assets/icons/button_minus.svg?raw';\nimport calculator from '../../../assets/icons/calculator.svg?raw';\nimport calendar from '../../../assets/icons/calendar.svg?raw';\nimport calendar_add from '../../../assets/icons/calendar_add.svg?raw';\nimport calendar_date from '../../../assets/icons/calendar_date.svg?raw';\nimport calendar_day from '../../../assets/icons/calendar_day.svg?raw';\nimport calendar_days from '../../../assets/icons/calendar_days.svg?raw';\nimport calendar_last_day from '../../../assets/icons/calendar_last_day.svg?raw';\nimport calendar_month from '../../../assets/icons/calendar_month.svg?raw';\nimport calendar_move from '../../../assets/icons/calendar_move.svg?raw';\nimport calendar_remove from '../../../assets/icons/calendar_remove.svg?raw';\nimport calendar_split from '../../../assets/icons/calendar_split.svg?raw';\nimport calendar_week from '../../../assets/icons/calendar_week.svg?raw';\nimport camera from '../../../assets/icons/camera.svg?raw';\nimport camera_alt from '../../../assets/icons/camera_alt.svg?raw';\nimport camera_noflash from '../../../assets/icons/camera_noflash.svg?raw';\nimport camera_noflash_alt from '../../../assets/icons/camera_noflash_alt.svg?raw';\nimport capture from '../../../assets/icons/capture.svg?raw';\nimport card_timeline from '../../../assets/icons/card_timeline.svg?raw';\nimport card_view from '../../../assets/icons/card_view.svg?raw';\nimport carousel from '../../../assets/icons/carousel.svg?raw';\nimport cart from '../../../assets/icons/cart.svg?raw';\nimport cast from '../../../assets/icons/cast.svg?raw';\nimport chain from '../../../assets/icons/chain.svg?raw';\nimport chat_add from '../../../assets/icons/chat_add.svg?raw';\nimport check from '../../../assets/icons/check.svg?raw';\nimport check_circle from '../../../assets/icons/check_circle.svg?raw';\nimport check_circle_outside from '../../../assets/icons/check_circle_outside.svg?raw';\nimport checkbox_checked from '../../../assets/icons/checkbox_checked.svg?raw';\nimport checkbox_empty from '../../../assets/icons/checkbox_empty.svg?raw';\nimport chevron_close from '../../../assets/icons/chevron_close.svg?raw';\nimport chevron_down from '../../../assets/icons/chevron_down.svg?raw';\nimport chevron_down_circle from '../../../assets/icons/chevron_down_circle.svg?raw';\nimport chevron_down_double from '../../../assets/icons/chevron_down_double.svg?raw';\nimport chevron_left from '../../../assets/icons/chevron_left.svg?raw';\nimport chevron_left_circle from '../../../assets/icons/chevron_left_circle.svg?raw';\nimport chevron_left_double from '../../../assets/icons/chevron_left_double.svg?raw';\nimport chevron_open from '../../../assets/icons/chevron_open.svg?raw';\nimport chevron_right from '../../../assets/icons/chevron_right.svg?raw';\nimport chevron_right_circle from '../../../assets/icons/chevron_right_circle.svg?raw';\nimport chevron_right_double from '../../../assets/icons/chevron_right_double.svg?raw';\nimport chevron_up from '../../../assets/icons/chevron_up.svg?raw';\nimport chevron_up_circle from '../../../assets/icons/chevron_up_circle.svg?raw';\nimport chevron_up_double from '../../../assets/icons/chevron_up_double.svg?raw';\nimport circle from '../../../assets/icons/circle.svg?raw';\nimport circle_menu from '../../../assets/icons/circle_menu.svg?raw';\nimport circle_split from '../../../assets/icons/circle_split.svg?raw';\nimport clipboard from '../../../assets/icons/clipboard.svg?raw';\nimport clipboard_add from '../../../assets/icons/clipboard_add.svg?raw';\nimport clipboard_check from '../../../assets/icons/clipboard_check.svg?raw';\nimport clipboard_copy from '../../../assets/icons/clipboard_copy.svg?raw';\nimport clipboard_cross from '../../../assets/icons/clipboard_cross.svg?raw';\nimport clipboard_notes from '../../../assets/icons/clipboard_notes.svg?raw';\nimport clipboard_remove from '../../../assets/icons/clipboard_remove.svg?raw';\nimport clock from '../../../assets/icons/clock.svg?raw';\nimport close from '../../../assets/icons/close.svg?raw';\nimport cloud from '../../../assets/icons/cloud.svg?raw';\nimport cloud_disconnect from '../../../assets/icons/cloud_disconnect.svg?raw';\nimport cloud_download from '../../../assets/icons/cloud_download.svg?raw';\nimport cloud_download_alt from '../../../assets/icons/cloud_download_alt.svg?raw';\nimport cloud_upload from '../../../assets/icons/cloud_upload.svg?raw';\nimport cloud_upload_alt from '../../../assets/icons/cloud_upload_alt.svg?raw';\nimport code from '../../../assets/icons/code.svg?raw';\nimport coffee from '../../../assets/icons/coffee.svg?raw';\nimport coin from '../../../assets/icons/coin.svg?raw';\nimport coins from '../../../assets/icons/coins.svg?raw';\nimport compass from '../../../assets/icons/compass.svg?raw';\nimport component_add from '../../../assets/icons/component_add.svg?raw';\nimport contacts from '../../../assets/icons/contacts.svg?raw';\nimport contract from '../../../assets/icons/contract.svg?raw';\nimport create from '../../../assets/icons/create.svg?raw';\nimport credit_card from '../../../assets/icons/credit_card.svg?raw';\nimport crop from '../../../assets/icons/crop.svg?raw';\nimport cross from '../../../assets/icons/cross.svg?raw';\nimport cross_circle from '../../../assets/icons/cross_circle.svg?raw';\nimport crosshair from '../../../assets/icons/crosshair.svg?raw';\nimport cube from '../../../assets/icons/cube.svg?raw';\nimport cubes from '../../../assets/icons/cubes.svg?raw';\nimport cylinder from '../../../assets/icons/cylinder.svg?raw';\nimport database from '../../../assets/icons/database.svg?raw';\nimport diamond from '../../../assets/icons/diamond.svg?raw';\nimport directions from '../../../assets/icons/directions.svg?raw';\nimport disc from '../../../assets/icons/disc.svg?raw';\nimport display from '../../../assets/icons/display.svg?raw';\nimport display_alt from '../../../assets/icons/display_alt.svg?raw';\nimport document from '../../../assets/icons/document.svg?raw';\nimport document_justified from '../../../assets/icons/document_justified.svg?raw';\nimport document_list from '../../../assets/icons/document_list.svg?raw';\nimport document_stack from '../../../assets/icons/document_stack.svg?raw';\nimport document_words from '../../../assets/icons/document_words.svg?raw';\nimport door from '../../../assets/icons/door.svg?raw';\nimport door_alt from '../../../assets/icons/door_alt.svg?raw';\nimport download from '../../../assets/icons/download.svg?raw';\nimport download_alt from '../../../assets/icons/download_alt.svg?raw';\nimport downward from '../../../assets/icons/downward.svg?raw';\nimport drag from '../../../assets/icons/drag.svg?raw';\nimport drag_circle from '../../../assets/icons/drag_circle.svg?raw';\nimport drag_vertical from '../../../assets/icons/drag_vertical.svg?raw';\nimport duplicate from '../../../assets/icons/duplicate.svg?raw';\nimport duplicate_alt from '../../../assets/icons/duplicate_alt.svg?raw';\nimport enter from '../../../assets/icons/enter.svg?raw';\nimport enter_alt from '../../../assets/icons/enter_alt.svg?raw';\nimport episodes from '../../../assets/icons/episodes.svg?raw';\nimport exit_left from '../../../assets/icons/exit_left.svg?raw';\nimport exit_right from '../../../assets/icons/exit_right.svg?raw';\nimport expand from '../../../assets/icons/expand.svg?raw';\nimport expand_height from '../../../assets/icons/expand_height.svg?raw';\nimport expand_width from '../../../assets/icons/expand_width.svg?raw';\nimport external from '../../../assets/icons/external.svg?raw';\nimport eye from '../../../assets/icons/eye.svg?raw';\nimport eye_closed from '../../../assets/icons/eye_closed.svg?raw';\nimport eye_no from '../../../assets/icons/eye_no.svg?raw';\nimport face_delighted from '../../../assets/icons/face_delighted.svg?raw';\nimport face_happy from '../../../assets/icons/face_happy.svg?raw';\nimport face_neutral from '../../../assets/icons/face_neutral.svg?raw';\nimport face_sad from '../../../assets/icons/face_sad.svg?raw';\nimport file_download from '../../../assets/icons/file_download.svg?raw';\nimport file_upload from '../../../assets/icons/file_upload.svg?raw';\nimport files_history from '../../../assets/icons/files_history.svg?raw';\nimport files_multi from '../../../assets/icons/files_multi.svg?raw';\nimport files_stack from '../../../assets/icons/files_stack.svg?raw';\nimport film from '../../../assets/icons/film.svg?raw';\nimport filter from '../../../assets/icons/filter.svg?raw';\nimport filter_circle from '../../../assets/icons/filter_circle.svg?raw';\nimport filter_single from '../../../assets/icons/filter_single.svg?raw';\nimport filtering from '../../../assets/icons/filtering.svg?raw';\nimport fingerprint from '../../../assets/icons/fingerprint.svg?raw';\nimport flag from '../../../assets/icons/flag.svg?raw';\nimport flame from '../../../assets/icons/flame.svg?raw';\nimport flame_alt from '../../../assets/icons/flame_alt.svg?raw';\nimport flip_view from '../../../assets/icons/flip_view.svg?raw';\nimport floppy from '../../../assets/icons/floppy.svg?raw';\nimport folder_add from '../../../assets/icons/folder_add.svg?raw';\nimport folder_closed from '../../../assets/icons/folder_closed.svg?raw';\nimport folder_minus from '../../../assets/icons/folder_minus.svg?raw';\nimport folder_open from '../../../assets/icons/folder_open.svg?raw';\nimport fork_git from '../../../assets/icons/fork_git.svg?raw';\nimport forward from '../../../assets/icons/forward.svg?raw';\nimport frame from '../../../assets/icons/frame.svg?raw';\nimport fullscreen from '../../../assets/icons/fullscreen.svg?raw';\nimport funnel from '../../../assets/icons/funnel.svg?raw';\nimport gauge from '../../../assets/icons/gauge.svg?raw';\nimport gift from '../../../assets/icons/gift.svg?raw';\nimport globe from '../../../assets/icons/globe.svg?raw';\nimport gps from '../../../assets/icons/gps.svg?raw';\nimport grab from '../../../assets/icons/grab.svg?raw';\nimport graph_bar from '../../../assets/icons/graph_bar.svg?raw';\nimport graph_box from '../../../assets/icons/graph_box.svg?raw';\nimport graph_increase from '../../../assets/icons/graph_increase.svg?raw';\nimport grid from '../../../assets/icons/grid.svg?raw';\nimport grid_circles from '../../../assets/icons/grid_circles.svg?raw';\nimport grid_circles_add from '../../../assets/icons/grid_circles_add.svg?raw';\nimport grid_small from '../../../assets/icons/grid_small.svg?raw';\nimport grid_squares from '../../../assets/icons/grid_squares.svg?raw';\nimport grid_squares_add from '../../../assets/icons/grid_squares_add.svg?raw';\nimport hand from '../../../assets/icons/hand.svg?raw';\nimport harddrive from '../../../assets/icons/harddrive.svg?raw';\nimport hash from '../../../assets/icons/hash.svg?raw';\nimport heart from '../../../assets/icons/heart.svg?raw';\nimport heart_rate from '../../../assets/icons/heart_rate.svg?raw';\nimport heart_remove from '../../../assets/icons/heart_remove.svg?raw';\nimport height from '../../../assets/icons/height.svg?raw';\nimport hierarchy from '../../../assets/icons/hierarchy.svg?raw';\nimport home from '../../../assets/icons/home.svg?raw';\nimport home_alt from '../../../assets/icons/home_alt.svg?raw';\nimport home_check from '../../../assets/icons/home_check.svg?raw';\nimport home_door from '../../../assets/icons/home_door.svg?raw';\nimport _import from '../../../assets/icons/import.svg?raw';\nimport inbox from '../../../assets/icons/inbox.svg?raw';\nimport inbox_alt from '../../../assets/icons/inbox_alt.svg?raw';\nimport info_circle from '../../../assets/icons/info_circle.svg?raw';\nimport iphone_landscape from '../../../assets/icons/iphone_landscape.svg?raw';\nimport iphone_portrait from '../../../assets/icons/iphone_portrait.svg?raw';\nimport jump_backward from '../../../assets/icons/jump_backward.svg?raw';\nimport jump_forward from '../../../assets/icons/jump_forward.svg?raw';\nimport jump_left from '../../../assets/icons/jump_left.svg?raw';\nimport jump_right from '../../../assets/icons/jump_right.svg?raw';\nimport keyboard from '../../../assets/icons/keyboard.svg?raw';\nimport laptop from '../../../assets/icons/laptop.svg?raw';\nimport lightbulb from '../../../assets/icons/lightbulb.svg?raw';\nimport lightbulb_on from '../../../assets/icons/lightbulb_on.svg?raw';\nimport lightning from '../../../assets/icons/lightning.svg?raw';\nimport lightning_alt from '../../../assets/icons/lightning_alt.svg?raw';\nimport lineweight from '../../../assets/icons/lineweight.svg?raw';\nimport link from '../../../assets/icons/link.svg?raw';\nimport link_alt from '../../../assets/icons/link_alt.svg?raw';\nimport link_broken from '../../../assets/icons/link_broken.svg?raw';\nimport link_horizontal from '../../../assets/icons/link_horizontal.svg?raw';\nimport link_vertical from '../../../assets/icons/link_vertical.svg?raw';\nimport list from '../../../assets/icons/list.svg?raw';\nimport list_add from '../../../assets/icons/list_add.svg?raw';\nimport list_numbered from '../../../assets/icons/list_numbered.svg?raw';\nimport loader from '../../../assets/icons/loader.svg?raw';\nimport location from '../../../assets/icons/location.svg?raw';\nimport lock from '../../../assets/icons/lock.svg?raw';\nimport lock_open from '../../../assets/icons/lock_open.svg?raw';\nimport mail from '../../../assets/icons/mail.svg?raw';\nimport mail_add from '../../../assets/icons/mail_add.svg?raw';\nimport mail_delete from '../../../assets/icons/mail_delete.svg?raw';\nimport mail_minus from '../../../assets/icons/mail_minus.svg?raw';\nimport mail_new from '../../../assets/icons/mail_new.svg?raw';\nimport mail_open from '../../../assets/icons/mail_open.svg?raw';\nimport mail_remove from '../../../assets/icons/mail_remove.svg?raw';\nimport marquee from '../../../assets/icons/marquee.svg?raw';\nimport maximise from '../../../assets/icons/maximise.svg?raw';\nimport menu_hamburger from '../../../assets/icons/menu_hamburger.svg?raw';\nimport menu_horizontal from '../../../assets/icons/menu_horizontal.svg?raw';\nimport menu_vertical from '../../../assets/icons/menu_vertical.svg?raw';\nimport message from '../../../assets/icons/message.svg?raw';\nimport message_writing from '../../../assets/icons/message_writing.svg?raw';\nimport microphone from '../../../assets/icons/microphone.svg?raw';\nimport microphone_disabled from '../../../assets/icons/microphone_disabled.svg?raw';\nimport microphone_muted from '../../../assets/icons/microphone_muted.svg?raw';\nimport midpoint from '../../../assets/icons/midpoint.svg?raw';\nimport mini_player from '../../../assets/icons/mini_player.svg?raw';\nimport minimise from '../../../assets/icons/minimise.svg?raw';\nimport minus from '../../../assets/icons/minus.svg?raw';\nimport minus_circle from '../../../assets/icons/minus_circle.svg?raw';\nimport moon from '../../../assets/icons/moon.svg?raw';\nimport move from '../../../assets/icons/move.svg?raw';\nimport newspaper from '../../../assets/icons/newspaper.svg?raw';\nimport no_sign from '../../../assets/icons/no_sign.svg?raw';\nimport notebook from '../../../assets/icons/notebook.svg?raw';\nimport notification from '../../../assets/icons/notification.svg?raw';\nimport nut from '../../../assets/icons/nut.svg?raw';\nimport pages from '../../../assets/icons/pages.svg?raw';\nimport panel_bottom from '../../../assets/icons/panel_bottom.svg?raw';\nimport panel_center from '../../../assets/icons/panel_center.svg?raw';\nimport panel_left from '../../../assets/icons/panel_left.svg?raw';\nimport panel_right from '../../../assets/icons/panel_right.svg?raw';\nimport panel_sectioned from '../../../assets/icons/panel_sectioned.svg?raw';\nimport panel_top from '../../../assets/icons/panel_top.svg?raw';\nimport paper from '../../../assets/icons/paper.svg?raw';\nimport paper_folded from '../../../assets/icons/paper_folded.svg?raw';\nimport paper_plane from '../../../assets/icons/paper_plane.svg?raw';\nimport paper_plane_alt from '../../../assets/icons/paper_plane_alt.svg?raw';\nimport paperclip from '../../../assets/icons/paperclip.svg?raw';\nimport paragraph_center from '../../../assets/icons/paragraph_center.svg?raw';\nimport paragraph_end from '../../../assets/icons/paragraph_end.svg?raw';\nimport paragraph_left from '../../../assets/icons/paragraph_left.svg?raw';\nimport paragraph_right from '../../../assets/icons/paragraph_right.svg?raw';\nimport paragraph_start from '../../../assets/icons/paragraph_start.svg?raw';\nimport pen from '../../../assets/icons/pen.svg?raw';\nimport phone_landscape from '../../../assets/icons/phone_landscape.svg?raw';\nimport phone_portrait from '../../../assets/icons/phone_portrait.svg?raw';\nimport picture from '../../../assets/icons/picture.svg?raw';\nimport pie_half from '../../../assets/icons/pie_half.svg?raw';\nimport pie_quarter from '../../../assets/icons/pie_quarter.svg?raw';\nimport pie_third from '../../../assets/icons/pie_third.svg?raw';\nimport pill from '../../../assets/icons/pill.svg?raw';\nimport play_button from '../../../assets/icons/play_button.svg?raw';\nimport plus from '../../../assets/icons/plus.svg?raw';\nimport plus_circle from '../../../assets/icons/plus_circle.svg?raw';\nimport postcard from '../../../assets/icons/postcard.svg?raw';\nimport printer from '../../../assets/icons/printer.svg?raw';\nimport projector from '../../../assets/icons/projector.svg?raw';\nimport pull_down from '../../../assets/icons/pull_down.svg?raw';\nimport pull_left from '../../../assets/icons/pull_left.svg?raw';\nimport pull_right from '../../../assets/icons/pull_right.svg?raw';\nimport pull_up from '../../../assets/icons/pull_up.svg?raw';\nimport push_down from '../../../assets/icons/push_down.svg?raw';\nimport push_left from '../../../assets/icons/push_left.svg?raw';\nimport push_right from '../../../assets/icons/push_right.svg?raw';\nimport push_up from '../../../assets/icons/push_up.svg?raw';\nimport question_circle from '../../../assets/icons/question_circle.svg?raw';\nimport radio_on from '../../../assets/icons/radio_on.svg?raw';\nimport receipt from '../../../assets/icons/receipt.svg?raw';\nimport record from '../../../assets/icons/record.svg?raw';\nimport redo from '../../../assets/icons/redo.svg?raw';\nimport refresh from '../../../assets/icons/refresh.svg?raw';\nimport refresh_alt from '../../../assets/icons/refresh_alt.svg?raw';\nimport replicate from '../../../assets/icons/replicate.svg?raw';\nimport replicate_alt from '../../../assets/icons/replicate_alt.svg?raw';\nimport reset from '../../../assets/icons/reset.svg?raw';\nimport reset_alt from '../../../assets/icons/reset_alt.svg?raw';\nimport reset_forward from '../../../assets/icons/reset_forward.svg?raw';\nimport reset_hard from '../../../assets/icons/reset_hard.svg?raw';\nimport reset_temporary from '../../../assets/icons/reset_temporary.svg?raw';\nimport retweet from '../../../assets/icons/retweet.svg?raw';\nimport reuse from '../../../assets/icons/reuse.svg?raw';\nimport reverse from '../../../assets/icons/reverse.svg?raw';\nimport reverse_alt from '../../../assets/icons/reverse_alt.svg?raw';\nimport revert from '../../../assets/icons/revert.svg?raw';\nimport rocket from '../../../assets/icons/rocket.svg?raw';\nimport ruler from '../../../assets/icons/ruler.svg?raw';\nimport scale from '../../../assets/icons/scale.svg?raw';\nimport scale_contract from '../../../assets/icons/scale_contract.svg?raw';\nimport scale_extend from '../../../assets/icons/scale_extend.svg?raw';\nimport scalpel from '../../../assets/icons/scalpel.svg?raw';\nimport search from '../../../assets/icons/search.svg?raw';\nimport server from '../../../assets/icons/server.svg?raw';\nimport settings from '../../../assets/icons/settings.svg?raw';\nimport share from '../../../assets/icons/share.svg?raw';\nimport share_alt from '../../../assets/icons/share_alt.svg?raw';\nimport shuffle from '../../../assets/icons/shuffle.svg?raw';\nimport side_menu from '../../../assets/icons/side_menu.svg?raw';\nimport signal_full from '../../../assets/icons/signal_full.svg?raw';\nimport signal_low from '../../../assets/icons/signal_low.svg?raw';\nimport signal_medium from '../../../assets/icons/signal_medium.svg?raw';\nimport signal_none from '../../../assets/icons/signal_none.svg?raw';\nimport slash_backward from '../../../assets/icons/slash_backward.svg?raw';\nimport slash_forward from '../../../assets/icons/slash_forward.svg?raw';\nimport sliders from '../../../assets/icons/sliders.svg?raw';\nimport sort from '../../../assets/icons/sort.svg?raw';\nimport sort_alt from '../../../assets/icons/sort_alt.svg?raw';\nimport speaker from '../../../assets/icons/speaker.svg?raw';\nimport speech_bubble from '../../../assets/icons/speech_bubble.svg?raw';\nimport speech_typing from '../../../assets/icons/speech_typing.svg?raw';\nimport split from '../../../assets/icons/split.svg?raw';\nimport split_three from '../../../assets/icons/split_three.svg?raw';\nimport star from '../../../assets/icons/star.svg?raw';\nimport sun from '../../../assets/icons/sun.svg?raw';\nimport support from '../../../assets/icons/support.svg?raw';\nimport swap from '../../../assets/icons/swap.svg?raw';\nimport _switch from '../../../assets/icons/switch.svg?raw';\nimport table from '../../../assets/icons/table.svg?raw';\nimport table_header from '../../../assets/icons/table_header.svg?raw';\nimport tag from '../../../assets/icons/tag.svg?raw';\nimport tag_milestone from '../../../assets/icons/tag_milestone.svg?raw';\nimport tags from '../../../assets/icons/tags.svg?raw';\nimport target from '../../../assets/icons/target.svg?raw';\nimport terminal from '../../../assets/icons/terminal.svg?raw';\nimport thread from '../../../assets/icons/thread.svg?raw';\nimport thumbs_down from '../../../assets/icons/thumbs_down.svg?raw';\nimport thumbs_up from '../../../assets/icons/thumbs_up.svg?raw';\nimport ticket from '../../../assets/icons/ticket.svg?raw';\nimport timeline from '../../../assets/icons/timeline.svg?raw';\nimport todo from '../../../assets/icons/todo.svg?raw';\nimport toggle from '../../../assets/icons/toggle.svg?raw';\nimport toggles from '../../../assets/icons/toggles.svg?raw';\nimport translate from '../../../assets/icons/translate.svg?raw';\nimport trash from '../../../assets/icons/trash.svg?raw';\nimport trash_alt from '../../../assets/icons/trash_alt.svg?raw';\nimport trophy from '../../../assets/icons/trophy.svg?raw';\nimport tv_mode from '../../../assets/icons/tv_mode.svg?raw';\nimport unarchive from '../../../assets/icons/unarchive.svg?raw';\nimport undo from '../../../assets/icons/undo.svg?raw';\nimport undo_history from '../../../assets/icons/undo_history.svg?raw';\nimport unlink_horizontal from '../../../assets/icons/unlink_horizontal.svg?raw';\nimport unlink_vertical from '../../../assets/icons/unlink_vertical.svg?raw';\nimport upload from '../../../assets/icons/upload.svg?raw';\nimport upload_alt from '../../../assets/icons/upload_alt.svg?raw';\nimport upward from '../../../assets/icons/upward.svg?raw';\nimport user from '../../../assets/icons/user.svg?raw';\nimport user_add from '../../../assets/icons/user_add.svg?raw';\nimport user_circle from '../../../assets/icons/user_circle.svg?raw';\nimport user_male from '../../../assets/icons/user_male.svg?raw';\nimport user_male_circle from '../../../assets/icons/user_male_circle.svg?raw';\nimport user_remove from '../../../assets/icons/user_remove.svg?raw';\nimport users from '../../../assets/icons/users.svg?raw';\nimport venn from '../../../assets/icons/venn.svg?raw';\nimport version from '../../../assets/icons/version.svg?raw';\nimport versions from '../../../assets/icons/versions.svg?raw';\nimport video from '../../../assets/icons/video.svg?raw';\nimport volume_0 from '../../../assets/icons/volume_0.svg?raw';\nimport volume_add from '../../../assets/icons/volume_add.svg?raw';\nimport volume_disabled from '../../../assets/icons/volume_disabled.svg?raw';\nimport volume_high from '../../../assets/icons/volume_high.svg?raw';\nimport volume_low from '../../../assets/icons/volume_low.svg?raw';\nimport volume_minus from '../../../assets/icons/volume_minus.svg?raw';\nimport volume_muted from '../../../assets/icons/volume_muted.svg?raw';\nimport wallet from '../../../assets/icons/wallet.svg?raw';\nimport warning_circle from '../../../assets/icons/warning_circle.svg?raw';\nimport warning_hex from '../../../assets/icons/warning_hex.svg?raw';\nimport warning_triangle from '../../../assets/icons/warning_triangle.svg?raw';\nimport waves from '../../../assets/icons/waves.svg?raw';\nimport width from '../../../assets/icons/width.svg?raw';\nimport wifi from '../../../assets/icons/wifi.svg?raw';\nimport wifi_error from '../../../assets/icons/wifi_error.svg?raw';\nimport wifi_none from '../../../assets/icons/wifi_none.svg?raw';\nimport window from '../../../assets/icons/window.svg?raw';\nimport window_collapse_left from '../../../assets/icons/window_collapse_left.svg?raw';\nimport window_collapse_right from '../../../assets/icons/window_collapse_right.svg?raw';\nimport window_content from '../../../assets/icons/window_content.svg?raw';\nimport wrap_back from '../../../assets/icons/wrap_back.svg?raw';\nimport wrap_forward from '../../../assets/icons/wrap_forward.svg?raw';\nimport write from '../../../assets/icons/write.svg?raw';\nimport zoom_cancel from '../../../assets/icons/zoom_cancel.svg?raw';\nimport zoom_in from '../../../assets/icons/zoom_in.svg?raw';\nimport zoom_out from '../../../assets/icons/zoom_out.svg?raw';\nimport zoom_reset from '../../../assets/icons/zoom_reset.svg?raw';\n\n/**\n * Registry of all available System UI Icons\n */\nconst iconRegistry: Record<string, string> = {\n airplay: airplay,\n 'alarm-clock': alarm_clock,\n 'align-horizontal': align_horizontal,\n 'align-vertical': align_vertical,\n angle: angle,\n archive: archive,\n 'arrow-bottom-left': arrow_bottom_left,\n 'arrow-bottom-right': arrow_bottom_right,\n 'arrow-down': arrow_down,\n 'arrow-down-circle': arrow_down_circle,\n 'arrow-left': arrow_left,\n 'arrow-left-circle': arrow_left_circle,\n 'arrow-right': arrow_right,\n 'arrow-right-circle': arrow_right_circle,\n 'arrow-top-left': arrow_top_left,\n 'arrow-top-right': arrow_top_right,\n 'arrow-up': arrow_up,\n 'arrow-up-circle': arrow_up_circle,\n 'audio-wave': audio_wave,\n backspace: backspace,\n backward: backward,\n bag: bag,\n 'battery-75': battery_75,\n 'battery-charging': battery_charging,\n 'battery-empty': battery_empty,\n 'battery-full': battery_full,\n 'battery-half': battery_half,\n 'battery-low': battery_low,\n bell: bell,\n 'bell-disabled': bell_disabled,\n 'bell-ringing': bell_ringing,\n 'bell-snooze': bell_snooze,\n bluetooth: bluetooth,\n book: book,\n 'book-closed': book_closed,\n 'book-text': book_text,\n bookmark: bookmark,\n 'bookmark-book': bookmark_book,\n box: box,\n 'box-add': box_add,\n 'box-download': box_download,\n 'box-open': box_open,\n 'box-remove': box_remove,\n boxes: boxes,\n branch: branch,\n briefcase: briefcase,\n browser: browser,\n 'browser-alt': browser_alt,\n 'button-add': button_add,\n 'button-minus': button_minus,\n calculator: calculator,\n calendar: calendar,\n 'calendar-add': calendar_add,\n 'calendar-date': calendar_date,\n 'calendar-day': calendar_day,\n 'calendar-days': calendar_days,\n 'calendar-last-day': calendar_last_day,\n 'calendar-month': calendar_month,\n 'calendar-move': calendar_move,\n 'calendar-remove': calendar_remove,\n 'calendar-split': calendar_split,\n 'calendar-week': calendar_week,\n camera: camera,\n 'camera-alt': camera_alt,\n 'camera-noflash': camera_noflash,\n 'camera-noflash-alt': camera_noflash_alt,\n capture: capture,\n 'card-timeline': card_timeline,\n 'card-view': card_view,\n carousel: carousel,\n cart: cart,\n cast: cast,\n chain: chain,\n 'chat-add': chat_add,\n check: check,\n 'check-circle': check_circle,\n 'check-circle-outside': check_circle_outside,\n 'checkbox-checked': checkbox_checked,\n 'checkbox-empty': checkbox_empty,\n 'chevron-close': chevron_close,\n 'chevron-down': chevron_down,\n 'chevron-down-circle': chevron_down_circle,\n 'chevron-down-double': chevron_down_double,\n 'chevron-left': chevron_left,\n 'chevron-left-circle': chevron_left_circle,\n 'chevron-left-double': chevron_left_double,\n 'chevron-open': chevron_open,\n 'chevron-right': chevron_right,\n 'chevron-right-circle': chevron_right_circle,\n 'chevron-right-double': chevron_right_double,\n 'chevron-up': chevron_up,\n 'chevron-up-circle': chevron_up_circle,\n 'chevron-up-double': chevron_up_double,\n circle: circle,\n 'circle-menu': circle_menu,\n 'circle-split': circle_split,\n clipboard: clipboard,\n 'clipboard-add': clipboard_add,\n 'clipboard-check': clipboard_check,\n 'clipboard-copy': clipboard_copy,\n 'clipboard-cross': clipboard_cross,\n 'clipboard-notes': clipboard_notes,\n 'clipboard-remove': clipboard_remove,\n clock: clock,\n close: close,\n cloud: cloud,\n 'cloud-disconnect': cloud_disconnect,\n 'cloud-download': cloud_download,\n 'cloud-download-alt': cloud_download_alt,\n 'cloud-upload': cloud_upload,\n 'cloud-upload-alt': cloud_upload_alt,\n code: code,\n coffee: coffee,\n coin: coin,\n coins: coins,\n compass: compass,\n 'component-add': component_add,\n contacts: contacts,\n contract: contract,\n create: create,\n 'credit-card': credit_card,\n crop: crop,\n cross: cross,\n 'cross-circle': cross_circle,\n crosshair: crosshair,\n cube: cube,\n cubes: cubes,\n cylinder: cylinder,\n database: database,\n diamond: diamond,\n directions: directions,\n disc: disc,\n display: display,\n 'display-alt': display_alt,\n document: document,\n 'document-justified': document_justified,\n 'document-list': document_list,\n 'document-stack': document_stack,\n 'document-words': document_words,\n door: door,\n 'door-alt': door_alt,\n download: download,\n 'download-alt': download_alt,\n downward: downward,\n drag: drag,\n 'drag-circle': drag_circle,\n 'drag-vertical': drag_vertical,\n duplicate: duplicate,\n 'duplicate-alt': duplicate_alt,\n enter: enter,\n 'enter-alt': enter_alt,\n episodes: episodes,\n 'exit-left': exit_left,\n 'exit-right': exit_right,\n expand: expand,\n 'expand-height': expand_height,\n 'expand-width': expand_width,\n external: external,\n eye: eye,\n 'eye-closed': eye_closed,\n 'eye-no': eye_no,\n 'face-delighted': face_delighted,\n 'face-happy': face_happy,\n 'face-neutral': face_neutral,\n 'face-sad': face_sad,\n 'file-download': file_download,\n 'file-upload': file_upload,\n 'files-history': files_history,\n 'files-multi': files_multi,\n 'files-stack': files_stack,\n film: film,\n filter: filter,\n 'filter-circle': filter_circle,\n 'filter-single': filter_single,\n filtering: filtering,\n fingerprint: fingerprint,\n flag: flag,\n flame: flame,\n 'flame-alt': flame_alt,\n 'flip-view': flip_view,\n floppy: floppy,\n 'folder-add': folder_add,\n 'folder-closed': folder_closed,\n 'folder-minus': folder_minus,\n 'folder-open': folder_open,\n 'fork-git': fork_git,\n forward: forward,\n frame: frame,\n fullscreen: fullscreen,\n funnel: funnel,\n gauge: gauge,\n gift: gift,\n globe: globe,\n gps: gps,\n grab: grab,\n 'graph-bar': graph_bar,\n 'graph-box': graph_box,\n 'graph-increase': graph_increase,\n grid: grid,\n 'grid-circles': grid_circles,\n 'grid-circles-add': grid_circles_add,\n 'grid-small': grid_small,\n 'grid-squares': grid_squares,\n 'grid-squares-add': grid_squares_add,\n hand: hand,\n harddrive: harddrive,\n hash: hash,\n heart: heart,\n 'heart-rate': heart_rate,\n 'heart-remove': heart_remove,\n height: height,\n hierarchy: hierarchy,\n home: home,\n 'home-alt': home_alt,\n 'home-check': home_check,\n 'home-door': home_door,\n import: _import,\n inbox: inbox,\n 'inbox-alt': inbox_alt,\n 'info-circle': info_circle,\n 'iphone-landscape': iphone_landscape,\n 'iphone-portrait': iphone_portrait,\n 'jump-backward': jump_backward,\n 'jump-forward': jump_forward,\n 'jump-left': jump_left,\n 'jump-right': jump_right,\n keyboard: keyboard,\n laptop: laptop,\n lightbulb: lightbulb,\n 'lightbulb-on': lightbulb_on,\n lightning: lightning,\n 'lightning-alt': lightning_alt,\n lineweight: lineweight,\n link: link,\n 'link-alt': link_alt,\n 'link-broken': link_broken,\n 'link-horizontal': link_horizontal,\n 'link-vertical': link_vertical,\n list: list,\n 'list-add': list_add,\n 'list-numbered': list_numbered,\n loader: loader,\n location: location,\n lock: lock,\n 'lock-open': lock_open,\n mail: mail,\n 'mail-add': mail_add,\n 'mail-delete': mail_delete,\n 'mail-minus': mail_minus,\n 'mail-new': mail_new,\n 'mail-open': mail_open,\n 'mail-remove': mail_remove,\n marquee: marquee,\n maximise: maximise,\n 'menu-hamburger': menu_hamburger,\n 'menu-horizontal': menu_horizontal,\n 'menu-vertical': menu_vertical,\n message: message,\n 'message-writing': message_writing,\n microphone: microphone,\n 'microphone-disabled': microphone_disabled,\n 'microphone-muted': microphone_muted,\n midpoint: midpoint,\n 'mini-player': mini_player,\n minimise: minimise,\n minus: minus,\n 'minus-circle': minus_circle,\n moon: moon,\n move: move,\n newspaper: newspaper,\n 'no-sign': no_sign,\n notebook: notebook,\n notification: notification,\n nut: nut,\n pages: pages,\n 'panel-bottom': panel_bottom,\n 'panel-center': panel_center,\n 'panel-left': panel_left,\n 'panel-right': panel_right,\n 'panel-sectioned': panel_sectioned,\n 'panel-top': panel_top,\n paper: paper,\n 'paper-folded': paper_folded,\n 'paper-plane': paper_plane,\n 'paper-plane-alt': paper_plane_alt,\n paperclip: paperclip,\n 'paragraph-center': paragraph_center,\n 'paragraph-end': paragraph_end,\n 'paragraph-left': paragraph_left,\n 'paragraph-right': paragraph_right,\n 'paragraph-start': paragraph_start,\n pen: pen,\n 'phone-landscape': phone_landscape,\n 'phone-portrait': phone_portrait,\n picture: picture,\n 'pie-half': pie_half,\n 'pie-quarter': pie_quarter,\n 'pie-third': pie_third,\n pill: pill,\n 'play-button': play_button,\n plus: plus,\n 'plus-circle': plus_circle,\n postcard: postcard,\n printer: printer,\n projector: projector,\n 'pull-down': pull_down,\n 'pull-left': pull_left,\n 'pull-right': pull_right,\n 'pull-up': pull_up,\n 'push-down': push_down,\n 'push-left': push_left,\n 'push-right': push_right,\n 'push-up': push_up,\n 'question-circle': question_circle,\n 'radio-on': radio_on,\n receipt: receipt,\n record: record,\n redo: redo,\n refresh: refresh,\n 'refresh-alt': refresh_alt,\n replicate: replicate,\n 'replicate-alt': replicate_alt,\n reset: reset,\n 'reset-alt': reset_alt,\n 'reset-forward': reset_forward,\n 'reset-hard': reset_hard,\n 'reset-temporary': reset_temporary,\n retweet: retweet,\n reuse: reuse,\n reverse: reverse,\n 'reverse-alt': reverse_alt,\n revert: revert,\n rocket: rocket,\n ruler: ruler,\n scale: scale,\n 'scale-contract': scale_contract,\n 'scale-extend': scale_extend,\n scalpel: scalpel,\n search: search,\n server: server,\n settings: settings,\n share: share,\n 'share-alt': share_alt,\n shuffle: shuffle,\n 'side-menu': side_menu,\n 'signal-full': signal_full,\n 'signal-low': signal_low,\n 'signal-medium': signal_medium,\n 'signal-none': signal_none,\n 'slash-backward': slash_backward,\n 'slash-forward': slash_forward,\n sliders: sliders,\n sort: sort,\n 'sort-alt': sort_alt,\n speaker: speaker,\n 'speech-bubble': speech_bubble,\n 'speech-typing': speech_typing,\n split: split,\n 'split-three': split_three,\n star: star,\n sun: sun,\n support: support,\n swap: swap,\n switch: _switch,\n table: table,\n 'table-header': table_header,\n tag: tag,\n 'tag-milestone': tag_milestone,\n tags: tags,\n target: target,\n terminal: terminal,\n thread: thread,\n 'thumbs-down': thumbs_down,\n 'thumbs-up': thumbs_up,\n ticket: ticket,\n timeline: timeline,\n todo: todo,\n toggle: toggle,\n toggles: toggles,\n translate: translate,\n trash: trash,\n 'trash-alt': trash_alt,\n trophy: trophy,\n 'tv-mode': tv_mode,\n unarchive: unarchive,\n undo: undo,\n 'undo-history': undo_history,\n 'unlink-horizontal': unlink_horizontal,\n 'unlink-vertical': unlink_vertical,\n upload: upload,\n 'upload-alt': upload_alt,\n upward: upward,\n user: user,\n 'user-add': user_add,\n 'user-circle': user_circle,\n 'user-male': user_male,\n 'user-male-circle': user_male_circle,\n 'user-remove': user_remove,\n users: users,\n venn: venn,\n version: version,\n versions: versions,\n video: video,\n 'volume-0': volume_0,\n 'volume-add': volume_add,\n 'volume-disabled': volume_disabled,\n 'volume-high': volume_high,\n 'volume-low': volume_low,\n 'volume-minus': volume_minus,\n 'volume-muted': volume_muted,\n wallet: wallet,\n 'warning-circle': warning_circle,\n 'warning-hex': warning_hex,\n 'warning-triangle': warning_triangle,\n waves: waves,\n width: width,\n wifi: wifi,\n 'wifi-error': wifi_error,\n 'wifi-none': wifi_none,\n window: window,\n 'window-collapse-left': window_collapse_left,\n 'window-collapse-right': window_collapse_right,\n 'window-content': window_content,\n 'wrap-back': wrap_back,\n 'wrap-forward': wrap_forward,\n write: write,\n 'zoom-cancel': zoom_cancel,\n 'zoom-in': zoom_in,\n 'zoom-out': zoom_out,\n 'zoom-reset': zoom_reset,\n};\n\n/**\n * Union type of all available icon names\n */\nexport type IconName =\n | 'airplay'\n | 'alarm-clock'\n | 'align-horizontal'\n | 'align-vertical'\n | 'angle'\n | 'archive'\n | 'arrow-bottom-left'\n | 'arrow-bottom-right'\n | 'arrow-down'\n | 'arrow-down-circle'\n | 'arrow-left'\n | 'arrow-left-circle'\n | 'arrow-right'\n | 'arrow-right-circle'\n | 'arrow-top-left'\n | 'arrow-top-right'\n | 'arrow-up'\n | 'arrow-up-circle'\n | 'audio-wave'\n | 'backspace'\n | 'backward'\n | 'bag'\n | 'battery-75'\n | 'battery-charging'\n | 'battery-empty'\n | 'battery-full'\n | 'battery-half'\n | 'battery-low'\n | 'bell'\n | 'bell-disabled'\n | 'bell-ringing'\n | 'bell-snooze'\n | 'bluetooth'\n | 'book'\n | 'book-closed'\n | 'book-text'\n | 'bookmark'\n | 'bookmark-book'\n | 'box'\n | 'box-add'\n | 'box-download'\n | 'box-open'\n | 'box-remove'\n | 'boxes'\n | 'branch'\n | 'briefcase'\n | 'browser'\n | 'browser-alt'\n | 'button-add'\n | 'button-minus'\n | 'calculator'\n | 'calendar'\n | 'calendar-add'\n | 'calendar-date'\n | 'calendar-day'\n | 'calendar-days'\n | 'calendar-last-day'\n | 'calendar-month'\n | 'calendar-move'\n | 'calendar-remove'\n | 'calendar-split'\n | 'calendar-week'\n | 'camera'\n | 'camera-alt'\n | 'camera-noflash'\n | 'camera-noflash-alt'\n | 'capture'\n | 'card-timeline'\n | 'card-view'\n | 'carousel'\n | 'cart'\n | 'cast'\n | 'chain'\n | 'chat-add'\n | 'check'\n | 'check-circle'\n | 'check-circle-outside'\n | 'checkbox-checked'\n | 'checkbox-empty'\n | 'chevron-close'\n | 'chevron-down'\n | 'chevron-down-circle'\n | 'chevron-down-double'\n | 'chevron-left'\n | 'chevron-left-circle'\n | 'chevron-left-double'\n | 'chevron-open'\n | 'chevron-right'\n | 'chevron-right-circle'\n | 'chevron-right-double'\n | 'chevron-up'\n | 'chevron-up-circle'\n | 'chevron-up-double'\n | 'circle'\n | 'circle-menu'\n | 'circle-split'\n | 'clipboard'\n | 'clipboard-add'\n | 'clipboard-check'\n | 'clipboard-copy'\n | 'clipboard-cross'\n | 'clipboard-notes'\n | 'clipboard-remove'\n | 'clock'\n | 'close'\n | 'cloud'\n | 'cloud-disconnect'\n | 'cloud-download'\n | 'cloud-download-alt'\n | 'cloud-upload'\n | 'cloud-upload-alt'\n | 'code'\n | 'coffee'\n | 'coin'\n | 'coins'\n | 'compass'\n | 'component-add'\n | 'contacts'\n | 'contract'\n | 'create'\n | 'credit-card'\n | 'crop'\n | 'cross'\n | 'cross-circle'\n | 'crosshair'\n | 'cube'\n | 'cubes'\n | 'cylinder'\n | 'database'\n | 'diamond'\n | 'directions'\n | 'disc'\n | 'display'\n | 'display-alt'\n | 'document'\n | 'document-justified'\n | 'document-list'\n | 'document-stack'\n | 'document-words'\n | 'door'\n | 'door-alt'\n | 'download'\n | 'download-alt'\n | 'downward'\n | 'drag'\n | 'drag-circle'\n | 'drag-vertical'\n | 'duplicate'\n | 'duplicate-alt'\n | 'enter'\n | 'enter-alt'\n | 'episodes'\n | 'exit-left'\n | 'exit-right'\n | 'expand'\n | 'expand-height'\n | 'expand-width'\n | 'external'\n | 'eye'\n | 'eye-closed'\n | 'eye-no'\n | 'face-delighted'\n | 'face-happy'\n | 'face-neutral'\n | 'face-sad'\n | 'file-download'\n | 'file-upload'\n | 'files-history'\n | 'files-multi'\n | 'files-stack'\n | 'film'\n | 'filter'\n | 'filter-circle'\n | 'filter-single'\n | 'filtering'\n | 'fingerprint'\n | 'flag'\n | 'flame'\n | 'flame-alt'\n | 'flip-view'\n | 'floppy'\n | 'folder-add'\n | 'folder-closed'\n | 'folder-minus'\n | 'folder-open'\n | 'fork-git'\n | 'forward'\n | 'frame'\n | 'fullscreen'\n | 'funnel'\n | 'gauge'\n | 'gift'\n | 'globe'\n | 'gps'\n | 'grab'\n | 'graph-bar'\n | 'graph-box'\n | 'graph-increase'\n | 'grid'\n | 'grid-circles'\n | 'grid-circles-add'\n | 'grid-small'\n | 'grid-squares'\n | 'grid-squares-add'\n | 'hand'\n | 'harddrive'\n | 'hash'\n | 'heart'\n | 'heart-rate'\n | 'heart-remove'\n | 'height'\n | 'hierarchy'\n | 'home'\n | 'home-alt'\n | 'home-check'\n | 'home-door'\n | 'import'\n | 'inbox'\n | 'inbox-alt'\n | 'info-circle'\n | 'iphone-landscape'\n | 'iphone-portrait'\n | 'jump-backward'\n | 'jump-forward'\n | 'jump-left'\n | 'jump-right'\n | 'keyboard'\n | 'laptop'\n | 'lightbulb'\n | 'lightbulb-on'\n | 'lightning'\n | 'lightning-alt'\n | 'lineweight'\n | 'link'\n | 'link-alt'\n | 'link-broken'\n | 'link-horizontal'\n | 'link-vertical'\n | 'list'\n | 'list-add'\n | 'list-numbered'\n | 'loader'\n | 'location'\n | 'lock'\n | 'lock-open'\n | 'mail'\n | 'mail-add'\n | 'mail-delete'\n | 'mail-minus'\n | 'mail-new'\n | 'mail-open'\n | 'mail-remove'\n | 'marquee'\n | 'maximise'\n | 'menu-hamburger'\n | 'menu-horizontal'\n | 'menu-vertical'\n | 'message'\n | 'message-writing'\n | 'microphone'\n | 'microphone-disabled'\n | 'microphone-muted'\n | 'midpoint'\n | 'mini-player'\n | 'minimise'\n | 'minus'\n | 'minus-circle'\n | 'moon'\n | 'move'\n | 'newspaper'\n | 'no-sign'\n | 'notebook'\n | 'notification'\n | 'nut'\n | 'pages'\n | 'panel-bottom'\n | 'panel-center'\n | 'panel-left'\n | 'panel-right'\n | 'panel-sectioned'\n | 'panel-top'\n | 'paper'\n | 'paper-folded'\n | 'paper-plane'\n | 'paper-plane-alt'\n | 'paperclip'\n | 'paragraph-center'\n | 'paragraph-end'\n | 'paragraph-left'\n | 'paragraph-right'\n | 'paragraph-start'\n | 'pen'\n | 'phone-landscape'\n | 'phone-portrait'\n | 'picture'\n | 'pie-half'\n | 'pie-quarter'\n | 'pie-third'\n | 'pill'\n | 'play-button'\n | 'plus'\n | 'plus-circle'\n | 'postcard'\n | 'printer'\n | 'projector'\n | 'pull-down'\n | 'pull-left'\n | 'pull-right'\n | 'pull-up'\n | 'push-down'\n | 'push-left'\n | 'push-right'\n | 'push-up'\n | 'question-circle'\n | 'radio-on'\n | 'receipt'\n | 'record'\n | 'redo'\n | 'refresh'\n | 'refresh-alt'\n | 'replicate'\n | 'replicate-alt'\n | 'reset'\n | 'reset-alt'\n | 'reset-forward'\n | 'reset-hard'\n | 'reset-temporary'\n | 'retweet'\n | 'reuse'\n | 'reverse'\n | 'reverse-alt'\n | 'revert'\n | 'rocket'\n | 'ruler'\n | 'scale'\n | 'scale-contract'\n | 'scale-extend'\n | 'scalpel'\n | 'search'\n | 'server'\n | 'settings'\n | 'share'\n | 'share-alt'\n | 'shuffle'\n | 'side-menu'\n | 'signal-full'\n | 'signal-low'\n | 'signal-medium'\n | 'signal-none'\n | 'slash-backward'\n | 'slash-forward'\n | 'sliders'\n | 'sort'\n | 'sort-alt'\n | 'speaker'\n | 'speech-bubble'\n | 'speech-typing'\n | 'split'\n | 'split-three'\n | 'star'\n | 'sun'\n | 'support'\n | 'swap'\n | 'switch'\n | 'table'\n | 'table-header'\n | 'tag'\n | 'tag-milestone'\n | 'tags'\n | 'target'\n | 'terminal'\n | 'thread'\n | 'thumbs-down'\n | 'thumbs-up'\n | 'ticket'\n | 'timeline'\n | 'todo'\n | 'toggle'\n | 'toggles'\n | 'translate'\n | 'trash'\n | 'trash-alt'\n | 'trophy'\n | 'tv-mode'\n | 'unarchive'\n | 'undo'\n | 'undo-history'\n | 'unlink-horizontal'\n | 'unlink-vertical'\n | 'upload'\n | 'upload-alt'\n | 'upward'\n | 'user'\n | 'user-add'\n | 'user-circle'\n | 'user-male'\n | 'user-male-circle'\n | 'user-remove'\n | 'users'\n | 'venn'\n | 'version'\n | 'versions'\n | 'video'\n | 'volume-0'\n | 'volume-add'\n | 'volume-disabled'\n | 'volume-high'\n | 'volume-low'\n | 'volume-minus'\n | 'volume-muted'\n | 'wallet'\n | 'warning-circle'\n | 'warning-hex'\n | 'warning-triangle'\n | 'waves'\n | 'width'\n | 'wifi'\n | 'wifi-error'\n | 'wifi-none'\n | 'window'\n | 'window-collapse-left'\n | 'window-collapse-right'\n | 'window-content'\n | 'wrap-back'\n | 'wrap-forward'\n | 'write'\n | 'zoom-cancel'\n | 'zoom-in'\n | 'zoom-out'\n | 'zoom-reset';\n\n/**\n * Get an icon template by name\n * @param name - Icon name from the registry\n * @returns Lit template with SVG content, or null if not found\n */\nexport function getIcon(name: string): TemplateResult | null {\n const svgContent = iconRegistry[name];\n if (!svgContent) {\n return null;\n }\n return html`${unsafeHTML(svgContent)}`;\n}\n\n/**\n * Get all available icon names\n * @returns Array of all icon names in the registry\n */\nexport function getAllIconNames(): IconName[] {\n return Object.keys(iconRegistry) as IconName[];\n}\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { iconStyles } from './icon.style.js';\nimport { getIcon, type IconName } from './icons/registry.generated.js';\n\nexport type IconSize =\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | '2xl'\n | '3xl'\n | '4xl'\n | 'full';\nexport type IconColor =\n | 'default'\n | 'primary'\n | 'success'\n | 'warning'\n | 'error'\n | 'muted';\n\n/**\n * Icon component - SVG icon wrapper with size variants\n *\n * Supports both named icons from the System UI Icons library and custom SVG content via slot.\n *\n * @slot - Custom SVG content to display (used when `name` is not provided)\n *\n * @csspart icon - The icon container element\n *\n * @example\n * ```html\n * <!-- Using named icon from library -->\n * <bp-icon name=\"create\" size=\"md\" color=\"primary\"></bp-icon>\n *\n * <!-- Using custom SVG content -->\n * <bp-icon size=\"md\">\n * <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n * <path d=\"M12 2L2 7v10c0 5.5 3.8 10.6 10 12 6.2-1.4 10-6.5 10-12V7l-10-5z\"/>\n * </svg>\n * </bp-icon>\n * ```\n */\n@customElement('bp-icon')\nexport class BpIcon extends LitElement {\n /**\n * Name of the icon from the System UI Icons library\n * @type {IconName}\n */\n @property({ type: String }) declare name: IconName | '';\n\n /**\n * Size variant of the icon\n * @type {IconSize}\n */\n @property({ type: String, reflect: true }) declare size: IconSize;\n\n /**\n * Color variant of the icon\n * @type {IconColor}\n */\n @property({ type: String }) declare color: IconColor;\n\n /**\n * ARIA label for accessibility\n * @type {string}\n */\n @property({ type: String, attribute: 'aria-label' })\n declare ariaLabel: string;\n\n constructor() {\n super();\n this.name = '';\n this.size = 'md';\n this.color = 'default';\n this.ariaLabel = '';\n }\n\n static styles = [iconStyles];\n\n render() {\n const classes = ['icon', `icon--${this.size}`, `icon--${this.color}`].join(\n ' '\n );\n\n // Get icon from registry if name is provided\n const iconTemplate = this.name ? getIcon(this.name) : null;\n\n return html`\n <span\n class=${classes}\n part=\"icon\"\n role=${this.ariaLabel ? 'img' : 'presentation'}\n aria-label=${ifDefined(this.ariaLabel || undefined)}\n >\n ${iconTemplate || html`<slot></slot>`}\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-icon': BpIcon;\n }\n}\n","import { css } from 'lit';\n\nexport const spinnerStyles = css`\n /* Base styles */\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .spinner {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .spinner__circle {\n border-radius: var(--bp-border-radius-full);\n border-style: solid;\n border-color: transparent;\n animation: bp-spinner-rotate var(--bp-ease-linear) infinite;\n will-change: transform;\n }\n\n /* Variants */\n .spinner--primary .spinner__circle {\n border-top-color: var(--bp-color-primary);\n border-right-color: var(--bp-color-primary);\n }\n\n .spinner--success .spinner__circle {\n border-top-color: var(--bp-color-success);\n border-right-color: var(--bp-color-success);\n }\n\n .spinner--error .spinner__circle {\n border-top-color: var(--bp-color-error);\n border-right-color: var(--bp-color-error);\n }\n\n .spinner--warning .spinner__circle {\n border-top-color: var(--bp-color-warning);\n border-right-color: var(--bp-color-warning);\n }\n\n .spinner--inverse .spinner__circle {\n border-top-color: var(--bp-color-text-inverse);\n border-right-color: var(--bp-color-text-inverse);\n }\n\n .spinner--neutral .spinner__circle {\n border-top-color: var(--bp-color-text-muted);\n border-right-color: var(--bp-color-text-muted);\n }\n\n /* Sizes */\n .spinner--sm .spinner__circle {\n width: var(--bp-spacing-4);\n height: var(--bp-spacing-4);\n border-width: var(--bp-spacing-xs);\n animation-duration: var(--bp-duration-normal);\n }\n\n .spinner--md .spinner__circle {\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n border-width: var(--bp-spacing-xs);\n animation-duration: var(--bp-duration-slow);\n }\n\n .spinner--lg .spinner__circle {\n width: var(--bp-spacing-8);\n height: var(--bp-spacing-8);\n border-width: var(--bp-spacing-xs);\n animation-duration: 600ms;\n }\n\n /* Animation */\n @keyframes bp-spinner-rotate {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n /* Respect user's motion preferences */\n @media (prefers-reduced-motion: reduce) {\n .spinner__circle {\n animation-duration: 2s;\n }\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { spinnerStyles } from './spinner.style.js';\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg';\nexport type SpinnerVariant =\n | 'primary'\n | 'success'\n | 'error'\n | 'warning'\n | 'inverse'\n | 'neutral';\n\n/**\n * A loading spinner component that indicates content is being loaded or processed.\n * Supports multiple sizes, variants, and an optional label for accessibility.\n */\n@customElement('bp-spinner')\nexport class BpSpinner extends LitElement {\n /**\n * Size of the spinner.\n * @type {'sm' | 'md' | 'lg'}\n * @default 'md'\n */\n @property({ type: String, reflect: true }) declare size: SpinnerSize;\n\n /**\n * Visual variant of the spinner.\n * @type {'primary' | 'success' | 'error' | 'warning' | 'inverse' | 'neutral'}\n * @default 'primary'\n */\n @property({ type: String, reflect: true }) declare variant: SpinnerVariant;\n\n /**\n * Accessible label for screen readers.\n * @type {string}\n * @default 'Loading...'\n */\n @property({ type: String, reflect: true }) declare label: string;\n\n static styles = [spinnerStyles];\n\n constructor() {\n super();\n this.size = 'md';\n this.variant = 'primary';\n this.label = 'Loading...';\n }\n\n render() {\n return html`\n <div\n class=\"spinner spinner--${this.size} spinner--${this.variant}\"\n role=\"status\"\n aria-label=\"${this.label}\"\n part=\"spinner\"\n >\n <div class=\"spinner__circle\" part=\"circle\"></div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-spinner': BpSpinner;\n }\n}\n","import { css } from 'lit';\n\nexport const avatarStyles = css`\n /* Base styles */\n :host {\n display: inline-flex;\n position: relative;\n }\n\n .avatar {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n background: var(--bp-color-primary);\n color: var(--bp-color-text-inverse);\n font-family: var(--bp-font-family);\n font-weight: var(--bp-font-weight-semibold);\n user-select: none;\n flex-shrink: 0;\n box-shadow: var(--bp-shadow-sm);\n position: relative;\n }\n\n /* Image avatars have different background */\n .avatar:has(.avatar__image) {\n background: var(--bp-color-surface);\n color: var(--bp-color-text);\n }\n\n .avatar__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n }\n\n .avatar__initials {\n text-transform: uppercase;\n line-height: 1;\n letter-spacing: 0.02em;\n }\n\n .avatar__fallback {\n opacity: 0.8;\n }\n\n /* Shapes */\n .avatar--circle {\n border-radius: var(--bp-border-radius-full);\n }\n\n .avatar--square {\n border-radius: var(--bp-border-radius-sm);\n }\n\n /* Sizes */\n .avatar--xs {\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n }\n\n .avatar--xs .avatar__initials {\n font-size: var(--bp-font-size-xs);\n }\n\n .avatar--sm {\n width: var(--bp-spacing-8);\n height: var(--bp-spacing-8);\n }\n\n .avatar--sm .avatar__initials {\n font-size: var(--bp-font-size-sm);\n }\n\n .avatar--md {\n width: var(--bp-spacing-10);\n height: var(--bp-spacing-10);\n }\n\n .avatar--md .avatar__initials {\n font-size: var(--bp-font-size-base);\n }\n\n .avatar--lg {\n width: var(--bp-spacing-12);\n height: var(--bp-spacing-12);\n }\n\n .avatar--lg .avatar__initials {\n font-size: var(--bp-font-size-lg);\n }\n\n .avatar--xl {\n width: var(--bp-spacing-16);\n height: var(--bp-spacing-16);\n }\n\n .avatar--xl .avatar__initials {\n font-size: var(--bp-font-size-2xl);\n }\n\n /* States - Interactive */\n :host([clickable]) .avatar {\n cursor: pointer;\n transition:\n transform var(--bp-duration-fast),\n box-shadow var(--bp-duration-fast);\n }\n\n :host([clickable]) .avatar:hover {\n transform: translateY(calc(-1 * var(--bp-spacing-0-5)));\n box-shadow: var(--bp-shadow-md);\n }\n\n :host([clickable]:focus-within) .avatar {\n outline: var(--bp-focus-width) solid var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n /* Status indicator */\n .avatar__status {\n position: absolute;\n bottom: 0;\n right: 0;\n width: 25%;\n height: 25%;\n min-width: var(--bp-spacing-2);\n min-height: var(--bp-spacing-2);\n border-radius: var(--bp-border-radius-full);\n border: var(--bp-focus-width) solid var(--bp-color-surface-elevated);\n }\n\n .avatar__status--online {\n background: var(--bp-color-success);\n }\n\n .avatar__status--offline {\n background: var(--bp-color-border-strong);\n }\n\n .avatar__status--busy {\n background: var(--bp-color-error);\n }\n\n .avatar__status--away {\n background: var(--bp-color-warning);\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { avatarStyles } from './avatar.style.js';\nimport '../icon/icon.js';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarShape = 'circle' | 'square';\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away';\n\n/**\n * An avatar component that displays user profile images with fallback to initials.\n * Supports multiple sizes, shapes, status indicators, and interactive states.\n */\n@customElement('bp-avatar')\nexport class BpAvatar extends LitElement {\n /**\n * Image source URL for the avatar.\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare src: string;\n\n /**\n * Alt text for the avatar image (accessibility).\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare alt: string;\n\n /**\n * Initials to display when no image is provided.\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare initials: string;\n\n /**\n * Size of the avatar.\n * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n * @default 'md'\n */\n @property({ type: String, reflect: true }) declare size: AvatarSize;\n\n /**\n * Shape of the avatar.\n * @type {'circle' | 'square'}\n * @default 'circle'\n */\n @property({ type: String, reflect: true }) declare shape: AvatarShape;\n\n /**\n * Status indicator for the avatar.\n * @type {'online' | 'offline' | 'busy' | 'away' | undefined}\n * @default undefined\n */\n @property({ type: String, reflect: true }) declare status?: AvatarStatus;\n\n /**\n * Makes the avatar interactive with hover/focus states.\n * @type {boolean}\n * @default false\n */\n @property({ type: Boolean, reflect: true }) declare clickable: boolean;\n\n /**\n * Name for tooltip display on hover.\n * @type {string}\n * @default ''\n */\n @property({ type: String }) declare name: string;\n\n /**\n * Internal state to track if image failed to load.\n * @private\n */\n @state() private imageError = false;\n\n static styles = [avatarStyles];\n\n constructor() {\n super();\n this.src = '';\n this.alt = '';\n this.initials = '';\n this.size = 'md';\n this.shape = 'circle';\n this.clickable = false;\n this.name = '';\n }\n\n private handleImageError() {\n // Track image error state to show fallback\n this.imageError = true;\n }\n\n render() {\n const hasImage = this.src.length > 0 && !this.imageError;\n const hasInitials = this.initials.length > 0;\n const titleText = this.name || this.alt;\n\n return html`\n <div\n class=\"avatar avatar--${this.size} avatar--${this.shape}\"\n part=\"avatar\"\n title=\"${titleText}\"\n >\n ${hasImage\n ? html`\n <img\n class=\"avatar__image\"\n src=\"${this.src}\"\n alt=\"${this.alt}\"\n @error=\"${this.handleImageError}\"\n part=\"image\"\n />\n `\n : hasInitials\n ? html`<span\n class=\"avatar__initials\"\n part=\"initials\"\n role=\"img\"\n aria-label=\"${this.alt || 'User avatar'}\"\n >${this.initials}</span\n >`\n : html`<bp-icon\n class=\"avatar__fallback\"\n name=\"users\"\n size=\"${this.size === 'xs'\n ? 'xs'\n : this.size === 'xl'\n ? 'lg'\n : this.size}\"\n part=\"fallback\"\n aria-label=\"User avatar\"\n ></bp-icon>`}\n ${this.status\n ? html`<span\n class=\"avatar__status avatar__status--${this.status}\"\n part=\"status\"\n aria-label=\"${this.status}\"\n ></span>`\n : ''}\n </div>\n `;\n }\n\n updated(changedProperties: Map<string, unknown>) {\n // Reset image error state when src changes\n if (changedProperties.has('src')) {\n this.imageError = false;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-avatar': BpAvatar;\n }\n}\n","import { css } from 'lit';\r\n\r\nexport const dividerStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: block;\r\n }\r\n\r\n :host([orientation='vertical']) {\r\n display: inline-flex;\r\n height: 100%;\r\n }\r\n\r\n .divider {\r\n display: flex;\r\n align-items: center;\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-xs);\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n .divider__line {\r\n flex: 1;\r\n border: none;\r\n border-top: var(--bp-border-width) solid var(--bp-color-border);\r\n transition:\r\n border-color 150ms ease,\r\n border-width 150ms ease;\r\n }\r\n\r\n .divider__content {\r\n display: inline-flex;\r\n padding: 0 var(--bp-spacing-md);\r\n white-space: nowrap;\r\n min-width: fit-content;\r\n }\r\n\r\n .divider__content {\r\n font-weight: var(--bp-font-weight-semibold);\r\n text-transform: uppercase;\r\n letter-spacing: 0.05em;\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n /* Orientations */\r\n .divider--horizontal {\r\n width: 100%;\r\n flex-direction: row;\r\n }\r\n\r\n .divider--vertical {\r\n height: 100%;\r\n flex-direction: column;\r\n align-self: stretch;\r\n }\r\n\r\n .divider--vertical .divider__line {\r\n width: var(--bp-border-width);\r\n height: auto;\r\n border-top: none;\r\n border-left: var(--bp-border-width) solid var(--bp-color-border);\r\n }\r\n\r\n /* Spacing */\r\n .divider--spacing-sm {\r\n margin: var(--bp-spacing-sm) 0;\r\n }\r\n\r\n .divider--spacing-sm.divider--vertical {\r\n margin: 0 var(--bp-spacing-sm);\r\n }\r\n\r\n .divider--spacing-md {\r\n margin: var(--bp-spacing-md) 0;\r\n }\r\n\r\n .divider--spacing-md.divider--vertical {\r\n margin: 0 var(--bp-spacing-md);\r\n }\r\n\r\n .divider--spacing-lg {\r\n margin: var(--bp-spacing-lg) 0;\r\n }\r\n\r\n .divider--spacing-lg.divider--vertical {\r\n margin: 0 var(--bp-spacing-lg);\r\n }\r\n\r\n /* Variants */\r\n .divider__line--dashed {\r\n border-top-style: dashed;\r\n }\r\n\r\n .divider__line--dotted {\r\n border-top-style: dotted;\r\n }\r\n\r\n .divider--vertical .divider__line--dashed {\r\n border-top-style: none;\r\n border-left-style: dashed;\r\n }\r\n\r\n .divider--vertical .divider__line--dotted {\r\n border-top-style: none;\r\n border-left-style: dotted;\r\n }\r\n\r\n /* Color variants */\r\n :host([color='default']) .divider__line {\r\n border-color: var(--bp-color-border);\r\n }\r\n\r\n :host([color='subtle']) .divider__line {\r\n border-color: var(--bp-color-border);\r\n opacity: 0.5;\r\n }\r\n\r\n :host([color='accent']) .divider__line {\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n /* Weight variants */\r\n :host([weight='thin']) .divider__line {\r\n border-top-width: var(--bp-border-width);\r\n }\r\n\r\n :host([weight='medium']) .divider__line {\r\n border-top-width: calc(var(--bp-border-width) * 2);\r\n }\r\n\r\n :host([weight='thick']) .divider__line {\r\n border-top-width: calc(var(--bp-border-width) * 3);\r\n }\r\n\r\n :host([weight='thin'][orientation='vertical']) .divider__line {\r\n border-left-width: var(--bp-border-width);\r\n border-top-width: 0;\r\n }\r\n\r\n :host([weight='medium'][orientation='vertical']) .divider__line {\r\n border-left-width: calc(var(--bp-border-width) * 2);\r\n border-top-width: 0;\r\n }\r\n\r\n :host([weight='thick'][orientation='vertical']) .divider__line {\r\n border-left-width: calc(var(--bp-border-width) * 3);\r\n border-top-width: 0;\r\n }\r\n`;\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { dividerStyles } from './divider.style.js';\r\n\r\nexport type DividerOrientation = 'horizontal' | 'vertical';\r\nexport type DividerSpacing = 'sm' | 'md' | 'lg';\r\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted';\r\nexport type DividerColor = 'default' | 'subtle' | 'accent';\r\nexport type DividerWeight = 'thin' | 'medium' | 'thick';\r\n\r\n/**\r\n * A divider component that provides visual separation between content sections.\r\n * Supports both horizontal and vertical orientations with optional text labels.\r\n */\r\n@customElement('bp-divider')\r\nexport class BpDivider extends LitElement {\r\n /**\r\n * Orientation of the divider.\r\n * @type {'horizontal' | 'vertical'}\r\n * @default 'horizontal'\r\n */\r\n @property({ type: String, reflect: true })\r\n declare orientation: DividerOrientation;\r\n\r\n /**\r\n * Spacing variant for the divider.\r\n * @type {'sm' | 'md' | 'lg'}\r\n * @default 'md'\r\n */\r\n @property({ type: String, reflect: true }) declare spacing: DividerSpacing;\r\n\r\n /**\r\n * Visual variant of the divider line.\r\n * @type {'solid' | 'dashed' | 'dotted'}\r\n * @default 'solid'\r\n */\r\n @property({ type: String, reflect: true }) declare variant: DividerVariant;\r\n\r\n /**\r\n * Color variant for the divider line.\r\n * @type {'default' | 'subtle' | 'accent'}\r\n * @default 'default'\r\n */\r\n @property({ type: String, reflect: true }) declare color: DividerColor;\r\n\r\n /**\r\n * Border weight for the divider line.\r\n * @type {'thin' | 'medium' | 'thick'}\r\n * @default 'thin'\r\n */\r\n @property({ type: String, reflect: true }) declare weight: DividerWeight;\r\n\r\n /** Whether the default slot has content. */\r\n @property({ attribute: false }) declare hasContent: boolean;\r\n\r\n static styles = [dividerStyles];\r\n\r\n constructor() {\r\n super();\r\n this.orientation = 'horizontal';\r\n this.spacing = 'md';\r\n this.variant = 'solid';\r\n this.color = 'default';\r\n this.weight = 'thin';\r\n this.hasContent = false;\r\n }\r\n\r\n private handleSlotChange = (event: Event) => {\r\n const slot = event.target as HTMLElement & {\r\n assignedNodes: (options?: { flatten?: boolean }) => Node[];\r\n };\r\n const nodes = slot.assignedNodes({ flatten: true });\r\n this.hasContent = nodes.some(\r\n (node) =>\r\n node.nodeType === Node.ELEMENT_NODE ||\r\n (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '')\r\n );\r\n };\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"divider divider--${this.orientation} divider--spacing-${this\r\n .spacing}\"\r\n role=\"separator\"\r\n aria-orientation=\"${this.orientation}\"\r\n part=\"divider\"\r\n >\r\n <span\r\n class=\"divider__line divider__line--${this.variant}\"\r\n part=\"line\"\r\n ></span>\r\n ${this.orientation === 'horizontal'\r\n ? html`\r\n ${this.hasContent\r\n ? html`<span class=\"divider__content\" part=\"content\">\r\n <slot @slotchange=${this.handleSlotChange}></slot>\r\n </span>\r\n <span\r\n class=\"divider__line divider__line--${this.variant}\"\r\n part=\"line\"\r\n ></span>`\r\n : html`<slot @slotchange=${this.handleSlotChange}></slot>`}\r\n `\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-divider': BpDivider;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const linkStyles = css`\n /* Base styles */\n :host {\n display: inline;\n }\n\n .link {\n display: inline;\n font-family: var(--bp-font-family);\n font-size: inherit;\n font-weight: inherit;\n color: var(--bp-color-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color var(--bp-transition-fast);\n }\n\n .link:hover {\n color: var(--bp-color-primary-hover);\n }\n\n .link:active {\n color: var(--bp-color-primary-active);\n transform: translateY(var(--bp-spacing-0-5));\n }\n\n .link:visited {\n color: var(--bp-color-primary);\n }\n\n .link:visited:hover {\n color: var(--bp-color-primary-hover);\n }\n\n .link:focus-visible {\n outline: var(--bp-focus-width) solid var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n border-radius: var(--bp-border-radius-sm);\n }\n\n .link[aria-disabled='true'] {\n color: var(--bp-color-text-muted);\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Variants */\n .link--primary {\n font-weight: var(--bp-font-weight-semibold);\n }\n\n .link--muted {\n color: var(--bp-color-text-muted);\n }\n\n .link--muted:hover {\n color: var(--bp-color-text);\n }\n\n .link--muted:active {\n color: var(--bp-color-text);\n }\n\n .link--muted:visited {\n color: var(--bp-color-text-muted);\n }\n\n /* Underline variants */\n .link--underline-always {\n text-decoration: underline;\n }\n\n .link--underline-hover {\n text-decoration: underline;\n text-decoration-color: transparent;\n transition: text-decoration-color var(--bp-transition-fast);\n }\n\n .link--underline-hover:hover {\n text-decoration-color: currentColor;\n }\n\n .link--underline-none {\n text-decoration: none;\n }\n\n .link--underline-none:hover {\n text-decoration: none;\n }\n\n /* Size variants */\n .link--size-sm {\n font-size: var(--bp-font-size-sm);\n }\n\n .link--size-md {\n font-size: inherit;\n }\n\n .link--size-lg {\n font-size: var(--bp-font-size-lg);\n }\n\n /* External link indicator */\n .link[target='_blank']::after {\n content: '↗';\n margin-left: var(--bp-spacing-1);\n vertical-align: super;\n line-height: 0;\n opacity: 0.75;\n transition: opacity var(--bp-transition-fast);\n }\n\n .link[target='_blank']:hover::after {\n opacity: 1;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { linkStyles } from './link.style.js';\n\nexport type LinkVariant = 'default' | 'primary' | 'muted';\nexport type LinkUnderline = 'always' | 'hover' | 'none';\nexport type LinkSize = 'sm' | 'md' | 'lg';\n\n/**\n * A link component that provides styled anchor elements with variants.\n * Supports internal and external links with accessibility features.\n */\n@customElement('bp-link')\nexport class BpLink extends LitElement {\n /**\n * The URL the link points to.\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare href: string;\n\n /**\n * Where to display the linked URL (same semantics as anchor target).\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare target: string;\n\n /**\n * Relationship of the linked URL (same semantics as anchor rel).\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare rel: string;\n\n /**\n * Visual variant of the link.\n * @type {'default' | 'primary' | 'muted'}\n * @default 'default'\n */\n @property({ type: String, reflect: true }) declare variant: LinkVariant;\n\n /**\n * Underline style for the link.\n * @type {'always' | 'hover' | 'none'}\n * @default 'hover'\n */\n @property({ type: String, reflect: true }) declare underline: LinkUnderline;\n\n /**\n * Size of the link text.\n * @type {'sm' | 'md' | 'lg'}\n * @default 'md'\n */\n @property({ type: String, reflect: true }) declare size: LinkSize;\n\n /**\n * Whether the link is disabled.\n * @type {boolean}\n * @default false\n */\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n\n static styles = [linkStyles];\n\n constructor() {\n super();\n this.href = '';\n this.target = '';\n this.rel = '';\n this.variant = 'default';\n this.underline = 'hover';\n this.size = 'md';\n this.disabled = false;\n }\n\n private handleClick(event: MouseEvent) {\n if (this.disabled) {\n event.preventDefault();\n }\n }\n\n render() {\n const isExternal = this.target === '_blank';\n const computedRel =\n this.rel || (isExternal ? 'noopener noreferrer' : undefined);\n\n return html`\n <a\n class=\"link link--${this.variant} link--underline-${this\n .underline} link--size-${this.size}\"\n href=${ifDefined(this.disabled ? undefined : this.href || undefined)}\n target=${ifDefined(this.target || undefined)}\n rel=${ifDefined(computedRel)}\n aria-disabled=${this.disabled ? 'true' : 'false'}\n @click=${this.handleClick}\n part=\"link\"\n >\n <slot></slot>\n </a>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-link': BpLink;\n }\n}\n","import { css } from 'lit';\n\nexport const headingStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .heading {\n margin: 0;\n padding: 0;\n color: var(--bp-color-text);\n font-family: var(--bp-font-family);\n }\n\n /* Sizes */\n .heading--xs {\n font-size: var(--bp-font-size-xs);\n line-height: 1.5;\n }\n\n .heading--sm {\n font-size: var(--bp-font-size-sm);\n line-height: 1.45;\n }\n\n .heading--md {\n font-size: var(--bp-font-size-base);\n line-height: 1.4;\n }\n\n .heading--lg {\n font-size: var(--bp-font-size-lg);\n line-height: 1.35;\n }\n\n .heading--xl {\n font-size: var(--bp-font-size-xl);\n line-height: 1.3;\n }\n\n .heading--2xl {\n font-size: var(--bp-font-size-2xl);\n line-height: 1.25;\n letter-spacing: -0.01em;\n }\n\n .heading--3xl {\n font-size: var(--bp-font-size-3xl);\n line-height: 1.2;\n letter-spacing: -0.015em;\n }\n\n .heading--4xl {\n font-size: var(--bp-font-size-4xl);\n line-height: 1.1;\n letter-spacing: -0.02em;\n }\n\n /* Font weights */\n .heading--light {\n font-weight: var(--bp-font-weight-light);\n }\n\n .heading--normal {\n font-weight: var(--bp-font-weight-normal);\n }\n\n .heading--medium {\n font-weight: var(--bp-font-weight-medium);\n }\n\n .heading--semibold {\n font-weight: var(--bp-font-weight-semibold);\n }\n\n .heading--bold {\n font-weight: var(--bp-font-weight-bold);\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { headingStyles } from './heading.style.js';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type HeadingSize =\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | '2xl'\n | '3xl'\n | '4xl';\nexport type HeadingWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\n\n/**\n * A typography component for semantic headings (h1-h6).\n *\n * @element bp-heading\n *\n * @property {HeadingLevel} level - The semantic heading level (h1-h6)\n * @property {HeadingSize} size - The visual size of the heading\n * @property {HeadingWeight} weight - The font weight of the heading\n *\n * @slot - The heading text content\n *\n * @cssprop --bp-heading-color - Custom color for the heading\n * @cssprop --bp-heading-font-family - Custom font family for the heading\n *\n * @csspart heading - The heading element (h1-h6)\n */\n@customElement('bp-heading')\nexport class BpHeading extends LitElement {\n /**\n * The semantic heading level (h1-h6).\n * Determines the actual HTML element rendered.\n */\n @property({ type: Number, reflect: true }) declare level: HeadingLevel;\n\n /**\n * The visual size of the heading.\n * Allows visual hierarchy independent of semantic level.\n * Defaults to match the level when not specified.\n */\n @property({ type: String, reflect: true }) declare size: HeadingSize;\n\n /**\n * The font weight of the heading.\n */\n @property({ type: String, reflect: true }) declare weight: HeadingWeight;\n\n static styles = [headingStyles];\n\n constructor() {\n super();\n this.level = 1;\n this.size = '4xl';\n this.weight = 'bold';\n }\n\n render() {\n const sizeClass = `heading--${this.size}`;\n const weightClass = `heading--${this.weight}`;\n\n // Using a switch to create the proper heading element\n switch (this.level) {\n case 1:\n return html`<h1\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h1>`;\n case 2:\n return html`<h2\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h2>`;\n case 3:\n return html`<h3\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h3>`;\n case 4:\n return html`<h4\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h4>`;\n case 5:\n return html`<h5\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h5>`;\n case 6:\n return html`<h6\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h6>`;\n default:\n return html`<h1\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h1>`;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-heading': BpHeading;\n }\n}\n","import { css } from 'lit';\n\nexport const textStyles = css`\n /* Base styles */\n :host {\n display: inline-block;\n }\n\n :host([as='span']) {\n display: inline;\n }\n\n .text {\n margin: 0;\n padding: 0;\n font-family: var(--bp-font-family);\n color: var(--bp-color-text);\n line-height: var(--bp-line-height-normal);\n }\n\n /* Sizes */\n .text--xs {\n font-size: var(--bp-font-size-xs);\n }\n\n .text--sm {\n font-size: var(--bp-font-size-sm);\n }\n\n .text--base {\n font-size: var(--bp-font-size-base);\n }\n\n .text--lg {\n font-size: var(--bp-font-size-lg);\n }\n\n .text--xl {\n font-size: var(--bp-font-size-xl);\n }\n\n /* Font weights */\n .text--light {\n font-weight: var(--bp-font-weight-light);\n }\n\n .text--normal {\n font-weight: var(--bp-font-weight-normal);\n }\n\n .text--medium {\n font-weight: var(--bp-font-weight-medium);\n }\n\n .text--semibold {\n font-weight: var(--bp-font-weight-semibold);\n }\n\n .text--bold {\n font-weight: var(--bp-font-weight-bold);\n }\n\n /* Variants */\n .text--default {\n color: var(--bp-color-text);\n }\n\n .text--muted {\n color: var(--bp-color-text-muted);\n }\n\n .text--primary {\n color: var(--bp-color-primary);\n }\n\n .text--success {\n color: var(--bp-color-success);\n }\n\n .text--warning {\n color: var(--bp-color-warning);\n }\n\n .text--error {\n color: var(--bp-color-error);\n }\n\n /* Alignment */\n .text--align-left {\n text-align: left;\n }\n\n .text--align-center {\n text-align: center;\n }\n\n .text--align-right {\n text-align: right;\n }\n\n .text--align-justify {\n text-align: justify;\n }\n\n /* Text transform */\n .text--transform-uppercase {\n text-transform: uppercase;\n }\n\n .text--transform-lowercase {\n text-transform: lowercase;\n }\n\n .text--transform-capitalize {\n text-transform: capitalize;\n }\n\n /* Letter spacing (tracking) */\n .text--tracking-tighter {\n letter-spacing: -0.05em;\n }\n\n .text--tracking-tight {\n letter-spacing: -0.025em;\n }\n\n .text--tracking-wide {\n letter-spacing: 0.025em;\n }\n\n .text--tracking-wider {\n letter-spacing: 0.05em;\n }\n\n /* Line height variants */\n .text--line-height-none {\n line-height: var(--bp-line-height-none);\n }\n\n .text--line-height-tight {\n line-height: var(--bp-line-height-tight);\n }\n\n .text--line-height-snug {\n line-height: var(--bp-line-height-snug);\n }\n\n .text--line-height-relaxed {\n line-height: var(--bp-line-height-relaxed);\n }\n\n .text--line-height-loose {\n line-height: var(--bp-line-height-loose);\n }\n\n /* Multi-line clamp */\n .text--clamp-1,\n .text--clamp-2,\n .text--clamp-3,\n .text--clamp-4,\n .text--clamp-5,\n .text--clamp-6 {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .text--clamp-1 {\n -webkit-line-clamp: 1;\n }\n\n .text--clamp-2 {\n -webkit-line-clamp: 2;\n }\n\n .text--clamp-3 {\n -webkit-line-clamp: 3;\n }\n\n .text--clamp-4 {\n -webkit-line-clamp: 4;\n }\n\n .text--clamp-5 {\n -webkit-line-clamp: 5;\n }\n\n .text--clamp-6 {\n -webkit-line-clamp: 6;\n }\n\n /* States */\n .text--italic {\n font-style: italic;\n }\n\n .text--truncate {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { textStyles } from './text.style.js';\n\nexport type TextElement = 'p' | 'span' | 'div';\nexport type TextSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl';\nexport type TextWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\nexport type TextVariant =\n | 'default'\n | 'muted'\n | 'primary'\n | 'success'\n | 'warning'\n | 'error';\nexport type TextAlign = 'left' | 'center' | 'right' | 'justify';\nexport type TextTransform = 'none' | 'uppercase' | 'lowercase' | 'capitalize';\nexport type TextTracking = 'tighter' | 'tight' | 'normal' | 'wide' | 'wider';\nexport type TextLineHeight =\n | 'none'\n | 'tight'\n | 'snug'\n | 'normal'\n | 'relaxed'\n | 'loose';\n\n/**\n * A typography component for body text with flexible styling options.\n *\n * @element bp-text\n *\n * @property {TextElement} as - The HTML element type to render\n * @property {TextSize} size - The size of the text\n * @property {TextWeight} weight - The font weight\n * @property {TextVariant} variant - The color variant\n * @property {TextAlign} align - Text alignment\n * @property {TextTransform} transform - Text transformation (uppercase, lowercase, capitalize)\n * @property {TextTracking} tracking - Letter spacing\n * @property {TextLineHeight} lineHeight - Line height variant\n * @property {number} clamp - Number of lines to clamp (multi-line truncation)\n * @property {boolean} italic - Whether the text is italic\n * @property {boolean} truncate - Whether to truncate with ellipsis\n *\n * @slot - The text content\n *\n * @csspart text - The text container element\n */\n@customElement('bp-text')\nexport class BpText extends LitElement {\n /**\n * The element type to render.\n */\n @property({ type: String, reflect: true }) declare as: TextElement;\n\n /**\n * The size of the text.\n */\n @property({ type: String, reflect: true }) declare size: TextSize;\n\n /**\n * The font weight of the text.\n */\n @property({ type: String, reflect: true }) declare weight: TextWeight;\n\n /**\n * The color variant of the text.\n */\n @property({ type: String, reflect: true }) declare variant: TextVariant;\n\n /**\n * The text alignment.\n */\n @property({ type: String, reflect: true }) declare align: TextAlign;\n\n /**\n * Text transformation.\n */\n @property({ type: String, reflect: true }) declare transform: TextTransform;\n\n /**\n * Letter spacing (tracking).\n */\n @property({ type: String, reflect: true }) declare tracking: TextTracking;\n\n /**\n * Line height variant.\n */\n @property({ type: String, reflect: true, attribute: 'line-height' })\n declare lineHeight: TextLineHeight;\n\n /**\n * Number of lines to clamp (multi-line truncation).\n * When set, text will be truncated to the specified number of lines.\n */\n @property({ type: Number, reflect: true }) declare clamp: number;\n\n /**\n * Whether the text should be italic.\n */\n @property({ type: Boolean, reflect: true }) declare italic: boolean;\n\n /**\n * Whether the text should be truncated with ellipsis.\n */\n @property({ type: Boolean, reflect: true }) declare truncate: boolean;\n\n static styles = [textStyles];\n\n constructor() {\n super();\n this.as = 'p';\n this.size = 'base';\n this.weight = 'normal';\n this.variant = 'default';\n this.align = 'left';\n this.transform = 'none';\n this.tracking = 'normal';\n this.lineHeight = 'normal';\n this.clamp = 0;\n this.italic = false;\n this.truncate = false;\n }\n\n render() {\n const classes = [\n 'text',\n `text--${this.size}`,\n `text--${this.weight}`,\n `text--${this.variant}`,\n `text--align-${this.align}`,\n this.transform !== 'none' ? `text--transform-${this.transform}` : '',\n this.tracking !== 'normal' ? `text--tracking-${this.tracking}` : '',\n this.lineHeight !== 'normal'\n ? `text--line-height-${this.lineHeight}`\n : '',\n this.clamp > 0 ? `text--clamp-${this.clamp}` : '',\n this.italic ? 'text--italic' : '',\n this.truncate ? 'text--truncate' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n // Render the appropriate element based on 'as' prop\n switch (this.as) {\n case 'span':\n return html`<span part=\"text\" class=\"${classes}\"><slot></slot></span>`;\n case 'div':\n return html`<div part=\"text\" class=\"${classes}\"><slot></slot></div>`;\n case 'p':\n default:\n return html`<p part=\"text\" class=\"${classes}\"><slot></slot></p>`;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-text': BpText;\n }\n}\n","import { css } from 'lit';\n\nexport const checkboxStyles = css`\n /* Base styles */\n :host {\n display: inline-block;\n }\n\n .checkbox {\n display: inline-flex;\n align-items: center;\n gap: var(--bp-spacing-sm);\n cursor: pointer;\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n color: var(--bp-color-text);\n user-select: none;\n }\n\n .checkbox__input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n margin: 0;\n padding: 0;\n }\n\n .checkbox__checkmark {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: var(--bp-border-width) solid var(--bp-color-border-strong);\n border-radius: var(--bp-border-radius-sm);\n background-color: var(--bp-color-surface);\n transition: all var(--bp-transition-fast);\n }\n\n .checkbox__checkmark svg {\n width: 100%;\n height: 100%;\n color: var(--bp-color-text-inverse);\n opacity: 0;\n transform: scale(0);\n transition:\n opacity var(--bp-duration-fast) var(--bp-ease-out),\n transform var(--bp-duration-fast) var(--bp-ease-bounce);\n }\n\n .checkbox__label {\n line-height: var(--bp-line-height-normal);\n }\n\n /* Sizes */\n .checkbox--sm .checkbox__checkmark {\n width: var(--bp-spacing-4);\n height: var(--bp-spacing-4);\n }\n\n .checkbox--sm .checkbox__label {\n font-size: var(--bp-font-size-sm);\n }\n\n .checkbox--md .checkbox__checkmark {\n width: var(--bp-spacing-5);\n height: var(--bp-spacing-5);\n }\n\n .checkbox--md .checkbox__label {\n font-size: var(--bp-font-size-base);\n }\n\n .checkbox--lg .checkbox__checkmark {\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n }\n\n .checkbox--lg .checkbox__label {\n font-size: var(--bp-font-size-lg);\n }\n\n /* States - Checked */\n .checkbox--checked .checkbox__checkmark {\n background-color: var(--bp-color-primary);\n border-color: var(--bp-color-primary);\n }\n\n .checkbox--checked .checkbox__checkmark svg {\n opacity: 1;\n transform: scale(1);\n }\n\n /* States - Indeterminate */\n .checkbox--indeterminate .checkbox__checkmark {\n background-color: var(--bp-color-primary);\n border-color: var(--bp-color-primary);\n }\n\n .checkbox--indeterminate .checkbox__checkmark svg {\n opacity: 1;\n transform: scale(1);\n }\n\n /* States - Hover */\n .checkbox:hover:not(.checkbox--disabled):not(.checkbox--checked):not(\n .checkbox--indeterminate\n )\n .checkbox__checkmark {\n border-color: var(--bp-color-primary);\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n }\n\n .checkbox--checked:hover:not(.checkbox--disabled) .checkbox__checkmark,\n .checkbox--indeterminate:hover:not(.checkbox--disabled) .checkbox__checkmark {\n background-color: var(--bp-color-primary-hover);\n border-color: var(--bp-color-primary-hover);\n }\n\n /* States - Active */\n .checkbox:active:not(.checkbox--disabled) .checkbox__checkmark {\n transform: scale(0.95);\n }\n\n /* States - Focused */\n .checkbox--focused .checkbox__checkmark {\n outline: var(--bp-focus-width) solid var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n /* States - Disabled */\n .checkbox--disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n /* States - Error */\n .checkbox--error .checkbox__checkmark {\n border-color: var(--bp-color-error);\n }\n\n .checkbox--error.checkbox--checked .checkbox__checkmark,\n .checkbox--error.checkbox--indeterminate .checkbox__checkmark {\n background-color: var(--bp-color-error);\n border-color: var(--bp-color-error);\n }\n\n /* Touch target size: ensure 44x44px minimum on touch devices */\n @media (pointer: coarse) {\n .checkbox {\n min-height: 44px;\n padding: var(--bp-spacing-xs) 0;\n }\n\n .checkbox__checkmark {\n position: relative;\n }\n\n /* Expand touch target with pseudo-element */\n .checkbox__checkmark::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 44px;\n height: 44px;\n }\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { checkboxStyles } from './checkbox.style.js';\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\n\n/**\n * A form checkbox input with label support and multiple states.\n *\n * @element bp-checkbox\n *\n * @property {boolean} checked - Whether the checkbox is checked\n * @property {boolean} indeterminate - Indeterminate state (partial selection)\n * @property {boolean} disabled - Whether the checkbox is disabled\n * @property {boolean} required - Whether the checkbox is required\n * @property {string} name - The name for form submission\n * @property {string} value - The value for form submission\n * @property {CheckboxSize} size - The size of the checkbox\n * @property {boolean} error - Whether the checkbox has an error state\n *\n * @slot - The checkbox label text\n *\n * @fires bp-change - Fired when the checked state changes\n * @fires bp-focus - Fired when the checkbox receives focus\n * @fires bp-blur - Fired when the checkbox loses focus\n *\n * @csspart checkbox - The checkbox container\n * @csspart input - The native checkbox input element\n * @csspart checkmark - The visual checkmark indicator\n * @csspart label - The label text container\n */\n@customElement('bp-checkbox')\nexport class BpCheckbox extends LitElement {\n @query('input[type=\"checkbox\"]') declare input: HTMLInputElement;\n\n /**\n * Whether the checkbox is checked.\n */\n @property({ type: Boolean, reflect: true }) declare checked: boolean;\n\n /**\n * Whether the checkbox is in an indeterminate state.\n * This is a visual-only state for \"partially checked\" appearance.\n */\n @property({ type: Boolean, reflect: true }) declare indeterminate: boolean;\n\n /**\n * Whether the checkbox is disabled.\n */\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n\n /**\n * Whether the checkbox is required.\n */\n @property({ type: Boolean, reflect: true }) declare required: boolean;\n\n /**\n * The name of the checkbox for form submission.\n */\n @property({ type: String, reflect: true }) declare name: string;\n\n /**\n * The value of the checkbox for form submission.\n */\n @property({ type: String }) declare value: string;\n\n /**\n * The size of the checkbox.\n */\n @property({ type: String, reflect: true }) declare size: CheckboxSize;\n\n /**\n * Whether the checkbox has an error state.\n */\n @property({ type: Boolean, reflect: true }) declare error: boolean;\n\n @state() private hasFocus = false;\n\n static styles = [checkboxStyles];\n\n static formAssociated = true;\n // eslint-disable-next-line no-undef\n private internals: ElementInternals | null = null;\n\n constructor() {\n super();\n this.checked = false;\n this.indeterminate = false;\n this.disabled = false;\n this.required = false;\n this.name = '';\n this.value = 'on';\n this.size = 'md';\n this.error = false;\n\n // attachInternals may not be available in all environments (e.g., test)\n if (typeof this.attachInternals === 'function') {\n this.internals = this.attachInternals();\n }\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.updateFormValue();\n }\n\n updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('checked')) {\n this.updateFormValue();\n if (this.input) {\n this.input.checked = this.checked;\n }\n }\n\n if (changedProperties.has('indeterminate') && this.input) {\n this.input.indeterminate = this.indeterminate;\n }\n }\n\n private updateFormValue() {\n const value = this.checked ? this.value : null;\n this.internals?.setFormValue(value);\n }\n\n private handleChange(event: Event) {\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n this.indeterminate = false;\n\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { checked: this.checked },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleFocus() {\n this.hasFocus = true;\n this.dispatchEvent(\n new CustomEvent('bp-focus', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleBlur() {\n this.hasFocus = false;\n this.dispatchEvent(\n new CustomEvent('bp-blur', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Sets focus on the checkbox.\n */\n // eslint-disable-next-line no-undef\n focus(options?: FocusOptions) {\n this.input?.focus(options);\n }\n\n /**\n * Removes focus from the checkbox.\n */\n blur() {\n this.input?.blur();\n }\n\n render() {\n const classes = [\n 'checkbox',\n `checkbox--${this.size}`,\n this.checked ? 'checkbox--checked' : '',\n this.indeterminate ? 'checkbox--indeterminate' : '',\n this.disabled ? 'checkbox--disabled' : '',\n this.error ? 'checkbox--error' : '',\n this.hasFocus ? 'checkbox--focused' : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return html`\n <label part=\"checkbox\" class=\"${classes}\">\n <input\n part=\"input\"\n type=\"checkbox\"\n class=\"checkbox__input\"\n .checked=${live(this.checked)}\n .indeterminate=${live(this.indeterminate)}\n ?disabled=${this.disabled}\n ?required=${this.required}\n name=${ifDefined(this.name || undefined)}\n value=${this.value}\n aria-checked=${this.indeterminate ? 'mixed' : this.checked}\n @change=${this.handleChange}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n />\n <span part=\"checkmark\" class=\"checkbox__checkmark\">\n ${this.indeterminate\n ? html`<svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <line\n x1=\"4\"\n y1=\"8\"\n x2=\"12\"\n y2=\"8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>`\n : html`<svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13 4L6 11L3 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>`}\n </span>\n <span part=\"label\" class=\"checkbox__label\">\n <slot></slot>\n </span>\n </label>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-checkbox': BpCheckbox;\n }\n}\n","import { css } from 'lit';\r\n\r\nexport const radioStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .radio {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-sm);\r\n cursor: pointer;\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-base);\r\n color: var(--bp-color-text);\r\n user-select: none;\r\n }\r\n\r\n .radio__input {\r\n position: absolute;\r\n opacity: 0;\r\n width: 0;\r\n height: 0;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .radio__circle {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n border: var(--bp-border-width) solid var(--bp-color-border-strong);\r\n border-radius: 50%;\r\n background-color: var(--bp-color-surface);\r\n transition: all var(--bp-transition-fast);\r\n }\r\n\r\n .radio__circle-inner {\r\n width: 50%;\r\n height: 50%;\r\n border-radius: 50%;\r\n background-color: var(--bp-color-text-inverse);\r\n opacity: 0;\r\n transform: scale(0);\r\n transition:\r\n opacity var(--bp-duration-fast) var(--bp-ease-out),\r\n transform var(--bp-duration-fast) var(--bp-ease-bounce);\r\n }\r\n\r\n .radio__label {\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n /* Sizes */\r\n .radio--sm .radio__circle {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n }\r\n\r\n .radio--sm .radio__label {\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .radio--md .radio__circle {\r\n width: var(--bp-spacing-5);\r\n height: var(--bp-spacing-5);\r\n }\r\n\r\n .radio--md .radio__label {\r\n font-size: var(--bp-font-size-base);\r\n }\r\n\r\n .radio--lg .radio__circle {\r\n width: var(--bp-spacing-6);\r\n height: var(--bp-spacing-6);\r\n }\r\n\r\n .radio--lg .radio__label {\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n /* States - Checked */\r\n .radio__input:checked ~ .radio__circle {\r\n background-color: var(--bp-color-primary);\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .radio__input:checked ~ .radio__circle .radio__circle-inner {\r\n opacity: 1;\r\n transform: scale(1);\r\n }\r\n\r\n /* States - Focus */\r\n .radio--focused .radio__circle {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n z-index: 1;\r\n }\r\n\r\n /* States - Hover */\r\n .radio:hover:not(.radio--disabled) .radio__circle {\r\n border-color: var(--bp-color-primary);\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 8%,\r\n transparent\r\n );\r\n }\r\n\r\n .radio:hover:not(.radio--disabled) .radio__input:checked ~ .radio__circle {\r\n background-color: var(--bp-color-primary-hover);\r\n border-color: var(--bp-color-primary-hover);\r\n }\r\n\r\n /* States - Active */\r\n .radio:active:not(.radio--disabled) .radio__circle {\r\n transform: scale(0.95);\r\n }\r\n\r\n /* States - Error */\r\n .radio--error .radio__circle {\r\n border-color: var(--bp-color-error);\r\n }\r\n\r\n .radio--error.radio--focused .radio__circle {\r\n outline-color: var(--bp-color-error);\r\n }\r\n\r\n .radio--error .radio__input:checked ~ .radio__circle {\r\n background-color: var(--bp-color-error);\r\n border-color: var(--bp-color-error);\r\n }\r\n\r\n /* States - Disabled */\r\n .radio--disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Touch target size: ensure 44x44px minimum on touch devices */\r\n @media (pointer: coarse) {\r\n .radio {\r\n min-height: 44px;\r\n padding: var(--bp-spacing-xs) 0;\r\n }\r\n\r\n .radio__circle {\r\n position: relative;\r\n }\r\n\r\n /* Expand touch target with pseudo-element */\r\n .radio__circle::before {\r\n content: '';\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n width: 44px;\r\n height: 44px;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property, query, state } from 'lit/decorators.js';\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport { live } from 'lit/directives/live.js';\r\nimport { radioStyles } from './radio.style.js';\r\n\r\nexport type RadioSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * A form radio input with label support and group functionality.\r\n *\r\n * @element bp-radio\r\n *\r\n * @property {boolean} checked - Whether the radio is checked\r\n * @property {boolean} disabled - Whether the radio is disabled\r\n * @property {boolean} required - Whether the radio is required\r\n * @property {string} name - The name of the radio for form submission and grouping\r\n * @property {string} value - The value of the radio for form submission\r\n * @property {RadioSize} size - The size of the radio\r\n * @property {boolean} error - Whether the radio has an error state\r\n *\r\n * @slot - The radio label text\r\n *\r\n * @fires bp-change - Fired when the checked state changes\r\n * @fires bp-focus - Fired when the radio receives focus\r\n * @fires bp-blur - Fired when the radio loses focus\r\n *\r\n * @csspart radio - The radio container\r\n * @csspart input - The native radio input element\r\n * @csspart circle - The visual circle indicator\r\n * @csspart label - The label text container\r\n */\r\n@customElement('bp-radio')\r\nexport class BpRadio extends LitElement {\r\n @query('input[type=\"radio\"]') declare input: HTMLInputElement;\r\n\r\n /**\r\n * Whether the radio is checked.\r\n */\r\n @property({ type: Boolean, reflect: true }) declare checked: boolean;\r\n\r\n /**\r\n * Whether the radio is disabled.\r\n */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /**\r\n * Whether the radio is required.\r\n */\r\n @property({ type: Boolean, reflect: true }) declare required: boolean;\r\n\r\n /**\r\n * The name of the radio for form submission and grouping.\r\n * Radios with the same name form a group where only one can be selected.\r\n */\r\n @property({ type: String, reflect: true }) declare name: string;\r\n\r\n /**\r\n * The value of the radio for form submission.\r\n */\r\n @property({ type: String }) declare value: string;\r\n\r\n /**\r\n * The size of the radio.\r\n */\r\n @property({ type: String, reflect: true }) declare size: RadioSize;\r\n\r\n /**\r\n * Whether the radio has an error state.\r\n */\r\n @property({ type: Boolean, reflect: true }) declare error: boolean;\r\n\r\n @state() private hasFocus = false;\r\n\r\n static styles = [radioStyles];\r\n\r\n static formAssociated = true;\r\n private internals: globalThis.ElementInternals | null = null;\r\n\r\n constructor() {\r\n super();\r\n this.checked = false;\r\n this.disabled = false;\r\n this.required = false;\r\n this.name = '';\r\n this.value = '';\r\n this.size = 'md';\r\n this.error = false;\r\n\r\n if ('attachInternals' in this) {\r\n this.internals = (this as HTMLElement).attachInternals();\r\n }\r\n }\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n this.setAttribute('role', 'radio');\r\n this.updateAriaAttributes();\r\n }\r\n\r\n updated(changedProperties: Map<string, unknown>): void {\r\n super.updated(changedProperties);\r\n\r\n if (\r\n changedProperties.has('checked') ||\r\n changedProperties.has('disabled') ||\r\n changedProperties.has('required') ||\r\n changedProperties.has('error')\r\n ) {\r\n this.updateAriaAttributes();\r\n this.updateFormValue();\r\n }\r\n }\r\n\r\n private updateAriaAttributes(): void {\r\n this.setAttribute('aria-checked', this.checked.toString());\r\n this.setAttribute('aria-disabled', this.disabled.toString());\r\n\r\n if (this.required) {\r\n this.setAttribute('aria-required', 'true');\r\n } else {\r\n this.removeAttribute('aria-required');\r\n }\r\n\r\n if (this.error) {\r\n this.setAttribute('aria-invalid', 'true');\r\n } else {\r\n this.removeAttribute('aria-invalid');\r\n }\r\n }\r\n\r\n private updateFormValue(): void {\r\n if (!this.internals) return;\r\n\r\n if (this.checked) {\r\n this.internals.setFormValue(this.value || 'on');\r\n } else {\r\n this.internals.setFormValue(null);\r\n }\r\n }\r\n\r\n private handleChange(event: Event): void {\r\n const inputElement = event.target as HTMLInputElement;\r\n this.checked = inputElement.checked;\r\n\r\n // Uncheck other radios in the same group\r\n if (this.checked && this.name) {\r\n this.uncheckOtherRadios();\r\n }\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: { checked: this.checked, value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleFocus(): void {\r\n this.hasFocus = true;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-focus', {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleBlur(): void {\r\n this.hasFocus = false;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-blur', {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleClick(): void {\r\n if (!this.disabled) {\r\n this.input?.focus();\r\n }\r\n }\r\n\r\n private uncheckOtherRadios(): void {\r\n if (!this.name) return;\r\n\r\n // Find all radios with the same name in the document\r\n const root = this.getRootNode() as\r\n | globalThis.Document\r\n | globalThis.ShadowRoot;\r\n const radios = Array.from(\r\n root.querySelectorAll(`bp-radio[name=\"${this.name}\"]`)\r\n ) as BpRadio[];\r\n\r\n radios.forEach((radio) => {\r\n if (radio !== this && radio.checked && !radio.disabled) {\r\n radio.checked = false;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Sets focus on the radio.\r\n */\r\n focus(options?: globalThis.FocusOptions): void {\r\n this.input?.focus(options);\r\n }\r\n\r\n /**\r\n * Removes focus from the radio.\r\n */\r\n blur(): void {\r\n this.input?.blur();\r\n }\r\n\r\n /**\r\n * Checks if the radio satisfies its required constraint.\r\n */\r\n checkValidity(): boolean {\r\n return this.input?.checkValidity() ?? true;\r\n }\r\n\r\n /**\r\n * Checks validity and shows validation message if invalid.\r\n */\r\n reportValidity(): boolean {\r\n return this.input?.reportValidity() ?? true;\r\n }\r\n\r\n render() {\r\n const classes = [\r\n 'radio',\r\n `radio--${this.size}`,\r\n this.disabled ? 'radio--disabled' : '',\r\n this.error ? 'radio--error' : '',\r\n this.hasFocus ? 'radio--focused' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n return html`\r\n <label class=${classes} part=\"radio\" @click=${this.handleClick}>\r\n <input\r\n class=\"radio__input\"\r\n part=\"input\"\r\n type=\"radio\"\r\n name=${ifDefined(this.name || undefined)}\r\n value=${ifDefined(this.value || undefined)}\r\n .checked=${live(this.checked)}\r\n ?disabled=${this.disabled}\r\n ?required=${this.required}\r\n @change=${this.handleChange}\r\n @focus=${this.handleFocus}\r\n @blur=${this.handleBlur}\r\n aria-hidden=\"true\"\r\n tabindex=\"-1\"\r\n />\r\n <span class=\"radio__circle\" part=\"circle\">\r\n <span class=\"radio__circle-inner\"></span>\r\n </span>\r\n <span class=\"radio__label\" part=\"label\">\r\n <slot></slot>\r\n </span>\r\n </label>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-radio': BpRadio;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const switchStyles = css`\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Base\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .switch {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-sm);\r\n cursor: pointer;\r\n user-select: none;\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-base);\r\n line-height: var(--bp-line-height-normal);\r\n color: var(--bp-color-text);\r\n -webkit-tap-highlight-color: transparent;\r\n }\r\n\r\n .switch__input {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n margin: -1px;\r\n padding: 0;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border: 0;\r\n }\r\n\r\n .switch__label {\r\n flex: 1;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Track\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .switch__track {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n flex-shrink: 0;\r\n border-radius: var(--bp-border-radius-full);\r\n background-color: var(--bp-color-border-strong);\r\n transition: background-color 200ms cubic-bezier(0.2, 0, 0, 1);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Thumb\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .switch__thumb {\r\n position: absolute;\r\n border-radius: var(--bp-border-radius-full);\r\n background-color: var(--bp-color-surface-elevated);\r\n box-shadow:\r\n 0 1px 2px oklch(0 0 0 / 0.2),\r\n 0 1px 3px oklch(0 0 0 / 0.1);\r\n transition:\r\n transform 200ms cubic-bezier(0.2, 0, 0, 1),\r\n width 200ms cubic-bezier(0.2, 0, 0, 1),\r\n box-shadow 200ms cubic-bezier(0.2, 0, 0, 1);\r\n will-change: transform, width;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Sizes — proportional track + thumb dimensions\r\n *\r\n * sm: track 32×18, thumb 14, pad 2\r\n * md: track 40×22, thumb 18, pad 2\r\n * lg: track 48×28, thumb 22, pad 3\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n /* Small */\r\n .switch--sm .switch__track {\r\n width: var(--bp-spacing-8);\r\n height: 18px;\r\n padding: var(--bp-spacing-0-5);\r\n }\r\n .switch--sm .switch__thumb {\r\n width: 14px;\r\n height: 14px;\r\n left: var(--bp-spacing-0-5);\r\n }\r\n .switch--sm .switch__input:checked + .switch__track .switch__thumb {\r\n transform: translateX(14px);\r\n }\r\n\r\n /* Medium */\r\n .switch--md .switch__track {\r\n width: var(--bp-spacing-10);\r\n height: 22px;\r\n padding: var(--bp-spacing-0-5);\r\n }\r\n .switch--md .switch__thumb {\r\n width: 18px;\r\n height: 18px;\r\n left: var(--bp-spacing-0-5);\r\n }\r\n .switch--md .switch__input:checked + .switch__track .switch__thumb {\r\n transform: translateX(18px);\r\n }\r\n\r\n /* Large */\r\n .switch--lg .switch__track {\r\n width: var(--bp-spacing-12);\r\n height: 28px;\r\n padding: var(--bp-spacing-1);\r\n }\r\n .switch--lg .switch__thumb {\r\n width: 22px;\r\n height: 22px;\r\n left: var(--bp-spacing-1);\r\n }\r\n .switch--lg .switch__input:checked + .switch__track .switch__thumb {\r\n transform: translateX(22px);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Checked state\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .switch__input:checked + .switch__track {\r\n background-color: var(--bp-color-primary);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Hover\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .switch:hover:not(.switch--disabled) .switch__track {\r\n background-color: var(--bp-color-text-muted);\r\n }\r\n\r\n .switch:hover:not(.switch--disabled) .switch__input:checked + .switch__track {\r\n background-color: var(--bp-color-primary-hover);\r\n }\r\n\r\n .switch:hover:not(.switch--disabled) .switch__thumb {\r\n box-shadow:\r\n 0 1px 3px oklch(0 0 0 / 0.25),\r\n 0 2px 6px oklch(0 0 0 / 0.1);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Active / Pressed — thumb stretches toward the direction of travel\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .switch:active:not(.switch--disabled) .switch--sm .switch__thumb,\r\n .switch--sm .switch__input:active + .switch__track .switch__thumb {\r\n width: 18px;\r\n }\r\n .switch--sm .switch__input:checked:active + .switch__track .switch__thumb {\r\n width: 18px;\r\n transform: translateX(10px);\r\n }\r\n\r\n .switch:active:not(.switch--disabled) .switch--md .switch__thumb,\r\n .switch--md .switch__input:active + .switch__track .switch__thumb {\r\n width: 22px;\r\n }\r\n .switch--md .switch__input:checked:active + .switch__track .switch__thumb {\r\n width: 22px;\r\n transform: translateX(14px);\r\n }\r\n\r\n .switch:active:not(.switch--disabled) .switch--lg .switch__thumb,\r\n .switch--lg .switch__input:active + .switch__track .switch__thumb {\r\n width: 26px;\r\n }\r\n .switch--lg .switch__input:checked:active + .switch__track .switch__thumb {\r\n width: 26px;\r\n transform: translateX(18px);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Focus\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .switch--focus .switch__track {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Disabled\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .switch--disabled {\r\n opacity: 0.4;\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Error\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .switch--error .switch__track {\r\n background-color: var(--bp-color-error);\r\n }\r\n\r\n .switch--error .switch__input:checked + .switch__track {\r\n background-color: var(--bp-color-error);\r\n }\r\n\r\n .switch:hover:not(.switch--disabled).switch--error .switch__track {\r\n background-color: var(--bp-color-error-hover);\r\n }\r\n\r\n .switch:hover:not(.switch--disabled).switch--error\r\n .switch__input:checked\r\n + .switch__track {\r\n background-color: var(--bp-color-error-hover);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Touch target — ensure 44×44px minimum on touch devices\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n @media (pointer: coarse) {\r\n .switch {\r\n min-height: 44px;\r\n padding: var(--bp-spacing-xs) 0;\r\n }\r\n\r\n .switch__track::before {\r\n content: '';\r\n position: absolute;\r\n inset: -8px -4px;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { switchStyles } from './switch.style.js';\nimport { live } from 'lit/directives/live.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nexport type SwitchSize = 'sm' | 'md' | 'lg';\n\n/**\n * A toggle switch component for binary on/off states with form integration.\n *\n * @element bp-switch\n *\n * @fires {CustomEvent} bp-change - Fired when the checked state changes\n * @fires {CustomEvent} bp-focus - Fired when the switch receives focus\n * @fires {CustomEvent} bp-blur - Fired when the switch loses focus\n *\n * @slot - The label text for the switch\n *\n * @csspart switch - The switch container (label)\n * @csspart input - The native checkbox input element\n * @csspart track - The switch track background\n * @csspart thumb - The switch thumb/handle\n * @csspart label - The label text container\n */\n@customElement('bp-switch')\nexport class BpSwitch extends LitElement {\n /**\n * Whether the switch is in the on (checked) position\n */\n @property({ type: Boolean, reflect: true })\n declare checked: boolean;\n\n /**\n * Whether the switch is disabled\n */\n @property({ type: Boolean, reflect: true })\n declare disabled: boolean;\n\n /**\n * Whether the switch is required\n */\n @property({ type: Boolean, reflect: true })\n declare required: boolean;\n\n /**\n * The name attribute for form submission\n */\n @property({ type: String })\n declare name: string;\n\n /**\n * The value attribute for form submission\n */\n @property({ type: String })\n declare value: string;\n\n /**\n * The size of the switch\n */\n @property({ type: String, reflect: true })\n declare size: SwitchSize;\n\n /**\n * Whether the switch has an error state\n */\n @property({ type: Boolean, reflect: true })\n declare error: boolean;\n\n @state()\n private hasFocus = false;\n\n @query('input[type=\"checkbox\"]')\n private input!: HTMLInputElement;\n\n static styles = [switchStyles];\n\n static formAssociated = true;\n // eslint-disable-next-line no-undef\n private internals: ElementInternals | null = null;\n\n constructor() {\n super();\n this.checked = false;\n this.disabled = false;\n this.required = false;\n this.name = '';\n this.value = 'on';\n this.size = 'md';\n this.error = false;\n\n // Attach internals for form integration (with safety check for tests)\n if (typeof this.attachInternals === 'function') {\n this.internals = this.attachInternals();\n }\n }\n\n /**\n * Handle input change events\n */\n private handleChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n\n // Update form value\n if (!this.disabled && this.internals) {\n this.internals.setFormValue(this.checked ? this.value : null);\n }\n\n // Emit custom change event\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { checked: this.checked },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Handle focus events\n */\n private handleFocus(): void {\n this.hasFocus = true;\n this.dispatchEvent(\n new CustomEvent('bp-focus', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Handle blur events\n */\n private handleBlur(): void {\n this.hasFocus = false;\n this.dispatchEvent(\n new CustomEvent('bp-blur', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Handle label click to toggle the switch\n */\n private handleLabelClick(event: MouseEvent): void {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n }\n\n /**\n * Sets focus on the switch.\n */\n // eslint-disable-next-line no-undef\n focus(options?: FocusOptions) {\n this.input?.focus(options);\n }\n\n /**\n * Removes focus from the switch.\n */\n blur() {\n this.input?.blur();\n }\n\n /**\n * Lifecycle callback when properties change\n */\n updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('checked') && this.internals) {\n this.internals.setFormValue(this.checked ? this.value : null);\n }\n }\n\n render() {\n return html`\n <label\n part=\"switch\"\n class=\"switch switch--${this.size} ${this.disabled\n ? 'switch--disabled'\n : ''} ${this.error ? 'switch--error' : ''} ${this.hasFocus\n ? 'switch--focus'\n : ''}\"\n @click=${this.handleLabelClick}\n >\n <input\n part=\"input\"\n type=\"checkbox\"\n class=\"switch__input\"\n .checked=${live(this.checked)}\n ?disabled=${this.disabled}\n ?required=${this.required}\n name=${ifDefined(this.name || undefined)}\n value=${this.value}\n aria-checked=${this.checked ? 'true' : 'false'}\n @change=${this.handleChange}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n />\n <span part=\"track\" class=\"switch__track\">\n <span part=\"thumb\" class=\"switch__thumb\"></span>\n </span>\n <span part=\"label\" class=\"switch__label\">\n <slot></slot>\n </span>\n </label>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-switch': BpSwitch;\n }\n}\n","import { css } from 'lit';\n\nexport const tooltipStyles = css`\n /* Base styles */\n :host {\n display: inline-block;\n position: relative;\n }\n\n .tooltip-wrapper {\n position: relative;\n display: inline-block;\n }\n\n .tooltip-trigger {\n display: inline-block;\n }\n\n .tooltip-content {\n position: absolute;\n z-index: var(--bp-z-tooltip);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n background-color: var(--bp-color-text);\n color: var(--bp-color-text-inverse);\n border-radius: var(--bp-border-radius-sm);\n font-size: var(--bp-font-size-sm);\n font-family: var(--bp-font-family);\n line-height: var(--bp-line-height-tight);\n max-width: calc(var(--bp-spacing-24) * 3);\n white-space: normal;\n box-shadow: var(--bp-shadow-md);\n pointer-events: none;\n animation: tooltip-fade-in var(--bp-transition-fast);\n }\n\n @keyframes tooltip-fade-in {\n from {\n opacity: 0;\n scale: 0.95;\n }\n to {\n opacity: 1;\n scale: 1;\n }\n }\n\n /* Placement variants */\n .tooltip-content--top {\n bottom: calc(100% + var(--bp-spacing-xs));\n left: 50%;\n transform: translateX(-50%);\n }\n\n .tooltip-content--top::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n border-width: var(--bp-spacing-sm);\n border-style: solid;\n border-color: var(--bp-color-text) transparent transparent transparent;\n }\n\n .tooltip-content--bottom {\n top: calc(100% + var(--bp-spacing-xs));\n left: 50%;\n transform: translateX(-50%);\n }\n\n .tooltip-content--bottom::after {\n content: '';\n position: absolute;\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n border-width: var(--bp-spacing-sm);\n border-style: solid;\n border-color: transparent transparent var(--bp-color-text) transparent;\n }\n\n .tooltip-content--left {\n right: calc(100% + var(--bp-spacing-xs));\n top: 50%;\n transform: translateY(-50%);\n }\n\n .tooltip-content--left::after {\n content: '';\n position: absolute;\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n border-width: var(--bp-spacing-sm);\n border-style: solid;\n border-color: transparent transparent transparent var(--bp-color-text);\n }\n\n .tooltip-content--right {\n left: calc(100% + var(--bp-spacing-xs));\n top: 50%;\n transform: translateY(-50%);\n }\n\n .tooltip-content--right::after {\n content: '';\n position: absolute;\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n border-width: var(--bp-spacing-sm);\n border-style: solid;\n border-color: transparent var(--bp-color-text) transparent transparent;\n }\n\n /* States */\n :host([disabled]) {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { tooltipStyles } from './tooltip.style.js';\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\n\n/**\n * A tooltip component that displays contextual information on hover or focus.\n *\n * @slot - The trigger element that shows the tooltip on hover/focus\n *\n * @cssprop --bp-tooltip-max-width - Maximum width of the tooltip content\n *\n * @fires bp-show - Fired when tooltip becomes visible\n * @fires bp-hide - Fired when tooltip becomes hidden\n */\n@customElement('bp-tooltip')\nexport class BpTooltip extends LitElement {\n /**\n * The text content to display in the tooltip\n */\n @property({ type: String }) declare content: string;\n\n /**\n * Placement of the tooltip relative to the trigger\n */\n @property({ type: String }) declare placement: TooltipPlacement;\n\n /**\n * Whether the tooltip is disabled\n */\n @property({ type: Boolean }) declare disabled: boolean;\n\n /**\n * Delay in milliseconds before showing the tooltip\n */\n @property({ type: Number }) declare delay: number;\n\n /**\n * Internal state tracking whether tooltip is visible\n */\n @state() private isVisible = false;\n\n private showTimeout: number | null = null;\n private hideTimeout: number | null = null;\n private tooltipId = `tooltip-${Math.random().toString(36).substr(2, 9)}`;\n\n static styles = [tooltipStyles];\n\n constructor() {\n super();\n this.content = '';\n this.placement = 'top';\n this.disabled = false;\n this.delay = 200;\n }\n\n private handleMouseEnter() {\n if (this.disabled) return;\n\n this.clearTimeouts();\n this.showTimeout = window.setTimeout(() => {\n this.isVisible = true;\n this.dispatchEvent(\n new CustomEvent('bp-show', {\n detail: {\n placement: this.placement,\n content: this.content,\n },\n bubbles: true,\n composed: true,\n })\n );\n }, this.delay);\n }\n\n private handleMouseLeave() {\n this.clearTimeouts();\n this.hideTimeout = window.setTimeout(() => {\n this.isVisible = false;\n this.dispatchEvent(\n new CustomEvent('bp-hide', {\n detail: {\n placement: this.placement,\n content: this.content,\n },\n bubbles: true,\n composed: true,\n })\n );\n }, 100);\n }\n\n private handleFocus() {\n if (this.disabled) return;\n this.isVisible = true;\n this.dispatchEvent(\n new CustomEvent('bp-show', {\n detail: {\n placement: this.placement,\n content: this.content,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleBlur() {\n this.isVisible = false;\n this.dispatchEvent(\n new CustomEvent('bp-hide', {\n detail: {\n placement: this.placement,\n content: this.content,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private clearTimeouts() {\n if (this.showTimeout !== null) {\n window.clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n if (this.hideTimeout !== null) {\n window.clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.clearTimeouts();\n }\n\n render() {\n return html`\n <div\n class=\"tooltip-wrapper\"\n aria-describedby=${this.isVisible ? this.tooltipId : ''}\n @mouseenter=${this.handleMouseEnter}\n @mouseleave=${this.handleMouseLeave}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n >\n <div class=\"tooltip-trigger\" part=\"trigger\">\n <slot></slot>\n </div>\n ${this.isVisible && !this.disabled\n ? html`\n <div\n id=${this.tooltipId}\n class=\"tooltip-content tooltip-content--${this.placement}\"\n part=\"content\"\n role=\"tooltip\"\n aria-hidden=\"false\"\n >\n ${this.content}\n </div>\n `\n : null}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-tooltip': BpTooltip;\n }\n}\n","import { css } from 'lit';\n\nexport const progressStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .progress-container {\n width: 100%;\n }\n\n .progress-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: var(--bp-spacing-sm);\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-sm);\n color: var(--bp-color-text);\n }\n\n .progress-label {\n font-weight: var(--bp-font-weight-medium);\n }\n\n .progress-value {\n color: var(--bp-color-text);\n opacity: 0.85;\n font-feature-settings: 'tnum';\n font-variant-numeric: tabular-nums;\n }\n\n .progress {\n position: relative;\n width: 100%;\n background-color: var(--bp-color-border);\n opacity: 0.3;\n border-radius: var(--bp-border-radius-full);\n overflow: hidden;\n }\n\n .progress-bar {\n height: 100%;\n border-radius: var(--bp-border-radius-full);\n transition:\n width var(--bp-transition-base),\n background-color var(--bp-transition-base);\n opacity: 1;\n }\n\n /* Sizes */\n .progress--sm {\n height: var(--bp-spacing-2);\n }\n\n .progress--md {\n height: var(--bp-spacing-3);\n }\n\n .progress--lg {\n height: var(--bp-spacing-4);\n }\n\n /* Variants */\n .progress--primary .progress-bar {\n background-color: var(--bp-color-primary);\n }\n\n .progress--success .progress-bar {\n background-color: var(--bp-color-success);\n }\n\n .progress--warning .progress-bar {\n background-color: var(--bp-color-warning);\n }\n\n .progress--error .progress-bar {\n background-color: var(--bp-color-error);\n }\n\n .progress--info .progress-bar {\n background-color: var(--bp-color-info);\n }\n\n /* Indeterminate state */\n .progress--indeterminate .progress-bar {\n width: 40%;\n animation: indeterminate 1.8s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n transform-origin: 0 0;\n }\n\n @keyframes indeterminate {\n 0% {\n transform: translateX(-100%) scaleX(1);\n }\n 40% {\n transform: translateX(-10%) scaleX(1.5);\n }\n 100% {\n transform: translateX(250%) scaleX(0.5);\n }\n }\n\n /* States */\n .progress:focus-visible {\n outline: var(--bp-focus-ring);\n outline-offset: var(--bp-focus-offset);\n }\n\n .progress--complete .progress-bar {\n animation: complete-pulse 600ms ease-out;\n }\n\n @keyframes complete-pulse {\n 0%,\n 100% {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(1.15);\n }\n }\n\n .progress--complete.progress--primary .progress-bar {\n background-color: var(--bp-color-success);\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { progressStyles } from './progress.style.js';\n\nexport type ProgressVariant =\n | 'primary'\n | 'success'\n | 'warning'\n | 'error'\n | 'info';\nexport type ProgressSize = 'sm' | 'md' | 'lg';\n\n/**\n * A progress bar component for displaying task completion or loading status.\n *\n * @fires bp-complete - Fired when progress reaches 100%\n */\n@customElement('bp-progress')\nexport class BpProgress extends LitElement {\n /**\n * Current progress value\n */\n @property({ type: Number }) declare value: number;\n\n /**\n * Maximum value for progress (value will be clamped to 0-max)\n */\n @property({ type: Number }) declare max: number;\n\n /**\n * Visual variant of the progress bar\n */\n @property({ type: String, reflect: true }) declare variant: ProgressVariant;\n\n /**\n * Size of the progress bar\n */\n @property({ type: String, reflect: true }) declare size: ProgressSize;\n\n /**\n * Optional label text displayed above the progress bar\n */\n @property({ type: String }) declare label: string;\n\n /**\n * Whether to show percentage text\n */\n @property({ type: Boolean }) declare showValue: boolean;\n\n /**\n * Whether the progress bar is indeterminate (loading state)\n */\n @property({ type: Boolean }) declare indeterminate: boolean;\n\n static styles = [progressStyles];\n\n constructor() {\n super();\n this.value = 0;\n this.max = 100;\n this.variant = 'primary';\n this.size = 'md';\n this.label = '';\n this.showValue = false;\n this.indeterminate = false;\n }\n\n private get percentage(): number {\n if (this.max <= 0) return 0;\n const percent = (this.value / this.max) * 100;\n return Math.min(100, Math.max(0, percent));\n }\n\n private get complete(): boolean {\n return this.percentage >= 100 && !this.indeterminate;\n }\n\n updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n\n if (changedProperties.has('value') && this.percentage >= 100) {\n this.dispatchEvent(\n new CustomEvent('bp-complete', {\n detail: {\n value: this.value,\n max: this.max,\n percentage: this.percentage,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n render() {\n return html`\n <div class=\"progress-container\">\n ${this.label || this.showValue\n ? html`\n <div class=\"progress-header\" part=\"header\">\n ${this.label\n ? html`<span class=\"progress-label\">${this.label}</span>`\n : null}\n ${this.showValue && !this.indeterminate\n ? html`<span class=\"progress-value\"\n >${Math.round(this.percentage)}%</span\n >`\n : null}\n </div>\n `\n : null}\n <div\n class=\"progress progress--${this.variant} progress--${this\n .size} ${this.indeterminate ? 'progress--indeterminate' : ''} ${this\n .complete\n ? 'progress--complete'\n : ''}\"\n part=\"track\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"${this.max}\"\n aria-valuenow=\"${this.indeterminate ? undefined : this.value}\"\n aria-label=\"${this.label || 'Progress'}\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n <div\n class=\"progress-bar\"\n part=\"bar\"\n style=\"width: ${this.indeterminate\n ? '100%'\n : this.percentage + '%'}\"\n ></div>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-progress': BpProgress;\n }\n}\n","import { css } from 'lit';\r\n\r\nexport const cardStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: block;\r\n }\r\n\r\n .card {\r\n font-family: var(--bp-font-family);\r\n background-color: var(--bp-color-surface-elevated);\r\n border-radius: var(--bp-border-radius-lg);\r\n overflow: hidden;\r\n transition:\r\n box-shadow var(--bp-transition-fast),\r\n transform var(--bp-transition-base),\r\n border-color var(--bp-transition-fast);\r\n }\r\n\r\n /* Content layout (media + body wrapper) */\r\n .card-content {\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n .card-content--horizontal {\r\n flex-direction: row;\r\n }\r\n\r\n .card-content--horizontal ::slotted([slot='media']) {\r\n width: auto;\r\n max-width: 50%;\r\n flex-shrink: 0;\r\n }\r\n\r\n .card-body {\r\n padding: var(--bp-spacing-lg);\r\n font-size: var(--bp-font-size-base);\r\n line-height: var(--bp-line-height-relaxed);\r\n color: var(--bp-color-text);\r\n flex: 1;\r\n min-width: 0;\r\n }\r\n\r\n .card-body--no-padding {\r\n padding: 0;\r\n }\r\n\r\n /* Header and footer container styles */\r\n .card-header {\r\n padding: var(--bp-spacing-lg);\r\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\r\n font-weight: var(--bp-font-weight-semibold);\r\n font-size: var(--bp-font-size-lg);\r\n line-height: 1.4;\r\n color: var(--bp-color-text-strong);\r\n }\r\n\r\n .card-footer {\r\n padding: var(--bp-spacing-lg);\r\n border-top: var(--bp-border-width) solid var(--bp-color-border);\r\n font-size: var(--bp-font-size-sm);\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n /* Media slot styles */\r\n ::slotted([slot='media']) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n }\r\n\r\n /* Variants */\r\n .card--default {\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n box-shadow: var(--bp-shadow-sm);\r\n }\r\n\r\n .card--outlined {\r\n border: var(--bp-border-width) solid var(--bp-color-border-strong);\r\n box-shadow: none;\r\n }\r\n\r\n .card--elevated {\r\n border: none;\r\n box-shadow: var(--bp-shadow-lg);\r\n }\r\n\r\n /* States */\r\n .card--default.card--hoverable:hover,\r\n .card--default.card--clickable:hover {\r\n box-shadow: var(--bp-shadow-md);\r\n border-color: var(--bp-color-border-strong);\r\n }\r\n\r\n .card--outlined.card--hoverable:hover,\r\n .card--outlined.card--clickable:hover {\r\n box-shadow: var(--bp-shadow-md);\r\n }\r\n\r\n .card--elevated.card--hoverable:hover,\r\n .card--elevated.card--clickable:hover {\r\n box-shadow: var(--bp-shadow-xl);\r\n }\r\n\r\n .card--clickable {\r\n cursor: pointer;\r\n user-select: none;\r\n }\r\n\r\n .card--clickable:focus-visible {\r\n outline: var(--bp-focus-ring);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .card--clickable:active {\r\n box-shadow: var(--bp-shadow-sm);\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport { cardStyles } from './card.style.js';\r\n\r\nexport type CardVariant = 'default' | 'outlined' | 'elevated';\r\nexport type CardDirection = 'vertical' | 'horizontal';\r\n/**\r\n * A versatile card component for organizing and displaying content.\r\n *\r\n * @slot - Default slot for card body content\r\n * @slot header - Optional header section\r\n * @slot footer - Optional footer section\r\n * @slot media - Optional media section (images, illustrations, etc.)\r\n *\r\n * @fires bp-click - Fired when clickable card is clicked\r\n */\r\n@customElement('bp-card')\r\nexport class BpCard extends LitElement {\r\n /**\r\n * Visual variant of the card\r\n */\r\n @property({ type: String, reflect: true }) declare variant: CardVariant;\r\n\r\n /**\r\n * Whether the card should display a hover effect\r\n */\r\n @property({ type: Boolean, reflect: true }) declare hoverable: boolean;\r\n\r\n /**\r\n * Whether the card is clickable (shows pointer cursor and emits click events)\r\n */\r\n @property({ type: Boolean, reflect: true }) declare clickable: boolean;\r\n\r\n /**\r\n * Whether to remove default padding from the card body\r\n */\r\n @property({ type: Boolean, reflect: true }) declare noPadding: boolean;\r\n\r\n /**\r\n * Layout direction for the card content (media + body area).\r\n * 'vertical' stacks media above body, 'horizontal' places them side by side.\r\n * Header and footer are unaffected and remain full-width.\r\n */\r\n @property({ type: String, reflect: true }) declare direction: CardDirection;\r\n\r\n /** Whether the header slot has assigned content */\r\n @property({ type: Boolean, attribute: false })\r\n private hasHeader = false;\r\n\r\n /** Whether the footer slot has assigned content */\r\n @property({ type: Boolean, attribute: false })\r\n private hasFooter = false;\r\n\r\n static styles = [cardStyles];\r\n\r\n constructor() {\r\n super();\r\n this.variant = 'default';\r\n this.hoverable = false;\r\n this.clickable = false;\r\n this.noPadding = false;\r\n this.direction = 'vertical';\r\n }\r\n\r\n /**\r\n * Handles slot change events for the header slot.\r\n * Updates hasHeader state to control header visibility.\r\n */\r\n private handleHeaderSlotChange = (event: Event): void => {\r\n const slot = event.target as HTMLElement & {\r\n assignedNodes: (options?: { flatten?: boolean }) => Node[];\r\n };\r\n this.hasHeader = slot.assignedNodes({ flatten: true }).length > 0;\r\n };\r\n\r\n /**\r\n * Handles slot change events for the footer slot.\r\n * Updates hasFooter state to control footer visibility.\r\n */\r\n private handleFooterSlotChange = (event: Event): void => {\r\n const slot = event.target as HTMLElement & {\r\n assignedNodes: (options?: { flatten?: boolean }) => Node[];\r\n };\r\n this.hasFooter = slot.assignedNodes({ flatten: true }).length > 0;\r\n };\r\n\r\n private handleClick(event: MouseEvent) {\r\n if (!this.clickable) return;\r\n\r\n // Only prevent default if not clicking on interactive elements\r\n const target = event.target as HTMLElement;\r\n if (!target.closest('a, button, input, select, textarea')) {\r\n event.preventDefault();\r\n }\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-click', {\r\n detail: { originalEvent: event },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"card card--${this.variant} ${this.hoverable || this.clickable\r\n ? 'card--hoverable'\r\n : ''} ${this.clickable ? 'card--clickable' : ''}\"\r\n part=\"card\"\r\n @click=${this.handleClick}\r\n role=${this.clickable ? 'button' : 'article'}\r\n tabindex=${ifDefined(this.clickable ? '0' : undefined)}\r\n @keydown=${this.clickable ? this.handleKeydown : undefined}\r\n >\r\n ${this.hasHeader\r\n ? html`<div class=\"card-header\" part=\"header\">\r\n <slot\r\n name=\"header\"\r\n @slotchange=${this.handleHeaderSlotChange}\r\n ></slot>\r\n </div>`\r\n : html`<slot\r\n name=\"header\"\r\n @slotchange=${this.handleHeaderSlotChange}\r\n ></slot>`}\r\n <div\r\n class=\"card-content ${this.direction === 'horizontal'\r\n ? 'card-content--horizontal'\r\n : ''}\"\r\n part=\"content\"\r\n >\r\n <slot name=\"media\" part=\"media\"></slot>\r\n <div\r\n class=\"card-body ${this.noPadding ? 'card-body--no-padding' : ''}\"\r\n part=\"body\"\r\n >\r\n <slot></slot>\r\n </div>\r\n </div>\r\n ${this.hasFooter\r\n ? html`<div class=\"card-footer\" part=\"footer\">\r\n <slot\r\n name=\"footer\"\r\n @slotchange=${this.handleFooterSlotChange}\r\n ></slot>\r\n </div>`\r\n : html`<slot\r\n name=\"footer\"\r\n @slotchange=${this.handleFooterSlotChange}\r\n ></slot>`}\r\n </div>\r\n `;\r\n }\r\n\r\n private handleKeydown(event: Event) {\r\n const keyboardEvent = event as typeof window.KeyboardEvent.prototype;\r\n if (keyboardEvent.key === 'Enter' || keyboardEvent.key === ' ') {\r\n event.preventDefault();\r\n this.handleClick(event as unknown as MouseEvent);\r\n }\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-card': BpCard;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const alertStyles = css`\n /* Base styles */\n :host {\n display: block;\n animation: slideIn var(--bp-transition-base) ease-out;\n }\n\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translateY(calc(-1 * var(--bp-spacing-md)));\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .alert {\n position: relative;\n display: flex;\n align-items: flex-start;\n gap: var(--bp-spacing-md);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-relaxed);\n border-radius: var(--bp-border-radius-md);\n border-width: var(--bp-border-width);\n border-style: solid;\n }\n\n @media (min-width: var(--bp-breakpoint-sm)) {\n .alert {\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n }\n }\n\n .alert-content {\n display: flex;\n align-items: flex-start;\n gap: var(--bp-spacing-md);\n flex: 1;\n }\n\n .alert-icon {\n display: flex;\n align-items: flex-start;\n padding-top: var(--bp-spacing-0-5);\n flex-shrink: 0;\n }\n\n .alert-icon svg {\n width: var(--bp-spacing-5);\n height: var(--bp-spacing-5);\n flex-shrink: 0;\n }\n\n .alert-message {\n flex: 1;\n }\n\n ::slotted([slot='title']) {\n display: block;\n font-weight: var(--bp-font-weight-semibold);\n line-height: var(--bp-line-height-tight);\n margin-bottom: var(--bp-spacing-xs);\n }\n\n .alert-close {\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n cursor: pointer;\n padding: var(--bp-spacing-2xs);\n border-radius: var(--bp-border-radius-sm);\n color: inherit;\n opacity: 0.8;\n transition: all var(--bp-transition-fast);\n flex-shrink: 0;\n }\n\n .alert-close:hover {\n opacity: 1;\n background-color: currentColor;\n opacity: 0.1;\n }\n\n .alert-close:active {\n opacity: 0.15;\n }\n\n .alert-close:focus-visible {\n outline: var(--bp-focus-ring);\n outline-offset: var(--bp-focus-offset);\n }\n\n /* Variants */\n .alert--info {\n background-color: var(--bp-color-surface-elevated);\n border-color: var(--bp-color-info);\n border-left-width: var(--bp-spacing-1);\n color: var(--bp-color-text);\n }\n\n .alert--success {\n background-color: var(--bp-color-surface-elevated);\n border-color: var(--bp-color-success);\n border-left-width: var(--bp-spacing-1);\n color: var(--bp-color-text);\n }\n\n .alert--warning {\n background-color: var(--bp-color-surface-elevated);\n border-color: var(--bp-color-warning);\n border-left-width: var(--bp-spacing-1);\n color: var(--bp-color-text);\n box-shadow: var(--bp-shadow-sm);\n }\n\n .alert--error {\n background-color: var(--bp-color-surface-elevated);\n border-color: var(--bp-color-error);\n border-left-width: var(--bp-spacing-1);\n color: var(--bp-color-text);\n box-shadow: var(--bp-shadow-sm);\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { alertStyles } from './alert.style.js';\nimport { type IconName } from '../icon/icons/registry.generated.js';\nimport '../icon/icon.js';\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error';\ninterface IconMap {\n info: IconName;\n success: IconName;\n warning: IconName;\n error: IconName;\n}\n\n/**\n * An alert component for displaying notification messages to users.\n *\n * @slot - Message content\n * @slot title - Optional title/heading for the alert\n * @slot icon - Optional custom icon (replaces default icon)\n *\n * @fires bp-close - Fired when the alert is dismissed (cancelable)\n */\n@customElement('bp-alert')\nexport class BpAlert extends LitElement {\n /**\n * Visual variant indicating the type of alert\n */\n @property({ type: String, reflect: true }) declare variant: AlertVariant;\n\n /**\n * Whether the alert can be dismissed by the user\n */\n @property({ type: Boolean, reflect: true }) declare dismissible: boolean;\n\n /**\n * Whether to show a default icon for the variant\n */\n @property({ type: Boolean, reflect: true }) declare showIcon: boolean;\n\n static styles = [alertStyles];\n\n constructor() {\n super();\n this.variant = 'info';\n this.dismissible = false;\n this.showIcon = false;\n }\n\n private handleClose() {\n const event = new CustomEvent('bp-close', {\n detail: {\n variant: this.variant,\n timestamp: Date.now(),\n },\n bubbles: true,\n composed: true,\n cancelable: true,\n });\n\n this.dispatchEvent(event);\n\n // Only remove if event wasn't prevented\n if (!event.defaultPrevented) {\n this.remove();\n }\n }\n\n private getIconName(): IconName {\n const iconMap: IconMap = {\n info: 'info-circle',\n success: 'check-circle',\n warning: 'warning-circle',\n error: 'cross-circle',\n };\n return iconMap[this.variant];\n }\n\n render() {\n return html`\n <div\n class=\"alert alert--${this.variant}\"\n part=\"alert\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n <div class=\"alert-content\">\n ${this.showIcon\n ? html`\n <div class=\"alert-icon\" part=\"icon\">\n <slot name=\"icon\">\n <bp-icon name=${this.getIconName()}></bp-icon>\n </slot>\n </div>\n `\n : null}\n <div class=\"alert-message\" part=\"message\">\n <slot name=\"title\"></slot>\n <slot></slot>\n </div>\n </div>\n ${this.dismissible\n ? html`\n <button\n class=\"alert-close\"\n part=\"close-button\"\n @click=${this.handleClose}\n aria-label=\"Close alert\"\n >\n <bp-icon name=\"cross\"></bp-icon>\n </button>\n `\n : null}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-alert': BpAlert;\n }\n}\n","import { css } from 'lit';\r\n\r\nexport const selectStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n width: 100%;\r\n box-sizing: border-box;\r\n }\r\n\r\n *,\r\n *::before,\r\n *::after {\r\n box-sizing: border-box;\r\n }\r\n\r\n .select {\r\n position: relative;\r\n font-family: var(--bp-font-family);\r\n }\r\n\r\n .select-label {\r\n display: block;\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-sm);\r\n font-weight: var(--bp-font-weight-medium);\r\n color: var(--bp-color-text);\r\n line-height: var(--bp-line-height-normal);\r\n margin-bottom: var(--bp-spacing-xs);\r\n }\r\n\r\n .select-required {\r\n color: var(--bp-color-error);\r\n margin-left: var(--bp-spacing-xs);\r\n }\r\n\r\n .select-trigger {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n width: 100%;\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n background-color: var(--bp-color-background);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n font-size: var(--bp-font-size-base);\r\n line-height: var(--bp-line-height-normal);\r\n color: var(--bp-color-text);\r\n cursor: pointer;\r\n box-shadow: inset 0 1px 2px oklch(0 0 0 / 0.05);\r\n transition:\r\n border-color var(--bp-transition-fast),\r\n box-shadow var(--bp-transition-fast);\r\n }\r\n\r\n .select-value {\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n position: relative;\r\n }\r\n\r\n /* Hidden sizer keeps the trigger width stable across placeholder/option changes */\r\n .select-value__sizer {\r\n display: block;\r\n height: 0;\r\n overflow: hidden;\r\n visibility: hidden;\r\n white-space: nowrap;\r\n }\r\n\r\n .select-value__display {\r\n display: block;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n /* Placeholder state - when no value is selected */\r\n .select-trigger:not([aria-label]) .select-value:empty {\r\n opacity: 0.6;\r\n }\r\n\r\n .select-icon {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n flex-shrink: 0;\r\n margin-left: var(--bp-spacing-xs);\r\n transition:\r\n transform var(--bp-transition-base),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n .select-dropdown {\r\n position: absolute;\r\n top: calc(100% + var(--bp-spacing-2xs));\r\n left: 0;\r\n right: 0;\r\n overflow-y: auto;\r\n background-color: var(--bp-color-background);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n box-shadow: var(--bp-shadow-lg);\r\n z-index: var(--bp-z-dropdown);\r\n animation: slideDown 150ms ease-out;\r\n transform-origin: top;\r\n contain: layout style paint;\r\n }\r\n\r\n @keyframes slideDown {\r\n from {\r\n opacity: 0;\r\n transform: translateY(calc(-1 * var(--bp-spacing-2)));\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n .select-option {\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n cursor: pointer;\r\n transition: background-color var(--bp-transition-fast);\r\n }\r\n\r\n .select-option:hover:not(.select-option--focused) {\r\n background-color: var(--bp-color-surface-elevated);\r\n }\r\n\r\n .select-option--focused {\r\n background-color: var(--bp-color-surface-subdued);\r\n outline: var(--bp-focus-width) solid var(--bp-color-primary);\r\n outline-offset: calc(-1 * var(--bp-focus-width));\r\n }\r\n\r\n .select-option--selected {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 8%,\r\n transparent\r\n );\r\n color: var(--bp-color-primary);\r\n font-weight: var(--bp-font-weight-semibold);\r\n position: relative;\r\n padding-right: var(--bp-spacing-2xl);\r\n }\r\n\r\n /* Checkmark for selected option */\r\n .select-option--selected::after {\r\n content: '✓';\r\n position: absolute;\r\n right: var(--bp-spacing-md);\r\n color: var(--bp-color-primary);\r\n font-weight: var(--bp-font-weight-bold);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n /* Sizes */\r\n .select--sm .select-trigger {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .select--sm .select-option {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .select--md .select-trigger {\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n font-size: var(--bp-font-size-base);\r\n }\r\n\r\n .select--md .select-option {\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n font-size: var(--bp-font-size-base);\r\n }\r\n\r\n .select--lg .select-trigger {\r\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .select--lg .select-option {\r\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n /* States */\r\n .select-trigger:hover:not(.select--disabled .select-trigger) {\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .select-trigger:focus {\r\n outline: none;\r\n }\r\n\r\n .select-trigger:focus-visible {\r\n outline: var(--bp-focus-width) solid var(--bp-color-primary);\r\n outline-offset: var(--bp-focus-offset);\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .select--open .select-trigger {\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .select--open .select-icon {\r\n transform: rotate(180deg);\r\n color: var(--bp-color-primary);\r\n }\r\n\r\n .select--disabled .select-trigger {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n background-color: var(--bp-color-surface-subdued);\r\n }\r\n\r\n /* iOS zoom prevention: ensure 16px minimum on touch devices */\r\n @media (max-width: 768px) {\r\n .select--sm .select-trigger {\r\n font-size: 16px;\r\n }\r\n\r\n .select--sm .select-option {\r\n font-size: 16px;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { selectStyles } from './select.style.js';\r\n\r\nexport type SelectSize = 'sm' | 'md' | 'lg';\r\n\r\n@customElement('bp-select')\r\nexport class BpSelect extends LitElement {\r\n /** The current value of the select */\r\n @property({ type: String, reflect: true }) declare value: string;\r\n\r\n /** Name attribute for form submission */\r\n @property({ type: String }) declare name: string;\r\n\r\n /** Visible label text displayed above the select */\r\n @property({ type: String, reflect: true }) declare label: string;\r\n\r\n /** Placeholder text when no value is selected */\r\n @property({ type: String }) declare placeholder: string;\r\n\r\n /** Whether the select is disabled */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /** Whether the select is required */\r\n @property({ type: Boolean, reflect: true }) declare required: boolean;\r\n\r\n /** Size variant of the select */\r\n @property({ type: String, reflect: true }) declare size: SelectSize;\r\n\r\n /** Whether the dropdown is currently open */\r\n @state() private isOpen = false;\r\n\r\n /** Label for the selected option */\r\n @state() private selectedLabel = '';\r\n\r\n /** Index of the focused option for keyboard navigation */\r\n @state() private focusedIndex = -1;\r\n\r\n static styles = [selectStyles];\r\n\r\n constructor() {\r\n super();\r\n this.value = '';\r\n this.name = '';\r\n this.label = '';\r\n this.placeholder = 'Select an option';\r\n this.disabled = false;\r\n this.required = false;\r\n this.size = 'md';\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n document.addEventListener('click', this.handleDocumentClick, {\r\n passive: true,\r\n });\r\n // Update selected label on initial load\r\n this.updateComplete.then(() => this.updateSelectedLabel());\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n document.removeEventListener('click', this.handleDocumentClick, {\r\n passive: true,\r\n } as EventListenerOptions);\r\n }\r\n\r\n private handleSlotChange = () => {\r\n this.updateSelectedLabel();\r\n };\r\n\r\n private updateSelectedLabel() {\r\n if (!this.value) return;\r\n\r\n const slot = this.shadowRoot?.querySelector('slot');\r\n const assignedElements = slot?.assignedElements() || [];\r\n const options = assignedElements.filter(\r\n (el): el is globalThis.HTMLOptionElement => el.tagName === 'OPTION'\r\n );\r\n\r\n options.forEach((option) => {\r\n if ((option.value || option.textContent) === this.value) {\r\n this.selectedLabel = option.textContent || '';\r\n }\r\n });\r\n }\r\n\r\n private handleDocumentClick = (event: MouseEvent) => {\r\n if (!this.contains(event.target as unknown as globalThis.Node)) {\r\n this.isOpen = false;\r\n }\r\n };\r\n\r\n private handleToggle = (event?: Event) => {\r\n event?.stopPropagation();\r\n if (this.disabled) return;\r\n this.isOpen = !this.isOpen;\r\n };\r\n\r\n private handleOptionClick = (event: Event) => {\r\n if (this.disabled) return;\r\n\r\n const target = event.currentTarget as HTMLElement;\r\n const optionValue = target.dataset.value || '';\r\n const optionLabel = target.dataset.label || '';\r\n\r\n const previousValue = this.value;\r\n this.value = optionValue;\r\n this.selectedLabel = optionLabel;\r\n this.isOpen = false;\r\n this.focusedIndex = -1;\r\n\r\n // Dispatch change event\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: {\r\n value: this.value,\r\n label: this.selectedLabel,\r\n previousValue,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n\r\n // Update the underlying hidden input for form integration\r\n const hiddenInput = this.shadowRoot?.querySelector('input[type=\"hidden\"]');\r\n if (hiddenInput) {\r\n (hiddenInput as HTMLInputElement).value = this.value;\r\n hiddenInput.dispatchEvent(new Event('change', { bubbles: true }));\r\n }\r\n };\r\n\r\n private handleKeyDown = (event: globalThis.KeyboardEvent) => {\r\n if (this.disabled) return;\r\n\r\n const options = this.getOptions();\r\n\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n if (this.isOpen && this.focusedIndex >= 0) {\r\n // Select the focused option\r\n const option = options[this.focusedIndex];\r\n if (option) {\r\n const optionValue = option.value || option.textContent || '';\r\n const optionLabel = option.textContent || '';\r\n const previousValue = this.value;\r\n this.value = optionValue;\r\n this.selectedLabel = optionLabel;\r\n this.isOpen = false;\r\n this.focusedIndex = -1;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: {\r\n value: this.value,\r\n label: this.selectedLabel,\r\n previousValue,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n\r\n const hiddenInput = this.shadowRoot?.querySelector(\r\n 'input[type=\"hidden\"]'\r\n );\r\n if (hiddenInput) {\r\n (hiddenInput as HTMLInputElement).value = this.value;\r\n hiddenInput.dispatchEvent(new Event('change', { bubbles: true }));\r\n }\r\n }\r\n } else {\r\n this.handleToggle();\r\n }\r\n break;\r\n case 'Escape':\r\n this.isOpen = false;\r\n this.focusedIndex = -1;\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n if (!this.isOpen) {\r\n this.isOpen = true;\r\n this.focusedIndex = 0;\r\n } else {\r\n this.focusedIndex = Math.min(\r\n this.focusedIndex + 1,\r\n options.length - 1\r\n );\r\n }\r\n this.scrollFocusedOptionIntoView();\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n if (!this.isOpen) {\r\n this.isOpen = true;\r\n this.focusedIndex = options.length - 1;\r\n } else {\r\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\r\n }\r\n this.scrollFocusedOptionIntoView();\r\n break;\r\n case 'Home':\r\n if (this.isOpen) {\r\n event.preventDefault();\r\n this.focusedIndex = 0;\r\n this.scrollFocusedOptionIntoView();\r\n }\r\n break;\r\n case 'End':\r\n if (this.isOpen) {\r\n event.preventDefault();\r\n this.focusedIndex = options.length - 1;\r\n this.scrollFocusedOptionIntoView();\r\n }\r\n break;\r\n }\r\n };\r\n\r\n private getOptions(): Array<{ value: string; textContent: string }> {\r\n const slot = this.shadowRoot?.querySelector('slot');\r\n const assignedElements = slot?.assignedElements() || [];\r\n const options = assignedElements.filter(\r\n (el): el is globalThis.HTMLOptionElement => el.tagName === 'OPTION'\r\n );\r\n return options.map((option) => ({\r\n value: option.value || option.textContent || '',\r\n textContent: option.textContent || '',\r\n }));\r\n }\r\n\r\n private scrollFocusedOptionIntoView() {\r\n this.updateComplete.then(() => {\r\n const focusedOption = this.shadowRoot?.querySelector(\r\n '.select-option--focused'\r\n ) as HTMLElement;\r\n if (focusedOption) {\r\n focusedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Returns the longest text among all options and the placeholder.\r\n * Used by a hidden sizer element to keep the trigger width stable.\r\n */\r\n private getSizerText(): string {\r\n const options = this.getOptions();\r\n let longestText = this.placeholder || '';\r\n\r\n for (const option of options) {\r\n const text = option.textContent || '';\r\n if (text.length > longestText.length) {\r\n longestText = text;\r\n }\r\n }\r\n\r\n return longestText;\r\n }\r\n\r\n private getOptionElements = () => {\r\n const slot = this.shadowRoot?.querySelector('slot');\r\n const assignedElements = slot?.assignedElements() || [];\r\n const options = assignedElements.filter(\r\n (el): el is globalThis.HTMLOptionElement => el.tagName === 'OPTION'\r\n );\r\n\r\n return repeat(\r\n options,\r\n (option) => option.value || option.textContent || '',\r\n (option, index) => {\r\n const optionValue = option.value || option.textContent || '';\r\n const optionLabel = option.textContent || '';\r\n const isSelected = this.value === optionValue;\r\n const isFocused = this.focusedIndex === index;\r\n\r\n if (isSelected && !this.selectedLabel) {\r\n this.selectedLabel = optionLabel;\r\n }\r\n\r\n return html`\r\n <div\r\n class=\"select-option ${isSelected\r\n ? 'select-option--selected'\r\n : ''} ${isFocused ? 'select-option--focused' : ''}\"\r\n part=\"option\"\r\n role=\"option\"\r\n aria-selected=\"${isSelected ? 'true' : 'false'}\"\r\n data-value=\"${optionValue}\"\r\n data-label=\"${optionLabel}\"\r\n tabindex=\"-1\"\r\n @click=${this.handleOptionClick}\r\n >\r\n ${optionLabel}\r\n </div>\r\n `;\r\n }\r\n );\r\n };\r\n\r\n render() {\r\n const selectClasses = {\r\n select: true,\r\n [`select--${this.size}`]: true,\r\n 'select--disabled': this.disabled,\r\n 'select--open': this.isOpen,\r\n };\r\n\r\n const displayLabel = this.selectedLabel || this.placeholder;\r\n\r\n const labelId = this.label ? 'select-label' : undefined;\r\n\r\n return html`\r\n <div class=${classMap(selectClasses)} part=\"container\">\r\n ${this.label\r\n ? html`\r\n <label class=\"select-label\" id=\"select-label\" part=\"label\">\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"select-required\">*</span>`\r\n : ''}\r\n </label>\r\n `\r\n : ''}\r\n <!-- Hidden input for form integration (using input instead of select to avoid Firefox conflict) -->\r\n <input\r\n type=\"hidden\"\r\n name=${ifDefined(this.name || undefined)}\r\n .value=${this.value}\r\n />\r\n\r\n <!-- Slot for option elements (not rendered, just for content projection) -->\r\n <slot\r\n @slotchange=${this.handleSlotChange}\r\n style=\"display: none;\"\r\n ></slot>\r\n\r\n <!-- Custom select trigger -->\r\n <div\r\n class=\"select-trigger\"\r\n part=\"trigger\"\r\n role=\"combobox\"\r\n aria-expanded=\"${this.isOpen ? 'true' : 'false'}\"\r\n aria-haspopup=\"listbox\"\r\n aria-labelledby=\"${ifDefined(labelId)}\"\r\n aria-disabled=\"${this.disabled ? 'true' : 'false'}\"\r\n aria-required=\"${this.required ? 'true' : 'false'}\"\r\n tabindex=\"${this.disabled ? '-1' : '0'}\"\r\n @click=${this.handleToggle}\r\n @keydown=${this.handleKeyDown}\r\n >\r\n <span class=\"select-value\" part=\"display\">\r\n <span class=\"select-value__sizer\" aria-hidden=\"true\"\r\n >${this.getSizerText()}</span\r\n >\r\n <span class=\"select-value__display\">${displayLabel}</span>\r\n </span>\r\n <svg\r\n class=\"select-icon\"\r\n part=\"icon\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M4 6L8 10L12 6\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n\r\n <!-- Dropdown menu -->\r\n ${this.isOpen\r\n ? html`\r\n <div class=\"select-dropdown\" part=\"dropdown\" role=\"listbox\">\r\n ${this.getOptionElements()}\r\n </div>\r\n `\r\n : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-select': BpSelect;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const textareaStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .textarea-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--bp-spacing-xs);\n }\n\n .textarea-label {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-sm);\n font-weight: var(--bp-font-weight-medium);\n color: var(--bp-color-text);\n line-height: var(--bp-line-height-normal);\n }\n\n .textarea-required {\n color: var(--bp-color-error);\n margin-left: var(--bp-spacing-xs);\n }\n\n .textarea {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text);\n background-color: var(--bp-color-background);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n box-shadow: inset 0 1px 2px oklch(0 0 0 / 0.05);\n transition:\n border-color var(--bp-transition-fast),\n box-shadow var(--bp-transition-fast);\n width: 100%;\n box-sizing: border-box;\n min-height: var(--bp-spacing-20);\n }\n\n .textarea::placeholder {\n color: var(--bp-color-text-muted);\n opacity: var(--bp-opacity-subtle);\n }\n\n /* Variants */\n .textarea--default {\n border-color: var(--bp-color-border);\n }\n\n .textarea--success {\n border-color: var(--bp-color-success);\n }\n\n .textarea--error {\n border-color: var(--bp-color-error);\n }\n\n .textarea--warning {\n border-color: var(--bp-color-warning);\n }\n\n .textarea--info {\n border-color: var(--bp-color-info);\n }\n\n /* Sizes */\n .textarea--sm {\n font-size: var(--bp-font-size-sm);\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n min-height: var(--bp-spacing-16);\n }\n\n .textarea--md {\n font-size: var(--bp-font-size-base);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n min-height: var(--bp-spacing-20);\n }\n\n .textarea--lg {\n font-size: var(--bp-font-size-lg);\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n min-height: var(--bp-spacing-24);\n }\n\n /* Resize variants */\n .textarea--resize-none {\n resize: none;\n }\n\n .textarea--resize-both {\n resize: both;\n }\n\n .textarea--resize-horizontal {\n resize: horizontal;\n }\n\n .textarea--resize-vertical {\n resize: vertical;\n }\n\n /* States */\n .textarea:hover:not(:disabled):not(:focus) {\n border-color: var(--bp-color-border-strong);\n }\n\n .textarea:focus {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-focus);\n }\n\n .textarea:focus-visible {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-focus);\n }\n\n .textarea:disabled {\n opacity: var(--bp-opacity-disabled);\n cursor: not-allowed;\n background-color: var(--bp-color-surface-subdued);\n }\n\n .textarea:read-only {\n background-color: var(--bp-color-surface);\n cursor: default;\n }\n\n /* Variant-specific focus states */\n .textarea--success:focus,\n .textarea--success:focus-visible {\n border-color: var(--bp-color-success);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-success);\n }\n\n .textarea--error:focus,\n .textarea--error:focus-visible {\n border-color: var(--bp-color-error);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-error);\n }\n\n .textarea--warning:focus,\n .textarea--warning:focus-visible {\n border-color: var(--bp-color-warning);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-warning);\n }\n\n .textarea--info:focus,\n .textarea--info:focus-visible {\n border-color: var(--bp-color-info);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-info);\n }\n\n /* Messages */\n .textarea-message {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-sm);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text-muted);\n }\n\n .textarea-message--error {\n color: var(--bp-color-error);\n }\n\n /* iOS zoom prevention: ensure 16px minimum on touch devices */\n @media (max-width: 768px) {\n .textarea--sm {\n font-size: 16px;\n }\n }\n`;\n","import type { ComplexAttributeConverter } from 'lit';\r\n\r\n/**\r\n * A custom Lit attribute converter for boolean properties that default to `true`.\r\n *\r\n * Lit's built-in `type: Boolean` follows native HTML boolean attribute semantics:\r\n * any attribute presence (even `=\"false\"`) is treated as `true`. This converter\r\n * instead parses the attribute value so `=\"false\"` correctly sets the property\r\n * to `false`.\r\n *\r\n * Behavior:\r\n * - Attribute absent → `null` (property uses its default)\r\n * - `attribute=\"\"` or `attribute` (no value) → `true`\r\n * - `attribute=\"false\"` → `false`\r\n * - `attribute=\"true\"` or any other value → `true`\r\n *\r\n * Usage:\r\n * ```ts\r\n * @property({ converter: booleanConverter, reflect: true })\r\n * declare showBackdrop: boolean;\r\n * ```\r\n */\r\nexport const booleanConverter: ComplexAttributeConverter<boolean> = {\r\n fromAttribute(value: string | null): boolean {\r\n if (value === null) {\r\n return true;\r\n }\r\n return value.toLowerCase() !== 'false';\r\n },\r\n toAttribute(value: boolean): string | null {\r\n return value ? '' : 'false';\r\n },\r\n};\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property, query } from 'lit/decorators.js';\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport { live } from 'lit/directives/live.js';\r\nimport { textareaStyles } from './textarea.style.js';\r\nimport { debounce } from '../../utilities/debounce.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\n\r\n/**\r\n * Visual variant that affects the textarea border color and validation state\r\n */\r\nexport type TextareaVariant =\r\n | 'default'\r\n | 'success'\r\n | 'error'\r\n | 'warning'\r\n | 'info';\r\n\r\n/**\r\n * Size of the textarea affecting padding, font size, and minimum height\r\n */\r\nexport type TextareaSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Resize mode determining how users can resize the textarea\r\n */\r\nexport type TextareaResize = 'none' | 'both' | 'horizontal' | 'vertical';\r\n\r\n/**\r\n * Valid autocomplete values for textarea elements\r\n */\r\nexport type TextareaAutocomplete =\r\n | 'off'\r\n | 'on'\r\n | 'name'\r\n | 'email'\r\n | 'username'\r\n | 'street-address'\r\n | 'address-line1'\r\n | 'address-line2'\r\n | 'address-line3'\r\n | 'address-level1'\r\n | 'address-level2'\r\n | 'address-level3'\r\n | 'address-level4'\r\n | 'country'\r\n | 'country-name'\r\n | 'postal-code'\r\n | 'organization'\r\n | 'organization-title';\r\n\r\n/**\r\n * A multi-line text input component with support for various states and configurations.\r\n *\r\n * @fires bp-input - Dispatched when the textarea value changes (on every keystroke)\r\n * @fires bp-change - Dispatched when the textarea loses focus after being changed\r\n * @fires bp-focus - Dispatched when the textarea receives focus\r\n * @fires bp-blur - Dispatched when the textarea loses focus\r\n */\r\n@customElement('bp-textarea')\r\nexport class BpTextarea extends LitElement {\r\n /** Visual variant of the textarea */\r\n @property({ type: String, reflect: true }) declare variant: TextareaVariant;\r\n\r\n /** Size of the textarea */\r\n @property({ type: String, reflect: true }) declare size: TextareaSize;\r\n\r\n /** Current value of the textarea */\r\n @property({ type: String, reflect: true }) declare value: string;\r\n\r\n /** Placeholder text shown when textarea is empty */\r\n @property({ type: String, reflect: true }) declare placeholder:\r\n | string\r\n | undefined;\r\n\r\n /** Label text displayed above the textarea */\r\n @property({ type: String, reflect: true }) declare label: string | undefined;\r\n\r\n /** Helper text displayed below the textarea */\r\n @property({ type: String, reflect: true }) declare helperText:\r\n | string\r\n | undefined;\r\n\r\n /** Error message displayed when variant is 'error' */\r\n @property({ type: String, reflect: true }) declare errorMessage:\r\n | string\r\n | undefined;\r\n\r\n /** Whether the textarea is disabled */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /** Whether the textarea is required */\r\n @property({ type: Boolean, reflect: true }) declare required: boolean;\r\n\r\n /** Whether the textarea is readonly */\r\n @property({ type: Boolean, reflect: true }) declare readonly: boolean;\r\n\r\n /** Name attribute for form submission */\r\n @property({ type: String, reflect: true }) declare name: string | undefined;\r\n\r\n /** Number of visible text rows */\r\n @property({ type: Number, reflect: true }) declare rows: number | undefined;\r\n\r\n /** Number of visible text columns */\r\n @property({ type: Number, reflect: true }) declare cols: number | undefined;\r\n\r\n /** Maximum number of characters allowed */\r\n @property({ type: Number, reflect: true }) declare maxlength:\r\n | number\r\n | undefined;\r\n\r\n /** Minimum number of characters required */\r\n @property({ type: Number, reflect: true }) declare minlength:\r\n | number\r\n | undefined;\r\n\r\n /** How the textarea can be resized by the user */\r\n @property({ type: String, reflect: true }) declare resize: TextareaResize;\r\n\r\n /** Autocomplete attribute for browser suggestions */\r\n @property({ type: String, reflect: true }) declare autocomplete:\r\n | TextareaAutocomplete\r\n | undefined;\r\n\r\n /** Whether to enable spellcheck */\r\n @property({ converter: booleanConverter, reflect: true })\r\n declare spellcheck: boolean;\r\n\r\n /** Wrap attribute for text wrapping behavior */\r\n @property({ type: String, reflect: true }) declare wrap:\r\n | 'soft'\r\n | 'hard'\r\n | undefined;\r\n\r\n @query('textarea') private textareaElement?: HTMLTextAreaElement;\r\n\r\n private debouncedDispatchInput = debounce(\r\n (value: string, originalEvent: InputEvent) => {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-input', {\r\n detail: { value, originalEvent },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n },\r\n 150\r\n );\r\n\r\n static styles = [textareaStyles];\r\n\r\n constructor() {\r\n super();\r\n this.variant = 'default';\r\n this.size = 'md';\r\n this.value = '';\r\n this.disabled = false;\r\n this.required = false;\r\n this.readonly = false;\r\n this.resize = 'vertical';\r\n this.spellcheck = true;\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.debouncedDispatchInput.cancel();\r\n }\r\n\r\n private handleInput(event: InputEvent): void {\r\n const target = event.target as HTMLTextAreaElement;\r\n this.value = target.value;\r\n this.debouncedDispatchInput(this.value, event);\r\n }\r\n\r\n private handleChange(event: Event): void {\r\n const target = event.target as HTMLTextAreaElement;\r\n this.value = target.value;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: { value: this.value, originalEvent: event },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleFocus(event: FocusEvent): void {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-focus', {\r\n detail: { originalEvent: event },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleBlur(event: FocusEvent): void {\r\n this.debouncedDispatchInput.flush();\r\n this.dispatchEvent(\r\n new CustomEvent('bp-blur', {\r\n detail: { originalEvent: event },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Focuses the textarea element\r\n */\r\n public focus(): void {\r\n this.textareaElement?.focus();\r\n }\r\n\r\n /**\r\n * Blurs the textarea element\r\n */\r\n public blur(): void {\r\n this.textareaElement?.blur();\r\n }\r\n\r\n /**\r\n * Selects the text in the textarea\r\n */\r\n public select(): void {\r\n this.textareaElement?.select();\r\n }\r\n\r\n private get messageId(): string {\r\n const showError = this.variant === 'error' && this.errorMessage;\r\n const showHelper = this.helperText && !showError;\r\n if (showError) return 'error-message';\r\n if (showHelper) return 'helper-text';\r\n return '';\r\n }\r\n\r\n render() {\r\n const showError = this.variant === 'error' && this.errorMessage;\r\n const showHelper = this.helperText && !showError;\r\n\r\n return html`\r\n <div class=\"textarea-wrapper\">\r\n ${this.label\r\n ? html`\r\n <label class=\"textarea-label\" for=\"textarea\">\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"textarea-required\">*</span>`\r\n : ''}\r\n </label>\r\n `\r\n : ''}\r\n\r\n <textarea\r\n part=\"textarea\"\r\n id=\"textarea\"\r\n class=\"textarea textarea--${this.variant} textarea--${this\r\n .size} textarea--resize-${this.resize}\"\r\n .value=${live(this.value)}\r\n placeholder=${ifDefined(this.placeholder)}\r\n ?disabled=${this.disabled}\r\n ?required=${this.required}\r\n ?readonly=${this.readonly}\r\n name=${ifDefined(this.name)}\r\n rows=${ifDefined(this.rows)}\r\n cols=${ifDefined(this.cols)}\r\n maxlength=${ifDefined(this.maxlength)}\r\n minlength=${ifDefined(this.minlength)}\r\n autocomplete=${ifDefined(this.autocomplete)}\r\n ?spellcheck=${this.spellcheck}\r\n wrap=${ifDefined(this.wrap)}\r\n aria-invalid=${this.variant === 'error' ? 'true' : 'false'}\r\n aria-describedby=${this.messageId || nothing}\r\n @input=${this.handleInput}\r\n @change=${this.handleChange}\r\n @focus=${this.handleFocus}\r\n @blur=${this.handleBlur}\r\n ></textarea>\r\n\r\n ${showError\r\n ? html`\r\n <div\r\n id=\"error-message\"\r\n class=\"textarea-message textarea-message--error\"\r\n role=\"alert\"\r\n >\r\n ${this.errorMessage}\r\n </div>\r\n `\r\n : ''}\r\n ${showHelper\r\n ? html`<div id=\"helper-text\" class=\"textarea-message\">\r\n ${this.helperText}\r\n </div>`\r\n : ''}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-textarea': BpTextarea;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const tagStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .tag {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-xs);\r\n font-family: var(--bp-font-family);\r\n font-weight: var(--bp-font-weight-medium);\r\n line-height: 1.5;\r\n border-radius: var(--bp-border-radius-md);\r\n border: var(--bp-border-width) solid transparent;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n border-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast),\r\n box-shadow var(--bp-transition-fast);\r\n cursor: default;\r\n }\r\n\r\n .tag:focus-visible {\r\n outline: var(--bp-border-width) solid var(--bp-color-focus);\r\n outline-offset: var(--bp-border-width);\r\n }\r\n\r\n .tag__content {\r\n flex: 1;\r\n }\r\n\r\n .tag__close {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 0;\r\n margin: 0;\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n color: inherit;\r\n opacity: 0.7;\r\n transition: opacity var(--bp-transition-fast);\r\n flex-shrink: 0;\r\n }\r\n\r\n .tag__close:hover {\r\n opacity: 1;\r\n }\r\n\r\n .tag__close:focus-visible {\r\n outline: var(--bp-border-width) solid currentColor;\r\n outline-offset: var(--bp-border-width);\r\n border-radius: var(--bp-border-radius-sm);\r\n opacity: 1;\r\n }\r\n\r\n /* Variants - Solid */\r\n .tag--solid.tag--primary {\r\n background-color: var(--bp-color-primary);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .tag--solid.tag--success {\r\n background-color: var(--bp-color-success);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .tag--solid.tag--error {\r\n background-color: var(--bp-color-error);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .tag--solid.tag--warning {\r\n background-color: var(--bp-color-warning);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .tag--solid.tag--info {\r\n background-color: var(--bp-color-info);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .tag--solid.tag--neutral {\r\n background-color: var(--bp-color-border-strong);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n /* Variants - Outlined */\r\n .tag--outlined {\r\n background-color: transparent;\r\n }\r\n\r\n .tag--outlined.tag--primary {\r\n border-color: var(--bp-color-primary);\r\n color: var(--bp-color-primary);\r\n }\r\n\r\n .tag--outlined.tag--success {\r\n border-color: var(--bp-color-success);\r\n color: var(--bp-color-success);\r\n }\r\n\r\n .tag--outlined.tag--error {\r\n border-color: var(--bp-color-error);\r\n color: var(--bp-color-error);\r\n }\r\n\r\n .tag--outlined.tag--warning {\r\n border-color: var(--bp-color-warning);\r\n color: var(--bp-color-warning);\r\n }\r\n\r\n .tag--outlined.tag--info {\r\n border-color: var(--bp-color-info);\r\n color: var(--bp-color-info);\r\n }\r\n\r\n .tag--outlined.tag--neutral {\r\n border-color: var(--bp-color-border);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n /* Sizes */\r\n .tag--sm {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n font-size: var(--bp-font-size-xs);\r\n height: var(--bp-spacing-6);\r\n }\r\n\r\n .tag--sm .tag__close {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n }\r\n\r\n .tag--md {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-md);\r\n font-size: var(--bp-font-size-sm);\r\n height: var(--bp-spacing-8);\r\n }\r\n\r\n .tag--md .tag__close {\r\n width: var(--bp-spacing-5);\r\n height: var(--bp-spacing-5);\r\n }\r\n\r\n .tag--lg {\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-lg);\r\n font-size: var(--bp-font-size-base);\r\n height: var(--bp-spacing-10);\r\n }\r\n\r\n .tag--lg .tag__close {\r\n width: var(--bp-spacing-6);\r\n height: var(--bp-spacing-6);\r\n }\r\n\r\n /* States */\r\n .tag--removable {\r\n cursor: pointer;\r\n }\r\n\r\n .tag--removable:hover {\r\n filter: brightness(0.95);\r\n }\r\n\r\n .tag--disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n }\r\n\r\n .tag--disabled .tag__close {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n }\r\n\r\n /* Touch target size: ensure 44x44px minimum on touch devices */\r\n @media (pointer: coarse) {\r\n .tag__close {\r\n position: relative;\r\n min-width: 24px;\r\n min-height: 24px;\r\n }\r\n\r\n /* Expand touch target with pseudo-element */\r\n .tag__close::before {\r\n content: '';\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n width: 44px;\r\n height: 44px;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { tagStyles } from './tag.style.js';\r\nimport '../icon/icon.js';\r\n\r\n/**\r\n * Tag component for displaying removable labels, chips, or category markers.\r\n *\r\n * @element bp-tag\r\n *\r\n * @slot - Default slot for tag content (text)\r\n *\r\n * @csspart tag - The tag container element\r\n * @csspart close-button - The close/remove button element\r\n *\r\n * @fires bp-remove - Fired when the tag is removed (cancelable)\r\n *\r\n * @example\r\n * ```html\r\n * <bp-tag>Design</bp-tag>\r\n * <bp-tag variant=\"outlined\" removable>TypeScript</bp-tag>\r\n * <bp-tag variant=\"success\" size=\"sm\">Active</bp-tag>\r\n * ```\r\n */\r\n@customElement('bp-tag')\r\nexport class BpTag extends LitElement {\r\n /**\r\n * Visual variant of the tag\r\n * @type {'solid' | 'outlined'}\r\n * @default 'solid'\r\n */\r\n @property({ type: String, reflect: true }) declare variant:\r\n | 'solid'\r\n | 'outlined';\r\n\r\n /**\r\n * Size of the tag\r\n * @type {'sm' | 'md' | 'lg'}\r\n * @default 'md'\r\n */\r\n @property({ type: String, reflect: true }) declare size:\r\n | 'sm'\r\n | 'md'\r\n | 'lg';\r\n\r\n /**\r\n * Color scheme of the tag\r\n * @type {'primary' | 'success' | 'error' | 'warning' | 'info' | 'neutral'}\r\n * @default 'neutral'\r\n */\r\n @property({ type: String, reflect: true }) declare color:\r\n | 'primary'\r\n | 'success'\r\n | 'error'\r\n | 'warning'\r\n | 'info'\r\n | 'neutral';\r\n\r\n /**\r\n * Whether the tag can be removed\r\n * @type {boolean}\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) declare removable: boolean;\r\n\r\n /**\r\n * Whether the tag is disabled\r\n * @type {boolean}\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n static styles = [tagStyles];\r\n\r\n constructor() {\r\n super();\r\n this.variant = 'solid';\r\n this.size = 'md';\r\n this.color = 'neutral';\r\n this.removable = false;\r\n this.disabled = false;\r\n }\r\n\r\n private handleRemove(event: Event) {\r\n event.stopPropagation();\r\n\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const removeEvent = new CustomEvent('bp-remove', {\r\n detail: {\r\n color: this.color,\r\n timestamp: Date.now(),\r\n },\r\n bubbles: true,\r\n composed: true,\r\n cancelable: true,\r\n });\r\n\r\n this.dispatchEvent(removeEvent);\r\n\r\n // Only remove if event wasn't prevented\r\n if (!removeEvent.defaultPrevented) {\r\n this.remove();\r\n }\r\n }\r\n\r\n private handleKeyDown(event: Event) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const keyboardEvent = event as unknown as {\r\n key: string;\r\n preventDefault: () => void;\r\n };\r\n\r\n // Allow removing with Delete or Backspace when focused\r\n if (\r\n this.removable &&\r\n (keyboardEvent.key === 'Delete' || keyboardEvent.key === 'Backspace')\r\n ) {\r\n keyboardEvent.preventDefault();\r\n this.handleRemove(event);\r\n }\r\n }\r\n\r\n render() {\r\n const classes = {\r\n tag: true,\r\n [`tag--${this.variant}`]: true,\r\n [`tag--${this.size}`]: true,\r\n [`tag--${this.color}`]: true,\r\n 'tag--disabled': this.disabled,\r\n 'tag--removable': this.removable,\r\n };\r\n\r\n // Map tag size to icon size (icons should be smaller)\r\n const iconSize =\r\n this.size === 'sm' ? 'xs' : this.size === 'lg' ? 'sm' : 'xs';\r\n\r\n return html`\r\n <div\r\n class=${classMap(classes)}\r\n part=\"tag\"\r\n role=\"status\"\r\n aria-disabled=${this.disabled}\r\n @keydown=${this.handleKeyDown}\r\n tabindex=${this.removable && !this.disabled ? '0' : '-1'}\r\n >\r\n <span class=\"tag__content\">\r\n <slot></slot>\r\n </span>\r\n ${this.removable\r\n ? html`\r\n <button\r\n type=\"button\"\r\n class=\"tag__close\"\r\n part=\"close-button\"\r\n aria-label=\"Remove\"\r\n ?disabled=${this.disabled}\r\n @click=${this.handleRemove}\r\n tabindex=\"-1\"\r\n >\r\n <bp-icon name=\"cross\" size=${iconSize}></bp-icon>\r\n </button>\r\n `\r\n : ''}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-tag': BpTag;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const modalStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n :host([open]) {\n display: block;\n }\n\n :host(:not([open])) {\n display: none;\n }\n\n /* Backdrop */\n .modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--bp-z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--bp-color-backdrop);\n animation: fadeIn var(--bp-duration-fast) var(--bp-ease-out);\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes slideUp {\n from {\n transform: translateY(var(--bp-spacing-8));\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n /* Dialog */\n .modal-dialog {\n position: relative;\n background-color: var(--bp-color-surface-elevated);\n border-radius: var(--bp-border-radius-lg);\n box-shadow: var(--bp-shadow-xl);\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: slideUp var(--bp-duration-normal) var(--bp-ease-out);\n outline: none;\n }\n\n /* Header */\n .modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--bp-spacing-md);\n padding: var(--bp-spacing-6);\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\n font-family: var(--bp-font-family);\n }\n\n ::slotted([slot='header']) {\n flex: 1;\n font-size: var(--bp-font-size-xl);\n font-weight: var(--bp-font-weight-semibold);\n color: var(--bp-color-text-strong);\n line-height: var(--bp-line-height-tight);\n margin: 0;\n }\n\n /* Close button */\n .modal-close {\n appearance: none;\n background: transparent;\n border: none;\n padding: var(--bp-spacing-2);\n cursor: pointer;\n color: var(--bp-color-text-muted);\n border-radius: var(--bp-border-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--bp-transition-fast);\n flex-shrink: 0;\n }\n\n .modal-close:hover {\n background-color: var(--bp-color-surface);\n color: var(--bp-color-text);\n }\n\n .modal-close:focus-visible {\n outline: var(--bp-focus-ring);\n outline-offset: var(--bp-focus-offset);\n }\n\n .modal-close svg {\n display: block;\n }\n\n /* Body */\n .modal-body {\n flex: 1;\n padding: var(--bp-spacing-6);\n overflow-y: auto;\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-relaxed);\n color: var(--bp-color-text);\n }\n\n /* Footer */\n .modal-footer {\n padding: var(--bp-spacing-6);\n border-top: var(--bp-border-width) solid var(--bp-color-border);\n display: flex;\n gap: var(--bp-spacing-3);\n justify-content: flex-end;\n align-items: center;\n }\n\n .modal-footer:empty {\n display: none;\n }\n\n /* Sizes */\n .modal-dialog--sm {\n width: 90%;\n max-width: calc(var(--bp-spacing-24) * 4 + var(--bp-spacing-16));\n }\n\n .modal-dialog--md {\n width: 90%;\n max-width: var(--bp-breakpoint-sm);\n }\n\n .modal-dialog--lg {\n width: 90%;\n max-width: var(--bp-breakpoint-md);\n }\n\n /* States */\n .modal-dialog:focus {\n outline: none;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { modalStyles } from './modal.style.js';\n\nexport type ModalSize = 'sm' | 'md' | 'lg';\n\n@customElement('bp-modal')\nexport class BpModal extends LitElement {\n /** Whether the modal is currently open */\n @property({ type: Boolean, reflect: true }) declare open: boolean;\n\n /** Size variant of the modal */\n @property({ type: String, reflect: true }) declare size: ModalSize;\n\n /** ID for aria-labelledby attribute - should match header content */\n @property({ type: String, attribute: 'aria-labelledby' })\n declare ariaLabelledby: string;\n\n /** Dialog element reference for focus management */\n @query('.modal-dialog') private dialogElement!: HTMLElement;\n\n /** Store the element that had focus before modal opened */\n @state() private previouslyFocusedElement: HTMLElement | null = null;\n\n /** Track if body scroll is prevented */\n @state() private bodyScrollPrevented = false;\n\n static styles = [modalStyles];\n\n constructor() {\n super();\n this.open = false;\n this.size = 'md';\n this.ariaLabelledby = '';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('keydown', this.handleKeyDown);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this.handleKeyDown);\n this.restoreFocus();\n this.restoreBodyScroll();\n }\n\n updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n }\n }\n\n private handleOpen() {\n // Store previously focused element\n this.previouslyFocusedElement = document.activeElement as HTMLElement;\n\n // Prevent body scroll\n this.preventBodyScroll();\n\n // Set focus to dialog after it's rendered\n this.updateComplete.then(() => {\n this.setFocusToDialog();\n });\n }\n\n private handleClose() {\n this.restoreFocus();\n this.restoreBodyScroll();\n }\n\n private preventBodyScroll() {\n if (!this.bodyScrollPrevented) {\n document.body.style.overflow = 'hidden';\n this.bodyScrollPrevented = true;\n }\n }\n\n private restoreBodyScroll() {\n if (this.bodyScrollPrevented) {\n document.body.style.overflow = '';\n this.bodyScrollPrevented = false;\n }\n }\n\n private setFocusToDialog() {\n if (this.dialogElement) {\n this.dialogElement.focus();\n }\n }\n\n private restoreFocus() {\n if (this.previouslyFocusedElement) {\n this.previouslyFocusedElement.focus();\n this.previouslyFocusedElement = null;\n }\n }\n\n private handleKeyDown = (event: globalThis.KeyboardEvent) => {\n if (event.key === 'Escape' && this.open) {\n event.preventDefault();\n this.close();\n }\n\n // Trap focus within modal\n if (event.key === 'Tab' && this.open) {\n this.trapFocus(event);\n }\n };\n\n private trapFocus(event: globalThis.KeyboardEvent) {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n // Tab\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n\n private getFocusableElements(): HTMLElement[] {\n if (!this.shadowRoot) return [];\n\n const focusableSelectors = [\n 'button:not([disabled])',\n 'a[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ];\n\n const elements = this.shadowRoot.querySelectorAll(\n focusableSelectors.join(',')\n );\n return Array.from(elements) as HTMLElement[];\n }\n\n private handleBackdropClick = (event: MouseEvent) => {\n // Only close if clicking directly on backdrop (not bubbled from dialog)\n if (event.target === event.currentTarget) {\n this.close();\n }\n };\n\n private handleCloseButtonClick = () => {\n this.close();\n };\n\n private close() {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent('bp-close', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n render() {\n if (!this.open) {\n return html``;\n }\n\n const dialogClasses = {\n 'modal-dialog': true,\n [`modal-dialog--${this.size}`]: true,\n };\n\n return html`\n <div\n class=\"modal-backdrop\"\n part=\"backdrop\"\n @click=${this.handleBackdropClick}\n >\n <div\n class=${classMap(dialogClasses)}\n part=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=${this.ariaLabelledby || 'modal-header'}\n tabindex=\"-1\"\n >\n <div class=\"modal-header\" part=\"header\">\n <slot name=\"header\"></slot>\n <button\n class=\"modal-close\"\n part=\"close-button\"\n type=\"button\"\n aria-label=\"Close\"\n @click=${this.handleCloseButtonClick}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n <div class=\"modal-body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"modal-footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-modal': BpModal;\n }\n}\n","import { css } from 'lit';\n\nexport const multiSelectStyles = css`\n /* Base styles */\n :host {\n display: block;\n font-family: var(--bp-font-family);\n }\n\n .multi-select {\n position: relative;\n width: 100%;\n }\n\n .multi-select__control {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--bp-spacing-sm);\n min-height: var(--bp-spacing-10);\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n cursor: pointer;\n transition: border-color var(--bp-transition-fast);\n }\n\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-primary);\n }\n\n .multi-select__control:focus-visible {\n outline: var(--bp-focus-width) solid var(--bp-color-focus);\n outline-offset: var(--bp-focus-width);\n }\n\n .multi-select__value-container {\n display: flex;\n flex-wrap: wrap;\n gap: var(--bp-spacing-xs);\n flex: 1;\n min-width: 0;\n }\n\n .multi-select__placeholder {\n color: var(--bp-color-text-muted);\n user-select: none;\n }\n\n .multi-select__tag {\n display: inline-flex;\n align-items: center;\n gap: var(--bp-spacing-xs);\n padding: var(--bp-spacing-2xs) var(--bp-spacing-xs);\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n color: var(--bp-color-primary);\n border: none;\n border-radius: var(--bp-border-radius-md);\n font-size: var(--bp-font-size-sm);\n max-width: 100%;\n }\n\n .multi-select__tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .multi-select__tag-remove {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-4);\n height: var(--bp-spacing-4);\n padding: 0;\n background: transparent;\n border: none;\n border-radius: var(--bp-border-radius-sm);\n color: var(--bp-color-primary);\n cursor: pointer;\n font-size: var(--bp-font-size-lg);\n line-height: 1;\n transition: all var(--bp-transition-fast);\n }\n\n .multi-select__tag-remove:hover {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 15%,\n transparent\n );\n color: var(--bp-color-primary);\n }\n\n .multi-select__tag-remove:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .multi-select__indicators {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-xs);\n flex-shrink: 0;\n }\n\n .multi-select__clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n padding: 0;\n background: transparent;\n border: none;\n border-radius: var(--bp-border-radius-sm);\n color: var(--bp-color-text-muted);\n cursor: pointer;\n font-size: var(--bp-font-size-xl);\n line-height: 1;\n transition: all var(--bp-transition-fast);\n }\n\n .multi-select__clear:hover {\n background-color: var(--bp-color-surface-subdued);\n color: var(--bp-color-text);\n }\n\n .multi-select__clear:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .multi-select__dropdown-indicator {\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-xs);\n transition: transform var(--bp-transition-fast);\n user-select: none;\n }\n\n .multi-select--open .multi-select__dropdown-indicator {\n transform: rotate(180deg);\n }\n\n .multi-select__dropdown {\n position: absolute;\n top: calc(100% + var(--bp-spacing-xs));\n left: 0;\n right: 0;\n z-index: var(--bp-z-dropdown);\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n box-shadow: var(--bp-shadow-md);\n max-height: calc(var(--bp-spacing-10) * 6);\n overflow-y: auto;\n opacity: 0;\n visibility: hidden;\n transform: translateY(calc(-1 * var(--bp-spacing-md)));\n transition:\n opacity var(--bp-transition-fast),\n transform var(--bp-transition-fast),\n visibility var(--bp-transition-fast);\n contain: layout style paint;\n }\n\n .multi-select--open .multi-select__dropdown {\n opacity: 1;\n visibility: visible;\n transform: translateY(0);\n }\n\n .multi-select__options {\n list-style: none;\n margin: 0;\n padding: var(--bp-spacing-2xs);\n }\n\n .multi-select__option {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-sm);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n cursor: pointer;\n border-radius: var(--bp-border-radius-md);\n transition:\n background-color var(--bp-transition-fast),\n color var(--bp-transition-fast);\n }\n\n .multi-select__option:hover {\n background-color: var(--bp-color-surface-elevated);\n }\n\n .multi-select__option--focused {\n background-color: var(--bp-color-surface-subdued);\n outline: var(--bp-focus-width) solid var(--bp-color-primary);\n outline-offset: calc(-1 * var(--bp-focus-width));\n }\n\n .multi-select__option--selected {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n color: var(--bp-color-primary);\n }\n\n .multi-select__option--selected:hover {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 12%,\n transparent\n );\n }\n\n .multi-select__option--empty {\n color: var(--bp-color-text-muted);\n cursor: default;\n text-align: center;\n padding: var(--bp-spacing-xl) var(--bp-spacing-lg);\n font-style: italic;\n }\n\n .multi-select__checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-4);\n height: var(--bp-spacing-4);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-sm);\n font-size: var(--bp-font-size-xs);\n flex-shrink: 0;\n transition: all var(--bp-transition-fast);\n }\n\n .multi-select__option--selected .multi-select__checkbox {\n border-color: var(--bp-color-primary);\n background-color: var(--bp-color-primary);\n color: var(--bp-color-text-inverse);\n }\n\n .multi-select__option-label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* Sizes */\n .multi-select--sm .multi-select__control {\n min-height: var(--bp-spacing-8);\n padding: var(--bp-spacing-2xs) var(--bp-spacing-xs);\n font-size: var(--bp-font-size-sm);\n }\n\n .multi-select--sm .multi-select__tag {\n padding: var(--bp-spacing-0-5) var(--bp-spacing-2xs);\n font-size: var(--bp-font-size-xs);\n }\n\n .multi-select--lg .multi-select__control {\n min-height: var(--bp-spacing-12);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n font-size: var(--bp-font-size-lg);\n }\n\n .multi-select--lg .multi-select__tag {\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n font-size: var(--bp-font-size-base);\n }\n\n /* Variants */\n .multi-select--default .multi-select__control {\n border-color: var(--bp-color-border);\n }\n\n .multi-select--success .multi-select__control {\n border-color: var(--bp-color-success);\n }\n\n .multi-select--error .multi-select__control {\n border-color: var(--bp-color-error);\n }\n\n .multi-select--warning .multi-select__control {\n border-color: var(--bp-color-warning);\n }\n\n .multi-select--info .multi-select__control {\n border-color: var(--bp-color-info);\n }\n\n .multi-select--success\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-success);\n }\n\n .multi-select--error\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-error);\n }\n\n .multi-select--warning\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-warning);\n }\n\n .multi-select--info\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-info);\n }\n\n /* States */\n .multi-select--disabled .multi-select__control {\n background-color: var(--bp-color-surface-subdued);\n cursor: not-allowed;\n opacity: 0.6;\n }\n\n .multi-select--disabled .multi-select__placeholder {\n color: var(--bp-color-text-muted);\n }\n\n /* Hide slot */\n slot {\n display: none;\n }\n\n /* Hide hidden inputs */\n input[type='hidden'] {\n display: none;\n }\n`;\n","/**\r\n * Single-result memoization utility.\r\n * Caches the last call's arguments and result using shallow equality comparison.\r\n * Ideal for willUpdate() patterns where you memoize based on reactive properties.\r\n */\r\n\r\nexport function memoizeOne<T extends (...args: never[]) => unknown>(\r\n fn: T\r\n): T {\r\n let lastArgs: Parameters<T> | undefined;\r\n let lastResult: ReturnType<T>;\r\n let hasBeenCalled = false;\r\n\r\n const memoized = (...args: Parameters<T>): ReturnType<T> => {\r\n if (hasBeenCalled && argsMatch(lastArgs!, args)) {\r\n return lastResult;\r\n }\r\n\r\n lastArgs = args;\r\n lastResult = fn(...args) as ReturnType<T>;\r\n hasBeenCalled = true;\r\n return lastResult;\r\n };\r\n\r\n return memoized as T;\r\n}\r\n\r\nfunction argsMatch(prev: unknown[], next: unknown[]): boolean {\r\n if (prev.length !== next.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < prev.length; i++) {\r\n if (prev[i] !== next[i]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { multiSelectStyles } from './multi-select.style.js';\r\nimport { memoizeOne } from '../../utilities/memoize.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\n\r\nexport type MultiSelectSize = 'sm' | 'md' | 'lg';\r\nexport type MultiSelectVariant =\r\n | 'default'\r\n | 'success'\r\n | 'error'\r\n | 'warning'\r\n | 'info';\r\n\r\nexport interface MultiSelectOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\n@customElement('bp-multi-select')\r\nexport class BpMultiSelect extends LitElement {\r\n /** The current selected values as an array */\r\n @property({ type: Array }) declare value: string[];\r\n\r\n /** Name attribute for form submission */\r\n @property({ type: String }) declare name: string;\r\n\r\n /** Placeholder text when no values are selected */\r\n @property({ type: String }) declare placeholder: string;\r\n\r\n /** Whether the multi-select is disabled */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /** Whether the multi-select is required */\r\n @property({ type: Boolean, reflect: true }) declare required: boolean;\r\n\r\n /** Size variant of the multi-select */\r\n @property({ type: String, reflect: true }) declare size: MultiSelectSize;\r\n\r\n /** Visual variant for validation states */\r\n @property({ type: String, reflect: true })\r\n declare variant: MultiSelectVariant;\r\n\r\n /** Maximum number of selections allowed (0 = unlimited) */\r\n @property({ type: Number, attribute: 'max-selections' })\r\n declare maxSelections: number;\r\n\r\n /** Whether to show a clear all button */\r\n @property({ converter: booleanConverter }) declare clearable: boolean;\r\n\r\n /** Whether the dropdown is currently open */\r\n @state() private isOpen = false;\r\n\r\n /** Index of the focused option for keyboard navigation */\r\n @state() private focusedIndex = -1;\r\n\r\n /** Cached options from slotted elements */\r\n @state() private cachedOptions: MultiSelectOption[] = [];\r\n\r\n /**\r\n * Memoized label lookup map for efficient tag rendering.\r\n * Only recomputes when cachedOptions reference changes.\r\n */\r\n private computeLabelMap = memoizeOne(\r\n (options: MultiSelectOption[]): Map<string, string> => {\r\n const map = new Map<string, string>();\r\n for (const opt of options) {\r\n map.set(opt.value, opt.label);\r\n }\r\n return map;\r\n }\r\n );\r\n\r\n static styles = [multiSelectStyles];\r\n\r\n constructor() {\r\n super();\r\n this.value = [];\r\n this.name = '';\r\n this.placeholder = 'Select options';\r\n this.disabled = false;\r\n this.required = false;\r\n this.size = 'md';\r\n this.variant = 'default';\r\n this.maxSelections = 0;\r\n this.clearable = true;\r\n }\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n document.addEventListener('click', this.handleDocumentClick, {\r\n passive: true,\r\n });\r\n // Initialize cached options and pre-selected values after first render\r\n this.updateComplete.then(() => {\r\n this.cachedOptions = this.getOptions();\r\n this.initializeSelectedValues();\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n document.removeEventListener('click', this.handleDocumentClick, {\r\n passive: true,\r\n } as EventListenerOptions);\r\n }\r\n\r\n private handleDocumentClick = (event: MouseEvent) => {\r\n if (!this.contains(event.target as globalThis.Node)) {\r\n this.isOpen = false;\r\n this.focusedIndex = -1;\r\n }\r\n };\r\n\r\n private handleToggle = (event?: Event) => {\r\n event?.stopPropagation();\r\n if (this.disabled) return;\r\n this.isOpen = !this.isOpen;\r\n if (this.isOpen) {\r\n this.focusedIndex = 0;\r\n }\r\n };\r\n\r\n private getOptions(): MultiSelectOption[] {\r\n const slot = this.shadowRoot?.querySelector('slot');\r\n const assignedElements = slot?.assignedElements() || [];\r\n const options = assignedElements.filter(\r\n (el): el is globalThis.HTMLOptionElement => el.tagName === 'OPTION'\r\n );\r\n\r\n return options.map((option) => ({\r\n value: option.value || option.textContent || '',\r\n label: option.textContent || '',\r\n }));\r\n }\r\n\r\n /**\r\n * Handle slot changes by refreshing the cached options.\r\n */\r\n private handleSlotChange = () => {\r\n this.cachedOptions = this.getOptions();\r\n this.initializeSelectedValues();\r\n };\r\n\r\n /**\r\n * Read the `selected` attribute from slotted <option> elements\r\n * and set the initial value array if no values are already set.\r\n */\r\n private initializeSelectedValues() {\r\n if (this.value.length > 0) return;\r\n\r\n const slot = this.shadowRoot?.querySelector('slot');\r\n const assignedElements = slot?.assignedElements() || [];\r\n const selectedValues = assignedElements\r\n .filter(\r\n (el): el is globalThis.HTMLOptionElement =>\r\n el.tagName === 'OPTION' && el.hasAttribute('selected')\r\n )\r\n .map((el) => el.value || el.textContent || '');\r\n\r\n if (selectedValues.length > 0) {\r\n this.value = selectedValues;\r\n }\r\n }\r\n\r\n private isSelected(value: string): boolean {\r\n return this.value.includes(value);\r\n }\r\n\r\n private dispatchChangeEvent(newValue: string[], previousValue: string[]) {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: {\r\n value: newValue,\r\n previousValue,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleOptionClick = (option: MultiSelectOption) => {\r\n if (this.disabled) return;\r\n\r\n const previousValue = [...this.value];\r\n let newValue: string[];\r\n\r\n if (this.isSelected(option.value)) {\r\n // Deselect — but prevent removing the last item when not clearable\r\n newValue = this.value.filter((v) => v !== option.value);\r\n if (!this.clearable && newValue.length === 0) {\r\n return;\r\n }\r\n } else {\r\n // Select (check max selections)\r\n if (this.maxSelections > 0 && this.value.length >= this.maxSelections) {\r\n return;\r\n }\r\n newValue = [...this.value, option.value];\r\n }\r\n\r\n this.value = newValue;\r\n this.dispatchChangeEvent(newValue, previousValue);\r\n };\r\n\r\n private handleRemoveTag = (value: string, event: Event) => {\r\n event.stopPropagation();\r\n if (this.disabled) return;\r\n\r\n const previousValue = [...this.value];\r\n const newValue = this.value.filter((v) => v !== value);\r\n this.value = newValue;\r\n this.dispatchChangeEvent(newValue, previousValue);\r\n };\r\n\r\n private handleClearAll = (event: Event) => {\r\n event.stopPropagation();\r\n if (this.disabled) return;\r\n\r\n const previousValue = [...this.value];\r\n const newValue: string[] = [];\r\n this.value = newValue;\r\n this.dispatchChangeEvent(newValue, previousValue);\r\n };\r\n\r\n private handleKeyDown = (event: globalThis.KeyboardEvent) => {\r\n if (this.disabled) return;\r\n\r\n const options = this.cachedOptions;\r\n\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n if (this.isOpen && this.focusedIndex >= 0) {\r\n const option = options[this.focusedIndex];\r\n if (option) {\r\n this.handleOptionClick(option);\r\n }\r\n } else {\r\n this.handleToggle();\r\n }\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n this.isOpen = false;\r\n this.focusedIndex = -1;\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n if (!this.isOpen) {\r\n this.isOpen = true;\r\n this.focusedIndex = 0;\r\n } else {\r\n this.focusedIndex = Math.min(\r\n this.focusedIndex + 1,\r\n options.length - 1\r\n );\r\n }\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n if (!this.isOpen) {\r\n this.isOpen = true;\r\n this.focusedIndex = options.length - 1;\r\n } else {\r\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\r\n }\r\n break;\r\n }\r\n };\r\n\r\n private getLabelForValue(value: string): string {\r\n const labelMap = this.computeLabelMap(this.cachedOptions);\r\n return labelMap.get(value) || value;\r\n }\r\n\r\n private renderDropdown() {\r\n const options = this.cachedOptions;\r\n\r\n return html`\r\n <div class=\"multi-select__dropdown\" part=\"dropdown\">\r\n <ul\r\n class=\"multi-select__options\"\r\n role=\"listbox\"\r\n aria-multiselectable=\"true\"\r\n >\r\n ${options.length === 0\r\n ? html`<li class=\"multi-select__option multi-select__option--empty\">\r\n No options available\r\n </li>`\r\n : repeat(\r\n options,\r\n (opt) => opt.value,\r\n (opt, index) => {\r\n const selected = this.isSelected(opt.value);\r\n const focused = index === this.focusedIndex;\r\n return html`\r\n <li\r\n class=${classMap({\r\n 'multi-select__option': true,\r\n 'multi-select__option--selected': selected,\r\n 'multi-select__option--focused': focused,\r\n })}\r\n role=\"option\"\r\n aria-selected=${selected}\r\n @click=${() => this.handleOptionClick(opt)}\r\n part=\"option ${selected ? 'option-selected' : ''}\"\r\n >\r\n <span class=\"multi-select__checkbox\">\r\n ${selected ? '\\u2713' : ''}\r\n </span>\r\n <span class=\"multi-select__option-label\"\r\n >${opt.label}</span\r\n >\r\n </li>\r\n `;\r\n }\r\n )}\r\n </ul>\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n const hasSelection = this.value.length > 0;\r\n\r\n return html`\r\n <div\r\n class=${classMap({\r\n 'multi-select': true,\r\n 'multi-select--open': this.isOpen,\r\n 'multi-select--disabled': this.disabled,\r\n [`multi-select--${this.size}`]: true,\r\n [`multi-select--${this.variant}`]: true,\r\n })}\r\n >\r\n <div\r\n class=\"multi-select__control\"\r\n @click=${this.handleToggle}\r\n @keydown=${this.handleKeyDown}\r\n tabindex=${this.disabled ? '-1' : '0'}\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n aria-expanded=${this.isOpen}\r\n aria-disabled=${this.disabled}\r\n part=\"control\"\r\n >\r\n <div class=\"multi-select__value-container\">\r\n ${hasSelection\r\n ? repeat(\r\n this.value,\r\n (v) => v,\r\n (v) => html`\r\n <span class=\"multi-select__tag\" part=\"tag\">\r\n <span class=\"multi-select__tag-label\">\r\n ${this.getLabelForValue(v)}\r\n </span>\r\n ${this.clearable\r\n ? html`<button\r\n type=\"button\"\r\n class=\"multi-select__tag-remove\"\r\n @click=${(e: Event) => this.handleRemoveTag(v, e)}\r\n aria-label=\"Remove ${this.getLabelForValue(v)}\"\r\n tabindex=\"-1\"\r\n ?disabled=${this.disabled}\r\n >\r\n ×\r\n </button>`\r\n : nothing}\r\n </span>\r\n `\r\n )\r\n : html`<span class=\"multi-select__placeholder\"\r\n >${this.placeholder}</span\r\n >`}\r\n </div>\r\n\r\n <div class=\"multi-select__indicators\">\r\n ${this.clearable && hasSelection\r\n ? html`\r\n <button\r\n type=\"button\"\r\n class=\"multi-select__clear\"\r\n @click=${this.handleClearAll}\r\n aria-label=\"Clear all selections\"\r\n tabindex=\"-1\"\r\n ?disabled=${this.disabled}\r\n part=\"clear-button\"\r\n >\r\n ×\r\n </button>\r\n `\r\n : ''}\r\n <span class=\"multi-select__dropdown-indicator\" part=\"indicator\">\r\n ▼\r\n </span>\r\n </div>\r\n </div>\r\n\r\n ${this.isOpen ? this.renderDropdown() : nothing}\r\n\r\n <!-- Hidden slot for options -->\r\n <slot @slotchange=${this.handleSlotChange}></slot>\r\n\r\n <!-- Hidden inputs for form submission -->\r\n ${this.value.map(\r\n (v) => html`\r\n <input type=\"hidden\" name=\"${this.name}\" value=\"${v}\" />\r\n `\r\n )}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-multi-select': BpMultiSelect;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const comboboxStyles = css`\n /* Base styles */\n :host {\n display: block;\n font-family: var(--bp-font-family);\n }\n\n .combobox {\n position: relative;\n width: 100%;\n }\n\n .combobox__control {\n display: flex;\n align-items: center;\n position: relative;\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n transition: border-color var(--bp-transition-fast);\n }\n\n .combobox__control:hover:not(.combobox--disabled .combobox__control) {\n border-color: var(--bp-color-primary);\n }\n\n .combobox__control:focus-within {\n outline: var(--bp-focus-width) solid var(--bp-color-focus);\n outline-offset: var(--bp-focus-width);\n border-color: var(--bp-color-focus);\n }\n\n .combobox__input {\n flex: 1;\n min-width: 0;\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n background: transparent;\n border: none;\n outline: none;\n color: var(--bp-color-text);\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n }\n\n .combobox__input::placeholder {\n color: var(--bp-color-text-muted);\n }\n\n .combobox__input:disabled {\n cursor: not-allowed;\n }\n\n .combobox__indicators {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-xs);\n padding-right: var(--bp-spacing-sm);\n flex-shrink: 0;\n }\n\n .combobox__clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n padding: 0;\n background: transparent;\n border: none;\n border-radius: var(--bp-border-radius-sm);\n color: var(--bp-color-text-muted);\n cursor: pointer;\n font-size: var(--bp-font-size-xl);\n line-height: 1;\n transition: all var(--bp-transition-fast);\n }\n\n .combobox__clear:hover {\n color: var(--bp-color-primary);\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n }\n\n .combobox__clear:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .combobox__dropdown-indicator {\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-xs);\n transition: transform var(--bp-transition-fast);\n user-select: none;\n }\n\n .combobox--open .combobox__dropdown-indicator {\n transform: rotate(180deg);\n }\n\n .combobox__dropdown {\n position: absolute;\n top: calc(100% + var(--bp-spacing-xs));\n left: 0;\n right: 0;\n z-index: var(--bp-z-dropdown);\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-top: calc(var(--bp-border-width) * 2) solid var(--bp-color-primary);\n border-radius: var(--bp-border-radius-md);\n box-shadow: var(--bp-shadow-md);\n max-height: calc(var(--bp-spacing-10) * 6);\n overflow-y: auto;\n opacity: 0;\n visibility: hidden;\n transform: translateY(calc(-1 * var(--bp-spacing-md)));\n transition:\n opacity var(--bp-transition-fast),\n transform var(--bp-transition-fast),\n visibility var(--bp-transition-fast);\n contain: layout style paint;\n }\n\n .combobox--open .combobox__dropdown {\n opacity: 1;\n visibility: visible;\n transform: translateY(0);\n }\n\n .combobox__options {\n list-style: none;\n margin: 0;\n padding: var(--bp-spacing-2xs);\n }\n\n .combobox__option {\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n cursor: pointer;\n border-radius: var(--bp-border-radius-md);\n transition:\n background-color var(--bp-transition-fast),\n color var(--bp-transition-fast);\n }\n\n .combobox__option:hover {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n }\n\n .combobox__option--focused {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n outline: var(--bp-focus-width) solid var(--bp-color-primary);\n outline-offset: calc(-1 * var(--bp-focus-width));\n }\n\n .combobox__option--selected {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n color: var(--bp-color-primary);\n }\n\n .combobox__option--selected:hover,\n .combobox__option--selected.combobox__option--focused {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 12%,\n transparent\n );\n }\n\n .combobox__option--empty {\n color: var(--bp-color-text-muted);\n cursor: default;\n text-align: center;\n padding: var(--bp-spacing-lg) var(--bp-spacing-md);\n font-style: italic;\n }\n\n .combobox__option--empty:hover {\n background-color: transparent;\n }\n\n /* Sizes */\n .combobox--sm .combobox__input {\n padding: var(--bp-spacing-2xs) var(--bp-spacing-xs);\n font-size: var(--bp-font-size-sm);\n }\n\n .combobox--sm .combobox__indicators {\n padding-right: var(--bp-spacing-xs);\n }\n\n .combobox--lg .combobox__input {\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n font-size: var(--bp-font-size-lg);\n }\n\n .combobox--lg .combobox__indicators {\n padding-right: var(--bp-spacing-md);\n }\n\n /* Variants */\n .combobox--default .combobox__control {\n border-color: var(--bp-color-border);\n }\n\n .combobox--success .combobox__control {\n border-color: var(--bp-color-success);\n }\n\n .combobox--error .combobox__control {\n border-color: var(--bp-color-error);\n }\n\n .combobox--warning .combobox__control {\n border-color: var(--bp-color-warning);\n }\n\n .combobox--info .combobox__control {\n border-color: var(--bp-color-info);\n }\n\n .combobox--success\n .combobox__control:hover:not(.combobox--disabled .combobox__control) {\n border-color: var(--bp-color-success);\n }\n\n .combobox--error\n .combobox__control:hover:not(.combobox--disabled .combobox__control) {\n border-color: var(--bp-color-error);\n }\n\n .combobox--warning\n .combobox__control:hover:not(.combobox--disabled .combobox__control) {\n border-color: var(--bp-color-warning);\n }\n\n .combobox--info\n .combobox__control:hover:not(.combobox--disabled .combobox__control) {\n border-color: var(--bp-color-info);\n }\n\n /* States */\n .combobox--disabled .combobox__control {\n background-color: var(--bp-color-surface-subdued);\n cursor: not-allowed;\n opacity: 0.6;\n }\n\n .combobox--disabled .combobox__input {\n color: var(--bp-color-text-muted);\n }\n\n /* Hide slot */\n slot {\n display: none;\n }\n\n /* Hide hidden inputs */\n input[type='hidden'] {\n display: none;\n }\n\n /* iOS zoom prevention: ensure 16px minimum on touch devices */\n @media (max-width: 768px) {\n .combobox--sm .combobox__input {\n font-size: 16px;\n }\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { comboboxStyles } from './combobox.style.js';\nimport { debounce } from '../../utilities/debounce.js';\nimport { memoizeOne } from '../../utilities/memoize.js';\n\nexport type ComboboxSize = 'sm' | 'md' | 'lg';\nexport type ComboboxVariant =\n | 'default'\n | 'success'\n | 'error'\n | 'warning'\n | 'info';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\n@customElement('bp-combobox')\nexport class BpCombobox extends LitElement {\n /** The current value of the combobox */\n @property({ type: String, reflect: true }) declare value: string;\n\n /** Name attribute for form submission */\n @property({ type: String }) declare name: string;\n\n /** Placeholder text when no value is selected */\n @property({ type: String }) declare placeholder: string;\n\n /** Whether the combobox is disabled */\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n\n /** Whether the combobox is required */\n @property({ type: Boolean, reflect: true }) declare required: boolean;\n\n /** Size variant of the combobox */\n @property({ type: String, reflect: true }) declare size: ComboboxSize;\n\n /** Visual variant for validation states */\n @property({ type: String, reflect: true }) declare variant: ComboboxVariant;\n\n /** Whether to allow free-form input (not just from the options list) */\n @property({ type: Boolean }) declare allowCustomValue: boolean;\n\n /** Whether the dropdown is currently open */\n @state() private isOpen = false;\n\n /** Current search/filter text */\n @state() private searchText = '';\n\n /** Index of the focused option for keyboard navigation */\n @state() private focusedIndex = -1;\n\n /** Cached filtered options to avoid recomputation on every render */\n @state() private cachedFilteredOptions: ComboboxOption[] = [];\n\n /** Cached options from slotted elements */\n @state() private cachedOptions: ComboboxOption[] = [];\n\n /** Reference to the input element */\n @query('input[type=\"text\"]') private inputElement!: HTMLInputElement;\n\n /** Debounced filter computation for search input */\n private debouncedFilter = debounce(() => {\n this.cachedFilteredOptions = this.filterOptions(\n this.cachedOptions,\n this.searchText\n );\n }, 150);\n\n /**\n * Memoized filter computation.\n * Returns cached result when options array and searchText are the same references.\n */\n private filterOptions = memoizeOne(\n (options: ComboboxOption[], searchText: string): ComboboxOption[] => {\n if (!searchText.trim()) {\n return options;\n }\n\n const searchLower = searchText.toLowerCase();\n return options.filter((option) =>\n option.label.toLowerCase().includes(searchLower)\n );\n }\n );\n\n static styles = [comboboxStyles];\n\n constructor() {\n super();\n this.value = '';\n this.name = '';\n this.placeholder = 'Search or select...';\n this.disabled = false;\n this.required = false;\n this.size = 'md';\n this.variant = 'default';\n this.allowCustomValue = false;\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this.handleDocumentClick, {\n passive: true,\n });\n // Initialize search text with selected label and populate cached filtered options\n this.updateComplete.then(() => {\n this.cachedOptions = this.getOptions();\n this.updateSearchText();\n this.cachedFilteredOptions = this.filterOptions(\n this.cachedOptions,\n this.searchText\n );\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this.handleDocumentClick, {\n passive: true,\n } as EventListenerOptions);\n this.debouncedFilter.cancel();\n }\n\n private updateSearchText() {\n if (!this.value) {\n this.searchText = '';\n return;\n }\n\n const options =\n this.cachedOptions.length > 0 ? this.cachedOptions : this.getOptions();\n const selectedOption = options.find((opt) => opt.value === this.value);\n if (selectedOption) {\n this.searchText = selectedOption.label;\n }\n }\n\n private handleDocumentClick = (event: MouseEvent) => {\n if (!this.contains(event.target as globalThis.Node)) {\n this.closeDropdown();\n }\n };\n\n private closeDropdown() {\n this.isOpen = false;\n this.focusedIndex = -1;\n this.debouncedFilter.cancel();\n this.updateSearchText();\n this.cachedFilteredOptions = this.filterOptions(\n this.cachedOptions,\n this.searchText\n );\n }\n\n private getOptions(): ComboboxOption[] {\n const slot = this.shadowRoot?.querySelector('slot');\n const assignedElements = slot?.assignedElements() || [];\n const options = assignedElements.filter(\n (el): el is globalThis.HTMLOptionElement => el.tagName === 'OPTION'\n );\n\n return options.map((option) => ({\n value: option.value || option.textContent || '',\n label: option.textContent || '',\n }));\n }\n\n /**\n * Returns the cached filtered options for rendering and keyboard navigation.\n */\n private getFilteredOptions(): ComboboxOption[] {\n return this.cachedFilteredOptions;\n }\n\n /**\n * Handle slot changes by refreshing the cached options.\n */\n private handleSlotChange = () => {\n this.cachedOptions = this.getOptions();\n this.cachedFilteredOptions = this.filterOptions(\n this.cachedOptions,\n this.searchText\n );\n };\n\n private handleInputFocus = () => {\n if (this.disabled) return;\n this.isOpen = true;\n this.focusedIndex = -1;\n };\n\n private handleInputClick = (event: MouseEvent) => {\n event.stopPropagation();\n if (this.disabled) return;\n this.isOpen = true;\n };\n\n private handleInputChange = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.searchText = target.value;\n this.isOpen = true;\n this.focusedIndex = -1;\n\n // Debounce the filter computation for search input\n this.debouncedFilter();\n\n // If allowCustomValue is true, update value immediately\n if (this.allowCustomValue) {\n const previousValue = this.value;\n this.value = this.searchText;\n\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: {\n value: this.value,\n previousValue,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n };\n\n private handleOptionClick = (option: ComboboxOption) => {\n if (this.disabled) return;\n\n const previousValue = this.value;\n this.value = option.value;\n this.searchText = option.label;\n this.isOpen = false;\n this.focusedIndex = -1;\n this.debouncedFilter.cancel();\n this.cachedFilteredOptions = this.filterOptions(\n this.cachedOptions,\n this.searchText\n );\n\n // Dispatch change event\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: {\n value: this.value,\n label: option.label,\n previousValue,\n },\n bubbles: true,\n composed: true,\n })\n );\n\n // Update hidden input for form submission\n const hiddenInput = this.shadowRoot?.querySelector('input[type=\"hidden\"]');\n if (hiddenInput) {\n (hiddenInput as HTMLInputElement).value = this.value;\n }\n\n // Return focus to input\n this.inputElement?.focus();\n };\n\n private handleInputKeyDown = (event: globalThis.KeyboardEvent) => {\n if (this.disabled) return;\n\n const filteredOptions = this.getFilteredOptions();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen) {\n this.isOpen = true;\n this.focusedIndex = 0;\n } else {\n this.focusedIndex = Math.min(\n this.focusedIndex + 1,\n filteredOptions.length - 1\n );\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen) {\n this.isOpen = true;\n this.focusedIndex = filteredOptions.length - 1;\n } else {\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\n }\n break;\n\n case 'Enter':\n event.preventDefault();\n if (this.isOpen && this.focusedIndex >= 0) {\n const option = filteredOptions[this.focusedIndex];\n if (option) {\n this.handleOptionClick(option);\n }\n } else if (!this.isOpen) {\n this.isOpen = true;\n }\n break;\n\n case 'Escape':\n event.preventDefault();\n this.closeDropdown();\n break;\n\n case 'Tab':\n // Allow tab to close dropdown\n this.closeDropdown();\n break;\n }\n };\n\n private handleClear = (event: MouseEvent) => {\n event.stopPropagation();\n if (this.disabled) return;\n\n const previousValue = this.value;\n this.value = '';\n this.searchText = '';\n this.debouncedFilter.cancel();\n this.cachedFilteredOptions = this.filterOptions(\n this.cachedOptions,\n this.searchText\n );\n\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: {\n value: '',\n previousValue,\n },\n bubbles: true,\n composed: true,\n })\n );\n\n this.inputElement?.focus();\n };\n\n private renderDropdown() {\n const filteredOptions = this.getFilteredOptions();\n\n return html`\n <div class=\"combobox__dropdown\" id=\"listbox\" part=\"dropdown\">\n <ul class=\"combobox__options\" role=\"listbox\">\n ${filteredOptions.length === 0\n ? html`<li\n class=\"combobox__option combobox__option--empty\"\n role=\"option\"\n >\n No results found\n </li>`\n : repeat(\n filteredOptions,\n (opt) => opt.value,\n (opt, index) => {\n const isSelected = opt.value === this.value;\n const isFocused = index === this.focusedIndex;\n return html`\n <li\n class=${classMap({\n combobox__option: true,\n 'combobox__option--selected': isSelected,\n 'combobox__option--focused': isFocused,\n })}\n role=\"option\"\n aria-selected=${isSelected}\n @click=${() => this.handleOptionClick(opt)}\n part=\"option ${isSelected ? 'option-selected' : ''}\"\n >\n ${opt.label}\n </li>\n `;\n }\n )}\n </ul>\n </div>\n `;\n }\n\n render() {\n const hasValue = Boolean(this.value || this.searchText);\n\n return html`\n <div\n class=${classMap({\n combobox: true,\n 'combobox--open': this.isOpen,\n 'combobox--disabled': this.disabled,\n [`combobox--${this.size}`]: true,\n [`combobox--${this.variant}`]: true,\n })}\n >\n <div class=\"combobox__control\" part=\"control\">\n <input\n type=\"text\"\n class=\"combobox__input\"\n .value=${this.searchText}\n placeholder=${this.placeholder}\n ?disabled=${this.disabled}\n ?required=${this.required}\n @focus=${this.handleInputFocus}\n @click=${this.handleInputClick}\n @input=${this.handleInputChange}\n @keydown=${this.handleInputKeyDown}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.isOpen}\n aria-autocomplete=\"list\"\n aria-controls=\"listbox\"\n aria-disabled=${this.disabled}\n part=\"input\"\n />\n\n <div class=\"combobox__indicators\">\n ${hasValue\n ? html`\n <button\n type=\"button\"\n class=\"combobox__clear\"\n @click=${this.handleClear}\n aria-label=\"Clear selection\"\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n part=\"clear-button\"\n >\n ×\n </button>\n `\n : ''}\n <span class=\"combobox__dropdown-indicator\" part=\"indicator\">\n ▼\n </span>\n </div>\n </div>\n\n ${this.isOpen ? this.renderDropdown() : nothing}\n\n <!-- Hidden slot for options -->\n <slot @slotchange=${this.handleSlotChange}></slot>\n\n <!-- Hidden input for form submission -->\n ${this.name\n ? html`<input\n type=\"hidden\"\n name=\"${this.name}\"\n .value=${this.value}\n />`\n : ''}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-combobox': BpCombobox;\n }\n}\n","import { css } from 'lit';\r\n\r\nexport const datePickerStyles = css`\r\n /* Base */\r\n .date-picker {\r\n position: relative;\r\n width: 100%;\r\n }\r\n\r\n .date-picker__input-wrapper {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n .date-picker__input {\r\n flex: 1;\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n padding-right: var(--bp-spacing-2xl);\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-base);\r\n color: var(--bp-color-text);\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n cursor: pointer;\r\n transition:\r\n border-color var(--bp-transition-fast),\r\n box-shadow var(--bp-transition-fast);\r\n outline: none;\r\n }\r\n\r\n .date-picker__input:hover:not(:disabled) {\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .date-picker__input:focus {\r\n border-color: var(--bp-color-focus);\r\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-focus);\r\n }\r\n\r\n .date-picker__input:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n\r\n .date-picker__input::placeholder {\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n .date-picker__clear {\r\n position: absolute;\r\n right: var(--bp-spacing-2xl);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n padding: 0;\r\n font-size: var(--bp-font-size-sm);\r\n color: var(--bp-color-text-muted);\r\n background: none;\r\n border: none;\r\n border-radius: var(--bp-border-radius-sm);\r\n cursor: pointer;\r\n transition:\r\n color var(--bp-transition-fast),\r\n background-color var(--bp-transition-fast);\r\n }\r\n\r\n .date-picker__clear:hover {\r\n color: var(--bp-color-primary);\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 8%,\r\n transparent\r\n );\r\n }\r\n\r\n .date-picker__indicator {\r\n position: absolute;\r\n right: var(--bp-spacing-md);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n color: var(--bp-color-text-muted);\r\n pointer-events: none;\r\n }\r\n\r\n /* Calendar */\r\n .date-picker__calendar {\r\n position: absolute;\r\n top: calc(100% + var(--bp-spacing-xs));\r\n left: 0;\r\n z-index: var(--bp-z-dropdown);\r\n min-width: var(--bp-spacing-2xl);\r\n padding: var(--bp-spacing-md);\r\n background-color: var(--bp-color-surface);\r\n border-top: calc(var(--bp-border-width) * 2) solid var(--bp-color-primary);\r\n border-right: var(--bp-border-width) solid var(--bp-color-border);\r\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\r\n border-left: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n box-shadow: var(--bp-shadow-md);\r\n }\r\n\r\n /* Header */\r\n .date-picker__header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: var(--bp-spacing-sm);\r\n }\r\n\r\n .date-picker__nav-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n padding: 0;\r\n font-size: var(--bp-font-size-xl);\r\n color: var(--bp-color-text);\r\n background: none;\r\n border: none;\r\n border-radius: var(--bp-border-radius-sm);\r\n cursor: pointer;\r\n transition: background-color var(--bp-transition-fast);\r\n }\r\n\r\n .date-picker__nav-button:hover {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 8%,\r\n transparent\r\n );\r\n }\r\n\r\n .date-picker__month-year {\r\n flex: 1;\r\n font-size: var(--bp-font-size-base);\r\n font-weight: var(--bp-font-weight-semibold);\r\n color: var(--bp-color-text);\r\n text-align: center;\r\n }\r\n\r\n /* Weekdays */\r\n .date-picker__weekdays {\r\n display: grid;\r\n grid-template-columns: repeat(7, 1fr);\r\n gap: var(--bp-spacing-xs);\r\n margin-bottom: var(--bp-spacing-xs);\r\n }\r\n\r\n .date-picker__weekday {\r\n padding: var(--bp-spacing-xs);\r\n font-size: var(--bp-font-size-xs);\r\n font-weight: var(--bp-font-weight-semibold);\r\n color: var(--bp-color-text-muted);\r\n text-align: center;\r\n text-transform: uppercase;\r\n }\r\n\r\n /* Days */\r\n .date-picker__days {\r\n display: grid;\r\n grid-template-columns: repeat(7, 1fr);\r\n gap: var(--bp-spacing-xs);\r\n }\r\n\r\n .date-picker__day {\r\n aspect-ratio: 1;\r\n padding: var(--bp-spacing-xs);\r\n font-size: var(--bp-font-size-sm);\r\n color: var(--bp-color-text);\r\n background: none;\r\n border: none;\r\n border-radius: var(--bp-border-radius-sm);\r\n cursor: pointer;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n .date-picker__day:hover:not(:disabled) {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 8%,\r\n transparent\r\n );\r\n }\r\n\r\n .date-picker__day--other-month {\r\n color: var(--bp-color-text-muted);\r\n opacity: 0.5;\r\n }\r\n\r\n .date-picker__day--today {\r\n font-weight: var(--bp-font-weight-bold);\r\n color: var(--bp-color-primary);\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 4%,\r\n transparent\r\n );\r\n }\r\n\r\n .date-picker__day--selected {\r\n color: var(--bp-color-text-inverse);\r\n background-color: var(--bp-color-primary);\r\n }\r\n\r\n .date-picker__day--selected:hover:not(:disabled) {\r\n background-color: var(--bp-color-primary-hover);\r\n }\r\n\r\n .date-picker__day--focused {\r\n outline: var(--bp-focus-width) solid var(--bp-color-primary);\r\n outline-offset: calc(-1 * var(--bp-focus-width));\r\n }\r\n\r\n .date-picker__day--disabled {\r\n color: var(--bp-color-text-muted);\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n\r\n /* Sizes */\r\n .date-picker--sm .date-picker__input {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n padding-right: var(--bp-spacing-xl);\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .date-picker--sm .date-picker__indicator {\r\n right: var(--bp-spacing-xs);\r\n width: var(--bp-spacing-md);\r\n height: var(--bp-spacing-md);\r\n }\r\n\r\n .date-picker--sm .date-picker__clear {\r\n right: var(--bp-spacing-xl);\r\n width: var(--bp-spacing-md);\r\n height: var(--bp-spacing-md);\r\n }\r\n\r\n .date-picker--sm .date-picker__calendar {\r\n padding: var(--bp-spacing-sm);\r\n }\r\n\r\n .date-picker--sm .date-picker__nav-button {\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .date-picker--sm .date-picker__month-year {\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .date-picker--sm .date-picker__header {\r\n margin-bottom: var(--bp-spacing-xs);\r\n }\r\n\r\n .date-picker--sm .date-picker__weekdays {\r\n gap: var(--bp-spacing-2xs);\r\n margin-bottom: var(--bp-spacing-2xs);\r\n }\r\n\r\n .date-picker--sm .date-picker__weekday {\r\n padding: var(--bp-spacing-2xs);\r\n font-size: var(--bp-font-size-xs);\r\n }\r\n\r\n .date-picker--sm .date-picker__days {\r\n gap: var(--bp-spacing-2xs);\r\n }\r\n\r\n .date-picker--sm .date-picker__day {\r\n padding: var(--bp-spacing-2xs);\r\n font-size: var(--bp-font-size-xs);\r\n }\r\n\r\n .date-picker--lg .date-picker__input {\r\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\r\n padding-right: var(--bp-spacing-24);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .date-picker--lg .date-picker__indicator {\r\n right: var(--bp-spacing-md);\r\n width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n }\r\n\r\n .date-picker--lg .date-picker__clear {\r\n right: var(--bp-spacing-24);\r\n width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n }\r\n\r\n .date-picker--lg .date-picker__calendar {\r\n padding: var(--bp-spacing-lg);\r\n }\r\n\r\n .date-picker--lg .date-picker__nav-button {\r\n width: var(--bp-spacing-2xl);\r\n height: var(--bp-spacing-2xl);\r\n font-size: var(--bp-font-size-2xl);\r\n }\r\n\r\n .date-picker--lg .date-picker__month-year {\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .date-picker--lg .date-picker__header {\r\n margin-bottom: var(--bp-spacing-md);\r\n }\r\n\r\n .date-picker--lg .date-picker__weekdays {\r\n gap: var(--bp-spacing-sm);\r\n margin-bottom: var(--bp-spacing-sm);\r\n }\r\n\r\n .date-picker--lg .date-picker__weekday {\r\n padding: var(--bp-spacing-sm);\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .date-picker--lg .date-picker__days {\r\n gap: var(--bp-spacing-sm);\r\n }\r\n\r\n .date-picker--lg .date-picker__day {\r\n padding: var(--bp-spacing-sm);\r\n font-size: var(--bp-font-size-base);\r\n }\r\n\r\n /* States */\r\n .date-picker--disabled {\r\n opacity: 0.6;\r\n pointer-events: none;\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { datePickerStyles } from './date-picker.style.js';\r\n\r\nexport type DatePickerSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * A calendar-based date picker component.\r\n *\r\n * @element bp-date-picker\r\n *\r\n * @fires bp-change - Fired when the selected date changes\r\n *\r\n * @csspart control - The outer container\r\n * @csspart input - The text input field\r\n * @csspart indicator - The calendar icon\r\n * @csspart clear-button - The clear button\r\n * @csspart calendar - The calendar dropdown\r\n * @csspart header - The calendar header with navigation\r\n * @csspart nav-button - Month/year navigation buttons\r\n * @csspart month-year - Month and year display\r\n * @csspart weekday - Day of week header cell\r\n * @csspart day - Individual day cell\r\n */\r\n@customElement('bp-date-picker')\r\nexport class BpDatePicker extends LitElement {\r\n @property({ type: String, reflect: true }) declare value: string;\r\n @property({ type: String }) declare name: string;\r\n @property({ type: String }) declare label: string;\r\n @property({ type: String }) declare placeholder: string;\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n @property({ type: Boolean, reflect: true }) declare required: boolean;\r\n @property({ type: String, reflect: true }) declare size: DatePickerSize;\r\n @property({ type: String }) declare min: string;\r\n @property({ type: String }) declare max: string;\r\n @property({ type: String, attribute: 'first-day-of-week' })\r\n declare firstDayOfWeek: '0' | '1';\r\n\r\n @state() private isOpen = false;\r\n @state() private displayMonth = new Date().getMonth();\r\n @state() private displayYear = new Date().getFullYear();\r\n @state() private focusedDate: Date | null = null;\r\n\r\n static styles = [datePickerStyles];\r\n\r\n constructor() {\r\n super();\r\n this.value = '';\r\n this.name = '';\r\n this.label = '';\r\n this.placeholder = 'Select date...';\r\n this.disabled = false;\r\n this.required = false;\r\n this.size = 'md';\r\n this.min = '';\r\n this.max = '';\r\n this.firstDayOfWeek = '0';\r\n }\r\n\r\n private handleInputClick() {\r\n if (!this.disabled) {\r\n this.isOpen = !this.isOpen;\r\n }\r\n }\r\n\r\n private handlePreviousMonth() {\r\n if (this.displayMonth === 0) {\r\n this.displayMonth = 11;\r\n this.displayYear--;\r\n } else {\r\n this.displayMonth--;\r\n }\r\n }\r\n\r\n private handleNextMonth() {\r\n if (this.displayMonth === 11) {\r\n this.displayMonth = 0;\r\n this.displayYear++;\r\n } else {\r\n this.displayMonth++;\r\n }\r\n }\r\n\r\n private handleDateSelect(date: Date) {\r\n const previousValue = this.value;\r\n this.value = this.formatDate(date);\r\n this.isOpen = false;\r\n this.focusedDate = null;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: {\r\n value: this.value,\r\n previousValue,\r\n date,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleClear(e: Event) {\r\n e.stopPropagation();\r\n const previousValue = this.value;\r\n this.value = '';\r\n this.focusedDate = null;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: {\r\n value: '',\r\n previousValue,\r\n date: null,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleKeyDown(e: Event) {\r\n const event = e as globalThis.KeyboardEvent;\r\n if (!this.isOpen) {\r\n if (\r\n event.key === 'ArrowDown' ||\r\n event.key === 'Enter' ||\r\n event.key === ' '\r\n ) {\r\n event.preventDefault();\r\n this.isOpen = true;\r\n this.focusedDate = this.getSelectedDate() || this.getTodayDate();\r\n }\r\n return;\r\n }\r\n\r\n const currentFocus =\r\n this.focusedDate || this.getSelectedDate() || this.getTodayDate();\r\n\r\n switch (event.key) {\r\n case 'Escape':\r\n event.preventDefault();\r\n this.isOpen = false;\r\n this.focusedDate = null;\r\n break;\r\n\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n this.focusedDate = this.addDays(currentFocus, -1);\r\n this.updateDisplayMonth(this.focusedDate);\r\n break;\r\n\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n this.focusedDate = this.addDays(currentFocus, 1);\r\n this.updateDisplayMonth(this.focusedDate);\r\n break;\r\n\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.focusedDate = this.addDays(currentFocus, -7);\r\n this.updateDisplayMonth(this.focusedDate);\r\n break;\r\n\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.focusedDate = this.addDays(currentFocus, 7);\r\n this.updateDisplayMonth(this.focusedDate);\r\n break;\r\n\r\n case 'Home':\r\n event.preventDefault();\r\n this.focusedDate = new Date(\r\n currentFocus.getFullYear(),\r\n currentFocus.getMonth(),\r\n 1\r\n );\r\n break;\r\n\r\n case 'End':\r\n event.preventDefault();\r\n this.focusedDate = new Date(\r\n currentFocus.getFullYear(),\r\n currentFocus.getMonth() + 1,\r\n 0\r\n );\r\n break;\r\n\r\n case 'PageUp':\r\n event.preventDefault();\r\n this.focusedDate = this.addMonths(\r\n currentFocus,\r\n event.shiftKey ? -12 : -1\r\n );\r\n this.updateDisplayMonth(this.focusedDate);\r\n break;\r\n\r\n case 'PageDown':\r\n event.preventDefault();\r\n this.focusedDate = this.addMonths(\r\n currentFocus,\r\n event.shiftKey ? 12 : 1\r\n );\r\n this.updateDisplayMonth(this.focusedDate);\r\n break;\r\n\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n if (this.focusedDate && !this.isDateDisabled(this.focusedDate)) {\r\n this.handleDateSelect(this.focusedDate);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private updateDisplayMonth(date: Date) {\r\n this.displayMonth = date.getMonth();\r\n this.displayYear = date.getFullYear();\r\n }\r\n\r\n private addDays(date: Date, days: number): Date {\r\n const result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n }\r\n\r\n private addMonths(date: Date, months: number): Date {\r\n const result = new Date(date);\r\n result.setMonth(result.getMonth() + months);\r\n return result;\r\n }\r\n\r\n private formatDate(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const day = String(date.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n private parseDate(value: string): Date | null {\r\n if (!value) return null;\r\n // Parse YYYY-MM-DD format in local timezone to avoid UTC offset issues\r\n const match = value.match(/^(\\d{4})-(\\d{2})-(\\d{2})$/);\r\n if (match) {\r\n const [, year, month, day] = match;\r\n const date = new Date(\r\n parseInt(year, 10),\r\n parseInt(month, 10) - 1,\r\n parseInt(day, 10)\r\n );\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n }\r\n // Fallback for other formats\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n console.warn(\r\n `bp-date-picker: Invalid date format \"${value}\". Expected YYYY-MM-DD.`\r\n );\r\n return null;\r\n }\r\n return date;\r\n }\r\n\r\n private getSelectedDate(): Date | null {\r\n return this.parseDate(this.value);\r\n }\r\n\r\n private getTodayDate(): Date {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return today;\r\n }\r\n\r\n private isSameDay(date1: Date, date2: Date): boolean {\r\n return (\r\n date1.getFullYear() === date2.getFullYear() &&\r\n date1.getMonth() === date2.getMonth() &&\r\n date1.getDate() === date2.getDate()\r\n );\r\n }\r\n\r\n private isDateDisabled(date: Date): boolean {\r\n if (this.min) {\r\n const minDate = this.parseDate(this.min);\r\n if (minDate && date < minDate) return true;\r\n }\r\n if (this.max) {\r\n const maxDate = this.parseDate(this.max);\r\n if (maxDate && date > maxDate) return true;\r\n }\r\n return false;\r\n }\r\n\r\n private getCalendarDays(): Date[] {\r\n const CALENDAR_GRID_SIZE = 42; // 6 weeks × 7 days for consistent grid\r\n const firstDay = new Date(this.displayYear, this.displayMonth, 1);\r\n const lastDay = new Date(this.displayYear, this.displayMonth + 1, 0);\r\n\r\n const startDayOfWeek = this.firstDayOfWeek === '1' ? 1 : 0;\r\n let dayOfWeek = firstDay.getDay() - startDayOfWeek;\r\n if (dayOfWeek < 0) dayOfWeek += 7;\r\n\r\n const days: Date[] = [];\r\n\r\n // Add previous month's days\r\n for (let i = dayOfWeek - 1; i >= 0; i--) {\r\n const date = new Date(this.displayYear, this.displayMonth, -i);\r\n days.push(date);\r\n }\r\n\r\n // Add current month's days\r\n for (let i = 1; i <= lastDay.getDate(); i++) {\r\n days.push(new Date(this.displayYear, this.displayMonth, i));\r\n }\r\n\r\n // Add next month's days to complete the grid\r\n const remainingDays = CALENDAR_GRID_SIZE - days.length;\r\n for (let i = 1; i <= remainingDays; i++) {\r\n days.push(new Date(this.displayYear, this.displayMonth + 1, i));\r\n }\r\n\r\n return days;\r\n }\r\n\r\n public checkValidity(): boolean {\r\n // Check required validation\r\n if (this.required && !this.value) {\r\n return false;\r\n }\r\n // Check min/max validation\r\n if (this.value) {\r\n const date = this.parseDate(this.value);\r\n if (date && this.isDateDisabled(date)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private getWeekdayNames(): string[] {\r\n const weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n if (this.firstDayOfWeek === '1') {\r\n return [...weekdays.slice(1), weekdays[0]];\r\n }\r\n return weekdays;\r\n }\r\n\r\n private getMonthName(month: number): string {\r\n return new Date(2000, month, 1).toLocaleString('default', {\r\n month: 'long',\r\n });\r\n }\r\n\r\n private getFormattedValue(): string {\r\n const selectedDate = this.getSelectedDate();\r\n if (!selectedDate) return '';\r\n return selectedDate.toLocaleDateString();\r\n }\r\n\r\n render() {\r\n const selectedDate = this.getSelectedDate();\r\n const today = this.getTodayDate();\r\n const calendarDays = this.getCalendarDays();\r\n const weekdays = this.getWeekdayNames();\r\n const hasValue = !!this.value;\r\n\r\n const datePickerClasses = {\r\n 'date-picker': true,\r\n 'date-picker--open': this.isOpen,\r\n 'date-picker--disabled': this.disabled,\r\n [`date-picker--${this.size}`]: true,\r\n };\r\n\r\n return html`\r\n <div class=${classMap(datePickerClasses)} part=\"control\">\r\n <div class=\"date-picker__input-wrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"date-picker__input\"\r\n part=\"input\"\r\n .value=${this.getFormattedValue()}\r\n placeholder=${this.placeholder}\r\n ?disabled=${this.disabled}\r\n ?required=${this.required}\r\n readonly\r\n @click=${this.handleInputClick}\r\n @keydown=${this.handleKeyDown}\r\n role=\"combobox\"\r\n aria-haspopup=\"grid\"\r\n aria-expanded=${this.isOpen}\r\n aria-disabled=${this.disabled}\r\n aria-label=${this.label || this.placeholder || 'Date picker'}\r\n />\r\n ${hasValue && !this.disabled\r\n ? html`\r\n <button\r\n type=\"button\"\r\n class=\"date-picker__clear\"\r\n part=\"clear-button\"\r\n @click=${this.handleClear}\r\n aria-label=\"Clear date\"\r\n tabindex=\"-1\"\r\n >\r\n ✕\r\n </button>\r\n `\r\n : ''}\r\n <div class=\"date-picker__indicator\" part=\"indicator\">\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M5 2V4M11 2V4M3 6H13M4 4H12C12.5523 4 13 4.44772 13 5V13C13 13.5523 12.5523 14 12 14H4C3.44772 14 3 13.5523 3 13V5C3 4.44772 3.44772 4 4 4Z\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n ${this.isOpen\r\n ? html`\r\n <div class=\"date-picker__calendar\" part=\"calendar\" role=\"grid\">\r\n <div class=\"date-picker__header\" part=\"header\">\r\n <button\r\n type=\"button\"\r\n class=\"date-picker__nav-button\"\r\n part=\"nav-button\"\r\n @click=${this.handlePreviousMonth}\r\n aria-label=\"Previous month\"\r\n tabindex=\"-1\"\r\n >\r\n ‹\r\n </button>\r\n <div class=\"date-picker__month-year\" part=\"month-year\">\r\n ${this.getMonthName(this.displayMonth)} ${this.displayYear}\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"date-picker__nav-button\"\r\n part=\"nav-button\"\r\n @click=${this.handleNextMonth}\r\n aria-label=\"Next month\"\r\n tabindex=\"-1\"\r\n >\r\n ›\r\n </button>\r\n </div>\r\n\r\n <div class=\"date-picker__weekdays\">\r\n ${weekdays.map(\r\n (day) => html`\r\n <div\r\n class=\"date-picker__weekday\"\r\n part=\"weekday\"\r\n role=\"columnheader\"\r\n >\r\n ${day}\r\n </div>\r\n `\r\n )}\r\n </div>\r\n\r\n <div class=\"date-picker__days\">\r\n ${calendarDays.map((date) => {\r\n const isCurrentMonth =\r\n date.getMonth() === this.displayMonth;\r\n const isSelected =\r\n selectedDate && this.isSameDay(date, selectedDate);\r\n const isToday = this.isSameDay(date, today);\r\n const isFocused =\r\n this.focusedDate &&\r\n this.isSameDay(date, this.focusedDate);\r\n const isDisabled = this.isDateDisabled(date);\r\n\r\n const dayClasses = {\r\n 'date-picker__day': true,\r\n 'date-picker__day--other-month': !isCurrentMonth,\r\n 'date-picker__day--selected': !!isSelected,\r\n 'date-picker__day--today': isToday,\r\n 'date-picker__day--focused': !!isFocused,\r\n 'date-picker__day--disabled': isDisabled,\r\n };\r\n\r\n return html`\r\n <button\r\n type=\"button\"\r\n class=${classMap(dayClasses)}\r\n part=\"day\"\r\n @click=${() =>\r\n !isDisabled && this.handleDateSelect(date)}\r\n ?disabled=${isDisabled}\r\n tabindex=\"-1\"\r\n role=\"gridcell\"\r\n aria-selected=${!!isSelected}\r\n aria-label=${date.toLocaleDateString()}\r\n >\r\n ${date.getDate()}\r\n </button>\r\n `;\r\n })}\r\n </div>\r\n </div>\r\n `\r\n : ''}\r\n ${this.name\r\n ? html`\r\n <input type=\"hidden\" name=${this.name} .value=${this.value} />\r\n `\r\n : ''}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-date-picker': BpDatePicker;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const timePickerStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n width: 100%;\r\n }\r\n\r\n .time-picker {\r\n position: relative;\r\n font-family: var(--bp-font-family);\r\n }\r\n\r\n .label {\r\n display: block;\r\n font-size: var(--bp-font-size-sm);\r\n font-weight: var(--bp-font-weight-medium);\r\n color: var(--bp-color-text);\r\n line-height: var(--bp-line-height-normal);\r\n margin-bottom: var(--bp-spacing-xs);\r\n cursor: pointer;\r\n }\r\n\r\n .label-required {\r\n color: var(--bp-color-error);\r\n margin-left: var(--bp-spacing-xs);\r\n }\r\n\r\n .input-wrapper {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n cursor: pointer;\r\n }\r\n\r\n .input {\r\n width: 100%;\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n padding-right: var(--bp-spacing-2xl);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n font-size: var(--bp-font-size-base);\r\n font-family: var(--bp-font-family);\r\n color: var(--bp-color-text);\r\n background-color: var(--bp-color-surface);\r\n cursor: pointer;\r\n transition: border-color var(--bp-transition-fast);\r\n }\r\n\r\n .input::placeholder {\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n .icon {\r\n position: absolute;\r\n right: var(--bp-spacing-sm);\r\n pointer-events: none;\r\n font-size: var(--bp-font-size-lg);\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n .clear-button {\r\n position: absolute;\r\n right: var(--bp-spacing-xl);\r\n background: none;\r\n border: none;\r\n border-radius: var(--bp-border-radius-sm);\r\n font-size: var(--bp-font-size-xl);\r\n color: var(--bp-color-text-muted);\r\n cursor: pointer;\r\n padding: 0;\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n transition:\r\n color var(--bp-transition-fast),\r\n background-color var(--bp-transition-fast);\r\n }\r\n\r\n .dropdown {\r\n position: absolute;\r\n top: calc(100% + var(--bp-spacing-xs));\r\n left: 0;\r\n right: 0;\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-top: calc(var(--bp-border-width) * 2) solid var(--bp-color-primary);\r\n border-radius: var(--bp-border-radius-sm);\r\n box-shadow: var(--bp-shadow-md);\r\n max-height: 320px;\r\n overflow-y: auto;\r\n z-index: var(--bp-z-dropdown);\r\n animation: slideDown var(--bp-transition-fast) ease-out;\r\n }\r\n\r\n @keyframes slideDown {\r\n from {\r\n opacity: 0;\r\n transform: translateY(-8px);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n .time-option {\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n min-height: 44px;\r\n display: flex;\r\n align-items: center;\r\n cursor: pointer;\r\n font-size: var(--bp-font-size-base);\r\n color: var(--bp-color-text);\r\n transition: background-color var(--bp-transition-fast);\r\n }\r\n\r\n /* Variants */\r\n .time-option--selected {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 8%,\r\n transparent\r\n );\r\n color: var(--bp-color-primary);\r\n font-weight: var(--bp-font-weight-semibold);\r\n }\r\n\r\n /* Sizes */\r\n .time-picker--sm .input {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n padding-right: var(--bp-spacing-xl);\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .time-picker--sm .icon {\r\n font-size: var(--bp-font-size-base);\r\n }\r\n\r\n .time-picker--sm .clear-button {\r\n right: var(--bp-spacing-lg);\r\n }\r\n\r\n .time-picker--lg .input {\r\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\r\n padding-right: var(--bp-spacing-24);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .time-picker--lg .icon {\r\n font-size: var(--bp-font-size-xl);\r\n }\r\n\r\n .time-picker--lg .clear-button {\r\n right: var(--bp-spacing-2xl);\r\n }\r\n\r\n /* States */\r\n .input:hover:not(:disabled) {\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .input[aria-expanded='true'] {\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .input:focus {\r\n outline: none;\r\n border-color: var(--bp-color-focus);\r\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-focus);\r\n }\r\n\r\n .input:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n\r\n .clear-button:hover {\r\n color: var(--bp-color-primary);\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 8%,\r\n transparent\r\n );\r\n }\r\n\r\n .time-option:hover {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 8%,\r\n transparent\r\n );\r\n }\r\n\r\n .time-option--selected:hover {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-primary) 12%,\r\n transparent\r\n );\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { timePickerStyles } from './time-picker.style.js';\r\n\r\nexport type TimePickerSize = 'sm' | 'md' | 'lg';\r\nexport type TimeFormat = '12' | '24';\r\n\r\n/**\r\n * A time picker component with dropdown time selection.\r\n *\r\n * @element bp-time-picker\r\n *\r\n * @fires bp-change - Fired when the selected time changes\r\n *\r\n * @csspart input-wrapper - The input wrapper container\r\n * @csspart input - The text input field\r\n * @csspart icon - The clock icon indicator\r\n * @csspart clear-button - The clear button\r\n * @csspart dropdown - The time options dropdown\r\n * @csspart time-option - Individual time option in dropdown\r\n */\r\n@customElement('bp-time-picker')\r\nexport class BpTimePicker extends LitElement {\r\n @property({ type: String }) declare value: string;\r\n @property({ type: String }) declare name: string;\r\n @property({ type: String }) declare label: string;\r\n @property({ type: String }) declare placeholder: string;\r\n @property({ type: Boolean }) declare disabled: boolean;\r\n @property({ type: Boolean }) declare required: boolean;\r\n @property({ type: String }) declare size: TimePickerSize;\r\n @property({ type: String }) declare format: TimeFormat;\r\n @property({ type: Number }) declare step: number;\r\n\r\n @state() private isOpen = false;\r\n @state() private focusedHour: number | null = null;\r\n @state() private focusedMinute: number | null = null;\r\n\r\n static styles = [timePickerStyles];\r\n\r\n constructor() {\r\n super();\r\n this.value = '';\r\n this.name = '';\r\n this.label = '';\r\n this.placeholder = 'Select time';\r\n this.disabled = false;\r\n this.required = false;\r\n this.size = 'md';\r\n this.format = '12';\r\n this.step = 15; // 15-minute intervals by default\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n document.removeEventListener('click', this.handleDocumentClick);\r\n }\r\n\r\n private handleDocumentClick = (e: MouseEvent) => {\r\n if (!this.contains(e.target as globalThis.Node)) {\r\n this.isOpen = false;\r\n }\r\n };\r\n\r\n private toggleDropdown = () => {\r\n if (this.disabled) return;\r\n this.isOpen = !this.isOpen;\r\n\r\n if (this.isOpen) {\r\n // Add document click handler on next tick to avoid immediate close\r\n globalThis.setTimeout(() => {\r\n document.addEventListener('click', this.handleDocumentClick);\r\n }, 0);\r\n // Scroll to selected option\r\n this.updateComplete.then(() => {\r\n const selected = this.shadowRoot?.querySelector(\r\n '.time-option--selected'\r\n ) as HTMLElement;\r\n if (selected) {\r\n selected.scrollIntoView({ block: 'nearest' });\r\n }\r\n });\r\n } else {\r\n document.removeEventListener('click', this.handleDocumentClick);\r\n }\r\n };\r\n\r\n private parseTime(\r\n timeString: string\r\n ): { hours: number; minutes: number } | null {\r\n if (!timeString) return null;\r\n\r\n const match = timeString.match(/^(\\d{1,2}):(\\d{2})(?:\\s*(AM|PM))?$/i);\r\n if (!match) return null;\r\n\r\n let hours = parseInt(match[1], 10);\r\n const minutes = parseInt(match[2], 10);\r\n const period = match[3]?.toUpperCase();\r\n\r\n if (this.format === '12' && period) {\r\n if (period === 'PM' && hours !== 12) hours += 12;\r\n if (period === 'AM' && hours === 12) hours = 0;\r\n }\r\n\r\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) return null;\r\n\r\n return { hours, minutes };\r\n }\r\n\r\n private formatTime(hours: number, minutes: number): string {\r\n if (this.format === '24') {\r\n return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\r\n }\r\n\r\n const period = hours >= 12 ? 'PM' : 'AM';\r\n const displayHours = hours === 0 ? 12 : hours > 12 ? hours - 12 : hours;\r\n return `${displayHours}:${minutes.toString().padStart(2, '0')} ${period}`;\r\n }\r\n\r\n private getDisplayValue(): string {\r\n if (!this.value) return '';\r\n\r\n const parsed = this.parseTime(this.value);\r\n if (!parsed) return this.value;\r\n\r\n return this.formatTime(parsed.hours, parsed.minutes);\r\n }\r\n\r\n private generateTimeOptions(): Array<{\r\n hours: number;\r\n minutes: number;\r\n display: string;\r\n }> {\r\n const options: Array<{ hours: number; minutes: number; display: string }> =\r\n [];\r\n const maxHours = this.format === '24' ? 23 : 11;\r\n\r\n for (let h = 0; h <= maxHours; h++) {\r\n for (let m = 0; m < 60; m += this.step) {\r\n const hours = this.format === '24' ? h : h;\r\n options.push({\r\n hours,\r\n minutes: m,\r\n display: this.formatTime(hours, m),\r\n });\r\n }\r\n }\r\n\r\n // For 12-hour format, add PM times\r\n if (this.format === '12') {\r\n for (let h = 0; h <= 11; h++) {\r\n for (let m = 0; m < 60; m += this.step) {\r\n const hours = h + 12;\r\n options.push({\r\n hours,\r\n minutes: m,\r\n display: this.formatTime(hours, m),\r\n });\r\n }\r\n }\r\n }\r\n\r\n return options;\r\n }\r\n\r\n private handleTimeSelect(hours: number, minutes: number) {\r\n const newValue = this.formatTime(hours, minutes);\r\n const oldValue = this.value;\r\n\r\n this.value = newValue;\r\n this.isOpen = false;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: { value: newValue, hours, minutes, previousValue: oldValue },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleClear(e: MouseEvent) {\r\n e.stopPropagation();\r\n const oldValue = this.value;\r\n this.value = '';\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: {\r\n value: '',\r\n hours: null,\r\n minutes: null,\r\n previousValue: oldValue,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleKeyDown(e: Event) {\r\n const event = e as globalThis.KeyboardEvent;\r\n if (!this.isOpen) {\r\n if (\r\n event.key === 'ArrowDown' ||\r\n event.key === 'Enter' ||\r\n event.key === ' '\r\n ) {\r\n event.preventDefault();\r\n this.isOpen = true;\r\n }\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case 'Escape':\r\n event.preventDefault();\r\n this.isOpen = false;\r\n break;\r\n\r\n case 'ArrowDown':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n // Navigate through time options\r\n break;\r\n\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n if (this.focusedHour !== null && this.focusedMinute !== null) {\r\n this.handleTimeSelect(this.focusedHour, this.focusedMinute);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private isSelected(hours: number, minutes: number): boolean {\r\n const parsed = this.parseTime(this.value);\r\n if (!parsed) return false;\r\n return parsed.hours === hours && parsed.minutes === minutes;\r\n }\r\n\r\n render() {\r\n const displayValue = this.getDisplayValue();\r\n const timeOptions = this.generateTimeOptions();\r\n\r\n return html`\r\n <div class=\"time-picker time-picker--${this.size}\">\r\n ${this.label\r\n ? html`\r\n <label class=\"label\" part=\"label\" @click=${this.toggleDropdown}>\r\n ${this.label}\r\n ${this.required\r\n ? html`<span class=\"label-required\">*</span>`\r\n : ''}\r\n </label>\r\n `\r\n : ''}\r\n <div\r\n class=\"input-wrapper\"\r\n part=\"input-wrapper\"\r\n @keydown=${this.handleKeyDown}\r\n >\r\n <input\r\n type=\"text\"\r\n class=\"input\"\r\n part=\"input\"\r\n .value=${displayValue}\r\n placeholder=${this.placeholder}\r\n ?disabled=${this.disabled}\r\n ?required=${this.required}\r\n name=${this.name}\r\n readonly\r\n aria-haspopup=\"listbox\"\r\n aria-expanded=${this.isOpen}\r\n aria-disabled=${this.disabled}\r\n aria-label=${this.label || this.placeholder || 'Time picker'}\r\n @click=${this.toggleDropdown}\r\n />\r\n ${this.value && !this.disabled\r\n ? html`\r\n <button\r\n type=\"button\"\r\n class=\"clear-button\"\r\n part=\"clear-button\"\r\n @click=${this.handleClear}\r\n aria-label=\"Clear time\"\r\n tabindex=\"-1\"\r\n >\r\n ✕\r\n </button>\r\n `\r\n : ''}\r\n <div class=\"icon\" part=\"icon\">\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M8 4V8L10.5 10.5M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8Z\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n ${this.isOpen\r\n ? html`\r\n <div class=\"dropdown\" part=\"dropdown\" role=\"listbox\">\r\n ${timeOptions.map(\r\n (option) => html`\r\n <div\r\n class=${classMap({\r\n 'time-option': true,\r\n 'time-option--selected': this.isSelected(\r\n option.hours,\r\n option.minutes\r\n ),\r\n })}\r\n part=\"time-option\"\r\n role=\"option\"\r\n aria-selected=${this.isSelected(\r\n option.hours,\r\n option.minutes\r\n )}\r\n @click=${() =>\r\n this.handleTimeSelect(option.hours, option.minutes)}\r\n >\r\n ${option.display}\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `\r\n : ''}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-time-picker': BpTimePicker;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const sliderStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: block;\r\n }\r\n\r\n .slider {\r\n font-family: var(--bp-font-family);\r\n }\r\n\r\n .slider__header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: var(--bp-spacing-sm);\r\n }\r\n\r\n .slider__label {\r\n font-size: var(--bp-font-size-sm);\r\n font-weight: var(--bp-font-weight-medium);\r\n color: var(--bp-color-text);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n .slider__value {\r\n font-size: var(--bp-font-size-sm);\r\n font-weight: var(--bp-font-weight-medium);\r\n color: var(--bp-color-text-muted);\r\n font-variant-numeric: tabular-nums;\r\n }\r\n\r\n .slider__container {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n cursor: pointer;\r\n }\r\n\r\n .slider__track {\r\n position: relative;\r\n width: 100%;\r\n background-color: var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-full);\r\n overflow: visible;\r\n }\r\n\r\n .slider__fill {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 100%;\r\n background-color: var(--bp-color-primary);\r\n border-radius: var(--bp-border-radius-full);\r\n transition:\r\n width var(--bp-duration-instant),\r\n background-color var(--bp-transition-fast);\r\n }\r\n\r\n .slider__thumb {\r\n position: absolute;\r\n background-color: var(--bp-color-surface-elevated);\r\n border: var(--bp-border-width) solid var(--bp-color-primary);\r\n border-radius: var(--bp-border-radius-full);\r\n box-shadow:\r\n 0 1px 3px oklch(0 0 0 / 0.2),\r\n 0 1px 2px oklch(0 0 0 / 0.1);\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n cursor: grab;\r\n transition:\r\n box-shadow var(--bp-transition-fast),\r\n transform var(--bp-transition-fast),\r\n border-color var(--bp-transition-fast);\r\n }\r\n\r\n .slider__thumb:focus {\r\n outline: none;\r\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-focus);\r\n }\r\n\r\n .slider__thumb:focus-visible {\r\n outline: none;\r\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-focus);\r\n }\r\n\r\n .slider__ticks {\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n right: 0;\r\n height: var(--bp-spacing-xs);\r\n pointer-events: none;\r\n }\r\n\r\n .slider__tick {\r\n position: absolute;\r\n top: var(--bp-spacing-xs);\r\n width: var(--bp-spacing-0-5);\r\n height: var(--bp-spacing-xs);\r\n background-color: var(--bp-color-border-strong);\r\n transform: translateX(-50%);\r\n }\r\n\r\n /* Size variants */\r\n .slider--sm .slider__track {\r\n height: var(--bp-spacing-1);\r\n }\r\n\r\n .slider--sm .slider__thumb {\r\n width: var(--bp-spacing-3);\r\n height: var(--bp-spacing-3);\r\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\r\n }\r\n\r\n .slider--md .slider__track {\r\n height: var(--bp-spacing-1-5);\r\n }\r\n\r\n .slider--md .slider__thumb {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n }\r\n\r\n .slider--lg .slider__track {\r\n height: var(--bp-spacing-2);\r\n }\r\n\r\n .slider--lg .slider__thumb {\r\n width: var(--bp-spacing-5);\r\n height: var(--bp-spacing-5);\r\n box-shadow: var(--bp-shadow-md);\r\n }\r\n\r\n /* States */\r\n .slider__container:hover .slider__thumb {\r\n border-color: var(--bp-color-primary-hover);\r\n transform: translate(-50%, -50%) scale(1.1);\r\n }\r\n\r\n .slider__container:hover .slider__fill {\r\n background-color: var(--bp-color-primary-hover);\r\n }\r\n\r\n .slider__container:hover .slider__track {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-border) 90%,\r\n var(--bp-color-primary) 10%\r\n );\r\n }\r\n\r\n .slider--dragging .slider__thumb {\r\n cursor: grabbing;\r\n border-color: var(--bp-color-primary-active);\r\n box-shadow: var(--bp-shadow-md);\r\n transform: translate(-50%, -50%) scale(1.15);\r\n }\r\n\r\n .slider--dragging .slider__fill {\r\n background-color: var(--bp-color-primary-active);\r\n transition: none;\r\n }\r\n\r\n .slider--dragging .slider__track {\r\n background-color: color-mix(\r\n in srgb,\r\n var(--bp-color-border) 85%,\r\n var(--bp-color-primary) 15%\r\n );\r\n }\r\n\r\n .slider--disabled {\r\n pointer-events: none;\r\n }\r\n\r\n .slider--disabled .slider__track {\r\n background-color: var(--bp-color-surface-subdued);\r\n }\r\n\r\n .slider--disabled .slider__fill {\r\n background-color: var(--bp-color-border);\r\n }\r\n\r\n .slider--disabled .slider__thumb {\r\n background-color: var(--bp-color-surface-subdued);\r\n border-color: var(--bp-color-border);\r\n cursor: not-allowed;\r\n box-shadow: none;\r\n }\r\n\r\n .slider--disabled .slider__label,\r\n .slider--disabled .slider__value {\r\n color: var(--bp-color-text-muted);\r\n opacity: var(--bp-opacity-disabled);\r\n }\r\n`;\r\n","/**\r\n * Throttle utility for rate-limiting function calls.\r\n * When limit <= 16ms, uses requestAnimationFrame for frame-aligned throttling.\r\n * Otherwise uses Date.now() comparison.\r\n */\r\n\r\ntype ThrottledFunction<T extends (...args: never[]) => unknown> = {\r\n (...args: Parameters<T>): void;\r\n cancel: () => void;\r\n};\r\n\r\nexport function throttle<T extends (...args: never[]) => unknown>(\r\n fn: T,\r\n limit: number\r\n): ThrottledFunction<T> {\r\n const useRAF = limit <= 16;\r\n let lastArgs: Parameters<T> | null = null;\r\n let rafId: number | null = null;\r\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\r\n let waiting = false;\r\n\r\n const throttled = (...args: Parameters<T>): void => {\r\n if (useRAF) {\r\n lastArgs = args;\r\n if (rafId === null) {\r\n // First call: execute immediately\r\n fn(...args);\r\n lastArgs = null;\r\n rafId = requestAnimationFrame(() => {\r\n rafId = null;\r\n if (lastArgs !== null) {\r\n fn(...lastArgs);\r\n lastArgs = null;\r\n }\r\n });\r\n }\r\n } else {\r\n if (!waiting) {\r\n // First call or enough time has elapsed\r\n fn(...args);\r\n waiting = true;\r\n lastArgs = null;\r\n\r\n const scheduleNext = () => {\r\n timeoutId = setTimeout(() => {\r\n timeoutId = null;\r\n if (lastArgs !== null) {\r\n fn(...lastArgs);\r\n lastArgs = null;\r\n scheduleNext();\r\n } else {\r\n waiting = false;\r\n }\r\n }, limit);\r\n };\r\n scheduleNext();\r\n } else {\r\n lastArgs = args;\r\n }\r\n }\r\n };\r\n\r\n throttled.cancel = () => {\r\n if (rafId !== null) {\r\n cancelAnimationFrame(rafId);\r\n rafId = null;\r\n }\r\n if (timeoutId !== null) {\r\n clearTimeout(timeoutId);\r\n timeoutId = null;\r\n }\r\n lastArgs = null;\r\n waiting = false;\r\n };\r\n\r\n return throttled;\r\n}\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property, state, query } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { sliderStyles } from './slider.style.js';\r\nimport { throttle } from '../../utilities/throttle.js';\r\n\r\n/**\r\n * Size variants for the slider\r\n */\r\nexport type SliderSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * A slider component for selecting numeric values within a range.\r\n *\r\n * @element bp-slider\r\n *\r\n * @fires bp-input - Fired continuously while dragging\r\n * @fires bp-change - Fired when the value changes (after interaction ends)\r\n *\r\n * @csspart track - The slider track element\r\n * @csspart fill - The filled portion of the track\r\n * @csspart thumb - The draggable thumb element\r\n * @csspart label - The label element\r\n * @csspart value-display - The current value display\r\n */\r\n@customElement('bp-slider')\r\nexport class BpSlider extends LitElement {\r\n /**\r\n * Current value of the slider\r\n */\r\n @property({ type: Number }) declare value: number;\r\n\r\n /**\r\n * Minimum value\r\n */\r\n @property({ type: Number }) declare min: number;\r\n\r\n /**\r\n * Maximum value\r\n */\r\n @property({ type: Number }) declare max: number;\r\n\r\n /**\r\n * Step increment\r\n */\r\n @property({ type: Number }) declare step: number;\r\n\r\n /**\r\n * Name attribute for form association\r\n */\r\n @property({ type: String }) declare name: string;\r\n\r\n /**\r\n * Label text for the slider\r\n */\r\n @property({ type: String }) declare label: string;\r\n\r\n /**\r\n * Whether the slider is disabled\r\n */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /**\r\n * Size variant\r\n */\r\n @property({ type: String }) declare size: SliderSize;\r\n\r\n /**\r\n * Whether to show the current value\r\n */\r\n @property({ type: Boolean, attribute: 'show-value' })\r\n declare showValue: boolean;\r\n\r\n /**\r\n * Whether to show tick marks at step intervals\r\n */\r\n @property({ type: Boolean, attribute: 'show-ticks' })\r\n declare showTicks: boolean;\r\n\r\n /**\r\n * Format function for displaying the value\r\n */\r\n @property({ attribute: false }) declare formatValue: (\r\n value: number\r\n ) => string;\r\n\r\n /**\r\n * Whether the thumb is currently being dragged\r\n */\r\n @state() private isDragging = false;\r\n\r\n @query('.slider__track') private trackElement!: HTMLElement;\r\n\r\n /** Cached track bounding rect during drag to avoid repeated layout queries */\r\n private cachedTrackRect: DOMRect | null = null;\r\n\r\n /** Throttled position update for frame-aligned drag handling */\r\n private throttledUpdatePosition = throttle((clientX: number) => {\r\n this.updateValueFromPosition(clientX);\r\n }, 16);\r\n\r\n static styles = [sliderStyles];\r\n\r\n constructor() {\r\n super();\r\n this.value = 0;\r\n this.min = 0;\r\n this.max = 100;\r\n this.step = 1;\r\n this.name = '';\r\n this.label = '';\r\n this.disabled = false;\r\n this.size = 'md';\r\n this.showValue = false;\r\n this.showTicks = false;\r\n this.formatValue = (value: number) => String(value);\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.throttledUpdatePosition.cancel();\r\n this.cachedTrackRect = null;\r\n }\r\n\r\n /**\r\n * Calculate the percentage position of the current value\r\n */\r\n private get percentage(): number {\r\n const range = this.max - this.min;\r\n if (range === 0) return 0;\r\n return ((this.value - this.min) / range) * 100;\r\n }\r\n\r\n /**\r\n * Get tick positions based on step\r\n */\r\n private get tickPositions(): number[] {\r\n if (!this.showTicks) return [];\r\n const ticks: number[] = [];\r\n const range = this.max - this.min;\r\n const numTicks = Math.floor(range / this.step);\r\n\r\n // Limit to reasonable number of ticks\r\n if (numTicks > 20) return [];\r\n\r\n for (let i = 0; i <= numTicks; i++) {\r\n ticks.push(((i * this.step) / range) * 100);\r\n }\r\n return ticks;\r\n }\r\n\r\n /**\r\n * Clamp value to min/max and round to step.\r\n * Uses decimal-aware rounding to avoid floating-point artifacts\r\n * (e.g. 0.6900000000000001 instead of 0.69).\r\n */\r\n private clampValue(rawValue: number): number {\r\n // Determine the number of decimal places in the step value\r\n const stepString = String(this.step);\r\n const decimalPlaces = stepString.includes('.')\r\n ? stepString.split('.')[1].length\r\n : 0;\r\n\r\n // Round to nearest step\r\n const steppedValue =\r\n Math.round((rawValue - this.min) / this.step) * this.step + this.min;\r\n\r\n // Round to step precision to eliminate floating-point errors\r\n const preciseValue = parseFloat(steppedValue.toFixed(decimalPlaces));\r\n\r\n // Clamp to range\r\n return Math.max(this.min, Math.min(this.max, preciseValue));\r\n }\r\n\r\n /**\r\n * Update value from a position on the track.\r\n * Uses cached bounding rect during drag for performance.\r\n */\r\n private updateValueFromPosition(clientX: number): void {\r\n if (!this.trackElement || this.disabled) return;\r\n\r\n const rect =\r\n this.cachedTrackRect || this.trackElement.getBoundingClientRect();\r\n const percentage = Math.max(\r\n 0,\r\n Math.min(1, (clientX - rect.left) / rect.width)\r\n );\r\n const rawValue = this.min + percentage * (this.max - this.min);\r\n const newValue = this.clampValue(rawValue);\r\n\r\n if (newValue !== this.value) {\r\n this.value = newValue;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-input', {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Handle mouse down on track or thumb\r\n */\r\n private handleMouseDown(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n event.preventDefault();\r\n\r\n this.isDragging = true;\r\n // Cache the track rect at drag start to avoid repeated layout queries\r\n this.cachedTrackRect = this.trackElement?.getBoundingClientRect() ?? null;\r\n this.updateValueFromPosition(event.clientX);\r\n\r\n const handleMouseMove = (moveEvent: MouseEvent) => {\r\n this.throttledUpdatePosition(moveEvent.clientX);\r\n };\r\n\r\n const handleMouseUp = () => {\r\n this.throttledUpdatePosition.cancel();\r\n this.cachedTrackRect = null;\r\n this.isDragging = false;\r\n document.removeEventListener('mousemove', handleMouseMove);\r\n document.removeEventListener('mouseup', handleMouseUp);\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n };\r\n\r\n document.addEventListener('mousemove', handleMouseMove);\r\n document.addEventListener('mouseup', handleMouseUp);\r\n }\r\n\r\n /**\r\n * Handle touch start on track or thumb\r\n */\r\n private handleTouchStart(event: globalThis.TouchEvent): void {\r\n if (this.disabled) return;\r\n event.preventDefault();\r\n\r\n this.isDragging = true;\r\n // Cache the track rect at drag start to avoid repeated layout queries\r\n this.cachedTrackRect = this.trackElement?.getBoundingClientRect() ?? null;\r\n const touch = event.touches[0];\r\n this.updateValueFromPosition(touch.clientX);\r\n\r\n const handleTouchMove = (moveEvent: globalThis.TouchEvent) => {\r\n const moveTouch = moveEvent.touches[0];\r\n this.throttledUpdatePosition(moveTouch.clientX);\r\n };\r\n\r\n const handleTouchEnd = () => {\r\n this.throttledUpdatePosition.cancel();\r\n this.cachedTrackRect = null;\r\n this.isDragging = false;\r\n document.removeEventListener('touchmove', handleTouchMove);\r\n document.removeEventListener('touchend', handleTouchEnd);\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n };\r\n\r\n document.addEventListener('touchmove', handleTouchMove);\r\n document.addEventListener('touchend', handleTouchEnd);\r\n }\r\n\r\n /**\r\n * Handle keyboard navigation\r\n */\r\n private handleKeyDown(event: globalThis.KeyboardEvent): void {\r\n if (this.disabled) return;\r\n\r\n let newValue = this.value;\r\n const largeStep = this.step * 10;\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n newValue = this.clampValue(this.value + this.step);\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowDown':\r\n newValue = this.clampValue(this.value - this.step);\r\n break;\r\n case 'PageUp':\r\n newValue = this.clampValue(this.value + largeStep);\r\n break;\r\n case 'PageDown':\r\n newValue = this.clampValue(this.value - largeStep);\r\n break;\r\n case 'Home':\r\n newValue = this.min;\r\n break;\r\n case 'End':\r\n newValue = this.max;\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n if (newValue !== this.value) {\r\n this.value = newValue;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-input', {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n const wrapperClasses = {\r\n slider: true,\r\n [`slider--${this.size}`]: true,\r\n 'slider--disabled': this.disabled,\r\n 'slider--dragging': this.isDragging,\r\n };\r\n\r\n return html`\r\n <div class=${classMap(wrapperClasses)}>\r\n ${this.label || this.showValue\r\n ? html`\r\n <div class=\"slider__header\">\r\n ${this.label\r\n ? html`<label class=\"slider__label\" part=\"label\"\r\n >${this.label}</label\r\n >`\r\n : nothing}\r\n ${this.showValue\r\n ? html`<span class=\"slider__value\" part=\"value-display\"\r\n >${this.formatValue(this.value)}</span\r\n >`\r\n : nothing}\r\n </div>\r\n `\r\n : nothing}\r\n <div\r\n class=\"slider__container\"\r\n @mousedown=${this.handleMouseDown}\r\n @touchstart=${this.handleTouchStart}\r\n >\r\n <div class=\"slider__track\" part=\"track\">\r\n <div\r\n class=\"slider__fill\"\r\n part=\"fill\"\r\n style=\"width: ${this.percentage}%\"\r\n ></div>\r\n ${this.showTicks\r\n ? html`\r\n <div class=\"slider__ticks\">\r\n ${repeat(\r\n this.tickPositions,\r\n (pos) => pos,\r\n (pos) =>\r\n html`<div\r\n class=\"slider__tick\"\r\n style=\"left: ${pos}%\"\r\n ></div>`\r\n )}\r\n </div>\r\n `\r\n : nothing}\r\n </div>\r\n <div\r\n class=\"slider__thumb\"\r\n part=\"thumb\"\r\n role=\"slider\"\r\n tabindex=${this.disabled ? -1 : 0}\r\n aria-label=${this.label || 'Slider'}\r\n aria-valuemin=${this.min}\r\n aria-valuemax=${this.max}\r\n aria-valuenow=${this.value}\r\n aria-valuetext=${this.formatValue(this.value)}\r\n aria-disabled=${this.disabled}\r\n style=\"left: ${this.percentage}%\"\r\n @keydown=${this.handleKeyDown}\r\n ></div>\r\n </div>\r\n ${this.name\r\n ? html`<input\r\n type=\"hidden\"\r\n name=${this.name}\r\n .value=${String(this.value)}\r\n />`\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-slider': BpSlider;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const numberInputStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .number-input {\n font-family: var(--bp-font-family);\n display: flex;\n flex-direction: column;\n gap: var(--bp-spacing-xs);\n }\n\n .number-input__label {\n font-size: var(--bp-font-size-sm);\n font-weight: var(--bp-font-weight-medium);\n color: var(--bp-color-text);\n line-height: var(--bp-line-height-normal);\n }\n\n .number-input__required {\n color: var(--bp-color-error);\n margin-left: var(--bp-spacing-xs);\n }\n\n .number-input__container {\n display: flex;\n align-items: stretch;\n }\n\n .number-input__input {\n flex: 1;\n min-width: 0;\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text);\n background-color: var(--bp-color-background);\n border: var(--bp-border-width) solid var(--bp-color-border);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n text-align: center;\n font-variant-numeric: tabular-nums;\n transition:\n border-color var(--bp-transition-fast),\n box-shadow var(--bp-transition-fast);\n }\n\n .number-input__input::placeholder {\n color: var(--bp-color-text-muted);\n opacity: var(--bp-opacity-subtle);\n }\n\n .number-input__input:hover:not(:disabled):not(:readonly) {\n border-color: var(--bp-color-border-strong);\n }\n\n .number-input__input:focus {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-focus);\n }\n\n .number-input__input:focus-visible {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-focus);\n }\n\n /* Button styling */\n .number-input__button {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n color: var(--bp-color-text);\n cursor: pointer;\n transition:\n background-color var(--bp-transition-fast),\n border-color var(--bp-transition-fast);\n padding: 0;\n }\n\n .number-input__button:hover:not(:disabled) {\n background-color: var(--bp-color-surface-elevated);\n border-color: var(--bp-color-border-strong);\n }\n\n .number-input__button:active:not(:disabled) {\n background-color: var(--bp-color-surface-subdued);\n }\n\n .number-input__button:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n z-index: 1;\n }\n\n .number-input__button:disabled {\n opacity: var(--bp-opacity-disabled);\n background-color: var(--bp-color-surface-subdued);\n cursor: not-allowed;\n }\n\n .number-input__button--decrement {\n border-right: none;\n border-radius: var(--bp-border-radius-md) 0 0 var(--bp-border-radius-md);\n }\n\n .number-input__button--increment {\n border-left: none;\n border-radius: 0 var(--bp-border-radius-md) var(--bp-border-radius-md) 0;\n }\n\n .number-input__button-icon {\n font-size: var(--bp-font-size-lg);\n font-weight: var(--bp-font-weight-bold);\n line-height: 1;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n /* Input border radius adjustment when buttons visible */\n .number-input:not(.number-input--hide-buttons) .number-input__input {\n border-radius: 0;\n }\n\n .number-input--hide-buttons .number-input__input {\n border-radius: var(--bp-border-radius-md);\n }\n\n /* Size variants */\n .number-input--sm .number-input__input {\n font-size: var(--bp-font-size-sm);\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n }\n\n .number-input--sm .number-input__button {\n width: var(--bp-spacing-8);\n }\n\n .number-input--sm .number-input__button-icon {\n font-size: var(--bp-font-size-base);\n }\n\n .number-input--md .number-input__input {\n font-size: var(--bp-font-size-base);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n }\n\n .number-input--md .number-input__button {\n width: var(--bp-spacing-10);\n }\n\n .number-input--lg .number-input__input {\n font-size: var(--bp-font-size-lg);\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n }\n\n .number-input--lg .number-input__button {\n width: var(--bp-spacing-12);\n }\n\n .number-input--lg .number-input__button-icon {\n font-size: var(--bp-font-size-xl);\n }\n\n /* Variant styles */\n .number-input__input--default {\n border-color: var(--bp-color-border);\n }\n\n .number-input__input--success {\n border-color: var(--bp-color-success);\n }\n\n .number-input__input--success:focus,\n .number-input__input--success:focus-visible {\n border-color: var(--bp-color-success);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-success);\n }\n\n .number-input__input--error {\n border-color: var(--bp-color-error);\n }\n\n .number-input__input--error:focus,\n .number-input__input--error:focus-visible {\n border-color: var(--bp-color-error);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-error);\n }\n\n .number-input__input--warning {\n border-color: var(--bp-color-warning);\n }\n\n .number-input__input--warning:focus,\n .number-input__input--warning:focus-visible {\n border-color: var(--bp-color-warning);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-warning);\n }\n\n /* Match button border color to input variant */\n .number-input--success .number-input__button {\n border-color: var(--bp-color-success);\n }\n\n .number-input--error .number-input__button {\n border-color: var(--bp-color-error);\n }\n\n .number-input--warning .number-input__button {\n border-color: var(--bp-color-warning);\n }\n\n /* States */\n .number-input--disabled {\n pointer-events: none;\n }\n\n .number-input--disabled .number-input__input {\n opacity: var(--bp-opacity-disabled);\n background-color: var(--bp-color-surface-subdued);\n cursor: not-allowed;\n }\n\n .number-input--disabled .number-input__label {\n opacity: var(--bp-opacity-disabled);\n }\n\n .number-input--readonly .number-input__input {\n background-color: var(--bp-color-surface-subdued);\n cursor: default;\n }\n\n .number-input--readonly .number-input__button {\n background-color: var(--bp-color-surface-subdued);\n pointer-events: none;\n }\n\n /* Message styles */\n .number-input__message {\n font-size: var(--bp-font-size-sm);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text-muted);\n }\n\n .number-input__message--error {\n color: var(--bp-color-error);\n }\n\n .number-input__message--success {\n color: var(--bp-color-success);\n }\n\n .number-input__message--warning {\n color: var(--bp-color-warning);\n }\n\n /* iOS zoom prevention: ensure 16px minimum on touch devices */\n @media (max-width: 768px) {\n .number-input--sm .number-input__input {\n font-size: 16px;\n }\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { numberInputStyles } from './number-input.style.js';\n\n/**\n * Size variants for the number input\n */\nexport type NumberInputSize = 'sm' | 'md' | 'lg';\n\n/**\n * Validation variant for the number input\n */\nexport type NumberInputVariant = 'default' | 'success' | 'error' | 'warning';\n\n/**\n * A number input component with increment/decrement buttons.\n *\n * @element bp-number-input\n *\n * @fires bp-input - Fired when the value changes during input\n * @fires bp-change - Fired when the value changes (on blur or button click)\n *\n * @csspart input - The native input element\n * @csspart decrement - The decrement button\n * @csspart increment - The increment button\n * @csspart label - The label element\n * @csspart message - The help/error message element\n */\n@customElement('bp-number-input')\nexport class BpNumberInput extends LitElement {\n /**\n * Current value of the input\n */\n @property({ type: Number }) declare value: number | null;\n\n /**\n * Minimum allowed value\n */\n @property({ type: Number }) declare min: number | undefined;\n\n /**\n * Maximum allowed value\n */\n @property({ type: Number }) declare max: number | undefined;\n\n /**\n * Step increment for buttons and arrow keys\n */\n @property({ type: Number }) declare step: number;\n\n /**\n * Name attribute for form association\n */\n @property({ type: String }) declare name: string;\n\n /**\n * Label text for the input\n */\n @property({ type: String }) declare label: string;\n\n /**\n * Placeholder text when empty\n */\n @property({ type: String }) declare placeholder: string;\n\n /**\n * Whether the input is disabled\n */\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n\n /**\n * Whether the input is required\n */\n @property({ type: Boolean, reflect: true }) declare required: boolean;\n\n /**\n * Whether the input is readonly\n */\n @property({ type: Boolean, reflect: true }) declare readonly: boolean;\n\n /**\n * Size variant\n */\n @property({ type: String }) declare size: NumberInputSize;\n\n /**\n * Validation variant\n */\n @property({ type: String }) declare variant: NumberInputVariant;\n\n /**\n * Help or error message to display\n */\n @property({ type: String }) declare message: string;\n\n /**\n * Number of decimal places to display\n */\n @property({ type: Number }) declare precision: number | undefined;\n\n /**\n * Hide the increment/decrement buttons\n */\n @property({ type: Boolean, attribute: 'hide-buttons' })\n declare hideButtons: boolean;\n\n @query('input') private inputElement!: HTMLInputElement;\n\n static styles = [numberInputStyles];\n\n constructor() {\n super();\n this.value = null;\n this.min = undefined;\n this.max = undefined;\n this.step = 1;\n this.name = '';\n this.label = '';\n this.placeholder = '';\n this.disabled = false;\n this.required = false;\n this.readonly = false;\n this.size = 'md';\n this.variant = 'default';\n this.message = '';\n this.precision = undefined;\n this.hideButtons = false;\n }\n\n /**\n * Check if decrement is allowed\n */\n private get canDecrement(): boolean {\n if (this.disabled || this.readonly) return false;\n if (this.value === null) return true;\n if (this.min !== undefined) return this.value > this.min;\n return true;\n }\n\n /**\n * Check if increment is allowed\n */\n private get canIncrement(): boolean {\n if (this.disabled || this.readonly) return false;\n if (this.value === null) return true;\n if (this.max !== undefined) return this.value < this.max;\n return true;\n }\n\n /**\n * Format value for display\n */\n private formatValue(value: number | null): string {\n if (value === null) return '';\n if (this.precision !== undefined) {\n return value.toFixed(this.precision);\n }\n return String(value);\n }\n\n /**\n * Clamp value to min/max range\n */\n private clampValue(value: number): number {\n let result = value;\n if (this.min !== undefined) result = Math.max(this.min, result);\n if (this.max !== undefined) result = Math.min(this.max, result);\n return result;\n }\n\n /**\n * Round value to step precision\n */\n private roundToStep(value: number): number {\n if (this.precision !== undefined) {\n const factor = Math.pow(10, this.precision);\n return Math.round(value * factor) / factor;\n }\n // Handle floating point precision for step\n const stepDecimals = (String(this.step).split('.')[1] || '').length;\n const factor = Math.pow(10, stepDecimals);\n return Math.round(value * factor) / factor;\n }\n\n /**\n * Update value and emit events\n */\n private updateValue(\n newValue: number | null,\n emitChange: boolean = true\n ): void {\n const oldValue = this.value;\n\n if (newValue !== null) {\n newValue = this.clampValue(newValue);\n newValue = this.roundToStep(newValue);\n }\n\n if (newValue !== oldValue) {\n this.value = newValue;\n\n this.dispatchEvent(\n new CustomEvent('bp-input', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n\n if (emitChange) {\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n }\n\n /**\n * Handle increment button click\n */\n private handleIncrement(): void {\n if (!this.canIncrement) return;\n const currentValue = this.value ?? this.min ?? 0;\n this.updateValue(currentValue + this.step);\n }\n\n /**\n * Handle decrement button click\n */\n private handleDecrement(): void {\n if (!this.canDecrement) return;\n const currentValue = this.value ?? this.max ?? 0;\n this.updateValue(currentValue - this.step);\n }\n\n /**\n * Handle direct input\n */\n private handleInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const inputValue = input.value.trim();\n\n if (inputValue === '') {\n this.updateValue(null, false);\n return;\n }\n\n const numValue = parseFloat(inputValue);\n if (!isNaN(numValue)) {\n // Don't clamp during input, only on blur\n this.value = numValue;\n this.dispatchEvent(\n new CustomEvent('bp-input', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n /**\n * Handle blur - validate and clamp\n */\n private handleBlur(): void {\n if (this.value !== null) {\n const clampedValue = this.clampValue(this.value);\n const roundedValue = this.roundToStep(clampedValue);\n\n if (roundedValue !== this.value) {\n this.value = roundedValue;\n }\n\n // Update input display\n if (this.inputElement) {\n this.inputElement.value = this.formatValue(this.value);\n }\n }\n\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Handle keyboard navigation\n */\n private handleKeyDown(event: globalThis.KeyboardEvent): void {\n if (this.disabled || this.readonly) return;\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.handleIncrement();\n break;\n case 'ArrowDown':\n event.preventDefault();\n this.handleDecrement();\n break;\n case 'PageUp':\n event.preventDefault();\n if (this.canIncrement) {\n const currentValue = this.value ?? this.min ?? 0;\n this.updateValue(currentValue + this.step * 10);\n }\n break;\n case 'PageDown':\n event.preventDefault();\n if (this.canDecrement) {\n const currentValue = this.value ?? this.max ?? 0;\n this.updateValue(currentValue - this.step * 10);\n }\n break;\n case 'Home':\n event.preventDefault();\n if (this.min !== undefined) {\n this.updateValue(this.min);\n }\n break;\n case 'End':\n event.preventDefault();\n if (this.max !== undefined) {\n this.updateValue(this.max);\n }\n break;\n }\n }\n\n render() {\n const wrapperClasses = {\n 'number-input': true,\n [`number-input--${this.size}`]: true,\n [`number-input--${this.variant}`]: true,\n 'number-input--disabled': this.disabled,\n 'number-input--readonly': this.readonly,\n 'number-input--hide-buttons': this.hideButtons,\n };\n\n const inputClasses = {\n 'number-input__input': true,\n [`number-input__input--${this.variant}`]: true,\n };\n\n return html`\n <div class=${classMap(wrapperClasses)}>\n ${this.label\n ? html`\n <label class=\"number-input__label\" part=\"label\">\n ${this.label}\n ${this.required\n ? html`<span class=\"number-input__required\">*</span>`\n : nothing}\n </label>\n `\n : nothing}\n\n <div class=\"number-input__container\">\n ${!this.hideButtons\n ? html`\n <button\n type=\"button\"\n class=\"number-input__button number-input__button--decrement\"\n part=\"decrement\"\n tabindex=\"-1\"\n ?disabled=${!this.canDecrement}\n aria-label=\"Decrease value\"\n @click=${this.handleDecrement}\n >\n <span class=\"number-input__button-icon\">−</span>\n </button>\n `\n : nothing}\n\n <input\n type=\"text\"\n inputmode=\"decimal\"\n class=${classMap(inputClasses)}\n part=\"input\"\n .value=${this.formatValue(this.value)}\n name=${this.name || nothing}\n placeholder=${this.placeholder || nothing}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n aria-valuemin=${this.min ?? nothing}\n aria-valuemax=${this.max ?? nothing}\n aria-valuenow=${this.value ?? nothing}\n aria-invalid=${this.variant === 'error' ? 'true' : nothing}\n @input=${this.handleInput}\n @blur=${this.handleBlur}\n @keydown=${this.handleKeyDown}\n />\n\n ${!this.hideButtons\n ? html`\n <button\n type=\"button\"\n class=\"number-input__button number-input__button--increment\"\n part=\"increment\"\n tabindex=\"-1\"\n ?disabled=${!this.canIncrement}\n aria-label=\"Increase value\"\n @click=${this.handleIncrement}\n >\n <span class=\"number-input__button-icon\">+</span>\n </button>\n `\n : nothing}\n </div>\n\n ${this.message\n ? html`\n <div\n class=\"number-input__message number-input__message--${this\n .variant}\"\n part=\"message\"\n >\n ${this.message}\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-number-input': BpNumberInput;\n }\n}\n","import { css } from 'lit';\r\n\r\nexport const fileUploadStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: block;\r\n }\r\n\r\n .file-upload {\r\n font-family: var(--bp-font-family);\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--bp-spacing-md);\r\n }\r\n\r\n /* Hidden file input - standard sr-only pattern */\r\n input[type='file'] {\r\n position: absolute;\r\n width: var(--bp-spacing-0-5);\r\n height: var(--bp-spacing-0-5);\r\n padding: var(--bp-spacing-0);\r\n margin: calc(var(--bp-spacing-0-5) * -1);\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border: 0;\r\n }\r\n\r\n /* Visually hidden but accessible - standard sr-only pattern */\r\n .visually-hidden {\r\n position: absolute;\r\n width: var(--bp-spacing-0-5);\r\n height: var(--bp-spacing-0-5);\r\n padding: var(--bp-spacing-0);\r\n margin: calc(var(--bp-spacing-0-5) * -1);\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border: 0;\r\n }\r\n\r\n /* Dropzone */\r\n .file-upload__dropzone {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--bp-spacing-sm);\r\n padding: var(--bp-spacing-xl);\r\n border: var(--bp-focus-width) dashed var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-lg);\r\n background-color: var(--bp-color-surface);\r\n cursor: pointer;\r\n transition:\r\n border-color var(--bp-transition-fast),\r\n background-color var(--bp-transition-fast);\r\n text-align: center;\r\n }\r\n\r\n .file-upload__dropzone:hover:not(.file-upload__dropzone--disabled) {\r\n border-color: var(--bp-color-primary);\r\n background-color: var(--bp-color-surface-elevated);\r\n }\r\n\r\n .file-upload__dropzone:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .file-upload__dropzone:active:not(.file-upload__dropzone--disabled) {\r\n transform: scale(0.995);\r\n }\r\n\r\n /* Drag over state */\r\n .file-upload__dropzone--drag-over {\r\n border-color: var(--bp-color-primary);\r\n background-color: var(--bp-color-surface-elevated);\r\n border-style: solid;\r\n }\r\n\r\n /* Disabled state */\r\n .file-upload__dropzone--disabled {\r\n opacity: var(--bp-opacity-disabled);\r\n cursor: not-allowed;\r\n background-color: var(--bp-color-surface-subdued);\r\n }\r\n\r\n /* Icon */\r\n .file-upload__icon {\r\n width: var(--bp-spacing-2xl);\r\n height: var(--bp-spacing-2xl);\r\n color: var(--bp-color-text-muted);\r\n transition: color var(--bp-transition-fast);\r\n }\r\n\r\n .file-upload__dropzone:hover:not(.file-upload__dropzone--disabled)\r\n .file-upload__icon,\r\n .file-upload__dropzone--drag-over .file-upload__icon {\r\n color: var(--bp-color-primary);\r\n }\r\n\r\n /* Label */\r\n .file-upload__label {\r\n font-size: var(--bp-font-size-base);\r\n font-weight: var(--bp-font-weight-medium);\r\n color: var(--bp-color-text);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n /* Description */\r\n .file-upload__description {\r\n font-size: var(--bp-font-size-sm);\r\n color: var(--bp-color-text-muted);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n /* Variants */\r\n .file-upload__dropzone--success {\r\n border-color: var(--bp-color-success);\r\n }\r\n\r\n .file-upload__dropzone--success:hover:not(.file-upload__dropzone--disabled) {\r\n border-color: var(--bp-color-success);\r\n }\r\n\r\n .file-upload__dropzone--error {\r\n border-color: var(--bp-color-error);\r\n }\r\n\r\n .file-upload__dropzone--error:hover:not(.file-upload__dropzone--disabled) {\r\n border-color: var(--bp-color-error);\r\n }\r\n\r\n .file-upload__dropzone--warning {\r\n border-color: var(--bp-color-warning);\r\n }\r\n\r\n .file-upload__dropzone--warning:hover:not(.file-upload__dropzone--disabled) {\r\n border-color: var(--bp-color-warning);\r\n }\r\n\r\n /* Size variants */\r\n .file-upload__dropzone--sm {\r\n padding: var(--bp-spacing-lg);\r\n gap: var(--bp-spacing-xs);\r\n }\r\n\r\n .file-upload__dropzone--sm .file-upload__icon {\r\n width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n }\r\n\r\n .file-upload__dropzone--sm .file-upload__label {\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .file-upload__dropzone--sm .file-upload__description {\r\n font-size: var(--bp-font-size-xs);\r\n }\r\n\r\n .file-upload__dropzone--md {\r\n padding: var(--bp-spacing-xl);\r\n }\r\n\r\n .file-upload__dropzone--lg {\r\n padding: var(--bp-spacing-2xl);\r\n gap: var(--bp-spacing-md);\r\n }\r\n\r\n .file-upload__dropzone--lg .file-upload__icon {\r\n width: var(--bp-spacing-10);\r\n height: var(--bp-spacing-10);\r\n }\r\n\r\n .file-upload__dropzone--lg .file-upload__label {\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n /* File list */\r\n .file-upload__file-list {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--bp-spacing-sm);\r\n }\r\n\r\n .file-upload__file-item {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-md);\r\n padding: var(--bp-spacing-md);\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n border-color var(--bp-transition-fast),\r\n transform var(--bp-transition-fast);\r\n }\r\n\r\n .file-upload__file-item:hover {\r\n background-color: var(--bp-color-surface-elevated);\r\n border-color: var(--bp-color-border-strong);\r\n }\r\n\r\n .file-upload__file-item:active {\r\n transform: scale(0.99);\r\n }\r\n\r\n /* File preview */\r\n .file-upload__preview {\r\n width: var(--bp-spacing-10);\r\n height: var(--bp-spacing-10);\r\n object-fit: cover;\r\n border-radius: var(--bp-border-radius-sm);\r\n flex-shrink: 0;\r\n }\r\n\r\n .file-upload__file-icon {\r\n width: var(--bp-spacing-10);\r\n height: var(--bp-spacing-10);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n color: var(--bp-color-text-muted);\r\n transition: color var(--bp-transition-fast);\r\n }\r\n\r\n .file-upload__file-icon svg {\r\n width: var(--bp-spacing-6);\r\n height: var(--bp-spacing-6);\r\n }\r\n\r\n /* File info */\r\n .file-upload__file-info {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--bp-spacing-2xs);\r\n flex: 1;\r\n min-width: 0;\r\n }\r\n\r\n .file-upload__file-name {\r\n font-size: var(--bp-font-size-sm);\r\n font-weight: var(--bp-font-weight-medium);\r\n color: var(--bp-color-text);\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n .file-upload__file-size {\r\n font-size: var(--bp-font-size-xs);\r\n color: var(--bp-color-text-muted);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n /* Remove button */\r\n .file-upload__remove-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--bp-spacing-6);\r\n height: var(--bp-spacing-6);\r\n padding: 0;\r\n border: none;\r\n background: transparent;\r\n border-radius: var(--bp-border-radius-sm);\r\n color: var(--bp-color-text-muted);\r\n cursor: pointer;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n flex-shrink: 0;\r\n }\r\n\r\n .file-upload__remove-button:hover:not(:disabled) {\r\n background-color: var(--bp-color-error);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .file-upload__remove-button:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .file-upload__remove-button:disabled {\r\n cursor: not-allowed;\r\n opacity: var(--bp-opacity-disabled);\r\n }\r\n\r\n .file-upload__remove-button svg {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n }\r\n\r\n /* Message */\r\n .file-upload__message {\r\n font-size: var(--bp-font-size-sm);\r\n color: var(--bp-color-text-muted);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n .file-upload__message--success {\r\n color: var(--bp-color-success);\r\n }\r\n\r\n .file-upload__message--error {\r\n color: var(--bp-color-error);\r\n }\r\n\r\n .file-upload__message--warning {\r\n color: var(--bp-color-warning);\r\n }\r\n`;\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property, state, query } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { fileUploadStyles } from './file-upload.style.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\n\r\n/**\r\n * File information object returned in events\r\n */\r\nexport interface FileInfo {\r\n /** Original File object */\r\n file: File;\r\n /** File name */\r\n name: string;\r\n /** File size in bytes */\r\n size: number;\r\n /** MIME type */\r\n type: string;\r\n /** Unique identifier */\r\n id: string;\r\n /** Preview URL for images */\r\n previewUrl?: string;\r\n /** Upload progress (0-100) */\r\n progress?: number;\r\n /** Upload status */\r\n status?: 'pending' | 'uploading' | 'complete' | 'error';\r\n /** Error message if upload failed */\r\n error?: string;\r\n}\r\n\r\n/**\r\n * A file upload component with drag-and-drop support.\r\n *\r\n * @element bp-file-upload\r\n *\r\n * @fires bp-change - Fired when files are added or removed\r\n * @fires bp-file-added - Fired when a file is added\r\n * @fires bp-file-removed - Fired when a file is removed\r\n * @fires bp-file-rejected - Fired when a file is rejected (wrong type/size)\r\n *\r\n * @csspart dropzone - The drop zone container\r\n * @csspart input - The hidden file input\r\n * @csspart label - The label text\r\n * @csspart description - The description text\r\n * @csspart icon - The upload icon\r\n * @csspart file-list - The file list container\r\n * @csspart file-item - Individual file item\r\n * @csspart file-name - File name text\r\n * @csspart file-size - File size text\r\n * @csspart file-remove - Remove file button\r\n */\r\n@customElement('bp-file-upload')\r\nexport class BpFileUpload extends LitElement {\r\n /** Name attribute for form submission */\r\n @property({ type: String }) declare name: string;\r\n\r\n /** Label text displayed in the drop zone */\r\n @property({ type: String }) declare label: string;\r\n\r\n /** Description text displayed below the label */\r\n @property({ type: String }) declare description: string;\r\n\r\n /** Accepted file types (comma-separated MIME types or extensions) */\r\n @property({ type: String }) declare accept: string;\r\n\r\n /** Whether multiple files can be selected */\r\n @property({ type: Boolean }) declare multiple: boolean;\r\n\r\n /** Maximum file size in bytes */\r\n @property({ type: Number }) declare maxSize: number;\r\n\r\n /** Maximum number of files allowed */\r\n @property({ type: Number }) declare maxFiles: number;\r\n\r\n /** Whether the component is disabled */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /** Whether a file is required */\r\n @property({ type: Boolean }) declare required: boolean;\r\n\r\n /** Visual variant for validation states */\r\n @property({ type: String }) declare variant:\r\n | 'default'\r\n | 'success'\r\n | 'error'\r\n | 'warning';\r\n\r\n /** Helper or error message text */\r\n @property({ type: String }) declare message: string;\r\n\r\n /** Size variant */\r\n @property({ type: String }) declare size: 'sm' | 'md' | 'lg';\r\n\r\n /** Whether to show file previews for images */\r\n @property({ converter: booleanConverter, reflect: true })\r\n declare showPreviews: boolean;\r\n\r\n /** Whether drag is currently over the drop zone */\r\n @state() private isDragOver = false;\r\n\r\n /** List of selected files */\r\n @state() private files: FileInfo[] = [];\r\n\r\n /** Reference to the hidden file input */\r\n @query('input[type=\"file\"]') private fileInput!: HTMLInputElement;\r\n\r\n static styles = [fileUploadStyles];\r\n\r\n constructor() {\r\n super();\r\n this.name = '';\r\n this.label = 'Drop files here or click to upload';\r\n this.description = '';\r\n this.accept = '';\r\n this.multiple = false;\r\n this.maxSize = 0;\r\n this.maxFiles = 0;\r\n this.disabled = false;\r\n this.required = false;\r\n this.variant = 'default';\r\n this.message = '';\r\n this.size = 'md';\r\n this.showPreviews = true;\r\n }\r\n\r\n /**\r\n * Get the list of selected files\r\n */\r\n getFiles(): FileInfo[] {\r\n return [...this.files];\r\n }\r\n\r\n /**\r\n * Clear all selected files\r\n */\r\n clearFiles(): void {\r\n // Revoke object URLs to prevent memory leaks\r\n this.files.forEach((fileInfo) => {\r\n if (fileInfo.previewUrl) {\r\n URL.revokeObjectURL(fileInfo.previewUrl);\r\n }\r\n });\r\n this.files = [];\r\n if (this.fileInput) {\r\n this.fileInput.value = '';\r\n }\r\n this.dispatchChangeEvent();\r\n }\r\n\r\n /**\r\n * Remove a specific file by ID\r\n */\r\n removeFile(fileId: string): void {\r\n const fileIndex = this.files.findIndex((f) => f.id === fileId);\r\n if (fileIndex !== -1) {\r\n const removedFile = this.files[fileIndex];\r\n if (removedFile.previewUrl) {\r\n URL.revokeObjectURL(removedFile.previewUrl);\r\n }\r\n this.files = this.files.filter((f) => f.id !== fileId);\r\n this.dispatchEvent(\r\n new CustomEvent('bp-file-removed', {\r\n detail: { file: removedFile },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n this.dispatchChangeEvent();\r\n }\r\n }\r\n\r\n private handleClick(): void {\r\n if (!this.disabled) {\r\n this.fileInput?.click();\r\n }\r\n }\r\n\r\n private handleKeyDown(event: globalThis.KeyboardEvent): void {\r\n if (this.disabled) return;\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.fileInput?.click();\r\n }\r\n }\r\n\r\n private handleInputChange(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files) {\r\n this.processFiles(Array.from(input.files));\r\n }\r\n }\r\n\r\n private handleDragEnter(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!this.disabled) {\r\n this.isDragOver = true;\r\n }\r\n }\r\n\r\n private handleDragOver(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!this.disabled && event.dataTransfer) {\r\n event.dataTransfer.dropEffect = 'copy';\r\n }\r\n }\r\n\r\n private handleDragLeave(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n // Only set isDragOver to false if we're leaving the dropzone entirely\r\n const relatedTarget = event.relatedTarget as Node | null;\r\n if (!this.contains(relatedTarget)) {\r\n this.isDragOver = false;\r\n }\r\n }\r\n\r\n private handleDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragOver = false;\r\n\r\n if (this.disabled) return;\r\n\r\n const dataTransfer = event.dataTransfer;\r\n if (dataTransfer?.files) {\r\n this.processFiles(Array.from(dataTransfer.files));\r\n }\r\n }\r\n\r\n private processFiles(newFiles: File[]): void {\r\n const validFiles: FileInfo[] = [];\r\n\r\n for (const file of newFiles) {\r\n // Check if max files limit is reached\r\n if (\r\n this.maxFiles > 0 &&\r\n this.files.length + validFiles.length >= this.maxFiles\r\n ) {\r\n this.dispatchRejectEvent(file, 'Maximum number of files exceeded');\r\n continue;\r\n }\r\n\r\n // Check file type\r\n if (this.accept && !this.isFileTypeAccepted(file)) {\r\n this.dispatchRejectEvent(file, 'File type not accepted');\r\n continue;\r\n }\r\n\r\n // Check file size\r\n if (this.maxSize > 0 && file.size > this.maxSize) {\r\n this.dispatchRejectEvent(file, 'File size exceeds limit');\r\n continue;\r\n }\r\n\r\n // Create file info object\r\n const fileInfo: FileInfo = {\r\n file,\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n id: this.generateFileId(),\r\n status: 'pending',\r\n progress: 0,\r\n };\r\n\r\n // Generate preview for images\r\n if (this.showPreviews && file.type.startsWith('image/')) {\r\n fileInfo.previewUrl = URL.createObjectURL(file);\r\n }\r\n\r\n validFiles.push(fileInfo);\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-file-added', {\r\n detail: { file: fileInfo },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n if (validFiles.length > 0) {\r\n if (this.multiple) {\r\n this.files = [...this.files, ...validFiles];\r\n } else {\r\n // Single file mode - replace existing file\r\n this.files.forEach((existingFile) => {\r\n if (existingFile.previewUrl) {\r\n URL.revokeObjectURL(existingFile.previewUrl);\r\n }\r\n });\r\n this.files = validFiles.slice(0, 1);\r\n }\r\n this.dispatchChangeEvent();\r\n }\r\n }\r\n\r\n private isFileTypeAccepted(file: File): boolean {\r\n if (!this.accept) return true;\r\n\r\n const acceptedTypes = this.accept\r\n .split(',')\r\n .map((type) => type.trim().toLowerCase());\r\n const fileType = file.type.toLowerCase();\r\n const fileExtension = '.' + file.name.split('.').pop()?.toLowerCase();\r\n\r\n return acceptedTypes.some((accepted) => {\r\n // Check MIME type match\r\n if (accepted === fileType) return true;\r\n // Check extension match\r\n if (accepted === fileExtension) return true;\r\n // Check wildcard MIME type (e.g., image/*)\r\n if (accepted.endsWith('/*')) {\r\n const category = accepted.slice(0, -2);\r\n return fileType.startsWith(category + '/');\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n private dispatchChangeEvent(): void {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: { files: this.getFiles() },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private dispatchRejectEvent(file: File, reason: string): void {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-file-rejected', {\r\n detail: { file, reason },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private generateFileId(): string {\r\n return `file-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\r\n }\r\n\r\n private formatFileSize(bytes: number): string {\r\n if (bytes === 0) return '0 B';\r\n const units = ['B', 'KB', 'MB', 'GB'];\r\n const exponent = Math.min(\r\n Math.floor(Math.log(bytes) / Math.log(1024)),\r\n units.length - 1\r\n );\r\n const size = bytes / Math.pow(1024, exponent);\r\n return `${size.toFixed(exponent > 0 ? 1 : 0)} ${units[exponent]}`;\r\n }\r\n\r\n private handleRemoveFile(event: Event, fileId: string): void {\r\n event.stopPropagation();\r\n this.removeFile(fileId);\r\n }\r\n\r\n private renderUploadIcon() {\r\n return html`\r\n <svg\r\n class=\"file-upload__icon\"\r\n part=\"icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\r\n <polyline points=\"17 8 12 3 7 8\" />\r\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\r\n </svg>\r\n `;\r\n }\r\n\r\n private renderFileList() {\r\n if (this.files.length === 0) return nothing;\r\n\r\n return html`\r\n <div\r\n class=\"file-upload__file-list\"\r\n part=\"file-list\"\r\n role=\"list\"\r\n aria-label=\"Selected files\"\r\n >\r\n ${this.files.map(\r\n (fileInfo) => html`\r\n <div\r\n class=\"file-upload__file-item\"\r\n part=\"file-item\"\r\n role=\"listitem\"\r\n >\r\n ${fileInfo.previewUrl\r\n ? html`\r\n <img\r\n class=\"file-upload__preview\"\r\n src=\"${fileInfo.previewUrl}\"\r\n alt=\"Preview of ${fileInfo.name}\"\r\n />\r\n `\r\n : html`\r\n <div class=\"file-upload__file-icon\" aria-hidden=\"true\">\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <path\r\n d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\r\n />\r\n <polyline points=\"14 2 14 8 20 8\" />\r\n </svg>\r\n </div>\r\n `}\r\n <div class=\"file-upload__file-info\">\r\n <span class=\"file-upload__file-name\" part=\"file-name\"\r\n >${fileInfo.name}</span\r\n >\r\n <span class=\"file-upload__file-size\" part=\"file-size\"\r\n >${this.formatFileSize(fileInfo.size)}</span\r\n >\r\n </div>\r\n <button\r\n type=\"button\"\r\n class=\"file-upload__remove-button\"\r\n part=\"file-remove\"\r\n @click=${(e: Event) => this.handleRemoveFile(e, fileInfo.id)}\r\n aria-label=\"Remove ${fileInfo.name}\"\r\n ?disabled=${this.disabled}\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n </div>\r\n `\r\n )}\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n const dropzoneClasses = {\r\n 'file-upload__dropzone': true,\r\n 'file-upload__dropzone--drag-over': this.isDragOver,\r\n 'file-upload__dropzone--disabled': this.disabled,\r\n 'file-upload__dropzone--has-files': this.files.length > 0,\r\n [`file-upload__dropzone--${this.variant}`]: this.variant !== 'default',\r\n [`file-upload__dropzone--${this.size}`]: true,\r\n };\r\n\r\n const acceptDescription = this.accept\r\n ? `Accepted file types: ${this.accept}`\r\n : '';\r\n const sizeDescription =\r\n this.maxSize > 0\r\n ? `Maximum file size: ${this.formatFileSize(this.maxSize)}`\r\n : '';\r\n\r\n return html`\r\n <div class=\"file-upload\">\r\n <div\r\n class=${classMap(dropzoneClasses)}\r\n part=\"dropzone\"\r\n role=\"button\"\r\n tabindex=${this.disabled ? -1 : 0}\r\n aria-disabled=${this.disabled}\r\n aria-describedby=\"file-upload-description\"\r\n @click=${this.handleClick}\r\n @keydown=${this.handleKeyDown}\r\n @dragenter=${this.handleDragEnter}\r\n @dragover=${this.handleDragOver}\r\n @dragleave=${this.handleDragLeave}\r\n @drop=${this.handleDrop}\r\n >\r\n <input\r\n type=\"file\"\r\n part=\"input\"\r\n .name=${this.name}\r\n .accept=${this.accept}\r\n ?multiple=${this.multiple}\r\n ?disabled=${this.disabled}\r\n ?required=${this.required}\r\n @change=${this.handleInputChange}\r\n aria-hidden=\"true\"\r\n tabindex=\"-1\"\r\n />\r\n\r\n ${this.renderUploadIcon()}\r\n\r\n <span class=\"file-upload__label\" part=\"label\">${this.label}</span>\r\n\r\n ${this.description\r\n ? html`<span class=\"file-upload__description\" part=\"description\"\r\n >${this.description}</span\r\n >`\r\n : nothing}\r\n </div>\r\n\r\n <span id=\"file-upload-description\" class=\"visually-hidden\">\r\n ${acceptDescription} ${sizeDescription}\r\n </span>\r\n\r\n ${this.renderFileList()}\r\n ${this.message\r\n ? html`<div\r\n class=\"file-upload__message file-upload__message--${this.variant}\"\r\n part=\"message\"\r\n >\r\n ${this.message}\r\n </div>`\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-file-upload': BpFileUpload;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const tabsStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .tabs {\n font-family: var(--bp-font-family);\n display: flex;\n flex-direction: column;\n }\n\n /* Tablist - horizontal by default */\n .tablist {\n display: flex;\n flex-wrap: nowrap;\n gap: var(--bp-spacing-xs);\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\n padding-bottom: var(--bp-spacing-xs);\n }\n\n /* Tab button base */\n .tab {\n /* Reset */\n appearance: none;\n border: none;\n background: transparent;\n margin: 0;\n\n /* Layout */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--bp-spacing-xs);\n cursor: pointer;\n flex-shrink: 0;\n\n /* Typography */\n font-family: var(--bp-font-family);\n font-weight: var(--bp-font-weight-medium);\n white-space: nowrap;\n\n /* Visual */\n color: var(--bp-color-text-muted);\n border-radius: var(--bp-border-radius);\n transition: all var(--bp-transition-fast);\n\n /* Focus */\n outline: none;\n }\n\n .tab__icon {\n flex-shrink: 0;\n }\n\n .tab__label {\n display: inline-block;\n }\n\n .tab__close {\n /* Reset */\n appearance: none;\n border: none;\n background: transparent;\n padding: var(--bp-spacing-xs);\n margin: calc(-1 * var(--bp-spacing-xs));\n margin-left: var(--bp-spacing-xs);\n cursor: pointer;\n border-radius: var(--bp-border-radius);\n\n /* Layout */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-lg);\n height: var(--bp-spacing-lg);\n\n /* Visual */\n color: var(--bp-color-text-muted);\n transition: all var(--bp-transition-fast);\n }\n\n .tab__close svg {\n width: var(--bp-spacing-md);\n height: var(--bp-spacing-md);\n }\n\n .tab__close:hover {\n background: var(--bp-color-surface);\n color: var(--bp-color-text);\n }\n\n .tab__close:active {\n transform: scale(0.95);\n }\n\n /* Panels container */\n .panels {\n flex: 1;\n padding: var(--bp-spacing-md);\n }\n\n /* Sizes */\n .tabs--sm .tab {\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n font-size: var(--bp-font-size-sm);\n line-height: var(--bp-line-height-tight);\n }\n\n .tabs--md .tab {\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-normal);\n }\n\n .tabs--lg .tab {\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n font-size: var(--bp-font-size-lg);\n line-height: var(--bp-line-height-normal);\n }\n\n /* Default variant */\n .tabs--default .tab--active {\n color: var(--bp-color-primary);\n background: var(--bp-color-surface);\n }\n\n .tabs--default .tab:hover:not(.tab--disabled):not(.tab--active) {\n color: var(--bp-color-text);\n background: var(--bp-color-surface-subdued);\n }\n\n .tab:active:not(.tab--disabled) {\n opacity: 0.8;\n }\n\n /* Underline variant */\n .tabs--underline .tablist {\n gap: var(--bp-spacing-md);\n }\n\n .tabs--underline .tab {\n border-radius: 0;\n position: relative;\n padding-bottom: var(--bp-spacing-sm);\n margin-bottom: calc(-1 * var(--bp-spacing-xs) - var(--bp-border-width));\n }\n\n .tabs--underline .tab::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: var(--bp-spacing-0-5);\n background: transparent;\n transition: background var(--bp-transition-fast);\n }\n\n .tabs--underline .tab--active::after {\n background: var(--bp-color-primary);\n }\n\n .tabs--underline .tab--active {\n color: var(--bp-color-primary);\n }\n\n .tabs--underline .tab:hover:not(.tab--disabled):not(.tab--active) {\n color: var(--bp-color-text);\n }\n\n .tabs--underline .tab:hover:not(.tab--disabled):not(.tab--active)::after {\n background: var(--bp-color-border);\n }\n\n /* Pills variant */\n .tabs--pills .tablist {\n border-bottom: none;\n gap: var(--bp-spacing-xs);\n padding-bottom: 0;\n background: var(--bp-color-surface);\n padding: var(--bp-spacing-xs);\n border-radius: var(--bp-border-radius-large);\n }\n\n .tabs--pills .tab {\n border-radius: var(--bp-border-radius);\n }\n\n .tabs--pills .tab--active {\n background: var(--bp-color-background);\n color: var(--bp-color-text);\n box-shadow: var(--bp-shadow-sm);\n }\n\n .tabs--pills .tab:hover:not(.tab--disabled):not(.tab--active) {\n color: var(--bp-color-text);\n }\n\n /* Placement: bottom */\n .tabs--bottom {\n flex-direction: column-reverse;\n }\n\n .tabs--bottom .tablist {\n border-bottom: none;\n border-top: var(--bp-border-width) solid var(--bp-color-border);\n padding-bottom: 0;\n padding-top: var(--bp-spacing-xs);\n }\n\n .tabs--bottom.tabs--underline .tab {\n margin-bottom: 0;\n margin-top: calc(-1 * var(--bp-spacing-xs) - var(--bp-border-width));\n padding-bottom: var(--bp-spacing-sm);\n padding-top: var(--bp-spacing-sm);\n }\n\n .tabs--bottom.tabs--underline .tab::after {\n top: 0;\n bottom: auto;\n }\n\n /* Placement: start (vertical left) */\n .tabs--start {\n flex-direction: row;\n }\n\n .tabs--start .tablist {\n flex-direction: column;\n border-bottom: none;\n border-right: var(--bp-border-width) solid var(--bp-color-border);\n padding-bottom: 0;\n padding-right: var(--bp-spacing-xs);\n }\n\n .tabs--start .tab {\n justify-content: flex-start;\n }\n\n .tabs--start.tabs--underline .tab {\n margin-bottom: 0;\n margin-right: calc(-1 * var(--bp-spacing-xs) - var(--bp-border-width));\n padding-right: var(--bp-spacing-sm);\n }\n\n .tabs--start.tabs--underline .tab::after {\n left: auto;\n right: 0;\n top: 0;\n bottom: 0;\n width: var(--bp-spacing-0-5);\n height: auto;\n }\n\n /* Placement: end (vertical right) */\n .tabs--end {\n flex-direction: row-reverse;\n }\n\n .tabs--end .tablist {\n flex-direction: column;\n border-bottom: none;\n border-left: var(--bp-border-width) solid var(--bp-color-border);\n padding-bottom: 0;\n padding-left: var(--bp-spacing-xs);\n }\n\n .tabs--end .tab {\n justify-content: flex-start;\n }\n\n .tabs--end.tabs--underline .tab {\n margin-bottom: 0;\n margin-left: calc(-1 * var(--bp-spacing-xs) - var(--bp-border-width));\n padding-left: var(--bp-spacing-sm);\n }\n\n .tabs--end.tabs--underline .tab::after {\n right: auto;\n left: 0;\n top: 0;\n bottom: 0;\n width: var(--bp-spacing-0-5);\n height: auto;\n }\n\n /* States */\n .tab--disabled {\n cursor: not-allowed;\n opacity: var(--bp-opacity-disabled);\n pointer-events: none;\n }\n\n .tabs--disabled .tab {\n cursor: not-allowed;\n opacity: var(--bp-opacity-disabled);\n pointer-events: none;\n }\n\n .tab:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\r\nimport {\r\n customElement,\r\n property,\r\n state,\r\n queryAssignedElements,\r\n} from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { tabsStyles } from './tabs.style.js';\r\nimport type { IconName } from '../icon/icons/registry.generated.js';\r\n\r\nexport type TabsSize = 'sm' | 'md' | 'lg';\r\nexport type TabsVariant = 'default' | 'pills' | 'underline';\r\nexport type TabsPlacement = 'top' | 'bottom' | 'start' | 'end';\r\n\r\n/**\r\n * Tab item interface for programmatic tab configuration\r\n */\r\nexport interface TabItem {\r\n /** Unique identifier for the tab */\r\n id: string;\r\n /** Display label for the tab */\r\n label: string;\r\n /** Whether the tab is disabled */\r\n disabled?: boolean;\r\n /** Icon name to display before the label */\r\n icon?: IconName;\r\n /** Whether this tab can be closed */\r\n closable?: boolean;\r\n}\r\n\r\n/**\r\n * A tabs component for organizing content into tabbed sections.\r\n *\r\n * @element bp-tabs\r\n *\r\n * @property {string} value - The ID of the currently selected tab\r\n * @property {TabItem[]} tabs - Array of tab items (alternative to slotted tabs)\r\n * @property {TabsSize} size - The size of the tabs\r\n * @property {TabsVariant} variant - The visual style of the tabs\r\n * @property {TabsPlacement} placement - Position of the tab list relative to panels\r\n * @property {boolean} disabled - Whether all tabs are disabled\r\n * @property {boolean} manual - Whether activation requires pressing Enter/Space (vs automatic on arrow)\r\n *\r\n * @slot - Default slot for bp-tab-panel elements\r\n * @slot tab - Slot for custom tab buttons (use with data-tab-id attribute)\r\n *\r\n * @fires bp-tab-change - Fired when the selected tab changes\r\n * @fires bp-tab-close - Fired when a closable tab's close button is clicked\r\n *\r\n * @csspart tabs - The main container\r\n * @csspart tablist - The tab button list container\r\n * @csspart tab - Individual tab button\r\n * @csspart tab-active - The currently active tab\r\n * @csspart tab-disabled - A disabled tab\r\n * @csspart panels - The panel container\r\n * @csspart panel - Individual panel wrapper\r\n */\r\n@customElement('bp-tabs')\r\nexport class BpTabs extends LitElement {\r\n /**\r\n * The ID of the currently selected tab\r\n */\r\n @property({ type: String, reflect: true }) declare value: string;\r\n\r\n /**\r\n * Array of tab items for programmatic tab configuration\r\n */\r\n @property({ type: Array }) declare tabs: TabItem[];\r\n\r\n /**\r\n * The size of the tabs\r\n */\r\n @property({ type: String, reflect: true }) declare size: TabsSize;\r\n\r\n /**\r\n * The visual style of the tabs\r\n */\r\n @property({ type: String, reflect: true }) declare variant: TabsVariant;\r\n\r\n /**\r\n * Position of the tab list relative to panels\r\n */\r\n @property({ type: String, reflect: true }) declare placement: TabsPlacement;\r\n\r\n /**\r\n * Whether all tabs are disabled\r\n */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /**\r\n * Whether activation requires pressing Enter/Space (manual) vs automatic on arrow navigation\r\n */\r\n @property({ type: Boolean, reflect: true }) declare manual: boolean;\r\n\r\n @state() private focusedTabId: string | null = null;\r\n\r\n @queryAssignedElements({ slot: '', flatten: true })\r\n private panelElements!: HTMLElement[];\r\n\r\n static styles = [tabsStyles];\r\n\r\n constructor() {\r\n super();\r\n this.value = '';\r\n this.tabs = [];\r\n this.size = 'md';\r\n this.variant = 'default';\r\n this.placement = 'top';\r\n this.disabled = false;\r\n this.manual = false;\r\n }\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n this.setAttribute('role', 'tablist');\r\n }\r\n\r\n updated(changedProperties: Map<string, unknown>): void {\r\n super.updated(changedProperties);\r\n\r\n if (changedProperties.has('value')) {\r\n this.updatePanelVisibility();\r\n }\r\n }\r\n\r\n private handleSlotChange = () => {\r\n // Auto-select first tab if none selected\r\n if (!this.value && this.tabs.length > 0) {\r\n const firstEnabled = this.tabs.find((tab) => !tab.disabled);\r\n if (firstEnabled) {\r\n this.value = firstEnabled.id;\r\n }\r\n } else if (!this.value) {\r\n // Check for panels with data-tab-id\r\n const panels = this.getPanels();\r\n if (panels.length > 0) {\r\n this.value = panels[0].getAttribute('data-tab-id') || '';\r\n }\r\n }\r\n\r\n this.updatePanelVisibility();\r\n };\r\n\r\n private getPanels(): HTMLElement[] {\r\n return this.panelElements.filter(\r\n (el) => el.hasAttribute('data-tab-id') || el.tagName === 'BP-TAB-PANEL'\r\n );\r\n }\r\n\r\n private getEnabledTabs(): TabItem[] {\r\n return this.tabs.filter((tab) => !tab.disabled);\r\n }\r\n\r\n private updatePanelVisibility() {\r\n const panels = this.getPanels();\r\n panels.forEach((panel) => {\r\n const panelId = panel.getAttribute('data-tab-id') || '';\r\n const isActive = panelId === this.value;\r\n panel.hidden = !isActive;\r\n panel.setAttribute('aria-hidden', String(!isActive));\r\n if (isActive) {\r\n panel.setAttribute('tabindex', '0');\r\n } else {\r\n panel.removeAttribute('tabindex');\r\n }\r\n });\r\n }\r\n\r\n private handleTabClick = (tabId: string, disabled: boolean) => {\r\n if (disabled || this.disabled) return;\r\n\r\n this.selectTab(tabId);\r\n };\r\n\r\n private handleTabKeyDown = (event: KeyboardEvent, tabId: string) => {\r\n if (this.disabled) return;\r\n\r\n const enabledTabs = this.getEnabledTabs();\r\n const currentIndex = enabledTabs.findIndex((tab) => tab.id === tabId);\r\n\r\n let newIndex = currentIndex;\r\n let handled = false;\r\n\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n handled = true;\r\n newIndex = currentIndex > 0 ? currentIndex - 1 : enabledTabs.length - 1;\r\n break;\r\n\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n handled = true;\r\n newIndex = currentIndex < enabledTabs.length - 1 ? currentIndex + 1 : 0;\r\n break;\r\n\r\n case 'Home':\r\n event.preventDefault();\r\n handled = true;\r\n newIndex = 0;\r\n break;\r\n\r\n case 'End':\r\n event.preventDefault();\r\n handled = true;\r\n newIndex = enabledTabs.length - 1;\r\n break;\r\n\r\n case 'Enter':\r\n case ' ':\r\n if (this.manual && this.focusedTabId) {\r\n event.preventDefault();\r\n handled = true;\r\n this.selectTab(this.focusedTabId);\r\n }\r\n break;\r\n\r\n case 'Delete':\r\n case 'Backspace': {\r\n const tab = this.tabs.find((t) => t.id === tabId);\r\n if (tab?.closable) {\r\n event.preventDefault();\r\n handled = true;\r\n this.handleTabClose(event, tabId);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (handled && newIndex !== currentIndex) {\r\n const newTab = enabledTabs[newIndex];\r\n if (newTab) {\r\n this.focusedTabId = newTab.id;\r\n this.focusTab(newTab.id);\r\n\r\n // In automatic mode, select the tab on arrow navigation\r\n if (!this.manual) {\r\n this.selectTab(newTab.id);\r\n }\r\n }\r\n }\r\n };\r\n\r\n private focusTab(tabId: string) {\r\n const tabButton = this.shadowRoot?.querySelector(\r\n `[data-tab-id=\"${tabId}\"]`\r\n ) as HTMLElement | null;\r\n tabButton?.focus();\r\n }\r\n\r\n private selectTab(tabId: string) {\r\n const previousValue = this.value;\r\n if (previousValue === tabId) return;\r\n\r\n this.value = tabId;\r\n this.updatePanelVisibility();\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-tab-change', {\r\n detail: {\r\n value: tabId,\r\n previousValue,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleTabClose = (event: Event, tabId: string) => {\r\n event.stopPropagation();\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-tab-close', {\r\n detail: { tabId },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n\r\n // Remove the closed tab\r\n const closedIndex = this.tabs.findIndex((t) => t.id === tabId);\r\n this.tabs = this.tabs.filter((t) => t.id !== tabId);\r\n\r\n // If the closed tab was active, activate an adjacent tab\r\n if (this.value === tabId && this.tabs.length > 0) {\r\n const nextIndex = Math.min(closedIndex, this.tabs.length - 1);\r\n this.value = this.tabs[nextIndex].id;\r\n }\r\n };\r\n\r\n private handleTabFocus = (tabId: string) => {\r\n this.focusedTabId = tabId;\r\n };\r\n\r\n private handleTabBlur = () => {\r\n this.focusedTabId = null;\r\n };\r\n\r\n private renderTab(tab: TabItem) {\r\n const isActive = this.value === tab.id;\r\n const isDisabled = tab.disabled || this.disabled;\r\n\r\n const tabClasses = {\r\n tab: true,\r\n 'tab--active': isActive,\r\n 'tab--disabled': isDisabled,\r\n };\r\n\r\n return html`\r\n <button\r\n class=${classMap(tabClasses)}\r\n part=\"tab ${isActive ? 'tab-active' : ''} ${isDisabled\r\n ? 'tab-disabled'\r\n : ''}\"\r\n role=\"tab\"\r\n data-tab-id=${tab.id}\r\n id=\"tab-${tab.id}\"\r\n aria-selected=${isActive}\r\n aria-controls=\"panel-${tab.id}\"\r\n aria-disabled=${isDisabled}\r\n tabindex=${isActive ? 0 : -1}\r\n ?disabled=${isDisabled}\r\n @click=${() => this.handleTabClick(tab.id, isDisabled)}\r\n @keydown=${(e: KeyboardEvent) => this.handleTabKeyDown(e, tab.id)}\r\n @focus=${() => this.handleTabFocus(tab.id)}\r\n @blur=${this.handleTabBlur}\r\n >\r\n ${tab.icon\r\n ? html`<bp-icon name=${tab.icon} class=\"tab__icon\"></bp-icon>`\r\n : nothing}\r\n <span class=\"tab__label\">${tab.label}</span>\r\n ${tab.closable\r\n ? html`\r\n <button\r\n class=\"tab__close\"\r\n part=\"tab-close\"\r\n aria-label=\"Close ${tab.label}\"\r\n @click=${(e: Event) => this.handleTabClose(e, tab.id)}\r\n @keydown=${(e: KeyboardEvent) => e.stopPropagation()}\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <path d=\"M18 6L6 18M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n `\r\n : nothing}\r\n </button>\r\n `;\r\n }\r\n\r\n render() {\r\n const containerClasses = {\r\n tabs: true,\r\n [`tabs--${this.size}`]: true,\r\n [`tabs--${this.variant}`]: true,\r\n [`tabs--${this.placement}`]: true,\r\n 'tabs--disabled': this.disabled,\r\n };\r\n\r\n const isVertical = this.placement === 'start' || this.placement === 'end';\r\n\r\n return html`\r\n <div\r\n class=${classMap(containerClasses)}\r\n part=\"tabs\"\r\n aria-orientation=${isVertical ? 'vertical' : 'horizontal'}\r\n >\r\n <div class=\"tablist\" part=\"tablist\" role=\"tablist\">\r\n ${repeat(\r\n this.tabs,\r\n (tab) => tab.id,\r\n (tab) => this.renderTab(tab)\r\n )}\r\n </div>\r\n <div class=\"panels\" part=\"panels\">\r\n <slot @slotchange=${this.handleSlotChange}></slot>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\n/**\r\n * A tab panel component for use with bp-tabs.\r\n *\r\n * @element bp-tab-panel\r\n *\r\n * @property {string} tabId - The ID that links this panel to its tab\r\n *\r\n * @slot - Content of the panel\r\n *\r\n * @csspart panel - The panel container\r\n */\r\n@customElement('bp-tab-panel')\r\nexport class BpTabPanel extends LitElement {\r\n /**\r\n * The ID that links this panel to its tab\r\n */\r\n @property({ type: String, attribute: 'tab-id', reflect: true })\r\n declare tabId: string;\r\n\r\n constructor() {\r\n super();\r\n this.tabId = '';\r\n }\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n this.setAttribute('role', 'tabpanel');\r\n this.setAttribute('data-tab-id', this.tabId);\r\n }\r\n\r\n updated(changedProperties: Map<string, unknown>): void {\r\n super.updated(changedProperties);\r\n if (changedProperties.has('tabId')) {\r\n this.setAttribute('data-tab-id', this.tabId);\r\n this.id = `panel-${this.tabId}`;\r\n this.setAttribute('aria-labelledby', `tab-${this.tabId}`);\r\n }\r\n }\r\n\r\n render() {\r\n return html`<slot></slot>`;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-tabs': BpTabs;\r\n 'bp-tab-panel': BpTabPanel;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const breadcrumbStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: block;\r\n }\r\n\r\n /* Separator variants - set custom properties on host to cross shadow boundaries */\r\n :host([separator='slash']) {\r\n --bp-breadcrumb-separator-content: '/';\r\n }\r\n\r\n :host([separator='chevron']) {\r\n --bp-breadcrumb-separator-content: '›';\r\n --bp-breadcrumb-separator-size: 1.2em;\r\n }\r\n\r\n :host([separator='arrow']) {\r\n --bp-breadcrumb-separator-content: '→';\r\n }\r\n\r\n :host([separator='dot']) {\r\n --bp-breadcrumb-separator-content: '•';\r\n --bp-breadcrumb-separator-size: var(--bp-font-size-lg);\r\n }\r\n\r\n /* Size variants - set custom properties on host to cross shadow boundaries */\r\n :host([size='sm']) {\r\n --bp-breadcrumb-font-size: var(--bp-font-size-sm);\r\n --bp-breadcrumb-line-height: var(--bp-line-height-tight);\r\n }\r\n\r\n :host([size='md']) {\r\n --bp-breadcrumb-font-size: var(--bp-font-size-base);\r\n --bp-breadcrumb-line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n :host([size='lg']) {\r\n --bp-breadcrumb-font-size: var(--bp-font-size-lg);\r\n --bp-breadcrumb-line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n .breadcrumb {\r\n font-family: var(--bp-font-family);\r\n }\r\n\r\n .list {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n list-style: none;\r\n margin: 0;\r\n padding: 0;\r\n gap: 0;\r\n }\r\n\r\n .item {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 0;\r\n font-size: var(--bp-breadcrumb-font-size, var(--bp-font-size-base));\r\n line-height: var(--bp-breadcrumb-line-height, var(--bp-line-height-normal));\r\n }\r\n\r\n .item__icon {\r\n flex-shrink: 0;\r\n }\r\n\r\n .item__label {\r\n white-space: nowrap;\r\n }\r\n\r\n /* Link styles */\r\n .link {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-xs);\r\n color: var(--bp-color-text-muted);\r\n text-decoration: none;\r\n transition: color var(--bp-transition-fast);\r\n outline: none;\r\n border-radius: var(--bp-border-radius);\r\n }\r\n\r\n .link:hover {\r\n color: var(--bp-color-primary);\r\n text-decoration: underline;\r\n }\r\n\r\n .link:active {\r\n transform: translateY(1px);\r\n }\r\n\r\n .link:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n /* Text (non-link) styles */\r\n .text {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-xs);\r\n color: var(--bp-color-text);\r\n font-weight: var(--bp-font-weight-medium);\r\n }\r\n\r\n /* Current item */\r\n .item--current .text {\r\n color: var(--bp-color-text);\r\n }\r\n\r\n /* Separator styles */\r\n .separator {\r\n display: inline-flex;\r\n align-items: center;\r\n color: var(--bp-color-text-muted);\r\n margin: 0 var(--bp-spacing-2xs);\r\n user-select: none;\r\n }\r\n\r\n /* Hide separator on last item */\r\n :host(:last-of-type) .separator {\r\n display: none;\r\n }\r\n\r\n /* Separator content via ::before - uses custom properties from parent */\r\n .separator::before {\r\n content: var(--bp-breadcrumb-separator-content, '/');\r\n font-size: var(--bp-breadcrumb-separator-size, inherit);\r\n }\r\n\r\n .separator__icon {\r\n width: var(--bp-spacing-md);\r\n height: var(--bp-spacing-md);\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .separator__icon--dot {\r\n font-size: var(--bp-font-size-lg);\r\n line-height: 1;\r\n }\r\n\r\n /* Ellipsis button */\r\n .ellipsis-button {\r\n appearance: none;\r\n border: none;\r\n background: transparent;\r\n padding: var(--bp-spacing-xs);\r\n margin: calc(-1 * var(--bp-spacing-xs));\r\n cursor: pointer;\r\n color: var(--bp-color-text-muted);\r\n border-radius: var(--bp-border-radius);\r\n transition: all var(--bp-transition-fast);\r\n outline: none;\r\n }\r\n\r\n .ellipsis-button:hover {\r\n color: var(--bp-color-primary);\r\n background: var(--bp-color-surface);\r\n }\r\n\r\n .ellipsis-button:active {\r\n transform: scale(0.95);\r\n }\r\n\r\n .ellipsis-button:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .ellipsis-dots {\r\n font-size: var(--bp-font-size-base);\r\n letter-spacing: var(--bp-spacing-0-5);\r\n }\r\n\r\n /* Sizes */\r\n .breadcrumb--sm {\r\n font-size: var(--bp-font-size-sm);\r\n line-height: var(--bp-line-height-tight);\r\n }\r\n\r\n .breadcrumb--sm .separator__icon {\r\n width: var(--bp-spacing-sm);\r\n height: var(--bp-spacing-sm);\r\n }\r\n\r\n .breadcrumb--md {\r\n font-size: var(--bp-font-size-base);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n .breadcrumb--md .separator__icon {\r\n width: var(--bp-spacing-md);\r\n height: var(--bp-spacing-md);\r\n }\r\n\r\n .breadcrumb--lg {\r\n font-size: var(--bp-font-size-lg);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n .breadcrumb--lg .separator__icon {\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n }\r\n\r\n /* Separator variants */\r\n .breadcrumb--slash .separator__icon {\r\n font-size: inherit;\r\n }\r\n\r\n .breadcrumb--dot .separator__icon {\r\n font-size: inherit;\r\n }\r\n\r\n /* Item ellipsis */\r\n .item--ellipsis {\r\n display: inline-flex;\r\n }\r\n\r\n /* Collapse on mobile - handled via maxItems property instead of CSS */\r\n .breadcrumb--collapse-mobile {\r\n /* Reserved for future container query support */\r\n }\r\n`;\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport { breadcrumbStyles } from './breadcrumb.style.js';\r\nimport type { IconName } from '../icon/icons/registry.generated.js';\r\n\r\nexport type BreadcrumbSize = 'sm' | 'md' | 'lg';\r\nexport type BreadcrumbSeparator = 'slash' | 'chevron' | 'arrow' | 'dot';\r\n\r\n/**\r\n * Breadcrumb item interface for programmatic configuration\r\n */\r\nexport interface BreadcrumbItem {\r\n /** Display label for the breadcrumb item */\r\n label: string;\r\n /** URL for the breadcrumb link (omit for current page) */\r\n href?: string;\r\n /** Icon name to display before the label */\r\n icon?: IconName;\r\n /** Whether this is the current/active page */\r\n current?: boolean;\r\n}\r\n\r\n/**\r\n * A breadcrumb navigation component showing the user's location in a hierarchy.\r\n *\r\n * @element bp-breadcrumb\r\n *\r\n * @property {BreadcrumbItem[]} items - Array of breadcrumb items\r\n * @property {BreadcrumbSize} size - The size of the breadcrumb\r\n * @property {BreadcrumbSeparator} separator - The separator style between items\r\n * @property {string} ariaLabel - Accessible label for the navigation\r\n * @property {boolean} collapseOnMobile - Whether to collapse middle items on small screens\r\n * @property {number} maxItems - Maximum visible items before collapsing (0 = no limit)\r\n *\r\n * @slot - Default slot for custom breadcrumb items\r\n * @slot separator - Custom separator content\r\n *\r\n * @fires bp-breadcrumb-click - Fired when a breadcrumb item is clicked\r\n *\r\n * @csspart nav - The nav element wrapper\r\n * @csspart list - The ordered list element\r\n * @csspart item - Individual breadcrumb item\r\n * @csspart item-current - The current/active breadcrumb item\r\n * @csspart link - Breadcrumb link element\r\n * @csspart separator - Separator between items\r\n * @csspart ellipsis - The ellipsis button when items are collapsed\r\n */\r\n@customElement('bp-breadcrumb')\r\nexport class BpBreadcrumb extends LitElement {\r\n /**\r\n * Array of breadcrumb items\r\n */\r\n @property({ type: Array }) declare items: BreadcrumbItem[];\r\n\r\n /**\r\n * The size of the breadcrumb\r\n */\r\n @property({ type: String, reflect: true }) declare size: BreadcrumbSize;\r\n\r\n /**\r\n * The separator style between items\r\n */\r\n @property({ type: String, reflect: true })\r\n declare separator: BreadcrumbSeparator;\r\n\r\n /**\r\n * Accessible label for the navigation landmark\r\n */\r\n @property({ type: String, attribute: 'aria-label' })\r\n declare ariaLabel: string;\r\n\r\n /**\r\n * Whether to collapse middle items on small screens\r\n */\r\n @property({ type: Boolean, attribute: 'collapse-on-mobile' })\r\n declare collapseOnMobile: boolean;\r\n\r\n /**\r\n * Maximum visible items before collapsing (0 = no limit)\r\n */\r\n @property({ type: Number, attribute: 'max-items' }) declare maxItems: number;\r\n\r\n static styles = [breadcrumbStyles];\r\n\r\n constructor() {\r\n super();\r\n this.items = [];\r\n this.size = 'md';\r\n this.separator = 'slash';\r\n this.ariaLabel = 'Breadcrumb';\r\n this.collapseOnMobile = false;\r\n this.maxItems = 0;\r\n }\r\n\r\n private handleItemClick(\r\n _event: MouseEvent,\r\n item: BreadcrumbItem,\r\n index: number\r\n ) {\r\n // Don't prevent default for actual navigation\r\n this.dispatchEvent(\r\n new CustomEvent('bp-breadcrumb-click', {\r\n detail: { item, index },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleKeyDown(\r\n event: KeyboardEvent,\r\n item: BreadcrumbItem,\r\n index: number\r\n ) {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n if (!item.href) {\r\n event.preventDefault();\r\n }\r\n this.dispatchEvent(\r\n new CustomEvent('bp-breadcrumb-click', {\r\n detail: { item, index },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n private renderSeparator() {\r\n const separatorIcons = {\r\n slash: html`<span class=\"separator__icon\">/</span>`,\r\n chevron: html`\r\n <svg\r\n class=\"separator__icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <path d=\"M9 18l6-6-6-6\" />\r\n </svg>\r\n `,\r\n arrow: html`\r\n <svg\r\n class=\"separator__icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <path d=\"M5 12h14M12 5l7 7-7 7\" />\r\n </svg>\r\n `,\r\n dot: html`<span class=\"separator__icon separator__icon--dot\">•</span>`,\r\n };\r\n\r\n return html`\r\n <span class=\"separator\" part=\"separator\" aria-hidden=\"true\">\r\n <slot name=\"separator\">${separatorIcons[this.separator]}</slot>\r\n </span>\r\n `;\r\n }\r\n\r\n private renderItem(item: BreadcrumbItem, index: number, isLast: boolean) {\r\n const isCurrent = item.current || isLast;\r\n const itemClasses = {\r\n item: true,\r\n 'item--current': isCurrent,\r\n };\r\n\r\n return html`\r\n <li\r\n class=${classMap(itemClasses)}\r\n part=\"item ${isCurrent ? 'item-current' : ''}\"\r\n >\r\n ${item.href && !isCurrent\r\n ? html`\r\n <a\r\n class=\"link\"\r\n part=\"link\"\r\n href=${item.href}\r\n @click=${(e: MouseEvent) =>\r\n this.handleItemClick(e, item, index)}\r\n @keydown=${(e: KeyboardEvent) =>\r\n this.handleKeyDown(e, item, index)}\r\n >\r\n ${item.icon\r\n ? html`<bp-icon\r\n name=${item.icon}\r\n class=\"item__icon\"\r\n ></bp-icon>`\r\n : nothing}\r\n <span class=\"item__label\">${item.label}</span>\r\n </a>\r\n `\r\n : html`\r\n <span\r\n class=\"text\"\r\n part=\"text\"\r\n aria-current=${ifDefined(isCurrent ? 'page' : undefined)}\r\n >\r\n ${item.icon\r\n ? html`<bp-icon\r\n name=${item.icon}\r\n class=\"item__icon\"\r\n ></bp-icon>`\r\n : nothing}\r\n <span class=\"item__label\">${item.label}</span>\r\n </span>\r\n `}\r\n ${!isLast ? this.renderSeparator() : nothing}\r\n </li>\r\n `;\r\n }\r\n\r\n private renderEllipsis(hiddenCount: number) {\r\n return html`\r\n <li class=\"item item--ellipsis\" part=\"item ellipsis\">\r\n <button\r\n class=\"ellipsis-button\"\r\n part=\"ellipsis-button\"\r\n aria-label=\"Show ${hiddenCount} more items\"\r\n title=\"Show ${hiddenCount} more items\"\r\n >\r\n <span class=\"ellipsis-dots\">…</span>\r\n </button>\r\n ${this.renderSeparator()}\r\n </li>\r\n `;\r\n }\r\n\r\n private getVisibleItems(): {\r\n items: BreadcrumbItem[];\r\n hiddenCount: number;\r\n showEllipsis: boolean;\r\n } {\r\n if (this.maxItems <= 0 || this.items.length <= this.maxItems) {\r\n return { items: this.items, hiddenCount: 0, showEllipsis: false };\r\n }\r\n\r\n // Show first item, ellipsis, and last (maxItems - 1) items\r\n const firstItem = this.items[0];\r\n const lastItems = this.items.slice(-(this.maxItems - 1));\r\n const hiddenCount = this.items.length - this.maxItems;\r\n\r\n return {\r\n items: [firstItem, ...lastItems],\r\n hiddenCount,\r\n showEllipsis: true,\r\n };\r\n }\r\n\r\n render() {\r\n const containerClasses = {\r\n breadcrumb: true,\r\n [`breadcrumb--${this.size}`]: true,\r\n [`breadcrumb--separator-${this.separator}`]: true,\r\n 'breadcrumb--collapse-mobile': this.collapseOnMobile,\r\n };\r\n\r\n const {\r\n items: visibleItems,\r\n hiddenCount,\r\n showEllipsis,\r\n } = this.getVisibleItems();\r\n\r\n // If using programmatic items\r\n if (this.items.length > 0) {\r\n return html`\r\n <nav\r\n class=${classMap(containerClasses)}\r\n part=\"nav\"\r\n aria-label=${this.ariaLabel}\r\n >\r\n <ol class=\"list\" part=\"list\">\r\n ${showEllipsis\r\n ? html`\r\n ${this.renderItem(visibleItems[0], 0, false)}\r\n ${this.renderEllipsis(hiddenCount)}\r\n ${repeat(\r\n visibleItems.slice(1),\r\n (_item, index) => index,\r\n (item, index) =>\r\n this.renderItem(\r\n item,\r\n this.items.length - visibleItems.length + 1 + index,\r\n index === visibleItems.length - 2\r\n )\r\n )}\r\n `\r\n : repeat(\r\n visibleItems,\r\n (_item, index) => index,\r\n (item, index) =>\r\n this.renderItem(\r\n item,\r\n index,\r\n index === visibleItems.length - 1\r\n )\r\n )}\r\n </ol>\r\n </nav>\r\n `;\r\n }\r\n\r\n // Slotted content fallback\r\n return html`\r\n <nav\r\n class=${classMap(containerClasses)}\r\n part=\"nav\"\r\n aria-label=${this.ariaLabel}\r\n >\r\n <ol class=\"list\" part=\"list\">\r\n <slot></slot>\r\n </ol>\r\n </nav>\r\n `;\r\n }\r\n}\r\n\r\n/**\r\n * A breadcrumb item component for use with bp-breadcrumb.\r\n *\r\n * @element bp-breadcrumb-item\r\n *\r\n * @property {string} href - URL for the breadcrumb link\r\n * @property {boolean} current - Whether this is the current page\r\n *\r\n * @slot - Content of the breadcrumb item\r\n *\r\n * @csspart item - The item container\r\n * @csspart link - The link element (when href is provided)\r\n */\r\n@customElement('bp-breadcrumb-item')\r\nexport class BpBreadcrumbItem extends LitElement {\r\n /**\r\n * URL for the breadcrumb link (omit for current page)\r\n */\r\n @property({ type: String }) declare href: string;\r\n\r\n /**\r\n * Whether this is the current/active page\r\n */\r\n @property({ type: Boolean, reflect: true }) declare current: boolean;\r\n\r\n static styles = [breadcrumbStyles];\r\n\r\n constructor() {\r\n super();\r\n this.href = '';\r\n this.current = false;\r\n }\r\n\r\n render() {\r\n const itemClasses = {\r\n item: true,\r\n 'item--current': this.current,\r\n };\r\n\r\n return html`\r\n <li\r\n class=${classMap(itemClasses)}\r\n part=\"item ${this.current ? 'item-current' : ''}\"\r\n >\r\n ${this.href && !this.current\r\n ? html`\r\n <a class=\"link\" part=\"link\" href=${this.href}>\r\n <slot></slot>\r\n </a>\r\n `\r\n : html`\r\n <span\r\n class=\"text\"\r\n part=\"text\"\r\n aria-current=${ifDefined(this.current ? 'page' : undefined)}\r\n >\r\n <slot></slot>\r\n </span>\r\n `}\r\n <span class=\"separator\" part=\"separator\" aria-hidden=\"true\"></span>\r\n </li>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-breadcrumb': BpBreadcrumb;\r\n 'bp-breadcrumb-item': BpBreadcrumbItem;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const paginationStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .pagination {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-sm);\r\n font-family: var(--bp-font-sans);\r\n }\r\n\r\n .pagination__button {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: var(--bp-spacing-10);\r\n height: var(--bp-spacing-10);\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n background-color: var(--bp-color-background);\r\n color: var(--bp-color-text);\r\n font-family: var(--bp-font-sans);\r\n font-size: var(--bp-font-size-base);\r\n font-weight: var(--bp-font-weight-medium);\r\n line-height: var(--bp-line-height-tight);\r\n cursor: pointer;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n border-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast),\r\n transform var(--bp-transition-fast);\r\n user-select: none;\r\n }\r\n\r\n .pagination__button:hover:not(:disabled) {\r\n background-color: var(--bp-color-surface);\r\n border-color: var(--bp-color-border-strong);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n .pagination__button:active:not(:disabled) {\r\n background-color: var(--bp-color-surface);\r\n border-color: var(--bp-color-border-strong);\r\n transform: translateY(1px) scale(0.98);\r\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\r\n }\r\n\r\n .pagination__button:focus-visible {\r\n outline: var(--bp-border-width) solid var(--bp-color-primary);\r\n outline-offset: var(--bp-spacing-0-5);\r\n }\r\n\r\n .pagination__button:disabled {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n }\r\n\r\n .pagination__button--active {\r\n background-color: var(--bp-color-primary);\r\n border-color: var(--bp-color-primary);\r\n color: var(--bp-color-text-inverse);\r\n font-weight: var(--bp-font-weight-semibold);\r\n }\r\n\r\n .pagination__button--active:hover:not(:disabled) {\r\n background-color: var(--bp-color-primary-hover);\r\n border-color: var(--bp-color-primary-hover);\r\n }\r\n\r\n .pagination__button--active:focus-visible {\r\n outline: 2px solid var(--bp-color-text-inverse);\r\n outline-offset: 2px;\r\n }\r\n\r\n /* Navigation buttons (first, last, prev, next) - ghost style for visual hierarchy */\r\n .pagination__button--first,\r\n .pagination__button--last,\r\n .pagination__button--prev,\r\n .pagination__button--next {\r\n color: var(--bp-color-text-muted);\r\n background-color: transparent;\r\n }\r\n\r\n .pagination__button--first:hover:not(:disabled),\r\n .pagination__button--last:hover:not(:disabled),\r\n .pagination__button--prev:hover:not(:disabled),\r\n .pagination__button--next:hover:not(:disabled) {\r\n color: var(--bp-color-text);\r\n background-color: var(--bp-color-surface);\r\n }\r\n\r\n .pagination__ellipsis {\r\n display: inline-flex;\r\n align-items: end;\r\n justify-content: center;\r\n min-width: var(--bp-spacing-2xl);\r\n height: var(--bp-spacing-2xl);\r\n color: var(--bp-color-text-muted);\r\n font-size: var(--bp-font-size-base);\r\n user-select: none;\r\n }\r\n\r\n .pagination__info {\r\n margin-left: var(--bp-spacing-lg);\r\n color: var(--bp-color-text-muted);\r\n font-size: var(--bp-font-size-sm);\r\n white-space: nowrap;\r\n }\r\n\r\n /* Sizes */\r\n .pagination--sm .pagination__button {\r\n min-width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n padding: var(--bp-spacing-2xs) var(--bp-spacing-xs);\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .pagination--sm .pagination__ellipsis {\r\n min-width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .pagination--sm .pagination__info {\r\n font-size: var(--bp-font-size-xs);\r\n }\r\n\r\n .pagination--lg .pagination__button {\r\n min-width: var(--bp-spacing-2xl);\r\n height: var(--bp-spacing-2xl);\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .pagination--lg .pagination__ellipsis {\r\n min-width: var(--bp-spacing-2xl);\r\n height: var(--bp-spacing-2xl);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .pagination--lg .pagination__info {\r\n font-size: var(--bp-font-size-base);\r\n }\r\n\r\n .pagination--lg {\r\n gap: var(--bp-spacing-md);\r\n }\r\n\r\n /* Touch target size: ensure 44x44px minimum on touch devices */\r\n @media (pointer: coarse) {\r\n .pagination__button {\r\n min-width: 44px;\r\n min-height: 44px;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { paginationStyles } from './pagination.style.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\n\r\n/**\r\n * A pagination component for navigating through multiple pages of content.\r\n *\r\n * @fires bp-page-change - Dispatched when the page changes\r\n *\r\n * @slot - Default slot for custom content (not typically used)\r\n *\r\n * @csspart container - The main pagination container\r\n * @csspart button - All pagination buttons\r\n * @csspart button-first - The first page button\r\n * @csspart button-prev - The previous page button\r\n * @csspart button-next - The next page button\r\n * @csspart button-last - The last page button\r\n * @csspart button-page - Individual page number buttons\r\n * @csspart button-ellipsis - Ellipsis indicators\r\n * @csspart info - The page info text\r\n */\r\n@customElement('bp-pagination')\r\nexport class BpPagination extends LitElement {\r\n /** Current page number (1-indexed) */\r\n @property({ type: Number, attribute: 'current-page' })\r\n declare currentPage: number;\r\n\r\n /** Total number of pages */\r\n @property({ type: Number, attribute: 'total-pages' })\r\n declare totalPages: number;\r\n\r\n /** Number of page buttons to show around the current page */\r\n @property({ type: Number, attribute: 'sibling-count' })\r\n declare siblingCount: number;\r\n\r\n /** Number of page buttons to show at the start and end */\r\n @property({ type: Number, attribute: 'boundary-count' })\r\n declare boundaryCount: number;\r\n\r\n /** Show first/last page buttons */\r\n @property({\r\n converter: booleanConverter,\r\n reflect: true,\r\n attribute: 'show-first-last',\r\n })\r\n declare showFirstLast: boolean;\r\n\r\n /** Show previous/next page buttons */\r\n @property({\r\n converter: booleanConverter,\r\n reflect: true,\r\n attribute: 'show-prev-next',\r\n })\r\n declare showPrevNext: boolean;\r\n\r\n /** Show page info text (e.g., \"Page 1 of 10\") */\r\n @property({ type: Boolean, attribute: 'show-info' })\r\n declare showInfo: boolean;\r\n\r\n /** Disable all pagination controls */\r\n @property({ type: Boolean }) declare disabled: boolean;\r\n\r\n /** Size variant */\r\n @property({ type: String }) declare size: 'sm' | 'md' | 'lg';\r\n\r\n static styles = [paginationStyles];\r\n\r\n constructor() {\r\n super();\r\n this.currentPage = 1;\r\n this.totalPages = 1;\r\n this.siblingCount = 1;\r\n this.boundaryCount = 1;\r\n this.showFirstLast = true;\r\n this.showPrevNext = true;\r\n this.showInfo = false;\r\n this.disabled = false;\r\n this.size = 'md';\r\n }\r\n\r\n private handlePageChange(newPage: number) {\r\n if (\r\n this.disabled ||\r\n newPage < 1 ||\r\n newPage > this.totalPages ||\r\n newPage === this.currentPage\r\n ) {\r\n return;\r\n }\r\n\r\n this.currentPage = newPage;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-page-change', {\r\n detail: { page: newPage },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private getPageNumbers(): (number | 'ellipsis')[] {\r\n const pages: (number | 'ellipsis')[] = [];\r\n const totalCount = this.totalPages;\r\n const currentPageNum = this.currentPage;\r\n const siblingCountNum = this.siblingCount;\r\n const boundaryCountNum = this.boundaryCount;\r\n\r\n // Calculate range around current page\r\n const startPage = Math.max(1, currentPageNum - siblingCountNum);\r\n const endPage = Math.min(totalCount, currentPageNum + siblingCountNum);\r\n\r\n // Add boundary pages at start\r\n for (let i = 1; i <= Math.min(boundaryCountNum, totalCount); i++) {\r\n pages.push(i);\r\n }\r\n\r\n // Add ellipsis after boundary if needed\r\n if (startPage > boundaryCountNum + 1) {\r\n pages.push('ellipsis');\r\n }\r\n\r\n // Add pages around current page\r\n for (let i = startPage; i <= endPage; i++) {\r\n if (i > boundaryCountNum && i <= totalCount - boundaryCountNum) {\r\n pages.push(i);\r\n }\r\n }\r\n\r\n // Add ellipsis before end boundary if needed\r\n if (endPage < totalCount - boundaryCountNum) {\r\n pages.push('ellipsis');\r\n }\r\n\r\n // Add boundary pages at end\r\n for (\r\n let i = Math.max(totalCount - boundaryCountNum + 1, boundaryCountNum + 1);\r\n i <= totalCount;\r\n i++\r\n ) {\r\n if (!pages.includes(i)) {\r\n pages.push(i);\r\n }\r\n }\r\n\r\n // Remove duplicates while preserving order\r\n return pages.filter((page, index, self) => self.indexOf(page) === index);\r\n }\r\n\r\n render() {\r\n const pageNumbers = this.getPageNumbers();\r\n const isFirstPage = this.currentPage === 1;\r\n const isLastPage = this.currentPage === this.totalPages;\r\n\r\n return html`\r\n <nav\r\n class=\"pagination pagination--${this.size}\"\r\n part=\"container\"\r\n aria-label=\"Pagination\"\r\n >\r\n ${this.showFirstLast\r\n ? html`\r\n <button\r\n class=\"pagination__button pagination__button--first\"\r\n part=\"button button-first\"\r\n ?disabled=${this.disabled || isFirstPage}\r\n @click=${() => this.handlePageChange(1)}\r\n aria-label=\"First page\"\r\n >\r\n «\r\n </button>\r\n `\r\n : ''}\r\n ${this.showPrevNext\r\n ? html`\r\n <button\r\n class=\"pagination__button pagination__button--prev\"\r\n part=\"button button-prev\"\r\n ?disabled=${this.disabled || isFirstPage}\r\n @click=${() => this.handlePageChange(this.currentPage - 1)}\r\n aria-label=\"Previous page\"\r\n >\r\n ‹\r\n </button>\r\n `\r\n : ''}\r\n ${repeat(\r\n pageNumbers,\r\n (page, index) => (page === 'ellipsis' ? `ellipsis-${index}` : page),\r\n (page) =>\r\n page === 'ellipsis'\r\n ? html`\r\n <span\r\n class=\"pagination__ellipsis\"\r\n part=\"button-ellipsis\"\r\n aria-hidden=\"true\"\r\n >…</span\r\n >\r\n `\r\n : html`\r\n <button\r\n class=\"pagination__button pagination__button--page ${page ===\r\n this.currentPage\r\n ? 'pagination__button--active'\r\n : ''}\"\r\n part=\"button button-page\"\r\n ?disabled=${this.disabled}\r\n @click=${() => this.handlePageChange(page)}\r\n aria-label=\"Page ${page}\"\r\n aria-current=${page === this.currentPage ? 'page' : 'false'}\r\n >\r\n ${page}\r\n </button>\r\n `\r\n )}\r\n ${this.showPrevNext\r\n ? html`\r\n <button\r\n class=\"pagination__button pagination__button--next\"\r\n part=\"button button-next\"\r\n ?disabled=${this.disabled || isLastPage}\r\n @click=${() => this.handlePageChange(this.currentPage + 1)}\r\n aria-label=\"Next page\"\r\n >\r\n ›\r\n </button>\r\n `\r\n : ''}\r\n ${this.showFirstLast\r\n ? html`\r\n <button\r\n class=\"pagination__button pagination__button--last\"\r\n part=\"button button-last\"\r\n ?disabled=${this.disabled || isLastPage}\r\n @click=${() => this.handlePageChange(this.totalPages)}\r\n aria-label=\"Last page\"\r\n >\r\n »\r\n </button>\r\n `\r\n : ''}\r\n ${this.showInfo\r\n ? html`\r\n <span class=\"pagination__info\" part=\"info\" aria-live=\"polite\">\r\n Page ${this.currentPage} of ${this.totalPages}\r\n </span>\r\n `\r\n : ''}\r\n </nav>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-pagination': BpPagination;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const menuStyles = css`\n /* Base styles - Menu Container */\n :host {\n display: block;\n }\n\n .menu {\n display: flex;\n flex-direction: column;\n min-width: 200px;\n padding: var(--bp-spacing-xs) 0;\n margin: 0;\n background-color: var(--bp-color-surface-elevated);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n box-shadow: var(--bp-shadow-lg);\n font-family: var(--bp-font-sans);\n list-style: none;\n outline: none;\n }\n\n /* Menu Sizes */\n .menu--sm {\n min-width: 160px;\n }\n\n .menu--lg {\n min-width: 280px;\n }\n\n /* Menu Item Base */\n .menu-item {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-sm);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n margin: 0 var(--bp-spacing-xs);\n min-height: 40px;\n border-radius: var(--bp-border-radius-sm);\n background-color: transparent;\n color: var(--bp-color-text);\n font-family: var(--bp-font-sans);\n font-size: var(--bp-font-size-base);\n font-weight: var(--bp-font-weight-normal);\n line-height: var(--bp-line-height-normal);\n text-decoration: none;\n cursor: pointer;\n transition:\n background-color var(--bp-transition-fast),\n transform var(--bp-transition-fast);\n user-select: none;\n outline: none;\n }\n\n /* Menu Item Sizes */\n .menu-item--sm {\n padding: var(--bp-spacing-sm) var(--bp-spacing-sm);\n min-height: 36px;\n font-size: var(--bp-font-size-sm);\n }\n\n .menu-item--lg {\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n min-height: 48px;\n font-size: var(--bp-font-size-lg);\n }\n\n /* Menu Item States */\n .menu-item:hover:not(.menu-item--disabled) {\n background-color: var(--bp-color-surface);\n }\n\n .menu-item:focus-visible:not(.menu-item--disabled) {\n background-color: var(--bp-color-surface);\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-primary);\n outline-offset: var(--bp-focus-offset);\n }\n\n .menu-item:active:not(.menu-item--disabled) {\n background-color: var(--bp-color-surface);\n transform: scale(0.98);\n }\n\n .menu-item--selected {\n background-color: var(--bp-color-surface);\n font-weight: var(--bp-font-weight-medium);\n }\n\n .menu-item--selected::before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n background-color: var(--bp-color-primary);\n border-radius: 0 var(--bp-border-radius-sm) var(--bp-border-radius-sm) 0;\n }\n\n .menu-item--disabled {\n color: var(--bp-color-text-muted);\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n /* Menu Item Parts */\n .menu-item__prefix {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n\n .menu-item__prefix:empty {\n display: none;\n }\n\n .menu-item__label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .menu-item__suffix {\n display: inline-flex;\n align-items: center;\n gap: var(--bp-spacing-sm);\n flex-shrink: 0;\n margin-left: auto;\n }\n\n .menu-item__suffix:empty {\n display: none;\n }\n\n .menu-item__shortcut {\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-sm);\n font-family: var(--bp-font-mono);\n padding: 2px var(--bp-spacing-xs);\n background-color: var(--bp-color-surface);\n border-radius: var(--bp-border-radius-sm);\n border: var(--bp-border-width) solid var(--bp-color-border);\n }\n\n .menu-item__arrow {\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-lg);\n line-height: 1;\n }\n\n /* Menu Divider */\n .menu-divider {\n height: var(--bp-border-width);\n margin: var(--bp-spacing-sm) var(--bp-spacing-sm);\n background-color: var(--bp-color-border);\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { menuStyles } from './menu.style.js';\r\n\r\nexport type MenuSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * A menu container component for displaying a list of actions or options.\r\n *\r\n * @fires bp-menu-select - Dispatched when a menu item is selected\r\n *\r\n * @slot - Menu items (bp-menu-item, bp-menu-divider)\r\n *\r\n * @csspart container - The menu container element\r\n */\r\n@customElement('bp-menu')\r\nexport class BpMenu extends LitElement {\r\n /** Size variant for all menu items */\r\n @property({ type: String }) declare size: MenuSize;\r\n\r\n /** Current focused item index for keyboard navigation */\r\n @state() private focusedIndex = -1;\r\n\r\n static styles = [menuStyles];\r\n\r\n constructor() {\r\n super();\r\n this.size = 'md';\r\n }\r\n\r\n private handleFocusIn = (event: FocusEvent) => {\r\n const target = event.target as BpMenuItem;\r\n const items = this.menuItems;\r\n this.focusedIndex = items.indexOf(target);\r\n };\r\n\r\n connectedCallback() {\r\n super.connectedCallback();\r\n this.addEventListener('focusin', this.handleFocusIn);\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.removeEventListener('focusin', this.handleFocusIn);\r\n }\r\n\r\n /**\r\n * Gets all non-divider menu items from the default slot.\r\n * @returns Array of bp-menu-item elements\r\n */\r\n private get menuItems(): BpMenuItem[] {\r\n const slot = this.shadowRoot?.querySelector('slot');\r\n if (!slot) return [];\r\n return slot\r\n .assignedElements()\r\n .filter((el): el is BpMenuItem => el.tagName === 'BP-MENU-ITEM');\r\n }\r\n\r\n /**\r\n * Handles keyboard navigation within the menu.\r\n * Supports ArrowDown, ArrowUp, Home, and End keys.\r\n */\r\n private handleKeyDown(event: KeyboardEvent) {\r\n const items = this.menuItems.filter((item) => !item.disabled);\r\n if (items.length === 0) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.focusedIndex = Math.min(this.focusedIndex + 1, items.length - 1);\r\n items[this.focusedIndex]?.focus();\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\r\n items[this.focusedIndex]?.focus();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this.focusedIndex = 0;\r\n items[0]?.focus();\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this.focusedIndex = items.length - 1;\r\n items[items.length - 1]?.focus();\r\n break;\r\n }\r\n }\r\n\r\n private handleSlotChange() {\r\n // Update size on all menu items\r\n this.menuItems.forEach((item) => {\r\n item.size = this.size;\r\n });\r\n }\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"menu menu--${this.size}\"\r\n part=\"container\"\r\n role=\"menu\"\r\n @keydown=${this.handleKeyDown}\r\n >\r\n <slot @slotchange=${this.handleSlotChange}></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\n/**\r\n * A menu item component for use within bp-menu.\r\n *\r\n * @fires bp-select - Dispatched when the item is selected\r\n *\r\n * @slot - Item label content\r\n * @slot prefix - Content before the label (typically an icon)\r\n * @slot suffix - Content after the label (typically a shortcut or arrow)\r\n *\r\n * @csspart base - The menu item container\r\n * @csspart prefix - The prefix slot container\r\n * @csspart label - The label container\r\n * @csspart suffix - The suffix slot container\r\n */\r\n@customElement('bp-menu-item')\r\nexport class BpMenuItem extends LitElement {\r\n /** The value associated with this menu item */\r\n @property({ type: String }) declare value: string;\r\n\r\n /** Whether the item is disabled */\r\n @property({ type: Boolean }) declare disabled: boolean;\r\n\r\n /** Whether the item is selected/active */\r\n @property({ type: Boolean }) declare selected: boolean;\r\n\r\n /** Whether the item has a submenu */\r\n @property({ type: Boolean, attribute: 'has-submenu' })\r\n declare hasSubmenu: boolean;\r\n\r\n /** Size variant (inherited from parent menu) */\r\n @property({ type: String }) declare size: MenuSize;\r\n\r\n /** Keyboard shortcut hint to display */\r\n @property({ type: String }) declare shortcut: string;\r\n\r\n static styles = [menuStyles];\r\n\r\n constructor() {\r\n super();\r\n this.value = '';\r\n this.disabled = false;\r\n this.selected = false;\r\n this.hasSubmenu = false;\r\n this.size = 'md';\r\n this.shortcut = '';\r\n }\r\n\r\n focus() {\r\n const button = this.shadowRoot?.querySelector('.menu-item') as HTMLElement;\r\n button?.focus();\r\n }\r\n\r\n private handleActivate() {\r\n if (this.disabled) return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-menu-select', {\r\n detail: { value: this.value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n private handleClick(event: MouseEvent) {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return;\r\n }\r\n\r\n this.handleActivate();\r\n }\r\n\r\n private handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.handleActivate();\r\n }\r\n }\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"menu-item menu-item--${this.size} ${this.disabled\r\n ? 'menu-item--disabled'\r\n : ''} ${this.selected ? 'menu-item--selected' : ''}\"\r\n part=\"base\"\r\n role=\"menuitem\"\r\n tabindex=${this.disabled ? -1 : 0}\r\n aria-disabled=${this.disabled}\r\n aria-current=${this.selected ? 'page' : 'false'}\r\n @click=${this.handleClick}\r\n @keydown=${this.handleKeyDown}\r\n >\r\n <span class=\"menu-item__prefix\" part=\"prefix\">\r\n <slot name=\"prefix\"></slot>\r\n </span>\r\n <span class=\"menu-item__label\" part=\"label\">\r\n <slot></slot>\r\n </span>\r\n <span class=\"menu-item__suffix\" part=\"suffix\">\r\n ${this.shortcut\r\n ? html`<span class=\"menu-item__shortcut\">${this.shortcut}</span>`\r\n : nothing}\r\n <slot name=\"suffix\"></slot>\r\n ${this.hasSubmenu\r\n ? html`<span class=\"menu-item__arrow\">›</span>`\r\n : nothing}\r\n </span>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\n/**\r\n * A divider for visually separating menu items.\r\n *\r\n * @csspart divider - The divider element\r\n */\r\n@customElement('bp-menu-divider')\r\nexport class BpMenuDivider extends LitElement {\r\n static styles = [menuStyles];\r\n\r\n render() {\r\n return html`<div\r\n class=\"menu-divider\"\r\n part=\"divider\"\r\n role=\"separator\"\r\n ></div>`;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-menu': BpMenu;\r\n 'bp-menu-item': BpMenuItem;\r\n 'bp-menu-divider': BpMenuDivider;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const dropdownStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n position: relative;\r\n }\r\n\r\n .dropdown {\r\n position: relative;\r\n display: inline-block;\r\n }\r\n\r\n /* Trigger */\r\n .dropdown__trigger {\r\n display: inline-flex;\r\n align-items: center;\r\n cursor: pointer;\r\n outline: none;\r\n user-select: none;\r\n }\r\n\r\n .dropdown__trigger:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n border-radius: var(--bp-border-radius-sm);\r\n }\r\n\r\n /* Panel */\r\n .dropdown__panel {\r\n position: absolute;\r\n z-index: 1000; /* Overlay layer - above page content, below modals */\r\n min-width: 200px;\r\n background-color: var(--bp-color-surface-elevated);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-lg);\r\n box-shadow: var(--bp-shadow-lg);\r\n padding: var(--bp-spacing-sm);\r\n opacity: 0;\r\n will-change: opacity, transform;\r\n transition:\r\n opacity var(--bp-transition-fast) var(--bp-ease-out),\r\n transform var(--bp-transition-fast) var(--bp-ease-out);\r\n contain: layout style;\r\n }\r\n\r\n /* Placement: Bottom variants */\r\n .dropdown__panel--bottom-start {\r\n top: 100%;\r\n left: 0;\r\n margin-top: var(--dropdown-distance, 4px);\r\n transform: translateY(-8px);\r\n }\r\n\r\n .dropdown__panel--bottom-start.dropdown__panel--open {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n\r\n .dropdown__panel--bottom {\r\n top: 100%;\r\n left: 50%;\r\n transform: translateX(-50%) translateY(-8px);\r\n margin-top: var(--dropdown-distance, 4px);\r\n }\r\n\r\n .dropdown__panel--bottom.dropdown__panel--open {\r\n opacity: 1;\r\n transform: translateX(-50%) translateY(0);\r\n }\r\n\r\n .dropdown__panel--bottom-end {\r\n top: 100%;\r\n right: 0;\r\n margin-top: var(--dropdown-distance, 4px);\r\n transform: translateY(-8px);\r\n }\r\n\r\n .dropdown__panel--bottom-end.dropdown__panel--open {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n\r\n /* Placement: Top variants */\r\n .dropdown__panel--top-start {\r\n bottom: 100%;\r\n left: 0;\r\n margin-bottom: var(--dropdown-distance, 4px);\r\n transform: translateY(8px);\r\n }\r\n\r\n .dropdown__panel--top-start.dropdown__panel--open {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n\r\n .dropdown__panel--top {\r\n bottom: 100%;\r\n left: 50%;\r\n transform: translateX(-50%) translateY(8px);\r\n margin-bottom: var(--dropdown-distance, 4px);\r\n }\r\n\r\n .dropdown__panel--top.dropdown__panel--open {\r\n opacity: 1;\r\n transform: translateX(-50%) translateY(0);\r\n }\r\n\r\n .dropdown__panel--top-end {\r\n bottom: 100%;\r\n right: 0;\r\n margin-bottom: var(--dropdown-distance, 4px);\r\n transform: translateY(8px);\r\n }\r\n\r\n .dropdown__panel--top-end.dropdown__panel--open {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n\r\n /* Placement: Side variants */\r\n .dropdown__panel--left {\r\n right: 100%;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n margin-right: var(--dropdown-distance, 4px);\r\n }\r\n\r\n .dropdown__panel--left.dropdown__panel--open {\r\n opacity: 1;\r\n }\r\n\r\n .dropdown__panel--right {\r\n left: 100%;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n margin-left: var(--dropdown-distance, 4px);\r\n }\r\n\r\n .dropdown__panel--right.dropdown__panel--open {\r\n opacity: 1;\r\n }\r\n\r\n /* Arrow */\r\n .dropdown__arrow {\r\n position: absolute;\r\n width: 12px;\r\n height: 12px;\r\n background-color: var(--bp-color-surface-elevated);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n transform: rotate(45deg);\r\n border-bottom: none;\r\n border-right: none;\r\n }\r\n\r\n /* Arrow positioning: Bottom variants */\r\n .dropdown__panel--bottom .dropdown__arrow {\r\n top: -7px;\r\n left: 50%;\r\n margin-left: -6px;\r\n }\r\n\r\n .dropdown__panel--bottom-start .dropdown__arrow {\r\n top: -7px;\r\n left: 16px;\r\n }\r\n\r\n .dropdown__panel--bottom-end .dropdown__arrow {\r\n top: -7px;\r\n right: 16px;\r\n }\r\n\r\n /* Arrow positioning: Top variants */\r\n .dropdown__panel--top .dropdown__arrow {\r\n bottom: -7px;\r\n left: 50%;\r\n margin-left: -6px;\r\n transform: rotate(225deg);\r\n }\r\n\r\n .dropdown__panel--top-start .dropdown__arrow {\r\n bottom: -7px;\r\n left: 16px;\r\n transform: rotate(225deg);\r\n }\r\n\r\n .dropdown__panel--top-end .dropdown__arrow {\r\n bottom: -7px;\r\n right: 16px;\r\n transform: rotate(225deg);\r\n }\r\n\r\n /* Arrow positioning: Side variants */\r\n .dropdown__panel--left .dropdown__arrow {\r\n right: -7px;\r\n top: 50%;\r\n margin-top: -6px;\r\n transform: rotate(135deg);\r\n }\r\n\r\n .dropdown__panel--right .dropdown__arrow {\r\n left: -7px;\r\n top: 50%;\r\n margin-top: -6px;\r\n transform: rotate(-45deg);\r\n }\r\n\r\n /* Disabled state */\r\n .dropdown--disabled .dropdown__trigger {\r\n cursor: not-allowed;\r\n opacity: 0.6;\r\n filter: grayscale(50%);\r\n pointer-events: none;\r\n }\r\n`;\r\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { dropdownStyles } from './dropdown.style.js';\n\n/**\n * A generic dropdown component that displays content in a floating panel.\n *\n * @fires bp-show - Dispatched when the dropdown opens\n * @fires bp-hide - Dispatched when the dropdown closes\n * @fires bp-toggle - Dispatched when the dropdown toggles\n *\n * @slot - Default slot for the dropdown trigger element\n * @slot content - Content to display in the dropdown panel\n *\n * @csspart trigger - The trigger button container\n * @csspart panel - The dropdown panel container\n */\n@customElement('bp-dropdown')\nexport class BpDropdown extends LitElement {\n /** Whether the dropdown is open */\n @property({ type: Boolean, reflect: true }) declare open: boolean;\n\n /** Placement of the dropdown panel relative to the trigger */\n @property({ type: String }) declare placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'right';\n\n /** Whether the dropdown should close when clicking outside */\n @property({ type: Boolean }) declare closeOnClickOutside: boolean;\n\n /** Whether the dropdown should close when pressing Escape */\n @property({ type: Boolean }) declare closeOnEscape: boolean;\n\n /** Whether the dropdown should close when an item inside is clicked */\n @property({ type: Boolean }) declare closeOnSelect: boolean;\n\n /** Whether the dropdown is disabled */\n @property({ type: Boolean }) declare disabled: boolean;\n\n /** Distance in pixels between the trigger and the panel */\n @property({ type: Number }) declare distance: number;\n\n /** Whether to show an arrow pointing to the trigger */\n @property({ type: Boolean }) declare arrow: boolean;\n\n /** ARIA role for the dropdown panel */\n @property({ type: String }) declare panelRole: 'menu' | 'dialog' | 'listbox';\n\n @query('.dropdown__trigger') private triggerElement!: HTMLElement;\n\n private clickOutsideHandler = this.handleClickOutside.bind(this);\n private keydownHandler = this.handleKeydown.bind(this);\n\n static styles = [dropdownStyles];\n\n constructor() {\n super();\n this.open = false;\n this.placement = 'bottom-start';\n this.closeOnClickOutside = true;\n this.closeOnEscape = true;\n this.closeOnSelect = true;\n this.disabled = false;\n this.distance = 4;\n this.arrow = false;\n this.panelRole = 'menu';\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this.clickOutsideHandler, {\n passive: true,\n });\n document.addEventListener('keydown', this.keydownHandler);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this.clickOutsideHandler, {\n passive: true,\n } as EventListenerOptions);\n document.removeEventListener('keydown', this.keydownHandler);\n }\n\n updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n if (changedProperties.has('open') && this.open) {\n // Trigger width available via this.triggerElement.offsetWidth if needed\n }\n }\n\n /** Show the dropdown */\n show() {\n if (this.disabled || this.open) return;\n\n this.open = true;\n this.dispatchEvent(\n new CustomEvent('bp-show', { bubbles: true, composed: true })\n );\n this.dispatchEvent(\n new CustomEvent('bp-toggle', {\n detail: { open: true },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /** Hide the dropdown */\n hide() {\n if (!this.open) return;\n\n this.open = false;\n this.dispatchEvent(\n new CustomEvent('bp-hide', { bubbles: true, composed: true })\n );\n this.dispatchEvent(\n new CustomEvent('bp-toggle', {\n detail: { open: false },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /** Toggle the dropdown open/closed */\n toggle() {\n if (this.open) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Toggles dropdown when trigger is clicked.\n * Stops propagation to prevent immediate outside click detection.\n */\n private handleTriggerClick(event: MouseEvent) {\n event.stopPropagation();\n if (!this.disabled) {\n this.toggle();\n }\n }\n\n /**\n * Handles keyboard interaction on the trigger.\n * Enter/Space toggle, ArrowDown opens when closed.\n */\n private handleTriggerKeydown(event: KeyboardEvent) {\n if (this.disabled) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggle();\n } else if (event.key === 'ArrowDown' && !this.open) {\n event.preventDefault();\n this.show();\n }\n }\n\n /**\n * Closes the dropdown when user clicks outside the component.\n * Only runs if closeOnClickOutside is true and dropdown is open.\n */\n private handleClickOutside(event: MouseEvent) {\n if (!this.closeOnClickOutside || !this.open) return;\n\n const path = event.composedPath();\n if (!path.includes(this)) {\n this.hide();\n }\n }\n\n /**\n * Closes dropdown on Escape key and returns focus to trigger.\n * Only runs if closeOnEscape is true and dropdown is open.\n */\n private handleKeydown(event: KeyboardEvent) {\n if (!this.closeOnEscape || !this.open) return;\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.hide();\n this.triggerElement?.focus();\n }\n }\n\n /**\n * Handles clicks inside the panel to auto-close on item selection.\n * Detects menu items or elements with data-dropdown-close attribute.\n */\n private handlePanelClick(event: MouseEvent) {\n if (this.closeOnSelect) {\n // Check if clicked element or its parent is a menu item or similar\n const target = event.target as HTMLElement;\n const isSelectableItem =\n target.closest('bp-menu-item') ||\n target.closest('[data-dropdown-close]') ||\n target.hasAttribute('data-dropdown-close');\n\n if (isSelectableItem) {\n this.hide();\n }\n }\n }\n\n render() {\n return html`\n <div\n class=\"dropdown ${this.open ? 'dropdown--open' : ''} ${this.disabled\n ? 'dropdown--disabled'\n : ''}\"\n >\n <div\n class=\"dropdown__trigger\"\n part=\"trigger\"\n tabindex=${this.disabled ? -1 : 0}\n role=\"button\"\n aria-haspopup=\"true\"\n aria-expanded=${this.open}\n aria-disabled=${this.disabled}\n @click=${this.handleTriggerClick}\n @keydown=${this.handleTriggerKeydown}\n >\n <slot></slot>\n </div>\n ${this.open\n ? html`\n <div\n class=\"dropdown__panel dropdown__panel--${this.placement} ${this\n .open\n ? 'dropdown__panel--open'\n : ''}\"\n part=\"panel\"\n role=${this.panelRole}\n style=\"--dropdown-distance: ${this.distance}px;\"\n @click=${this.handlePanelClick}\n >\n ${this.arrow\n ? html`<div class=\"dropdown__arrow\"></div>`\n : nothing}\n <slot name=\"content\"></slot>\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-dropdown': BpDropdown;\n }\n}\n","import { css } from 'lit';\r\n\r\nexport const skeletonStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: block;\r\n }\r\n\r\n .skeleton {\r\n background-color: var(--bp-color-surface-subdued);\r\n overflow: hidden;\r\n position: relative;\r\n width: var(--skeleton-width, auto);\r\n height: var(--skeleton-height, auto);\r\n }\r\n\r\n /* Animation */\r\n .skeleton--animated::after {\r\n content: '';\r\n position: absolute;\r\n inset: 0;\r\n background: linear-gradient(\r\n 90deg,\r\n transparent 0%,\r\n rgba(255, 255, 255, 0.6) 50%,\r\n transparent 100%\r\n );\r\n animation: skeleton-shimmer 1.5s infinite linear;\r\n transform: translateX(-100%);\r\n }\r\n\r\n @keyframes skeleton-shimmer {\r\n 0% {\r\n transform: translateX(-100%);\r\n }\r\n 100% {\r\n transform: translateX(100%);\r\n }\r\n }\r\n\r\n /* Respect user motion preferences */\r\n @media (prefers-reduced-motion: reduce) {\r\n .skeleton--animated::after {\r\n animation: none;\r\n opacity: 0.7;\r\n }\r\n }\r\n\r\n /* Variants */\r\n .skeleton--text {\r\n border-radius: var(--bp-border-radius-sm);\r\n width: 100%;\r\n }\r\n\r\n .skeleton--circular {\r\n border-radius: var(--bp-border-radius-full);\r\n }\r\n\r\n .skeleton--rectangular {\r\n border-radius: 2px;\r\n }\r\n\r\n .skeleton--rounded {\r\n border-radius: var(--bp-border-radius-lg);\r\n }\r\n\r\n /* Sizes for text variant */\r\n .skeleton--text.skeleton--sm {\r\n height: var(--bp-spacing-3);\r\n }\r\n\r\n .skeleton--text.skeleton--md {\r\n height: var(--bp-spacing-4);\r\n }\r\n\r\n .skeleton--text.skeleton--lg {\r\n height: var(--bp-spacing-6);\r\n }\r\n\r\n /* Sizes for circular variant */\r\n .skeleton--circular.skeleton--sm {\r\n width: var(--bp-spacing-8);\r\n height: var(--bp-spacing-8);\r\n }\r\n\r\n .skeleton--circular.skeleton--md {\r\n width: var(--bp-spacing-10);\r\n height: var(--bp-spacing-10);\r\n }\r\n\r\n .skeleton--circular.skeleton--lg {\r\n width: var(--bp-spacing-12);\r\n height: var(--bp-spacing-12);\r\n }\r\n\r\n /* Sizes for rectangular/rounded variants */\r\n .skeleton--rectangular.skeleton--sm,\r\n .skeleton--rounded.skeleton--sm {\r\n height: var(--bp-spacing-10);\r\n }\r\n\r\n .skeleton--rectangular.skeleton--md,\r\n .skeleton--rounded.skeleton--md {\r\n height: var(--bp-spacing-16);\r\n }\r\n\r\n .skeleton--rectangular.skeleton--lg,\r\n .skeleton--rounded.skeleton--lg {\r\n height: var(--bp-spacing-24);\r\n }\r\n\r\n /* Text lines container */\r\n .skeleton__lines {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--bp-spacing-3);\r\n }\r\n\r\n /* Last line in multi-line text is shorter */\r\n .skeleton--last-line {\r\n width: 75%;\r\n }\r\n\r\n /* Static state (no animation) */\r\n :host([animated='false']) .skeleton::after,\r\n .skeleton:not(.skeleton--animated)::after {\r\n display: none;\r\n }\r\n\r\n :host([animated='false']) .skeleton,\r\n .skeleton:not(.skeleton--animated) {\r\n opacity: 0.6;\r\n }\r\n`;\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { skeletonStyles } from './skeleton.style.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\n\r\n/**\r\n * A skeleton loading placeholder that indicates content is loading.\r\n * Use skeletons to reduce perceived loading time and provide visual feedback.\r\n *\r\n * @slot - Optional slot for custom skeleton content\r\n *\r\n * @csspart base - The skeleton container element\r\n */\r\n@customElement('bp-skeleton')\r\nexport class BpSkeleton extends LitElement {\r\n /** The visual variant of the skeleton */\r\n @property({\r\n type: String,\r\n reflect: true,\r\n converter: {\r\n fromAttribute: (value: string | null) => {\r\n const valid = ['text', 'circular', 'rectangular', 'rounded'];\r\n return value && valid.includes(value) ? value : 'text';\r\n },\r\n },\r\n })\r\n declare variant: 'text' | 'circular' | 'rectangular' | 'rounded';\r\n\r\n /** Width of the skeleton. Can be any valid CSS value. */\r\n @property({ type: String }) declare width: string;\r\n\r\n /** Height of the skeleton. Can be any valid CSS value. */\r\n @property({ type: String }) declare height: string;\r\n\r\n /** Whether to animate the skeleton with a shimmer effect */\r\n @property({ converter: booleanConverter, reflect: true })\r\n declare animated: boolean;\r\n\r\n /** Number of lines to display (only for text variant) */\r\n @property({\r\n type: Number,\r\n converter: (value: string | null) => {\r\n const num = Number(value);\r\n return num > 0 ? num : 1;\r\n },\r\n })\r\n declare lines: number;\r\n\r\n /** The size preset (affects default dimensions) */\r\n @property({ type: String }) declare size: 'sm' | 'md' | 'lg';\r\n\r\n static styles = [skeletonStyles];\r\n\r\n constructor() {\r\n super();\r\n this.variant = 'text';\r\n this.width = '';\r\n this.height = '';\r\n this.animated = true;\r\n this.lines = 1;\r\n this.size = 'md';\r\n }\r\n\r\n /**\r\n * Generates CSS custom properties for width and height.\r\n * Uses custom properties instead of inline styles for CSP compliance.\r\n * @returns CSS string with custom property declarations\r\n */\r\n private getCustomProperties(): string {\r\n const props: string[] = [];\r\n\r\n if (this.width) {\r\n props.push(`--skeleton-width: ${this.width}`);\r\n }\r\n\r\n if (this.height) {\r\n props.push(`--skeleton-height: ${this.height}`);\r\n }\r\n\r\n return props.join('; ');\r\n }\r\n\r\n /**\r\n * Renders a single skeleton element with appropriate classes and styles.\r\n * @returns Template result for a single skeleton\r\n */\r\n private renderSingleSkeleton() {\r\n const classes = [\r\n 'skeleton',\r\n `skeleton--${this.variant}`,\r\n `skeleton--${this.size}`,\r\n this.animated ? 'skeleton--animated' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const customProps = this.getCustomProperties();\r\n\r\n return html`\r\n <div class=${classes} part=\"base\" style=${customProps || nothing}>\r\n <slot></slot>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders text skeleton lines.\r\n * If variant is text and lines > 1, renders multiple lines with a container.\r\n * Otherwise delegates to renderSingleSkeleton.\r\n * @returns Template result for text lines or single skeleton\r\n */\r\n private renderTextLines() {\r\n if (this.variant !== 'text' || this.lines <= 1) {\r\n return this.renderSingleSkeleton();\r\n }\r\n\r\n const customProps = this.getCustomProperties();\r\n const lineElements = [];\r\n for (let i = 0; i < this.lines; i++) {\r\n const isLastLine = i === this.lines - 1;\r\n const classes = [\r\n 'skeleton',\r\n 'skeleton--text',\r\n `skeleton--${this.size}`,\r\n this.animated ? 'skeleton--animated' : '',\r\n isLastLine ? 'skeleton--last-line' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n lineElements.push(\r\n html`<div\r\n class=${classes}\r\n part=\"base\"\r\n style=${customProps || nothing}\r\n ></div>`\r\n );\r\n }\r\n\r\n return html`<div class=\"skeleton__lines\">${lineElements}</div>`;\r\n }\r\n\r\n render() {\r\n return this.renderTextLines();\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-skeleton': BpSkeleton;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const notificationStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: block;\r\n }\r\n\r\n .notification {\r\n display: flex;\r\n align-items: flex-start;\r\n gap: var(--bp-spacing-3);\r\n padding: var(--bp-spacing-4);\r\n background-color: var(--bp-color-surface-elevated);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-lg);\r\n box-shadow: var(--bp-shadow-lg);\r\n font-family: var(--bp-font-sans);\r\n font-size: var(--bp-font-size-sm);\r\n line-height: var(--bp-line-height-normal);\r\n color: var(--bp-color-text);\r\n max-width: 400px;\r\n min-width: 300px;\r\n animation: notification-slide-in var(--bp-duration-fast) var(--bp-ease-out);\r\n }\r\n\r\n @keyframes notification-slide-in {\r\n from {\r\n opacity: 0;\r\n transform: translateY(calc(-1 * var(--bp-spacing-2)));\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n @keyframes notification-slide-out {\r\n from {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n to {\r\n opacity: 0;\r\n transform: translateY(calc(-1 * var(--bp-spacing-2)));\r\n }\r\n }\r\n\r\n .notification--exiting {\r\n animation: notification-slide-out var(--bp-duration-fast) var(--bp-ease-in)\r\n forwards;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .notification {\r\n animation: none;\r\n }\r\n\r\n .notification--exiting {\r\n animation: none;\r\n opacity: 0;\r\n }\r\n }\r\n\r\n /* Icon */\r\n .notification__icon {\r\n flex-shrink: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .notification__icon svg {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n /* Content */\r\n .notification__content {\r\n flex: 1;\r\n min-width: 0;\r\n }\r\n\r\n .notification__title {\r\n font-weight: var(--bp-font-weight-semibold);\r\n margin-bottom: var(--bp-spacing-1);\r\n color: var(--bp-color-text-strong);\r\n }\r\n\r\n .notification__message {\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n /* Action */\r\n .notification__action {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-1);\r\n }\r\n\r\n .notification__action:empty {\r\n display: none;\r\n }\r\n\r\n /* Close button */\r\n .notification__close {\r\n flex-shrink: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--bp-spacing-11);\r\n height: var(--bp-spacing-11);\r\n padding: 0;\r\n margin: calc(-1 * var(--bp-spacing-2));\r\n background: none;\r\n border: none;\r\n border-radius: var(--bp-border-radius-sm);\r\n color: var(--bp-color-text-muted);\r\n cursor: pointer;\r\n transition:\r\n color var(--bp-transition-fast),\r\n background-color var(--bp-transition-fast);\r\n }\r\n\r\n .notification__close:hover {\r\n color: var(--bp-color-text);\r\n background-color: var(--bp-color-surface-subdued);\r\n }\r\n\r\n .notification__close:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .notification__close svg {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n }\r\n\r\n /* Variants */\r\n .notification--info {\r\n border-left: var(--bp-spacing-1) solid var(--bp-color-info);\r\n }\r\n\r\n .notification--info .notification__icon {\r\n color: var(--bp-color-info);\r\n }\r\n\r\n .notification--success {\r\n border-left: var(--bp-spacing-1) solid var(--bp-color-success);\r\n }\r\n\r\n .notification--success .notification__icon {\r\n color: var(--bp-color-success);\r\n }\r\n\r\n .notification--warning {\r\n border-left: var(--bp-spacing-1) solid var(--bp-color-warning);\r\n }\r\n\r\n .notification--warning .notification__icon {\r\n color: var(--bp-color-warning);\r\n }\r\n\r\n .notification--error {\r\n border-left: var(--bp-spacing-1) solid var(--bp-color-error);\r\n }\r\n\r\n .notification--error .notification__icon {\r\n color: var(--bp-color-error);\r\n }\r\n\r\n /* Position variants */\r\n .notification--top-left,\r\n .notification--top-center,\r\n .notification--top-right,\r\n .notification--bottom-left,\r\n .notification--bottom-center,\r\n .notification--bottom-right {\r\n position: fixed;\r\n z-index: 10000;\r\n margin: var(--bp-spacing-4);\r\n }\r\n\r\n .notification--top-left {\r\n top: 0;\r\n left: 0;\r\n }\r\n\r\n .notification--top-center {\r\n top: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n\r\n .notification--top-right {\r\n top: 0;\r\n right: 0;\r\n }\r\n\r\n .notification--bottom-left {\r\n bottom: 0;\r\n left: 0;\r\n }\r\n\r\n .notification--bottom-center {\r\n bottom: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n\r\n .notification--bottom-right {\r\n bottom: 0;\r\n right: 0;\r\n }\r\n`;\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { notificationStyles } from './notification.style.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\nimport '../icon/icon.js';\r\n\r\n/**\r\n * A notification/toast component for displaying non-blocking messages.\r\n * Notifications can be dismissed manually or auto-close after a duration.\r\n *\r\n * @fires bp-close - Dispatched when the notification is closed\r\n * @fires bp-show - Dispatched when the notification becomes visible\r\n * @fires bp-hide - Dispatched when the notification is hidden\r\n *\r\n * @slot - Default slot for notification content\r\n * @slot icon - Custom icon to display\r\n * @slot action - Action buttons or links\r\n *\r\n * @csspart base - The notification container\r\n * @csspart icon - The icon container\r\n * @csspart content - The content area\r\n * @csspart message - The message text container\r\n * @csspart action - The action slot container\r\n * @csspart close-button - The close button\r\n */\r\n@customElement('bp-notification')\r\nexport class BpNotification extends LitElement {\r\n /** The notification variant */\r\n @property({\r\n type: String,\r\n reflect: true,\r\n converter: {\r\n fromAttribute: (value: string | null) => {\r\n const valid = ['info', 'success', 'warning', 'error'];\r\n return value && valid.includes(value) ? value : 'info';\r\n },\r\n },\r\n })\r\n declare variant: 'info' | 'success' | 'warning' | 'error';\r\n\r\n /** Whether the notification is visible */\r\n @property({ type: Boolean, reflect: true }) declare open: boolean;\r\n\r\n /** Whether the notification can be dismissed */\r\n @property({ converter: booleanConverter, reflect: true })\r\n declare closable: boolean;\r\n\r\n /** Duration in milliseconds before auto-close (0 = no auto-close) */\r\n @property({ type: Number }) declare duration: number;\r\n\r\n /** Title of the notification */\r\n @property({ type: String }) declare title: string;\r\n\r\n /** Message content of the notification */\r\n @property({ type: String }) declare message: string;\r\n\r\n /**\r\n * Position of the notification on screen.\r\n * Note: For multiple notifications, consider using a container component.\r\n */\r\n @property({\r\n type: String,\r\n converter: {\r\n fromAttribute: (value: string | null) => {\r\n const valid = [\r\n 'top-left',\r\n 'top-center',\r\n 'top-right',\r\n 'bottom-left',\r\n 'bottom-center',\r\n 'bottom-right',\r\n ];\r\n return value && valid.includes(value) ? value : 'top-right';\r\n },\r\n },\r\n })\r\n declare position:\r\n | 'top-left'\r\n | 'top-center'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-center'\r\n | 'bottom-right';\r\n\r\n @state() private autoCloseTimer: number | null = null;\r\n @state() private remainingTime: number = 0;\r\n @state() private timerPaused: boolean = false;\r\n @state() private isExiting: boolean = false;\r\n\r\n static styles = [notificationStyles];\r\n\r\n constructor() {\r\n super();\r\n this.variant = 'info';\r\n this.open = false;\r\n this.closable = true;\r\n this.duration = 0;\r\n this.title = '';\r\n this.message = '';\r\n this.position = 'top-right';\r\n }\r\n\r\n updated(changedProperties: Map<string, unknown>) {\r\n if (changedProperties.has('open')) {\r\n if (this.open) {\r\n this.handleOpen();\r\n } else {\r\n this.handleClose();\r\n }\r\n }\r\n\r\n if (changedProperties.has('duration') && this.open) {\r\n this.startAutoCloseTimer();\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this.clearAutoCloseTimer();\r\n }\r\n\r\n /** Show the notification */\r\n show() {\r\n if (this.open) return;\r\n this.open = true;\r\n }\r\n\r\n /** Hide the notification */\r\n hide() {\r\n if (!this.open) return;\r\n this.open = false;\r\n }\r\n\r\n /**\r\n * Handles the notification opening.\r\n * Dispatches bp-show event, starts auto-close timer, and manages focus.\r\n */\r\n private handleOpen() {\r\n this.isExiting = false;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-show', { bubbles: true, composed: true })\r\n );\r\n this.startAutoCloseTimer();\r\n\r\n // Focus close button for accessibility\r\n this.updateComplete.then(() => {\r\n if (this.closable) {\r\n const closeButton = this.shadowRoot?.querySelector(\r\n '.notification__close'\r\n ) as HTMLElement;\r\n closeButton?.focus();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handles the notification closing.\r\n * Clears auto-close timer and dispatches bp-hide event.\r\n */\r\n private handleClose() {\r\n this.clearAutoCloseTimer();\r\n this.dispatchEvent(\r\n new CustomEvent('bp-hide', { bubbles: true, composed: true })\r\n );\r\n }\r\n\r\n /**\r\n * Starts the auto-close timer based on the duration property.\r\n * Timer can be paused/resumed with pauseAutoCloseTimer/resumeAutoCloseTimer.\r\n */\r\n private startAutoCloseTimer() {\r\n this.clearAutoCloseTimer();\r\n\r\n if (this.duration > 0 && !this.timerPaused) {\r\n this.remainingTime = this.duration;\r\n this.autoCloseTimer = window.setTimeout(() => {\r\n this.hide();\r\n }, this.duration);\r\n }\r\n }\r\n\r\n /**\r\n * Clears the auto-close timer if it exists.\r\n */\r\n private clearAutoCloseTimer() {\r\n if (this.autoCloseTimer) {\r\n window.clearTimeout(this.autoCloseTimer);\r\n this.autoCloseTimer = null;\r\n }\r\n }\r\n\r\n /**\r\n * Pauses the auto-close timer when user hovers or focuses.\r\n * Allows users to read content or interact with actions.\r\n */\r\n private pauseAutoCloseTimer() {\r\n if (this.autoCloseTimer && this.duration > 0) {\r\n this.timerPaused = true;\r\n window.clearTimeout(this.autoCloseTimer);\r\n this.autoCloseTimer = null;\r\n }\r\n }\r\n\r\n /**\r\n * Resumes the auto-close timer with remaining time.\r\n */\r\n private resumeAutoCloseTimer() {\r\n if (this.timerPaused && this.duration > 0) {\r\n this.timerPaused = false;\r\n this.autoCloseTimer = window.setTimeout(() => {\r\n this.hide();\r\n }, this.remainingTime);\r\n }\r\n }\r\n\r\n /**\r\n * Handles close button click.\r\n * Hides notification and dispatches bp-close event.\r\n */\r\n private handleCloseClick() {\r\n this.hide();\r\n this.dispatchEvent(\r\n new CustomEvent('bp-close', { bubbles: true, composed: true })\r\n );\r\n }\r\n\r\n /**\r\n * Handles keyboard events.\r\n * Closes notification on Escape key if closable.\r\n */\r\n private handleKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Escape' && this.closable) {\r\n this.handleCloseClick();\r\n }\r\n }\r\n\r\n /**\r\n * Returns the default icon for the notification variant.\r\n * Uses the bp-icon component for consistency with the design system.\r\n */\r\n private getDefaultIcon() {\r\n const iconMap = {\r\n success: 'check',\r\n warning: 'warning-circle',\r\n error: 'cross',\r\n info: 'info-circle',\r\n } as const;\r\n return html`<bp-icon name=${iconMap[this.variant]} size=\"md\"></bp-icon>`;\r\n }\r\n\r\n render() {\r\n if (!this.open) {\r\n return nothing;\r\n }\r\n\r\n return html`\r\n <div\r\n class=\"notification notification--${this.variant} notification--${this\r\n .position} ${this.isExiting\r\n ? 'notification--exiting'\r\n : 'notification--entering'}\"\r\n part=\"base\"\r\n role=\"alert\"\r\n aria-live=${this.variant === 'error' ? 'assertive' : 'polite'}\r\n @keydown=${this.handleKeydown}\r\n @mouseenter=${this.pauseAutoCloseTimer}\r\n @mouseleave=${this.resumeAutoCloseTimer}\r\n @focusin=${this.pauseAutoCloseTimer}\r\n @focusout=${this.resumeAutoCloseTimer}\r\n >\r\n <div class=\"notification__icon\" part=\"icon\">\r\n <slot name=\"icon\">${this.getDefaultIcon()}</slot>\r\n </div>\r\n\r\n <div class=\"notification__content\" part=\"content\">\r\n ${this.title\r\n ? html`<div class=\"notification__title\">${this.title}</div>`\r\n : nothing}\r\n <div class=\"notification__message\" part=\"message\">\r\n ${this.message || html`<slot></slot>`}\r\n </div>\r\n </div>\r\n\r\n <div class=\"notification__action\" part=\"action\">\r\n <slot name=\"action\"></slot>\r\n </div>\r\n\r\n ${this.closable\r\n ? html`\r\n <button\r\n type=\"button\"\r\n class=\"notification__close\"\r\n part=\"close-button\"\r\n aria-label=\"Close notification\"\r\n @click=${this.handleCloseClick}\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <path d=\"M18 6L6 18M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n `\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-notification': BpNotification;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const accordionStyles = css`\r\n /* ===== ACCORDION CONTAINER ===== */\r\n\r\n :host {\r\n display: block;\r\n }\r\n\r\n .accordion {\r\n font-family: var(--bp-font-family);\r\n display: flex;\r\n flex-direction: column;\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius);\r\n overflow: hidden;\r\n }\r\n\r\n /* Disabled state */\r\n .accordion--disabled {\r\n opacity: var(--bp-opacity-disabled);\r\n pointer-events: none;\r\n }\r\n\r\n /* ===== ACCORDION ITEM ===== */\r\n\r\n /* Separators between items */\r\n :host(:not(:first-of-type)) {\r\n border-top: var(--bp-border-width) solid var(--bp-color-border);\r\n }\r\n\r\n .item {\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n /* Header button */\r\n .item__header {\r\n /* Reset */\r\n appearance: none;\r\n border: none;\r\n background: transparent;\r\n margin: 0;\r\n\r\n /* Layout */\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n width: 100%;\r\n padding: var(--bp-spacing-4) var(--bp-spacing-4);\r\n gap: var(--bp-spacing-3);\r\n\r\n /* Typography */\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-base);\r\n font-weight: var(--bp-font-weight-medium);\r\n text-align: left;\r\n color: var(--bp-color-text);\r\n line-height: var(--bp-line-height-normal);\r\n\r\n /* Interaction */\r\n cursor: pointer;\r\n transition: background-color var(--bp-transition-fast);\r\n }\r\n\r\n .item__header:hover:not(:disabled) {\r\n background-color: var(--bp-color-surface);\r\n }\r\n\r\n .item__header:focus {\r\n outline: none;\r\n }\r\n\r\n .item__header:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n .item__header:active:not(:disabled) {\r\n background-color: var(--bp-color-surface-hover);\r\n transform: translateY(1px);\r\n }\r\n .item__header-content {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-3);\r\n flex: 1;\r\n }\r\n\r\n /* Expand/collapse icon */\r\n .item__icon {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n color: var(--bp-color-text-muted);\r\n transition: transform var(--bp-transition-fast);\r\n }\r\n\r\n /* Icon is sized by bp-icon component */\r\n\r\n /* Rotate icon when expanded */\r\n .item--expanded .item__icon {\r\n transform: rotate(180deg);\r\n }\r\n\r\n /* Collapsible content */\r\n .item__content {\r\n display: grid;\r\n grid-template-rows: 0fr;\r\n overflow: hidden;\r\n transition: grid-template-rows var(--bp-transition-base);\r\n content-visibility: hidden;\r\n }\r\n\r\n .item--expanded .item__content {\r\n grid-template-rows: 1fr;\r\n content-visibility: visible;\r\n }\r\n\r\n .item__body {\r\n min-height: 0;\r\n padding: 0 var(--bp-spacing-4) var(--bp-spacing-4) var(--bp-spacing-4);\r\n color: var(--bp-color-text);\r\n font-size: var(--bp-font-size-sm);\r\n line-height: var(--bp-line-height-relaxed);\r\n overflow: hidden;\r\n opacity: 0;\r\n transition: opacity var(--bp-transition-fast);\r\n }\r\n\r\n .item--expanded .item__body {\r\n opacity: 1;\r\n transition-delay: 100ms;\r\n }\r\n\r\n .item:not(.item--expanded) .item__body {\r\n padding-top: 0;\r\n padding-bottom: 0;\r\n opacity: 0;\r\n transition-delay: 0ms;\r\n }\r\n\r\n /* Disabled state */\r\n .item--disabled .item__header {\r\n cursor: not-allowed;\r\n opacity: var(--bp-opacity-disabled);\r\n }\r\n\r\n .item--disabled .item__icon {\r\n opacity: 1;\r\n }\r\n\r\n .item--disabled .item__header:hover {\r\n background-color: transparent;\r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .item__icon {\r\n transition: none;\r\n }\r\n\r\n .item__content {\r\n transition: none;\r\n }\r\n\r\n .item__body {\r\n transition: none;\r\n opacity: 1;\r\n }\r\n\r\n .item__header:active:not(:disabled) {\r\n transform: none;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { accordionStyles } from './accordion.style.js';\r\nimport '../icon/icon.js';\r\n\r\n/**\r\n * A container component that groups accordion items.\r\n * Controls single or multiple expansion behavior.\r\n *\r\n * @element bp-accordion\r\n *\r\n * @property {boolean} multiple - Whether multiple items can be expanded simultaneously\r\n * @property {string[]} expandedItems - Array of expanded item IDs\r\n * @property {boolean} disabled - Whether all items are disabled\r\n *\r\n * @fires bp-expand - Fired when an item is expanded\r\n * @fires bp-collapse - Fired when an item is collapsed\r\n *\r\n * @slot - Default slot for bp-accordion-item elements\r\n *\r\n * @csspart accordion - The main accordion container\r\n */\r\n@customElement('bp-accordion')\r\nexport class BpAccordion extends LitElement {\r\n /** Whether multiple items can be expanded simultaneously */\r\n @property({ type: Boolean, reflect: true }) declare multiple: boolean;\r\n\r\n /** Array of expanded item IDs */\r\n @property({ type: Array }) declare expandedItems: string[];\r\n\r\n /** Whether all items are disabled */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n static styles = [accordionStyles];\r\n\r\n constructor() {\r\n super();\r\n this.multiple = false;\r\n this.expandedItems = [];\r\n this.disabled = false;\r\n }\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n this.addEventListener('bp-item-toggle', this.handleItemToggle);\r\n }\r\n\r\n disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this.removeEventListener('bp-item-toggle', this.handleItemToggle);\r\n }\r\n\r\n /**\r\n * Handles item toggle events from child accordion items.\r\n * Updates expandedItems array based on multiple mode and dispatches expand/collapse events.\r\n */\r\n private handleItemToggle = (event: Event) => {\r\n const customEvent = event as CustomEvent<{ id: string; expanded: boolean }>;\r\n const { id, expanded } = customEvent.detail;\r\n\r\n if (expanded) {\r\n if (this.multiple) {\r\n this.expandedItems = [...this.expandedItems, id];\r\n } else {\r\n // Close other items when not in multiple mode\r\n this.expandedItems = [id];\r\n }\r\n this.dispatchEvent(\r\n new CustomEvent('bp-expand', {\r\n detail: { id },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n } else {\r\n this.expandedItems = this.expandedItems.filter((itemId) => itemId !== id);\r\n this.dispatchEvent(\r\n new CustomEvent('bp-collapse', {\r\n detail: { id },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n this.updateChildItems();\r\n };\r\n\r\n /**\r\n * Synchronizes child accordion items with the expandedItems state.\r\n * Also applies disabled state to all items when accordion is disabled.\r\n */\r\n private updateChildItems() {\r\n const items = this.querySelectorAll('bp-accordion-item');\r\n items.forEach((item) => {\r\n const accordionItem = item as BpAccordionItem;\r\n const isExpanded = this.expandedItems.includes(accordionItem.itemId);\r\n accordionItem.expanded = isExpanded;\r\n if (this.disabled) {\r\n accordionItem.disabled = true;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Initializes expandedItems array from children with expanded attribute.\r\n * Called on first render to respect items marked as expanded in HTML.\r\n */\r\n private initializeExpandedItems() {\r\n const items = this.querySelectorAll('bp-accordion-item');\r\n const expandedIds: string[] = [];\r\n\r\n items.forEach((item) => {\r\n const accordionItem = item as BpAccordionItem;\r\n if (accordionItem.expanded && accordionItem.itemId) {\r\n expandedIds.push(accordionItem.itemId);\r\n }\r\n });\r\n\r\n if (expandedIds.length > 0) {\r\n // In single mode, only keep the first expanded item\r\n this.expandedItems = this.multiple ? expandedIds : [expandedIds[0]];\r\n }\r\n }\r\n\r\n firstUpdated(): void {\r\n // Initialize expanded items from children on first render\r\n this.initializeExpandedItems();\r\n this.updateChildItems();\r\n }\r\n\r\n updated(changedProperties: Map<string, unknown>): void {\r\n if (\r\n changedProperties.has('expandedItems') ||\r\n changedProperties.has('disabled')\r\n ) {\r\n this.updateChildItems();\r\n }\r\n }\r\n\r\n /** Expand an item by ID */\r\n expand(id: string) {\r\n if (!this.expandedItems.includes(id)) {\r\n if (this.multiple) {\r\n this.expandedItems = [...this.expandedItems, id];\r\n } else {\r\n this.expandedItems = [id];\r\n }\r\n this.updateChildItems();\r\n this.dispatchEvent(\r\n new CustomEvent('bp-expand', {\r\n detail: { id },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n /** Collapse an item by ID */\r\n collapse(id: string) {\r\n if (this.expandedItems.includes(id)) {\r\n this.expandedItems = this.expandedItems.filter((itemId) => itemId !== id);\r\n this.updateChildItems();\r\n this.dispatchEvent(\r\n new CustomEvent('bp-collapse', {\r\n detail: { id },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n\r\n /** Expand all items (only works in multiple mode) */\r\n expandAll() {\r\n if (!this.multiple) return;\r\n const items = this.querySelectorAll('bp-accordion-item');\r\n const ids: string[] = [];\r\n items.forEach((item) => {\r\n const accordionItem = item as BpAccordionItem;\r\n if (!accordionItem.disabled) {\r\n ids.push(accordionItem.itemId);\r\n }\r\n });\r\n this.expandedItems = ids;\r\n this.updateChildItems();\r\n }\r\n\r\n /** Collapse all items */\r\n collapseAll() {\r\n this.expandedItems = [];\r\n this.updateChildItems();\r\n }\r\n\r\n /**\r\n * Handles slot changes - when children are added or removed.\r\n * Initializes expanded state from new children.\r\n */\r\n private handleSlotChange() {\r\n // Only initialize from children if expandedItems is empty\r\n // Otherwise respect the parent's state\r\n if (this.expandedItems.length === 0) {\r\n this.initializeExpandedItems();\r\n }\r\n this.updateChildItems();\r\n }\r\n\r\n render() {\r\n const classes = {\r\n accordion: true,\r\n 'accordion--disabled': this.disabled,\r\n };\r\n\r\n return html`\r\n <div class=${classMap(classes)} part=\"accordion\" role=\"presentation\">\r\n <slot @slotchange=${this.handleSlotChange}></slot>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\n/**\r\n * An individual accordion item with header and collapsible content.\r\n *\r\n * @element bp-accordion-item\r\n *\r\n * @property {string} itemId - Unique identifier for this item\r\n * @property {string} header - Header text displayed in the trigger button\r\n * @property {boolean} expanded - Whether the content is expanded\r\n * @property {boolean} disabled - Whether this item is disabled\r\n *\r\n * @slot - Default slot for the collapsible content\r\n * @slot header - Custom header content (overrides header property)\r\n * @slot icon - Custom icon for the header\r\n *\r\n * @csspart item - The accordion item container\r\n * @csspart header - The header/trigger button\r\n * @csspart icon - The expand/collapse icon\r\n * @csspart content - The collapsible content wrapper\r\n * @csspart body - The inner content container\r\n */\r\n@customElement('bp-accordion-item')\r\nexport class BpAccordionItem extends LitElement {\r\n /** Unique identifier for this item */\r\n @property({ type: String, attribute: 'item-id', reflect: true })\r\n declare itemId: string;\r\n\r\n /** Header text displayed in the trigger button */\r\n @property({ type: String }) declare header: string;\r\n\r\n /** Whether the content is expanded */\r\n @property({ type: Boolean, reflect: true }) declare expanded: boolean;\r\n\r\n /** Whether this item is disabled */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n static styles = [accordionStyles];\r\n\r\n constructor() {\r\n super();\r\n this.itemId = '';\r\n this.header = '';\r\n this.expanded = false;\r\n this.disabled = false;\r\n }\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n // Generate ID if not provided\r\n if (!this.itemId) {\r\n this.itemId = `accordion-item-${Math.random().toString(36).slice(2, 9)}`;\r\n }\r\n }\r\n\r\n /**\r\n * Handles toggle action and dispatches bp-item-toggle event.\r\n * Also manages focus on the header button after expansion.\r\n */\r\n private handleToggle() {\r\n if (this.disabled) return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-item-toggle', {\r\n detail: { id: this.itemId, expanded: !this.expanded },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n\r\n // Focus management: focus header after toggle completes\r\n this.updateComplete.then(() => {\r\n const header = this.shadowRoot?.querySelector(\r\n '.item__header'\r\n ) as HTMLElement;\r\n header?.focus();\r\n });\r\n }\r\n\r\n /**\r\n * Handles keyboard navigation.\r\n * Triggers toggle on Enter or Space key press.\r\n */\r\n private handleKeyDown(event: KeyboardEvent) {\r\n if (this.disabled) return;\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.handleToggle();\r\n }\r\n }\r\n\r\n render() {\r\n const itemClasses = {\r\n item: true,\r\n 'item--expanded': this.expanded,\r\n 'item--disabled': this.disabled,\r\n };\r\n\r\n const headerId = `${this.itemId}-header`;\r\n const contentId = `${this.itemId}-content`;\r\n\r\n return html`\r\n <div class=${classMap(itemClasses)} part=\"item\">\r\n <button\r\n class=\"item__header\"\r\n part=\"header\"\r\n id=${headerId}\r\n aria-expanded=${this.expanded}\r\n aria-controls=${contentId}\r\n aria-disabled=${this.disabled}\r\n ?disabled=${this.disabled}\r\n @click=${this.handleToggle}\r\n @keydown=${this.handleKeyDown}\r\n >\r\n <span class=\"item__header-content\">\r\n <slot name=\"icon\"></slot>\r\n <slot name=\"header\">${this.header}</slot>\r\n </span>\r\n <span class=\"item__icon\" part=\"icon\" aria-hidden=\"true\">\r\n <bp-icon name=\"chevron-down\" size=\"md\"></bp-icon>\r\n </span>\r\n </button>\r\n <div\r\n class=\"item__content\"\r\n part=\"content\"\r\n id=${contentId}\r\n role=\"region\"\r\n aria-labelledby=${headerId}\r\n >\r\n <div class=\"item__body\" part=\"body\">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-accordion': BpAccordion;\r\n 'bp-accordion-item': BpAccordionItem;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const tableStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .table-wrapper {\n overflow-x: auto;\n border-radius: var(--bp-border-radius);\n }\n\n .table {\n width: 100%;\n border-collapse: collapse;\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-sm);\n color: var(--bp-color-text);\n background: var(--bp-color-surface);\n }\n\n /* Header styles */\n .header-row {\n background: var(--bp-color-surface-subdued);\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\n }\n\n .header-cell {\n font-weight: var(--bp-font-weight-semibold);\n text-align: left;\n color: var(--bp-color-text);\n }\n\n .header-cell--sortable {\n cursor: pointer;\n user-select: none;\n transition: background-color var(--bp-transition-fast);\n position: relative;\n }\n\n .header-cell--sortable::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n height: 2px;\n background: transparent;\n transition: background var(--bp-transition-fast);\n }\n\n .header-cell--sortable:hover::after {\n background: var(--bp-color-primary);\n opacity: 0.3;\n }\n\n .header-cell--sortable:hover {\n background: var(--bp-color-surface);\n }\n\n .header-cell--sortable:active {\n background: var(--bp-color-surface-subdued);\n transform: translateY(1px);\n }\n\n .header-cell__content {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-1);\n }\n\n .header-cell__label {\n flex: 1;\n }\n\n /* Sort icon */\n .sort-icon {\n display: flex;\n align-items: center;\n color: var(--bp-color-text-muted);\n transition: color var(--bp-transition-fast);\n }\n\n .sort-icon--active {\n color: var(--bp-color-primary);\n }\n\n /* Cell styles */\n .cell {\n padding: var(--bp-spacing-3) var(--bp-spacing-4);\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\n vertical-align: middle;\n }\n\n .cell--checkbox {\n width: var(--bp-spacing-10);\n text-align: center;\n padding-left: var(--bp-spacing-3);\n padding-right: 0;\n }\n\n .cell--checkbox input[type='checkbox'] {\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n cursor: pointer;\n }\n\n /* Row styles */\n .row {\n transition: background-color var(--bp-transition-fast);\n content-visibility: auto;\n contain-intrinsic-size: auto 48px;\n }\n\n .row--hoverable:hover {\n background: var(--bp-color-surface-subdued);\n }\n\n .row--selected {\n background: oklch(from var(--bp-color-primary) l c h / 0.15);\n }\n\n .row--selected:hover {\n background: oklch(from var(--bp-color-primary) l c h / 0.2);\n }\n\n /* Remove border from last row */\n tbody tr:last-child .cell {\n border-bottom: none;\n }\n\n /* Variants */\n .table--striped tbody tr:nth-child(even) {\n background: var(--bp-color-surface-subdued);\n }\n\n .table--striped tbody tr:nth-child(even):hover {\n background: var(--bp-color-surface);\n }\n\n .table--striped .row--selected {\n background: oklch(from var(--bp-color-primary) l c h / 0.15) !important;\n }\n\n .table--striped .row--selected:hover {\n background: oklch(from var(--bp-color-primary) l c h / 0.2) !important;\n }\n\n .table--bordered {\n border: var(--bp-border-width) solid var(--bp-color-border);\n }\n\n .table--bordered .cell {\n border: var(--bp-border-width) solid var(--bp-color-border);\n }\n\n /* Sizes */\n .table--sm .cell {\n padding: var(--bp-spacing-1) var(--bp-spacing-3);\n font-size: var(--bp-font-size-xs);\n }\n\n .table--sm .row {\n contain-intrinsic-size: auto 36px;\n }\n\n .table--md .cell {\n padding: var(--bp-spacing-3) var(--bp-spacing-4);\n font-size: var(--bp-font-size-sm);\n }\n\n .table--md .row {\n contain-intrinsic-size: auto 48px;\n }\n\n .table--lg .cell {\n padding: var(--bp-spacing-4) var(--bp-spacing-5);\n font-size: var(--bp-font-size-base);\n }\n\n .table--lg .row {\n contain-intrinsic-size: auto 56px;\n }\n\n /* Sticky header */\n .table--sticky-header thead {\n position: sticky;\n top: 0;\n z-index: 1;\n }\n\n .table--sticky-header .header-row {\n box-shadow: var(--bp-shadow-sm);\n }\n\n /* Selectable - add pointer cursor */\n .table--selectable .row {\n cursor: pointer;\n }\n\n /* Loading state */\n .table--loading {\n opacity: var(--bp-opacity-disabled);\n pointer-events: none;\n }\n\n /* Empty state */\n .empty-state {\n text-align: center;\n padding: var(--bp-spacing-10);\n color: var(--bp-color-text-muted);\n background: var(--bp-color-surface-subdued);\n }\n\n .state-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--bp-spacing-3);\n padding: var(--bp-spacing-5);\n }\n\n .sort-icon--inactive {\n opacity: 0.4;\n }\n\n /* Focus styles for keyboard navigation */\n .header-cell--sortable:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n .row:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: calc(-1 * var(--bp-focus-offset));\n }\n\n .cell--checkbox input[type='checkbox']:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .row,\n .header-cell--sortable,\n .sort-icon {\n transition: none;\n }\n\n .header-cell--sortable:active {\n transform: none;\n }\n\n .header-cell--sortable::after {\n transition: none;\n }\n }\n`;\n","import { LitElement, html, nothing, TemplateResult, PropertyValues } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { tableStyles } from './table.style.js';\r\nimport { memoizeOne } from '../../utilities/memoize.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\nimport '../icon/icon.js';\r\n\r\nexport type TableVariant = 'default' | 'striped' | 'bordered';\r\nexport type TableSize = 'sm' | 'md' | 'lg';\r\nexport type TableSortDirection = 'asc' | 'desc' | 'none';\r\n\r\n/**\r\n * Column definition for the table\r\n */\r\nexport interface TableColumn {\r\n /** Unique key for the column (matches data property) */\r\n key: string;\r\n /** Header label for the column */\r\n label: string;\r\n /** Whether this column is sortable */\r\n sortable?: boolean;\r\n /** Text alignment */\r\n align?: 'left' | 'center' | 'right';\r\n /** Fixed width for the column */\r\n width?: string;\r\n /** Custom render function for cell content */\r\n render?: (value: unknown, row: TableRow) => TemplateResult | string;\r\n}\r\n\r\n/**\r\n * Row data for the table\r\n */\r\nexport interface TableRow {\r\n /** Unique identifier for the row */\r\n id: string | number;\r\n /** Row data keyed by column key */\r\n [key: string]: unknown;\r\n}\r\n\r\n/**\r\n * Sort state for the table\r\n */\r\nexport interface TableSortState {\r\n /** Column key being sorted */\r\n column: string;\r\n /** Sort direction */\r\n direction: TableSortDirection;\r\n}\r\n\r\n/**\r\n * A data table component for displaying tabular data with sorting and selection.\r\n *\r\n * @element bp-table\r\n *\r\n * @property {TableColumn[]} columns - Array of column definitions\r\n * @property {TableRow[]} rows - Array of row data objects\r\n * @property {TableVariant} variant - Visual style variant\r\n * @property {TableSize} size - Size of the table cells\r\n * @property {boolean} selectable - Whether rows can be selected\r\n * @property {boolean} multiSelect - Whether multiple rows can be selected\r\n * @property {(string|number)[]} selectedRows - Array of selected row IDs\r\n * @property {TableSortState} sortState - Current sort state\r\n * @property {boolean} stickyHeader - Whether the header sticks on scroll\r\n * @property {boolean} hoverable - Whether rows highlight on hover\r\n * @property {boolean} loading - Whether the table is in loading state\r\n *\r\n * @fires bp-sort - Fired when a sortable column header is clicked\r\n * @fires bp-select - Fired when row selection changes\r\n * @fires bp-row-click - Fired when a row is clicked\r\n *\r\n * @slot empty - Content to show when table has no data\r\n * @slot loading - Content to show when table is loading\r\n *\r\n * @csspart table - The table element\r\n * @csspart thead - The table header section\r\n * @csspart tbody - The table body section\r\n * @csspart header-row - A header row\r\n * @csspart header-cell - A header cell\r\n * @csspart row - A data row\r\n * @csspart cell - A data cell\r\n * @csspart checkbox - Selection checkbox\r\n * @csspart sort-icon - Sort direction icon\r\n * @csspart empty-state - Empty state container\r\n */\r\n@customElement('bp-table')\r\nexport class BpTable extends LitElement {\r\n /** Array of column definitions */\r\n @property({ type: Array }) declare columns: TableColumn[];\r\n\r\n /** Array of row data objects */\r\n @property({ type: Array }) declare rows: TableRow[];\r\n\r\n /** Visual style variant */\r\n @property({\r\n type: String,\r\n reflect: true,\r\n converter: {\r\n fromAttribute: (value: string | null) => {\r\n const valid: TableVariant[] = ['default', 'striped', 'bordered'];\r\n return value && valid.includes(value as TableVariant)\r\n ? (value as TableVariant)\r\n : 'default';\r\n },\r\n },\r\n })\r\n declare variant: TableVariant;\r\n\r\n /** Size of the table cells */\r\n @property({\r\n type: String,\r\n reflect: true,\r\n converter: {\r\n fromAttribute: (value: string | null) => {\r\n const valid: TableSize[] = ['sm', 'md', 'lg'];\r\n return value && valid.includes(value as TableSize)\r\n ? (value as TableSize)\r\n : 'md';\r\n },\r\n },\r\n })\r\n declare size: TableSize;\r\n\r\n /** Whether rows can be selected */\r\n @property({ type: Boolean, reflect: true }) declare selectable: boolean;\r\n\r\n /** Whether multiple rows can be selected */\r\n @property({ type: Boolean, reflect: true }) declare multiSelect: boolean;\r\n\r\n /** Array of selected row IDs */\r\n @property({ type: Array }) declare selectedRows: (string | number)[];\r\n\r\n /** Current sort state */\r\n @property({ type: Object }) declare sortState: TableSortState | null;\r\n\r\n /** Whether the header sticks on scroll */\r\n @property({ type: Boolean, reflect: true, attribute: 'sticky-header' })\r\n declare stickyHeader: boolean;\r\n\r\n /** Whether rows highlight on hover */\r\n @property({ converter: booleanConverter, reflect: true })\r\n declare hoverable: boolean;\r\n\r\n /** Whether the table is in loading state */\r\n @property({ type: Boolean, reflect: true }) declare loading: boolean;\r\n\r\n @state() private allSelected = false;\r\n\r\n /**\r\n * Properties that only affect visual styling, not rendered structure.\r\n * Changes to only these properties can skip a full re-render.\r\n */\r\n private static readonly VISUAL_ONLY_PROPS = new Set([\r\n 'hoverable',\r\n 'stickyHeader',\r\n ]);\r\n\r\n static styles = [tableStyles];\r\n\r\n constructor() {\r\n super();\r\n this.columns = [];\r\n this.rows = [];\r\n this.variant = 'default';\r\n this.size = 'md';\r\n this.selectable = false;\r\n this.multiSelect = false;\r\n this.selectedRows = [];\r\n this.sortState = null;\r\n this.stickyHeader = false;\r\n this.hoverable = true;\r\n this.loading = false;\r\n }\r\n\r\n protected shouldUpdate(changedProperties: PropertyValues): boolean {\r\n // If all changed properties are visual-only, skip the update.\r\n // Be conservative: return true if any non-visual property changed.\r\n for (const key of changedProperties.keys()) {\r\n if (!BpTable.VISUAL_ONLY_PROPS.has(key as string)) {\r\n return true;\r\n }\r\n }\r\n // All changes are visual-only — still need to update for CSS class changes\r\n return true;\r\n }\r\n\r\n updated(changedProperties: Map<string, unknown>): void {\r\n if (\r\n changedProperties.has('selectedRows') ||\r\n changedProperties.has('rows')\r\n ) {\r\n this.allSelected =\r\n this.rows.length > 0 && this.selectedRows.length === this.rows.length;\r\n }\r\n }\r\n\r\n /**\r\n * Memoized sorted rows computation.\r\n * Only recomputes when rows or sortState references change.\r\n */\r\n private computeSortedRows = memoizeOne(\r\n (rows: TableRow[], sortState: TableSortState | null): TableRow[] => {\r\n if (!sortState || sortState.direction === 'none') {\r\n return rows;\r\n }\r\n\r\n const { column, direction } = sortState;\r\n return [...rows].sort((a, b) => {\r\n const aVal = a[column];\r\n const bVal = b[column];\r\n\r\n if (aVal === bVal) return 0;\r\n if (aVal === null || aVal === undefined) return 1;\r\n if (bVal === null || bVal === undefined) return -1;\r\n\r\n let comparison = 0;\r\n if (typeof aVal === 'string' && typeof bVal === 'string') {\r\n comparison = aVal.localeCompare(bVal);\r\n } else if (typeof aVal === 'number' && typeof bVal === 'number') {\r\n comparison = aVal - bVal;\r\n } else {\r\n comparison = String(aVal).localeCompare(String(bVal));\r\n }\r\n\r\n return direction === 'desc' ? -comparison : comparison;\r\n });\r\n }\r\n );\r\n\r\n /**\r\n * Get sorted rows based on current sort state (memoized).\r\n */\r\n private get sortedRows(): TableRow[] {\r\n return this.computeSortedRows(this.rows, this.sortState);\r\n }\r\n\r\n /**\r\n * Handles click on sortable column header.\r\n * Cycles through sort directions: asc → desc → none.\r\n * Manages focus on header after sort completes.\r\n */\r\n private handleHeaderClick(column: TableColumn, event: Event) {\r\n if (!column.sortable) return;\r\n\r\n let direction: TableSortDirection = 'asc';\r\n if (this.sortState?.column === column.key) {\r\n if (this.sortState.direction === 'asc') {\r\n direction = 'desc';\r\n } else if (this.sortState.direction === 'desc') {\r\n direction = 'none';\r\n }\r\n }\r\n\r\n this.sortState = { column: column.key, direction };\r\n this.dispatchEvent(\r\n new CustomEvent('bp-sort', {\r\n detail: { column: column.key, direction },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n\r\n // Focus management: focus header after sort completes\r\n this.updateComplete.then(() => {\r\n (event.target as HTMLElement)?.focus();\r\n });\r\n }\r\n\r\n /**\r\n * Handles click events on table rows.\r\n * Dispatches bp-row-click event and toggles selection if selectable.\r\n */\r\n private handleRowClick(row: TableRow, event: Event) {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-row-click', {\r\n detail: { row, originalEvent: event },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n\r\n if (this.selectable) {\r\n this.toggleRowSelection(row);\r\n }\r\n }\r\n\r\n /**\r\n * Handles keyboard events on table rows.\r\n * Triggers selection on Enter or Space key press when selectable.\r\n */\r\n private handleRowKeyDown(row: TableRow, event: KeyboardEvent) {\r\n if (!this.selectable) return;\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.toggleRowSelection(row);\r\n }\r\n }\r\n\r\n /**\r\n * Toggles selection state for a row.\r\n * Respects multiSelect setting for single vs multiple selection.\r\n */\r\n private toggleRowSelection(row: TableRow) {\r\n const rowId = row.id;\r\n const isSelected = this.selectedRows.includes(rowId);\r\n\r\n let newSelection: (string | number)[];\r\n if (this.multiSelect) {\r\n newSelection = isSelected\r\n ? this.selectedRows.filter((id) => id !== rowId)\r\n : [...this.selectedRows, rowId];\r\n } else {\r\n newSelection = isSelected ? [] : [rowId];\r\n }\r\n\r\n this.selectedRows = newSelection;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-select', {\r\n detail: { selectedRows: newSelection, row, selected: !isSelected },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Handles select all checkbox toggle.\r\n * Selects or deselects all rows based on current state.\r\n */\r\n private handleSelectAll() {\r\n if (this.allSelected) {\r\n this.selectedRows = [];\r\n } else {\r\n this.selectedRows = this.rows.map((row) => row.id);\r\n }\r\n this.dispatchEvent(\r\n new CustomEvent('bp-select', {\r\n detail: {\r\n selectedRows: this.selectedRows,\r\n selectAll: !this.allSelected,\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Handles checkbox click events.\r\n * Stops propagation only on the checkbox itself to prevent row click.\r\n */\r\n private handleCheckboxClick(event: Event, row?: TableRow) {\r\n // Only stop propagation on the checkbox to prevent triggering row click\r\n if (event.target instanceof HTMLInputElement) {\r\n event.stopPropagation();\r\n }\r\n if (row) {\r\n this.toggleRowSelection(row);\r\n } else {\r\n this.handleSelectAll();\r\n }\r\n }\r\n\r\n /** Select all rows */\r\n selectAll() {\r\n this.selectedRows = this.rows.map((row) => row.id);\r\n this.dispatchEvent(\r\n new CustomEvent('bp-select', {\r\n detail: { selectedRows: this.selectedRows, selectAll: true },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n /** Deselect all rows */\r\n deselectAll() {\r\n this.selectedRows = [];\r\n this.dispatchEvent(\r\n new CustomEvent('bp-select', {\r\n detail: { selectedRows: [], selectAll: false },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n /** Clear sort state */\r\n clearSort() {\r\n this.sortState = null;\r\n }\r\n\r\n /**\r\n * Renders the sort icon for sortable columns.\r\n * Shows chevron-up for ascending, chevron-down for descending, unsorted icon otherwise.\r\n */\r\n private renderSortIcon(column: TableColumn) {\r\n if (!column.sortable) return nothing;\r\n\r\n const isActive = this.sortState?.column === column.key;\r\n const direction = isActive ? this.sortState?.direction : 'none';\r\n\r\n const iconName =\r\n direction === 'asc'\r\n ? 'chevron-up'\r\n : direction === 'desc'\r\n ? 'chevron-down'\r\n : 'chevron-up';\r\n\r\n const iconClasses = {\r\n 'sort-icon': true,\r\n 'sort-icon--active': isActive && direction !== 'none',\r\n 'sort-icon--inactive': direction === 'none',\r\n };\r\n\r\n return html`\r\n <span class=${classMap(iconClasses)} part=\"sort-icon\" aria-hidden=\"true\">\r\n <bp-icon name=${iconName} size=\"sm\"></bp-icon>\r\n </span>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the table header with column labels and sort icons.\r\n */\r\n private renderHeader() {\r\n return html`\r\n <thead part=\"thead\">\r\n <tr class=\"header-row\" part=\"header-row\">\r\n ${this.selectable && this.multiSelect\r\n ? html`\r\n <th class=\"cell cell--checkbox\" part=\"header-cell\">\r\n <input\r\n type=\"checkbox\"\r\n part=\"checkbox\"\r\n .checked=${this.allSelected}\r\n .indeterminate=${this.selectedRows.length > 0 &&\r\n !this.allSelected}\r\n @click=${(e: Event) => this.handleCheckboxClick(e)}\r\n aria-label=\"Select all rows\"\r\n />\r\n </th>\r\n `\r\n : this.selectable\r\n ? html`<th class=\"cell cell--checkbox\" part=\"header-cell\"></th>`\r\n : nothing}\r\n ${repeat(\r\n this.columns,\r\n (column) => column.key,\r\n (column) => html`\r\n <th\r\n class=\"cell header-cell ${column.sortable\r\n ? 'header-cell--sortable'\r\n : ''}\"\r\n part=\"header-cell\"\r\n style=${column.width ? `width: ${column.width}` : ''}\r\n @click=${(e: Event) => this.handleHeaderClick(column, e)}\r\n tabindex=${column.sortable ? 0 : -1}\r\n @keydown=${(e: KeyboardEvent) => {\r\n if (column.sortable && (e.key === 'Enter' || e.key === ' ')) {\r\n e.preventDefault();\r\n this.handleHeaderClick(column, e);\r\n }\r\n }}\r\n aria-sort=${this.sortState?.column === column.key\r\n ? this.sortState.direction === 'asc'\r\n ? 'ascending'\r\n : this.sortState.direction === 'desc'\r\n ? 'descending'\r\n : 'none'\r\n : 'none'}\r\n >\r\n <span\r\n class=\"header-cell__content\"\r\n style=\"justify-content: ${column.align === 'center'\r\n ? 'center'\r\n : column.align === 'right'\r\n ? 'flex-end'\r\n : 'flex-start'}\"\r\n >\r\n <span class=\"header-cell__label\">${column.label}</span>\r\n ${this.renderSortIcon(column)}\r\n </span>\r\n </th>\r\n `\r\n )}\r\n </tr>\r\n </thead>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the table body with rows and cells.\r\n * Handles loading and empty states.\r\n */\r\n private renderBody() {\r\n const sortedRows = this.sortedRows;\r\n\r\n if (this.loading) {\r\n return html`\r\n <tbody part=\"tbody\">\r\n <tr>\r\n <td\r\n colspan=${this.columns.length + (this.selectable ? 1 : 0)}\r\n class=\"empty-state\"\r\n part=\"empty-state\"\r\n >\r\n <slot name=\"loading\">\r\n <div class=\"state-content\">Loading...</div>\r\n </slot>\r\n </td>\r\n </tr>\r\n </tbody>\r\n `;\r\n }\r\n\r\n if (sortedRows.length === 0) {\r\n return html`\r\n <tbody part=\"tbody\">\r\n <tr>\r\n <td\r\n colspan=${this.columns.length + (this.selectable ? 1 : 0)}\r\n class=\"empty-state\"\r\n part=\"empty-state\"\r\n >\r\n <slot name=\"empty\">\r\n <div class=\"state-content\">No data available</div>\r\n </slot>\r\n </td>\r\n </tr>\r\n </tbody>\r\n `;\r\n }\r\n\r\n return html`\r\n <tbody part=\"tbody\">\r\n ${repeat(\r\n sortedRows,\r\n (row) => row.id,\r\n (row) => {\r\n const isSelected = this.selectedRows.includes(row.id);\r\n const rowClasses = {\r\n row: true,\r\n 'row--selected': isSelected,\r\n 'row--hoverable': this.hoverable,\r\n };\r\n\r\n return html`\r\n <tr\r\n class=${classMap(rowClasses)}\r\n part=\"row\"\r\n @click=${(e: Event) => this.handleRowClick(row, e)}\r\n @keydown=${(e: KeyboardEvent) => this.handleRowKeyDown(row, e)}\r\n tabindex=${this.selectable ? 0 : -1}\r\n aria-selected=${ifDefined(\r\n this.selectable ? (isSelected ? 'true' : 'false') : undefined\r\n )}\r\n >\r\n ${this.selectable\r\n ? html`\r\n <td class=\"cell cell--checkbox\" part=\"cell\">\r\n <input\r\n type=\"checkbox\"\r\n part=\"checkbox\"\r\n .checked=${isSelected}\r\n @click=${(e: Event) =>\r\n this.handleCheckboxClick(e, row)}\r\n aria-label=\"Select row\"\r\n />\r\n </td>\r\n `\r\n : nothing}\r\n ${repeat(\r\n this.columns,\r\n (column) => column.key,\r\n (column) => {\r\n const value = row[column.key];\r\n const content = column.render\r\n ? column.render(value, row)\r\n : value;\r\n\r\n return html`\r\n <td\r\n class=\"cell\"\r\n part=\"cell\"\r\n style=\"text-align: ${column.align || 'left'}\"\r\n >\r\n ${content}\r\n </td>\r\n `;\r\n }\r\n )}\r\n </tr>\r\n `;\r\n }\r\n )}\r\n </tbody>\r\n `;\r\n }\r\n\r\n render() {\r\n const tableClasses = {\r\n table: true,\r\n [`table--${this.variant}`]: true,\r\n [`table--${this.size}`]: true,\r\n 'table--sticky-header': this.stickyHeader,\r\n 'table--selectable': this.selectable,\r\n 'table--loading': this.loading,\r\n };\r\n\r\n return html`\r\n <div class=\"table-wrapper\">\r\n <table\r\n class=${classMap(tableClasses)}\r\n part=\"table\"\r\n role=\"grid\"\r\n aria-busy=${this.loading}\r\n >\r\n ${this.renderHeader()} ${this.renderBody()}\r\n </table>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-table': BpTable;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const treeStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: block;\r\n }\r\n\r\n .tree {\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-base);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n /* Node structure */\r\n .node {\r\n position: relative;\r\n }\r\n\r\n .node-content {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-2);\r\n padding: var(--bp-spacing-2) var(--bp-spacing-3);\r\n padding-left: calc(\r\n var(--bp-spacing-3) + var(--node-level, 0) * var(--bp-spacing-5)\r\n );\r\n border-radius: var(--bp-border-radius-sm);\r\n cursor: pointer;\r\n user-select: none;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n .node-content:hover {\r\n background-color: var(--bp-color-surface-subdued);\r\n }\r\n\r\n .node-content:focus {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .node-content:focus:not(:focus-visible) {\r\n outline: none;\r\n }\r\n\r\n .node-content:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n /* Selected state */\r\n .node-content--selected {\r\n background-color: oklch(from var(--bp-color-primary) l c h / 0.15);\r\n color: var(--bp-color-primary);\r\n }\r\n\r\n .node-content--selected:hover {\r\n background-color: oklch(from var(--bp-color-primary) l c h / 0.2);\r\n }\r\n\r\n /* Active state */\r\n .node-content:active {\r\n background-color: var(--bp-color-surface-subdued);\r\n transform: translateY(1px);\r\n }\r\n\r\n .node-content--selected:active {\r\n background-color: oklch(from var(--bp-color-primary) l c h / 0.25);\r\n }\r\n\r\n /* Toggle icon */\r\n .node-toggle {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--bp-spacing-5);\r\n height: var(--bp-spacing-5);\r\n flex-shrink: 0;\r\n visibility: hidden;\r\n }\r\n\r\n .node-toggle--visible {\r\n visibility: visible;\r\n }\r\n\r\n .node-toggle--visible:hover {\r\n background-color: var(--bp-color-surface-subdued);\r\n border-radius: var(--bp-border-radius-sm);\r\n }\r\n\r\n .toggle-icon {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n transition: transform var(--bp-transition-fast) ease-out;\r\n }\r\n\r\n .toggle-icon--expanded {\r\n transform: rotate(90deg);\r\n }\r\n\r\n /* Node custom icon */\r\n .node-icon {\r\n flex-shrink: 0;\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n /* Node label */\r\n .node-label {\r\n flex: 1;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n /* Children container */\r\n .node-children {\r\n position: relative;\r\n content-visibility: auto;\r\n contain-intrinsic-size: auto 200px;\r\n }\r\n\r\n /* Expanded state visual cue */\r\n .node--expanded > .node-content {\r\n background-color: var(--bp-color-surface);\r\n }\r\n\r\n /* Disabled state */\r\n .node--disabled .node-content {\r\n cursor: not-allowed;\r\n }\r\n\r\n .node--disabled .node-label {\r\n opacity: var(--bp-opacity-disabled);\r\n }\r\n\r\n .node--disabled .node-content:hover {\r\n background-color: transparent;\r\n }\r\n\r\n /* Show lines variant */\r\n .tree--lines .node-children {\r\n margin-left: calc(var(--bp-spacing-4) + var(--bp-spacing-4));\r\n padding-left: var(--bp-spacing-4);\r\n border-left: var(--bp-border-width) solid var(--bp-color-border);\r\n }\r\n\r\n /* Sizes */\r\n .tree--sm {\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .tree--sm .node-content {\r\n padding: var(--bp-spacing-1) var(--bp-spacing-2);\r\n padding-left: calc(\r\n var(--bp-spacing-2) + var(--node-level, 0) * var(--bp-spacing-4)\r\n );\r\n }\r\n\r\n .tree--sm .node-toggle {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n }\r\n\r\n .tree--sm .toggle-icon {\r\n width: var(--bp-spacing-3);\r\n height: var(--bp-spacing-3);\r\n }\r\n\r\n .tree--lg {\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .tree--lg .node-content {\r\n padding: var(--bp-spacing-3) var(--bp-spacing-4);\r\n padding-left: calc(\r\n var(--bp-spacing-4) + var(--node-level, 0) * var(--bp-spacing-6)\r\n );\r\n }\r\n\r\n .tree--lg .node-toggle {\r\n width: var(--bp-spacing-6);\r\n height: var(--bp-spacing-6);\r\n }\r\n\r\n .tree--lg .toggle-icon {\r\n width: var(--bp-spacing-5);\r\n height: var(--bp-spacing-5);\r\n }\r\n\r\n /* Link nodes — reset anchor styles so links look like regular nodes */\r\n a.node-content {\r\n text-decoration: none;\r\n color: inherit;\r\n }\r\n\r\n a.node-content:visited {\r\n color: inherit;\r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .node-content,\r\n .toggle-icon {\r\n transition: none;\r\n }\r\n\r\n .node-content:active {\r\n transform: none;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { ifDefined } from 'lit/directives/if-defined.js';\r\nimport { repeat } from 'lit/directives/repeat.js';\r\nimport { treeStyles } from './tree.style.js';\r\nimport { memoizeOne } from '../../utilities/memoize.js';\r\nimport '../icon/icon.js';\r\n\r\n/**\r\n * Tree node data structure\r\n */\r\nexport interface TreeNode {\r\n /** Unique identifier for the node */\r\n id: string;\r\n /** Display label */\r\n label: string;\r\n /** Optional icon name */\r\n icon?: string;\r\n /** URL to navigate to when the node is clicked */\r\n href?: string;\r\n /** Child nodes */\r\n children?: TreeNode[];\r\n /** Whether the node is disabled */\r\n disabled?: boolean;\r\n /** Custom data attached to the node */\r\n data?: unknown;\r\n}\r\n\r\n/**\r\n * A hierarchical tree component for displaying nested data structures.\r\n *\r\n * @fires bp-select - Fired when a node is selected. Detail: { node: TreeNode, path: string[] }\r\n * @fires bp-expand - Fired when a node is expanded. Detail: { node: TreeNode, expanded: boolean }\r\n * @fires bp-collapse - Fired when a node is collapsed. Detail: { node: TreeNode, expanded: boolean }\r\n * @fires bp-navigate - Fired when a node with href is clicked. Detail: { node: TreeNode, href: string, path: string[] }. Call preventDefault() to handle navigation yourself.\r\n *\r\n * @slot - Default slot for custom tree items (when not using data prop)\r\n *\r\n * @csspart tree - The tree container\r\n * @csspart node - Individual tree nodes\r\n * @csspart node-content - The clickable content area of a node\r\n * @csspart node-icon - The expand/collapse icon\r\n * @csspart node-label - The node label text\r\n * @csspart node-children - Container for child nodes\r\n */\r\n@customElement('bp-tree')\r\nexport class BpTree extends LitElement {\r\n /** Array of tree nodes to render */\r\n @property({ type: Array }) declare nodes: TreeNode[];\r\n\r\n /** Currently selected node ID */\r\n @property({ type: String, reflect: true }) declare selectedId: string | null;\r\n\r\n /** Array of expanded node IDs */\r\n @property({ type: Array }) declare expandedIds: string[];\r\n\r\n /** Whether multiple nodes can be selected */\r\n @property({ type: Boolean, reflect: true, attribute: 'multi-select' })\r\n declare multiSelect: boolean;\r\n\r\n /** Whether to show connecting lines between nodes */\r\n @property({ type: Boolean, reflect: true, attribute: 'show-lines' })\r\n declare showLines: boolean;\r\n\r\n /** Whether nodes can be selected */\r\n @property({ type: Boolean, reflect: true }) declare selectable: boolean;\r\n\r\n /** Size variant */\r\n @property({\r\n type: String,\r\n reflect: true,\r\n converter: {\r\n fromAttribute: (value: string | null) => {\r\n const valid = ['sm', 'md', 'lg'];\r\n return value && valid.includes(value) ? value : 'md';\r\n },\r\n },\r\n })\r\n declare size: 'sm' | 'md' | 'lg';\r\n\r\n /** Selected node IDs when multiSelect is true */\r\n @state() private selectedIds: string[] = [];\r\n\r\n /**\r\n * Memoized computation of expanded IDs as a Set for O(1) lookups.\r\n * Only recomputes when expandedIds reference changes.\r\n */\r\n private computeExpandedSet = memoizeOne(\r\n (expandedIds: string[]): Set<string> => new Set(expandedIds)\r\n );\r\n\r\n /**\r\n * Get the memoized expanded set for fast lookups during rendering.\r\n */\r\n private get expandedSet(): Set<string> {\r\n return this.computeExpandedSet(this.expandedIds);\r\n }\r\n\r\n static styles = [treeStyles];\r\n\r\n constructor() {\r\n super();\r\n this.nodes = [];\r\n this.selectedId = null;\r\n this.expandedIds = [];\r\n this.multiSelect = false;\r\n this.showLines = false;\r\n this.selectable = true;\r\n this.size = 'md';\r\n }\r\n\r\n /**\r\n * Expand a node by ID.\r\n * Adds the node to expandedIds and dispatches bp-expand event.\r\n *\r\n * @param nodeId - The ID of the node to expand\r\n */\r\n expand(nodeId: string): void {\r\n if (!this.expandedSet.has(nodeId)) {\r\n this.expandedIds = [...this.expandedIds, nodeId];\r\n const node = this.findNode(nodeId, this.nodes);\r\n if (node) {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-expand', {\r\n detail: { node, expanded: true },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Collapse a node by ID.\r\n * Removes the node from expandedIds and dispatches bp-collapse event.\r\n *\r\n * @param nodeId - The ID of the node to collapse\r\n */\r\n collapse(nodeId: string): void {\r\n if (this.expandedSet.has(nodeId)) {\r\n this.expandedIds = this.expandedIds.filter((id) => id !== nodeId);\r\n const node = this.findNode(nodeId, this.nodes);\r\n if (node) {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-collapse', {\r\n detail: { node, expanded: false },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Toggle a node's expanded state.\r\n * Calls expand() if collapsed, collapse() if expanded.\r\n *\r\n * @param nodeId - The ID of the node to toggle\r\n */\r\n toggle(nodeId: string): void {\r\n if (this.expandedSet.has(nodeId)) {\r\n this.collapse(nodeId);\r\n } else {\r\n this.expand(nodeId);\r\n }\r\n }\r\n\r\n /**\r\n * Expand all nodes in the tree.\r\n * Sets expandedIds to include all nodes with children.\r\n */\r\n expandAll(): void {\r\n const allIds = this.getAllNodeIds(this.nodes);\r\n this.expandedIds = allIds;\r\n }\r\n\r\n /**\r\n * Collapse all nodes in the tree.\r\n * Clears the expandedIds array.\r\n */\r\n collapseAll(): void {\r\n this.expandedIds = [];\r\n }\r\n\r\n /**\r\n * Select a node by ID.\r\n * Respects multiSelect setting and disabled state.\r\n * Dispatches bp-select event with node, selectedIds, and path.\r\n *\r\n * @param nodeId - The ID of the node to select\r\n */\r\n selectNode(nodeId: string): void {\r\n const node = this.findNode(nodeId, this.nodes);\r\n if (!node || node.disabled) return;\r\n\r\n if (this.multiSelect) {\r\n if (this.selectedIds.includes(nodeId)) {\r\n this.selectedIds = this.selectedIds.filter((id) => id !== nodeId);\r\n } else {\r\n this.selectedIds = [...this.selectedIds, nodeId];\r\n }\r\n } else {\r\n this.selectedId = nodeId;\r\n }\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-select', {\r\n detail: {\r\n node,\r\n selectedIds: this.multiSelect ? this.selectedIds : [nodeId],\r\n path: this.getNodePath(nodeId, this.nodes),\r\n },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Clear all selections.\r\n * Resets both selectedId and selectedIds.\r\n */\r\n clearSelection(): void {\r\n this.selectedId = null;\r\n this.selectedIds = [];\r\n }\r\n\r\n /**\r\n * Recursively finds a node by ID in the tree structure.\r\n *\r\n * @param nodeId - The ID to search for\r\n * @param nodes - The array of nodes to search within\r\n * @returns The found node or null if not found\r\n */\r\n private findNode(nodeId: string, nodes: TreeNode[]): TreeNode | null {\r\n for (const node of nodes) {\r\n if (node.id === nodeId) return node;\r\n if (node.children) {\r\n const found = this.findNode(nodeId, node.children);\r\n if (found) return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Recursively collects all node IDs that have children.\r\n * Used for expandAll functionality.\r\n *\r\n * @param nodes - The array of nodes to collect IDs from\r\n * @returns Array of node IDs that have children\r\n */\r\n private getAllNodeIds(nodes: TreeNode[]): string[] {\r\n const ids: string[] = [];\r\n for (const node of nodes) {\r\n if (node.children && node.children.length > 0) {\r\n ids.push(node.id);\r\n ids.push(...this.getAllNodeIds(node.children));\r\n }\r\n }\r\n return ids;\r\n }\r\n\r\n /**\r\n * Gets the path from root to a specific node.\r\n * Returns an array of node IDs representing the path.\r\n *\r\n * @param nodeId - The target node ID\r\n * @param nodes - The array of nodes to search within\r\n * @param path - Accumulator for the current path (used in recursion)\r\n * @returns Array of node IDs from root to target\r\n */\r\n private getNodePath(\r\n nodeId: string,\r\n nodes: TreeNode[],\r\n path: string[] = []\r\n ): string[] {\r\n for (const node of nodes) {\r\n if (node.id === nodeId) {\r\n return [...path, node.id];\r\n }\r\n if (node.children) {\r\n const foundPath = this.getNodePath(nodeId, node.children, [\r\n ...path,\r\n node.id,\r\n ]);\r\n if (foundPath.length > path.length + 1) {\r\n return foundPath;\r\n }\r\n }\r\n }\r\n return path;\r\n }\r\n\r\n /**\r\n * Handles click events on tree nodes.\r\n * For nodes with href, dispatches bp-navigate and follows the link unless prevented.\r\n * For other nodes, selects the node if selectable and not disabled.\r\n *\r\n * @param event - The click event\r\n * @param node - The node that was clicked\r\n */\r\n private handleNodeClick(event: Event, node: TreeNode): void {\r\n event.stopPropagation();\r\n\r\n if (node.href && !node.disabled) {\r\n const navigateEvent = new CustomEvent('bp-navigate', {\r\n detail: {\r\n node,\r\n href: node.href,\r\n path: this.getNodePath(node.id, this.nodes),\r\n },\r\n bubbles: true,\r\n composed: true,\r\n cancelable: true,\r\n });\r\n const allowed = this.dispatchEvent(navigateEvent);\r\n if (allowed) {\r\n // Default navigation — let the <a> handle it naturally\r\n return;\r\n }\r\n // Consumer called preventDefault(); suppress default link behavior\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (this.selectable && !node.disabled) {\r\n this.selectNode(node.id);\r\n }\r\n }\r\n\r\n /**\r\n * Handles click events on the expand/collapse toggle icon.\r\n * Prevents event propagation to avoid triggering node selection.\r\n *\r\n * @param event - The click event\r\n * @param node - The node whose toggle was clicked\r\n */\r\n private handleToggleClick(event: Event, node: TreeNode): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n this.toggle(node.id);\r\n }\r\n\r\n /**\r\n * Handles keyboard navigation on tree nodes.\r\n * Enter/Space: select node\r\n * ArrowRight: expand node (if has children and collapsed)\r\n * ArrowLeft: collapse node (if has children and expanded)\r\n *\r\n * @param event - The keyboard event\r\n * @param node - The node that received the keyboard event\r\n */\r\n private handleKeyDown(event: KeyboardEvent, node: TreeNode): void {\r\n const hasChildren = node.children && node.children.length > 0;\r\n const isExpanded = this.expandedSet.has(node.id);\r\n\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n if (node.href && !node.disabled) {\r\n this.handleNodeClick(event, node);\r\n } else if (this.selectable && !node.disabled) {\r\n this.selectNode(node.id);\r\n }\r\n break;\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n if (hasChildren && !isExpanded) {\r\n this.expand(node.id);\r\n }\r\n break;\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n if (hasChildren && isExpanded) {\r\n this.collapse(node.id);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Checks if a node is currently selected.\r\n * Handles both single and multi-select modes.\r\n *\r\n * @param nodeId - The node ID to check\r\n * @returns True if the node is selected\r\n */\r\n private isSelected(nodeId: string): boolean {\r\n if (this.multiSelect) {\r\n return this.selectedIds.includes(nodeId);\r\n }\r\n return this.selectedId === nodeId;\r\n }\r\n\r\n /**\r\n * Recursively renders a tree node and its children.\r\n * Handles expand/collapse state, selection, and disabled state.\r\n *\r\n * @param node - The node to render\r\n * @param level - The nesting level (0 for root)\r\n * @returns Lit template result\r\n */\r\n private renderNode(node: TreeNode, level: number = 0): unknown {\r\n const hasChildren = node.children && node.children.length > 0;\r\n const isExpanded = this.expandedSet.has(node.id);\r\n const isSelected = this.isSelected(node.id);\r\n\r\n const contentClasses = `node-content ${isSelected ? 'node-content--selected' : ''} ${node.href ? 'node-content--link' : ''}`;\r\n\r\n const contentInner = html`\r\n <span\r\n class=\"node-toggle ${hasChildren ? 'node-toggle--visible' : ''}\"\r\n part=\"node-icon\"\r\n @click=${(e: Event) => this.handleToggleClick(e, node)}\r\n >\r\n ${hasChildren\r\n ? html`<bp-icon\r\n class=\"toggle-icon ${isExpanded ? 'toggle-icon--expanded' : ''}\"\r\n name=\"chevron-right\"\r\n size=\"sm\"\r\n ></bp-icon>`\r\n : nothing}\r\n </span>\r\n ${node.icon\r\n ? html`<bp-icon\r\n class=\"node-icon\"\r\n part=\"node-custom-icon\"\r\n name=${node.icon}\r\n size=\"sm\"\r\n ></bp-icon>`\r\n : nothing}\r\n <span class=\"node-label\" part=\"node-label\">${node.label}</span>\r\n `;\r\n\r\n const nodeContent = node.href\r\n ? html`\r\n <a\r\n class=${contentClasses}\r\n part=\"node-content\"\r\n href=${node.href}\r\n tabindex=${node.disabled ? -1 : 0}\r\n @click=${(e: Event) => this.handleNodeClick(e, node)}\r\n @keydown=${(e: KeyboardEvent) => this.handleKeyDown(e, node)}\r\n >\r\n ${contentInner}\r\n </a>\r\n `\r\n : html`\r\n <div\r\n class=${contentClasses}\r\n part=\"node-content\"\r\n tabindex=${node.disabled ? -1 : 0}\r\n @click=${(e: Event) => this.handleNodeClick(e, node)}\r\n @keydown=${(e: KeyboardEvent) => this.handleKeyDown(e, node)}\r\n >\r\n ${contentInner}\r\n </div>\r\n `;\r\n\r\n return html`\r\n <div\r\n class=\"node ${node.disabled ? 'node--disabled' : ''} ${hasChildren &&\r\n isExpanded\r\n ? 'node--expanded'\r\n : ''}\"\r\n part=\"node\"\r\n role=\"treeitem\"\r\n aria-expanded=${ifDefined(\r\n hasChildren ? (isExpanded ? 'true' : 'false') : undefined\r\n )}\r\n aria-selected=${ifDefined(\r\n this.selectable ? (isSelected ? 'true' : 'false') : undefined\r\n )}\r\n aria-disabled=${ifDefined(node.disabled ? 'true' : undefined)}\r\n style=\"--node-level: ${level}\"\r\n >\r\n ${nodeContent}\r\n ${hasChildren && isExpanded\r\n ? html`\r\n <div class=\"node-children\" part=\"node-children\" role=\"group\">\r\n ${repeat(\r\n node.children!,\r\n (child) => child.id,\r\n (child) => this.renderNode(child, level + 1)\r\n )}\r\n </div>\r\n `\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n const hasNodes = this.nodes && this.nodes.length > 0;\r\n\r\n return html`\r\n <div\r\n class=\"tree tree--${this.size} ${this.showLines ? 'tree--lines' : ''}\"\r\n part=\"tree\"\r\n role=\"tree\"\r\n aria-multiselectable=${ifDefined(this.multiSelect ? 'true' : undefined)}\r\n >\r\n ${hasNodes\r\n ? repeat(\r\n this.nodes,\r\n (node) => node.id,\r\n (node) => this.renderNode(node, 0)\r\n )\r\n : html`<slot></slot>`}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-tree': BpTree;\r\n }\r\n}\r\n","import { css } from 'lit';\n\nexport const drawerStyles = css`\n /* Base styles */\n :host {\n display: contents;\n }\n\n .drawer {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n color: var(--bp-color-text);\n }\n\n /* Overlay mode */\n .drawer--overlay {\n position: fixed;\n inset: 0;\n z-index: var(--bp-z-modal);\n pointer-events: none;\n }\n\n .drawer--overlay.drawer--open {\n pointer-events: auto;\n }\n\n /* Backdrop */\n .backdrop {\n position: absolute;\n inset: 0;\n background-color: oklch(from var(--bp-color-text) l c h / 0.5);\n opacity: 0;\n transition: opacity var(--bp-transition-base) ease-out;\n }\n\n .backdrop--visible {\n opacity: 1;\n }\n\n /* Panel base */\n .panel {\n position: absolute;\n display: flex;\n flex-direction: column;\n background-color: var(--bp-color-surface);\n box-shadow: var(--bp-shadow-xl);\n transition: transform var(--bp-transition-base) ease-out;\n overflow: hidden;\n }\n\n .drawer--overlay .panel:focus {\n outline: none;\n }\n\n /* Horizontal drawers (left/right) */\n .drawer--horizontal .panel {\n top: 0;\n bottom: 0;\n height: 100%;\n }\n\n .drawer--left .panel {\n left: 0;\n transform: translateX(-100%);\n }\n\n .drawer--left .panel--open {\n transform: translateX(0);\n }\n\n .drawer--right .panel {\n right: 0;\n transform: translateX(100%);\n }\n\n .drawer--right .panel--open {\n transform: translateX(0);\n }\n\n /* Vertical drawers (top/bottom) */\n .drawer--vertical .panel {\n left: 0;\n right: 0;\n width: 100%;\n }\n\n .drawer--top .panel {\n top: 0;\n transform: translateY(-100%);\n }\n\n .drawer--top .panel--open {\n transform: translateY(0);\n }\n\n .drawer--bottom .panel {\n bottom: 0;\n transform: translateY(100%);\n }\n\n .drawer--bottom .panel--open {\n transform: translateY(0);\n }\n\n /* Sizes - horizontal (width) */\n .drawer--horizontal.drawer--sm .panel {\n width: calc(var(--bp-spacing-24) * 3);\n }\n\n .drawer--horizontal.drawer--md .panel {\n width: calc(var(--bp-spacing-24) * 4 + var(--bp-spacing-16));\n }\n\n .drawer--horizontal.drawer--lg .panel {\n width: var(--bp-breakpoint-sm);\n }\n\n .drawer--horizontal.drawer--full .panel {\n width: 100%;\n }\n\n /* Sizes - vertical (height) */\n .drawer--vertical.drawer--sm .panel {\n height: calc(var(--bp-spacing-24) * 2);\n }\n\n .drawer--vertical.drawer--md .panel {\n height: calc(var(--bp-spacing-24) * 3 + var(--bp-spacing-8));\n }\n\n .drawer--vertical.drawer--lg .panel {\n height: calc(var(--bp-spacing-24) * 5);\n }\n\n .drawer--vertical.drawer--full .panel {\n height: 100%;\n }\n\n /* Header */\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--bp-spacing-4);\n padding: var(--bp-spacing-4) var(--bp-spacing-5);\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\n flex-shrink: 0;\n }\n\n .header--empty {\n display: none;\n }\n\n .header ::slotted(*) {\n margin: 0;\n font-size: var(--bp-font-size-lg);\n font-weight: var(--bp-font-weight-semibold);\n }\n\n /* Body */\n .body {\n flex: 1;\n overflow-y: auto;\n padding: var(--bp-spacing-5);\n }\n\n /* Footer */\n .footer {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-4);\n padding: var(--bp-spacing-4) var(--bp-spacing-5);\n border-top: var(--bp-border-width) solid var(--bp-color-border);\n flex-shrink: 0;\n }\n\n /* Close button */\n .close-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n padding: 0;\n margin-left: auto;\n background: transparent;\n border: none;\n border-radius: var(--bp-border-radius-sm);\n color: var(--bp-color-text-muted);\n cursor: pointer;\n transition:\n background-color var(--bp-transition-fast),\n color var(--bp-transition-fast),\n transform var(--bp-transition-fast);\n }\n\n .close-button:hover {\n background-color: var(--bp-color-surface-subdued);\n color: var(--bp-color-text);\n }\n\n .close-button:active {\n background-color: var(--bp-color-surface-pressed);\n transform: translateY(1px);\n }\n\n .close-button:focus {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n .close-button:focus:not(:focus-visible) {\n outline: none;\n }\n\n .close-button:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n /* Inline mode - static sidebar */\n .drawer--inline {\n display: block;\n }\n\n .drawer--inline .panel {\n position: relative;\n transform: none;\n box-shadow: none;\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n }\n\n .drawer--inline.drawer--horizontal {\n height: 100%;\n }\n\n .drawer--inline.drawer--vertical {\n width: 100%;\n }\n\n /* Inline sizes - horizontal */\n .drawer--inline.drawer--horizontal.drawer--small {\n width: calc(var(--bp-spacing-24) * 3);\n }\n\n .drawer--inline.drawer--horizontal.drawer--medium {\n width: calc(var(--bp-spacing-24) * 4 + var(--bp-spacing-16));\n }\n\n .drawer--inline.drawer--horizontal.drawer--large {\n width: var(--bp-breakpoint-sm);\n }\n\n .drawer--inline.drawer--horizontal.drawer--full {\n width: 100%;\n }\n\n /* Inline sizes - vertical */\n .drawer--inline.drawer--vertical.drawer--small .panel {\n height: calc(var(--bp-spacing-24) * 2);\n }\n\n .drawer--inline.drawer--vertical.drawer--medium .panel {\n height: calc(var(--bp-spacing-24) * 3 + var(--bp-spacing-8));\n }\n\n .drawer--inline.drawer--vertical.drawer--large .panel {\n height: calc(var(--bp-spacing-24) * 5);\n }\n\n .drawer--inline.drawer--vertical.drawer--full .panel {\n height: auto;\n }\n\n /* Border positioning for inline drawers */\n .drawer--inline.drawer--left .panel {\n border-left: none;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .drawer--inline.drawer--right .panel {\n border-right: none;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .drawer--inline.drawer--top .panel {\n border-top: none;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n .drawer--inline.drawer--bottom .panel {\n border-bottom: none;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n /* Reduced motion */\n @media (prefers-reduced-motion: reduce) {\n .panel {\n transition: none;\n }\n\n .backdrop {\n transition: none;\n }\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { drawerStyles } from './drawer.style.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\nimport '../icon/icon.js';\r\n\r\nexport type DrawerPlacement = 'left' | 'right' | 'top' | 'bottom';\r\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'full';\r\n\r\n/**\r\n * A slide-in panel component that can appear from any edge of the viewport.\r\n *\r\n * @fires bp-open - Fired when the drawer opens\r\n * @fires bp-close - Fired when the drawer closes (includes reason: 'escape' | 'backdrop' | 'close-button' | 'api')\r\n * @fires bp-after-open - Fired after open animation completes\r\n * @fires bp-after-close - Fired after close animation completes\r\n *\r\n * @slot - Default slot for drawer content\r\n * @slot header - Optional header content\r\n * @slot footer - Optional footer content\r\n *\r\n * @csspart drawer - The drawer container\r\n * @csspart backdrop - The backdrop overlay (when not inline)\r\n * @csspart panel - The drawer panel\r\n * @csspart header - The header section\r\n * @csspart body - The body/content section\r\n * @csspart footer - The footer section\r\n * @csspart close-button - The close button\r\n */\r\n@customElement('bp-drawer')\r\nexport class BpDrawer extends LitElement {\r\n /** Whether the drawer is open */\r\n @property({ type: Boolean, reflect: true }) declare open: boolean;\r\n\r\n /** Which edge the drawer slides in from */\r\n @property({\r\n type: String,\r\n reflect: true,\r\n converter: {\r\n fromAttribute: (value: string | null) => {\r\n const valid = ['left', 'right', 'top', 'bottom'];\r\n return value && valid.includes(value)\r\n ? (value as DrawerPlacement)\r\n : 'left';\r\n },\r\n },\r\n })\r\n declare placement: DrawerPlacement;\r\n\r\n /** Size of the drawer (width for left/right, height for top/bottom) */\r\n @property({\r\n type: String,\r\n reflect: true,\r\n converter: {\r\n fromAttribute: (value: string | null) => {\r\n const valid = ['sm', 'md', 'lg', 'full'];\r\n return value && valid.includes(value) ? (value as DrawerSize) : 'md';\r\n },\r\n },\r\n })\r\n declare size: DrawerSize;\r\n\r\n /** Whether to show the close button */\r\n @property({\r\n converter: booleanConverter,\r\n attribute: 'show-close',\r\n reflect: true,\r\n })\r\n declare showClose: boolean;\r\n\r\n /** Whether clicking the backdrop closes the drawer */\r\n @property({\r\n converter: booleanConverter,\r\n attribute: 'close-on-backdrop',\r\n reflect: true,\r\n })\r\n declare closeOnBackdrop: boolean;\r\n\r\n /** Whether pressing Escape closes the drawer */\r\n @property({\r\n converter: booleanConverter,\r\n attribute: 'close-on-escape',\r\n reflect: true,\r\n })\r\n declare closeOnEscape: boolean;\r\n\r\n /** Whether to show the backdrop overlay */\r\n @property({\r\n converter: booleanConverter,\r\n attribute: 'show-backdrop',\r\n reflect: true,\r\n })\r\n declare showBackdrop: boolean;\r\n\r\n /** Accessible label for the drawer */\r\n @property({ type: String }) declare label: string;\r\n\r\n /**\r\n * Whether the drawer is rendered inline (always visible, part of document flow).\r\n * When true, the drawer acts as a static sidebar without overlay behavior.\r\n */\r\n @property({ type: Boolean, reflect: true }) declare inline: boolean;\r\n\r\n /** Whether the drawer has a header slot content */\r\n @property({ type: Boolean, attribute: false }) private hasHeader = false;\r\n\r\n /** Whether the drawer has a footer slot content */\r\n @property({ type: Boolean, attribute: false }) private hasFooter = false;\r\n\r\n private previouslyFocusedElement: HTMLElement | null = null;\r\n\r\n static styles = [drawerStyles];\r\n\r\n constructor() {\r\n super();\r\n this.open = false;\r\n this.placement = 'left';\r\n this.size = 'md';\r\n this.showClose = true;\r\n this.closeOnBackdrop = true;\r\n this.closeOnEscape = true;\r\n this.showBackdrop = true;\r\n this.label = '';\r\n this.inline = false;\r\n }\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n this.addEventListener('keydown', this.handleKeyDown);\r\n }\r\n\r\n disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this.removeEventListener('keydown', this.handleKeyDown);\r\n }\r\n\r\n /**\r\n * Open the drawer.\r\n * Sets open property to true and manages focus/scroll behavior.\r\n *\r\n * @fires bp-open - Emitted when the drawer opens\r\n * @fires bp-after-open - Emitted after open animation completes\r\n */\r\n show(): void {\r\n if (this.open) return;\r\n this.open = true;\r\n }\r\n\r\n /**\r\n * Close the drawer.\r\n * Sets open property to false if bp-close event is not prevented.\r\n *\r\n * @param reason - The reason the drawer was closed\r\n * @fires bp-close - Emitted when the drawer closes (cancelable)\r\n * @fires bp-after-close - Emitted after close animation completes\r\n */\r\n hide(reason: 'escape' | 'backdrop' | 'close-button' | 'api' = 'api'): void {\r\n if (!this.open) return;\r\n\r\n const event = new CustomEvent('bp-close', {\r\n detail: { reason },\r\n bubbles: true,\r\n composed: true,\r\n cancelable: true,\r\n });\r\n\r\n this.dispatchEvent(event);\r\n\r\n if (!event.defaultPrevented) {\r\n this.open = false;\r\n }\r\n }\r\n\r\n /**\r\n * Toggle the drawer open/closed state.\r\n * Calls hide() if open, show() if closed.\r\n */\r\n toggle(): void {\r\n if (this.open) {\r\n this.hide('api');\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n protected updated(changedProperties: Map<string, unknown>): void {\r\n if (changedProperties.has('open')) {\r\n if (this.open) {\r\n this.handleOpen();\r\n } else {\r\n this.handleClose();\r\n }\r\n }\r\n }\r\n\r\n private handleOpen(): void {\r\n if (!this.inline) {\r\n // Store currently focused element\r\n this.previouslyFocusedElement = document.activeElement as HTMLElement;\r\n\r\n // Prevent body scroll\r\n document.body.style.overflow = 'hidden';\r\n }\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-open', {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n\r\n // Focus the drawer panel for accessibility\r\n this.updateComplete.then(() => {\r\n const panel = this.shadowRoot?.querySelector('.panel') as HTMLElement;\r\n panel?.focus();\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-after-open', {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n });\r\n }\r\n\r\n private handleClose(): void {\r\n if (!this.inline) {\r\n // Restore body scroll\r\n document.body.style.overflow = '';\r\n\r\n // Restore focus\r\n if (this.previouslyFocusedElement) {\r\n this.previouslyFocusedElement.focus();\r\n this.previouslyFocusedElement = null;\r\n }\r\n }\r\n\r\n this.updateComplete.then(() => {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-after-close', {\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n });\r\n }\r\n\r\n private handleKeyDown = (event: KeyboardEvent): void => {\r\n if (\r\n event.key === 'Escape' &&\r\n this.closeOnEscape &&\r\n this.open &&\r\n !this.inline\r\n ) {\r\n event.preventDefault();\r\n this.hide('escape');\r\n }\r\n };\r\n\r\n /**\r\n * Handles click events on the backdrop overlay.\r\n * Closes the drawer if closeOnBackdrop is true.\r\n */\r\n private handleBackdropClick = (): void => {\r\n if (this.closeOnBackdrop) {\r\n this.hide('backdrop');\r\n }\r\n };\r\n\r\n /**\r\n * Handles click events on the close button.\r\n * Closes the drawer with reason 'close-button'.\r\n */\r\n private handleCloseClick = (): void => {\r\n this.hide('close-button');\r\n };\r\n\r\n /**\r\n * Handles slot change events for the header slot.\r\n * Updates hasHeader state to control header visibility.\r\n *\r\n * @param event - The slotchange event\r\n */\r\n private handleHeaderSlotChange = (event: Event): void => {\r\n const slot = event.target as HTMLElement & {\r\n assignedNodes: (options?: { flatten?: boolean }) => Node[];\r\n };\r\n this.hasHeader = slot.assignedNodes({ flatten: true }).length > 0;\r\n };\r\n\r\n /**\r\n * Handles slot change events for the footer slot.\r\n * Updates hasFooter state to control footer visibility.\r\n *\r\n * @param event - The slotchange event\r\n */\r\n private handleFooterSlotChange = (event: Event): void => {\r\n const slot = event.target as HTMLElement & {\r\n assignedNodes: (options?: { flatten?: boolean }) => Node[];\r\n };\r\n this.hasFooter = slot.assignedNodes({ flatten: true }).length > 0;\r\n };\r\n\r\n render() {\r\n const isHorizontal =\r\n this.placement === 'left' || this.placement === 'right';\r\n\r\n // Inline mode: always visible, no backdrop, no overlay behavior\r\n if (this.inline) {\r\n return html`\r\n <aside\r\n class=\"drawer drawer--inline drawer--${this.placement} drawer--${this\r\n .size} ${isHorizontal ? 'drawer--horizontal' : 'drawer--vertical'}\"\r\n part=\"drawer\"\r\n role=\"complementary\"\r\n aria-label=${this.label || nothing}\r\n >\r\n <div class=\"panel\" part=\"panel\">\r\n ${this.hasHeader || this.showClose\r\n ? html`\r\n <header class=\"header\" part=\"header\">\r\n <slot\r\n name=\"header\"\r\n @slotchange=${this.handleHeaderSlotChange}\r\n ></slot>\r\n </header>\r\n `\r\n : html`<slot\r\n name=\"header\"\r\n @slotchange=${this.handleHeaderSlotChange}\r\n ></slot>`}\r\n <div class=\"body\" part=\"body\">\r\n <slot></slot>\r\n </div>\r\n ${this.hasFooter\r\n ? html`\r\n <footer class=\"footer\" part=\"footer\">\r\n <slot\r\n name=\"footer\"\r\n @slotchange=${this.handleFooterSlotChange}\r\n ></slot>\r\n </footer>\r\n `\r\n : html`<slot\r\n name=\"footer\"\r\n @slotchange=${this.handleFooterSlotChange}\r\n ></slot>`}\r\n </div>\r\n </aside>\r\n `;\r\n }\r\n\r\n // Overlay mode: slide-in panel with backdrop\r\n return html`\r\n <div\r\n class=\"drawer drawer--overlay drawer--${this.placement} drawer--${this\r\n .size} ${isHorizontal\r\n ? 'drawer--horizontal'\r\n : 'drawer--vertical'} ${this.open ? 'drawer--open' : ''}\"\r\n part=\"drawer\"\r\n >\r\n ${this.showBackdrop\r\n ? html`\r\n <div\r\n class=\"backdrop ${this.open ? 'backdrop--visible' : ''}\"\r\n part=\"backdrop\"\r\n @click=${this.handleBackdropClick}\r\n aria-hidden=\"true\"\r\n ></div>\r\n `\r\n : nothing}\r\n <aside\r\n class=\"panel ${this.open ? 'panel--open' : ''}\"\r\n part=\"panel\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=${this.label || nothing}\r\n tabindex=\"-1\"\r\n >\r\n <header\r\n class=\"header ${this.hasHeader || this.showClose\r\n ? ''\r\n : 'header--empty'}\"\r\n part=\"header\"\r\n >\r\n <slot\r\n name=\"header\"\r\n @slotchange=${this.handleHeaderSlotChange}\r\n ></slot>\r\n ${this.showClose\r\n ? html`\r\n <button\r\n class=\"close-button\"\r\n part=\"close-button\"\r\n type=\"button\"\r\n aria-label=\"Close drawer\"\r\n @click=${this.handleCloseClick}\r\n >\r\n <bp-icon name=\"close\" size=\"sm\"></bp-icon>\r\n </button>\r\n `\r\n : nothing}\r\n </header>\r\n <div class=\"body\" part=\"body\">\r\n <slot></slot>\r\n </div>\r\n ${this.hasFooter\r\n ? html`\r\n <footer class=\"footer\" part=\"footer\">\r\n <slot\r\n name=\"footer\"\r\n @slotchange=${this.handleFooterSlotChange}\r\n ></slot>\r\n </footer>\r\n `\r\n : html`<slot\r\n name=\"footer\"\r\n @slotchange=${this.handleFooterSlotChange}\r\n ></slot>`}\r\n </aside>\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-drawer': BpDrawer;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const popoverStyles = css`\r\n /* Base styles */\r\n :host {\r\n display: inline-block;\r\n position: relative;\r\n }\r\n\r\n .popover {\r\n position: relative;\r\n display: inline-block;\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-base);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n /* Trigger */\r\n .popover__trigger {\r\n display: inline-flex;\r\n align-items: center;\r\n cursor: pointer;\r\n outline: none;\r\n user-select: none;\r\n }\r\n\r\n .popover__trigger:hover {\r\n opacity: 0.8;\r\n }\r\n\r\n .popover__trigger:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n border-radius: var(--bp-border-radius-sm);\r\n }\r\n\r\n .popover--disabled .popover__trigger {\r\n cursor: not-allowed;\r\n opacity: var(--bp-opacity-disabled);\r\n }\r\n\r\n /* Panel base */\r\n .popover__panel {\r\n position: absolute;\r\n z-index: var(--bp-z-popover);\r\n min-width: 160px;\r\n max-width: 320px;\r\n max-height: calc(100vh - 80px);\r\n background-color: var(--bp-color-surface-elevated);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-lg);\r\n box-shadow: var(--bp-shadow-lg);\r\n opacity: 1;\r\n animation: popover-fade-in var(--bp-transition-fast) ease-out;\r\n }\r\n\r\n @keyframes popover-fade-in {\r\n from {\r\n opacity: 0;\r\n transform: scale(0.95);\r\n }\r\n to {\r\n opacity: 1;\r\n transform: scale(1);\r\n }\r\n }\r\n\r\n /* Panel placements - Bottom */\r\n .popover__panel--bottom,\r\n .popover__panel--bottom-start,\r\n .popover__panel--bottom-end {\r\n top: 100%;\r\n margin-top: var(--popover-distance);\r\n }\r\n\r\n .popover__panel--bottom {\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n\r\n .popover__panel--bottom-start {\r\n left: 0;\r\n }\r\n\r\n .popover__panel--bottom-end {\r\n right: 0;\r\n }\r\n\r\n /* Panel placements - Top */\r\n .popover__panel--top,\r\n .popover__panel--top-start,\r\n .popover__panel--top-end {\r\n bottom: 100%;\r\n margin-bottom: var(--popover-distance);\r\n }\r\n\r\n .popover__panel--top {\r\n left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n\r\n .popover__panel--top-start {\r\n left: 0;\r\n }\r\n\r\n .popover__panel--top-end {\r\n right: 0;\r\n }\r\n\r\n /* Panel placements - Left */\r\n .popover__panel--left,\r\n .popover__panel--left-start,\r\n .popover__panel--left-end {\r\n right: 100%;\r\n margin-right: var(--popover-distance);\r\n }\r\n\r\n .popover__panel--left {\r\n top: 50%;\r\n transform: translateY(-50%);\r\n }\r\n\r\n .popover__panel--left-start {\r\n top: 0;\r\n }\r\n\r\n .popover__panel--left-end {\r\n bottom: 0;\r\n }\r\n\r\n /* Panel placements - Right */\r\n .popover__panel--right,\r\n .popover__panel--right-start,\r\n .popover__panel--right-end {\r\n left: 100%;\r\n margin-left: var(--popover-distance);\r\n }\r\n\r\n .popover__panel--right {\r\n top: 50%;\r\n transform: translateY(-50%);\r\n }\r\n\r\n .popover__panel--right-start {\r\n top: 0;\r\n }\r\n\r\n .popover__panel--right-end {\r\n bottom: 0;\r\n }\r\n\r\n /* Arrow */\r\n .popover__arrow {\r\n position: absolute;\r\n width: var(--bp-spacing-5);\r\n height: var(--bp-spacing-5);\r\n background-color: var(--bp-color-surface-elevated);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n transform: rotate(45deg);\r\n z-index: -1;\r\n }\r\n\r\n /* Arrow positions - bottom placements */\r\n .popover__panel--bottom .popover__arrow,\r\n .popover__panel--bottom-start .popover__arrow,\r\n .popover__panel--bottom-end .popover__arrow {\r\n top: calc(var(--bp-spacing-2) * -1);\r\n border-bottom: none;\r\n border-right: none;\r\n }\r\n\r\n .popover__panel--bottom .popover__arrow {\r\n left: 50%;\r\n transform: translateX(-50%) rotate(45deg);\r\n }\r\n\r\n .popover__panel--bottom-start .popover__arrow {\r\n left: var(--bp-spacing-5);\r\n }\r\n\r\n .popover__panel--bottom-end .popover__arrow {\r\n right: var(--bp-spacing-5);\r\n }\r\n\r\n /* Arrow positions - top placements */\r\n .popover__panel--top .popover__arrow,\r\n .popover__panel--top-start .popover__arrow,\r\n .popover__panel--top-end .popover__arrow {\r\n bottom: calc(var(--bp-spacing-2) * -1);\r\n border-top: none;\r\n border-left: none;\r\n }\r\n\r\n .popover__panel--top .popover__arrow {\r\n left: 50%;\r\n transform: translateX(-50%) rotate(45deg);\r\n }\r\n\r\n .popover__panel--top-start .popover__arrow {\r\n left: var(--bp-spacing-5);\r\n }\r\n\r\n .popover__panel--top-end .popover__arrow {\r\n right: var(--bp-spacing-5);\r\n }\r\n\r\n /* Arrow positions - left placements */\r\n .popover__panel--left .popover__arrow,\r\n .popover__panel--left-start .popover__arrow,\r\n .popover__panel--left-end .popover__arrow {\r\n right: calc(var(--bp-spacing-2) * -1);\r\n border-left: none;\r\n border-bottom: none;\r\n }\r\n\r\n .popover__panel--left .popover__arrow {\r\n top: 50%;\r\n transform: translateY(-50%) rotate(45deg);\r\n }\r\n\r\n .popover__panel--left-start .popover__arrow {\r\n top: var(--bp-spacing-5);\r\n }\r\n\r\n .popover__panel--left-end .popover__arrow {\r\n bottom: var(--bp-spacing-5);\r\n }\r\n\r\n /* Arrow positions - right placements */\r\n .popover__panel--right .popover__arrow,\r\n .popover__panel--right-start .popover__arrow,\r\n .popover__panel--right-end .popover__arrow {\r\n left: calc(var(--bp-spacing-2) * -1);\r\n border-right: none;\r\n border-top: none;\r\n }\r\n\r\n .popover__panel--right .popover__arrow {\r\n top: 50%;\r\n transform: translateY(-50%) rotate(45deg);\r\n }\r\n\r\n .popover__panel--right-start .popover__arrow {\r\n top: var(--bp-spacing-5);\r\n }\r\n\r\n .popover__panel--right-end .popover__arrow {\r\n bottom: var(--bp-spacing-5);\r\n }\r\n\r\n /* Header */\r\n .popover__header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: var(--bp-spacing-4);\r\n padding: var(--bp-spacing-4) var(--bp-spacing-5);\r\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\r\n }\r\n\r\n .popover__header ::slotted(*) {\r\n margin: 0;\r\n font-size: var(--bp-font-size-base);\r\n font-weight: var(--bp-font-weight-semibold);\r\n color: var(--bp-color-text-strong);\r\n }\r\n\r\n /* Body */\r\n .popover__body {\r\n padding: var(--bp-spacing-4) var(--bp-spacing-5);\r\n overflow-y: auto;\r\n max-height: calc(100vh - 160px);\r\n }\r\n\r\n /* Footer */\r\n .popover__footer {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-4);\r\n padding: var(--bp-spacing-4) var(--bp-spacing-5);\r\n border-top: var(--bp-border-width) solid var(--bp-color-border);\r\n }\r\n\r\n /* Close button */\r\n .popover__close {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 44px;\r\n height: 44px;\r\n padding: 0;\r\n margin-left: auto;\r\n background: transparent;\r\n border: none;\r\n border-radius: var(--bp-border-radius-sm);\r\n color: var(--bp-color-text-muted);\r\n cursor: pointer;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast),\r\n transform var(--bp-transition-fast);\r\n }\r\n\r\n .popover__close:hover {\r\n background-color: var(--bp-color-surface-subdued);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n .popover__close:active {\r\n background-color: var(--bp-color-surface-pressed);\r\n transform: translateY(1px);\r\n }\r\n\r\n .popover__close:focus {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .popover__close:focus:not(:focus-visible) {\r\n outline: none;\r\n }\r\n\r\n .popover__close:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .popover__close bp-icon {\r\n width: var(--bp-spacing-4);\r\n height: var(--bp-spacing-4);\r\n }\r\n\r\n /* Reduced motion */\r\n @media (prefers-reduced-motion: reduce) {\r\n .popover__panel {\r\n animation: none;\r\n }\r\n\r\n .popover__close {\r\n transition: none;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html, nothing } from 'lit';\r\nimport { customElement, property, state, query } from 'lit/decorators.js';\r\nimport { popoverStyles } from './popover.style.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\nimport '../icon/icon.js';\r\n\r\nexport type PopoverPlacement =\r\n | 'top'\r\n | 'top-start'\r\n | 'top-end'\r\n | 'bottom'\r\n | 'bottom-start'\r\n | 'bottom-end'\r\n | 'left'\r\n | 'left-start'\r\n | 'left-end'\r\n | 'right'\r\n | 'right-start'\r\n | 'right-end';\r\n\r\nexport type PopoverTrigger = 'click' | 'hover' | 'focus' | 'manual';\r\n\r\n/**\r\n * A popover component that displays rich content in a floating panel.\r\n * Supports multiple trigger modes: click, hover, focus, or manual control.\r\n *\r\n * @fires bp-show - Fired when the popover opens\r\n * @fires bp-hide - Fired when the popover closes\r\n * @fires bp-after-show - Fired after the popover open animation completes\r\n * @fires bp-after-hide - Fired after the popover close animation completes\r\n *\r\n * @slot - The trigger element that controls the popover\r\n * @slot content - The rich content to display in the popover panel\r\n * @slot header - Optional header content for the popover\r\n * @slot footer - Optional footer content for the popover\r\n *\r\n * @csspart trigger - The trigger wrapper element\r\n * @csspart panel - The popover panel container\r\n * @csspart header - The header section\r\n * @csspart body - The body/content section\r\n * @csspart footer - The footer section\r\n * @csspart arrow - The arrow pointing to the trigger\r\n * @csspart close-button - The close button (when showClose is true)\r\n */\r\n@customElement('bp-popover')\r\nexport class BpPopover extends LitElement {\r\n /** Whether the popover is currently open */\r\n @property({ type: Boolean, reflect: true }) declare open: boolean;\r\n\r\n /** Placement of the popover relative to the trigger */\r\n @property({\r\n type: String,\r\n reflect: true,\r\n converter: {\r\n fromAttribute: (value: string | null): PopoverPlacement => {\r\n const validPlacements: PopoverPlacement[] = [\r\n 'top',\r\n 'top-start',\r\n 'top-end',\r\n 'bottom',\r\n 'bottom-start',\r\n 'bottom-end',\r\n 'left',\r\n 'left-start',\r\n 'left-end',\r\n 'right',\r\n 'right-start',\r\n 'right-end',\r\n ];\r\n return validPlacements.includes(value as PopoverPlacement)\r\n ? (value as PopoverPlacement)\r\n : 'bottom';\r\n },\r\n },\r\n })\r\n declare placement: PopoverPlacement;\r\n\r\n /** How the popover is triggered */\r\n @property({\r\n type: String,\r\n converter: {\r\n fromAttribute: (value: string | null): PopoverTrigger => {\r\n const validTriggers: PopoverTrigger[] = [\r\n 'click',\r\n 'hover',\r\n 'focus',\r\n 'manual',\r\n ];\r\n return validTriggers.includes(value as PopoverTrigger)\r\n ? (value as PopoverTrigger)\r\n : 'click';\r\n },\r\n },\r\n })\r\n declare trigger: PopoverTrigger;\r\n\r\n /** Whether to show an arrow pointing to the trigger */\r\n @property({ type: Boolean }) declare arrow: boolean;\r\n\r\n /** Whether to show a close button in the popover */\r\n @property({ type: Boolean, attribute: 'show-close' })\r\n declare showClose: boolean;\r\n\r\n /** Whether clicking outside closes the popover */\r\n @property({\r\n converter: booleanConverter,\r\n attribute: 'close-on-outside-click',\r\n reflect: true,\r\n })\r\n declare closeOnOutsideClick: boolean;\r\n\r\n /** Whether pressing Escape closes the popover */\r\n @property({\r\n converter: booleanConverter,\r\n attribute: 'close-on-escape',\r\n reflect: true,\r\n })\r\n declare closeOnEscape: boolean;\r\n\r\n /** Distance in pixels between the trigger and the panel */\r\n @property({ type: Number }) declare distance: number;\r\n\r\n /** Delay in milliseconds before showing (for hover trigger) */\r\n @property({ type: Number, attribute: 'show-delay' })\r\n declare showDelay: number;\r\n\r\n /** Delay in milliseconds before hiding (for hover trigger) */\r\n @property({ type: Number, attribute: 'hide-delay' })\r\n declare hideDelay: number;\r\n\r\n /** Whether the popover is disabled */\r\n @property({ type: Boolean }) declare disabled: boolean;\r\n\r\n /** Accessible label for the popover panel */\r\n @property({ type: String }) declare label: string;\r\n\r\n /** Whether the popover has header slot content */\r\n @state() private hasHeader = false;\r\n\r\n /** Whether the popover has footer slot content */\r\n @state() private hasFooter = false;\r\n\r\n @query('.popover__trigger') private triggerElement!: HTMLElement;\r\n\r\n private showTimeout: number | null = null;\r\n private hideTimeout: number | null = null;\r\n private popoverId = `popover-${Math.random().toString(36).substring(2, 11)}`;\r\n\r\n static styles = [popoverStyles];\r\n\r\n constructor() {\r\n super();\r\n this.open = false;\r\n this.placement = 'bottom';\r\n this.trigger = 'click';\r\n this.arrow = false;\r\n this.showClose = false;\r\n this.closeOnOutsideClick = true;\r\n this.closeOnEscape = true;\r\n this.distance = 8;\r\n this.showDelay = 200;\r\n this.hideDelay = 200;\r\n this.disabled = false;\r\n this.label = '';\r\n }\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n document.addEventListener('click', this.handleDocumentClick, {\r\n passive: true,\r\n });\r\n document.addEventListener('keydown', this.handleDocumentKeydown);\r\n }\r\n\r\n disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n document.removeEventListener('click', this.handleDocumentClick, {\r\n passive: true,\r\n } as EventListenerOptions);\r\n document.removeEventListener('keydown', this.handleDocumentKeydown);\r\n this.clearTimeouts();\r\n }\r\n\r\n /** Show the popover */\r\n show(): void {\r\n if (this.disabled || this.open) return;\r\n\r\n this.clearTimeouts();\r\n this.open = true;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-show', { bubbles: true, composed: true })\r\n );\r\n\r\n this.updateComplete.then(() => {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-after-show', { bubbles: true, composed: true })\r\n );\r\n });\r\n }\r\n\r\n /** Hide the popover */\r\n hide(): void {\r\n if (!this.open) return;\r\n\r\n this.clearTimeouts();\r\n this.open = false;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent('bp-hide', { bubbles: true, composed: true })\r\n );\r\n\r\n this.updateComplete.then(() => {\r\n this.dispatchEvent(\r\n new CustomEvent('bp-after-hide', { bubbles: true, composed: true })\r\n );\r\n });\r\n }\r\n\r\n /** Toggle the popover open/closed */\r\n toggle(): void {\r\n if (this.open) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n /**\r\n * Clears any pending show/hide timeout operations.\r\n * Prevents race conditions with rapid trigger interactions.\r\n */\r\n private clearTimeouts(): void {\r\n if (this.showTimeout !== null) {\r\n window.clearTimeout(this.showTimeout);\r\n this.showTimeout = null;\r\n }\r\n if (this.hideTimeout !== null) {\r\n window.clearTimeout(this.hideTimeout);\r\n this.hideTimeout = null;\r\n }\r\n }\r\n\r\n /**\r\n * Handles click events on the trigger element.\r\n * Toggles popover state for click trigger mode.\r\n * @param event - The mouse click event\r\n */\r\n private handleTriggerClick = (event: MouseEvent): void => {\r\n if (this.disabled || this.trigger !== 'click') return;\r\n event.stopPropagation();\r\n this.toggle();\r\n };\r\n\r\n /**\r\n * Handles keyboard events on the trigger element.\r\n * Toggles popover on Enter or Space key for click trigger mode.\r\n * @param event - The keyboard event\r\n */\r\n private handleTriggerKeydown = (event: KeyboardEvent): void => {\r\n if (this.disabled) return;\r\n\r\n if (\r\n this.trigger === 'click' &&\r\n (event.key === 'Enter' || event.key === ' ')\r\n ) {\r\n event.preventDefault();\r\n this.toggle();\r\n }\r\n };\r\n\r\n /**\r\n * Handles mouse enter events on the trigger element.\r\n * Starts the show delay timer for hover trigger mode.\r\n */\r\n private handleTriggerMouseEnter = (): void => {\r\n if (this.disabled || this.trigger !== 'hover') return;\r\n\r\n this.clearTimeouts();\r\n this.showTimeout = window.setTimeout(() => {\r\n this.show();\r\n }, this.showDelay);\r\n };\r\n\r\n /**\r\n * Handles mouse leave events on the trigger element.\r\n * Starts the hide delay timer for hover trigger mode.\r\n */\r\n private handleTriggerMouseLeave = (): void => {\r\n if (this.trigger !== 'hover') return;\r\n\r\n this.clearTimeouts();\r\n this.hideTimeout = window.setTimeout(() => {\r\n this.hide();\r\n }, this.hideDelay);\r\n };\r\n\r\n /**\r\n * Handles mouse enter events on the popover panel.\r\n * Prevents the popover from hiding when hovering over panel content in hover trigger mode.\r\n */\r\n private handlePanelMouseEnter = (): void => {\r\n if (this.trigger !== 'hover') return;\r\n this.clearTimeouts();\r\n };\r\n\r\n /**\r\n * Handles mouse leave events on the popover panel.\r\n * Starts the hide delay timer when leaving panel in hover trigger mode.\r\n */\r\n private handlePanelMouseLeave = (): void => {\r\n if (this.trigger !== 'hover') return;\r\n\r\n this.clearTimeouts();\r\n this.hideTimeout = window.setTimeout(() => {\r\n this.hide();\r\n }, this.hideDelay);\r\n };\r\n\r\n /**\r\n * Handles focus events on the trigger element.\r\n * Shows popover immediately for focus trigger mode.\r\n */\r\n private handleTriggerFocus = (): void => {\r\n if (this.disabled || this.trigger !== 'focus') return;\r\n this.show();\r\n };\r\n\r\n /**\r\n * Handles blur events on the trigger element.\r\n * Hides popover immediately for focus trigger mode.\r\n */\r\n private handleTriggerBlur = (): void => {\r\n if (this.trigger !== 'focus') return;\r\n this.hide();\r\n };\r\n\r\n /**\r\n * Handles click events on the document.\r\n * Closes popover when clicking outside if closeOnOutsideClick is true.\r\n * @param event - The mouse click event\r\n */\r\n private handleDocumentClick = (event: MouseEvent): void => {\r\n if (!this.closeOnOutsideClick || !this.open) return;\r\n if (this.trigger === 'manual') return;\r\n\r\n const path = event.composedPath();\r\n if (!path.includes(this)) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Handles keyboard events on the document.\r\n * Closes popover on Escape key if closeOnEscape is true and returns focus to trigger.\r\n * @param event - The keyboard event\r\n */\r\n private handleDocumentKeydown = (event: KeyboardEvent): void => {\r\n if (!this.closeOnEscape || !this.open) return;\r\n\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.hide();\r\n this.triggerElement?.focus();\r\n }\r\n };\r\n\r\n /**\r\n * Handles click events on the close button.\r\n * Closes the popover immediately.\r\n */\r\n private handleCloseClick = (): void => {\r\n this.hide();\r\n };\r\n\r\n /**\r\n * Handles changes to the header slot.\r\n * Updates internal state to conditionally render header wrapper.\r\n * @param event - The slotchange event\r\n */\r\n private handleHeaderSlotChange = (event: Event): void => {\r\n const slot = event.target as HTMLElement & {\r\n assignedNodes: (options?: { flatten?: boolean }) => Node[];\r\n };\r\n this.hasHeader = slot.assignedNodes({ flatten: true }).length > 0;\r\n };\r\n\r\n /**\r\n * Handles changes to the footer slot.\r\n * Updates internal state to conditionally render footer wrapper.\r\n * @param event - The slotchange event\r\n */\r\n private handleFooterSlotChange = (event: Event): void => {\r\n const slot = event.target as HTMLElement & {\r\n assignedNodes: (options?: { flatten?: boolean }) => Node[];\r\n };\r\n this.hasFooter = slot.assignedNodes({ flatten: true }).length > 0;\r\n };\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=\"popover ${this.open ? 'popover--open' : ''} ${this.disabled\r\n ? 'popover--disabled'\r\n : ''}\"\r\n >\r\n <div\r\n class=\"popover__trigger\"\r\n part=\"trigger\"\r\n tabindex=${this.disabled ? -1 : 0}\r\n role=\"button\"\r\n aria-haspopup=\"dialog\"\r\n aria-expanded=${this.open}\r\n aria-controls=${this.open ? this.popoverId : nothing}\r\n aria-disabled=${this.disabled}\r\n @click=${this.handleTriggerClick}\r\n @keydown=${this.handleTriggerKeydown}\r\n @mouseenter=${this.handleTriggerMouseEnter}\r\n @mouseleave=${this.handleTriggerMouseLeave}\r\n @focus=${this.handleTriggerFocus}\r\n @blur=${this.handleTriggerBlur}\r\n >\r\n <slot></slot>\r\n </div>\r\n ${this.open\r\n ? html`\r\n <div\r\n id=${this.popoverId}\r\n class=\"popover__panel popover__panel--${this.placement}\"\r\n part=\"panel\"\r\n role=\"dialog\"\r\n aria-label=${this.label || nothing}\r\n aria-modal=\"false\"\r\n style=\"--popover-distance: ${this.distance}px;\"\r\n @mouseenter=${this.handlePanelMouseEnter}\r\n @mouseleave=${this.handlePanelMouseLeave}\r\n >\r\n ${this.arrow\r\n ? html`<div class=\"popover__arrow\" part=\"arrow\"></div>`\r\n : nothing}\r\n ${this.hasHeader || this.showClose\r\n ? html`\r\n <div class=\"popover__header\" part=\"header\">\r\n <slot\r\n name=\"header\"\r\n @slotchange=${this.handleHeaderSlotChange}\r\n ></slot>\r\n ${this.showClose\r\n ? html`\r\n <button\r\n class=\"popover__close\"\r\n part=\"close-button\"\r\n type=\"button\"\r\n aria-label=\"Close popover\"\r\n @click=${this.handleCloseClick}\r\n >\r\n <bp-icon name=\"close\" size=\"sm\"></bp-icon>\r\n </button>\r\n `\r\n : nothing}\r\n </div>\r\n `\r\n : html`<slot\r\n name=\"header\"\r\n @slotchange=${this.handleHeaderSlotChange}\r\n ></slot>`}\r\n <div class=\"popover__body\" part=\"body\">\r\n <slot name=\"content\"></slot>\r\n </div>\r\n ${this.hasFooter\r\n ? html`\r\n <div class=\"popover__footer\" part=\"footer\">\r\n <slot\r\n name=\"footer\"\r\n @slotchange=${this.handleFooterSlotChange}\r\n ></slot>\r\n </div>\r\n `\r\n : html`<slot\r\n name=\"footer\"\r\n @slotchange=${this.handleFooterSlotChange}\r\n ></slot>`}\r\n </div>\r\n `\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-popover': BpPopover;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\n/**\r\n * Color Picker Styles\r\n *\r\n * INTENTIONAL HARDCODED VALUES (functional, not themed):\r\n * - Checkerboard pattern (#ccc) - standard transparency visualization\r\n * - Hue gradient (hsl spectrum) - must be actual hue colors\r\n * - White (#fff) handles - must contrast on any color background\r\n * - Black (#000) gradient - value gradient for color area\r\n * - Component dimensions (280px, 160px) - not semantic spacing\r\n *\r\n * All other values use design tokens.\r\n */\r\nexport const colorPickerStyles = css`\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Base Styles\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n :host {\r\n /* Component-specific custom properties */\r\n /* stylelint-disable blueprint/no-hardcoded-values */\r\n --color-picker-width: 350px;\r\n --color-picker-area-height: 160px;\r\n --color-picker-swatch-size: var(--bp-spacing-lg);\r\n --color-picker-handle-size: var(--bp-spacing-md);\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n\r\n display: inline-block;\r\n position: relative;\r\n font-family: var(--bp-font-family);\r\n }\r\n\r\n :host([disabled]) {\r\n opacity: var(--bp-opacity-disabled);\r\n pointer-events: none;\r\n }\r\n\r\n .color-picker {\r\n position: relative;\r\n }\r\n\r\n /* Screen reader only text */\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border-width: 0;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Trigger Button\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .trigger {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--bp-spacing-sm);\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n cursor: pointer;\r\n font-family: inherit;\r\n font-size: var(--bp-font-size-base);\r\n color: var(--bp-color-text);\r\n transition:\r\n border-color var(--bp-transition-fast),\r\n box-shadow var(--bp-transition-fast);\r\n }\r\n\r\n .trigger:hover:not(:disabled) {\r\n border-color: var(--bp-color-border-strong);\r\n }\r\n\r\n .trigger:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .trigger:disabled {\r\n cursor: not-allowed;\r\n }\r\n\r\n .trigger-swatch {\r\n display: block;\r\n width: var(--color-picker-swatch-size);\r\n height: var(--color-picker-swatch-size);\r\n border-radius: var(--bp-border-radius-sm);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n /* Checkerboard pattern for transparency - functional, not themed */\r\n /* stylelint-disable blueprint/no-hardcoded-values */\r\n background-image:\r\n linear-gradient(45deg, #ccc 25%, transparent 25%),\r\n linear-gradient(-45deg, #ccc 25%, transparent 25%),\r\n linear-gradient(45deg, transparent 75%, #ccc 75%),\r\n linear-gradient(-45deg, transparent 75%, #ccc 75%);\r\n background-size: var(--bp-spacing-sm) var(--bp-spacing-sm);\r\n background-position:\r\n 0 0,\r\n 0 calc(var(--bp-spacing-sm) / 2),\r\n calc(var(--bp-spacing-sm) / 2) calc(var(--bp-spacing-sm) / -2),\r\n calc(var(--bp-spacing-sm) / -2) 0;\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n position: relative;\r\n }\r\n\r\n .trigger-swatch::after {\r\n content: '';\r\n position: absolute;\r\n inset: 0;\r\n background: inherit;\r\n border-radius: inherit;\r\n }\r\n\r\n .trigger-label {\r\n color: var(--bp-color-text);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Picker Panel\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .picker {\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n margin-top: var(--bp-spacing-xs);\r\n width: var(--color-picker-width);\r\n background-color: var(--bp-color-surface-elevated);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-lg);\r\n box-shadow: var(--bp-shadow-lg);\r\n z-index: var(--bp-z-popover);\r\n animation: fadeIn var(--bp-transition-fast) ease-out;\r\n }\r\n\r\n @keyframes fadeIn {\r\n from {\r\n opacity: 0;\r\n transform: translateY(calc(var(--bp-spacing-xs) * -1));\r\n }\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n :host([inline]) .picker {\r\n position: static;\r\n margin-top: 0;\r\n box-shadow: none;\r\n }\r\n\r\n .picker-body {\r\n padding: var(--bp-spacing-md);\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--bp-spacing-md);\r\n }\r\n\r\n .picker-main {\r\n display: flex;\r\n gap: var(--bp-spacing-sm);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Color Area (Saturation/Value)\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .color-area {\r\n flex: 1;\r\n height: var(--color-picker-area-height);\r\n position: relative;\r\n border-radius: var(--bp-border-radius-sm);\r\n background: var(--hue-color);\r\n cursor: crosshair;\r\n touch-action: none;\r\n user-select: none;\r\n }\r\n\r\n /* White-to-transparent and transparent-to-black gradients - functional for color picking */\r\n /* stylelint-disable blueprint/no-hardcoded-values */\r\n .color-area::before {\r\n content: '';\r\n position: absolute;\r\n inset: 0;\r\n background: linear-gradient(to right, #fff, transparent);\r\n border-radius: inherit;\r\n }\r\n\r\n .color-area::after {\r\n content: '';\r\n position: absolute;\r\n inset: 0;\r\n background: linear-gradient(to bottom, transparent, #000);\r\n border-radius: inherit;\r\n }\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n\r\n .color-area:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n /* Slider handles use white borders for visibility on any color */\r\n /* stylelint-disable blueprint/no-hardcoded-values -- white border for contrast on any hue */\r\n .color-area-handle {\r\n position: absolute;\r\n width: var(--color-picker-handle-size);\r\n height: var(--color-picker-handle-size);\r\n border: var(--bp-border-width) solid #fff;\r\n border-radius: 50%;\r\n box-shadow: var(--bp-shadow-sm);\r\n transform: translate(-50%, -50%);\r\n z-index: 1;\r\n pointer-events: none;\r\n }\r\n\r\n /* Expand touch target to 44×44px minimum (WCAG 2.2) */\r\n .color-area-handle::after {\r\n content: '';\r\n position: absolute;\r\n /* 44px touch target with 12px visual handle = 16px padding each side */\r\n inset: calc(var(--bp-spacing-lg) * -1);\r\n }\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Hue Slider\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .hue-slider {\r\n width: var(--bp-spacing-lg);\r\n height: var(--color-picker-area-height);\r\n position: relative;\r\n border-radius: var(--bp-border-radius-sm);\r\n /* Full hue spectrum gradient - functional, not themed */\r\n /* stylelint-disable blueprint/no-hardcoded-values */\r\n background: linear-gradient(\r\n to bottom,\r\n hsl(0, 100%, 50%),\r\n hsl(60, 100%, 50%),\r\n hsl(120, 100%, 50%),\r\n hsl(180, 100%, 50%),\r\n hsl(240, 100%, 50%),\r\n hsl(300, 100%, 50%),\r\n hsl(360, 100%, 50%)\r\n );\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n cursor: pointer;\r\n touch-action: none;\r\n user-select: none;\r\n }\r\n\r\n .hue-slider:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n /* stylelint-disable blueprint/no-hardcoded-values -- white border for contrast on hue spectrum */\r\n .hue-slider-handle {\r\n position: absolute;\r\n left: calc(var(--bp-spacing-xs) * -0.5);\r\n right: calc(var(--bp-spacing-xs) * -0.5);\r\n height: var(--bp-spacing-sm);\r\n border: var(--bp-border-width) solid #fff;\r\n border-radius: var(--bp-border-radius-sm);\r\n box-shadow: var(--bp-shadow-sm);\r\n transform: translateY(-50%);\r\n pointer-events: none;\r\n }\r\n\r\n /* Expand touch target to 44×44px minimum (WCAG 2.2) */\r\n .hue-slider-handle::after {\r\n content: '';\r\n position: absolute;\r\n /* 44px touch target with 8px visual handle = 18px padding top/bottom */\r\n top: calc(var(--bp-spacing-lg) * -2.25);\r\n bottom: calc(var(--bp-spacing-lg) * -2.25);\r\n left: 0;\r\n right: 0;\r\n }\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Alpha Slider\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .alpha-slider {\r\n height: var(--bp-spacing-md);\r\n position: relative;\r\n border-radius: var(--bp-border-radius-sm);\r\n /* Checkerboard pattern for transparency - functional, not themed */\r\n /* stylelint-disable blueprint/no-hardcoded-values */\r\n background-image:\r\n linear-gradient(45deg, #ccc 25%, transparent 25%),\r\n linear-gradient(-45deg, #ccc 25%, transparent 25%),\r\n linear-gradient(45deg, transparent 75%, #ccc 75%),\r\n linear-gradient(-45deg, transparent 75%, #ccc 75%);\r\n background-size: var(--bp-spacing-sm) var(--bp-spacing-sm);\r\n background-position:\r\n 0 0,\r\n 0 calc(var(--bp-spacing-sm) / 2),\r\n calc(var(--bp-spacing-sm) / 2) calc(var(--bp-spacing-sm) / -2),\r\n calc(var(--bp-spacing-sm) / -2) 0;\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n cursor: pointer;\r\n touch-action: none;\r\n user-select: none;\r\n }\r\n\r\n .alpha-slider::before {\r\n content: '';\r\n position: absolute;\r\n inset: 0;\r\n background: var(--alpha-gradient);\r\n border-radius: inherit;\r\n }\r\n\r\n .alpha-slider:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n /* stylelint-disable blueprint/no-hardcoded-values -- white border for contrast on alpha gradient */\r\n .alpha-slider-handle {\r\n position: absolute;\r\n top: calc(var(--bp-spacing-xs) * -0.5);\r\n bottom: calc(var(--bp-spacing-xs) * -0.5);\r\n width: var(--bp-spacing-sm);\r\n border: var(--bp-border-width) solid #fff;\r\n border-radius: var(--bp-border-radius-sm);\r\n box-shadow: var(--bp-shadow-sm);\r\n transform: translateX(-50%);\r\n pointer-events: none;\r\n }\r\n\r\n /* Expand touch target to 44×44px minimum (WCAG 2.2) */\r\n .alpha-slider-handle::after {\r\n content: '';\r\n position: absolute;\r\n /* 44px touch target with 8px visual handle = 18px padding left/right */\r\n left: calc(var(--bp-spacing-lg) * -2.25);\r\n right: calc(var(--bp-spacing-lg) * -2.25);\r\n top: 0;\r\n bottom: 0;\r\n }\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Controls Row\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .picker-controls {\r\n display: flex;\r\n align-items: flex-start;\r\n gap: var(--bp-spacing-sm);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Preview\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .preview {\r\n display: flex;\r\n flex-direction: column;\r\n width: var(--bp-spacing-2xl);\r\n height: var(--bp-spacing-2xl);\r\n border-radius: var(--bp-border-radius-sm);\r\n overflow: hidden;\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n /* Checkerboard pattern for transparency - functional, not themed */\r\n /* stylelint-disable blueprint/no-hardcoded-values */\r\n background-image:\r\n linear-gradient(45deg, #ccc 25%, transparent 25%),\r\n linear-gradient(-45deg, #ccc 25%, transparent 25%),\r\n linear-gradient(45deg, transparent 75%, #ccc 75%),\r\n linear-gradient(-45deg, transparent 75%, #ccc 75%);\r\n background-size: var(--bp-spacing-sm) var(--bp-spacing-sm);\r\n background-position:\r\n 0 0,\r\n 0 calc(var(--bp-spacing-sm) / 2),\r\n calc(var(--bp-spacing-sm) / 2) calc(var(--bp-spacing-sm) / -2),\r\n calc(var(--bp-spacing-sm) / -2) 0;\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n }\r\n\r\n .preview-swatch {\r\n flex: 1;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Inputs\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .inputs-container {\r\n flex: 1;\r\n display: flex;\r\n align-items: flex-start;\r\n gap: var(--bp-spacing-xs);\r\n }\r\n\r\n .input-row {\r\n display: flex;\r\n gap: var(--bp-spacing-xs);\r\n flex: 1;\r\n }\r\n\r\n .input-group {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--bp-spacing-2xs);\r\n }\r\n\r\n .color-input {\r\n width: 100%;\r\n padding: var(--bp-spacing-xs);\r\n font-family: var(--bp-font-family-mono);\r\n font-size: var(--bp-font-size-sm);\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-sm);\r\n color: var(--bp-color-text);\r\n text-align: center;\r\n box-sizing: border-box;\r\n }\r\n\r\n .color-input:focus {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n border-color: var(--bp-color-primary);\r\n }\r\n\r\n .color-input::-webkit-inner-spin-button,\r\n .color-input::-webkit-outer-spin-button {\r\n -webkit-appearance: none;\r\n margin: 0;\r\n }\r\n\r\n .color-input[type='number'] {\r\n -moz-appearance: textfield;\r\n }\r\n\r\n .hex-input {\r\n text-transform: uppercase;\r\n }\r\n\r\n .input-label {\r\n font-size: var(--bp-font-size-xs);\r\n color: var(--bp-color-text-muted);\r\n text-align: center;\r\n text-transform: uppercase;\r\n }\r\n\r\n .format-toggle {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n padding: 0;\r\n margin-top: var(--bp-spacing-2xs);\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-sm);\r\n color: var(--bp-color-text-muted);\r\n cursor: pointer;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n .format-toggle:hover:not(:disabled) {\r\n background-color: var(--bp-color-surface-subdued);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n .format-toggle:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .format-toggle svg {\r\n width: var(--bp-spacing-md);\r\n height: var(--bp-spacing-md);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Eyedropper\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .eyedropper-button {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--bp-spacing-2xl);\r\n height: var(--bp-spacing-2xl);\r\n padding: 0;\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-sm);\r\n color: var(--bp-color-text-muted);\r\n cursor: pointer;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n .eyedropper-button:hover:not(:disabled) {\r\n background-color: var(--bp-color-surface-subdued);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n .eyedropper-button:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .eyedropper-button:disabled {\r\n cursor: not-allowed;\r\n }\r\n\r\n .eyedropper-button svg {\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Swatches\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .swatches-container {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: var(--bp-spacing-xs);\r\n padding-top: var(--bp-spacing-sm);\r\n border-top: var(--bp-border-width) solid var(--bp-color-border);\r\n }\r\n\r\n .swatch {\r\n width: var(--color-picker-swatch-size);\r\n height: var(--color-picker-swatch-size);\r\n padding: 0;\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-sm);\r\n cursor: pointer;\r\n transition: transform var(--bp-transition-fast);\r\n }\r\n\r\n .swatch:hover:not(:disabled) {\r\n transform: scale(1.1);\r\n }\r\n\r\n .swatch:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .swatch:disabled {\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Sizes\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .color-picker--sm .trigger {\r\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .color-picker--sm .trigger-swatch {\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n }\r\n\r\n .color-picker--lg .trigger {\r\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\r\n font-size: var(--bp-font-size-lg);\r\n }\r\n\r\n .color-picker--lg .trigger-swatch {\r\n width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Reduced Motion\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n @keyframes fadeIn {\r\n from,\r\n to {\r\n opacity: 1;\r\n transform: translateY(0);\r\n }\r\n }\r\n\r\n .trigger,\r\n .format-toggle,\r\n .eyedropper-button,\r\n .swatch,\r\n .color-input {\r\n transition: none;\r\n }\r\n }\r\n`;\r\n","/**\n * Color Picker Utilities\n *\n * Pure functions for color parsing, conversion, and formatting.\n * Supports HEX, RGB, HSL formats with alpha channel.\n */\n\n/**\n * Internal HSV color representation\n */\nexport interface HSVColor {\n h: number; // 0-360\n s: number; // 0-100\n v: number; // 0-100\n a: number; // 0-1\n}\n\n/**\n * RGB color representation\n */\nexport interface RGBColor {\n r: number; // 0-255\n g: number; // 0-255\n b: number; // 0-255\n a: number; // 0-1\n}\n\n/**\n * HSL color representation\n */\nexport interface HSLColor {\n h: number; // 0-360\n s: number; // 0-100\n l: number; // 0-100\n a: number; // 0-1\n}\n\n/**\n * Color output format\n */\nexport type ColorFormat = 'hex' | 'rgb' | 'hsl';\n\n/**\n * Parses a color string and returns HSV representation\n * @param value Color string in hex, rgb, or hsl format\n * @returns HSV color object or null if parsing fails\n */\nexport function parseColor(value: string): HSVColor | null {\n if (!value) return null;\n\n value = value.trim().toLowerCase();\n\n // HEX format\n if (value.startsWith('#')) {\n return parseHex(value);\n }\n\n // RGB/RGBA format\n if (value.startsWith('rgb')) {\n return parseRgb(value);\n }\n\n // HSL/HSLA format\n if (value.startsWith('hsl')) {\n return parseHsl(value);\n }\n\n return null;\n}\n\n/**\n * Parses a hex color string to HSV\n * @param hex Hex color string (with or without #, 3/4/6/8 digits)\n * @returns HSV color object or null if invalid\n */\nexport function parseHex(hex: string): HSVColor | null {\n hex = hex.replace('#', '');\n\n let r: number,\n g: number,\n b: number,\n a = 1;\n\n if (hex.length === 3) {\n r = parseInt(hex[0] + hex[0], 16);\n g = parseInt(hex[1] + hex[1], 16);\n b = parseInt(hex[2] + hex[2], 16);\n } else if (hex.length === 4) {\n r = parseInt(hex[0] + hex[0], 16);\n g = parseInt(hex[1] + hex[1], 16);\n b = parseInt(hex[2] + hex[2], 16);\n a = parseInt(hex[3] + hex[3], 16) / 255;\n } else if (hex.length === 6) {\n r = parseInt(hex.substring(0, 2), 16);\n g = parseInt(hex.substring(2, 4), 16);\n b = parseInt(hex.substring(4, 6), 16);\n } else if (hex.length === 8) {\n r = parseInt(hex.substring(0, 2), 16);\n g = parseInt(hex.substring(2, 4), 16);\n b = parseInt(hex.substring(4, 6), 16);\n a = parseInt(hex.substring(6, 8), 16) / 255;\n } else {\n return null;\n }\n\n if (isNaN(r) || isNaN(g) || isNaN(b) || isNaN(a)) {\n return null;\n }\n\n return rgbToHsv({ r, g, b, a });\n}\n\n/**\n * Parses an rgb/rgba color string to HSV\n * @param rgb RGB color string (e.g., 'rgb(255, 87, 51)' or 'rgba(255, 87, 51, 0.5)')\n * @returns HSV color object or null if invalid\n */\nexport function parseRgb(rgb: string): HSVColor | null {\n const match = rgb.match(\n /rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)/\n );\n if (!match) return null;\n\n const r = parseInt(match[1], 10);\n const g = parseInt(match[2], 10);\n const b = parseInt(match[3], 10);\n const a = match[4] !== undefined ? parseFloat(match[4]) : 1;\n\n return rgbToHsv({ r, g, b, a });\n}\n\n/**\n * Parses an hsl/hsla color string to HSV\n * @param hsl HSL color string (e.g., 'hsl(14, 100%, 60%)' or 'hsla(14, 100%, 60%, 0.5)')\n * @returns HSV color object or null if invalid\n */\nexport function parseHsl(hsl: string): HSVColor | null {\n const match = hsl.match(\n /hsla?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)%?\\s*,\\s*([\\d.]+)%?\\s*(?:,\\s*([\\d.]+))?\\s*\\)/\n );\n if (!match) return null;\n\n const h = parseFloat(match[1]);\n const s = parseFloat(match[2]);\n const l = parseFloat(match[3]);\n const a = match[4] !== undefined ? parseFloat(match[4]) : 1;\n\n return hslToHsv({ h, s, l, a });\n}\n\n/**\n * Converts RGB color to HSV color space\n * @param rgb RGB color object with r, g, b (0-255) and a (0-1)\n * @returns HSV color object with h (0-360), s (0-100), v (0-100), a (0-1)\n */\nexport function rgbToHsv(rgb: RGBColor): HSVColor {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n let h = 0;\n const s = max === 0 ? 0 : (delta / max) * 100;\n const v = max * 100;\n\n if (delta !== 0) {\n if (max === r) {\n h = 60 * (((g - b) / delta) % 6);\n } else if (max === g) {\n h = 60 * ((b - r) / delta + 2);\n } else {\n h = 60 * ((r - g) / delta + 4);\n }\n }\n\n if (h < 0) h += 360;\n\n return { h, s, v, a: rgb.a };\n}\n\n/**\n * Converts HSV color to RGB color space\n * @param hsv HSV color object with h (0-360), s (0-100), v (0-100), a (0-1)\n * @returns RGB color object with r, g, b (0-255) and a (0-1)\n */\nexport function hsvToRgb(hsv: HSVColor): RGBColor {\n const h = hsv.h;\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n\n const c = v * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = v - c;\n\n let r = 0,\n g = 0,\n b = 0;\n\n if (h >= 0 && h < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (h >= 60 && h < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (h >= 120 && h < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (h >= 180 && h < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (h >= 240 && h < 300) {\n r = x;\n g = 0;\n b = c;\n } else {\n r = c;\n g = 0;\n b = x;\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n a: hsv.a,\n };\n}\n\n/**\n * Converts HSL color to HSV color space\n * @param hsl HSL color object with h (0-360), s (0-100), l (0-100), a (0-1)\n * @returns HSV color object with h (0-360), s (0-100), v (0-100), a (0-1)\n */\nexport function hslToHsv(hsl: HSLColor): HSVColor {\n const h = hsl.h;\n const s = hsl.s / 100;\n const l = hsl.l / 100;\n\n const v = l + s * Math.min(l, 1 - l);\n const sv = v === 0 ? 0 : 2 * (1 - l / v);\n\n return { h, s: sv * 100, v: v * 100, a: hsl.a };\n}\n\n/**\n * Converts HSV color to HSL color space\n * @param hsv HSV color object with h (0-360), s (0-100), v (0-100), a (0-1)\n * @returns HSL color object with h (0-360), s (0-100), l (0-100), a (0-1)\n */\nexport function hsvToHsl(hsv: HSVColor): HSLColor {\n const h = hsv.h;\n const s = hsv.s / 100;\n const v = hsv.v / 100;\n\n const l = v * (1 - s / 2);\n const sl = l === 0 || l === 1 ? 0 : (v - l) / Math.min(l, 1 - l);\n\n return { h, s: sl * 100, l: l * 100, a: hsv.a };\n}\n\n/**\n * Rounds alpha value to 2 decimal places\n * @param a Alpha value (0-1)\n * @returns Rounded alpha value\n */\nexport function roundAlpha(a: number): number {\n return Math.round(a * 100) / 100;\n}\n\n/**\n * Formats an HSV color to the specified output format\n * @param hsv HSV color object\n * @param format Output format (hex, rgb, or hsl)\n * @param includeAlpha Whether to include alpha channel in output\n * @returns Formatted color string\n */\nexport function formatColorOutput(\n hsv: HSVColor,\n format: ColorFormat,\n includeAlpha: boolean\n): string {\n const rgb = hsvToRgb(hsv);\n const hsl = hsvToHsl(hsv);\n\n switch (format) {\n case 'rgb':\n if (includeAlpha && hsv.a < 1) {\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${roundAlpha(hsv.a)})`;\n }\n return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n\n case 'hsl':\n if (includeAlpha && hsv.a < 1) {\n return `hsla(${Math.round(hsl.h)}, ${Math.round(hsl.s)}%, ${Math.round(hsl.l)}%, ${roundAlpha(hsv.a)})`;\n }\n return `hsl(${Math.round(hsl.h)}, ${Math.round(hsl.s)}%, ${Math.round(hsl.l)}%)`;\n\n case 'hex':\n default: {\n const hexR = rgb.r.toString(16).padStart(2, '0');\n const hexG = rgb.g.toString(16).padStart(2, '0');\n const hexB = rgb.b.toString(16).padStart(2, '0');\n if (includeAlpha && hsv.a < 1) {\n const hexA = Math.round(hsv.a * 255)\n .toString(16)\n .padStart(2, '0');\n return `#${hexR}${hexG}${hexB}${hexA}`;\n }\n return `#${hexR}${hexG}${hexB}`;\n }\n }\n}\n","import { LitElement, html, nothing, PropertyValues } from 'lit';\r\nimport { customElement, property, state, query } from 'lit/decorators.js';\r\nimport { colorPickerStyles } from './color-picker.style.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\nimport {\r\n type ColorFormat,\r\n type HSVColor,\r\n parseColor,\r\n hsvToRgb,\r\n hsvToHsl,\r\n formatColorOutput,\r\n} from './color-picker.utils.js';\r\n\r\n/* eslint-disable no-undef */\r\n// Browser globals: PointerEvent and EyeDropper are available in modern browsers\r\n\r\n/**\r\n * Color picker size\r\n */\r\nexport type ColorPickerSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * A color picker component that provides a consistent, accessible, and feature-rich\r\n * color selection experience. Supports HEX, RGB, and HSL formats with optional alpha channel.\r\n *\r\n * @element bp-color-picker\r\n *\r\n * @slot trigger - Custom trigger button content\r\n * @slot swatches - Custom swatch elements\r\n * @slot footer - Additional content below picker\r\n *\r\n * @csspart trigger - The popover trigger button\r\n * @csspart popover - The popover container\r\n * @csspart color-area - The 2D saturation/value gradient\r\n * @csspart hue-slider - The hue selection slider\r\n * @csspart alpha-slider - The alpha selection slider\r\n * @csspart preview - The color preview swatch\r\n * @csspart input - Text input fields\r\n * @csspart swatches - Swatches container\r\n * @csspart swatch - Individual swatch items\r\n *\r\n * @fires bp-change - Fired when value changes (on blur/confirm)\r\n * @fires bp-input - Fired on every input (live updates)\r\n * @fires bp-open - Popover opened\r\n * @fires bp-close - Popover closed\r\n */\r\n@customElement('bp-color-picker')\r\nexport class BpColorPicker extends LitElement {\r\n static styles = [colorPickerStyles];\r\n\r\n /** Current color value */\r\n @property({ type: String }) declare value: string;\r\n\r\n /** Output format for value */\r\n @property({ type: String }) declare format: ColorFormat;\r\n\r\n /** Enable alpha channel */\r\n @property({ converter: booleanConverter, reflect: true })\r\n declare alpha: boolean;\r\n\r\n /** Predefined swatch colors */\r\n @property({ type: Array }) declare swatches: string[];\r\n\r\n /** Render inline instead of popover */\r\n @property({ type: Boolean }) declare inline: boolean;\r\n\r\n /** Disable all interactions */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /** Show value but prevent editing */\r\n @property({ type: Boolean, reflect: true }) declare readonly: boolean;\r\n\r\n /** Component size */\r\n @property({ type: String, reflect: true }) declare size: ColorPickerSize;\r\n\r\n /** Accessible label */\r\n @property({ type: String }) declare label: string;\r\n\r\n /** Form field name */\r\n @property({ type: String }) declare name: string;\r\n\r\n /** Placeholder for trigger */\r\n @property({ type: String }) declare placeholder: string;\r\n\r\n /** Whether the popover is open */\r\n @state() private _open = false;\r\n\r\n /** Internal HSV color state */\r\n @state() private _hsv: HSVColor = { h: 0, s: 0, v: 0, a: 1 };\r\n\r\n /** Original color when popover opened */\r\n @state() private _originalValue = '';\r\n\r\n /** Whether eyedropper is supported */\r\n @state() private _eyedropperSupported = false;\r\n\r\n /** Current input mode for format toggle */\r\n @state() private _inputMode: ColorFormat = 'hex';\r\n\r\n /** HEX input value for controlled input */\r\n @state() private _hexInputValue = '';\r\n\r\n /** Whether eyedropper is currently active */\r\n @state() private _isPickingColor = false;\r\n\r\n @query('.color-area') private _colorArea!: HTMLElement;\r\n @query('.hue-slider') private _hueSlider!: HTMLElement;\r\n @query('.alpha-slider') private _alphaSlider!: HTMLElement;\r\n\r\n private _isDraggingArea = false;\r\n private _isDraggingHue = false;\r\n private _isDraggingAlpha = false;\r\n\r\n constructor() {\r\n super();\r\n this.value = '#000000';\r\n this.format = 'hex';\r\n this.alpha = true;\r\n this.swatches = [];\r\n this.inline = false;\r\n this.disabled = false;\r\n this.readonly = false;\r\n this.size = 'md';\r\n this.label = '';\r\n this.name = '';\r\n this.placeholder = '';\r\n }\r\n\r\n connectedCallback(): void {\r\n super.connectedCallback();\r\n // Check for EyeDropper API support\r\n this._eyedropperSupported = 'EyeDropper' in window;\r\n this._parseValue(this.value);\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._inputMode = this.format;\r\n }\r\n\r\n disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this._removeGlobalListeners();\r\n }\r\n\r\n protected willUpdate(changedProperties: PropertyValues): void {\r\n if (changedProperties.has('value') && !this._isDragging()) {\r\n this._parseValue(this.value);\r\n this._hexInputValue = this._formatOutput('hex');\r\n }\r\n if (changedProperties.has('format')) {\r\n this._inputMode = this.format;\r\n }\r\n }\r\n\r\n private _isDragging(): boolean {\r\n return this._isDraggingArea || this._isDraggingHue || this._isDraggingAlpha;\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Color Parsing & Conversion\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Parses a color value string and updates internal HSV state\r\n * @param value Color string in hex, rgb, or hsl format\r\n */\r\n private _parseValue(value: string): void {\r\n const parsed = parseColor(value);\r\n if (parsed) {\r\n this._hsv = parsed;\r\n }\r\n }\r\n\r\n /**\r\n * Formats the current HSV color to the specified output format\r\n * @param format Output format (hex, rgb, or hsl), defaults to this.format\r\n * @returns Formatted color string\r\n */\r\n private _formatOutput(format: ColorFormat = this.format): string {\r\n return formatColorOutput(this._hsv, format, this.alpha);\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Event Handlers\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Handles click events on the trigger button\r\n * Toggles the picker popover open/closed state\r\n */\r\n private _handleTriggerClick(): void {\r\n if (this.disabled || this.readonly) return;\r\n this._toggleOpen();\r\n }\r\n\r\n /**\r\n * Handles keyboard events on the trigger button\r\n * Opens picker on Enter or Space key\r\n * @param event Keyboard event\r\n */\r\n private _handleTriggerKeydown(event: KeyboardEvent): void {\r\n if (this.disabled || this.readonly) return;\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this._toggleOpen();\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the picker popover between open and closed states\r\n * Saves original value when opening and emits bp-open/bp-close events\r\n */\r\n private _toggleOpen(): void {\r\n if (this._open) {\r\n this._close();\r\n } else {\r\n this._open = true;\r\n this._originalValue = this.value;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-open', { bubbles: true, composed: true })\r\n );\r\n this._addGlobalListeners();\r\n }\r\n }\r\n\r\n /**\r\n * Closes the picker popover\r\n * Removes global event listeners and emits bp-close event\r\n */\r\n private _close(): void {\r\n this._open = false;\r\n this._removeGlobalListeners();\r\n this.dispatchEvent(\r\n new CustomEvent('bp-close', { bubbles: true, composed: true })\r\n );\r\n }\r\n\r\n private _handleOutsideClick = (event: MouseEvent): void => {\r\n const path = event.composedPath();\r\n if (!path.includes(this)) {\r\n this._close();\r\n }\r\n };\r\n\r\n private _handleEscapeKey = (event: KeyboardEvent): void => {\r\n if (event.key === 'Escape') {\r\n // Restore original value\r\n this.value = this._originalValue;\r\n this._parseValue(this._originalValue);\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._close();\r\n }\r\n };\r\n\r\n /**\r\n * Adds global document event listeners for outside clicks and escape key\r\n * Used when picker popover is open\r\n */\r\n private _addGlobalListeners(): void {\r\n document.addEventListener('click', this._handleOutsideClick);\r\n document.addEventListener('keydown', this._handleEscapeKey);\r\n }\r\n\r\n /**\r\n * Removes global document event listeners\r\n * Called when picker popover is closed\r\n */\r\n private _removeGlobalListeners(): void {\r\n document.removeEventListener('click', this._handleOutsideClick);\r\n document.removeEventListener('keydown', this._handleEscapeKey);\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Color Area Handlers\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Handles pointer down events on the color area\r\n * Starts saturation/value drag interaction\r\n * @param event Pointer event\r\n */\r\n private _handleColorAreaPointerDown(event: PointerEvent): void {\r\n if (this.disabled || this.readonly) return;\r\n event.preventDefault();\r\n this._isDraggingArea = true;\r\n this._colorArea.setPointerCapture(event.pointerId);\r\n this._updateColorFromPointer(event);\r\n }\r\n\r\n /**\r\n * Handles pointer move events on the color area during drag\r\n * Updates color based on pointer position\r\n * @param event Pointer event\r\n */\r\n private _handleColorAreaPointerMove(event: PointerEvent): void {\r\n if (!this._isDraggingArea) return;\r\n this._updateColorFromPointer(event);\r\n }\r\n\r\n /**\r\n * Handles pointer up events on the color area\r\n * Ends drag interaction and emits change event\r\n * @param event Pointer event\r\n */\r\n private _handleColorAreaPointerUp(event: PointerEvent): void {\r\n if (!this._isDraggingArea) return;\r\n this._isDraggingArea = false;\r\n this._colorArea.releasePointerCapture(event.pointerId);\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Updates color saturation and value based on pointer position in color area\r\n * @param event Pointer event with clientX/clientY coordinates\r\n */\r\n private _updateColorFromPointer(event: PointerEvent): void {\r\n const rect = this._colorArea.getBoundingClientRect();\r\n const x = Math.max(0, Math.min(event.clientX - rect.left, rect.width));\r\n const y = Math.max(0, Math.min(event.clientY - rect.top, rect.height));\r\n\r\n this._hsv = {\r\n ...this._hsv,\r\n s: (x / rect.width) * 100,\r\n v: 100 - (y / rect.height) * 100,\r\n };\r\n\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n }\r\n\r\n /**\r\n * Handles keyboard navigation on the color area\r\n * Arrow keys adjust saturation/value, Shift increases step size\r\n * @param event Keyboard event\r\n */\r\n private _handleColorAreaKeydown(event: KeyboardEvent): void {\r\n if (this.disabled || this.readonly) return;\r\n\r\n const step = event.shiftKey ? 10 : 1;\r\n let handled = false;\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n this._hsv = { ...this._hsv, s: Math.min(100, this._hsv.s + step) };\r\n handled = true;\r\n break;\r\n case 'ArrowLeft':\r\n this._hsv = { ...this._hsv, s: Math.max(0, this._hsv.s - step) };\r\n handled = true;\r\n break;\r\n case 'ArrowUp':\r\n this._hsv = { ...this._hsv, v: Math.min(100, this._hsv.v + step) };\r\n handled = true;\r\n break;\r\n case 'ArrowDown':\r\n this._hsv = { ...this._hsv, v: Math.max(0, this._hsv.v - step) };\r\n handled = true;\r\n break;\r\n case 'Home':\r\n this._hsv = { ...this._hsv, s: 0 };\r\n handled = true;\r\n break;\r\n case 'End':\r\n this._hsv = { ...this._hsv, s: 100 };\r\n handled = true;\r\n break;\r\n }\r\n\r\n if (handled) {\r\n event.preventDefault();\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n this._emitChange();\r\n }\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Hue Slider Handlers\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Handles pointer down events on the hue slider\r\n * Starts hue drag interaction\r\n * @param event Pointer event\r\n */\r\n private _handleHuePointerDown(event: PointerEvent): void {\r\n if (this.disabled || this.readonly) return;\r\n event.preventDefault();\r\n this._isDraggingHue = true;\r\n this._hueSlider.setPointerCapture(event.pointerId);\r\n this._updateHueFromPointer(event);\r\n }\r\n\r\n /**\r\n * Handles pointer move events on the hue slider during drag\r\n * Updates hue based on pointer position\r\n * @param event Pointer event\r\n */\r\n private _handleHuePointerMove(event: PointerEvent): void {\r\n if (!this._isDraggingHue) return;\r\n this._updateHueFromPointer(event);\r\n }\r\n\r\n /**\r\n * Handles pointer up events on the hue slider\r\n * Ends drag interaction and emits change event\r\n * @param event Pointer event\r\n */\r\n private _handleHuePointerUp(event: PointerEvent): void {\r\n if (!this._isDraggingHue) return;\r\n this._isDraggingHue = false;\r\n this._hueSlider.releasePointerCapture(event.pointerId);\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Updates hue based on pointer position in hue slider\r\n * @param event Pointer event with clientY coordinate\r\n */\r\n private _updateHueFromPointer(event: PointerEvent): void {\r\n const rect = this._hueSlider.getBoundingClientRect();\r\n const y = Math.max(0, Math.min(event.clientY - rect.top, rect.height));\r\n const hue = (y / rect.height) * 360;\r\n\r\n this._hsv = { ...this._hsv, h: hue };\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n }\r\n\r\n /**\r\n * Handles keyboard navigation on the hue slider\r\n * Arrow keys adjust hue, Shift increases step size\r\n * @param event Keyboard event\r\n */\r\n private _handleHueKeydown(event: KeyboardEvent): void {\r\n if (this.disabled || this.readonly) return;\r\n\r\n const step = event.shiftKey ? 10 : 1;\r\n let handled = false;\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n case 'ArrowRight':\r\n this._hsv = { ...this._hsv, h: (this._hsv.h + step) % 360 };\r\n handled = true;\r\n break;\r\n case 'ArrowUp':\r\n case 'ArrowLeft':\r\n this._hsv = { ...this._hsv, h: (this._hsv.h - step + 360) % 360 };\r\n handled = true;\r\n break;\r\n case 'Home':\r\n this._hsv = { ...this._hsv, h: 0 };\r\n handled = true;\r\n break;\r\n case 'End':\r\n this._hsv = { ...this._hsv, h: 359 };\r\n handled = true;\r\n break;\r\n }\r\n\r\n if (handled) {\r\n event.preventDefault();\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n this._emitChange();\r\n }\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Alpha Slider Handlers\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Handles pointer down events on the alpha slider\r\n * Starts alpha drag interaction\r\n * @param event Pointer event\r\n */\r\n private _handleAlphaPointerDown(event: PointerEvent): void {\r\n if (this.disabled || this.readonly) return;\r\n event.preventDefault();\r\n this._isDraggingAlpha = true;\r\n this._alphaSlider.setPointerCapture(event.pointerId);\r\n this._updateAlphaFromPointer(event);\r\n }\r\n\r\n /**\r\n * Handles pointer move events on the alpha slider during drag\r\n * Updates alpha based on pointer position\r\n * @param event Pointer event\r\n */\r\n private _handleAlphaPointerMove(event: PointerEvent): void {\r\n if (!this._isDraggingAlpha) return;\r\n this._updateAlphaFromPointer(event);\r\n }\r\n\r\n /**\r\n * Handles pointer up events on the alpha slider\r\n * Ends drag interaction and emits change event\r\n * @param event Pointer event\r\n */\r\n private _handleAlphaPointerUp(event: PointerEvent): void {\r\n if (!this._isDraggingAlpha) return;\r\n this._isDraggingAlpha = false;\r\n this._alphaSlider.releasePointerCapture(event.pointerId);\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Updates alpha based on pointer position in alpha slider\r\n * @param event Pointer event with clientX coordinate\r\n */\r\n private _updateAlphaFromPointer(event: PointerEvent): void {\r\n const rect = this._alphaSlider.getBoundingClientRect();\r\n const x = Math.max(0, Math.min(event.clientX - rect.left, rect.width));\r\n const alpha = x / rect.width;\r\n\r\n this._hsv = { ...this._hsv, a: alpha };\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n }\r\n\r\n /**\r\n * Handles keyboard navigation on the alpha slider\r\n * Arrow keys adjust alpha, Shift increases step size\r\n * @param event Keyboard event\r\n */\r\n private _handleAlphaKeydown(event: KeyboardEvent): void {\r\n if (this.disabled || this.readonly) return;\r\n\r\n const step = event.shiftKey ? 0.1 : 0.01;\r\n let handled = false;\r\n\r\n switch (event.key) {\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n this._hsv = { ...this._hsv, a: Math.min(1, this._hsv.a + step) };\r\n handled = true;\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowDown':\r\n this._hsv = { ...this._hsv, a: Math.max(0, this._hsv.a - step) };\r\n handled = true;\r\n break;\r\n case 'Home':\r\n this._hsv = { ...this._hsv, a: 0 };\r\n handled = true;\r\n break;\r\n case 'End':\r\n this._hsv = { ...this._hsv, a: 1 };\r\n handled = true;\r\n break;\r\n }\r\n\r\n if (handled) {\r\n event.preventDefault();\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n this._emitChange();\r\n }\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Input Handlers\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Handles input events on the hex input field\r\n * Updates controlled input value\r\n * @param event Input event\r\n */\r\n private _handleHexInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n this._hexInputValue = input.value;\r\n }\r\n\r\n /**\r\n * Handles change events on the hex input field\r\n * Parses and applies hex color value, adds # prefix if missing\r\n * @param event Change event\r\n */\r\n private _handleHexChange(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n let value = input.value.trim();\r\n\r\n // Add # if missing\r\n if (value && !value.startsWith('#')) {\r\n value = '#' + value;\r\n }\r\n\r\n const parsed = parseColor(value);\r\n if (parsed) {\r\n this._hsv = parsed;\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n this._emitChange();\r\n } else {\r\n // Reset to current value if invalid\r\n this._hexInputValue = this._formatOutput('hex');\r\n }\r\n }\r\n\r\n /**\r\n * Handles input events on RGB channel inputs\r\n * Updates color based on red, green, or blue channel value\r\n * @param channel RGB channel to update ('r', 'g', or 'b')\r\n * @param event Input event\r\n */\r\n private _handleRgbInput(channel: 'r' | 'g' | 'b', event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const value = Math.max(0, Math.min(255, parseInt(input.value, 10) || 0));\r\n\r\n const rgb = hsvToRgb(this._hsv);\r\n rgb[channel] = value;\r\n this._hsv = parseColor(`rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${rgb.a})`)!;\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n }\r\n\r\n /**\r\n * Handles change events on RGB inputs\r\n * Emits bp-change event\r\n */\r\n private _handleRgbChange(): void {\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Handles input events on HSL channel inputs\r\n * Updates color based on hue, saturation, or lightness value\r\n * @param channel HSL channel to update ('h', 's', or 'l')\r\n * @param event Input event\r\n */\r\n private _handleHslInput(channel: 'h' | 's' | 'l', event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const hsl = hsvToHsl(this._hsv);\r\n\r\n if (channel === 'h') {\r\n hsl.h = Math.max(0, Math.min(360, parseInt(input.value, 10) || 0));\r\n } else {\r\n hsl[channel] = Math.max(0, Math.min(100, parseInt(input.value, 10) || 0));\r\n }\r\n\r\n this._hsv = parseColor(`hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${hsl.a})`)!;\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n }\r\n\r\n /**\r\n * Handles change events on HSL inputs\r\n * Emits bp-change event\r\n */\r\n private _handleHslChange(): void {\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Handles input events on the alpha percentage input\r\n * Updates alpha channel (0-100%)\r\n * @param event Input event\r\n */\r\n private _handleAlphaInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const value = Math.max(0, Math.min(100, parseInt(input.value, 10) || 0));\r\n this._hsv = { ...this._hsv, a: value / 100 };\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n }\r\n\r\n /**\r\n * Handles change events on alpha input\r\n * Emits bp-change event\r\n */\r\n private _handleAlphaInputChange(): void {\r\n this._emitChange();\r\n }\r\n\r\n /**\r\n * Handles format toggle button click\r\n * Cycles through hex → rgb → hsl input modes\r\n */\r\n private _handleFormatToggle(): void {\r\n const formats: ColorFormat[] = ['hex', 'rgb', 'hsl'];\r\n const currentIndex = formats.indexOf(this._inputMode);\r\n this._inputMode = formats[(currentIndex + 1) % formats.length];\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Swatch Handlers\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Handles click events on predefined color swatches\r\n * Updates color to the swatch value\r\n * @param color Color string to apply\r\n */\r\n private _handleSwatchClick(color: string): void {\r\n if (this.disabled || this.readonly) return;\r\n\r\n const parsed = parseColor(color);\r\n if (parsed) {\r\n this._hsv = parsed;\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n this._emitChange();\r\n }\r\n }\r\n\r\n /**\r\n * Handles keyboard events on swatch elements\r\n * Activates swatch on Enter or Space key\r\n * @param color Color string to apply\r\n * @param event Keyboard event\r\n */\r\n private _handleSwatchKeydown(color: string, event: KeyboardEvent): void {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this._handleSwatchClick(color);\r\n }\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Eyedropper\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Handles eyedropper button click\r\n * Opens native EyeDropper API to pick color from screen\r\n * Only available in browsers that support the EyeDropper API\r\n */\r\n private async _handleEyedropper(): Promise<void> {\r\n if (!this._eyedropperSupported || this.disabled || this.readonly) return;\r\n\r\n this._isPickingColor = true;\r\n try {\r\n // @ts-expect-error EyeDropper API is not in TypeScript types yet\r\n const eyeDropper = new EyeDropper();\r\n const result = await eyeDropper.open();\r\n\r\n if (result.sRGBHex) {\r\n const parsed = parseColor(result.sRGBHex);\r\n if (parsed) {\r\n this._hsv = parsed;\r\n this._hexInputValue = this._formatOutput('hex');\r\n this._emitInput();\r\n this._emitChange();\r\n }\r\n }\r\n } catch {\r\n // User cancelled or error occurred\r\n } finally {\r\n this._isPickingColor = false;\r\n }\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Event Emission\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Emits bp-input event with current formatted color value\r\n * Fired during live color updates (dragging, typing)\r\n */\r\n private _emitInput(): void {\r\n const value = this._formatOutput();\r\n this.dispatchEvent(\r\n new CustomEvent('bp-input', {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Emits bp-change event and updates the value property\r\n * Fired on blur/confirm actions (drag end, input blur)\r\n */\r\n private _emitChange(): void {\r\n const value = this._formatOutput();\r\n this.value = value;\r\n this.dispatchEvent(\r\n new CustomEvent('bp-change', {\r\n detail: { value },\r\n bubbles: true,\r\n composed: true,\r\n })\r\n );\r\n }\r\n\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n // Rendering\r\n // ─────────────────────────────────────────────────────────────────────────────\r\n\r\n /**\r\n * Renders the 2D color area for saturation and value selection\r\n * @returns TemplateResult for color area with draggable handle\r\n */\r\n private _renderColorArea() {\r\n const hueColor = `hsl(${this._hsv.h}, 100%, 50%)`;\r\n const handleX = this._hsv.s;\r\n const handleY = 100 - this._hsv.v;\r\n\r\n return html`\r\n <div\r\n class=\"color-area\"\r\n part=\"color-area\"\r\n role=\"slider\"\r\n tabindex=\"${this.disabled ? -1 : 0}\"\r\n aria-label=\"Color selection\"\r\n aria-valuetext=\"Saturation ${Math.round(\r\n this._hsv.s\r\n )}%, Brightness ${Math.round(this._hsv.v)}%\"\r\n style=\"--hue-color: ${hueColor}\"\r\n @pointerdown=${this._handleColorAreaPointerDown}\r\n @pointermove=${this._handleColorAreaPointerMove}\r\n @pointerup=${this._handleColorAreaPointerUp}\r\n @keydown=${this._handleColorAreaKeydown}\r\n >\r\n <div\r\n class=\"color-area-handle\"\r\n style=\"left: ${handleX}%; top: ${handleY}%\"\r\n ></div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the vertical hue slider (0-360 degrees)\r\n * @returns TemplateResult for hue slider with draggable handle\r\n */\r\n private _renderHueSlider() {\r\n const handleY = (this._hsv.h / 360) * 100;\r\n\r\n return html`\r\n <div\r\n class=\"hue-slider\"\r\n part=\"hue-slider\"\r\n role=\"slider\"\r\n tabindex=\"${this.disabled ? -1 : 0}\"\r\n aria-label=\"Hue\"\r\n aria-valuenow=\"${Math.round(this._hsv.h)}\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"360\"\r\n @pointerdown=${this._handleHuePointerDown}\r\n @pointermove=${this._handleHuePointerMove}\r\n @pointerup=${this._handleHuePointerUp}\r\n @keydown=${this._handleHueKeydown}\r\n >\r\n <div class=\"hue-slider-handle\" style=\"top: ${handleY}%\"></div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the horizontal alpha slider (0-100%)\r\n * Only shown when alpha property is true\r\n * @returns TemplateResult for alpha slider or nothing\r\n */\r\n private _renderAlphaSlider() {\r\n if (!this.alpha) return nothing;\r\n\r\n const rgb = hsvToRgb(this._hsv);\r\n const colorStart = `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0)`;\r\n const colorEnd = `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 1)`;\r\n const handleX = this._hsv.a * 100;\r\n\r\n return html`\r\n <div\r\n class=\"alpha-slider\"\r\n part=\"alpha-slider\"\r\n role=\"slider\"\r\n tabindex=\"${this.disabled ? -1 : 0}\"\r\n aria-label=\"Opacity\"\r\n aria-valuenow=\"${Math.round(this._hsv.a * 100)}\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n style=\"--alpha-gradient: linear-gradient(to right, ${colorStart}, ${colorEnd})\"\r\n @pointerdown=${this._handleAlphaPointerDown}\r\n @pointermove=${this._handleAlphaPointerMove}\r\n @pointerup=${this._handleAlphaPointerUp}\r\n @keydown=${this._handleAlphaKeydown}\r\n >\r\n <div class=\"alpha-slider-handle\" style=\"left: ${handleX}%\"></div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the color preview showing original and current colors\r\n * Displays side-by-side comparison with checkerboard background for transparency\r\n * @returns TemplateResult for preview swatches\r\n */\r\n private _renderPreview() {\r\n const rgb = hsvToRgb(this._hsv);\r\n const currentColor = `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${this._hsv.a})`;\r\n const originalHsv = parseColor(this._originalValue);\r\n const originalColor = originalHsv\r\n ? (() => {\r\n const origRgb = hsvToRgb(originalHsv);\r\n return `rgba(${origRgb.r}, ${origRgb.g}, ${origRgb.b}, ${originalHsv.a})`;\r\n })()\r\n : currentColor;\r\n\r\n return html`\r\n <div class=\"preview\" part=\"preview\">\r\n <div\r\n class=\"preview-swatch preview-original\"\r\n style=\"background: ${originalColor}\"\r\n title=\"Original color\"\r\n aria-label=\"Original color\"\r\n ></div>\r\n <div\r\n class=\"preview-swatch preview-current\"\r\n style=\"background: ${currentColor}\"\r\n title=\"Current color\"\r\n aria-label=\"Current color\"\r\n ></div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the hex color input field\r\n * @returns TemplateResult for hex input group\r\n */\r\n private _renderHexInput() {\r\n return html`\r\n <div class=\"input-group\">\r\n <input\r\n type=\"text\"\r\n class=\"color-input hex-input\"\r\n part=\"input\"\r\n .value=${this._hexInputValue}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${this._handleHexInput}\r\n @change=${this._handleHexChange}\r\n aria-label=\"Hex color value\"\r\n />\r\n <span class=\"input-label\">HEX</span>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders RGB color input fields (R, G, B, and optionally A)\r\n * @returns TemplateResult for RGB input row\r\n */\r\n private _renderRgbInputs() {\r\n const rgb = hsvToRgb(this._hsv);\r\n\r\n return html`\r\n <div class=\"input-row\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"number\"\r\n class=\"color-input\"\r\n part=\"input\"\r\n min=\"0\"\r\n max=\"255\"\r\n .value=${String(rgb.r)}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${(e: Event) => this._handleRgbInput('r', e)}\r\n @change=${this._handleRgbChange}\r\n aria-label=\"Red\"\r\n />\r\n <span class=\"input-label\">R</span>\r\n </div>\r\n <div class=\"input-group\">\r\n <input\r\n type=\"number\"\r\n class=\"color-input\"\r\n part=\"input\"\r\n min=\"0\"\r\n max=\"255\"\r\n .value=${String(rgb.g)}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${(e: Event) => this._handleRgbInput('g', e)}\r\n @change=${this._handleRgbChange}\r\n aria-label=\"Green\"\r\n />\r\n <span class=\"input-label\">G</span>\r\n </div>\r\n <div class=\"input-group\">\r\n <input\r\n type=\"number\"\r\n class=\"color-input\"\r\n part=\"input\"\r\n min=\"0\"\r\n max=\"255\"\r\n .value=${String(rgb.b)}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${(e: Event) => this._handleRgbInput('b', e)}\r\n @change=${this._handleRgbChange}\r\n aria-label=\"Blue\"\r\n />\r\n <span class=\"input-label\">B</span>\r\n </div>\r\n ${this.alpha\r\n ? html`\r\n <div class=\"input-group\">\r\n <input\r\n type=\"number\"\r\n class=\"color-input\"\r\n part=\"input\"\r\n min=\"0\"\r\n max=\"100\"\r\n .value=${String(Math.round(this._hsv.a * 100))}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${this._handleAlphaInput}\r\n @change=${this._handleAlphaInputChange}\r\n aria-label=\"Alpha\"\r\n />\r\n <span class=\"input-label\">A</span>\r\n </div>\r\n `\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders HSL color input fields (H, S, L, and optionally A)\r\n * @returns TemplateResult for HSL input row\r\n */\r\n private _renderHslInputs() {\r\n const hsl = hsvToHsl(this._hsv);\r\n\r\n return html`\r\n <div class=\"input-row\">\r\n <div class=\"input-group\">\r\n <input\r\n type=\"number\"\r\n class=\"color-input\"\r\n part=\"input\"\r\n min=\"0\"\r\n max=\"360\"\r\n .value=${String(Math.round(hsl.h))}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${(e: Event) => this._handleHslInput('h', e)}\r\n @change=${this._handleHslChange}\r\n aria-label=\"Hue\"\r\n />\r\n <span class=\"input-label\">H</span>\r\n </div>\r\n <div class=\"input-group\">\r\n <input\r\n type=\"number\"\r\n class=\"color-input\"\r\n part=\"input\"\r\n min=\"0\"\r\n max=\"100\"\r\n .value=${String(Math.round(hsl.s))}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${(e: Event) => this._handleHslInput('s', e)}\r\n @change=${this._handleHslChange}\r\n aria-label=\"Saturation\"\r\n />\r\n <span class=\"input-label\">S</span>\r\n </div>\r\n <div class=\"input-group\">\r\n <input\r\n type=\"number\"\r\n class=\"color-input\"\r\n part=\"input\"\r\n min=\"0\"\r\n max=\"100\"\r\n .value=${String(Math.round(hsl.l))}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${(e: Event) => this._handleHslInput('l', e)}\r\n @change=${this._handleHslChange}\r\n aria-label=\"Lightness\"\r\n />\r\n <span class=\"input-label\">L</span>\r\n </div>\r\n ${this.alpha\r\n ? html`\r\n <div class=\"input-group\">\r\n <input\r\n type=\"number\"\r\n class=\"color-input\"\r\n part=\"input\"\r\n min=\"0\"\r\n max=\"100\"\r\n .value=${String(Math.round(this._hsv.a * 100))}\r\n ?disabled=${this.disabled}\r\n ?readonly=${this.readonly}\r\n @input=${this._handleAlphaInput}\r\n @change=${this._handleAlphaInputChange}\r\n aria-label=\"Alpha\"\r\n />\r\n <span class=\"input-label\">A</span>\r\n </div>\r\n `\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the input controls container with format toggle button\r\n * Shows hex, rgb, or hsl inputs based on current input mode\r\n * @returns TemplateResult for inputs container\r\n */\r\n private _renderInputs() {\r\n return html`\r\n <div class=\"inputs-container\">\r\n ${this._inputMode === 'hex' ? this._renderHexInput() : nothing}\r\n ${this._inputMode === 'rgb' ? this._renderRgbInputs() : nothing}\r\n ${this._inputMode === 'hsl' ? this._renderHslInputs() : nothing}\r\n <button\r\n type=\"button\"\r\n class=\"format-toggle\"\r\n @click=${this._handleFormatToggle}\r\n ?disabled=${this.disabled}\r\n aria-label=\"Cycle color format (${this._inputMode.toUpperCase()})\"\r\n title=\"Cycle color format\"\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <path\r\n d=\"M21.5 2v6h-6M2.5 22v-6h6M2 11.5a10 10 0 0 1 18.8-4.3M22 12.5a10 10 0 0 1-18.8 4.2\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders predefined color swatches\r\n * Shows swatches from the swatches property or slotted content\r\n * @returns TemplateResult for swatches container or nothing\r\n */\r\n private _renderSwatches() {\r\n const hasSwatches = this.swatches.length > 0;\r\n const hasSlottedSwatches = this.querySelector('[slot=\"swatches\"]') !== null;\r\n\r\n if (!hasSwatches && !hasSlottedSwatches) return nothing;\r\n\r\n return html`\r\n <div\r\n class=\"swatches-container\"\r\n part=\"swatches\"\r\n role=\"listbox\"\r\n aria-label=\"Color swatches\"\r\n >\r\n <slot name=\"swatches\">\r\n ${this.swatches.map(\r\n (color) => html`\r\n <button\r\n type=\"button\"\r\n class=\"swatch\"\r\n part=\"swatch\"\r\n role=\"option\"\r\n style=\"background: ${color}\"\r\n @click=${() => this._handleSwatchClick(color)}\r\n @keydown=${(e: KeyboardEvent) =>\r\n this._handleSwatchKeydown(color, e)}\r\n ?disabled=${this.disabled}\r\n aria-label=\"${color}\"\r\n ></button>\r\n `\r\n )}\r\n </slot>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the eyedropper button if API is supported\r\n * @returns TemplateResult for eyedropper button or nothing\r\n */\r\n private _renderEyedropper() {\r\n if (!this._eyedropperSupported) return nothing;\r\n\r\n return html`\r\n <button\r\n type=\"button\"\r\n class=\"eyedropper-button\"\r\n @click=${this._handleEyedropper}\r\n ?disabled=${this.disabled || this.readonly || this._isPickingColor}\r\n aria-label=\"Pick color from screen\"\r\n aria-busy=\"${this._isPickingColor}\"\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n >\r\n <path d=\"M2 22l1-1h3l9-9m-3-3l3-3 5 5-3 3m-5-5l5 5M12.5 6.5l5 5\" />\r\n </svg>\r\n </button>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the complete color picker panel\r\n * Includes color area, sliders, preview, inputs, and swatches\r\n * @returns TemplateResult for picker panel\r\n */\r\n private _renderPicker() {\r\n return html`\r\n <div\r\n class=\"picker\"\r\n part=\"popover\"\r\n role=\"dialog\"\r\n aria-label=\"${this.label || 'Color picker'}\"\r\n >\r\n <div class=\"picker-body\">\r\n <div class=\"picker-main\">\r\n ${this._renderColorArea()} ${this._renderHueSlider()}\r\n </div>\r\n ${this._renderAlphaSlider()}\r\n <div class=\"picker-controls\">\r\n ${this._renderPreview()} ${this._renderInputs()}\r\n ${this._renderEyedropper()}\r\n </div>\r\n ${this._renderSwatches()}\r\n <slot name=\"footer\"></slot>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Renders the trigger button to open the picker popover\r\n * Shows current color swatch and optional label\r\n * @returns TemplateResult for trigger button\r\n */\r\n private _renderTrigger() {\r\n const rgb = hsvToRgb(this._hsv);\r\n const currentColor = `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${this._hsv.a})`;\r\n const hasLabel = this.label || this.placeholder;\r\n\r\n return html`\r\n <button\r\n type=\"button\"\r\n class=\"trigger\"\r\n part=\"trigger\"\r\n role=\"button\"\r\n aria-haspopup=\"dialog\"\r\n aria-expanded=\"${this._open}\"\r\n aria-disabled=\"${this.disabled}\"\r\n tabindex=\"${this.disabled ? -1 : 0}\"\r\n ?disabled=${this.disabled}\r\n @click=${this._handleTriggerClick}\r\n @keydown=${this._handleTriggerKeydown}\r\n >\r\n <slot name=\"trigger\">\r\n <span\r\n class=\"trigger-swatch\"\r\n style=\"background: ${currentColor}\"\r\n ></span>\r\n ${hasLabel\r\n ? html`<span class=\"trigger-label\"\r\n >${this.label || this.placeholder}</span\r\n >`\r\n : nothing}\r\n </slot>\r\n </button>\r\n `;\r\n }\r\n\r\n render() {\r\n if (this.inline) {\r\n return this._renderPicker();\r\n }\r\n\r\n return html`\r\n <div class=\"color-picker color-picker--${this.size}\">\r\n ${this._renderTrigger()}\r\n ${this._open\r\n ? html`\r\n <div aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\">\r\n Current color: ${this._formatOutput()}\r\n </div>\r\n ${this._renderPicker()}\r\n `\r\n : nothing}\r\n </div>\r\n ${this.name\r\n ? html`<input\r\n type=\"hidden\"\r\n name=\"${this.name}\"\r\n .value=${this._formatOutput()}\r\n />`\r\n : nothing}\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-color-picker': BpColorPicker;\r\n }\r\n}\r\n","import { css } from 'lit';\r\n\r\nexport const stepperStyles = css`\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Base Styles\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n :host {\r\n display: block;\r\n font-family: var(--bp-font-family);\r\n }\r\n\r\n :host([disabled]) {\r\n opacity: var(--bp-opacity-disabled);\r\n pointer-events: none;\r\n }\r\n\r\n .stepper {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--bp-spacing-lg);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Step List\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .step-list {\r\n display: flex;\r\n gap: var(--bp-spacing-xs);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Individual Step\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .step {\r\n display: flex;\r\n align-items: flex-start;\r\n flex: 1;\r\n position: relative;\r\n outline: none;\r\n }\r\n\r\n .step--clickable {\r\n cursor: pointer;\r\n }\r\n\r\n .step--clickable:focus-visible .step-indicator {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n .step--disabled {\r\n cursor: not-allowed;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Step Indicator (Number Circle)\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .step-indicator {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n width: var(--bp-spacing-xl);\r\n height: var(--bp-spacing-xl);\r\n border-radius: 50%;\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n background-color: var(--bp-color-surface);\r\n color: var(--bp-color-text-muted);\r\n font-size: var(--bp-font-size-sm);\r\n font-weight: var(--bp-font-weight-medium);\r\n position: relative;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n border-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n /* Expand touch target to 44×44px for WCAG 2.2 AA compliance */\r\n .step--clickable .step-indicator::after {\r\n content: '';\r\n position: absolute;\r\n inset: calc((var(--bp-spacing-11) - var(--bp-spacing-xl)) / -2);\r\n }\r\n\r\n .step-indicator--current {\r\n background-color: var(--bp-color-primary);\r\n border-color: var(--bp-color-primary);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .step-indicator--complete {\r\n background-color: var(--bp-color-success);\r\n border-color: var(--bp-color-success);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .step-indicator--error {\r\n background-color: var(--bp-color-error);\r\n border-color: var(--bp-color-error);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .step-number {\r\n line-height: 1;\r\n }\r\n\r\n .step-icon {\r\n width: var(--bp-spacing-md);\r\n height: var(--bp-spacing-md);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Step Content (Label & Description)\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .step-content {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--bp-spacing-2xs);\r\n padding-left: var(--bp-spacing-sm);\r\n padding-right: var(--bp-spacing-md);\r\n }\r\n\r\n .step-label {\r\n font-size: var(--bp-font-size-sm);\r\n font-weight: var(--bp-font-weight-medium);\r\n color: var(--bp-color-text);\r\n line-height: var(--bp-line-height-tight);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n .step--current .step-label {\r\n color: var(--bp-color-primary);\r\n }\r\n\r\n .step--complete .step-label {\r\n color: var(--bp-color-text);\r\n }\r\n\r\n .step--error .step-label {\r\n color: var(--bp-color-error);\r\n }\r\n\r\n .step--disabled .step-label {\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n .step--pending .step-label {\r\n color: var(--bp-color-text-muted);\r\n }\r\n\r\n .step-description {\r\n font-size: var(--bp-font-size-xs);\r\n color: var(--bp-color-text-muted);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n .step-error {\r\n font-size: var(--bp-font-size-xs);\r\n color: var(--bp-color-error);\r\n line-height: var(--bp-line-height-normal);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Connector Lines\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .connector {\r\n flex: 1;\r\n height: calc(var(--bp-border-width) * 2);\r\n background-color: var(--bp-color-border);\r\n margin-top: calc(var(--bp-spacing-xl) / 2);\r\n margin-left: var(--bp-spacing-sm);\r\n margin-right: var(--bp-spacing-sm);\r\n transition: background-color var(--bp-transition-fast);\r\n }\r\n\r\n .step--complete .connector {\r\n background-color: var(--bp-color-success);\r\n }\r\n\r\n .step--error .connector {\r\n background-color: var(--bp-color-error);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Horizontal Orientation (Default)\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .stepper--horizontal .step-list {\r\n flex-direction: row;\r\n }\r\n\r\n .stepper--horizontal .step {\r\n flex-direction: row;\r\n align-items: flex-start;\r\n }\r\n\r\n .stepper--horizontal .step-content {\r\n max-width: var(--bp-spacing-24);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Vertical Orientation\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .stepper--vertical .step-list {\r\n flex-direction: column;\r\n gap: 0;\r\n }\r\n\r\n .stepper--vertical .step {\r\n flex-direction: row;\r\n padding-bottom: var(--bp-spacing-lg);\r\n }\r\n\r\n .stepper--vertical .step:last-child {\r\n padding-bottom: 0;\r\n }\r\n\r\n .stepper--vertical .step-content {\r\n flex: 1;\r\n padding-right: 0;\r\n }\r\n\r\n .stepper--vertical .connector {\r\n position: absolute;\r\n left: calc(var(--bp-spacing-xl) / 2);\r\n top: calc(var(--bp-spacing-xl) + var(--bp-spacing-xs));\r\n bottom: 0;\r\n width: calc(var(--bp-border-width) * 2);\r\n height: auto;\r\n margin: 0;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Size Variants\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n /* Small */\r\n .stepper--sm .step-indicator {\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n font-size: var(--bp-font-size-xs);\r\n }\r\n\r\n .stepper--sm .step--clickable .step-indicator::after {\r\n inset: calc((var(--bp-spacing-11) - var(--bp-spacing-lg)) / -2);\r\n }\r\n\r\n .stepper--sm .step-icon {\r\n width: var(--bp-spacing-sm);\r\n height: var(--bp-spacing-sm);\r\n }\r\n\r\n .stepper--sm .step-label {\r\n font-size: var(--bp-font-size-xs);\r\n }\r\n\r\n .stepper--sm .step-description {\r\n font-size: var(--bp-font-size-xs);\r\n }\r\n\r\n .stepper--sm .connector {\r\n margin-top: calc(var(--bp-spacing-lg) / 2);\r\n }\r\n\r\n .stepper--sm.stepper--vertical .connector {\r\n left: calc(var(--bp-spacing-lg) / 2);\r\n top: calc(var(--bp-spacing-lg) + var(--bp-spacing-xs));\r\n }\r\n\r\n /* Large */\r\n .stepper--lg .step-indicator {\r\n width: var(--bp-spacing-2xl);\r\n height: var(--bp-spacing-2xl);\r\n font-size: var(--bp-font-size-base);\r\n }\r\n\r\n .stepper--lg .step--clickable .step-indicator::after {\r\n inset: calc((var(--bp-spacing-11) - var(--bp-spacing-2xl)) / -2);\r\n }\r\n\r\n .stepper--lg .step-icon {\r\n width: var(--bp-spacing-lg);\r\n height: var(--bp-spacing-lg);\r\n }\r\n\r\n .stepper--lg .step-label {\r\n font-size: var(--bp-font-size-base);\r\n }\r\n\r\n .stepper--lg .step-description {\r\n font-size: var(--bp-font-size-sm);\r\n }\r\n\r\n .stepper--lg .connector {\r\n margin-top: calc(var(--bp-spacing-2xl) / 2);\r\n }\r\n\r\n .stepper--lg.stepper--vertical .connector {\r\n left: calc(var(--bp-spacing-2xl) / 2);\r\n top: calc(var(--bp-spacing-2xl) + var(--bp-spacing-xs));\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Panel\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .panel {\r\n padding: var(--bp-spacing-md);\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n border-radius: var(--bp-border-radius-md);\r\n }\r\n\r\n .panel:not(.panel--has-content) {\r\n display: none;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Actions\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .actions {\r\n display: flex;\r\n gap: var(--bp-spacing-sm);\r\n justify-content: flex-end;\r\n }\r\n\r\n .actions:empty {\r\n display: none;\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Navigation Buttons\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .nav-button {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\r\n font-family: var(--bp-font-family);\r\n font-size: var(--bp-font-size-sm);\r\n font-weight: var(--bp-font-weight-medium);\r\n line-height: var(--bp-line-height-tight);\r\n border-radius: var(--bp-border-radius-md);\r\n cursor: pointer;\r\n transition:\r\n background-color var(--bp-transition-fast),\r\n border-color var(--bp-transition-fast),\r\n color var(--bp-transition-fast);\r\n }\r\n\r\n .nav-button--previous {\r\n background-color: var(--bp-color-surface);\r\n border: var(--bp-border-width) solid var(--bp-color-border);\r\n color: var(--bp-color-text);\r\n }\r\n\r\n .nav-button--previous:hover:not(:disabled) {\r\n background-color: var(--bp-color-surface-hover);\r\n border-color: var(--bp-color-border-strong);\r\n }\r\n\r\n .nav-button--next {\r\n background-color: var(--bp-color-primary);\r\n border: var(--bp-border-width) solid var(--bp-color-primary);\r\n color: var(--bp-color-text-inverse);\r\n }\r\n\r\n .nav-button--next:hover:not(:disabled) {\r\n background-color: var(--bp-color-primary-hover);\r\n border-color: var(--bp-color-primary-hover);\r\n }\r\n\r\n .nav-button:disabled {\r\n opacity: var(--bp-opacity-disabled);\r\n cursor: not-allowed;\r\n }\r\n\r\n .nav-button:focus-visible {\r\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\r\n outline-offset: var(--bp-focus-offset);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Hover States\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n .step--clickable:hover .step-indicator--pending {\r\n border-color: var(--bp-color-border-strong);\r\n }\r\n\r\n .step--clickable:hover .step-indicator--complete {\r\n background-color: var(--bp-color-success-hover);\r\n border-color: var(--bp-color-success-hover);\r\n }\r\n\r\n .step--clickable:hover .step-indicator--current {\r\n background-color: var(--bp-color-primary-hover);\r\n border-color: var(--bp-color-primary-hover);\r\n }\r\n\r\n /* ─────────────────────────────────────────────────────────────────────────────\r\n * Reduced Motion\r\n * ───────────────────────────────────────────────────────────────────────────── */\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .step-indicator,\r\n .connector {\r\n transition: none;\r\n }\r\n }\r\n`;\r\n","import { LitElement, html, nothing, PropertyValues } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { classMap } from 'lit/directives/class-map.js';\r\nimport { stepperStyles } from './stepper.style.js';\r\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\r\n\r\n/**\r\n * Step status\r\n */\r\nexport type StepStatus = 'pending' | 'current' | 'complete' | 'error';\r\n\r\n/**\r\n * Stepper orientation\r\n */\r\nexport type StepperOrientation = 'horizontal' | 'vertical';\r\n\r\n/**\r\n * Stepper size\r\n */\r\nexport type StepperSize = 'sm' | 'md' | 'lg';\r\n\r\n/**\r\n * Step configuration interface\r\n */\r\nexport interface Step {\r\n /** Unique identifier for the step */\r\n id: string;\r\n /** Display label for the step */\r\n label: string;\r\n /** Optional description text */\r\n description?: string;\r\n /** Whether the step is disabled */\r\n disabled?: boolean;\r\n /** Optional icon name (uses step number if not provided) */\r\n icon?: string;\r\n /** Optional error message when step has error status */\r\n error?: string;\r\n}\r\n\r\n/**\r\n * A stepper component for multi-step workflows and wizards.\r\n * Provides visual progress indication through a series of numbered or labeled steps.\r\n *\r\n * @element bp-stepper\r\n *\r\n * @property {Step[]} steps - Array of step configurations\r\n * @property {number} currentStep - Zero-based index of the current step\r\n * @property {StepperOrientation} orientation - Layout orientation\r\n * @property {StepperSize} size - Component size variant\r\n * @property {boolean} linear - Whether steps must be completed in order\r\n * @property {boolean} disabled - Whether the entire stepper is disabled\r\n * @property {boolean} hideLabels - Hide step labels (show only indicators)\r\n * @property {boolean} clickable - Whether completed steps are clickable to navigate\r\n *\r\n * @slot step-{id} - Custom content for a specific step panel\r\n * @slot actions - Navigation buttons (next/prev)\r\n *\r\n * @fires bp-step-change - Fired when the current step changes\r\n * @fires bp-step-complete - Fired when a step is marked complete\r\n * @fires bp-step-click - Fired when a step indicator is clicked\r\n *\r\n * @csspart stepper - The main stepper container\r\n * @csspart step-list - The step indicators container\r\n * @csspart step - Individual step container\r\n * @csspart step-indicator - The step number/icon circle\r\n * @csspart step-content - The step label and description area\r\n * @csspart step-label - The step label text\r\n * @csspart step-description - The step description text\r\n * @csspart connector - The line connecting steps\r\n * @csspart panel - The content panel for the current step\r\n * @csspart actions - The navigation actions container\r\n */\r\n@customElement('bp-stepper')\r\nexport class BpStepper extends LitElement {\r\n /**\r\n * Array of step configurations\r\n */\r\n @property({ type: Array }) declare steps: Step[];\r\n\r\n /**\r\n * Zero-based index of the current step\r\n */\r\n @property({ type: Number, reflect: true, attribute: 'current-step' })\r\n declare currentStep: number;\r\n\r\n /**\r\n * Layout orientation\r\n */\r\n @property({ type: String, reflect: true })\r\n declare orientation: StepperOrientation;\r\n\r\n /**\r\n * Component size variant\r\n */\r\n @property({ type: String, reflect: true }) declare size: StepperSize;\r\n\r\n /**\r\n * Whether steps must be completed in order\r\n */\r\n @property({ converter: booleanConverter, reflect: true })\r\n declare linear: boolean;\r\n\r\n /**\r\n * Whether the entire stepper is disabled\r\n */\r\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\r\n\r\n /**\r\n * Hide step labels (show only indicators)\r\n */\r\n @property({ type: Boolean, reflect: true, attribute: 'hide-labels' })\r\n declare hideLabels: boolean;\r\n\r\n /**\r\n * Whether completed steps are clickable to navigate back\r\n */\r\n @property({ converter: booleanConverter, reflect: true })\r\n declare clickable: boolean;\r\n\r\n /**\r\n * Show built-in navigation buttons (Previous/Next)\r\n */\r\n @property({\r\n converter: booleanConverter,\r\n reflect: true,\r\n attribute: 'show-navigation',\r\n })\r\n declare showNavigation: boolean;\r\n\r\n /**\r\n * Tracks which steps have been completed\r\n */\r\n @state() private completedSteps: Set<number> = new Set();\r\n\r\n /**\r\n * Tracks which steps have errors\r\n */\r\n @state() private errorSteps: Set<number> = new Set();\r\n\r\n /**\r\n * Tracks whether the panel slot has any assigned content\r\n */\r\n @state() private panelHasContent = false;\r\n\r\n static styles = [stepperStyles];\r\n\r\n constructor() {\r\n super();\r\n this.steps = [];\r\n this.currentStep = 0;\r\n this.orientation = 'horizontal';\r\n this.size = 'md';\r\n this.linear = true;\r\n this.disabled = false;\r\n this.hideLabels = false;\r\n this.clickable = true;\r\n this.showNavigation = true;\r\n }\r\n\r\n protected willUpdate(changedProperties: PropertyValues): void {\r\n super.willUpdate(changedProperties);\r\n\r\n // Sync errorSteps from step config error properties\r\n if (changedProperties.has('steps')) {\r\n const errors = new Set<number>();\r\n this.steps.forEach((step, index) => {\r\n if (step.error) {\r\n errors.add(index);\r\n }\r\n });\r\n this.errorSteps = errors;\r\n }\r\n\r\n // Auto-mark previous steps as complete when advancing\r\n if (changedProperties.has('currentStep')) {\r\n const prevStep = changedProperties.get('currentStep') as\r\n | number\r\n | undefined;\r\n if (prevStep !== undefined && this.currentStep > prevStep) {\r\n // Mark all steps before current as complete\r\n const updated = new Set(this.completedSteps);\r\n for (let i = 0; i < this.currentStep; i++) {\r\n if (!this.errorSteps.has(i)) {\r\n updated.add(i);\r\n }\r\n }\r\n this.completedSteps = updated;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the status of a step based on index\r\n * @param index Zero-based step index\r\n * @returns Step status (pending, current, complete, or error)\r\n */\r\n private _getStepStatus(index: number): StepStatus {\r\n if (this.errorSteps.has(index)) {\r\n return 'error';\r\n }\r\n // Check explicit completion first (allows marking current step complete)\r\n if (this.completedSteps.has(index)) {\r\n return 'complete';\r\n }\r\n if (index === this.currentStep) {\r\n return 'current';\r\n }\r\n if (index < this.currentStep) {\r\n return 'complete';\r\n }\r\n return 'pending';\r\n }\r\n\r\n /**\r\n * Check if a step is clickable based on linear mode and step state\r\n * @param index Zero-based step index\r\n * @param step Step configuration\r\n * @returns True if the step can be clicked to navigate\r\n */\r\n private _isStepClickable(index: number, step: Step): boolean {\r\n if (this.disabled || step.disabled) return false;\r\n if (!this.clickable) return false;\r\n\r\n const status = this._getStepStatus(index);\r\n\r\n if (this.linear) {\r\n // In linear mode, can only click completed steps or current step\r\n return status === 'complete' || index === this.currentStep;\r\n }\r\n\r\n // In non-linear mode, can click any non-disabled step\r\n return true;\r\n }\r\n\r\n /**\r\n * Handle click events on step indicators\r\n * Validates clickability and emits bp-step-click event before navigating\r\n * @param index Zero-based step index that was clicked\r\n * @param step Step configuration\r\n */\r\n private _handleStepClick(index: number, step: Step): void {\r\n if (!this._isStepClickable(index, step)) return;\r\n\r\n const detail = {\r\n step: index,\r\n stepId: step.id,\r\n previousStep: this.currentStep,\r\n };\r\n\r\n const clickEvent = new CustomEvent('bp-step-click', {\r\n detail,\r\n bubbles: true,\r\n composed: true,\r\n });\r\n this.dispatchEvent(clickEvent);\r\n\r\n if (index !== this.currentStep) {\r\n // When navigating backward, clear completion for steps at and after target\r\n if (index < this.currentStep) {\r\n for (let i = index; i < this.steps.length; i++) {\r\n this.completedSteps.delete(i);\r\n }\r\n }\r\n this.currentStep = index;\r\n this._emitStepChange(index, step);\r\n }\r\n }\r\n\r\n /**\r\n * Handle keyboard navigation on step indicators\r\n * Supports Enter/Space for activation and Arrow keys for focus movement\r\n * @param event Keyboard event\r\n * @param index Zero-based step index\r\n * @param step Step configuration\r\n */\r\n private _handleStepKeydown(\r\n event: KeyboardEvent,\r\n index: number,\r\n step: Step\r\n ): void {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this._handleStepClick(index, step);\r\n }\r\n\r\n // Arrow key navigation\r\n const isHorizontal = this.orientation === 'horizontal';\r\n const prevKey = isHorizontal ? 'ArrowLeft' : 'ArrowUp';\r\n const nextKey = isHorizontal ? 'ArrowRight' : 'ArrowDown';\r\n\r\n if (event.key === prevKey && index > 0) {\r\n event.preventDefault();\r\n this._focusStep(index - 1);\r\n } else if (event.key === nextKey && index < this.steps.length - 1) {\r\n event.preventDefault();\r\n this._focusStep(index + 1);\r\n }\r\n }\r\n\r\n /**\r\n * Focus a specific step indicator element\r\n * @param index Zero-based step index to focus\r\n */\r\n private _focusStep(index: number): void {\r\n const stepEl = this.shadowRoot?.querySelector(\r\n `[data-step-index=\"${index}\"]`\r\n ) as HTMLElement;\r\n stepEl?.focus();\r\n }\r\n\r\n /**\r\n * Emit bp-step-change event when navigating between steps\r\n * @param index Zero-based step index navigated to\r\n * @param step Step configuration\r\n */\r\n private _emitStepChange(index: number, step: Step): void {\r\n const event = new CustomEvent('bp-step-change', {\r\n detail: { step: index, stepId: step.id },\r\n bubbles: true,\r\n composed: true,\r\n });\r\n this.dispatchEvent(event);\r\n }\r\n\r\n /**\r\n * Navigate to the next step\r\n */\r\n public next(): boolean {\r\n if (this.currentStep >= this.steps.length - 1) return false;\r\n if (this.disabled) return false;\r\n\r\n const currentStepConfig = this.steps[this.currentStep];\r\n if (this.errorSteps.has(this.currentStep)) return false;\r\n\r\n // Mark current step as complete\r\n this.completedSteps.add(this.currentStep);\r\n this.currentStep++;\r\n\r\n this._emitStepChange(this.currentStep, this.steps[this.currentStep]);\r\n\r\n const completeEvent = new CustomEvent('bp-step-complete', {\r\n detail: { step: this.currentStep - 1, stepId: currentStepConfig.id },\r\n bubbles: true,\r\n composed: true,\r\n });\r\n this.dispatchEvent(completeEvent);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Navigate to the previous step\r\n */\r\n public previous(): boolean {\r\n if (this.currentStep <= 0) return false;\r\n if (this.disabled) return false;\r\n\r\n // Remove completed status from steps at and after the new current position\r\n for (let i = this.currentStep - 1; i < this.steps.length; i++) {\r\n this.completedSteps.delete(i);\r\n }\r\n\r\n this.currentStep--;\r\n this._emitStepChange(this.currentStep, this.steps[this.currentStep]);\r\n return true;\r\n }\r\n\r\n /**\r\n * Go to a specific step\r\n */\r\n public goToStep(index: number): boolean {\r\n if (index < 0 || index >= this.steps.length) return false;\r\n if (this.disabled) return false;\r\n\r\n const step = this.steps[index];\r\n if (step.disabled) return false;\r\n\r\n if (this.linear && index > this.currentStep) {\r\n // Can't skip ahead in linear mode\r\n return false;\r\n }\r\n\r\n // When navigating backward, clear completion for steps at and after target\r\n if (index < this.currentStep) {\r\n for (let i = index; i < this.steps.length; i++) {\r\n this.completedSteps.delete(i);\r\n }\r\n }\r\n\r\n this.currentStep = index;\r\n this._emitStepChange(index, step);\r\n return true;\r\n }\r\n\r\n /**\r\n * Mark a step as having an error\r\n */\r\n public setStepError(index: number, hasError: boolean): void {\r\n if (hasError) {\r\n this.errorSteps.add(index);\r\n this.completedSteps.delete(index);\r\n } else {\r\n this.errorSteps.delete(index);\r\n }\r\n this.requestUpdate();\r\n }\r\n\r\n /**\r\n * Mark a step as complete\r\n */\r\n public setStepComplete(index: number, complete: boolean): void {\r\n if (complete) {\r\n this.completedSteps.add(index);\r\n this.errorSteps.delete(index);\r\n } else {\r\n this.completedSteps.delete(index);\r\n }\r\n this.requestUpdate();\r\n }\r\n\r\n /**\r\n * Reset the stepper to the first step\r\n */\r\n public reset(): void {\r\n this.currentStep = 0;\r\n this.completedSteps.clear();\r\n this.errorSteps.clear();\r\n this.requestUpdate();\r\n }\r\n\r\n /**\r\n * Check if we're on the first step\r\n */\r\n public get isFirstStep(): boolean {\r\n return this.currentStep === 0;\r\n }\r\n\r\n /**\r\n * Check if we're on the last step\r\n */\r\n public get isLastStep(): boolean {\r\n return this.currentStep === this.steps.length - 1;\r\n }\r\n\r\n /**\r\n * Get the current step configuration\r\n */\r\n public get currentStepConfig(): Step | undefined {\r\n return this.steps[this.currentStep];\r\n }\r\n\r\n /**\r\n * Render the step indicator (number circle with optional icon)\r\n * Shows checkmark for complete, X for error, or step number for other states\r\n * @param index Zero-based step index\r\n * @param status Current step status\r\n * @returns TemplateResult for step indicator\r\n */\r\n private _renderStepIndicator(index: number, status: StepStatus) {\r\n const showCheckmark = status === 'complete';\r\n const showError = status === 'error';\r\n\r\n /* Inline SVG icons for step states - functional indicators, not themed */\r\n /* stylelint-disable blueprint/no-hardcoded-values */\r\n return html`\r\n <div\r\n class=${classMap({\r\n 'step-indicator': true,\r\n [`step-indicator--${status}`]: true,\r\n })}\r\n part=\"step-indicator\"\r\n >\r\n ${showCheckmark\r\n ? html`<svg\r\n class=\"step-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n aria-hidden=\"true\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\"></polyline>\r\n </svg>`\r\n : showError\r\n ? html`<svg\r\n class=\"step-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n </svg>`\r\n : html`<span class=\"step-number\">${index + 1}</span>`}\r\n </div>\r\n `;\r\n /* stylelint-enable blueprint/no-hardcoded-values */\r\n }\r\n\r\n /**\r\n * Render a complete step with indicator, label, description, and connector\r\n * @param step Step configuration\r\n * @param index Zero-based step index\r\n * @returns TemplateResult for step\r\n */\r\n private _renderStep(step: Step, index: number) {\r\n const status = this._getStepStatus(index);\r\n const isClickable = this._isStepClickable(index, step);\r\n const isLast = index === this.steps.length - 1;\r\n\r\n return html`\r\n <div\r\n class=${classMap({\r\n step: true,\r\n [`step--${status}`]: true,\r\n 'step--disabled': step.disabled || this.disabled,\r\n 'step--clickable': isClickable,\r\n })}\r\n part=\"step\"\r\n role=\"listitem\"\r\n data-step-index=${index}\r\n tabindex=${isClickable ? 0 : -1}\r\n aria-current=${status === 'current' ? 'step' : 'false'}\r\n aria-disabled=${step.disabled || this.disabled ? 'true' : 'false'}\r\n @click=${() => this._handleStepClick(index, step)}\r\n @keydown=${(e: KeyboardEvent) =>\r\n this._handleStepKeydown(e, index, step)}\r\n >\r\n ${this._renderStepIndicator(index, status)}\r\n ${!this.hideLabels\r\n ? html`\r\n <div class=\"step-content\" part=\"step-content\">\r\n <span class=\"step-label\" part=\"step-label\" title=${step.label}\r\n >${step.label}</span\r\n >\r\n ${step.description\r\n ? html`<span class=\"step-description\" part=\"step-description\"\r\n >${step.description}</span\r\n >`\r\n : nothing}\r\n ${status === 'error' && step.error\r\n ? html`<span class=\"step-error\">${step.error}</span>`\r\n : nothing}\r\n </div>\r\n `\r\n : nothing}\r\n ${!isLast\r\n ? html`<div class=\"connector\" part=\"connector\"></div>`\r\n : nothing}\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Handle slotchange on the panel slot to track whether content is provided\r\n */\r\n private _handlePanelSlotChange(event: Event): void {\r\n const slot = event.target as HTMLSlotElement;\r\n this.panelHasContent = slot.assignedNodes({ flatten: true }).length > 0;\r\n }\r\n\r\n /**\r\n * Render the content panel for the current step\r\n * Shows slotted content via step-{id} slot\r\n * @returns TemplateResult for panel or nothing if no current step\r\n */\r\n private _renderPanel() {\r\n const currentStepConfig = this.steps[this.currentStep];\r\n if (!currentStepConfig) return nothing;\r\n\r\n return html`\r\n <div\r\n class=${classMap({\r\n panel: true,\r\n 'panel--has-content': this.panelHasContent,\r\n })}\r\n part=\"panel\"\r\n role=\"tabpanel\"\r\n >\r\n <slot\r\n name=\"step-${currentStepConfig.id}\"\r\n @slotchange=${this._handlePanelSlotChange}\r\n ></slot>\r\n </div>\r\n `;\r\n }\r\n\r\n render() {\r\n return html`\r\n <div\r\n class=${classMap({\r\n stepper: true,\r\n [`stepper--${this.orientation}`]: true,\r\n [`stepper--${this.size}`]: true,\r\n 'stepper--disabled': this.disabled,\r\n })}\r\n part=\"stepper\"\r\n >\r\n <div\r\n class=\"step-list\"\r\n part=\"step-list\"\r\n role=\"list\"\r\n aria-label=\"Progress steps\"\r\n >\r\n ${this.steps.map((step, index) => this._renderStep(step, index))}\r\n </div>\r\n ${this._renderPanel()}\r\n <div class=\"actions\" part=\"actions\">\r\n <slot name=\"actions\">\r\n ${this.showNavigation ? this._renderDefaultNavigation() : nothing}\r\n </slot>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Render default navigation buttons (Previous/Next)\r\n * Only shown when showNavigation is true and no custom actions are slotted\r\n */\r\n private _renderDefaultNavigation() {\r\n return html`\r\n <button\r\n class=\"nav-button nav-button--previous\"\r\n part=\"nav-button-previous\"\r\n ?disabled=${this.isFirstStep || this.disabled}\r\n @click=${() => this.previous()}\r\n >\r\n Previous\r\n </button>\r\n <button\r\n class=\"nav-button nav-button--next\"\r\n part=\"nav-button-next\"\r\n ?disabled=${this.isLastStep || this.disabled}\r\n @click=${() => this.next()}\r\n >\r\n ${this.isLastStep ? 'Finish' : 'Next'}\r\n </button>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'bp-stepper': BpStepper;\r\n }\r\n}\r\n"],"names":["buttonStyles","css","BpButton","LitElement","html","__decorateClass","property","customElement","inputStyles","debounce","fn","delay","timeoutId","pendingArgs","debounced","args","BpInput","value","originalEvent","target","showError","showHelper","live","ifDefined","nothing","query","badgeStyles","BpBadge","classMap","iconStyles","airplay","alarm_clock","align_horizontal","align_vertical","angle","archive","arrow_bottom_left","arrow_bottom_right","arrow_down","arrow_down_circle","arrow_left","arrow_left_circle","arrow_right","arrow_right_circle","arrow_top_left","arrow_top_right","arrow_up","arrow_up_circle","audio_wave","backspace","backward","bag","battery_75","battery_charging","battery_empty","battery_full","battery_half","battery_low","bell","bell_disabled","bell_ringing","bell_snooze","bluetooth","book","book_closed","book_text","bookmark","bookmark_book","box","box_add","box_download","box_open","box_remove","boxes","branch","briefcase","browser","browser_alt","button_add","button_minus","calculator","calendar","calendar_add","calendar_date","calendar_day","calendar_days","calendar_last_day","calendar_month","calendar_move","calendar_remove","calendar_split","calendar_week","camera","camera_alt","camera_noflash","camera_noflash_alt","capture","card_timeline","card_view","carousel","cart","cast","chain","chat_add","check","check_circle","check_circle_outside","checkbox_checked","checkbox_empty","chevron_close","chevron_down","chevron_down_circle","chevron_down_double","chevron_left","chevron_left_circle","chevron_left_double","chevron_open","chevron_right","chevron_right_circle","chevron_right_double","chevron_up","chevron_up_circle","chevron_up_double","circle","circle_menu","circle_split","clipboard","clipboard_add","clipboard_check","clipboard_copy","clipboard_cross","clipboard_notes","clipboard_remove","clock","close","cloud","cloud_disconnect","cloud_download","cloud_download_alt","cloud_upload","cloud_upload_alt","code","coffee","coin","coins","compass","component_add","contacts","contract","create","credit_card","crop","cross","cross_circle","crosshair","cube","cubes","cylinder","database","diamond","directions","disc","display","display_alt","document$1","document_justified","document_list","document_stack","document_words","door","door_alt","download","download_alt","downward","drag","drag_circle","drag_vertical","duplicate","duplicate_alt","enter","enter_alt","episodes","exit_left","exit_right","expand","expand_height","expand_width","external","eye","eye_closed","eye_no","face_delighted","face_happy","face_neutral","face_sad","file_download","file_upload","files_history","files_multi","files_stack","film","filter","filter_circle","filter_single","filtering","fingerprint","flag","flame","flame_alt","flip_view","floppy","folder_add","folder_closed","folder_minus","folder_open","fork_git","forward","frame","fullscreen","funnel","gauge","gift","globe","gps","grab","graph_bar","graph_box","graph_increase","grid","grid_circles","grid_circles_add","grid_small","grid_squares","grid_squares_add","hand","harddrive","hash","heart","heart_rate","heart_remove","height","hierarchy","home","home_alt","home_check","home_door","_import","inbox","inbox_alt","info_circle","iphone_landscape","iphone_portrait","jump_backward","jump_forward","jump_left","jump_right","keyboard","laptop","lightbulb","lightbulb_on","lightning","lightning_alt","lineweight","link","link_alt","link_broken","link_horizontal","link_vertical","list","list_add","list_numbered","loader","location","lock","lock_open","mail","mail_add","mail_delete","mail_minus","mail_new","mail_open","mail_remove","marquee","maximise","menu_hamburger","menu_horizontal","menu_vertical","message","message_writing","microphone","microphone_disabled","microphone_muted","midpoint","mini_player","minimise","minus","minus_circle","moon","move","newspaper","no_sign","notebook","notification","nut","pages","panel_bottom","panel_center","panel_left","panel_right","panel_sectioned","panel_top","paper","paper_folded","paper_plane","paper_plane_alt","paperclip","paragraph_center","paragraph_end","paragraph_left","paragraph_right","paragraph_start","pen","phone_landscape","phone_portrait","picture","pie_half","pie_quarter","pie_third","pill","play_button","plus","plus_circle","postcard","printer","projector","pull_down","pull_left","pull_right","pull_up","push_down","push_left","push_right","push_up","question_circle","radio_on","receipt","record","redo","refresh","refresh_alt","replicate","replicate_alt","reset","reset_alt","reset_forward","reset_hard","reset_temporary","retweet","reuse","reverse","reverse_alt","revert","rocket","ruler","scale","scale_contract","scale_extend","scalpel","search","server","settings","share","share_alt","shuffle","side_menu","signal_full","signal_low","signal_medium","signal_none","slash_backward","slash_forward","sliders","sort","sort_alt","speaker","speech_bubble","speech_typing","split","split_three","star","sun","support","swap","_switch","table","table_header","tag","tag_milestone","tags","terminal","thread","thumbs_down","thumbs_up","ticket","timeline","todo","toggle","toggles","translate","trash","trash_alt","trophy","tv_mode","unarchive","undo","undo_history","unlink_horizontal","unlink_vertical","upload","upload_alt","upward","user","user_add","user_circle","user_male","user_male_circle","user_remove","users","venn","version","versions","video","volume_0","volume_add","volume_disabled","volume_high","volume_low","volume_minus","volume_muted","wallet","warning_circle","warning_hex","warning_triangle","waves","width","wifi","wifi_error","wifi_none","window$1","window_collapse_left","window_collapse_right","window_content","wrap_back","wrap_forward","write","zoom_cancel","zoom_in","zoom_out","zoom_reset","iconRegistry","document","window","getIcon","name","svgContent","unsafeHTML","BpIcon","classes","iconTemplate","spinnerStyles","BpSpinner","avatarStyles","BpAvatar","hasImage","hasInitials","titleText","changedProperties","state","dividerStyles","BpDivider","event","nodes","node","linkStyles","BpLink","isExternal","computedRel","headingStyles","BpHeading","sizeClass","weightClass","textStyles","BpText","checkboxStyles","BpCheckbox","options","radioStyles","BpRadio","inputElement","root","radio","switchStyles","BpSwitch","tooltipStyles","BpTooltip","progressStyles","BpProgress","percent","cardStyles","BpCard","slot","keyboardEvent","alertStyles","BpAlert","selectStyles","BpSelect","optionValue","optionLabel","previousValue","hiddenInput","option","el","repeat","index","isSelected","isFocused","focusedOption","longestText","text","selectClasses","displayLabel","labelId","textareaStyles","booleanConverter","BpTextarea","tagStyles","BpTag","removeEvent","iconSize","modalStyles","BpModal","focusableElements","firstElement","lastElement","focusableSelectors","elements","dialogClasses","multiSelectStyles","memoizeOne","lastArgs","lastResult","hasBeenCalled","argsMatch","prev","next","i","BpMultiSelect","map","opt","newValue","v","selectedValues","selected","focused","hasSelection","e","comboboxStyles","BpCombobox","searchText","searchLower","filteredOptions","selectedOption","hasValue","datePickerStyles","BpDatePicker","date","currentFocus","days","result","months","year","month","day","match","today","date1","date2","minDate","maxDate","firstDay","lastDay","startDayOfWeek","dayOfWeek","remainingDays","weekdays","selectedDate","calendarDays","datePickerClasses","isCurrentMonth","isToday","isDisabled","timePickerStyles","BpTimePicker","timeString","hours","minutes","period","parsed","maxHours","h","m","oldValue","displayValue","timeOptions","sliderStyles","throttle","limit","useRAF","rafId","waiting","throttled","scheduleNext","BpSlider","clientX","range","ticks","numTicks","rawValue","stepString","decimalPlaces","steppedValue","preciseValue","rect","percentage","handleMouseMove","moveEvent","handleMouseUp","touch","handleTouchMove","moveTouch","handleTouchEnd","largeStep","wrapperClasses","pos","numberInputStyles","BpNumberInput","factor","stepDecimals","emitChange","currentValue","inputValue","numValue","clampedValue","roundedValue","inputClasses","fileUploadStyles","BpFileUpload","fileInfo","fileId","fileIndex","f","removedFile","input","relatedTarget","dataTransfer","newFiles","validFiles","file","existingFile","acceptedTypes","type","fileType","fileExtension","accepted","category","reason","bytes","units","exponent","dropzoneClasses","acceptDescription","sizeDescription","tabsStyles","BpTabs","firstEnabled","tab","panels","tabId","disabled","enabledTabs","currentIndex","newIndex","handled","t","newTab","closedIndex","nextIndex","panel","isActive","containerClasses","isVertical","queryAssignedElements","BpTabPanel","breadcrumbStyles","BpBreadcrumb","_event","item","separatorIcons","isLast","isCurrent","hiddenCount","firstItem","lastItems","visibleItems","showEllipsis","_item","BpBreadcrumbItem","itemClasses","paginationStyles","BpPagination","newPage","totalCount","currentPageNum","siblingCountNum","boundaryCountNum","startPage","endPage","page","self","pageNumbers","isFirstPage","isLastPage","menuStyles","BpMenu","items","BpMenuItem","BpMenuDivider","dropdownStyles","BpDropdown","skeletonStyles","BpSkeleton","props","customProps","lineElements","isLastLine","num","notificationStyles","BpNotification","accordionStyles","BpAccordion","customEvent","id","expanded","itemId","accordionItem","isExpanded","expandedIds","ids","BpAccordionItem","headerId","contentId","tableStyles","BpTable","rows","sortState","column","direction","a","b","aVal","bVal","comparison","key","row","rowId","newSelection","iconName","sortedRows","rowClasses","content","tableClasses","treeStyles","BpTree","nodeId","allIds","found","path","foundPath","navigateEvent","hasChildren","level","contentClasses","contentInner","nodeContent","child","hasNodes","drawerStyles","BpDrawer","isHorizontal","popoverStyles","BpPopover","colorPickerStyles","parseColor","parseHex","parseRgb","parseHsl","hex","r","g","rgbToHsv","rgb","hsl","s","l","hslToHsv","max","min","delta","hsvToRgb","hsv","c","x","sv","hsvToHsl","sl","roundAlpha","formatColorOutput","format","includeAlpha","hexR","hexG","hexB","hexA","BpColorPicker","y","step","hue","alpha","channel","formats","color","hueColor","handleX","handleY","colorStart","colorEnd","currentColor","originalHsv","originalColor","origRgb","hasSwatches","hasSlottedSwatches","hasLabel","stepperStyles","BpStepper","errors","prevStep","updated","status","detail","clickEvent","prevKey","nextKey","currentStepConfig","completeEvent","hasError","complete","showCheckmark","isClickable"],"mappings":"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AfC,KAAe,odCAfC,KAAe,+aCAfC,KAAe,6vBCAfC,KAAe,ycCAfC,KAAe,y4BCAfC,KAAe,iUCAfC,KAAe,4bCAfC,KAAe,gjBCAfC,KAAe,2wBCAfC,KAAe,mcCAfC,KAAe,yaCAfC,KAAe,m3BCAfC,KAAe,uYCAfC,KAAe,ydCAfC,KAAe,szCCAfC,KAAe,ynBCAfC,KAAe,2kBCAfC,KAAe,2nBCAfC,KAAe,krBCAfC,KAAe,4uBCAfC,KAAe,+bCAfC,KAAe,8ZCAfC,KAAe,6gBCAfC,KAAe,4uBCAfC,KAAe,6hBCAfC,KAAe,s9BCAfC,KAAe,msBCAfC,KAAe,ufCAfC,KAAe,gnBCAfC,KAAe,miBCAfC,KAAe,0aCAfC,KAAe,ogBCAfC,KAAe,oZCAfC,KAAe,imBCAfC,KAAe,uqBCAfC,KAAe,wOCAfC,KAAe,iSCAfC,KAAe,+lBCAfC,KAAe,6YCAfC,KAAe,sVCAfC,KAAe,wRCAfC,KAAe,mOCAfC,KAAe,6SCAfC,KAAe,0RCAfC,KAAe,qOCAfC,KAAe,qSCAfC,KAAe,4RCAfC,KAAe,0RCAfC,KAAe,oOCAfC,KAAe,sSCAfC,KAAe,2RCAfC,KAAe,oOCAfC,KAAe,kSCAfC,KAAe,0RCAfC,KAAe,iNCAfC,KAAe,6gBCAfC,KAAe,oUCAfC,KAAe,iyBCAfC,KAAe,2mBCAfC,KAAe,qjBCAfC,KAAe,4vBCAfC,KAAe,mnBCAfC,KAAe,+pBCAfC,KAAe,ilBCAfC,KAAe,uSCAfC,KAAe,0PCAfC,KAAe,4kBCAfC,KAAe,4wBCAfC,KAAe,0pBCAfC,KAAe,ypBCAfC,KAAe,ypBCAfC,KAAe,6sBCAfC,KAAe,kdCAfC,KAAe,qeCAfC,KAAe,+kBCAfC,KAAe,g0BCAfC,KAAe,sSCAfC,KAAe,qaCAfC,KAAe,kmBCAfC,KAAe,0VCAfC,KAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SCAfC,KAAe,6ZCAfC,KAAe,iUCAfC,KAAe,0RCAfC,KAAe,+VCAfC,KAAe,+hBCAfC,KAAe,ozBCAfC,KAAe,s0BCAfC,KAAe,weCAfC,KAAe,wiBCAfC,KAAe,yXCAfC,KAAe,8eCAfC,KAAe,+QCAfC,KAAe,uhBCAfC,KAAe,6gBCAfC,KAAe,+cCAfC,KAAe,spBCAfC,KAAe,yfCAfC,KAAe,qpBCAfC,KAAe,qbCAfC,KAAe,8qBCAfC,KAAe,6uBCAfC,KAAe,oTCAfC,KAAe,wXCAfC,KAAe,2YCAfC,KAAe,0RCAfC,KAAe,gTCAfC,KAAe,iSCAfC,KAAe,moBCAfC,KAAe,ypBCAfC,KAAe,goBCAfC,KAAe,2kBCAfC,KAAe,qlBCAfC,KAAe,qcCAfC,KAAe,saCAfC,KAAe,sVCAfC,KAAe,ydCAfC,KAAe,0XCAfC,KAAe,mfCAfC,KAAe,iwBCAfC,KAAe,0bCAfC,KAAe,qmBCAfC,KAAe,4fCAfC,KAAe,6fCAfC,KAAe,seCAfC,KAAe,0jBCAfC,KAAe,mcCAfC,KAAe,+YCAfC,KAAe,8dCAfC,KAAe,kbCAfC,KAAe,weCAfC,KAAe,0jBCAfC,KAAe,8QCAfC,KAAe,gTCAfC,KAAe,iSCAfC,KAAe,0tBCAfC,KAAe,gqCCAfC,KAAe,gcCAfC,KAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,KAAe,qoBCAfC,KAAe,4kCCAfC,KAAe,+cCAfC,KAAe,ggBCAfC,KAAe,odCAfC,KAAe,qdCAfC,KAAe,yzBCAfC,KAAe,8VCAfC,KAAe,gYCAfC,KAAe,+RCAfC,KAAe,keCAfC,KAAe,6OCAfC,KAAe,qgBCAfC,KAAe,unBCAfC,KAAe,qoBCAfC,KAAe,ssBCAfC,KAAe,qrBCAfC,KAAe,0VCAfC,KAAe,scCAfC,KAAe,gVCAfC,KAAe,6sBCAfC,KAAe,iVCAfC,KAAe,+VCAfC,KAAe,yxCCAfC,KAAe,g0CCAfC,KAAe,onCCAfC,KAAe,g0BCAfC,KAAe,ymBCAfC,KAAe,ySCAfC,KAAe,kcCAfC,KAAe,8PCAfC,KAAe,6rBCAfC,KAAe,4UCAfC,KAAe,8WCAfC,KAAe,gVCAfC,KAAe,iVCAfC,KAAe,6WCAfC,KAAe,+bCAfC,KAAe,waCAfC,KAAe,kmBCAfC,KAAe,upBCAfC,KAAe,mXCAfC,KAAe,qaCAfC,KAAe,qaCAfC,KAAe,4VCAfC,KAAe,oWCAfC,KAAe,6TCAfC,KAAe,+TCAfC,KAAe,giCCAfC,KAAe,6jBCAfC,KAAe,qiBCAfC,KAAe,syBCAfC,KAAe,wPCAfC,KAAe,yPCAfC,KAAe,gWCAfC,KAAe,gbCAfC,KAAe,2vBCAfC,KAAe,2jBCAfC,KAAe,oaCAfC,KAAe,8ZCAfC,KAAe,qkBCAfC,KAAe,kUCAfC,KAAe,s+CCAfC,KAAe,4ZCAfC,KAAe,ipBCAfC,KAAe,gqBCAfC,KAAe,yoBCAfC,KAAe,yYCAfC,KAAe,mZCAfC,KAAe,ilBCAfC,KAAe,gYCAfC,KAAe,4kBCAfC,KAAe,8iBCAfC,KAAe,0jBCAfC,KAAe,+kBCAfC,KAAe,+dCAfC,KAAe,0RCAfC,KAAe,oPCAfC,KAAe,oPCAfC,KAAe,q3BCAfC,KAAe,8wBCAfC,KAAe,+pBCAfC,KAAe,i3BCAfC,KAAe,6lBCAfC,KAAe,4cCAfC,KAAe,8gBCAfC,KAAe,uUCAfC,KAAe,sMCAfC,KAAe,mbCAfC,KAAe,wfCAfC,KAAe,sYCAfC,KAAe,60BCAfC,KAAe,6TCAfC,KAAe,wYCAfC,KAAe,6fCAfC,KAAe,0SCAfC,KAAe,0dCAfC,KAAe,wYCAfC,KAAe,4fCAfC,KAAe,yYCAfC,KAAe,0YCAfC,KAAe,qmBCAfC,KAAe,uYCAfC,KAAe,iUCAfC,KAAe,4YCAfC,KAAe,8TCAfC,KAAe,6SCAfC,KAAe,opBCAfC,KAAe,wRCAfC,KAAe,yWCAfC,KAAe,wRCAfC,KAAe,yRCAfC,KAAe,yWCAfC,KAAe,gaCAfC,KAAe,4gBCAfC,KAAe,sYCAfC,KAAe,0eCAfC,KAAe,waCAfC,KAAe,6bCAfC,KAAe,mZCAfC,KAAe,2QCAfC,KAAe,kiBCAfC,KAAe,yPCAfC,KAAe,wdCAfC,KAAe,yiBCAfC,KAAe,grBCAfC,KAAe,8mBCAfC,KAAe,4SCAfC,KAAe,0YCAfC,KAAe,+SCAfC,KAAe,sTCAfC,KAAe,4SCAfC,KAAe,8SCAfC,KAAe,kVCAfC,KAAe,2SCAfC,KAAe,wrBCAfC,KAAe,mSCAfC,KAAe,2fCAfC,KAAe,mSCAfC,KAAe,8UCAfC,KAAe,gbCAfC,KAAe,ibCAfC,KAAe,+dCAfC,KAAe,ieCAfC,KAAe,gcCAfC,KAAe,kXCAfC,KAAe,iXCAfC,KAAe,giBCAfC,KAAe,ifCAfC,KAAe,oYCAfC,KAAe,mfCAfC,KAAe,6UCAfC,KAAe,6UCAfC,KAAe,keCAfC,KAAe,iyBCAfC,KAAe,ufCAfC,KAAe,ofCAfC,KAAe,ySCAfC,KAAe,ySCAfC,KAAe,uTCAfC,KAAe,4QCAfC,KAAe,8+BCAfC,KAAe,8sDCAfC,KAAe,obCAfC,KAAe,yaCAfC,KAAe,4ZCAfC,KAAe,ikBCAfC,KAAe,qVCAfC,KAAe,iWCAfC,KAAe,iWCAfC,KAAe,iUCAfC,KAAe,uOCAfC,KAAe,wMCAfC,KAAe,qXCAfC,KAAe,mVCAfC,KAAe,oZCAfC,KAAe,0gBCAfC,KAAe,0dCAfC,KAAe,8zBCAfC,KAAe,uZCAfC,KAAe,6aCAfC,KAAe,wQCAfC,KAAe,2wCCAfC,KAAe,mYCAfC,KAAe,wmBCAfC,KAAe,geCAfC,KAAe,soBCAfC,KAAe,uoBCAfC,KAAe,unBCAfC,KAAe,6jBCAfC,KAAe,+8BCAf3X,KAAe,kTCAf4X,KAAe,wTCAfC,KAAe,qzBCAfC,KAAe,kwBCAfC,KAAe,2vBCAfC,KAAe,wpBCAfC,KAAe,qTCAfC,KAAe,khBCAfC,KAAe,2UCAfC,KAAe,+gBCAfC,KAAe,y9BCAfC,KAAe,seCAfC,KAAe,6yBCAfC,KAAe,6mBCAfC,KAAe,y7BCAfC,KAAe,6eCAfC,KAAe,gUCAfC,KAAe,snBCAfC,KAAe,iXCAfC,KAAe,6WCAfC,KAAe,sTCAfC,KAAe,wXCAfC,KAAe,yYCAfC,KAAe,goBCAfC,KAAe,6jBCAfC,KAAe,6lBCAfC,KAAe,keCAfC,KAAe,2gBCAfC,KAAe,siBCAfC,KAAe,k7BCAfC,KAAe,8QCAfC,KAAe,6TCAfC,KAAe,6VCAfC,KAAe,qfCAfC,KAAe,ySCAfC,KAAe,meCAfC,KAAe,4mBCAfC,KAAe,wZCAfC,KAAe,2VCAfC,KAAe,2VCAfC,KAAe,2ZCAfC,KAAe,+cCAfC,KAAe,iYCAfC,KAAe,ybCAfC,KAAe,mZCAfC,KAAe,wTCAfC,KAAe,4aCAfC,KAAe,khBCAfC,KAAe,2zBCAfC,KAAe,uuBCAfC,KAAe,mgBCAfC,KAAe,4jBCAfC,K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AA,EADNE,EAAc,aAAa;AAAA,GACfgjB,CAAA;ACpBN,MAAMM,KAAmB5jB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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CbsxB,CAAA;AC5BN,MAAME,KAAgB9xB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACiC1B,SAASiyB,GAAWjxB,GAAgC;AACzD,SAAKA,KAELA,IAAQA,EAAM,KAAA,EAAO,YAAA,GAGjBA,EAAM,WAAW,GAAG,IACfkxB,GAASlxB,CAAK,IAInBA,EAAM,WAAW,KAAK,IACjBmxB,GAASnxB,CAAK,IAInBA,EAAM,WAAW,KAAK,IACjBoxB,GAASpxB,CAAK,IAGhB,QAnBY;AAoBrB;AAOO,SAASkxB,GAASG,GAA8B;AACrD,EAAAA,IAAMA,EAAI,QAAQ,KAAK,EAAE;AAEzB,MAAIC,GACFC,GACAxC,GACAD,IAAI;AAEN,MAAIuC,EAAI,WAAW;AACjB,IAAAC,IAAI,SAASD,EAAI,CAAC,IAAIA,EAAI,CAAC,GAAG,EAAE,GAChCE,IAAI,SAASF,EAAI,CAAC,IAAIA,EAAI,CAAC,GAAG,EAAE,GAChCtC,IAAI,SAASsC,EAAI,CAAC,IAAIA,EAAI,CAAC,GAAG,EAAE;AAAA,WACvBA,EAAI,WAAW;AACxB,IAAAC,IAAI,SAASD,EAAI,CAAC,IAAIA,EAAI,CAAC,GAAG,EAAE,GAChCE,IAAI,SAASF,EAAI,CAAC,IAAIA,EAAI,CAAC,GAAG,EAAE,GAChCtC,IAAI,SAASsC,EAAI,CAAC,IAAIA,EAAI,CAAC,GAAG,EAAE,GAChCvC,IAAI,SAASuC,EAAI,CAAC,IAAIA,EAAI,CAAC,GAAG,EAAE,IAAI;AAAA,WAC3BA,EAAI,WAAW;AACxB,IAAAC,IAAI,SAASD,EAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GACpCE,IAAI,SAASF,EAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GACpCtC,IAAI,SAASsC,EAAI,UAAU,GAAG,CAAC,GAAG,EAAE;AAAA,WAC3BA,EAAI,WAAW;AACxB,IAAAC,IAAI,SAASD,EAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GACpCE,IAAI,SAASF,EAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GACpCtC,IAAI,SAASsC,EAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GACpCvC,IAAI,SAASuC,EAAI,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI;AAAA;AAExC,WAAO;AAGT,SAAI,MAAMC,CAAC,KAAK,MAAMC,CAAC,KAAK,MAAMxC,CAAC,KAAK,MAAMD,CAAC,IACtC,OAGF0C,GAAS,EAAE,GAAAF,GAAG,GAAAC,GAAG,GAAAxC,GAAG,GAAAD,GAAG;AAChC;AAOO,SAASqC,GAASM,GAA8B;AACrD,QAAMnO,IAAQmO,EAAI;AAAA,IAChB;AAAA,EAAA;AAEF,MAAI,CAACnO,EAAO,QAAO;AAEnB,QAAM,IAAI,SAASA,EAAM,CAAC,GAAG,EAAE,GACzBiO,IAAI,SAASjO,EAAM,CAAC,GAAG,EAAE,GACzByL,IAAI,SAASzL,EAAM,CAAC,GAAG,EAAE,GACzB,IAAIA,EAAM,CAAC,MAAM,SAAY,WAAWA,EAAM,CAAC,CAAC,IAAI;AAE1D,SAAOkO,GAAS,EAAE,GAAG,GAAAD,GAAG,GAAAxC,GAAG,GAAG;AAChC;AAOO,SAASqC,GAASM,GAA8B;AACrD,QAAMpO,IAAQoO,EAAI;AAAA,IAChB;AAAA,EAAA;AAEF,MAAI,CAACpO,EAAO,QAAO;AAEnB,QAAM0B,IAAI,WAAW1B,EAAM,CAAC,CAAC,GACvBqO,IAAI,WAAWrO,EAAM,CAAC,CAAC,GACvBsO,IAAI,WAAWtO,EAAM,CAAC,CAAC,GACvB,IAAIA,EAAM,CAAC,MAAM,SAAY,WAAWA,EAAM,CAAC,CAAC,IAAI;AAE1D,SAAOuO,GAAS,EAAE,GAAA7M,GAAG,GAAA2M,GAAG,GAAAC,GAAG,GAAG;AAChC;AAOO,SAASJ,GAASC,GAAyB;AAChD,QAAMH,IAAIG,EAAI,IAAI,KACZF,IAAIE,EAAI,IAAI,KACZ1C,IAAI0C,EAAI,IAAI,KAEZK,IAAM,KAAK,IAAIR,GAAGC,GAAGxC,CAAC,GACtBgD,IAAM,KAAK,IAAIT,GAAGC,GAAGxC,CAAC,GACtBiD,IAAQF,IAAMC;AAEpB,MAAI/M,IAAI;AACR,QAAM2M,IAAIG,MAAQ,IAAI,IAAKE,IAAQF,IAAO,KACpC/P,IAAI+P,IAAM;AAEhB,SAAIE,MAAU,MACRF,MAAQR,IACVtM,IAAI,OAAQuM,IAAIxC,KAAKiD,IAAS,KACrBF,MAAQP,IACjBvM,IAAI,OAAO+J,IAAIuC,KAAKU,IAAQ,KAE5BhN,IAAI,OAAOsM,IAAIC,KAAKS,IAAQ,KAI5BhN,IAAI,MAAGA,KAAK,MAET,EAAE,GAAAA,GAAG,GAAA2M,GAAG,GAAA5P,GAAG,GAAG0P,EAAI,EAAA;AAC3B;AAOO,SAASQ,GAASC,GAAyB;AAChD,QAAMlN,IAAIkN,EAAI,GACRP,IAAIO,EAAI,IAAI,KACZnQ,IAAImQ,EAAI,IAAI,KAEZC,IAAIpQ,IAAI4P,GACRS,IAAID,KAAK,IAAI,KAAK,IAAMnN,IAAI,KAAM,IAAK,CAAC,IACxCC,IAAIlD,IAAIoQ;AAEd,MAAIb,IAAI,GACNC,IAAI,GACJxC,IAAI;AAEN,SAAI/J,KAAK,KAAKA,IAAI,MAChBsM,IAAIa,GACJZ,IAAIa,GACJrD,IAAI,KACK/J,KAAK,MAAMA,IAAI,OACxBsM,IAAIc,GACJb,IAAIY,GACJpD,IAAI,KACK/J,KAAK,OAAOA,IAAI,OACzBsM,IAAI,GACJC,IAAIY,GACJpD,IAAIqD,KACKpN,KAAK,OAAOA,IAAI,OACzBsM,IAAI,GACJC,IAAIa,GACJrD,IAAIoD,KACKnN,KAAK,OAAOA,IAAI,OACzBsM,IAAIc,GACJb,IAAI,GACJxC,IAAIoD,MAEJb,IAAIa,GACJZ,IAAI,GACJxC,IAAIqD,IAGC;AAAA,IACL,GAAG,KAAK,OAAOd,IAAIrM,KAAK,GAAG;AAAA,IAC3B,GAAG,KAAK,OAAOsM,IAAItM,KAAK,GAAG;AAAA,IAC3B,GAAG,KAAK,OAAO8J,IAAI9J,KAAK,GAAG;AAAA,IAC3B,GAAGiN,EAAI;AAAA,EAAA;AAEX;AAOO,SAASL,GAASH,GAAyB;AAChD,QAAM1M,IAAI0M,EAAI,GACRC,IAAID,EAAI,IAAI,KACZE,IAAIF,EAAI,IAAI,KAEZ3P,IAAI6P,IAAID,IAAI,KAAK,IAAIC,GAAG,IAAIA,CAAC,GAC7BS,IAAKtQ,MAAM,IAAI,IAAI,KAAK,IAAI6P,IAAI7P;AAEtC,SAAO,EAAE,GAAAiD,GAAG,GAAGqN,IAAK,KAAK,GAAGtQ,IAAI,KAAK,GAAG2P,EAAI,EAAA;AAC9C;AAOO,SAASY,GAASJ,GAAyB;AAChD,QAAMlN,IAAIkN,EAAI,GACRP,IAAIO,EAAI,IAAI,KACZnQ,IAAImQ,EAAI,IAAI,KAEZN,IAAI7P,KAAK,IAAI4P,IAAI,IACjBY,IAAKX,MAAM,KAAKA,MAAM,IAAI,KAAK7P,IAAI6P,KAAK,KAAK,IAAIA,GAAG,IAAIA,CAAC;AAE/D,SAAO,EAAE,GAAA5M,GAAG,GAAGuN,IAAK,KAAK,GAAGX,IAAI,KAAK,GAAGM,EAAI,EAAA;AAC9C;AAOO,SAASM,GAAW1D,GAAmB;AAC5C,SAAO,KAAK,MAAMA,IAAI,GAAG,IAAI;AAC/B;AASO,SAAS2D,GACdP,GACAQ,GACAC,GACQ;AACR,QAAMlB,IAAMQ,GAASC,CAAG,GAClBR,IAAMY,GAASJ,CAAG;AAExB,UAAQQ,GAAA;AAAA,IACN,KAAK;AACH,aAAIC,KAAgBT,EAAI,IAAI,IACnB,QAAQT,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKe,GAAWN,EAAI,CAAC,CAAC,MAEzD,OAAOT,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKA,EAAI,CAAC;AAAA,IAEzC,KAAK;AACH,aAAIkB,KAAgBT,EAAI,IAAI,IACnB,QAAQ,KAAK,MAAMR,EAAI,CAAC,CAAC,KAAK,KAAK,MAAMA,EAAI,CAAC,CAAC,MAAM,KAAK,MAAMA,EAAI,CAAC,CAAC,MAAMc,GAAWN,EAAI,CAAC,CAAC,MAE/F,OAAO,KAAK,MAAMR,EAAI,CAAC,CAAC,KAAK,KAAK,MAAMA,EAAI,CAAC,CAAC,MAAM,KAAK,MAAMA,EAAI,CAAC,CAAC;AAAA,IAG9E,SAAS;AACP,YAAMkB,IAAOnB,EAAI,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,GACzCoB,IAAOpB,EAAI,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,GACzCqB,IAAOrB,EAAI,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC/C,UAAIkB,KAAgBT,EAAI,IAAI,GAAG;AAC7B,cAAMa,IAAO,KAAK,MAAMb,EAAI,IAAI,GAAG,EAChC,SAAS,EAAE,EACX,SAAS,GAAG,GAAG;AAClB,eAAO,IAAIU,CAAI,GAAGC,CAAI,GAAGC,CAAI,GAAGC,CAAI;AAAA,MACtC;AACA,aAAO,IAAIH,CAAI,GAAGC,CAAI,GAAGC,CAAI;AAAA,IAC/B;AAAA,EAAA;AAEJ;;;;;;AC/QO,IAAME,IAAN,cAA4B9zB,EAAW;AAAA,EAkE5C,cAAc;AACZ,UAAA,GA7BO,KAAQ,QAAQ,IAGhB,KAAQ,OAAiB,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAA,GAGhD,KAAQ,iBAAiB,IAGzB,KAAQ,uBAAuB,IAG/B,KAAQ,aAA0B,OAGlC,KAAQ,iBAAiB,IAGzB,KAAQ,kBAAkB,IAMnC,KAAQ,kBAAkB,IAC1B,KAAQ,iBAAiB,IACzB,KAAQ,mBAAmB,IA4H3B,KAAQ,sBAAsB,CAAC6d,MAA4B;AAEzD,MADaA,EAAM,aAAA,EACT,SAAS,IAAI,KACrB,KAAK,OAAA;AAAA,IAET,GAEA,KAAQ,mBAAmB,CAACA,MAA+B;AACzD,MAAIA,EAAM,QAAQ,aAEhB,KAAK,QAAQ,KAAK,gBAClB,KAAK,YAAY,KAAK,cAAc,GACpC,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,OAAA;AAAA,IAET,GAvIE,KAAK,QAAQ,WACb,KAAK,SAAS,OACd,KAAK,QAAQ,IACb,KAAK,WAAW,CAAA,GAChB,KAAK,SAAS,IACd,KAAK,WAAW,IAChB,KAAK,WAAW,IAChB,KAAK,OAAO,MACZ,KAAK,QAAQ,IACb,KAAK,OAAO,IACZ,KAAK,cAAc;AAAA,EACrB;AAAA,EAEA,oBAA0B;AACxB,UAAM,kBAAA,GAEN,KAAK,uBAAuB,gBAAgB,QAC5C,KAAK,YAAY,KAAK,KAAK,GAC3B,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,aAAa,KAAK;AAAA,EACzB;AAAA,EAEA,uBAA6B;AAC3B,UAAM,qBAAA,GACN,KAAK,uBAAA;AAAA,EACP;AAAA,EAEU,WAAWJ,GAAyC;AAC5D,IAAIA,EAAkB,IAAI,OAAO,KAAK,CAAC,KAAK,kBAC1C,KAAK,YAAY,KAAK,KAAK,GAC3B,KAAK,iBAAiB,KAAK,cAAc,KAAK,IAE5CA,EAAkB,IAAI,QAAQ,MAChC,KAAK,aAAa,KAAK;AAAA,EAE3B;AAAA,EAEQ,cAAuB;AAC7B,WAAO,KAAK,mBAAmB,KAAK,kBAAkB,KAAK;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUQ,YAAY3c,GAAqB;AACvC,UAAM8kB,IAASmM,GAAWjxB,CAAK;AAC/B,IAAI8kB,MACF,KAAK,OAAOA;AAAA,EAEhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,cAAc4N,IAAsB,KAAK,QAAgB;AAC/D,WAAOD,GAAkB,KAAK,MAAMC,GAAQ,KAAK,KAAK;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUQ,sBAA4B;AAClC,IAAI,KAAK,YAAY,KAAK,YAC1B,KAAK,YAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,sBAAsB3V,GAA4B;AACxD,IAAI,KAAK,YAAY,KAAK,aACtBA,EAAM,QAAQ,WAAWA,EAAM,QAAQ,SACzCA,EAAM,eAAA,GACN,KAAK,YAAA;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,cAAoB;AAC1B,IAAI,KAAK,QACP,KAAK,OAAA,KAEL,KAAK,QAAQ,IACb,KAAK,iBAAiB,KAAK,OAC3B,KAAK;AAAA,MACH,IAAI,YAAY,WAAW,EAAE,SAAS,IAAM,UAAU,IAAM;AAAA,IAAA,GAE9D,KAAK,oBAAA;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,SAAe;AACrB,SAAK,QAAQ,IACb,KAAK,uBAAA,GACL,KAAK;AAAA,MACH,IAAI,YAAY,YAAY,EAAE,SAAS,IAAM,UAAU,IAAM;AAAA,IAAA;AAAA,EAEjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBQ,sBAA4B;AAClC,aAAS,iBAAiB,SAAS,KAAK,mBAAmB,GAC3D,SAAS,iBAAiB,WAAW,KAAK,gBAAgB;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,yBAA+B;AACrC,aAAS,oBAAoB,SAAS,KAAK,mBAAmB,GAC9D,SAAS,oBAAoB,WAAW,KAAK,gBAAgB;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWQ,4BAA4BA,GAA2B;AAC7D,IAAI,KAAK,YAAY,KAAK,aAC1BA,EAAM,eAAA,GACN,KAAK,kBAAkB,IACvB,KAAK,WAAW,kBAAkBA,EAAM,SAAS,GACjD,KAAK,wBAAwBA,CAAK;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,4BAA4BA,GAA2B;AAC7D,IAAK,KAAK,mBACV,KAAK,wBAAwBA,CAAK;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,0BAA0BA,GAA2B;AAC3D,IAAK,KAAK,oBACV,KAAK,kBAAkB,IACvB,KAAK,WAAW,sBAAsBA,EAAM,SAAS,GACrD,KAAK,YAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,wBAAwBA,GAA2B;AACzD,UAAMwJ,IAAO,KAAK,WAAW,sBAAA,GACvB6L,IAAI,KAAK,IAAI,GAAG,KAAK,IAAIrV,EAAM,UAAUwJ,EAAK,MAAMA,EAAK,KAAK,CAAC,GAC/D0M,IAAI,KAAK,IAAI,GAAG,KAAK,IAAIlW,EAAM,UAAUwJ,EAAK,KAAKA,EAAK,MAAM,CAAC;AAErE,SAAK,OAAO;AAAA,MACV,GAAG,KAAK;AAAA,MACR,GAAI6L,IAAI7L,EAAK,QAAS;AAAA,MACtB,GAAG,MAAO0M,IAAI1M,EAAK,SAAU;AAAA,IAAA,GAG/B,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,wBAAwBxJ,GAA4B;AAC1D,QAAI,KAAK,YAAY,KAAK,SAAU;AAEpC,UAAMmW,IAAOnW,EAAM,WAAW,KAAK;AACnC,QAAIoN,IAAU;AAEd,YAAQpN,EAAM,KAAA;AAAA,MACZ,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI,KAAK,KAAK,KAAK,IAAImW,CAAI,EAAA,GAC/D/I,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI+I,CAAI,EAAA,GAC7D/I,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI,KAAK,KAAK,KAAK,IAAI+I,CAAI,EAAA,GAC/D/I,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI+I,CAAI,EAAA,GAC7D/I,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,EAAA,GAC/BA,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,IAAA,GAC/BA,IAAU;AACV;AAAA,IAAA;AAGJ,IAAIA,MACFpN,EAAM,eAAA,GACN,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA,GACL,KAAK,YAAA;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWQ,sBAAsBA,GAA2B;AACvD,IAAI,KAAK,YAAY,KAAK,aAC1BA,EAAM,eAAA,GACN,KAAK,iBAAiB,IACtB,KAAK,WAAW,kBAAkBA,EAAM,SAAS,GACjD,KAAK,sBAAsBA,CAAK;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,sBAAsBA,GAA2B;AACvD,IAAK,KAAK,kBACV,KAAK,sBAAsBA,CAAK;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,oBAAoBA,GAA2B;AACrD,IAAK,KAAK,mBACV,KAAK,iBAAiB,IACtB,KAAK,WAAW,sBAAsBA,EAAM,SAAS,GACrD,KAAK,YAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,sBAAsBA,GAA2B;AACvD,UAAMwJ,IAAO,KAAK,WAAW,sBAAA,GAEvB4M,IADI,KAAK,IAAI,GAAG,KAAK,IAAIpW,EAAM,UAAUwJ,EAAK,KAAKA,EAAK,MAAM,CAAC,IACpDA,EAAK,SAAU;AAEhC,SAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG4M,EAAA,GAC/B,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,kBAAkBpW,GAA4B;AACpD,QAAI,KAAK,YAAY,KAAK,SAAU;AAEpC,UAAMmW,IAAOnW,EAAM,WAAW,KAAK;AACnC,QAAIoN,IAAU;AAEd,YAAQpN,EAAM,KAAA;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,IAAI,KAAK,KAAK,IAAImW,KAAQ,IAAA,GACtD/I,IAAU;AACV;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI+I,IAAO,OAAO,IAAA,GAC5D/I,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,EAAA,GAC/BA,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,IAAA,GAC/BA,IAAU;AACV;AAAA,IAAA;AAGJ,IAAIA,MACFpN,EAAM,eAAA,GACN,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA,GACL,KAAK,YAAA;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWQ,wBAAwBA,GAA2B;AACzD,IAAI,KAAK,YAAY,KAAK,aAC1BA,EAAM,eAAA,GACN,KAAK,mBAAmB,IACxB,KAAK,aAAa,kBAAkBA,EAAM,SAAS,GACnD,KAAK,wBAAwBA,CAAK;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,wBAAwBA,GAA2B;AACzD,IAAK,KAAK,oBACV,KAAK,wBAAwBA,CAAK;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,sBAAsBA,GAA2B;AACvD,IAAK,KAAK,qBACV,KAAK,mBAAmB,IACxB,KAAK,aAAa,sBAAsBA,EAAM,SAAS,GACvD,KAAK,YAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,wBAAwBA,GAA2B;AACzD,UAAMwJ,IAAO,KAAK,aAAa,sBAAA,GAEzB6M,IADI,KAAK,IAAI,GAAG,KAAK,IAAIrW,EAAM,UAAUwJ,EAAK,MAAMA,EAAK,KAAK,CAAC,IACnDA,EAAK;AAEvB,SAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG6M,EAAA,GAC/B,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,oBAAoBrW,GAA4B;AACtD,QAAI,KAAK,YAAY,KAAK,SAAU;AAEpC,UAAMmW,IAAOnW,EAAM,WAAW,MAAM;AACpC,QAAIoN,IAAU;AAEd,YAAQpN,EAAM,KAAA;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI,GAAG,KAAK,KAAK,IAAImW,CAAI,EAAA,GAC7D/I,IAAU;AACV;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI+I,CAAI,EAAA,GAC7D/I,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,EAAA,GAC/BA,IAAU;AACV;AAAA,MACF,KAAK;AACH,aAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAG,EAAA,GAC/BA,IAAU;AACV;AAAA,IAAA;AAGJ,IAAIA,MACFpN,EAAM,eAAA,GACN,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA,GACL,KAAK,YAAA;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWQ,gBAAgBA,GAAoB;AAC1C,UAAMsL,IAAQtL,EAAM;AACpB,SAAK,iBAAiBsL,EAAM;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,iBAAiBtL,GAAoB;AAE3C,QAAI/c,IADU+c,EAAM,OACF,MAAM,KAAA;AAGxB,IAAI/c,KAAS,CAACA,EAAM,WAAW,GAAG,MAChCA,IAAQ,MAAMA;AAGhB,UAAM8kB,IAASmM,GAAWjxB,CAAK;AAC/B,IAAI8kB,KACF,KAAK,OAAOA,GACZ,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA,GACL,KAAK,YAAA,KAGL,KAAK,iBAAiB,KAAK,cAAc,KAAK;AAAA,EAElD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,gBAAgBuO,GAA0BtW,GAAoB;AACpE,UAAMsL,IAAQtL,EAAM,QACd/c,IAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,SAASqoB,EAAM,OAAO,EAAE,KAAK,CAAC,CAAC,GAEjEoJ,IAAMQ,GAAS,KAAK,IAAI;AAC9B,IAAAR,EAAI4B,CAAO,IAAIrzB,GACf,KAAK,OAAOixB,GAAW,QAAQQ,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKA,EAAI,CAAC,GAAG,GACrE,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,mBAAyB;AAC/B,SAAK,YAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,gBAAgB4B,GAA0BtW,GAAoB;AACpE,UAAMsL,IAAQtL,EAAM,QACd2U,IAAMY,GAAS,KAAK,IAAI;AAE9B,IAAIe,MAAY,MACd3B,EAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,SAASrJ,EAAM,OAAO,EAAE,KAAK,CAAC,CAAC,IAEjEqJ,EAAI2B,CAAO,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,SAAShL,EAAM,OAAO,EAAE,KAAK,CAAC,CAAC,GAG1E,KAAK,OAAO4I,GAAW,QAAQS,EAAI,CAAC,KAAKA,EAAI,CAAC,MAAMA,EAAI,CAAC,MAAMA,EAAI,CAAC,GAAG,GACvE,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,mBAAyB;AAC/B,SAAK,YAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,kBAAkB3U,GAAoB;AAC5C,UAAMsL,IAAQtL,EAAM,QACd/c,IAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,SAASqoB,EAAM,OAAO,EAAE,KAAK,CAAC,CAAC;AACvE,SAAK,OAAO,EAAE,GAAG,KAAK,MAAM,GAAGroB,IAAQ,IAAA,GACvC,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,0BAAgC;AACtC,SAAK,YAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,sBAA4B;AAClC,UAAMszB,IAAyB,CAAC,OAAO,OAAO,KAAK,GAC7CrJ,IAAeqJ,EAAQ,QAAQ,KAAK,UAAU;AACpD,SAAK,aAAaA,GAASrJ,IAAe,KAAKqJ,EAAQ,MAAM;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWQ,mBAAmBC,GAAqB;AAC9C,QAAI,KAAK,YAAY,KAAK,SAAU;AAEpC,UAAMzO,IAASmM,GAAWsC,CAAK;AAC/B,IAAIzO,MACF,KAAK,OAAOA,GACZ,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA,GACL,KAAK,YAAA;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,qBAAqByO,GAAexW,GAA4B;AACtE,KAAIA,EAAM,QAAQ,WAAWA,EAAM,QAAQ,SACzCA,EAAM,eAAA,GACN,KAAK,mBAAmBwW,CAAK;AAAA,EAEjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAc,oBAAmC;AAC/C,QAAI,GAAC,KAAK,wBAAwB,KAAK,YAAY,KAAK,WAExD;AAAA,WAAK,kBAAkB;AACvB,UAAI;AAGF,cAAMtQ,IAAS,MADI,IAAI,WAAA,EACS,KAAA;AAEhC,YAAIA,EAAO,SAAS;AAClB,gBAAM6B,IAASmM,GAAWhO,EAAO,OAAO;AACxC,UAAI6B,MACF,KAAK,OAAOA,GACZ,KAAK,iBAAiB,KAAK,cAAc,KAAK,GAC9C,KAAK,WAAA,GACL,KAAK,YAAA;AAAA,QAET;AAAA,MACF,QAAQ;AAAA,MAER,UAAA;AACE,aAAK,kBAAkB;AAAA,MACzB;AAAA;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUQ,aAAmB;AACzB,UAAM9kB,IAAQ,KAAK,cAAA;AACnB,SAAK;AAAA,MACH,IAAI,YAAY,YAAY;AAAA,QAC1B,QAAQ,EAAE,OAAAA,EAAA;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAEL;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,cAAoB;AAC1B,UAAMA,IAAQ,KAAK,cAAA;AACnB,SAAK,QAAQA,GACb,KAAK;AAAA,MACH,IAAI,YAAY,aAAa;AAAA,QAC3B,QAAQ,EAAE,OAAAA,EAAA;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAEL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUQ,mBAAmB;AACzB,UAAMwzB,IAAW,OAAO,KAAK,KAAK,CAAC,gBAC7BC,IAAU,KAAK,KAAK,GACpBC,IAAU,MAAM,KAAK,KAAK;AAEhC,WAAOv0B;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKS,KAAK,WAAW,KAAK,CAAC;AAAA;AAAA,qCAEL,KAAK;AAAA,MAChC,KAAK,KAAK;AAAA,IAAA,CACX,iBAAiB,KAAK,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,8BACnBq0B,CAAQ;AAAA,uBACf,KAAK,2BAA2B;AAAA,uBAChC,KAAK,2BAA2B;AAAA,qBAClC,KAAK,yBAAyB;AAAA,mBAChC,KAAK,uBAAuB;AAAA;AAAA;AAAA;AAAA,yBAItBC,CAAO,WAAWC,CAAO;AAAA;AAAA;AAAA;AAAA,EAIhD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,mBAAmB;AACzB,UAAMA,IAAW,KAAK,KAAK,IAAI,MAAO;AAEtC,WAAOv0B;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKS,KAAK,WAAW,KAAK,CAAC;AAAA;AAAA,yBAEjB,KAAK,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA;AAAA;AAAA,uBAGzB,KAAK,qBAAqB;AAAA,uBAC1B,KAAK,qBAAqB;AAAA,qBAC5B,KAAK,mBAAmB;AAAA,mBAC1B,KAAK,iBAAiB;AAAA;AAAA,qDAEYu0B,CAAO;AAAA;AAAA;AAAA,EAG1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,qBAAqB;AAC3B,QAAI,CAAC,KAAK,MAAO,QAAOnzB;AAExB,UAAMkxB,IAAMQ,GAAS,KAAK,IAAI,GACxB0B,IAAa,QAAQlC,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKA,EAAI,CAAC,QAC9CmC,IAAW,QAAQnC,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKA,EAAI,CAAC,QAC5CgC,IAAU,KAAK,KAAK,IAAI;AAE9B,WAAOt0B;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKS,KAAK,WAAW,KAAK,CAAC;AAAA;AAAA,yBAEjB,KAAK,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC;AAAA;AAAA;AAAA,6DAGOw0B,CAAU,KAAKC,CAAQ;AAAA,uBAC7D,KAAK,uBAAuB;AAAA,uBAC5B,KAAK,uBAAuB;AAAA,qBAC9B,KAAK,qBAAqB;AAAA,mBAC5B,KAAK,mBAAmB;AAAA;AAAA,wDAEaH,CAAO;AAAA;AAAA;AAAA,EAG7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,iBAAiB;AACvB,UAAMhC,IAAMQ,GAAS,KAAK,IAAI,GACxB4B,IAAe,QAAQpC,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAChEqC,IAAc7C,GAAW,KAAK,cAAc,GAC5C8C,IAAgBD,KACjB,MAAM;AACL,YAAME,IAAU/B,GAAS6B,CAAW;AACpC,aAAO,QAAQE,EAAQ,CAAC,KAAKA,EAAQ,CAAC,KAAKA,EAAQ,CAAC,KAAKF,EAAY,CAAC;AAAA,IACxE,OACAD;AAEJ,WAAO10B;AAAA;AAAA;AAAA;AAAA,+BAIoB40B,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAMbF,CAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,kBAAkB;AACxB,WAAO10B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAMQ,KAAK,cAAc;AAAA,sBAChB,KAAK,QAAQ;AAAA,sBACb,KAAK,QAAQ;AAAA,mBAChB,KAAK,eAAe;AAAA,oBACnB,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,mBAAmB;AACzB,UAAMsyB,IAAMQ,GAAS,KAAK,IAAI;AAE9B,WAAO9yB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBASU,OAAOsyB,EAAI,CAAC,CAAC;AAAA,wBACV,KAAK,QAAQ;AAAA,wBACb,KAAK,QAAQ;AAAA,qBAChB,CAACrP,MAAa,KAAK,gBAAgB,KAAKA,CAAC,CAAC;AAAA,sBACzC,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAYtB,OAAOqP,EAAI,CAAC,CAAC;AAAA,wBACV,KAAK,QAAQ;AAAA,wBACb,KAAK,QAAQ;AAAA,qBAChB,CAACrP,MAAa,KAAK,gBAAgB,KAAKA,CAAC,CAAC;AAAA,sBACzC,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAYtB,OAAOqP,EAAI,CAAC,CAAC;AAAA,wBACV,KAAK,QAAQ;AAAA,wBACb,KAAK,QAAQ;AAAA,qBAChB,CAACrP,MAAa,KAAK,gBAAgB,KAAKA,CAAC,CAAC;AAAA,sBACzC,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,UAKjC,KAAK,QACHjjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAQe,OAAO,KAAK,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,8BAClC,KAAK,QAAQ;AAAA,8BACb,KAAK,QAAQ;AAAA,2BAChB,KAAK,iBAAiB;AAAA,4BACrB,KAAK,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,gBAM5CoB,CAAO;AAAA;AAAA;AAAA,EAGjB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,mBAAmB;AACzB,UAAMmxB,IAAMY,GAAS,KAAK,IAAI;AAE9B,WAAOnzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBASU,OAAO,KAAK,MAAMuyB,EAAI,CAAC,CAAC,CAAC;AAAA,wBACtB,KAAK,QAAQ;AAAA,wBACb,KAAK,QAAQ;AAAA,qBAChB,CAACtP,MAAa,KAAK,gBAAgB,KAAKA,CAAC,CAAC;AAAA,sBACzC,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAYtB,OAAO,KAAK,MAAMsP,EAAI,CAAC,CAAC,CAAC;AAAA,wBACtB,KAAK,QAAQ;AAAA,wBACb,KAAK,QAAQ;AAAA,qBAChB,CAACtP,MAAa,KAAK,gBAAgB,KAAKA,CAAC,CAAC;AAAA,sBACzC,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAYtB,OAAO,KAAK,MAAMsP,EAAI,CAAC,CAAC,CAAC;AAAA,wBACtB,KAAK,QAAQ;AAAA,wBACb,KAAK,QAAQ;AAAA,qBAChB,CAACtP,MAAa,KAAK,gBAAgB,KAAKA,CAAC,CAAC;AAAA,sBACzC,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,UAKjC,KAAK,QACHjjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAQe,OAAO,KAAK,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,8BAClC,KAAK,QAAQ;AAAA,8BACb,KAAK,QAAQ;AAAA,2BAChB,KAAK,iBAAiB;AAAA,4BACrB,KAAK,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,gBAM5CoB,CAAO;AAAA;AAAA;AAAA,EAGjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,gBAAgB;AACtB,WAAOpB;AAAA;AAAA,UAED,KAAK,eAAe,QAAQ,KAAK,gBAAA,IAAoBoB,CAAO;AAAA,UAC5D,KAAK,eAAe,QAAQ,KAAK,iBAAA,IAAqBA,CAAO;AAAA,UAC7D,KAAK,eAAe,QAAQ,KAAK,iBAAA,IAAqBA,CAAO;AAAA;AAAA;AAAA;AAAA,mBAIpD,KAAK,mBAAmB;AAAA,sBACrB,KAAK,QAAQ;AAAA,4CACS,KAAK,WAAW,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,kBAAkB;AACxB,UAAM0zB,IAAc,KAAK,SAAS,SAAS,GACrCC,IAAqB,KAAK,cAAc,mBAAmB,MAAM;AAEvE,WAAI,CAACD,KAAe,CAACC,IAA2B3zB,IAEzCpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQC,KAAK,SAAS;AAAA,MACd,CAACo0B,MAAUp0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qCAMco0B,CAAK;AAAA,yBACjB,MAAM,KAAK,mBAAmBA,CAAK,CAAC;AAAA,2BAClC,CAACnR,MACV,KAAK,qBAAqBmR,GAAOnR,CAAC,CAAC;AAAA,4BACzB,KAAK,QAAQ;AAAA,8BACXmR,CAAK;AAAA;AAAA;AAAA,IAAA,CAGxB;AAAA;AAAA;AAAA;AAAA,EAIT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,oBAAoB;AAC1B,WAAK,KAAK,uBAEHp0B;AAAA;AAAA;AAAA;AAAA,iBAIM,KAAK,iBAAiB;AAAA,oBACnB,KAAK,YAAY,KAAK,YAAY,KAAK,eAAe;AAAA;AAAA,qBAErD,KAAK,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QATEoB;AAAA,EAqBzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,gBAAgB;AACtB,WAAOpB;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKW,KAAK,SAAS,cAAc;AAAA;AAAA;AAAA;AAAA,cAIpC,KAAK,iBAAA,CAAkB,IAAI,KAAK,kBAAkB;AAAA;AAAA,YAEpD,KAAK,oBAAoB;AAAA;AAAA,cAEvB,KAAK,eAAA,CAAgB,IAAI,KAAK,eAAe;AAAA,cAC7C,KAAK,mBAAmB;AAAA;AAAA,YAE1B,KAAK,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,iBAAiB;AACvB,UAAMsyB,IAAMQ,GAAS,KAAK,IAAI,GACxB4B,IAAe,QAAQpC,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAKA,EAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAChE0C,IAAW,KAAK,SAAS,KAAK;AAEpC,WAAOh1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAOc,KAAK,KAAK;AAAA,yBACV,KAAK,QAAQ;AAAA,oBAClB,KAAK,WAAW,KAAK,CAAC;AAAA,oBACtB,KAAK,QAAQ;AAAA,iBAChB,KAAK,mBAAmB;AAAA,mBACtB,KAAK,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,iCAKZ00B,CAAY;AAAA;AAAA,YAEjCM,IACEh1B;AAAA,mBACK,KAAK,SAAS,KAAK,WAAW;AAAA,mBAEnCoB,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB;AAAA,EAEA,SAAS;AACP,WAAI,KAAK,SACA,KAAK,cAAA,IAGPpB;AAAA,+CACoC,KAAK,IAAI;AAAA,UAC9C,KAAK,gBAAgB;AAAA,UACrB,KAAK,QACHA;AAAA;AAAA,iCAEqB,KAAK,eAAe;AAAA;AAAA,gBAErC,KAAK,eAAe;AAAA,gBAExBoB,CAAO;AAAA;AAAA,QAEX,KAAK,OACHpB;AAAA;AAAA,oBAEU,KAAK,IAAI;AAAA,qBACR,KAAK,eAAe;AAAA,gBAE/BoB,CAAO;AAAA;AAAA,EAEf;AACF;AAxuCayyB,EACJ,SAAS,CAAChC,EAAiB;AAGE5xB,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAJf2zB,EAIyB,WAAA,SAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAPf2zB,EAOyB,WAAA,UAAA,CAAA;AAI5B5zB,EAAA;AAAA,EADPC,EAAS,EAAE,WAAW+gB,GAAkB,SAAS,IAAM;AAAA,GAV7C4S,EAWH,WAAA,SAAA,CAAA;AAG2B5zB,EAAA;AAAA,EAAlCC,EAAS,EAAE,MAAM,MAAA,CAAO;AAAA,GAdd2zB,EAcwB,WAAA,YAAA,CAAA;AAGE5zB,EAAA;AAAA,EAApCC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GAjBhB2zB,EAiB0B,WAAA,UAAA,CAAA;AAGe5zB,EAAA;AAAA,EAAnDC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GApB/B2zB,EAoByC,WAAA,YAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAnDC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAvB/B2zB,EAuByC,WAAA,YAAA,CAAA;AAGD5zB,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA1B9B2zB,EA0BwC,WAAA,QAAA,CAAA;AAGf5zB,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA7Bf2zB,EA6ByB,WAAA,SAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAhCf2zB,EAgCyB,WAAA,QAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAnCf2zB,EAmCyB,WAAA,eAAA,CAAA;AAGnB5zB,EAAA;AAAA,EAAhBwd,EAAA;AAAM,GAtCIoW,EAsCM,WAAA,SAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAhBwd,EAAA;AAAM,GAzCIoW,EAyCM,WAAA,QAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAhBwd,EAAA;AAAM,GA5CIoW,EA4CM,WAAA,kBAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAhBwd,EAAA;AAAM,GA/CIoW,EA+CM,WAAA,wBAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAhBwd,EAAA;AAAM,GAlDIoW,EAkDM,WAAA,cAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAhBwd,EAAA;AAAM,GArDIoW,EAqDM,WAAA,kBAAA,CAAA;AAGA5zB,EAAA;AAAA,EAAhBwd,EAAA;AAAM,GAxDIoW,EAwDM,WAAA,mBAAA,CAAA;AAEa5zB,EAAA;AAAA,EAA7BoB,EAAM,aAAa;AAAA,GA1DTwyB,EA0DmB,WAAA,cAAA,CAAA;AACA5zB,EAAA;AAAA,EAA7BoB,EAAM,aAAa;AAAA,GA3DTwyB,EA2DmB,WAAA,cAAA,CAAA;AACE5zB,EAAA;AAAA,EAA/BoB,EAAM,eAAe;AAAA,GA5DXwyB,EA4DqB,WAAA,gBAAA,CAAA;AA5DrBA,IAAN5zB,EAAA;AAAA,EADNE,EAAc,iBAAiB;AAAA,GACnB0zB,CAAA;AC7CN,MAAMoB,KAAgBp1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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"}