@internetarchive/collection-browser 4.5.2 → 4.7.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 (480) hide show
  1. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.editorconfig +29 -0
  2. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/ci.yml +27 -0
  3. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/gh-pages-main.yml +39 -0
  4. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/npm-publish.yml +39 -0
  5. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/pr-preview.yml +38 -0
  6. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.husky/pre-commit +1 -0
  7. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.prettierignore +1 -0
  8. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/LICENSE +661 -0
  9. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/README.md +84 -0
  10. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/eslint.config.mjs +53 -0
  11. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/index.html +24 -0
  12. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/index.ts +29 -0
  13. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/local.archive.org.cert +86 -0
  14. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/local.archive.org.key +27 -0
  15. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/package.json +120 -0
  16. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/renovate.json +6 -0
  17. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/app-root.ts +1284 -0
  18. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/arrow-left.ts +10 -0
  19. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/arrow-right.ts +10 -0
  20. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/chevron.ts +4 -0
  21. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/close-circle-dark.ts +5 -0
  22. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/contract.ts +9 -0
  23. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/empty-query.ts +5 -0
  24. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/expand.ts +9 -0
  25. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/eye-closed.ts +5 -0
  26. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/eye.ts +5 -0
  27. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/favorite-filled.ts +10 -0
  28. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/favorite-unfilled.ts +9 -0
  29. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/filter.ts +10 -0
  30. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/login-required.ts +18 -0
  31. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/account.ts +14 -0
  32. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/audio.ts +14 -0
  33. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/collection.ts +12 -0
  34. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/data.ts +15 -0
  35. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/etree.ts +14 -0
  36. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/film.ts +14 -0
  37. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/images.ts +13 -0
  38. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/radio.ts +15 -0
  39. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/search.ts +14 -0
  40. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/software.ts +13 -0
  41. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/texts.ts +13 -0
  42. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-commercial.ts +12 -0
  43. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-fact-check.ts +12 -0
  44. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-quote.ts +12 -0
  45. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv.ts +14 -0
  46. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/video.ts +14 -0
  47. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/web.ts +13 -0
  48. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/null-result.ts +5 -0
  49. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/quote.ts +7 -0
  50. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/restricted.ts +13 -0
  51. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/reviews.ts +11 -0
  52. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/upload.ts +12 -0
  53. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/views.ts +11 -0
  54. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/circular-activity-indicator.ts +64 -0
  55. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-browser.ts +3165 -0
  56. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facet-row.ts +309 -0
  57. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facet-tombstone-row.ts +40 -0
  58. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facets-template.ts +85 -0
  59. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/models.ts +10 -0
  60. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/more-facets-content.ts +644 -0
  61. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/more-facets-pagination.ts +294 -0
  62. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/dedupe.ts +44 -0
  63. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +27 -0
  64. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/index.ts +3 -0
  65. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +17 -0
  66. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +70 -0
  67. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +79 -0
  68. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +93 -0
  69. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/models.ts +36 -0
  70. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-bar.ts +437 -0
  71. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-button.ts +145 -0
  72. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-dropdown.ts +185 -0
  73. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-equals.ts +16 -0
  74. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-heuristics.ts +26 -0
  75. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/toggle-switch.ts +174 -0
  76. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets.ts +1013 -0
  77. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-data-source-interface.ts +351 -0
  78. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-data-source.ts +1474 -0
  79. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-query-state.ts +60 -0
  80. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/models.ts +56 -0
  81. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/empty-placeholder.ts +192 -0
  82. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/expanded-date-picker.ts +191 -0
  83. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/language-code-handler/language-code-handler.ts +64 -0
  84. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/language-code-handler/language-code-mapping.ts +564 -0
  85. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/manage/manage-bar.ts +276 -0
  86. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/manage/remove-items-modal-content.ts +102 -0
  87. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/mediatype/mediatype-config.ts +146 -0
  88. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/models.ts +895 -0
  89. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/restoration-state-handler.ts +550 -0
  90. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/alpha-bar-tooltip.ts +53 -0
  91. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/alpha-bar.ts +252 -0
  92. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/compact.ts +5 -0
  93. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/list.ts +5 -0
  94. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-disabled.ts +15 -0
  95. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-down.ts +17 -0
  96. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-up.ts +17 -0
  97. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-triangle.ts +5 -0
  98. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/tile.ts +5 -0
  99. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/sort-filter-bar.ts +733 -0
  100. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/ia-button.ts +139 -0
  101. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/item-image-styles.ts +124 -0
  102. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/sr-only.ts +18 -0
  103. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/tile-action-styles.ts +59 -0
  104. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/base-tile-component.ts +124 -0
  105. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/collection-browser-loading-tile.ts +26 -0
  106. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/account-tile.ts +113 -0
  107. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/collection-tile.ts +184 -0
  108. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/item-tile.ts +347 -0
  109. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/search-tile.ts +90 -0
  110. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -0
  111. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/tile-stats.ts +211 -0
  112. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/hover/hover-pane-controller.ts +638 -0
  113. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/hover/tile-hover-pane.ts +184 -0
  114. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/image-block.ts +162 -0
  115. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/item-image.ts +214 -0
  116. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list-compact-header.ts +112 -0
  117. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list-compact.ts +278 -0
  118. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list.ts +718 -0
  119. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/models.ts +21 -0
  120. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/overlay/icon-overlay.ts +57 -0
  121. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/overlay/text-overlay.ts +79 -0
  122. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/review-block.ts +130 -0
  123. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/text-snippet-block.ts +132 -0
  124. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-dispatcher.ts +637 -0
  125. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-display-value-provider.ts +133 -0
  126. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-mediatype-icon.ts +133 -0
  127. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/analytics-events.ts +29 -0
  128. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/array-equals.ts +8 -0
  129. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/collapse-repeated-quotes.ts +13 -0
  130. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/date-filter-field.ts +11 -0
  131. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/facet-utils.ts +183 -0
  132. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-count.ts +95 -0
  133. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-date.ts +62 -0
  134. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-unit-size.ts +43 -0
  135. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/local-date-from-utc.ts +15 -0
  136. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/log.ts +14 -0
  137. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/resolve-mediatype.ts +26 -0
  138. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/sha1.ts +9 -0
  139. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-browser.test.ts +2639 -0
  140. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/facet-row.test.ts +421 -0
  141. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/facets-template.test.ts +139 -0
  142. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/more-facets-content.test.ts +231 -0
  143. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/more-facets-pagination.test.ts +201 -0
  144. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/toggle-switch.test.ts +164 -0
  145. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets.test.ts +928 -0
  146. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/data-source/collection-browser-data-source.test.ts +193 -0
  147. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/empty-placeholder.test.ts +88 -0
  148. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/expanded-date-picker.test.ts +201 -0
  149. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/icon-overlay.test.ts +38 -0
  150. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/image-block.test.ts +247 -0
  151. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/item-image.test.ts +220 -0
  152. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/manage/manage-bar.test.ts +347 -0
  153. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/manage/remove-items-modal-content.test.ts +81 -0
  154. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mediatype-config.test.ts +11 -0
  155. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-analytics-handler.ts +30 -0
  156. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-search-responses.ts +1364 -0
  157. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-search-service.ts +134 -0
  158. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/restoration-state-handler.test.ts +480 -0
  159. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/review-block.test.ts +62 -0
  160. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/alpha-bar-tooltip.test.ts +17 -0
  161. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/alpha-bar.test.ts +101 -0
  162. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/sort-filter-bar.test.ts +443 -0
  163. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/text-overlay.test.ts +55 -0
  164. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/text-snippet-block.test.ts +85 -0
  165. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tile-stats.test.ts +191 -0
  166. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/account-tile.test.ts +121 -0
  167. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/collection-tile.test.ts +114 -0
  168. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/item-tile.test.ts +520 -0
  169. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/search-tile.test.ts +75 -0
  170. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/hover/hover-pane-controller.test.ts +482 -0
  171. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/hover/tile-hover-pane.test.ts +80 -0
  172. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list-compact-header.test.ts +43 -0
  173. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list-compact.test.ts +282 -0
  174. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list.test.ts +576 -0
  175. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-dispatcher.test.ts +320 -0
  176. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-display-value-provider.test.ts +172 -0
  177. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-mediatype-icon.test.ts +160 -0
  178. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/array-equals.test.ts +31 -0
  179. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-count.test.ts +32 -0
  180. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-date.test.ts +89 -0
  181. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-unit-size.test.ts +21 -0
  182. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/local-date-from-utc.test.ts +37 -0
  183. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/tsconfig.json +25 -0
  184. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/types/dompurify.d.ts +1 -0
  185. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/vite.config.ts +29 -0
  186. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/web-dev-server.config.mjs +30 -0
  187. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/web-test-runner.config.mjs +52 -0
  188. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/yarn.lock +5965 -0
  189. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.editorconfig +29 -0
  190. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.github/workflows/ci.yml +29 -0
  191. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.github/workflows/gh-pages-main.yml +41 -0
  192. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.github/workflows/npm-publish.yml +49 -0
  193. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.github/workflows/pr-preview.yml +40 -0
  194. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.husky/pre-commit +1 -0
  195. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.prettierignore +1 -0
  196. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/LICENSE +661 -0
  197. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/README.md +68 -0
  198. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/eslint.config.mjs +53 -0
  199. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/index.html +24 -0
  200. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/index.ts +29 -0
  201. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/local.archive.org.cert +86 -0
  202. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/local.archive.org.key +27 -0
  203. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/package.json +129 -0
  204. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/pnpm-lock.yaml +7366 -0
  205. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/pnpm-workspace.yaml +46 -0
  206. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/renovate.json +6 -0
  207. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/app-root.ts +1284 -0
  208. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/arrow-left.ts +10 -0
  209. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/arrow-right.ts +10 -0
  210. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/chevron.ts +4 -0
  211. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/close-circle-dark.ts +5 -0
  212. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/contract.ts +9 -0
  213. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/empty-query.ts +5 -0
  214. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/expand.ts +9 -0
  215. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/eye-closed.ts +5 -0
  216. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/eye.ts +5 -0
  217. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/favorite-filled.ts +10 -0
  218. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/favorite-unfilled.ts +9 -0
  219. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/filter.ts +10 -0
  220. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/login-required.ts +18 -0
  221. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/account.ts +14 -0
  222. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/audio.ts +14 -0
  223. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/collection.ts +12 -0
  224. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/data.ts +15 -0
  225. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/etree.ts +14 -0
  226. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/film.ts +14 -0
  227. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/images.ts +13 -0
  228. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/radio.ts +15 -0
  229. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/search.ts +14 -0
  230. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/software.ts +13 -0
  231. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/texts.ts +13 -0
  232. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/tv-commercial.ts +12 -0
  233. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/tv-fact-check.ts +12 -0
  234. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/tv-quote.ts +12 -0
  235. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/tv.ts +14 -0
  236. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/video.ts +14 -0
  237. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/web.ts +13 -0
  238. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/null-result.ts +5 -0
  239. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/quote.ts +7 -0
  240. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/restricted.ts +13 -0
  241. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/reviews.ts +11 -0
  242. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/upload.ts +12 -0
  243. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/views.ts +11 -0
  244. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/circular-activity-indicator.ts +64 -0
  245. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-browser.ts +3165 -0
  246. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/facet-row.ts +309 -0
  247. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/facet-tombstone-row.ts +40 -0
  248. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/facets-template.ts +85 -0
  249. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/models.ts +10 -0
  250. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/more-facets-content.ts +644 -0
  251. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/more-facets-pagination.ts +294 -0
  252. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/dedupe.ts +44 -0
  253. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +27 -0
  254. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/index.ts +3 -0
  255. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +17 -0
  256. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +70 -0
  257. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +79 -0
  258. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +93 -0
  259. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/models.ts +36 -0
  260. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-bar.ts +437 -0
  261. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-button.ts +145 -0
  262. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-dropdown.ts +185 -0
  263. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-equals.ts +16 -0
  264. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-heuristics.ts +26 -0
  265. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/toggle-switch.ts +174 -0
  266. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets.ts +1013 -0
  267. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/data-source/collection-browser-data-source-interface.ts +351 -0
  268. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/data-source/collection-browser-data-source.ts +1474 -0
  269. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/data-source/collection-browser-query-state.ts +60 -0
  270. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/data-source/models.ts +56 -0
  271. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/empty-placeholder.ts +192 -0
  272. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/expanded-date-picker.ts +191 -0
  273. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/language-code-handler/language-code-handler.ts +64 -0
  274. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/language-code-handler/language-code-mapping.ts +564 -0
  275. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/manage/manage-bar.ts +276 -0
  276. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/manage/remove-items-modal-content.ts +102 -0
  277. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/mediatype/mediatype-config.ts +146 -0
  278. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/models.ts +895 -0
  279. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/restoration-state-handler.ts +550 -0
  280. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/alpha-bar-tooltip.ts +53 -0
  281. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/alpha-bar.ts +252 -0
  282. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/compact.ts +5 -0
  283. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/list.ts +5 -0
  284. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/sort-toggle-disabled.ts +15 -0
  285. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/sort-toggle-down.ts +17 -0
  286. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/sort-toggle-up.ts +17 -0
  287. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/sort-triangle.ts +5 -0
  288. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/tile.ts +5 -0
  289. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/sort-filter-bar.ts +733 -0
  290. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/styles/ia-button.ts +139 -0
  291. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/styles/item-image-styles.ts +124 -0
  292. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/styles/sr-only.ts +18 -0
  293. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/styles/tile-action-styles.ts +59 -0
  294. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/base-tile-component.ts +124 -0
  295. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/collection-browser-loading-tile.ts +26 -0
  296. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/account-tile.ts +113 -0
  297. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/collection-tile.ts +184 -0
  298. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/item-tile.ts +347 -0
  299. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/search-tile.ts +90 -0
  300. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -0
  301. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/tile-stats.ts +211 -0
  302. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/hover/hover-pane-controller.ts +638 -0
  303. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/hover/tile-hover-pane.ts +184 -0
  304. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/image-block.ts +162 -0
  305. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/item-image.ts +214 -0
  306. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/list/tile-list-compact-header.ts +112 -0
  307. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/list/tile-list-compact.ts +278 -0
  308. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/list/tile-list.ts +718 -0
  309. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/models.ts +21 -0
  310. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/overlay/icon-overlay.ts +57 -0
  311. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/overlay/text-overlay.ts +79 -0
  312. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/review-block.ts +130 -0
  313. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/text-snippet-block.ts +132 -0
  314. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/tile-dispatcher.ts +637 -0
  315. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/tile-display-value-provider.ts +133 -0
  316. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/tile-mediatype-icon.ts +133 -0
  317. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/analytics-events.ts +29 -0
  318. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/array-equals.ts +8 -0
  319. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/collapse-repeated-quotes.ts +13 -0
  320. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/date-filter-field.ts +11 -0
  321. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/facet-utils.ts +183 -0
  322. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/format-count.ts +95 -0
  323. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/format-date.ts +62 -0
  324. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/format-unit-size.ts +43 -0
  325. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/local-date-from-utc.ts +15 -0
  326. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/log.ts +14 -0
  327. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/resolve-mediatype.ts +26 -0
  328. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/sha1.ts +9 -0
  329. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-browser.test.ts +2639 -0
  330. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/facet-row.test.ts +421 -0
  331. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/facets-template.test.ts +139 -0
  332. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/more-facets-content.test.ts +231 -0
  333. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/more-facets-pagination.test.ts +201 -0
  334. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/toggle-switch.test.ts +164 -0
  335. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets.test.ts +928 -0
  336. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/data-source/collection-browser-data-source.test.ts +193 -0
  337. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/empty-placeholder.test.ts +88 -0
  338. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/expanded-date-picker.test.ts +201 -0
  339. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/icon-overlay.test.ts +38 -0
  340. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/image-block.test.ts +247 -0
  341. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/item-image.test.ts +220 -0
  342. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/manage/manage-bar.test.ts +347 -0
  343. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/manage/remove-items-modal-content.test.ts +81 -0
  344. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/mediatype-config.test.ts +11 -0
  345. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/mocks/mock-analytics-handler.ts +30 -0
  346. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/mocks/mock-search-responses.ts +1364 -0
  347. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/mocks/mock-search-service.ts +134 -0
  348. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/restoration-state-handler.test.ts +480 -0
  349. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/review-block.test.ts +62 -0
  350. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/sort-filter-bar/alpha-bar-tooltip.test.ts +17 -0
  351. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/sort-filter-bar/alpha-bar.test.ts +101 -0
  352. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/sort-filter-bar/sort-filter-bar.test.ts +443 -0
  353. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/text-overlay.test.ts +55 -0
  354. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/text-snippet-block.test.ts +85 -0
  355. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tile-stats.test.ts +191 -0
  356. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/grid/account-tile.test.ts +121 -0
  357. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/grid/collection-tile.test.ts +114 -0
  358. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/grid/item-tile.test.ts +520 -0
  359. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/grid/search-tile.test.ts +75 -0
  360. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/hover/hover-pane-controller.test.ts +482 -0
  361. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/hover/tile-hover-pane.test.ts +80 -0
  362. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/list/tile-list-compact-header.test.ts +43 -0
  363. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/list/tile-list-compact.test.ts +282 -0
  364. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/list/tile-list.test.ts +576 -0
  365. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/tile-dispatcher.test.ts +320 -0
  366. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/tile-display-value-provider.test.ts +172 -0
  367. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/tile-mediatype-icon.test.ts +160 -0
  368. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/array-equals.test.ts +31 -0
  369. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/format-count.test.ts +32 -0
  370. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/format-date.test.ts +89 -0
  371. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/format-unit-size.test.ts +21 -0
  372. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/local-date-from-utc.test.ts +37 -0
  373. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/tsconfig.json +25 -0
  374. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/types/dompurify.d.ts +1 -0
  375. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/vite.config.ts +29 -0
  376. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/web-dev-server.config.mjs +30 -0
  377. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/web-test-runner.config.mjs +52 -0
  378. package/.editorconfig +29 -29
  379. package/.github/workflows/ci.yml +29 -27
  380. package/.github/workflows/gh-pages-main.yml +41 -39
  381. package/.github/workflows/npm-publish.yml +42 -39
  382. package/.github/workflows/pr-preview.yml +40 -38
  383. package/.husky/pre-commit +1 -1
  384. package/.prettierignore +1 -1
  385. package/LICENSE +661 -661
  386. package/README.md +67 -83
  387. package/dist/index.js.map +1 -1
  388. package/dist/src/app-root.js +683 -683
  389. package/dist/src/app-root.js.map +1 -1
  390. package/dist/src/collection-browser.js +766 -766
  391. package/dist/src/collection-browser.js.map +1 -1
  392. package/dist/src/collection-facets/facet-row.js +143 -143
  393. package/dist/src/collection-facets/facet-row.js.map +1 -1
  394. package/dist/src/collection-facets/facets-template.js +24 -24
  395. package/dist/src/collection-facets/facets-template.js.map +1 -1
  396. package/dist/src/collection-facets.d.ts +2 -2
  397. package/dist/src/collection-facets.js +5 -5
  398. package/dist/src/collection-facets.js.map +1 -1
  399. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  400. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  401. package/dist/src/expanded-date-picker.d.ts +2 -2
  402. package/dist/src/expanded-date-picker.js +3 -3
  403. package/dist/src/expanded-date-picker.js.map +1 -1
  404. package/dist/src/restoration-state-handler.js.map +1 -1
  405. package/dist/src/styles/tile-action-styles.js +43 -43
  406. package/dist/src/styles/tile-action-styles.js.map +1 -1
  407. package/dist/src/tiles/base-tile-component.js +11 -11
  408. package/dist/src/tiles/base-tile-component.js.map +1 -1
  409. package/dist/src/tiles/grid/item-tile.js +138 -138
  410. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  411. package/dist/src/tiles/hover/hover-pane-controller.js +40 -32
  412. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  413. package/dist/src/tiles/item-image.js +1 -1
  414. package/dist/src/tiles/item-image.js.map +1 -1
  415. package/dist/src/tiles/list/tile-list-compact-header.js +62 -62
  416. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  417. package/dist/src/tiles/list/tile-list-compact.js +123 -123
  418. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  419. package/dist/src/tiles/list/tile-list.js +310 -310
  420. package/dist/src/tiles/list/tile-list.js.map +1 -1
  421. package/dist/src/tiles/models.js.map +1 -1
  422. package/dist/src/tiles/tile-dispatcher.js +286 -286
  423. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  424. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  425. package/dist/src/utils/date-filter-field.js.map +1 -1
  426. package/dist/test/collection-browser.test.js +207 -207
  427. package/dist/test/collection-browser.test.js.map +1 -1
  428. package/dist/test/collection-facets/facet-row.test.js +31 -31
  429. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  430. package/dist/test/collection-facets.test.js +2 -2
  431. package/dist/test/collection-facets.test.js.map +1 -1
  432. package/dist/test/expanded-date-picker.test.js.map +1 -1
  433. package/dist/test/tiles/grid/item-tile.test.js +77 -77
  434. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  435. package/dist/test/tiles/hover/hover-pane-controller.test.js +57 -50
  436. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  437. package/dist/test/tiles/list/tile-list.test.js +134 -134
  438. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  439. package/dist/test/tiles/tile-dispatcher.test.js +92 -92
  440. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  441. package/eslint.config.mjs +53 -53
  442. package/index.html +24 -24
  443. package/index.ts +29 -29
  444. package/local.archive.org.cert +86 -86
  445. package/local.archive.org.key +27 -27
  446. package/package.json +126 -120
  447. package/pnpm-workspace.yaml +30 -0
  448. package/renovate.json +6 -6
  449. package/src/app-root.ts +1284 -1284
  450. package/src/collection-browser.ts +3165 -3165
  451. package/src/collection-facets/facet-row.ts +309 -309
  452. package/src/collection-facets/facets-template.ts +85 -85
  453. package/src/collection-facets.ts +6 -6
  454. package/src/data-source/collection-browser-data-source-interface.ts +351 -351
  455. package/src/data-source/collection-browser-data-source.ts +1474 -1474
  456. package/src/expanded-date-picker.ts +4 -4
  457. package/src/restoration-state-handler.ts +550 -550
  458. package/src/styles/tile-action-styles.ts +59 -59
  459. package/src/tiles/base-tile-component.ts +124 -124
  460. package/src/tiles/grid/item-tile.ts +347 -347
  461. package/src/tiles/hover/hover-pane-controller.ts +638 -630
  462. package/src/tiles/item-image.ts +1 -1
  463. package/src/tiles/list/tile-list-compact-header.ts +112 -112
  464. package/src/tiles/list/tile-list-compact.ts +278 -278
  465. package/src/tiles/list/tile-list.ts +718 -718
  466. package/src/tiles/models.ts +21 -21
  467. package/src/tiles/tile-dispatcher.ts +637 -637
  468. package/src/tiles/tile-display-value-provider.ts +133 -133
  469. package/src/utils/date-filter-field.ts +11 -11
  470. package/test/collection-browser.test.ts +2639 -2639
  471. package/test/collection-facets/facet-row.test.ts +421 -421
  472. package/test/collection-facets.test.ts +2 -2
  473. package/test/expanded-date-picker.test.ts +3 -3
  474. package/test/tiles/grid/item-tile.test.ts +520 -520
  475. package/test/tiles/hover/hover-pane-controller.test.ts +482 -454
  476. package/test/tiles/list/tile-list.test.ts +576 -576
  477. package/test/tiles/tile-dispatcher.test.ts +320 -320
  478. package/tsconfig.json +25 -25
  479. package/web-dev-server.config.mjs +30 -30
  480. package/web-test-runner.config.mjs +52 -52
@@ -458,32 +458,32 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
458
458
  }
459
459
  }
460
460
  render() {
461
- return html `
461
+ return html `
462
462
  ${this.showSmartFacetBar && this.placeholderType === null
463
- ? html `<smart-facet-bar
464
- .query=${this.baseQuery}
465
- .aggregations=${this.dataSource.aggregations}
466
- .selectedFacets=${this.selectedFacets}
467
- .collectionTitles=${this.dataSource.collectionTitles}
468
- .filterToggleShown=${!this.mobileView}
469
- .filterToggleActive=${this.facetPaneVisible}
470
- .label=${this.smartFacetBarLabel}
471
- @facetsChanged=${this.facetsChanged}
463
+ ? html `<smart-facet-bar
464
+ .query=${this.baseQuery}
465
+ .aggregations=${this.dataSource.aggregations}
466
+ .selectedFacets=${this.selectedFacets}
467
+ .collectionTitles=${this.dataSource.collectionTitles}
468
+ .filterToggleShown=${!this.mobileView}
469
+ .filterToggleActive=${this.facetPaneVisible}
470
+ .label=${this.smartFacetBarLabel}
471
+ @facetsChanged=${this.facetsChanged}
472
472
  @filtersToggled=${() => {
473
473
  this.facetPaneVisible = !this.facetPaneVisible;
474
474
  this.emitFacetPaneVisibilityChanged();
475
- }}
475
+ }}
476
476
  ></smart-facet-bar>`
477
- : nothing}
478
-
479
- <div
480
- id="content-container"
481
- class=${this.mobileView ? 'mobile' : 'desktop'}
482
- >
477
+ : nothing}
478
+
479
+ <div
480
+ id="content-container"
481
+ class=${this.mobileView ? 'mobile' : 'desktop'}
482
+ >
483
483
  ${this.placeholderType
484
484
  ? this.emptyPlaceholderTemplate
485
- : this.collectionBrowserTemplate}
486
- </div>
485
+ : this.collectionBrowserTemplate}
486
+ </div>
487
487
  `;
488
488
  }
489
489
  /**
@@ -527,23 +527,23 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
527
527
  * Template for the placeholder content to show when no results are available.
528
528
  */
529
529
  get emptyPlaceholderTemplate() {
530
- return html `
531
- <empty-placeholder
532
- .placeholderType=${this.placeholderType}
533
- ?isMobileView=${this.mobileView}
534
- ?isCollection=${!!this.withinCollection}
535
- .detailMessage=${this.dataSource.queryErrorMessage ?? ''}
536
- .baseNavigationUrl=${this.baseNavigationUrl}
537
- ></empty-placeholder>
530
+ return html `
531
+ <empty-placeholder
532
+ .placeholderType=${this.placeholderType}
533
+ ?isMobileView=${this.mobileView}
534
+ ?isCollection=${!!this.withinCollection}
535
+ .detailMessage=${this.dataSource.queryErrorMessage ?? ''}
536
+ .baseNavigationUrl=${this.baseNavigationUrl}
537
+ ></empty-placeholder>
538
538
  `;
539
539
  }
540
540
  /**
541
541
  * Top-level template for rendering the left (facets) and right (results) columns.
542
542
  */
543
543
  get collectionBrowserTemplate() {
544
- return html `
545
- <div id="left-column-scroll-sentinel"></div>
546
- ${this.leftColumnTemplate} ${this.rightColumnTemplate}
544
+ return html `
545
+ <div id="left-column-scroll-sentinel"></div>
546
+ ${this.leftColumnTemplate} ${this.rightColumnTemplate}
547
547
  `;
548
548
  }
549
549
  /**
@@ -562,33 +562,33 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
562
562
  * accordion-style facets.
563
563
  */
564
564
  get mobileLeftColumnTemplate() {
565
- return html `
566
- <div
567
- id="left-column"
568
- class="column${this.isResizeToMobile ? ' preload' : ''}"
569
- >
570
- ${this.facetTopViewSlot} ${this.resultsCountTemplate}
571
- <div id="facets-header-container">${this.mobileFacetsTemplate}</div>
572
- </div>
565
+ return html `
566
+ <div
567
+ id="left-column"
568
+ class="column${this.isResizeToMobile ? ' preload' : ''}"
569
+ >
570
+ ${this.facetTopViewSlot} ${this.resultsCountTemplate}
571
+ <div id="facets-header-container">${this.mobileFacetsTemplate}</div>
572
+ </div>
573
573
  `;
574
574
  }
575
575
  /**
576
576
  * Template for the desktop version of the left column, displaying the facets sidebar.
577
577
  */
578
578
  get desktopLeftColumnTemplate() {
579
- return html `
580
- <div id="left-column" class="column" ?hidden=${!this.facetPaneVisible}>
581
- ${this.facetTopViewSlot}
582
- <div id="facets-header-container">
583
- <h2 id="facets-header" class="sr-only">${msg('Filters')}</h2>
584
- ${this.resultsCountTemplate} ${this.clearFiltersBtnTemplate(false)}
585
- </div>
586
- <div id="facets-container" aria-labelledby="facets-header">
587
- ${this.facetsTemplate}
588
- <div id="facets-scroll-sentinel"></div>
589
- </div>
590
- <div id="facets-bottom-fade"></div>
591
- </div>
579
+ return html `
580
+ <div id="left-column" class="column" ?hidden=${!this.facetPaneVisible}>
581
+ ${this.facetTopViewSlot}
582
+ <div id="facets-header-container">
583
+ <h2 id="facets-header" class="sr-only">${msg('Filters')}</h2>
584
+ ${this.resultsCountTemplate} ${this.clearFiltersBtnTemplate(false)}
585
+ </div>
586
+ <div id="facets-container" aria-labelledby="facets-header">
587
+ ${this.facetsTemplate}
588
+ <div id="facets-scroll-sentinel"></div>
589
+ </div>
590
+ <div id="facets-bottom-fade"></div>
591
+ </div>
592
592
  `;
593
593
  }
594
594
  /**
@@ -596,8 +596,8 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
596
596
  * - mainly used to render userlists
597
597
  */
598
598
  get facetTopViewSlot() {
599
- return html `<div id="facet-top-view">
600
- <slot name="facet-top-slot"></slot>
599
+ return html `<div id="facet-top-view">
600
+ <slot name="facet-top-slot"></slot>
601
601
  </div>`;
602
602
  }
603
603
  /**
@@ -612,15 +612,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
612
612
  const resultsCount = this.totalResults?.toLocaleString();
613
613
  const resultsLabel = this.totalResults === 1 ? 'Result' : 'Results';
614
614
  // Added data-testid for Playwright testing
615
- return html `
616
- <div id="results-total" class=${classes} data-testid="results-total">
617
- <span id="big-results-count">
618
- ${shouldShowSearching ? html `Searching&hellip;` : resultsCount}
619
- </span>
620
- <span id="big-results-label">
621
- ${shouldShowSearching ? nothing : resultsLabel}
622
- </span>
623
- </div>
615
+ return html `
616
+ <div id="results-total" class=${classes} data-testid="results-total">
617
+ <span id="big-results-count">
618
+ ${shouldShowSearching ? html `Searching&hellip;` : resultsCount}
619
+ </span>
620
+ <span id="big-results-label">
621
+ ${shouldShowSearching ? nothing : resultsLabel}
622
+ </span>
623
+ </div>
624
624
  `;
625
625
  }
626
626
  /**
@@ -633,47 +633,47 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
633
633
  'full-width': !this.facetPaneVisible,
634
634
  'smart-results-spacing': !!this.showSmartResults,
635
635
  });
636
- return html `
637
- <div id="right-column" class=${rightColumnClasses}>
636
+ return html `
637
+ <div id="right-column" class=${rightColumnClasses}>
638
638
  ${this.showSmartResults
639
639
  ? html `<slot name="smart-results"></slot>`
640
- : nothing}
641
- <section id="results">
642
- <h2 class="results-section-heading">
643
- <slot name="results-heading"></slot>
644
- </h2>
645
- <div id="cb-top-view">
646
- <slot name="cb-top-slot"></slot>
647
- </div>
640
+ : nothing}
641
+ <section id="results">
642
+ <h2 class="results-section-heading">
643
+ <slot name="results-heading"></slot>
644
+ </h2>
645
+ <div id="cb-top-view">
646
+ <slot name="cb-top-slot"></slot>
647
+ </div>
648
648
  ${this.isManageView
649
649
  ? this.manageBarTemplate
650
- : this.sortFilterBarTemplate}
651
- <slot name="cb-results"></slot>
650
+ : this.sortFilterBarTemplate}
651
+ <slot name="cb-results"></slot>
652
652
  ${this.displayMode === `list-compact` && this.totalResults
653
653
  ? this.listHeaderTemplate
654
- : nothing}
655
- ${this.suppressResultTiles ? nothing : this.infiniteScrollerTemplate}
656
- </section>
657
- </div>
654
+ : nothing}
655
+ ${this.suppressResultTiles ? nothing : this.infiniteScrollerTemplate}
656
+ </section>
657
+ </div>
658
658
  `;
659
659
  }
660
660
  /**
661
661
  * Template for the infinite scroller widget that contains the result tiles.
662
662
  */
663
663
  get infiniteScrollerTemplate() {
664
- return html `<infinite-scroller
665
- class=${this.infiniteScrollerClasses}
666
- itemCount=${this.placeholderType ? 0 : nothing}
667
- ariaLandmarkLabel="Search results"
668
- .estimatedCellHeight=${this.estimatedTileHeight}
669
- .minBufferMarginCells=${this.pageSize}
670
- .cellProvider=${this}
671
- .placeholderCellTemplate=${this.placeholderCellTemplate}
672
- @scrollThresholdReached=${this.scrollThresholdReached}
673
- @visibleCellsChanged=${this.visibleCellsChanged}
664
+ return html `<infinite-scroller
665
+ class=${this.infiniteScrollerClasses}
666
+ itemCount=${this.placeholderType ? 0 : nothing}
667
+ ariaLandmarkLabel="Search results"
668
+ .estimatedCellHeight=${this.estimatedTileHeight}
669
+ .minBufferMarginCells=${this.pageSize}
670
+ .cellProvider=${this}
671
+ .placeholderCellTemplate=${this.placeholderCellTemplate}
672
+ @scrollThresholdReached=${this.scrollThresholdReached}
673
+ @visibleCellsChanged=${this.visibleCellsChanged}
674
674
  >${this.displayMode === 'grid'
675
675
  ? html `<slot name="result-last-tile" slot="result-last-tile"></slot>`
676
- : nothing}
676
+ : nothing}
677
677
  </infinite-scroller>`;
678
678
  }
679
679
  /**
@@ -725,29 +725,29 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
725
725
  }
726
726
  // We only show relevance sort if a search query is currently defined
727
727
  sortFieldAvailability.relevance = this.isRelevanceSortAvailable;
728
- return html `
729
- <sort-filter-bar
730
- .defaultSortField=${this.defaultSortField}
731
- .defaultSortDirection=${this.defaultSortDirection}
732
- .selectedSort=${this.selectedSort}
733
- .sortDirection=${this.sortDirection}
734
- .sortFieldAvailability=${sortFieldAvailability}
735
- .displayMode=${this.displayMode}
736
- .selectedTitleFilter=${this.selectedTitleFilter}
737
- .selectedCreatorFilter=${this.selectedCreatorFilter}
738
- .prefixFilterCountMap=${this.dataSource.prefixFilterCountMap}
739
- .enableSortOptionsSlot=${this.enableSortOptionsSlot}
740
- .suppressDisplayModes=${this.suppressDisplayModes}
741
- @sortChanged=${this.userChangedSort}
742
- @displayModeChanged=${this.displayModeChanged}
743
- @titleLetterChanged=${this.titleLetterSelected}
744
- @creatorLetterChanged=${this.creatorLetterSelected}
745
- >
746
- ${this.tileBlurCheckboxTemplate}
747
- <slot name="sort-options-left" slot="sort-options-left"></slot>
748
- <slot name="sort-options" slot="sort-options"></slot>
749
- <slot name="sort-options-right" slot="sort-options-right"></slot>
750
- </sort-filter-bar>
728
+ return html `
729
+ <sort-filter-bar
730
+ .defaultSortField=${this.defaultSortField}
731
+ .defaultSortDirection=${this.defaultSortDirection}
732
+ .selectedSort=${this.selectedSort}
733
+ .sortDirection=${this.sortDirection}
734
+ .sortFieldAvailability=${sortFieldAvailability}
735
+ .displayMode=${this.displayMode}
736
+ .selectedTitleFilter=${this.selectedTitleFilter}
737
+ .selectedCreatorFilter=${this.selectedCreatorFilter}
738
+ .prefixFilterCountMap=${this.dataSource.prefixFilterCountMap}
739
+ .enableSortOptionsSlot=${this.enableSortOptionsSlot}
740
+ .suppressDisplayModes=${this.suppressDisplayModes}
741
+ @sortChanged=${this.userChangedSort}
742
+ @displayModeChanged=${this.displayModeChanged}
743
+ @titleLetterChanged=${this.titleLetterSelected}
744
+ @creatorLetterChanged=${this.creatorLetterSelected}
745
+ >
746
+ ${this.tileBlurCheckboxTemplate}
747
+ <slot name="sort-options-left" slot="sort-options-left"></slot>
748
+ <slot name="sort-options" slot="sort-options"></slot>
749
+ <slot name="sort-options-right" slot="sort-options-right"></slot>
750
+ </sort-filter-bar>
751
751
  `;
752
752
  }
753
753
  /**
@@ -758,20 +758,20 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
758
758
  // Only show the checkbox for @archive.org users
759
759
  if (!this.dataSource.sessionContext?.is_archive_user)
760
760
  return nothing;
761
- return html `
762
- <label
763
- id="tile-blur-label"
764
- for="tile-blur-check"
765
- slot="sort-options-right"
766
- >
767
- ${msg('Blurring')}
768
- <input
769
- id="tile-blur-check"
770
- type="checkbox"
771
- ?checked=${!this.shouldSuppressTileBlurring}
772
- @change=${this.tileBlurCheckboxChanged}
773
- />
774
- </label>
761
+ return html `
762
+ <label
763
+ id="tile-blur-label"
764
+ for="tile-blur-check"
765
+ slot="sort-options-right"
766
+ >
767
+ ${msg('Blurring')}
768
+ <input
769
+ id="tile-blur-check"
770
+ type="checkbox"
771
+ ?checked=${!this.shouldSuppressTileBlurring}
772
+ @change=${this.tileBlurCheckboxChanged}
773
+ />
774
+ </label>
775
775
  `;
776
776
  }
777
777
  /**
@@ -779,27 +779,27 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
779
779
  * showing the management view. This generally replaces the sort bar when present.
780
780
  */
781
781
  get manageBarTemplate() {
782
- return html `
783
- <manage-bar
784
- .label=${this.manageViewLabel}
785
- .modalManager=${this.modalManager}
786
- .selectedItems=${this.dataSource.checkedTileModels}
787
- .profileElement=${this.profileElement}
788
- showSelectAll
789
- showUnselectAll
790
- ?showItemManageButton=${this.pageContext === 'search'}
791
- ?removeAllowed=${this.dataSource.checkedTileModels.length !== 0}
792
- @removeItems=${this.handleRemoveItems}
793
- @manageItems=${this.handleManageItems}
794
- @selectAll=${() => this.dataSource.checkAllTiles()}
795
- @unselectAll=${() => this.dataSource.uncheckAllTiles()}
782
+ return html `
783
+ <manage-bar
784
+ .label=${this.manageViewLabel}
785
+ .modalManager=${this.modalManager}
786
+ .selectedItems=${this.dataSource.checkedTileModels}
787
+ .profileElement=${this.profileElement}
788
+ showSelectAll
789
+ showUnselectAll
790
+ ?showItemManageButton=${this.pageContext === 'search'}
791
+ ?removeAllowed=${this.dataSource.checkedTileModels.length !== 0}
792
+ @removeItems=${this.handleRemoveItems}
793
+ @manageItems=${this.handleManageItems}
794
+ @selectAll=${() => this.dataSource.checkAllTiles()}
795
+ @unselectAll=${() => this.dataSource.uncheckAllTiles()}
796
796
  @cancel=${() => {
797
797
  this.isManageView = false;
798
798
  this.dataSource.uncheckAllTiles();
799
799
  if (this.searchResultsLoading)
800
800
  this.dataSource.resetPages();
801
- }}
802
- ></manage-bar>
801
+ }}
802
+ ></manage-bar>
803
803
  `;
804
804
  }
805
805
  /**
@@ -1034,15 +1034,15 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1034
1034
  label: target.open ? 'open' : 'closed',
1035
1035
  });
1036
1036
  };
1037
- return html `
1038
- <details id="mobile-filter-collapse" @toggle=${toggleFacetsVisible}>
1039
- <summary>
1040
- <span class="collapser-icon">${chevronIcon}</span>
1041
- <h2>${msg('Filters')}</h2>
1042
- ${this.clearFiltersBtnTemplate(true)}
1043
- </summary>
1044
- ${this.facetsTemplate}
1045
- </details>
1037
+ return html `
1038
+ <details id="mobile-filter-collapse" @toggle=${toggleFacetsVisible}>
1039
+ <summary>
1040
+ <span class="collapser-icon">${chevronIcon}</span>
1041
+ <h2>${msg('Filters')}</h2>
1042
+ ${this.clearFiltersBtnTemplate(true)}
1043
+ </summary>
1044
+ ${this.facetsTemplate}
1045
+ </details>
1046
1046
  `;
1047
1047
  }
1048
1048
  /**
@@ -1126,50 +1126,50 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1126
1126
  const filterByNetworkLabel = msg('Filter by Network');
1127
1127
  const filterByShowLabel = msg('Filter by Show');
1128
1128
  const shows = showEntries.map(([show]) => show);
1129
- const loadingIndicator = html `
1130
- <span slot="empty-options">
1131
- <img src="https://archive.org/images/loading.gif" />
1132
- </span>
1129
+ const loadingIndicator = html `
1130
+ <span slot="empty-options">
1131
+ <img src="https://archive.org/images/loading.gif" />
1132
+ </span>
1133
1133
  `;
1134
- const errorMessage = html `
1135
- <span slot="empty-options">
1136
- ${msg('Unable to fetch options, try again later')}
1137
- </span>
1134
+ const errorMessage = html `
1135
+ <span slot="empty-options">
1136
+ ${msg('Unable to fetch options, try again later')}
1137
+ </span>
1138
1138
  `;
1139
- return html `
1140
- <div id="tv-filters" slot="facets-top">
1141
- <ia-combo-box
1142
- id="tv-networks"
1143
- class="tv-filter-dropdown"
1144
- placeholder=${filterByNetworkLabel}
1145
- clearable
1146
- wrap-arrow-keys
1147
- sort
1148
- .options=${networks.map((n, i) => ({ id: `network-${i}`, text: n }))}
1149
- @toggle=${this.tvDropdownToggled}
1150
- @change=${this.networksDropdownChanged}
1151
- >
1152
- <span slot="label" class="sr-only">${filterByNetworkLabel}</span>
1153
- ${this.tvMapsLoading ? loadingIndicator : nothing}
1154
- ${this.tvMapsErrored ? errorMessage : nothing}
1155
- </ia-combo-box>
1156
- <ia-combo-box
1157
- id="tv-shows"
1158
- class="tv-filter-dropdown"
1159
- placeholder=${filterByShowLabel}
1160
- max-autocomplete-entries="500"
1161
- clearable
1162
- wrap-arrow-keys
1163
- sort
1164
- .options=${shows.map((s, i) => ({ id: `show-${i}`, text: s }))}
1165
- @toggle=${this.tvDropdownToggled}
1166
- @change=${this.showsDropdownChanged}
1167
- >
1168
- <span slot="label" class="sr-only">${filterByShowLabel}</span>
1169
- ${this.tvMapsLoading ? loadingIndicator : nothing}
1170
- ${this.tvMapsErrored ? errorMessage : nothing}
1171
- </ia-combo-box>
1172
- </div>
1139
+ return html `
1140
+ <div id="tv-filters" slot="facets-top">
1141
+ <ia-combo-box
1142
+ id="tv-networks"
1143
+ class="tv-filter-dropdown"
1144
+ placeholder=${filterByNetworkLabel}
1145
+ clearable
1146
+ wrap-arrow-keys
1147
+ sort
1148
+ .options=${networks.map((n, i) => ({ id: `network-${i}`, text: n }))}
1149
+ @toggle=${this.tvDropdownToggled}
1150
+ @change=${this.networksDropdownChanged}
1151
+ >
1152
+ <span slot="label" class="sr-only">${filterByNetworkLabel}</span>
1153
+ ${this.tvMapsLoading ? loadingIndicator : nothing}
1154
+ ${this.tvMapsErrored ? errorMessage : nothing}
1155
+ </ia-combo-box>
1156
+ <ia-combo-box
1157
+ id="tv-shows"
1158
+ class="tv-filter-dropdown"
1159
+ placeholder=${filterByShowLabel}
1160
+ max-autocomplete-entries="500"
1161
+ clearable
1162
+ wrap-arrow-keys
1163
+ sort
1164
+ .options=${shows.map((s, i) => ({ id: `show-${i}`, text: s }))}
1165
+ @toggle=${this.tvDropdownToggled}
1166
+ @change=${this.showsDropdownChanged}
1167
+ >
1168
+ <span slot="label" class="sr-only">${filterByShowLabel}</span>
1169
+ ${this.tvMapsLoading ? loadingIndicator : nothing}
1170
+ ${this.tvMapsErrored ? errorMessage : nothing}
1171
+ </ia-combo-box>
1172
+ </div>
1173
1173
  `;
1174
1174
  }
1175
1175
  /**
@@ -1179,10 +1179,10 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1179
1179
  if (FACETLESS_PAGE_ELEMENTS.includes(this.profileElement))
1180
1180
  return nothing;
1181
1181
  if (this.facetLoadStrategy === 'off') {
1182
- return html `
1183
- <p class="facets-message">
1184
- ${msg('Facets are temporarily unavailable.')}
1185
- </p>
1182
+ return html `
1183
+ <p class="facets-message">
1184
+ ${msg('Facets are temporarily unavailable.')}
1185
+ </p>
1186
1186
  `;
1187
1187
  }
1188
1188
  // We switch to TV facet ordering & date picker if we are in a TV collection or showing TV search results
@@ -1191,46 +1191,46 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1191
1191
  const facetDisplayOrder = shouldUseTvInterface
1192
1192
  ? tvFacetDisplayOrder
1193
1193
  : defaultFacetDisplayOrder;
1194
- const facets = html `
1195
- <collection-facets
1196
- .collectionPagePath=${this.collectionPagePath}
1197
- .parentCollections=${this.dataSource.parentCollections}
1198
- .pageSpecifierParams=${this.dataSource.pageSpecifierParams}
1199
- .searchService=${this.searchService}
1200
- .featureFeedbackService=${this.featureFeedbackService}
1201
- .recaptchaManager=${this.recaptchaManager}
1202
- .resizeObserver=${this.resizeObserver}
1203
- .searchType=${this.searchType}
1204
- .aggregations=${this.dataSource.aggregations}
1205
- .histogramAggregation=${this.dataSource.histogramAggregation}
1206
- .minSelectedDate=${this.minSelectedDate}
1207
- .maxSelectedDate=${this.maxSelectedDate}
1208
- .selectedFacets=${this.selectedFacets}
1209
- .baseNavigationUrl=${this.baseNavigationUrl}
1210
- .collectionTitles=${this.dataSource.collectionTitles}
1211
- .tvChannelAliases=${this.dataSource.tvChannelAliases}
1212
- .showHistogramDatePicker=${this.showHistogramDatePicker}
1213
- .allowExpandingDatePicker=${!this.mobileView}
1214
- .allowDatePickerMonths=${shouldUseTvInterface}
1215
- .contentWidth=${this.contentWidth}
1216
- .query=${this.baseQuery}
1217
- .identifiers=${this.identifiers}
1218
- .filterMap=${this.dataSource.filterMap}
1219
- .isManageView=${this.isManageView}
1220
- .modalManager=${this.modalManager}
1221
- .analyticsHandler=${this.analyticsHandler}
1222
- .facetDisplayOrder=${facetDisplayOrder}
1223
- .isTvSearch=${shouldUseTvInterface}
1224
- ?collapsableFacets=${this.mobileView}
1225
- ?facetsLoading=${this.facetsLoading}
1226
- ?histogramAggregationLoading=${this.facetsLoading}
1227
- ?suppressMediatypeFacets=${this.suppressMediatypeFacets}
1228
- @facetClick=${this.facetClickHandler}
1229
- @facetsChanged=${this.facetsChanged}
1230
- @histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
1231
- >
1232
- ${this.tvDropdownFiltersTemplate}
1233
- </collection-facets>
1194
+ const facets = html `
1195
+ <collection-facets
1196
+ .collectionPagePath=${this.collectionPagePath}
1197
+ .parentCollections=${this.dataSource.parentCollections}
1198
+ .pageSpecifierParams=${this.dataSource.pageSpecifierParams}
1199
+ .searchService=${this.searchService}
1200
+ .featureFeedbackService=${this.featureFeedbackService}
1201
+ .recaptchaManager=${this.recaptchaManager}
1202
+ .resizeObserver=${this.resizeObserver}
1203
+ .searchType=${this.searchType}
1204
+ .aggregations=${this.dataSource.aggregations}
1205
+ .histogramAggregation=${this.dataSource.histogramAggregation}
1206
+ .minSelectedDate=${this.minSelectedDate}
1207
+ .maxSelectedDate=${this.maxSelectedDate}
1208
+ .selectedFacets=${this.selectedFacets}
1209
+ .baseNavigationUrl=${this.baseNavigationUrl}
1210
+ .collectionTitles=${this.dataSource.collectionTitles}
1211
+ .tvChannelAliases=${this.dataSource.tvChannelAliases}
1212
+ .showHistogramDatePicker=${this.showHistogramDatePicker}
1213
+ .allowExpandingDatePicker=${!this.mobileView}
1214
+ .allowDatePickerMonths=${shouldUseTvInterface}
1215
+ .contentWidth=${this.contentWidth}
1216
+ .query=${this.baseQuery}
1217
+ .identifiers=${this.identifiers}
1218
+ .filterMap=${this.dataSource.filterMap}
1219
+ .isManageView=${this.isManageView}
1220
+ .modalManager=${this.modalManager}
1221
+ .analyticsHandler=${this.analyticsHandler}
1222
+ .facetDisplayOrder=${facetDisplayOrder}
1223
+ .isTvSearch=${shouldUseTvInterface}
1224
+ ?collapsableFacets=${this.mobileView}
1225
+ ?facetsLoading=${this.facetsLoading}
1226
+ ?histogramAggregationLoading=${this.facetsLoading}
1227
+ ?suppressMediatypeFacets=${this.suppressMediatypeFacets}
1228
+ @facetClick=${this.facetClickHandler}
1229
+ @facetsChanged=${this.facetsChanged}
1230
+ @histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
1231
+ >
1232
+ ${this.tvDropdownFiltersTemplate}
1233
+ </collection-facets>
1234
1234
  `;
1235
1235
  // If we are using one of the opt-in facet load strategies, we may need to wrap the
1236
1236
  // desktop view facets in a <details> widget so that patrons can opt into loading them.
@@ -1238,20 +1238,20 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1238
1238
  const showDesktopOptInWidget = this.facetLoadStrategy === 'opt-in' ||
1239
1239
  (this.facetLoadStrategy === 'opt-in-or-login' && !this.loggedIn);
1240
1240
  if (showDesktopOptInWidget && !this.mobileView) {
1241
- return html `
1242
- <details
1243
- class="desktop-facets-dropdown"
1241
+ return html `
1242
+ <details
1243
+ class="desktop-facets-dropdown"
1244
1244
  @toggle=${(e) => {
1245
1245
  const target = e.target;
1246
1246
  this.collapsibleFacetsVisible = target.open;
1247
- }}
1248
- >
1249
- <summary>
1250
- <span class="collapser-icon">${chevronIcon}</span>
1251
- <h2>${msg('Filters')}</h2>
1252
- </summary>
1253
- ${facets}
1254
- </details>
1247
+ }}
1248
+ >
1249
+ <summary>
1250
+ <span class="collapser-icon">${chevronIcon}</span>
1251
+ <h2>${msg('Filters')}</h2>
1252
+ </summary>
1253
+ ${facets}
1254
+ </details>
1255
1255
  `;
1256
1256
  }
1257
1257
  // Otherwise, just render the facets component bare
@@ -1271,35 +1271,35 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
1271
1271
  mobile,
1272
1272
  });
1273
1273
  const buttonText = mobile ? 'Clear all' : 'Clear all filters';
1274
- return html `
1275
- <div class="clear-filters-btn-row">
1274
+ return html `
1275
+ <div class="clear-filters-btn-row">
1276
1276
  ${mobile
1277
1277
  ? html `<span class="clear-filters-btn-separator">&nbsp;</span>`
1278
- : nothing}
1279
- <button class=${buttonClasses} @click=${this.clearFilters}>
1280
- ${buttonText}
1281
- </button>
1282
- </div>
1278
+ : nothing}
1279
+ <button class=${buttonClasses} @click=${this.clearFilters}>
1280
+ ${buttonText}
1281
+ </button>
1282
+ </div>
1283
1283
  `;
1284
1284
  }
1285
1285
  /**
1286
1286
  * Template for the table header content that appears atop the compact list view.
1287
1287
  */
1288
1288
  get listHeaderTemplate() {
1289
- return html `
1290
- <div id="list-header">
1291
- <tile-dispatcher
1292
- .tileDisplayMode=${'list-header'}
1293
- .resizeObserver=${this.resizeObserver}
1294
- .sortParam=${this.sortParam}
1295
- .defaultSortParam=${this.defaultSortParam}
1296
- .mobileBreakpoint=${this.mobileBreakpoint}
1297
- .loggedIn=${this.loggedIn}
1298
- .suppressBlurring=${this.shouldSuppressTileBlurring}
1299
- .tileActions=${this.tileActions}
1300
- >
1301
- </tile-dispatcher>
1302
- </div>
1289
+ return html `
1290
+ <div id="list-header">
1291
+ <tile-dispatcher
1292
+ .tileDisplayMode=${'list-header'}
1293
+ .resizeObserver=${this.resizeObserver}
1294
+ .sortParam=${this.sortParam}
1295
+ .defaultSortParam=${this.defaultSortParam}
1296
+ .mobileBreakpoint=${this.mobileBreakpoint}
1297
+ .loggedIn=${this.loggedIn}
1298
+ .suppressBlurring=${this.shouldSuppressTileBlurring}
1299
+ .tileActions=${this.tileActions}
1300
+ >
1301
+ </tile-dispatcher>
1302
+ </div>
1303
1303
  `;
1304
1304
  }
1305
1305
  /**
@@ -2050,30 +2050,30 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
2050
2050
  const isRadioSearch = this.searchType === SearchType.RADIO;
2051
2051
  const { isTVCollection, isRadioCollection } = this;
2052
2052
  const shouldUseLocalTime = isTVSearch || isRadioSearch || isTVCollection || isRadioCollection;
2053
- return html `
2054
- <tile-dispatcher
2055
- .collectionPagePath=${this.collectionPagePath}
2056
- .baseNavigationUrl=${this.baseNavigationUrl}
2057
- .baseImageUrl=${this.baseImageUrl}
2058
- .model=${model}
2059
- .tileDisplayMode=${this.displayMode}
2060
- .resizeObserver=${this.resizeObserver}
2061
- .collectionTitles=${this.dataSource.collectionTitles}
2062
- .sortParam=${this.sortParam}
2063
- .defaultSortParam=${this.defaultSortParam}
2064
- .creatorFilter=${this.selectedCreatorFilter}
2065
- .mobileBreakpoint=${this.mobileBreakpoint}
2066
- .loggedIn=${this.loggedIn}
2067
- .suppressBlurring=${this.shouldSuppressTileBlurring}
2068
- .isManageView=${this.isManageView}
2069
- .tileActions=${this.tileActions}
2070
- .layoutType=${this.tileLayoutType}
2071
- ?showTvClips=${isTVSearch || isTVCollection}
2072
- ?enableHoverPane=${true}
2073
- ?useLocalTime=${shouldUseLocalTime}
2074
- @resultSelected=${(e) => this.resultSelected(e)}
2075
- >
2076
- </tile-dispatcher>
2053
+ return html `
2054
+ <tile-dispatcher
2055
+ .collectionPagePath=${this.collectionPagePath}
2056
+ .baseNavigationUrl=${this.baseNavigationUrl}
2057
+ .baseImageUrl=${this.baseImageUrl}
2058
+ .model=${model}
2059
+ .tileDisplayMode=${this.displayMode}
2060
+ .resizeObserver=${this.resizeObserver}
2061
+ .collectionTitles=${this.dataSource.collectionTitles}
2062
+ .sortParam=${this.sortParam}
2063
+ .defaultSortParam=${this.defaultSortParam}
2064
+ .creatorFilter=${this.selectedCreatorFilter}
2065
+ .mobileBreakpoint=${this.mobileBreakpoint}
2066
+ .loggedIn=${this.loggedIn}
2067
+ .suppressBlurring=${this.shouldSuppressTileBlurring}
2068
+ .isManageView=${this.isManageView}
2069
+ .tileActions=${this.tileActions}
2070
+ .layoutType=${this.tileLayoutType}
2071
+ ?showTvClips=${isTVSearch || isTVCollection}
2072
+ ?enableHoverPane=${true}
2073
+ ?useLocalTime=${shouldUseLocalTime}
2074
+ @resultSelected=${(e) => this.resultSelected(e)}
2075
+ >
2076
+ </tile-dispatcher>
2077
2077
  `;
2078
2078
  }
2079
2079
  /**
@@ -2108,479 +2108,479 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
2108
2108
  static get styles() {
2109
2109
  return [
2110
2110
  srOnlyStyle,
2111
- css `
2112
- :host {
2113
- display: block;
2114
- --leftColumnWidth: 18rem;
2115
- --leftColumnPaddingTop: 2rem;
2116
- --leftColumnPaddingRight: 2.5rem;
2117
- }
2118
-
2119
- #facet-top-view {
2120
- display: flex;
2121
- }
2122
-
2123
- /**
2124
- * When page width resizes from desktop to mobile, use this class to
2125
- * disable expand/collapse transition when loading.
2126
- */
2127
- .preload * {
2128
- transition: none !important;
2129
- -webkit-transition: none !important;
2130
- -moz-transition: none !important;
2131
- -ms-transition: none !important;
2132
- -o-transition: none !important;
2133
- }
2134
-
2135
- #content-container {
2136
- display: flex;
2137
- }
2138
-
2139
- empty-placeholder {
2140
- margin-top: var(--placeholderMarginTop, 0);
2141
- }
2142
-
2143
- .collapser-icon {
2144
- display: inline-block;
2145
- }
2146
-
2147
- .collapser-icon svg {
2148
- display: inline-block;
2149
- width: 12px;
2150
- height: 12px;
2151
- transition: transform 0.2s ease-out;
2152
- }
2153
-
2154
- #mobile-filter-collapse {
2155
- width: 100%;
2156
- }
2157
-
2158
- #mobile-filter-collapse > summary {
2159
- cursor: pointer;
2160
- list-style: none;
2161
- }
2162
-
2163
- #mobile-filter-collapse[open] > summary {
2164
- margin-bottom: 10px;
2165
- }
2166
-
2167
- #mobile-filter-collapse h2 {
2168
- display: inline-block;
2169
- margin: 0;
2170
- font-size: 2rem;
2171
- }
2172
-
2173
- #mobile-filter-collapse[open] svg {
2174
- transform: rotate(90deg);
2175
- }
2176
-
2177
- #content-container.mobile {
2178
- display: block;
2179
- }
2180
-
2181
- #right-column {
2182
- flex: 1;
2183
- position: relative;
2184
- min-height: 90vh;
2185
- border-right: 1px solid rgb(232, 232, 232);
2186
- margin-top: var(--rightColumnMarginTop, 0);
2187
- padding-top: var(--rightColumnPaddingTop, 2rem);
2188
- background: #fff;
2189
- }
2190
-
2191
- #left-column:not([hidden]) + #right-column {
2192
- border-left: 1px solid rgb(232, 232, 232);
2193
- }
2194
-
2195
- #right-column.smart-results-spacing {
2196
- padding-top: 0.5rem;
2197
- border-right: none;
2198
- background: transparent;
2199
- min-width: 0;
2200
- }
2201
-
2202
- #results {
2203
- background: #fff;
2204
- padding-left: 1rem;
2205
- padding-right: 1rem;
2206
- }
2207
-
2208
- #right-column.smart-results-spacing #results {
2209
- border-radius: 10px 10px 0px 0px;
2210
- padding-top: 0.5rem;
2211
- margin-top: 1rem;
2212
- }
2213
-
2214
- .mobile #right-column {
2215
- border-left: none;
2216
- }
2217
-
2218
- .mobile #results {
2219
- padding: 5px 5px 0;
2220
- }
2221
-
2222
- #left-column {
2223
- width: var(--leftColumnWidth, 18rem);
2224
- /* Prevents Safari from shrinking col at first draw */
2225
- min-width: var(--leftColumnWidth, 18rem);
2226
- padding-top: var(--leftColumnPaddingTop, 2rem);
2227
- /* Reduced padding by 0.2rem to add the invisible border in the rule below */
2228
- padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
2229
- border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
2230
- z-index: 1;
2231
- }
2232
-
2233
- .desktop #left-column {
2234
- top: 0;
2235
- position: sticky;
2236
- height: calc(100vh - 2rem);
2237
- max-height: calc(100vh - 2rem);
2238
- overflow-x: hidden;
2239
- overflow-y: scroll;
2240
-
2241
- /*
2242
- * Firefox doesn't support any of the -webkit-scrollbar stuff below, but
2243
- * does at least give us a tiny bit of control over width & color.
2244
- */
2245
- scrollbar-width: thin;
2246
- scrollbar-color: transparent transparent;
2247
- }
2248
- .desktop #left-column:hover {
2249
- scrollbar-color: auto;
2250
- }
2251
- .desktop #left-column::-webkit-scrollbar {
2252
- appearance: none;
2253
- width: 6px;
2254
- }
2255
- .desktop #left-column::-webkit-scrollbar-button {
2256
- height: 3px;
2257
- background: transparent;
2258
- }
2259
- .desktop #left-column::-webkit-scrollbar-corner {
2260
- background: transparent;
2261
- }
2262
- .desktop #left-column::-webkit-scrollbar-thumb {
2263
- border-radius: 4px;
2264
- }
2265
- .desktop #left-column:hover::-webkit-scrollbar-thumb {
2266
- background: rgba(0, 0, 0, 0.15);
2267
- }
2268
- .desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
2269
- background: rgba(0, 0, 0, 0.2);
2270
- }
2271
- .desktop #left-column:hover::-webkit-scrollbar-thumb:active {
2272
- background: rgba(0, 0, 0, 0.3);
2273
- }
2274
-
2275
- #facets-bottom-fade {
2276
- background: linear-gradient(
2277
- to bottom,
2278
- #fbfbfd00 0%,
2279
- #fbfbfdc0 50%,
2280
- #fbfbfd 80%,
2281
- #fbfbfd 100%
2282
- );
2283
- position: fixed;
2284
- bottom: 0;
2285
- height: 50px;
2286
- /* Wide enough to cover the content, but leave the scrollbar uncovered */
2287
- width: calc(
2288
- var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
2289
- );
2290
- z-index: 2;
2291
- pointer-events: none;
2292
- transition: height 0.1s ease;
2293
- }
2294
- #facets-bottom-fade.hidden {
2295
- height: 0;
2296
- }
2297
-
2298
- .facets-message {
2299
- font-size: 1.4rem;
2300
- }
2301
-
2302
- .desktop-facets-dropdown > summary {
2303
- cursor: pointer;
2304
- list-style: none;
2305
- }
2306
-
2307
- .desktop-facets-dropdown h2 {
2308
- display: inline-block;
2309
- margin: 0;
2310
- font-size: 1.6rem;
2311
- }
2312
-
2313
- .desktop-facets-dropdown[open] > summary {
2314
- margin-bottom: 10px;
2315
- }
2316
-
2317
- .desktop-facets-dropdown[open] svg {
2318
- transform: rotate(90deg);
2319
- }
2320
-
2321
- .desktop #left-column-scroll-sentinel {
2322
- width: 1px;
2323
- height: 100vh;
2324
- background: transparent;
2325
- }
2326
-
2327
- .desktop #facets-scroll-sentinel {
2328
- width: 1px;
2329
- height: 1px;
2330
- background: transparent;
2331
- }
2332
-
2333
- #facets-header-container {
2334
- display: flex;
2335
- justify-content: space-between;
2336
- align-items: flex-start;
2337
- clear: both;
2338
- }
2339
-
2340
- .desktop #facets-header-container {
2341
- flex-wrap: wrap;
2342
- }
2343
-
2344
- .mobile #left-column {
2345
- width: 100%;
2346
- min-width: 0;
2347
- padding: 5px 0;
2348
- border: 0;
2349
- }
2350
-
2351
- .clear-filters-btn-row {
2352
- display: inline-block;
2353
- }
2354
-
2355
- .desktop .clear-filters-btn-row {
2356
- width: 100%;
2357
- }
2358
-
2359
- .clear-filters-btn {
2360
- display: inline-block;
2361
- appearance: none;
2362
- margin: 0;
2363
- padding: 0;
2364
- border: 0;
2365
- background: none;
2366
- color: var(--ia-theme-link-color);
2367
- font-size: 1.4rem;
2368
- font-family: inherit;
2369
- cursor: pointer;
2370
- }
2371
-
2372
- .clear-filters-btn:hover {
2373
- text-decoration: underline;
2374
- }
2375
-
2376
- .clear-filters-btn-separator {
2377
- display: inline-block;
2378
- margin-left: 5px;
2379
- border-left: 1px solid #2c2c2c;
2380
- font-size: 1.4rem;
2381
- line-height: 1.3rem;
2382
- }
2383
-
2384
- #tv-filters {
2385
- margin-bottom: 15px;
2386
- }
2387
-
2388
- #tv-shows {
2389
- --comboBoxListWidth: 300px;
2390
- }
2391
-
2392
- .tv-filter-dropdown {
2393
- display: block;
2394
- font-size: 14px;
2395
- margin-left: 1px;
2396
- margin-bottom: 5px;
2397
- }
2398
-
2399
- .tv-filter-dropdown::part(combo-box) {
2400
- outline-offset: 1px;
2401
- }
2402
-
2403
- .tv-filter-dropdown::part(option) {
2404
- line-height: 1.1;
2405
- padding: 7px;
2406
- }
2407
-
2408
- .tv-filter-dropdown::part(clear-button) {
2409
- flex: 0 0 26px;
2410
- --combo-box-clear-icon-size: 14px;
2411
- }
2412
-
2413
- .tv-filter-dropdown::part(icon) {
2414
- width: 1.4rem;
2415
- height: 1.4rem;
2416
- }
2417
-
2418
- #facets-container {
2419
- position: relative;
2420
- max-height: 0;
2421
- transition: max-height 0.2s ease-in-out;
2422
- z-index: 1;
2423
- margin-top: var(--facetsContainerMarginTop, 3rem);
2424
- padding-bottom: 2rem;
2425
- }
2426
-
2427
- .desktop #facets-container {
2428
- width: 18rem;
2429
- }
2430
-
2431
- .mobile #facets-container {
2432
- overflow: hidden;
2433
- padding-bottom: 0;
2434
- padding-left: 10px;
2435
- padding-right: 10px;
2436
- }
2437
-
2438
- #facets-container.expanded {
2439
- max-height: 2000px;
2440
- }
2441
-
2442
- .results-section-heading {
2443
- margin: 0.5rem 0.3rem;
2444
- font-size: 2rem;
2445
- line-height: 25px;
2446
- }
2447
-
2448
- #results-total {
2449
- display: flex;
2450
- align-items: baseline;
2451
- }
2452
-
2453
- #results-total:not(.filtered) {
2454
- padding-bottom: 2rem;
2455
- }
2456
-
2457
- .mobile #results-total {
2458
- position: absolute;
2459
- right: 10px;
2460
- }
2461
-
2462
- #big-results-count {
2463
- font-size: 2.4rem;
2464
- font-weight: 500;
2465
- margin-right: 5px;
2466
- }
2467
-
2468
- .mobile #big-results-count {
2469
- font-size: 2rem;
2470
- }
2471
-
2472
- #big-results-label {
2473
- font-size: 1.4rem;
2474
- font-weight: 200;
2475
- }
2476
-
2477
- #list-header {
2478
- max-height: 4.2rem;
2479
- }
2480
-
2481
- .loading-cover {
2482
- position: absolute;
2483
- top: 0;
2484
- left: 0;
2485
- width: 100%;
2486
- height: 100%;
2487
- display: flex;
2488
- justify-content: center;
2489
- z-index: 1;
2490
- padding-top: 50px;
2491
- }
2492
-
2493
- #tile-blur-label {
2494
- display: flex;
2495
- align-items: center;
2496
- column-gap: 5px;
2497
- }
2498
-
2499
- #tile-blur-check {
2500
- margin: 0 5px 0 0;
2501
- width: 15px;
2502
- }
2503
-
2504
- circular-activity-indicator {
2505
- width: 30px;
2506
- height: 30px;
2507
- }
2508
-
2509
- sort-filter-bar {
2510
- display: block;
2511
- margin-bottom: 4rem;
2512
- }
2513
-
2514
- infinite-scroller {
2515
- display: block;
2516
- --infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
2517
- --infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
2518
- }
2519
-
2520
- infinite-scroller.list-compact {
2521
- --infiniteScrollerCellMinWidth: var(
2522
- --collectionBrowserCellMinWidth,
2523
- 100%
2524
- );
2525
- --infiniteScrollerCellMinHeight: 45px; /* override infinite scroller component */
2526
- --infiniteScrollerCellMaxHeight: 56px;
2527
- --infiniteScrollerRowGap: 10px;
2528
- }
2529
-
2530
- infinite-scroller.list-detail {
2531
- --infiniteScrollerCellMinWidth: var(
2532
- --collectionBrowserCellMinWidth,
2533
- 100%
2534
- );
2535
- --infiniteScrollerCellMinHeight: var(
2536
- --collectionBrowserCellMinHeight,
2537
- 5rem
2538
- );
2539
- /*
2540
- 30px in spec, compensating for a -4px margin
2541
- to align title with top of item image
2542
- src/tiles/list/tile-list.ts
2543
- */
2544
- --infiniteScrollerRowGap: 34px;
2545
- }
2546
-
2547
- .mobile infinite-scroller.list-detail {
2548
- --infiniteScrollerRowGap: 24px;
2549
- }
2550
-
2551
- infinite-scroller.grid {
2552
- --infiniteScrollerCellMinWidth: var(
2553
- --collectionBrowserCellMinWidth,
2554
- 17rem
2555
- );
2556
- --infiniteScrollerCellMaxWidth: var(
2557
- --collectionBrowserCellMaxWidth,
2558
- 1fr
2559
- );
2560
- }
2561
-
2562
- /* Allow tiles to shrink a bit further at smaller viewport widths */
2563
- @media screen and (max-width: 880px) {
2564
- infinite-scroller.grid {
2565
- --infiniteScrollerCellMinWidth: var(
2566
- --collectionBrowserCellMinWidth,
2567
- 15rem
2568
- );
2569
- }
2570
- }
2571
- /* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
2572
- @media screen and (max-width: 360px) {
2573
- infinite-scroller.grid {
2574
- --infiniteScrollerCellMinWidth: var(
2575
- --collectionBrowserCellMinWidth,
2576
- 12rem
2577
- );
2578
- }
2579
- }
2580
-
2581
- infinite-scroller.hidden {
2582
- display: none;
2583
- }
2111
+ css `
2112
+ :host {
2113
+ display: block;
2114
+ --leftColumnWidth: 18rem;
2115
+ --leftColumnPaddingTop: 2rem;
2116
+ --leftColumnPaddingRight: 2.5rem;
2117
+ }
2118
+
2119
+ #facet-top-view {
2120
+ display: flex;
2121
+ }
2122
+
2123
+ /**
2124
+ * When page width resizes from desktop to mobile, use this class to
2125
+ * disable expand/collapse transition when loading.
2126
+ */
2127
+ .preload * {
2128
+ transition: none !important;
2129
+ -webkit-transition: none !important;
2130
+ -moz-transition: none !important;
2131
+ -ms-transition: none !important;
2132
+ -o-transition: none !important;
2133
+ }
2134
+
2135
+ #content-container {
2136
+ display: flex;
2137
+ }
2138
+
2139
+ empty-placeholder {
2140
+ margin-top: var(--placeholderMarginTop, 0);
2141
+ }
2142
+
2143
+ .collapser-icon {
2144
+ display: inline-block;
2145
+ }
2146
+
2147
+ .collapser-icon svg {
2148
+ display: inline-block;
2149
+ width: 12px;
2150
+ height: 12px;
2151
+ transition: transform 0.2s ease-out;
2152
+ }
2153
+
2154
+ #mobile-filter-collapse {
2155
+ width: 100%;
2156
+ }
2157
+
2158
+ #mobile-filter-collapse > summary {
2159
+ cursor: pointer;
2160
+ list-style: none;
2161
+ }
2162
+
2163
+ #mobile-filter-collapse[open] > summary {
2164
+ margin-bottom: 10px;
2165
+ }
2166
+
2167
+ #mobile-filter-collapse h2 {
2168
+ display: inline-block;
2169
+ margin: 0;
2170
+ font-size: 2rem;
2171
+ }
2172
+
2173
+ #mobile-filter-collapse[open] svg {
2174
+ transform: rotate(90deg);
2175
+ }
2176
+
2177
+ #content-container.mobile {
2178
+ display: block;
2179
+ }
2180
+
2181
+ #right-column {
2182
+ flex: 1;
2183
+ position: relative;
2184
+ min-height: 90vh;
2185
+ border-right: 1px solid rgb(232, 232, 232);
2186
+ margin-top: var(--rightColumnMarginTop, 0);
2187
+ padding-top: var(--rightColumnPaddingTop, 2rem);
2188
+ background: #fff;
2189
+ }
2190
+
2191
+ #left-column:not([hidden]) + #right-column {
2192
+ border-left: 1px solid rgb(232, 232, 232);
2193
+ }
2194
+
2195
+ #right-column.smart-results-spacing {
2196
+ padding-top: 0.5rem;
2197
+ border-right: none;
2198
+ background: transparent;
2199
+ min-width: 0;
2200
+ }
2201
+
2202
+ #results {
2203
+ background: #fff;
2204
+ padding-left: 1rem;
2205
+ padding-right: 1rem;
2206
+ }
2207
+
2208
+ #right-column.smart-results-spacing #results {
2209
+ border-radius: 10px 10px 0px 0px;
2210
+ padding-top: 0.5rem;
2211
+ margin-top: 1rem;
2212
+ }
2213
+
2214
+ .mobile #right-column {
2215
+ border-left: none;
2216
+ }
2217
+
2218
+ .mobile #results {
2219
+ padding: 5px 5px 0;
2220
+ }
2221
+
2222
+ #left-column {
2223
+ width: var(--leftColumnWidth, 18rem);
2224
+ /* Prevents Safari from shrinking col at first draw */
2225
+ min-width: var(--leftColumnWidth, 18rem);
2226
+ padding-top: var(--leftColumnPaddingTop, 2rem);
2227
+ /* Reduced padding by 0.2rem to add the invisible border in the rule below */
2228
+ padding-right: calc(var(--leftColumnPaddingRight, 2.5rem) - 0.2rem);
2229
+ border-right: 0.2rem solid transparent; /* Pads to the right of the scrollbar a bit */
2230
+ z-index: 1;
2231
+ }
2232
+
2233
+ .desktop #left-column {
2234
+ top: 0;
2235
+ position: sticky;
2236
+ height: calc(100vh - 2rem);
2237
+ max-height: calc(100vh - 2rem);
2238
+ overflow-x: hidden;
2239
+ overflow-y: scroll;
2240
+
2241
+ /*
2242
+ * Firefox doesn't support any of the -webkit-scrollbar stuff below, but
2243
+ * does at least give us a tiny bit of control over width & color.
2244
+ */
2245
+ scrollbar-width: thin;
2246
+ scrollbar-color: transparent transparent;
2247
+ }
2248
+ .desktop #left-column:hover {
2249
+ scrollbar-color: auto;
2250
+ }
2251
+ .desktop #left-column::-webkit-scrollbar {
2252
+ appearance: none;
2253
+ width: 6px;
2254
+ }
2255
+ .desktop #left-column::-webkit-scrollbar-button {
2256
+ height: 3px;
2257
+ background: transparent;
2258
+ }
2259
+ .desktop #left-column::-webkit-scrollbar-corner {
2260
+ background: transparent;
2261
+ }
2262
+ .desktop #left-column::-webkit-scrollbar-thumb {
2263
+ border-radius: 4px;
2264
+ }
2265
+ .desktop #left-column:hover::-webkit-scrollbar-thumb {
2266
+ background: rgba(0, 0, 0, 0.15);
2267
+ }
2268
+ .desktop #left-column:hover::-webkit-scrollbar-thumb:hover {
2269
+ background: rgba(0, 0, 0, 0.2);
2270
+ }
2271
+ .desktop #left-column:hover::-webkit-scrollbar-thumb:active {
2272
+ background: rgba(0, 0, 0, 0.3);
2273
+ }
2274
+
2275
+ #facets-bottom-fade {
2276
+ background: linear-gradient(
2277
+ to bottom,
2278
+ #fbfbfd00 0%,
2279
+ #fbfbfdc0 50%,
2280
+ #fbfbfd 80%,
2281
+ #fbfbfd 100%
2282
+ );
2283
+ position: fixed;
2284
+ bottom: 0;
2285
+ height: 50px;
2286
+ /* Wide enough to cover the content, but leave the scrollbar uncovered */
2287
+ width: calc(
2288
+ var(--leftColumnWidth) + var(--leftColumnPaddingRight) - 10px
2289
+ );
2290
+ z-index: 2;
2291
+ pointer-events: none;
2292
+ transition: height 0.1s ease;
2293
+ }
2294
+ #facets-bottom-fade.hidden {
2295
+ height: 0;
2296
+ }
2297
+
2298
+ .facets-message {
2299
+ font-size: 1.4rem;
2300
+ }
2301
+
2302
+ .desktop-facets-dropdown > summary {
2303
+ cursor: pointer;
2304
+ list-style: none;
2305
+ }
2306
+
2307
+ .desktop-facets-dropdown h2 {
2308
+ display: inline-block;
2309
+ margin: 0;
2310
+ font-size: 1.6rem;
2311
+ }
2312
+
2313
+ .desktop-facets-dropdown[open] > summary {
2314
+ margin-bottom: 10px;
2315
+ }
2316
+
2317
+ .desktop-facets-dropdown[open] svg {
2318
+ transform: rotate(90deg);
2319
+ }
2320
+
2321
+ .desktop #left-column-scroll-sentinel {
2322
+ width: 1px;
2323
+ height: 100vh;
2324
+ background: transparent;
2325
+ }
2326
+
2327
+ .desktop #facets-scroll-sentinel {
2328
+ width: 1px;
2329
+ height: 1px;
2330
+ background: transparent;
2331
+ }
2332
+
2333
+ #facets-header-container {
2334
+ display: flex;
2335
+ justify-content: space-between;
2336
+ align-items: flex-start;
2337
+ clear: both;
2338
+ }
2339
+
2340
+ .desktop #facets-header-container {
2341
+ flex-wrap: wrap;
2342
+ }
2343
+
2344
+ .mobile #left-column {
2345
+ width: 100%;
2346
+ min-width: 0;
2347
+ padding: 5px 0;
2348
+ border: 0;
2349
+ }
2350
+
2351
+ .clear-filters-btn-row {
2352
+ display: inline-block;
2353
+ }
2354
+
2355
+ .desktop .clear-filters-btn-row {
2356
+ width: 100%;
2357
+ }
2358
+
2359
+ .clear-filters-btn {
2360
+ display: inline-block;
2361
+ appearance: none;
2362
+ margin: 0;
2363
+ padding: 0;
2364
+ border: 0;
2365
+ background: none;
2366
+ color: var(--ia-theme-link-color);
2367
+ font-size: 1.4rem;
2368
+ font-family: inherit;
2369
+ cursor: pointer;
2370
+ }
2371
+
2372
+ .clear-filters-btn:hover {
2373
+ text-decoration: underline;
2374
+ }
2375
+
2376
+ .clear-filters-btn-separator {
2377
+ display: inline-block;
2378
+ margin-left: 5px;
2379
+ border-left: 1px solid #2c2c2c;
2380
+ font-size: 1.4rem;
2381
+ line-height: 1.3rem;
2382
+ }
2383
+
2384
+ #tv-filters {
2385
+ margin-bottom: 15px;
2386
+ }
2387
+
2388
+ #tv-shows {
2389
+ --comboBoxListWidth: 300px;
2390
+ }
2391
+
2392
+ .tv-filter-dropdown {
2393
+ display: block;
2394
+ font-size: 14px;
2395
+ margin-left: 1px;
2396
+ margin-bottom: 5px;
2397
+ }
2398
+
2399
+ .tv-filter-dropdown::part(combo-box) {
2400
+ outline-offset: 1px;
2401
+ }
2402
+
2403
+ .tv-filter-dropdown::part(option) {
2404
+ line-height: 1.1;
2405
+ padding: 7px;
2406
+ }
2407
+
2408
+ .tv-filter-dropdown::part(clear-button) {
2409
+ flex: 0 0 26px;
2410
+ --combo-box-clear-icon-size: 14px;
2411
+ }
2412
+
2413
+ .tv-filter-dropdown::part(icon) {
2414
+ width: 1.4rem;
2415
+ height: 1.4rem;
2416
+ }
2417
+
2418
+ #facets-container {
2419
+ position: relative;
2420
+ max-height: 0;
2421
+ transition: max-height 0.2s ease-in-out;
2422
+ z-index: 1;
2423
+ margin-top: var(--facetsContainerMarginTop, 3rem);
2424
+ padding-bottom: 2rem;
2425
+ }
2426
+
2427
+ .desktop #facets-container {
2428
+ width: 18rem;
2429
+ }
2430
+
2431
+ .mobile #facets-container {
2432
+ overflow: hidden;
2433
+ padding-bottom: 0;
2434
+ padding-left: 10px;
2435
+ padding-right: 10px;
2436
+ }
2437
+
2438
+ #facets-container.expanded {
2439
+ max-height: 2000px;
2440
+ }
2441
+
2442
+ .results-section-heading {
2443
+ margin: 0.5rem 0.3rem;
2444
+ font-size: 2rem;
2445
+ line-height: 25px;
2446
+ }
2447
+
2448
+ #results-total {
2449
+ display: flex;
2450
+ align-items: baseline;
2451
+ }
2452
+
2453
+ #results-total:not(.filtered) {
2454
+ padding-bottom: 2rem;
2455
+ }
2456
+
2457
+ .mobile #results-total {
2458
+ position: absolute;
2459
+ right: 10px;
2460
+ }
2461
+
2462
+ #big-results-count {
2463
+ font-size: 2.4rem;
2464
+ font-weight: 500;
2465
+ margin-right: 5px;
2466
+ }
2467
+
2468
+ .mobile #big-results-count {
2469
+ font-size: 2rem;
2470
+ }
2471
+
2472
+ #big-results-label {
2473
+ font-size: 1.4rem;
2474
+ font-weight: 200;
2475
+ }
2476
+
2477
+ #list-header {
2478
+ max-height: 4.2rem;
2479
+ }
2480
+
2481
+ .loading-cover {
2482
+ position: absolute;
2483
+ top: 0;
2484
+ left: 0;
2485
+ width: 100%;
2486
+ height: 100%;
2487
+ display: flex;
2488
+ justify-content: center;
2489
+ z-index: 1;
2490
+ padding-top: 50px;
2491
+ }
2492
+
2493
+ #tile-blur-label {
2494
+ display: flex;
2495
+ align-items: center;
2496
+ column-gap: 5px;
2497
+ }
2498
+
2499
+ #tile-blur-check {
2500
+ margin: 0 5px 0 0;
2501
+ width: 15px;
2502
+ }
2503
+
2504
+ circular-activity-indicator {
2505
+ width: 30px;
2506
+ height: 30px;
2507
+ }
2508
+
2509
+ sort-filter-bar {
2510
+ display: block;
2511
+ margin-bottom: 4rem;
2512
+ }
2513
+
2514
+ infinite-scroller {
2515
+ display: block;
2516
+ --infiniteScrollerRowGap: var(--collectionBrowserRowGap, 1.7rem);
2517
+ --infiniteScrollerColGap: var(--collectionBrowserColGap, 1.7rem);
2518
+ }
2519
+
2520
+ infinite-scroller.list-compact {
2521
+ --infiniteScrollerCellMinWidth: var(
2522
+ --collectionBrowserCellMinWidth,
2523
+ 100%
2524
+ );
2525
+ --infiniteScrollerCellMinHeight: 45px; /* override infinite scroller component */
2526
+ --infiniteScrollerCellMaxHeight: 56px;
2527
+ --infiniteScrollerRowGap: 10px;
2528
+ }
2529
+
2530
+ infinite-scroller.list-detail {
2531
+ --infiniteScrollerCellMinWidth: var(
2532
+ --collectionBrowserCellMinWidth,
2533
+ 100%
2534
+ );
2535
+ --infiniteScrollerCellMinHeight: var(
2536
+ --collectionBrowserCellMinHeight,
2537
+ 5rem
2538
+ );
2539
+ /*
2540
+ 30px in spec, compensating for a -4px margin
2541
+ to align title with top of item image
2542
+ src/tiles/list/tile-list.ts
2543
+ */
2544
+ --infiniteScrollerRowGap: 34px;
2545
+ }
2546
+
2547
+ .mobile infinite-scroller.list-detail {
2548
+ --infiniteScrollerRowGap: 24px;
2549
+ }
2550
+
2551
+ infinite-scroller.grid {
2552
+ --infiniteScrollerCellMinWidth: var(
2553
+ --collectionBrowserCellMinWidth,
2554
+ 17rem
2555
+ );
2556
+ --infiniteScrollerCellMaxWidth: var(
2557
+ --collectionBrowserCellMaxWidth,
2558
+ 1fr
2559
+ );
2560
+ }
2561
+
2562
+ /* Allow tiles to shrink a bit further at smaller viewport widths */
2563
+ @media screen and (max-width: 880px) {
2564
+ infinite-scroller.grid {
2565
+ --infiniteScrollerCellMinWidth: var(
2566
+ --collectionBrowserCellMinWidth,
2567
+ 15rem
2568
+ );
2569
+ }
2570
+ }
2571
+ /* At very small widths, maintain a 2-tile layout as far as it can reasonably go */
2572
+ @media screen and (max-width: 360px) {
2573
+ infinite-scroller.grid {
2574
+ --infiniteScrollerCellMinWidth: var(
2575
+ --collectionBrowserCellMinWidth,
2576
+ 12rem
2577
+ );
2578
+ }
2579
+ }
2580
+
2581
+ infinite-scroller.hidden {
2582
+ display: none;
2583
+ }
2584
2584
  `,
2585
2585
  ];
2586
2586
  }