spree_storefront 5.0.0.rc1

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 (341) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +13 -0
  3. data/Rakefile +15 -0
  4. data/app/assets/config/spree_storefront_manifest.js +6 -0
  5. data/app/assets/stylesheets/storefront_page_builder.css +51 -0
  6. data/app/controllers/concerns/spree/cart_methods.rb +40 -0
  7. data/app/controllers/concerns/spree/locale_urls.rb +23 -0
  8. data/app/controllers/concerns/spree/password_protected.rb +17 -0
  9. data/app/controllers/concerns/spree/theme_concern.rb +29 -0
  10. data/app/controllers/spree/account/addresses_controller.rb +16 -0
  11. data/app/controllers/spree/account/base_controller.rb +20 -0
  12. data/app/controllers/spree/account/newsletter_controller.rb +34 -0
  13. data/app/controllers/spree/account/orders_controller.rb +34 -0
  14. data/app/controllers/spree/account/profile_controller.rb +23 -0
  15. data/app/controllers/spree/account/store_credits_controller.rb +23 -0
  16. data/app/controllers/spree/account/wished_items_controller.rb +45 -0
  17. data/app/controllers/spree/addresses_controller.rb +101 -0
  18. data/app/controllers/spree/checkout_controller.rb +365 -0
  19. data/app/controllers/spree/contacts_controller.rb +46 -0
  20. data/app/controllers/spree/digital_links_controller.rb +48 -0
  21. data/app/controllers/spree/home_controller.rb +5 -0
  22. data/app/controllers/spree/line_items_controller.rb +96 -0
  23. data/app/controllers/spree/newsletter_subscribers_controller.rb +43 -0
  24. data/app/controllers/spree/order_status_controller.rb +32 -0
  25. data/app/controllers/spree/orders_controller.rb +104 -0
  26. data/app/controllers/spree/page_sections_controller.rb +17 -0
  27. data/app/controllers/spree/pages_controller.rb +13 -0
  28. data/app/controllers/spree/password_controller.rb +21 -0
  29. data/app/controllers/spree/policies_controller.rb +17 -0
  30. data/app/controllers/spree/posts_controller.rb +76 -0
  31. data/app/controllers/spree/products_controller.rb +99 -0
  32. data/app/controllers/spree/search_controller.rb +39 -0
  33. data/app/controllers/spree/seo_controller.rb +25 -0
  34. data/app/controllers/spree/settings_controller.rb +68 -0
  35. data/app/controllers/spree/store_controller.rb +247 -0
  36. data/app/controllers/spree/taxonomies_controller.rb +30 -0
  37. data/app/controllers/spree/taxons_controller.rb +46 -0
  38. data/app/controllers/spree/wishlists_controller.rb +19 -0
  39. data/app/finders/spree/storefront/variant_finder.rb +80 -0
  40. data/app/helpers/spree/analytics_helper.rb +28 -0
  41. data/app/helpers/spree/cart_helper.rb +48 -0
  42. data/app/helpers/spree/checkout_analytics_helper.rb +77 -0
  43. data/app/helpers/spree/checkout_helper.rb +58 -0
  44. data/app/helpers/spree/filters_helper.rb +180 -0
  45. data/app/helpers/spree/fonts_helper.rb +58 -0
  46. data/app/helpers/spree/orders_helper.rb +7 -0
  47. data/app/helpers/spree/page_helper.rb +67 -0
  48. data/app/helpers/spree/posts_helper.rb +42 -0
  49. data/app/helpers/spree/products_helper.rb +205 -0
  50. data/app/helpers/spree/storefront_helper.rb +86 -0
  51. data/app/helpers/spree/storefront_locale_helper.rb +42 -0
  52. data/app/helpers/spree/theme_helper.rb +244 -0
  53. data/app/helpers/spree/turbo_helper.rb +13 -0
  54. data/app/helpers/spree/turbo_stream_actions_helper.rb +13 -0
  55. data/app/helpers/spree/wishlist_helper.rb +7 -0
  56. data/app/javascript/spree/storefront/application.js +156 -0
  57. data/app/javascript/spree/storefront/controllers/accordion_controller.js +25 -0
  58. data/app/javascript/spree/storefront/controllers/account_nav_controller.js +10 -0
  59. data/app/javascript/spree/storefront/controllers/card_validation_controller.js +103 -0
  60. data/app/javascript/spree/storefront/controllers/carousel_controller.js +44 -0
  61. data/app/javascript/spree/storefront/controllers/cart_controller.js +10 -0
  62. data/app/javascript/spree/storefront/controllers/checkout_address_book_controller.js +28 -0
  63. data/app/javascript/spree/storefront/controllers/checkout_delivery_controller.js +39 -0
  64. data/app/javascript/spree/storefront/controllers/checkout_promotions_controller.js +28 -0
  65. data/app/javascript/spree/storefront/controllers/checkout_summary_controller.js +46 -0
  66. data/app/javascript/spree/storefront/controllers/clear_input_controller.js +23 -0
  67. data/app/javascript/spree/storefront/controllers/copy_input_controller.js +19 -0
  68. data/app/javascript/spree/storefront/controllers/dropdown_controller.js +14 -0
  69. data/app/javascript/spree/storefront/controllers/header_controller.js +33 -0
  70. data/app/javascript/spree/storefront/controllers/infinite_scroll_controller.js +31 -0
  71. data/app/javascript/spree/storefront/controllers/lightbox_controller.js +138 -0
  72. data/app/javascript/spree/storefront/controllers/mobile_nav_controller.js +17 -0
  73. data/app/javascript/spree/storefront/controllers/modal_controller.js +15 -0
  74. data/app/javascript/spree/storefront/controllers/no_ui_slider_controller.js +55 -0
  75. data/app/javascript/spree/storefront/controllers/pdp_desktop_gallery_controller.js +28 -0
  76. data/app/javascript/spree/storefront/controllers/plp_variant_picker_controller.js +151 -0
  77. data/app/javascript/spree/storefront/controllers/product_form_controller.js +136 -0
  78. data/app/javascript/spree/storefront/controllers/quantity_picker_controller.js +43 -0
  79. data/app/javascript/spree/storefront/controllers/search_suggestions_controller.js +61 -0
  80. data/app/javascript/spree/storefront/controllers/searchable_list_controller.js +25 -0
  81. data/app/javascript/spree/storefront/controllers/slideover_controller.js +40 -0
  82. data/app/javascript/spree/storefront/controllers/sticky_button_controller.js +32 -0
  83. data/app/javascript/spree/storefront/controllers/toggle_menu_controller.js +32 -0
  84. data/app/javascript/spree/storefront/controllers/turbo_stream_form_controller.js +51 -0
  85. data/app/javascript/spree/storefront/controllers/wished_item_controller.js +69 -0
  86. data/app/javascript/spree/storefront/helpers/lazy_load_controllers_with_manifest.js +78 -0
  87. data/app/javascript/spree/storefront/helpers/show_flash_message.js +25 -0
  88. data/app/models/spree/color_names.rb +35 -0
  89. data/app/models/spree/contact.rb +24 -0
  90. data/app/presenters/spree/colors_preview_styles_presenter.rb +84 -0
  91. data/app/presenters/spree/featured_product_presenter.rb +42 -0
  92. data/app/presenters/spree/mega_nav_presenter.rb +55 -0
  93. data/app/views/devise/passwords/edit.html.erb +22 -0
  94. data/app/views/devise/passwords/new.html.erb +16 -0
  95. data/app/views/devise/registrations/_form.html.erb +21 -0
  96. data/app/views/devise/registrations/edit.html.erb +24 -0
  97. data/app/views/devise/registrations/new.html.erb +27 -0
  98. data/app/views/devise/sessions/new.html.erb +25 -0
  99. data/app/views/devise/shared/_links.html.erb +22 -0
  100. data/app/views/layouts/spree/checkout.html.erb +58 -0
  101. data/app/views/layouts/spree/password.html.erb +34 -0
  102. data/app/views/layouts/spree/storefront.html.erb +38 -0
  103. data/app/views/spree/account/wished_items/create.turbo_stream.erb +8 -0
  104. data/app/views/spree/account/wished_items/destroy.turbo_stream.erb +20 -0
  105. data/app/views/spree/addresses/destroy.turbo_stream.erb +1 -0
  106. data/app/views/spree/addresses/edit.html.erb +57 -0
  107. data/app/views/spree/addresses/new.html.erb +71 -0
  108. data/app/views/spree/checkout/_address.html.erb +153 -0
  109. data/app/views/spree/checkout/_button_processing.html.erb +7 -0
  110. data/app/views/spree/checkout/_coupon_code.html.erb +55 -0
  111. data/app/views/spree/checkout/_credit_card.html.erb +12 -0
  112. data/app/views/spree/checkout/_delivery.html.erb +70 -0
  113. data/app/views/spree/checkout/_line_item.html.erb +26 -0
  114. data/app/views/spree/checkout/_line_items.html.erb +7 -0
  115. data/app/views/spree/checkout/_missing_all_line_items.html.erb +17 -0
  116. data/app/views/spree/checkout/_missing_line_items.html.erb +28 -0
  117. data/app/views/spree/checkout/_payment.html.erb +35 -0
  118. data/app/views/spree/checkout/_payment_methods.html.erb +72 -0
  119. data/app/views/spree/checkout/_payment_sources.html.erb +24 -0
  120. data/app/views/spree/checkout/_quick_checkout.html.erb +1 -0
  121. data/app/views/spree/checkout/_sidebar.html.erb +34 -0
  122. data/app/views/spree/checkout/_store_credit.html.erb +21 -0
  123. data/app/views/spree/checkout/_summary.html.erb +116 -0
  124. data/app/views/spree/checkout/_user_account.html.erb +9 -0
  125. data/app/views/spree/checkout/apply_coupon_code.turbo_stream.erb +45 -0
  126. data/app/views/spree/checkout/apply_store_credit.turbo_stream.erb +19 -0
  127. data/app/views/spree/checkout/edit.html.erb +98 -0
  128. data/app/views/spree/checkout/payment/_check.html.erb +0 -0
  129. data/app/views/spree/checkout/payment/_gateway.html.erb +74 -0
  130. data/app/views/spree/checkout/payment/_store_credit.html.erb +13 -0
  131. data/app/views/spree/checkout/remove_coupon_code.turbo_stream.erb +34 -0
  132. data/app/views/spree/checkout/remove_store_credit.turbo_stream.erb +19 -0
  133. data/app/views/spree/checkout/update.turbo_stream.erb +25 -0
  134. data/app/views/spree/home/index.html.erb +1 -0
  135. data/app/views/spree/line_items/create.turbo_stream.erb +13 -0
  136. data/app/views/spree/line_items/destroy.turbo_stream.erb +11 -0
  137. data/app/views/spree/line_items/update.turbo_stream.erb +10 -0
  138. data/app/views/spree/newsletter_subscribers/create.turbo_stream.erb +7 -0
  139. data/app/views/spree/order_status/new.html.erb +16 -0
  140. data/app/views/spree/page_sections/show.html.erb +3 -0
  141. data/app/views/spree/pages/show.html.erb +1 -0
  142. data/app/views/spree/password/show.html.erb +1 -0
  143. data/app/views/spree/posts/index.html.erb +1 -0
  144. data/app/views/spree/posts/related_products.html.erb +7 -0
  145. data/app/views/spree/posts/show.html.erb +1 -0
  146. data/app/views/spree/products/index.html.erb +1 -0
  147. data/app/views/spree/products/index.turbo_stream.erb +1 -0
  148. data/app/views/spree/products/related.html.erb +3 -0
  149. data/app/views/spree/products/show.html.erb +1 -0
  150. data/app/views/spree/search/show.html.erb +6 -0
  151. data/app/views/spree/search/show.turbo_stream.erb +1 -0
  152. data/app/views/spree/search/suggestions.turbo_stream.erb +8 -0
  153. data/app/views/spree/seo/robots.text.erb +31 -0
  154. data/app/views/spree/seo/sitemap.xml.erb +25 -0
  155. data/app/views/spree/shared/_fonts.html.erb +14 -0
  156. data/app/views/spree/shared/_head.html.erb +36 -0
  157. data/app/views/spree/shared/_load_more_products.turbo_stream.erb +7 -0
  158. data/app/views/spree/shared/_product_listing_page.html.erb +11 -0
  159. data/app/views/spree/shared/_products.html.erb +1 -0
  160. data/app/views/spree/taxonomies/show.html.erb +1 -0
  161. data/app/views/spree/taxons/show.html.erb +1 -0
  162. data/app/views/spree/taxons/show.turbo_stream.erb +1 -0
  163. data/app/views/spree/waitlists/create.turbo_stream.erb +9 -0
  164. data/app/views/themes/default/kaminari/storefront/_first_page.html.erb +8 -0
  165. data/app/views/themes/default/kaminari/storefront/_gap.html.erb +8 -0
  166. data/app/views/themes/default/kaminari/storefront/_last_page.html.erb +8 -0
  167. data/app/views/themes/default/kaminari/storefront/_next_page.html.erb +13 -0
  168. data/app/views/themes/default/kaminari/storefront/_page.html.erb +10 -0
  169. data/app/views/themes/default/kaminari/storefront/_paginator.html.erb +27 -0
  170. data/app/views/themes/default/kaminari/storefront/_prev_page.html.erb +13 -0
  171. data/app/views/themes/default/spree/account/_account_nav.html.erb +46 -0
  172. data/app/views/themes/default/spree/account/_order.html.erb +39 -0
  173. data/app/views/themes/default/spree/account/_orders.html.erb +16 -0
  174. data/app/views/themes/default/spree/account/addresses/_address.html.erb +42 -0
  175. data/app/views/themes/default/spree/account/addresses/index.html.erb +28 -0
  176. data/app/views/themes/default/spree/account/newsletter/_newsletter_settings.html.erb +13 -0
  177. data/app/views/themes/default/spree/account/newsletter/edit.html.erb +16 -0
  178. data/app/views/themes/default/spree/account/newsletter/update.html.erb +1 -0
  179. data/app/views/themes/default/spree/account/orders/index.html.erb +24 -0
  180. data/app/views/themes/default/spree/account/orders/show.html.erb +22 -0
  181. data/app/views/themes/default/spree/account/profile/edit.html.erb +36 -0
  182. data/app/views/themes/default/spree/account/store_credits/_store_credit_event.html.erb +29 -0
  183. data/app/views/themes/default/spree/account/store_credits/index.html.erb +31 -0
  184. data/app/views/themes/default/spree/checkout/_footer.html.erb +10 -0
  185. data/app/views/themes/default/spree/checkout/complete.html.erb +84 -0
  186. data/app/views/themes/default/spree/contacts/new.html.erb +23 -0
  187. data/app/views/themes/default/spree/orders/_cart.html.erb +14 -0
  188. data/app/views/themes/default/spree/orders/_empty.html.erb +11 -0
  189. data/app/views/themes/default/spree/orders/_line_item.html.erb +47 -0
  190. data/app/views/themes/default/spree/orders/_line_item_quantity.html.erb +11 -0
  191. data/app/views/themes/default/spree/orders/_summary.html.erb +41 -0
  192. data/app/views/themes/default/spree/orders/edit.html.erb +18 -0
  193. data/app/views/themes/default/spree/orders/show.html.erb +6 -0
  194. data/app/views/themes/default/spree/page_sections/_announcement_bar.html.erb +10 -0
  195. data/app/views/themes/default/spree/page_sections/_custom_code.html.erb +5 -0
  196. data/app/views/themes/default/spree/page_sections/_featured_product.html.erb +136 -0
  197. data/app/views/themes/default/spree/page_sections/_featured_taxon.html.erb +116 -0
  198. data/app/views/themes/default/spree/page_sections/_featured_taxons.html.erb +71 -0
  199. data/app/views/themes/default/spree/page_sections/_footer.html.erb +62 -0
  200. data/app/views/themes/default/spree/page_sections/_header.html.erb +166 -0
  201. data/app/views/themes/default/spree/page_sections/_image_banner.html.erb +57 -0
  202. data/app/views/themes/default/spree/page_sections/_image_with_text.html.erb +66 -0
  203. data/app/views/themes/default/spree/page_sections/_main_password_footer.html.erb +64 -0
  204. data/app/views/themes/default/spree/page_sections/_main_password_header.html.erb +54 -0
  205. data/app/views/themes/default/spree/page_sections/_newsletter.html.erb +47 -0
  206. data/app/views/themes/default/spree/page_sections/_page_title.html.erb +7 -0
  207. data/app/views/themes/default/spree/page_sections/_post_details.html.erb +19 -0
  208. data/app/views/themes/default/spree/page_sections/_post_grid.html.erb +11 -0
  209. data/app/views/themes/default/spree/page_sections/_product_details.html.erb +102 -0
  210. data/app/views/themes/default/spree/page_sections/_product_grid.html.erb +52 -0
  211. data/app/views/themes/default/spree/page_sections/_related_products.html.erb +15 -0
  212. data/app/views/themes/default/spree/page_sections/_rich_text.html.erb +18 -0
  213. data/app/views/themes/default/spree/page_sections/_taxon_banner.html.erb +37 -0
  214. data/app/views/themes/default/spree/page_sections/_taxon_grid.html.erb +103 -0
  215. data/app/views/themes/default/spree/page_sections/_video.html.erb +27 -0
  216. data/app/views/themes/default/spree/page_sections/nav/_desktop.html.erb +49 -0
  217. data/app/views/themes/default/spree/page_sections/nav/_mobile.html.erb +136 -0
  218. data/app/views/themes/default/spree/policies/show.html.erb +11 -0
  219. data/app/views/themes/default/spree/posts/_json_ld.html.erb +20 -0
  220. data/app/views/themes/default/spree/posts/_pagination.html.erb +1 -0
  221. data/app/views/themes/default/spree/posts/_post.html.erb +13 -0
  222. data/app/views/themes/default/spree/products/_add_to_cart_button.html.erb +58 -0
  223. data/app/views/themes/default/spree/products/_add_to_waitlist.html.erb +36 -0
  224. data/app/views/themes/default/spree/products/_add_to_wishlist.html.erb +33 -0
  225. data/app/views/themes/default/spree/products/_breadcrumbs.html.erb +23 -0
  226. data/app/views/themes/default/spree/products/_color_picker.html.erb +19 -0
  227. data/app/views/themes/default/spree/products/_color_swatches.html.erb +61 -0
  228. data/app/views/themes/default/spree/products/_details.html.erb +55 -0
  229. data/app/views/themes/default/spree/products/_featured_image.html.erb +37 -0
  230. data/app/views/themes/default/spree/products/_filters.html.erb +45 -0
  231. data/app/views/themes/default/spree/products/_json_ld.html.erb +38 -0
  232. data/app/views/themes/default/spree/products/_json_ld_list.html.erb +9 -0
  233. data/app/views/themes/default/spree/products/_json_ld_variant.html.erb +10 -0
  234. data/app/views/themes/default/spree/products/_label.html.erb +26 -0
  235. data/app/views/themes/default/spree/products/_media_gallery.html.erb +94 -0
  236. data/app/views/themes/default/spree/products/_price.html.erb +59 -0
  237. data/app/views/themes/default/spree/products/_product.html.erb +62 -0
  238. data/app/views/themes/default/spree/products/_quantity_selector.html.erb +32 -0
  239. data/app/views/themes/default/spree/products/_returns_policy_modal.html.erb +22 -0
  240. data/app/views/themes/default/spree/products/_show_more_button.html.erb +8 -0
  241. data/app/views/themes/default/spree/products/_sort.html.erb +45 -0
  242. data/app/views/themes/default/spree/products/_swiper.html.erb +85 -0
  243. data/app/views/themes/default/spree/products/_tags.html.erb +0 -0
  244. data/app/views/themes/default/spree/products/_variant_options.html.erb +71 -0
  245. data/app/views/themes/default/spree/products/_variant_picker.html.erb +50 -0
  246. data/app/views/themes/default/spree/products/filters/_availability.html.erb +32 -0
  247. data/app/views/themes/default/spree/products/filters/_colors.html.erb +23 -0
  248. data/app/views/themes/default/spree/products/filters/_generic.html.erb +75 -0
  249. data/app/views/themes/default/spree/products/filters/_price.html.erb +35 -0
  250. data/app/views/themes/default/spree/products/filters/_taxons.erb +78 -0
  251. data/app/views/themes/default/spree/search/_suggestions.html.erb +92 -0
  252. data/app/views/themes/default/spree/settings/show.html.erb +32 -0
  253. data/app/views/themes/default/spree/shared/_account_pane.html.erb +28 -0
  254. data/app/views/themes/default/spree/shared/_address.html.erb +35 -0
  255. data/app/views/themes/default/spree/shared/_cart_icon.html.erb +13 -0
  256. data/app/views/themes/default/spree/shared/_cart_pane.html.erb +38 -0
  257. data/app/views/themes/default/spree/shared/_css_variables.html.erb +54 -0
  258. data/app/views/themes/default/spree/shared/_custom_head.html.erb +0 -0
  259. data/app/views/themes/default/spree/shared/_error_messages.html.erb +9 -0
  260. data/app/views/themes/default/spree/shared/_error_messages_without_base_attribute.html.erb +15 -0
  261. data/app/views/themes/default/spree/shared/_flash.html.erb +16 -0
  262. data/app/views/themes/default/spree/shared/_flashes.html.erb +10 -0
  263. data/app/views/themes/default/spree/shared/_json_ld.html.erb +32 -0
  264. data/app/views/themes/default/spree/shared/_line_item_options.html.erb +18 -0
  265. data/app/views/themes/default/spree/shared/_logo.html.erb +42 -0
  266. data/app/views/themes/default/spree/shared/_meta_tags.html.erb +45 -0
  267. data/app/views/themes/default/spree/shared/_order_details.html.erb +106 -0
  268. data/app/views/themes/default/spree/shared/_order_line_item.html.erb +65 -0
  269. data/app/views/themes/default/spree/shared/_order_shipment.html.erb +71 -0
  270. data/app/views/themes/default/spree/shared/_search.html.erb +32 -0
  271. data/app/views/themes/default/spree/shared/_title.html.erb +3 -0
  272. data/app/views/themes/default/spree/shared/_wishlist_icon.html.erb +13 -0
  273. data/app/views/themes/default/spree/shared/icons/_account.html.erb +17 -0
  274. data/app/views/themes/default/spree/shared/icons/_arrow-left.html.erb +8 -0
  275. data/app/views/themes/default/spree/shared/icons/_arrow-right.html.erb +3 -0
  276. data/app/views/themes/default/spree/shared/icons/_bell.html.erb +9 -0
  277. data/app/views/themes/default/spree/shared/icons/_cart.html.erb +10 -0
  278. data/app/views/themes/default/spree/shared/icons/_cart_48.html.erb +6 -0
  279. data/app/views/themes/default/spree/shared/icons/_check.html.erb +4 -0
  280. data/app/views/themes/default/spree/shared/icons/_chevron.html.erb +15 -0
  281. data/app/views/themes/default/spree/shared/icons/_chevron_down.html.erb +5 -0
  282. data/app/views/themes/default/spree/shared/icons/_chevron_right.html.erb +15 -0
  283. data/app/views/themes/default/spree/shared/icons/_chevron_up.html.erb +3 -0
  284. data/app/views/themes/default/spree/shared/icons/_close.html.erb +9 -0
  285. data/app/views/themes/default/spree/shared/icons/_cross.html.erb +16 -0
  286. data/app/views/themes/default/spree/shared/icons/_delete.html.erb +3 -0
  287. data/app/views/themes/default/spree/shared/icons/_delivery.html.erb +5 -0
  288. data/app/views/themes/default/spree/shared/icons/_disabled.html.erb +13 -0
  289. data/app/views/themes/default/spree/shared/icons/_edit.html.erb +3 -0
  290. data/app/views/themes/default/spree/shared/icons/_facebook.html.erb +16 -0
  291. data/app/views/themes/default/spree/shared/icons/_filter.html.erb +8 -0
  292. data/app/views/themes/default/spree/shared/icons/_heart.html.erb +12 -0
  293. data/app/views/themes/default/spree/shared/icons/_info.html.erb +7 -0
  294. data/app/views/themes/default/spree/shared/icons/_instagram.html.erb +18 -0
  295. data/app/views/themes/default/spree/shared/icons/_lock.html.erb +13 -0
  296. data/app/views/themes/default/spree/shared/icons/_menu.html.erb +10 -0
  297. data/app/views/themes/default/spree/shared/icons/_minus.html.erb +5 -0
  298. data/app/views/themes/default/spree/shared/icons/_pinch.html.erb +6 -0
  299. data/app/views/themes/default/spree/shared/icons/_pinterest.html.erb +8 -0
  300. data/app/views/themes/default/spree/shared/icons/_plus.html.erb +17 -0
  301. data/app/views/themes/default/spree/shared/icons/_return.html.erb +11 -0
  302. data/app/views/themes/default/spree/shared/icons/_search.html.erb +17 -0
  303. data/app/views/themes/default/spree/shared/icons/_spinner.html.erb +1 -0
  304. data/app/views/themes/default/spree/shared/icons/_spotify.html.erb +8 -0
  305. data/app/views/themes/default/spree/shared/icons/_tiktok.html.erb +9 -0
  306. data/app/views/themes/default/spree/shared/icons/_twitter.html.erb +16 -0
  307. data/app/views/themes/default/spree/shared/icons/_youtube.html.erb +9 -0
  308. data/app/views/themes/default/spree/shared/icons/_zoom.html.erb +10 -0
  309. data/app/views/themes/default/spree/wishlists/_no_wished_items.html.erb +10 -0
  310. data/app/views/themes/default/spree/wishlists/_wished_item.html.erb +38 -0
  311. data/app/views/themes/default/spree/wishlists/show.html.erb +17 -0
  312. data/config/i18n-tasks.yml +176 -0
  313. data/config/importmap.rb +22 -0
  314. data/config/initializers/assets.rb +1 -0
  315. data/config/initializers/heroicon.rb +10 -0
  316. data/config/locales/en.yml +76 -0
  317. data/config/routes.rb +88 -0
  318. data/lib/generators/spree/storefront/install/install_generator.rb +45 -0
  319. data/lib/generators/spree/storefront/install/templates/application.tailwind.css +1760 -0
  320. data/lib/generators/spree/storefront/install/templates/dev +16 -0
  321. data/lib/generators/spree/storefront/install/templates/tailwind.config.js +128 -0
  322. data/lib/generators/spree/storefront/theme/templates/model.rb.tt +12 -0
  323. data/lib/generators/spree/storefront/theme/theme_generator.rb +41 -0
  324. data/lib/spree/storefront/configuration.rb +11 -0
  325. data/lib/spree/storefront/engine.rb +51 -0
  326. data/lib/spree/storefront/testing_support/capybara_utils.rb +13 -0
  327. data/lib/spree/storefront.rb +16 -0
  328. data/lib/spree_storefront.rb +1 -0
  329. data/vendor/colornames.json +1 -0
  330. data/vendor/javascript/@kanety--stimulus-accordion.js +4 -0
  331. data/vendor/javascript/@stimulus-components--carousel.js +4 -0
  332. data/vendor/javascript/card-validator.js +4 -0
  333. data/vendor/javascript/credit-card-type.js +4 -0
  334. data/vendor/javascript/headroom.js.js +19 -0
  335. data/vendor/javascript/nouislider.js +4 -0
  336. data/vendor/javascript/photoswipe--dist--photoswipe-lightbox.esm.js.js +667 -0
  337. data/vendor/javascript/photoswipe.js +1675 -0
  338. data/vendor/javascript/stimulus-read-more.js +4 -0
  339. data/vendor/javascript/stimulus-scroll-to.js +4 -0
  340. data/vendor/javascript/swiper--bundle.js +4 -0
  341. metadata +567 -0
@@ -0,0 +1,65 @@
1
+ <% line_item = inventory_unit.line_item %>
2
+
3
+ <div class="flex flex-col gap-4">
4
+ <div class="flex gap-4">
5
+ <div class="flex-shrink-0">
6
+ <% image = line_item.variant.default_image %>
7
+ <% if image.present? && image.attached? && image.variable? %>
8
+ <%= link_to spree_storefront_resource_url(line_item.product, relative: true) do %>
9
+ <%= image_tag main_app.cdn_image_url(
10
+ image.variant(spree_image_variant_options(resize_to_fit: [256, 256])),
11
+ ),
12
+ width: 128,
13
+ loaging: :lazy %>
14
+ <% end %>
15
+ <% end %>
16
+ </div>
17
+ <div class="flex flex-col gap-2">
18
+ <div class="font-medium uppercase">
19
+ <%= link_to line_item.name,
20
+ spree_storefront_resource_url(line_item.product, relative: true) %>
21
+ </div>
22
+ <div class="font-medium">
23
+ <%= line_item.display_price %>
24
+ </div>
25
+ <div class="flex flex-wrap gap-2">
26
+ <%= render "spree/shared/line_item_options", line_item: line_item %>
27
+ <div
28
+ class="
29
+ h-[30px] border border-default px-2 inline-flex items-center hover:border-dashed
30
+ hover:border-primary text-sm
31
+ "
32
+ >
33
+ <%= Spree.t(:quantity) %>:
34
+ <%= inventory_unit.quantity %>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ <% if line_item.digital_links.any? %>
40
+ <div class="flex flex-col gap-2">
41
+ <span class="font-medium"><%= Spree.t(:attachments) %></span>
42
+ <ul class="flex flex-col gap-1">
43
+ <% line_item.digital_links.each do |digital_link| %>
44
+ <li>
45
+ <% if digital_link.authorizable? %>
46
+ <%= link_to "#{Spree.t(:download)} #{digital_link.filename}",
47
+ spree.digital_link_path(digital_link.token) %>
48
+ <% else %>
49
+ <span class="text-neutral cursor-not-allowed">
50
+ <%= Spree.t(:download) %>
51
+ <%= digital_link.filename %>
52
+ (<%= Spree.t(:expired) %>)
53
+ </span>
54
+ <% end %>
55
+ </li>
56
+ <% end %>
57
+ </ul>
58
+ </div>
59
+ <% end %>
60
+ <div>
61
+ <%= link_to Spree.t(:order_again),
62
+ spree_storefront_resource_url(line_item.product, relative: true),
63
+ class: "link" %>
64
+ </div>
65
+ </div>
@@ -0,0 +1,71 @@
1
+ <li class="border border-accent mb-4">
2
+ <div class="p-4 lg:p-6">
3
+ <div class="flex flex-col lg:flex-row lg:gap-6 gap-4">
4
+ <div class="text-sm lg:w-1/2">
5
+ <div class="tracking-widest uppercase mb-1">
6
+ <%= Spree.t(:delivery_address) %>
7
+ </div>
8
+ <div class="!leading-[1.375rem] text-neutral-800">
9
+ <%= render "spree/shared/address",
10
+ address: shipment.address || shipment.order.ship_address %>
11
+ </div>
12
+ </div>
13
+ <div class="text-sm lg:w-1/2 lg:flex justify-between">
14
+ <div>
15
+ <div class="tracking-widest uppercase mb-1">
16
+ <%= Spree.t(:shipping_method) %>
17
+ </div>
18
+ <div class="!leading-[1.375rem] text-neutral-800">
19
+ <% if shipment.shipping_method.present? %>
20
+ <%= shipment.shipping_method.name %>
21
+ <% else %>
22
+ <%= Spree.t("shipment_states.canceled") %>
23
+ <% end %>
24
+ <br>
25
+ <% if shipment.stock_location.present? %>
26
+ <%= Spree.t(:shipped_from) %>
27
+ <%= shipment.stock_location.name %>
28
+ <% end %>
29
+ </div>
30
+ </div>
31
+ <% unless shipment.digital? %>
32
+ <div class="mt-4 lg:-mt-2 lg:-mr-2">
33
+ <% if shipment.shipped? && shipment.tracked? && shipment.tracking_url.present? %>
34
+ <%= link_to Spree.t(:track_items),
35
+ shipment.tracking_url,
36
+ class: "!px-3 !py-1 block btn-primary !leading-6 text-sm text-center",
37
+ target: :_blank %>
38
+ <% else %>
39
+ <button
40
+ class="
41
+ !px-3 !py-1 block btn-primary !leading-6 text-sm text-center
42
+ "
43
+ disabled
44
+ ><%= Spree.t(:track_items) %></button>
45
+ <% end %>
46
+ </div>
47
+ <% end %>
48
+ </div>
49
+ </div>
50
+ <% if shipment.canceled? && shipment.shipped_at.nil? %>
51
+ <div class="alert-warning text-sm uppercase mt-3 px-3 py-2">
52
+ <strong><%= Spree.t(:shipment) %>
53
+ <%= Spree.t("shipment_states.canceled") %></strong>.
54
+ <%= Spree.t(:shipment_refunded_message) %>
55
+ </div>
56
+ <% elsif (!shipment.tracked? || !shipment.shipped?) && !shipment.digital? %>
57
+ <div class="text-sm uppercase text-center bg-neutral-100 mt-3 px-3 py-2">
58
+ <%= Spree.t(:no_tracking_present) %>
59
+ </div>
60
+ <% end %>
61
+ </div>
62
+
63
+ <hr class="border-accent mx-4">
64
+
65
+ <div class="grid grid-cols-1 gap-4 lg:gap-6 p-4 lg:p-6">
66
+ <%= render partial: "spree/shared/order_line_item",
67
+ collection: shipment.inventory_units,
68
+ as: :inventory_unit,
69
+ cached: spree_base_cache_scope %>
70
+ </div>
71
+ </li>
@@ -0,0 +1,32 @@
1
+ <div id="search-suggestions" role="dialog" aria-modal="true">
2
+ <div class='w-full flex flex-col border-b border-default' data-controller="search-suggestions" data-show-class="h-screen min-h-screen" data-search-suggestions-url-value="<%= spree.search_suggestions_path %>">
3
+ <div class='hidden lg:flex justify-center w-full mt-4 mb-3' id="header-logo">
4
+ <%= render 'spree/shared/logo', logo: logo, height: logo_height %>
5
+ </div>
6
+ <%= form_with url: spree.search_path, method: :get, local: true do %>
7
+ <div class='page-container bg-background flex w-full my-2 lg:mb-3 animate-fadeIn'>
8
+ <%= button_tag class: 'items-center justify-center pr-4', type: :button, data: { action: "click->search-suggestions#hide touch->search-suggestions#hide" } do %>
9
+ <span class='sr-only'><%= Spree.t(:close) %></span>
10
+ <%= render 'spree/shared/icons/close', color: 'black' %>
11
+ <% end %>
12
+
13
+ <div class='relative mx-auto w-full md:w-1/2' data-controller='clear-input'>
14
+ <%= button_tag type: 'submit', class: 'absolute left-2 top-2' do %>
15
+ <%= render 'spree/shared/icons/search' %>
16
+ <% end %>
17
+
18
+ <%= text_field_tag :q, params[:q], class: 'p-2 lg:text-sm !leading-6 pl-10 !h-auto bg-accent w-full uppercase pr-14 focus:outline-none text-input', placeholder: Spree.t(:search), data: { search_suggestions_target: 'input', clear_input_target: 'input' } %>
19
+ <%= button_tag class: 'hidden text-sm font-semibold absolute top-2 right-2 uppercase h-6 tracking-widest', data: { clear_input_target: 'button', action: 'click->clear-input#clear touch->clear-input#clear click->search-suggestions#clear touch->search-suggestions#clear' } do %>
20
+ <%= Spree.t(:clear) %>
21
+ <% end %>
22
+ </div>
23
+ </div>
24
+ <% end %>
25
+ <div id="search-suggestions-content" class="flex-grow hidden" data-show-class="animate-fadeIn"></div>
26
+ </div>
27
+
28
+ <!-- rendering search flyover skeleton -->
29
+ <template id="loading">
30
+ <%= render 'spree/search/suggestions' %>
31
+ </template>
32
+ </div>
@@ -0,0 +1,3 @@
1
+ <h1 class="text-2xl uppercase font-medium tracking-tight py-5 text-center lg:text-left mt-5">
2
+ <%= accurate_title %>
3
+ </h1>
@@ -0,0 +1,13 @@
1
+ <% background_color ||= '#fff' %>
2
+ <div class="relative">
3
+ <%= render 'spree/shared/icons/heart' %>
4
+ <% if current_wishlist && current_wishlist.wished_items_count > 0 %>
5
+ <span
6
+ style="background-color: <%= background_color %>"
7
+ class="absolute text-[0.5rem] font-extrabold leading-[0.5rem] right-[0.10rem] bottom-1 px-[0.0625rem] text-center"
8
+ id="wishlist-icon-count"
9
+ >
10
+ <%= current_wishlist.wished_items_count %>
11
+ </span>
12
+ <% end %>
13
+ </div>
@@ -0,0 +1,17 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='25'
4
+ height='24'
5
+ viewBox='0 0 25 24'
6
+ fill='none'
7
+ >
8
+ <g clip-path="url(#clip0_440_247)">
9
+ <circle cx="12.5" cy="5" r="4.25" stroke="currentColor" stroke-width="1.5"/>
10
+ <path d="M23.5 23C23.5 16.9249 18.5751 12 12.5 12C6.42487 12 1.5 16.9249 1.5 23" stroke="currentColor" stroke-width="1.5"/>
11
+ </g>
12
+ <defs>
13
+ <clipPath id="clip0_440_247">
14
+ <rect width="24" height="24" fill="white" transform="translate(0.5)"/>
15
+ </clipPath>
16
+ </defs>
17
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='24'
4
+ height='24'
5
+ viewBox='0 0 32 32'
6
+ >
7
+ <path d="M2 16H30M2 16L16 2M2 16L16 30" stroke="currentColor" stroke-width="1.5"/>
8
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="22" height="22" viewBox="0 0 22 22" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M11 22L22 11L11 0L9.89203 1.10797L19.0006 10.2165H0V11.7835H19.0006L9.89203 20.892L11 22Z" fill="currentColor"/>
3
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg
2
+ width="25"
3
+ height="24"
4
+ fill="none"
5
+ xmlns="http://www.w3.org/2000/svg"><path
6
+ fill-rule="evenodd"
7
+ clip-rule="evenodd"
8
+ d="M11.25 3.367a6.749 6.749 0 0 1 2.5 0V3a1.25 1.25 0 0 0-2.5 0v.367Zm4 .469V3a2.75 2.75 0 0 0-5.5 0v.836a6.748 6.748 0 0 0-4 6.164c0 3.39-.726 5.514-1.409 6.766a6.184 6.184 0 0 1-.917 1.296 3.254 3.254 0 0 1-.339.312l-.009.007.002-.001.002-.002h.002v-.001l.002.002.415 1.371h4.31a4.75 4.75 0 0 0 9.38 0h4.31l.415-1.371.002-.002h.001l.002.001.002.002h.002l-.01-.006a3.254 3.254 0 0 1-.338-.312 6.185 6.185 0 0 1-.917-1.296c-.683-1.252-1.409-3.376-1.409-6.766a6.75 6.75 0 0 0-4-6.164ZM10.2 21.298a3.25 3.25 0 0 1-.864-1.548h6.325a3.25 3.25 0 0 1-5.46 1.548Zm9.608-3.048a8.77 8.77 0 0 1-.468-.766c-.817-1.498-1.592-3.874-1.592-7.484a5.25 5.25 0 1 0-10.5 0c0 3.61-.774 5.986-1.591 7.484a8.77 8.77 0 0 1-.469.766h14.62Z"
9
+ fill="currentColor" /></svg>
@@ -0,0 +1,10 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='24'
4
+ height='24'
5
+ viewBox='0 0 24 24'
6
+ fill='none'
7
+ >
8
+ <path d="M1.84725 22.25L3.49725 8.75H20.5028L22.1528 22.25H12H1.84725Z" stroke="currentColor" stroke-width="1.5" />
9
+ <path d="M16 11V5C16 2.79086 14.2091 1 12 1V1C9.79086 1 8 2.79086 8 5V11" stroke="currentColor" stroke-width="1.5" />
10
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg width="49" height="49" viewBox="0 0 49 49" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Icon">
3
+ <path id="Rectangle 7" d="M3.34725 45.75L6.83058 17.25H42.1694L45.6528 45.75H24.5H3.34725Z" stroke="currentColor" stroke-width="1.5"/>
4
+ <path id="Rectangle 8" d="M32.5 22.5V10.5C32.5 6.08172 28.9183 2.5 24.5 2.5V2.5C20.0817 2.5 16.5 6.08172 16.5 10.5V22.5" stroke="currentColor" stroke-width="1.5"/>
5
+ </g>
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <% size ||= 24 %>
2
+ <svg width="<%= size %>" height="<%= size %>" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3
+ <path id="Vector" d="M2 12L8.66667 19L22 5" stroke="currentColor" stroke-width="1.5"/>
4
+ </svg>
@@ -0,0 +1,15 @@
1
+ <% size ||= 24 %>
2
+ <% color ||= theme_setting(:text_color) %>
3
+
4
+ <svg
5
+ xmlns='http://www.w3.org/2000/svg'
6
+ width='<%= size %>'
7
+ height='<%= size %>'
8
+ viewBox='0 0 24 24'
9
+ fill='none'>
10
+ <path
11
+ fill-rule="evenodd"
12
+ clip-rule="evenodd"
13
+ d="M15.4696 20.5303L16.5303 19.4697L9.0606 12L16.5303 4.53033L15.4696 3.46967L6.93928 12L15.4696 20.5303Z"
14
+ fill="<%= color %>" />
15
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="Side=Down">
3
+ <path id="Vector 517" d="M4 8L12 16L20 8" stroke="currentColor" stroke-width="1.5"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,15 @@
1
+ <% size ||= 24 %>
2
+ <% color ||= theme_setting(:text_color) %>
3
+
4
+ <svg
5
+ xmlns="http://www.w3.org/2000/svg"
6
+ width="<%= size %>"
7
+ height="<%= size %>"
8
+ fill="none"
9
+ viewBox="0 0 24 24">
10
+ <path
11
+ fill="<%= color %>"
12
+ fill-rule="evenodd"
13
+ d="M8.53 3.47 7.47 4.53 14.94 12l-7.47 7.47 1.06 1.06L17.06 12 8.53 3.47Z"
14
+ clip-rule="evenodd" />
15
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" width="24" height="24" viewBox="0 0 24 24">
2
+ <path stroke-linecap="round" stroke-linejoin="round" d="m4.5 15.75 7.5-7.5 7.5 7.5" stroke-width="1.5" stroke="currentColor" />
3
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='24'
4
+ height='24'
5
+ viewBox='0 0 24 24'
6
+ fill='none'
7
+ >
8
+ <path d="M3.00029 3L21 20.9688M3 21L20.9997 3.03115" stroke="currentColor" stroke-width="1.5"/>
9
+ </svg>
@@ -0,0 +1,16 @@
1
+ <% size ||= 24 %>
2
+
3
+ <svg
4
+ width="<%= size %>"
5
+ height="<%= size %>"
6
+ viewBox="0 0 24 24"
7
+ fill="none"
8
+ xmlns="http://www.w3.org/2000/svg">
9
+ <g id="24px/Cross">
10
+ <path
11
+ id="Vector"
12
+ d="M3.00029 3L21 20.9688M3 21L20.9997 3.03115"
13
+ stroke="currentColor"
14
+ stroke-width="1.5" />
15
+ </g>
16
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'>
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M9.5 2.5H14.5V5H9.5V2.5ZM8 5V2.5V1H9.5H14.5H16V2.5V5H17.5H19H22V6.5H19V20.5V22H17.5H6.5H5V20.5V6.5H2V5H5H6.5H8ZM16 6.5H14.5H9.5H8H6.5V20.5H17.5V6.5H16ZM9.5 10H11V17H9.5V10ZM14.5 10H13V17H14.5V10Z" fill="black"/>
3
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0.5 3H9M15 19H16M15 19H9M15 19V13M15 7H19L23 13M23 13V19H20M23 13H15M5 19H1V11H4M0.5 7H7.5M12 3H15V13" stroke="currentColor" stroke-width="1.5"/>
3
+ <circle cx="18" cy="19" r="2.25" stroke="currentColor" stroke-width="1.5"/>
4
+ <circle cx="7" cy="19" r="2.25" stroke="currentColor" stroke-width="1.5"/>
5
+ </svg>
@@ -0,0 +1,13 @@
1
+ <%= tag.svg(
2
+ xmlns: 'http://www.w3.org/2000/svg',
3
+ width: 24,
4
+ height: 24,
5
+ viewBox: '0 0 24 24',
6
+ fill: 'none'
7
+ ) do %>
8
+ <%= tag.path(
9
+ d: "M3.00029 3L21 20.9688M3 21L20.9997 3.03115",
10
+ stroke: local_assigns.fetch(:stroke, 'black'),
11
+ stroke_width: 1.5
12
+ ) %>
13
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'>
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M17.0304 4.03034C17.2876 3.77317 17.6364 3.62869 18.0001 3.62869C18.1802 3.62869 18.3585 3.66416 18.5248 3.73308C18.6912 3.80199 18.8424 3.903 18.9697 4.03034C19.0971 4.15768 19.1981 4.30886 19.267 4.47523C19.3359 4.64161 19.3714 4.81993 19.3714 5.00001C19.3714 5.1801 19.3359 5.35842 19.267 5.52479C19.1981 5.69117 19.0971 5.84234 18.9697 5.96968L6.61663 18.3228L4.03084 18.9692L4.67729 16.3834L17.0304 4.03034ZM18.0001 2.12869C17.2385 2.12869 16.5082 2.43121 15.9697 2.96968L3.46974 15.4697L3.27246 15.8181L2.27246 19.8181L3.18197 20.7276L7.18197 19.7276L7.5304 19.5303L20.0304 7.03034C20.297 6.76372 20.5085 6.44718 20.6528 6.09882C20.7971 5.75046 20.8714 5.37708 20.8714 5.00001C20.8714 4.62295 20.7971 4.24957 20.6528 3.90121C20.5085 3.55284 20.297 3.23631 20.0304 2.96968C19.7638 2.70306 19.4472 2.49156 19.0989 2.34726C18.7505 2.20296 18.3771 2.12869 18.0001 2.12869ZM12.0001 20.75H21.0001V19.25H12.0001V20.75Z" fill="black"/>
3
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='16'
4
+ height='16'
5
+ viewBox='0 0 16 16'
6
+ fill='currentColor'
7
+ >
8
+ <g clip-path="url(#clip0_193_2265)">
9
+ <path d="M16 8C16 3.58172 12.4183 0 8 0C3.58172 0 0 3.58172 0 8C0 11.993 2.92547 15.3027 6.75 15.9028V10.3125H4.71875V8H6.75V6.2375C6.75 4.2325 7.94438 3.125 9.77172 3.125C10.6467 3.125 11.5625 3.28125 11.5625 3.28125V5.25H10.5538C9.56 5.25 9.25 5.86672 9.25 6.5V8H11.4688L11.1141 10.3125H9.25V15.9028C13.0745 15.3027 16 11.993 16 8Z"/>
10
+ </g>
11
+ <defs>
12
+ <clipPath id="clip0_193_2265">
13
+ <rect width="16" height="16" fill="white"/>
14
+ </clipPath>
15
+ </defs>
16
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="24px/Fillter">
3
+ <path id="Vector 9" d="M0 7L24 7" stroke="currentColor" stroke-width="1.5"/>
4
+ <path id="Vector 10" d="M0 17L24 17" stroke="currentColor" stroke-width="1.5"/>
5
+ <rect id="Rectangle 8" x="14.75" y="4.75" width="4.5" height="4.5" rx="2.25" fill="white" stroke="currentColor" stroke-width="1.5"/>
6
+ <rect id="Rectangle 9" x="4.75" y="14.75" width="4.5" height="4.5" rx="2.25" fill="white" stroke="currentColor" stroke-width="1.5"/>
7
+ </g>
8
+ </svg>
@@ -0,0 +1,12 @@
1
+ <% active ||= false %>
2
+ <% size ||= 24 %>
3
+
4
+ <% if active %>
5
+ <svg xmlns="http://www.w3.org/2000/svg" width="<%= size %>" height="<%= size %>" viewBox="0 0 24 24" fill="none">
6
+ <path d="M13.7601 3.46195L13.7602 3.46182C14.2788 2.91653 14.8925 2.48607 15.5652 2.19312C16.2378 1.90021 16.9574 1.75 17.6831 1.75C18.4087 1.75 19.1283 1.90021 19.8009 2.19312C20.4736 2.48607 21.0873 2.91653 21.6059 3.46182L21.6062 3.46208C22.1251 4.00718 22.5386 4.6564 22.8213 5.37354C23.104 6.09072 23.25 6.86062 23.25 7.63895C23.25 8.41727 23.104 9.18717 22.8213 9.90436C22.5386 10.6215 22.1251 11.2707 21.6062 11.8158L21.606 11.8159L20.389 13.095L11.9997 21.912L3.6104 13.095L2.39335 11.8159C1.34505 10.7142 0.75 9.21232 0.75 7.63895C0.75 6.06557 1.34505 4.56369 2.39335 3.46195C3.44045 2.36148 4.85242 1.75065 6.31633 1.75065C7.78024 1.75065 9.19221 2.36148 10.2393 3.46195L11.4564 4.74103L11.9997 5.31207L12.543 4.74103L13.7601 3.46195Z" fill="currentColor" stroke="currentColor" stroke-width="1.5"/>
7
+ </svg>
8
+ <% else %>
9
+ <svg xmlns="http://www.w3.org/2000/svg" width="<%= size %>" height="<%= size %>" viewBox="0 0 24 24" fill="none">
10
+ <path d="M13.7601 3.46195L13.7602 3.46182C14.2788 2.91653 14.8925 2.48607 15.5652 2.19312C16.2378 1.90021 16.9574 1.75 17.6831 1.75C18.4087 1.75 19.1283 1.90021 19.8009 2.19312C20.4736 2.48607 21.0873 2.91653 21.6059 3.46182L21.6062 3.46208C22.1251 4.00718 22.5386 4.6564 22.8213 5.37354C23.104 6.09072 23.25 6.86062 23.25 7.63895C23.25 8.41727 23.104 9.18717 22.8213 9.90436C22.5386 10.6215 22.1251 11.2707 21.6062 11.8158L21.606 11.8159L20.389 13.095L11.9997 21.912L3.6104 13.095L2.39335 11.8159C1.34505 10.7142 0.75 9.21232 0.75 7.63895C0.75 6.06557 1.34505 4.56369 2.39335 3.46195C3.44045 2.36148 4.85242 1.75065 6.31633 1.75065C7.78024 1.75065 9.19221 2.36148 10.2393 3.46195L11.4564 4.74103L11.9997 5.31207L12.543 4.74103L13.7601 3.46195Z" stroke="currentColor" stroke-width="1.5"/>
11
+ </svg>
12
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <% width ||= 24 %>
2
+ <% height ||= 24 %>
3
+ <% color ||= 'currentColor' %>
4
+ <%= tag.svg width: width, height: height, viewBox: "0 0 #{width} #{height}", fill: "none", xmlns: "http://www.w3.org/2000/svg" do %>
5
+ <path id="Shape" fill-rule="evenodd" clip-rule="evenodd" d="M21.5 12C21.5 17.2467 17.2467 21.5 12 21.5C6.7533 21.5 2.5 17.2467 2.5 12C2.5 6.7533 6.7533 2.5 12 2.5C17.2467 2.5 21.5 6.7533 21.5 12ZM23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1C18.0751 1 23 5.92487 23 12ZM12.75 8.5V7H11.25V8.5H12.75ZM12.75 17V11H11.25V17H12.75Z" fill="<%= color %>">
6
+ </path>
7
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='16'
4
+ height='16'
5
+ viewBox='0 0 16 16'
6
+ fill='currentColor'
7
+ >
8
+ <g clip-path="url(#clip0_193_2259)">
9
+ <path d="M8 1.44062C10.1375 1.44062 10.3906 1.45 11.2313 1.4875C12.0125 1.52187 12.4344 1.65313 12.7156 1.7625C13.0875 1.90625 13.3563 2.08125 13.6344 2.35938C13.9156 2.64062 14.0875 2.90625 14.2313 3.27813C14.3406 3.55938 14.4719 3.98438 14.5063 4.7625C14.5438 5.60625 14.5531 5.85938 14.5531 7.99375C14.5531 10.1313 14.5438 10.3844 14.5063 11.225C14.4719 12.0063 14.3406 12.4281 14.2313 12.7094C14.0875 13.0813 13.9125 13.35 13.6344 13.6281C13.3531 13.9094 13.0875 14.0813 12.7156 14.225C12.4344 14.3344 12.0094 14.4656 11.2313 14.5C10.3875 14.5375 10.1344 14.5469 8 14.5469C5.8625 14.5469 5.60938 14.5375 4.76875 14.5C3.9875 14.4656 3.56563 14.3344 3.28438 14.225C2.9125 14.0813 2.64375 13.9063 2.36563 13.6281C2.08438 13.3469 1.9125 13.0813 1.76875 12.7094C1.65938 12.4281 1.52813 12.0031 1.49375 11.225C1.45625 10.3813 1.44688 10.1281 1.44688 7.99375C1.44688 5.85625 1.45625 5.60313 1.49375 4.7625C1.52813 3.98125 1.65938 3.55938 1.76875 3.27813C1.9125 2.90625 2.0875 2.6375 2.36563 2.35938C2.64688 2.07812 2.9125 1.90625 3.28438 1.7625C3.56563 1.65313 3.99063 1.52187 4.76875 1.4875C5.60938 1.45 5.8625 1.44062 8 1.44062ZM8 0C5.82813 0 5.55625 0.009375 4.70313 0.046875C3.85313 0.084375 3.26875 0.221875 2.7625 0.41875C2.23438 0.625 1.7875 0.896875 1.34375 1.34375C0.896875 1.7875 0.625 2.23438 0.41875 2.75938C0.221875 3.26875 0.084375 3.85 0.046875 4.7C0.009375 5.55625 0 5.82812 0 8C0 10.1719 0.009375 10.4438 0.046875 11.2969C0.084375 12.1469 0.221875 12.7313 0.41875 13.2375C0.625 13.7656 0.896875 14.2125 1.34375 14.6562C1.7875 15.1 2.23438 15.375 2.75938 15.5781C3.26875 15.775 3.85 15.9125 4.7 15.95C5.55313 15.9875 5.825 15.9969 7.99688 15.9969C10.1688 15.9969 10.4406 15.9875 11.2938 15.95C12.1438 15.9125 12.7281 15.775 13.2344 15.5781C13.7594 15.375 14.2063 15.1 14.65 14.6562C15.0938 14.2125 15.3688 13.7656 15.5719 13.2406C15.7688 12.7313 15.9063 12.15 15.9438 11.3C15.9813 10.4469 15.9906 10.175 15.9906 8.00313C15.9906 5.83125 15.9813 5.55938 15.9438 4.70625C15.9063 3.85625 15.7688 3.27188 15.5719 2.76562C15.375 2.23438 15.1031 1.7875 14.6563 1.34375C14.2125 0.9 13.7656 0.625 13.2406 0.421875C12.7313 0.225 12.15 0.0875 11.3 0.05C10.4438 0.009375 10.1719 0 8 0Z"/>
10
+ <path d="M8 3.89062C5.73125 3.89062 3.89062 5.73125 3.89062 8C3.89062 10.2688 5.73125 12.1094 8 12.1094C10.2688 12.1094 12.1094 10.2688 12.1094 8C12.1094 5.73125 10.2688 3.89062 8 3.89062ZM8 10.6656C6.52813 10.6656 5.33437 9.47188 5.33437 8C5.33437 6.52813 6.52813 5.33437 8 5.33437C9.47188 5.33437 10.6656 6.52813 10.6656 8C10.6656 9.47188 9.47188 10.6656 8 10.6656Z"/>
11
+ <path d="M13.2312 3.72793C13.2312 4.25918 12.8 4.68731 12.2719 4.68731C11.7406 4.68731 11.3125 4.25606 11.3125 3.72793C11.3125 3.19668 11.7438 2.76855 12.2719 2.76855C12.8 2.76855 13.2312 3.19981 13.2312 3.72793Z"/>
12
+ </g>
13
+ <defs>
14
+ <clipPath id="clip0_193_2259">
15
+ <rect width="16" height="16" fill="white"/>
16
+ </clipPath>
17
+ </defs>
18
+ </svg>
@@ -0,0 +1,13 @@
1
+ <% class_name = local_assigns.fetch(:class, "w-6 h-6") %>
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ fill="none"
5
+ viewBox="0 0 24 24"
6
+ stroke-width="1.5"
7
+ stroke="currentColor"
8
+ class="<%= class_name %>">
9
+ <path
10
+ stroke-linecap="round"
11
+ stroke-linejoin="round"
12
+ d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" />
13
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='24'
4
+ height='24'
5
+ viewBox='0 0 24 24'
6
+ fill='none'
7
+ >
8
+ <path d="M0 6H24" stroke="currentColor" stroke-width="1.5"/>
9
+ <path d="M0 18H24" stroke="currentColor" stroke-width="1.5"/>
10
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="24px/Minus">
3
+ <path id="Vector" d="M4 11.9858H20" stroke="currentColor" stroke-width="1.5"/>
4
+ </g>
5
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns='http://www.w3.org/2000/svg' width='57' height='56' viewBox='0 0 57 56' fill='none' class='w-full h-full'>
2
+ <path d="M30.7288 20.1599C30.7288 18.304 32.233 16.7999 34.0888 16.7999C35.9447 16.7999 37.4488 18.304 37.4488 20.1599V22.3999M37.4488 22.3999C37.4488 20.544 38.953 19.0399 40.8088 19.0399C42.6647 19.0399 44.1688 20.544 44.1688 22.3999V25.7599V24.5704C44.1688 22.7146 45.673 21.2104 47.5288 21.2104C49.3847 21.2104 50.8888 22.7146 50.8888 24.5704V35.8399C50.8888 45.1179 43.3669 52.6399 34.0888 52.6399C29.4498 52.6399 25.2498 50.7594 22.209 47.7197L10.1858 32.5795C9.12743 31.2467 9.23717 29.3327 10.4401 28.1287C11.7482 26.8205 13.8684 26.8205 15.1765 28.1287L19.9085 32.8607C21.4216 34.3738 24.0078 33.3019 24.0078 31.1627V25.7599V6.71986C24.0078 4.86402 25.5119 3.35986 27.3678 3.35986C29.2236 3.35986 30.7277 4.86402 30.7277 6.71986L30.7288 22.9999M37.4488 22.3999V23.9999" stroke="currentColor" stroke-width="1.5" stroke-miterlimit="10"/>
3
+ <path d="M6.1001 22.4001L18.4201 10.0801" stroke="currentColor" stroke-width="1.5" stroke-miterlimit="10"/>
4
+ <path d="M18.4199 14.5601V10.0801H13.9399" stroke="currentColor" stroke-width="1.5" stroke-miterlimit="10"/>
5
+ <path d="M6.1001 17.9199V22.3999H10.5801" stroke="currentColor" stroke-width="1.5" stroke-miterlimit="10"/>
6
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ class='w-4 h-4'
4
+ fill='currentColor'
5
+ viewBox='0 0 16 16'
6
+ >
7
+ <path d="M8 0a8 8 0 0 0-2.915 15.452c-.07-.633-.134-1.606.027-2.297.146-.625.938-3.977.938-3.977s-.239-.479-.239-1.187c0-1.113.645-1.943 1.448-1.943.682 0 1.012.512 1.012 1.127 0 .686-.437 1.712-.663 2.663-.188.796.4 1.446 1.185 1.446 1.422 0 2.515-1.5 2.515-3.664 0-1.915-1.377-3.254-3.342-3.254-2.276 0-3.612 1.707-3.612 3.471 0 .688.265 1.425.595 1.826a.24.24 0 0 1 .056.23c-.061.252-.196.796-.222.907-.035.146-.116.177-.268.107-1-.465-1.624-1.926-1.624-3.1 0-2.523 1.834-4.84 5.286-4.84 2.775 0 4.932 1.977 4.932 4.62 0 2.757-1.739 4.976-4.151 4.976-.811 0-1.573-.421-1.834-.919l-.498 1.902c-.181.695-.669 1.566-.995 2.097A8 8 0 1 0 8 0z"/>
8
+ </svg>
@@ -0,0 +1,17 @@
1
+ <%= tag.svg(
2
+ xmlns: 'http://www.w3.org/2000/svg',
3
+ width: 24,
4
+ height: 24,
5
+ viewBox: '0 0 24 24',
6
+ fill: 'none',
7
+ class: local_assigns[:class]
8
+ ) do %>
9
+ <%= tag.g(id: '24px/Plus') do %>
10
+ <%= tag.path(
11
+ id: 'Vector',
12
+ d: 'M4 11.986H20M12.0137 20V4',
13
+ stroke: 'currentColor',
14
+ stroke_width: 1.5
15
+ ) %>
16
+ <% end %>
17
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
2
+ <g clip-path="url(#clip0_5241_28433)">
3
+ <path d="M1 12C1 18.0751 5.92487 23 12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C8.57603 1 5.51745 2.56438 3.5 5.01738M3.5 5.01738L7 5M3.5 5.01738L3.5 1.5" stroke="currentColor" stroke-width="1.5"></path>
4
+ <path d="M12 11V17M12 11L17 9M12 11L7 9M12 17L17 15V9M12 17L7 15V9M17 9L12 7L7 9" stroke="currentColor" stroke-width="1.5"></path>
5
+ </g>
6
+ <defs>
7
+ <clipPath id="clip0_5241_28433">
8
+ <rect width="24" height="24" fill="white"/>
9
+ </clipPath>
10
+ </defs>
11
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='24'
4
+ height='24'
5
+ viewBox='0 0 24 24'
6
+ fill='none'>
7
+ <circle
8
+ cx="10.5"
9
+ cy="10.5"
10
+ r="8.75"
11
+ stroke="currentColor"
12
+ stroke-width="1.5" />
13
+ <path
14
+ d="M23 23L17 17"
15
+ stroke="currentColor"
16
+ stroke-width="1.5" />
17
+ </svg>
@@ -0,0 +1 @@
1
+ <span class="w-4 h-4 border-dotted border-[2px] inline-block rounded-full animate-[spin_2s_linear_infinite] border-current"></span>
@@ -0,0 +1,8 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ class='w-4 h-4'
4
+ fill='currentColor'
5
+ viewBox='0 0 16 16'
6
+ >
7
+ <path d="M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0zm3.669 11.538a.498.498 0 0 1-.686.165c-1.879-1.147-4.243-1.407-7.028-.77a.499.499 0 0 1-.222-.973c3.048-.696 5.662-.397 7.77.892a.5.5 0 0 1 .166.686zm.979-2.178a.624.624 0 0 1-.858.205c-2.15-1.321-5.428-1.704-7.972-.932a.625.625 0 0 1-.362-1.194c2.905-.881 6.517-.454 8.986 1.063a.624.624 0 0 1 .206.858zm.084-2.268C10.154 5.56 5.9 5.419 3.438 6.166a.748.748 0 1 1-.434-1.432c2.825-.857 7.523-.692 10.492 1.07a.747.747 0 1 1-.764 1.288z"/>
8
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='16'
4
+ height='16'
5
+ viewBox='0 0 16 16'
6
+ fill='currentColor'
7
+ >
8
+ <path d="M11.3817 0H8.68522V10.8985C8.68522 12.1971 7.64814 13.2638 6.35752 13.2638C5.0669 13.2638 4.0298 12.1971 4.0298 10.8985C4.0298 9.6232 5.04386 8.57969 6.28839 8.53333V5.79711C3.54582 5.84347 1.33334 8.09276 1.33334 10.8985C1.33334 13.7276 3.59191 16 6.38058 16C9.16919 16 11.4278 13.7044 11.4278 10.8985V5.31013C12.4418 6.05218 13.6863 6.49276 15 6.51596V3.77971C12.9719 3.71015 11.3817 2.04058 11.3817 0Z"/>
9
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='16'
4
+ height='16'
5
+ viewBox='0 0 16 16'
6
+ fill='currentColor'
7
+ >
8
+ <g clip-path="url(#clip0_193_2267)">
9
+ <path d="M5.03344 14.5C11.0697 14.5 14.3722 9.4978 14.3722 5.16124C14.3722 5.02062 14.3691 4.87687 14.3628 4.73624C15.0052 4.27164 15.5597 3.69617 16 3.03687C15.4017 3.30307 14.7664 3.47692 14.1159 3.55249C14.8009 3.14194 15.3137 2.49698 15.5594 1.73718C14.915 2.11904 14.2104 2.38841 13.4756 2.53374C12.9806 2.00771 12.326 1.65941 11.6131 1.5427C10.9003 1.42599 10.1688 1.54737 9.53183 1.88806C8.89486 2.22876 8.38787 2.7698 8.08923 3.42754C7.7906 4.08528 7.71695 4.82308 7.87969 5.52687C6.575 5.46139 5.29862 5.12247 4.13332 4.53207C2.96802 3.94166 1.9398 3.11296 1.11531 2.09968C0.696266 2.82216 0.568038 3.6771 0.756687 4.49073C0.945337 5.30436 1.43671 6.01563 2.13094 6.47999C1.60975 6.46344 1.09998 6.32312 0.64375 6.07061V6.11124C0.643283 6.86943 0.905399 7.60439 1.38554 8.19118C1.86568 8.77797 2.53422 9.18037 3.2775 9.32999C2.7947 9.46209 2.28799 9.48133 1.79656 9.38624C2.0063 10.0383 2.41438 10.6086 2.96385 11.0176C3.51331 11.4265 4.17675 11.6537 4.86156 11.6675C3.69895 12.5807 2.26278 13.0761 0.784375 13.0737C0.522191 13.0733 0.260266 13.0573 0 13.0256C1.5019 13.9892 3.24902 14.5009 5.03344 14.5Z"/>
10
+ </g>
11
+ <defs>
12
+ <clipPath id="clip0_193_2267">
13
+ <rect width="16" height="16" fill="white"/>
14
+ </clipPath>
15
+ </defs>
16
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ width='16'
4
+ height='16'
5
+ viewBox='0 0 16 16'
6
+ fill='currentColor'
7
+ >
8
+ <path d="M15.8406 4.8002C15.8406 4.8002 15.6844 3.69707 15.2031 3.2127C14.5938 2.5752 13.9125 2.57207 13.6 2.53457C11.3625 2.37207 8.00313 2.37207 8.00313 2.37207H7.99687C7.99687 2.37207 4.6375 2.37207 2.4 2.53457C2.0875 2.57207 1.40625 2.5752 0.796875 3.2127C0.315625 3.69707 0.1625 4.8002 0.1625 4.8002C0.1625 4.8002 0 6.09707 0 7.39082V8.60332C0 9.89707 0.159375 11.1939 0.159375 11.1939C0.159375 11.1939 0.315625 12.2971 0.79375 12.7814C1.40313 13.4189 2.20313 13.3971 2.55938 13.4658C3.84063 13.5877 8 13.6252 8 13.6252C8 13.6252 11.3625 13.6189 13.6 13.4596C13.9125 13.4221 14.5938 13.4189 15.2031 12.7814C15.6844 12.2971 15.8406 11.1939 15.8406 11.1939C15.8406 11.1939 16 9.90019 16 8.60332V7.39082C16 6.09707 15.8406 4.8002 15.8406 4.8002ZM6.34688 10.0752V5.57832L10.6687 7.83457L6.34688 10.0752Z"/>
9
+ </svg>
@@ -0,0 +1,10 @@
1
+ <svg
2
+ xmlns='http://www.w3.org/2000/svg'
3
+ fill='none'
4
+ viewBox='0 0 24 24'
5
+ stroke-width='1.5'
6
+ stroke='currentColor'
7
+ class='w-6 h-6'
8
+ >
9
+ <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM10.5 7.5v6m3-3h-6" />
10
+ </svg>