@liuk123/insui 0.0.1-alpha.1

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 (40) hide show
  1. package/README.md +63 -0
  2. package/fesm2022/liuk123-insui.mjs +6841 -0
  3. package/fesm2022/liuk123-insui.mjs.map +1 -0
  4. package/index.d.ts +2511 -0
  5. package/package.json +26 -0
  6. package/styles/basic/main.less +48 -0
  7. package/styles/components/appearance.less +39 -0
  8. package/styles/components/avatar.less +108 -0
  9. package/styles/components/button.less +145 -0
  10. package/styles/components/checkbox.less +81 -0
  11. package/styles/components/chip.less +109 -0
  12. package/styles/components/group.less +155 -0
  13. package/styles/components/icon.less +43 -0
  14. package/styles/components/icons.less +38 -0
  15. package/styles/components/label.less +44 -0
  16. package/styles/components/link.less +55 -0
  17. package/styles/components/notification.less +156 -0
  18. package/styles/components/radio.less +58 -0
  19. package/styles/ins-ui-global.css +1109 -0
  20. package/styles/ins-ui-global.less +8 -0
  21. package/styles/markup/ins-list.less +136 -0
  22. package/styles/markup/ins-required.less +13 -0
  23. package/styles/markup/ins-table.less +184 -0
  24. package/styles/mixins/appearance.less +45 -0
  25. package/styles/mixins/mixins.less +172 -0
  26. package/styles/theme/appearance/accent.less +14 -0
  27. package/styles/theme/appearance/action.less +40 -0
  28. package/styles/theme/appearance/flat.less +23 -0
  29. package/styles/theme/appearance/glass.less +17 -0
  30. package/styles/theme/appearance/outline.less +55 -0
  31. package/styles/theme/appearance/primary.less +49 -0
  32. package/styles/theme/appearance/secondary.less +54 -0
  33. package/styles/theme/appearance/status.less +125 -0
  34. package/styles/theme/appearance/textfield.less +48 -0
  35. package/styles/theme/appearance.less +10 -0
  36. package/styles/theme/palette.less +120 -0
  37. package/styles/theme/variables.less +44 -0
  38. package/styles/ui-local.less +4 -0
  39. package/styles/ui-theme.less +6 -0
  40. package/styles/variables/media.less +28 -0
@@ -0,0 +1,49 @@
1
+ @import '../../ui-local.less';
2
+
3
+ [insAppearance][data-appearance='primary'] {
4
+ --t-bg: var(--ins-background-accent-1);
5
+
6
+ background: var(--t-bg);
7
+ color: var(--ins-text-primary-on-accent);
8
+
9
+ &:invalid:not([data-mode]),
10
+ &[data-mode~='invalid'] {
11
+ background: var(--ins-status-negative);
12
+ }
13
+
14
+ .appearance-hover({
15
+ --t-bg: var(--ins-background-accent-1-hover);
16
+ });
17
+
18
+ .appearance-active({
19
+ --t-bg: var(--ins-background-accent-1-pressed);
20
+ });
21
+ }
22
+
23
+ [insAppearance][data-appearance='primary-destructive'] {
24
+ color: #fff;
25
+ background: var(--ins-status-negative);
26
+
27
+ .appearance-hover({
28
+ filter: saturate(1) brightness(1.3);
29
+ });
30
+
31
+ .appearance-active({
32
+ filter: saturate(0.8) brightness(1);
33
+ });
34
+ }
35
+
36
+ [insAppearance][data-appearance='primary-grayscale'] {
37
+ --ins-border-focus: #979797;
38
+
39
+ background: var(--ins-background-accent-opposite);
40
+ color: var(--ins-background-base);
41
+
42
+ .appearance-hover({
43
+ background: var(--ins-background-accent-opposite-hover);
44
+ });
45
+
46
+ .appearance-active({
47
+ background: var(--ins-background-accent-opposite-pressed);
48
+ });
49
+ }
@@ -0,0 +1,54 @@
1
+ @import '../../ui-local.less';
2
+
3
+ [insAppearance][data-appearance='secondary'],
4
+ [insAppearance][data-appearance='secondary-destructive'],
5
+ [insAppearance][data-appearance='secondary-grayscale']{
6
+ background: var(--ins-background-neutral-1);
7
+ color: var(--ins-text-action);
8
+
9
+ .appearance-hover({
10
+ background: var(--ins-background-neutral-1-hover);
11
+ });
12
+
13
+ .appearance-active({
14
+ background: var(--ins-background-neutral-1-pressed);
15
+ });
16
+
17
+ &:checked:not([data-mode]),
18
+ &[data-mode~='checked']
19
+ {
20
+ background: var(--ins-background-accent-1);
21
+ color: var(--ins-text-primary-on-accent);
22
+
23
+ .appearance-hover({
24
+ background: var(--ins-background-accent-1-hover);
25
+ });
26
+
27
+ .appearance-active({
28
+ background: var(--ins-background-accent-1-pressed);
29
+ });
30
+ }
31
+
32
+ &:invalid:not([data-mode]),
33
+ &[data-mode~='invalid'] {
34
+ color: var(--ins-text-negative);
35
+ background: var(--ins-status-negative-pale);
36
+
37
+ .appearance-hover({
38
+ color: var(--ins-text-negative-hover);
39
+ background: var(--ins-status-negative-pale-hover);
40
+ });
41
+
42
+ .appearance-active({
43
+ color: var(--ins-text-negative-hover);
44
+ background: var(--ins-status-negative-pale-hover);
45
+ });
46
+ }
47
+ }
48
+
49
+ [insAppearance][data-appearance='secondary-destructive'] {
50
+ color: var(--ins-text-negative);
51
+ }
52
+ [insAppearance][data-appearance='secondary-grayscale'] {
53
+ color: var(--ins-text-primary);
54
+ }
@@ -0,0 +1,125 @@
1
+ @import '../../ui-local.less';
2
+
3
+ [insAppearance][data-appearance='negative'],
4
+ [insAppearance][data-appearance='positive'],
5
+ [insAppearance][data-appearance='warning'],
6
+ [insAppearance][data-appearance='info'],
7
+ [insAppearance][data-appearance='neutral'] {
8
+ background: var(--t-bg);
9
+ color: var(--ins-text-primary);
10
+
11
+ &:checked:not([data-mode]),
12
+ &[data-mode~='checked'] {
13
+ color: #fff;
14
+ }
15
+ }
16
+
17
+ [insAppearance][data-appearance='negative'] {
18
+ --t-bg: var(--ins-status-negative-pale);
19
+
20
+ &::before,
21
+ &::after {
22
+ color: var(--ins-status-negative);
23
+ }
24
+
25
+ .appearance-hover({
26
+ --t-bg: var(--ins-status-negative-pale-hover);
27
+ });
28
+
29
+ .appearance-active({
30
+ --t-bg: var(--ins-status-negative-pale-hover);
31
+ });
32
+
33
+ &:checked:not([data-mode]),
34
+ &[data-mode~='checked'] {
35
+ background: var(--ins-status-negative);
36
+ }
37
+ }
38
+
39
+ [insAppearance][data-appearance='positive'] {
40
+ --t-bg: var(--ins-status-positive-pale);
41
+
42
+ &::before,
43
+ &::after {
44
+ color: var(--ins-status-positive);
45
+ }
46
+
47
+ .appearance-hover({
48
+ --t-bg: var(--ins-status-positive-pale-hover);
49
+ });
50
+
51
+ .appearance-active({
52
+ --t-bg: var(--ins-status-positive-pale-hover);
53
+ });
54
+
55
+ &:checked:not([data-mode]),
56
+ &[data-mode~='checked'] {
57
+ background: var(--ins-status-positive);
58
+ }
59
+ }
60
+
61
+ [insAppearance][data-appearance='warning'] {
62
+ --t-bg: var(--ins-status-warning-pale);
63
+
64
+ &::before,
65
+ &::after {
66
+ color: var(--ins-status-warning);
67
+ }
68
+
69
+ .appearance-hover({
70
+ --t-bg: var(--ins-status-warning-pale-hover);
71
+ });
72
+
73
+ .appearance-active({
74
+ --t-bg: var(--ins-status-warning-pale-hover);
75
+ });
76
+
77
+ &:checked:not([data-mode]),
78
+ &[data-mode~='checked'] {
79
+ background: var(--ins-status-warning);
80
+ }
81
+ }
82
+
83
+ [insAppearance][data-appearance='info'] {
84
+ --t-bg: var(--ins-status-info-pale);
85
+
86
+ &::before,
87
+ &::after {
88
+ color: var(--ins-status-info);
89
+ }
90
+
91
+ .appearance-hover({
92
+ --t-bg: var(--ins-status-info-pale-hover);
93
+ });
94
+
95
+ .appearance-active({
96
+ --t-bg: var(--ins-status-info-pale-hover);
97
+ });
98
+
99
+ &:checked:not([data-mode]),
100
+ &[data-mode~='checked'] {
101
+ background: var(--ins-status-info);
102
+ }
103
+ }
104
+
105
+ [insAppearance][data-appearance='neutral'] {
106
+ --t-bg: var(--ins-background-neutral-1);
107
+
108
+ &::before,
109
+ &::after {
110
+ color: var(--ins-status-neutral);
111
+ }
112
+
113
+ .appearance-hover({
114
+ --t-bg: var(--ins-background-neutral-1-hover);
115
+ });
116
+
117
+ .appearance-active({
118
+ --t-bg: var(--ins-background-neutral-1-pressed);
119
+ });
120
+
121
+ &:checked:not([data-mode]),
122
+ &[data-mode~='checked'] {
123
+ background: var(--ins-status-neutral);
124
+ }
125
+ }
@@ -0,0 +1,48 @@
1
+ @import '../../ui-local.less';
2
+
3
+ [insAppearance][data-appearance='textfield'] {
4
+ .transition(~'box-shadow, background, outline-color, border-color');
5
+
6
+ --t-shadow: 0 0.125rem 0.1875rem rgba(0, 0, 0, 0.1);
7
+
8
+ background-color: var(--ins-background-base);
9
+ // background-color: inherit;
10
+ color: var(--ins-text-primary);
11
+ box-shadow: var(--t-shadow);
12
+ outline: 1px solid var(--ins-border-normal);
13
+ outline-offset: -1px;
14
+ border: none;
15
+
16
+ .appearance-hover({
17
+ --t-shadow: 0 0.125rem 0.3125rem rgba(0, 0, 0, 0.16);
18
+ });
19
+
20
+ .appearance-focus({
21
+ box-shadow: none;
22
+ outline: 0.125rem solid var(--ins-background-accent-1);
23
+ outline-offset: -0.125rem;
24
+ });
25
+
26
+ .appearance-disabled({
27
+ box-shadow: none;
28
+ });
29
+
30
+ &[data-mode~='invalid'][data-mode~='invalid'],
31
+ &:invalid:not([data-mode]) {
32
+ outline-color: var(--ins-status-negative);
33
+ }
34
+
35
+ &[data-mode~='readonly'],
36
+ input&:read-only:not([data-mode]) {
37
+ // box-shadow: none;
38
+ background: transparent !important;
39
+ box-shadow: none !important;
40
+ outline-color: var(--ins-border-normal) !important;
41
+ }
42
+
43
+ &:-webkit-autofill {
44
+ -webkit-text-fill-color: var(--ins-text-primary) !important;
45
+ box-shadow: 0 0 0 100rem var(--ins-service-autofill-background) inset !important;
46
+ transition: background-color 600000s 0s;
47
+ }
48
+ }
@@ -0,0 +1,10 @@
1
+ @import 'appearance/accent.less';
2
+ @import 'appearance/action.less';
3
+ @import 'appearance/flat.less';
4
+ @import 'appearance/outline.less';
5
+ @import 'appearance/primary.less';
6
+ @import 'appearance/secondary.less';
7
+ @import 'appearance/status.less';
8
+ @import 'appearance/glass.less';
9
+ // Do not add it, we need it separately in proprietary theme
10
+ // @import 'appearance/textfield.less';
@@ -0,0 +1,120 @@
1
+ .dark() {
2
+ // Backgrounds
3
+ --ins-background-base: #222;
4
+ --ins-background-base-alt: #333;
5
+ --ins-background-neutral-1: rgba(255, 255, 255, 0.08);
6
+ --ins-background-neutral-1-hover: rgba(255, 255, 255, 0.16);
7
+ --ins-background-neutral-1-pressed: rgba(255, 255, 255, 0.24);
8
+ --ins-background-accent-opposite: #fff;
9
+ --ins-background-accent-opposite-hover: #f6f6f6;
10
+ --ins-background-accent-opposite-pressed: #ededed;
11
+ --ins-background-elevation-1: #292929;
12
+ --ins-background-elevation-2: #333;
13
+ // Other
14
+ --ins-service-autofill-background: rgb(85, 74, 42);
15
+ --ins-border-normal: rgba(255, 255, 255, 0.14);
16
+ --ins-border-hover: rgba(255, 255, 255, 0.6);
17
+ --ins-border-focus: rgba(255, 255, 255, 0.64);
18
+ // Statuses
19
+ --ins-status-negative: rgba(255, 140, 103, 1);
20
+ --ins-status-negative-pale: rgba(244, 87, 37, 0.32);
21
+ --ins-status-negative-pale-hover: rgba(244, 87, 37, 0.4);
22
+ --ins-status-positive: rgb(74, 201, 155);
23
+ --ins-status-positive-pale: rgba(74, 201, 155, 0.32);
24
+ --ins-status-positive-pale-hover: rgba(74, 201, 155, 0.4);
25
+ --ins-status-warning: rgb(255, 199, 0);
26
+ --ins-status-warning-pale: rgba(255, 199, 0, 0.32);
27
+ --ins-status-warning-pale-hover: rgba(255, 199, 0, 0.4);
28
+ --ins-status-info: rgb(112, 182, 246);
29
+ --ins-status-info-pale: rgba(112, 182, 246, 0.32);
30
+ --ins-status-info-pale-hover: rgba(112, 182, 246, 0.4);
31
+ --ins-status-neutral: rgb(149, 155, 164);
32
+ // Text
33
+ --ins-text-primary: rgba(255, 255, 255, .95);
34
+ --ins-text-secondary: rgba(255, 255, 255, 0.72);
35
+ --ins-text-tertiary: rgba(255, 255, 255, 0.6);
36
+ --ins-text-action: #6788ff;
37
+ --ins-text-action-hover: #526ed3;
38
+ --ins-text-positive: #44c596;
39
+ --ins-text-positive-hover: #3aa981;
40
+ --ins-text-negative: #ff8c67;
41
+ --ins-text-negative-hover: #bb593a;
42
+ }
43
+
44
+ .light() {
45
+ // Backgrounds
46
+ --ins-background-base: #fafafa;
47
+ --ins-background-base-alt: #f6f6f6;
48
+ --ins-background-neutral-1: rgba(0, 0, 0, 0.06);
49
+ --ins-background-neutral-1-hover: rgba(0, 0, 0, 0.1);
50
+ --ins-background-neutral-1-pressed: rgba(0, 0, 0, 0.15);
51
+ --ins-background-accent-1: #526ed3;
52
+ --ins-background-accent-1-hover: #6c86e2;
53
+ --ins-background-accent-1-pressed: #314692;
54
+ --ins-background-accent-2: #ff7043;
55
+ --ins-background-accent-2-hover: #ff9a94;
56
+ --ins-background-accent-2-pressed: #e7716a;
57
+ --ins-background-accent-opposite: #000;
58
+ --ins-background-accent-opposite-hover: #333;
59
+ --ins-background-accent-opposite-pressed: #808080;
60
+ --ins-background-elevation-1: #fafafa; // dialog
61
+ --ins-background-elevation-2: #f3f3f3; // dropdown
62
+
63
+ // Other
64
+ --ins-service-autofill-background: #fff5c0;
65
+ --ins-service-backdrop: rgba(0, 0, 0, 0.45);
66
+ // border
67
+ --ins-border-normal: rgba(0, 0, 0, 0.1);
68
+ --ins-border-hover: rgba(0, 0, 0, 0.25);
69
+ --ins-border-focus: rgba(51, 51, 51, 0.64);
70
+ // Statuses
71
+ --ins-status-negative: rgba(244, 87, 37, 1);
72
+ --ins-status-negative-pale: rgba(244, 87, 37, 0.12);
73
+ --ins-status-negative-pale-hover: rgba(244, 87, 37, 0.24);
74
+ --ins-status-positive: rgba(74, 201, 155, 1);
75
+ --ins-status-positive-pale: rgba(74, 201, 155, 0.12);
76
+ --ins-status-positive-pale-hover: rgba(74, 201, 155, 0.24);
77
+ --ins-status-warning: rgba(255, 199, 0, 1);
78
+ --ins-status-warning-pale: rgba(255, 199, 0, 0.12);
79
+ --ins-status-warning-pale-hover: rgba(255, 199, 0, 0.24);
80
+ --ins-status-info: rgba(112, 182, 246, 1);
81
+ --ins-status-info-pale: rgba(112, 182, 246, 0.12);
82
+ --ins-status-info-pale-hover: rgba(112, 182, 246, 0.24);
83
+ --ins-status-neutral: rgb(121, 129, 140);
84
+ // Text
85
+ --ins-text-primary: rgba(27, 31, 59, 1);
86
+ --ins-text-secondary: rgba(27, 31, 59, 0.65);
87
+ --ins-text-tertiary: rgba(27, 31, 59, 0.4);
88
+ --ins-text-primary-on-accent: #fff;
89
+ --ins-text-action: #4c66c3;
90
+ --ins-text-action-hover: #6c86e2;
91
+ --ins-text-positive: #3aa981;
92
+ --ins-text-positive-hover: #7ac5aa;
93
+ --ins-text-negative: #dd4c1e;
94
+ --ins-text-negative-hover: #e38163;
95
+
96
+ // Shadows 0 0.125rem 0.1875rem rgba(0, 0, 0, 0.1);
97
+ --ins-shadow-small: 0 0.125rem 0.1875rem rgba(0, 0, 0, 0.1);
98
+ --ins-shadow-small-hover: 0 0.125rem 0.1875rem rgba(0, 0, 0, 0.14);
99
+ --ins-shadow-medium: 0 0.125rem 0.55rem rgba(0, 0, 0, 0.12);
100
+ --ins-shadow-medium-hover: 0 1.25rem 4rem rgba(0, 0, 0, 0.18);
101
+ }
102
+
103
+ @media screen {
104
+ [insTheme='dark'] {
105
+ color-scheme: dark;
106
+ .dark();
107
+ }
108
+ &:root{
109
+ color-scheme: light;
110
+ .light();
111
+ }
112
+ }
113
+
114
+ @media print {
115
+ &:root,
116
+ [insTheme] {
117
+ color-scheme: light;
118
+ .light();
119
+ }
120
+ }
@@ -0,0 +1,44 @@
1
+ @font-fallback: -apple-system, BlinkMacSystemFont, system-ui, Roboto, Segoe UI, Helvetica Neue, sans-serif;
2
+ @font-code-fallback: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;
3
+ // @font-fallback: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";
4
+
5
+ &:root {
6
+ // Fonts
7
+ --ins-font-heading: @font-fallback;
8
+ --ins-font-text: @font-fallback;
9
+ --ins-font-code: @font-code-fallback;
10
+ // Heading
11
+ --ins-font-heading-1: 400 2.75rem / 3.5rem var(--ins-font-heading);
12
+ --ins-font-heading-2: 400 2.25rem / 3rem var(--ins-font-heading);
13
+ --ins-font-heading-3: 400 1.75rem / 2.5rem var(--ins-font-heading);
14
+ --ins-font-heading-4: 400 1.5rem / 2rem var(--ins-font-heading);
15
+ --ins-font-heading-5: 400 1.25rem / 1.75rem var(--ins-font-heading);
16
+ --ins-font-heading-6: 400 1.125rem / 1.5rem var(--ins-font-heading);
17
+ // Body
18
+ --ins-font-text-xl: normal 1.5rem / 1.75rem var(--ins-font-text);
19
+ --ins-font-text-l: normal 1.25rem / 1.75rem var(--ins-font-text);
20
+ --ins-font-text-m: normal 1rem / 1.5rem var(--ins-font-text);
21
+ --ins-font-text-s: normal 0.875rem / 1.25rem var(--ins-font-text);
22
+ --ins-font-text-xs: normal 0.7875rem / 1rem var(--ins-font-text);
23
+
24
+ // Radii
25
+ --ins-radius-xs: 0.25rem;
26
+ --ins-radius-s: 0.5rem;
27
+ --ins-radius-m: 0.725rem;
28
+ --ins-radius-l: 1rem;
29
+ --ins-radius-xl: 1.5rem;
30
+ // Sizes
31
+ --ins-height-xs: 1.5rem;
32
+ --ins-height-s: 2rem;
33
+ --ins-height-m: 2.5rem;
34
+ --ins-height-l: 3.25rem;
35
+ // Input padding
36
+ --ins-padding-xs: 0.25rem;
37
+ --ins-padding-s: 0.625rem;
38
+ --ins-padding-m: 1rem;
39
+ --ins-padding-l: 1.5rem;
40
+ --ins-padding-xl: 2rem;
41
+ // Misc
42
+ --ins-duration: 0.3s;
43
+ --ins-disabled-opacity: 0.56;
44
+ }
@@ -0,0 +1,4 @@
1
+ // @import 'mixins/browsers.less';
2
+ @import 'mixins/mixins.less';
3
+ @import 'mixins/appearance.less';
4
+ @import 'variables/media.less';
@@ -0,0 +1,6 @@
1
+ @import 'theme/variables.less';
2
+ @import 'theme/palette.less';
3
+ @import 'theme/appearance.less';
4
+
5
+
6
+ @import 'theme/appearance/textfield.less';
@@ -0,0 +1,28 @@
1
+ /*
2
+ Every max-width of breakpoint is equal:
3
+ next min-width - 60% from 1px (1/16 * 0.6 = 0.0375)
4
+ */
5
+
6
+ @ins-media-retina: ~'(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)';
7
+ @ins-media-retina-mobile: ~'(-webkit-min-device-pixel-ratio: 2) and (max-width: 37.4625em), (min-resolution: 192dpi) and (max-width: 37.4625em)';
8
+ @ins-media-retina-tablet: ~'(-webkit-min-device-pixel-ratio: 2) and (max-width: 63.9625em), (min-resolution: 192dpi) and (max-width: 63.9625em)';
9
+ @ins-media-retina-desktop: ~'(-webkit-min-device-pixel-ratio: 2) and (max-width: 84.9625em), (min-resolution: 192dpi) and (max-width: 84.9625em)';
10
+
11
+ @ins-mobile: ~'screen and (max-width: 47.9625em)';
12
+ @ins-mobile-min: ~'screen and (min-width: 22.5em)';
13
+ @ins-mobile-interval: ~'(min-width: 22.5em) and (max-width: 47.9625em)';
14
+
15
+ @ins-tablet: ~'screen and (max-width: 63.9625em)';
16
+ @ins-tablet-min: ~'screen and (min-width: 48em)';
17
+ @ins-tablet-interval: ~'(min-width: 48em) and (max-width: 63.9625em)';
18
+
19
+ @ins-desktop: ~'screen and (max-width: 79.9625em)';
20
+ @ins-desktop-min: ~'screen and (min-width: 64em)';
21
+ @ins-desktop-interval: ~'(min-width: 64em) and (max-width: 79.9625em)';
22
+
23
+ @ins-desktop-lg-min: ~'screen and (min-width: 80em)';
24
+
25
+ @ins-touch: ~'(hover: none) and (pointer: coarse)';
26
+ @ins-stylus: ~'(hover: none) and (pointer: fine)';
27
+ @ins-pointer: ~'(hover: hover) and (pointer: coarse)';
28
+ @ins-mouse: ~'(hover: hover) and (pointer: fine)';