webcoreui 0.7.0 → 0.8.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 (53) hide show
  1. package/README.md +17 -7
  2. package/astro.d.ts +6 -0
  3. package/astro.js +4 -0
  4. package/components/AspectRatio/aspect-ratio.module.scss +10 -10
  5. package/components/Banner/banner.module.scss +57 -57
  6. package/components/Breadcrumb/breadcrumb.module.scss +26 -26
  7. package/components/Button/button.module.scss +4 -0
  8. package/components/Carousel/carousel.module.scss +1 -1
  9. package/components/Collapsible/collapsible.module.scss +29 -29
  10. package/components/ConditionalWrapper/conditionalwrapper.ts +1 -0
  11. package/components/DataTable/datatable.module.scss +102 -102
  12. package/components/Footer/footer.module.scss +61 -61
  13. package/components/Group/group.module.scss +43 -43
  14. package/components/Kbd/kbd.module.scss +8 -8
  15. package/components/List/list.module.scss +91 -91
  16. package/components/Masonry/masonry.module.scss +1 -1
  17. package/components/Modal/modal.module.scss +110 -110
  18. package/components/Pagination/pagination.module.scss +1 -1
  19. package/components/Popover/popover.module.scss +52 -52
  20. package/components/Ribbon/Ribbon.astro +28 -0
  21. package/components/Ribbon/Ribbon.svelte +26 -0
  22. package/components/Ribbon/Ribbon.tsx +33 -0
  23. package/components/Ribbon/ribbon.module.scss +84 -0
  24. package/components/Ribbon/ribbon.ts +16 -0
  25. package/components/Select/select.module.scss +25 -25
  26. package/components/Sheet/sheet.module.scss +68 -68
  27. package/components/Sidebar/sidebar.module.scss +43 -43
  28. package/components/Skeleton/Skeleton.astro +35 -0
  29. package/components/Skeleton/Skeleton.svelte +31 -0
  30. package/components/Skeleton/Skeleton.tsx +34 -0
  31. package/components/Skeleton/skeleton.module.scss +68 -0
  32. package/components/Skeleton/skeleton.ts +9 -0
  33. package/components/Slider/slider.module.scss +68 -68
  34. package/components/Spoiler/spoiler.module.scss +40 -40
  35. package/components/Stepper/stepper.module.scss +102 -102
  36. package/components/Table/Table.tsx +1 -1
  37. package/components/Textarea/textarea.module.scss +36 -36
  38. package/package.json +2 -2
  39. package/react.d.ts +6 -0
  40. package/react.js +4 -0
  41. package/scss/config/color-palette.scss +2 -0
  42. package/scss/config/css-values.scss +2 -0
  43. package/scss/config/layout.scss +2 -0
  44. package/scss/config/mixins.scss +7 -0
  45. package/scss/config/typography.scss +2 -0
  46. package/scss/config/variables.scss +2 -0
  47. package/scss/config.scss +7 -7
  48. package/scss/global.scss +4 -4
  49. package/scss/index.scss +3 -3
  50. package/scss/resets.scss +5 -5
  51. package/scss/setup.scss +7 -1
  52. package/svelte.d.ts +6 -0
  53. package/svelte.js +4 -0
@@ -0,0 +1,68 @@
1
+ @use '../../scss/config.scss' as *;
2
+
3
+ body {
4
+ --w-skeleton-color: var(--w-color-primary-60);
5
+ --w-skeleton-wave-color: var(--w-color-primary-50);
6
+ }
7
+
8
+ .skeleton {
9
+ @include background(var(--w-skeleton-color));
10
+ @include size(100%);
11
+
12
+ text-indent: -9999px;
13
+
14
+ &.wave {
15
+ @include position(relative);
16
+ @include visibility(hidden);
17
+
18
+ &::after {
19
+ @include position(absolute, t0);
20
+ @include visibility(block);
21
+ @include size('w200px', 'h100%');
22
+
23
+ content: '';
24
+ left: -200px;
25
+ animation: wave 1s cubic-bezier(0.4, 0.0, 0.2, 1) infinite;
26
+ background: linear-gradient(
27
+ to right,
28
+ transparent 0%,
29
+ var(--w-skeleton-wave-color) 50%,
30
+ transparent 100%
31
+ );
32
+ }
33
+ }
34
+
35
+ &.pulse {
36
+ animation: pulse 1.3s cubic-bezier(0.4, 0.0, 0.2, 1) infinite;
37
+ }
38
+
39
+ &.rounded {
40
+ @include border-radius();
41
+ }
42
+
43
+ &.circle {
44
+ @include border-radius(max);
45
+ }
46
+ }
47
+
48
+ @keyframes wave {
49
+ from {
50
+ left: -200px;
51
+ }
52
+ to {
53
+ left: 100%;
54
+ }
55
+ }
56
+
57
+
58
+ @keyframes pulse {
59
+ 0% {
60
+ @include visibility(1);
61
+ }
62
+ 50% {
63
+ @include visibility(.7);
64
+ }
65
+ 100% {
66
+ @include visibility(1);
67
+ }
68
+ }
@@ -0,0 +1,9 @@
1
+ export type SkeletonProps = {
2
+ animate?: 'wave' | 'pulse' | false
3
+ type?: 'rounded' | 'rectangular' | 'circle'
4
+ width?: number
5
+ height?: number
6
+ color?: string
7
+ waveColor?: string
8
+ className?: string
9
+ }
@@ -1,68 +1,68 @@
1
- @import '../../scss/config.scss';
2
-
3
- body {
4
- --w-slider-background: var(--w-color-primary-50);
5
- --w-slider-color: var(--w-color-primary);
6
- --w-slider-thumb: var(--w-color-primary-50);
7
- }
8
-
9
- .slider {
10
- @include border-radius(xl);
11
- @include size('w100%');
12
- @include visibility(hidden);
13
- @include size(h10px);
14
- @include spacing(m0);
15
-
16
- -webkit-appearance: none;
17
- appearance: none;
18
- cursor: pointer;
19
-
20
- &[disabled]::-webkit-slider-runnable-track {
21
- @include background(primary-50);
22
- }
23
-
24
- &[disabled]::-moz-range-track {
25
- @include background(primary-50);
26
- }
27
-
28
- &[disabled]::-webkit-slider-thumb {
29
- @include background(primary-50);
30
- @include border(primary-30);
31
- box-shadow: -995px 0 0 990px var(--w-color-primary-30);
32
- }
33
-
34
- &[disabled]::-moz-range-thumb {
35
- @include background(primary-50);
36
- @include border(primary-30);
37
- box-shadow: -995px 0 0 990px var(--w-color-primary-30);
38
- }
39
- }
40
-
41
- .slider::-webkit-slider-runnable-track {
42
- @include background(var(--w-slider-background));
43
- }
44
-
45
- .slider::-moz-range-track {
46
- @include background(var(--w-slider-background));
47
- @include size(h10px);
48
- }
49
-
50
- .slider::-webkit-slider-thumb {
51
- @include background(var(--w-slider-thumb));
52
- @include size(10px);
53
- @include border-radius(max);
54
- @include border(var(--w-slider-color));
55
-
56
- -webkit-appearance: none;
57
- appearance: none;
58
- box-shadow: -995px 0 0 990px var(--w-slider-color);
59
- }
60
-
61
- .slider::-moz-range-thumb {
62
- @include background(var(--w-slider-thumb));
63
- @include size(9px);
64
- @include border-radius(max);
65
- @include border(var(--w-slider-color));
66
-
67
- box-shadow: -995px 0 0 990px var(--w-slider-color);
68
- }
1
+ @use '../../scss/config.scss' as *;
2
+
3
+ body {
4
+ --w-slider-background: var(--w-color-primary-50);
5
+ --w-slider-color: var(--w-color-primary);
6
+ --w-slider-thumb: var(--w-color-primary-50);
7
+ }
8
+
9
+ .slider {
10
+ @include border-radius(xl);
11
+ @include size('w100%');
12
+ @include visibility(hidden);
13
+ @include size(h10px);
14
+ @include spacing(m0);
15
+
16
+ -webkit-appearance: none;
17
+ appearance: none;
18
+ cursor: pointer;
19
+
20
+ &[disabled]::-webkit-slider-runnable-track {
21
+ @include background(primary-50);
22
+ }
23
+
24
+ &[disabled]::-moz-range-track {
25
+ @include background(primary-50);
26
+ }
27
+
28
+ &[disabled]::-webkit-slider-thumb {
29
+ @include background(primary-50);
30
+ @include border(primary-30);
31
+ box-shadow: -995px 0 0 990px var(--w-color-primary-30);
32
+ }
33
+
34
+ &[disabled]::-moz-range-thumb {
35
+ @include background(primary-50);
36
+ @include border(primary-30);
37
+ box-shadow: -995px 0 0 990px var(--w-color-primary-30);
38
+ }
39
+ }
40
+
41
+ .slider::-webkit-slider-runnable-track {
42
+ @include background(var(--w-slider-background));
43
+ }
44
+
45
+ .slider::-moz-range-track {
46
+ @include background(var(--w-slider-background));
47
+ @include size(h10px);
48
+ }
49
+
50
+ .slider::-webkit-slider-thumb {
51
+ @include background(var(--w-slider-thumb));
52
+ @include size(10px);
53
+ @include border-radius(max);
54
+ @include border(var(--w-slider-color));
55
+
56
+ -webkit-appearance: none;
57
+ appearance: none;
58
+ box-shadow: -995px 0 0 990px var(--w-slider-color);
59
+ }
60
+
61
+ .slider::-moz-range-thumb {
62
+ @include background(var(--w-slider-thumb));
63
+ @include size(9px);
64
+ @include border-radius(max);
65
+ @include border(var(--w-slider-color));
66
+
67
+ box-shadow: -995px 0 0 990px var(--w-slider-color);
68
+ }
@@ -1,40 +1,40 @@
1
- @import '../../scss/config.scss';
2
-
3
- body {
4
- --w-spoiler-color: var(--w-color-primary);
5
- }
6
-
7
- span.spoiler {
8
- @include border-radius();
9
- @include background(var(--w-spoiler-color));
10
- @include typography(hmd);
11
- @include visibility(inline);
12
-
13
- color: transparent;
14
- user-select: none;
15
- cursor: pointer;
16
-
17
- &.anim {
18
- @include transition();
19
- }
20
-
21
- &.block {
22
- @include visibility(block);
23
- }
24
-
25
- code {
26
- @include border(0);
27
- }
28
-
29
- &[data-visible] {
30
- @include background(transparent);
31
-
32
- color: inherit;
33
- user-select: auto;
34
- cursor: auto;
35
-
36
- code {
37
- @include border(primary-50);
38
- }
39
- }
40
- }
1
+ @use '../../scss/config.scss' as *;
2
+
3
+ body {
4
+ --w-spoiler-color: var(--w-color-primary);
5
+ }
6
+
7
+ span.spoiler {
8
+ @include border-radius();
9
+ @include background(var(--w-spoiler-color));
10
+ @include typography(hmd);
11
+ @include visibility(inline);
12
+
13
+ color: transparent;
14
+ user-select: none;
15
+ cursor: pointer;
16
+
17
+ &.anim {
18
+ @include transition();
19
+ }
20
+
21
+ &.block {
22
+ @include visibility(block);
23
+ }
24
+
25
+ code {
26
+ @include border(0);
27
+ }
28
+
29
+ &[data-visible] {
30
+ @include background(transparent);
31
+
32
+ color: inherit;
33
+ user-select: auto;
34
+ cursor: auto;
35
+
36
+ code {
37
+ @include border(primary-50);
38
+ }
39
+ }
40
+ }
@@ -1,102 +1,102 @@
1
- @import '../../scss/config.scss';
2
-
3
- body {
4
- --w-stepper-color-border: var(--w-color-primary-50);
5
- --w-stepper-color-active: var(--w-color-info);
6
- --w-stepper-color-complete: var(--w-color-success);
7
- }
8
-
9
- $size: 20px;
10
-
11
- .stepper {
12
- @include layout(flex, default, column);
13
- @include spacing(0);
14
- @include size('w100%');
15
-
16
- list-style-type: none;
17
-
18
- &:not(.borderless) .number {
19
- border: 2px solid var(--w-stepper-color-border);
20
- }
21
-
22
- li {
23
- @include layout(flex, sm, v-center);
24
- @include typography(normal);
25
- @include spacing(m0);
26
-
27
- flex: 1;
28
-
29
- &.connect {
30
- @include position(relative);
31
-
32
- &::before {
33
- @include position(absolute, l16px);
34
- @include background(var(--w-stepper-color-border));
35
- @include size(w2px);
36
-
37
- top: -50%;
38
- bottom: calc(50% + $size);
39
-
40
- content: '';
41
- }
42
-
43
- &.completed::before,
44
- &.active::before {
45
- @include background(var(--w-stepper-color-complete));
46
- }
47
- }
48
-
49
- &.active .number {
50
- border-color: var(--w-stepper-color-active);
51
- color: var(--w-stepper-color-active);
52
- }
53
-
54
- &.completed .number {
55
- border-color: var(--w-stepper-color-complete);
56
- color: var(--w-stepper-color-complete);
57
- }
58
-
59
- .number {
60
- @include size($size);
61
- @include border-radius(max);
62
- @include layout(flex, center);
63
- @include spacing(p-md);
64
- @include typography(bold, md);
65
-
66
- svg {
67
- @include position(absolute);
68
- }
69
- }
70
-
71
- .container {
72
- @include layout(flex, column);
73
- }
74
-
75
- .muted {
76
- @include typography(primary-20, md);
77
- }
78
- }
79
- }
80
-
81
- @include media(xs) {
82
- .stepper:not(.vertical) {
83
- @include layout(row);
84
-
85
- li {
86
- @include layout(column, xs, v-center);
87
-
88
- &.connect::before {
89
- @include size(h2px);
90
-
91
- width: auto;
92
- top: 16px;
93
- left: calc(-50%);
94
- right: calc(50% + $size);
95
- }
96
-
97
- .container {
98
- @include layout(v-center);
99
- }
100
- }
101
- }
102
- }
1
+ @use '../../scss/config.scss' as *;
2
+
3
+ body {
4
+ --w-stepper-color-border: var(--w-color-primary-50);
5
+ --w-stepper-color-active: var(--w-color-info);
6
+ --w-stepper-color-complete: var(--w-color-success);
7
+ }
8
+
9
+ $size: 20px;
10
+
11
+ .stepper {
12
+ @include layout(flex, default, column);
13
+ @include spacing(0);
14
+ @include size('w100%');
15
+
16
+ list-style-type: none;
17
+
18
+ &:not(.borderless) .number {
19
+ border: 2px solid var(--w-stepper-color-border);
20
+ }
21
+
22
+ li {
23
+ @include layout(flex, sm, v-center);
24
+ @include typography(normal);
25
+ @include spacing(m0);
26
+
27
+ flex: 1;
28
+
29
+ &.connect {
30
+ @include position(relative);
31
+
32
+ &::before {
33
+ @include position(absolute, l16px);
34
+ @include background(var(--w-stepper-color-border));
35
+ @include size(w2px);
36
+
37
+ top: -50%;
38
+ bottom: calc(50% + $size);
39
+
40
+ content: '';
41
+ }
42
+
43
+ &.completed::before,
44
+ &.active::before {
45
+ @include background(var(--w-stepper-color-complete));
46
+ }
47
+ }
48
+
49
+ &.active .number {
50
+ border-color: var(--w-stepper-color-active);
51
+ color: var(--w-stepper-color-active);
52
+ }
53
+
54
+ &.completed .number {
55
+ border-color: var(--w-stepper-color-complete);
56
+ color: var(--w-stepper-color-complete);
57
+ }
58
+
59
+ .number {
60
+ @include size($size);
61
+ @include border-radius(max);
62
+ @include layout(flex, center);
63
+ @include spacing(p-md);
64
+ @include typography(bold, md);
65
+
66
+ svg {
67
+ @include position(absolute);
68
+ }
69
+ }
70
+
71
+ .container {
72
+ @include layout(flex, column);
73
+ }
74
+
75
+ .muted {
76
+ @include typography(primary-20, md);
77
+ }
78
+ }
79
+ }
80
+
81
+ @include media(xs) {
82
+ .stepper:not(.vertical) {
83
+ @include layout(row);
84
+
85
+ li {
86
+ @include layout(column, xs, v-center);
87
+
88
+ &.connect::before {
89
+ @include size(h2px);
90
+
91
+ width: auto;
92
+ top: 16px;
93
+ left: calc(-50%);
94
+ right: calc(50% + $size);
95
+ }
96
+
97
+ .container {
98
+ @include layout(v-center);
99
+ }
100
+ }
101
+ }
102
+ }
@@ -27,7 +27,7 @@ const Table = ({
27
27
  ])
28
28
 
29
29
  const styleVariables = {
30
- ...(maxHeight && { 'max-height': maxHeight })
30
+ ...(maxHeight && { maxHeight })
31
31
  } as React.CSSProperties
32
32
 
33
33
  return (
@@ -1,36 +1,36 @@
1
- @import '../../scss/config.scss';
2
-
3
- .textarea {
4
- @include size('w100%');
5
- @include background(transparent);
6
- @include border-radius(sm);
7
- @include border(primary-50);
8
- @include spacing(p-sm);
9
- @include typography(regular, primary, hlg);
10
-
11
- min-height: 50px;
12
- resize: vertical;
13
-
14
- &[disabled] {
15
- @include typography(primary-30);
16
- cursor: no-drop;
17
- }
18
-
19
- &::placeholder {
20
- @include typography(primary-30);
21
- }
22
- }
23
-
24
- .label-wrapper {
25
- @include layout(flex, column);
26
-
27
- .label {
28
- @include typography(primary-20);
29
- @include spacing(mb-xs);
30
- }
31
-
32
- .subtext {
33
- @include typography(md, primary-30);
34
- @include spacing(mt-xs);
35
- }
36
- }
1
+ @use '../../scss/config.scss' as *;
2
+
3
+ .textarea {
4
+ @include size('w100%');
5
+ @include background(transparent);
6
+ @include border-radius(sm);
7
+ @include border(primary-50);
8
+ @include spacing(p-sm);
9
+ @include typography(regular, primary, hlg);
10
+
11
+ min-height: 50px;
12
+ resize: vertical;
13
+
14
+ &[disabled] {
15
+ @include typography(primary-30);
16
+ cursor: no-drop;
17
+ }
18
+
19
+ &::placeholder {
20
+ @include typography(primary-30);
21
+ }
22
+ }
23
+
24
+ .label-wrapper {
25
+ @include layout(flex, column);
26
+
27
+ .label {
28
+ @include typography(primary-20);
29
+ @include spacing(mb-xs);
30
+ }
31
+
32
+ .subtext {
33
+ @include typography(md, primary-30);
34
+ @include spacing(mt-xs);
35
+ }
36
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "webcoreui",
3
3
  "type": "module",
4
- "version": "0.7.0",
4
+ "version": "0.8.0",
5
5
  "scripts": {
6
6
  "prepare": "husky",
7
7
  "pre-commit": "lint-staged",
@@ -30,7 +30,7 @@
30
30
  "lint-staged": "15.2.9",
31
31
  "react": "18.3.1",
32
32
  "react-dom": "18.3.1",
33
- "sass": "1.77.5",
33
+ "sass": "1.80.6",
34
34
  "svelte": "4.2.19",
35
35
  "svelte-eslint-parser": "0.41.0",
36
36
  "typescript": "5.4.5",
package/react.d.ts CHANGED
@@ -27,9 +27,11 @@ import type { ReactPopoverProps as WReactPopoverProps } from './components/Popov
27
27
  import type { ProgressProps as WProgressProps } from './components/Progress/progress'
28
28
  import type { ReactRadioProps as WReactRadioProps } from './components/Radio/radio'
29
29
  import type { RatingProps as WRatingProps } from './components/Rating/rating'
30
+ import type { ReactRibbonProps as WReactRibbonProps } from './components/Ribbon/ribbon'
30
31
  import type { ReactSelectProps as WReactSelectProps } from './components/Select/select'
31
32
  import type { ReactSheetProps as WReactSheetProps } from './components/Sheet/sheet'
32
33
  import type { ReactSidebarProps as WReactSidebarProps } from './components/Sidebar/sidebar'
34
+ import type { SkeletonProps as WSkeletonProps } from './components/Skeleton/skeleton'
33
35
  import type { ReactSliderProps as WReactSliderProps } from './components/Slider/slider'
34
36
  import type { SpinnerProps as WSpinnerProps } from './components/Spinner/spinner'
35
37
  import type { ReactSpoilerProps as WReactSpoilerProps } from './components/Spoiler/spoiler'
@@ -72,9 +74,11 @@ declare module 'webcoreui/react' {
72
74
  export const Progress: FC<WProgressProps>
73
75
  export const Radio: FC<WReactRadioProps>
74
76
  export const Rating: FC<WRatingProps>
77
+ export const Ribbon: FC<WReactRibbonProps>
75
78
  export const Select: FC<WReactSelectProps>
76
79
  export const Sheet: FC<WReactSheetProps>
77
80
  export const Sidebar: FC<WReactSidebarProps>
81
+ export const Skeleton: FC<WSkeletonProps>
78
82
  export const Slider: FC<WReactSliderProps>
79
83
  export const Spinner: FC<WSpinnerProps>
80
84
  export const Spoiler: FC<WReactSpoilerProps>
@@ -116,9 +120,11 @@ declare module 'webcoreui/react' {
116
120
  export type ProgressProps = WProgressProps
117
121
  export type RadioProps = WReactRadioProps
118
122
  export type RatingProps = WRatingProps
123
+ export type RibbonProps = WReactRibbonProps
119
124
  export type SelectProps = WReactSelectProps
120
125
  export type SheetProps = WReactSheetProps
121
126
  export type SidebarProps = WReactSidebarProps
127
+ export type SkeletonProps = WSkeletonProps
122
128
  export type SliderProps = WReactSliderProps
123
129
  export type SpinnerProps = WSpinnerProps
124
130
  export type SpoilerProps = WReactSpoilerProps
package/react.js CHANGED
@@ -26,9 +26,11 @@ import PopoverComponent from './components/Popover/Popover.tsx'
26
26
  import ProgressComponent from './components/Progress/Progress.tsx'
27
27
  import RadioComponent from './components/Radio/Radio.tsx'
28
28
  import RatingComponent from './components/Rating/Rating.tsx'
29
+ import RibbonComponent from './components/Ribbon/Ribbon.tsx'
29
30
  import SelectComponent from './components/Select/Select.tsx'
30
31
  import SheetComponent from './components/Sheet/Sheet.tsx'
31
32
  import SidebarComponent from './components/Sidebar/Sidebar.tsx'
33
+ import SkeletonComponent from './components/Skeleton/Skeleton.tsx'
32
34
  import SliderComponent from './components/Slider/Slider.tsx'
33
35
  import SpinnerComponent from './components/Spinner/Spinner.tsx'
34
36
  import SpoilerComponent from './components/Spoiler/Spoiler.tsx'
@@ -70,9 +72,11 @@ export const Popover = PopoverComponent
70
72
  export const Progress = ProgressComponent
71
73
  export const Radio = RadioComponent
72
74
  export const Rating = RatingComponent
75
+ export const Ribbon = RibbonComponent
73
76
  export const Select = SelectComponent
74
77
  export const Sheet = SheetComponent
75
78
  export const Sidebar = SidebarComponent
79
+ export const Skeleton = SkeletonComponent
76
80
  export const Slider = SliderComponent
77
81
  export const Spinner = SpinnerComponent
78
82
  export const Spoiler = SpoilerComponent
@@ -1,3 +1,5 @@
1
+ @use 'webcore.config.scss' as *;
2
+
1
3
  $colorPalette: (
2
4
  'primary': var(--w-color-primary),
3
5
  'primary-10': var(--w-color-primary-10),
@@ -1,3 +1,5 @@
1
+ @use 'webcore.config.scss' as *;
2
+
1
3
  $overflowValues: auto,
2
4
  hidden,
3
5
  overlay,