├── .browserslistrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .github ├── README.md ├── pull_request_template.md └── workflows │ ├── main.yml │ └── pull_request.yml ├── .gitignore ├── .husky ├── .gitignore ├── commit-msg ├── pre-commit └── run-staged-tests.js ├── .jest └── register-context.js ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .storybook ├── main.js ├── manager-head.html ├── manager.js ├── postcss.config.js ├── preview.js └── theme.js ├── README.md ├── babel.config.js ├── commitlint.config.js ├── generators ├── plopfile.js └── templates │ ├── index.vue.hbs │ ├── stories.js.hbs │ ├── style.scss.hbs │ └── unit.spec.hbs ├── jest.config.js ├── jsconfig.json ├── package.json ├── postcss.config.js ├── public ├── favicon.ico ├── index.html ├── logo-solfacil-color.svg └── logo-solfacil-white.svg ├── src ├── App.vue ├── assets │ ├── img │ │ ├── arrow │ │ │ └── arrow-left.svg │ │ ├── icon │ │ │ ├── arrow-down-white.svg │ │ │ ├── arrow-down.svg │ │ │ ├── half-arrow-down.svg │ │ │ ├── icon-calendar.svg │ │ │ ├── icon-check.svg │ │ │ ├── icon-close-black.svg │ │ │ ├── icon-close-white.svg │ │ │ ├── icon-close.svg │ │ │ ├── icon-error.svg │ │ │ ├── icon-file-upload.svg │ │ │ ├── icon-filter.svg │ │ │ ├── icon-hide.svg │ │ │ ├── icon-info-line.svg │ │ │ ├── icon-info.svg │ │ │ ├── icon-money.svg │ │ │ ├── icon-ok.svg │ │ │ ├── icon-question.svg │ │ │ ├── icon-remove.svg │ │ │ ├── icon-removed.svg │ │ │ ├── icon-search.svg │ │ │ ├── icon-show.svg │ │ │ ├── icon-success-green.svg │ │ │ ├── icon-success.svg │ │ │ ├── icon-warning-neutral.svg │ │ │ ├── icon-warning.svg │ │ │ └── print-image.svg │ │ ├── logo-solfacil-color.png │ │ ├── logo-solfacil-ico.png │ │ ├── logo-solfacil-white.png │ │ └── logo-solfacil-white.svg │ └── scss │ │ ├── _accordion.scss │ │ ├── _alert.scss │ │ ├── _badge.scss │ │ ├── _bar.scss │ │ ├── _buttons.scss │ │ ├── _calendar.scss │ │ ├── _chart-line-series.scss │ │ ├── _chart_multi-axis-line.scss │ │ ├── _checkbox.scss │ │ ├── _chip.scss │ │ ├── _filtercomponent.scss │ │ ├── _filterrange.scss │ │ ├── _filterselectlist.scss │ │ ├── _input-minus-plus.scss │ │ ├── _input-text.scss │ │ ├── _list.scss │ │ ├── _modal.scss │ │ ├── _multiselect.scss │ │ ├── _overlay.scss │ │ ├── _pagination.scss │ │ ├── _popover.scss │ │ ├── _radio-button.scss │ │ ├── _searchfilter.scss │ │ ├── _selectinput.scss │ │ ├── _tables.scss │ │ ├── _tabs.scss │ │ ├── _tags-filter.scss │ │ ├── _textarea.scss │ │ ├── _toaster.scss │ │ ├── _toggle-switch.scss │ │ ├── _tooltip.scss │ │ ├── core │ │ ├── _form.scss │ │ ├── _global.scss │ │ ├── _transitions.scss │ │ ├── _type.scss │ │ └── index.scss │ │ └── solfacil.scss ├── components │ ├── Accordion │ │ ├── Accordion.stories.js │ │ ├── Accordion.unit.spec.js │ │ └── Accordion.vue │ ├── Alert │ │ ├── Alert.stories.js │ │ ├── Alert.unit.spec.js │ │ ├── Alert.vue │ │ └── README.md │ ├── Badge │ │ ├── Badge.stories.js │ │ ├── Badge.unit.spec.js │ │ ├── Badge.vue │ │ └── README.md │ ├── Button │ │ ├── Button.stories.js │ │ ├── Button.vue │ │ └── README.md │ ├── Calendar │ │ ├── Calendar.stories.js │ │ └── Calendar.vue │ ├── Charts │ │ ├── Bar │ │ │ ├── Bar.vue │ │ │ ├── ChartBar.stories.js │ │ │ └── ChartBar.vue │ │ ├── Circle │ │ │ ├── ChartCircle.stories.js │ │ │ └── ChartCircle.vue │ │ ├── LineSeries │ │ │ ├── ChartLineSeries.stories.js │ │ │ ├── ChartLineSeries.vue │ │ │ └── LineSeries.vue │ │ └── MultiAxisLine │ │ │ ├── ChartMultiAxisLine.stories.js │ │ │ ├── ChartMultiAxisLine.vue │ │ │ └── MultiAxisLine.vue │ ├── Checkbox │ │ ├── Checkbox.stories.js │ │ ├── Checkbox.vue │ │ └── README.md │ ├── Chip │ │ ├── Chip.stories.js │ │ ├── Chip.unit.spec.js │ │ └── Chip.vue │ ├── FilterComponent │ │ ├── FilterComponent.stories.js │ │ ├── FilterComponent.unit.spec.js │ │ ├── FilterComponent.vue │ │ ├── FilterRange │ │ │ ├── FilterRange.unit.spec.js │ │ │ └── FilterRange.vue │ │ └── FilterSelectList │ │ │ ├── FilterSelectList.unit.spec.js │ │ │ └── FilterSelectList.vue │ ├── Icon │ │ ├── Icon.spec.js │ │ ├── Icon.stories.js │ │ ├── Icon.vue │ │ └── README.md │ ├── Input │ │ ├── Input.stories.js │ │ ├── Input.unit.spec.js │ │ ├── Input.vue │ │ └── README.md │ ├── InputMinusPlus │ │ ├── InputMinusPlus.stories.js │ │ ├── InputMinusPlus.unit.spec.js │ │ └── InputMinusPlus.vue │ ├── List │ │ ├── List.stories.js │ │ ├── List.unit.spec.js │ │ ├── List.vue │ │ └── README.md │ ├── Modal │ │ ├── Modal.stories.js │ │ └── Modal.vue │ ├── Multiselect │ │ ├── Multiselect.stories.js │ │ ├── Multiselect.unit.spec.js │ │ └── Multiselect.vue │ ├── Overlay │ │ ├── Overlay.stories.js │ │ ├── Overlay.unit.spec.js │ │ └── Overlay.vue │ ├── PageSize │ │ ├── PageSize.stories.js │ │ ├── PageSize.vue │ │ └── README.md │ ├── Pagination │ │ ├── Pagination.stories.js │ │ ├── Pagination.vue │ │ └── README.md │ ├── Popover │ │ ├── Popover.stories.js │ │ ├── Popover.vue │ │ └── README.md │ ├── RadioButton │ │ ├── RadioButton.stories.js │ │ └── RadioButton.vue │ ├── SearchFilter │ │ ├── README.md │ │ ├── SearchFilter.stories.js │ │ ├── SearchFilter.unit.spec.js │ │ └── SearchFilter.vue │ ├── SelectInput │ │ ├── SelectInput.stories.js │ │ ├── SelectInput.unit.spec.js │ │ └── SelectInput.vue │ ├── SortedTable │ │ ├── README.md │ │ ├── SortedTable.stories.js │ │ └── SortedTable.vue │ ├── Tabs │ │ ├── README.md │ │ ├── Tabs.stories.js │ │ ├── Tabs.unit.spec.js │ │ └── Tabs.vue │ ├── TagsFilter │ │ ├── TagsFilter.stories.js │ │ └── TagsFilter.vue │ ├── Textarea │ │ ├── Textarea.stories.js │ │ ├── Textarea.unit.spec.js │ │ └── Textarea.vue │ ├── Toaster │ │ ├── Toaster.stories.js │ │ ├── ToasterTemplate.vue │ │ └── index.js │ ├── ToggleSwitch │ │ ├── ToggleSwitch.stories.js │ │ └── ToggleSwitch.vue │ └── Tooltip │ │ ├── README.md │ │ ├── Tooltip.vue │ │ └── Tootip.stories.js ├── directives │ ├── clickOutside.js │ ├── index.js │ └── vueMask.js ├── filters │ ├── capitalizeFirstLetter.js │ ├── currency.js │ ├── date.js │ └── index.js ├── index.js ├── main.js ├── mixins │ ├── breakpointable.js │ └── index.js ├── stories │ ├── Introduction.stories.mdx │ └── assets │ │ └── scss │ │ └── global.scss └── validators │ └── index.js ├── tailwind.config.js ├── transforms └── svgTransform.js ├── vue.config.js └── yarn.lock /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | indent_style = space 9 | insert_final_newline = true 10 | max_line_length = 80 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | dist/*.js 2 | storybook-static/* 3 | coverage/* 4 | snapshots/* 5 | node_modules/* 6 | .github 7 | .storybook/* 8 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true, 5 | jest: true, 6 | }, 7 | extends: [ 8 | '@vue/prettier', 9 | 'eslint:recommended', 10 | 'plugin:prettier-vue/recommended', 11 | 'plugin:prettier/recommended', 12 | 'plugin:vue/recommended', 13 | 'prettier/vue', 14 | 'plugin:storybook/recommended', 15 | ], 16 | parserOptions: { 17 | parser: 'babel-eslint', 18 | }, 19 | rules: { 20 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 21 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 22 | 'prettier-vue/prettier': [ 23 | 'error', 24 | { 25 | printWidth: 80, 26 | singleQuote: true, 27 | semi: true, 28 | trailingComma: 'all', 29 | }, 30 | ], 31 | }, 32 | settings: { 33 | 'prettier-vue': { 34 | // Settings for how to process Vue SFC Blocks 35 | SFCBlocks: { 36 | /** 37 | * Use prettier to process `