├── .gitignore ├── .npmignore ├── .npmrc ├── .prettierignore ├── .vscode ├── schema │ ├── syncify.json │ └── tsup.json └── settings.json ├── LICENSE ├── changelog.md ├── demos └── readme.md ├── dist ├── api.js ├── api.mjs ├── cli.js ├── cli.mjs ├── index.js └── index.mjs ├── docs ├── .eleventy.cjs ├── .gitignore ├── .npmrc ├── .stylelintrc.json ├── .vscode │ └── settings.json ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── public │ ├── assets │ │ └── fonts │ │ │ ├── proxima-nova-bold.woff2 │ │ │ ├── proxima-nova-light.woff2 │ │ │ └── proxima-nova-regular.woff2 │ ├── bundle.min.js │ ├── cli │ │ ├── filtering │ │ │ └── index.html │ │ ├── modes │ │ │ └── index.html │ │ ├── operations │ │ │ └── index.html │ │ ├── overview │ │ │ └── index.html │ │ ├── resources │ │ │ └── index.html │ │ ├── targeting │ │ │ └── index.html │ │ └── versioning │ │ │ └── index.html │ ├── configure │ │ └── hot │ │ │ └── index.html │ ├── docs │ │ ├── cli-commands │ │ │ └── logging │ │ │ │ └── index.html │ │ ├── features │ │ │ ├── metafield-sync │ │ │ │ └── index.html │ │ │ ├── multistore-support │ │ │ │ └── index.html │ │ │ ├── remote-binding │ │ │ │ └── index.html │ │ │ ├── resource-control │ │ │ │ └── index.html │ │ │ └── strap-generator │ │ │ │ └── index.html │ │ ├── integrate │ │ │ ├── ci-solution │ │ │ │ └── index.html │ │ │ ├── git │ │ │ │ └── index.html │ │ │ └── vscode │ │ │ │ └── index.html │ │ ├── introduction │ │ │ └── boycotting-shopify-cli │ │ │ │ └── index.html │ │ ├── options │ │ │ ├── clean │ │ │ │ └── index.html │ │ │ ├── config │ │ │ │ └── index.html │ │ │ ├── export │ │ │ │ └── index.html │ │ │ ├── import │ │ │ │ └── index.html │ │ │ ├── input │ │ │ │ └── index.html │ │ │ ├── log │ │ │ │ └── index.html │ │ │ ├── output │ │ │ │ └── index.html │ │ │ ├── paths │ │ │ │ └── index.html │ │ │ ├── processors │ │ │ │ ├── esbuild │ │ │ │ │ └── index.html │ │ │ │ ├── markdown │ │ │ │ │ └── index.html │ │ │ │ ├── postcss │ │ │ │ │ └── index.html │ │ │ │ ├── sass │ │ │ │ │ └── index.html │ │ │ │ ├── sharp │ │ │ │ │ └── index.html │ │ │ │ ├── sprite │ │ │ │ │ └── index.html │ │ │ │ ├── svgo │ │ │ │ │ └── index.html │ │ │ │ ├── tailwind │ │ │ │ │ └── index.html │ │ │ │ └── turndown │ │ │ │ │ └── index.html │ │ │ ├── publish │ │ │ │ └── index.html │ │ │ ├── spawn │ │ │ │ └── index.html │ │ │ └── transform │ │ │ │ ├── image │ │ │ │ └── index.html │ │ │ │ ├── json │ │ │ │ └── index.html │ │ │ │ ├── liquid │ │ │ │ └── index.html │ │ │ │ └── svg │ │ │ │ └── index.html │ │ ├── plugins │ │ │ ├── basic-example │ │ │ │ └── index.html │ │ │ ├── build-hooks │ │ │ │ └── index.html │ │ │ ├── conventions │ │ │ │ └── index.html │ │ │ ├── official-plugins │ │ │ │ └── index.html │ │ │ └── overview │ │ │ │ └── index.html │ │ └── usage │ │ │ ├── frontmatter │ │ │ └── index.html │ │ │ ├── modes │ │ │ └── index.html │ │ │ ├── publishing-themes │ │ │ └── index.html │ │ │ ├── redirects │ │ │ └── index.html │ │ │ ├── required-files │ │ │ └── index.html │ │ │ ├── terse-output │ │ │ └── index.html │ │ │ ├── theme-targets │ │ │ └── index.html │ │ │ ├── troubleshoot │ │ │ └── index.html │ │ │ └── version-control │ │ │ └── index.html │ ├── examples │ │ └── index.html │ ├── features │ │ ├── hot-reloading │ │ │ └── index.html │ │ ├── markdown-pages │ │ │ └── index.html │ │ └── shared-schema │ │ │ └── index.html │ ├── getting-help │ │ └── index.html │ ├── include │ │ ├── authentication │ │ │ └── index.html │ │ ├── breadcrumb │ │ │ └── index.html │ │ ├── landing │ │ │ └── index.html │ │ ├── logo │ │ │ └── index.html │ │ ├── navbar │ │ │ └── index.html │ │ ├── options │ │ │ └── index.html │ │ ├── paginate │ │ │ └── index.html │ │ ├── search │ │ │ └── index.html │ │ └── sidebar │ │ │ └── index.html │ ├── index.html │ ├── options │ │ └── transform │ │ │ └── style │ │ │ └── index.html │ ├── setup │ │ ├── authentication │ │ │ └── index.html │ │ ├── checklist │ │ │ └── index.html │ │ ├── installation │ │ │ └── index.html │ │ └── references │ │ │ └── index.html │ ├── style.css │ ├── style.css.map │ ├── syncify.json │ ├── usage │ │ ├── config-files │ │ │ └── index.html │ │ ├── directory-structures │ │ │ └── index.html │ │ ├── project-structures │ │ │ └── index.html │ │ ├── syncify-cli │ │ │ └── index.html │ │ ├── transforms │ │ │ └── javascript │ │ │ │ └── index.html │ │ └── using-transforms │ │ │ └── index.html │ └── what-is-syncify │ │ └── index.html ├── readme.md ├── src │ ├── app │ │ ├── bundle.ts │ │ └── components │ │ │ ├── accordion.ts │ │ │ ├── drawer.ts │ │ │ ├── dropdown.ts │ │ │ ├── hovers.ts │ │ │ ├── indicator.ts │ │ │ ├── scrollspy.ts │ │ │ ├── search.ts │ │ │ └── sidebar.ts │ ├── assets │ │ ├── fonts │ │ │ ├── proxima-nova-bold.woff2 │ │ │ ├── proxima-nova-light.woff2 │ │ │ └── proxima-nova-regular.woff2 │ │ ├── img │ │ │ ├── 1.webp │ │ │ ├── 10.webp │ │ │ ├── 11.webp │ │ │ ├── 12.webp │ │ │ ├── 13.webp │ │ │ ├── 14.webp │ │ │ ├── 15.webp │ │ │ ├── 16.webp │ │ │ ├── 17.webp │ │ │ ├── 18.webp │ │ │ ├── 19.webp │ │ │ ├── 2.webp │ │ │ ├── 20.webp │ │ │ ├── 21.webp │ │ │ ├── 22.webp │ │ │ ├── 23.webp │ │ │ ├── 24.webp │ │ │ ├── 25.webp │ │ │ ├── 26.webp │ │ │ ├── 27.webp │ │ │ ├── 28.webp │ │ │ ├── 29.webp │ │ │ ├── 3.webp │ │ │ ├── 30.webp │ │ │ ├── 4.webp │ │ │ ├── 5.webp │ │ │ ├── 6.webp │ │ │ ├── 7.webp │ │ │ ├── 8.webp │ │ │ ├── 9.webp │ │ │ └── social-banner.png │ │ └── svg │ │ │ ├── anchor.svg │ │ │ ├── arrow-right.svg │ │ │ ├── check.svg │ │ │ ├── chevron-down.svg │ │ │ ├── chevron-left.svg │ │ │ ├── chevron-right.svg │ │ │ ├── copy.svg │ │ │ ├── discord.svg │ │ │ ├── github.svg │ │ │ ├── home.svg │ │ │ ├── logo-text.svg │ │ │ ├── logo.svg │ │ │ ├── menu.svg │ │ │ ├── minus-square.svg │ │ │ ├── npm.svg │ │ │ ├── plus-square.svg │ │ │ ├── refresh.svg │ │ │ └── text.svg │ ├── sass │ │ ├── styles │ │ │ ├── blockquote.scss │ │ │ ├── code.scss │ │ │ ├── landing.scss │ │ │ ├── navbar.scss │ │ │ ├── overwrites.scss │ │ │ ├── search.scss │ │ │ ├── sidebar.scss │ │ │ ├── svg.scss │ │ │ └── tabs.scss │ │ ├── stylesheet.scss │ │ └── variables.scss │ └── views │ │ ├── data │ │ ├── authentication.json │ │ ├── navigation.json │ │ └── transforms.json │ │ ├── docs │ │ ├── cli-commands │ │ │ ├── filtering.md │ │ │ ├── logging.md │ │ │ ├── modes.md │ │ │ ├── operations.md │ │ │ ├── overview.md │ │ │ ├── resources.md │ │ │ ├── targeting.md │ │ │ └── versioning.md │ │ ├── features │ │ │ ├── hot-reloading.md │ │ │ ├── markdown-pages.md │ │ │ ├── metafield-sync.md │ │ │ ├── multistore-support.md │ │ │ ├── remote-binding.md │ │ │ ├── resource-control.md │ │ │ ├── shared-schema.md │ │ │ └── strap-generator.md │ │ ├── index.md │ │ ├── integrate │ │ │ ├── ci-solution.md │ │ │ ├── git.md │ │ │ └── vscode.md │ │ ├── introduction │ │ │ ├── boycotting-shopify-cli.md │ │ │ ├── examples.md │ │ │ ├── getting-help.md │ │ │ └── what-is-syncify.md │ │ ├── options │ │ │ ├── clean.md │ │ │ ├── config.md │ │ │ ├── export.md │ │ │ ├── hot.md │ │ │ ├── import.md │ │ │ ├── input.md │ │ │ ├── log.md │ │ │ ├── output.md │ │ │ ├── paths.md │ │ │ ├── processors │ │ │ │ ├── esbuild.md │ │ │ │ ├── markdown.md │ │ │ │ ├── postcss.md │ │ │ │ ├── sass.md │ │ │ │ ├── sharp.md │ │ │ │ ├── sprite.md │ │ │ │ ├── svgo.md │ │ │ │ ├── tailwind.md │ │ │ │ └── turndown.md │ │ │ ├── publish.md │ │ │ ├── spawn.md │ │ │ └── transform │ │ │ │ ├── image.md │ │ │ │ ├── json.md │ │ │ │ ├── liquid.md │ │ │ │ ├── script.md │ │ │ │ ├── style.md │ │ │ │ └── svg.md │ │ ├── plugins │ │ │ ├── basic-example.md │ │ │ ├── build-hooks.md │ │ │ ├── conventions.md │ │ │ ├── official-plugins.md │ │ │ └── overview.md │ │ ├── setup │ │ │ ├── authentication.md │ │ │ ├── checklist.md │ │ │ ├── installation.md │ │ │ └── references.md │ │ └── usage │ │ │ ├── config-files.md │ │ │ ├── directory-structures.md │ │ │ ├── frontmatter.md │ │ │ ├── modes.md │ │ │ ├── publishing-themes.md │ │ │ ├── redirects.md │ │ │ ├── renaming-files.md │ │ │ ├── required-files.md │ │ │ ├── syncify-cli.md │ │ │ ├── terse-output.md │ │ │ ├── theme-targets.md │ │ │ ├── troubleshoot.md │ │ │ ├── using-transforms.md │ │ │ └── version-control.md │ │ ├── include │ │ ├── authentication.liquid │ │ ├── breadcrumb.liquid │ │ ├── landing.liquid │ │ ├── logo.liquid │ │ ├── navbar.liquid │ │ ├── options.liquid │ │ ├── paginate.liquid │ │ ├── search.liquid │ │ └── sidebar.liquid │ │ └── layout │ │ └── base.liquid ├── tsconfig.json └── tsup.config.ts ├── examples ├── using-paths │ ├── .gitignore │ ├── .liquidrc.json │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── readme.md │ ├── src │ │ ├── assets │ │ │ └── icons │ │ │ │ └── logo.svg │ │ ├── data │ │ │ ├── settings │ │ │ │ ├── settings_data.json │ │ │ │ └── settings_schema.json │ │ │ └── translations │ │ │ │ ├── en.default.json │ │ │ │ └── en.default.schema.json │ │ ├── scripts │ │ │ ├── bundle.ts │ │ │ └── components │ │ │ │ ├── bar.ts │ │ │ │ └── foo.ts │ │ ├── styles │ │ │ └── base.css │ │ └── views │ │ │ ├── customers │ │ │ ├── account.liquid │ │ │ ├── activate_account.liquid │ │ │ ├── addresses.liquid │ │ │ ├── login.liquid │ │ │ ├── order.liquid │ │ │ ├── register.liquid │ │ │ └── reset_password.liquid │ │ │ ├── templates │ │ │ ├── 404.json │ │ │ ├── article.json │ │ │ ├── blog.json │ │ │ ├── cart.json │ │ │ ├── collection.json │ │ │ ├── gift_card.liquid │ │ │ ├── index.json │ │ │ ├── list-collections.json │ │ │ ├── page.json │ │ │ ├── password.json │ │ │ ├── product.json │ │ │ └── search.json │ │ │ └── theme.liquid │ └── syncify.config.ts ├── using-sass │ ├── .gitignore │ ├── .liquidrc.json │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── readme.md │ ├── source │ │ ├── assets │ │ │ ├── icons │ │ │ │ └── logo.svg │ │ │ ├── scripts │ │ │ │ └── bundle.js │ │ │ └── styles │ │ │ │ ├── bootstrap.scss │ │ │ │ └── stylesheet.scss │ │ ├── data │ │ │ ├── config │ │ │ │ ├── settings_data.json │ │ │ │ └── settings_schema.json │ │ │ └── locales │ │ │ │ ├── en.default.json │ │ │ │ └── en.default.schema.json │ │ └── views │ │ │ ├── schema │ │ │ └── page.schema │ │ │ ├── sections │ │ │ └── page.liquid │ │ │ ├── snippets │ │ │ └── navbar.liquid │ │ │ ├── templates │ │ │ ├── json │ │ │ │ ├── 404.json │ │ │ │ ├── article.json │ │ │ │ ├── blog.json │ │ │ │ ├── cart.json │ │ │ │ ├── collection.json │ │ │ │ ├── index.json │ │ │ │ ├── list-collections.json │ │ │ │ ├── page.json │ │ │ │ ├── password.json │ │ │ │ ├── product.json │ │ │ │ └── search.json │ │ │ └── liquid │ │ │ │ ├── customers │ │ │ │ ├── account.liquid │ │ │ │ ├── activate_account.liquid │ │ │ │ ├── addresses.liquid │ │ │ │ ├── login.liquid │ │ │ │ ├── order.liquid │ │ │ │ ├── register.liquid │ │ │ │ └── reset_password.liquid │ │ │ │ └── gift_card.liquid │ │ │ └── theme.liquid │ └── syncify.config.json ├── using-schema │ ├── .gitignore │ ├── .liquidrc.json │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── readme.md │ └── source │ │ ├── assets │ │ ├── base.css │ │ ├── forms.css │ │ └── logo.svg │ │ ├── data │ │ ├── config │ │ │ ├── settings_data.json │ │ │ └── settings_schema.json │ │ └── locales │ │ │ ├── en.default.json │ │ │ └── en.default.schema.json │ │ ├── pages │ │ └── contact.md │ │ ├── schema │ │ ├── fields.schema │ │ └── page.schema │ │ ├── sections │ │ ├── form.liquid │ │ └── page.liquid │ │ ├── snippets │ │ └── navbar.liquid │ │ ├── templates │ │ ├── 404.json │ │ ├── article.json │ │ ├── blog.json │ │ ├── cart.json │ │ ├── collection.json │ │ ├── customers │ │ │ ├── account.liquid │ │ │ ├── activate_account.liquid │ │ │ ├── addresses.liquid │ │ │ ├── login.liquid │ │ │ ├── order.liquid │ │ │ ├── register.liquid │ │ │ └── reset_password.liquid │ │ ├── gift_card.liquid │ │ ├── index.json │ │ ├── list-collections.json │ │ ├── page.json │ │ ├── password.json │ │ ├── product.json │ │ └── search.json │ │ └── theme.liquid └── using-tailwind │ ├── .gitignore │ ├── .liquidrc.json │ ├── .vscode │ ├── extensions.json │ └── settings.json │ ├── package.json │ ├── readme.md │ ├── source │ ├── assets │ │ ├── icons │ │ │ └── logo.svg │ │ └── style │ │ │ └── base.css │ ├── config │ │ ├── settings_data.json │ │ └── settings_schema.json │ ├── layout │ │ └── theme.liquid │ ├── locales │ │ ├── en.default.json │ │ └── en.default.schema.json │ ├── schema │ │ └── page.schema │ ├── sections │ │ └── page.liquid │ └── templates │ │ ├── 404.json │ │ ├── article.json │ │ ├── blog.json │ │ ├── cart.json │ │ ├── collection.json │ │ ├── customers │ │ ├── account.liquid │ │ ├── activate_account.liquid │ │ ├── addresses.liquid │ │ ├── login.liquid │ │ ├── order.liquid │ │ ├── register.liquid │ │ └── reset_password.liquid │ │ ├── gift_card.liquid │ │ ├── index.json │ │ ├── list-collections.json │ │ ├── page.json │ │ ├── password.json │ │ ├── product.json │ │ └── search.json │ ├── syncify.config.ts │ └── tailwind.config.ts ├── hot.js.liquid ├── package.json ├── packages ├── configs │ ├── eslint-config │ │ ├── .npmignore │ │ ├── eslintrc.cjs │ │ ├── package.json │ │ └── readme.md │ ├── prettier-config │ │ ├── .npmignore │ │ ├── package.json │ │ ├── prettier.cjs │ │ └── readme.md │ ├── stylelint-config │ │ ├── .npmignore │ │ ├── package.json │ │ ├── readme.md │ │ └── stylelint.cjs │ └── tsconfig │ │ ├── browser.json │ │ ├── node.json │ │ ├── package.json │ │ └── readme.md ├── hot │ ├── hot.js.liquid │ ├── index.js │ ├── package.json │ ├── readme.md │ ├── src │ │ └── index.ts │ └── tsconfig.json ├── plugins │ ├── icons │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ └── readme.md │ ├── package.json │ ├── postcss │ │ ├── package.json │ │ └── src │ │ │ └── index.ts │ ├── readme.md │ └── sass │ │ ├── package.json │ │ └── src │ │ └── index.ts ├── schema │ ├── LICENSE │ ├── config.json │ ├── env.json │ ├── package.json │ ├── pnpm-lock.yaml │ ├── readme.md │ ├── sections.json │ └── syncify.json ├── strap │ └── dusk.zip └── turndown │ ├── package.json │ ├── readme.md │ ├── src │ ├── index.ts │ └── plugins │ │ ├── codeblock.ts │ │ ├── strikethrough.ts │ │ ├── table.ts │ │ └── tasklist.ts │ └── tsconfig.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── readme.md ├── straps ├── dawn │ ├── .gitignore │ ├── .liquidrc.json │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── postcss.config.ts │ ├── readme.md │ └── source │ │ ├── assets │ │ ├── animations.js │ │ ├── base.css │ │ ├── cart-drawer.js │ │ ├── cart-notification.js │ │ ├── cart.js │ │ ├── collage.css │ │ ├── collapsible-content.css │ │ ├── component-accordion.css │ │ ├── component-article-card.css │ │ ├── component-card.css │ │ ├── component-cart-drawer.css │ │ ├── component-cart-items.css │ │ ├── component-cart-notification.css │ │ ├── component-cart.css │ │ ├── component-collection-hero.css │ │ ├── component-complementary-products.css │ │ ├── component-deferred-media.css │ │ ├── component-discounts.css │ │ ├── component-facets.css │ │ ├── component-image-with-text.css │ │ ├── component-list-menu.css │ │ ├── component-list-payment.css │ │ ├── component-list-social.css │ │ ├── component-loading-spinner.css │ │ ├── component-localization-form.css │ │ ├── component-mega-menu.css │ │ ├── component-menu-drawer.css │ │ ├── component-modal-video.css │ │ ├── component-model-viewer-ui.css │ │ ├── component-newsletter.css │ │ ├── component-pagination.css │ │ ├── component-pickup-availability.css │ │ ├── component-predictive-search.css │ │ ├── component-price.css │ │ ├── component-product-model.css │ │ ├── component-rating.css │ │ ├── component-search.css │ │ ├── component-show-more.css │ │ ├── component-slider.css │ │ ├── component-slideshow.css │ │ ├── component-totals.css │ │ ├── component-visual-display.css │ │ ├── component-volume-pricing.css │ │ ├── constants.js │ │ ├── customer.css │ │ ├── customer.js │ │ ├── details-disclosure.js │ │ ├── details-modal.js │ │ ├── facets.js │ │ ├── global.js │ │ ├── localization-form.js │ │ ├── magnify.js │ │ ├── main-search.js │ │ ├── mask-blobs.css │ │ ├── media-gallery.js │ │ ├── newsletter-section.css │ │ ├── password-modal.js │ │ ├── pickup-availability.js │ │ ├── predictive-search.js │ │ ├── price-per-item.js │ │ ├── product-form.js │ │ ├── product-info.js │ │ ├── product-modal.js │ │ ├── product-model.js │ │ ├── pubsub.js │ │ ├── quantity-popover.css │ │ ├── quantity-popover.js │ │ ├── quick-add.css │ │ ├── quick-add.js │ │ ├── quick-order-list.css │ │ ├── quick-order-list.js │ │ ├── recipient-form.js │ │ ├── search-form.js │ │ ├── section-blog-post.css │ │ ├── section-collection-list.css │ │ ├── section-contact-form.css │ │ ├── section-email-signup-banner.css │ │ ├── section-featured-blog.css │ │ ├── section-featured-product.css │ │ ├── section-footer.css │ │ ├── section-image-banner.css │ │ ├── section-main-blog.css │ │ ├── section-main-page.css │ │ ├── section-main-product.css │ │ ├── section-multicolumn.css │ │ ├── section-password.css │ │ ├── section-related-products.css │ │ ├── section-rich-text.css │ │ ├── share.js │ │ ├── show-more.js │ │ ├── sparkle.gif │ │ ├── template-collection.css │ │ ├── template-giftcard.css │ │ ├── theme-editor.js │ │ └── video-section.css │ │ ├── config │ │ ├── settings_data.json │ │ └── settings_schema.json │ │ ├── layout │ │ ├── password.liquid │ │ └── theme.liquid │ │ ├── locales │ │ ├── bg-BG.json │ │ ├── cs.json │ │ ├── cs.schema.json │ │ ├── da.json │ │ ├── da.schema.json │ │ ├── de.json │ │ ├── de.schema.json │ │ ├── el.json │ │ ├── en.default.json │ │ ├── en.default.schema.json │ │ ├── es.json │ │ ├── es.schema.json │ │ ├── fi.json │ │ ├── fi.schema.json │ │ ├── fr.json │ │ ├── fr.schema.json │ │ ├── hr-HR.json │ │ ├── hu.json │ │ ├── id.json │ │ ├── it.json │ │ ├── it.schema.json │ │ ├── ja.json │ │ ├── ja.schema.json │ │ ├── ko.json │ │ ├── ko.schema.json │ │ ├── lt-LT.json │ │ ├── nb.json │ │ ├── nb.schema.json │ │ ├── nl.json │ │ ├── nl.schema.json │ │ ├── pl.json │ │ ├── pl.schema.json │ │ ├── pt-BR.json │ │ ├── pt-BR.schema.json │ │ ├── pt-PT.json │ │ ├── pt-PT.schema.json │ │ ├── ro-RO.json │ │ ├── ru.json │ │ ├── sk-SK.json │ │ ├── sl-SI.json │ │ ├── sv.json │ │ ├── sv.schema.json │ │ ├── th.json │ │ ├── th.schema.json │ │ ├── tr.json │ │ ├── tr.schema.json │ │ ├── vi.json │ │ ├── vi.schema.json │ │ ├── zh-CN.json │ │ ├── zh-CN.schema.json │ │ ├── zh-TW.json │ │ └── zh-TW.schema.json │ │ ├── sections │ │ ├── announcement-bar.liquid │ │ ├── apps.liquid │ │ ├── cart-drawer.liquid │ │ ├── cart-icon-bubble.liquid │ │ ├── cart-live-region-text.liquid │ │ ├── cart-notification-button.liquid │ │ ├── cart-notification-product.liquid │ │ ├── collage.liquid │ │ ├── collapsible-content.liquid │ │ ├── collection-list.liquid │ │ ├── contact-form.liquid │ │ ├── custom-liquid.liquid │ │ ├── email-signup-banner.liquid │ │ ├── featured-blog.liquid │ │ ├── featured-collection.liquid │ │ ├── featured-product.liquid │ │ ├── footer-group.json │ │ ├── footer.liquid │ │ ├── header-group.json │ │ ├── header.liquid │ │ ├── image-banner.liquid │ │ ├── image-with-text.liquid │ │ ├── main-404.liquid │ │ ├── main-account.liquid │ │ ├── main-activate-account.liquid │ │ ├── main-addresses.liquid │ │ ├── main-article.liquid │ │ ├── main-blog.liquid │ │ ├── main-cart-footer.liquid │ │ ├── main-cart-items.liquid │ │ ├── main-collection-banner.liquid │ │ ├── main-collection-product-grid.liquid │ │ ├── main-list-collections.liquid │ │ ├── main-login.liquid │ │ ├── main-order.liquid │ │ ├── main-page.liquid │ │ ├── main-password-footer.liquid │ │ ├── main-password-header.liquid │ │ ├── main-product.liquid │ │ ├── main-register.liquid │ │ ├── main-reset-password.liquid │ │ ├── main-search.liquid │ │ ├── multicolumn.liquid │ │ ├── multirow.liquid │ │ ├── newsletter.liquid │ │ ├── page.liquid │ │ ├── pickup-availability.liquid │ │ ├── predictive-search.liquid │ │ ├── quick-order-list.liquid │ │ ├── related-products.liquid │ │ ├── rich-text.liquid │ │ ├── slideshow.liquid │ │ └── video.liquid │ │ ├── snippets │ │ ├── article-card.liquid │ │ ├── buy-buttons.liquid │ │ ├── card-collection.liquid │ │ ├── card-product.liquid │ │ ├── cart-drawer.liquid │ │ ├── cart-notification.liquid │ │ ├── country-localization.liquid │ │ ├── email-signup-banner-background-mobile.liquid │ │ ├── email-signup-banner-background.liquid │ │ ├── facets.liquid │ │ ├── gift-card-recipient-form.liquid │ │ ├── header-drawer.liquid │ │ ├── header-dropdown-menu.liquid │ │ ├── header-mega-menu.liquid │ │ ├── header-search.liquid │ │ ├── icon-3d-model.liquid │ │ ├── icon-accordion.liquid │ │ ├── icon-account.liquid │ │ ├── icon-arrow.liquid │ │ ├── icon-caret.liquid │ │ ├── icon-cart-empty.liquid │ │ ├── icon-cart.liquid │ │ ├── icon-checkmark.liquid │ │ ├── icon-clipboard.liquid │ │ ├── icon-close-small.liquid │ │ ├── icon-close.liquid │ │ ├── icon-discount.liquid │ │ ├── icon-error.liquid │ │ ├── icon-facebook.liquid │ │ ├── icon-filter.liquid │ │ ├── icon-hamburger.liquid │ │ ├── icon-info.liquid │ │ ├── icon-instagram.liquid │ │ ├── icon-minus.liquid │ │ ├── icon-padlock.liquid │ │ ├── icon-pause.liquid │ │ ├── icon-pinterest.liquid │ │ ├── icon-play.liquid │ │ ├── icon-plus.liquid │ │ ├── icon-remove.liquid │ │ ├── icon-share.liquid │ │ ├── icon-snapchat.liquid │ │ ├── icon-success.liquid │ │ ├── icon-tick.liquid │ │ ├── icon-tiktok.liquid │ │ ├── icon-tumblr.liquid │ │ ├── icon-twitter.liquid │ │ ├── icon-unavailable.liquid │ │ ├── icon-vimeo.liquid │ │ ├── icon-with-text.liquid │ │ ├── icon-youtube.liquid │ │ ├── icon-zoom.liquid │ │ ├── language-localization.liquid │ │ ├── loading-spinner.liquid │ │ ├── mask-arch.liquid │ │ ├── meta-tags.liquid │ │ ├── pagination.liquid │ │ ├── price.liquid │ │ ├── product-media-gallery.liquid │ │ ├── product-media-modal.liquid │ │ ├── product-media.liquid │ │ ├── product-thumbnail.liquid │ │ ├── product-variant-options.liquid │ │ ├── product-variant-picker.liquid │ │ ├── quantity-input.liquid │ │ ├── quick-order-list-row.liquid │ │ ├── share-button.liquid │ │ ├── social-icons.liquid │ │ └── visual-display.liquid │ │ └── templates │ │ ├── 404.json │ │ ├── article.json │ │ ├── blog.json │ │ ├── cart.json │ │ ├── collection.json │ │ ├── customers │ │ ├── account.json │ │ ├── activate_account.json │ │ ├── addresses.json │ │ ├── login.json │ │ ├── order.json │ │ ├── register.json │ │ └── reset_password.json │ │ ├── gift_card.liquid │ │ ├── index.json │ │ ├── list-collections.json │ │ ├── page.contact.json │ │ ├── page.json │ │ ├── password.json │ │ ├── product.json │ │ └── search.json ├── dusk │ ├── .liquidrc.json │ ├── .vscode │ │ ├── extensions.json │ │ └── settings.json │ ├── package.json │ ├── readme.md │ └── source │ │ ├── assets │ │ ├── logo.svg │ │ └── style.scss │ │ ├── config │ │ ├── settings_data.json │ │ └── settings_schema.json │ │ ├── layout │ │ └── theme.liquid │ │ ├── locales │ │ ├── en.default.json │ │ └── en.default.schema.json │ │ ├── sections │ │ ├── 404.liquid │ │ ├── apps.liquid │ │ ├── article.liquid │ │ ├── blog.liquid │ │ ├── cart.liquid │ │ ├── collection.liquid │ │ ├── collections-listing.liquid │ │ ├── page.liquid │ │ ├── password.liquid │ │ ├── product.liquid │ │ └── search.liquid │ │ └── templates │ │ ├── 404.json │ │ ├── article.json │ │ ├── blog.json │ │ ├── cart.json │ │ ├── collection.json │ │ ├── customers │ │ ├── account.liquid │ │ ├── activate_account.liquid │ │ ├── addresses.liquid │ │ ├── login.liquid │ │ ├── order.liquid │ │ ├── register.liquid │ │ └── reset_password.liquid │ │ ├── gift_card.liquid │ │ ├── index.json │ │ ├── list-collections.json │ │ ├── page.json │ │ ├── password.json │ │ ├── product.json │ │ └── search.json └── silk │ ├── .gitignore │ ├── .liquidrc.json │ ├── .vscode │ ├── extensions.json │ ├── intellisense │ │ ├── accordion.html-data.json │ │ ├── carousel.html-data.json │ │ └── spx.html-data.json │ └── settings.json │ ├── package.json │ ├── postcss.config.ts │ ├── readme.md │ ├── source │ ├── data │ │ ├── locales │ │ │ ├── en.default.json │ │ │ └── en.default.schema.json │ │ └── settings │ │ │ ├── settings_data.json │ │ │ └── settings_schema.json │ ├── pages │ │ ├── about.md │ │ └── contact.md │ ├── scripts │ │ ├── application │ │ │ ├── app.ts │ │ │ ├── controller.ts │ │ │ ├── session.ts │ │ │ ├── tracking.ts │ │ │ └── utilities.ts │ │ ├── bundle.ts │ │ ├── components │ │ │ ├── accordion.ts │ │ │ ├── carousel.ts │ │ │ └── drawer.ts │ │ ├── modules │ │ │ └── lazysizes.ts │ │ ├── shop.js.liquid │ │ └── typings │ │ │ ├── global.d.ts │ │ │ ├── session.d.ts │ │ │ └── shopify.d.ts │ ├── styles │ │ └── base.css │ └── views │ │ ├── schema │ │ └── forms.schema │ │ ├── sections │ │ ├── app.liquid │ │ ├── blog │ │ │ └── article.liquid │ │ ├── collection │ │ │ ├── cover.liquid │ │ │ ├── filter.liquid │ │ │ └── products.liquid │ │ ├── layout │ │ │ ├── footer.liquid │ │ │ ├── navbar.liquid │ │ │ └── sidebar.liquid │ │ ├── product │ │ │ ├── description.liquid │ │ │ ├── purchase.liquid │ │ │ ├── related.liquid │ │ │ └── viewer.liquid │ │ └── shared │ │ │ ├── announcement-bar.liquid │ │ │ ├── collage.liquid │ │ │ ├── hero-image.liquid │ │ │ ├── image-slideshow.liquid │ │ │ └── image-split.liquid │ │ ├── snippets │ │ └── product-item.liquid │ │ ├── templates │ │ ├── 404.json │ │ ├── article.json │ │ ├── blog.json │ │ ├── cart.json │ │ ├── collection.json │ │ ├── customers │ │ │ ├── account.liquid │ │ │ ├── activate_account.liquid │ │ │ ├── addresses.liquid │ │ │ ├── login.liquid │ │ │ ├── order.liquid │ │ │ ├── register.liquid │ │ │ └── reset_password.liquid │ │ ├── index.json │ │ ├── list-collections.json │ │ ├── page.json │ │ ├── password.json │ │ ├── product.json │ │ ├── search.json │ │ └── statics │ │ │ └── gift_card.liquid │ │ └── theme.liquid │ ├── syncify.config.ts │ ├── tailwind.config.ts │ └── tsconfig.json ├── syncify ├── ansi │ ├── ansi.ts │ ├── codeframe.ts │ ├── colors.ts │ └── symbol.ts ├── api.ts ├── cli.ts ├── cli │ ├── emitters.ts │ ├── exit.ts │ ├── intercept.ts │ ├── interpolate.ts │ ├── progress.ts │ ├── prompts.ts │ ├── size.ts │ ├── spawn.ts │ └── spinner.ts ├── const.ts ├── hot │ ├── inject.ts │ └── server.ts ├── index.ts ├── log │ ├── errors.ts │ ├── help.ts │ ├── loggers.ts │ ├── runtime.ts │ ├── stdin.ts │ ├── throws.ts │ └── warnings.ts ├── model │ ├── $.ts │ ├── defaults.ts │ ├── file.ts │ ├── modules.ts │ ├── plugins.ts │ ├── processor.ts │ └── terser.ts ├── modes │ ├── build.ts │ ├── create.ts │ ├── doctor.ts │ ├── export.ts │ ├── import.ts │ ├── interactive.ts │ ├── publish.ts │ ├── resource.ts │ ├── setup.ts │ ├── strap.ts │ ├── themes.ts │ ├── upload.ts │ └── watch.ts ├── options │ ├── define.ts │ ├── dirs.ts │ ├── files.ts │ ├── filters.ts │ ├── hot.ts │ ├── json.ts │ ├── modes.ts │ ├── pages.ts │ ├── paths.ts │ ├── publish.ts │ ├── script.ts │ ├── sections.ts │ ├── snippets.ts │ ├── spawn.ts │ ├── style.ts │ ├── svg.ts │ ├── sync.ts │ ├── terser.ts │ └── version.ts ├── plugins │ ├── hooks.ts │ ├── plugin.ts │ └── trigger.ts ├── process │ ├── cache.ts │ ├── context.ts │ ├── events.ts │ ├── files.ts │ ├── metafields.ts │ └── validate.ts ├── prompts │ └── themes.ts ├── readme.md ├── requests │ ├── access.ts │ ├── assets.ts │ ├── client.ts │ ├── files.ts │ ├── metafields.ts │ ├── pages.ts │ ├── queue.ts │ ├── redirect.ts │ ├── require.ts │ └── themes.ts ├── terser │ ├── liquid.ts │ ├── markup.ts │ └── obfuscate.ts ├── transform │ ├── asset.ts │ ├── json.ts │ ├── liquid.ts │ ├── pages.ts │ ├── schema.ts │ ├── script.ts │ ├── style.ts │ └── svg.ts └── utils │ ├── array.ts │ ├── native.ts │ ├── options.ts │ ├── paths.ts │ ├── sizes.ts │ ├── timer.ts │ └── utils.ts ├── tsconfig.json ├── tsup.config.ts └── types ├── $ ├── cache.d.ts ├── errors.d.ts ├── file.d.ts ├── filters.d.ts ├── hot.d.ts ├── index.d.ts ├── plugin.d.ts ├── processors.d.ts └── requests.d.ts ├── api.d.ts ├── cli.d.ts ├── config ├── index.d.ts ├── terser.d.ts └── views.d.ts ├── global.d.ts ├── index.d.ts ├── internal.d.ts ├── internal ├── enquirer.d.ts ├── errors.d.ts ├── merge.d.ts ├── reports.d.ts ├── require.d.ts ├── schema.d.ts ├── templates.d.ts └── transform.d.ts ├── modules └── html-minifier-terser.d.ts ├── shared.d.ts └── transform ├── image.d.ts ├── json.d.ts ├── pages.d.ts ├── script.d.ts ├── style.d.ts └── svg.d.ts /.gitignore: -------------------------------------------------------------------------------- 1 | config/local.js 2 | _site 3 | sync.config.json 4 | yarn.lock 5 | .sass-cache 6 | .env 7 | node_modules 8 | bower_components 9 | test/custom 10 | test/cases/* 11 | test/e2e/custom/dist 12 | .tmp 13 | dump.rdb 14 | docs/ 15 | tests/ 16 | packages/**/dist 17 | straps/dusk-advanced/theme 18 | 19 | lib-cov 20 | *.seed 21 | *.log 22 | *.out 23 | *.pid 24 | npm-debug.log 25 | 26 | 27 | ################################################ 28 | # Miscellaneous 29 | # 30 | # Common files generated by text editors, 31 | # operating systems, file systems, etc. 32 | ################################################ 33 | 34 | *~ 35 | *# 36 | .DS_STORE 37 | .netbeans 38 | nbproject 39 | .idea 40 | .node_history 41 | .shopifysync 42 | .shopifysync.json 43 | example 44 | package 45 | theme 46 | yarn.lock 47 | versions 48 | 49 | 50 | .env* 51 | .flaskenv* 52 | !.env.project 53 | !.env.vault -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # DIRECTORIES 2 | 3 | example/ 4 | test/ 5 | tests/ 6 | lib/ 7 | docs/ 8 | plugins/ 9 | src/ 10 | versions/ 11 | .vscode/ 12 | demos/ 13 | 14 | # DOT FILES 15 | 16 | .env 17 | .env.example 18 | .eslintrc 19 | .eslintignore 20 | .prettierrc.js 21 | .prettierignore 22 | .pnpm-debug.log 23 | 24 | # BUILD FILES 25 | 26 | tsconfig.json 27 | tsup.config.ts 28 | 29 | # MARKDOWN 30 | 31 | readme.md 32 | changelog.md 33 | 34 | .env* 35 | .flaskenv* 36 | !.env.project 37 | !.env.vault -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | git-checks=false 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | example 2 | test 3 | lib/**/*.ts 4 | bin 5 | package 6 | demos/** 7 | *.ts 8 | *.js 9 | *.mjs 10 | *.cjs 11 | /tsconfig.json 12 | packages/schema/* -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | # FILES 2 | .env 3 | 4 | # DIRECTORIES 5 | node_modules 6 | theme 7 | -------------------------------------------------------------------------------- /docs/.npmrc: -------------------------------------------------------------------------------- 1 | shamefully-hoist=true 2 | -------------------------------------------------------------------------------- /docs/.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["stylelint-scss"], 3 | "extends": ["stylelint-config-rational-order"], 4 | "rules": { 5 | "indentation": 2, 6 | "block-no-empty": null, 7 | "color-no-invalid-hex": true, 8 | "comment-empty-line-before": [ 9 | "always", 10 | { 11 | "ignore": ["stylelint-commands", "after-comment"] 12 | } 13 | ], 14 | "declaration-colon-space-after": "always", 15 | "max-empty-lines": 2, 16 | "block-opening-brace-newline-after": "always-multi-line", 17 | "rule-empty-line-before": [ 18 | "always", 19 | { 20 | "except": ["first-nested"], 21 | "ignore": ["after-comment"] 22 | } 23 | ], 24 | "unit-whitelist": [ 25 | "px", 26 | "rem", 27 | "%", 28 | "s", 29 | "vh", 30 | "vw", 31 | "cm", 32 | "em", 33 | "deg" 34 | ] 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /docs/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | const purge = require('@fullhuman/postcss-purgecss'); 2 | const autoprefixer = require('autoprefixer'); 3 | const cssnano = require('cssnano'); 4 | 5 | module.exports = { 6 | plugins: [ 7 | autoprefixer(), 8 | cssnano({ 9 | preset: 'default' 10 | }), 11 | purge( 12 | { 13 | variables: true, 14 | content: [ 15 | 'public/**/*.html', 16 | 'public/**/*.js' 17 | ] 18 | } 19 | ) 20 | ] 21 | }; 22 | -------------------------------------------------------------------------------- /docs/public/assets/fonts/proxima-nova-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/assets/fonts/proxima-nova-bold.woff2 -------------------------------------------------------------------------------- /docs/public/assets/fonts/proxima-nova-light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/assets/fonts/proxima-nova-light.woff2 -------------------------------------------------------------------------------- /docs/public/assets/fonts/proxima-nova-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/assets/fonts/proxima-nova-regular.woff2 -------------------------------------------------------------------------------- /docs/public/docs/cli-commands/logging/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/cli-commands/logging/index.html -------------------------------------------------------------------------------- /docs/public/docs/features/metafield-sync/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/features/metafield-sync/index.html -------------------------------------------------------------------------------- /docs/public/docs/features/multistore-support/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/features/multistore-support/index.html -------------------------------------------------------------------------------- /docs/public/docs/features/remote-binding/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/features/remote-binding/index.html -------------------------------------------------------------------------------- /docs/public/docs/features/resource-control/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/features/resource-control/index.html -------------------------------------------------------------------------------- /docs/public/docs/features/strap-generator/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/features/strap-generator/index.html -------------------------------------------------------------------------------- /docs/public/docs/integrate/ci-solution/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/integrate/ci-solution/index.html -------------------------------------------------------------------------------- /docs/public/docs/integrate/git/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/integrate/git/index.html -------------------------------------------------------------------------------- /docs/public/docs/integrate/vscode/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/integrate/vscode/index.html -------------------------------------------------------------------------------- /docs/public/docs/introduction/boycotting-shopify-cli/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/introduction/boycotting-shopify-cli/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/clean/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/clean/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/config/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/config/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/export/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/export/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/import/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/import/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/input/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/input/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/log/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/log/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/output/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/output/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/paths/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/paths/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/esbuild/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/esbuild/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/markdown/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/markdown/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/postcss/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/postcss/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/sass/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/sass/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/sharp/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/sharp/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/sprite/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/sprite/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/svgo/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/svgo/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/tailwind/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/tailwind/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/processors/turndown/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/processors/turndown/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/publish/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/publish/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/spawn/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/spawn/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/transform/image/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/transform/image/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/transform/json/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/transform/json/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/transform/liquid/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/transform/liquid/index.html -------------------------------------------------------------------------------- /docs/public/docs/options/transform/svg/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/options/transform/svg/index.html -------------------------------------------------------------------------------- /docs/public/docs/plugins/basic-example/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/plugins/basic-example/index.html -------------------------------------------------------------------------------- /docs/public/docs/plugins/build-hooks/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/plugins/build-hooks/index.html -------------------------------------------------------------------------------- /docs/public/docs/plugins/conventions/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/plugins/conventions/index.html -------------------------------------------------------------------------------- /docs/public/docs/plugins/official-plugins/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/plugins/official-plugins/index.html -------------------------------------------------------------------------------- /docs/public/docs/plugins/overview/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/plugins/overview/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/frontmatter/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/frontmatter/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/modes/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/modes/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/publishing-themes/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/publishing-themes/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/redirects/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/redirects/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/required-files/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/required-files/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/terse-output/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/terse-output/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/theme-targets/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/theme-targets/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/troubleshoot/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/troubleshoot/index.html -------------------------------------------------------------------------------- /docs/public/docs/usage/version-control/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/public/docs/usage/version-control/index.html -------------------------------------------------------------------------------- /docs/public/include/breadcrumb/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/public/include/options/index.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /docs/public/include/paginate/index.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /docs/public/include/search/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/app/components/hovers.ts: -------------------------------------------------------------------------------- 1 | import papyrus from 'papyrus' 2 | import spx from 'spx'; 3 | import qvp from 'qvp'; 4 | 5 | /* -------------------------------------------- */ 6 | /* CLASS */ 7 | /* -------------------------------------------- */ 8 | 9 | export class Hovers extends spx.Component { 10 | 11 | 12 | static define = { 13 | state: { 14 | multiple: Boolean, 15 | persist: Boolean 16 | }, 17 | nodes: [ 18 | 'viewport' 19 | ] 20 | }; 21 | 22 | onmount () { 23 | 24 | papyrus.list().forEach 25 | 26 | } 27 | 28 | unmount () { 29 | 30 | this.relapse.destroy(); 31 | 32 | } 33 | 34 | private mobile () { 35 | 36 | this.relapse.config({ 37 | multiple: true, 38 | persist: false 39 | }); 40 | 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /docs/src/app/components/indicator.ts: -------------------------------------------------------------------------------- 1 | import spx, { SPX } from 'spx'; 2 | 3 | export class Indicator extends spx.Component { 4 | 5 | static define: SPX.Define = { 6 | nodes: [ 7 | 'marker' 8 | ] 9 | }; 10 | 11 | toggle ({ attrs: { list } }: SPX.Event<{ list: number }>) { 12 | 13 | console.log(this.dom.markerNodes); 14 | 15 | this.dom.markerNode.style.setProperty( 16 | 'transform', 17 | `translateY(${this.root.offsetTop}px)` 18 | ); 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /docs/src/app/components/sidebar.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-use-before-define */ 2 | import relapse, { Relapse } from 'relapse'; 3 | import spx from 'spx'; 4 | 5 | export class Sidebar extends spx.Component { 6 | 7 | static define = { 8 | state: { 9 | multiple: Boolean, 10 | open: { 11 | default: 0, 12 | typeof: Number 13 | } 14 | } 15 | }; 16 | 17 | onmount () { 18 | 19 | this.relapse ? this.relapse.reinit() : this.relapse = relapse(this.root); 20 | 21 | } 22 | 23 | unmount () { 24 | 25 | this.relapse.destroy(); 26 | 27 | } 28 | 29 | public relapse: Relapse; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /docs/src/assets/fonts/proxima-nova-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/fonts/proxima-nova-bold.woff2 -------------------------------------------------------------------------------- /docs/src/assets/fonts/proxima-nova-light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/fonts/proxima-nova-light.woff2 -------------------------------------------------------------------------------- /docs/src/assets/fonts/proxima-nova-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/fonts/proxima-nova-regular.woff2 -------------------------------------------------------------------------------- /docs/src/assets/img/1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/1.webp -------------------------------------------------------------------------------- /docs/src/assets/img/10.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/10.webp -------------------------------------------------------------------------------- /docs/src/assets/img/11.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/11.webp -------------------------------------------------------------------------------- /docs/src/assets/img/12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/12.webp -------------------------------------------------------------------------------- /docs/src/assets/img/13.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/13.webp -------------------------------------------------------------------------------- /docs/src/assets/img/14.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/14.webp -------------------------------------------------------------------------------- /docs/src/assets/img/15.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/15.webp -------------------------------------------------------------------------------- /docs/src/assets/img/16.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/16.webp -------------------------------------------------------------------------------- /docs/src/assets/img/17.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/17.webp -------------------------------------------------------------------------------- /docs/src/assets/img/18.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/18.webp -------------------------------------------------------------------------------- /docs/src/assets/img/19.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/19.webp -------------------------------------------------------------------------------- /docs/src/assets/img/2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/2.webp -------------------------------------------------------------------------------- /docs/src/assets/img/20.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/20.webp -------------------------------------------------------------------------------- /docs/src/assets/img/21.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/21.webp -------------------------------------------------------------------------------- /docs/src/assets/img/22.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/22.webp -------------------------------------------------------------------------------- /docs/src/assets/img/23.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/23.webp -------------------------------------------------------------------------------- /docs/src/assets/img/24.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/24.webp -------------------------------------------------------------------------------- /docs/src/assets/img/25.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/25.webp -------------------------------------------------------------------------------- /docs/src/assets/img/26.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/26.webp -------------------------------------------------------------------------------- /docs/src/assets/img/27.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/27.webp -------------------------------------------------------------------------------- /docs/src/assets/img/28.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/28.webp -------------------------------------------------------------------------------- /docs/src/assets/img/29.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/29.webp -------------------------------------------------------------------------------- /docs/src/assets/img/3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/3.webp -------------------------------------------------------------------------------- /docs/src/assets/img/30.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/30.webp -------------------------------------------------------------------------------- /docs/src/assets/img/4.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/4.webp -------------------------------------------------------------------------------- /docs/src/assets/img/5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/5.webp -------------------------------------------------------------------------------- /docs/src/assets/img/6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/6.webp -------------------------------------------------------------------------------- /docs/src/assets/img/7.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/7.webp -------------------------------------------------------------------------------- /docs/src/assets/img/8.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/8.webp -------------------------------------------------------------------------------- /docs/src/assets/img/9.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/9.webp -------------------------------------------------------------------------------- /docs/src/assets/img/social-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/assets/img/social-banner.png -------------------------------------------------------------------------------- /docs/src/assets/svg/anchor.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/assets/svg/arrow-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/assets/svg/check.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/assets/svg/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/assets/svg/chevron-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/assets/svg/chevron-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/assets/svg/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/assets/svg/home.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/assets/svg/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/assets/svg/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/assets/svg/minus-square.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/assets/svg/npm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /docs/src/assets/svg/plus-square.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/assets/svg/refresh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/sass/styles/tabs.scss: -------------------------------------------------------------------------------- 1 | .tabs { 2 | nav > button { 3 | color: $black; 4 | font-weight: 500; 5 | font-size: 0.895rem; 6 | font-family: Roboto, sans-serif !important; 7 | text-transform: uppercase; 8 | background-color: transparent; 9 | border: 0; 10 | border-bottom: 1px solid $cyan; 11 | cursor: pointer; 12 | 13 | 14 | &:hover, 15 | &:active, 16 | &:focus { 17 | color: $black; 18 | } 19 | 20 | &:last-child { 21 | margin-right: 0; 22 | } 23 | 24 | &[aria-selected="true"] { 25 | color: $black; 26 | background-color: $blue; 27 | } 28 | 29 | &[aria-selected="false"] { 30 | color: $white; 31 | } 32 | } 33 | 34 | .panel, 35 | .panel > ul { 36 | position: relative; 37 | 38 | > li { 39 | list-style-type: inherit; 40 | } 41 | } 42 | } 43 | 44 | [role="tabpanel"][aria-hidden="true"] { 45 | display: none; 46 | } 47 | -------------------------------------------------------------------------------- /docs/src/views/docs/cli-commands/filtering.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Filtering' 3 | layout: base 4 | permalink: '/cli/filtering/index.html' 5 | prev: 6 | label: 'Targeting' 7 | uri: '/cli/targeting' 8 | next: 9 | label: 'Filtering' 10 | uri: '/cli/filtering' 11 | navs: 12 | - 'Filtering' 13 | - 'Patterns' 14 | - 'Mode Specific' 15 | flags: 16 | - '--filter ' 17 | - '--filter ' 18 | - '--filter ' 19 | --- 20 | -------------------------------------------------------------------------------- /docs/src/views/docs/cli-commands/logging.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/cli-commands/logging.md -------------------------------------------------------------------------------- /docs/src/views/docs/cli-commands/modes.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'CLI Modes' 3 | layout: base 4 | permalink: '/cli/modes/index.html' 5 | prev: 6 | label: 'Targeting' 7 | uri: '/cli/targeting' 8 | next: 9 | label: 'Filtering' 10 | uri: '/cli/filtering' 11 | navs: 12 | - 'Modes' 13 | flags: 14 | - '--watch' 15 | - '--build' 16 | - '--upload' 17 | - '--import' 18 | - '--export' 19 | --- 20 | -------------------------------------------------------------------------------- /docs/src/views/docs/cli-commands/operations.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Operations' 3 | layout: base 4 | permalink: '/cli/operations/index.html' 5 | prev: 6 | label: 'Targeting' 7 | uri: '/cli/targeting' 8 | next: 9 | label: 'Resources' 10 | uri: '/cli/filtering' 11 | navs: 12 | - 'Operations' 13 | - 'Modes' 14 | - 'Examples' 15 | flags: 16 | - '--force' 17 | - '--pull' 18 | - '--push' 19 | - '--delete' 20 | --- 21 | -------------------------------------------------------------------------------- /docs/src/views/docs/cli-commands/overview.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Overview' 3 | layout: base 4 | permalink: '/cli/overview/index.html' 5 | prev: 6 | label: 'Language Support' 7 | uri: '/introduction/language-support' 8 | next: 9 | label: 'Commands' 10 | uri: '/cli/targeting' 11 | navs: 12 | - Overview 13 | - Interface 14 | - Colors 15 | - Aliases 16 | - Grouping 17 | - Info 18 | - Errors 19 | - Warnings 20 | --- 21 | 22 | # Overview 23 | 24 | # Interface 25 | 26 | # Colors 27 | 28 | # Aliases 29 | 30 | # Grouping 31 | 32 | # Info 33 | 34 | # Errors 35 | 36 | # Warnings 37 | -------------------------------------------------------------------------------- /docs/src/views/docs/cli-commands/resources.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Resources' 3 | layout: base 4 | permalink: '/cli/resources/index.html' 5 | prev: 6 | label: 'Targeting' 7 | uri: '/cli/targeting' 8 | next: 9 | label: 'Resources' 10 | uri: '/cli/filtering' 11 | navs: 12 | - 'Resources' 13 | - 'Aliases' 14 | - 'Filtering' 15 | - 'Examples' 16 | flags: 17 | - '--resource themes' 18 | - '--resource pages' 19 | - '--resource metafields' 20 | - '--resource redirects' 21 | - '--resource files' 22 | --- 23 | -------------------------------------------------------------------------------- /docs/src/views/docs/cli-commands/targeting.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Targeting' 3 | layout: base 4 | permalink: '/cli/targeting/index.html' 5 | prev: 6 | label: 'CLI Overview' 7 | uri: '/cli/overview' 8 | next: 9 | label: 'Modes' 10 | uri: '/cli/modes' 11 | navs: 12 | - Targeting 13 | flags: 14 | - 'sy ' 15 | - 'sy ' 16 | - 'sy --store' 17 | --- 18 | -------------------------------------------------------------------------------- /docs/src/views/docs/cli-commands/versioning.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Versioning' 3 | layout: base 4 | permalink: '/cli/versioning/index.html' 5 | prev: 6 | label: 'Targeting' 7 | uri: '/cli/targeting' 8 | next: 9 | label: 'Resources' 10 | uri: '/cli/filtering' 11 | navs: 12 | - 'Versioning' 13 | - 'Semantic' 14 | - 'Examples' 15 | flags: 16 | - '--patch' 17 | - '--minor' 18 | - '--major' 19 | --- 20 | 21 | # Versioning 22 | 23 | # Semantic 24 | 25 | # Examples 26 | 27 | ### --patch 28 | 29 | ### --minor 30 | 31 | ### --major 32 | -------------------------------------------------------------------------------- /docs/src/views/docs/features/metafield-sync.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/features/metafield-sync.md -------------------------------------------------------------------------------- /docs/src/views/docs/features/multistore-support.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/features/multistore-support.md -------------------------------------------------------------------------------- /docs/src/views/docs/features/remote-binding.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/features/remote-binding.md -------------------------------------------------------------------------------- /docs/src/views/docs/features/resource-control.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/features/resource-control.md -------------------------------------------------------------------------------- /docs/src/views/docs/features/strap-generator.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/features/strap-generator.md -------------------------------------------------------------------------------- /docs/src/views/docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: '/index.html' 3 | layout: base.liquid 4 | title: 'Syncify CLI' 5 | --- 6 | 7 | The **Essential** and **indispensable** toolkit for Shopify theme development, Syncify exists as a superior alternative to the woefully inadequate Shopify CLI, bringing unmatched capabilities and flexibility that aligns with the nuanced needs of professional theme developers. 8 | -------------------------------------------------------------------------------- /docs/src/views/docs/integrate/ci-solution.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/integrate/ci-solution.md -------------------------------------------------------------------------------- /docs/src/views/docs/integrate/git.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/integrate/git.md -------------------------------------------------------------------------------- /docs/src/views/docs/integrate/vscode.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/integrate/vscode.md -------------------------------------------------------------------------------- /docs/src/views/docs/introduction/boycotting-shopify-cli.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/introduction/boycotting-shopify-cli.md -------------------------------------------------------------------------------- /docs/src/views/docs/introduction/examples.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Introduction' 3 | layout: base.liquid 4 | permalink: '/examples/index.html' 5 | anchors: 6 | - 'What is Syncify?' 7 | - 'Key Features' 8 | - 'Developer Driven Innovation' 9 | - 'Rationale' 10 | --- 11 | -------------------------------------------------------------------------------- /docs/src/views/docs/options/clean.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/clean.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/config.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/config.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/export.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/export.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/import.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/import.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/input.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/input.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/log.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/log.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/output.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/output.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/paths.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/paths.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/esbuild.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/esbuild.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/markdown.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/markdown.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/postcss.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/postcss.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/sass.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/sass.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/sharp.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/sharp.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/sprite.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/sprite.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/svgo.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/svgo.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/tailwind.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/tailwind.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/processors/turndown.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/processors/turndown.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/publish.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/publish.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/spawn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/spawn.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/transform/image.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/transform/image.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/transform/json.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/transform/json.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/transform/liquid.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/transform/liquid.md -------------------------------------------------------------------------------- /docs/src/views/docs/options/transform/svg.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/options/transform/svg.md -------------------------------------------------------------------------------- /docs/src/views/docs/plugins/basic-example.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/plugins/basic-example.md -------------------------------------------------------------------------------- /docs/src/views/docs/plugins/build-hooks.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/plugins/build-hooks.md -------------------------------------------------------------------------------- /docs/src/views/docs/plugins/conventions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/plugins/conventions.md -------------------------------------------------------------------------------- /docs/src/views/docs/plugins/official-plugins.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/plugins/official-plugins.md -------------------------------------------------------------------------------- /docs/src/views/docs/plugins/overview.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/plugins/overview.md -------------------------------------------------------------------------------- /docs/src/views/docs/setup/checklist.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Checklist' 3 | layout: base.liquid 4 | permalink: '/setup/checklist/index.html' 5 | anchors: 6 | - 'Checklist' 7 | --- 8 | 9 | # Checklist 10 | 11 | If you've followed the [authentication](/setup/authentication/) and [references](/setup/references/) steps, your theme will be ready for Syncify. This page aims to help showcase how things might look and provide you with some additional context. 12 | 13 | # todo 14 | -------------------------------------------------------------------------------- /docs/src/views/docs/usage/frontmatter.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/frontmatter.md -------------------------------------------------------------------------------- /docs/src/views/docs/usage/modes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/modes.md -------------------------------------------------------------------------------- /docs/src/views/docs/usage/publishing-themes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/publishing-themes.md -------------------------------------------------------------------------------- /docs/src/views/docs/usage/redirects.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/redirects.md -------------------------------------------------------------------------------- /docs/src/views/docs/usage/required-files.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/required-files.md -------------------------------------------------------------------------------- /docs/src/views/docs/usage/syncify-cli.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Syncify CLI' 3 | layout: base 4 | permalink: '/usage/syncify-cli/index.html' 5 | anchors: 6 | - 'Syncify CLI' 7 | --- 8 | 9 | # Syncify CLI 10 | -------------------------------------------------------------------------------- /docs/src/views/docs/usage/terse-output.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/terse-output.md -------------------------------------------------------------------------------- /docs/src/views/docs/usage/theme-targets.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/theme-targets.md -------------------------------------------------------------------------------- /docs/src/views/docs/usage/troubleshoot.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/troubleshoot.md -------------------------------------------------------------------------------- /docs/src/views/docs/usage/version-control.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/docs/src/views/docs/usage/version-control.md -------------------------------------------------------------------------------- /docs/src/views/include/authentication.liquid: -------------------------------------------------------------------------------- 1 |
2 | {%- for auth in authentication -%} 3 |
4 |

{{- auth.group -}}

5 |

{{- auth.description -}}

6 |
    7 | {%- for scope in auth.scopes -%} 8 |
  • 9 | {{- scope -}} 10 |
  • 11 | {%- endfor -%} 12 |
13 |
14 | {%- endfor -%} 15 |
16 |
19 |
20 | Screencast 21 |
22 | 30 |
31 |
32 |
-------------------------------------------------------------------------------- /docs/src/views/include/options.liquid: -------------------------------------------------------------------------------- 1 |
2 | {%- for item in options -%} 3 |
4 | 5 | {{- item.name -}} 6 | 7 |
8 | {{- item.description | markdown -}} 9 |
10 |
11 | {%- endfor -%} 12 |
13 | -------------------------------------------------------------------------------- /docs/src/views/include/search.liquid: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": [ 3 | "node_modules/**", 4 | "public" 5 | ], 6 | "include": [ 7 | "src/app/**/*.ts" 8 | ], 9 | "compilerOptions": { 10 | "target": "ES6", 11 | "ignoreDeprecations": "5.0", 12 | "lib": [ 13 | "es2020", 14 | "dom", 15 | "dom.iterable" 16 | ], 17 | "module": "ES6", 18 | "allowSyntheticDefaultImports": true, 19 | "moduleResolution": "node", 20 | "noEmitOnError": true, 21 | "baseUrl": ".", 22 | "paths": { 23 | "types": [ 24 | "./scripts/eleventy.d.ts" 25 | ] 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /docs/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup'; 2 | 3 | export default defineConfig( 4 | { 5 | entry: { 6 | 'bundle.min': './src/app/bundle.ts', 7 | }, 8 | outDir: './public', 9 | outExtension: () => ({ js: '.js' }), 10 | clean: false, 11 | treeshake: false, 12 | splitting: false, 13 | minify: true, 14 | target: 'es2017', 15 | platform: 'browser', 16 | format: [ 17 | 'iife' 18 | ] 19 | } 20 | ); 21 | -------------------------------------------------------------------------------- /examples/using-paths/.gitignore: -------------------------------------------------------------------------------- 1 | theme 2 | node_modules -------------------------------------------------------------------------------- /examples/using-paths/.liquidrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "shopify", 3 | "files": { 4 | "settings": "source/config/settings_schema.json", 5 | "locales": "source/locales/en.default.json", 6 | "schema": [ 7 | "source/schema/*.schema" 8 | ], 9 | "sections": [ 10 | "theme/sections/*.liquid" 11 | ], 12 | "snippets": [ 13 | "theme/snippets/*.liquid" 14 | ] 15 | }, 16 | "format": { 17 | "ignore": [], 18 | "liquid": { 19 | "commentIndent": true, 20 | "forceFilter": 3, 21 | "forceArgument": 3, 22 | "dedentTagList": [ 23 | "schema" 24 | ] 25 | }, 26 | "markup": { 27 | "forceIndent": true, 28 | "forceAttribute": 2 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /examples/using-paths/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "unwantedRecommendations": [ 3 | "shopify.theme-check-vscode", 4 | "neilding.language-liquid" 5 | ], 6 | "recommendations": [ 7 | "vscode-icons-team.vscode-icons", 8 | "sissel.shopify-liquid", 9 | "dbaeumer.vscode-eslint" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-paths/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "json.schemas": [ 3 | { 4 | "url": "https://unpkg.com/@syncify/schema/syncify.json", 5 | "fileMatch": [ 6 | "package.json" 7 | ] 8 | } 9 | ], 10 | "files.exclude": { 11 | "**/.git": true, 12 | "**/node_modules": true, 13 | "**/pnpm-lock.yaml": true 14 | }, 15 | "[liquid]": { 16 | "editor.formatOnSave": true, 17 | "editor.defaultFormatter": "sissel.shopify-liquid" 18 | } 19 | } -------------------------------------------------------------------------------- /examples/using-paths/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/using-paths", 3 | "version": "0.1.0", 4 | "description": "Syncify example usage with custom paths", 5 | "private": true, 6 | "license": "MIT", 7 | "syncify": { 8 | "stores": { 9 | "domain": "syncify", 10 | "themes": { 11 | "dusk": 137200533745 12 | } 13 | } 14 | }, 15 | "devDependencies": { 16 | "@syncify/cli": "workspace:0.3.0-beta", 17 | "autoprefixer": "^10.4.16", 18 | "esbuild": "^0.19.5", 19 | "postcss": "^8.4.31", 20 | "svgo": "^3.0.2" 21 | } 22 | } -------------------------------------------------------------------------------- /examples/using-paths/src/data/settings/settings_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "current": {}, 3 | "presets": {} 4 | } 5 | -------------------------------------------------------------------------------- /examples/using-paths/src/data/settings/settings_schema.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "theme_info", 4 | "theme_name": "Tailwind Example", 5 | "theme_author": "Syncify", 6 | "theme_version": "1.0.0", 7 | "theme_documentation_url": "https://github.com/panoply/syncify", 8 | "theme_support_url": "https://github.com/panoply/syncify" 9 | }, 10 | { 11 | "name": "font", 12 | "settings": [ 13 | { 14 | "type": "font_picker", 15 | "id": "body_font", 16 | "label": "Font Family", 17 | "default": "mono" 18 | } 19 | ] 20 | } 21 | ] -------------------------------------------------------------------------------- /examples/using-paths/src/data/translations/en.default.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/using-paths/src/data/translations/en.default.schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/using-paths/src/scripts/bundle.ts: -------------------------------------------------------------------------------- 1 | import { bar } from './components/bar'; 2 | import { foo } from './components/foo'; 3 | 4 | export default function example () { 5 | 6 | foo('example of foo'); 7 | bar('example of bar'); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-paths/src/scripts/components/bar.ts: -------------------------------------------------------------------------------- 1 | export function bar (text: string) { 2 | 3 | console.log(text); 4 | 5 | } 6 | -------------------------------------------------------------------------------- /examples/using-paths/src/scripts/components/foo.ts: -------------------------------------------------------------------------------- 1 | export function foo (text: string) { 2 | 3 | console.log(text); 4 | 5 | } 6 | -------------------------------------------------------------------------------- /examples/using-paths/src/styles/base.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #f8f8f8; 3 | font-family: monospace; 4 | } 5 | 6 | .contain { 7 | display: flex; 8 | align-items: center; 9 | justify-content: center; 10 | flex-direction: column; 11 | width: 100%; 12 | height: 95vh; 13 | } 14 | 15 | .logo { 16 | width: 120px; 17 | color: #dfdede; 18 | margin-bottom: 10px; 19 | } 20 | 21 | .text { 22 | font-size: 22px; 23 | width: 400px; 24 | text-align: center; 25 | text-transform: uppercase; 26 | letter-spacing: 5px; 27 | margin: 0; 28 | color: #d2d2d2; 29 | } 30 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/customers/account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/account template.

2 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/customers/activate_account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/activate_account template.

2 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/customers/addresses.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/addresses template.

2 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/customers/login.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/login template.

2 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/customers/order.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/order template.

2 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/customers/register.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/register template.

2 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/customers/reset_password.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/reset_password template.

2 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/404.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "404", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/article.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "article" 5 | } 6 | }, 7 | "order": ["main"] 8 | } 9 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/blog.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "blog", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "cart", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "collection", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/gift_card.liquid: -------------------------------------------------------------------------------- 1 |

This is the gift card template

2 | -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "example", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/list-collections.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/page.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/password.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": "password", 3 | "sections": { 4 | "main": { 5 | "type": "page", 6 | "settings": {} 7 | } 8 | }, 9 | "order": [ 10 | "main" 11 | ] 12 | } -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-paths/src/views/templates/search.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-paths/src/views/theme.liquid: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 11 | 12 | 13 | {{ page_title }} 14 | 15 | 16 | 17 | 20 | 21 | {{ 'style.css' | asset_url | stylesheet_tag }} 22 | 23 | {{ content_for_header }} 24 | 25 | 26 | 27 | 28 | 29 | {{ content_for_layout }} 30 | 31 | 32 | -------------------------------------------------------------------------------- /examples/using-sass/.gitignore: -------------------------------------------------------------------------------- 1 | theme 2 | node_modules -------------------------------------------------------------------------------- /examples/using-sass/.liquidrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "shopify", 3 | "files": { 4 | "settings": "source/config/settings_schema.json", 5 | "locales": "source/locales/en.default.json", 6 | "schema": [ 7 | "source/schema/*.schema" 8 | ], 9 | "sections": [ 10 | "theme/sections/*.liquid" 11 | ], 12 | "snippets": [ 13 | "theme/snippets/*.liquid" 14 | ] 15 | }, 16 | "format": { 17 | "ignore": [ 18 | "theme/**/*" 19 | ], 20 | "liquid": { 21 | "commentIndent": true, 22 | "forceFilter": 3, 23 | "forceArgument": 3, 24 | "dedentTagList": [ 25 | "schema" 26 | ] 27 | }, 28 | "markup": { 29 | "forceIndent": true, 30 | "forceAttribute": 2 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /examples/using-sass/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "unwantedRecommendations": [ 3 | "shopify.theme-check-vscode", 4 | "neilding.language-liquid" 5 | ], 6 | "recommendations": [ 7 | "vscode-icons-team.vscode-icons", 8 | "sissel.shopify-liquid", 9 | "dbaeumer.vscode-eslint", 10 | "zignd.html-css-class-completion" 11 | ] 12 | } -------------------------------------------------------------------------------- /examples/using-sass/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "json.schemas": [ 3 | { 4 | "url": "https://unpkg.com/@syncify/schema/config.json", 5 | "fileMatch": [ 6 | "syncify.config.json" 7 | ] 8 | } 9 | ], 10 | "files.exclude": { 11 | "**/.git": true, 12 | "**/node_modules": true, 13 | "**/pnpm-lock.yaml": true 14 | }, 15 | "html-css-class-completion.includeGlobPattern": "theme/**/*.{css,liquid}", 16 | "html-css-class-completion.CSSLanguages": [ 17 | "css" 18 | ], 19 | "html-css-class-completion.HTMLLanguages": [ 20 | "liquid", 21 | "html", 22 | "markdown" 23 | ], 24 | "[liquid]": { 25 | "editor.formatOnSave": true, 26 | "editor.defaultFormatter": "sissel.shopify-liquid" 27 | } 28 | } -------------------------------------------------------------------------------- /examples/using-sass/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/using-sass", 3 | "version": "0.1.0", 4 | "description": "Syncify example usage with SASS transforms", 5 | "private": true, 6 | "license": "MIT", 7 | "syncify": { 8 | "stores": { 9 | "domain": "syncify", 10 | "themes": { 11 | "dusk": 137588506865 12 | } 13 | } 14 | }, 15 | "devDependencies": { 16 | "@syncify/cli": "workspace:0.3.0-beta", 17 | "sass": "^1.69.5" 18 | }, 19 | "dependencies": { 20 | "bootstrap": "^5.3.2" 21 | } 22 | } -------------------------------------------------------------------------------- /examples/using-sass/source/assets/scripts/bundle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/examples/using-sass/source/assets/scripts/bundle.js -------------------------------------------------------------------------------- /examples/using-sass/source/assets/styles/bootstrap.scss: -------------------------------------------------------------------------------- 1 | @import 'scss/bootstrap'; 2 | -------------------------------------------------------------------------------- /examples/using-sass/source/assets/styles/stylesheet.scss: -------------------------------------------------------------------------------- 1 | .logo { 2 | display: flex; 3 | width: 80px; 4 | color: #dfdede; 5 | margin-bottom: 10px; 6 | } 7 | 8 | .bg-gray { 9 | background-color: #f8f8f8; 10 | } 11 | -------------------------------------------------------------------------------- /examples/using-sass/source/data/config/settings_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "current": {}, 3 | "presets": {} 4 | } 5 | -------------------------------------------------------------------------------- /examples/using-sass/source/data/config/settings_schema.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "theme_info", 4 | "theme_name": "Tailwind Example", 5 | "theme_author": "Syncify", 6 | "theme_version": "1.0.0", 7 | "theme_documentation_url": "https://github.com/panoply/syncify", 8 | "theme_support_url": "https://github.com/panoply/syncify" 9 | }, 10 | { 11 | "name": "font", 12 | "settings": [ 13 | { 14 | "type": "font_picker", 15 | "id": "body_font", 16 | "label": "Font Family", 17 | "default": "mono" 18 | } 19 | ] 20 | } 21 | ] -------------------------------------------------------------------------------- /examples/using-sass/source/data/locales/en.default.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/using-sass/source/data/locales/en.default.schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/schema/page.schema: -------------------------------------------------------------------------------- 1 | { 2 | "example": [ 3 | { 4 | "type": "text", 5 | "label": "Title", 6 | "id": "title", 7 | "default": "Using Sass", 8 | "info": "An example section schema setting" 9 | }, 10 | { 11 | "type": "textarea", 12 | "label": "Description", 13 | "id": "description", 14 | "info": "Description of this example", 15 | "default": "This Syncify example is using SASS Transforms." 16 | }, 17 | { 18 | "type": "text", 19 | "id": "url", 20 | "label": "URL", 21 | "default": "https://github.com/panoply/syncify", 22 | "info": "The Github repository URL" 23 | } 24 | ] 25 | } -------------------------------------------------------------------------------- /examples/using-sass/source/views/sections/page.liquid: -------------------------------------------------------------------------------- 1 |
2 |
3 |

4 | {{ section.settings.title }} 5 |

6 |

7 | {{ section.settings.description }} 8 |

9 |
10 |
11 | 12 | 13 | {% schema %} 14 | { 15 | "name": "page", 16 | "settings": [ 17 | { 18 | "$ref": "page.example" 19 | } 20 | ] 21 | } 22 | {% endschema %} -------------------------------------------------------------------------------- /examples/using-sass/source/views/snippets/navbar.liquid: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/404.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "404", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/article.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "article" 5 | } 6 | }, 7 | "order": ["main"] 8 | } 9 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/blog.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "blog", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "cart", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "collection", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "example", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/list-collections.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/page.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/password.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": "password", 3 | "sections": { 4 | "main": { 5 | "type": "page", 6 | "settings": {} 7 | } 8 | }, 9 | "order": [ 10 | "main" 11 | ] 12 | } -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/json/search.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/liquid/customers/account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/account template.

2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/liquid/customers/activate_account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/activate_account template.

2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/liquid/customers/addresses.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/addresses template.

2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/liquid/customers/login.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/login template.

2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/liquid/customers/order.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/order template.

2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/liquid/customers/register.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/register template.

2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/liquid/customers/reset_password.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/reset_password template.

2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/templates/liquid/gift_card.liquid: -------------------------------------------------------------------------------- 1 |

This is the gift card template

2 | -------------------------------------------------------------------------------- /examples/using-sass/source/views/theme.liquid: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 11 | 12 | 13 | {{ page_title }} 14 | 15 | 16 | 19 | 20 | {{ 'bootstrap.min.css' | asset_url | stylesheet_tag }} 21 | {{ 'stylesheet.min.css' | asset_url | stylesheet_tag }} 22 | 23 | {{ content_for_header }} 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | {% render 'navbar' %} 32 | 33 | {{ content_for_layout }} 34 | 35 |
36 | 37 | -------------------------------------------------------------------------------- /examples/using-schema/.gitignore: -------------------------------------------------------------------------------- 1 | theme 2 | node_modules -------------------------------------------------------------------------------- /examples/using-schema/.liquidrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "shopify", 3 | "files": { 4 | "settings": "source/config/settings_schema.json", 5 | "locales": "source/locales/en.default.json", 6 | "schema": [ 7 | "source/schema/*.schema" 8 | ], 9 | "sections": [ 10 | "theme/sections/*.liquid" 11 | ], 12 | "snippets": [ 13 | "theme/snippets/*.liquid" 14 | ] 15 | }, 16 | "format": { 17 | "ignore": [], 18 | "liquid": { 19 | "commentIndent": true, 20 | "forceFilter": 3, 21 | "forceArgument": 3, 22 | "dedentTagList": [ 23 | "schema" 24 | ] 25 | }, 26 | "markup": { 27 | "forceIndent": true, 28 | "forceAttribute": 2 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /examples/using-schema/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "unwantedRecommendations": [ 3 | "shopify.theme-check-vscode", 4 | "neilding.language-liquid" 5 | ], 6 | "recommendations": [ 7 | "vscode-icons-team.vscode-icons", 8 | "sissel.shopify-liquid", 9 | "dbaeumer.vscode-eslint" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-schema/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "json.schemas": [ 3 | { 4 | "url": "https://unpkg.com/@syncify/schema/syncify.json", 5 | "fileMatch": [ 6 | "package.json" 7 | ] 8 | } 9 | ], 10 | "files.exclude": { 11 | "**/.git": true, 12 | "**/node_modules": true, 13 | "**/pnpm-lock.yaml": true 14 | }, 15 | "[liquid]": { 16 | "editor.formatOnSave": true, 17 | "editor.defaultFormatter": "sissel.shopify-liquid" 18 | } 19 | } -------------------------------------------------------------------------------- /examples/using-schema/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/using-schema", 3 | "version": "0.1.0", 4 | "description": "Syncify example usage with shared schema", 5 | "private": true, 6 | "license": "MIT", 7 | "syncify": { 8 | "stores": { 9 | "domain": "syncify", 10 | "themes": { 11 | "dusk": 137200533745 12 | } 13 | }, 14 | "config": { 15 | "paths": { 16 | "config": "source/data/config/*.json", 17 | "locales": "source/data/locales/*.json", 18 | "layout": "source/theme.liquid" 19 | }, 20 | "transform": { 21 | "style": { 22 | "assets/stylesheet": "source/assets/*.css" 23 | }, 24 | "svg": { 25 | "snippets/icon.[file]": { 26 | "input": "source/assets/*.svg", 27 | "format": "file" 28 | } 29 | } 30 | } 31 | } 32 | }, 33 | "devDependencies": { 34 | "@syncify/cli": "workspace:0.3.0-beta" 35 | } 36 | } -------------------------------------------------------------------------------- /examples/using-schema/source/assets/base.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #f8f8f8; 3 | font-family: monospace; 4 | } 5 | 6 | .contain { 7 | display: flex; 8 | align-items: center; 9 | justify-content: center; 10 | flex-direction: column; 11 | width: 100%; 12 | height: 95vh; 13 | } 14 | 15 | .logo { 16 | width: 120px; 17 | color: #dfdede; 18 | margin-bottom: 10px; 19 | } 20 | 21 | .text { 22 | font-size: 22px; 23 | width: 400px; 24 | text-align: center; 25 | text-transform: uppercase; 26 | letter-spacing: 5px; 27 | margin: 0; 28 | color: #d2d2d2; 29 | } 30 | -------------------------------------------------------------------------------- /examples/using-schema/source/assets/forms.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/examples/using-schema/source/assets/forms.css -------------------------------------------------------------------------------- /examples/using-schema/source/data/config/settings_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "current": {}, 3 | "presets": {} 4 | } 5 | -------------------------------------------------------------------------------- /examples/using-schema/source/data/config/settings_schema.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "theme_info", 4 | "theme_name": "Tailwind Example", 5 | "theme_author": "Syncify", 6 | "theme_version": "1.0.0", 7 | "theme_documentation_url": "https://github.com/panoply/syncify", 8 | "theme_support_url": "https://github.com/panoply/syncify" 9 | }, 10 | { 11 | "name": "font", 12 | "settings": [ 13 | { 14 | "type": "font_picker", 15 | "id": "body_font", 16 | "label": "Font Family", 17 | "default": "mono" 18 | } 19 | ] 20 | } 21 | ] -------------------------------------------------------------------------------- /examples/using-schema/source/data/locales/en.default.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/using-schema/source/data/locales/en.default.schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/using-schema/source/pages/contact.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/examples/using-schema/source/pages/contact.md -------------------------------------------------------------------------------- /examples/using-schema/source/schema/page.schema: -------------------------------------------------------------------------------- 1 | { 2 | "example": [ 3 | { 4 | "type": "text", 5 | "label": "Title", 6 | "id": "title", 7 | "default": "Syncify", 8 | "info": "An example section schema setting" 9 | }, 10 | { 11 | "type": "url", 12 | "id": "url", 13 | "label": "URL", 14 | "default": "https://github.com/panoply/syncify", 15 | "info": "The Github repository URL" 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /examples/using-schema/source/sections/form.liquid: -------------------------------------------------------------------------------- 1 |
2 | 3 | {% schema %} 4 | { 5 | "name": "form", 6 | "settings": [ 7 | { 8 | "$ref": "fields.checkbox" 9 | } 10 | ] 11 | } 12 | {% endschema %} -------------------------------------------------------------------------------- /examples/using-schema/source/sections/page.liquid: -------------------------------------------------------------------------------- 1 |
2 | 3 | 9 | 10 |

11 | {{ section.settings.title }} 12 |

13 | 14 |
15 | 16 | {% schema %} 17 | { 18 | "name": "page", 19 | "settings": [ 20 | { 21 | "$ref": "page.example" 22 | } 23 | ] 24 | } 25 | {% endschema %} -------------------------------------------------------------------------------- /examples/using-schema/source/snippets/navbar.liquid: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/404.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "404", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/article.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "article" 5 | } 6 | }, 7 | "order": ["main"] 8 | } 9 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/blog.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "blog", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "cart", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "collection", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/customers/account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/account template.

2 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/customers/activate_account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/activate_account template.

2 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/customers/addresses.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/addresses template.

2 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/customers/login.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/login template.

2 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/customers/order.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/order template.

2 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/customers/register.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/register template.

2 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/customers/reset_password.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/reset_password template.

2 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/gift_card.liquid: -------------------------------------------------------------------------------- 1 |

This is the gift card template

2 | -------------------------------------------------------------------------------- /examples/using-schema/source/templates/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "example", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-schema/source/templates/list-collections.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-schema/source/templates/page.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-schema/source/templates/password.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": "password", 3 | "sections": { 4 | "main": { 5 | "type": "page", 6 | "settings": {} 7 | } 8 | }, 9 | "order": [ 10 | "main" 11 | ] 12 | } -------------------------------------------------------------------------------- /examples/using-schema/source/templates/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-schema/source/templates/search.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-schema/source/theme.liquid: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 11 | 12 | 13 | {{ page_title }} 14 | 15 | 16 | 19 | 20 | {{ 'style.css' | asset_url | stylesheet_tag }} 21 | 22 | {{ content_for_header }} 23 | 24 | 25 | 26 | 27 | 28 | {% render 'navbar' %} 29 | {{ content_for_layout }} 30 | 31 | 32 | -------------------------------------------------------------------------------- /examples/using-tailwind/.gitignore: -------------------------------------------------------------------------------- 1 | theme 2 | node_modules -------------------------------------------------------------------------------- /examples/using-tailwind/.liquidrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "shopify", 3 | "files": { 4 | "settings": "source/config/settings_schema.json", 5 | "locales": "source/locales/en.default.json", 6 | "schema": [ 7 | "source/schema/*.schema" 8 | ], 9 | "sections": [ 10 | "theme/sections/*.liquid" 11 | ], 12 | "snippets": [ 13 | "theme/snippets/*.liquid" 14 | ] 15 | }, 16 | "format": { 17 | "ignore": [], 18 | "liquid": { 19 | "commentIndent": true, 20 | "forceFilter": 3, 21 | "forceArgument": 3, 22 | "dedentTagList": [ 23 | "schema" 24 | ] 25 | }, 26 | "markup": { 27 | "forceIndent": true, 28 | "forceAttribute": 2, 29 | "ignoreJS": true 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /examples/using-tailwind/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "unwantedRecommendations": [ 3 | "shopify.theme-check-vscode", 4 | "neilding.language-liquid" 5 | ], 6 | "recommendations": [ 7 | "vscode-icons-team.vscode-icons", 8 | "esbenp.prettier-vscode", 9 | "sissel.shopify-liquid", 10 | "bradlc.vscode-tailwindcss", 11 | "dbaeumer.vscode-eslint" 12 | ] 13 | } -------------------------------------------------------------------------------- /examples/using-tailwind/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "json.schemas": [ 3 | { 4 | "url": "https://unpkg.com/@syncify/schema/syncify.json", 5 | "fileMatch": [ 6 | "package.json" 7 | ] 8 | } 9 | ], 10 | "files.exclude": { 11 | "**/.git": true, 12 | "**/node_modules": true, 13 | "**/pnpm-lock.yaml": true 14 | }, 15 | "files.associations": { 16 | "*.css": "tailwindcss" 17 | }, 18 | "editor.quickSuggestions": { 19 | "strings": "on" 20 | }, 21 | "[liquid]": { 22 | "editor.formatOnSave": false, 23 | "editor.defaultFormatter": "sissel.shopify-liquid" 24 | } 25 | } -------------------------------------------------------------------------------- /examples/using-tailwind/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/using-tailwind", 3 | "version": "0.1.0", 4 | "description": "Syncify example usage with Tailwind", 5 | "private": true, 6 | "scripts": { 7 | "dev": "sy -w", 8 | "build": "sy -b", 9 | "publish": "" 10 | }, 11 | "license": "MIT", 12 | "stylelint": { 13 | "extends": "@syncify/stylelint-config" 14 | }, 15 | "syncify": { 16 | "stores": { 17 | "domain": "syncify", 18 | "themes": { 19 | "dusk": 137200533745 20 | } 21 | } 22 | }, 23 | "devDependencies": { 24 | "@syncify/cli": "workspace:0.3.0-beta", 25 | "@syncify/stylelint-config": "workspace:^", 26 | "autoprefixer": "^10.4.16", 27 | "tailwindcss": "^3.3.3" 28 | } 29 | } -------------------------------------------------------------------------------- /examples/using-tailwind/source/config/settings_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "current": {}, 3 | "presets": {} 4 | } 5 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/config/settings_schema.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "theme_info", 4 | "theme_name": "Tailwind Example", 5 | "theme_author": "Syncify", 6 | "theme_version": "1.0.0", 7 | "theme_documentation_url": "https://github.com/panoply/syncify", 8 | "theme_support_url": "https://github.com/panoply/syncify" 9 | }, 10 | { 11 | "name": "font", 12 | "settings": [ 13 | { 14 | "type": "font_picker", 15 | "id": "body_font", 16 | "label": "Font Family", 17 | "default": "mono" 18 | } 19 | ] 20 | } 21 | ] -------------------------------------------------------------------------------- /examples/using-tailwind/source/locales/en.default.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/locales/en.default.schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/schema/page.schema: -------------------------------------------------------------------------------- 1 | { 2 | "example": [ 3 | { 4 | "type": "text", 5 | "label": "Title", 6 | "id": "title", 7 | "default": "Syncify", 8 | "info": "An example section schema setting" 9 | }, 10 | { 11 | "type": "text", 12 | "id": "url", 13 | "label": "URL", 14 | "default": "https://github.com/panoply/syncify", 15 | "info": "The Github repository URL." 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /examples/using-tailwind/source/sections/page.liquid: -------------------------------------------------------------------------------- 1 |
2 | 3 | 9 | 10 | 13 | 14 |
15 | 16 | {% schema %} 17 | { 18 | "name": "page", 19 | "settings": [ 20 | { 21 | "$ref": "page.example" 22 | } 23 | ] 24 | } 25 | {% endschema %} -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/404.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "404", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/article.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "article" 5 | } 6 | }, 7 | "order": ["main"] 8 | } 9 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/blog.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "blog", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "cart", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "collection", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/customers/account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/account template.

2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/customers/activate_account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/activate_account template.

2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/customers/addresses.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/addresses template.

2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/customers/login.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/login template.

2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/customers/order.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/order template.

2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/customers/register.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/register template.

2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/customers/reset_password.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/reset_password template.

2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/gift_card.liquid: -------------------------------------------------------------------------------- 1 |

This is the gift card template

2 | -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/list-collections.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/page.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/password.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": "password", 3 | "sections": { 4 | "main": { 5 | "type": "page", 6 | "settings": {} 7 | } 8 | }, 9 | "order": [ 10 | "main" 11 | ] 12 | } -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-tailwind/source/templates/search.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": [ 9 | "main" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/using-tailwind/syncify.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from '@syncify/cli'; 2 | 3 | export default defineConfig( 4 | { 5 | transform: { 6 | style: { 7 | 'assets/stylesheet.css': { 8 | input: 'assets/style/base.css', 9 | tailwind: true 10 | } 11 | } 12 | }, 13 | processors: { 14 | postcss: [ 15 | require('autoprefixer') 16 | ] 17 | } 18 | } 19 | ); 20 | -------------------------------------------------------------------------------- /packages/configs/eslint-config/.npmignore: -------------------------------------------------------------------------------- 1 | # Dot Files 2 | .gitignore 3 | 4 | # Files 5 | readme.md 6 | -------------------------------------------------------------------------------- /packages/configs/eslint-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/eslint-config", 3 | "version": "0.1.0", 4 | "description": "Shared eslint config", 5 | "main": "./eslintrc.cjs", 6 | "dependencies": { 7 | "@typescript-eslint/eslint-plugin": "^6.8.0", 8 | "@typescript-eslint/parser": "^6.8.0", 9 | "eslint-config-standard": "^17.1.0", 10 | "eslint-plugin-import": "^2.28.1", 11 | "eslint-plugin-n": "^16.2.0", 12 | "eslint-plugin-node": "^11.1.0", 13 | "eslint-plugin-promise": "^6.1.1" 14 | }, 15 | "devDependencies": { 16 | "eslint": "^8.51.0", 17 | "typescript": "^5.2.2" 18 | }, 19 | "peerDependencies": { 20 | "eslint": "^8.51.0", 21 | "typescript": "^5.2.2" 22 | }, 23 | "peerDependenciesMeta": { 24 | "eslint": { 25 | "optional": true 26 | }, 27 | "typescript": { 28 | "optional": true 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /packages/configs/eslint-config/readme.md: -------------------------------------------------------------------------------- 1 | ## @syncify/eslint-config 2 | 3 | This package includes a shareable [ESLint](https://eslint.org) configuration that can optionally be used within [Syncify](https://github.com/panoply/syncify) projects. 4 | 5 | ### Install 6 | 7 | [pnpm](https://pnpm.js.org/en/cli/install) 8 | 9 | ```cli 10 | pnpm i eslint @syncify/eslint-config -D 11 | ``` 12 | 13 | > Requires `typescript` and `eslint` as peers. 14 | 15 | ### Usage 16 | 17 | Extend the configuration within `package.json` 18 | 19 | ```json 20 | { 21 | "eslintConfig": { 22 | "ignorePatterns": "*.html", 23 | "extends": ["@syncify/eslint-config"] 24 | } 25 | } 26 | ``` 27 | 28 | ### License 29 | 30 | [MIT](#LICENSE) 31 | -------------------------------------------------------------------------------- /packages/configs/prettier-config/.npmignore: -------------------------------------------------------------------------------- 1 | # FILES 2 | .npmrc 3 | readme.md 4 | 5 | # DIRECTORIES 6 | .vscode 7 | node_modules 8 | -------------------------------------------------------------------------------- /packages/configs/prettier-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/prettier-config", 3 | "version": "0.1.0", 4 | "description": "Shared prettier config", 5 | "main": "prettier.cjs", 6 | "prettier": "./prettier.cjs", 7 | "license": "MIT", 8 | "keywords": [ 9 | "prettier", 10 | "prettierconfig", 11 | "config", 12 | "formatting" 13 | ], 14 | "scripts": { 15 | "bump": "pnpm up @syncify/prettier-config -r", 16 | "postversion": "pnpm bump" 17 | }, 18 | "engines": { 19 | "pnpm": ">=6" 20 | }, 21 | "devDependencies": { 22 | "prettier": "^3.0.3" 23 | }, 24 | "peerDependencies": { 25 | "prettier": "^3.0.3" 26 | }, 27 | "peerDependenciesMeta": { 28 | "prettier": { 29 | "optional": true 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /packages/configs/stylelint-config/.npmignore: -------------------------------------------------------------------------------- 1 | # FILES 2 | .npmrc 3 | readme.md 4 | 5 | # DIRECTORIES 6 | .vscode 7 | node_modules 8 | -------------------------------------------------------------------------------- /packages/configs/stylelint-config/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/stylelint-config", 3 | "version": "0.1.0", 4 | "description": "Shared stylelint config", 5 | "main": "stylelint.cjs", 6 | "license": "MIT", 7 | "keywords": [ 8 | "stylelint", 9 | "stylelint-config", 10 | "config", 11 | "linting", 12 | "formatting" 13 | ], 14 | "scripts": { 15 | "bump": "pnpm up @syncify/stylelint-config -r", 16 | "postversion": "pnpm bump" 17 | }, 18 | "engines": { 19 | "pnpm": ">=6" 20 | }, 21 | "dependencies": { 22 | "stylelint-config-rational-order": "^0.1.2", 23 | "stylelint-config-standard-scss": "^11.0.0", 24 | "stylelint-scss": "^5.2.1" 25 | }, 26 | "devDependencies": { 27 | "stylelint": "^15.11.0" 28 | }, 29 | "peerDependencies": { 30 | "stylelint": "^15.11.0" 31 | }, 32 | "peerDependenciesMeta": { 33 | "stylelint": { 34 | "optional": true 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /packages/configs/tsconfig/browser.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "exclude": [ 4 | "node_modules/**/*", 5 | "dist" 6 | ], 7 | "typeAcquisition": { 8 | "enable": true, 9 | "include": [ 10 | "node" 11 | ] 12 | }, 13 | "compilerOptions": { 14 | "incremental": true, 15 | "target": "ESNext", 16 | "removeComments": true, 17 | "lib": [ 18 | "ESNext", 19 | "es2020", 20 | "DOM" 21 | ], 22 | "module": "ES6", 23 | "declaration": false, 24 | "preserveSymlinks": true, 25 | "allowSyntheticDefaultImports": true, 26 | "keyofStringsOnly": true, 27 | "esModuleInterop": true, 28 | "ignoreDeprecations": "5.0", 29 | "resolveJsonModule": true, 30 | "moduleResolution": "node", 31 | "noImplicitThis": false, 32 | "skipDefaultLibCheck": true, 33 | "noStrictGenericChecks": true, 34 | "noEmit": true, 35 | "noEmitOnError": true, 36 | "noUnusedLocals": true 37 | } 38 | } -------------------------------------------------------------------------------- /packages/configs/tsconfig/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "exclude": [ 4 | "node_modules/**/*", 5 | "dist" 6 | ], 7 | "typeAcquisition": { 8 | "enable": true 9 | }, 10 | "compilerOptions": { 11 | "target": "ESNext", 12 | "removeComments": true, 13 | "lib": [ 14 | "ESNext", 15 | "es2020" 16 | ], 17 | "module": "CommonJS", 18 | "declaration": false, 19 | "preserveSymlinks": true, 20 | "allowSyntheticDefaultImports": true, 21 | "esModuleInterop": true, 22 | "resolveJsonModule": true, 23 | "moduleResolution": "node", 24 | "noImplicitThis": false, 25 | "skipDefaultLibCheck": true, 26 | "noEmit": true, 27 | "noEmitOnError": true, 28 | "noUnusedLocals": true, 29 | "baseUrl": "." 30 | } 31 | } -------------------------------------------------------------------------------- /packages/configs/tsconfig/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/tsconfig", 3 | "version": "0.1.0", 4 | "private": false, 5 | "license": "MIT", 6 | "files": [ 7 | "./browser.json", 8 | "./node.json" 9 | ], 10 | "author": { 11 | "name": "ΝΙΚΟΛΑΣ ΣΑΒΒΙΔΗΣ", 12 | "url": "https://github.com/panoply", 13 | "email": "n.savvidis@gmx.com" 14 | } 15 | } -------------------------------------------------------------------------------- /packages/configs/tsconfig/readme.md: -------------------------------------------------------------------------------- 1 | # @syncify/tsconfig 2 | 3 | Shareable tsconfig files used within the Syncify monorepo. 4 | -------------------------------------------------------------------------------- /packages/hot/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@syncify/tsconfig/browser", 3 | "typeAcquisition": { 4 | "enable": true 5 | }, 6 | "include": [ 7 | "src/index.ts" 8 | ] 9 | } -------------------------------------------------------------------------------- /packages/plugins/icons/index.d.ts: -------------------------------------------------------------------------------- 1 | import { PluginHooks } from '../../types'; 2 | 3 | export default function icons(options: { 4 | tagName: string; 5 | tagVoid: boolean; 6 | vscodeCustomData: boolean; 7 | }): PluginHooks; 8 | -------------------------------------------------------------------------------- /packages/plugins/icons/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/plugin-icons", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "MIT" 12 | } 13 | -------------------------------------------------------------------------------- /packages/plugins/icons/readme.md: -------------------------------------------------------------------------------- 1 | # @syncify/plugin-icons 2 | 3 | ### Install 4 | 5 | ```bash 6 | pnpm add @syncify/plugin-icons -D 7 | ``` 8 | 9 | ### Usage 10 | 11 | 12 | ```js 13 | import icons from '@syncify/plugin-icons'; 14 | 15 | export default { 16 | transforms: { 17 | svg: { 18 | input: '...', 19 | } 20 | }, 21 | plugins: [ 22 | icons( 23 | { 24 | tagName: 'icon'; 25 | tagVoid: true, 26 | vscodeCustomData: true 27 | } 28 | ) 29 | ] 30 | }; 31 | ``` 32 | -------------------------------------------------------------------------------- /packages/plugins/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "syncify-plugins", 3 | "version": "0.0.0-development", 4 | "description": "Liquid Language Support and editor IDE tooling", 5 | "author": { 6 | "name": "Νίκος Σαβίδης", 7 | "email": "n.savvidis@gmx.com", 8 | "url": "https://liquify.dev" 9 | }, 10 | "license": "SEE LICENSE IN LICENSE", 11 | "private": true, 12 | "engines": { 13 | "node": "16", 14 | "vscode": "^1.6.0", 15 | "pnpm": ">=7" 16 | }, 17 | "scripts": {}, 18 | "repository": { 19 | "url": "https://github.com/panoply/liquify" 20 | }, 21 | "devDependencies": {}, 22 | "publishConfig": { 23 | "access": "restricted" 24 | }, 25 | "peerDependencyRules": { 26 | "allowedVersions": { 27 | "eslint": "*" 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /packages/plugins/postcss/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "postcss", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC" 12 | } 13 | -------------------------------------------------------------------------------- /packages/plugins/sass/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sass", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC" 12 | } 13 | -------------------------------------------------------------------------------- /packages/schema/env.json: -------------------------------------------------------------------------------- 1 | {"$schema":"http://json-schema.org/draft-07/schema","$id":"syncify","version":1.1,"definitions":{"schema":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"domain":{"description":"The shop domain","type":"string","pattern":"([0-9a-z_-]+)\\.myshopify\\.com","default":"your-store.myshopify.com"},"key":{"description":"The shop key","type":"string"},"secret":{"description":"The shop secret","type":"string"}}},{"type":"object","additionalProperties":false,"properties":{"domain":{"description":"The shop domain","type":"string","pattern":"([0-9a-z_-]+)\\.myshopify\\.com","default":"your-store.myshopify.com"},"token":{"description":"The shop token","type":"string"}}}]}},"oneOf":[{"type":"object","$ref":"#/definitions/schema"},{"type":"array","items":{"type":"object","$ref":"#/definitions/schema"}}]} -------------------------------------------------------------------------------- /packages/schema/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/schema", 3 | "version": "0.2.4", 4 | "private": false, 5 | "license": "MIT", 6 | "description": "JSON Store for Syncify Shared Schema", 7 | "author": { 8 | "name": "Νίκος Σαβίδης", 9 | "email": "n.savvidis@gmx.com" 10 | }, 11 | "main": ".", 12 | "engines": { 13 | "pnpm": ">=4", 14 | "node": ">=12" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/panoply/syncify/packages/schema" 19 | }, 20 | "bugs": { 21 | "url": "https://github.com/panoply/syncify/issues" 22 | } 23 | } -------------------------------------------------------------------------------- /packages/schema/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | -------------------------------------------------------------------------------- /packages/strap/dusk.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/packages/strap/dusk.zip -------------------------------------------------------------------------------- /packages/turndown/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@syncify/turndown", 3 | "version": "0.2.0", 4 | "description": "Hard forked variation of Turndown for usage within Syncify", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "dev": "tsup --watch", 8 | "build": "tsup --minify" 9 | }, 10 | "keywords": [], 11 | "author": { 12 | "name": "ΝΙΚΟΛΑΣ ΣΑΒΒΙΔΗΣ", 13 | "url": "https://github.com/panoply", 14 | "email": "n.savvidis@gmx.com" 15 | }, 16 | "license": "MIT", 17 | "tsup": { 18 | "entry": ["src/index.ts"], 19 | "dts": true 20 | }, 21 | "dependencies": { 22 | "turndown": "^7.2.0" 23 | }, 24 | "devDependencies": { 25 | "@syncify/tsconfig": "workspace:^", 26 | "@types/turndown": "^5.0.5" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/turndown/readme.md: -------------------------------------------------------------------------------- 1 | # @syncify/turndown 2 | 3 | Hard forked variation of [Turndown](https://github.com/mixmark-io/turndown) for Github flavored markdown. Used for reversed markdown conversion of HTML to Markdown in Shopify pages using [Syncify](https://github.com/panoply/syncify). 4 | 5 | ### Installation 6 | 7 | ```bash 8 | $ pnpm add @syncify/turndown -D 9 | ``` 10 | 11 | ### Usage 12 | 13 | ```ts 14 | import { Turndown, GithubFlavor } from '@syncify/turndown'; 15 | 16 | const turndown = new Turndown('...').use(GithubFlavor).turndown(content); 17 | ``` 18 | -------------------------------------------------------------------------------- /packages/turndown/src/index.ts: -------------------------------------------------------------------------------- 1 | import TurndownService from 'turndown'; 2 | import { highlightedCodeBlock } from './plugins/codeblock'; 3 | import { strikethrough } from './plugins/strikethrough'; 4 | import { tables } from './plugins/table'; 5 | import { taskListItems } from './plugins/tasklist'; 6 | 7 | export { default as Turndown } from 'turndown'; 8 | 9 | export function GithubFlavor (turndownService: TurndownService) { 10 | 11 | turndownService.use( 12 | [ 13 | highlightedCodeBlock, 14 | strikethrough, 15 | tables, 16 | taskListItems 17 | ] 18 | ); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /packages/turndown/src/plugins/codeblock.ts: -------------------------------------------------------------------------------- 1 | import TurndownService from 'turndown'; 2 | 3 | export function highlightedCodeBlock (turndownService: TurndownService) { 4 | 5 | const highlight = /highlight-(?:text|source)-([a-z0-9]+)/; 6 | 7 | turndownService.addRule('codeblock', { 8 | 9 | filter (node) { 10 | 11 | return ( 12 | node.nodeName === 'DIV' && 13 | highlight.test(node.className) && 14 | node.firstChild && 15 | node.firstChild.nodeName === 'PRE' 16 | ); 17 | 18 | }, 19 | replacement (_content, node, options) { 20 | 21 | const className = (node as TurndownService.Node).className || ''; 22 | const language = (className.match(highlight) || [ null, '' ])[1]; 23 | 24 | return ( 25 | '\n\n' + options.fence + language + '\n' + 26 | (node.firstChild === null ? '' : node.firstChild.textContent) + 27 | '\n' + options.fence + '\n\n' 28 | ); 29 | } 30 | }); 31 | } 32 | -------------------------------------------------------------------------------- /packages/turndown/src/plugins/strikethrough.ts: -------------------------------------------------------------------------------- 1 | import TurndownService from 'turndown'; 2 | 3 | export function strikethrough (turndownService: TurndownService) { 4 | 5 | turndownService.addRule('strikethrough', { 6 | filter: [ 'del', 's', 'strike' as any ], 7 | replacement (content) { 8 | 9 | return '~' + content + '~'; 10 | 11 | } 12 | }); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /packages/turndown/src/plugins/tasklist.ts: -------------------------------------------------------------------------------- 1 | import TurndownService from 'turndown'; 2 | 3 | export function taskListItems (turndownService: TurndownService) { 4 | 5 | turndownService.addRule('taskListItems', { 6 | filter (node) { 7 | return node.parentNode !== null 8 | ? node.getAttribute('type') === 'checkbox' && node.parentNode.nodeName === 'LI' 9 | : false; 10 | }, 11 | replacement (_content, node) { 12 | const { checked } = node; 13 | return checked ? '[x] ' : '[ ] '; 14 | } 15 | }); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /packages/turndown/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@syncify/tsconfig/node", 3 | "include": [ 4 | "src/*" 5 | ], 6 | } -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - "." 3 | - "packages/configs/*" 4 | - "packages/*" 5 | - "examples/*" -------------------------------------------------------------------------------- /straps/dawn/.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | theme -------------------------------------------------------------------------------- /straps/dawn/.liquidrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "shopify", 3 | "files": { 4 | "settings": "theme/config/settings_schema.json", 5 | "locales": "theme/locales/en.default.json", 6 | "schema": [ 7 | "source/schema/*" 8 | ], 9 | "sections": [ 10 | "./theme/sections/*.liquid" 11 | ], 12 | "snippets": [ 13 | "./theme/snippets/*.liquid" 14 | ] 15 | }, 16 | "format": { 17 | "ignore": [ 18 | "theme/**" 19 | ], 20 | "liquid": { 21 | "commentIndent": true, 22 | "forceFilter": 3, 23 | "forceArgument": 3 24 | }, 25 | "markup": { 26 | "forceIndent": true, 27 | "forceAttribute": 2 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /straps/dawn/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "unwantedRecommendations": [ 3 | "shopify.theme-check-vscode", 4 | "neilding.language-liquid" 5 | ], 6 | "recommendations": [ 7 | "esbenp.prettier-vscode", 8 | "sissel.shopify-liquid", 9 | "vscode-icons-team.vscode-icons", 10 | "dbaeumer.vscode-eslint" 11 | ] 12 | } -------------------------------------------------------------------------------- /straps/dawn/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "**/.git": true, 4 | // "**/node_modules": true, 5 | "**/pnpm-lock.yaml": true 6 | }, 7 | "json.schemas": [ 8 | { 9 | "url": "https://unpkg.com/@syncify/schema@0.2.2/syncify.json", 10 | "fileMatch": [ 11 | "package.json" 12 | ], 13 | } 14 | ], 15 | "[liquid]": { 16 | "editor.formatOnSave": false, 17 | "editor.defaultFormatter": "sissel.shopify-liquid" 18 | } 19 | } -------------------------------------------------------------------------------- /straps/dawn/postcss.config.ts: -------------------------------------------------------------------------------- 1 | import { env } from '@syncify/cli'; 2 | 3 | const plugins = [ require('autoprefixer') ]; 4 | 5 | if (env.prod) { 6 | plugins.push(require('cssnano')); 7 | } 8 | 9 | module.exports = { plugins }; 10 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/component-discounts.css: -------------------------------------------------------------------------------- 1 | .discounts { 2 | font-size: 1.2rem; 3 | } 4 | 5 | .discounts__discount { 6 | display: flex; 7 | align-items: center; 8 | line-height: calc(1 + 0.5 / var(--font-body-scale)); 9 | } 10 | 11 | .discounts__discount svg { 12 | color: rgba(var(--color-button), var(--alpha-button-background)); 13 | } 14 | 15 | .discounts__discount--position { 16 | justify-content: center; 17 | } 18 | 19 | @media screen and (min-width: 750px) { 20 | .discounts__discount--position { 21 | justify-content: flex-end; 22 | } 23 | } 24 | 25 | .discounts__discount > .icon { 26 | color: rgb(var(--color-foreground)); 27 | width: 1.2rem; 28 | height: 1.2rem; 29 | margin-right: 0.7rem; 30 | } 31 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/component-list-menu.css: -------------------------------------------------------------------------------- 1 | .list-menu--right { 2 | right: 0; 3 | } 4 | 5 | .list-menu--disclosure { 6 | position: absolute; 7 | min-width: 100%; 8 | width: 20rem; 9 | border: 1px solid rgba(var(--color-foreground), 0.2); 10 | } 11 | 12 | .list-menu--disclosure:focus { 13 | outline: none; 14 | } 15 | 16 | .list-menu__item--active { 17 | text-decoration: underline; 18 | text-underline-offset: 0.3rem; 19 | } 20 | 21 | .list-menu__item--active:hover { 22 | text-decoration-thickness: 0.2rem; 23 | } 24 | 25 | .list-menu--disclosure.localization-selector { 26 | max-height: 18rem; 27 | overflow: auto; 28 | width: 10rem; 29 | padding: 0.5rem; 30 | } 31 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/component-list-payment.css: -------------------------------------------------------------------------------- 1 | .list-payment { 2 | display: flex; 3 | flex-wrap: wrap; 4 | justify-content: center; 5 | margin: -0.5rem 0; 6 | padding-top: 1rem; 7 | padding-left: 0; 8 | } 9 | 10 | @media screen and (min-width: 750px) { 11 | .list-payment { 12 | justify-content: flex-end; 13 | margin: -0.5rem; 14 | padding-top: 0; 15 | } 16 | } 17 | 18 | .list-payment__item { 19 | align-items: center; 20 | display: flex; 21 | padding: 0.5rem; 22 | } 23 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/component-list-social.css: -------------------------------------------------------------------------------- 1 | .list-social { 2 | display: flex; 3 | flex-wrap: wrap; 4 | justify-content: flex-end; 5 | } 6 | 7 | @media only screen and (max-width: 749px) { 8 | .list-social { 9 | justify-content: center; 10 | } 11 | } 12 | 13 | .list-social__item .icon { 14 | height: 2.2rem; 15 | width: 2.2rem; 16 | } 17 | 18 | .list-social__link { 19 | align-items: center; 20 | display: flex; 21 | padding: 1.1rem; 22 | color: rgb(var(--color-foreground)); 23 | } 24 | 25 | .utility-bar .list-social__link { 26 | padding: 0 0.8rem; 27 | height: 3.8rem; 28 | } 29 | 30 | .list-social__link:hover .icon { 31 | transform: scale(1.07); 32 | } 33 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/component-show-more.css: -------------------------------------------------------------------------------- 1 | .button-show-more { 2 | padding-left: 0; 3 | justify-content: flex-start; 4 | padding-bottom: 1.1rem; 5 | } 6 | 7 | .button-show-more, 8 | .button-show-less { 9 | margin-top: 1.5rem; 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/component-totals.css: -------------------------------------------------------------------------------- 1 | .totals { 2 | display: flex; 3 | justify-content: center; 4 | align-items: flex-end; 5 | } 6 | 7 | .totals > * { 8 | font-size: 1.6rem; 9 | margin: 0; 10 | } 11 | 12 | .totals > h2 { 13 | font-size: calc(var(--font-heading-scale) * 1.6rem); 14 | } 15 | 16 | .totals * { 17 | line-height: 1; 18 | } 19 | 20 | .totals > * + * { 21 | margin-left: 2rem; 22 | } 23 | 24 | .totals__total { 25 | margin-top: .5rem; 26 | } 27 | 28 | .totals__total-value { 29 | font-size: 1.8rem; 30 | } 31 | 32 | .cart__ctas + .totals { 33 | margin-top: 2rem; 34 | } 35 | 36 | @media all and (min-width: 750px) { 37 | .totals { 38 | justify-content: flex-end; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/constants.js: -------------------------------------------------------------------------------- 1 | const ON_CHANGE_DEBOUNCE_TIMER = 300; 2 | 3 | const PUB_SUB_EVENTS = { 4 | cartUpdate: 'cart-update', 5 | quantityUpdate: 'quantity-update', 6 | variantChange: 'variant-change', 7 | cartError: 'cart-error', 8 | }; 9 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/password-modal.js: -------------------------------------------------------------------------------- 1 | class PasswordModal extends DetailsModal { 2 | constructor() { 3 | super(); 4 | 5 | if (this.querySelector('input[aria-invalid="true"]')) this.open({ target: this.querySelector('details') }); 6 | } 7 | } 8 | 9 | customElements.define('password-modal', PasswordModal); 10 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/pubsub.js: -------------------------------------------------------------------------------- 1 | let subscribers = {}; 2 | 3 | function subscribe(eventName, callback) { 4 | if (subscribers[eventName] === undefined) { 5 | subscribers[eventName] = []; 6 | } 7 | 8 | subscribers[eventName] = [...subscribers[eventName], callback]; 9 | 10 | return function unsubscribe() { 11 | subscribers[eventName] = subscribers[eventName].filter((cb) => { 12 | return cb !== callback; 13 | }); 14 | }; 15 | } 16 | 17 | function publish(eventName, data) { 18 | if (subscribers[eventName]) { 19 | subscribers[eventName].forEach((callback) => { 20 | callback(data); 21 | }); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/section-contact-form.css: -------------------------------------------------------------------------------- 1 | .contact img { 2 | max-width: 100%; 3 | } 4 | 5 | .contact .form__message { 6 | align-items: flex-start; 7 | } 8 | 9 | .contact .icon-success { 10 | margin-top: 0.2rem; 11 | } 12 | 13 | .contact .field { 14 | margin-bottom: 1.5rem; 15 | } 16 | 17 | @media screen and (min-width: 750px) { 18 | .contact .field { 19 | margin-bottom: 2rem; 20 | } 21 | } 22 | 23 | .contact__button { 24 | margin-top: 3rem; 25 | } 26 | 27 | @media screen and (min-width: 750px) { 28 | .contact__button { 29 | margin-top: 4rem; 30 | } 31 | } 32 | 33 | @media screen and (min-width: 750px) { 34 | .contact__fields { 35 | display: grid; 36 | grid-template-columns: repeat(2, 1fr); 37 | grid-column-gap: 2rem; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/section-main-page.css: -------------------------------------------------------------------------------- 1 | .page-title { 2 | margin-top: 0; 3 | } 4 | 5 | .main-page-title { 6 | margin-bottom: 3rem; 7 | } 8 | 9 | @media screen and (min-width: 750px) { 10 | .main-page-title { 11 | margin-bottom: 4rem; 12 | } 13 | } 14 | 15 | .page-placeholder-wrapper { 16 | display: flex; 17 | justify-content: center; 18 | } 19 | 20 | .page-placeholder { 21 | width: 52.5rem; 22 | height: 52.5rem; 23 | } 24 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/section-related-products.css: -------------------------------------------------------------------------------- 1 | .related-products { 2 | display: block; 3 | } 4 | 5 | .related-products__heading { 6 | margin: 0 0 3rem; 7 | } 8 | -------------------------------------------------------------------------------- /straps/dawn/source/assets/sparkle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/dawn/source/assets/sparkle.gif -------------------------------------------------------------------------------- /straps/dawn/source/sections/apps.liquid: -------------------------------------------------------------------------------- 1 |
2 | {%- for block in section.blocks -%} 3 | {% render block %} 4 | {%- endfor -%} 5 |
6 | 7 | {% schema %} 8 | { 9 | "name": "t:sections.apps.name", 10 | "tag": "section", 11 | "class": "section", 12 | "settings": [ 13 | { 14 | "type": "checkbox", 15 | "id": "include_margins", 16 | "default": true, 17 | "label": "t:sections.apps.settings.include_margins.label" 18 | } 19 | ], 20 | "blocks": [ 21 | { 22 | "type": "@app" 23 | } 24 | ], 25 | "presets": [ 26 | { 27 | "name": "t:sections.apps.presets.name" 28 | } 29 | ] 30 | } 31 | {% endschema %} 32 | -------------------------------------------------------------------------------- /straps/dawn/source/sections/cart-drawer.liquid: -------------------------------------------------------------------------------- 1 | {%- render 'cart-drawer' -%} 2 | -------------------------------------------------------------------------------- /straps/dawn/source/sections/cart-icon-bubble.liquid: -------------------------------------------------------------------------------- 1 | {%- liquid 2 | if cart == empty 3 | render 'icon-cart-empty' 4 | else 5 | render 'icon-cart' 6 | endif 7 | -%} 8 | {{ 'templates.cart.cart' | t }} 9 | {%- if cart != empty -%} 10 |
11 | {%- if cart.item_count < 100 -%} 12 | 13 | {%- endif -%} 14 | {{ 'sections.header.cart_count' | t: count: cart.item_count }} 15 |
16 | {%- endif -%} 17 | -------------------------------------------------------------------------------- /straps/dawn/source/sections/cart-live-region-text.liquid: -------------------------------------------------------------------------------- 1 | {{ 'sections.cart.new_estimated_total' | t }}: {{ cart.total_price | money_with_currency }} 2 | -------------------------------------------------------------------------------- /straps/dawn/source/sections/cart-notification-button.liquid: -------------------------------------------------------------------------------- 1 | {{ 'general.cart.view' | t: count: cart.item_count }} 2 | -------------------------------------------------------------------------------- /straps/dawn/source/sections/main-404.liquid: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 |

15 | {{ 'templates.404.subtext' | t }} 16 |

17 |

18 | {{ 'templates.404.title' | t }} 19 |

20 | 21 | {{ 'general.continue_shopping' | t }} 22 | 23 |
24 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-account.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-arrow.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-caret.liquid: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-cart-empty.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-cart.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-checkmark.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-clipboard.liquid: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-close-small.liquid: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-close.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-discount.liquid: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-error.liquid: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-facebook.liquid: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-filter.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-hamburger.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-minus.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-padlock.liquid: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-pause.liquid: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-play.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-plus.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-remove.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-success.liquid: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-tick.liquid: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-tiktok.liquid: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-tumblr.liquid: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-twitter.liquid: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-unavailable.liquid: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-vimeo.liquid: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/icon-youtube.liquid: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/loading-spinner.liquid: -------------------------------------------------------------------------------- 1 | {% comment %} 2 | Renders loading-spinner. 3 | Accepts: 4 | - class: {string} css classes to replace the default ones (optional) 5 | 6 | Usage: 7 | {% render 'loading-spinner' %} 8 | {% endcomment %} 9 | 10 | {{ 'component-loading-spinner.css' | asset_url | stylesheet_tag }} 11 | 12 |
13 | 22 |
23 | -------------------------------------------------------------------------------- /straps/dawn/source/snippets/mask-arch.liquid: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/404.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-404" 5 | } 6 | }, 7 | "order": [ 8 | "main" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/article.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-article", 5 | "blocks": { 6 | "featured_image": { 7 | "type": "featured_image", 8 | "settings": { 9 | "image_height": "adapt" 10 | } 11 | }, 12 | "title": { 13 | "type": "title", 14 | "settings": { 15 | "blog_show_date": true, 16 | "blog_show_author": false 17 | } 18 | }, 19 | "share": { 20 | "type": "share", 21 | "settings": { 22 | "share_label": "Share" 23 | } 24 | }, 25 | "content": { 26 | "type": "content" 27 | } 28 | }, 29 | "block_order": [ 30 | "featured_image", 31 | "title", 32 | "share", 33 | "content" 34 | ] 35 | } 36 | }, 37 | "order": [ 38 | "main" 39 | ] 40 | } 41 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/blog.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-blog", 5 | "settings": { 6 | "layout": "collage", 7 | "show_image": true, 8 | "image_height": "medium", 9 | "show_date": true, 10 | "show_author": false, 11 | "padding_top": 36, 12 | "padding_bottom": 36 13 | } 14 | } 15 | }, 16 | "order": [ 17 | "main" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "banner": { 4 | "type": "main-collection-banner", 5 | "settings": { 6 | "show_collection_description": true, 7 | "show_collection_image": false, 8 | "color_scheme": "background-1" 9 | } 10 | }, 11 | "product-grid": { 12 | "type": "main-collection-product-grid", 13 | "settings": { 14 | "products_per_page": 16, 15 | "columns_desktop": 4, 16 | "image_ratio": "adapt", 17 | "show_secondary_image": false, 18 | "show_vendor": false, 19 | "show_rating": false, 20 | "enable_filtering": true, 21 | "enable_sorting": true, 22 | "columns_mobile": "2", 23 | "padding_top": 36, 24 | "padding_bottom": 36 25 | } 26 | } 27 | }, 28 | "order": [ 29 | "banner", 30 | "product-grid" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/customers/account.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-account" 5 | } 6 | }, 7 | "order": [ 8 | "main" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/customers/activate_account.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-activate-account" 5 | } 6 | }, 7 | "order": [ 8 | "main" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/customers/addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-addresses" 5 | } 6 | }, 7 | "order": [ 8 | "main" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/customers/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-login" 5 | } 6 | }, 7 | "order": [ 8 | "main" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/customers/order.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-order" 5 | } 6 | }, 7 | "order": [ 8 | "main" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/customers/register.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-register" 5 | } 6 | }, 7 | "order": [ 8 | "main" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/customers/reset_password.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-reset-password" 5 | } 6 | }, 7 | "order": [ 8 | "main" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/list-collections.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-list-collections", 5 | "settings": { 6 | "title": "Collections", 7 | "sort": "alphabetical", 8 | "image_ratio": "square" 9 | } 10 | } 11 | }, 12 | "order": [ 13 | "main" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/page.contact.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-page", 5 | "settings": { 6 | "padding_top": 36, 7 | "padding_bottom": 36 8 | } 9 | }, 10 | "form": { 11 | "type": "contact-form", 12 | "settings": { 13 | "heading": "", 14 | "heading_size": "h1", 15 | "color_scheme": "background-1", 16 | "padding_top": 36, 17 | "padding_bottom": 36 18 | } 19 | } 20 | }, 21 | "order": [ 22 | "main", 23 | "form" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/page.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-page", 5 | "settings": { 6 | "padding_top": 28, 7 | "padding_bottom": 28 8 | } 9 | } 10 | }, 11 | "order": [ 12 | "main" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /straps/dawn/source/templates/search.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "main-search", 5 | "settings": { 6 | "columns_desktop": 4, 7 | "image_ratio": "adapt", 8 | "show_secondary_image": false, 9 | "show_vendor": false, 10 | "show_rating": false, 11 | "enable_filtering": true, 12 | "enable_sorting": true, 13 | "article_show_date": true, 14 | "article_show_author": false, 15 | "columns_mobile": "2", 16 | "padding_top": 36, 17 | "padding_bottom": 36 18 | } 19 | } 20 | }, 21 | "order": [ 22 | "main" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /straps/dusk/.liquidrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "shopify", 3 | "files": { 4 | "settings": "source/config/settings_schema.json", 5 | "locales": "source/locales/en.default.json", 6 | "schema": [ 7 | "source/schema/*" 8 | ], 9 | "sections": [ 10 | "theme/sections/*.liquid" 11 | ], 12 | "snippets": [ 13 | "theme/snippets/*.liquid" 14 | ] 15 | }, 16 | "format": { 17 | "ignore": [], 18 | "liquid": { 19 | "commentIndent": true, 20 | "forceFilter": 3, 21 | "forceArgument": 3 22 | }, 23 | "markup": { 24 | "forceIndent": true, 25 | "forceAttribute": 2 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /straps/dusk/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "unwantedRecommendations": [ 3 | "shopify.theme-check-vscode", 4 | "neilding.language-liquid" 5 | ], 6 | "recommendations": [ 7 | "esbenp.prettier-vscode", 8 | "sissel.shopify-liquid", 9 | "vscode-icons-team.vscode-icons", 10 | "dbaeumer.vscode-eslint" 11 | ] 12 | } -------------------------------------------------------------------------------- /straps/dusk/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "**/.git": true, 4 | "**/node_modules": true, 5 | "**/pnpm-lock.yaml": true 6 | }, 7 | "json.schemas": [ 8 | { 9 | "url": "https://unpkg.com/@syncify/schema@0.2.0/syncify.json", 10 | "fileMatch": [ 11 | "package.json" 12 | ], 13 | } 14 | ], 15 | "[scss]": { 16 | "editor.formatOnSave": true, 17 | "editor.defaultFormatter": "stylelint.vscode-stylelint" 18 | }, 19 | "[liquid]": { 20 | "editor.formatOnSave": true, 21 | "editor.defaultFormatter": "sissel.shopify-liquid" 22 | } 23 | } -------------------------------------------------------------------------------- /straps/dusk/readme.md: -------------------------------------------------------------------------------- 1 | ## DUSK 2 | 3 | A bare bones strap, used as a starting point for theme development. 4 | -------------------------------------------------------------------------------- /straps/dusk/source/assets/style.scss: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #f8f8f8; 3 | font-family: monospace; 4 | } 5 | 6 | .contain { 7 | display: flex; 8 | align-items: center; 9 | justify-content: center; 10 | flex-direction: column; 11 | width: 100%; 12 | height: 95vh; 13 | } 14 | 15 | .logo { 16 | width: 120px; 17 | color: #dfdede; 18 | margin-bottom: 10px; 19 | 20 | > svg > path { 21 | opacity: .6; 22 | } 23 | > svg > path + path { 24 | opacity: .9; 25 | } 26 | } 27 | 28 | .text { 29 | font-size: 22px; 30 | width: 400px; 31 | text-align: center; 32 | text-transform: uppercase; 33 | letter-spacing: 5px; 34 | margin: 0; 35 | color: #d2d2d2; 36 | } 37 | -------------------------------------------------------------------------------- /straps/dusk/source/config/settings_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "current": {}, 3 | "presets": {} 4 | } 5 | -------------------------------------------------------------------------------- /straps/dusk/source/config/settings_schema.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "theme_info", 4 | "theme_name": "Dusk", 5 | "theme_author": "Syncify", 6 | "theme_version": "1.0.0", 7 | "theme_documentation_url": "https://github.com/panoply/syncify", 8 | "theme_support_url": "https://github.com/panoply/syncify" 9 | }, 10 | { 11 | "name": "font", 12 | "settings": [ 13 | { 14 | "type": "font_picker", 15 | "id": "body_font", 16 | "label": "Font Family", 17 | "default": "mono" 18 | } 19 | ] 20 | } 21 | ] -------------------------------------------------------------------------------- /straps/dusk/source/layout/theme.liquid: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 11 | 12 | 13 | {{ page_title }} 14 | 15 | 16 | 17 | 20 | 21 | {{ 'style.css' | asset_url | stylesheet_tag }} 22 | 23 | {{ content_for_header }} 24 | 25 | 26 | 27 | 28 | 29 | {{ content_for_layout }} 30 | 31 | 32 | -------------------------------------------------------------------------------- /straps/dusk/source/locales/en.default.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /straps/dusk/source/locales/en.default.schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /straps/dusk/source/sections/404.liquid: -------------------------------------------------------------------------------- 1 |

This is the 404 section.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/sections/apps.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/dusk/source/sections/apps.liquid -------------------------------------------------------------------------------- /straps/dusk/source/sections/article.liquid: -------------------------------------------------------------------------------- 1 |

This is the article section.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/sections/blog.liquid: -------------------------------------------------------------------------------- 1 |

This is the blog section.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/sections/cart.liquid: -------------------------------------------------------------------------------- 1 |

This is the cart section.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/sections/collection.liquid: -------------------------------------------------------------------------------- 1 |

This is the collection section.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/sections/collections-listing.liquid: -------------------------------------------------------------------------------- 1 |

This is the collection listing section.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/sections/page.liquid: -------------------------------------------------------------------------------- 1 |
2 | 7 |

8 | SYNCIFY 9 |

10 |
-------------------------------------------------------------------------------- /straps/dusk/source/sections/password.liquid: -------------------------------------------------------------------------------- 1 |

2 | This is the password section. 3 |

-------------------------------------------------------------------------------- /straps/dusk/source/sections/product.liquid: -------------------------------------------------------------------------------- 1 |

This is the product section.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/sections/search.liquid: -------------------------------------------------------------------------------- 1 |

This is the search section.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/404.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "404", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/article.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "article" 5 | } 6 | }, 7 | "order": ["main"] 8 | } 9 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/blog.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "blog", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "cart", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "collection", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/customers/account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/account template.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/customers/activate_account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/activate_account template.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/customers/addresses.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/addresses template.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/customers/login.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/login template.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/customers/order.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/order template.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/customers/register.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/register template.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/customers/reset_password.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/reset_password template.

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/gift_card.liquid: -------------------------------------------------------------------------------- 1 |

This is the gift card template

2 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/list-collections.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "collections-listing", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/page.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/password.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": "password", 3 | "sections": { 4 | "main": { 5 | "type": "password", 6 | "settings": {} 7 | } 8 | }, 9 | "order": ["main"] 10 | } 11 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "product", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/dusk/source/templates/search.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "search", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/.gitignore: -------------------------------------------------------------------------------- 1 | theme/ 2 | node_modules 3 | pnpm-lock.yaml 4 | .env -------------------------------------------------------------------------------- /straps/silk/.liquidrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "shopify", 3 | "files": { 4 | "settings": "source/config/settings_data.json", 5 | "locales": "source/locales/en.default.json", 6 | "schema": [ 7 | "source/schema/*" 8 | ], 9 | "sections": [ 10 | "theme/sections/*.liquid" 11 | ], 12 | "snippets": [ 13 | "theme/snippets/*.liquid" 14 | ] 15 | }, 16 | "format": { 17 | "ignore": [], 18 | "liquid": { 19 | "commentIndent": true, 20 | "forceFilter": 3, 21 | "forceArgument": 3 22 | }, 23 | "markup": { 24 | "forceIndent": true, 25 | "forceAttribute": 2 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /straps/silk/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "unwantedRecommendations": [ 3 | "shopify.theme-check-vscode", 4 | "neilding.language-liquid" 5 | ], 6 | "recommendations": [ 7 | "esbenp.prettier-vscode", 8 | "sissel.shopify-liquid", 9 | "vscode-icons-team.vscode-icons", 10 | "dbaeumer.vscode-eslint" 11 | ] 12 | } -------------------------------------------------------------------------------- /straps/silk/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": { 3 | "**/.git": true, 4 | "**/node_modules": true, 5 | "**/pnpm-lock.yaml": true 6 | }, 7 | "json.schemas": [ 8 | { 9 | "url": "https://unpkg.com/@syncify/schema/syncify.json", 10 | "fileMatch": [ 11 | "package.json" 12 | ], 13 | } 14 | ], 15 | "[css]": { 16 | "editor.formatOnSave": true, 17 | "editor.defaultFormatter": "stylelint.vscode-stylelint" 18 | }, 19 | "[liquid]": { 20 | "editor.formatOnSave": true, 21 | "editor.defaultFormatter": "sissel.shopify-liquid" 22 | } 23 | } -------------------------------------------------------------------------------- /straps/silk/postcss.config.ts: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {} 5 | } 6 | } -------------------------------------------------------------------------------- /straps/silk/readme.md: -------------------------------------------------------------------------------- 1 | ## Syncify ~ Silk 2 | 3 | Dusk is stripped Shopify Theme strap using [Syncify](https://github.com/panoply/syncify). It comes with the essentials already baked in and can be used a starting point to develop themes from scratch leveraging Syncify. 4 | 5 | ### Usage 6 | 7 | 1. Fork or clone this repository 8 | 2. `pnpm i` 9 | 10 | ### Features 11 | 12 | The strap includes the following pre-configured handling: 13 | 14 | - TypeScript/JavaScript 15 | - Tailwind CSS 16 | - SVG Sprites and Snippets 17 | - Markdown Pages Support 18 | - Shared Section Schema 19 | - VSCode Liquid 20 | -------------------------------------------------------------------------------- /straps/silk/source/data/locales/en.default.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /straps/silk/source/data/locales/en.default.schema.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /straps/silk/source/data/settings/settings_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "current": {}, 3 | "presets": {} 4 | } 5 | -------------------------------------------------------------------------------- /straps/silk/source/pages/about.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/pages/about.md -------------------------------------------------------------------------------- /straps/silk/source/pages/contact.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/pages/contact.md -------------------------------------------------------------------------------- /straps/silk/source/scripts/application/app.ts: -------------------------------------------------------------------------------- 1 | import { Controller as stimulus } from 'application/controller'; 2 | import spx from 'spx'; 3 | import * as track from 'application/tracking'; 4 | 5 | export function App ({ targets, screens, controllers }) { 6 | 7 | console.log('bundle') 8 | /** 9 | * SPX: Called to establish SPX connection 10 | */ 11 | spx.connect({ targets })(function () { 12 | 13 | lazySizes.init(); 14 | stimulus.connect(controllers, screens); 15 | Shopify.designMode || spx.disconnect(); 16 | 17 | 18 | }); 19 | 20 | /** 21 | * SPX: Called each time a page is loaded 22 | */ 23 | spx.on('load', function () { 24 | 25 | track.google(); 26 | track.meta(); 27 | 28 | }); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /straps/silk/source/scripts/application/tracking.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Google Analytics 3 | * 4 | * This is UA (GA4 is handled within Shopify) 5 | */ 6 | export function google () { 7 | 8 | if (typeof gtag === 'function') { 9 | gtag('js', new Date()); 10 | gtag('config', 'UA-43951408-1'); 11 | } 12 | 13 | } 14 | 15 | /** 16 | * Meta (Facebook) 17 | * 18 | * Facebook tracking for SPX handling. 19 | */ 20 | export function meta (data?: { 21 | id: number; 22 | price: number; 23 | category: string; 24 | currency: string; 25 | name: string; 26 | }) { 27 | 28 | if (typeof fbq === 'function') { 29 | 30 | fbq('track', 'PageView'); 31 | 32 | if (data) { 33 | 34 | fbq('track', 'ViewContent', { 35 | content_ids: [ data.id ], 36 | content_category: data.category, 37 | content_type: 'product_group', 38 | content_name: data.name, 39 | currency: data.currency, 40 | value: data.price 41 | }); 42 | 43 | } 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /straps/silk/source/scripts/application/utilities.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/scripts/application/utilities.ts -------------------------------------------------------------------------------- /straps/silk/source/scripts/bundle.ts: -------------------------------------------------------------------------------- 1 | import { App } from './application/app'; 2 | import { Drawer } from './components/drawer'; 3 | import { Carousel } from './components/carousel'; 4 | import { Accordion } from './components/accordion'; 5 | 6 | export default App({ 7 | 8 | targets: [ 9 | '#navigation', 10 | '#main' 11 | ], 12 | screens: { 13 | xs: '(max-width: 576px)', 14 | sm: '(min-width: 577px) and (max-width: 767px)', 15 | md: '(min-width: 768px) and (max-width: 991px)', 16 | lg: '(min-width: 992px) and (max-width: 1199px)', 17 | xl: '(min-width: 1200px) and (max-width: 1399px)', 18 | xxl: '(min-width: 1400px)' 19 | }, 20 | controllers: { 21 | Drawer, 22 | Accordion, 23 | Carousel 24 | } 25 | }); 26 | -------------------------------------------------------------------------------- /straps/silk/source/scripts/shop.js.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/scripts/shop.js.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/schema/forms.schema: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/schema/forms.schema -------------------------------------------------------------------------------- /straps/silk/source/views/sections/app.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/app.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/blog/article.liquid: -------------------------------------------------------------------------------- 1 |

This is the article section.

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/sections/collection/cover.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/collection/cover.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/collection/filter.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/collection/filter.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/collection/products.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/collection/products.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/layout/footer.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/layout/footer.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/layout/navbar.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/layout/navbar.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/layout/sidebar.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/layout/sidebar.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/product/description.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/product/description.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/product/purchase.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/product/purchase.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/product/related.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/product/related.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/product/viewer.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/product/viewer.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/shared/announcement-bar.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/shared/announcement-bar.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/shared/collage.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/shared/collage.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/shared/hero-image.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/shared/hero-image.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/shared/image-slideshow.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/shared/image-slideshow.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/sections/shared/image-split.liquid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/straps/silk/source/views/sections/shared/image-split.liquid -------------------------------------------------------------------------------- /straps/silk/source/views/snippets/product-item.liquid: -------------------------------------------------------------------------------- 1 | {% if heading or heading != empty %} 2 | 22 | {% endif %} -------------------------------------------------------------------------------- /straps/silk/source/views/templates/404.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "404", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/article.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "article" 5 | } 6 | }, 7 | "order": ["main"] 8 | } 9 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/blog.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "blog", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/cart.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "cart", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "collection", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/customers/account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/account template.

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/customers/activate_account.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/activate_account template.

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/customers/addresses.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/addresses template.

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/customers/login.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/login template.

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/customers/order.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/order template.

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/customers/register.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/register template.

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/customers/reset_password.liquid: -------------------------------------------------------------------------------- 1 |

This is the customer/reset_password template.

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/list-collections.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "collections-listing", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/page.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "page", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/password.json: -------------------------------------------------------------------------------- 1 | { 2 | "layout": "password", 3 | "sections": { 4 | "main": { 5 | "type": "password", 6 | "settings": {} 7 | } 8 | }, 9 | "order": ["main"] 10 | } 11 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "product", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/search.json: -------------------------------------------------------------------------------- 1 | { 2 | "sections": { 3 | "main": { 4 | "type": "search", 5 | "settings": {} 6 | } 7 | }, 8 | "order": ["main"] 9 | } 10 | -------------------------------------------------------------------------------- /straps/silk/source/views/templates/statics/gift_card.liquid: -------------------------------------------------------------------------------- 1 |

This is the gift card template

2 | -------------------------------------------------------------------------------- /straps/silk/source/views/theme.liquid: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 11 | 12 | 13 | {{ page_title }} 14 | 15 | 16 | 17 | 18 | {{ content_for_header }} 19 | 20 | 21 | 22 | 23 |

24 | hellosdddd 25 |

26 | {{ content_for_layout }} 27 | 28 | 29 | -------------------------------------------------------------------------------- /straps/silk/tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import { Config } from 'tailwindcss'; 2 | 3 | export default { 4 | content: [ 5 | './source/**/*' 6 | ], 7 | theme: { 8 | extend: { 9 | fontFamily: { 10 | heading: 'var(--font-heading-family)', 11 | body: 'var(--font-body-family)' 12 | }, 13 | fontSize: { 14 | sm: [ 'var(--font-size-sm)', '1.428' ], 15 | base: [ 'var(--font-size-base)', '1.5' ], 16 | lg: [ 'var(--font-size-lg)', '1.555' ], 17 | xl: [ 'var(--font-size-xl)', '1.4' ] 18 | }, 19 | colors: { 20 | accent: 'hsla(var(--color-accent) / )', 21 | surface: 'hsla(var(--color-surface) / )', 22 | primary: 'hsla(var(--color-primary) / )', 23 | contrast: 'hsla(var(--color-contrast) / )', 24 | secondary: 'hsla(var(--color-secondary) / )' 25 | }, 26 | transitionTimingFunction: { 27 | wiggle: 'cubic-bezier(0.22, 1, 0.36, 1)' 28 | } 29 | } 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /straps/silk/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": [ 3 | "node_modules/**", 4 | "export", 5 | "import", 6 | "theme" 7 | ], 8 | "include": [ 9 | "source/scripts/**/*" 10 | ], 11 | "compilerOptions": { 12 | "target": "ES6", 13 | "lib": [ 14 | "es2020", 15 | "dom", 16 | "dom.iterable" 17 | ], 18 | "module": "ESNext", 19 | "allowUnreachableCode": true, 20 | "allowSyntheticDefaultImports": true, 21 | "checkJs": true, 22 | "allowJs": true, 23 | "declaration": false, 24 | "resolveJsonModule": true, 25 | "moduleResolution": "Node", 26 | "baseUrl": ".", 27 | "paths": { 28 | "typings/*": [ 29 | "source/scripts/typings/*.d.ts" 30 | ], 31 | "application/*": [ 32 | "source/scripts/application/*.ts" 33 | ], 34 | "components/*": [ 35 | "source/scripts/components/*.ts" 36 | ], 37 | "modules/*": [ 38 | "source/scripts/modules/*.ts" 39 | ] 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /syncify/model/modules.ts: -------------------------------------------------------------------------------- 1 | export class Module { 2 | 3 | static esbuild: any; 4 | static postcss: any; 5 | static svgo: any; 6 | static sprite: any; 7 | static sass: any; 8 | static tailwind: any; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /syncify/model/plugins.ts: -------------------------------------------------------------------------------- 1 | import type { Plugins } from 'types'; 2 | 3 | /** 4 | * Plugin Store 5 | * 6 | * This model holds reference to plugins. Entries are populated at runtime and their hooks 7 | * stored in relative Map and invoked at different cycles. 8 | */ 9 | export const plugins = (): Plugins => ({ 10 | onBuild: [], 11 | onChange: [], 12 | onReload: [], 13 | onTransform: [], 14 | onWatch: [] 15 | }); 16 | -------------------------------------------------------------------------------- /syncify/modes/create.ts: -------------------------------------------------------------------------------- 1 | export function create () { 2 | 3 | } 4 | -------------------------------------------------------------------------------- /syncify/modes/doctor.ts: -------------------------------------------------------------------------------- 1 | // import { join } from 'pathe'; 2 | import type { Commands } from 'types'; 3 | 4 | export function doctor (cli: Commands) { 5 | 6 | // const report: string[] = []; 7 | // const env = join(cli.cwd, '.env'); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /syncify/plugins/hooks.ts: -------------------------------------------------------------------------------- 1 | import type { File, Methods } from 'types'; 2 | import { isUndefined, isBuffer, isString } from 'syncify:utils'; 3 | 4 | /** 5 | * The callback function 6 | */ 7 | type RequestFunction = (method: Methods, file: File, content?: any) => Promise 8 | 9 | export async function onAsset (file: File, input: any, update: any, request: RequestFunction) { 10 | 11 | if (isUndefined(update) || update === false) { 12 | 13 | return request('put', file, input); 14 | 15 | } else if (isString(update)) { 16 | 17 | return request('put', file, update); 18 | 19 | } else if (isBuffer(update)) { 20 | 21 | return request('put', file, update.toString()); 22 | 23 | } else { 24 | 25 | return request('put', file, input); 26 | 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /syncify/plugins/trigger.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/panoply/syncify/98d75fd0fb8e1c6ddce12cdaf792839801a7fab1/syncify/plugins/trigger.ts -------------------------------------------------------------------------------- /syncify/requests/access.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-unused-vars */ 2 | 3 | import type { AxiosError, AxiosRequestConfig } from 'axios'; 4 | import type { Responses } from 'types'; 5 | import { axios } from 'syncify:requests/queue'; 6 | 7 | /** 8 | * Access Scopes 9 | * 10 | * Returns access scopes available 11 | */ 12 | export async function get (client: AxiosRequestConfig) { 13 | 14 | return axios.get< 15 | Responses.Access<'GET'>, 16 | Responses.Access<'GET'>>('/oauth/access_scopes.json', client).then(({ data }) => { 17 | 18 | return data; 19 | 20 | }).catch((e: AxiosError) => { 21 | 22 | return false; 23 | 24 | }); 25 | }; 26 | -------------------------------------------------------------------------------- /syncify/requests/queue.ts: -------------------------------------------------------------------------------- 1 | import Queue from 'p-queue'; 2 | import connect from 'axios'; 3 | 4 | /** 5 | * Axios Request 6 | * 7 | * Creates a request instance 8 | */ 9 | export const axios = connect.create({ 10 | responseType: 'json', 11 | headers: {} 12 | }); 13 | 14 | /** 15 | * The Request Queue 16 | * 17 | * We exceed the rate limits set by Shopify. 18 | * This allows us to upload in bursts, when we hit 19 | * the rates we requeue the requests. 20 | */ 21 | export const queue = new Queue({ 22 | // concurrency: 5, 23 | interval: 500, 24 | intervalCap: 2 25 | }); 26 | 27 | /** 28 | * Re-queue Request 29 | * 30 | * Determines whether or not the request 31 | * should be re-queued 32 | */ 33 | export function requeue (status: number) { 34 | 35 | if ((status === 429) || (status === 500)) return true; 36 | if (!queue.isPaused) queue.pause(); 37 | 38 | return false; 39 | 40 | }; 41 | -------------------------------------------------------------------------------- /syncify/terser/markup.ts: -------------------------------------------------------------------------------- 1 | import { minify } from 'html-minifier-terser'; 2 | import { $ } from 'syncify:state'; 3 | import * as log from 'syncify:log'; 4 | import { File } from 'syncify:file'; 5 | 6 | /** 7 | * HTML Minfication 8 | * 9 | * Executes html terser on remaining document contents 10 | * and applied rules that were previously setup in config. 11 | */ 12 | export async function htmlMinify (file: File, content: string) { 13 | 14 | try { 15 | 16 | const htmlmin = await minify(content, $.terser.markup); 17 | return htmlmin; 18 | 19 | } catch (e) { 20 | 21 | log.invalid(file.relative); 22 | 23 | console.error(e); 24 | 25 | return null; 26 | 27 | } 28 | 29 | }; 30 | -------------------------------------------------------------------------------- /syncify/utils/array.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * **getChunk** 3 | * 4 | * Chunked arrays 5 | */ 6 | export function getChunk (array: any[], perChunk: number = 2) { 7 | 8 | return array.reduce((acc, item, index) => { 9 | 10 | const ci = Math.floor(index / perChunk); // chunk index 11 | 12 | if (!acc[ci]) acc[ci] = []; // start a new chunk 13 | acc[ci].push(item); 14 | return acc; 15 | 16 | }, []); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /syncify/utils/native.ts: -------------------------------------------------------------------------------- 1 | import { Console } from 'node:console'; 2 | import { stdout, stderr } from 'node:process'; 3 | import { EventEmitter } from 'node:events'; 4 | 5 | /** 6 | * Event emitter instance 7 | */ 8 | export const event = new EventEmitter(); 9 | 10 | /** 11 | * Native Console Log 12 | */ 13 | export const { 14 | error, 15 | log, 16 | warn, 17 | clear 18 | } = new Console(stdout, stderr); 19 | 20 | /** 21 | * Native Object methods 22 | */ 23 | export const { 24 | create, 25 | assign, 26 | defineProperty, 27 | defineProperties, 28 | keys, 29 | values, 30 | setPrototypeOf 31 | } = Object; 32 | 33 | /** 34 | * Native Array from Method 35 | */ 36 | export const toArray = Array.from; 37 | 38 | /** 39 | * To Buffer 40 | */ 41 | export const toBuffer = Buffer.from; 42 | 43 | /** 44 | * Native Math methods 45 | */ 46 | export const { abs } = Math; 47 | 48 | /** 49 | * Native prototype `toString` for type checks 50 | */ 51 | export const { toString } = Object.prototype; 52 | -------------------------------------------------------------------------------- /types/internal.d.ts: -------------------------------------------------------------------------------- 1 | export * from './internal/enquirer'; 2 | export * from './internal/transform'; 3 | export * from './internal/reports'; 4 | export * from './internal/require'; 5 | export * from './internal/schema'; 6 | export * from './internal/templates'; 7 | export * from './internal/errors'; 8 | export * from './internal/merge'; 9 | -------------------------------------------------------------------------------- /types/transform/image.d.ts: -------------------------------------------------------------------------------- 1 | import type { SharpOptions as SharpConfig } from 'sharp'; 2 | import type { GetProcessorConfigs } from '../shared'; 3 | 4 | export type { SharpConfig }; 5 | 6 | /* -------------------------------------------- */ 7 | /* INTERNAL USE */ 8 | /* -------------------------------------------- */ 9 | 10 | /** 11 | * **INTERNAL USE** 12 | * 13 | * Processor Configuration 14 | */ 15 | export type SharpProcesser = GetProcessorConfigs 16 | --------------------------------------------------------------------------------