ngwr 0.1.3 → 0.2.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 (230) hide show
  1. package/LICENSE +3 -1
  2. package/README.md +35 -22
  3. package/_index.scss +27 -0
  4. package/button/{button.module.d.ts → button-module.d.ts} +4 -4
  5. package/button/button.d.ts +58 -0
  6. package/button/button.scss +160 -0
  7. package/button/index.d.ts +2 -2
  8. package/checkbox/{checkbox.module.d.ts → checkbox-module.d.ts} +2 -2
  9. package/checkbox/checkbox.d.ts +49 -0
  10. package/checkbox/checkbox.scss +103 -0
  11. package/checkbox/index.d.ts +2 -2
  12. package/core/abstract/base.d.ts +9 -0
  13. package/core/abstract/index.d.ts +1 -0
  14. package/core/color/color.d.ts +2 -0
  15. package/core/color/index.d.ts +2 -0
  16. package/core/color/is-theme-color.d.ts +2 -0
  17. package/core/decorators/index.d.ts +1 -0
  18. package/core/decorators/input-boolean.d.ts +1 -0
  19. package/core/types/index.d.ts +3 -0
  20. package/{_core → core}/types/on-change-type.d.ts +0 -0
  21. package/{_core → core}/types/on-touched-type.d.ts +0 -0
  22. package/{_core → core}/types/safe-any.d.ts +0 -0
  23. package/divider/{divider.module.d.ts → divider-module.d.ts} +2 -2
  24. package/divider/divider.d.ts +40 -0
  25. package/divider/divider.scss +34 -0
  26. package/divider/index.d.ts +2 -2
  27. package/esm2020/button/button-module.mjs +20 -0
  28. package/esm2020/button/button.mjs +187 -0
  29. package/esm2020/button/index.mjs +3 -3
  30. package/esm2020/button/ngwr-button.mjs +5 -0
  31. package/esm2020/checkbox/checkbox-module.mjs +20 -0
  32. package/esm2020/checkbox/checkbox.mjs +154 -0
  33. package/esm2020/checkbox/index.mjs +3 -3
  34. package/esm2020/checkbox/ngwr-checkbox.mjs +5 -0
  35. package/esm2020/core/abstract/base.mjs +18 -0
  36. package/esm2020/core/abstract/index.mjs +2 -0
  37. package/esm2020/core/abstract/ngwr-core-abstract.mjs +5 -0
  38. package/esm2020/core/color/color.mjs +11 -0
  39. package/esm2020/core/color/index.mjs +3 -0
  40. package/esm2020/core/color/is-theme-color.mjs +9 -0
  41. package/esm2020/core/color/ngwr-core-color.mjs +5 -0
  42. package/esm2020/core/decorators/index.mjs +2 -0
  43. package/esm2020/core/decorators/input-boolean.mjs +15 -0
  44. package/esm2020/core/decorators/ngwr-core-decorators.mjs +5 -0
  45. package/esm2020/core/types/index.mjs +4 -0
  46. package/esm2020/core/types/ngwr-core-types.mjs +5 -0
  47. package/esm2020/core/types/on-change-type.mjs +2 -0
  48. package/esm2020/core/types/on-touched-type.mjs +2 -0
  49. package/esm2020/core/types/safe-any.mjs +2 -0
  50. package/esm2020/divider/divider-module.mjs +16 -0
  51. package/esm2020/divider/divider.mjs +100 -0
  52. package/esm2020/divider/index.mjs +3 -3
  53. package/esm2020/divider/ngwr-divider.mjs +5 -0
  54. package/esm2020/form/form-error.mjs +23 -0
  55. package/esm2020/form/form-item.mjs +46 -0
  56. package/esm2020/form/form-module.mjs +19 -0
  57. package/esm2020/form/index.mjs +4 -4
  58. package/esm2020/form/ngwr-form.mjs +5 -0
  59. package/esm2020/icon/icon-module.mjs +21 -0
  60. package/esm2020/icon/icon-service.mjs +21 -0
  61. package/esm2020/icon/icon.mjs +60 -0
  62. package/esm2020/icon/icons.mjs +424 -0
  63. package/esm2020/icon/index.mjs +5 -5
  64. package/esm2020/icon/ngwr-icon.mjs +5 -0
  65. package/esm2020/index.mjs +3 -0
  66. package/esm2020/input/index.mjs +3 -3
  67. package/esm2020/input/input-module.mjs +20 -0
  68. package/esm2020/input/input-types.mjs +2 -0
  69. package/esm2020/input/input.mjs +240 -0
  70. package/esm2020/input/ngwr-input.mjs +5 -0
  71. package/esm2020/ngwr.mjs +2 -2
  72. package/esm2020/skeleton/index.mjs +3 -3
  73. package/esm2020/skeleton/ngwr-skeleton.mjs +5 -0
  74. package/esm2020/skeleton/skeleton-module.mjs +18 -0
  75. package/esm2020/skeleton/skeleton.mjs +44 -0
  76. package/esm2020/spinner/index.mjs +3 -3
  77. package/esm2020/spinner/ngwr-spinner.mjs +5 -0
  78. package/esm2020/spinner/spinner-module.mjs +16 -0
  79. package/esm2020/spinner/spinner.mjs +23 -0
  80. package/esm2020/tag/index.mjs +3 -3
  81. package/esm2020/tag/ngwr-tag.mjs +5 -0
  82. package/esm2020/tag/tag-module.mjs +20 -0
  83. package/esm2020/tag/tag.mjs +80 -0
  84. package/fesm2015/ngwr-button.mjs +211 -0
  85. package/fesm2015/ngwr-button.mjs.map +1 -0
  86. package/fesm2015/ngwr-checkbox.mjs +177 -0
  87. package/fesm2015/ngwr-checkbox.mjs.map +1 -0
  88. package/fesm2015/ngwr-core-abstract.mjs +25 -0
  89. package/fesm2015/ngwr-core-abstract.mjs.map +1 -0
  90. package/fesm2015/ngwr-core-color.mjs +25 -0
  91. package/fesm2015/ngwr-core-color.mjs.map +1 -0
  92. package/fesm2015/ngwr-core-decorators.mjs +22 -0
  93. package/fesm2015/ngwr-core-decorators.mjs.map +1 -0
  94. package/fesm2015/ngwr-core-types.mjs +4 -0
  95. package/fesm2015/ngwr-core-types.mjs.map +1 -0
  96. package/fesm2015/ngwr-divider.mjs +120 -0
  97. package/fesm2015/ngwr-divider.mjs.map +1 -0
  98. package/fesm2015/ngwr-form.mjs +89 -0
  99. package/fesm2015/ngwr-form.mjs.map +1 -0
  100. package/fesm2015/ngwr-icon.mjs +527 -0
  101. package/fesm2015/ngwr-icon.mjs.map +1 -0
  102. package/fesm2015/ngwr-input.mjs +262 -0
  103. package/fesm2015/ngwr-input.mjs.map +1 -0
  104. package/fesm2015/ngwr-skeleton.mjs +66 -0
  105. package/fesm2015/ngwr-skeleton.mjs.map +1 -0
  106. package/fesm2015/ngwr-spinner.mjs +43 -0
  107. package/fesm2015/ngwr-spinner.mjs.map +1 -0
  108. package/fesm2015/ngwr-tag.mjs +104 -0
  109. package/fesm2015/ngwr-tag.mjs.map +1 -0
  110. package/fesm2015/ngwr.mjs +2 -1404
  111. package/fesm2015/ngwr.mjs.map +1 -1
  112. package/fesm2020/ngwr-button.mjs +211 -0
  113. package/fesm2020/ngwr-button.mjs.map +1 -0
  114. package/fesm2020/ngwr-checkbox.mjs +177 -0
  115. package/fesm2020/ngwr-checkbox.mjs.map +1 -0
  116. package/fesm2020/ngwr-core-abstract.mjs +25 -0
  117. package/fesm2020/ngwr-core-abstract.mjs.map +1 -0
  118. package/fesm2020/ngwr-core-color.mjs +25 -0
  119. package/fesm2020/ngwr-core-color.mjs.map +1 -0
  120. package/fesm2020/ngwr-core-decorators.mjs +22 -0
  121. package/fesm2020/ngwr-core-decorators.mjs.map +1 -0
  122. package/fesm2020/ngwr-core-types.mjs +4 -0
  123. package/fesm2020/ngwr-core-types.mjs.map +1 -0
  124. package/fesm2020/ngwr-divider.mjs +120 -0
  125. package/fesm2020/ngwr-divider.mjs.map +1 -0
  126. package/fesm2020/ngwr-form.mjs +89 -0
  127. package/fesm2020/ngwr-form.mjs.map +1 -0
  128. package/fesm2020/ngwr-icon.mjs +525 -0
  129. package/fesm2020/ngwr-icon.mjs.map +1 -0
  130. package/fesm2020/ngwr-input.mjs +263 -0
  131. package/fesm2020/ngwr-input.mjs.map +1 -0
  132. package/fesm2020/ngwr-skeleton.mjs +66 -0
  133. package/fesm2020/ngwr-skeleton.mjs.map +1 -0
  134. package/fesm2020/ngwr-spinner.mjs +43 -0
  135. package/fesm2020/ngwr-spinner.mjs.map +1 -0
  136. package/fesm2020/ngwr-tag.mjs +104 -0
  137. package/fesm2020/ngwr-tag.mjs.map +1 -0
  138. package/fesm2020/ngwr.mjs +2 -1402
  139. package/fesm2020/ngwr.mjs.map +1 -1
  140. package/form/form-error.d.ts +6 -0
  141. package/form/form-item.d.ts +15 -0
  142. package/form/{form.module.d.ts → form-module.d.ts} +3 -3
  143. package/form/form.scss +52 -0
  144. package/form/index.d.ts +3 -3
  145. package/icon/{wr-icon.module.d.ts → icon-module.d.ts} +2 -2
  146. package/icon/{wr-icon.service.d.ts → icon-service.d.ts} +0 -9
  147. package/icon/icon.d.ts +20 -0
  148. package/icon/icon.scss +27 -0
  149. package/icon/{wr-icons.d.ts → icons.d.ts} +59 -3
  150. package/icon/index.d.ts +4 -4
  151. package/index.d.ts +2 -5
  152. package/input/index.d.ts +2 -2
  153. package/input/{input.module.d.ts → input-module.d.ts} +3 -3
  154. package/{_core/types/input-autocomplete-type.d.ts → input/input-types.d.ts} +2 -0
  155. package/input/{input.component.d.ts → input.d.ts} +7 -4
  156. package/input/input.scss +163 -0
  157. package/logo.svg +6 -1
  158. package/package.json +124 -19
  159. package/skeleton/index.d.ts +2 -2
  160. package/skeleton/{skeleton.module.d.ts → skeleton-module.d.ts} +2 -2
  161. package/skeleton/skeleton.d.ts +11 -0
  162. package/skeleton/skeleton.scss +54 -0
  163. package/spinner/index.d.ts +2 -2
  164. package/spinner/{spinner.module.d.ts → spinner-module.d.ts} +2 -2
  165. package/spinner/spinner.d.ts +6 -0
  166. package/spinner/spinner.scss +33 -0
  167. package/styles/animations.scss +14 -0
  168. package/styles/grid.scss +164 -0
  169. package/styles/reset.scss +106 -0
  170. package/styles/root.scss +152 -0
  171. package/styles/vars.scss +2 -0
  172. package/tag/index.d.ts +2 -2
  173. package/tag/{tag.module.d.ts → tag-module.d.ts} +4 -4
  174. package/tag/tag.d.ts +18 -0
  175. package/tag/tag.scss +106 -0
  176. package/_core/components/base.component.d.ts +0 -9
  177. package/_core/constants/style-prefix.d.ts +0 -1
  178. package/_core/index.d.ts +0 -4
  179. package/_core/types/boolean-input.d.ts +0 -1
  180. package/_core/types/color.d.ts +0 -1
  181. package/_core/types/index.d.ts +0 -8
  182. package/_core/types/input-mode-type.d.ts +0 -1
  183. package/_core/types/input-type.d.ts +0 -1
  184. package/_core/util/convert.d.ts +0 -19
  185. package/button/button.component.d.ts +0 -36
  186. package/checkbox/checkbox.component.d.ts +0 -32
  187. package/divider/divider.component.d.ts +0 -28
  188. package/esm2020/_core/components/base.component.mjs +0 -18
  189. package/esm2020/_core/constants/style-prefix.mjs +0 -2
  190. package/esm2020/_core/index.mjs +0 -9
  191. package/esm2020/_core/types/boolean-input.mjs +0 -2
  192. package/esm2020/_core/types/color.mjs +0 -2
  193. package/esm2020/_core/types/index.mjs +0 -2
  194. package/esm2020/_core/types/input-autocomplete-type.mjs +0 -2
  195. package/esm2020/_core/types/input-mode-type.mjs +0 -2
  196. package/esm2020/_core/types/input-type.mjs +0 -2
  197. package/esm2020/_core/types/on-change-type.mjs +0 -2
  198. package/esm2020/_core/types/on-touched-type.mjs +0 -2
  199. package/esm2020/_core/types/safe-any.mjs +0 -2
  200. package/esm2020/_core/util/convert.mjs +0 -51
  201. package/esm2020/button/button.component.mjs +0 -137
  202. package/esm2020/button/button.module.mjs +0 -20
  203. package/esm2020/checkbox/checkbox.component.mjs +0 -128
  204. package/esm2020/checkbox/checkbox.module.mjs +0 -20
  205. package/esm2020/divider/divider.component.mjs +0 -72
  206. package/esm2020/divider/divider.module.mjs +0 -16
  207. package/esm2020/form/form-error.component.mjs +0 -23
  208. package/esm2020/form/form-item.component.mjs +0 -35
  209. package/esm2020/form/form.module.mjs +0 -19
  210. package/esm2020/icon/wr-icon.component.mjs +0 -51
  211. package/esm2020/icon/wr-icon.module.mjs +0 -21
  212. package/esm2020/icon/wr-icon.service.mjs +0 -30
  213. package/esm2020/icon/wr-icons.mjs +0 -384
  214. package/esm2020/input/input.component.mjs +0 -239
  215. package/esm2020/input/input.module.mjs +0 -20
  216. package/esm2020/public-api.mjs +0 -11
  217. package/esm2020/skeleton/skeleton.component.mjs +0 -47
  218. package/esm2020/skeleton/skeleton.module.mjs +0 -18
  219. package/esm2020/spinner/spinner.component.mjs +0 -23
  220. package/esm2020/spinner/spinner.module.mjs +0 -16
  221. package/esm2020/tag/tag.component.mjs +0 -80
  222. package/esm2020/tag/tag.module.mjs +0 -20
  223. package/form/form-error.component.d.ts +0 -6
  224. package/form/form-item.component.d.ts +0 -8
  225. package/icon/wr-icon.component.d.ts +0 -17
  226. package/ngwr.min.css +0 -8
  227. package/public-api.d.ts +0 -10
  228. package/skeleton/skeleton.component.d.ts +0 -9
  229. package/spinner/spinner.component.d.ts +0 -6
  230. package/tag/tag.component.d.ts +0 -16
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class WrSpinner {
3
+ class: string;
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<WrSpinner, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<WrSpinner, "wr-spin", ["wrSpin"], {}, {}, never, never, false>;
6
+ }
@@ -0,0 +1,33 @@
1
+
2
+ .wr-spin {
3
+ display: inline-block;
4
+ color: inherit;
5
+ font-style: normal;
6
+ line-height: 0;
7
+ text-align: center;
8
+ text-transform: none;
9
+ vertical-align: -0.1rem;
10
+ box-sizing: content-box !important;
11
+
12
+ contain: strict;
13
+
14
+ width: 1em;
15
+ height: 1em;
16
+
17
+ * {
18
+ line-height: 1;
19
+ }
20
+
21
+ svg {
22
+ display: inline-block;
23
+ width: 100%;
24
+ height: 100%;
25
+
26
+ animation: rotate 2s linear infinite;
27
+
28
+ .path {
29
+ stroke: currentColor;
30
+ animation: dash 1.5s ease-in-out infinite;
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,14 @@
1
+ @keyframes shimmer {
2
+ 100% { transform: translateX(100%); }
3
+ }
4
+
5
+ @keyframes rotate {
6
+ 100% { transform: rotate(360deg); }
7
+ }
8
+
9
+ @keyframes dash {
10
+ 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; }
11
+ 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; }
12
+ 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; }
13
+ }
14
+
@@ -0,0 +1,164 @@
1
+ $grid-columns: 12;
2
+ $grid-rows: 1;
3
+
4
+ $spacer: 1rem !default;
5
+ $gutters: (
6
+ 0: 0,
7
+ 1: $spacer * .25,
8
+ 2: $spacer * .5,
9
+ 3: $spacer,
10
+ 4: $spacer * 1.5,
11
+ 5: $spacer * 3,
12
+ );
13
+
14
+ $grid-breakpoints: (
15
+ 'xs': 0,
16
+ 'sm': 576px,
17
+ 'md': 768px,
18
+ 'lg': 992px,
19
+ 'xl': 1200px,
20
+ 'xxl': 1400px,
21
+ 'xga': 1600px,
22
+ 'fhd': 1920px,
23
+ 'rt': 2560px
24
+ );
25
+
26
+ $grid-displays-widths: (
27
+ 'sm': 540px,
28
+ 'md': 720px,
29
+ 'lg': 960px,
30
+ 'xl': 1140px,
31
+ 'xxl': 1320px,
32
+ 'xga': 1530px,
33
+ 'fhd': 1830px,
34
+ 'rt': 2470px
35
+ );
36
+
37
+ @function breakpoint-min($name) {
38
+ $min: map-get($grid-breakpoints, $name);
39
+ @return if($min != 0, $min, null);
40
+ }
41
+
42
+ @function breakpoint-infix($name) {
43
+ @return if(breakpoint-min($name) == null, "", "-#{$name}");
44
+ }
45
+
46
+ @mixin media-breakpoint-up($name) {
47
+ $min: breakpoint-min($name);
48
+ @if $min {
49
+ @media (min-width: $min) {
50
+ @content;
51
+ }
52
+ } @else {
53
+ @content;
54
+ }
55
+ }
56
+
57
+ @function divide($dividend, $divisor, $precision: 10) {
58
+ $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
59
+ $dividend: abs($dividend);
60
+ $divisor: abs($divisor);
61
+ @if $dividend == 0 {
62
+ @return 0;
63
+ }
64
+ @if $divisor == 0 {
65
+ @error 'Cannot divide by 0';
66
+ }
67
+ $remainder: $dividend;
68
+ $result: 0;
69
+ $factor: 10;
70
+ @while ($remainder > 0 and $precision >= 0) {
71
+ $quotient: 0;
72
+ @while ($remainder >= $divisor) {
73
+ $remainder: $remainder - $divisor;
74
+ $quotient: $quotient + 1;
75
+ }
76
+ $result: $result * 10 + $quotient;
77
+ $factor: $factor * .1;
78
+ $remainder: $remainder * 10;
79
+ $precision: $precision - 1;
80
+ @if ($precision < 0 and $remainder >= $divisor * 5) {
81
+ $result: $result + 1;
82
+ }
83
+ }
84
+ $result: $result * $factor * $sign;
85
+ $dividend-unit: unit($dividend);
86
+ $divisor-unit: unit($divisor);
87
+ $unit-map: (
88
+ "px": 1px,
89
+ "rem": 1rem,
90
+ "em": 1em,
91
+ "%": 1%
92
+ );
93
+ @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
94
+ $result: $result * map-get($unit-map, $dividend-unit);
95
+ }
96
+ @return $result;
97
+ }
98
+
99
+ .container {
100
+ position: relative;
101
+ margin: 0 auto;
102
+ flex-grow: 1;
103
+ width: 100%;
104
+ padding-right: var(--wr-grid-gutter);
105
+ padding-left: var(--wr-grid-gutter);
106
+
107
+ &-fluid {
108
+ max-width: none !important;
109
+ }
110
+ }
111
+
112
+ @each $breakpoint, $value in $grid-displays-widths {
113
+ @include media-breakpoint-up($breakpoint) {
114
+ %responsive-container-#{$breakpoint} {
115
+ max-width: $value;
116
+ }
117
+
118
+ $extend-breakpoint: true;
119
+
120
+ @each $name, $width in $grid-breakpoints {
121
+ @if ($extend-breakpoint) {
122
+ .container#{breakpoint-infix($name)} {
123
+ @extend %responsive-container-#{$breakpoint};
124
+ }
125
+
126
+ // Once the current breakpoint is reached, stop extending
127
+ @if ($breakpoint == $name) {
128
+ $extend-breakpoint: false;
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+
135
+
136
+
137
+ .grid {
138
+ display: grid;
139
+ grid-template-rows: repeat($grid-rows, 1fr);
140
+ grid-template-columns: repeat($grid-columns, 1fr);
141
+ gap: var(--wr-grid-gutter, 1rem);
142
+
143
+ @each $breakpoint in map-keys($grid-breakpoints) {
144
+ $infix: breakpoint-infix($breakpoint);
145
+
146
+ @include media-breakpoint-up($breakpoint) {
147
+ @if $grid-columns > 0 {
148
+ @for $i from 1 through $grid-columns {
149
+ .col#{$infix}-#{$i} {
150
+ grid-column: auto / span $i;
151
+ }
152
+ }
153
+
154
+ // Start with `1` because `0` is and invalid value.
155
+ // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.
156
+ @for $i from 1 through ($grid-columns - 1) {
157
+ .col-start#{$infix}-#{$i} {
158
+ grid-column-start: $i;
159
+ }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
@@ -0,0 +1,106 @@
1
+ :root {
2
+ font-size: var(--wr-font-size-base);
3
+ scroll-behavior: smooth;
4
+ }
5
+
6
+ html,
7
+ body {
8
+ color: var(--wr-body-color);
9
+ background-color: var(--wr-body-bg);
10
+
11
+ font-size: var(--wr-font-size-base);
12
+ font-family: var(--wr-font-family-base);
13
+ font-weight: var(--wr-font-weight-base);
14
+ line-height: var(--wr-line-height-base);
15
+ letter-spacing: var(--wr-letter-spacing-base);
16
+
17
+ text-align: left;
18
+ direction: ltr;
19
+
20
+ margin: 0;
21
+ padding: 0;
22
+
23
+ -webkit-text-size-adjust: 100%;
24
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
25
+ -webkit-font-smoothing: antialiased;
26
+ -moz-osx-font-smoothing: grayscale;
27
+ -ms-text-size-adjust: 100%;
28
+ }
29
+
30
+ *,
31
+ *::before,
32
+ *::after {
33
+ box-sizing: border-box;
34
+ margin: 0;
35
+ padding: 0;
36
+ border: 0;
37
+ font-size: 100%;
38
+ vertical-align: baseline;
39
+ }
40
+
41
+ :focus {
42
+ outline: 0;
43
+ }
44
+
45
+ article, aside, details, figcaption, figure,
46
+ footer, header, hgroup, menu, nav, section {
47
+ display: block;
48
+ }
49
+
50
+ a {
51
+ text-decoration: none;
52
+ }
53
+
54
+ ol, ul {
55
+ list-style: none;
56
+ }
57
+
58
+ blockquote, q {
59
+ quotes: none;
60
+
61
+ &:before,
62
+ &:after {
63
+ content: '';
64
+ content: none;
65
+ }
66
+ }
67
+
68
+ table {
69
+ border-collapse: collapse;
70
+ border-spacing: 0;
71
+ }
72
+
73
+ input[type=search]::-webkit-search-cancel-button,
74
+ input[type=search]::-webkit-search-decoration,
75
+ input[type=search]::-webkit-search-results-button,
76
+ input[type=search]::-webkit-search-results-decoration {
77
+ -webkit-appearance: none;
78
+ -moz-appearance: none;
79
+ }
80
+
81
+ input[type=search] {
82
+ -webkit-appearance: none;
83
+ -moz-appearance: none;
84
+ -webkit-box-sizing: content-box;
85
+ -moz-box-sizing: content-box;
86
+ box-sizing: content-box;
87
+ }
88
+
89
+ textarea {
90
+ overflow: auto;
91
+ vertical-align: top;
92
+ resize: vertical;
93
+ }
94
+
95
+ audio:not([controls]) {
96
+ display: none;
97
+ height: 0;
98
+ }
99
+
100
+ [hidden] {
101
+ display: none;
102
+ }
103
+
104
+ img {
105
+ border: none;
106
+ }
@@ -0,0 +1,152 @@
1
+ html {
2
+ color-scheme: light;
3
+
4
+ /* Fonts */
5
+ --wr-font-family-base: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
6
+ 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
7
+ 'Noto Color Emoji';
8
+ --wr-font-family-mono: SFMono-Regular, Consolas, 'Liberation Mono', Courier, Menlo, Monaco, monospace;
9
+ --wr-font-size-base: 1rem;
10
+ --wr-font-weight-base: 400;
11
+ --wr-line-height-base: 1.5;
12
+ --wr-letter-spacing-base: 0;
13
+
14
+ /* Transitions */
15
+ --wr-transition-base: all 0.15s linear;
16
+ --wr-transition-short: all 0.1s linear;
17
+ --wr-transition-long: all 0.2s linear;
18
+
19
+ /* Borders */
20
+ --wr-border-radius-base: 0.625rem;
21
+ --wr-border-color-base: var(--wr-color-light);
22
+
23
+ /* Colors */
24
+ --wr-color-white: #fff;
25
+ --wr-color-white-rgb: 255,255,255;
26
+ --wr-color-black: #000;
27
+ --wr-color-black-rgb: 0,0,0;
28
+
29
+ --wr-color-primary: #3969e2;
30
+ --wr-color-primary-rgb: 57,105,226;
31
+ --wr-color-primary-contrast: #fff;
32
+ --wr-color-primary-shade: #2e54b5;
33
+
34
+ --wr-color-secondary: #f51c6a;
35
+ --wr-color-secondary-rgb: 245,28,106;
36
+ --wr-color-secondary-contrast: #fff;
37
+ --wr-color-secondary-shade: #c41655;
38
+
39
+ --wr-color-success: #84cc16;
40
+ --wr-color-success-rgb: 132,204,22;
41
+ --wr-color-success-contrast: #000;
42
+ --wr-color-success-shade: #6aa312;
43
+
44
+ --wr-color-warning: #fbbf24;
45
+ --wr-color-warning-rgb: 251,191,36;
46
+ --wr-color-warning-contrast: #000;
47
+ --wr-color-warning-shade: #f59e0b;
48
+
49
+ --wr-color-danger: #dc2626;
50
+ --wr-color-danger-rgb: 220,38,38;
51
+ --wr-color-danger-contrast: #fff;
52
+ --wr-color-danger-shade: #b91c1c;
53
+
54
+ --wr-color-light: #e2e8f0;
55
+ --wr-color-light-rgb: 226,232,240;
56
+ --wr-color-light-contrast: #000;
57
+ --wr-color-light-shade: #b8c0d2;
58
+
59
+ --wr-color-medium: #8b93a2;
60
+ --wr-color-medium-rgb: 139,147,162;
61
+ --wr-color-medium-contrast: #fff;
62
+ --wr-color-medium-shade: #7a818f;
63
+
64
+ --wr-color-dark: #322e4f;
65
+ --wr-color-dark-rgb: 50,46,79;
66
+ --wr-color-dark-contrast: #fff;
67
+ --wr-color-dark-shade: #131123;
68
+
69
+ /* Body */
70
+ --wr-body-bg: #fff;
71
+ --wr-body-bg-rgb: 255,255,255;
72
+ --wr-body-color: var(--wr-color-dark);
73
+
74
+ /* Grid */
75
+ --wr-grid-gutter: 1.5rem;
76
+
77
+ /* Button */
78
+ --wr-btn-padding-y-base: 0.5rem;
79
+ --wr-btn-padding-x-base: 1rem;
80
+ --wr-btn-border-radius-base: 0.5rem;
81
+ --wr-btn-font-size-base: 1rem;
82
+ --wr-btn-line-height-base: 1.4;
83
+ --wr-btn-font-weight-base: 500;
84
+ // Small
85
+ --wr-btn-padding-y-small: 0.375rem;
86
+ --wr-btn-padding-x-small: 0.625rem;
87
+ --wr-btn-border-radius-small: 0.375rem;
88
+ --wr-btn-font-size-small: 0.825rem;
89
+ --wr-btn-line-height-small: 1;
90
+ // Rounded
91
+ --wr-btn-rounded-border-radius: 50rem;
92
+ --wr-btn-rounded-padding-y: 0.5rem;
93
+ --wr-btn-rounded-padding-x: 1rem;
94
+
95
+ /* Checkbox */
96
+ --wr-checkbox-color-base: var(--wr-color-dark);
97
+ --wr-checkbox-border-radius: 0.25rem;
98
+ --wr-checkbox-font-size: 0.9rem;
99
+ --wr-checkbox-line-height: 1.2;
100
+ --wr-checkbox-font-weight: 500;
101
+ --wr-checkbox-height: 1.25rem;
102
+ --wr-checkbox-width: var(--wr-checkbox-height);
103
+
104
+ /* Input */
105
+ --wr-input-padding-y-base: 0.5rem;
106
+ --wr-input-padding-x-base: 1rem;
107
+ --wr-input-border-radius-base: 0.5rem;
108
+ --wr-input-font-size-base: 1rem;
109
+ --wr-input-line-height-base: 1.4;
110
+ --wr-input-font-weight-base: 500;
111
+
112
+ --wr-input-bg: var(--wr-color-white);
113
+ --wr-input-border-color: var(--wr-border-color-base);
114
+ --wr-input-color: var(--wr-color-dark);
115
+ --wr-input-suffix-prefix-color: var(--wr-color-medium);
116
+ --wr-input-suffix-prefix-bg: rgba(var(--wr-color-light-rgb), 0.375);
117
+
118
+ --wr-input-disabled-color: rgba(var(--wr-color-medium-rgb), 0.5);
119
+ --wr-input-disabled-border-color: var(--wr-border-color-base);
120
+ --wr-input-disabled-bg: var(--wr-border-color-base);
121
+
122
+ /* Tag */
123
+ --wr-tag-padding-y: 0.25rem;
124
+ --wr-tag-padding-x: 0.5rem;
125
+ --wr-tag-border-radius-base: 0.25rem;
126
+ --wr-tag-font-size-base: 0.75rem;
127
+ --wr-tag-line-height-base: 1rem;
128
+ --wr-tag-font-weight-base: 600;
129
+ --wr-tag-rounded-padding-y: 0.25rem;
130
+ --wr-tag-rounded-padding-x: 0.75rem;
131
+ --wr-tag-rounded-border-radius: 50rem;
132
+
133
+ &.dark {
134
+ color-scheme: dark;
135
+
136
+ --wr-body-bg: #18152a;
137
+ --wr-body-bg-rgb: 24,21,42;
138
+ --wr-body-color: #fff;
139
+
140
+ --wr-border-color-base: #292349;
141
+
142
+
143
+ /* Checkbox */
144
+ --wr-checkbox-color-base: var(--wr-color-white);
145
+
146
+ --wr-input-bg: #18152a;
147
+ --wr-input-suffix-prefix-color: rgba(var(--wr-color-white-rgb), 0.5);
148
+ --wr-input-suffix-prefix-bg: rgba(var(--wr-color-primary-rgb), 0.125);
149
+ --wr-input-border-color: #493d7e;
150
+ --wr-input-color: #fff;
151
+ }
152
+ }
@@ -0,0 +1,2 @@
1
+ /* Theme colors */
2
+ $theme-colors: ('primary', 'secondary', 'light', 'medium', 'dark', 'success', 'warning', 'danger');
package/tag/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { WrTagComponent } from './tag.component';
2
- export { WrTagModule } from './tag.module';
1
+ export { WrTag } from './tag';
2
+ export { WrTagModule } from './tag-module';
@@ -1,10 +1,10 @@
1
1
  import * as i0 from "@angular/core";
2
- import * as i1 from "./tag.component";
2
+ import * as i1 from "./tag";
3
3
  import * as i2 from "@angular/common";
4
- import * as i3 from "../icon/wr-icon.module";
5
- import * as i4 from "../spinner/spinner.module";
4
+ import * as i3 from "ngwr/icon";
5
+ import * as i4 from "ngwr/spinner";
6
6
  export declare class WrTagModule {
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<WrTagModule, never>;
8
- static ɵmod: i0.ɵɵNgModuleDeclaration<WrTagModule, [typeof i1.WrTagComponent], [typeof i2.CommonModule, typeof i3.WrIconModule, typeof i4.WrSpinnerModule], [typeof i1.WrTagComponent]>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<WrTagModule, [typeof i1.WrTag], [typeof i2.CommonModule, typeof i3.WrIconModule, typeof i4.WrSpinnerModule], [typeof i1.WrTag]>;
9
9
  static ɵinj: i0.ɵɵInjectorDeclaration<WrTagModule>;
10
10
  }
package/tag/tag.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { WrThemeColor } from 'ngwr/core/color';
3
+ import { SafeAny } from 'ngwr/core/types';
4
+ import { wrIconName } from 'ngwr/icon';
5
+ import * as i0 from "@angular/core";
6
+ export declare class WrTag {
7
+ color: WrThemeColor | string;
8
+ icon: wrIconName | null;
9
+ iconPosition: 'start' | 'end';
10
+ outlined: BooleanInput;
11
+ rounded: BooleanInput;
12
+ transparent: BooleanInput;
13
+ hoverable: BooleanInput;
14
+ loading: BooleanInput;
15
+ get elClasses(): SafeAny;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<WrTag, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<WrTag, "wr-tag", ["wrTag"], { "color": "color"; "icon": "icon"; "iconPosition": "iconPosition"; "outlined": "outlined"; "rounded": "rounded"; "transparent": "transparent"; "hoverable": "hoverable"; "loading": "loading"; }, {}, never, ["*"], false>;
18
+ }
package/tag/tag.scss ADDED
@@ -0,0 +1,106 @@
1
+ @import '../styles/vars';
2
+
3
+ .wr-tag {
4
+ display: inline-block;
5
+
6
+ padding: var(--wr-tag-padding-y) var(--wr-tag-padding-x);
7
+
8
+ font-family: var(--wr-tag-font-family-base);
9
+ font-size: var(--wr-tag-font-size-base);
10
+ font-weight: var(--wr-tag-font-weight-base);
11
+ line-height: var(--wr-tag-line-height-base);
12
+
13
+ text-align: center;
14
+ text-decoration: none;
15
+ vertical-align: middle;
16
+
17
+ user-select: none;
18
+ pointer-events: none;
19
+ white-space: nowrap;
20
+
21
+ border: none;
22
+ border-radius: var(--wr-tag-border-radius-base);
23
+
24
+ cursor: pointer;
25
+ transition: var(--wr-transition-base);
26
+ position: relative;
27
+
28
+ &:hover {
29
+ text-decoration: none;
30
+ }
31
+
32
+ &__icon,
33
+ &__spin {
34
+ width: 0.75rem !important;
35
+ height: 0.75rem !important;
36
+ min-width: 0.75rem !important;
37
+ min-height: 0.75rem !important;
38
+ transition: var(--wr-transition-base);
39
+ }
40
+
41
+ &--icon-start {
42
+ .wr-tag {
43
+ &__icon,
44
+ &__spin {
45
+ margin-right: 0.25rem;
46
+ }
47
+ }
48
+ }
49
+
50
+ &--icon-end {
51
+ .wr-tag {
52
+ &__icon,
53
+ &__spin {
54
+ margin-left: 0.25rem;
55
+ }
56
+ }
57
+ }
58
+
59
+ &--hoverable {
60
+ pointer-events: all;
61
+ }
62
+
63
+ &--rounded {
64
+ border-radius: var(--wr-tag-rounded-border-radius);
65
+ padding: var(--wr-tag-rounded-padding-y) var(--wr-tag-rounded-padding-x);
66
+ }
67
+ }
68
+
69
+ @each $color in $theme-colors {
70
+ .wr-tag--#{$color} {
71
+ color: var(--wr-color-#{$color}-contrast);
72
+ background-color: var(--wr-color-#{$color});
73
+
74
+ &:hover {
75
+ color: var(--wr-color-#{$color}-contrast);
76
+ background-color: var(--wr-color-#{$color}-shade);
77
+ }
78
+
79
+ &.wr-tag--outlined {
80
+ color: var(--wr-color-#{$color});
81
+ background-color: transparent;
82
+ box-shadow: inset 0 0 0 1.25px rgba(var(--wr-color-#{$color}-rgb), 0.375);
83
+
84
+ &.wr-tag--transparent {
85
+ background-color: rgba(var(--wr-color-#{$color}-rgb), 0.125);
86
+ }
87
+
88
+ &:hover {
89
+ color: var(--wr-color-#{$color}-contrast);
90
+ background-color: var(--wr-color-#{$color});
91
+ box-shadow: none;
92
+ }
93
+ }
94
+
95
+ &.wr-tag--transparent {
96
+ color: var(--wr-color-#{$color});
97
+ background-color: rgba(var(--wr-color-#{$color}-rgb), 0.125);
98
+
99
+ &:hover {
100
+ color: var(--wr-color-#{$color}-contrast);
101
+ background-color: var(--wr-color-#{$color});
102
+ box-shadow: none;
103
+ }
104
+ }
105
+ }
106
+ }
@@ -1,9 +0,0 @@
1
- import { OnDestroy } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export declare abstract class BaseComponent implements OnDestroy {
5
- protected readonly ngUnsubscribe: Subject<void>;
6
- ngOnDestroy(): void;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseComponent, never>;
8
- static ɵdir: i0.ɵɵDirectiveDeclaration<BaseComponent, never, never, {}, {}, never, never, false>;
9
- }
@@ -1 +0,0 @@
1
- export declare const stylePrefix = "wr";
package/_core/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export { BaseComponent } from './components/base.component';
2
- export * from './constants/style-prefix';
3
- export * from './types';
4
- export * from './util/convert';
@@ -1 +0,0 @@
1
- export declare type BooleanInput = boolean | string | undefined | null;
@@ -1 +0,0 @@
1
- export declare type WrThemeColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'light' | 'medium' | 'dark';
@@ -1,8 +0,0 @@
1
- export { BooleanInput } from './boolean-input';
2
- export { WrThemeColor } from './color';
3
- export { WrInputAutocomplete } from './input-autocomplete-type';
4
- export { WrInputModeType } from './input-mode-type';
5
- export { WrInputType } from './input-type';
6
- export { OnChangeType } from './on-change-type';
7
- export { OnTouchedType } from './on-touched-type';
8
- export { SafeAny } from './safe-any';
@@ -1 +0,0 @@
1
- export declare type WrInputModeType = 'text' | 'numeric' | 'tel' | 'email' | 'url';
@@ -1 +0,0 @@
1
- export declare type WrInputType = 'text' | 'number' | 'password' | 'email';
@@ -1,19 +0,0 @@
1
- import { SafeAny } from '../types/safe-any';
2
- export declare function toBoolean(value: boolean | string): boolean;
3
- /**
4
- * Input decorator that handle a prop to do get/set automatically with toBoolean
5
- *
6
- * Why not using @InputBoolean alone without @Input? AOT needs @Input to be visible
7
- *
8
- * @howToUse
9
- * ```
10
- * @Input() @InputBoolean() visible: boolean = false;
11
- *
12
- * // Act as below:
13
- * // @Input()
14
- * // get visible() { return this.__visible; }
15
- * // set visible(value) { this.__visible = value; }
16
- * // __visible = false;
17
- * ```
18
- */
19
- export declare function InputBoolean(): SafeAny;