@preply/ds-web-core 7.1.0 → 8.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.
@@ -2,6 +2,7 @@
2
2
  @import '../../generated/hover.less';
3
3
  @import '../../generated/options.less';
4
4
  @import '../../theme/style/declarations.mixins.less';
5
+ @import '../../gradient-border/mixin.less';
5
6
 
6
7
  .computedVerticalPadding(@size) {
7
8
  padding-top: 6px;
@@ -86,13 +87,16 @@
86
87
 
87
88
  .action-ai-variant() {
88
89
  &--variant-ai {
89
- // @see https://github.com/preply/design-system/pull/583
90
- border-image: @action-variant-ai-button-borderImage;
90
+ .gradient-border(@action-base-borderWidth, @color-border-ai-button-linearGradient);
91
91
 
92
- &[disabled],
93
- &[disabled]:hover {
94
- border-image: initial;
95
- .border-color('action', 'variant-ai-disabled');
92
+ &[disabled] {
93
+ &:before {
94
+ display: none;
95
+ }
96
+ &,
97
+ &:hover {
98
+ .border-color('action', 'variant-ai-disabled');
99
+ }
96
100
  }
97
101
  }
98
102
  }
@@ -1,4 +1,4 @@
1
- /* AUTO GENERATED by support/tools/src/tool/code-generator/output/breakpoints/web-core-breakpoints-less.ts @Thu Nov 20 2025 14:49:13 GMT+0000 (Coordinated Universal Time) */
1
+ /* AUTO GENERATED by support/tools/src/tool/code-generator/output/breakpoints/web-core-breakpoints-less.ts @Fri Dec 05 2025 08:14:11 GMT+0000 (Coordinated Universal Time) */
2
2
 
3
3
  @breakpoints: {
4
4
  narrow-l: 400px;
@@ -1,4 +1,4 @@
1
- /* AUTO GENERATED by support/tools/src/tool/code-generator/output/breakpoints/web-core-breakpoints-scss.ts @Thu Nov 20 2025 14:49:13 GMT+0000 (Coordinated Universal Time) */
1
+ /* AUTO GENERATED by support/tools/src/tool/code-generator/output/breakpoints/web-core-breakpoints-scss.ts @Fri Dec 05 2025 08:14:11 GMT+0000 (Coordinated Universal Time) */
2
2
 
3
3
  $breakpoints: (
4
4
  narrow-l: 400px,
@@ -1,4 +1,4 @@
1
- /* AUTO GENERATED by support/tools/src/tool/code-generator/output/hover/web-core-hover-less.ts @Thu Nov 20 2025 14:49:13 GMT+0000 (Coordinated Universal Time) */
1
+ /* AUTO GENERATED by support/tools/src/tool/code-generator/output/hover/web-core-hover-less.ts @Fri Dec 05 2025 08:14:11 GMT+0000 (Coordinated Universal Time) */
2
2
 
3
3
  .onHover(@styles) {
4
4
  @media (hover: hover) and (pointer: fine) {
@@ -1,4 +1,4 @@
1
- /* AUTO GENERATED by support/tools/src/tool/code-generator/output/hover/web-core-hover-scss.ts @Thu Nov 20 2025 14:49:13 GMT+0000 (Coordinated Universal Time) */
1
+ /* AUTO GENERATED by support/tools/src/tool/code-generator/output/hover/web-core-hover-scss.ts @Fri Dec 05 2025 08:14:11 GMT+0000 (Coordinated Universal Time) */
2
2
 
3
3
  @mixin onHover {
4
4
  @media (hover: hover) and (pointer: fine) {
@@ -1,4 +1,4 @@
1
- /* AUTO GENERATED by support/tools/src/tool/code-generator/output/types/web-core-options-less.ts @Thu Nov 20 2025 14:49:11 GMT+0000 (Coordinated Universal Time) */
1
+ /* AUTO GENERATED by support/tools/src/tool/code-generator/output/types/web-core-options-less.ts @Fri Dec 05 2025 08:14:10 GMT+0000 (Coordinated Universal Time) */
2
2
 
3
3
  @ACTION_LINK_VARIANT_ACTIVE_COLOR_OPTIONS: accentDark, accentDarkInverted, neutral, neutralInverted,
4
4
  unsetColors;
@@ -1,4 +1,4 @@
1
- /* AUTO GENERATED by support/tools/src/tool/code-generator/output/types/web-core-options-scss.ts @Thu Nov 20 2025 14:49:11 GMT+0000 (Coordinated Universal Time) */
1
+ /* AUTO GENERATED by support/tools/src/tool/code-generator/output/types/web-core-options-scss.ts @Fri Dec 05 2025 08:14:10 GMT+0000 (Coordinated Universal Time) */
2
2
 
3
3
  $ACTION_LINK_VARIANT_ACTIVE_COLOR_OPTIONS:
4
4
  accentDark, accentDarkInverted, neutral, neutralInverted, unsetColors;
@@ -1,4 +1,4 @@
1
- /* AUTO GENERATED by support/tools/src/tool/code-generator/output/tokens/web-core-tokens-less.ts @Thu Nov 20 2025 14:49:12 GMT+0000 (Coordinated Universal Time) */
1
+ /* AUTO GENERATED by support/tools/src/tool/code-generator/output/tokens/web-core-tokens-less.ts @Fri Dec 05 2025 08:14:10 GMT+0000 (Coordinated Universal Time) */
2
2
 
3
3
  @text-typeface: var(--42e7c5);
4
4
  @text-fontFamily: var(--51aa6f);
@@ -853,10 +853,8 @@
853
853
  @icon-fieldLayout-width: var(--d57208);
854
854
  @icon-fieldLayout-height: var(--3caeb9);
855
855
  @icon-fieldLayout-borderRadius: var(--0191ea);
856
- @color-border-ai-button-borderImage: var(--d80c7b);
857
- @color-border-ai-surface-borderImage: var(--f9b3c4);
856
+ @color-border-ai-button-linearGradient: var(--cab35d);
858
857
  @color-background-ai-surface-linearGradient: var(--decc79);
859
- @action-variant-ai-button-borderImage: var(--a784e2);
860
858
  @motion-components-interaction-duration: var(--970975);
861
859
  @motion-components-interaction-easing-function: var(--1f4492);
862
860
  @motion-components-interaction-easing-functionName: var(--445832);
@@ -1,4 +1,4 @@
1
- /* AUTO GENERATED by support/tools/src/tool/code-generator/output/tokens/web-core-tokens-scss.ts @Thu Nov 20 2025 14:49:12 GMT+0000 (Coordinated Universal Time) */
1
+ /* AUTO GENERATED by support/tools/src/tool/code-generator/output/tokens/web-core-tokens-scss.ts @Fri Dec 05 2025 08:14:10 GMT+0000 (Coordinated Universal Time) */
2
2
 
3
3
  $text-typeface: var(--42e7c5);
4
4
  $text-fontFamily: var(--51aa6f);
@@ -853,10 +853,8 @@ $action-base-borderWidth: var(--0b1b71);
853
853
  $icon-fieldLayout-width: var(--d57208);
854
854
  $icon-fieldLayout-height: var(--3caeb9);
855
855
  $icon-fieldLayout-borderRadius: var(--0191ea);
856
- $color-border-ai-button-borderImage: var(--d80c7b);
857
- $color-border-ai-surface-borderImage: var(--f9b3c4);
856
+ $color-border-ai-button-linearGradient: var(--cab35d);
858
857
  $color-background-ai-surface-linearGradient: var(--decc79);
859
- $action-variant-ai-button-borderImage: var(--a784e2);
860
858
  $motion-components-interaction-duration: var(--970975);
861
859
  $motion-components-interaction-easing-function: var(--1f4492);
862
860
  $motion-components-interaction-easing-functionName: var(--445832);
@@ -0,0 +1,17 @@
1
+ export declare function gradientBorder(borderWidth: string | number, borderColor: string, fallbackColor?: string): {
2
+ position: "relative";
3
+ border: `${string} solid ${string}` | `${number} solid ${string}`;
4
+ '&::before': {
5
+ content: "\"\"";
6
+ position: "absolute";
7
+ inset: number;
8
+ borderRadius: "inherit";
9
+ padding: string | number;
10
+ margin: `calc(-1 * ${string})` | `calc(-1 * ${number})`;
11
+ background: string;
12
+ mask: "linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0)";
13
+ maskComposite: "exclude";
14
+ pointerEvents: "none";
15
+ };
16
+ };
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gradient-border/index.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAC1B,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,WAAW,EAAE,MAAM,EACnB,aAAa,SAAoC;;;;;;;;;;;;;;;EAkBpD"}
@@ -0,0 +1,24 @@
1
+ import { color } from '@preply/ds-core';
2
+ import { getTokenVar } from '../token/util/getTokenVar.js';
3
+
4
+ function gradientBorder(borderWidth, borderColor, fallbackColor = getTokenVar(color.border.primary)) {
5
+ return {
6
+ position: 'relative',
7
+ border: `${borderWidth} solid ${fallbackColor}`,
8
+ '&::before': {
9
+ content: '""',
10
+ position: 'absolute',
11
+ inset: 0,
12
+ borderRadius: 'inherit',
13
+ padding: borderWidth,
14
+ margin: `calc(-1 * ${borderWidth})`,
15
+ background: borderColor,
16
+ mask: 'linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0)',
17
+ maskComposite: 'exclude',
18
+ pointerEvents: 'none',
19
+ },
20
+ };
21
+ }
22
+
23
+ export { gradientBorder };
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ncmFkaWVudC1ib3JkZXIvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29sb3IgfSBmcm9tICdAcHJlcGx5L2RzLWNvcmUnO1xuaW1wb3J0IHsgZ2V0VG9rZW5WYXIgfSBmcm9tICcuLi90b2tlbic7XG5pbXBvcnQgdHlwZSB7IFN0eWxlZE9iamVjdCB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdyYWRpZW50Qm9yZGVyKFxuICAgIGJvcmRlcldpZHRoOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgYm9yZGVyQ29sb3I6IHN0cmluZyxcbiAgICBmYWxsYmFja0NvbG9yID0gZ2V0VG9rZW5WYXIoY29sb3IuYm9yZGVyLnByaW1hcnkpLFxuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIGJvcmRlcjogYCR7Ym9yZGVyV2lkdGh9IHNvbGlkICR7ZmFsbGJhY2tDb2xvcn1gLFxuICAgICAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICBpbnNldDogMCxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogJ2luaGVyaXQnLFxuICAgICAgICAgICAgcGFkZGluZzogYm9yZGVyV2lkdGgsXG4gICAgICAgICAgICBtYXJnaW46IGBjYWxjKC0xICogJHtib3JkZXJXaWR0aH0pYCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGJvcmRlckNvbG9yLFxuICAgICAgICAgICAgbWFzazogJ2xpbmVhci1ncmFkaWVudCgjMDAwIDAgMCkgY29udGVudC1ib3gsIGxpbmVhci1ncmFkaWVudCgjMDAwIDAgMCknLFxuICAgICAgICAgICAgbWFza0NvbXBvc2l0ZTogJ2V4Y2x1ZGUnLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIFN0eWxlZE9iamVjdDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7U0FJZ0IsY0FBYyxDQUMxQixXQUE0QixFQUM1QixXQUFtQixFQUNuQixhQUFhLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUE7SUFFakQsT0FBTztBQUNILFFBQUEsUUFBUSxFQUFFLFVBQVU7QUFDcEIsUUFBQSxNQUFNLEVBQUUsQ0FBQSxFQUFHLFdBQVcsQ0FBQSxPQUFBLEVBQVUsYUFBYSxDQUFBLENBQUU7QUFDL0MsUUFBQSxXQUFXLEVBQUU7QUFDVCxZQUFBLE9BQU8sRUFBRSxJQUFJO0FBQ2IsWUFBQSxRQUFRLEVBQUUsVUFBVTtBQUNwQixZQUFBLEtBQUssRUFBRSxDQUFDO0FBQ1IsWUFBQSxZQUFZLEVBQUUsU0FBUztBQUN2QixZQUFBLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLE1BQU0sRUFBRSxDQUFBLFVBQUEsRUFBYSxXQUFXLENBQUEsQ0FBQSxDQUFHO0FBQ25DLFlBQUEsVUFBVSxFQUFFLFdBQVc7QUFDdkIsWUFBQSxJQUFJLEVBQUUsa0VBQWtFO0FBQ3hFLFlBQUEsYUFBYSxFQUFFLFNBQVM7QUFDeEIsWUFBQSxhQUFhLEVBQUUsTUFBTTtBQUN4QixTQUFBO0tBQ21CO0FBQzVCOzs7OyJ9
@@ -0,0 +1,27 @@
1
+ @import '../generated/tokens.less';
2
+
3
+ // Based on https://dev.to/afif/border-with-gradient-and-radius-387f
4
+ .gradient-border(@border-width, @border-color, @fallback-color: @color-border-primary) {
5
+ position: relative;
6
+ border: @border-width solid @fallback-color;
7
+
8
+ @supports (mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0)) and
9
+ (mask-composite: exclude) {
10
+ border-color: transparent;
11
+
12
+ &::before {
13
+ content: '';
14
+ position: absolute;
15
+ inset: 0;
16
+ border-radius: inherit;
17
+ padding: @border-width;
18
+ margin: calc(-1 * @border-width);
19
+ background: @border-color;
20
+ mask:
21
+ linear-gradient(#000 0 0) content-box,
22
+ linear-gradient(#000 0 0);
23
+ mask-composite: exclude;
24
+ pointer-events: none;
25
+ }
26
+ }
27
+ }
@@ -0,0 +1,8 @@
1
+ import styleInject from '../external/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = "";
4
+ var stylesheet="";
5
+ styleInject(css_248z);
6
+
7
+ export { css_248z as default, stylesheet };
8
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4ubGVzcy5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OyJ9
@@ -0,0 +1,32 @@
1
+ @use '../generated/tokens.scss' as *;
2
+
3
+ // Based on https://dev.to/afif/border-with-gradient-and-radius-387f
4
+ @mixin gradient-border($border-width, $border-color, $fallback-color: $color-border-primary) {
5
+ position: relative;
6
+ border: $border-width solid $fallback-color;
7
+
8
+ @supports (
9
+ mask: linear-gradient(#000 0 0) content-box,
10
+ linear-gradient(
11
+ #000 0 0,
12
+ )
13
+ )
14
+ and (mask-composite: exclude) {
15
+ border-color: transparent;
16
+
17
+ &::before {
18
+ content: '';
19
+ position: absolute;
20
+ inset: 0;
21
+ border-radius: inherit;
22
+ padding: $border-width;
23
+ margin: calc(-1 * $border-width);
24
+ background: $border-color;
25
+ mask:
26
+ linear-gradient(#000 0 0) content-box,
27
+ linear-gradient(#000 0 0);
28
+ mask-composite: exclude;
29
+ pointer-events: none;
30
+ }
31
+ }
32
+ }
package/dist/index.d.ts CHANGED
@@ -12,4 +12,5 @@ export * from './svg';
12
12
  export * from './theme';
13
13
  export * from './token';
14
14
  export * from './types';
15
+ export * from './gradient-border';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export { getDatasetProps, getExternalUrlProps } from './dom/props/index.js';
2
2
  export { mapEdgeKeyToStandard } from './keyboard/index.js';
3
3
  export { currentHostname, currentHref } from './location/index.js';
4
+ export { gradientBorder } from './gradient-border/index.js';
4
5
  export { colorSchemes } from './color-scheme/colorSchemes.js';
5
6
  export { ColorScheme } from './color-scheme/classes/ColorScheme.js';
6
7
  export { ColorSchemeProvider } from './color-scheme/providers/ColorSchemeProvider.js';
@@ -27,4 +28,4 @@ export { withTheme } from './theme/hocs/withTheme.js';
27
28
  export { getTokenVar } from './token/util/getTokenVar.js';
28
29
  export { useToken } from './token/hooks/useToken.js';
29
30
  export { withGetToken } from './token/hocs/withGetToken.js';
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@preply/ds-web-core",
3
- "version": "7.1.0",
3
+ "version": "8.0.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -13,21 +13,21 @@
13
13
  "browserslist": "last 2 versions",
14
14
  "scripts": {
15
15
  "clean": "rm -rf dist && rm -rf src/generated",
16
- "test": "run check:types && run --top-level vitest --coverage --watch=false",
16
+ "test": "run check:types && run --top-level vitest --watch=false",
17
17
  "check:types": "run --top-level tsc --noEmit",
18
18
  "build": "NODE_ENV=production && run build:rollup",
19
19
  "build:rollup": "run --top-level rollup -c rollup.config.cjs",
20
20
  "dev": "run build:rollup -w"
21
21
  },
22
22
  "devDependencies": {
23
- "@preply/ds-core": "7.1.0",
24
- "@preply/ds-core-types": "7.1.0"
23
+ "@preply/ds-core": "8.0.0",
24
+ "@preply/ds-core-types": "8.0.0"
25
25
  },
26
26
  "peerDependencies": {
27
- "@preply/ds-core": "7.1.0",
28
- "@preply/ds-core-types": "7.1.0",
27
+ "@preply/ds-core": "8.0.0",
28
+ "@preply/ds-core-types": "8.0.0",
29
29
  "react": "^16 || ^18",
30
30
  "react-dom": "^16 || ^18"
31
31
  },
32
- "gitHead": "3886be9e89f0f02d5c9236ec751afe00eb4a81b8"
32
+ "gitHead": "47adbb783c4acd244a24e509a859630151e66aec"
33
33
  }