diff --git a/packages/vlossom/.storybook/examples/style-set.ts b/packages/vlossom/.storybook/examples/style-set.ts index c54475908..1208974ae 100644 --- a/packages/vlossom/.storybook/examples/style-set.ts +++ b/packages/vlossom/.storybook/examples/style-set.ts @@ -8,6 +8,7 @@ import type { VsValueTagStyleSet, VsNoticeStyleSet, VsProgressStyleSet, + VsChipStyleSet, } from '@/components/types'; const vsButton: VsButtonStyleSet = { @@ -15,6 +16,15 @@ const vsButton: VsButtonStyleSet = { color: 'white', }; +const vsChip: VsChipStyleSet = { + backgroundColor: '#a5d6ad', + borderRadius: '1.2rem', + color: '#304d30', + height: '3rem', + minHeight: '2rem', + padding: '0.8rem 1.5rem', +}; + const vsDivider: VsDividerStyleSet = { lineColor: '#7071e8', lineStyle: 'double', @@ -61,6 +71,7 @@ const vsProgress: VsProgressStyleSet = { export const styleSet: StyleSet = { VsButton: { myStyleSet: vsButton }, + VsChip: { myStyleSet: vsChip }, VsDivider: { myStyleSet: vsDivider }, VsInput: { myStyleSet: vsInput }, VsNotice: { myStyleSet: vsNotice }, diff --git a/packages/vlossom/src/assets/icons/check.ts b/packages/vlossom/src/assets/icons/check.ts new file mode 100644 index 000000000..6437a15f8 --- /dev/null +++ b/packages/vlossom/src/assets/icons/check.ts @@ -0,0 +1,6 @@ +export default { + template: ` + + + `, +}; diff --git a/packages/vlossom/src/assets/icons/person.ts b/packages/vlossom/src/assets/icons/person.ts new file mode 100644 index 000000000..72a15c26f --- /dev/null +++ b/packages/vlossom/src/assets/icons/person.ts @@ -0,0 +1,6 @@ +export default { + template: ` + + + `, +}; diff --git a/packages/vlossom/src/components/types.ts b/packages/vlossom/src/components/types.ts index f10756d95..fe497e115 100644 --- a/packages/vlossom/src/components/types.ts +++ b/packages/vlossom/src/components/types.ts @@ -1,4 +1,5 @@ export type * from './vs-button'; +export type * from './vs-chip'; export type * from './vs-container'; export type * from './vs-divider'; export type * from './vs-form'; diff --git a/packages/vlossom/src/components/vs-chip/VsChip.scss b/packages/vlossom/src/components/vs-chip/VsChip.scss new file mode 100644 index 000000000..41cc6fd23 --- /dev/null +++ b/packages/vlossom/src/components/vs-chip/VsChip.scss @@ -0,0 +1,85 @@ +.vs-chip { + button { + all: unset; + } + + align-items: center; + background-color: var(--vs-chip-backgroundColor, var(--vs-comp-backgroundColor)); + border: var(--vs-chip-outlineBorder, 1px solid var(--vs-comp-color), 0); + border-radius: var(--vs-chip-borderRadius, 1.3rem); + color: var(--vs-chip-color, var(--vs-comp-color)); + display: inline-flex; + font-size: var(--vs-chip-fontSize, 0.82rem); + font-weight: var(--vs-button-fontWeight, 400); + height: var(--vs-chip-height, 1.5rem); + justify-content: center; + min-height: var(--vs-chip-minHeight, 1.2rem); + padding: 0 0.4rem; + position: relative; + + &:after { + background: #ffffff; + content: ''; + display: block; + height: 100%; + left: 0; + opacity: 0; + pointer-events: none; + position: absolute; + top: 0; + transition: all 0.4s ease-out; + width: 120%; + } + + .vs-chip-icon { + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + } + + .vs-chip-leading-icon { + overflow: hidden; + } + + .vs-chip-close { + background-color: rgba(255, 255, 255, 0.7); + cursor: pointer; + height: calc(var(--vs-chip-height, 1.2rem) * 0.8); + width: calc(var(--vs-chip-height, 1.2rem) * 0.8); + } + + .vs-chip-content { + padding: var(--vs-chip-padding, 0 0.2rem); + } + + .vs-chip-icon + .vs-chip-content { + margin-left: 0.05rem; + } + + &.noRound { + border-radius: 0.25rem; + .chip-icon { + border-radius: 0.25rem; + } + } + + &.clickable { + cursor: pointer; + + &:active:after { + opacity: 0.6; + transition: 0s; + width: 0%; + } + } + + &.primary { + background-color: var(--vs-chip-backgroundColor, var(--vs-comp-backgroundColor-primary)); + color: var(--vs-chip-color, var(--vs-comp-color-primary)); + } +} + +.vs-chip + .vs-chip { + margin-left: 0.2rem; +} diff --git a/packages/vlossom/src/components/vs-chip/VsChip.vue b/packages/vlossom/src/components/vs-chip/VsChip.vue new file mode 100644 index 000000000..42faa668e --- /dev/null +++ b/packages/vlossom/src/components/vs-chip/VsChip.vue @@ -0,0 +1,81 @@ + + + + +