Giter VIP home page Giter VIP logo

vuestorefront / storefront-ui Goto Github PK

View Code? Open in Web Editor NEW
2.3K 68.0 457.0 94.65 MB

A frontend library for Vue and React that helps developers quickly build fast, accessible, and beautiful storefronts. Made with ๐Ÿ’š by Vue Storefront team and contributors.

Home Page: https://storefrontui.io

License: MIT License

JavaScript 1.36% HTML 0.20% Vue 37.63% SCSS 0.48% Dockerfile 0.11% EJS 0.43% TypeScript 59.72% CSS 0.08%
vue ecommerce ui-kit ui pwa vuejs vuejs2 ui-components vue-components javascript

storefront-ui's People

Contributors

adampawlinski avatar aniamusial avatar baroshem avatar dependabot[bot] avatar dkacper avatar donnicojs avatar dz3n avatar eduarddopler avatar filrak avatar frsgit avatar github-actions[bot] avatar juanfrantomaswac avatar justyna-13 avatar leomp12 avatar lorenaramonda avatar martaradziszewska avatar mattmaribojoc avatar mayashavin avatar michal-dziedzinski avatar patzick avatar peoray avatar pspaczek avatar rakowskiprzemyslaw avatar renovate[bot] avatar runyasak avatar shatanov avatar szymon-dziewonski avatar talissonf avatar thiagoabreudev avatar ymaheshwari1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

storefront-ui's Issues

[ Mobile / Desktop ] Implement SfBadge

Figma designs on Mobile Guide > Urgency Elements.

Proposed API

  • default slot (for content);
  • CSS modifiers --info, --alert and --warning, defaults to primary color (the green);

No props, no methods, no events (pretty simple ๐Ÿ˜„ ).
Take a look on SfAlert as reference.

Please mind that it's just a proposal. We're open to discussion regarding component API.

[ Storybook ] Adjust Storybook stories to common format

Every available component stories should be adjusted to common format. If they don't exist they should be created.

The format is described here

In short words we should have at least those stories for every component:

  • one with props (as knobs)
  • one or more for different usage examples
  • one for slots
  • one for CSS modifiers

[ Mobile / Desktop ] Implement SfAccordion

Mobile:iPhone/More actions THE ARROW SHOULD HAVE TOP/BOTTOM DIRECTION DEPENDING OIN STATE
image
Desktop (category page)
image

In both cases it's just a toggle using fade and slide down animation.
It should contain:

  • Title prop
  • Content slot
  • Title slot
    can be found on designs

[ Mobile / Desktop ] Implement SfRadio component

image
image

Component should be based on alpaca's one (which is in our dependencys) but with applied changes to match our designs.
https://alpaca-storybook.now.sh/

Read more in Working with Alpaca

Once you adjust the design the current alpaka api should remain as simpel customization option (pass everything through :options) but it also should expose slots-based configuration

<!-- Prop-based with our html -->
<SfRadio :options="options" />
<!-- With custom template, scoped slot -->
<SfRadio :options="options">
  <template #label="option"> Option: {{ option.label }} </template>
  <template #description="option"> Option: {{ option.description }} </template>
</SfRadio>

By default we are not implementing the bold part

Here reference to docs to understand it better https://vuejs.org/v2/guide/components-slots.html#Other-Examples

Can be found on designs under IPhone/Checkout boards

[ Mobile / Desktop ] Implement SfSidebar

Mobile
image
Desktop
image

The task involves creating just a sidebar with an empty default slot
CSS modifiers:
--left or --right depending which one you will choose as default (i suggest right).

Can be found on designs in various boards like productFiltering (desktop) and iPhone/MoreActions (mobile)

[FEAT] MegaMenu component

Create mega menu component (desktop only)
This component is only a wrapper for other components so the task does not involve creating the components inside of it.

image

Proposed API:

  • just a default slot

Visibility properties shouldn't be a part of the component itself so the task is to make static MegaMenu component without any content, just a slot + write basic unit tests:

  • if it renders
  • if the slot content is rendered.

Designs: https://www.figma.com/file/hrwE3VsMBHgdJoS86rVr4W/Desktop-%26-Mobile-Vue-Storefront?node-id=99%3A0

[Desktop / Mobile ] Implement SfTabNavigation

Desktop
image
image
Mobile
There is no strict design for mobile view so please copy font styles from Steps (can eb found on mobile checkout)
image

Can be found on designs on product page (desktop)


Proposed API to implement

Second one treats nav as a totally separate component

<SfTabNavigation :nav="navItems" current="currentTab" @change="newVal => currentTab = newVal">
  • slot item for nav item

navItem format

{ id: string, label: string }

[ Mobile / Desktop ] Implement SfGallery

Desktop:
image
Mobile:
image

Implement mobile and desktop gallery component.
On mobile it should support touch events and be swappable.

Proposed API:

  • images - (prop )Array of objects containing main image and optionally a thumbnail
  • active (prop) - id of active image

Optional (if you don't handle it we can make separate issues)

  • if there is a separate image for thumbnail main image should be loaded lazily
  • add autoScroll prop and functionality

Please mind that it's just a proposal. We're open to discussion regarding component API.

Can be found on designs on product pages.

[ Mobile / Desktop ] Implement SfCheckbox

image
image

Use alpaca component as a base (already included as a dependency)
https://alpaca-storybook-ebth12xpx.now.sh/components/?path=/story/elements-form-checkbox--default. (https://github.com/SnowdogApps/alpaca-storybook/tree/develop/components/src/02-elements/checkbox)

You can safely import JS part and just override HTML SCSS to match our design

Read more in Working with Alpaca

It should incude

  • prop label to fill default slot with label
  • default slot with content of "label" slot that can be used to add custom markup

Can be found on designs on IPhoneChackoutPersonal Details and IPhone/Checkout/Review Order (checked)

[ Desktop / Mobile ] Implement SfInputNumber

Figma designs on product page.

Imho it should have 2 chevrons (up and down), for best usability, even though it was otherwise suggested in Figma.
I think it's important that the native <input> have type="tel" to open the number keyboard by default on mobile (good practice) and skip design problems (varying by browser) created by type="number".


Proposed API

Props

  • step - incremental step, 1 by default
  • value / v-model - input value, 0 by default
  • min - min value
  • max - max value
  • placeholder - placeholder for the native input element
  • precision - decimal precision, 0 by default (for integers)
  • name - native input name

When max is 0, native input should be disabled.

Slots

  • default - slot with input element, should bind the value
  • up - arrow (control) up
  • down - arrow (control) down

Events

  • change
  • focus
  • blur

Methods

  • focus
  • blur
  • select

Events and methods same as in native input.

[ Mobile / Desktop ] Loading component and directive

I think we should implement SfLoading component to handle loading spinners inside other components, but we may also append a spinner on body and create a v-loading directive to toggle this global loading spinner.
Not a necessity, but I believe it would be comfortable to use in this way, waiting for opinions...

[ Mobile / Desktop ] implement SfCircleButton

image

Create rounded button component. Please make sure you implement hover state properly too.

Proposed API

  • default slot for content
  • css modifiers --primary --secondary for colors

Please mind that it's just a proposal. We're open to discussion regarding component API.

Can be found in designs under "style guide" table.

Using inline SVGs instead of img tags for icons

First of all: We are currently evaluating VS for new projects and I have clicked through here a little bit. I think storefront ui is a very solid foundation, especially for theme 2.0. I would have some thoughts about that, i hope it's ok.

I've seen that currently simple img tags are used for icons and want to ask if there have ever been any thoughts about using inline SVG's. For example with the help of the vue-svg-loader

I have already used it in some projects and could also help with the implementation.

I see limitations by using img tags for icons. If you use the SVG's directly you can style them e.g. via css. There is a lot more scope for customization (Custom colors, Hover styles).

I am looking forward to feedback and your thoughts!

License?

Hello,
I'm really interested on this project and also want to contribute here, but first I have to know if you are planning to release it open sourced (as Vue Storefront is), are you?
Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.