GithubHelp home page GithubHelp logo

prestashopcorp / puik Goto Github PK

View Code? Open in Web Editor NEW
12.0 16.0 1.0 6.34 MB

PrestaShop UI Kit with Tailwind aka Puik

License: MIT License

Vue 87.74% JavaScript 7.05% Shell 0.31% EJS 3.62% HTML 0.28% MDX 1.01%

puik's Introduction

Logo

Puik

The PrestaShop UI Kit

Documentation

About The Project

Puik is a component library that aims to provide a complete set of reusable components based on the PrestaShop Design System for all the PrestaShop ecosystem.

Using the VueJS components

Prerequisites

  • Node.js LTS is required

Installation

# chose your favorite package manager
# NPM
$ npm install @prestashopcorp/puik --save

# Yarn
$ yarn add @prestashopcorp/puik

# pnpm
$ pnpm install @prestashopcorp/puik

(back to top)

Usage

Auto import (recommended)

First you need to install unplugin-vue-components & unplugin-auto-import

$ npm install -D unplugin-vue-components unplugin-auto-import

# Yarn
$ yarn add unplugin-vue-components unplugin-auto-import -D

# pnpm
$ pnpm install unplugin-vue-components unplugin-auto-import -D

Then add the code below in your vite.config file

import { defineConfig } from 'vite'
import Components from 'unplugin-vue-components/vite'
import AutoImport from 'unplugin-auto-import/vite'
import { PuikResolver } from '@prestashopcorp/puik'

export default defineConfig({
  plugins: [
    // ...
    Components({
      resolvers: [PuikResolver()],
    }),
    AutoImport({
      resolvers: [PuikResolver()],
    }),
  ],
})

On demand import

Import the vue component and the component css directly into your vue file

<script setup>
import '@prestashopcorp/puik/es/components/button/style/css'
import { PuikButton } from '@prestashopcorp/puik'
</script>

<template>
  <puik-button>Example button</puik-button>
</template>

(back to top)

Full import

If you don't care about bundle size you can full import the library by following these instructions

Import the vue library and the css directly into your main.js / main.ts

import { createApp } from 'vue'
import Puik from '@prestashopcorp/puik'
import '@prestashopcorp/puik/dist/index.css'
import App from './App.vue'

const app = createApp(App)

app.use(Puik)
app.mount('#app')

(back to top)

Dark Mode

We are using the Tailwind Dark Mode.

To use it you just have to write the css dark rules with dark:<oneRule> in your css. (I recommand to put your light and dark styles on two lines for greater readability)

Exemple
Here we are saying the button background will be blue in light mode and green in dark mode

.my-button {
  @apply bg-blue;
  @apply dark:bg-green;
}

Using the CSS components

If you don't use VueJS for your application, you can use the CSS only version of our components. It includes all the styles used in the VueJs component library.

Usage

  1. Include the CSS in your HTML by using the CDN
<link
  rel="stylesheet"
  href="https://unpkg.com/@prestashopcorp/puik/dist/index.css"
/>
  1. Add the classes in your HTML
<button class="puik-button">Example button</button>

(back to top)

Contributing

Please make sure to read the Contributing Guide before making a pull request

(back to top)

puik's People

Contributors

mattgoud avatar kelhel avatar aamorim27 avatar guillaumeguerin1 avatar mikelebeau avatar guillaume60240 avatar elisegriset92 avatar jmcollin avatar prxmat avatar mrbaiame avatar ga-devfront avatar renovate[bot] avatar ady642 avatar julienr114 avatar claralpresta avatar kevin-carangeot avatar fox-john avatar francoisqtr avatar cnavarro-prestashop avatar khanhmas avatar antoinemetifeu avatar damianbaker avatar thbps avatar ancardinale avatar dependabot[bot] avatar

Stargazers

Miguel Montalvo avatar  avatar  avatar  avatar Meka Claude avatar Denys BEZUHLYI avatar Sijan Khadka avatar Jonathan Danse avatar  avatar Clément Désiles avatar  avatar  avatar

Watchers

Pedro Pérez avatar James Cloos avatar Clément Désiles avatar  avatar Mathieu Ferment avatar  avatar Matthias RAIGNE avatar Guillaume A avatar Denis avatar  avatar  avatar Ibrahima SOW avatar  avatar  avatar  avatar  avatar

Forkers

isaac179

puik's Issues

[Component] Pagination

Quick description

Component name: Pagination
Preview link:

Technicals specifications

props :

  • v-model : current page
  • variant : mobile, small, medium, large (default medium)
  • totalItem (required)
  • maxPage (required)
  • itemCount (required)
  • label : text displayed (default depends of variant)
  • mobileButtonLabel : text displayed on mobile version (default You saw {itemCount} product out of {totalItem})

events :

  • updage:modelValue : event emitted when page changes (number)

[Feature] Animate the tooltip apparition

What problem does this feature solve?

not really a problem rather than a possible enhancement.
The actual tooltip is displayed without any animation. It's just a switch between visible and not.

What is your idea for solve this issue

It would be pleasant to have an animation showing it gradually and moving to its final place.
The best way to describe it is to check the tooltip on this page: https://precedent.dev/

[Feature] Layout component to ease readability

What problem does this feature solve?

With tailwind, we may use mainly div and span with a lot of classes. It could become really cumbersome to read, especially for some classes. For instance, grid or flex.

What is your idea for solve this issue

A possible enhancement could be to add some layout component.
For instance, instead of using the flex class, we may have a layout component for that.
Before:

<div class="flex flex-row flex-wrap">
    <span data-test="name" class="mr-1">{{ data.name }}</span>
    <span v-if="data?.qualification" data-test="qualification" class="capitalize">({{ data.qualification }})</span>
</div>

After:

<flex row wrap>
    <span data-test="name" class="mr-1">{{ data.name }}</span>
    <span v-if="data?.qualification" data-test="qualification" class="capitalize">({{ data.qualification }})</span>
</flex>

Nothing amazing here. Just a little help for the dev ;)

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: .github/renovate.json5
Error type: The renovate configuration file contains some invalid settings
Message: Invalid configuration option: node

[Component] Accordion

Quick description

Accordion component : https://www.figma.com/file/CUc5n1r2UIH30Tqec5DOvN/PrestaShop-Design-Kit?node-id=3486%3A16601&t=dlQfaern7lFVgbNJ-0

Technicals specifications

Components :

  • AccordionGroup
    • Props :
      • multiple : boolean, allow multiple panels to be expanded
      • v-model : number/number[]/null, control open accordions
    • slots :
      • default: accordions
  • Accordion : component used within AccordionGroup
    • props : 
      • name : string
      • title : string
    • slots :
      • title : title content
      • default: panel content

[BUG]

Duplicates ❌

Reproduce link

Steps to Reproduce

Expected Behavior

Current Behavior

Additional comments

[ENHANCEMENT] To use modal as a menu on mobile

Context

I'm using puik 1.4.0
We would litke to implement menu on mobile. And on mobile, popmenu are transformed to a modal at the bottom of the screen.
The puik-modal is nearly ok for that but 2 things are missing:

  • the possibility to remove the header
  • the width which should be 100%

This could be done by hacking puik CSS like this:

.modal-menu
  header
    display: none
  .puik-modal__dialogPanelContainer__dialogPanel
    width: 100%

but it would be better if it was handled by the puik-modal directly.

Here is the puik-modal with the css hack:
image

And without:
image

[BUG] SnackBar behaviour is incorrect

Context

Puik 1.5.1

Current Behavior

  • The snackbars are behaving like notification cards (a.k.a Toast Messages) i.e there are stacking up.
  • The close button is always present.

Expected Behavior

The snackbar is NOT a notification card (toast message).

They should not stack up.
See here : Consecutive snackbars behaviour

The snackbar close button is optional.

there should be a parameter whether to show it.
See here : SnackBar Layout

Additional comments

Sometimes, you may display a message and the situation changed faster than expected so you wish to display another message instead.
Like, for instance, you're trying to save something so you display "saving document...". Then, boom, an error occurred.
You wish to immediately replace the snackbar shown with a new one displaying "An error occurred !".
Therefore, either an option saying the snackbar is to replace immediately the current one or a close function accessible by program could help here.

[Feature] Using withDefaults() and defineProps<>() instead of buildProps()

What problem does this feature solve?

Currently it is not possible to use Enumeration for the declaration of props.
We use buildProps() method for defining all params of props, but only generic type is accepted for defining props into this method.

What is your idea for solve this issue

I recommend to use the official way for this task.

Exemple, with buildProps() :

export const iconProps = buildProps({
    icon: {
        type: String,
        required: true,
    },
    fontSize: {
        type: String,
        required: false,
        default: '12px',
    },
    type: {
        type: String,
        required: false,
        default: '-round',
    },
    color: {
        type: String,
        required: false,
        default: '#00000',
    },
} as const)

Exemple with defineProps<>() and withDefault() :

export enum MaterialIconType {
    FILLED = '',
    OUTLINED = '-outlined',
    ROUND = '-round',
    SHARP = '-sharp',
    TWO_TONE = '-two-tone',
}

const props = withDefaults(defineProps<{
    icon: string;
    fontSize?: string;
    type?: MaterialIconType;
    color?: string;
}>(), {
    fontSize: '12px',
    type: MaterialIconType.ROUND,
    color: '#00000'
});

This way doing it allow to use enumeration in definitions of props.

[Docs] Improve the documentation of the library

Documentation RFC

  • Start Date: 27-09-2022
  • RFC PR: #56

Summary

  • Create clear guidelines about writing a set of storybook stories when adding or improving a component in the library
  • Use vitepress as our public documentation
  • Use storybook/chromatic for UI reviews and visual regression testing

Motivation

Since the start of Puik we used a storybook deployed in chromatic as documentation & UI review tool but we never had defined a clear set of guidelines about how to write a good set of stories for a component.

By not having these guidelines we end up with too much stories for some components, the most recent example is the button component who has 9 color variants, each of the color variant has a story in storybook and the code difference between all the variants is just a different prop value.

During the development we also encountered a pain point, as our library provides two ways of implementing our components with Vue or HTML/CSS we must also provide code snippets for the two languages. But currently storybook doesn’t provide a way to switch between the two languages with the integrated code snippets. Sometimes we end up having big code snippets because the two languages coexist in the same snippet with HTML/CSS being obviously the bigger one. If someone is only looking for the vue documentation the snippets will be polluted with useless code for him.

This proposal aims to simplify our way to use storybook stories and improving our documentation readability for us and our users

Design Detail

Overview

  • Each component must have a story (auto generated base story)
  • Stories must document every useful case of your component
  • The first story of each component must be a playground where storybook controls are usable
  • If a component prop has multiple defined values make only one story and group them all
  • Vitepress is the current potential solution for the public tech documentation
  • Each component must have is own page in the vitepress docs (auto generated base page)
  • The page will integrates the storybook previews and code snippets for each languages

Stories

On Puik each component must have a set of storybook story documenting all the differents states of the component.

The first story must be used as a playground story were storybook controls are enabled, it will help us to understand how to the component works and will provide a way to test edge cases when designers are doing the UI review. The others stories must have the controls set as disable.

If a prop on your component can have multiple defined values like for colors variants or sizes you do not need to create a story for each one of them instead you can group them inside one story.
As an example we can take the case of the button component, this component has 9 different variants, instead of having a primary, secondary... story we can create a Variants story which displays all the 9 variants.
By doing this we reduce the size of the story tree of the component which improves the navigation readability in the storybook and we also reduce our code in the story file.

Examples:

Documentation

As of today our code documentation is on storybook and consists of one code snippet including two languages (Vue & HTML/CSS) in the same snippet for each story of a component which can be painful to maintain and to read for the user.

In order to improve our Dx (Developer Experience) on documentation i searched for a way to generate a documentation site by writting Markdown, i found VitePress which is a SSG using Vue 3 & Vite and i made a POC using some of the already existing documentation in Puik

Why using VitePress over another SSG ?

  • It uses Vue 3
    • And our teams know how to use Vue
    • We can use the Puik components & custom vue components directly in the documentation
  • Build times are pretty fast (thanks to Vite ⚡)
  • Comes with a good default theme for technical documentation
  • Has an easy to use integration with Algolia DocSearch which is free if the project becomes open source
  • It’s the standard SSG for documentation on the Vue ecosystem (VueJS, Vite, Vitest docs already uses vitepress)

The documentation is splitted in two parts:

  • Guide
    • Contains everything related to installing the library and how to use it
  • Components
    • Contains all the components documentation
      • Preview of the component from storybook for each state
      • With an associated code snippet where the user can switch between the Vue snippet or the HTML/CSS snippet
      • Contains detailed tables about the components props, events & slots

Documentation POC:

Drawbacks

  • Two sources to maintain
    • Storybook for listing states (preview only, UI review)
    • Vitepress for technical documentation (code snippets, install guide, lib usage)

Unresolved questions

  • Can we improve our documentation flow by automatically generating documentation for components props/slots/events ? To investigate but It seems there is already some solutions like vuedoc/md or vue-docgen-cli
  • Can the zeroheight used by the design team replace what we are doing with vitepress ?

[Feature] Update foundations

What problem does this feature solve?

Designers have updated the foundations.
We need to check if we are matching the new colors, fonts, etc...

What is your idea for solve this issue

Updates tailwind config file.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • chore(deps): update dependency prettier to v3

Edited/Blocked

These updates have been manually edited so Renovate will no longer make changes. To discard all commits and start over, click on a checkbox.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/actions/build-and-publish/action.yml
  • pnpm/action-setup v2
  • actions/setup-node v3
  • actions/setup-node v3
.github/workflows/cd-publish-package.yml
  • actions/checkout v3
.github/workflows/chromatic.yml
  • actions/checkout v3
  • actions/setup-node v3
  • pnpm/action-setup v2
  • chromaui/action v1
.github/workflows/ci.yml
  • actions/checkout v3
  • pnpm/action-setup v2
  • actions/setup-node v3.6.0
  • actions/cache v3
npm
build/package.json
  • @pnpm/find-workspace-packages ^6.0.5
  • @pnpm/logger ^5.0.0
  • @rollup/plugin-commonjs ^24.1.0
  • @rollup/plugin-node-resolve ^15.0.2
  • @vitejs/plugin-vue ^4.1.0
  • chalk ^5.2.0
  • components-helper ^2.1.4
  • consola ^2.15.3
  • esbuild ^0.17.16
  • fast-glob ^3.2.12
  • fs-extra ^11.1.1
  • gulp ^4.0.2
  • lodash-unified ^1.0.3
  • rollup ^3.20.2
  • rollup-plugin-esbuild ^5.0.0
  • unplugin-vue-define-options ^1.3.3
  • @esbuild-kit/cjs-loader ^2.4.2
  • @pnpm/types ^9.0.0
  • @types/rollup-plugin-css-only ^3.1.0
  • unbuild ^1.2.0
  • vue ^3.2.47
docs/package.json
  • typescript ^5.0.4
  • vue ^3.2.47
  • @storybook/addon-a11y ^6.5.16
  • @storybook/addon-actions ^6.5.16
  • @storybook/addon-essentials ^6.5.16
  • @storybook/addon-links ^6.5.16
  • @storybook/vue3 ^6.5.16
  • @vitejs/plugin-vue ^4.1.0
  • vite ^4.2.1
package.json
  • @headlessui/vue ^1.7.13
  • @popperjs/core ^2.11.7
  • @vueuse/core ^9.13.0
  • lodash-es ^4.17.21
  • lodash-unified ^1.0.3
  • @commitlint/cli ^17.5.1
  • @commitlint/config-conventional ^17.4.4
  • @esbuild-kit/cjs-loader ^2.4.2
  • @faker-js/faker ^7.6.0
  • @pnpm/find-workspace-packages ^6.0.5
  • @pnpm/logger 5.0.0
  • @pnpm/types ^9.0.0
  • @types/fs-extra ^11.0.1
  • @types/gulp ^4.0.10
  • @types/lodash ^4.14.192
  • @types/lodash-es ^4.17.7
  • @types/node ^18.15.11
  • @types/sass ^1.43.1
  • @typescript-eslint/eslint-plugin 5.58.0
  • @typescript-eslint/parser 5.58.0
  • @vitejs/plugin-vue ^4.1.0
  • @vue/test-utils ^2.3.2
  • @vue/tsconfig ^0.1.3
  • chalk ^5.2.0
  • chromatic ^6.17.3
  • consola ^2.15.3
  • cz-conventional-changelog ^3.3.0
  • eslint ^8.38.0
  • eslint-config-prettier 8.8.0
  • eslint-define-config ^1.17.0
  • eslint-plugin-import 2.27.5
  • eslint-plugin-prettier 4.2.1
  • eslint-plugin-vue 9.10.0
  • fast-glob ^3.2.12
  • husky ^8.0.3
  • hygen ^6.2.11
  • jsdom ^21.1.1
  • lint-staged ^13.2.1
  • prettier ^2.8.7
  • pretty-quick ^3.1.3
  • rimraf ^5.0.0
  • sass ^1.62.0
  • tsx ^3.12.6
  • typescript ^5.0.4
  • unplugin-vue-define-options ^1.3.3
  • vitest ^0.30.1
  • vue ^3.2.47
  • vue-router ^4.1.6
  • vue-tsc ^1.2.0
  • node >= v18.16.0
  • pnpm 8.2.0
packages/components/package.json
packages/hooks/package.json
packages/locale/package.json
packages/puik/package.json
  • @headlessui/vue ^1.7.13
  • @popperjs/core ^2.11.7
  • @vueuse/core ^9.13.0
  • lodash ^4.17.21
  • lodash-es ^4.17.21
  • lodash-unified ^1.0.3
  • @types/lodash ^4.14.192
  • @types/lodash-es ^4.17.7
  • @types/node *
  • unplugin-vue-components ^0.24.1
  • vue ^3.2.47
  • vue-router ^4.1.6
packages/tailwind-preset/package.json
packages/theme/package.json
  • @esbuild-kit/cjs-loader ^2.4.2
  • @types/gulp-autoprefixer 0.0.33
  • @types/gulp-clean-css 4.3.0
  • @types/gulp-rename 2.0.1
  • @types/gulp-sass 5.0.0
  • autoprefixer ^10.4.14
  • gulp-autoprefixer 8.0.0
  • gulp-clean-css 4.3.0
  • gulp-postcss ^9.0.1
  • gulp-rename 2.0.0
  • gulp-replace ^1.1.4
  • gulp-sass 5.1.0
  • postcss ^8.4.21
  • tailwindcss ^3.3.1
packages/tokens/package.json
packages/utils/package.json
playground/package.json
  • vue ^3.2.47
  • @vitejs/plugin-vue ^4.1.0
  • typescript ^5.0.4
  • vite ^4.2.1
  • vue-tsc ^1.2.0

  • Check this box to trigger a request for Renovate to run again on this repository

[BUG] Puik tailwind override project tailwind CSS with random effect

Context

  • Browser: Chrome
  • Vue version: 3
  • Package version: 0.0.3

Reproduce link

In any project importing Puik and tailwind

Steps to Reproduce

  1. Import puik and tailwind in a vue project
  2. Use hidden sm:table-cell on a div

Expected Behavior

The div should be hidden from 0 to 640px than display as table-cell

Current Behavior

The div is always hidden

Additional comments

From slack

Capture d’écran 2022-11-15 à 15 47 41

Problème
La première balise style ajout le style lié aux class que j'utilise dans mon code, la seconde seulement une partie des classe existante dans tailwind.
Du coup si j'utilise hidden sm:table-cell meme en mobile la class hidden s'applique car la seconde balise style ne container pas sm:table-cell donc les règles de priorités CSS font que c'est le hidden qui l'emporte quoi qu'il arrive. Cf image, en bleu le CSS issu de la première balise style ; en rouge de la seconde

Hypothèse
Il y a une du CSS importé via les composants Puik / preset Puik et au lieu d'avoir une seule déclaratio qui reprend tout le style on en a 2, et malheureusement c'est le style de Puik qui est importé en dernier et qui rend inutilisable tout ce qui est dans tailwind mais pas dans le css de Puik.

[Feature] Create a class to apply rounded border-radius for image in card

What problem does this feature solve?

Currently every image within a PuikCard have 0.5rem border-radius, which could be sometimes wrong. Here is an example

image

The tailwind rounded-none doesn't disable it as it's less precise as css selector

What is your idea for solve this issue

We could add a class puik-card-img to enable the border-radius or the opposite ; create a no-border-radius class.

[Feature] Pass key instead of localised text for all text parameters

What problem does this feature solve?

As all our texts are localized (because they have to), therefore we have to use the global function $t() for all our text parameters.

What is your idea for solve this issue

We may pass keys directly rather than the localised text.

For instance, insteas of this

<Tooltip :text="$t('ONE.TWO.TOOLTIP')"  />

we could have

<Tooltip :text="ONE.TWO.TOOLTIP"  />

This is true for all components and all the text parameters.

  • It is a syntaxic sugar
  • It allows to avoid repeat of $t()
  • It's a strong reminder that all the texts should be localised.

[BUG] CRITICAL - Menu is not over the other elements

Context

Puik 1.5.0

The menu should be over all the other elements. Sadly, it is not.

image

Expected Behavior

A simple change like:

<style lang="sass">
.puik-menu__content
  z-index: 1
</style>

fixes it:
image

I suppose it wasn't seen before because the menu was the only element in the position:absolute isolation scope.
On our page, we have elements in position:absolute (the grid). Hence the collision, I reckon.

[Component] Menu

Quick description

Menu component : https://www.figma.com/file/CUc5n1r2UIH30Tqec5DOvN/PrestaShop-Design-Kit?node-id=1837%3A12498&t=hlQuif0VwOJ3xexn-0

Technicals specifications

Components :

  • Menu :
    • props :
      • width
      • maxHeight
      • position : position above or below activator
      • align : align left or right activator
    • Slots :
      • default : menu content
      • activator : activator
  • MenuItem :
    • props :
      • rightIcon: string
      • leftIcon : string
      • to: string, item router link route name
      • href : string, item link
      • destructive : boolean,
      • disabled : boolean
    • slots :
      • default : item content
      • item : slot to replace whole item
  • MenuItemGroup :
    • props :
      • title: string, group title
    • slots :
      • default : group content (should be MenuItem or MenuItemSeparator)
  • MenuItemSeparator

[Component] Overlay

Quick description

Component name: overlay
Preview link:

  • waiting figma from DS

Technicals specifications

Displaying background color with transparency in front, needed for loader, or modal

[Component] Icon

Quick description

Component name: icon
Preview link:

Technicals specifications

  • This Component display icons of material icon font, with many parameters.

[BUG] [puik-menu-item] Wait after props but no props for this component

I've got an error with the puik-menu-item:
Argument of type '{}' is not assignable to parameter of type '({ [x: number]: string | Prop<unknown, unknown> | (string & (Prop<unknown, unknown> | null | undefined)) | ((Prop<unknown, unknown> | null | undefined) & string) | null | undefined; readonly concat: Prop<unknown, unknown> | ... 4 more ... | undefined; ... 36 more ...; style?: unknown; } | { ...; }) & Record<...>'. <puik-menu-item>
I use this component as I see on the doc:
`

<puik-button
    variant="text"
    :leftIcon="link.icon"
     :href="$t('header.menu.${link.href}')"
      target="_blank"
     @click="close"
 >{{ $t('header.menu.${link.label}') }}
 </puik-button>
`

[Feature] - Provide an alternative to Tailwind Preset for users that don't use Tailwind

What problem does this feature solve?

Currently the only way to get access to the design system foundation (colors, spacers, breakpoints, etc.) is by using the Tailwind Preset included in the library. But it may occur that some projects aren't using Tailwind and may want to have access to the design system foundation. It may be great to provide a way to access the design system foundation without Tailwind CSS

What is your idea for solve this issue

We can export CSS Design tokens by defining CSS custom properties (variables)
The values of the variables will be linked to the Tailwind CSS config file by using the theme() function to maintain the values in one place

[Component] Icon

Quick description

Component name: Icon
Preview link: no preview link

Technicals specifications

Displaying icon, with material-icon, and set size and color, in rounded only

[Component] Date range picker

Add the Date range picker component to the library
Figma: https://www.figma.com/file/CUc5n1r2UIH30Tqec5DOvN/PrestaShop-Design-Kit?node-id=2234%3A16844

Technical specifications

Global

Options (props)

  • Disabled ⇒ Disable date range picker (default: false, type: boolean)
  • Error ⇒ Switch date range picker in error (default: false, type: boolean)
  • PrintedFormat ⇒ Possibility to choose printed format (default: MM-DD-YYYY, type: string)
  • Columns ⇒ 2 or 3 calendars displayed (default: 2, type: number || string)
  • SoloCalendars ⇒ Let change month separate for each calendar (default: false, type: boolean) WARNING : not compatible with 3 collumns calendar
  • RangeOptions ⇒ Display list of range option (default: false, type: boolean)
  • AutoApply ⇒ Auto-apply after finish range selection (default: false, type: boolean)
  • DisabledDates ⇒ Disabled dates (default: null, type: string || array || function)

Question marks

  • what the difference on different arrow header ? jump for one month or one year
  • What should happen if we select a range with a disabled date ? do not permit it (discussion with other devs)

Component Architecture

image
figma link

[Component] Layout

Quick description

Component name: PuikLayout
Preview link: figma
Description: it is a backoffice layout component with different areas (sidebar, header, grid)

Technicals specifications

  • Props :
    • Prop to hide header
    • Prop to hide side bar
    • Prop to change header height
    • Prop to change sidebar width
    • Prop to provide customizations options
  • Behaviour :
    • Specifications change according to screen size, see figma

[Feature] Add a foundation section in Storybook

What problem does this feature solve?

Designer are willing to be able to check foundations directly in Storybook.

What is your idea for solve this issue

We could add a new Foundation section with different pages:

  • colors
  • grids
  • layers
  • typography
  • spacing
  • etc...

The Figma file where the foundations lie.

image

[BUG] Button with icon as a different height from button without icon

Context

  • Browser: Chrome
  • Vue version: 3
  • Package version: 0.0.3

Reproduce link

The bug is visible on chromatic https://main--6267e986619a13004a943d93.chromatic.com/?path=/story/components-button--with-icon

image

Steps to Reproduce

  1. Go to button with icon in chromatic
  2. Go in the browser consol and remove icon from one button

Expected Behavior

Same size for the button with or without icon

Current Behavior

Button with account is higher

Additional comments

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.