@shopify/cli-hydrogen 3.28.0 → 4.0.0-alpha.2

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 (614) hide show
  1. package/dist/commands/hydrogen/build.js +89 -0
  2. package/dist/commands/hydrogen/dev.js +116 -0
  3. package/dist/commands/hydrogen/init.js +42 -0
  4. package/dist/commands/hydrogen/preview.js +34 -0
  5. package/dist/hooks/init.js +21 -0
  6. package/dist/templates/demo-store/.cache/content-v2/sha512/00/cf/2691ba3b4253dc803282219fc108c6d7b3fb03e318729ee568216e8a13af36614948c5a215992ba7b5222cc1055cf81b6a752c3597e261a8c8095f55eb9d +1 -0
  7. package/dist/templates/demo-store/.cache/content-v2/sha512/02/76/13bbea15bb42b81a204b0dc5f14726e0bfa8d012a7b284f887cc2e3c92195d6b07a78f199f990b311ca5fafa9079563503cdd81808cd9b7e496d86c72732 +1 -0
  8. package/dist/templates/demo-store/.cache/content-v2/sha512/08/3c/f2108d415b1474e3e7fee6684b9f1c4b99249c5d4178686b1632d19209f6782c86d7b04abe3873d955bb9e353cca92d8ae7324f374eb691bfd8729ce8407 +1 -0
  9. package/dist/templates/demo-store/.cache/content-v2/sha512/0c/da/c6f091fb614d96e6d0a533733b487011ab615ad5983823c7085320ec2ea2ee8e020ae2646f4772d350f253abb4f8a2489c843a8b873a90bfed3c27c5fd0b +1 -0
  10. package/dist/templates/demo-store/.cache/content-v2/sha512/11/0c/195071c290a61e22dd825b300c9f93e5315b2effefc3e5545440ac704d629e177bc877333ce73232ac72703bcc69fb425632d84b3caefe7f5c0fd12537ee +1 -0
  11. package/dist/templates/demo-store/.cache/content-v2/sha512/17/08/03dabbacd40d4a2b132018a520d1dbcf29ffb2c659bbe01cb91f700202d5016ab4104831b95a05b98535549be4a6520ddcd6504ba361692549a5cd0458ee +1 -0
  12. package/dist/templates/demo-store/.cache/content-v2/sha512/25/f3/97b4dddda618ca4621d4a8da779269ba2f2eae1fc35cb0cc394e5fb909bb4825e10ca37a4115d69fdd5551be5d64bdb75e0bf0199794f473c25f4ae7aa1a +1 -0
  13. package/dist/templates/demo-store/.cache/content-v2/sha512/27/a0/d277ff364ced6a2d01639f1e2b8675ef95eff3a4aa4d2fda0990392526e0f18def66116a8623096d1bdafabe1dc8efc56ef0956054b3370dfa9ad6596a29 +1 -0
  14. package/dist/templates/demo-store/.cache/content-v2/sha512/28/53/96d2a5c3d4b08a7191e545d4d961f7690f814a331dc8efcc11e45854fbccd04f825ec8d3a1070b05aca51dd63e06c778316395446055cc3cfc90c8b30615 +1 -0
  15. package/dist/templates/demo-store/.cache/content-v2/sha512/28/7c/c71b0c6367bdf7307a8061fe1c4568c9f1e9603d835b6fc917fe8042535a867c37154e35376a01ad6bdb3c2d6f29b88b41902fd6f20b1227e02081682d01 +1 -0
  16. package/dist/templates/demo-store/.cache/content-v2/sha512/29/2e/db501d168869cc6b7d5e51bfbf399e920773ed905b9e2b782ebfb29c5260f05b67d0b7d4599e8c5666253789d545ecfdfdb9e020da8ac262d99d0e69e5b0 +1 -0
  17. package/dist/templates/demo-store/.cache/content-v2/sha512/2b/71/b06448186eeafe74e7e29de9fb188013acc513af9d0d4eeff66650385fce9f77f5f2ccea51806c8449cf25c7825ee4c3ac428822d4e3b8b3f1b010adb7aa +1 -0
  18. package/dist/templates/demo-store/.cache/content-v2/sha512/2d/e9/141465ed1c16a93073fe5602f300dc3d8a5246fe045abffa4ac277550e4b365c30629224f328540a36d470ef4d69d8f80d6aeadfbd4a07872a66c40143df +1 -0
  19. package/dist/templates/demo-store/.cache/content-v2/sha512/2d/ec/a65ff18546d88746d8d74b60cd34137005996ded9afd4877b74cba36e9a4dd1829992dbb37ec13b296f39cfeef462c6f12a4c6913577504fec6d7d5611aa +1 -0
  20. package/dist/templates/demo-store/.cache/content-v2/sha512/30/9f/f03a3dcdd3a5f1116ab710595deb552c1564bd8295bff71f62b3d95be656a6ef53e8ceaee21cbcb880cc06270c3db2327ab1ddef2fc09d6cba4436f470e7 +1 -0
  21. package/dist/templates/demo-store/.cache/content-v2/sha512/35/3c/f46f8adbcf210210bac8ab00267ab16c16393ab4a95920f69c4452b298a83c9785d3d2c2bb4a63937cb4eed028197a18f0d2929024ebae18b0751f07ebf5 +1 -0
  22. package/dist/templates/demo-store/.cache/content-v2/sha512/36/3e/ece5cc6633a23301aa4f05fc1efddd8876aec2d8bf7afe504526e2866ed67263e99bffbb1e0d99a65622a7246f9d662217032aca47f70b6f0f13b75e7df1 +1 -0
  23. package/dist/templates/demo-store/.cache/content-v2/sha512/37/19/de54f68ea7b2a79f86d12ec1107e99d04217817fb6de9a5ba2dc5cdd16d16e1dda4cc9f7cf2b6ece5a6330f47ca20fa27a08aeffc17eb23fd11399e601fd +1 -0
  24. package/dist/templates/demo-store/.cache/content-v2/sha512/46/04/af285aee74d96b28b24f75d7911de65e6c7bb26475ab5219fe5308028fda55060cf45650dfa09c0731ec73ece453c1e24e0c38715e8d4c5c80fd6365a1f4 +1 -0
  25. package/dist/templates/demo-store/.cache/content-v2/sha512/46/1c/c69c5b9150a9f76dff13c0d6a768540636e6569f4f3f56795d1b4c494045d5908674f292815212ac52e6d8a597b4ad35783506113f195a09f1057f09f00c +1 -0
  26. package/dist/templates/demo-store/.cache/content-v2/sha512/4b/48/ca635670e7d1b1a5550d32f51389a5754234da55c6d7c900f348c8bf1ccc84bdcefc620e08979b7aa1d04a49a1138b46346f126d20c0126eb0c3261deb5b +1 -0
  27. package/dist/templates/demo-store/.cache/content-v2/sha512/50/75/609ace481c5e148698b91afca04bd995ab360802c5f8961228eceb891236836cab54c7fddd97a62e4ca19a03e5863fd0999c68849cf37b30a4fe32e1397f +1 -0
  28. package/dist/templates/demo-store/.cache/content-v2/sha512/50/cd/4f809a5b4a52449879ecf0b061e00f36f5e2df284fddb5c9c75e13ab1db6e85931fb82d211f1699eed3fe308ffd5d2e69dc2d261fdea58f8224acc278143 +1 -0
  29. package/dist/templates/demo-store/.cache/content-v2/sha512/51/ab/e165384df6374c7b2d0ebebc8642ecb0e0c14f7c5b57970ec5d2e17f7d1643e0b01eda69e5ffbefde85ecba6d613bcc5175c5564e36bfb73d966c8ea4153 +1 -0
  30. package/dist/templates/demo-store/.cache/content-v2/sha512/54/86/917224aeb3e04e19a51534244f5ed28f3529d85276452f52af9af3657798246c97a0948bcf62c707394ab80f0062a87e7079bd71c05e0d16f927091617d2 +1 -0
  31. package/dist/templates/demo-store/.cache/content-v2/sha512/6a/9d/a99dc2fae7981ecb35b0dadc0acddd23e65ae6590f70743d824c36697fd10610ffafa9aa63c09a7861a701c1d52400050d9b562dc4f6bdba8e0de362b486 +1 -0
  32. package/dist/templates/demo-store/.cache/content-v2/sha512/6b/6d/71211d4cebfd1e1c86788ede5784a53cf366a85f4e2646a300c820958a5219bfa5492b169d1cca1b431e946b41d15a526ee7f77db65a6e730dead281f777 +1 -0
  33. package/dist/templates/demo-store/.cache/content-v2/sha512/6e/25/d2212e576c7d9684f5237bd1ee363dfe5cf0ad5f9acbeeded47a531c7d3444d2144684e310c8d4d4200ee5b142671bc2be887dc8d3244377d645813e048c +1 -0
  34. package/dist/templates/demo-store/.cache/content-v2/sha512/73/40/c822831f11f08a9ceea944d0145b072ba6164a3e2e75f98fda5437cda6dfddf9ca9450445c1f3236228d6259ac95e4cde9bb6e5996490ed00b7b13b06121 +1 -0
  35. package/dist/templates/demo-store/.cache/content-v2/sha512/73/4c/bf7dfa31c1d17f57e5fdabc0bd79ce133d3ea7562f494615c8bd4369b58c29963090577cd70c6ab2bb8af6ae92915ce20bb0bf1925cccb961aeeed9c8703 +1 -0
  36. package/dist/templates/demo-store/.cache/content-v2/sha512/7b/15/d1749be8fa73f2f123e5e9a0807f343cdfa14fd263f9073fe7cd73352b7318b976a43687096a06acbbed2a2f0f86119d45cdd1e9ad6d09208c06b6232db2 +1 -0
  37. package/dist/templates/demo-store/.cache/content-v2/sha512/88/76/d18fdfbb05293909609d42368642fc6da4bd138c5864ec2f721212b52e595b84ae46f48021ed3e6240edf443f78bdea557d56d700e3da848459ea3077a80 +1 -0
  38. package/dist/templates/demo-store/.cache/content-v2/sha512/8a/d1/ca384452cdc8a2fb92fa1c70a4db303dd5f9887475e0e4ddf4bc711b5ebceb684ba5fd8bf596c3d491ab8598bd52ffe20f98564f8110da0730f46f39e790 +1 -0
  39. package/dist/templates/demo-store/.cache/content-v2/sha512/8b/ae/5793cc875f8fa5fe744c72c07b09ead40386e23a89cb2b77957c61413eb4afc993f70eee071a00aeff74bfe63cfcd91385e45094338c0fc05aedaca91917 +1 -0
  40. package/dist/templates/demo-store/.cache/content-v2/sha512/8c/51/88e1fc4d8365cb6ad1a755e8bca81fbb64abb1c8ef08a8314471952910e0e29eadfa283d482233d500893a57b57470171ab98ebacb4b93780b37e7a87c93 +1 -0
  41. package/dist/templates/demo-store/.cache/content-v2/sha512/8f/81/8e238bb1d4654dcc554d661194c9415fe36dc6f20624dd26e47c0043f06ee69d1abd49947b11954508bfd01823fdf97a3ca9196521f05cb471473095c5c5 +1 -0
  42. package/dist/templates/demo-store/.cache/content-v2/sha512/91/39/2d6842760bb34dde16e9aad46162f546e8cab25d2440a69cb01bf4b2ed8fb3122490666d3eb9b70225259f7ed47e182bc6b83fe455647dde30d61cefa07d +1 -0
  43. package/dist/templates/demo-store/.cache/content-v2/sha512/91/ef/9fc44c6b88d8614b31058550efddfc49a43aeef50cf16d7ade5087e6b13c3f5ca743b1a10c72993a806db4ddf093c2216a853e0dbf6c002c61507e60bfee +1 -0
  44. package/dist/templates/demo-store/.cache/content-v2/sha512/93/6b/e60098157f6bff8ba570cab2ffd97a14983109006f7fa87e4432728366f96dfb19e957d28754daa45f1b6cb2421d26ab59bbd5ce5a448d6102e8e662403d +1 -0
  45. package/dist/templates/demo-store/.cache/content-v2/sha512/94/4a/a539de5a6348e4ecc4e05ea18301c0077a30ed452550660f8b13440a40f7e3858a03ef0aad25b559c49dbbe51455cc5d8e2a7b6c2b0c57e31875b5f8e6be +1 -0
  46. package/dist/templates/demo-store/.cache/content-v2/sha512/94/6b/572828348790e114213fd3502aba2781cdb87da48f9a16bc6c407d5e12ec888c3fd144f699f50c26934255feee621b2e81aa9156d1afd4e838698fd7be94 +1 -0
  47. package/dist/templates/demo-store/.cache/content-v2/sha512/9c/93/917e1b17263467c1baa4f0ef3e5f0a24cf28fc88f290532df19a48d5364d0ca64ef4b5296581cec1e94c5b9a896174e7dd67f42c44ab0482ecbbedf46b3a +1 -0
  48. package/dist/templates/demo-store/.cache/content-v2/sha512/9e/2e/945fdc4a4fb8c2186645c71b48ef341e6f0da2a6b3ddd38761210fcf713c2249160f87387ac66547fa30732269fbf9ad6b24b6c6a50ae914284b96be8571 +1 -0
  49. package/dist/templates/demo-store/.cache/content-v2/sha512/9f/e5/f8840af1702b9e2e9005708f2513779d889a88d8d7379d5d93cf28390fd6c0300ba5cac0fe429d67a22ddeb884f85917c73f4ae286328a5cf437f568b73f +1 -0
  50. package/dist/templates/demo-store/.cache/content-v2/sha512/a0/92/dc5bc315864cebde3ccd84e2a2e4228d8f467aa14efdcc3ef13b8815abbf495afeccb531cc4e049fe4d81d0b3e5afc0139b4450fb2cfca2b2c82cdd450ac +1 -0
  51. package/dist/templates/demo-store/.cache/content-v2/sha512/aa/85/daa1447b7715eafed15469bb5fdce67152d71416d2c40db224480ca151019a7ee86ea5b81ddeb85f7bdae453dab2021886ba63e85b0303ab20bc7b712ea4 +1 -0
  52. package/dist/templates/demo-store/.cache/content-v2/sha512/ad/44/f00b1b89c5d7778be4cd40cff421c77e97a937e945491777256fafa6ac80cc334b7118b4248fd13c3cb7fb37d86e1b54afaf688b295542694f276d359082 +1 -0
  53. package/dist/templates/demo-store/.cache/content-v2/sha512/b0/02/9ef55507e114e4391048df8e43101c006d5b3852e33450030d3ba974d438dd3ac489b084b15445ff5e1747e642eda2d969a13c8ba5a778669f9ab019789a +1 -0
  54. package/dist/templates/demo-store/.cache/content-v2/sha512/ba/08/9238d2f1bec0536eed757ab6583e384da966814a1c83896409f032bb673a056d62bb6f3b8a5bef36d61daf0e15617154b106b3bbc721354690bc930bb649 +1 -0
  55. package/dist/templates/demo-store/.cache/content-v2/sha512/bc/33/6e26ece5ac53d9eac9ac8a192ef39faf2a587a5808253c659fb1d371c477fc8074d428c8d1929b0d85dd1fec66fc79ea6b9fcb01507e2efec75fb7fbc2cc +1 -0
  56. package/dist/templates/demo-store/.cache/content-v2/sha512/be/33/7a64881c125a7ff913866bb1818d3fd54d10d837c5a66b6e8f39b9be9e12d352d060f365a62b070414995afb4e90ce70e3d0d31423e6f6fa4e02141e9e9d +1 -0
  57. package/dist/templates/demo-store/.cache/content-v2/sha512/c5/5a/e35359eb2d580bc01b459208e8911fb606223ae88c095db8174d0400824626bc8cf02c869c11d3b751774fafc52555243ed0ea6d6e3c072ef990a4f41461 +1 -0
  58. package/dist/templates/demo-store/.cache/content-v2/sha512/cd/6c/8525b5108666cbe3305a4ad413c0ea863878337b0621eaff9443c170e2f4afe6a0b0ece9ea5ee6777f37b483dede689e86734350430416bde47553bdaf7c +1 -0
  59. package/dist/templates/demo-store/.cache/content-v2/sha512/d4/79/8b69e57b3c37d1b04f2734fef377858aaa753467733fc2545b45556e0ae2d066c0180fa34c3a93b625db353ee070b82ad24f3b8dd2a2513aac4fcdc55154 +1 -0
  60. package/dist/templates/demo-store/.cache/content-v2/sha512/d5/f6/e56af7190da8a8ba31ae458ad2b1cbfc0cd10a449248348eb92dd8a7de2819c284525513e3082fcd3b1bfdddbe2135bda8bf827cef58bc95abb8a3c83278 +1 -0
  61. package/dist/templates/demo-store/.cache/content-v2/sha512/d7/9e/450b29d4cb47831fc3235642c3f4c461d3fb8f8c0ee567aeed2d51d3c0eb6d2e0cfabcf0dbe709ff99d3ba04ead42c75b06efe396aae4939163884cbfec5 +1 -0
  62. package/dist/templates/demo-store/.cache/content-v2/sha512/da/84/b6d27e02f9b109d7cff3095b08e2e2ed1802c8b6829c98f6e297d1c404059f8bacfdc278afd07e2f81cbc487318396a3775037b678ab6aff9a5231c94c0d +1 -0
  63. package/dist/templates/demo-store/.cache/content-v2/sha512/dc/0a/58f1301ab9de7b2c6b01d5d5b3676416048c9a42e4140ce4149d242da4d1d7b009bd9f911cf5860628ede86c7d30f4e827c502b8b4f365de6d7e7378ca94 +1 -0
  64. package/dist/templates/demo-store/.cache/content-v2/sha512/dd/b0/b95c68e126e3b0ceeb4c28f6d9cfd165597001d03c7287a9d2fe632cd166c442a578b55ddbb757b72202dcdd49586de80d54cb98ec439d0bd99c0023d6f6 +1 -0
  65. package/dist/templates/demo-store/.cache/content-v2/sha512/e2/6e/b769bab909900c19709f3779dde41268bd5bad463f233c1a4934aefc4af01ba532b0ec73776e874427e110710069e5c2c0aeb4debeef9827a21cc8d3364d +1 -0
  66. package/dist/templates/demo-store/.cache/content-v2/sha512/e8/ae/9b467e1d23913d4584d9417875b3cdc25f6dfed8b228f3a0c818129010b778aae1af1eb200b015ab428e79afe0ef1061262392fbdb96ed7da95efbe7f758 +1 -0
  67. package/dist/templates/demo-store/.cache/content-v2/sha512/ec/08/68aa37fb6cee7b8ad4e1c4ee9d352d626db39c1f6b1ed71530e5943d1575127e82f636bdab2fa00b90581c3829db9bf4d3ef4130024ef224c8a48b4d7df2 +1 -0
  68. package/dist/templates/demo-store/.cache/content-v2/sha512/ed/74/dda12abc4e0e3d645725a3b240b3874262c153ae37fe7a2991d5b6aa7564b5adf8080d262c0be4f841747ca359db51d58b004b7eed8330f27a739b9e3a46 +1 -0
  69. package/dist/templates/demo-store/.cache/content-v2/sha512/fd/f3/986b7ee5ea5ad1d89af5c08de69d43c025b54381092e0a19fd7e7a1e0352552aa85c056315ce5e11a46ec75a252b1a44e2083abb73cd6df8407dfdb0ac48 +1 -0
  70. package/dist/templates/demo-store/.cache/index-v5/06/7e/7376a38676aa7f0543ab03fc451602dab8ad66e6ddebc44d94ee6f5c1df2 +2 -0
  71. package/dist/templates/demo-store/.cache/index-v5/06/84/719070270981ac7d003eefa98569d499d2d93dd2f1828da9825b87d03160 +2 -0
  72. package/dist/templates/demo-store/.cache/index-v5/08/b4/0d9cf6db265587df0990c07ef4bc1e61fa9fe85d6cfe4d6cbbf839c2313c +2 -0
  73. package/dist/templates/demo-store/.cache/index-v5/09/f6/fe4b05c4157320b8b59b3f84116195be0437d87357d743d21acd638a4606 +2 -0
  74. package/dist/templates/demo-store/.cache/index-v5/0a/75/d3baf53012b62018cb60557f47601d810ec57c564bdc0b24c4990c73a833 +2 -0
  75. package/dist/templates/demo-store/.cache/index-v5/0c/43/721b2c2b054af973286c2ea3c51c612d347365682b5aae5b9e98554f91e1 +2 -0
  76. package/dist/templates/demo-store/.cache/index-v5/12/83/1a44e36774d9014fe186e18a3691e1ec3f37f2c30c22d38787a3cd157d7f +2 -0
  77. package/dist/templates/demo-store/.cache/index-v5/13/bd/14a326bd4cb6fb280eb85ecca60d6519738bf7e80df5285ec626d129baf3 +2 -0
  78. package/dist/templates/demo-store/.cache/index-v5/19/b1/b0877b4141a2ee6f7c173e2407c0b26958c0919238934a89a03049397aec +2 -0
  79. package/dist/templates/demo-store/.cache/index-v5/1b/6a/418ff1309326b48db3963d5ad40eacb0728d138b7f24896390e484b34c50 +2 -0
  80. package/dist/templates/demo-store/.cache/index-v5/24/d9/e0e8006f3c8deb17314475a674698161e207f116d9056bf0e1aabfa6c430 +2 -0
  81. package/dist/templates/demo-store/.cache/index-v5/28/f4/466108ec4c6619222c94f178cc3962ed49f5f9a1e3783ad55335de0cdad3 +2 -0
  82. package/dist/templates/demo-store/.cache/index-v5/2e/ae/45167cd92f49c852d660e05a29b7484c886b3c0579fb9c148162b1a88fb6 +2 -0
  83. package/dist/templates/demo-store/.cache/index-v5/35/95/be51ab071b6bd2259e4acb91185c5e0affeee223c15a822ba226607d5616 +2 -0
  84. package/dist/templates/demo-store/.cache/index-v5/36/74/12368a4a642be74c83dfdb5eaca244dc624ca78c3528edc49262807f9f96 +2 -0
  85. package/dist/templates/demo-store/.cache/index-v5/37/56/4cbfef349acf26ffb05aa7f17742913d7bd956c920a5bb1941ca0dda3a22 +2 -0
  86. package/dist/templates/demo-store/.cache/index-v5/3b/e5/5841b3445af43a34c7b560d6cf329ade1bfb64584b85fbb10ac4a7313ef4 +2 -0
  87. package/dist/templates/demo-store/.cache/index-v5/40/67/0807c50d176836338cf5fe4864622d377a143dc97f0a86a702bf11dd7d72 +2 -0
  88. package/dist/templates/demo-store/.cache/index-v5/45/4b/1a3af253b3e2ef123d3872ad54d71865cc788ff5373a00414d2ae0243421 +2 -0
  89. package/dist/templates/demo-store/.cache/index-v5/4f/8a/4672c73b9b76b90b7b378fbf9bc1a09426d0b5dbe97404e1f1f5a354013c +2 -0
  90. package/dist/templates/demo-store/.cache/index-v5/51/da/70f3331e7c62bab563cf9f86297b1bda6f6215420807d7710aaee0b8ca5d +2 -0
  91. package/dist/templates/demo-store/.cache/index-v5/55/0e/4666f091383137a5168d8052b246b3a7a28e05215dc7d8ff7f6b921f0142 +2 -0
  92. package/dist/templates/demo-store/.cache/index-v5/58/93/287077465c80a2bfba306f218e51893019895137562df4a116326a0b222a +2 -0
  93. package/dist/templates/demo-store/.cache/index-v5/61/d4/edd3f3713e7e144ff99d6920736fddfa8676eb5ab824f3f97cf65fa250ea +2 -0
  94. package/dist/templates/demo-store/.cache/index-v5/68/63/f781b7764101dfe1c192f68e1083513974e2396c9db609adf220a983bd88 +2 -0
  95. package/dist/templates/demo-store/.cache/index-v5/68/f1/4a98caa6e2ab43e78781b99c7833cab4e722cd716bf9718e001a43efb27b +2 -0
  96. package/dist/templates/demo-store/.cache/index-v5/7d/de/0d76288297eecd2ad4b07dd881631b481b19a83f7c9d36cfa4f967332943 +2 -0
  97. package/dist/templates/demo-store/.cache/index-v5/7e/12/528dc5a6aebfe1fb1d5b4b7d56097f25291dd9454e0ab8faa0a26f296815 +2 -0
  98. package/dist/templates/demo-store/.cache/index-v5/7e/bf/17c5f07b52df7946e14e733afa8f3880a40c1032bd3fb307cae4319e0fa8 +2 -0
  99. package/dist/templates/demo-store/.cache/index-v5/81/59/14da935263d86e18f99d2391d6731d29cd2d5c0d8c81c65293816e6ad32a +2 -0
  100. package/dist/templates/demo-store/.cache/index-v5/85/85/0475166b36ce12e75c5a6352b12ea2fa872f696b8161dd08fdfab09a7273 +2 -0
  101. package/dist/templates/demo-store/.cache/index-v5/88/bd/84904435de02c12b5b01c5aadd782e65a48d44006d98b864e01961a109dc +2 -0
  102. package/dist/templates/demo-store/.cache/index-v5/88/f6/729e4bad26ebd2b792dee6d1f96f87546ff9c4fa95518f603627fdd1126f +2 -0
  103. package/dist/templates/demo-store/.cache/index-v5/8a/7c/f5287da63fd3884889fef7019b2679f9a53ce5a268097295682ddad5131b +2 -0
  104. package/dist/templates/demo-store/.cache/index-v5/95/40/bed10ab9e6081915bc6dc1ffb23a589f407c22ab7d254453f0b3ce53e5f5 +2 -0
  105. package/dist/templates/demo-store/.cache/index-v5/96/b8/090abc56d6e9489d08af9564fb75d34477730aa1ece14ad85ba516549f2b +2 -0
  106. package/dist/templates/demo-store/.cache/index-v5/9b/e4/8aa4e95d52644490afdb862c05cb2dccb9f5c1aa45157f3af5c37aad080a +2 -0
  107. package/dist/templates/demo-store/.cache/index-v5/a1/e7/85ee850c85c329791d2123dd8231464fa27317290756b459012830d0f57e +2 -0
  108. package/dist/templates/demo-store/.cache/index-v5/a2/27/f2e299e50a8a3b2b54a89bb3be85f3118081b3c6cfed704bb7d2802e2a49 +2 -0
  109. package/dist/templates/demo-store/.cache/index-v5/a2/88/971871174c14875c70ca7bc9cea8d6b01465c1716d99440b059fa493947c +2 -0
  110. package/dist/templates/demo-store/.cache/index-v5/aa/57/05b67f08f71909d263fe9c357786097f5683394dbd65b0e4da2f9aa25288 +2 -0
  111. package/dist/templates/demo-store/.cache/index-v5/ac/25/d778b282ab78dbafcc1b4fb19695aed368081c76fa680140b89af08b07b1 +2 -0
  112. package/dist/templates/demo-store/.cache/index-v5/ad/f9/09a060689bb686417e37a22fcf4866b6188f58eff7128f7979a4a68a6b2d +2 -0
  113. package/dist/templates/demo-store/.cache/index-v5/af/79/e80586a8b4bd0086246d97823d95bd64c77ad44b1fae591fdcd3883f776e +2 -0
  114. package/dist/templates/demo-store/.cache/index-v5/b8/22/805af62bf21b63052b47f2f85322cb615ee786c214c0abc63b593a9f80ac +2 -0
  115. package/dist/templates/demo-store/.cache/index-v5/b8/67/17d551f86553b2a3a30c80b1d9797cbfcaa3d00f5239f39c1727c4d4fe8e +2 -0
  116. package/dist/templates/demo-store/.cache/index-v5/bc/52/538f70c9e2857f944f17c9121f6018d5c26ba916801b78d75484b130cd78 +2 -0
  117. package/dist/templates/demo-store/.cache/index-v5/c1/77/182e74b8e456fd321a98e8b23f5616eaf2968ccc0dd0eeff016624a89534 +2 -0
  118. package/dist/templates/demo-store/.cache/index-v5/c2/b6/58c9b05294374187ca9a342d46ed1b1f9e0afaf619acf88014f7f1a5dd8b +2 -0
  119. package/dist/templates/demo-store/.cache/index-v5/c6/72/887059f60c91b6fa41fbdab6bc1e1b6f4e3596cadd7a22457466fc1c2f67 +2 -0
  120. package/dist/templates/demo-store/.cache/index-v5/c8/52/09bfbca72b45aec745fc339c27986edefa85e40bd69113275a6ecd6495e9 +2 -0
  121. package/dist/templates/demo-store/.cache/index-v5/cb/f3/c8983d3f6b148ff6b70a42e0c3ccc4ca2f368df0aca086b8f0279d49f5be +2 -0
  122. package/dist/templates/demo-store/.cache/index-v5/d0/c4/d960260ece228d28f70e317741b3f3f3df05c53956d870235837ae2b73b4 +2 -0
  123. package/dist/templates/demo-store/.cache/index-v5/d2/7b/9476cfbc06c75a311a1951bcdea3b843d3f8763c916468901c3cd85ae7a4 +2 -0
  124. package/dist/templates/demo-store/.cache/index-v5/d7/2f/11fb6fd9a383d1edb40e2a774ca2de45a4f4b2c02e3f10d772427ef813d1 +2 -0
  125. package/dist/templates/demo-store/.cache/index-v5/d7/a8/e21243c97a68bff4874453358b21815d4dc4c804b63fce7cba9cc567c3d6 +2 -0
  126. package/dist/templates/demo-store/.cache/index-v5/db/34/e258d66ddeae0e8df2f3a92f0fc0a0472adc9b48c8d2f38087a828da4bc0 +2 -0
  127. package/dist/templates/demo-store/.cache/index-v5/de/8a/31224d2c63a17ccc13c25e35f4e5882c9a5f5553a3ffeb916c84aa73a15d +2 -0
  128. package/dist/templates/demo-store/.cache/index-v5/e0/9c/a50143959e2a05f23db12f6e7f9982a0889c4105004c9f58115f9fdb19e0 +2 -0
  129. package/dist/templates/demo-store/.cache/index-v5/f3/45/ed5a71628f7babbcd96f9d316ba1a9a7cdea5be1ef54d931ed5d6fcbfc21 +2 -0
  130. package/dist/templates/demo-store/.cache/index-v5/f4/20/fefac33b4499a27824ee7ef5a84779df38eca55b00ec3046fcb028efb593 +2 -0
  131. package/dist/templates/demo-store/.cache/index-v5/f6/1d/25c4d10714262d4559d2c43d3e64ebfc038d37b0edbbf02246bdd6dcdacb +2 -0
  132. package/dist/templates/demo-store/.cache/index-v5/f8/f2/017d33a8105299b5a1d72ea80b7cce0d4bafbcd8409437a212735325631a +2 -0
  133. package/dist/templates/demo-store/.cache/index-v5/fd/f2/f7f55dae9bf6b65ea883eb44dc2fd24a2d2a97c5b68cb559255c6574d239 +2 -0
  134. package/dist/templates/demo-store/.editorconfig +8 -0
  135. package/dist/templates/demo-store/.eslintignore +4 -0
  136. package/dist/templates/demo-store/.eslintrc.js +16 -0
  137. package/dist/templates/demo-store/.graphqlrc.yml +1 -0
  138. package/dist/templates/demo-store/.hydrogen/routes/[route-manifest.json].tsx +54 -0
  139. package/dist/templates/demo-store/.hydrogen/routes/admin.tsx +15 -0
  140. package/dist/templates/demo-store/.prettierignore +2 -0
  141. package/dist/templates/demo-store/_env +6 -0
  142. package/dist/templates/demo-store/_gitignore +14 -0
  143. package/dist/templates/demo-store/app/components/AccountAddressBook.tsx +97 -0
  144. package/dist/templates/demo-store/app/components/AccountDetails.tsx +41 -0
  145. package/dist/templates/demo-store/app/components/AddToCartButton.tsx +42 -0
  146. package/dist/templates/demo-store/app/components/Breadcrumbs.tsx +36 -0
  147. package/dist/templates/demo-store/app/components/Button.tsx +56 -0
  148. package/dist/templates/demo-store/app/components/Cart.tsx +431 -0
  149. package/dist/templates/demo-store/app/components/CartLoading.tsx +50 -0
  150. package/dist/templates/demo-store/app/components/CountrySelector.tsx +180 -0
  151. package/dist/templates/demo-store/app/components/Drawer.tsx +115 -0
  152. package/dist/templates/demo-store/app/components/FeaturedCollections.tsx +54 -0
  153. package/dist/templates/demo-store/app/components/FeaturedProducts.tsx +116 -0
  154. package/dist/templates/demo-store/app/components/FeaturedSection.tsx +39 -0
  155. package/dist/templates/demo-store/app/components/GenericError.tsx +58 -0
  156. package/dist/templates/demo-store/app/components/Grid.tsx +44 -0
  157. package/dist/templates/demo-store/app/components/Hero.tsx +136 -0
  158. package/dist/templates/demo-store/app/components/Icon.tsx +253 -0
  159. package/dist/templates/demo-store/app/components/Input.tsx +24 -0
  160. package/dist/templates/demo-store/app/components/Layout.tsx +492 -0
  161. package/dist/templates/demo-store/app/components/Link.tsx +46 -0
  162. package/dist/templates/demo-store/app/components/Modal.tsx +46 -0
  163. package/dist/templates/demo-store/app/components/NotFound.tsx +22 -0
  164. package/dist/templates/demo-store/app/components/OrderCard.tsx +85 -0
  165. package/dist/templates/demo-store/app/components/Pagination.tsx +277 -0
  166. package/dist/templates/demo-store/app/components/ProductCard.tsx +146 -0
  167. package/dist/templates/demo-store/app/components/ProductGallery.tsx +114 -0
  168. package/dist/templates/demo-store/app/components/ProductGrid.tsx +93 -0
  169. package/dist/templates/demo-store/app/components/ProductSwimlane.tsx +30 -0
  170. package/dist/templates/demo-store/app/components/Skeleton.tsx +24 -0
  171. package/dist/templates/demo-store/app/components/SortFilter.tsx +411 -0
  172. package/dist/templates/demo-store/app/components/Text.tsx +192 -0
  173. package/dist/templates/demo-store/app/components/index.ts +28 -0
  174. package/dist/templates/demo-store/app/data/countries.ts +194 -0
  175. package/dist/templates/demo-store/app/data/index.ts +1037 -0
  176. package/dist/templates/demo-store/app/entry.client.tsx +4 -0
  177. package/dist/templates/demo-store/app/entry.server.tsx +26 -0
  178. package/dist/templates/demo-store/app/hooks/useCartFetchers.tsx +14 -0
  179. package/dist/templates/demo-store/app/hooks/useIsHydrated.tsx +12 -0
  180. package/dist/templates/demo-store/app/lib/const.ts +10 -0
  181. package/dist/templates/demo-store/app/lib/placeholders.ts +242 -0
  182. package/dist/templates/demo-store/app/lib/seo/common.tsx +324 -0
  183. package/dist/templates/demo-store/app/lib/seo/debugger.tsx +175 -0
  184. package/dist/templates/demo-store/app/lib/seo/image.tsx +32 -0
  185. package/dist/templates/demo-store/app/lib/seo/index.ts +4 -0
  186. package/dist/templates/demo-store/app/lib/seo/seo.tsx +24 -0
  187. package/dist/templates/demo-store/app/lib/seo/types.ts +70 -0
  188. package/dist/templates/demo-store/app/lib/session.server.ts +57 -0
  189. package/dist/templates/demo-store/app/lib/type.ts +21 -0
  190. package/dist/templates/demo-store/app/lib/utils.ts +310 -0
  191. package/dist/templates/demo-store/app/root.tsx +282 -0
  192. package/dist/templates/demo-store/app/routes/$.tsx +7 -0
  193. package/dist/templates/demo-store/app/routes/$lang/$.tsx +1 -0
  194. package/dist/templates/demo-store/app/routes/$lang/[robots.txt].tsx +1 -0
  195. package/dist/templates/demo-store/app/routes/$lang/[sitemap.xml].tsx +1 -0
  196. package/dist/templates/demo-store/app/routes/$lang/account/__private/address/$id.tsx +1 -0
  197. package/dist/templates/demo-store/app/routes/$lang/account/__private/edit.tsx +1 -0
  198. package/dist/templates/demo-store/app/routes/$lang/account/__private/logout.ts +1 -0
  199. package/dist/templates/demo-store/app/routes/$lang/account/__private/orders.$id.tsx +1 -0
  200. package/dist/templates/demo-store/app/routes/$lang/account/__public/activate.$id.$activationToken.tsx +6 -0
  201. package/dist/templates/demo-store/app/routes/$lang/account/__public/login.tsx +7 -0
  202. package/dist/templates/demo-store/app/routes/$lang/account/__public/recover.tsx +1 -0
  203. package/dist/templates/demo-store/app/routes/$lang/account/__public/register.tsx +6 -0
  204. package/dist/templates/demo-store/app/routes/$lang/account/__public/reset.$id.$resetToken.tsx +5 -0
  205. package/dist/templates/demo-store/app/routes/$lang/account.tsx +1 -0
  206. package/dist/templates/demo-store/app/routes/$lang/api/countries.tsx +1 -0
  207. package/dist/templates/demo-store/app/routes/$lang/api/products.tsx +1 -0
  208. package/dist/templates/demo-store/app/routes/$lang/cart.tsx +1 -0
  209. package/dist/templates/demo-store/app/routes/$lang/collections/$collectionHandle.tsx +6 -0
  210. package/dist/templates/demo-store/app/routes/$lang/collections/all.tsx +1 -0
  211. package/dist/templates/demo-store/app/routes/$lang/collections/index.tsx +1 -0
  212. package/dist/templates/demo-store/app/routes/$lang/featured-products.tsx +1 -0
  213. package/dist/templates/demo-store/app/routes/$lang/index.tsx +7 -0
  214. package/dist/templates/demo-store/app/routes/$lang/journal/$journalHandle.tsx +7 -0
  215. package/dist/templates/demo-store/app/routes/$lang/journal/index.tsx +1 -0
  216. package/dist/templates/demo-store/app/routes/$lang/og-image.tsx +1 -0
  217. package/dist/templates/demo-store/app/routes/$lang/pages/$pageHandle.tsx +1 -0
  218. package/dist/templates/demo-store/app/routes/$lang/policies/$policyHandle.tsx +1 -0
  219. package/dist/templates/demo-store/app/routes/$lang/policies/index.tsx +1 -0
  220. package/dist/templates/demo-store/app/routes/$lang/products/$productHandle.tsx +6 -0
  221. package/dist/templates/demo-store/app/routes/$lang/products/index.tsx +1 -0
  222. package/dist/templates/demo-store/app/routes/$lang/search.tsx +6 -0
  223. package/dist/templates/demo-store/app/routes/[robots.txt].tsx +40 -0
  224. package/dist/templates/demo-store/app/routes/[sitemap.xml].tsx +198 -0
  225. package/dist/templates/demo-store/app/routes/account/__private/address/$id.tsx +320 -0
  226. package/dist/templates/demo-store/app/routes/account/__private/edit.tsx +273 -0
  227. package/dist/templates/demo-store/app/routes/account/__private/logout.ts +29 -0
  228. package/dist/templates/demo-store/app/routes/account/__private/orders.$id.tsx +324 -0
  229. package/dist/templates/demo-store/app/routes/account/__public/activate.$id.$activationToken.tsx +218 -0
  230. package/dist/templates/demo-store/app/routes/account/__public/login.tsx +197 -0
  231. package/dist/templates/demo-store/app/routes/account/__public/recover.tsx +144 -0
  232. package/dist/templates/demo-store/app/routes/account/__public/register.tsx +184 -0
  233. package/dist/templates/demo-store/app/routes/account/__public/reset.$id.$resetToken.tsx +214 -0
  234. package/dist/templates/demo-store/app/routes/account.tsx +191 -0
  235. package/dist/templates/demo-store/app/routes/api/countries.tsx +22 -0
  236. package/dist/templates/demo-store/app/routes/api/products.tsx +116 -0
  237. package/dist/templates/demo-store/app/routes/cart.tsx +498 -0
  238. package/dist/templates/demo-store/app/routes/collections/$collectionHandle.tsx +308 -0
  239. package/dist/templates/demo-store/app/routes/collections/all.tsx +5 -0
  240. package/dist/templates/demo-store/app/routes/collections/index.tsx +195 -0
  241. package/dist/templates/demo-store/app/routes/discounts.$code.tsx +60 -0
  242. package/dist/templates/demo-store/app/routes/featured-products.tsx +58 -0
  243. package/dist/templates/demo-store/app/routes/index.tsx +254 -0
  244. package/dist/templates/demo-store/app/routes/journal/$journalHandle.tsx +147 -0
  245. package/dist/templates/demo-store/app/routes/journal/index.tsx +150 -0
  246. package/dist/templates/demo-store/app/routes/og-image.tsx +19 -0
  247. package/dist/templates/demo-store/app/routes/pages/$pageHandle.tsx +82 -0
  248. package/dist/templates/demo-store/app/routes/policies/$policyHandle.tsx +117 -0
  249. package/dist/templates/demo-store/app/routes/policies/index.tsx +104 -0
  250. package/dist/templates/demo-store/app/routes/products/$productHandle.tsx +561 -0
  251. package/dist/templates/demo-store/app/routes/products/index.tsx +155 -0
  252. package/dist/templates/demo-store/app/routes/search.tsx +205 -0
  253. package/dist/templates/demo-store/app/styles/app.css +4203 -0
  254. package/dist/templates/demo-store/app/styles/custom-font.css +13 -0
  255. package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/[route-manifest.json]-BIPZTJVN.js +2 -0
  256. package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/[route-manifest.json]-BIPZTJVN.js.map +7 -0
  257. package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/admin-G2IKFE47.js +2 -0
  258. package/dist/templates/demo-store/dist/client/build/_.._/.hydrogen/routes/admin-G2IKFE47.js.map +7 -0
  259. package/dist/templates/demo-store/dist/client/build/_assets/app-QCTC5PWY.css +4203 -0
  260. package/dist/templates/demo-store/dist/client/build/_assets/custom-font-COCMVHUB.css +13 -0
  261. package/dist/templates/demo-store/dist/client/build/_assets/favicon-5FIZBM2K.svg +28 -0
  262. package/dist/templates/demo-store/dist/client/build/_shared/chunk-3CERGUQT.js +2 -0
  263. package/dist/templates/demo-store/dist/client/build/_shared/chunk-3CERGUQT.js.map +7 -0
  264. package/dist/templates/demo-store/dist/client/build/_shared/chunk-3RYZL4SD.js +2 -0
  265. package/dist/templates/demo-store/dist/client/build/_shared/chunk-3RYZL4SD.js.map +7 -0
  266. package/dist/templates/demo-store/dist/client/build/_shared/chunk-4GXS2URF.js +2 -0
  267. package/dist/templates/demo-store/dist/client/build/_shared/chunk-4GXS2URF.js.map +7 -0
  268. package/dist/templates/demo-store/dist/client/build/_shared/chunk-4ROFW2VH.js +2 -0
  269. package/dist/templates/demo-store/dist/client/build/_shared/chunk-4ROFW2VH.js.map +7 -0
  270. package/dist/templates/demo-store/dist/client/build/_shared/chunk-63VE24M5.js +133 -0
  271. package/dist/templates/demo-store/dist/client/build/_shared/chunk-63VE24M5.js.map +7 -0
  272. package/dist/templates/demo-store/dist/client/build/_shared/chunk-6IZ7NY57.js +2 -0
  273. package/dist/templates/demo-store/dist/client/build/_shared/chunk-6IZ7NY57.js.map +7 -0
  274. package/dist/templates/demo-store/dist/client/build/_shared/chunk-6RKYTPO7.js +27 -0
  275. package/dist/templates/demo-store/dist/client/build/_shared/chunk-6RKYTPO7.js.map +7 -0
  276. package/dist/templates/demo-store/dist/client/build/_shared/chunk-ALSZP6XO.js +83 -0
  277. package/dist/templates/demo-store/dist/client/build/_shared/chunk-ALSZP6XO.js.map +7 -0
  278. package/dist/templates/demo-store/dist/client/build/_shared/chunk-AOOMA6GB.js +2 -0
  279. package/dist/templates/demo-store/dist/client/build/_shared/chunk-AOOMA6GB.js.map +7 -0
  280. package/dist/templates/demo-store/dist/client/build/_shared/chunk-AYHDHSL7.js +2 -0
  281. package/dist/templates/demo-store/dist/client/build/_shared/chunk-AYHDHSL7.js.map +7 -0
  282. package/dist/templates/demo-store/dist/client/build/_shared/chunk-BY6S7IS7.js +2 -0
  283. package/dist/templates/demo-store/dist/client/build/_shared/chunk-BY6S7IS7.js.map +7 -0
  284. package/dist/templates/demo-store/dist/client/build/_shared/chunk-C4WAPTNR.js +2 -0
  285. package/dist/templates/demo-store/dist/client/build/_shared/chunk-C4WAPTNR.js.map +7 -0
  286. package/dist/templates/demo-store/dist/client/build/_shared/chunk-GV33UIO4.js +2 -0
  287. package/dist/templates/demo-store/dist/client/build/_shared/chunk-GV33UIO4.js.map +7 -0
  288. package/dist/templates/demo-store/dist/client/build/_shared/chunk-HX34UWFZ.js +7 -0
  289. package/dist/templates/demo-store/dist/client/build/_shared/chunk-HX34UWFZ.js.map +7 -0
  290. package/dist/templates/demo-store/dist/client/build/_shared/chunk-JV4GUPYG.js +2 -0
  291. package/dist/templates/demo-store/dist/client/build/_shared/chunk-JV4GUPYG.js.map +7 -0
  292. package/dist/templates/demo-store/dist/client/build/_shared/chunk-KSKV5IK6.js +20 -0
  293. package/dist/templates/demo-store/dist/client/build/_shared/chunk-KSKV5IK6.js.map +7 -0
  294. package/dist/templates/demo-store/dist/client/build/_shared/chunk-LNLOHMUB.js +32 -0
  295. package/dist/templates/demo-store/dist/client/build/_shared/chunk-LNLOHMUB.js.map +7 -0
  296. package/dist/templates/demo-store/dist/client/build/_shared/chunk-LSI6EG4I.js +2 -0
  297. package/dist/templates/demo-store/dist/client/build/_shared/chunk-LSI6EG4I.js.map +7 -0
  298. package/dist/templates/demo-store/dist/client/build/_shared/chunk-LYYN6DNQ.js +2 -0
  299. package/dist/templates/demo-store/dist/client/build/_shared/chunk-LYYN6DNQ.js.map +7 -0
  300. package/dist/templates/demo-store/dist/client/build/_shared/chunk-MIBUUBFO.js +2 -0
  301. package/dist/templates/demo-store/dist/client/build/_shared/chunk-MIBUUBFO.js.map +7 -0
  302. package/dist/templates/demo-store/dist/client/build/_shared/chunk-NJK6XHPK.js +2 -0
  303. package/dist/templates/demo-store/dist/client/build/_shared/chunk-NJK6XHPK.js.map +7 -0
  304. package/dist/templates/demo-store/dist/client/build/_shared/chunk-OC3377HQ.js +105 -0
  305. package/dist/templates/demo-store/dist/client/build/_shared/chunk-OC3377HQ.js.map +7 -0
  306. package/dist/templates/demo-store/dist/client/build/_shared/chunk-RBLOPOSG.js +2 -0
  307. package/dist/templates/demo-store/dist/client/build/_shared/chunk-RBLOPOSG.js.map +7 -0
  308. package/dist/templates/demo-store/dist/client/build/_shared/chunk-RTZIY6AR.js +68 -0
  309. package/dist/templates/demo-store/dist/client/build/_shared/chunk-RTZIY6AR.js.map +7 -0
  310. package/dist/templates/demo-store/dist/client/build/_shared/chunk-S4E36YX5.js +2 -0
  311. package/dist/templates/demo-store/dist/client/build/_shared/chunk-S4E36YX5.js.map +7 -0
  312. package/dist/templates/demo-store/dist/client/build/_shared/chunk-UCP7TDFX.js +24 -0
  313. package/dist/templates/demo-store/dist/client/build/_shared/chunk-UCP7TDFX.js.map +7 -0
  314. package/dist/templates/demo-store/dist/client/build/_shared/chunk-V5EUNG45.js +25 -0
  315. package/dist/templates/demo-store/dist/client/build/_shared/chunk-V5EUNG45.js.map +7 -0
  316. package/dist/templates/demo-store/dist/client/build/_shared/chunk-WYHUKY3H.js +2 -0
  317. package/dist/templates/demo-store/dist/client/build/_shared/chunk-WYHUKY3H.js.map +7 -0
  318. package/dist/templates/demo-store/dist/client/build/_shared/chunk-X2L7EU2T.js +2 -0
  319. package/dist/templates/demo-store/dist/client/build/_shared/chunk-X2L7EU2T.js.map +7 -0
  320. package/dist/templates/demo-store/dist/client/build/_shared/chunk-X4LCECW4.js +2 -0
  321. package/dist/templates/demo-store/dist/client/build/_shared/chunk-X4LCECW4.js.map +7 -0
  322. package/dist/templates/demo-store/dist/client/build/_shared/chunk-XDBJQDOE.js +2 -0
  323. package/dist/templates/demo-store/dist/client/build/_shared/chunk-XDBJQDOE.js.map +7 -0
  324. package/dist/templates/demo-store/dist/client/build/_shared/chunk-XJLYC4WF.js +54 -0
  325. package/dist/templates/demo-store/dist/client/build/_shared/chunk-XJLYC4WF.js.map +7 -0
  326. package/dist/templates/demo-store/dist/client/build/_shared/chunk-YGLSE5Z5.js +2 -0
  327. package/dist/templates/demo-store/dist/client/build/_shared/chunk-YGLSE5Z5.js.map +7 -0
  328. package/dist/templates/demo-store/dist/client/build/_shared/chunk-ZNLABNO4.js +66 -0
  329. package/dist/templates/demo-store/dist/client/build/_shared/chunk-ZNLABNO4.js.map +7 -0
  330. package/dist/templates/demo-store/dist/client/build/entry.client-UGG4BFNY.js +2 -0
  331. package/dist/templates/demo-store/dist/client/build/entry.client-UGG4BFNY.js.map +7 -0
  332. package/dist/templates/demo-store/dist/client/build/manifest-78BD90E6.js +1 -0
  333. package/dist/templates/demo-store/dist/client/build/root-LDM5SSFY.js +32 -0
  334. package/dist/templates/demo-store/dist/client/build/root-LDM5SSFY.js.map +7 -0
  335. package/dist/templates/demo-store/dist/client/build/routes/$-T6CCBQXB.js +2 -0
  336. package/dist/templates/demo-store/dist/client/build/routes/$-T6CCBQXB.js.map +7 -0
  337. package/dist/templates/demo-store/dist/client/build/routes/$lang/$-RML44FPI.js +2 -0
  338. package/dist/templates/demo-store/dist/client/build/routes/$lang/$-RML44FPI.js.map +7 -0
  339. package/dist/templates/demo-store/dist/client/build/routes/$lang/[robots.txt]-Q6A4ELVO.js +2 -0
  340. package/dist/templates/demo-store/dist/client/build/routes/$lang/[robots.txt]-Q6A4ELVO.js.map +7 -0
  341. package/dist/templates/demo-store/dist/client/build/routes/$lang/[sitemap.xml]-XRXAWWFM.js +2 -0
  342. package/dist/templates/demo-store/dist/client/build/routes/$lang/[sitemap.xml]-XRXAWWFM.js.map +7 -0
  343. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/address/$id-3CPMYDWB.js +2 -0
  344. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/address/$id-3CPMYDWB.js.map +7 -0
  345. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/edit-KUSSPNLG.js +2 -0
  346. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/edit-KUSSPNLG.js.map +7 -0
  347. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/logout-W2VRZWGS.js +2 -0
  348. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/logout-W2VRZWGS.js.map +7 -0
  349. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/orders.$id-6XB7QE3Z.js +2 -0
  350. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__private/orders.$id-6XB7QE3Z.js.map +7 -0
  351. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/activate.$id.$activationToken-XURZGKY5.js +2 -0
  352. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/activate.$id.$activationToken-XURZGKY5.js.map +7 -0
  353. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/login-ICCBTETC.js +2 -0
  354. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/login-ICCBTETC.js.map +7 -0
  355. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/recover-NCBS3PRT.js +2 -0
  356. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/recover-NCBS3PRT.js.map +7 -0
  357. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/register-OQDSIXDB.js +2 -0
  358. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/register-OQDSIXDB.js.map +7 -0
  359. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/reset.$id.$resetToken-BC773EWT.js +2 -0
  360. package/dist/templates/demo-store/dist/client/build/routes/$lang/account/__public/reset.$id.$resetToken-BC773EWT.js.map +7 -0
  361. package/dist/templates/demo-store/dist/client/build/routes/$lang/account-UCAHSQYN.js +2 -0
  362. package/dist/templates/demo-store/dist/client/build/routes/$lang/account-UCAHSQYN.js.map +7 -0
  363. package/dist/templates/demo-store/dist/client/build/routes/$lang/api/countries-D74K7HOY.js +2 -0
  364. package/dist/templates/demo-store/dist/client/build/routes/$lang/api/countries-D74K7HOY.js.map +7 -0
  365. package/dist/templates/demo-store/dist/client/build/routes/$lang/api/products-LVMWKMBH.js +2 -0
  366. package/dist/templates/demo-store/dist/client/build/routes/$lang/api/products-LVMWKMBH.js.map +7 -0
  367. package/dist/templates/demo-store/dist/client/build/routes/$lang/cart-UVXZT4M5.js +2 -0
  368. package/dist/templates/demo-store/dist/client/build/routes/$lang/cart-UVXZT4M5.js.map +7 -0
  369. package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/$collectionHandle-IXHYLA76.js +2 -0
  370. package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/$collectionHandle-IXHYLA76.js.map +7 -0
  371. package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/all-I3ZQ3MBD.js +2 -0
  372. package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/all-I3ZQ3MBD.js.map +7 -0
  373. package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/index-LFW7EEWJ.js +2 -0
  374. package/dist/templates/demo-store/dist/client/build/routes/$lang/collections/index-LFW7EEWJ.js.map +7 -0
  375. package/dist/templates/demo-store/dist/client/build/routes/$lang/featured-products-UU24CXMU.js +2 -0
  376. package/dist/templates/demo-store/dist/client/build/routes/$lang/featured-products-UU24CXMU.js.map +7 -0
  377. package/dist/templates/demo-store/dist/client/build/routes/$lang/index-C53BLYRE.js +2 -0
  378. package/dist/templates/demo-store/dist/client/build/routes/$lang/index-C53BLYRE.js.map +7 -0
  379. package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/$journalHandle-JIHENEIT.js +2 -0
  380. package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/$journalHandle-JIHENEIT.js.map +7 -0
  381. package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/index-Y3BHQBEG.js +2 -0
  382. package/dist/templates/demo-store/dist/client/build/routes/$lang/journal/index-Y3BHQBEG.js.map +7 -0
  383. package/dist/templates/demo-store/dist/client/build/routes/$lang/og-image-JHBOIC2Z.js +2 -0
  384. package/dist/templates/demo-store/dist/client/build/routes/$lang/og-image-JHBOIC2Z.js.map +7 -0
  385. package/dist/templates/demo-store/dist/client/build/routes/$lang/pages/$pageHandle-UAXAZ3DG.js +2 -0
  386. package/dist/templates/demo-store/dist/client/build/routes/$lang/pages/$pageHandle-UAXAZ3DG.js.map +7 -0
  387. package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/$policyHandle-6OJWYHRC.js +2 -0
  388. package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/$policyHandle-6OJWYHRC.js.map +7 -0
  389. package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/index-NSX5XJI5.js +2 -0
  390. package/dist/templates/demo-store/dist/client/build/routes/$lang/policies/index-NSX5XJI5.js.map +7 -0
  391. package/dist/templates/demo-store/dist/client/build/routes/$lang/products/$productHandle-2Y4OD7YF.js +2 -0
  392. package/dist/templates/demo-store/dist/client/build/routes/$lang/products/$productHandle-2Y4OD7YF.js.map +7 -0
  393. package/dist/templates/demo-store/dist/client/build/routes/$lang/products/index-7DNEY6RA.js +2 -0
  394. package/dist/templates/demo-store/dist/client/build/routes/$lang/products/index-7DNEY6RA.js.map +7 -0
  395. package/dist/templates/demo-store/dist/client/build/routes/$lang/search-FFWHIHND.js +2 -0
  396. package/dist/templates/demo-store/dist/client/build/routes/$lang/search-FFWHIHND.js.map +7 -0
  397. package/dist/templates/demo-store/dist/client/build/routes/[robots.txt]-JOBE7OD7.js +2 -0
  398. package/dist/templates/demo-store/dist/client/build/routes/[robots.txt]-JOBE7OD7.js.map +7 -0
  399. package/dist/templates/demo-store/dist/client/build/routes/[sitemap.xml]-UQB7RN5M.js +2 -0
  400. package/dist/templates/demo-store/dist/client/build/routes/[sitemap.xml]-UQB7RN5M.js.map +7 -0
  401. package/dist/templates/demo-store/dist/client/build/routes/account/__private/address/$id-7UWEFJPQ.js +2 -0
  402. package/dist/templates/demo-store/dist/client/build/routes/account/__private/address/$id-7UWEFJPQ.js.map +7 -0
  403. package/dist/templates/demo-store/dist/client/build/routes/account/__private/edit-P6H3SMMC.js +2 -0
  404. package/dist/templates/demo-store/dist/client/build/routes/account/__private/edit-P6H3SMMC.js.map +7 -0
  405. package/dist/templates/demo-store/dist/client/build/routes/account/__private/logout-MRH6DVPZ.js +2 -0
  406. package/dist/templates/demo-store/dist/client/build/routes/account/__private/logout-MRH6DVPZ.js.map +7 -0
  407. package/dist/templates/demo-store/dist/client/build/routes/account/__private/orders.$id-WRZR7KFX.js +2 -0
  408. package/dist/templates/demo-store/dist/client/build/routes/account/__private/orders.$id-WRZR7KFX.js.map +7 -0
  409. package/dist/templates/demo-store/dist/client/build/routes/account/__public/activate.$id.$activationToken-MQJ7UCXL.js +2 -0
  410. package/dist/templates/demo-store/dist/client/build/routes/account/__public/activate.$id.$activationToken-MQJ7UCXL.js.map +7 -0
  411. package/dist/templates/demo-store/dist/client/build/routes/account/__public/login-PV6QK5VR.js +2 -0
  412. package/dist/templates/demo-store/dist/client/build/routes/account/__public/login-PV6QK5VR.js.map +7 -0
  413. package/dist/templates/demo-store/dist/client/build/routes/account/__public/recover-BPPSDCFU.js +2 -0
  414. package/dist/templates/demo-store/dist/client/build/routes/account/__public/recover-BPPSDCFU.js.map +7 -0
  415. package/dist/templates/demo-store/dist/client/build/routes/account/__public/register-FOWQ2VDD.js +2 -0
  416. package/dist/templates/demo-store/dist/client/build/routes/account/__public/register-FOWQ2VDD.js.map +7 -0
  417. package/dist/templates/demo-store/dist/client/build/routes/account/__public/reset.$id.$resetToken-HEH66LNH.js +2 -0
  418. package/dist/templates/demo-store/dist/client/build/routes/account/__public/reset.$id.$resetToken-HEH66LNH.js.map +7 -0
  419. package/dist/templates/demo-store/dist/client/build/routes/account-OVETQ7UE.js +2 -0
  420. package/dist/templates/demo-store/dist/client/build/routes/account-OVETQ7UE.js.map +7 -0
  421. package/dist/templates/demo-store/dist/client/build/routes/api/countries-FOQSZPCF.js +2 -0
  422. package/dist/templates/demo-store/dist/client/build/routes/api/countries-FOQSZPCF.js.map +7 -0
  423. package/dist/templates/demo-store/dist/client/build/routes/api/products-JQONOX4V.js +2 -0
  424. package/dist/templates/demo-store/dist/client/build/routes/api/products-JQONOX4V.js.map +7 -0
  425. package/dist/templates/demo-store/dist/client/build/routes/cart-CX5DA2OD.js +2 -0
  426. package/dist/templates/demo-store/dist/client/build/routes/cart-CX5DA2OD.js.map +7 -0
  427. package/dist/templates/demo-store/dist/client/build/routes/collections/$collectionHandle-S6W3L6G5.js +2 -0
  428. package/dist/templates/demo-store/dist/client/build/routes/collections/$collectionHandle-S6W3L6G5.js.map +7 -0
  429. package/dist/templates/demo-store/dist/client/build/routes/collections/all-EXLOY5Y6.js +2 -0
  430. package/dist/templates/demo-store/dist/client/build/routes/collections/all-EXLOY5Y6.js.map +7 -0
  431. package/dist/templates/demo-store/dist/client/build/routes/collections/index-LE6BMYRV.js +2 -0
  432. package/dist/templates/demo-store/dist/client/build/routes/collections/index-LE6BMYRV.js.map +7 -0
  433. package/dist/templates/demo-store/dist/client/build/routes/discounts.$code-ORRT2Y6X.js +2 -0
  434. package/dist/templates/demo-store/dist/client/build/routes/discounts.$code-ORRT2Y6X.js.map +7 -0
  435. package/dist/templates/demo-store/dist/client/build/routes/featured-products-ECR7IJXB.js +2 -0
  436. package/dist/templates/demo-store/dist/client/build/routes/featured-products-ECR7IJXB.js.map +7 -0
  437. package/dist/templates/demo-store/dist/client/build/routes/index-DPGHJVAI.js +2 -0
  438. package/dist/templates/demo-store/dist/client/build/routes/index-DPGHJVAI.js.map +7 -0
  439. package/dist/templates/demo-store/dist/client/build/routes/journal/$journalHandle-GK4XP5IH.js +2 -0
  440. package/dist/templates/demo-store/dist/client/build/routes/journal/$journalHandle-GK4XP5IH.js.map +7 -0
  441. package/dist/templates/demo-store/dist/client/build/routes/journal/index-DZH346LQ.js +2 -0
  442. package/dist/templates/demo-store/dist/client/build/routes/journal/index-DZH346LQ.js.map +7 -0
  443. package/dist/templates/demo-store/dist/client/build/routes/og-image-DYICG2WR.js +2 -0
  444. package/dist/templates/demo-store/dist/client/build/routes/og-image-DYICG2WR.js.map +7 -0
  445. package/dist/templates/demo-store/dist/client/build/routes/pages/$pageHandle-FSWWJUZK.js +2 -0
  446. package/dist/templates/demo-store/dist/client/build/routes/pages/$pageHandle-FSWWJUZK.js.map +7 -0
  447. package/dist/templates/demo-store/dist/client/build/routes/policies/$policyHandle-U2LKNOPS.js +2 -0
  448. package/dist/templates/demo-store/dist/client/build/routes/policies/$policyHandle-U2LKNOPS.js.map +7 -0
  449. package/dist/templates/demo-store/dist/client/build/routes/policies/index-OHYNKKT6.js +2 -0
  450. package/dist/templates/demo-store/dist/client/build/routes/policies/index-OHYNKKT6.js.map +7 -0
  451. package/dist/templates/demo-store/dist/client/build/routes/products/$productHandle-UNLU3NW6.js +2 -0
  452. package/dist/templates/demo-store/dist/client/build/routes/products/$productHandle-UNLU3NW6.js.map +7 -0
  453. package/dist/templates/demo-store/dist/client/build/routes/products/index-XFDNNZYK.js +2 -0
  454. package/dist/templates/demo-store/dist/client/build/routes/products/index-XFDNNZYK.js.map +7 -0
  455. package/dist/templates/demo-store/dist/client/build/routes/search-KWI45NMS.js +2 -0
  456. package/dist/templates/demo-store/dist/client/build/routes/search-KWI45NMS.js.map +7 -0
  457. package/dist/templates/demo-store/dist/client/favicon.svg +28 -0
  458. package/dist/templates/demo-store/dist/client/fonts/IBMPlexSerif-Text.woff2 +0 -0
  459. package/dist/templates/demo-store/dist/client/fonts/IBMPlexSerif-TextItalic.woff2 +0 -0
  460. package/dist/templates/demo-store/dist/worker/_assets/app-QCTC5PWY.css +4203 -0
  461. package/dist/templates/demo-store/dist/worker/_assets/custom-font-COCMVHUB.css +13 -0
  462. package/dist/templates/demo-store/dist/worker/_assets/favicon-5FIZBM2K.svg +28 -0
  463. package/dist/templates/demo-store/dist/worker/index.js +1572 -0
  464. package/dist/templates/demo-store/dist/worker/index.js.map +7 -0
  465. package/dist/templates/demo-store/package.json +67 -0
  466. package/dist/templates/demo-store/playwright.config.ts +109 -0
  467. package/dist/templates/demo-store/postcss.config.js +10 -0
  468. package/dist/templates/demo-store/public/favicon.svg +28 -0
  469. package/dist/templates/demo-store/public/fonts/IBMPlexSerif-Text.woff2 +0 -0
  470. package/dist/templates/demo-store/public/fonts/IBMPlexSerif-TextItalic.woff2 +0 -0
  471. package/dist/templates/demo-store/remix.config.js +12 -0
  472. package/dist/templates/demo-store/remix.env.d.ts +34 -0
  473. package/dist/templates/demo-store/remix.init/index.mjs +25 -0
  474. package/dist/templates/demo-store/remix.init/package.json +7 -0
  475. package/dist/templates/demo-store/server.ts +87 -0
  476. package/dist/templates/demo-store/styles/app.css +182 -0
  477. package/dist/templates/demo-store/tailwind.config.js +70 -0
  478. package/dist/templates/demo-store/tests/cart.test.ts +70 -0
  479. package/dist/templates/demo-store/tests/seo.test.ts +36 -0
  480. package/dist/templates/demo-store/tests/utils.ts +100 -0
  481. package/dist/templates/demo-store/tsconfig.json +26 -0
  482. package/dist/templates/hello-world/.cache/content-v2/sha512/34/81/da34a44efefe809149ec1298fc4031563cb2702c00c70fbd1d0392afa44e5a6bc535cbe5c34a6f379361a5991327c2023fb915b0f94940d21c42cc38a368 +1 -0
  483. package/dist/templates/hello-world/.cache/content-v2/sha512/fa/dd/9bc10a1cb1f145eabd96bdba509178e20484197fefd8469ace9f53bf277e875751db3c4dddf229807c48cbe8db19494fe2a5aab7d2a4b7ae8bebbd67509c +1 -0
  484. package/dist/templates/hello-world/.cache/index-v5/09/f6/fe4b05c4157320b8b59b3f84116195be0437d87357d743d21acd638a4606 +2 -0
  485. package/dist/templates/hello-world/.cache/index-v5/d0/c4/d960260ece228d28f70e317741b3f3f3df05c53956d870235837ae2b73b4 +2 -0
  486. package/dist/templates/hello-world/.eslintignore +4 -0
  487. package/dist/templates/hello-world/.eslintrc.js +6 -0
  488. package/dist/templates/hello-world/.graphqlrc.yml +1 -0
  489. package/dist/templates/hello-world/README.md +20 -0
  490. package/dist/templates/hello-world/_env +6 -0
  491. package/dist/templates/hello-world/_gitignore +8 -0
  492. package/dist/templates/hello-world/app/components/Layout.tsx +15 -0
  493. package/dist/templates/hello-world/app/components/index.ts +1 -0
  494. package/dist/templates/hello-world/app/entry.client.tsx +4 -0
  495. package/dist/templates/hello-world/app/entry.server.tsx +21 -0
  496. package/dist/templates/hello-world/app/root.tsx +212 -0
  497. package/dist/templates/hello-world/app/routes/index.tsx +7 -0
  498. package/dist/templates/hello-world/app/styles/app.css +38 -0
  499. package/dist/templates/hello-world/dist/client/build/_assets/app-2MJQXVFI.css +38 -0
  500. package/dist/templates/hello-world/dist/client/build/_assets/favicon-5FIZBM2K.svg +28 -0
  501. package/dist/templates/hello-world/dist/client/build/_shared/chunk-P5MXKSMH.js +66 -0
  502. package/dist/templates/hello-world/dist/client/build/_shared/chunk-P5MXKSMH.js.map +7 -0
  503. package/dist/templates/hello-world/dist/client/build/_shared/chunk-UFW4O55J.js +20 -0
  504. package/dist/templates/hello-world/dist/client/build/_shared/chunk-UFW4O55J.js.map +7 -0
  505. package/dist/templates/hello-world/dist/client/build/entry.client-AX7FWGNS.js +27 -0
  506. package/dist/templates/hello-world/dist/client/build/entry.client-AX7FWGNS.js.map +7 -0
  507. package/dist/templates/hello-world/dist/client/build/manifest-7F090344.js +1 -0
  508. package/dist/templates/hello-world/dist/client/build/root-IVDOAS2B.js +2 -0
  509. package/dist/templates/hello-world/dist/client/build/root-IVDOAS2B.js.map +7 -0
  510. package/dist/templates/hello-world/dist/client/build/routes/index-TUNWZ4RV.js +2 -0
  511. package/dist/templates/hello-world/dist/client/build/routes/index-TUNWZ4RV.js.map +7 -0
  512. package/dist/templates/hello-world/dist/client/favicon.svg +28 -0
  513. package/dist/templates/hello-world/dist/worker/_assets/app-2MJQXVFI.css +38 -0
  514. package/dist/templates/hello-world/dist/worker/_assets/favicon-5FIZBM2K.svg +28 -0
  515. package/dist/templates/hello-world/dist/worker/index.js +257 -0
  516. package/dist/templates/hello-world/dist/worker/index.js.map +7 -0
  517. package/dist/templates/hello-world/package.json +41 -0
  518. package/dist/templates/hello-world/public/favicon.svg +28 -0
  519. package/dist/templates/hello-world/remix.env.d.ts +29 -0
  520. package/dist/templates/hello-world/remix.init/index.mjs +25 -0
  521. package/dist/templates/hello-world/remix.init/package.json +7 -0
  522. package/dist/templates/hello-world/server.ts +127 -0
  523. package/dist/templates/hello-world/tsconfig.json +25 -0
  524. package/dist/utils/config.js +81 -0
  525. package/dist/utils/flags.js +15 -0
  526. package/dist/utils/log.js +20 -0
  527. package/dist/utils/mini-oxygen.js +70 -0
  528. package/package.json +27 -64
  529. package/tmp-create-app.mjs +35 -0
  530. package/LICENSE +0 -8
  531. package/README.md +0 -63
  532. package/dist/cli/commands/hydrogen/add/eslint.d.ts +0 -11
  533. package/dist/cli/commands/hydrogen/add/eslint.js +0 -26
  534. package/dist/cli/commands/hydrogen/add/eslint.js.map +0 -1
  535. package/dist/cli/commands/hydrogen/add/tailwind.d.ts +0 -11
  536. package/dist/cli/commands/hydrogen/add/tailwind.js +0 -26
  537. package/dist/cli/commands/hydrogen/add/tailwind.js.map +0 -1
  538. package/dist/cli/commands/hydrogen/build.d.ts +0 -14
  539. package/dist/cli/commands/hydrogen/build.js +0 -49
  540. package/dist/cli/commands/hydrogen/build.js.map +0 -1
  541. package/dist/cli/commands/hydrogen/deploy.d.ts +0 -19
  542. package/dist/cli/commands/hydrogen/deploy.js +0 -58
  543. package/dist/cli/commands/hydrogen/deploy.js.map +0 -1
  544. package/dist/cli/commands/hydrogen/dev.d.ts +0 -13
  545. package/dist/cli/commands/hydrogen/dev.js +0 -31
  546. package/dist/cli/commands/hydrogen/dev.js.map +0 -1
  547. package/dist/cli/commands/hydrogen/info.d.ts +0 -12
  548. package/dist/cli/commands/hydrogen/info.js +0 -28
  549. package/dist/cli/commands/hydrogen/info.js.map +0 -1
  550. package/dist/cli/commands/hydrogen/preview.d.ts +0 -13
  551. package/dist/cli/commands/hydrogen/preview.js +0 -46
  552. package/dist/cli/commands/hydrogen/preview.js.map +0 -1
  553. package/dist/cli/constants.d.ts +0 -15
  554. package/dist/cli/constants.js +0 -16
  555. package/dist/cli/constants.js.map +0 -1
  556. package/dist/cli/flags.d.ts +0 -4
  557. package/dist/cli/flags.js +0 -16
  558. package/dist/cli/flags.js.map +0 -1
  559. package/dist/cli/models/hydrogen.d.ts +0 -22
  560. package/dist/cli/models/hydrogen.js +0 -82
  561. package/dist/cli/models/hydrogen.js.map +0 -1
  562. package/dist/cli/prompts/git-init.d.ts +0 -1
  563. package/dist/cli/prompts/git-init.js +0 -16
  564. package/dist/cli/prompts/git-init.js.map +0 -1
  565. package/dist/cli/services/build/check-lockfile.d.ts +0 -3
  566. package/dist/cli/services/build/check-lockfile.js +0 -80
  567. package/dist/cli/services/build/check-lockfile.js.map +0 -1
  568. package/dist/cli/services/build.d.ts +0 -14
  569. package/dist/cli/services/build.js +0 -44
  570. package/dist/cli/services/build.js.map +0 -1
  571. package/dist/cli/services/deploy/config.d.ts +0 -4
  572. package/dist/cli/services/deploy/config.js +0 -49
  573. package/dist/cli/services/deploy/config.js.map +0 -1
  574. package/dist/cli/services/deploy/error.d.ts +0 -4
  575. package/dist/cli/services/deploy/error.js +0 -11
  576. package/dist/cli/services/deploy/error.js.map +0 -1
  577. package/dist/cli/services/deploy/graphql/create_deployment.d.ts +0 -10
  578. package/dist/cli/services/deploy/graphql/create_deployment.js +0 -15
  579. package/dist/cli/services/deploy/graphql/create_deployment.js.map +0 -1
  580. package/dist/cli/services/deploy/graphql/upload_deployment.d.ts +0 -1
  581. package/dist/cli/services/deploy/graphql/upload_deployment.js +0 -16
  582. package/dist/cli/services/deploy/graphql/upload_deployment.js.map +0 -1
  583. package/dist/cli/services/deploy/types.d.ts +0 -37
  584. package/dist/cli/services/deploy/types.js +0 -2
  585. package/dist/cli/services/deploy/types.js.map +0 -1
  586. package/dist/cli/services/deploy/upload.d.ts +0 -5
  587. package/dist/cli/services/deploy/upload.js +0 -81
  588. package/dist/cli/services/deploy/upload.js.map +0 -1
  589. package/dist/cli/services/deploy.d.ts +0 -2
  590. package/dist/cli/services/deploy.js +0 -103
  591. package/dist/cli/services/deploy.js.map +0 -1
  592. package/dist/cli/services/dev/check-version.d.ts +0 -1
  593. package/dist/cli/services/dev/check-version.js +0 -30
  594. package/dist/cli/services/dev/check-version.js.map +0 -1
  595. package/dist/cli/services/dev.d.ts +0 -10
  596. package/dist/cli/services/dev.js +0 -36
  597. package/dist/cli/services/dev.js.map +0 -1
  598. package/dist/cli/services/eslint.d.ts +0 -8
  599. package/dist/cli/services/eslint.js +0 -74
  600. package/dist/cli/services/eslint.js.map +0 -1
  601. package/dist/cli/services/info.d.ts +0 -7
  602. package/dist/cli/services/info.js +0 -131
  603. package/dist/cli/services/info.js.map +0 -1
  604. package/dist/cli/services/preview.d.ts +0 -12
  605. package/dist/cli/services/preview.js +0 -63
  606. package/dist/cli/services/preview.js.map +0 -1
  607. package/dist/cli/services/tailwind.d.ts +0 -9
  608. package/dist/cli/services/tailwind.js +0 -103
  609. package/dist/cli/services/tailwind.js.map +0 -1
  610. package/dist/cli/utilities/load-config.d.ts +0 -5
  611. package/dist/cli/utilities/load-config.js +0 -6
  612. package/dist/cli/utilities/load-config.js.map +0 -1
  613. package/dist/tsconfig.tsbuildinfo +0 -1
  614. package/oclif.manifest.json +0 -1
@@ -0,0 +1,561 @@
1
+ import {type ReactNode, useRef, Suspense, useMemo} from 'react';
2
+ import {Disclosure, Listbox} from '@headlessui/react';
3
+ import {defer, type LoaderArgs} from '@shopify/remix-oxygen';
4
+ import {notFoundMaybeRedirect, RESOURCE_TYPES} from '@shopify/hydrogen';
5
+ import {
6
+ useLoaderData,
7
+ Await,
8
+ useSearchParams,
9
+ useLocation,
10
+ useTransition,
11
+ useMatches,
12
+ useFetcher,
13
+ } from '@remix-run/react';
14
+ import {Money, ShopPayButton} from '@shopify/hydrogen-react';
15
+ import {
16
+ Heading,
17
+ IconCaret,
18
+ IconCheck,
19
+ IconClose,
20
+ ProductGallery,
21
+ ProductSwimlane,
22
+ Section,
23
+ Skeleton,
24
+ Text,
25
+ Link,
26
+ Button,
27
+ AddToCartButton,
28
+ } from '~/components';
29
+ import {getExcerpt} from '~/lib/utils';
30
+ import invariant from 'tiny-invariant';
31
+ import clsx from 'clsx';
32
+ import type {
33
+ ProductVariant,
34
+ SelectedOptionInput,
35
+ Product as ProductType,
36
+ Shop,
37
+ ProductConnection,
38
+ } from '@shopify/hydrogen-react/storefront-api-types';
39
+ import {
40
+ MEDIA_FRAGMENT,
41
+ PRODUCT_CARD_FRAGMENT,
42
+ PRODUCT_VARIANT_FRAGMENT,
43
+ } from '~/data'; /* @todo: we move these to app/graphql ? */
44
+
45
+ export async function loader({params, request, context}: LoaderArgs) {
46
+ const {productHandle} = params;
47
+ invariant(productHandle, 'Missing productHandle param, check route filename');
48
+
49
+ const searchParams = new URL(request.url).searchParams;
50
+
51
+ const selectedOptions: SelectedOptionInput[] = [];
52
+ searchParams.forEach((value, name) => {
53
+ selectedOptions.push({name, value});
54
+ });
55
+
56
+ const {shop, product} = await context.storefront.query<{
57
+ product: ProductType & {selectedVariant?: ProductVariant};
58
+ shop: Shop;
59
+ }>(PRODUCT_QUERY, {
60
+ variables: {
61
+ handle: productHandle,
62
+ selectedOptions,
63
+ country: context.storefront.i18n?.country,
64
+ language: context.storefront.i18n?.language,
65
+ },
66
+ });
67
+
68
+ if (!product?.id) {
69
+ throw await notFoundMaybeRedirect(request, context);
70
+ }
71
+
72
+ const recommended = getRecommendedProducts(context.storefront, product.id);
73
+
74
+ return defer({
75
+ product,
76
+ shop,
77
+ recommended,
78
+ });
79
+ }
80
+
81
+ export const handle = {
82
+ hydrogen: {
83
+ resourceType: RESOURCE_TYPES.PRODUCT,
84
+ },
85
+ };
86
+
87
+ export default function Product() {
88
+ const {product, shop, recommended} = useLoaderData<typeof loader>();
89
+ const {media, title, vendor, descriptionHtml} = product;
90
+ const {shippingPolicy, refundPolicy} = shop;
91
+
92
+ return (
93
+ <>
94
+ <Section padding="x" className="px-0">
95
+ <div className="grid items-start md:gap-6 lg:gap-20 md:grid-cols-2 lg:grid-cols-3">
96
+ <ProductGallery
97
+ media={media.nodes}
98
+ className="w-screen md:w-full lg:col-span-2"
99
+ />
100
+ <div className="sticky md:-mb-nav md:top-nav md:-translate-y-nav md:h-screen md:pt-nav hiddenScroll md:overflow-y-scroll">
101
+ <section className="flex flex-col w-full max-w-xl gap-8 p-6 md:mx-auto md:max-w-sm md:px-0">
102
+ <div className="grid gap-2">
103
+ <Heading as="h1" format className="whitespace-normal">
104
+ {title}
105
+ </Heading>
106
+ {vendor && (
107
+ <Text className={'opacity-50 font-medium'}>{vendor}</Text>
108
+ )}
109
+ </div>
110
+ <ProductForm />
111
+ <div className="grid gap-4 py-4">
112
+ {descriptionHtml && (
113
+ <ProductDetail
114
+ title="Product Details"
115
+ content={descriptionHtml}
116
+ />
117
+ )}
118
+ {shippingPolicy?.body && (
119
+ <ProductDetail
120
+ title="Shipping"
121
+ content={getExcerpt(shippingPolicy.body)}
122
+ learnMore={`/policies/${shippingPolicy.handle}`}
123
+ />
124
+ )}
125
+ {refundPolicy?.body && (
126
+ <ProductDetail
127
+ title="Returns"
128
+ content={getExcerpt(refundPolicy.body)}
129
+ learnMore={`/policies/${refundPolicy.handle}`}
130
+ />
131
+ )}
132
+ </div>
133
+ </section>
134
+ </div>
135
+ </div>
136
+ </Section>
137
+ <Suspense fallback={<Skeleton className="h-32" />}>
138
+ <Await
139
+ errorElement="There was a problem loading related products"
140
+ resolve={recommended}
141
+ >
142
+ {(products) => (
143
+ <ProductSwimlane title="Related Products" products={products} />
144
+ )}
145
+ </Await>
146
+ </Suspense>
147
+ </>
148
+ );
149
+ }
150
+
151
+ export function ProductForm() {
152
+ const {product} = useLoaderData<typeof loader>();
153
+
154
+ const [currentSearchParams] = useSearchParams();
155
+ const transition = useTransition();
156
+
157
+ /**
158
+ * We update `searchParams` with in-flight request data from `transition` (if available)
159
+ * to create an optimistic UI, e.g. check the product option before the
160
+ * request has completed.
161
+ */
162
+ const searchParams = useMemo(() => {
163
+ return transition.location
164
+ ? new URLSearchParams(transition.location.search)
165
+ : currentSearchParams;
166
+ }, [currentSearchParams, transition]);
167
+
168
+ const firstVariant = product.variants.nodes[0];
169
+
170
+ /**
171
+ * We're making an explicit choice here to display the product options
172
+ * UI with a default variant, rather than wait for the user to select
173
+ * options first. Developers are welcome to opt-out of this behavior.
174
+ * By default, the first variant's options are used.
175
+ */
176
+ const searchParamsWithDefaults = useMemo<URLSearchParams>(() => {
177
+ const clonedParams = new URLSearchParams(searchParams);
178
+
179
+ for (const {name, value} of firstVariant.selectedOptions) {
180
+ if (!searchParams.has(name)) {
181
+ clonedParams.set(name, value);
182
+ }
183
+ }
184
+
185
+ return clonedParams;
186
+ }, [searchParams, firstVariant.selectedOptions]);
187
+
188
+ /**
189
+ * Likewise, we're defaulting to the first variant for purposes
190
+ * of add to cart if there is none returned from the loader.
191
+ * A developer can opt out of this, too.
192
+ */
193
+ const selectedVariant = product.selectedVariant ?? firstVariant;
194
+ const isOutOfStock = !selectedVariant?.availableForSale;
195
+
196
+ const isOnSale =
197
+ selectedVariant?.price?.amount &&
198
+ selectedVariant?.compareAtPrice?.amount &&
199
+ selectedVariant?.price?.amount < selectedVariant?.compareAtPrice?.amount;
200
+
201
+ const lines = [
202
+ {
203
+ merchandiseId: selectedVariant.id,
204
+ quantity: 1,
205
+ },
206
+ ];
207
+
208
+ return (
209
+ <div className="grid gap-10">
210
+ <div className="grid gap-4">
211
+ <ProductOptions
212
+ options={product.options}
213
+ searchParamsWithDefaults={searchParamsWithDefaults}
214
+ />
215
+ {selectedVariant && (
216
+ <div className="grid items-stretch gap-4">
217
+ <AddToCartButton
218
+ lines={[
219
+ {
220
+ merchandiseId: selectedVariant.id,
221
+ quantity: 1,
222
+ },
223
+ ]}
224
+ variant={isOutOfStock ? 'secondary' : 'primary'}
225
+ data-test="add-to-cart"
226
+ >
227
+ {isOutOfStock ? (
228
+ <Text>Sold out</Text>
229
+ ) : (
230
+ <Text
231
+ as="span"
232
+ className="flex items-center justify-center gap-2"
233
+ >
234
+ <span>Add to Bag</span> <span>·</span>{' '}
235
+ <Money
236
+ withoutTrailingZeros
237
+ data={selectedVariant?.price!}
238
+ as="span"
239
+ />
240
+ {isOnSale && (
241
+ <Money
242
+ withoutTrailingZeros
243
+ data={selectedVariant?.compareAtPrice!}
244
+ as="span"
245
+ className="opacity-50 strike"
246
+ />
247
+ )}
248
+ </Text>
249
+ )}
250
+ </AddToCartButton>
251
+ {!isOutOfStock && (
252
+ <ShopPayButton variantIds={[selectedVariant?.id!]} />
253
+ )}
254
+ </div>
255
+ )}
256
+ </div>
257
+ </div>
258
+ );
259
+ }
260
+
261
+ function ProductOptions({
262
+ options,
263
+ searchParamsWithDefaults,
264
+ }: {
265
+ options: ProductType['options'];
266
+ searchParamsWithDefaults: URLSearchParams;
267
+ }) {
268
+ const closeRef = useRef<HTMLButtonElement>(null);
269
+ return (
270
+ <>
271
+ {options
272
+ .filter((option) => option.values.length > 1)
273
+ .map((option) => (
274
+ <div
275
+ key={option.name}
276
+ className="flex flex-col flex-wrap mb-4 gap-y-2 last:mb-0"
277
+ >
278
+ <Heading as="legend" size="lead" className="min-w-[4rem]">
279
+ {option.name}
280
+ </Heading>
281
+ <div className="flex flex-wrap items-baseline gap-4">
282
+ {/**
283
+ * First, we render a bunch of <Link> elements for each option value.
284
+ * When the user clicks one of these buttons, it will hit the loader
285
+ * to get the new data.
286
+ *
287
+ * If there are more than 7 values, we render a dropdown.
288
+ * Otherwise, we just render plain links.
289
+ */}
290
+ {option.values.length > 7 ? (
291
+ <div className="relative w-full">
292
+ <Listbox>
293
+ {({open}) => (
294
+ <>
295
+ <Listbox.Button
296
+ ref={closeRef}
297
+ className={clsx(
298
+ 'flex items-center justify-between w-full py-3 px-4 border border-primary',
299
+ open
300
+ ? 'rounded-b md:rounded-t md:rounded-b-none'
301
+ : 'rounded',
302
+ )}
303
+ >
304
+ <span>
305
+ {searchParamsWithDefaults.get(option.name)}
306
+ </span>
307
+ <IconCaret direction={open ? 'up' : 'down'} />
308
+ </Listbox.Button>
309
+ <Listbox.Options
310
+ className={clsx(
311
+ 'border-primary bg-contrast absolute bottom-12 z-30 grid h-48 w-full overflow-y-scroll rounded-t border px-2 py-2 transition-[max-height] duration-150 sm:bottom-auto md:rounded-b md:rounded-t-none md:border-t-0 md:border-b',
312
+ open ? 'max-h-48' : 'max-h-0',
313
+ )}
314
+ >
315
+ {option.values.map((value) => (
316
+ <Listbox.Option
317
+ key={`option-${option.name}-${value}`}
318
+ value={value}
319
+ >
320
+ {({active}) => (
321
+ <ProductOptionLink
322
+ optionName={option.name}
323
+ optionValue={value}
324
+ className={clsx(
325
+ 'text-primary w-full p-2 transition rounded flex justify-start items-center text-left cursor-pointer',
326
+ active && 'bg-primary/10',
327
+ )}
328
+ searchParams={searchParamsWithDefaults}
329
+ onClick={() => {
330
+ if (!closeRef?.current) return;
331
+ closeRef.current.click();
332
+ }}
333
+ >
334
+ {value}
335
+ {searchParamsWithDefaults.get(option.name) ===
336
+ value && (
337
+ <span className="ml-2">
338
+ <IconCheck />
339
+ </span>
340
+ )}
341
+ </ProductOptionLink>
342
+ )}
343
+ </Listbox.Option>
344
+ ))}
345
+ </Listbox.Options>
346
+ </>
347
+ )}
348
+ </Listbox>
349
+ </div>
350
+ ) : (
351
+ <>
352
+ {option.values.map((value) => {
353
+ const checked =
354
+ searchParamsWithDefaults.get(option.name) === value;
355
+ const id = `option-${option.name}-${value}`;
356
+
357
+ return (
358
+ <Text key={id}>
359
+ <ProductOptionLink
360
+ optionName={option.name}
361
+ optionValue={value}
362
+ searchParams={searchParamsWithDefaults}
363
+ className={clsx(
364
+ 'leading-none py-1 border-b-[1.5px] cursor-pointer transition-all duration-200',
365
+ checked ? 'border-primary/50' : 'border-primary/0',
366
+ )}
367
+ />
368
+ </Text>
369
+ );
370
+ })}
371
+ </>
372
+ )}
373
+ </div>
374
+ </div>
375
+ ))}
376
+ </>
377
+ );
378
+ }
379
+
380
+ function ProductOptionLink({
381
+ optionName,
382
+ optionValue,
383
+ searchParams,
384
+ children,
385
+ ...props
386
+ }: {
387
+ optionName: string;
388
+ optionValue: string;
389
+ searchParams: URLSearchParams;
390
+ children?: ReactNode;
391
+ [key: string]: any;
392
+ }) {
393
+ const {pathname} = useLocation();
394
+ const isLangPathname = /\/[a-zA-Z]{2}-[a-zA-Z]{2}\//g.test(pathname);
395
+ // fixes internalized pathname
396
+ const path = isLangPathname
397
+ ? `/${pathname.split('/').slice(2).join('/')}`
398
+ : pathname;
399
+
400
+ const clonedSearchParams = new URLSearchParams(searchParams);
401
+ clonedSearchParams.set(optionName, optionValue);
402
+
403
+ return (
404
+ <Link
405
+ {...props}
406
+ prefetch="intent"
407
+ replace
408
+ to={`${path}?${clonedSearchParams.toString()}`}
409
+ >
410
+ {children ?? optionValue}
411
+ </Link>
412
+ );
413
+ }
414
+
415
+ function ProductDetail({
416
+ title,
417
+ content,
418
+ learnMore,
419
+ }: {
420
+ title: string;
421
+ content: string;
422
+ learnMore?: string;
423
+ }) {
424
+ return (
425
+ <Disclosure key={title} as="div" className="grid w-full gap-2">
426
+ {({open}) => (
427
+ <>
428
+ <Disclosure.Button className="text-left">
429
+ <div className="flex justify-between">
430
+ <Text size="lead" as="h4">
431
+ {title}
432
+ </Text>
433
+ <IconClose
434
+ className={clsx(
435
+ 'transition-transform transform-gpu duration-200',
436
+ !open && 'rotate-[45deg]',
437
+ )}
438
+ />
439
+ </div>
440
+ </Disclosure.Button>
441
+
442
+ <Disclosure.Panel className={'pb-4 pt-2 grid gap-2'}>
443
+ <div
444
+ className="prose dark:prose-invert"
445
+ dangerouslySetInnerHTML={{__html: content}}
446
+ />
447
+ {learnMore && (
448
+ <div className="">
449
+ <Link
450
+ className="pb-px border-b border-primary/30 text-primary/50"
451
+ to={learnMore}
452
+ >
453
+ Learn more
454
+ </Link>
455
+ </div>
456
+ )}
457
+ </Disclosure.Panel>
458
+ </>
459
+ )}
460
+ </Disclosure>
461
+ );
462
+ }
463
+
464
+ const PRODUCT_QUERY = `#graphql
465
+ ${MEDIA_FRAGMENT}
466
+ ${PRODUCT_VARIANT_FRAGMENT}
467
+ query Product(
468
+ $country: CountryCode
469
+ $language: LanguageCode
470
+ $handle: String!
471
+ $selectedOptions: [SelectedOptionInput!]!
472
+ ) @inContext(country: $country, language: $language) {
473
+ product(handle: $handle) {
474
+ id
475
+ title
476
+ vendor
477
+ handle
478
+ descriptionHtml
479
+ options {
480
+ name
481
+ values
482
+ }
483
+ selectedVariant: variantBySelectedOptions(selectedOptions: $selectedOptions) {
484
+ ...ProductVariantFragment
485
+ }
486
+ media(first: 7) {
487
+ nodes {
488
+ ...Media
489
+ }
490
+ }
491
+ variants(first: 1) {
492
+ nodes {
493
+ ...ProductVariantFragment
494
+ }
495
+ }
496
+ seo {
497
+ description
498
+ title
499
+ }
500
+ }
501
+ shop {
502
+ name
503
+ shippingPolicy {
504
+ body
505
+ handle
506
+ }
507
+ refundPolicy {
508
+ body
509
+ handle
510
+ }
511
+ }
512
+ }
513
+ `;
514
+
515
+ const RECOMMENDED_PRODUCTS_QUERY = `#graphql
516
+ ${PRODUCT_CARD_FRAGMENT}
517
+ query productRecommendations(
518
+ $productId: ID!
519
+ $count: Int
520
+ $country: CountryCode
521
+ $language: LanguageCode
522
+ ) @inContext(country: $country, language: $language) {
523
+ recommended: productRecommendations(productId: $productId) {
524
+ ...ProductCard
525
+ }
526
+ additional: products(first: $count, sortKey: BEST_SELLING) {
527
+ nodes {
528
+ ...ProductCard
529
+ }
530
+ }
531
+ }
532
+ `;
533
+
534
+ async function getRecommendedProducts(
535
+ storefront: LoaderArgs['context']['storefront'],
536
+ productId: string,
537
+ ) {
538
+ const products = await storefront.query<{
539
+ recommended: ProductType[];
540
+ additional: ProductConnection;
541
+ }>(RECOMMENDED_PRODUCTS_QUERY, {
542
+ variables: {productId, count: 12},
543
+ });
544
+
545
+ invariant(products, 'No data returned from Shopify API');
546
+
547
+ const mergedProducts = products.recommended
548
+ .concat(products.additional.nodes)
549
+ .filter(
550
+ (value, index, array) =>
551
+ array.findIndex((value2) => value2.id === value.id) === index,
552
+ );
553
+
554
+ const originalProduct = mergedProducts
555
+ .map((item: ProductType) => item.id)
556
+ .indexOf(productId);
557
+
558
+ mergedProducts.splice(originalProduct, 1);
559
+
560
+ return mergedProducts;
561
+ }
@@ -0,0 +1,155 @@
1
+ import {type MetaFunction, type LoaderArgs} from '@shopify/remix-oxygen';
2
+ import {RESOURCE_TYPES} from '@shopify/hydrogen';
3
+ import {useLoaderData} from '@remix-run/react';
4
+ import type {ProductConnection} from '@shopify/hydrogen-react/storefront-api-types';
5
+ import invariant from 'tiny-invariant';
6
+ import {
7
+ PageHeader,
8
+ Section,
9
+ ProductCard,
10
+ Grid,
11
+ Pagination,
12
+ getPaginationVariables,
13
+ Button,
14
+ } from '~/components';
15
+ import {PRODUCT_CARD_FRAGMENT} from '~/data';
16
+ import {getImageLoadingPriority} from '~/lib/const';
17
+
18
+ const PAGE_BY = 8;
19
+
20
+ export async function loader({request, context: {storefront}}: LoaderArgs) {
21
+ const variables = getPaginationVariables(request, PAGE_BY);
22
+
23
+ const data = await storefront.query<{
24
+ products: ProductConnection;
25
+ }>(ALL_PRODUCTS_QUERY, {
26
+ variables: {
27
+ ...variables,
28
+ country: storefront.i18n?.country,
29
+ language: storefront.i18n?.language,
30
+ },
31
+ });
32
+
33
+ invariant(data, 'No data returned from Shopify API');
34
+
35
+ return data.products;
36
+ }
37
+
38
+ export const meta: MetaFunction = () => {
39
+ return {
40
+ title: 'All Products',
41
+ description: 'All Products',
42
+ };
43
+ };
44
+
45
+ export const handle = {
46
+ hydrogen: {
47
+ resourceType: RESOURCE_TYPES.CATALOG,
48
+ },
49
+ };
50
+
51
+ export default function AllProducts() {
52
+ const products = useLoaderData<typeof loader>();
53
+
54
+ return (
55
+ <>
56
+ <PageHeader heading="All Products" variant="allCollections" />
57
+ <Section>
58
+ <Pagination connection={products}>
59
+ {({
60
+ endCursor,
61
+ hasNextPage,
62
+ hasPreviousPage,
63
+ nextPageUrl,
64
+ nodes,
65
+ prevPageUrl,
66
+ startCursor,
67
+ nextLinkRef,
68
+ isLoading,
69
+ }) => {
70
+ const itemsMarkup = nodes.map((product, i) => (
71
+ <ProductCard
72
+ key={product.id}
73
+ product={product}
74
+ loading={getImageLoadingPriority(i)}
75
+ />
76
+ ));
77
+
78
+ return (
79
+ <>
80
+ {hasPreviousPage && (
81
+ <div className="flex items-center justify-center mt-6">
82
+ <Button
83
+ to={prevPageUrl}
84
+ variant="secondary"
85
+ prefetch="intent"
86
+ width="full"
87
+ disabled={!isLoading}
88
+ state={{
89
+ pageInfo: {
90
+ endCursor,
91
+ hasNextPage,
92
+ startCursor,
93
+ },
94
+ nodes,
95
+ }}
96
+ >
97
+ {isLoading ? 'Loading...' : 'Previous'}
98
+ </Button>
99
+ </div>
100
+ )}
101
+ <Grid data-test="product-grid">{itemsMarkup}</Grid>
102
+ {hasNextPage && (
103
+ <div className="flex items-center justify-center mt-6">
104
+ <Button
105
+ ref={nextLinkRef}
106
+ to={nextPageUrl}
107
+ variant="secondary"
108
+ prefetch="intent"
109
+ width="full"
110
+ disabled={!isLoading}
111
+ state={{
112
+ pageInfo: {
113
+ endCursor,
114
+ hasPreviousPage,
115
+ startCursor,
116
+ },
117
+ nodes,
118
+ }}
119
+ >
120
+ {isLoading ? 'Loading...' : 'Next'}
121
+ </Button>
122
+ </div>
123
+ )}
124
+ </>
125
+ );
126
+ }}
127
+ </Pagination>
128
+ </Section>
129
+ </>
130
+ );
131
+ }
132
+
133
+ const ALL_PRODUCTS_QUERY = `#graphql
134
+ ${PRODUCT_CARD_FRAGMENT}
135
+ query AllProducts(
136
+ $country: CountryCode
137
+ $language: LanguageCode
138
+ $first: Int
139
+ $last: Int
140
+ $startCursor: String
141
+ $endCursor: String
142
+ ) @inContext(country: $country, language: $language) {
143
+ products(first: $first, last: $last, before: $startCursor, after: $endCursor) {
144
+ nodes {
145
+ ...ProductCard
146
+ }
147
+ pageInfo {
148
+ hasPreviousPage
149
+ hasNextPage
150
+ startCursor
151
+ endCursor
152
+ }
153
+ }
154
+ }
155
+ `;