@ship-ui/core 0.13.2

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/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/assets/fonts/InterTight-VariableFont_wght.woff2 +0 -0
  4. package/bin/ship-fg-node +40 -0
  5. package/bin/ship-fg.ts +40 -0
  6. package/bin/src/ship-fg-node.js +344 -0
  7. package/bin/src/ship-fg.ts +368 -0
  8. package/bin/src/utilities.js +53 -0
  9. package/bin/src/utilities.ts +98 -0
  10. package/bin/tsconfig.app.json +15 -0
  11. package/fesm2022/ship-ui-core.mjs +5373 -0
  12. package/fesm2022/ship-ui-core.mjs.map +1 -0
  13. package/index.d.ts +758 -0
  14. package/package.json +52 -0
  15. package/styles/components/ship-alert-container.component.scss +49 -0
  16. package/styles/components/ship-alert.component.scss +273 -0
  17. package/styles/components/ship-button-group.component.scss +63 -0
  18. package/styles/components/ship-button.component.scss +330 -0
  19. package/styles/components/ship-card.component.scss +54 -0
  20. package/styles/components/ship-checkbox.component.scss +245 -0
  21. package/styles/components/ship-chip.component.scss +290 -0
  22. package/styles/components/ship-color-picker.component.scss +78 -0
  23. package/styles/components/ship-datepicker.component.scss +274 -0
  24. package/styles/components/ship-dialog.component.scss +119 -0
  25. package/styles/components/ship-divider.component.scss +27 -0
  26. package/styles/components/ship-file-upload.component.scss +47 -0
  27. package/styles/components/ship-form-field.component.scss +334 -0
  28. package/styles/components/ship-icon.component.scss +54 -0
  29. package/styles/components/ship-list.component.scss +148 -0
  30. package/styles/components/ship-menu.component.scss +217 -0
  31. package/styles/components/ship-popover.component.scss +66 -0
  32. package/styles/components/ship-progress-bar.component.scss +173 -0
  33. package/styles/components/ship-radio.component.scss +182 -0
  34. package/styles/components/ship-range-slider.component.scss +412 -0
  35. package/styles/components/ship-select.component.scss +139 -0
  36. package/styles/components/ship-sidenav.component.scss +192 -0
  37. package/styles/components/ship-sortable.component.scss +54 -0
  38. package/styles/components/ship-spinner.component.scss +53 -0
  39. package/styles/components/ship-stepper.component.scss +138 -0
  40. package/styles/components/ship-table.component.scss +402 -0
  41. package/styles/components/ship-tabs.component.scss +86 -0
  42. package/styles/components/ship-toggle-card.component.scss +71 -0
  43. package/styles/components/ship-toggle.component.scss +238 -0
  44. package/styles/components/ship-tooltip.component.scss +175 -0
  45. package/styles/components/ship-virtual-scroll.component.scss +12 -0
  46. package/styles/components/sparkle-checkbox.component.scss +245 -0
  47. package/styles/components/sparkle-select.component.scss +139 -0
  48. package/styles/core/apexcharts/apexcharts.scss +58 -0
  49. package/styles/core/core/layout.scss +74 -0
  50. package/styles/core/core/loader.scss +63 -0
  51. package/styles/core/core/palette-variables.scss +352 -0
  52. package/styles/core/core/typography.scss +103 -0
  53. package/styles/core/core/variables.scss +188 -0
  54. package/styles/core/core.scss +4 -0
  55. package/styles/core/fonts/_inter-tight.scss +11 -0
  56. package/styles/core/helpers/fn/color-mix.scss +7 -0
  57. package/styles/core/helpers/fn/dp.scss +14 -0
  58. package/styles/core/helpers/fn/p2r.scss +23 -0
  59. package/styles/core/helpers/mixins/border-gradient.scss +61 -0
  60. package/styles/core/helpers/mixins/breakpoint.scss +217 -0
  61. package/styles/core/helpers/mixins/ellipsis.scss +7 -0
  62. package/styles/core/helpers/mixins/overflow-scrolling.scss +18 -0
  63. package/styles/core/helpers/mixins/wrapper.scss +16 -0
  64. package/styles/core/polyfill/light-dark.scss +3 -0
  65. package/styles/helpers.scss +13 -0
  66. package/styles/index.scss +146 -0
@@ -0,0 +1,290 @@
1
+ @use '../helpers.scss' as *;
2
+
3
+ $shipChip: true !default;
4
+ $shipChipShadow: false !default;
5
+
6
+ @if $shipChip == true {
7
+ sh-chip {
8
+ --chip-h: #{p2r(32)};
9
+ --chip-s: calc(var(--chip-h) / 2);
10
+ --chip-c: var(--base-12);
11
+ --chip-ic: var(--base-12);
12
+ --chip-bg: var(--base-1);
13
+ --chip-bc: var(--base-4);
14
+
15
+ @if $shipChipShadow != false {
16
+ --chip-bs: var(--box-shadow-10);
17
+ } @else {
18
+ --chip-bs: none;
19
+ }
20
+
21
+ display: inline-flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ padding: p2r(0 12);
25
+
26
+ font: var(--paragraph-30B);
27
+ height: var(--chip-h);
28
+ border-radius: var(--chip-s);
29
+ border: 1px solid var(--chip-bc);
30
+ box-shadow: var(--chip-bs);
31
+ background: var(--chip-bg);
32
+ white-space: nowrap;
33
+
34
+ div {
35
+ display: flex;
36
+ align-items: center;
37
+ gap: p2r(8);
38
+ color: var(--chip-c);
39
+ }
40
+
41
+ &.dynamic.simple,
42
+ &.dynamic {
43
+ // TODO investigate
44
+ // - if we can make the text if on a light colored background same color as the background but much darker
45
+ // - if we can make the text if on a dark colored background same color as the background but much lighter
46
+ // div {
47
+ // color: var(--chip-bg);
48
+ // filter: invert(1) grayscale(1) brightness(1.3) contrast(8000);
49
+ // mix-blend-mode: luminosity;
50
+ // opacity: 1;
51
+
52
+ // sh-icon {
53
+ // color: inherit;
54
+ // }
55
+ // }
56
+
57
+ // position: relative;
58
+ // overflow: hidden;
59
+
60
+ // &:before {
61
+ // content: '';
62
+ // position: absolute;
63
+ // inset: 0;
64
+ // background-color: var(--chip-c);
65
+ // opacity: 0.1;
66
+ // z-index: 0;
67
+ // }
68
+ border-color: transparent;
69
+ --chip-bg: rgb(from var(--chip-c) r g b / 0.14);
70
+ color: var(--chip-c);
71
+ sh-icon {
72
+ color: inherit;
73
+ }
74
+ }
75
+
76
+ &.sharp {
77
+ --chip-s: calc(var(--chip-h) / 4);
78
+ padding: p2r(0 8);
79
+
80
+ &.small {
81
+ padding: p2r(0 6);
82
+ }
83
+ }
84
+
85
+ sh-icon {
86
+ color: var(--chip-ic);
87
+ font-size: p2r(16);
88
+ font-weight: inherit;
89
+ }
90
+
91
+ [avatar] {
92
+ height: calc(var(--chip-h) - #{p2r(12)});
93
+ width: calc(var(--chip-h) - #{p2r(12)});
94
+ border-radius: 50%;
95
+ }
96
+
97
+ &.small {
98
+ --chip-h: #{p2r(24)};
99
+
100
+ font: var(--paragraph-40B);
101
+ padding: p2r(0 8);
102
+
103
+ div {
104
+ gap: p2r(4);
105
+ }
106
+
107
+ sh-icon {
108
+ font-size: p2r(12);
109
+ }
110
+ }
111
+
112
+ &[disabled] {
113
+ opacity: 0.5;
114
+ }
115
+
116
+ &[read-only],
117
+ &[read-only='true'],
118
+ &[readonly='true'],
119
+ &[readonly],
120
+ &.readonly {
121
+ pointer-events: none;
122
+ user-select: none;
123
+ }
124
+
125
+ &.primary {
126
+ --chip-ic: var(--primary-8);
127
+ }
128
+
129
+ &.accent {
130
+ --chip-ic: var(--accent-8);
131
+ }
132
+
133
+ &.warn {
134
+ --chip-ic: var(--warn-8);
135
+ }
136
+
137
+ &.error {
138
+ --chip-ic: var(--error-8);
139
+ }
140
+
141
+ &.success {
142
+ --chip-ic: var(--success-8);
143
+ }
144
+
145
+ &.simple,
146
+ &.outlined {
147
+ --chip-c: var(--base-12);
148
+ --chip-bg: var(--base-2);
149
+
150
+ transition: color 80ms linear;
151
+
152
+ &.primary {
153
+ --loader-c: var(--primary-8);
154
+
155
+ --chip-bg: var(--primary-1);
156
+ --chip-bc: var(--primary-4);
157
+ }
158
+
159
+ &.accent {
160
+ --loader-c: var(--accent-8);
161
+
162
+ --chip-bg: var(--accent-1);
163
+ --chip-bc: var(--accent-4);
164
+ }
165
+
166
+ &.warn {
167
+ --loader-c: var(--warn-8);
168
+
169
+ --chip-bg: var(--warn-1);
170
+ --chip-bc: var(--warn-4);
171
+ }
172
+
173
+ &.error {
174
+ --loader-c: var(--error-8);
175
+
176
+ --chip-bg: var(--error-1);
177
+ --chip-bc: var(--error-4);
178
+ }
179
+
180
+ &.success {
181
+ --loader-c: var(--success-8);
182
+
183
+ --chip-bg: var(--success-1);
184
+ --chip-bc: var(--success-4);
185
+ }
186
+ }
187
+
188
+ &.simple {
189
+ --chip-c: var(--base-12);
190
+ --chip-bg: var(--base-3);
191
+ --chip-bc: var(--chip-bg);
192
+
193
+ transition: color 80ms linear;
194
+
195
+ &.primary {
196
+ --chip-c: var(--primary-8);
197
+ --chip-bc: var(--chip-bg);
198
+ }
199
+
200
+ &.accent {
201
+ --chip-c: var(--accent-8);
202
+ --chip-bc: var(--chip-bg);
203
+ }
204
+
205
+ &.warn {
206
+ --chip-c: var(--warn-8);
207
+ --chip-bc: var(--chip-bg);
208
+ }
209
+
210
+ &.error {
211
+ --chip-c: var(--error-8);
212
+ --chip-bc: var(--chip-bg);
213
+ }
214
+
215
+ &.success {
216
+ --chip-c: var(--success-8);
217
+ --chip-bc: var(--chip-bg);
218
+ }
219
+ }
220
+
221
+ &.flat {
222
+ --loader-c: var(--base-1);
223
+ --chip-c: #fff;
224
+ --chip-ic: #fff;
225
+ --chip-bg: var(--base-8);
226
+
227
+ border: 0;
228
+
229
+ &.primary {
230
+ --chip-c: var(--primary-c8);
231
+ --chip-bg: var(--primary-8);
232
+ }
233
+
234
+ &.accent {
235
+ --chip-c: var(--accent-c8);
236
+ --chip-bg: var(--accent-8);
237
+ }
238
+
239
+ &.warn {
240
+ --chip-c: var(--warn-c8);
241
+ --chip-bg: var(--warn-8);
242
+ }
243
+
244
+ &.error {
245
+ --chip-c: var(--error-c8);
246
+ --chip-bg: var(--error-8);
247
+ }
248
+
249
+ &.success {
250
+ --chip-c: var(--success-c8);
251
+ --chip-bg: var(--success-8);
252
+ }
253
+ }
254
+
255
+ &.raised {
256
+ --loader-c: var(--base-1);
257
+ --chip-c: #fff;
258
+ --chip-ic: #fff;
259
+ --chip-bg: var(--base-g6);
260
+
261
+ border: 0;
262
+ box-shadow: none;
263
+
264
+ &.primary {
265
+ --chip-c: var(--primary-c8);
266
+ --chip-bg: var(--primary-g2);
267
+ }
268
+
269
+ &.accent {
270
+ --chip-c: var(--accent-c8);
271
+ --chip-bg: var(--accent-g2);
272
+ }
273
+
274
+ &.warn {
275
+ --chip-c: var(--warn-c8);
276
+ --chip-bg: var(--warn-g2);
277
+ }
278
+
279
+ &.error {
280
+ --chip-c: var(--error-c8);
281
+ --chip-bg: var(--error-g2);
282
+ }
283
+
284
+ &.success {
285
+ --chip-c: var(--success-c8);
286
+ --chip-bg: var(--success-g2);
287
+ }
288
+ }
289
+ }
290
+ }
@@ -0,0 +1,78 @@
1
+ @use '../helpers.scss' as *;
2
+
3
+ $shipColorPicker: true !default;
4
+
5
+ @if $shipColorPicker == true {
6
+ sh-color-picker {
7
+ position: relative;
8
+ display: block;
9
+ width: p2r(300);
10
+ height: p2r(300);
11
+
12
+ canvas {
13
+ background-image:
14
+ linear-gradient(45deg, #808080 25%, transparent 25%), linear-gradient(-45deg, #808080 25%, transparent 25%),
15
+ linear-gradient(45deg, transparent 75%, #808080 75%), linear-gradient(-45deg, transparent 75%, #808080 75%);
16
+ background-size: 20px 20px;
17
+ background-position:
18
+ 0 0,
19
+ 0 10px,
20
+ 10px -10px,
21
+ -10px 0px;
22
+ }
23
+
24
+ &.hsl canvas {
25
+ border-radius: 100%;
26
+ overflow: hidden;
27
+ }
28
+
29
+ &.saturation:not(.vertical),
30
+ &.hue:not(.vertical) {
31
+ height: p2r(20);
32
+ border-radius: var(--shape-2);
33
+
34
+ canvas {
35
+ border-radius: var(--shape-2);
36
+ }
37
+
38
+ .marker {
39
+ top: 50% !important;
40
+ }
41
+ }
42
+
43
+ &.saturation.vertical,
44
+ &.hue.vertical {
45
+ width: p2r(20);
46
+ border-radius: var(--shape-2);
47
+
48
+ canvas {
49
+ border-radius: var(--shape-2);
50
+ }
51
+
52
+ .marker {
53
+ left: 50% !important;
54
+ }
55
+ }
56
+
57
+ canvas {
58
+ width: calc(100% + 1px);
59
+ height: calc(100% + 1px);
60
+ transform: translate(-1px, -1px);
61
+
62
+ border: 2px solid var(--base-1);
63
+ outline: 1px solid var(--base-4);
64
+ }
65
+
66
+ .marker {
67
+ position: absolute;
68
+ inset: 0;
69
+ width: p2r(20);
70
+ height: p2r(20);
71
+ border-radius: 50%;
72
+ border: 1px solid #fff;
73
+ pointer-events: none;
74
+ transform: translate(-50%, -50%);
75
+ box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3);
76
+ }
77
+ }
78
+ }
@@ -0,0 +1,274 @@
1
+ @use '../helpers.scss' as *;
2
+
3
+ $shipDatepicker: true !default;
4
+
5
+ @if $shipDatepicker == true {
6
+ sh-daterange-input,
7
+ sh-datepicker-input {
8
+ sh-form-field-popover {
9
+ .input-wrap {
10
+ .input {
11
+ display: grid;
12
+ grid-template-columns: 1fr auto auto;
13
+ align-items: center;
14
+ margin: 0;
15
+ }
16
+
17
+ [suffix] {
18
+ margin-right: p2r(12);
19
+ }
20
+ }
21
+
22
+ .masked-value {
23
+ font: var(--paragraph-30B);
24
+ color: var(--base-8);
25
+
26
+ + input + input,
27
+ + input {
28
+ opacity: 0;
29
+ height: 0;
30
+ width: 0;
31
+ }
32
+ }
33
+
34
+ [suffix] + [suffix].default-indicator {
35
+ display: none;
36
+ }
37
+ }
38
+
39
+ sh-datepicker {
40
+ z-index: 10000;
41
+ position: relative;
42
+ --dp-width: #{p2r(240)};
43
+ }
44
+ }
45
+
46
+ sh-daterange-input {
47
+ sh-popover .popover {
48
+ --dp-width: #{p2r(300)};
49
+ min-width: var(--dp-width);
50
+ }
51
+
52
+ @for $i from 1 through 3 {
53
+ sh-form-field-popover.columns-#{$i} {
54
+ $gap: 1rem;
55
+
56
+ sh-popover .popover {
57
+ --dp-width: calc(#{p2r($i * 300)} + #{(($i - 1) * $gap)});
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ sh-datepicker {
64
+ --dp-sel-bg: var(--base-8);
65
+ --dp-sel-bw: 0;
66
+ --dp-sel-bc: transparent;
67
+ --dp-sel-c: #fff;
68
+ --dp-day-c: var(--base-8);
69
+ --dp-day-g: #{p2r(4 0)};
70
+ --dp-day-f: var(--paragraph-20);
71
+ --dp-width: #{p2r(300)};
72
+
73
+ width: 100%;
74
+ max-width: var(--dp-width);
75
+ display: flex;
76
+ flex-direction: column;
77
+
78
+ &.disabled {
79
+ opacity: 0.5;
80
+ pointer-events: none;
81
+ user-select: none;
82
+ cursor: initial;
83
+ }
84
+
85
+ @for $i from 1 through 12 {
86
+ &.columns-#{$i} {
87
+ $gap: 1rem;
88
+
89
+ --dp-width: calc(#{p2r($i * 300)} + #{(($i - 1) * $gap)});
90
+ }
91
+ }
92
+
93
+ &.as-range {
94
+ section {
95
+ .days > div {
96
+ &.sel {
97
+ background: var(--dp-sel-bg);
98
+ opacity: 0.5;
99
+ }
100
+
101
+ &.month-start,
102
+ &.week-start,
103
+ &.first {
104
+ border-top-left-radius: 50%;
105
+ border-bottom-left-radius: 50%;
106
+ }
107
+ &.month-end,
108
+ &.week-end,
109
+ &.last {
110
+ border-top-right-radius: 50%;
111
+ border-bottom-right-radius: 50%;
112
+ }
113
+
114
+ &.first,
115
+ &.last {
116
+ opacity: 1;
117
+ }
118
+ }
119
+ }
120
+
121
+ .month .days > div.out-of-scope {
122
+ opacity: 0;
123
+ pointer-events: none;
124
+ }
125
+ }
126
+
127
+ header {
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: space-between;
131
+ padding: p2r(4 0);
132
+ gap: p2r(0);
133
+
134
+ .title {
135
+ font: var(--paragraph-20);
136
+ }
137
+
138
+ button {
139
+ appearance: none;
140
+ background-color: transparent;
141
+ border: 0;
142
+ cursor: pointer;
143
+ height: p2r(32);
144
+ color: var(--base-8);
145
+
146
+ &:focus {
147
+ outline: none;
148
+ }
149
+ }
150
+ }
151
+
152
+ .months-container {
153
+ display: grid;
154
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
155
+ gap: 1rem;
156
+ }
157
+
158
+ .month {
159
+ display: grid;
160
+ grid-template-columns: repeat(7, 1fr);
161
+ grid-template-rows: 1fr 7fr;
162
+ gap: var(--dp-day-g);
163
+ align-items: flex-start;
164
+
165
+ .days,
166
+ .weekdays {
167
+ display: grid;
168
+ grid-column: 1 / -1;
169
+ gap: var(--dp-day-g);
170
+ grid-template-columns: subgrid;
171
+ position: relative;
172
+
173
+ > .days {
174
+ position: absolute;
175
+ top: 0;
176
+ left: 0;
177
+ width: 100%;
178
+ height: 100%;
179
+ display: grid;
180
+ grid-template-columns: repeat(7, 1fr);
181
+ grid-template-rows: repeat(7, 1fr);
182
+ gap: var(--dp-day-g);
183
+ z-index: 0;
184
+ }
185
+
186
+ > div {
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ aspect-ratio: 1/1;
191
+ cursor: pointer;
192
+ position: relative;
193
+ z-index: 1;
194
+ color: var(--dp-day-c);
195
+ font: var(--dp-day-f);
196
+ user-select: none;
197
+
198
+ &.sel {
199
+ color: var(--dp-sel-c);
200
+ transition: color 75ms linear;
201
+ }
202
+
203
+ &.out-of-scope {
204
+ opacity: 0.4;
205
+ }
206
+
207
+ &.sel-el {
208
+ position: relative;
209
+ top: 0;
210
+ left: 0;
211
+ transition:
212
+ transform 75ms linear,
213
+ opacity 75ms linear;
214
+ background: var(--dp-sel-bg);
215
+ border-radius: 50%;
216
+ border: var(--dp-sel-bw) solid var(--dp-sel-bc);
217
+ opacity: 0;
218
+ box-sizing: border-box;
219
+ }
220
+ }
221
+ }
222
+
223
+ .weekdays {
224
+ > div {
225
+ color: var(--base-12);
226
+ }
227
+ }
228
+ }
229
+
230
+ &.primary {
231
+ --dp-sel-bg: var(--primary-8);
232
+ }
233
+
234
+ &.accent {
235
+ --dp-sel-bg: var(--accent-8);
236
+ }
237
+
238
+ &.warn {
239
+ --dp-sel-bg: var(--warn-8);
240
+ }
241
+
242
+ &.error {
243
+ --dp-sel-bg: var(--error-8);
244
+ }
245
+
246
+ &.success {
247
+ --dp-sel-bg: var(--success-8);
248
+ }
249
+
250
+ &.raised {
251
+ --dp-sel-bg: var(--base-g2);
252
+
253
+ &.primary {
254
+ --dp-sel-bg: var(--primary-g2);
255
+ }
256
+
257
+ &.accent {
258
+ --dp-sel-bg: var(--accent-g2);
259
+ }
260
+
261
+ &.warn {
262
+ --dp-sel-bg: var(--warn-g2);
263
+ }
264
+
265
+ &.error {
266
+ --dp-sel-bg: var(--error-g2);
267
+ }
268
+
269
+ &.success {
270
+ --dp-sel-bg: var(--success-g2);
271
+ }
272
+ }
273
+ }
274
+ }