├── .editorconfig
├── .eslintrc.js
├── .gitattributes
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── postcss.json
├── src
├── components
│ ├── alert.scss
│ ├── animation.scss
│ ├── badge.scss
│ ├── breadcrumb.scss
│ ├── button.scss
│ ├── card.scss
│ ├── checkbox.scss
│ ├── collapse.scss
│ ├── dropdown.scss
│ ├── form.scss
│ ├── index.scss
│ ├── input-number.scss
│ ├── input.scss
│ ├── loading-bar.scss
│ ├── menu.scss
│ ├── message.scss
│ ├── modal.scss
│ ├── notification.scss
│ ├── pagination.scss
│ ├── popover.scss
│ ├── progress.scss
│ ├── radio.scss
│ ├── rate.scss
│ ├── select.scss
│ ├── slider.scss
│ ├── steps.scss
│ ├── switch.scss
│ ├── table.scss
│ ├── tabs.scss
│ ├── tag.scss
│ ├── textarea.scss
│ ├── timeline.scss
│ └── tooltip.scss
├── core
│ ├── base.scss
│ ├── font.scss
│ ├── grid.scss
│ ├── index.scss
│ └── normalize.scss
├── fonts
│ ├── aticon.eot
│ ├── aticon.svg
│ ├── aticon.ttf
│ ├── aticon.woff
│ ├── feather.eot
│ ├── feather.svg
│ ├── feather.ttf
│ └── feather.woff
├── index.scss
├── mixins
│ ├── index.scss
│ └── lib
│ │ ├── bem.scss
│ │ ├── clearfix.scss
│ │ ├── ellipsis.scss
│ │ ├── hide-text.scss
│ │ ├── shade.scss
│ │ ├── size.scss
│ │ └── tint.scss
└── variables
│ ├── default.scss
│ ├── index.scss
│ └── timing-function.scss
└── yarn.lock
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | extends: 'o2team',
4 | // add your custom rules here
5 | 'rules': {
6 | 'prefer-spread': 'off'
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set the default behavior, in case people don't have core.autocrlf set.
2 | * text eol=lf
3 |
4 | # Denote all files that are truly binary and should not be modified.
5 | *.png binary
6 | *.jpg binary
7 | *.ttf binary
8 | *.woff binary
9 | *.eot binary
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log
5 | .vscode
6 | css/
7 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 |
2 | # Contributing to AT-UI-Style
3 |
4 | Thank you for choosing AT-UI. Please take a few moments to review the following guidelines to get you started.
5 |
6 | ## Team members
7 |
8 | AT-UI is developed as an open source project by [AOTU Labs](https://aotu.io/)
9 |
10 | ## Documentation
11 |
12 | The AT-UI documentation is maintained as a collection of Markdown files power by [vue-markdown-loader](https://www.npmjs.com/package/vue-markdown-loader). Any pull requests are highly appreciated. Especially for internationalization.
13 |
14 | ## Issue
15 |
16 | Issues are exclusively for bug reports, feature requests and design-related topics. A bug issue is a demonstrable problem that is caused by the code in the repository. Good bug reports are extremely helpful - thank you!
17 |
18 | Before submitting an issue, please check if similar questions have already been issued.
19 |
20 | ## Pull requests
21 |
22 | **Working on your first Pull Request?** You can learn how from this *free* series
23 | [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
24 |
25 | All pull requests are welcome. Thanks for taking the time to contribute.
26 |
27 | - Create an issue about the features, such as new components.
28 | - Fork the repo to your own account.
29 | - Clone your fork.
30 | - Create a new branch base on `dev`, if you want to add new component, the branch name should be formatted as `component-[Component Name]`. (e.g. `component-steps`) And the commit info should be formatted as `[Component Name]: Info about commit`.
31 | - Make sure that running `npm run build` outputs the correct files.
32 | - Rebase before creating a PR to keep commit history clear. (Merge request to branch `dev`)
33 | - Provide some description about your PR.
34 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) 2017 O2Team
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | # AT-UI Style
8 |
9 | [![NPM][npm-version-image]][npm-version-url]
10 |
11 | `AT-UI Style` is an ui component library based on `Flexbox`, be used for [AT-UI](https://at.aotu.io/)
12 |
13 | ## Install
14 |
15 | ```bash
16 | npm install at-ui-style
17 | ```
18 |
19 | ## Usage
20 |
21 | ```js
22 | import 'at-ui-style'
23 | ```
24 |
25 | ## Contribution
26 |
27 | Finding bugs, sending pull requests or improving our docs - any contribution is welcome and highly appreciated. To get started, head over to our [contribution guidelines](https://github.com/at-ui/at-ui-style/blob/master/CONTRIBUTING.md). Thanks!
28 |
29 | ## License
30 |
31 | MIT
32 |
33 |
34 | [npm-version-image]: https://img.shields.io/npm/v/at-ui-style.svg?style=flat-square
35 | [npm-version-url]: https://www.npmjs.com/package/at-ui-style
36 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "at-ui-style",
3 | "version": "1.5.1",
4 | "description": "The StyleSheet for AT-UI",
5 | "scss": "src/index.scss",
6 | "main": "css/at.css",
7 | "style": "css/at.css",
8 | "scripts": {
9 | "build": "npm run build-clean && npm run copy && npm run build-scss && npm run build-scss-minify && npm run build-autoprefix",
10 | "build-clean": "rimraf css",
11 | "build-scss": "node-sass --output-style expanded --source-map true src/index.scss css/at.css",
12 | "build-scss-minify": "node-sass --output-style compressed --source-map true src/index.scss css/at.min.css",
13 | "build-autoprefix": "postcss --use autoprefixer -c postcss.json css/*.css -d css/",
14 | "copy": "copyfiles -f src/fonts/*.* css/fonts/",
15 | "prepublish": "npm run build",
16 | "start": "npm run build-scss -- --watch"
17 | },
18 | "repository": {
19 | "type": "git",
20 | "url": "git@github.com:o2team/at-ui-style.git"
21 | },
22 | "keywords": [
23 | "at",
24 | "at-ui",
25 | "at-ui-style",
26 | "css",
27 | "scss",
28 | "framework"
29 | ],
30 | "author": "Koppt Ho ",
31 | "license": "MIT",
32 | "devDependencies": {
33 | "autoprefixer": "^7.1.1",
34 | "copyfiles": "^1.2.0",
35 | "eslint-config-o2team": "^0.1.6",
36 | "node-sass": "^4.5.3",
37 | "postcss-cli": "^4.1.0",
38 | "rimraf": "^2.6.1"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/postcss.json:
--------------------------------------------------------------------------------
1 |
2 | {
3 | "autoprefixer": {
4 | "browsers": ["last 2 versions", "ie > 8"]
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/components/alert.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Alert Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-alert {
7 | position: relative;
8 | display: flex;
9 | width: 100%;
10 | padding: $alert-padding;
11 | color: $alert-text-color-success;
12 | line-height: 1.5;
13 | border: 1px solid #ccc;
14 | border-radius: $alert-border-radius;
15 | transition: opacity .3s;
16 | overflow: hidden;
17 | opacity: 1;
18 |
19 | /* element */
20 | &__icon {
21 | margin-right: 8px;
22 | color: $alert-icon-color-success;
23 | font-size: $alert-icon-font-size;
24 | line-height: 20px;
25 | vertical-align: middle;
26 | }
27 | &__content {
28 | flex: 1;
29 | padding-right: 8px;
30 | }
31 | &__message {
32 | color: $alert-text-color-success;
33 | font-size: $alert-message-font-size;
34 | }
35 | &__description {
36 | margin-top: 4px;
37 | color: $alert-text-color-success;
38 | font-size: $alert-description-font-size;
39 | }
40 | &__close {
41 | color: $alert-icon-color-success;
42 | font-size: $alert-close-font-size;
43 | line-height: 20px;
44 | opacity: 1;
45 | cursor: pointer;
46 | }
47 |
48 | /* modifier */
49 | &--success {
50 | border-color: $alert-border-color-success;
51 | background-color: $alert-bg-color-success;
52 |
53 | .at-alert__message,
54 | .at-alert__description,
55 | .at-alert__icon {
56 | color: $alert-text-color-success;
57 | }
58 | .at-alert__close {
59 | color: $alert-icon-color-success;
60 | }
61 | }
62 | &--error {
63 | border-color: $alert-border-color-error;
64 | background-color: $alert-bg-color-error;
65 |
66 | .at-alert__message,
67 | .at-alert__description,
68 | .at-alert__icon {
69 | color: $alert-text-color-error;
70 | }
71 | .at-alert__close {
72 | color: $alert-icon-color-error;
73 | }
74 | }
75 | &--warning {
76 | border-color: $alert-border-color-warning;
77 | background-color: $alert-bg-color-warning;
78 |
79 | .at-alert__message,
80 | .at-alert__description,
81 | .at-alert__icon {
82 | color: $alert-text-color-warning;
83 | }
84 | .at-alert__close {
85 | color: $alert-icon-color-warning;
86 | }
87 | }
88 | &--info {
89 | border-color: $alert-border-color-info;
90 | background-color: $alert-bg-color-info;
91 |
92 | .at-alert__message,
93 | .at-alert__description,
94 | .at-alert__icon {
95 | color: $alert-text-color-info;
96 | }
97 | .at-alert__close {
98 | color: $alert-icon-color-info;
99 | }
100 | }
101 | &--with-description {
102 | padding: $alert-padding-lg;
103 |
104 | .at-alert__icon {
105 | font-size: 24px;
106 | }
107 | .at-alert__message {
108 | font-weight: bold;
109 | }
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/src/components/animation.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Animations
3 | */
4 |
5 | @mixin vue-anim($class-name, $keyframe-name) {
6 | .#{$class-name}-enter-active {
7 | animation: #{$keyframe-name}In .3s ease-in-out both;
8 | }
9 | .#{$class-name}-leave-active {
10 | animation: #{$keyframe-name}Out .3s ease-in-out both;
11 | }
12 | }
13 |
14 | @keyframes slideUpIn {
15 | 0% {
16 | opacity: 0;
17 | transform-origin: 0 0;
18 | transform: translateY(-6px);
19 | }
20 | 100% {
21 | opacity: 1;
22 | transform-origin: 0 0;
23 | transform: translateY(0);
24 | }
25 | }
26 |
27 | @keyframes slideUpOut {
28 | 0% {
29 | opacity: 1;
30 | transform-origin: 0% 0%;
31 | transform: translateY(0);
32 | }
33 | 100% {
34 | opacity: 0;
35 | transform-origin: 0% 0%;
36 | transform: translateY(-6px);
37 | }
38 | }
39 |
40 | @keyframes moveUpIn {
41 | 0% {
42 | opacity: 0;
43 | transform-origin: 0 0;
44 | transform: translateY(-100%);
45 | }
46 | 100% {
47 | opacity: 1;
48 | transform-origin: 0 0;
49 | transform: translateY(0);
50 | }
51 | }
52 |
53 | @keyframes moveUpOut {
54 | 0% {
55 | opacity: 1;
56 | transform-origin: 0 0;
57 | transform: translateY(0);
58 | }
59 | 100% {
60 | opacity: 0;
61 | transform-origin: 0 0;
62 | transform: translateY(-100%);
63 | }
64 | }
65 |
66 | @keyframes fadeIn {
67 | 0% {
68 | opacity: 0;
69 | }
70 | 100% {
71 | opacity: 1;
72 | }
73 | }
74 |
75 | @keyframes fadeOut {
76 | 0% {
77 | opacity: 1;
78 | }
79 | 100% {
80 | opacity: 0;
81 | }
82 | }
83 |
84 | @keyframes notificationFadeIn {
85 | 0% {
86 | transform: translateX(100%);
87 | }
88 | 100% {
89 | transform: translateX(0);
90 | }
91 | }
92 |
93 | @keyframes notificationFadeOut {
94 | 0% {
95 | opacity: 1;
96 | }
97 | 100% {
98 | opacity: 0;
99 | }
100 | }
101 |
102 | @include vue-anim(slide-up, slideUp);
103 | @include vue-anim(move-up, moveUp);
104 | @include vue-anim(fade, fade);
105 | @include vue-anim(notification-fade, notificationFade);
106 |
107 |
108 | /**
109 | * Element Animation
110 | */
111 |
112 | @keyframes icon-loading {
113 | 0% {
114 | transform: rotate(0);
115 | }
116 | 100% {
117 | transform: rotate(360deg);
118 | }
119 | }
120 |
121 | .collapse-transition {
122 | transition: height .3s linear;
123 | }
124 |
--------------------------------------------------------------------------------
/src/components/badge.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Badge Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-badge {
7 | position: relative;
8 | display: inline-block;
9 | // vertical-align: middle;
10 |
11 | /* element */
12 | &__content {
13 | display: inline-block;
14 | height: $badge-height;
15 | padding: $badge-padding;
16 | color: $badge-font-color;
17 | font-size: $badge-font-size;
18 | text-align: center;
19 | line-height: $badge-height - 2;
20 | white-space: nowrap;
21 | border: 1px solid $color-white;
22 | border-radius: $badge-border-radius;
23 | background-color: $badge-bg-color;
24 | }
25 |
26 | /* modifier */
27 | &--alone {
28 | .at-badge__content {
29 | top: 0;
30 | }
31 | }
32 | &--corner {
33 | position: absolute;
34 | top: (-$badge-height / 2) + 1;
35 | right: 0;
36 | transform: translateX(50%);
37 | }
38 | &--dot {
39 | padding: 0;
40 | width: $badge-dot-size;
41 | height: $badge-dot-size;
42 | top: (-$badge-dot-size / 2) + 1;
43 | }
44 | &--success {
45 | .at-badge__content {
46 | background-color: $badge-bg-color-success;
47 | }
48 | }
49 | &--warning {
50 | .at-badge__content {
51 | background-color: $badge-bg-color-warning;
52 | }
53 | }
54 | &--info {
55 | .at-badge__content {
56 | background-color: $badge-bg-color-info;
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/components/breadcrumb.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Breadcrumb Style
3 | */
4 | @import '../variables/index.scss';
5 | @import '../mixins/index.scss';
6 |
7 | .at-breadcrumb {
8 | @include clearfix();
9 | font-size: $breadcrumb-font-size;
10 | line-height: 1.5;
11 |
12 | /* element */
13 | &__separator {
14 | margin: 0 8px;
15 | color: $breadcrumb-separator-color;
16 | }
17 | &__item {
18 | &:last-child {
19 | color: $link-disabled-color;
20 | cursor: text;
21 |
22 | .at-breadcrumb__separator {
23 | display: none;
24 | }
25 | }
26 | }
27 | &__link {
28 | color: $link-color;
29 | transition: color .3s;
30 |
31 | &:hover {
32 | color: $link-hover-color;
33 | cursor: pointer;
34 | }
35 | &:active {
36 | color: $link-active-color;
37 | cursor: pointer;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/components/button.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Button Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | $btn-hover-tint-percent: 15%;
7 | $btn-active-shade-percent: 10%;
8 |
9 | @mixin button-status($border-color, $background-color) {
10 | border-color: $border-color;
11 | background-color: $background-color;
12 |
13 | &:hover {
14 | background-color: tint($background-color, $btn-hover-tint-percent);
15 | border-color: tint($background-color, $btn-hover-tint-percent);
16 | }
17 | &:active {
18 | background-color: shade($background-color, $btn-active-shade-percent);
19 | border-color: shade($background-color, $btn-active-shade-percent);
20 | }
21 | }
22 |
23 | @mixin button-hollow-status($text-color, $border-color) {
24 | background: none;
25 | color: $text-color;
26 |
27 | &:hover {
28 | background: none;
29 | color: tint($text-color, $btn-hover-tint-percent);
30 | border-color: tint($border-color, $btn-hover-tint-percent);
31 | }
32 | &:active {
33 | background: none;
34 | color: tint($text-color, $btn-active-shade-percent);
35 | border-color: tint($border-color, $btn-active-shade-percent);
36 | }
37 | }
38 |
39 | .at-btn {
40 | display: inline-block;
41 | padding: $btn-padding-base;
42 | font-size: 0;
43 | outline: 0;
44 | line-height: 1.5;
45 | text-align: center;
46 | white-space: nowrap;
47 | border: 1px solid $btn-default-border;
48 | border-radius: $border-radius-base;
49 | background-color: $btn-default-bg;
50 | transition: background 0.2s;
51 | user-select: none;
52 | cursor: pointer;
53 |
54 | &:hover {
55 | background-color: $btn-default-bg-hover;
56 | }
57 | &:active {
58 | background-color: $btn-default-bg-active;
59 | }
60 | &:disabled,
61 | &:disabled:hover,
62 | &:disabled:active, {
63 | cursor: not-allowed;
64 | color: $btn-disabled-color;
65 | border-color: $btn-disabled-border;
66 | background-color: $btn-disabled-bg;
67 | }
68 |
69 | /* modifier */
70 | &--primary,
71 | &--success,
72 | &--error,
73 | &--warning,
74 | &--info {
75 | color: $color-white;
76 | }
77 | &--default {
78 | &--hollow {
79 | @include button-hollow-status($text-color, $btn-default-border);
80 | }
81 | }
82 | &--primary {
83 | @include button-status($btn-primary-border, $btn-primary-bg);
84 |
85 | &--hollow {
86 | @include button-hollow-status($color-primary, $btn-primary-border);
87 | }
88 | }
89 | &--success {
90 | @include button-status($btn-success-border, $btn-success-bg);
91 |
92 | &--hollow {
93 | @include button-hollow-status($color-success, $btn-success-border);
94 | }
95 | }
96 | &--error {
97 | @include button-status($btn-error-border, $btn-error-bg);
98 |
99 | &--hollow {
100 | @include button-hollow-status($color-error, $btn-error-border);
101 | }
102 | }
103 | &--warning {
104 | @include button-status($btn-warning-border, $btn-warning-bg);
105 |
106 | &--hollow {
107 | @include button-hollow-status($color-warning, $btn-warning-border);
108 | }
109 | }
110 | &--info {
111 | @include button-status($btn-info-border, $btn-info-bg);
112 |
113 | &--hollow {
114 | @include button-hollow-status($color-info, $btn-info-border);
115 | }
116 | }
117 | &--text {
118 | @include button-hollow-status($btn-text-border, transparent);
119 | color: $text-color;
120 | border: none;
121 |
122 | &:disabled,
123 | &:disabled:hover,
124 | &:disabled:active, {
125 | background: none;
126 | }
127 | }
128 | &--default,
129 | &--primary,
130 | &--success,
131 | &--error,
132 | &--warning,
133 | &--info,
134 | &--text {
135 | &--hollow {
136 | &:disabled,
137 | &:disabled:hover,
138 | &:disabled:active, {
139 | background: none;
140 | }
141 | }
142 | }
143 | &--large {
144 | font-size: $btn-font-size-md;
145 | padding: $btn-padding-md;
146 |
147 | &.at-btn--circle {
148 | width: $btn-circle-size-lg;
149 | height: $btn-circle-size-lg;
150 |
151 | .at-btn__icon {
152 | font-size: $btn-font-size-lg;
153 | }
154 | }
155 | .at-btn__text {
156 | font-size: $btn-font-size-md;
157 | }
158 | }
159 | &--small {
160 | font-size: $btn-font-size-sm;
161 | padding: $btn-padding-sm;
162 |
163 | &.at-btn--circle {
164 | width: $btn-circle-size-sm;
165 | height: $btn-circle-size-sm;
166 |
167 | .at-btn__icon {
168 | font-size: $btn-font-size-sm;
169 | }
170 | }
171 | .at-btn__text {
172 | font-size: $btn-font-size-sm;
173 | }
174 | }
175 | &--smaller {
176 | font-size: $btn-font-size-smer;
177 | padding: $btn-padding-smer;
178 |
179 | &.at-btn--circle {
180 | width: $btn-circle-size-smer;
181 | height: $btn-circle-size-smer;
182 |
183 | .at-btn__icon {
184 | font-size: $btn-font-size-smer;
185 | }
186 | }
187 | .at-btn__text {
188 | font-size: $btn-font-size-smer;
189 | }
190 | }
191 | &--circle {
192 | width: $btn-circle-size;
193 | height: $btn-circle-size;
194 | padding: 0;
195 | border-radius: 50%;
196 |
197 | .at-btn__icon {
198 | font-size: 14px;
199 | }
200 | }
201 |
202 | /* element */
203 | &__icon,
204 | &__loading {
205 | font-size: $btn-font-size-base;
206 | line-height: 1.5;
207 |
208 | + span {
209 | margin-left: 4px;
210 | }
211 | }
212 | &__loading {
213 | display: inline-block;
214 | line-height: 1;
215 | animation: loadingCircle 1s linear infinite;
216 | }
217 | &__text {
218 | font-size: $btn-font-size-base;
219 | }
220 | }
221 |
222 | .at-btn-group {
223 | font-size: 0;
224 | display: inline-block;
225 |
226 | .at-btn {
227 | border-radius: 0;
228 |
229 | &:not(:last-child) {
230 | margin-right: -1px;
231 | }
232 | &:first-child {
233 | border-radius: $border-radius-base 0 0 $border-radius-base;
234 | }
235 | &:last-child {
236 | border-radius: 0 $border-radius-base $border-radius-base 0;
237 | }
238 | }
239 | }
240 |
241 | @keyframes loadingCircle {
242 | 0% {
243 | transform: rotate(0);
244 | }
245 | 100% {
246 | transform: rotate(1turn);
247 | }
248 | }
249 |
--------------------------------------------------------------------------------
/src/components/card.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Card Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-card {
7 | position: relative;
8 | border-radius: $card-border-radius;
9 | background-color: $card-bg-color;
10 | transition: all .3s;
11 |
12 | &:not(.at-card--no-hover):hover {
13 | border-color: $card-border-color-hover;
14 | box-shadow: 1px 0 16px 0 $shadow-color;
15 | }
16 |
17 | /* element */
18 | &__head {
19 | padding: 0 24px;
20 | height: $card-head-height;
21 | line-height: $card-head-height;
22 | border-bottom: 1px solid $card-border-color;
23 | }
24 | &__title {
25 | display: inline-block;
26 | }
27 | &__extra {
28 | float: right;
29 | }
30 | &__body {
31 | padding: 24px;
32 |
33 | &--loading {
34 | span {
35 | display: inline-block;
36 | margin: 5px 1%;
37 | height: 14px;
38 | border-radius: 2px;
39 | background: linear-gradient(90deg,
40 | rgba(192, 198, 206, .12),
41 | rgba(192, 198, 206, .2),
42 | rgba(192, 198, 206, .12));
43 | background-size: 600% 600%;
44 | animation: card-loading 1.4s ease infinite;
45 | }
46 | }
47 | }
48 |
49 | /* modifier */
50 | &--bordered {
51 | border: 1px solid $card-border-color;
52 | }
53 | }
54 |
55 | @keyframes card-loading {
56 | 0%, to {
57 | background-position: 0 50%;
58 | }
59 | 50% {
60 | background-position: 100% 50%;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/src/components/checkbox.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Checkbox Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-checkbox {
7 | position: relative;
8 | display: inline-block;
9 | font-size: 0;
10 | line-height: 1.5;
11 | white-space: nowrap;
12 | user-select: none;
13 | cursor: pointer;
14 |
15 | & + .at-checkbox {
16 | margin-left: 16px;
17 | }
18 |
19 | /* modifier */
20 | &--checked {
21 | .at-checkbox__inner {
22 | border-color: $checkbox-border-c-checked;
23 | background-color: $checkbox-border-c-checked;
24 |
25 | &::after {
26 | transform: rotate(45deg) scale(1);
27 | }
28 | }
29 | }
30 | &--disabled {
31 | .at-checkbox__inner {
32 | border-color: $checkbox-border-c-disabled;
33 | background-color: $checkbox-bg-c-disabled;
34 | cursor: $cursor-disabled;
35 |
36 | &:hover {
37 | border-color: $checkbox-border-c-disabled;
38 | }
39 | &::after {
40 | border-color: $border-color-base;
41 | cursor: $cursor-disabled;
42 | }
43 | }
44 | .at-checkbox__label {
45 | color: $checkbox-label-c-disabled;
46 | cursor: $cursor-disabled;
47 | }
48 | }
49 | &--focus {
50 | border-color: $brand-color-light;
51 | }
52 |
53 | /* element */
54 | &__input {
55 | position: relative;
56 | display: inline-block;
57 | white-space: nowrap;
58 | vertical-align: middle;
59 | cursor: pointer;
60 | outline: none;
61 | }
62 | &__inner {
63 | position: relative;
64 | display: inline-flex;
65 | justify-content: center;
66 | align-items: center;
67 | width: $checkbox-size;
68 | height: $checkbox-size;
69 | border: 1px solid $checkbox-border-c;
70 | border-radius: $border-radius-base;
71 | background-color: $color-white;
72 | transition: all .2s;
73 | cursor: pointer;
74 | z-index: 1;
75 |
76 | &:hover {
77 | border-color: $checkbox-border-c-hover;
78 | }
79 | &::after {
80 | content: '';
81 | width: 4px;
82 | height: 8px;
83 | border: 2px solid $color-white;
84 | border-left: 0;
85 | border-top: 0;
86 | transform: rotate(45deg) scale(0);
87 | transition: transform .2s;
88 | }
89 | }
90 | &__original {
91 | position: absolute;
92 | top: 0;
93 | bottom: 0;
94 | left: 0;
95 | right: 0;
96 | opacity: 0;
97 | outline: none;
98 | z-index: -1;
99 | }
100 | &__label {
101 | font-size: $checkbox-font-size;
102 | padding-left: 8px;
103 | vertical-align: middle;
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/src/components/collapse.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Collapse Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-collapse {
7 | border: 1px solid $collapse-border-color;
8 | border-radius: $collapse-border-radius;
9 | overflow: hidden;
10 |
11 | /* element */
12 | &__item {
13 | border-bottom: 1px solid $collapse-border-color;
14 |
15 | &:last-of-type {
16 | border-bottom: none;
17 | }
18 |
19 | &--active {
20 | > .at-collapse__header {
21 | .at-collapse__icon {
22 | transform: rotate(90deg)
23 | }
24 | }
25 | }
26 | &--disabled {
27 | .at-collapse__header {
28 | color: $collapse-header-text-color-disabled;
29 | cursor: not-allowed;
30 | }
31 | .at-collapse__icon {
32 | color: $collapse-header-text-color-disabled;
33 | }
34 | }
35 | }
36 | &__header {
37 | position: relative;
38 | padding: 8px 32px;
39 | color: $collapse-header-text-color;
40 | background-color: $collapse-header-bg-color;
41 | transition: all .3s;
42 | cursor: pointer;
43 | }
44 | &__icon {
45 | position: absolute;
46 | top: 14px;
47 | left: 16px;
48 | color: $collapse-icon-color;
49 | font-size: $collapse-icon-size;
50 | font-weight: bold;
51 | transition: all .3s;
52 | }
53 | &__body {
54 | will-change: height;
55 | }
56 | &__content {
57 | padding: 16px;
58 | color: $collapse-body-text-color;
59 | border-radius: 0 0 $collapse-border-radius $collapse-border-radius;
60 | background-color: $collapse-body-bg-color;
61 | overflow: hidden;
62 | }
63 |
64 | /* modifier */
65 | &--simple {
66 | border: none;
67 |
68 | .at-collapse__item {
69 | border-bottom: none;
70 | }
71 | .at-collapse__header {
72 | border-bottom: 1px solid $collapse-border-color;
73 | background-color: transparent;
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/src/components/dropdown.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Dropdown Style
3 | */
4 | @import '../variables/index.scss';
5 | @import '../mixins/index.scss';
6 |
7 | .at-dropdown {
8 | display: inline-block;
9 |
10 | &__popover {
11 | position: absolute;
12 | overflow: visible;
13 | z-index: $zindex-dropdown;
14 | }
15 | }
16 |
17 | .at-dropdown-menu {
18 | position: relative;
19 | padding: 0;
20 | width: inherit;
21 | max-height: $dropdown-max-height;
22 | font-size: 0;
23 | border-radius: $border-radius-base;
24 | background-color: $dropdown-bg-color;
25 | box-shadow: $dropdown-box-shadow;
26 | list-style: none;
27 | // overflow-y: auto;
28 | z-index: $zindex-dropdown;
29 |
30 | &__item {
31 | @include ellipsis();
32 | display: block;
33 | padding: $dropdown-item-padding;
34 | min-width: $dropdown-item-min-width;
35 | font-size: $dropdown-font-size;
36 | line-height: 1.5;
37 | transition: all .3s;
38 | cursor: pointer;
39 |
40 | &:hover {
41 | background-color: $dropdown-item-bg-color-hover;
42 | }
43 | &--disabled {
44 | color: $dropdown-item-bg-color-disabled;
45 | cursor: $cursor-disabled;
46 |
47 | &:hover {
48 | background-color: $dropdown-bg-color;
49 | }
50 | }
51 | &--divided {
52 | position: relative;
53 | margin-top: 6px;
54 | border-top: 1px solid $dropdown-divided-color;
55 |
56 | &:before {
57 | content: '';
58 | display: block;
59 | height: 6px;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/components/form.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Form Style
3 | */
4 | @import '../variables/index.scss';
5 | @import '../mixins/index.scss';
6 |
7 | .at-form {
8 | /* modifier */
9 | &--label-left {
10 | .at-form-item__label {
11 | text-align: left;
12 | }
13 | }
14 | &--label-right {
15 | .at-form-item__label {
16 | text-align: right;
17 | }
18 | }
19 | &--label-top {
20 | .at-form-item__label {
21 | display: inline-block;
22 | text-align: left;
23 | padding: 0 0 10px 0;
24 | }
25 | }
26 | &--inline {
27 | .at-form-item {
28 | display: inline-block;
29 | margin-right: 8px;
30 | vertical-align: top;
31 | }
32 | .at-form-item__label {
33 | display: inline-block;
34 | }
35 | .at-form-item__content {
36 | display: inline-block;
37 | vertical-align: top;
38 | }
39 | &.at-form--label-top .at-form-item__content {
40 | display: block;
41 | }
42 | }
43 | }
44 |
45 | .at-form-item {
46 | margin-bottom: 24px;
47 | @include clearfix;
48 |
49 | .at-form-item {
50 | margin-bottom: 0;
51 |
52 | .at-form-item__content {
53 | margin-left: 0;
54 | }
55 | }
56 | &__label {
57 | text-align: right;
58 | vertical-align: middle;
59 | float: left;
60 | font-size: $font-size-base;
61 | color: $color-normal;
62 | line-height: 1;
63 | padding: 10px 12px 10px 0;
64 | }
65 | &__content {
66 | position: relative;
67 | font-size: $font-size-base;
68 | line-height: 36px;
69 | @include clearfix;
70 | }
71 | &__error-tip {
72 | position: absolute;
73 | left: 0;
74 | top: 100%;
75 | padding-top: 4px;
76 | color: $color-error;
77 | font-size: $font-size-smer;
78 | line-height: 1;
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/src/components/index.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Components
3 | */
4 |
5 | @import './animation.scss';
6 | @import './button.scss';
7 | @import './tag.scss';
8 | @import './checkbox.scss';
9 | @import './input.scss';
10 | @import './input-number.scss';
11 | @import './radio.scss';
12 | @import './select.scss';
13 | @import './switch.scss';
14 | @import './slider.scss';
15 | @import './textarea.scss';
16 | @import './alert.scss';
17 | @import './badge.scss';
18 | @import './loading-bar.scss';
19 | @import './modal.scss';
20 | @import './message.scss';
21 | @import './notification.scss';
22 | @import './popover.scss';
23 | @import './progress.scss';
24 | @import './tooltip.scss';
25 | @import './breadcrumb.scss';
26 | @import './dropdown.scss';
27 | @import './pagination.scss';
28 | @import './menu.scss';
29 | @import './table.scss';
30 | @import './card.scss';
31 | @import './collapse.scss';
32 | @import './steps.scss';
33 | @import './rate.scss';
34 | @import './tabs.scss';
35 | @import './timeline.scss';
36 |
37 | // @import './form.scss';
38 |
--------------------------------------------------------------------------------
/src/components/input-number.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * InputNumber Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-input-number {
7 | display: inline-block;
8 | position: relative;
9 | width: 100%;
10 | height: $inputnumber-height-base;
11 | min-width: $inputnumber-min-width;
12 | border: 1px solid $inputnumber-border-color;
13 | border-radius: $inputnumber-border-radius;
14 | background-color: $color-white;
15 | transition: border .2s;
16 | overflow: hidden;
17 |
18 | /* status */
19 | &:hover:not(&--disabled) {
20 | border-color: $inputnumber-border-color-hover;
21 |
22 | .at-input-number__handler {
23 | opacity: 1;
24 | }
25 | }
26 |
27 | /* element */
28 | &__input {
29 | width: 100%;
30 | height: 100%;
31 | }
32 | &__original {
33 | display: block;
34 | width: 100%;
35 | height: 100%;
36 | padding: $inputnumber-padding-base;
37 | color: $inputnumber-font-color;
38 | line-height: 1.5;
39 | border: none;
40 | border-radius: $inputnumber-border-radius;
41 | background-color: $inputnumber-bg-color;
42 | outline: none;
43 | }
44 | input[type=number] {
45 | -moz-appearance: textfield;
46 | background-color: transparent;
47 |
48 | &::-webkit-inner-spin-button,
49 | &::-webkit-outer-spin-button {
50 | margin: 0;
51 | -webkit-appearance: none;
52 | }
53 | }
54 | &__handler {
55 | position: absolute;
56 | top: 0;
57 | right: 0;
58 | width: $inputnumber-handler-width;
59 | height: 100%;
60 | border-left: 1px solid $inputnumber-handler-border-color;
61 | border-radius: 0 $inputnumber-border-radius $inputnumber-border-radius 0;
62 | transition: opacity .3s;;
63 | opacity: 0;
64 | }
65 | &__up,
66 | &__down {
67 | position: relative;
68 | display: flex;
69 | width: 100%;
70 | height: $inputnumber-handler-ele-height-base;
71 | align-items: center;
72 | justify-content: center;
73 | color: $inputnumber-handler-font-color;
74 | font-size: $inputnumber-handler-font-size-base;
75 | text-align: center;
76 | transition: all .3s;
77 | cursor: pointer;
78 |
79 | &:hover:not(.at-input-number__up--disabled):not(.at-input-number__down--disabled) {
80 | height: $inputnumber-handler-ele-height-base-hover;
81 | color: $inputnumber-handler-font-color-hover;
82 | }
83 | &:active:not(.at-input-number__up--disabled):not(.at-input-number__down--disabled) {
84 | background-color: $inputnumber-handler-bg-color-active;
85 | }
86 | &--disabled {
87 | color: $inputnumber-handler-ele-font-color-disabled;
88 | cursor: $cursor-disabled;
89 | }
90 | }
91 | &__down {
92 | border-top: 1px solid $inputnumber-handler-border-color;
93 |
94 | &:hover {
95 | margin-top: -2px;
96 | }
97 | }
98 |
99 | /* modifier */
100 | &--disabled {
101 | color: $input-font-color-disabled;
102 | border-color: $inputnumber-border-color-disabled;
103 | background-color: $inputnumber-bg-color-disabled;
104 | cursor: $cursor-disabled;
105 |
106 | .at-input-number__original {
107 | color: $input-font-color-disabled;
108 | cursor: $cursor-disabled;
109 | }
110 | .at-input-number__handler {
111 | display: none;
112 | }
113 | }
114 | &--small {
115 | height: $inputnumber-height-sm;
116 |
117 | .at-input-number__up,
118 | .at-input-number__down {
119 | height: $inputnumber-handler-ele-height-sm;
120 | font-size: $inputnumber-handler-font-size-sm;
121 |
122 | &:hover {
123 | height: $inputnumber-handler-ele-height-sm-hover !important;
124 | }
125 | }
126 | }
127 | &--large {
128 | height: $inputnumber-height-lg;
129 |
130 | .at-input-number__up,
131 | .at-input-number__down {
132 | height: $inputnumber-handler-ele-height-lg;
133 | font-size: $inputnumber-handler-font-size-lg;
134 |
135 | &:hover {
136 | height: $inputnumber-handler-ele-height-lg-hover !important;
137 | }
138 | }
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/src/components/input.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Input Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | /**
7 | * AtInput
8 | */
9 | .at-input {
10 | position: relative;
11 | font-size: 0;
12 | line-height: 1.5;
13 | outline: 0;
14 |
15 | /* element */
16 | &__original {
17 | display: block;
18 | width: 100%;
19 | padding: $input-padding-base;
20 | color: $input-font-color;
21 | font-size: $input-font-size-base;
22 | background-color: $input-bg-color;
23 | border: 1px solid $border-color-base;
24 | border-radius: $border-radius-base;
25 | transition: border .2s;
26 | outline: none;
27 |
28 | &::placeholder {
29 | color: $input-placeholder-color;
30 | }
31 | &:hover {
32 | border-color: $input-border-color-hover;
33 | }
34 | &:focus {
35 | border-color: $input-border-color-focus;
36 | }
37 | }
38 | &__icon {
39 | position: absolute;
40 | top: 0;
41 | right: 0;
42 | margin: 0 6px 0 0;
43 | width: 20px;
44 | height: 100%;
45 | color: $input-icon-color;
46 | font-size: $input-icon-font-size;
47 | text-align: center;
48 |
49 | &:after {
50 | content: '';
51 | display: inline-block;
52 | width: 0;
53 | height: 100%;
54 | vertical-align: middle;
55 | }
56 | }
57 |
58 | /* Modifier */
59 | &--disabled {
60 | .at-input__original {
61 | color: $input-font-color-disabled;
62 | background-color: $input-bg-color-disabled;
63 | border-color: $input-border-color-disabled;
64 | cursor: $cursor-disabled;
65 |
66 | &::placeholder {
67 | color: $input-placeholder-color-disabled;
68 | }
69 | }
70 | }
71 | &--large {
72 | font-size: $input-font-size-lg;
73 |
74 | .at-input__original {
75 | padding: $input-padding-lg;
76 |
77 | &::placeholder {
78 | font-size: $input-font-size-lg;
79 | }
80 | }
81 | }
82 | &--small {
83 | font-size: $input-font-size-sm;
84 |
85 | .at-input__original {
86 | padding: $input-padding-sm;
87 |
88 | &::placeholder {
89 | font-size: $input-font-size-sm;
90 | }
91 | }
92 | }
93 | &--success {
94 | .at-input__original {
95 | border-color: $input-border-color-success;
96 | }
97 | }
98 | &--error {
99 | .at-input__original {
100 | border-color: $input-border-color-error;
101 | }
102 | }
103 | &--warning {
104 | .at-input__original {
105 | border-color: $input-border-color-warning;
106 | }
107 | }
108 | &--info {
109 | .at-input__original {
110 | border-color: $input-border-color-info;
111 | }
112 | }
113 | &--prepend {
114 | .at-input__original {
115 | border-top-left-radius: 0;
116 | border-bottom-left-radius: 0;
117 | }
118 | }
119 | &--append {
120 | .at-input__original {
121 | border-top-right-radius: 0;
122 | border-bottom-right-radius: 0;
123 | }
124 | }
125 | &--icon {
126 | .at-input__original {
127 | padding-right: 32px;
128 | }
129 | }
130 | }
131 |
132 | /**
133 | * AtInputGroup
134 | */
135 | .at-input-group {
136 | display: flex;
137 | line-height: normal;
138 | border-collapse: separate;
139 |
140 | /* element */
141 | &__prepend,
142 | &__append {
143 | display: flex;
144 | flex: 1;
145 | padding: 0 10px;
146 | color: $input-group-font-color;
147 | font-size: $input-font-size-base;
148 | border: 1px solid $border-color-base;
149 | border-radius: $border-radius-base;
150 | background-color: $input-group-bg-color;
151 | align-items: center;
152 | white-space: nowrap;
153 | }
154 | &__prepend {
155 | border-right: 0;
156 | border-top-right-radius: 0;
157 | border-bottom-right-radius: 0;
158 | }
159 | &__append {
160 | border-left: 0;
161 | border-top-left-radius: 0;
162 | border-bottom-left-radius: 0;
163 | }
164 |
165 | /* modifier */
166 | &--button {
167 | display: flex;
168 | align-items: center;
169 | transition: backgroud .2s;
170 | user-select: none;
171 | cursor: pointer;
172 |
173 | &:hover {
174 | background-color: $input-group-bg-color-hover;
175 | }
176 | &:active {
177 | background-color: $input-group-bg-color-active;
178 | }
179 | }
180 | }
181 |
--------------------------------------------------------------------------------
/src/components/loading-bar.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * LoadingBar Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-loading-bar {
7 | position: fixed;
8 | top: 0;
9 | left: 0;
10 | right: 0;
11 | width: 100%;
12 | z-index: $zindex-loading-bar;
13 |
14 | /* element */
15 | &__inner {
16 | height: 100%;
17 | transition: width .3s linear;
18 | }
19 |
20 | /* modifier */
21 | &--success {
22 | .at-loading-bar__inner {
23 | background-color: $loading-bar-bg-color-success;
24 | }
25 | }
26 | &--error {
27 | .at-loading-bar__inner {
28 | background-color: $loading-bar-bg-color-error;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/components/menu.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Menu Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-menu {
7 | position: relative;
8 | display: block;
9 | margin: 0;
10 | padding: 0;
11 | color: $menu-text-color;
12 | font-size: $menu-font-size;
13 | list-style: none;
14 | background-color: $menu-bg-color-light;
15 |
16 | /* element */
17 | &__item {
18 | position: relative;
19 | display: block;
20 | list-style: none;
21 | transition: color .3s;
22 | cursor: pointer;
23 | z-index: 1;
24 |
25 | a {
26 | display: inline-block;
27 | width: 100%;
28 | height: 100%;
29 | color: $menu-text-color;
30 | }
31 | i {
32 | margin-right: 8px;
33 | }
34 | .at-menu__item-link {
35 | padding: $menu-item-padding;
36 | width: 100%;
37 | }
38 |
39 | &--disabled {
40 | cursor: not-allowed;
41 |
42 | .at-menu__item-link {
43 | color: $menu-text-color-disabled;
44 | cursor: not-allowed;
45 | pointer-events: none;
46 |
47 | &::after {
48 | display: none;
49 | }
50 | }
51 | }
52 | }
53 | &__item-group {
54 | padding: 0;
55 | line-height: 1;
56 |
57 | &-title {
58 | @include ellipsis();
59 | width: 100%;
60 | padding: $menu-group-title-padding;
61 | color: $menu-group-title-text-color;
62 | font-size: $menu-group-title-font-size;
63 | line-height: 1;
64 | white-space: nowrap;
65 | overflow: hidden;
66 | transition: all .3s;
67 | cursor: initial;
68 | }
69 | &-list {
70 | padding: 0;
71 | }
72 | }
73 | &__submenu {
74 | &--disabled {
75 | color: $menu-text-color-disabled;
76 | cursor: not-allowed;
77 | }
78 | }
79 | &__submenu-title {
80 | position: relative;
81 | cursor: pointer;
82 |
83 | i {
84 | margin-right: 8px;
85 | }
86 | }
87 | .at-dropdown__popover {
88 | width: 100%;
89 | }
90 | .at-dropdown-menu {
91 | max-height: none;
92 |
93 | .at-menu__item {
94 | @include ellipsis();
95 | display: block;
96 | font-size: $menu-dropdown-item-font-size;
97 | line-height: 1.5;
98 | white-space: nowrap;
99 | transition: all .3s;
100 | cursor: pointer;
101 |
102 | &--disabled {
103 | cursor: not-allowed;
104 | }
105 | }
106 | }
107 |
108 | /* modifier */
109 | &--horizontal,
110 | &--vertical,
111 | &--inline {
112 | z-index: auto;
113 | }
114 |
115 | &--horizontal,
116 | &--vertical {
117 | .at-menu__item-group-list .at-menu__item {
118 | float: none;
119 |
120 | &.at-menu__item--active .at-menu__item-link,
121 | .at-menu__item-link.router-link-active {
122 | color: $menu-item-text-color-active;
123 | font-weight: bold;
124 | // background-color: $menu-item-bg-color-active;
125 |
126 | &::after {
127 | display: none;
128 | }
129 | }
130 | }
131 | }
132 |
133 | /* Horizontal */
134 | &--horizontal {
135 | position: relative;
136 | height: $menu-height-horizontal;
137 | line-height: $menu-height-horizontal;
138 | border-bottom: 1px solid $menu-border-color;
139 |
140 | .at-menu__item,
141 | .at-menu__submenu {
142 | position: relative;
143 | float: left;
144 | }
145 | .at-menu__item {
146 | &.at-menu__item--active {
147 | .at-menu__item-link {
148 | color: $menu-item-text-color-active;
149 |
150 | a {
151 | color: $menu-item-text-color-active;
152 | }
153 | &::after {
154 | transform: scaleX(1);
155 | }
156 | }
157 | }
158 | &--disabled {
159 | .at-menu__item-link {
160 | color: $menu-text-color-disabled;
161 |
162 | &:hover {
163 | color: $menu-text-color-disabled;
164 | }
165 | }
166 | }
167 | }
168 | .at-menu__item-link {
169 | display: inline-block;
170 | padding: $menu-item-padding-base;
171 |
172 | &::after {
173 | content: '';
174 | position: absolute;
175 | display: inline-block;
176 | width: 100%;
177 | height: 2px;
178 | left: 0;
179 | bottom: 0;
180 | background-color: $menu-item-text-color-active;
181 | transform: scaleX(0);
182 | transition: all .15s;
183 | }
184 | &:hover,
185 | &.router-link-active {
186 | color: $menu-item-text-color-active;
187 |
188 | &::after {
189 | transform: scaleX(1);
190 | }
191 | }
192 | }
193 | > .at-menu__submenu {
194 | &:hover,
195 | &.at-menu__submenu--active {
196 | > .at-menu__submenu-title {
197 | color: $menu-item-text-color-active;
198 | }
199 | &::after {
200 | transform: scaleX(1);
201 | }
202 | }
203 | }
204 | .at-menu__submenu {
205 | &::after {
206 | content: '';
207 | position: absolute;
208 | display: inline-block;
209 | width: 100%;
210 | height: 2px;
211 | left: 0;
212 | bottom: 0;
213 | background-color: $menu-item-text-color-active;
214 | transform: scaleX(0);
215 | transition: all .15s;
216 | }
217 | .at-menu__submenu-title {
218 | padding: $menu-item-padding-base;
219 | }
220 | .at-menu__item {
221 | display: block;
222 | float: none;
223 |
224 | .at-menu__item-link {
225 | padding: $menu-submenu-padding;
226 | padding-left: 16px;
227 |
228 | &::after {
229 | display: none;
230 | }
231 | }
232 | }
233 | .at-menu__submenu {
234 | display: block;
235 | float: none;
236 | height: inherit;
237 | font-size: $menu-dropdown-item-font-size;
238 | line-height: 1.5;
239 |
240 | .at-menu__submenu-title {
241 | padding: $menu-submenu-padding;
242 | padding-right: 16px;
243 |
244 | i:last-child {
245 | position: absolute;
246 | right: 0;
247 | top: 50%;
248 | margin-top: -6px;
249 | transform: rotate(-90deg);
250 | }
251 | }
252 | &.at-menu__submenu--active {
253 | &::after {
254 | transform: scaleX(0);
255 | }
256 | }
257 | }
258 |
259 | &:hover,
260 | &.at-menu__submenu--active {
261 | > .at-menu__submenu-title {
262 | color: $menu-item-text-color-active;
263 | }
264 | }
265 | &--disabled {
266 | &:hover,
267 | &.at-menu__submenu--active {
268 | .at-menu__submenu-title {
269 | color: $menu-text-color-disabled;
270 | cursor: not-allowed;
271 | }
272 | &::after {
273 | transform: scaleX(0);
274 | }
275 | }
276 | }
277 | }
278 | }
279 |
280 | /* Vertical */
281 | &--vertical {
282 | position: relative;
283 | border-right: 1px solid $menu-border-color;
284 |
285 | .at-menu__item,
286 | .at-menu__submenu {
287 | position: relative;
288 | display: block;
289 | }
290 | > .at-menu__item.at-menu__item--active {
291 | > .at-menu__item-link {
292 | background-color: $menu-item-bg-color-active-inline;
293 |
294 | &::after {
295 | opacity: 1;
296 | }
297 | }
298 | }
299 | > .at-menu__submenu {
300 | &:hover {
301 | &::after {
302 | opacity: 1;
303 | }
304 | > .at-menu__submenu-title {
305 | color: $menu-item-text-color-active;
306 | }
307 | }
308 | &.at-menu__submenu--active {
309 | background-color: $menu-item-bg-color-active-inline;
310 |
311 | &::after {
312 | opacity: 1;
313 | }
314 | }
315 | }
316 | > .at-menu__item {
317 | > .at-menu__item-link {
318 | &:hover {
319 | color: $menu-item-text-color-active;
320 |
321 | &::after {
322 | opacity: 1;
323 | }
324 | }
325 | }
326 | }
327 | .at-menu__item {
328 | &.at-menu__item--active {
329 | .at-menu__item-link {
330 | color: $menu-item-text-color-active;
331 |
332 | a {
333 | color: $menu-item-text-color-active;
334 | }
335 | }
336 | }
337 | &--disabled {
338 | &:hover {
339 | color: $menu-text-color-disabled;
340 |
341 | a {
342 | color: $menu-text-color-disabled;
343 | }
344 | }
345 | .at-menu__item-link.router-link-active {
346 | color: $menu-item-text-color-active;
347 |
348 | &:hover {
349 | color: $menu-item-text-color-active;
350 | }
351 | }
352 | }
353 | }
354 | .at-menu__item-link {
355 | padding: $menu-submenu-padding;
356 | padding-left: 32px;
357 |
358 | &::after {
359 | content: '';
360 | display: inline-block;
361 | position: absolute;
362 | top: 0;
363 | left: 0;
364 | width: 6px;
365 | height: 100%;
366 | background-color: $menu-prefix-bg-color;
367 | border-top-right-radius: 4px;
368 | border-bottom-right-radius: 4px;
369 | box-shadow: 1px 0 12px 0 $menu-prefix-bg-color;
370 | transition: opacity .2s;
371 | opacity: 0;
372 | }
373 | &:hover {
374 | color: $menu-item-text-color-active;
375 | }
376 | &.router-link-active {
377 | color: $menu-item-text-color-active;
378 | background-color: $menu-item-bg-color-active-inline;
379 |
380 | &::after {
381 | opacity: 1;
382 | }
383 | }
384 | }
385 | .at-menu__submenu {
386 | font-size: $menu-font-size;
387 |
388 | &::after {
389 | content: '';
390 | display: inline-block;
391 | position: absolute;
392 | top: 0;
393 | left: 0;
394 | width: 6px;
395 | height: 100%;
396 | background-color: $menu-prefix-bg-color;
397 | border-top-right-radius: 4px;
398 | border-bottom-right-radius: 4px;
399 | box-shadow: 1px 0 12px 0 $menu-prefix-bg-color;
400 | transition: opacity .2s;
401 | opacity: 0;
402 | }
403 | .at-menu__submenu-title {
404 | padding: $menu-submenu-padding;
405 | padding-left: 32px;
406 |
407 | i:last-child {
408 | position: absolute;
409 | right: 0;
410 | top: 50%;
411 | margin-top: -$menu-icon-size / 2;
412 | transform: rotate(-90deg);
413 | }
414 | }
415 | .at-menu__submenu {
416 | font-size: $menu-dropdown-item-font-size;
417 |
418 | .at-menu__submenu-title {
419 | padding-left: 24px;
420 | }
421 | }
422 | .at-menu__item-link {
423 | padding-left: 24px;
424 | }
425 |
426 | &:hover,
427 | &.at-menu__submenu--active {
428 | > .at-menu__submenu-title {
429 | color: $menu-item-text-color-active;
430 | }
431 | }
432 | &.at-menu__submenu--disabled {
433 | &:hover,
434 | &.at-menu__submenu--active {
435 | > .at-menu__submenu-title {
436 | color: $menu-text-color-disabled;
437 | cursor: not-allowed;
438 | }
439 | }
440 | }
441 | }
442 | .at-menu__item-group-title {
443 | padding-left: 16px;
444 | font-weight: bold;
445 | }
446 | }
447 |
448 | /* Inline */
449 | &--inline {
450 | position: relative;
451 | border-right: 1px solid $menu-border-color;
452 |
453 | .at-menu__item,
454 | .at-menu__submenu {
455 | position: relative;
456 | display: block;
457 | padding-left: 0;
458 | transition: all .3s, color 0s;
459 | }
460 | .at-menu__item {
461 | &:hover {
462 | color: $menu-item-text-color-active;
463 |
464 | > .at-menu__item-link {
465 | color: $menu-item-text-color-active;
466 | }
467 | }
468 | &.at-menu__item--active {
469 | .at-menu__item-link {
470 | color: $menu-item-text-color-active;
471 | background-color: $menu-item-bg-color-active-inline;
472 |
473 | &::after {
474 | opacity: 1;
475 | }
476 | }
477 | }
478 | &--disabled {
479 | &.at-menu__item--active {
480 | .at-menu__item-link {
481 | color: $menu-text-color-disabled;
482 | background-color: transparent;
483 |
484 | &::after {
485 | opacity: 0;
486 | }
487 | }
488 | }
489 | }
490 | }
491 | .at-menu__submenu {
492 | font-size: $menu-font-size;
493 |
494 | &.at-menu__submenu--active {
495 | > .at-menu__submenu-title {
496 | color: $menu-item-text-color-active;
497 | }
498 | }
499 | &.at-menu__submenu--disabled {
500 | &:hover,
501 | &.at-menu__submenu--active {
502 | > .at-menu__submenu-title {
503 | color: $menu-text-color-disabled;
504 | cursor: not-allowed;
505 | }
506 | }
507 | }
508 | &.at-menu__submenu--opened {
509 | .at-menu__submenu-title {
510 | font-weight: bold;
511 |
512 | }
513 | .at-menu__submenu-icon {
514 | transform: rotate(-180deg);
515 | }
516 | }
517 |
518 | > .at-menu__submenu-title {
519 | &:hover {
520 | color: $menu-item-text-color-active;
521 | }
522 | }
523 | .at-menu__submenu-title {
524 | padding: $menu-item-padding-inline;
525 | padding-left: 32px;
526 |
527 | i:last-child {
528 | position: absolute;
529 | right: 0;
530 | top: 50%;
531 | margin-top: -$menu-icon-size / 2;
532 | }
533 | }
534 | .at-menu__submenu-icon {
535 | color: $menu-icon-color-inline;
536 | transition: transform .3s;
537 | }
538 | .at-menu__submenu {
539 | font-size: $menu-font-size;
540 | }
541 | .at-menu__item-link {
542 | padding-left: 48px;
543 | }
544 | }
545 | .at-menu__item-link {
546 | padding: $menu-item-padding-inline;
547 | padding-left: 32px;
548 | transition: all .3s;
549 |
550 | &::after {
551 | content: '';
552 | display: inline-block;
553 | position: absolute;
554 | top: 0;
555 | left: 0;
556 | width: 6px;
557 | height: 100%;
558 | background-color: $menu-prefix-bg-color;
559 | border-top-right-radius: 4px;
560 | border-bottom-right-radius: 4px;
561 | box-shadow: 1px 0 12px 0 $menu-prefix-bg-color;
562 | transition: opacity .2s;
563 | opacity: 0;
564 | }
565 | &.router-link-active {
566 | color: $menu-item-text-color-active;
567 | background-color: $menu-item-bg-color-active-inline;
568 |
569 | &::after {
570 | opacity: 1;
571 | }
572 | }
573 | }
574 | .at-menu {
575 | margin: 8px 0;
576 | }
577 | .at-menu__item-group-title {
578 | padding-left: 40px;
579 | font-weight: bold;
580 | }
581 | }
582 |
583 | /* theme */
584 | &--dark {
585 | color: $menu-text-color-dark;
586 | background-color: $menu-bg-color-dark;
587 |
588 | .at-menu {
589 | color: $menu-text-color-dark;
590 | background-color: $menu-bg-color-dark;
591 | }
592 | .at-menu__item {
593 | a {
594 | color: $menu-text-color-dark;
595 | }
596 | .at-menu__item-link {
597 | &::after {
598 | width: 4px;
599 | border-radius: 0;
600 | background-color: $menu-prefix-bg-color-dark;
601 | box-shadow: none;
602 | }
603 | }
604 |
605 | &:hover,
606 | &.at-menu__item--active {
607 | .at-menu__item-link {
608 | color: $menu-text-color-dark-hover;
609 | background-color: $menu-bg-color-dark-hover;
610 |
611 | a {
612 | color: $menu-text-color-dark-hover;
613 | }
614 | }
615 | }
616 | &--disabled {
617 | opacity: 0.5;
618 |
619 | &:hover,
620 | &.at-menu__item--active {
621 | .at-menu__item-link {
622 | color: $menu-text-color-disabled;
623 | background-color: transparent;
624 | }
625 | }
626 | }
627 | }
628 | .at-menu__submenu {
629 | &:hover,
630 | &.at-menu__submenu--active {
631 | .at-menu__submenu-title {
632 | color: $menu-text-color-dark-hover;
633 | font-weight: bold;
634 | }
635 | }
636 | &.at-menu__submenu--disabled {
637 | .at-menu__submenu-title {
638 | opacity: .5;
639 | font-weight: normal;
640 | cursor: not-allowed;
641 | }
642 | }
643 | }
644 |
645 | &.at-menu--horizontal {
646 | border: none;
647 |
648 | .at-menu__item,
649 | .at-menu__submenu {
650 | &:hover,
651 | &.at-menu__item--active,
652 | &.at-menu__submenu--active {
653 | &::after {
654 | width: 100%;
655 | height: 4px;
656 | }
657 | }
658 | }
659 | .at-menu__submenu {
660 | &.at-menu__submenu--disabled {
661 | &:hover,
662 | &.at-menu__item--active {
663 | .at-menu__submenu-title {
664 | color: $menu-text-color-disabled;
665 | }
666 | }
667 | }
668 | .at-menu__item {
669 | color: $menu-text-color;
670 |
671 | &:hover,
672 | &.at-menu__item--active {
673 | .at-menu__item-link {
674 | color: $menu-item-text-color-active;
675 | background-color: transparent;
676 |
677 | a {
678 | color: $menu-item-text-color-active;
679 | }
680 | }
681 | }
682 | a {
683 | color: $menu-text-color;
684 | }
685 | }
686 | }
687 | }
688 | &.at-menu--vertical {
689 | .at-menu__submenu {
690 | &.at-menu__submenu--active {
691 | background-color: transparent;
692 |
693 | &::after {
694 | content: '';
695 | width: 4px;
696 | border-radius: 0;
697 | background-color: $menu-prefix-bg-color-dark;
698 | box-shadow: none;
699 | opacity: 1;
700 | }
701 | }
702 | .at-menu__item {
703 | color: $menu-text-color;
704 |
705 | &:hover,
706 | &.at-menu__item--active {
707 | .at-menu__item-link {
708 | color: $menu-item-text-color-active;
709 | background-color: transparent;
710 |
711 | a {
712 | color: $menu-item-text-color-active;
713 | }
714 | }
715 | }
716 | &.at-menu__item--disabled {
717 | .at-menu__item-link {
718 | color: $menu-text-color-disabled;
719 | }
720 | }
721 | a {
722 | color: $menu-text-color;
723 | }
724 | }
725 | }
726 | }
727 | }
728 | }
729 |
--------------------------------------------------------------------------------
/src/components/message.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Message Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-message {
7 | display: inline-block;
8 | padding: $message-padding;
9 | font-size: $message-font-size;
10 | line-height: 1.5;
11 | border-radius: $border-radius-base;
12 | background-color: $message-bg-color;
13 | box-shadow: $message-box-shadow;
14 | z-index: $zindex-message;
15 |
16 | /* element */
17 | &__wrapper {
18 | position: fixed;
19 | left: 0;
20 | top: 16px;
21 | width: 100%;
22 | text-align: center;
23 | transition: opacity .3s, transform .3s, top .4s;
24 | pointer-events: none;
25 | }
26 | &__icon {
27 | display: inline-block;
28 | margin-right: 4px;
29 | vertical-align: middle;
30 | }
31 |
32 | /* modifier */
33 | &--success .at-message__icon {
34 | color: $message-icon-color-success;
35 | }
36 | &--error .at-message__icon {
37 | color: $message-icon-color-error;
38 | }
39 | &--warning .at-message__icon {
40 | color: $message-icon-color-warning;
41 | }
42 | &--info .at-message__icon {
43 | color: $message-icon-color-info;
44 | }
45 | &--loading .at-message__icon {
46 | color: $message-icon-color-loading;
47 | animation: icon-loading 2s linear infinite both;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/components/modal.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Modal Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-modal {
7 | position: relative;
8 | top: $modal-initial-top;
9 | width: auto;
10 | margin: 0 auto;
11 | border: none;
12 | border-radius: $border-radius-base;
13 | background-color: $modal-bg-color;
14 | outline: none;
15 |
16 | /* elements */
17 | &__mask {
18 | position: fixed;
19 | left: 0;
20 | right: 0;
21 | top: 0;
22 | bottom: 0;
23 | height: 100%;
24 | background-color: $modal-mask-bg-color;
25 | z-index: $zindex-modal;
26 |
27 | &--hidden {
28 | display: none;
29 | }
30 | }
31 | &__wrapper {
32 | position: fixed;
33 | left: 0;
34 | right: 0;
35 | top: 0;
36 | bottom: 0;
37 | outline: 0;
38 | z-index: $zindex-modal;
39 | }
40 | &__header {
41 | padding: $modal-header-padding;
42 | color: $title-color;
43 | font-size: $modal-header-font-size;
44 | font-weight: bold;
45 | line-height: 1.5;
46 | border-bottom: 1px solid $modal-section-border-color;
47 |
48 | p, .at-modal__title {
49 | @include ellipsis();
50 | vertical-align: middle;
51 | }
52 | }
53 | &__close {
54 | position: absolute;
55 | top: 16px;
56 | right: 16px;
57 | font-size: $modal-close-font-size;
58 | line-height: 1;
59 | overflow: hidden;
60 | cursor: pointer;
61 | }
62 | &__body {
63 | padding: $modal-body-padding;
64 | font-size: $modal-body-font-size;
65 | line-height: 1.5;
66 |
67 | p {
68 | font-size: $modal-body-font-size;
69 | }
70 | }
71 | &__icon {
72 | position: absolute;
73 | top: 16px;
74 | left: 16px;
75 | font-size: $modal-icon-font-size;
76 | vertical-align: middle;
77 | }
78 | &__input {
79 | .at-input__original {
80 | margin-top: 8px;
81 | width: 100%;
82 | }
83 | }
84 | &__footer {
85 | padding: $modal-footer-padding;
86 | border-top: 1px solid $modal-section-border-color;
87 | text-align: right;
88 |
89 | .at-btn + .at-btn {
90 | margin-left: 8px;
91 | }
92 | }
93 |
94 | /* modifiers */
95 | &--hidden {
96 | display: none !important;
97 | }
98 | &--confirm {
99 | .at-modal__header {
100 | padding: 16px 16px 4px 56px;
101 | border: none;
102 | }
103 | .at-modal__body {
104 | padding: 8px 16px 8px 56px;
105 | }
106 | .at-modal__footer {
107 | padding: 16px;
108 | border: none;
109 | }
110 |
111 | &-success {
112 | .at-modal__icon {
113 | color: $modal-icon-color-success;
114 | }
115 | }
116 | &-error {
117 | .at-modal__icon {
118 | color: $modal-icon-color-error;
119 | }
120 | }
121 | &-warning {
122 | .at-modal__icon {
123 | color: $modal-icon-color-warning;
124 | }
125 | }
126 | &-info {
127 | .at-modal__icon {
128 | color: $modal-icon-color-info;
129 | }
130 | }
131 | }
132 | }
133 |
--------------------------------------------------------------------------------
/src/components/notification.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Notification Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-notification {
7 | position: fixed;
8 | display: flex;
9 | right: 16px;
10 | width: $notification-width;
11 | padding: $notification-padding;
12 | color: $notification-text-color;
13 | background-color: $notification-bg-color;
14 | line-height: 1.5;
15 | border-radius: $border-radius-base;
16 | box-shadow: $notification-shadow;
17 | transition: opacity .3s, transform .3s, top .4s;
18 | z-index: $zindex-notification;
19 |
20 | /* element */
21 | &__icon {
22 | color: $notification-icon-color;
23 | font-size: $notification-icon-font-size;
24 | line-height: 1.5;
25 | vertical-align: middle;
26 | margin-right: 8px;
27 | }
28 | &__content {
29 | flex: 1;
30 | padding-right: 8px;
31 | }
32 | &__title {
33 | color: $notification-text-color;
34 | font-size: $notification-title-font-size;
35 | }
36 | &__message {
37 | color: $notification-text-color;
38 | font-size: $notification-message-font-size;
39 | margin-top: 4px;
40 | }
41 | &__close {
42 | color: $notification-close-color;
43 | font-size: $notification-close-font-size;
44 | cursor: pointer;
45 |
46 | &:hover {
47 | color: $notification-close-color-focus;
48 | }
49 | }
50 |
51 | /* modifier */
52 | &--success {
53 | .at-notification__icon {
54 | color: $notification-icon-color-success;
55 | }
56 | }
57 | &--error {
58 | .at-notification__icon {
59 | color: $notification-icon-color-error;
60 | }
61 | }
62 | &--warning {
63 | .at-notification__icon {
64 | color: $notification-icon-color-warning;
65 | }
66 | }
67 | &--info {
68 | .at-notification__icon {
69 | color: $notification-icon-color-info;
70 | }
71 | }
72 | &--with-message {
73 | padding: $notification-padding-lg;
74 |
75 | .at-notification__icon {
76 | font-size: 24px;
77 | line-height: 1.2;
78 | }
79 | .at-notification__title {
80 | font-weight: bold;
81 | }
82 | .at-notification__close {
83 | font-size: $notification-close-font-size-lg;
84 | }
85 | }
86 | &--hover {
87 | cursor: pointer;
88 |
89 | &:hover {
90 | opacity: 1;
91 | }
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/src/components/pagination.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Pagination Style
3 | */
4 | @import '../variables/index.scss';
5 | @import '../mixins/index.scss';
6 |
7 | .at-pagination {
8 | @include clearfix();
9 | list-style: none;
10 | font-size: 0;
11 |
12 | /* elements */
13 | &__item,
14 | &__prev,
15 | &__next,
16 | &__item--jump-prev,
17 | &__item--jump-next {
18 | float: left;
19 | min-width: $pagination-item-size;
20 | height: $pagination-item-size;
21 | color: $pagination-item-text-color;
22 | font-size: $pagination-item-font-size;
23 | line-height: $pagination-item-size;
24 | text-align: center;
25 | border: 1px solid $pagination-item-border-color;
26 | border-radius: $border-radius-base;
27 | background-color: $color-white;
28 | transition: all .3s;
29 | cursor: pointer;
30 |
31 | &:hover {
32 | color: $pagination-item-text-color-hover;
33 | border-color: $pagination-item-border-color-hover;
34 | }
35 | }
36 | &__item {
37 | + .at-pagination__item {
38 | margin-left: 4px;
39 | }
40 | &--active {
41 | color: $pagination-item-text-color-active;
42 | border-color: $pagination-item-border-color-active;
43 | background-color: $pagination-item-bg-color-active;
44 |
45 | &:hover {
46 | color: $pagination-item-text-color-active;
47 | }
48 | }
49 | }
50 | &__prev {
51 | margin-right: 8px;
52 | }
53 | &__next {
54 | margin-left: 8px;
55 | }
56 | &__item--jump-prev,
57 | &__item--jump-next {
58 | &:after {
59 | content: '•••';
60 | display: inline-block;
61 | color: $pagination-btn-jump-text-color;
62 | font-size: $pagination-item-font-size - 4;
63 | text-align: center;
64 | line-height: $pagination-item-size;
65 | letter-spacing: 1px;
66 | }
67 | i {
68 | display: none;
69 | }
70 | &:hover {
71 | &:after {
72 | display: none;
73 | }
74 | i {
75 | display: inline-block;
76 | }
77 | }
78 | }
79 | &__total {
80 | float: left;
81 | height: $pagination-item-size;
82 | font-size: $pagination-item-font-size;
83 | line-height: $pagination-item-size;
84 | margin-right: 12px;
85 | }
86 | &__quickjump {
87 | float: left;
88 | margin-left: 12px;
89 | font-size: $pagination-item-font-size;
90 | line-height: $pagination-item-size;
91 |
92 | input {
93 | display: inline-block;
94 | margin: 0 8px;
95 | width: $pagination-input-width;
96 | height: $pagination-item-size;
97 | text-align: center;
98 | line-height: $pagination-item-size;
99 | }
100 | }
101 | &__sizer {
102 | float: left;
103 | margin-left: 12px;
104 | text-align: center;
105 | }
106 | &__simple-paging {
107 | float: left;
108 | font-size: $pagination-item-font-size;
109 |
110 | input {
111 | display: inline-block;
112 | padding: 2px 4px;
113 | width: $pagination-item-size;
114 | height: $pagination-item-size;
115 | text-align: center;
116 | line-height: $pagination-item-size;
117 | }
118 | span {
119 | padding: 0 4px;
120 | }
121 | }
122 |
123 | /* modifiers */
124 | &--disabled {
125 | color: $btn-disabled-border;
126 | border-color: $btn-disabled-border;
127 | cursor: $cursor-disabled;
128 |
129 | &:hover {
130 | color: $btn-disabled-border;
131 | border-color: $btn-disabled-border;
132 | }
133 | }
134 | &--small {
135 | .at-pagination__total,
136 | .at-pagination__quickjump,
137 | .at-pagination__item,
138 | .at-pagination__prev,
139 | .at-pagination__next {
140 | height: $pagination-item-size-sm;
141 | font-size: $pagination-item-font-size-sm;
142 | line-height: $pagination-item-size-sm;
143 | }
144 | .at-pagination__item,
145 | .at-pagination__prev,
146 | .at-pagination__next {
147 | border: none;
148 | width: $pagination-item-size-sm;
149 | min-width: $pagination-item-size-sm;
150 | }
151 | .at-pagination__item--jump-prev,
152 | .at-pagination__item--jump-next {
153 | &:after {
154 | font-size: $pagination-item-font-size-sm - 4;
155 | line-height: $pagination-item-size-sm;
156 | }
157 | }
158 | .at-pagination__total {
159 | margin-right: 8px;
160 | }
161 | .at-pagination__sizer {
162 | margin-left: 8px;
163 |
164 | .at-select .at-select__selection {
165 | height: $pagination-item-size-sm;
166 | line-height: $pagination-item-size-sm - 2;
167 | }
168 | }
169 | .at-pagination__quickjump {
170 | margin-left: 8px;
171 |
172 | .at-input__original {
173 | margin: 0 6px;
174 | height: $pagination-item-size-sm;
175 | font-size: $pagination-item-font-size-sm;
176 | }
177 | }
178 | }
179 | &--simple {
180 | font-size: $pagination-item-font-size;
181 |
182 | .at-input__original {
183 | margin: 0 4px;
184 | width: $pagination-item-size + 4;
185 | height: $pagination-item-size;
186 | }
187 | .at-pagination__prev,
188 | .at-pagination__next {
189 | margin: 0;
190 | border: none;
191 | width: $pagination-item-size;
192 | min-width: $pagination-item-size;
193 | height: $pagination-item-size;
194 | line-height: $pagination-item-size;
195 | }
196 | &.at-pagination--small {
197 | font-size: $pagination-item-font-size-sm;
198 |
199 | .at-input__original {
200 | width: $pagination-item-size-sm + 6;
201 | height: $pagination-item-size-sm;
202 |
203 | input {
204 | font-size: $pagination-item-font-size-sm;
205 | }
206 | }
207 | .at-pagination__prev,
208 | .at-pagination__next {
209 | width: $pagination-item-size-sm;
210 | min-width: $pagination-item-size-sm;
211 | height: $pagination-item-size-sm;
212 | line-height: $pagination-item-size-sm;
213 | }
214 | .at-pagination__simple-paging {
215 | font-size: $pagination-item-font-size-sm;
216 |
217 | span {
218 | padding: 0 4px;
219 | }
220 | }
221 | }
222 | }
223 | }
224 |
--------------------------------------------------------------------------------
/src/components/popover.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Popover
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-popover {
7 | display: inline-block;
8 |
9 | /* element */
10 | &__trigger {
11 | display: inline-block;
12 | position: relative;
13 | }
14 | &__popper {
15 | position: absolute;
16 | max-width: $popover-popper-max-width;
17 | border: 1px solid $popover-border-color;
18 | box-shadow: 0 1px 6px $popover-border-color;
19 | background-color: $color-white;
20 | z-index: $zindex-popover;
21 | }
22 | &__title {
23 | margin: 0;
24 | padding: $popover-title-padding;
25 | font-size: $popover-title-font-size;
26 | word-wrap: break-word;
27 | border-bottom: 1px solid $popover-title-border-color;
28 | border-radius: $border-radius-base $border-radius-base 0 0;
29 | background-color: $popover-title-bg-color;
30 | }
31 | &__content {
32 | padding: $popover-content-padding;
33 | font-size: $popover-content-font-size;
34 | line-height: 1.5;
35 | word-wrap: break-word;
36 | border-radius: $border-radius-base;
37 | }
38 | &__arrow,
39 | &__arrow::after {
40 | content: '';
41 | position: absolute;
42 | display: block;
43 | width: 0;
44 | height: 0;
45 | border: $popover-arrow-size solid transparent;
46 | }
47 |
48 | /* modifier */
49 | /**
50 | * Top
51 | */
52 | &--top,
53 | &--top-left,
54 | &--top-right {
55 | margin-top: -12px;
56 |
57 | .at-popover__arrow {
58 | bottom: 0;
59 | left: 50%;
60 | margin-left: -$popover-arrow-size;
61 | margin-bottom: -$popover-arrow-size;
62 | border-bottom-width: 0;
63 | border-top-color: $popover-border-color;
64 |
65 | &::after {
66 | bottom: 1px;
67 | margin-left: -$popover-arrow-size;
68 | border-bottom-width: 0;
69 | border-top-color: $popover-arrow-bg-color;
70 | }
71 | }
72 | }
73 | &--top-left {
74 | .at-popover__arrow {
75 | left: $popover-arrow-size * 2;
76 | }
77 | }
78 | &--top-right {
79 | .at-popover__arrow {
80 | left: initial;
81 | right: $popover-arrow-size * 2;
82 | }
83 | }
84 |
85 | /**
86 | * Bottom
87 | */
88 | &--bottom,
89 | &--bottom-left,
90 | &--bottom-right {
91 | margin-top: 12px;
92 |
93 | .at-popover__arrow {
94 | top: 0;
95 | left: 50%;
96 | margin-left: -$popover-arrow-size;
97 | margin-top: -$popover-arrow-size;
98 | border-top-width: 0;
99 | border-bottom-color: $popover-border-color;
100 |
101 | &::after {
102 | top: 1px;
103 | margin-left: -$popover-arrow-size;
104 | border-top-width: 0;
105 | border-bottom-color: $popover-arrow-bg-color;
106 | }
107 | }
108 | }
109 | &--bottom-left {
110 | .at-popover__arrow {
111 | left: $popover-arrow-size * 2;
112 | }
113 | }
114 | &--bottom-right {
115 | .at-popover__arrow {
116 | left: initial;
117 | right: $popover-arrow-size * 2;
118 | }
119 | }
120 |
121 | /**
122 | * Left
123 | */
124 | &--left,
125 | &--left-top,
126 | &--left-bottom {
127 | margin-left: -12px;
128 |
129 | .at-popover__arrow {
130 | top: 50%;
131 | right: 0;
132 | margin-top: -$popover-arrow-size;
133 | margin-right: -$popover-arrow-size;
134 | border-right-width: 0;
135 | border-left-color: $popover-border-color;
136 |
137 | &::after {
138 | right: 1px;
139 | margin-top: -$popover-arrow-size;
140 | border-right-width: 0;
141 | border-left-color: $popover-arrow-bg-color;
142 | }
143 | }
144 | }
145 | &--left-top {
146 | .at-popover__arrow {
147 | top: $popover-arrow-size * 2;
148 | }
149 | }
150 | &--left-bottom {
151 | .at-popover__arrow {
152 | top: initial;
153 | bottom: $popover-arrow-size * 2;
154 | }
155 | }
156 |
157 | /**
158 | * Right
159 | */
160 | &--right,
161 | &--right-top,
162 | &--right-bottom {
163 | margin-left: 12px;
164 |
165 | .at-popover__arrow {
166 | top: 50%;
167 | left: 0;
168 | margin-top: -$popover-arrow-size;
169 | margin-left: -$popover-arrow-size;
170 | border-left-width: 0;
171 | border-right-color: $popover-border-color;
172 |
173 | &::after {
174 | left: 1px;
175 | margin-top: -$popover-arrow-size;
176 | border-left-width: 0;
177 | border-right-color: $popover-arrow-bg-color;
178 | }
179 | }
180 | }
181 | &--right-top {
182 | .at-popover__arrow {
183 | top: $popover-arrow-size * 2;
184 | }
185 | }
186 | &--right-bottom {
187 | .at-popover__arrow {
188 | top: initial;
189 | bottom: $popover-arrow-size * 2;
190 | }
191 | }
192 | }
193 |
--------------------------------------------------------------------------------
/src/components/progress.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Progress Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-progress {
7 | position: relative;
8 | line-height: 1;
9 |
10 | /* element */
11 | &-bar {
12 | display: inline-block;
13 | width: 100%;
14 | vertical-align: middle;
15 | margin-right: -55px;
16 | padding-right: 50px;
17 |
18 | &__wraper {
19 | position: relative;
20 | height: $progress-height;
21 | background-color: $progress-track-bg-color;
22 | overflow: hidden;
23 | vertical-align: middle;
24 | border-radius: $progress-border-radius;
25 | }
26 | &__inner {
27 | position: absolute;
28 | left: 0;
29 | top: 0;
30 | width: 0;
31 | height: 100%;
32 | border-radius: $progress-border-radius;
33 | background-color: $progress-bar-bg-color;
34 | line-height: 1;
35 | text-align: right;
36 | transition: width .3s;
37 | }
38 | }
39 | &__text {
40 | display: inline-block;
41 | margin-left: 10px;
42 | color: $progress-font-color;
43 | font-size: $progress-font-size;
44 | line-height: 1;
45 | vertical-align: middle;
46 |
47 | i {
48 | display: inline-block;
49 | vertical-align: middle;
50 | line-height: 1;
51 | }
52 | }
53 |
54 | /* modifier */
55 | &--success {
56 | .at-progress-bar__inner {
57 | background-color: $progress-bar-bg-color-success;
58 | }
59 | .at-progress__text {
60 | color: $progress-bar-bg-color-success;
61 | }
62 | }
63 | &--error {
64 | .at-progress-bar__inner {
65 | background-color: $progress-bar-bg-color-error;
66 | }
67 | .at-progress__text {
68 | color: $progress-bar-bg-color-error;
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/components/radio.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Radio Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | @mixin button-size($padding, $font-size) {
7 | padding: $padding;
8 | font-size: $font-size;
9 | }
10 |
11 | /**
12 | * AtRadio
13 | */
14 | .at-radio {
15 | position: relative;
16 | display: inline-block;
17 | color: $text-color;
18 | font-size: 0;
19 | white-space: nowrap;
20 | user-select: none;
21 | cursor: pointer;
22 |
23 | + .at-radio {
24 | margin-left: 16px;
25 | }
26 |
27 | /* modifier */
28 | &--checked {
29 | .at-radio-button__inner {
30 | color: $color-white;
31 | border-color: $color-primary;
32 | background-color: $color-primary;
33 | }
34 | }
35 |
36 | /* element */
37 | &__input {
38 | position: relative;
39 | display: inline-block;
40 | vertical-align: middle;
41 | cursor: pointer;
42 | }
43 | &__inner {
44 | position: relative;
45 | display: inline-block;
46 | width: $radio-size;
47 | height: $radio-size;
48 | border: 1px solid $border-color-base;
49 | border-radius: 50%;
50 | background-color: $color-white;
51 | transition: border .2s;
52 | cursor: pointer;
53 |
54 | &:not(.at-radio--disabled):hover {
55 | border-color: $radio-border-c-hover;
56 | }
57 | &::after {
58 | content: '';
59 | position: absolute;
60 | left: 50%;
61 | top: 50%;
62 | width: $radio-dot-size;
63 | height: $radio-dot-size;
64 | border-radius: 50%;
65 | background-color: $radio-border-c-hover;
66 | transform: translate(-50%, -50%) scale(0);
67 | transition: transform .2s;
68 | }
69 | &.at-radio--checked {
70 | border-color: $radio-border-c-checked;
71 |
72 | &::after {
73 | transform: translate(-50%, -50%) scale(1);
74 | }
75 | }
76 | &.at-radio--disabled {
77 | border-color: $radio-border-c-disabled;
78 | background-color: $radio-bg-c-disabled;
79 | cursor: $cursor-disabled;
80 |
81 | &.at-radio--checked::after {
82 | background-color: $radio-dot-c-disabled;
83 | }
84 | }
85 | }
86 | &__original {
87 | position: absolute;
88 | top: 0;
89 | right: 0;
90 | bottom: 0;
91 | left: 0;
92 | margin: 0;
93 | opacity: 0;
94 | outline: none;
95 | z-index: -1;
96 | }
97 | &__label {
98 | font-size: $radio-font-size;
99 | padding-left: 8px;
100 | vertical-align: middle;
101 | }
102 | }
103 |
104 | /**
105 | * AtRadioButton
106 | */
107 | .at-radio-button {
108 | position: relative;
109 | display: inline-block;
110 | overflow: hidden;
111 |
112 | &:not(:last-child) {
113 | margin-right: -1px;
114 | border-collapse: separate;
115 | }
116 | &:first-child {
117 | .at-radio-button__inner {
118 | border-radius: $border-radius-base 0 0 $border-radius-base;
119 | }
120 | }
121 | &:last-child {
122 | .at-radio-button__inner {
123 | border-radius: 0 $border-radius-base $border-radius-base 0;
124 | }
125 | }
126 |
127 | /* modifier */
128 | &--small {
129 | .at-radio-button__inner {
130 | @include button-size($btn-padding-sm, $btn-font-size-sm);
131 | }
132 | }
133 | &--normal {
134 | .at-radio-button__inner {
135 | @include button-size($btn-padding-base, $btn-font-size-base);
136 | }
137 | }
138 | &--large {
139 | .at-radio-button__inner {
140 | @include button-size($btn-padding-md, $btn-font-size-md);
141 | }
142 | }
143 |
144 | /* element */
145 | &__inner {
146 | position: relative;
147 | display: inline-block;
148 | margin: 0;
149 | color: $text-color;
150 | white-space: nowrap;
151 | text-align: center;
152 | vertical-align: middle;
153 | line-height: 1.5;
154 | border: 1px solid $btn-default-border;
155 | background: $btn-default-bg;
156 | transition: all .2s;
157 | outline: none;
158 | user-select: none;
159 | cursor: pointer;
160 | @include button-size($btn-padding-base, $btn-font-size-base);
161 | }
162 | &__original {
163 | position: absolute;
164 | top: 0;
165 | bottom: 0;
166 | left: 0;
167 | right: 0;
168 | opacity: 0;
169 | outline: none;
170 | z-index: -1;
171 |
172 | &:disabled {
173 | & + .at-radio-button__inner {
174 | color: $btn-disabled-color;
175 | background-color: $btn-disabled-bg;
176 | border-color: $btn-default-border;
177 | cursor: $cursor-disabled;
178 | }
179 | }
180 | }
181 | }
182 |
183 | .at-radio-group {
184 | display: inline-block;
185 | font-size: 0;
186 | line-height: 1;
187 | border-collapse: separate;
188 | }
189 |
--------------------------------------------------------------------------------
/src/components/rate.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Rate Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-rate {
7 | font-size: 0;
8 |
9 | /* element */
10 | &__list {
11 | display: inline-block;
12 | vertical-align: middle;
13 | cursor: pointer;
14 | }
15 | &__item {
16 | display: inline-block;
17 | margin-right: 8px;
18 | font-size: 0;
19 | vertical-align: top;
20 | transition: all .3s;
21 | cursor: pointer;
22 |
23 | &:last-of-type {
24 | margin-right: 0;
25 | }
26 | &:hover {
27 | transform: scale(1.1);
28 | }
29 |
30 | &--on {
31 | .at-rate__icon {
32 | color: $rate-icon-color-on;
33 | }
34 | }
35 | &--half {
36 | .at-rate__left {
37 | color: $rate-icon-color-on;
38 | }
39 | }
40 | }
41 | &__icon {
42 | position: relative;
43 | display: inline-block;
44 | color: $rate-icon-color;
45 | font-size: $rate-icon-font-size;
46 | vertical-align: top;
47 | transition: color .3s;
48 | }
49 | &__left {
50 | position: absolute;
51 | left: 0;
52 | top: 0;
53 | width: 50%;
54 | height: 100%;
55 | color: transparent;
56 | overflow: hidden;
57 | }
58 | &__text {
59 | display: inline-block;
60 | margin-left: 8px;
61 | font-size: $rate-text-font-size;
62 | vertical-align: middle;
63 | }
64 |
65 | /* modifier */
66 | &--disabled {
67 | &.at-rate__list {
68 | cursor: initial;
69 | }
70 | .at-rate__item {
71 | cursor: initial;
72 |
73 | &:hover {
74 | transform: none;
75 | }
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/src/components/select.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Select Style
3 | */
4 | @import '../variables/index.scss';
5 | @import '../mixins/index.scss';
6 |
7 | /**
8 | * AtSelect
9 | */
10 | .at-select {
11 | position: relative;
12 | display: inline-block;
13 | width: 100%;
14 | min-width: 80px;
15 | color: $select-font-color;
16 | font-size: $select-font-size-base;
17 | line-height: 1.5;
18 | vertical-align: middle;
19 |
20 | .at-select__input {
21 | width: 100%;
22 | border: none;
23 | outline: none;
24 | position: absolute;
25 | left: 0;
26 | top: 0;
27 | margin: 0 24px 0 8px;
28 | background-color: transparent;
29 |
30 | &::placeholder {
31 | color: $input-placeholder-color;
32 | }
33 | &:disabled {
34 | cursor: $cursor-disabled;
35 | }
36 | }
37 |
38 | /* element */
39 | &__selection {
40 | position: relative;
41 | display: block;
42 | padding: $select-padding-base;
43 | outline: none;
44 | min-height: $select-selection-height-base;
45 | line-height: $select-selection-height-base;
46 | border: 1px solid $border-color-base;
47 | border-radius: $border-radius-base;
48 | background-color: $color-white;
49 | transition: all .3s;
50 | cursor: pointer;
51 | overflow: hidden;
52 |
53 | &:hover {
54 | border-color: $select-border-c-hover;
55 |
56 | .at-select__arrow {
57 | display: inline-block;
58 | }
59 | .at-select__clear {
60 | display: inline-block;
61 | }
62 | }
63 | }
64 | &__selected {
65 | @include ellipsis();
66 | display: block;
67 | }
68 | &__arrow {
69 | display: inline-block;
70 | position: absolute;
71 | top: 50%;
72 | right: 8px;
73 | margin-top: -5px;
74 | font-size: 10px;
75 | cursor: pointer;
76 | transition: transform .3s;
77 | }
78 | &__clear {
79 | display: none;
80 | position: absolute;
81 | top: 50%;
82 | right: 8px;
83 | margin-top: -5px;
84 | font-size: 10px;
85 | cursor: pointer;
86 | }
87 | &__placeholder {
88 | color: $input-placeholder-color;
89 | }
90 | &__dropdown {
91 | position: absolute;
92 | width: 100%;
93 | max-height: $select-dropdown-height;
94 | font-size: $select-dropdown-font-size-base;
95 | border-radius: $border-radius-base;
96 | background-color: $select-dropdown-bg-color;
97 | box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
98 | overflow-y: auto;
99 | z-index: $zindex-dropdown;
100 |
101 | .at-select__list {
102 | list-style: none;
103 | padding: 0;
104 | font-size: 0;
105 | }
106 | .at-select__not-found {
107 | padding: $dropdown-option-padding-base;
108 | }
109 | .at-select__option {
110 | @include ellipsis();
111 | width: 100%;
112 | padding: $dropdown-option-padding-base;
113 | font-size: $select-dropdown-font-size-base;
114 | line-height: 1.5;
115 | text-align: left;
116 | white-space: nowrap;
117 | transition: all .3s;
118 | overflow: hidden;
119 | cursor: pointer;
120 |
121 | &--selected {
122 | font-weight: bold;
123 | background-color: $dropdown-option-bg-c-selected;
124 | }
125 | &:hover,
126 | &--focus {
127 | background-color: $dropdown-option-bg-c-hover;
128 | }
129 | &--disabled {
130 | color: $input-placeholder-color-disabled;
131 | }
132 | }
133 | &--bottom {
134 | margin-top: 2px;
135 | }
136 | &--top {
137 | margin-bottom: 2px;
138 | }
139 | &--left {
140 | margin-right: 2px;
141 | }
142 | &--right {
143 | margin-left: 2px;
144 | }
145 | }
146 |
147 | /* modifier */
148 | &--visible {
149 | .at-select__arrow {
150 | transform: rotate(180deg);
151 | }
152 | }
153 | &--show-clear {
154 | .at-select__selection:hover {
155 | .at-select__arrow {
156 | opacity: 0;
157 | }
158 | }
159 | }
160 | &--disabled {
161 | .at-select__selection {
162 | cursor: $cursor-disabled;
163 | border-color: $select-border-c-disabled;
164 | background-color: $select-selection-bg-color-disabled;
165 |
166 | &:hover {
167 | border-color: $select-border-c-disabled;
168 | }
169 | }
170 | .at-select__placeholder,
171 | .at-select__selected {
172 | color: $input-placeholder-color-disabled;
173 | }
174 | }
175 | &--multiple {
176 | .at-tag {
177 | margin: 4px 4px 0 0;
178 | }
179 | .at-tag__text {
180 | font-size: 10px;
181 | }
182 | }
183 | &--small {
184 | font-size: $select-font-size-sm;
185 |
186 | .at-select__selection {
187 | height: $select-selection-height-sm;
188 | line-height: $select-selection-height-sm;
189 | }
190 | .at-select__dropdown .at-select__option {
191 | font-size: $select-dropdown-font-size-sm;
192 | }
193 | }
194 | &--large {
195 | font-size: $select-font-size-lg;
196 |
197 | .at-select__selection {
198 | height: $select-selection-height-lg;
199 | line-height: $select-selection-height-lg - 2;
200 | }
201 | .at-select__dropdown .at-select__option {
202 | font-size: $select-dropdown-font-size-lg;
203 | }
204 | }
205 | }
206 |
207 | /**
208 | * AtOptionGroup
209 | */
210 | .at-option-group {
211 | padding: 0;
212 |
213 | &__label {
214 | @include ellipsis();
215 | width: 100%;
216 | padding: 8px;
217 | color: $option-group-font-c;
218 | font-size: $select-dropdown-font-size-base;
219 | line-height: 1;
220 | white-space: nowrap;
221 | overflow: hidden;
222 | transition: all .3s;
223 | cursor: initial;
224 | }
225 | &__list {
226 | padding: 0;
227 | }
228 | }
229 |
--------------------------------------------------------------------------------
/src/components/slider.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Slider Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-slider {
7 | position: relative;
8 |
9 | /* element */
10 | &__input {
11 | float: right;
12 | margin-top: 3px;
13 | }
14 | &__track {
15 | position: relative;
16 | margin: $slider-margin;
17 | width: 100%;
18 | height: $slider-bar-height;
19 | vertical-align: middle;
20 | border-radius: $slider-bar-border-radius;
21 | background-color: $slider-track-bg-color;
22 | user-select: none;
23 | cursor: pointer;
24 | }
25 | &__bar {
26 | position: absolute;
27 | top: 0;
28 | left: 0;
29 | height: $slider-bar-height;
30 | background-color: $slider-bar-bg-color;
31 | border-radius: $slider-bar-border-radius;
32 | }
33 | &__dot-wrapper {
34 | position: absolute;
35 | top: $slider-dot-wrapper-offset;
36 | width: $slider-dot-wrapper-size;
37 | height: $slider-dot-wrapper-size;
38 | text-align: center;
39 | background-color: transparent;
40 | transform: translateX(-50%);
41 | user-select: none;
42 |
43 | &:hover,
44 | &.at-slider__dot-wrapper--hover {
45 | cursor: grab;
46 | }
47 | &.at-slider__dot-wrapper--drag {
48 | cursor: grabbing;
49 | }
50 | /* tooltip */
51 | .at-tooltip {
52 | display: block;
53 | height: 100%;
54 | line-height: 1;
55 |
56 | &::after {
57 | content: '';
58 | display: inline-block;
59 | width: 0;
60 | height: 100%;
61 | vertical-align: middle;
62 | }
63 | }
64 | .at-tooltip__trigger {
65 | vertical-align: middle;
66 | }
67 | }
68 | &__dot {
69 | width: $slider-dot-size;
70 | height: $slider-dot-size;
71 | border-radius: 50%;
72 | background-color: $slider-dot-color;
73 | transition: all .3s;
74 |
75 | &:hover,
76 | &--hover,
77 | &--drag {
78 | background-color: $slider-dot-color-hover;
79 | transform: scale(1.3);
80 | }
81 |
82 | &:hover,
83 | &--hover {
84 | cursor: grab;
85 | }
86 |
87 | &--drag {
88 | cursor: grabbing;
89 | }
90 | }
91 |
92 | /* modifier */
93 | &--disabled {
94 | .at-slider__bar {
95 | background-color: $slider-bar-bg-color-disabled;
96 | }
97 | .at-slider__dot {
98 | background-color: $slider-dot-color-disabled;
99 | }
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/src/components/steps.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Steps Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-steps {
7 | font-size: 0;
8 |
9 | /* modifier */
10 | &--small {
11 | .at-step__label {
12 | width: $step-label-size-sm;
13 | height: $step-label-size-sm;
14 | font-size: $step-font-size-sm;
15 | line-height: $step-label-size-sm - 2;
16 | }
17 | .at-step__title {
18 | font-size: $step-font-size-sm;
19 | line-height: $step-label-size-sm;
20 | }
21 | .at-step__line {
22 | top: ($step-label-size-sm - 2) / 2;
23 | }
24 |
25 | &.at-steps--vertical {
26 | .at-step__main {
27 | min-height: $step-main-height-vertical-sm;
28 | }
29 | }
30 | }
31 | &--vertical {
32 | .at-step {
33 | display: block;
34 |
35 | /* element */
36 | &__line {
37 | margin: 0;
38 | left: ($step-label-size - 2) / 2;
39 | top: 0;
40 | bottom: 2px;
41 | width: 1px;
42 | height: auto;
43 |
44 | &::before, &::after {
45 | position: absolute;
46 | top: 0px;
47 | width: 100%;
48 | }
49 | &::after {
50 | height: 0;
51 | }
52 | }
53 | &__head {
54 | padding-bottom: 2px;
55 | }
56 | &__main {
57 | min-height: $step-main-height-vertical;
58 | }
59 |
60 | /* modifier */
61 | &.at-step--finish {
62 | .at-step__line::after {
63 | height: 100%;
64 | }
65 | }
66 | }
67 |
68 | &.at-steps--small {
69 | .at-step__line {
70 | left: 8px;
71 | }
72 | }
73 | }
74 | }
75 |
76 | .at-step {
77 | position: relative;
78 | display: inline-block;
79 | vertical-align: top;
80 | white-space: nowrap;
81 |
82 | /* element */
83 | &__head, &__main {
84 | position: relative;
85 | font-size: $step-font-size;
86 | }
87 | &__head {
88 | position: relative;
89 | display: inline-block;
90 | vertical-align: top;
91 | background-color: $step-bg-color;
92 | }
93 | &__label {
94 | margin-right: 8px;
95 | width: $step-label-size;
96 | height: $step-label-size;
97 | color: $step-color;
98 | line-height: $step-label-size - 2;
99 | text-align: center;
100 | border: 1px solid $step-border-color;
101 | border-radius: 50%;
102 | transition: all .3s ease-in-out;
103 |
104 | @at-root.at-step--process &:not(.at-step__icon) {
105 | color: $step-color-active;
106 | border-color: $step-border-color-active;
107 | background-color: $step-bg-color-active;
108 | }
109 |
110 | @at-root.at-step--process &.at-step__icon {
111 | color: $step-icon-color-active;
112 | }
113 |
114 | @at-root.at-step--finish & {
115 | color: $step-icon-color-active;
116 | border-color: $step-border-color-active;
117 |
118 | &.at-step__icon {
119 | border-color: transparent;
120 | }
121 | }
122 |
123 | @at-root.at-step--error & {
124 | color: $step-icon-color-error;
125 | border-color: $step-border-color-error;
126 | }
127 | }
128 | &__line {
129 | position: absolute;
130 | left: 0;
131 | right: 0;
132 | top: ($step-label-size - 2) / 2;
133 | margin: 0 10px;
134 | height: 1px;
135 |
136 | @at-root.at-step--finish &::after {
137 | width: 100%;
138 | }
139 |
140 | @at-root.at-step--next-error &::after {
141 | width: 100%;
142 | background-color: $step-bg-color-error;
143 | }
144 |
145 | &::before, &::after {
146 | content: '';
147 | position: absolute;
148 | left: 0;
149 | right: 0;
150 | top: 0;
151 | height: 100%;
152 | }
153 | &::before {
154 | background-color: $step-line-color;
155 | }
156 | &::after {
157 | width: 0;
158 | background-color: $step-line-color-active;
159 | transition: all .3s;
160 | }
161 | }
162 | &__main {
163 | display: inline-block;
164 | width: calc(100% - 40px);
165 | vertical-align: top;
166 | white-space: normal;
167 | overflow: hidden;
168 | }
169 | &__title {
170 | display: inline-block;
171 | padding-right: 8px;
172 | max-width: 80%;
173 | color: $step-text-color;
174 | font-weight: bold;
175 | line-height: $step-label-size;
176 | vertical-align: top;
177 | white-space: nowrap;
178 | text-overflow: ellipsis;
179 | background-color: $step-bg-color;
180 | overflow: hidden;
181 |
182 | @at-root.at-step--process & {
183 | color: $step-color-process;
184 | }
185 |
186 | @at-root.at-step--error & {
187 | color: $step-color-error;
188 | }
189 | }
190 | &__description {
191 | color: $step-text-color;
192 | font-size: $step-description-font-size;
193 | word-wrap: break-word;
194 |
195 | @at-root.at-step--process & {
196 | color: $step-color-process;
197 | }
198 |
199 | @at-root.at-step--error & {
200 | color: $step-color-error;
201 | }
202 | }
203 | &__icon {
204 | font-size: $step-label-size - 2;
205 | border-color: transparent;
206 | background-color: $color-white;
207 | }
208 | &__title, &__description, &__icon {
209 | transition: all .3s ease-in-out;
210 | }
211 | }
212 |
--------------------------------------------------------------------------------
/src/components/switch.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Switch Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-switch {
7 | position: relative;
8 | display: inline-block;
9 | min-width: $switch-min-width-base;
10 | height: $switch-height-base;
11 | border: 1px solid $switch-border-color;
12 | border-radius: $switch-border-radius-base;
13 | background-color: $switch-bg-color;
14 | vertical-align: middle;
15 | transition: all .3s;
16 | user-select: none;
17 | cursor: pointer;
18 |
19 | &::after {
20 | content: '';
21 | display: block;
22 | position: absolute;
23 | left: 1px;
24 | top: 1px;
25 | width: $switch-circle-size-base;
26 | height: $switch-circle-size-base;
27 | border-radius: 50%;
28 | background-color: $switch-circle-bg-color;
29 | transition: all .3s;
30 | cursor: pointer;
31 | }
32 |
33 | /* element */
34 | &__text {
35 | display: block;
36 | padding-left: $switch-circle-size-base + 6;
37 | padding-right: 6px;
38 | color: $switch-font-color;
39 | font-size: $switch-font-size-base;
40 | line-height: $switch-height-base - 2;
41 | }
42 |
43 | /* modifier */
44 | &--checked {
45 | border-color: $switch-border-color-checked;
46 | background-color: $switch-bg-color-checked;
47 |
48 | &::after {
49 | left: 100%;
50 | margin-left: -$switch-circle-size-base - 1;
51 | }
52 | .at-switch__text {
53 | padding-left: 6px;
54 | padding-right: $switch-circle-size-base + 6;
55 | }
56 | }
57 | &--disabled {
58 | border-color: $switch-border-color-disabled;
59 | background-color: $switch-bg-color-disabled;
60 | cursor: $cursor-disabled;
61 |
62 | &::after {
63 | background-color: $switch-circle-bg-color-disabled;
64 | cursor: $cursor-disabled;
65 | }
66 | .at-switch__text {
67 | color: $switch-font-color-disabled;
68 | }
69 | }
70 | &--small {
71 | min-width: $switch-min-width-sm;
72 | height: $switch-height-sm;
73 |
74 | &::after {
75 | width: $switch-circle-size-sm;
76 | height: $switch-circle-size-sm;
77 | }
78 | .at-switch__text {
79 | font-size: $switch-font-size-sm;
80 | padding-left: $switch-circle-size-sm + 4;
81 | padding-right: 4px;
82 | line-height: $switch-height-sm - 2;
83 | }
84 | &.at-switch--checked {
85 | &::after {
86 | left: 100%;
87 | margin-left: -$switch-circle-size-sm - 1;
88 | }
89 | .at-switch__text {
90 | padding-left: 4px;
91 | padding-right: $switch-circle-size-sm + 4;
92 | }
93 | }
94 | }
95 | &--large {
96 | min-width: $switch-min-width-lg;
97 | height: $switch-height-lg;
98 |
99 | &::after {
100 | width: $switch-circle-size-lg;
101 | height: $switch-circle-size-lg;
102 | }
103 | .at-switch__text {
104 | font-size: $switch-font-size-lg;
105 | padding-left: $switch-circle-size-lg + 6;
106 | padding-right: 6px;
107 | line-height: $switch-height-lg - 2;
108 | }
109 | &.at-switch--checked {
110 | &::after {
111 | left: 100%;
112 | margin-left: -$switch-circle-size-lg - 1;
113 | }
114 | .at-switch__text {
115 | padding-left: 6px;
116 | padding-right: $switch-circle-size-lg + 6;
117 | }
118 | }
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/src/components/table.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Table Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-table {
7 | position: relative;
8 | color: $table-text-color;
9 | font-size: $table-font-size;
10 |
11 | table {
12 | width: 100%;
13 | border-collapse: separate;
14 | border-spacing: 0;
15 | text-align: left;
16 | overflow: hidden;
17 |
18 | th, td {
19 | height: $table-cell-height;
20 | text-align: left;
21 | text-overflow: ellipsis;
22 | vertical-align: middle;
23 | border-bottom: 1px solid $table-border-color;
24 |
25 | &.at-table__cell--nodata {
26 | text-align: center;
27 | }
28 | }
29 | }
30 |
31 | &__cell {
32 | padding: $table-cell-padding;
33 | border-bottom: 1px solid $table-border-color;
34 | }
35 | &__content {
36 | border: 1px solid $table-border-color;
37 | border-bottom-width: 0;
38 | }
39 | &__thead {
40 | & > tr > th {
41 | font-weight: bold;
42 | text-align: left;
43 | background-color: $table-thead-bg-color;
44 | white-space: nowrap;
45 | }
46 |
47 | .at-table__column-sorter {
48 | display: inline-block;
49 | vertical-align: middle;
50 | height: $table-sorter-height;
51 | width: $table-sorter-width;
52 |
53 | &-up,
54 | &-down {
55 | display: block;
56 | color: $grey-400;
57 | font-size: $table-sorter-icon-size;
58 | line-height: 1;
59 | transition: color .3s;
60 |
61 | &:hover {
62 | color: $table-text-color;
63 | }
64 | }
65 | &.sort-desc {
66 | .at-table__column-sorter-down {
67 | color: $table-text-color;
68 | }
69 | }
70 | &.sort-asc {
71 | .at-table__column-sorter-up {
72 | color: $table-text-color;
73 | }
74 | }
75 | }
76 | }
77 | &__tbody {
78 | & > tr {
79 | transition: all .3s;
80 |
81 | &:hover {
82 | background-color: $table-tr-bg-color-hover;
83 | }
84 | }
85 | }
86 | &__footer {
87 | position: relative;
88 | margin: 16px 0;
89 | height: $table-footer-height;
90 |
91 | .at-pagination {
92 | float: right;
93 |
94 | &__total {
95 | position: absolute;
96 | left: 0;
97 | top: 0;
98 | margin-left: 16px;
99 | }
100 | }
101 | }
102 |
103 | /* modifier */
104 | &--fixHeight {
105 | .at-table__content {
106 | border-bottom-width: 1px;
107 | }
108 | .at-table__header {
109 | position: absolute;
110 | top: 0;
111 | left: 0;
112 | width: 100%;
113 |
114 | table {
115 | border: 1px solid $table-border-color;
116 | border-bottom: none;
117 | }
118 | }
119 | .at-table__body {
120 | overflow: scroll;
121 | }
122 | .at-table__tbody {
123 | > tr:last-child td {
124 | border-bottom: none;
125 | }
126 | }
127 | }
128 | &--stripe {
129 | .at-table__tbody {
130 | & > tr {
131 | &:nth-child(2n) {
132 | background-color: $table-tr-bg-color-stripe;
133 | }
134 | &:hover {
135 | background-color: $table-tr-bg-color-hover;
136 | }
137 | }
138 | }
139 | }
140 | &--border {
141 | .at-table__content {
142 | border-right: none;
143 | }
144 | .at-table__thead,
145 | .at-table__tbody {
146 | th, td {
147 | border-right: 1px solid $table-border-color;
148 | }
149 | }
150 | }
151 | &--large {
152 | font-size: $table-font-size-large;
153 |
154 | table {
155 | th, td {
156 | height: $table-cell-height-large;
157 | }
158 | }
159 | }
160 | &--small {
161 | font-size: $table-font-size-small;
162 |
163 | table {
164 | th, td {
165 | height: $table-cell-height-small;
166 | }
167 | }
168 | .at-table__thead {
169 | .at-table__column-sorter {
170 | width: $table-sorter-width-small;
171 | height: $table-sorter-height-small;
172 |
173 | &-up,
174 | &-down {
175 | font-size: $table-sorter-icon-size-small;
176 | }
177 | }
178 | }
179 | }
180 | }
181 |
--------------------------------------------------------------------------------
/src/components/tabs.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Tabs Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-tabs {
7 | overflow: hidden;
8 |
9 | /* element */
10 | &__header {
11 | margin-bottom: 16px;
12 | font-size: 0;
13 | border-bottom: 1px solid $tabs-border-color;
14 | }
15 | &__nav {
16 | position: relative;
17 | margin-bottom: -1px;
18 | height: $tabs-nav-height;
19 | color: $tabs-navigation-color;
20 | font-size: $tabs-nav-font-size;
21 | overflow: hidden;
22 | }
23 | &__nav-wrap {
24 | overflow: hidden;
25 | }
26 | &__prev, &__next {
27 | position: absolute;
28 | top: 0;
29 | width: $tabs-navigation-btn-width;
30 | height: 100%;
31 | transition: color .3s;
32 | cursor: pointer;
33 |
34 | &:hover {
35 | color: $tabs-navigation-color-hover;;
36 | }
37 |
38 | &--disabled {
39 | color: $tabs-navigation-color-disabled;
40 | cursor: default;
41 |
42 | &:hover {
43 | color: $tabs-navigation-color-disabled;
44 | }
45 | }
46 |
47 | .icon {
48 | position: absolute;
49 | left: 50%;
50 | top: 50%;
51 | transform: translate(-50%, -50%)
52 | }
53 | }
54 | &__prev {
55 | left: 0;
56 | }
57 | &__next {
58 | right: 0;
59 | }
60 | &__body {
61 | font-size: 0;
62 | white-space: nowrap;
63 | transition: all .3s;
64 | }
65 | &__extra {
66 | float: right;
67 | margin-top: 6px;
68 | }
69 | &__pane {
70 | display: inline-block;
71 | width: 100%;
72 | white-space: initial;
73 | vertical-align: top;
74 | }
75 |
76 | /* modifier */
77 | &--small {
78 | .at-tabs__header {
79 | margin-bottom: 12px;
80 | }
81 | .at-tabs__nav {
82 | height: $tabs-nav-height-sm;
83 | }
84 | .at-tabs-nav__item {
85 | margin-right: 16px;
86 | padding: $tabs-nav-item-padding-sm;
87 | line-height: $tabs-nav-height-sm;
88 | font-size: $tabs-nav-font-size-sm;
89 | }
90 | .at-tabs__extra {
91 | margin-top: 3px;
92 | }
93 | }
94 | &--card {
95 | &.at-tabs--small {
96 | .at-tabs-nav__item {
97 | line-height: $tabs-nav-height-sm - 2;
98 | }
99 | }
100 |
101 | .at-tabs-nav__item {
102 | margin: 0 2px 0 0;
103 | line-height: $tabs-nav-height - 2;
104 | border: 1px solid $tabs-border-color;
105 | border-radius: 4px 4px 0 0;
106 | background-color: $tabs-nav-item-bg-color-card;
107 | transition: background-color .3s;
108 |
109 | &::after {
110 | content: normal
111 | }
112 |
113 | &--active {
114 | border-bottom-color: transparent;
115 | background-color: $tabs-nav-item-bg-color;
116 | }
117 | }
118 | }
119 | &--scroll {
120 | .at-tabs__nav {
121 | padding: 0 $tabs-navigation-btn-width;
122 | }
123 | }
124 | }
125 |
126 | .at-tabs-nav {
127 | display: inline-block;
128 | white-space: nowrap;
129 | transition: transform .3s;
130 |
131 | /* element */
132 | &__icon {
133 | margin-right: 8px;
134 | }
135 | &__close {
136 | position: absolute;
137 | margin-left: 2px;
138 | color: $tabs-nav-item-icon-color;
139 | opacity: 0;
140 | transition: all .3s;
141 |
142 | &:hover {
143 | color: $tabs-nav-item-icon-color-hover;
144 | }
145 | }
146 | &__item {
147 | position: relative;
148 | display: inline-block;
149 | margin-right: 24px;
150 | padding: $tabs-nav-item-padding;
151 | line-height: $tabs-nav-height;
152 | transition: color .3s;
153 | cursor: pointer;
154 |
155 | &:last-of-type {
156 | margin-right: 0;
157 | }
158 | &::after {
159 | content: '';
160 | position: absolute;
161 | left: 0;
162 | width: 100%;
163 | height: 2px;
164 | bottom: 0;
165 | background-color: $menu-item-text-color-active;
166 | transform: scaleX(0);
167 | transition: all .15s;
168 | }
169 | &:not(&--disabled):hover {
170 | color: $menu-item-text-color-active;
171 | }
172 |
173 | &--active {
174 | color: $menu-item-text-color-active;
175 |
176 | &::after {
177 | transform: scaleX(1)
178 | }
179 | }
180 | &--disabled {
181 | color: $tabs-navigation-color-disabled;
182 | cursor: default;
183 | }
184 | &--closable {
185 | &:hover {
186 | .at-tabs-nav__close {
187 | opacity: 1;
188 | }
189 | }
190 | }
191 | }
192 | }
193 |
--------------------------------------------------------------------------------
/src/components/tag.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Tag
3 | */
4 | @import '../variables/index.scss';
5 |
6 | @mixin tag-style($text-color, $border-color, $background-color) {
7 | color: $text-color;
8 | border-color: $border-color;
9 | background-color: $background-color;
10 | }
11 |
12 | .at-tag {
13 | display: inline-block;
14 | padding: 1px 8px;
15 | color: $color-white;
16 | font-size: 0;
17 | line-height: 1.5;
18 | text-align: center;
19 | white-space: nowrap;
20 | border: 1px solid $tag-border-color;
21 | border-radius: $border-radius-base;
22 | background-color: $tag-bg-color;
23 | outline: 0;
24 | @include tag-style($text-color, $tag-border-color, $tag-bg-color);
25 |
26 | &__text {
27 | font-size: $font-size-smer;
28 | }
29 | &__close {
30 | font-size: 10px;
31 | padding-left: 4px;
32 | margin: 0;
33 | cursor: pointer;
34 |
35 | &:hover {
36 | color: tint($text-color, 30%);
37 | }
38 | }
39 | &--default {
40 | @include tag-style($text-color, $tag-border-color, $tag-bg-color);
41 | }
42 | &--primary {
43 | @include tag-style($color-white, $btn-primary-bg, $btn-primary-bg);
44 | }
45 | &--success {
46 | @include tag-style($color-white, $btn-success-bg, $btn-success-bg);
47 | }
48 | &--error {
49 | @include tag-style($color-white, $btn-error-bg, $btn-error-bg);
50 | }
51 | &--warning {
52 | @include tag-style($color-white, $btn-warning-bg, $btn-warning-bg);
53 | }
54 | &--info {
55 | @include tag-style($color-white, $btn-info-bg, $btn-info-bg);
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/components/textarea.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Textarea Style
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-textarea {
7 |
8 | /* element */
9 | &__original {
10 | display: block;
11 | width: 100%;
12 | padding: $textarea-padding;
13 | color: $input-font-color;
14 | font-size: $input-font-size-base;
15 | line-height: 1.5;
16 | border: 1px solid $input-border-color;
17 | border-radius: $border-radius-base;
18 | background-color: $input-bg-color;
19 | transition: border .3s;
20 | outline: 0;
21 | resize: vertical;
22 |
23 | &::placeholder {
24 | color: $input-placeholder-color;
25 | }
26 | &:hover {
27 | border-color: $input-border-color-hover;
28 | }
29 | &:focus {
30 | border-color: $input-border-color-focus;
31 | }
32 | }
33 |
34 | /* modifier */
35 | &--disabled {
36 | .at-textarea__original {
37 | color: $input-font-color-disabled;
38 | border-color: $input-border-color-disabled;
39 | background-color: $input-bg-color-disabled;
40 | cursor: $cursor-disabled;
41 |
42 | &::placeholder {
43 | color: $input-placeholder-color-disabled;
44 | }
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/components/timeline.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Timeline
3 | */
4 |
5 | .at-timeline {
6 | /* element */
7 | &__item {
8 | position: relative;
9 | padding: 0 0 12px;
10 |
11 | &--default {
12 | .at-timeline__dot {
13 | color: $timeline-dot-color;
14 | border-color: $timeline-dot-color;
15 | }
16 | }
17 | &--success {
18 | .at-timeline__dot {
19 | color: $timeline-dot-color-success;
20 | border-color: $timeline-dot-color-success;
21 | }
22 | }
23 | &--error {
24 | .at-timeline__dot {
25 | color: $timeline-dot-color-error;
26 | border-color: $timeline-dot-color-error;
27 | }
28 | }
29 | &--warning {
30 | .at-timeline__dot {
31 | color: $timeline-dot-color-warning;
32 | border-color: $timeline-dot-color-warning;
33 | }
34 | }
35 | &--custom {
36 | .at-timeline__dot {
37 | top: -2px;
38 | left: -4px;
39 | width: $timeline-custom-dot-size;
40 | height: $timeline-custom-dot-size;
41 | font-size: $timeline-custom-dot-font-size;
42 | text-align: center;
43 | border: 0;
44 |
45 | .icon {
46 | display: block;
47 | margin-top: 2px;
48 | }
49 | }
50 | }
51 | &--last {
52 | .at-timeline__tail {
53 | display: none
54 | }
55 | .at-timeline__content {
56 | min-height: $timeline-item-last-min-height;
57 | }
58 | }
59 | }
60 | &__tail {
61 | position: absolute;
62 | top: 0;
63 | bottom: 0;
64 | left: ($timeline-dot-size - 2) / 2;
65 | border-left: 2px solid $timeline-line-color;
66 | }
67 | &__dot {
68 | position: absolute;
69 | left: 0;
70 | top: 0;
71 | width: $timeline-dot-size;
72 | height: $timeline-dot-size;
73 | border: 2px solid transparent;
74 | border-radius: 50%;
75 | background-color: $timeline-dot-bg-color;
76 | }
77 | &__content {
78 | position: relative;
79 | top: -($timeline-text-font-size - 2) / 2;
80 | padding: 0 0 8px 24px;
81 | font-size: $timeline-text-font-size;
82 | }
83 |
84 | /* modifier */
85 | &--pending {
86 | .at-timeline__item--pending {
87 | .at-timeline__tail {
88 | display: none
89 | }
90 | }
91 | .at-timeline__item--last {
92 | .at-timeline__tail {
93 | display: inline-block;
94 | border-left-style: dotted;
95 | }
96 | }
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/src/components/tooltip.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Tooltip
3 | */
4 | @import '../variables/index.scss';
5 |
6 | .at-tooltip {
7 | display: inline-block;
8 |
9 | /* element */
10 | &__trigger {
11 | display: inline-block;
12 | position: relative;
13 | }
14 | &__popper {
15 | position: absolute;
16 | z-index: $zindex-popover;
17 | }
18 | &__content {
19 | padding: $tooltip-padding;
20 | max-width: $tooltip-max-width;
21 | color: $tooltip-font-color;
22 | font-size: $tooltip-font-size;
23 | line-height: 1.5;
24 | border-radius: $border-radius-base;
25 | background-color: $tooltip-bg-color;
26 | word-wrap: break-word;
27 | }
28 | &__arrow {
29 | position: absolute;
30 | display: block;
31 | width: 0;
32 | height: 0;
33 | border: $tooltip-arrow-size solid transparent;
34 | }
35 |
36 | /* modifier */
37 | /**
38 | * Top
39 | */
40 | &--top,
41 | &--top-left,
42 | &--top-right {
43 | padding: $tooltip-arrow-size 0;
44 | margin-top: -2px;
45 |
46 | .at-tooltip__arrow {
47 | bottom: 0;
48 | left: 50%;
49 | margin-left: -$tooltip-arrow-size;
50 | border-bottom-width: 0;
51 | border-top-color: $tooltip-border-color;
52 | }
53 | }
54 | &--top-left {
55 | .at-tooltip__arrow {
56 | left: $tooltip-arrow-size * 3;
57 | right: initial;
58 | }
59 | }
60 | &--top-right {
61 | .at-tooltip__arrow {
62 | left: initial;
63 | right: $tooltip-arrow-size * 2;
64 | }
65 | }
66 |
67 | /**
68 | * Bottom
69 | */
70 | &--bottom,
71 | &--bottom-left,
72 | &--bottom-right {
73 | padding: $tooltip-arrow-size 0;
74 | margin-top: 2px;
75 |
76 | .at-tooltip__arrow {
77 | top: 0;
78 | left: 50%;
79 | margin-left: -$tooltip-arrow-size;
80 | border-top-width: 0;
81 | border-bottom-color: $tooltip-border-color;
82 | }
83 | }
84 | &--bottom-left {
85 | .at-tooltip__arrow {
86 | left: $tooltip-arrow-size * 3;
87 | right: initial;
88 | }
89 | }
90 | &--bottom-right {
91 | .at-tooltip__arrow {
92 | left: initial;
93 | right: $tooltip-arrow-size * 2;
94 | }
95 | }
96 |
97 | /**
98 | * Left
99 | */
100 | &--left,
101 | &--left-top,
102 | &--left-bottom {
103 | padding: 0 $tooltip-arrow-size;
104 | margin-left: -2px;
105 |
106 | .at-tooltip__arrow {
107 | top: 50%;
108 | right: 0;
109 | margin-top: -$tooltip-arrow-size;
110 | border-right-width: 0;
111 | border-left-color: $tooltip-border-color;
112 | }
113 | }
114 | &--left-top {
115 | .at-tooltip__arrow {
116 | top: $tooltip-arrow-size * 3;
117 | bottom: initial;
118 | }
119 | }
120 | &--left-bottom {
121 | .at-tooltip__arrow {
122 | top: initial;
123 | bottom: $tooltip-arrow-size * 2;
124 | }
125 | }
126 |
127 | /**
128 | * Right
129 | */
130 | &--right,
131 | &--right-top,
132 | &--right-bottom {
133 | padding: 0 $tooltip-arrow-size;
134 | margin-left: 2px;
135 |
136 | .at-tooltip__arrow {
137 | top: 50%;
138 | left: 0;
139 | margin-top: -$tooltip-arrow-size;
140 | border-left-width: 0;
141 | border-right-color: $tooltip-border-color;
142 | }
143 | }
144 | &--right-top {
145 | .at-tooltip__arrow {
146 | top: $tooltip-arrow-size * 3;
147 | bottom: initial;
148 | }
149 | }
150 | &--right-bottom {
151 | .at-tooltip__arrow {
152 | top: initial;
153 | bottom: $tooltip-arrow-size * 2;
154 | }
155 | }
156 | }
157 |
--------------------------------------------------------------------------------
/src/core/base.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * AT-Desktop UI Base Stylesheet
3 | */
4 | @import '../variables/index.scss';
5 | @import '../mixins/index.scss';
6 |
7 | * {
8 | box-sizing: border-box;
9 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
10 |
11 | &:before, &:after {
12 | box-sizing: border-box;
13 | }
14 | }
15 |
16 | /* HTML & Body reset */
17 | html, body {
18 | @include size(100%);
19 | }
20 |
21 | body {
22 | background-color: $bg-color;
23 | color: $text-color;
24 | line-height: $line-height-base;
25 | font-family: $font-family;
26 | font-size: $font-size-base;
27 | -webkit-font-smoothing: antialiased;
28 | }
29 |
30 | /* Unify the margin and padding */
31 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
32 | margin: 0;
33 | padding: 0;
34 | }
35 |
36 | /* Reset fonts for relevant elements */
37 | button, input, select, textarea {
38 | font-family: inherit;
39 | font-size: inherit;
40 | line-height: inherit;
41 | color: inherit;
42 | }
43 |
44 | ul, ol {
45 | list-style: none;
46 | }
47 |
48 | /* Remove the clear button of a text input control in IE10+ */
49 | input::-ms-clear, input::-ms-reveal {
50 | display: none;
51 | }
52 |
53 | ::selection {
54 | background: $color-primary;
55 | color: #fff;
56 | }
57 |
58 | /* Link */
59 | a {
60 | color: $link-color;
61 | background: transparent;
62 | text-decoration: none;
63 | outline: none;
64 | cursor: pointer;
65 | transition: color .3s ease;
66 |
67 | &:hover {
68 | color: $link-hover-color;
69 | }
70 | &:active {
71 | color: $link-active-color;
72 | }
73 | &:hover, &:active {
74 | outline: 0;
75 | text-decoration: none;
76 | }
77 | &[disabled] {
78 | color: $link-disabled-color;
79 | cursor: not-allowed;
80 | pointer-events: none;
81 | }
82 | }
83 |
84 | /* Code Block */
85 | code, kbd, pre, samp {
86 | font-family: $code-family;
87 | }
88 |
89 | /* Utility classes */
90 | .clearfix {
91 | @include clearfix;
92 | }
93 |
94 | .show {
95 | display: block !important;
96 | }
97 |
98 | .hide {
99 | display: none !important;
100 | }
101 |
102 | .invisible {
103 | visibility: hidden !important;
104 | }
105 |
106 | .pull-left {
107 | float: left !important;
108 | }
109 |
110 | .pull-right {
111 | float: right !important;
112 | }
113 |
114 | /* Title */
115 | h1, h2, h3, h4, h5, h6 {
116 | color: $title-color;
117 | }
118 | h1 {
119 | font-size: $font-size-lger;
120 | }
121 | h2 {
122 | font-size: $font-size-lg;
123 | }
124 | h3 {
125 | font-size: $font-size-normal;
126 | }
127 | h4, h5, h6 {
128 | font-size: $font-size-base;
129 | }
130 | hr {
131 | margin: 1.2em 0 1.5em;
132 | }
133 |
134 | /* Text */
135 | p {
136 | color: $text-color;
137 | font-size: $font-size-base;
138 | }
139 | .text-smallest {
140 | font-size: $font-size-smest;
141 | }
142 | .text-smaller {
143 | font-size: $font-size-smer;
144 | }
145 | .text-small {
146 | font-size: $font-size-sm;
147 | }
148 | .text-base {
149 | font-size: $font-size-base;
150 | }
151 | .text-normal {
152 | font-size: $font-size-normal;
153 | }
154 | .text-large {
155 | font-size: $font-size-lg;
156 | }
157 | .text-larger {
158 | font-size: $font-size-lger;
159 | }
160 |
161 | /*// Color
162 | $normal-color : #6190E8;
163 | $primary-color : #6190E8;
164 | $success-color : #13CE66;
165 | $error-color : #FF4949;
166 | $warning-color : #FFC82C;
167 | $info-color : #78A4FA;
168 | .normal-color {
169 | color:
170 | }*/
171 |
172 | /* Font */
173 | .typo-pingfang {
174 | font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', Arial, sans-serif;
175 | }
176 | .typo-dongqing {
177 | font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;
178 | }
179 | .typo-yahei {
180 | font-family: 'Helvetica Neue', Helvetica, 'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
181 | }
182 | .typo-helvetica-neue {
183 | font-family: 'Helvetica Neue', "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", sans-serif;
184 | }
185 | .typo-helvetica {
186 | font-family: Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", sans-serif;
187 | }
188 | .typo-arial {
189 | font-family: Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", sans-serif;
190 | }
191 |
--------------------------------------------------------------------------------
/src/core/font.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * IconFont
3 | */
4 | @font-face {
5 | font-family: 'feather';
6 | src: url('./fonts/feather.eot?t=1501829003743');
7 | src: url('./fonts/feather.eot?t=1501829003743#iefix') format('embedded-opentype'),
8 | url('./fonts/feather.ttf?t=1501829003743') format('truetype'),
9 | url('./fonts/feather.woff?t=1501829003743') format('woff'),
10 | url('./fonts/feather.svg?t=1501829003743#feather') format('svg');
11 | font-weight: normal;
12 | font-size: normal;
13 | }
14 |
15 | .icon {
16 | /* use !important to prevent issues with browser extensions that change fonts */
17 | font-family: 'feather' !important;
18 | speak: none;
19 | font-style: normal;
20 | font-weight: normal;
21 | font-variant: normal;
22 | text-transform: none;
23 | line-height: 1;
24 |
25 | /* Better Font Rendering =========== */
26 | -webkit-font-smoothing: antialiased;
27 | -moz-osx-font-smoothing: grayscale;
28 | }
29 |
30 | .icon-alert-octagon:before { content: "\e81b"; }
31 |
32 | .icon-alert-circle:before { content: "\e81c"; }
33 |
34 | .icon-activity:before { content: "\e81d"; }
35 |
36 | .icon-alert-triangle:before { content: "\e81e"; }
37 |
38 | .icon-align-center:before { content: "\e81f"; }
39 |
40 | .icon-airplay:before { content: "\e820"; }
41 |
42 | .icon-align-justify:before { content: "\e821"; }
43 |
44 | .icon-align-left:before { content: "\e822"; }
45 |
46 | .icon-align-right:before { content: "\e823"; }
47 |
48 | .icon-arrow-down-left:before { content: "\e824"; }
49 |
50 | .icon-arrow-down-right:before { content: "\e825"; }
51 |
52 | .icon-anchor:before { content: "\e826"; }
53 |
54 | .icon-aperture:before { content: "\e827"; }
55 |
56 | .icon-arrow-left:before { content: "\e828"; }
57 |
58 | .icon-arrow-right:before { content: "\e829"; }
59 |
60 | .icon-arrow-down:before { content: "\e82a"; }
61 |
62 | .icon-arrow-up-left:before { content: "\e82b"; }
63 |
64 | .icon-arrow-up-right:before { content: "\e82c"; }
65 |
66 | .icon-arrow-up:before { content: "\e82d"; }
67 |
68 | .icon-award:before { content: "\e82e"; }
69 |
70 | .icon-bar-chart:before { content: "\e82f"; }
71 |
72 | .icon-at-sign:before { content: "\e830"; }
73 |
74 | .icon-bar-chart-2:before { content: "\e831"; }
75 |
76 | .icon-battery-charging:before { content: "\e832"; }
77 |
78 | .icon-bell-off:before { content: "\e833"; }
79 |
80 | .icon-battery:before { content: "\e834"; }
81 |
82 | .icon-bluetooth:before { content: "\e835"; }
83 |
84 | .icon-bell:before { content: "\e836"; }
85 |
86 | .icon-book:before { content: "\e837"; }
87 |
88 | .icon-briefcase:before { content: "\e838"; }
89 |
90 | .icon-camera-off:before { content: "\e839"; }
91 |
92 | .icon-calendar:before { content: "\e83a"; }
93 |
94 | .icon-bookmark:before { content: "\e83b"; }
95 |
96 | .icon-box:before { content: "\e83c"; }
97 |
98 | .icon-camera:before { content: "\e83d"; }
99 |
100 | .icon-check-circle:before { content: "\e83e"; }
101 |
102 | .icon-check:before { content: "\e83f"; }
103 |
104 | .icon-check-square:before { content: "\e840"; }
105 |
106 | .icon-cast:before { content: "\e841"; }
107 |
108 | .icon-chevron-down:before { content: "\e842"; }
109 |
110 | .icon-chevron-left:before { content: "\e843"; }
111 |
112 | .icon-chevron-right:before { content: "\e844"; }
113 |
114 | .icon-chevron-up:before { content: "\e845"; }
115 |
116 | .icon-chevrons-down:before { content: "\e846"; }
117 |
118 | .icon-chevrons-right:before { content: "\e847"; }
119 |
120 | .icon-chevrons-up:before { content: "\e848"; }
121 |
122 | .icon-chevrons-left:before { content: "\e849"; }
123 |
124 | .icon-circle:before { content: "\e84a"; }
125 |
126 | .icon-clipboard:before { content: "\e84b"; }
127 |
128 | .icon-chrome:before { content: "\e84c"; }
129 |
130 | .icon-clock:before { content: "\e84d"; }
131 |
132 | .icon-cloud-lightning:before { content: "\e84e"; }
133 |
134 | .icon-cloud-drizzle:before { content: "\e84f"; }
135 |
136 | .icon-cloud-rain:before { content: "\e850"; }
137 |
138 | .icon-cloud-off:before { content: "\e851"; }
139 |
140 | .icon-codepen:before { content: "\e852"; }
141 |
142 | .icon-cloud-snow:before { content: "\e853"; }
143 |
144 | .icon-compass:before { content: "\e854"; }
145 |
146 | .icon-copy:before { content: "\e855"; }
147 |
148 | .icon-corner-down-right:before { content: "\e856"; }
149 |
150 | .icon-corner-down-left:before { content: "\e857"; }
151 |
152 | .icon-corner-left-down:before { content: "\e858"; }
153 |
154 | .icon-corner-left-up:before { content: "\e859"; }
155 |
156 | .icon-corner-up-left:before { content: "\e85a"; }
157 |
158 | .icon-corner-up-right:before { content: "\e85b"; }
159 |
160 | .icon-corner-right-down:before { content: "\e85c"; }
161 |
162 | .icon-corner-right-up:before { content: "\e85d"; }
163 |
164 | .icon-cpu:before { content: "\e85e"; }
165 |
166 | .icon-credit-card:before { content: "\e85f"; }
167 |
168 | .icon-crosshair:before { content: "\e860"; }
169 |
170 | .icon-disc:before { content: "\e861"; }
171 |
172 | .icon-delete:before { content: "\e862"; }
173 |
174 | .icon-download-cloud:before { content: "\e863"; }
175 |
176 | .icon-download:before { content: "\e864"; }
177 |
178 | .icon-droplet:before { content: "\e865"; }
179 |
180 | .icon-edit-2:before { content: "\e866"; }
181 |
182 | .icon-edit:before { content: "\e867"; }
183 |
184 | .icon-edit-1:before { content: "\e868"; }
185 |
186 | .icon-external-link:before { content: "\e869"; }
187 |
188 | .icon-eye:before { content: "\e86a"; }
189 |
190 | .icon-feather:before { content: "\e86b"; }
191 |
192 | .icon-facebook:before { content: "\e86c"; }
193 |
194 | .icon-file-minus:before { content: "\e86d"; }
195 |
196 | .icon-eye-off:before { content: "\e86e"; }
197 |
198 | .icon-fast-forward:before { content: "\e86f"; }
199 |
200 | .icon-file-text:before { content: "\e870"; }
201 |
202 | .icon-film:before { content: "\e871"; }
203 |
204 | .icon-file:before { content: "\e872"; }
205 |
206 | .icon-file-plus:before { content: "\e873"; }
207 |
208 | .icon-folder:before { content: "\e874"; }
209 |
210 | .icon-filter:before { content: "\e875"; }
211 |
212 | .icon-flag:before { content: "\e876"; }
213 |
214 | .icon-globe:before { content: "\e877"; }
215 |
216 | .icon-grid:before { content: "\e878"; }
217 |
218 | .icon-heart:before { content: "\e879"; }
219 |
220 | .icon-home:before { content: "\e87a"; }
221 |
222 | .icon-github:before { content: "\e87b"; }
223 |
224 | .icon-image:before { content: "\e87c"; }
225 |
226 | .icon-inbox:before { content: "\e87d"; }
227 |
228 | .icon-layers:before { content: "\e87e"; }
229 |
230 | .icon-info:before { content: "\e87f"; }
231 |
232 | .icon-instagram:before { content: "\e880"; }
233 |
234 | .icon-layout:before { content: "\e881"; }
235 |
236 | .icon-link-2:before { content: "\e882"; }
237 |
238 | .icon-life-buoy:before { content: "\e883"; }
239 |
240 | .icon-link:before { content: "\e884"; }
241 |
242 | .icon-log-in:before { content: "\e885"; }
243 |
244 | .icon-list:before { content: "\e886"; }
245 |
246 | .icon-lock:before { content: "\e887"; }
247 |
248 | .icon-log-out:before { content: "\e888"; }
249 |
250 | .icon-loader:before { content: "\e889"; }
251 |
252 | .icon-mail:before { content: "\e88a"; }
253 |
254 | .icon-maximize-2:before { content: "\e88b"; }
255 |
256 | .icon-map:before { content: "\e88c"; }
257 |
258 | .icon-map-pin:before { content: "\e88e"; }
259 |
260 | .icon-menu:before { content: "\e88f"; }
261 |
262 | .icon-message-circle:before { content: "\e890"; }
263 |
264 | .icon-message-square:before { content: "\e891"; }
265 |
266 | .icon-minimize-2:before { content: "\e892"; }
267 |
268 | .icon-mic-off:before { content: "\e893"; }
269 |
270 | .icon-minus-circle:before { content: "\e894"; }
271 |
272 | .icon-mic:before { content: "\e895"; }
273 |
274 | .icon-minus-square:before { content: "\e896"; }
275 |
276 | .icon-minus:before { content: "\e897"; }
277 |
278 | .icon-moon:before { content: "\e898"; }
279 |
280 | .icon-monitor:before { content: "\e899"; }
281 |
282 | .icon-more-vertical:before { content: "\e89a"; }
283 |
284 | .icon-more-horizontal:before { content: "\e89b"; }
285 |
286 | .icon-move:before { content: "\e89c"; }
287 |
288 | .icon-music:before { content: "\e89d"; }
289 |
290 | .icon-navigation-2:before { content: "\e89e"; }
291 |
292 | .icon-navigation:before { content: "\e89f"; }
293 |
294 | .icon-octagon:before { content: "\e8a0"; }
295 |
296 | .icon-package:before { content: "\e8a1"; }
297 |
298 | .icon-pause-circle:before { content: "\e8a2"; }
299 |
300 | .icon-pause:before { content: "\e8a3"; }
301 |
302 | .icon-percent:before { content: "\e8a4"; }
303 |
304 | .icon-phone-call:before { content: "\e8a5"; }
305 |
306 | .icon-phone-forwarded:before { content: "\e8a6"; }
307 |
308 | .icon-phone-missed:before { content: "\e8a7"; }
309 |
310 | .icon-phone-off:before { content: "\e8a8"; }
311 |
312 | .icon-phone-incoming:before { content: "\e8a9"; }
313 |
314 | .icon-phone:before { content: "\e8aa"; }
315 |
316 | .icon-phone-outgoing:before { content: "\e8ab"; }
317 |
318 | .icon-pie-chart:before { content: "\e8ac"; }
319 |
320 | .icon-play-circle:before { content: "\e8ad"; }
321 |
322 | .icon-play:before { content: "\e8ae"; }
323 |
324 | .icon-plus-square:before { content: "\e8af"; }
325 |
326 | .icon-plus-circle:before { content: "\e8b0"; }
327 |
328 | .icon-plus:before { content: "\e8b1"; }
329 |
330 | .icon-pocket:before { content: "\e8b2"; }
331 |
332 | .icon-printer:before { content: "\e8b3"; }
333 |
334 | .icon-power:before { content: "\e8b4"; }
335 |
336 | .icon-radio:before { content: "\e8b5"; }
337 |
338 | .icon-repeat:before { content: "\e8b6"; }
339 |
340 | .icon-refresh-ccw:before { content: "\e8b7"; }
341 |
342 | .icon-rewind:before { content: "\e8b8"; }
343 |
344 | .icon-rotate-ccw:before { content: "\e8b9"; }
345 |
346 | .icon-refresh-cw:before { content: "\e8ba"; }
347 |
348 | .icon-rotate-cw:before { content: "\e8bb"; }
349 |
350 | .icon-save:before { content: "\e8bc"; }
351 |
352 | .icon-search:before { content: "\e8bd"; }
353 |
354 | .icon-server:before { content: "\e8be"; }
355 |
356 | .icon-scissors:before { content: "\e8bf"; }
357 |
358 | .icon-share-2:before { content: "\e8c0"; }
359 |
360 | .icon-share:before { content: "\e8c1"; }
361 |
362 | .icon-shield:before { content: "\e8c2"; }
363 |
364 | .icon-settings:before { content: "\e8c3"; }
365 |
366 | .icon-skip-back:before { content: "\e8c4"; }
367 |
368 | .icon-shuffle:before { content: "\e8c5"; }
369 |
370 | .icon-sidebar:before { content: "\e8c6"; }
371 |
372 | .icon-skip-forward:before { content: "\e8c7"; }
373 |
374 | .icon-slack:before { content: "\e8c8"; }
375 |
376 | .icon-slash:before { content: "\e8c9"; }
377 |
378 | .icon-smartphone:before { content: "\e8ca"; }
379 |
380 | .icon-square:before { content: "\e8cb"; }
381 |
382 | .icon-speaker:before { content: "\e8cc"; }
383 |
384 | .icon-star:before { content: "\e8cd"; }
385 |
386 | .icon-stop-circle:before { content: "\e8ce"; }
387 |
388 | .icon-sun:before { content: "\e8cf"; }
389 |
390 | .icon-sunrise:before { content: "\e8d0"; }
391 |
392 | .icon-tablet:before { content: "\e8d1"; }
393 |
394 | .icon-tag:before { content: "\e8d2"; }
395 |
396 | .icon-sunset:before { content: "\e8d3"; }
397 |
398 | .icon-target:before { content: "\e8d4"; }
399 |
400 | .icon-thermometer:before { content: "\e8d5"; }
401 |
402 | .icon-thumbs-up:before { content: "\e8d6"; }
403 |
404 | .icon-thumbs-down:before { content: "\e8d7"; }
405 |
406 | .icon-toggle-left:before { content: "\e8d8"; }
407 |
408 | .icon-toggle-right:before { content: "\e8d9"; }
409 |
410 | .icon-trash-2:before { content: "\e8da"; }
411 |
412 | .icon-trash:before { content: "\e8db"; }
413 |
414 | .icon-trending-up:before { content: "\e8dc"; }
415 |
416 | .icon-trending-down:before { content: "\e8dd"; }
417 |
418 | .icon-triangle:before { content: "\e8de"; }
419 |
420 | .icon-type:before { content: "\e8df"; }
421 |
422 | .icon-twitter:before { content: "\e8e0"; }
423 |
424 | .icon-upload:before { content: "\e8e1"; }
425 |
426 | .icon-umbrella:before { content: "\e8e2"; }
427 |
428 | .icon-upload-cloud:before { content: "\e8e3"; }
429 |
430 | .icon-unlock:before { content: "\e8e4"; }
431 |
432 | .icon-user-check:before { content: "\e8e5"; }
433 |
434 | .icon-user-minus:before { content: "\e8e6"; }
435 |
436 | .icon-user-plus:before { content: "\e8e7"; }
437 |
438 | .icon-user-x:before { content: "\e8e8"; }
439 |
440 | .icon-user:before { content: "\e8e9"; }
441 |
442 | .icon-users:before { content: "\e8ea"; }
443 |
444 | .icon-video-off:before { content: "\e8eb"; }
445 |
446 | .icon-video:before { content: "\e8ec"; }
447 |
448 | .icon-voicemail:before { content: "\e8ed"; }
449 |
450 | .icon-volume-x:before { content: "\e8ee"; }
451 |
452 | .icon-volume-2:before { content: "\e8ef"; }
453 |
454 | .icon-volume-1:before { content: "\e8f0"; }
455 |
456 | .icon-volume:before { content: "\e8f1"; }
457 |
458 | .icon-watch:before { content: "\e8f2"; }
459 |
460 | .icon-wifi:before { content: "\e8f3"; }
461 |
462 | .icon-x-square:before { content: "\e8f4"; }
463 |
464 | .icon-wind:before { content: "\e8f5"; }
465 |
466 | .icon-x:before { content: "\e8f6"; }
467 |
468 | .icon-x-circle:before { content: "\e8f7"; }
469 |
470 | .icon-zap:before { content: "\e8f8"; }
471 |
472 | .icon-zoom-in:before { content: "\e8f9"; }
473 |
474 | .icon-zoom-out:before { content: "\e8fa"; }
475 |
476 | .icon-command:before { content: "\e8fb"; }
477 |
478 | .icon-cloud:before { content: "\e8fc"; }
479 |
480 | .icon-hash:before { content: "\e8fd"; }
481 |
482 | .icon-headphones:before { content: "\e8fe"; }
483 |
484 | .icon-underline:before { content: "\e8ff"; }
485 |
486 | .icon-italic:before { content: "\e900"; }
487 |
488 | .icon-bold:before { content: "\e901"; }
489 |
490 | .icon-crop:before { content: "\e902"; }
491 |
492 | .icon-help-circle:before { content: "\e903"; }
493 |
494 | .icon-paperclip:before { content: "\e904"; }
495 |
496 | .icon-shopping-cart:before { content: "\e905"; }
497 |
498 | .icon-tv:before { content: "\e906"; }
499 |
500 | .icon-wifi-off:before { content: "\e907"; }
501 |
502 | .icon-minimize:before { content: "\e88d"; }
503 |
504 | .icon-maximize:before { content: "\e908"; }
505 |
506 | .icon-gitlab:before { content: "\e909"; }
507 |
508 | .icon-sliders:before { content: "\e90a"; }
509 |
510 | .icon-star-on:before { content: "\e90b"; }
511 |
512 | .icon-heart-on:before { content: "\e90c"; }
513 |
--------------------------------------------------------------------------------
/src/core/grid.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Grid System
3 | */
4 | @import '../variables/default';
5 |
6 | /* variables */
7 | $gutter-width: 8px;
8 | $outer-margin: 24px;
9 | $half-gutter-width: $gutter-width * .5;
10 |
11 | /* Extra small screen / Mobile */
12 | $screen-xs : 480px;
13 | $screen-xs-min : $screen-xs;
14 | $screen-xs-max : $screen-xs-min - 1;
15 |
16 | /* Small screen / Tablet */
17 | $screen-sm : 768px;
18 | $screen-sm-min : $screen-sm;
19 | $screen-sm-max : $screen-md - 1;
20 |
21 | /* Medium screen / Desktop */
22 | $screen-md : 992px;
23 | $screen-md-min : $screen-md;
24 | $screen-md-max : $screen-lg - 1;
25 |
26 | /* Large screen / Wide Desktop */
27 | $screen-lg : 1200px;
28 | $screen-lg-min : $screen-lg;
29 | // $screen-lg-max : $screen-lg-min - 1;
30 |
31 | $container-sm: 720px + $gutter-width;
32 | $container-md: 940px + $gutter-width;
33 | $container-lg: 1140px + $gutter-width;
34 |
35 | /**
36 | * Make Grid
37 | * Use for column 24
38 | * $baseWidth: 4.166667%;
39 | */
40 | // $baseWidth: 8.33333333%;
41 | $baseWidth: 4.166667%;
42 |
43 | .container-fluid, .container {
44 | margin-left: auto;
45 | margin-right: auto;
46 | }
47 |
48 | .container-fluid {
49 | padding-left: $outer-margin;
50 | padding-right: $outer-margin;
51 | }
52 |
53 | .no-gutter {
54 | padding-left: 0;
55 | padding-right: 0;
56 | }
57 |
58 | .row {
59 | display: flex;
60 | flex-direction: row;
61 | flex-wrap: wrap;
62 | margin-left: $half-gutter-width * -1;
63 | margin-right: $half-gutter-width * -1;
64 |
65 | &.reverse {
66 | flex-direction: row-reverse;
67 | }
68 | }
69 |
70 | .col.reverse {
71 | flex-direction: column-reverse;
72 | }
73 |
74 | /* Flex justify content */
75 | .flex {
76 | display: flex;
77 | }
78 |
79 | .flex-start {
80 | justify-content: flex-start;
81 | text-align: start;
82 | }
83 |
84 | .flex-center {
85 | justify-content: center;
86 | text-align: center;
87 | }
88 |
89 | .flex-end {
90 | justify-content: flex-end;
91 | text-align: end;
92 | }
93 |
94 | .flex-around {
95 | justify-content: space-around;
96 | }
97 |
98 | .flex-between {
99 | justify-content: space-between;
100 | }
101 |
102 | .flex-top {
103 | align-items: flex-start;
104 | }
105 |
106 | .flex-middle {
107 | align-items: center;
108 | }
109 |
110 | .flex-bottom {
111 | align-items: flex-end;
112 | }
113 |
114 | .flex-first {
115 | order: -1;
116 | }
117 |
118 | .flex-last {
119 | order: 1;
120 | }
121 |
122 | /* normal */
123 | .container {
124 | width: 100%;
125 | }
126 |
127 | .col, .col-offset-0 {
128 | flex: 0 0 auto;
129 | padding-left: $half-gutter-width;
130 | padding-right: $half-gutter-width;
131 | }
132 |
133 | @for $i from 1 through 24 {
134 | .col-#{$i}, .col-offset-#{$i} {
135 | flex: 0 0 auto;
136 | padding-left: $half-gutter-width;
137 | padding-right: $half-gutter-width;
138 |
139 | .no-gutter & {
140 | padding-left: 0;
141 | padding-right: 0;
142 | }
143 | }
144 | }
145 |
146 | .col {
147 | flex-grow: 1;
148 | flex-basis: 0;
149 | max-width: 100%;
150 | }
151 |
152 | .col-offset-0 {
153 | margin-left: 0;
154 | }
155 |
156 | @for $i from 1 through 24 {
157 | .col-#{$i} {
158 | flex-basis: $baseWidth * $i;
159 | max-width: $baseWidth * $i;
160 | }
161 | .col-offset-#{$i} {
162 | margin-left: $baseWidth * $i;
163 | }
164 | }
165 |
166 | /* screen xs */
167 | @media screen and (max-width: $screen-sm-max) {
168 | .col-xs, .col-xs-offset-0 {
169 | flex: 0 0 auto;
170 | padding-left: $half-gutter-width;
171 | padding-right: $half-gutter-width;
172 | }
173 |
174 | @for $i from 1 through 24 {
175 | .col-xs-#{$i}, .col-xs-offset-#{$i} {
176 | flex: 0 0 auto;
177 | padding-left: $half-gutter-width;
178 | padding-right: $half-gutter-width;
179 |
180 | .no-gutter & {
181 | padding-left: 0;
182 | padding-right: 0;
183 | }
184 | }
185 | }
186 |
187 | .col-xs {
188 | flex-grow: 1;
189 | flex-basis: 0;
190 | max-width: 100%;
191 | }
192 |
193 | .col-xs-offset-0 {
194 | margin-left: 0;
195 | }
196 |
197 | @for $i from 1 through 24 {
198 | .col-xs-#{$i} {
199 | flex-basis: $baseWidth * $i;
200 | max-width: $baseWidth * $i;
201 | }
202 | .col-xs-offset-#{$i} {
203 | margin-left: $baseWidth * $i;
204 | }
205 | }
206 | }
207 |
208 | /* screen sm */
209 | @media screen and (min-width: $screen-sm-min) {
210 | .container {
211 | width: $container-sm;
212 | }
213 |
214 | .col-sm, .col-sm-offset-0 {
215 | flex: 0 0 auto;
216 | padding-left: $half-gutter-width;
217 | padding-right: $half-gutter-width;
218 | }
219 |
220 | @for $i from 1 through 24 {
221 | .col-sm-#{$i}, .col-sm-offset-#{$i} {
222 | flex: 0 0 auto;
223 | padding-left: $half-gutter-width;
224 | padding-right: $half-gutter-width;
225 |
226 | .no-gutter & {
227 | padding-left: 0;
228 | padding-right: 0;
229 | }
230 | }
231 | }
232 |
233 | .col-sm {
234 | flex-grow: 1;
235 | flex-basis: 0;
236 | max-width: 100%;
237 | }
238 | .col-sm-offset-0 {
239 | margin-left: 0;
240 | }
241 |
242 | @for $i from 1 through 24 {
243 | .col-sm-#{$i} {
244 | flex-basis: $baseWidth * $i;
245 | max-width: $baseWidth * $i;
246 | }
247 | .col-sm-offset-#{$i} {
248 | margin-left: $baseWidth * $i;
249 | }
250 | }
251 | }
252 |
253 | /* screen md */
254 | @media screen and (min-width: $screen-md-min) {
255 | .container {
256 | width: $container-md;
257 | }
258 |
259 | .col-md, .col-md-offset-0 {
260 | flex: 0 0 auto;
261 | padding-left: $half-gutter-width;
262 | padding-right: $half-gutter-width;
263 | }
264 |
265 | @for $i from 1 through 24 {
266 | .col-md-#{$i}, .col-md-offset-#{$i} {
267 | flex: 0 0 auto;
268 | padding-left: $half-gutter-width;
269 | padding-right: $half-gutter-width;
270 |
271 | .no-gutter & {
272 | padding-left: 0;
273 | padding-right: 0;
274 | }
275 | }
276 | }
277 |
278 | .col-md {
279 | flex-grow: 1;
280 | flex-basis: 0;
281 | max-width: 100%;
282 | }
283 |
284 | .col-md-offset-0 {
285 | margin-left: 0;
286 | }
287 |
288 | @for $i from 1 through 24 {
289 | .col-md-#{$i} {
290 | flex-basis: $baseWidth * $i;
291 | max-width: $baseWidth * $i;
292 | }
293 | .col-md-offset-#{$i} {
294 | margin-left: $baseWidth * $i;
295 | }
296 | }
297 | }
298 |
299 | /* Screen lg */
300 | @media screen and (min-width: $screen-lg-min) {
301 | .container {
302 | width: $container-lg;
303 | }
304 |
305 | .col-lg, .col-lg-offset-0 {
306 | flex: 0 0 auto;
307 | padding-left: $half-gutter-width;
308 | padding-right: $half-gutter-width;
309 | }
310 |
311 | @for $i from 1 through 24 {
312 | .col-lg-#{$i}, .col-lg-offset-#{$i} {
313 | flex: 0 0 auto;
314 | padding-left: $half-gutter-width;
315 | padding-right: $half-gutter-width;
316 |
317 | .no-gutter & {
318 | padding-left: 0;
319 | padding-right: 0;
320 | }
321 | }
322 | }
323 |
324 | .col-lg {
325 | flex-grow: 1;
326 | flex-basis: 0;
327 | max-width: 100%;
328 | }
329 |
330 | @for $i from 1 through 24 {
331 | .col-lg-#{$i} {
332 | flex-basis: $baseWidth * $i;
333 | max-width: $baseWidth * $i;
334 | }
335 | .col-lg-offset-#{$i} {
336 | margin-left: $baseWidth * $i;
337 | }
338 | }
339 | }
340 |
--------------------------------------------------------------------------------
/src/core/index.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Core
3 | */
4 |
5 | @import './normalize';
6 | @import './base';
7 | @import './grid';
8 | @import './font';
9 |
--------------------------------------------------------------------------------
/src/core/normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v4.2.0 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /**
4 | * 1. Change the default font family in all browsers (opinionated).
5 | * 2. Correct the line height in all browsers.
6 | * 3. Prevent adjustments of font size after orientation changes in IE and iOS.
7 | */
8 |
9 | /* Document
10 | ========================================================================== */
11 |
12 | html {
13 | font-family: sans-serif; /* 1 */
14 | line-height: 1.15; /* 2 */
15 | -ms-text-size-adjust: 100%; /* 3 */
16 | -webkit-text-size-adjust: 100%; /* 3 */
17 | }
18 |
19 | /* Sections
20 | ========================================================================== */
21 |
22 | /**
23 | * Remove the margin in all browsers (opinionated).
24 | */
25 |
26 | body {
27 | margin: 0;
28 | }
29 |
30 | /**
31 | * Add the correct display in IE 9-.
32 | */
33 |
34 | article,
35 | aside,
36 | footer,
37 | header,
38 | nav,
39 | section {
40 | display: block;
41 | }
42 |
43 | /**
44 | * Correct the font size and margin on `h1` elements within `section` and
45 | * `article` contexts in Chrome, Firefox, and Safari.
46 | */
47 |
48 | h1 {
49 | font-size: 2em;
50 | margin: 0.67em 0;
51 | }
52 |
53 | /* Grouping content
54 | ========================================================================== */
55 |
56 | /**
57 | * Add the correct display in IE 9-.
58 | * 1. Add the correct display in IE.
59 | */
60 |
61 | figcaption,
62 | figure,
63 | main { /* 1 */
64 | display: block;
65 | }
66 |
67 | /**
68 | * Add the correct margin in IE 8.
69 | */
70 |
71 | figure {
72 | margin: 1em 40px;
73 | }
74 |
75 | /**
76 | * 1. Add the correct box sizing in Firefox.
77 | * 2. Show the overflow in Edge and IE.
78 | */
79 |
80 | hr {
81 | box-sizing: content-box; /* 1 */
82 | height: 0; /* 1 */
83 | overflow: visible; /* 2 */
84 | }
85 |
86 | /**
87 | * 1. Correct the inheritance and scaling of font size in all browsers.
88 | * 2. Correct the odd `em` font sizing in all browsers.
89 | */
90 |
91 | pre {
92 | font-family: monospace, monospace; /* 1 */
93 | font-size: 1em; /* 2 */
94 | }
95 |
96 | /* Text-level semantics
97 | ========================================================================== */
98 |
99 | /**
100 | * 1. Remove the gray background on active links in IE 10.
101 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
102 | */
103 |
104 | a {
105 | background-color: transparent; /* 1 */
106 | -webkit-text-decoration-skip: objects; /* 2 */
107 | }
108 |
109 | /**
110 | * Remove the outline on focused links when they are also active or hovered
111 | * in all browsers (opinionated).
112 | */
113 |
114 | a:active,
115 | a:hover {
116 | outline-width: 0;
117 | }
118 |
119 | /**
120 | * 1. Remove the bottom border in Firefox 39-.
121 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
122 | */
123 |
124 | abbr[title] {
125 | border-bottom: none; /* 1 */
126 | text-decoration: underline; /* 2 */
127 | text-decoration: underline dotted; /* 2 */
128 | }
129 |
130 | /**
131 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
132 | */
133 |
134 | b,
135 | strong {
136 | font-weight: inherit;
137 | }
138 |
139 | /**
140 | * Add the correct font weight in Chrome, Edge, and Safari.
141 | */
142 |
143 | b,
144 | strong {
145 | font-weight: bolder;
146 | }
147 |
148 | /**
149 | * 1. Correct the inheritance and scaling of font size in all browsers.
150 | * 2. Correct the odd `em` font sizing in all browsers.
151 | */
152 |
153 | code,
154 | kbd,
155 | samp {
156 | font-family: monospace, monospace; /* 1 */
157 | font-size: 1em; /* 2 */
158 | }
159 |
160 | /**
161 | * Add the correct font style in Android 4.3-.
162 | */
163 |
164 | dfn {
165 | font-style: italic;
166 | }
167 |
168 | /**
169 | * Add the correct background and color in IE 9-.
170 | */
171 |
172 | mark {
173 | background-color: #ff0;
174 | color: #000;
175 | }
176 |
177 | /**
178 | * Add the correct font size in all browsers.
179 | */
180 |
181 | small {
182 | font-size: 80%;
183 | }
184 |
185 | /**
186 | * Prevent `sub` and `sup` elements from affecting the line height in
187 | * all browsers.
188 | */
189 |
190 | sub,
191 | sup {
192 | font-size: 75%;
193 | line-height: 0;
194 | position: relative;
195 | vertical-align: baseline;
196 | }
197 |
198 | sub {
199 | bottom: -0.25em;
200 | }
201 |
202 | sup {
203 | top: -0.5em;
204 | }
205 |
206 | /* Embedded content
207 | ========================================================================== */
208 |
209 | /**
210 | * Add the correct display in IE 9-.
211 | */
212 |
213 | audio,
214 | video {
215 | display: inline-block;
216 | }
217 |
218 | /**
219 | * Add the correct display in iOS 4-7.
220 | */
221 |
222 | audio:not([controls]) {
223 | display: none;
224 | height: 0;
225 | }
226 |
227 | /**
228 | * Remove the border on images inside links in IE 10-.
229 | */
230 |
231 | img {
232 | border-style: none;
233 | }
234 |
235 | /**
236 | * Hide the overflow in IE.
237 | */
238 |
239 | svg:not(:root) {
240 | overflow: hidden;
241 | }
242 |
243 | /* Forms
244 | ========================================================================== */
245 |
246 | /**
247 | * 1. Change the font styles in all browsers (opinionated).
248 | * 2. Remove the margin in Firefox and Safari.
249 | */
250 |
251 | button,
252 | input,
253 | optgroup,
254 | select,
255 | textarea {
256 | font-family: sans-serif; /* 1 */
257 | font-size: 100%; /* 1 */
258 | line-height: 1.15; /* 1 */
259 | margin: 0; /* 2 */
260 | }
261 |
262 | /**
263 | * Show the overflow in IE.
264 | * 1. Show the overflow in Edge.
265 | */
266 |
267 | button,
268 | input { /* 1 */
269 | overflow: visible;
270 | }
271 |
272 | /**
273 | * Remove the inheritance of text transform in Edge, Firefox, and IE.
274 | * 1. Remove the inheritance of text transform in Firefox.
275 | */
276 |
277 | button,
278 | select { /* 1 */
279 | text-transform: none;
280 | }
281 |
282 | /**
283 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
284 | * controls in Android 4.
285 | * 2. Correct the inability to style clickable types in iOS and Safari.
286 | */
287 |
288 | button,
289 | html [type="button"], /* 1 */
290 | [type="reset"],
291 | [type="submit"] {
292 | -webkit-appearance: button; /* 2 */
293 | }
294 |
295 | /**
296 | * Remove the inner border and padding in Firefox.
297 | */
298 |
299 | button::-moz-focus-inner,
300 | [type="button"]::-moz-focus-inner,
301 | [type="reset"]::-moz-focus-inner,
302 | [type="submit"]::-moz-focus-inner {
303 | border-style: none;
304 | padding: 0;
305 | }
306 |
307 | /**
308 | * Restore the focus styles unset by the previous rule.
309 | */
310 |
311 | button:-moz-focusring,
312 | [type="button"]:-moz-focusring,
313 | [type="reset"]:-moz-focusring,
314 | [type="submit"]:-moz-focusring {
315 | outline: 1px dotted ButtonText;
316 | }
317 |
318 | /**
319 | * Change the border, margin, and padding in all browsers (opinionated).
320 | */
321 |
322 | fieldset {
323 | border: 1px solid #c0c0c0;
324 | margin: 0 2px;
325 | padding: 0.35em 0.625em 0.75em;
326 | }
327 |
328 | /**
329 | * 1. Correct the text wrapping in Edge and IE.
330 | * 2. Correct the color inheritance from `fieldset` elements in IE.
331 | * 3. Remove the padding so developers are not caught out when they zero out
332 | * `fieldset` elements in all browsers.
333 | */
334 |
335 | legend {
336 | box-sizing: border-box; /* 1 */
337 | color: inherit; /* 2 */
338 | display: table; /* 1 */
339 | max-width: 100%; /* 1 */
340 | padding: 0; /* 3 */
341 | white-space: normal; /* 1 */
342 | }
343 |
344 | /**
345 | * 1. Add the correct display in IE 9-.
346 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
347 | */
348 |
349 | progress {
350 | display: inline-block; /* 1 */
351 | vertical-align: baseline; /* 2 */
352 | }
353 |
354 | /**
355 | * Remove the default vertical scrollbar in IE.
356 | */
357 |
358 | textarea {
359 | overflow: auto;
360 | }
361 |
362 | /**
363 | * 1. Add the correct box sizing in IE 10-.
364 | * 2. Remove the padding in IE 10-.
365 | */
366 |
367 | [type="checkbox"],
368 | [type="radio"] {
369 | box-sizing: border-box; /* 1 */
370 | padding: 0; /* 2 */
371 | }
372 |
373 | /**
374 | * Correct the cursor style of increment and decrement buttons in Chrome.
375 | */
376 |
377 | [type="number"]::-webkit-inner-spin-button,
378 | [type="number"]::-webkit-outer-spin-button {
379 | height: auto;
380 | }
381 |
382 | /**
383 | * 1. Correct the odd appearance in Chrome and Safari.
384 | * 2. Correct the outline style in Safari.
385 | */
386 |
387 | [type="search"] {
388 | -webkit-appearance: textfield; /* 1 */
389 | outline-offset: -2px; /* 2 */
390 | }
391 |
392 | /**
393 | * Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
394 | */
395 |
396 | [type="search"]::-webkit-search-cancel-button,
397 | [type="search"]::-webkit-search-decoration {
398 | -webkit-appearance: none;
399 | }
400 |
401 | /**
402 | * 1. Correct the inability to style clickable types in iOS and Safari.
403 | * 2. Change font properties to `inherit` in Safari.
404 | */
405 |
406 | ::-webkit-file-upload-button {
407 | -webkit-appearance: button; /* 1 */
408 | font: inherit; /* 2 */
409 | }
410 |
411 | /* Interactive
412 | ========================================================================== */
413 |
414 | /*
415 | * Add the correct display in IE 9-.
416 | * 1. Add the correct display in Edge, IE, and Firefox.
417 | */
418 |
419 | details, /* 1 */
420 | menu {
421 | display: block;
422 | }
423 |
424 | /*
425 | * Add the correct display in all browsers.
426 | */
427 |
428 | summary {
429 | display: list-item;
430 | }
431 |
432 | /* Scripting
433 | ========================================================================== */
434 |
435 | /**
436 | * Add the correct display in IE 9-.
437 | */
438 |
439 | canvas {
440 | display: inline-block;
441 | }
442 |
443 | /**
444 | * Add the correct display in IE.
445 | */
446 |
447 | template {
448 | display: none;
449 | }
450 |
451 | /* Hidden
452 | ========================================================================== */
453 |
454 | /**
455 | * Add the correct display in IE 10-.
456 | */
457 |
458 | [hidden] {
459 | display: none;
460 | }
461 |
--------------------------------------------------------------------------------
/src/fonts/aticon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AT-UI/at-ui-style/1751c3eab9a8701b40f02c09351341e0e6abd993/src/fonts/aticon.eot
--------------------------------------------------------------------------------
/src/fonts/aticon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AT-UI/at-ui-style/1751c3eab9a8701b40f02c09351341e0e6abd993/src/fonts/aticon.ttf
--------------------------------------------------------------------------------
/src/fonts/aticon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AT-UI/at-ui-style/1751c3eab9a8701b40f02c09351341e0e6abd993/src/fonts/aticon.woff
--------------------------------------------------------------------------------
/src/fonts/feather.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AT-UI/at-ui-style/1751c3eab9a8701b40f02c09351341e0e6abd993/src/fonts/feather.eot
--------------------------------------------------------------------------------
/src/fonts/feather.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AT-UI/at-ui-style/1751c3eab9a8701b40f02c09351341e0e6abd993/src/fonts/feather.ttf
--------------------------------------------------------------------------------
/src/fonts/feather.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AT-UI/at-ui-style/1751c3eab9a8701b40f02c09351341e0e6abd993/src/fonts/feather.woff
--------------------------------------------------------------------------------
/src/index.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * AT-UI
3 | */
4 |
5 | /* Mixin */
6 | @import './mixins/index.scss';
7 |
8 | /* Variables */
9 | @import './variables/index.scss';
10 |
11 | /* Core */
12 | @import './core/index.scss';
13 |
14 | /* Components */
15 | @import './components/index.scss';
16 |
--------------------------------------------------------------------------------
/src/mixins/index.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Mixins
3 | */
4 |
5 | /* library */
6 | @import './lib/bem';
7 | @import './lib/clearfix';
8 | @import './lib/ellipsis';
9 | @import './lib/hide-text';
10 | @import './lib/size';
11 | @import './lib/tint';
12 | @import './lib/shade';
13 |
--------------------------------------------------------------------------------
/src/mixins/lib/bem.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * BEM Mixins
3 | * From https://github.com/alphasights/paint/blob/812fb33c54a50277071f547a3e191cf5fe4fcb3f/styles/tools/_bem.scss
4 | */
5 |
6 | $bem-element-separator: '__';
7 | $bem-modifier-separator: '--';
8 |
9 | @function _bem-selector-to-string($selector) {
10 | $selector: inspect($selector);
11 | $dot-index: str-index($selector, '.') + 1;
12 | $selector: str-slice($selector, $dot-index, -1);
13 |
14 | @return $selector;
15 | }
16 |
17 | @function _bem-selector-has-modifier($selector) {
18 | $selector: _bem-selector-to-string($selector);
19 |
20 | @if str-index($selector, $bem-modifier-separator) or str-index($selector, ':') {
21 | @return true;
22 | } @else {
23 | @return false;
24 | }
25 | }
26 |
27 | @function _bem-get-block-name($selector) {
28 | $selector: _bem-selector-to-string($selector);
29 | $modifier-separator: $bem-modifier-separator;
30 |
31 | @if str-index($selector, ':') {
32 | $modifier-separator: ':';
33 | }
34 |
35 | $modifier-start: str-index($selector, $modifier-separator) - 1;
36 |
37 | @return str-slice($selector, 0, $modifier-start);
38 | }
39 |
40 | @mixin b($block) {
41 | .#{$block} {
42 | @content;
43 | }
44 | }
45 |
46 | @mixin e($elements) {
47 | $selector: &;
48 |
49 | @if _bem-selector-has-modifier($selector) {
50 | $block: _bem-get-block-name($selector);
51 |
52 | @at-root {
53 | #{$selector} {
54 | @each $element in $elements {
55 | .#{$block + $bem-element-separator + $element} {
56 | @content;
57 | }
58 | }
59 | }
60 | }
61 | } @else {
62 | @at-root {
63 | @each $element in $elements {
64 | #{$selector + $bem-element-separator + $element} {
65 | @content;
66 | }
67 | }
68 | }
69 | }
70 | }
71 |
72 | @mixin m($modifier) {
73 | @at-root {
74 | #{&}#{$bem-modifier-separator + $modifier} {
75 | @content;
76 | }
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/src/mixins/lib/clearfix.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * @example scss
3 | *
4 | * .element {
5 | * @include clearfix;
6 | * }
7 | *
8 | * // CSS Output
9 | * .element::after {
10 | * clear: both;
11 | * content: '';
12 | * display: block;
13 | * }
14 | */
15 |
16 | @mixin clearfix {
17 | &::after {
18 | clear: both;
19 | content: '';
20 | display: block;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/mixins/lib/ellipsis.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Truncate text and add an ellipsis to represent overflow
3 | *
4 | * @param {number} $width [Default 100%]
5 | * @param {string} $display [Default inline-block] [Sets the display-value of the element]
6 | */
7 | @mixin ellipsis(
8 | $width: 100%,
9 | $display: inline-block
10 | ) {
11 | display: $display;
12 | max-width: $width;
13 | overflow: hidden;
14 | text-overflow: ellipsis;
15 | white-space: nowrap;
16 | word-wrap: normal;
17 | }
18 |
--------------------------------------------------------------------------------
/src/mixins/lib/hide-text.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Hides text to show a background image(a logo, for example)
3 | *
4 | * @example
5 | * .element {
6 | * @include hide-text;
7 | * }
8 | *
9 | * // CSS Output
10 | * .element {
11 | * overflow: hidden;
12 | * text-indent: 101%;
13 | * white-space: nowrap;
14 | * }
15 | */
16 |
17 | @mixin hide-text {
18 | overflow: hidden;
19 | text-indent: 101%;
20 | white-space: nowrap;
21 | }
22 |
--------------------------------------------------------------------------------
/src/mixins/lib/shade.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Mixes a color with black. It's different from darken()
3 | *
4 | * @param {color} $color
5 | * @param {number (percentage)} $percent [The amount of black to be mixed in]
6 | * @return {color}
7 | *
8 | * @example
9 | * .element {
10 | * background-color: shade(#ffbb52, 60%);
11 | * }
12 | *
13 | * // CSS Output
14 | * .element {
15 | * background-color: #664a20;
16 | * }
17 | */
18 |
19 | @function shade(
20 | $color,
21 | $percent
22 | ) {
23 | @return mix(#000, $color, $percent);
24 | }
25 |
--------------------------------------------------------------------------------
/src/mixins/lib/size.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Set width and height in a single statement
3 | *
4 | * @param {number (with unit) | string} $width
5 | * @param {number (with unit) | string} $height [default $width]
6 | */
7 |
8 | @mixin size(
9 | $width,
10 | $height: $width
11 | ) {
12 | width: $width;
13 | height: $height;
14 | }
15 |
--------------------------------------------------------------------------------
/src/mixins/lib/tint.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Mixes a color with white. It's different from lighten()
3 | *
4 | * @param {color} $color
5 | * @param {number (percentage)} $percent [The amout of white to be mixed in]
6 | * @return {color}
7 | *
8 | * @example
9 | * .element {
10 | * background-color: tint(#6ecaa6 , 40%);
11 | * }
12 | *
13 | * // CSS Output
14 | * .element {
15 | * background-color: #a8dfc9;
16 | * }
17 | */
18 |
19 | @function tint(
20 | $color,
21 | $percent
22 | ) {
23 | @return mix(#FFF, $color, $percent);
24 | }
25 |
--------------------------------------------------------------------------------
/src/variables/default.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Default Variables
3 | */
4 | @import '../mixins/index.scss';
5 |
6 | /* Prefix */
7 | $css-prefix: at;
8 |
9 | /* The Color of O2Team Brand */
10 | $brand-color : #6190E8;
11 | $brand-color-light : #78A4F4;
12 | $brand-color-dark : #346FC2;
13 |
14 | /* Color */
15 | $color-normal : #6190E8;
16 | $color-primary : #6190E8;
17 | $color-success : #13CE66;
18 | $color-error : #FF4949;
19 | $color-warning : #FFC82C;
20 | $color-info : #78A4FA;
21 | $color-white : #FFF;
22 |
23 | /* Color PalettC */
24 | $brand-blue-50 : #ECF2FC;
25 | $brand-blue-100 : #D0DEF8;
26 | $brand-blue-200 : #B0C8F4;
27 | $brand-blue-300 : #90B1EF;
28 | $brand-blue-400 : #79A1EB;
29 | $brand-blue-500 : #6190E8;
30 | $brand-blue-600 : #5988E5;
31 | $brand-blue-700 : #4F7DE2;
32 | $brand-blue-800 : #4573DE;
33 | $brand-blue-900 : #3361D8;
34 |
35 | $green-50 : #E3F9ED;
36 | $green-100 : #B8F0D1;
37 | $green-200 : #89E7B3;
38 | $green-300 : #5ADD94;
39 | $green-400 : #36D57D;
40 | $green-500 : #13CE66;
41 | $green-600 : #11C95E;
42 | $green-700 : #0EC253;
43 | $green-800 : #0BBC49;
44 | $green-900 : #06B038;
45 |
46 | $red-50 : #FFE9E9;
47 | $red-100 : #FFC8C8;
48 | $red-200 : #FFA4A4;
49 | $red-300 : #FF8080;
50 | $red-400 : #FF6464;
51 | $red-500 : #FF4949;
52 | $red-600 : #FF4242;
53 | $red-700 : #FF3939;
54 | $red-800 : #FF3131;
55 | $red-900 : #FF2121;
56 |
57 | $yellow-50 : #FFF8E6;
58 | $yellow-100 : #FFEFC0;
59 | $yellow-200 : #FFE496;
60 | $yellow-300 : #FFD96B;
61 | $yellow-400 : #FFD04C;
62 | $yellow-500 : #FFC82C;
63 | $yellow-600 : #FFC227;
64 | $yellow-700 : #FFBB21;
65 | $yellow-800 : #FFB41B;
66 | $yellow-900 : #FFA710;
67 |
68 | $blue-50 : #EFF4FE;
69 | $blue-100 : #D7E4FE;
70 | $blue-200 : #BCD2FD;
71 | $blue-300 : #A1BFFC;
72 | $blue-400 : #8CB2FB;
73 | $blue-500 : #78A4FA;
74 | $blue-600 : #709CF9;
75 | $blue-700 : #6592F9;
76 | $blue-800 : #5B89F8;
77 | $blue-900 : #4878F6;
78 |
79 | $grey-50 : #F7F7F7;
80 | $grey-100 : #ECECEC;
81 | $grey-200 : #DFDFDF;
82 | $grey-300 : #D2D2D2;
83 | $grey-400 : #C9C9C9;
84 | $grey-500 : #BFBFBF;
85 | $grey-600 : #B9B9B9;
86 | $grey-700 : #B1B1B1;
87 | $grey-800 : #A9A9A9;
88 | $grey-900 : #9B9B9B;
89 |
90 | $black-50 : #E6E8EB;
91 | $black-100 : #C0C6CE;
92 | $black-200 : #96A0AD;
93 | $black-300 : #6B798C;
94 | $black-400 : #4C5D73;
95 | $black-500 : #2C405A;
96 | $black-600 : #273A52;
97 | $black-700 : #213248;
98 | $black-800 : #1B2A3F;
99 | $black-900 : #101C2E;
100 |
101 | $text-color : #3F536E;
102 | $title-color : #2C405A;
103 |
104 | $border-color-gray : #CCC;
105 | $border-color-base : #C5D9E8;
106 | $border-color-split : tint($border-color-base, 20%);
107 | $border-color-light : tint($border-color-base, 30%);
108 | $border-color-lighter : tint($border-color-base, 50%);
109 | $border-color-lightest : tint($border-color-base, 80%);
110 |
111 | $bg-color : $color-white;
112 | $bg-color-base : #FAFBFC;
113 | $bg-color-light : #ECF5FD;
114 | $bg-color-lighter : tint($bg-color-light, 50%);
115 | $bg-color-gray : #f7f7f7;
116 |
117 | /* Assistant Color */
118 | $roof-color : #C2ABC7;
119 | $curtain-color : #F0D0D5;
120 | $door-color : #F1E4ED;
121 | $wall-color : #EEF0F0;
122 |
123 | /* Border */
124 | $border-radius-base : 4px;
125 | $border-radius-sm : 4px;
126 |
127 | /* Font */
128 | $font-family : -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
129 | $code-family : Consolas, Menlo, Courier, monospace;
130 |
131 | $font-size-smest : 11px;
132 | $font-size-smer : 12px;
133 | $font-size-sm : 13px;
134 | $font-size-base : 14px;
135 | $font-size-normal : 16px;
136 | $font-size-lg : 18px;
137 | $font-size-lger : 20px;
138 |
139 | $line-height-base : 1.5;
140 | $line-height-computed : floor($font-size-base * $line-height-base);
141 |
142 | /* Link */
143 | $link-color : $brand-blue-500;
144 | $link-hover-color : $brand-blue-400;
145 | $link-active-color : $brand-blue-700;
146 | $link-disabled-color : $grey-500;
147 | $link-hover-decoration : none;
148 |
149 | /* Disabled cursor */
150 | $cursor-disabled : not-allowed;
151 |
152 | /* Shadow */
153 | $shadow-color : rgba(100, 100, 100, .2);
154 | $shadow-1px-up : 0 -1px 6px $shadow-color;
155 | $shadow-1px-down : 0 1px 6px $shadow-color;
156 | $shadow-1px-left : -1px 0 6px $shadow-color;
157 | $shadow-1px-right : 1px 0 6px $shadow-color;
158 |
159 | /* Button */
160 | $btn-default-color : $text-color;
161 | $btn-default-bg : $color-white;
162 | $btn-default-bg-hover : $border-color-lightest;
163 | $btn-default-bg-active : $border-color-lighter;
164 | $btn-default-border : $border-color-base;
165 |
166 | $btn-primary-bg : $brand-blue-500;
167 | $btn-primary-border : $brand-blue-500;
168 |
169 | $btn-success-bg : $green-500;
170 | $btn-success-border : $green-500;
171 |
172 | $btn-error-bg : $red-500;
173 | $btn-error-border : $red-500;
174 |
175 | $btn-warning-bg : $yellow-500;
176 | $btn-warning-border : $yellow-500;
177 |
178 | $btn-info-bg : $blue-500;
179 | $btn-info-border : $blue-500;
180 |
181 | $btn-text-border : $brand-blue-500;
182 |
183 | $btn-disabled-color : $grey-300;
184 | $btn-disabled-bg : $grey-50;
185 | $btn-disabled-border : $grey-100;
186 |
187 | $btn-font-weight : 500;
188 |
189 | $btn-font-size-smer : 10px;
190 | $btn-font-size-sm : 11px;
191 | $btn-font-size-base : 12px;
192 | $btn-font-size-md : 14px;
193 | $btn-font-size-lg : 16px;
194 |
195 | $btn-padding-smer : 2px 10px;
196 | $btn-padding-sm : 4px 12px;
197 | $btn-padding-base : 6px 16px;
198 | $btn-padding-md : 8px 16px;
199 | $btn-padding-lg : 10px 18px;
200 |
201 | $btn-circle-size-smer : 24px;
202 | $btn-circle-size-sm : 28px;
203 | $btn-circle-size : 32px;
204 | $btn-circle-size-lg : 40px;
205 |
206 | /* Tag */
207 | $tag-bg-color : $grey-50;
208 | $tag-border-color : $grey-200;
209 |
210 | /* Checkbox */
211 | $checkbox-size : 16px;
212 | $checkbox-font-size : $font-size-smer;
213 |
214 | $checkbox-border-c : $border-color-base;
215 | $checkbox-border-c-hover : $brand-blue-400;
216 | $checkbox-border-c-checked : $brand-blue-400;
217 | $checkbox-border-c-disabled : $grey-100;
218 | $checkbox-bg-c-disabled : $grey-50;
219 | $checkbox-label-c-disabled : $grey-700;
220 |
221 | /* Input */
222 | $input-font-size-sm : 11px;
223 | $input-font-size-base : 12px;
224 | $input-font-size-lg : 14px;
225 |
226 | $input-padding-sm : 4px 10px;
227 | $input-padding-base : 6px 12px;
228 | $input-padding-lg : 8px 14px;
229 |
230 | $input-font-color : $text-color;
231 | $input-font-color-disabled : $grey-700;
232 |
233 | $input-border-color : $border-color-base;
234 | $input-border-color-hover : $brand-blue-400;
235 | $input-border-color-focus : $brand-blue-400;
236 | $input-border-color-disabled : $grey-100;
237 | $input-border-color-success : $color-success;
238 | $input-border-color-error : $color-error;
239 | $input-border-color-warning : $color-warning;
240 | $input-border-color-info : $color-info;
241 |
242 | $input-bg-color : $color-white;
243 | $input-bg-color-disabled : $grey-50;
244 |
245 | $input-icon-color : $border-color-base;
246 | $input-icon-font-size : 15px;
247 |
248 | $input-placeholder-color : $grey-400;
249 | $input-placeholder-color-disabled : $grey-400;
250 |
251 | $input-group-font-color : $grey-900;
252 | $input-group-bg-color : $grey-50;
253 | $input-group-bg-color-hover : $grey-100;
254 | $input-group-bg-color-active : $grey-200;
255 |
256 | /* InputNumber */
257 | $inputnumber-min-width : 80px;
258 | $inputnumber-height-sm : 28px;
259 | $inputnumber-height-base : 32px;
260 | $inputnumber-height-lg : 36px;
261 |
262 | $inputnumber-font-color : $input-font-color;
263 |
264 | $inputnumber-bg-color : $input-bg-color;
265 | $inputnumber-bg-color-disabled : $input-bg-color-disabled;
266 |
267 | $inputnumber-border-radius : $border-radius-base;
268 | $inputnumber-border-color : $input-border-color;
269 | $inputnumber-border-color-hover : $input-border-color-hover;
270 | $inputnumber-border-color-disabled : $input-border-color-disabled;
271 |
272 | $inputnumber-padding-sm : 0 8px;
273 | $inputnumber-padding-base : 0 8px;
274 | $inputnumber-padding-lg : 0 8px;
275 |
276 | $inputnumber-handler-width : 22px;
277 | $inputnumber-handler-border-color : $grey-200;
278 | $inputnumber-handler-bg-color-active : $grey-100;
279 |
280 | $inputnumber-handler-font-color : $grey-500;
281 | $inputnumber-handler-font-color-hover : $grey-900;
282 |
283 | $inputnumber-handler-font-size-sm : 9px;
284 | $inputnumber-handler-font-size-base : 10px;
285 | $inputnumber-handler-font-size-lg : 11px;
286 |
287 | $inputnumber-handler-ele-height-sm : 14px;
288 | $inputnumber-handler-ele-height-base : 16px;
289 | $inputnumber-handler-ele-height-lg : 18px;
290 |
291 | $inputnumber-handler-ele-height-sm-hover : 16px;
292 | $inputnumber-handler-ele-height-base-hover : 18px;
293 | $inputnumber-handler-ele-height-lg-hover : 20px;
294 |
295 | $inputnumber-handler-ele-font-color-disabled : $grey-100;
296 |
297 | /* Switch */
298 | $switch-min-width-sm : 32px;
299 | $switch-min-width-base : 40px;
300 | $switch-min-width-lg : 48px;
301 |
302 | $switch-height-sm : 16px;
303 | $switch-height-base : 20px;
304 | $switch-height-lg : 24px;
305 |
306 | $switch-border-radius-sm : 16px;
307 | $switch-border-radius-base : 20px;
308 | $switch-border-radius-lg : 24px;
309 |
310 | $switch-border-color : $grey-500;
311 | $switch-border-color-checked : $brand-blue-400;
312 | $switch-border-color-disabled : $grey-100;
313 |
314 | $switch-bg-color : $grey-500;
315 | $switch-bg-color-checked : $brand-blue-400;
316 | $switch-bg-color-disabled : $grey-100;
317 |
318 | $switch-font-color : $color-white;
319 | $switch-font-color-disabled : $grey-300;
320 |
321 | $switch-font-size-sm : $font-size-smest;
322 | $switch-font-size-base : $font-size-smer;
323 | $switch-font-size-lg : $font-size-sm;
324 |
325 | $switch-circle-size-sm : 12px;
326 | $switch-circle-size-base : 16px;
327 | $switch-circle-size-lg : 20px;
328 |
329 | $switch-circle-bg-color : $color-white;
330 | $switch-circle-bg-color-disabled : $grey-400;
331 |
332 | /* Slider */
333 | $slider-bar-height : 4px;
334 | $slider-margin : 8px 0;
335 |
336 | $slider-bar-bg-color : $brand-blue-400;
337 | $slider-bar-bg-color-disabled : $grey-400;
338 | $slider-track-bg-color : $grey-100;
339 | $slider-bar-border-radius : 2px;
340 |
341 | $slider-dot-color : $brand-blue-400;
342 | $slider-dot-color-hover : $brand-blue-600;
343 | $slider-dot-color-disabled : $grey-300;
344 | $slider-dot-size : 12px;
345 | $slider-dot-wrapper-size : $slider-dot-size;
346 | $slider-dot-wrapper-offset : -6px;
347 |
348 | /* Textarea */
349 | $textarea-padding : 6px 8px;
350 |
351 | /* Alert */
352 | $alert-padding : 8px 16px;
353 | $alert-padding-lg : 14px 16px;
354 | $alert-border-radius : $border-radius-base;
355 |
356 | $alert-text-color-success : #53664A;
357 | $alert-text-color-error : #AD3430;
358 | $alert-text-color-warning : #7F6128;
359 | $alert-text-color-info : #3B688C;
360 |
361 | $alert-message-font-size : $font-size-sm;
362 | $alert-description-font-size : $font-size-smer;
363 | $alert-close-font-size : $font-size-smer;
364 |
365 | $alert-icon-font-size : 15px;
366 | $alert-icon-font-size-lg : 28px;
367 |
368 | $alert-icon-color-success : #7D9970;
369 | $alert-icon-color-error : #FA4C46;
370 | $alert-icon-color-warning : #CC9B3F;
371 | $alert-icon-color-info : #66B3F3;
372 |
373 | $alert-bg-color-success : $green-50;
374 | $alert-bg-color-error : $red-50;
375 | $alert-bg-color-warning : $yellow-50;
376 | $alert-bg-color-info : $blue-50;
377 |
378 | $alert-border-color-success : $green-100;
379 | $alert-border-color-error : $red-100;
380 | $alert-border-color-warning : $yellow-100;
381 | $alert-border-color-info : $blue-100;
382 |
383 | /* Badge */
384 | $badge-height : 18px;
385 | $badge-padding : 0 6px;
386 | $badge-border-radius : $badge-height / 2;
387 | $badge-font-size : $font-size-smer;
388 | $badge-font-color : $color-white;
389 |
390 | $badge-bg-color : $red-500;
391 | $badge-bg-color-success : $green-500;
392 | $badge-bg-color-warning : $yellow-500;
393 | $badge-bg-color-info : $blue-500;
394 |
395 | $badge-dot-size : 10px;
396 |
397 | /* Card */
398 | $card-bg-color : $color-white;
399 | $card-border-color : $grey-100;
400 | $card-border-color-hover : $grey-50;
401 | $card-border-radius : $border-radius-base;
402 | $card-head-height : 48px;
403 |
404 | /* Collapse */
405 | $collapse-border-color : $grey-200;
406 | $collapse-border-radius : $border-radius-base;
407 |
408 | $collapse-header-bg-color : $grey-50;
409 | $collapse-header-text-color : $title-color;
410 | $collapse-header-text-color-disabled : $grey-400;
411 |
412 | $collapse-icon-size : $font-size-smer;
413 | $collapse-icon-color : tint($title-color, 50%);
414 |
415 | $collapse-body-text-color : $text-color;
416 | $collapse-body-bg-color : $color-white;
417 |
418 | /* Loading Bar */
419 | $loading-bar-bg-color-success : $color-primary;
420 | $loading-bar-bg-color-error : $color-error;
421 |
422 | /* Modal */
423 | $modal-initial-top : 100px;
424 | $modal-bg-color : $color-white;
425 | $modal-mask-bg-color : rgba(0, 0, 0, .5);
426 | $modal-section-border-color : $grey-100;
427 |
428 | $modal-header-padding : 12px 16px;
429 | $modal-header-font-size : $font-size-base;
430 | $modal-close-font-size : $font-size-sm;
431 | $modal-icon-font-size : 32px;
432 |
433 | $modal-body-padding : 16px;
434 | $modal-body-font-size : $font-size-sm;
435 |
436 | $modal-footer-padding : 12px 16px;
437 |
438 | $modal-icon-color-success : $green-300;
439 | $modal-icon-color-error : $red-300;
440 | $modal-icon-color-warning : $yellow-300;
441 | $modal-icon-color-info : $blue-300;
442 |
443 | /* Message */
444 | $message-padding : 6px 16px;
445 | $message-font-size : $font-size-sm;
446 | $message-bg-color : $color-white;
447 | $message-box-shadow : 0 1px 8px rgba(0, 0, 0, .15);
448 |
449 | $message-icon-color-success : $green-300;
450 | $message-icon-color-error : $red-300;
451 | $message-icon-color-warning : $yellow-300;
452 | $message-icon-color-info : $blue-300;
453 | $message-icon-color-loading : $blue-300;
454 |
455 | /* Radio */
456 | $radio-size : 16px;
457 | $radio-dot-size : 8px;
458 | $radio-font-size : $font-size-smer;
459 |
460 | $radio-border-c-hover : $brand-blue-400;
461 | $radio-border-c-checked : $brand-blue-400;
462 | $radio-border-c-disabled : $grey-100;
463 | $radio-bg-c-disabled : $grey-50;
464 | $radio-dot-c-disabled : $grey-300;
465 |
466 | /* Rate */
467 | $rate-icon-font-size : 20px;
468 | $rate-icon-color : $grey-100;
469 | $rate-icon-color-on : $yellow-500;
470 | $rate-text-font-size : $font-size-smer;
471 |
472 | /* Select */
473 | $select-font-size-sm : $font-size-smest;
474 | $select-font-size-base : $font-size-smer;
475 | $select-font-size-lg : $font-size-base;
476 |
477 | $select-bg-color : $color-white;
478 | $select-font-color : $text-color;
479 |
480 | $select-border-c-hover : $brand-blue-400;
481 | $select-border-c-checked : $brand-blue-400;
482 | $select-border-c-disabled : $grey-100;
483 | $select-bg-c-disabled : $grey-50;
484 |
485 | $select-selection-bg-color : $color-white;
486 | $select-selection-bg-color-disabled : tint($border-color-base, 70%);
487 |
488 | $select-padding-sm : 0 24px 0 8px;
489 | $select-padding-base : 0 24px 0 8px;
490 | $select-padding-lg : 0 24px 0 8px;
491 |
492 | $select-selection-height-sm : 24px;
493 | $select-selection-height-base : 26px;
494 | $select-selection-height-lg : 30px;
495 |
496 | /* Select Dropdown */
497 | $select-dropdown-font-size-sm : $font-size-smest;
498 | $select-dropdown-font-size-base : $font-size-smer;
499 | $select-dropdown-font-size-lg : $font-size-sm;
500 |
501 | $select-dropdown-bg-color : $color-white;
502 | $select-dropdown-height : 200px;
503 |
504 | $dropdown-option-padding-base : 6px 12px;
505 | $dropdown-option-bg-c-hover : $brand-blue-50;
506 | $dropdown-option-bg-c-selected : $grey-50;
507 |
508 | $option-group-font-c : $grey-500;
509 |
510 | /* Notification */
511 | $notification-width : 320px;
512 | $notification-padding : 8px 16px;
513 | $notification-padding-lg : 12px 16px;
514 | $notification-shadow : 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
515 | $notification-text-color : $text-color;
516 | $notification-bg-color : $color-white;
517 |
518 | $notification-font-size-lg : 28px;
519 | $notification-title-font-size : $font-size-sm;
520 | $notification-message-font-size : $font-size-smer;
521 |
522 | $notification-icon-color : $text-color;
523 | $notification-icon-font-size : $font-size-sm;
524 | $notification-icon-font-size-lg : 24px;
525 | $notification-close-color : $grey-300;
526 | $notification-close-color-focus : $grey-700;
527 | $notification-close-font-size : $font-size-smer;
528 | $notification-close-font-size-lg : $font-size-base;
529 |
530 | $notification-icon-color-success : $green-300;
531 | $notification-icon-color-error : $red-300;
532 | $notification-icon-color-warning : $yellow-300;
533 | $notification-icon-color-info : $blue-300;
534 |
535 | /* Popover */
536 | $popover-title-font-size : $font-size-smer;
537 | $popover-content-font-size : $font-size-smest;
538 | $popover-popper-max-width : 400px;
539 |
540 | $popover-bg-color : $color-white;
541 | $popover-title-bg-color : $grey-50;
542 | $popover-border-color : $grey-100;
543 | $popover-title-border-color : $brand-blue-50;
544 |
545 | $popover-arrow-size : 10px;
546 | $popover-arrow-bg-color : $popover-bg-color;
547 |
548 | $popover-padding : 4px 8px;
549 | $popover-title-padding : 6px 10px;
550 | $popover-content-padding : 8px 12px;
551 |
552 | /* Progress */
553 | $progress-height : 10px;
554 | $progress-border-radius : 50px;
555 | $progress-font-color : $text-color;
556 | $progress-font-size : $font-size-smer;
557 |
558 | $progress-track-bg-color : $grey-200;
559 | $progress-bar-bg-color : $brand-color-light;
560 | $progress-bar-bg-color-success : $color-success;
561 | $progress-bar-bg-color-error : $color-error;
562 |
563 | /* Timeline */
564 | $timeline-dot-color : $blue-500;
565 | $timeline-dot-color-success : $green-500;
566 | $timeline-dot-color-error : $red-500;
567 | $timeline-dot-color-warning : $yellow-500;
568 |
569 | $timeline-dot-bg-color : $color-white;
570 |
571 | $timeline-dot-size : 12px;
572 | $timeline-custom-dot-size : 20px;
573 | $timeline-custom-dot-font-size : $font-size-normal;
574 |
575 | $timeline-line-color : $grey-100;
576 | $timeline-item-last-min-height : 48px;
577 | $timeline-text-font-size : $font-size-smer;
578 |
579 | /* Tooltip */
580 | $tooltip-padding : 4px 8px;
581 | $tooltip-arrow-size : 4px;
582 | $tooltip-max-width : 200px;
583 | $tooltip-font-color : $color-white;
584 | $tooltip-font-size : $font-size-smer;
585 | $tooltip-bg-color : rgba(0, 0, 0, .75);
586 | $tooltip-border-color : rgba(0, 0, 0, .75);
587 |
588 | /* Table */
589 | $table-font-size-small : $font-size-smest;
590 | $table-font-size : $font-size-smer;
591 | $table-font-size-large : $font-size-sm;
592 |
593 | $table-text-color : $text-color;
594 | $table-border-color : $grey-100;
595 | $table-thead-bg-color : $grey-50;
596 | $table-tr-bg-color-hover : $bg-color-lighter;
597 | $table-tr-bg-color-stripe : tint($grey-50, 50%);
598 | $table-footer-height : 28px;
599 |
600 | $table-cell-height-small : 32px;
601 | $table-cell-height : 40px;
602 | $table-cell-height-large : 56px;
603 | $table-cell-padding : 0 16px;
604 |
605 | $table-sorter-width : 9px;
606 | $table-sorter-width-small : 7px;
607 | $table-sorter-height : 18px;
608 | $table-sorter-height-small : 14px;
609 | $table-sorter-icon-size : 9px;
610 | $table-sorter-icon-size-small : 7px;
611 |
612 | /* Breadcrumb */
613 | $breadcrumb-font-size : $font-size-base;
614 | $breadcrumb-separator-color : $grey-300;
615 |
616 | /* Dropdown */
617 | $dropdown-max-height : 200px;
618 | $dropdown-bg-color : $color-white;
619 | $dropdown-box-shadow : 0 1px 6px rgba(0, 0, 0, 0.2);
620 | $dropdown-font-size : $font-size-smer;
621 |
622 | $dropdown-item-padding : 8px 16px;
623 | $dropdown-item-min-width : 100px;
624 | $dropdown-item-bg-color-hover : $brand-blue-50;
625 | $dropdown-item-bg-color-disabled : $grey-300;
626 |
627 | $dropdown-divided-color : $brand-blue-50;
628 |
629 | /* Menu */
630 | $menu-text-color : $text-color;
631 | $menu-text-color-disabled : $grey-400;
632 | $menu-text-color-dark : $grey-200;
633 | $menu-text-color-dark-hover : $color-white;
634 | $menu-bg-color-light : $color-white;
635 | $menu-bg-color-dark : $black-500;
636 | $menu-bg-color-dark-hover : $black-600;
637 | $menu-font-size : $font-size-base;
638 | $menu-icon-size : $font-size-base;
639 |
640 | $menu-item-text-color-active : $brand-blue-500;
641 | $menu-item-bg-color-active : $brand-blue-50;
642 | $menu-item-bg-color-active-inline : rgba(236, 242, 252, 0.2);
643 |
644 | $menu-submenu-padding : 12px 16px;
645 | $menu-item-padding : 12px 16px;
646 | $menu-item-padding-inline : 12px 16px;
647 | $menu-item-padding-base : 0 16px;
648 |
649 | $menu-group-title-padding : 12px;
650 | $menu-group-title-text-color : $grey-500;
651 | $menu-group-title-font-size : $font-size-smer;
652 | $menu-group-item-padding : 12px 16px;
653 |
654 | $menu-dropdown-item-padding : 12px 16px;
655 | $menu-dropdown-item-font-size : $font-size-smer;
656 |
657 | $menu-height-horizontal : 48px;
658 | $menu-border-color : $border-color-lighter;
659 | $menu-prefix-bg-color : $brand-blue-500;
660 | $menu-prefix-bg-color-dark : $brand-blue-500;
661 | $menu-icon-color-inline : $border-color-base;
662 |
663 | /* Pagination */
664 | $pagination-item-size-sm : 20px;
665 | $pagination-item-size : 28px;
666 | $pagination-input-width : 40px;
667 | $pagination-item-font-size-sm : $font-size-smest;
668 | $pagination-item-font-size : $font-size-smer;
669 | $pagination-btn-font-size : $font-size-smer;
670 |
671 | $pagination-item-text-color : $text-color;
672 | $pagination-item-text-color-hover : $brand-blue-400;
673 | $pagination-item-text-color-active : $color-white;
674 | $pagination-btn-jump-text-color : $grey-100;
675 |
676 | $pagination-item-bg-color : $color-white;
677 | $pagination-item-bg-color-active : $brand-blue-400;
678 |
679 | $pagination-item-border-color : $border-color-base;
680 | $pagination-item-border-color-hover : $brand-blue-400;
681 | $pagination-item-border-color-active : $brand-blue-400;
682 |
683 | /* Tabs */
684 | $tabs-border-color : $grey-100;
685 | $tabs-nav-height : 36px;
686 | $tabs-nav-height-sm : 32px;
687 | $tabs-nav-font-size : $font-size-base;
688 | $tabs-nav-font-size-sm : $font-size-smer;
689 | $tabs-navigation-btn-width : 32px;
690 | $tabs-navigation-color : $text-color;
691 | $tabs-navigation-color-hover : $brand-blue-500;
692 | $tabs-navigation-color-disabled : $grey-400;
693 |
694 | $tabs-nav-item-padding : 0 20px;
695 | $tabs-nav-item-padding-sm : 0 16px;
696 | $tabs-nav-item-bg-color : $color-white;
697 | $tabs-nav-item-bg-color-card : $grey-50;
698 | $tabs-nav-item-icon-color : tint($text-color, 30%);
699 | $tabs-nav-item-icon-color-hover : $text-color;
700 |
701 | /* Steps */
702 | $step-font-size : $font-size-base;
703 | $step-font-size-sm : $font-size-smer;
704 | $step-description-font-size : $font-size-smer;
705 | $step-description-font-size-sm : $font-size-smest;
706 |
707 | $step-color : $grey-600;
708 | $step-color-active : $color-white;
709 | $step-color-process : $text-color;
710 | $step-color-error : $red-500;
711 | $step-text-color : $black-200;
712 |
713 | $step-bg-color : $color-white;
714 | $step-bg-color-active : $brand-blue-500;
715 | $step-bg-color-error : $red-500;
716 |
717 | $step-border-color : $grey-600;
718 | $step-border-color-active : $brand-blue-500;
719 | $step-border-color-error : $red-500;
720 |
721 | $step-icon-color : $grey-600;
722 | $step-icon-color-active : $brand-blue-500;
723 | $step-icon-color-error : $red-500;
724 |
725 | $step-label-size : 30px;
726 | $step-label-size-sm : 18px;
727 |
728 | $step-line-color : $grey-600;
729 | $step-line-color-active : $brand-blue-500;
730 |
731 | $step-main-height-vertical : 64px;
732 | $step-main-height-vertical-sm : 48px;
733 |
734 | /**
735 | * Media queries
736 | */
737 | /* Extra small screen / Mobile */
738 | $screen-xs : 480px;
739 | $screen-xs-min : $screen-xs;
740 | $screen-xs-max : $screen-xs-min - 1;
741 |
742 | /* Small screen / Tablet */
743 | $screen-sm : 768px;
744 | $screen-sm-min : $screen-sm;
745 | $screen-sm-max : $screen-sm-min - 1;
746 |
747 | /* Medium screen / Desktop */
748 | $screen-md : 992px;
749 | $screen-md-min : $screen-md;
750 | $screen-md-max : $screen-md-min - 1;
751 |
752 | /* Large screen / Wide Desktop */
753 | $screen-lg : 1200px;
754 | $screen-lg-min : $screen-lg;
755 | $screen-lg-max : $screen-lg-min - 1;
756 |
757 | /**
758 | * Grid system
759 | */
760 | $grid-columns : 24;
761 | $grid-gutter-width : 0;
762 |
763 | /* Container sizes */
764 | $container-sm : 720px + $grid-gutter-width;
765 | $container-md : 940px + $grid-gutter-width;
766 | $container-lg : 1140px + $grid-gutter-width;
767 |
768 | /* z-index list */
769 | $zindex-menu : 900;
770 | $zindex-modal : 1000;
771 | $zindex-notification : 1010;
772 | $zindex-message : 1010;
773 | $zindex-popover : 1020;
774 | $zindex-dropdown : 1050;
775 | $zindex-tooltip : 1050;
776 | $zindex-loading-bar : 1080;
777 |
--------------------------------------------------------------------------------
/src/variables/index.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * Variables
3 | */
4 |
5 | @import './default.scss';
6 | @import './timing-function.scss';
7 |
--------------------------------------------------------------------------------
/src/variables/timing-function.scss:
--------------------------------------------------------------------------------
1 | /**
2 | * CSS cubic-bezier timing functions
3 | * http://bourbon.io/docs/#timing-functions
4 | */
5 | $ease-in-quad: cubic-bezier(0.550, 0.085, 0.680, 0.530);
6 | $ease-in-cubic: cubic-bezier(0.550, 0.055, 0.675, 0.190);
7 | $ease-in-quart: cubic-bezier(0.895, 0.030, 0.685, 0.220);
8 | $ease-in-quint: cubic-bezier(0.755, 0.050, 0.855, 0.060);
9 | $ease-in-sine: cubic-bezier(0.470, 0.000, 0.745, 0.715);
10 | $ease-in-expo: cubic-bezier(0.950, 0.050, 0.795, 0.035);
11 | $ease-in-circ: cubic-bezier(0.600, 0.040, 0.980, 0.335);
12 | $ease-in-back: cubic-bezier(0.600, -0.280, 0.735, 0.045);
13 |
14 | $ease-out-quad: cubic-bezier(0.250, 0.460, 0.450, 0.940);
15 | $ease-out-cubic: cubic-bezier(0.215, 0.610, 0.355, 1.000);
16 | $ease-out-quart: cubic-bezier(0.165, 0.840, 0.440, 1.000);
17 | $ease-out-quint: cubic-bezier(0.230, 1.000, 0.320, 1.000);
18 | $ease-out-sine: cubic-bezier(0.390, 0.575, 0.565, 1.000);
19 | $ease-out-expo: cubic-bezier(0.190, 1.000, 0.220, 1.000);
20 | $ease-out-circ: cubic-bezier(0.075, 0.820, 0.165, 1.000);
21 | $ease-out-back: cubic-bezier(0.175, 0.885, 0.320, 1.275);
22 |
23 | $ease-in-out-quad: cubic-bezier(0.455, 0.030, 0.515, 0.955);
24 | $ease-in-out-cubic: cubic-bezier(0.645, 0.045, 0.355, 1.000);
25 | $ease-in-out-quart: cubic-bezier(0.770, 0.000, 0.175, 1.000);
26 | $ease-in-out-quint: cubic-bezier(0.860, 0.000, 0.070, 1.000);
27 | $ease-in-out-sine: cubic-bezier(0.445, 0.050, 0.550, 0.950);
28 | $ease-in-out-expo: cubic-bezier(1.000, 0.000, 0.000, 1.000);
29 | $ease-in-out-circ: cubic-bezier(0.785, 0.135, 0.150, 0.860);
30 | $ease-in-out-back: cubic-bezier(0.680, -0.550, 0.265, 1.550);
31 |
--------------------------------------------------------------------------------