groovinads-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/.babelrc +3 -0
  2. package/.storybook/main.js +19 -0
  3. package/.storybook/preview.js +13 -0
  4. package/.yarn/install-state.gz +0 -0
  5. package/.yarn/releases/yarn-4.1.1.cjs +893 -0
  6. package/.yarnrc.yml +3 -0
  7. package/package.json +40 -0
  8. package/src/components/Button/Button.jsx +104 -0
  9. package/src/components/Button/index.jsx +3 -0
  10. package/src/index.jsx +3 -0
  11. package/src/scss/abstracts/_borders-radius.scss +6 -0
  12. package/src/scss/abstracts/_colors.scss +33 -0
  13. package/src/scss/abstracts/_fonts.scss +8 -0
  14. package/src/scss/abstracts/_helpers.scss +7 -0
  15. package/src/scss/abstracts/_media-queries.scss +6 -0
  16. package/src/scss/abstracts/_mixins.scss +143 -0
  17. package/src/scss/abstracts/_spinner-duration.scss +1 -0
  18. package/src/scss/abstracts/_variables.scss +2 -0
  19. package/src/scss/animations/_alertToUp.scss +10 -0
  20. package/src/scss/animations/_aurora.scss +17 -0
  21. package/src/scss/animations/_colors.scss +15 -0
  22. package/src/scss/animations/_dash.scss +13 -0
  23. package/src/scss/animations/_fadeCopyFromLeft.scss +10 -0
  24. package/src/scss/animations/_goAndBack.scss +8 -0
  25. package/src/scss/animations/_inputUp.scss +10 -0
  26. package/src/scss/animations/_shake.scss +22 -0
  27. package/src/scss/animations/_showIn.scss +8 -0
  28. package/src/scss/animations/_showMenu.scss +12 -0
  29. package/src/scss/animations/_statusLine.scss +9 -0
  30. package/src/scss/animations/_toDown.scss +8 -0
  31. package/src/scss/animations/_toastFromLeft.scss +10 -0
  32. package/src/scss/animations/_toastFromRight.scss +10 -0
  33. package/src/scss/base/_base.scss +14 -0
  34. package/src/scss/base/_typography.scss +188 -0
  35. package/src/scss/components/_alerts.scss +115 -0
  36. package/src/scss/components/_breadcrumb.scss +30 -0
  37. package/src/scss/components/_buttons.scss +808 -0
  38. package/src/scss/components/_checks.scss +105 -0
  39. package/src/scss/components/_dropdown-deck.scss +115 -0
  40. package/src/scss/components/_dropdowns.scss +131 -0
  41. package/src/scss/components/_img-404.scss +6 -0
  42. package/src/scss/components/_inputs.scss +279 -0
  43. package/src/scss/components/_login-source.scss +19 -0
  44. package/src/scss/components/_modals.scss +89 -0
  45. package/src/scss/components/_nav-tabs.scss +38 -0
  46. package/src/scss/components/_pills.scss +88 -0
  47. package/src/scss/components/_radio.scss +102 -0
  48. package/src/scss/components/_shadows.scss +18 -0
  49. package/src/scss/components/_spinner.scss +20 -0
  50. package/src/scss/components/_status-icon.scss +61 -0
  51. package/src/scss/components/_switch.scss +77 -0
  52. package/src/scss/components/_tabulator.scss +386 -0
  53. package/src/scss/components/_textareas.scss +22 -0
  54. package/src/scss/components/_toast.scss +129 -0
  55. package/src/scss/custom/_campaign-id.scss +56 -0
  56. package/src/scss/custom/_img-not-found.scss +7 -0
  57. package/src/scss/custom/_modal-edit.scss +10 -0
  58. package/src/scss/index.jsx +0 -0
  59. package/src/scss/index.scss +9 -0
  60. package/src/scss/layout/_aurora.scss +39 -0
  61. package/src/scss/layout/_authentication.scss +65 -0
  62. package/src/scss/layout/_footer.scss +21 -0
  63. package/src/scss/layout/_main.scss +41 -0
  64. package/src/scss/layout/_navbar.scss +64 -0
  65. package/src/scss/views/_skeleton.scss +266 -0
  66. package/src/stories/Button.stories.jsx +11 -0
@@ -0,0 +1,89 @@
1
+ // Use
2
+ @use '../abstracts/helpers' as h;
3
+
4
+ .modal {
5
+ .modal-dialog {
6
+ .modal-header {
7
+ border: none;
8
+ padding: 1rem;
9
+ justify-content: space-between;
10
+
11
+ .modal-title-wrapper {
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: 1rem;
15
+ width: 100%;
16
+
17
+ @include h.respond-to(h.$lg) {
18
+ width: auto;
19
+ }
20
+ }
21
+
22
+ .modal-title {
23
+ display: flex;
24
+ flex-direction: row;
25
+ align-items: center;
26
+ gap: 1rem;
27
+ line-height: 1.2;
28
+ }
29
+ }
30
+
31
+ .modal-content {
32
+ @include h.shadow(4, h.$ga-brand-dark, y);
33
+ border-radius: h.$border-radius-md;
34
+ @include h.font-family(h.$font-family-secondary, 1rem, h.$grey-dark, 400);
35
+
36
+
37
+ .modal-footer {
38
+ justify-content: left;
39
+ color: h.$secondary-dark;
40
+ }
41
+ }
42
+
43
+ &.modal-lg {
44
+ .modal-body {
45
+ max-height: 55vh;
46
+ overflow-y: scroll;
47
+
48
+ @include h.respond-to(h.$lg) {
49
+ max-height: none;
50
+ }
51
+ }
52
+ }
53
+ }
54
+
55
+ // Opening and closing animations
56
+ &.scale {
57
+ .modal-dialog {
58
+ transform: scale(0);
59
+ @include h.transition(transform, 0.25s, cubic-bezier(0.165, 0.84, 0.44, 1));
60
+ }
61
+
62
+ &:not(.show) {
63
+ .modal-dialog {
64
+ transform: scale(0);
65
+ }
66
+ }
67
+
68
+ &.show {
69
+ .modal-dialog {
70
+ transform: none;
71
+ }
72
+ }
73
+ }
74
+ }
75
+
76
+ .modal-open {
77
+ .confirmation-modal {
78
+ z-index: 1060;
79
+
80
+ p {
81
+ color: h.$secondary-dark;
82
+ }
83
+ }
84
+ .modal-backdrop {
85
+ &:has(+ .confirmation-modal) {
86
+ z-index: 1059 !important;
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,38 @@
1
+ // Use
2
+ @use '../abstracts/helpers' as h;
3
+
4
+ .nav-tabs {
5
+ border-bottom: 2px solid rgba(h.$ga-brand-dark, 20%);
6
+ @include h.font-family(h.$font-family-secondary, 1rem, h.$grey-dark, 400);
7
+ border-width: 2px;
8
+
9
+ .nav-item {
10
+ margin-bottom: -1px;
11
+
12
+ .nav-link {
13
+ color: h.$grey-dark;
14
+ border-radius: 0;
15
+
16
+ &:hover {
17
+ border-color: transparent;
18
+ }
19
+
20
+ &:disabled {
21
+ opacity: 0.4;
22
+ pointer-events: none;
23
+ }
24
+
25
+ &.active {
26
+ background-color: transparent;
27
+ border-color: transparent;
28
+ border-bottom: 2px solid h.$ga-brand-light;
29
+ font-weight: 700;
30
+ color: h.$ga-brand-dark;
31
+ }
32
+ }
33
+ }
34
+ }
35
+
36
+ .tab-content {
37
+ padding-top: 2rem;
38
+ }
@@ -0,0 +1,88 @@
1
+ // Use
2
+ @use '../abstracts/helpers' as h;
3
+
4
+ .pill {
5
+ @include h.font-family(h.$font-family-secondary, 0.6875rem, h.$ga-brand-dark, 700);
6
+ background-color: rgba(h.$ga-brand-dark, 20%);
7
+ text-transform: uppercase;
8
+ letter-spacing: 1.25px;
9
+ display: inline-flex;
10
+ flex-direction: row;
11
+ gap: 0.5rem;
12
+ align-items: center;
13
+ border-radius: 100px;
14
+ @include h.transition(background-color, 0.15s, ease-in-out);
15
+ padding: 0.25rem 0.5rem;
16
+ white-space: nowrap;
17
+
18
+ // Colors
19
+ &.green {
20
+ color: h.$safeSuccess;
21
+ background-color: rgba(h.$success, 20%);
22
+ }
23
+
24
+ &.yellow {
25
+ color: h.$safeWarning;
26
+ background-color: h.$warning-bg;
27
+ }
28
+
29
+ &.red {
30
+ color: h.$error;
31
+ background-color: rgba(h.$error, 20%);
32
+ }
33
+
34
+ &.danger {
35
+ color: h.$white;
36
+ background-color: h.$error;
37
+ }
38
+
39
+ &.neutral {
40
+ color: h.$ga-brand-dark;
41
+ background-color: rgba(h.$ga-brand-dark, 20%);
42
+ }
43
+
44
+ &.blue {
45
+ color: h.$secondary-blue-light;
46
+ background-color: rgba(h.$secondary-blue-light, 20%);
47
+ }
48
+
49
+ &.grey {
50
+ color: h.$secondary-dark;
51
+ background-color: h.$grey-light;
52
+ }
53
+
54
+ &.light {
55
+ color: h.$ga-brand-light;
56
+ background-color: lighten(h.$ga-brand-light, 45);
57
+ }
58
+
59
+ &.midtone {
60
+ color: h.$ga-brand-midtone;
61
+ background-color: lighten(h.$ga-brand-midtone, 45);
62
+ background-color: rgba(h.$ga-brand-midtone, 20%);
63
+ }
64
+
65
+ &.dark {
66
+ color: h.$ga-brand-dark;
67
+ background-color: rgba(h.$ga-brand-dark, 20%);
68
+ }
69
+
70
+ > span {
71
+ height: 100%;
72
+ line-height: 1rem;
73
+ }
74
+
75
+ > button {
76
+ background-color: transparent;
77
+ border: none;
78
+ color: inherit;
79
+ cursor: pointer;
80
+ display: flex;
81
+ align-items: center;
82
+ justify-content: center;
83
+ padding: 0;
84
+ width: 0.6875rem;
85
+ height: 0.6875rem;
86
+ color: inherit;
87
+ }
88
+ }
@@ -0,0 +1,102 @@
1
+ // Use
2
+ @use '../abstracts/helpers' as h;
3
+
4
+ .radio {
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: flex-start;
8
+ gap: 1rem;
9
+ cursor: pointer;
10
+ margin: 0;
11
+ @include h.transition(background-color box-shadow, 0.3s, ease-out);
12
+ border-radius: 5px;
13
+
14
+ .outer {
15
+ height: 20px;
16
+ width: 20px;
17
+ display: block;
18
+ margin: 0;
19
+ border: none;
20
+ border: h.$grey-dark 2px solid;
21
+ border-radius: 50%;
22
+ background-color: h.$white;
23
+ position: relative;
24
+ box-shadow: none;
25
+ @include h.transition(border-color box-shadow, 0.3s, cubic-bezier(.47,1.64,.41,.8));
26
+ }
27
+
28
+ .inner {
29
+ @include h.transition(transform opacity background-color, 0.3s, cubic-bezier(.47,1.64,.41,.8));
30
+ height: 0.75rem;
31
+ width: 0.75rem;
32
+ transform: scale(0);
33
+ display: block;
34
+ border-radius: 50%;
35
+ background-color: h.$secondary-violet;
36
+ opacity: 0;
37
+ position: absolute;
38
+ top: 2px;
39
+ left: 2px;
40
+ }
41
+
42
+ input[type='radio'] {
43
+ height: 1px;
44
+ width: 1px;
45
+ opacity: 0;
46
+ position: absolute;
47
+
48
+ &:checked {
49
+ & + div {
50
+ .outer {
51
+ border-color: transparent;
52
+ box-shadow: 0 0 0 2px h.$secondary-violet;
53
+ }
54
+
55
+ .inner {
56
+ transform: scale(1);
57
+ opacity: 1;
58
+ transform-origin: 50%;
59
+ background-color: h.$secondary-violet;
60
+ }
61
+ }
62
+
63
+ & + .outer {
64
+ .inner {
65
+ transform: scale(1);
66
+ opacity: 1;
67
+ background-color: h.$secondary-violet;
68
+ }
69
+ }
70
+
71
+ &:has(.dropdown),
72
+ &:has(.form-floating) {
73
+ &:has(input:focus) {
74
+ box-shadow: 0px 0px 0px 2px h.$ga-brand-midtone;
75
+ background-color: lighten(h.$ga-brand-midtone, 50%);
76
+ }
77
+ }
78
+ }
79
+
80
+ & + div {
81
+ width: 100%;
82
+ height: 100%;
83
+ padding: 0.375rem;
84
+ display: flex;
85
+ flex-direction: column;
86
+ justify-content: space-between;
87
+ align-items: center;
88
+ gap: 1rem;
89
+ }
90
+ }
91
+ /*
92
+ &:has(input[type='radio']:checked) {
93
+ box-shadow: 0px 0px 0px 2px h.$ga-brand-midtone;
94
+ background-color: lighten(h.$ga-brand-midtone, 50%);
95
+ } */
96
+
97
+
98
+ &:has(.dropdown),
99
+ &:has(.form-floating) {
100
+ padding: 1rem;
101
+ }
102
+ }
@@ -0,0 +1,18 @@
1
+ // Use
2
+ @use '../abstracts/helpers' as h;
3
+
4
+ .shadow-1 {
5
+ @include h.shadow(1, h.$ga-brand-dark, y);
6
+ }
7
+
8
+ .shadow-2 {
9
+ @include h.shadow(2, h.$ga-brand-dark, y);
10
+ }
11
+
12
+ .shadow-3 {
13
+ @include h.shadow(3, h.$ga-brand-dark, y);
14
+ }
15
+
16
+ .shadow-4 {
17
+ @include h.shadow(4, h.$ga-brand-dark, y);
18
+ }
@@ -0,0 +1,20 @@
1
+ // Use
2
+ @use '../abstracts/helpers' as h;
3
+
4
+ // Forward
5
+ @forward '../animations/dash';
6
+ @forward '../animations/colors';
7
+
8
+ .spinner {
9
+ animation: rotator h.$spinner-duration linear infinite;
10
+ width: 24px;
11
+ height: 24px;
12
+
13
+ circle {
14
+ stroke-dasharray: 187;
15
+ stroke-dashoffset: 0;
16
+ stroke: h.$ga-brand-light;
17
+ transform-origin: center;
18
+ animation: dash h.$spinner-duration ease-in-out infinite, colors h.$spinner-duration ease-in-out infinite;
19
+ }
20
+ }
@@ -0,0 +1,61 @@
1
+ // Use
2
+ @use '../abstracts/helpers' as h;
3
+
4
+ // Forward
5
+ @forward '../animations/statusLine';
6
+
7
+ .status-icon {
8
+ width: 1rem;
9
+ height: 1rem;
10
+ flex-shrink: 0;
11
+
12
+ circle {
13
+ fill: rgba(h.$ga-brand-dark, 0.2);
14
+ }
15
+
16
+ &.active {
17
+ circle {
18
+ fill: h.$success;
19
+ }
20
+ }
21
+
22
+ &.active-warning {
23
+ width: 1.5rem;
24
+ margin-left: -0.25rem;
25
+ margin-right: -0.25rem;
26
+
27
+ circle {
28
+ fill: h.$success-bg;
29
+ }
30
+
31
+ path {
32
+ fill: h.$safeSuccess;
33
+ }
34
+ }
35
+
36
+ polyline {
37
+ fill: none;
38
+ }
39
+
40
+ &.animated {
41
+ polyline {
42
+ fill: none;
43
+ stroke-width: 1;
44
+ stroke-linecap: round;
45
+ stroke-linejoin: round;
46
+
47
+ &.line-front {
48
+ fill: none;
49
+ stroke: h.$white;
50
+ stroke-dasharray: 16, 48;
51
+ stroke-dashoffset: 64;
52
+ animation: statusLine 1.4s linear infinite;
53
+ }
54
+
55
+ &.line-back {
56
+ fill: none;
57
+ stroke: rgba(h.$white, 25%);
58
+ }
59
+ }
60
+ }
61
+ }
@@ -0,0 +1,77 @@
1
+ // Use
2
+ @use '../abstracts/helpers' as h;
3
+
4
+ .form-switch {
5
+ display: flex;
6
+ gap: 1rem;
7
+ align-items: center;
8
+ padding: 0;
9
+ width: auto;
10
+ justify-content: flex-start;
11
+
12
+ .form-check-input {
13
+ width: 3.4rem;
14
+ height: 2rem;
15
+ margin: 0;
16
+ cursor: pointer;
17
+ border-color: h.$grey-dark;
18
+ background-color: h.$grey-dark;
19
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Ccircle cx='4' cy='4.5' r='3' opacity='0.25'/%3E%3Ccircle id='front' class='cls-2' cx='4' cy='4' r='3' fill='%23fff'/%3E%3C/svg%3E");
20
+ box-shadow: none;
21
+ @include h.transition(background-color border-color background-position box-shadow, 0.25s, cubic-bezier(0.47, 1.64, 0.41, 0.8));
22
+
23
+ &:focus {
24
+ box-shadow: 0 0 0 0.25rem rgba(h.$ga-brand-light, 50%);
25
+ }
26
+
27
+ &:checked {
28
+ background-color: h.$success;
29
+ border-color: h.$success;
30
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Ccircle cx='4' cy='4.5' r='3' opacity='0.25'/%3E%3Ccircle id='front' class='cls-2' cx='4' cy='4' r='3' fill='%23fff'/%3E%3C/svg%3E");
31
+ }
32
+
33
+ &:active {
34
+ filter: none;
35
+ }
36
+ }
37
+
38
+ // Position
39
+ &.switch-end {
40
+ flex-direction: row-reverse;
41
+ justify-content: flex-end;
42
+ }
43
+
44
+ // Icon
45
+
46
+ &.switch-icon {
47
+ .form-check-input {
48
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Ccircle cx='4' cy='4.5' r='3' opacity='0.25'/%3E%3Ccircle cx='4' cy='4' r='3' fill='%23ffffff'/%3E%3Cpath fill='%23767676' d='M3.1,2.45c-.21,0-.39.17-.39.39v2.32c0,.21.17.39.39.39h.26c.21,0,.39-.17.39-.39v-2.32c0-.21-.17-.39-.39-.39h-.26ZM4.64,2.45c-.21,0-.39.17-.39.39v2.32c0,.21.17.39.39.39h.26c.21,0,.39-.17.39-.39v-2.32c0-.21-.17-.39-.39-.39h-.26Z'/%3E%3C/svg%3E");
49
+
50
+ &:checked {
51
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Ccircle class='cls-1' cx='4' cy='4.5' r='3' opacity='0.25'/%3E%3Ccircle class='cls-3' cx='4' cy='4' r='3' fill='%23ffffff'/%3E%3Cpath fill='%235bbb84' d='M3.3,2.25c-.12-.07-.27-.08-.39,0-.12.07-.2.2-.2.34v2.84c0,.14.08.27.2.34.12.07.27.07.39,0l2.32-1.42c.12-.07.19-.19.19-.33s-.07-.26-.19-.33l-2.32-1.42Z'/%3E%3C/svg%3E");
52
+ }
53
+ }
54
+ }
55
+
56
+ // Sizes
57
+ &.form-switch-xs {
58
+ .form-check-input {
59
+ width: 2.5rem;
60
+ height: 1.5rem;
61
+ }
62
+ .form-check-label {
63
+ font-size: 0.875rem;
64
+ }
65
+ }
66
+
67
+ &.form-switch-lg {
68
+ .form-check-input {
69
+ width: 4.5rem;
70
+ height: 2.5rem;
71
+ }
72
+
73
+ .form-check-label {
74
+ font-size: 1.25rem;
75
+ }
76
+ }
77
+ }