@sats-group/ui-lib 85.6.0 → 86.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sats-group/ui-lib",
3
- "version": "85.6.0",
3
+ "version": "86.0.0",
4
4
  "description": "SATS web user interface library",
5
5
  "author": "developer@sats.no",
6
6
  "license": "UNLICENSED",
@@ -1,2 +1,2 @@
1
- var n=Object.defineProperty;var i=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;var l=(e,r,p)=>r in e?n(e,r,{enumerable:!0,configurable:!0,writable:!0,value:p}):e[r]=p,f=(e,r)=>{for(var p in r||(r={}))h.call(r,p)&&l(e,p,r[p]);if(i)for(var p of i(r))o.call(r,p)&&l(e,p,r[p]);return e};var d=(e,r)=>{var p={};for(var s in e)h.call(e,s)&&r.indexOf(s)<0&&(p[s]=e[s]);if(e!=null&&i)for(var s of i(e))r.indexOf(s)<0&&o.call(e,s)&&(p[s]=e[s]);return p};import*as t from"react";import F from"classnames";import N from"../icons/16/close";import m from"../text";const c=g=>{var a=g,{className:e,customIcon:r,elementName:p="button",icon:s=!0,isSelected:x=!1,text:C}=a,_=d(a,["className","customIcon","elementName","icon","isSelected","text"]);return t.createElement(p,f({className:F("chip",e,{"chip--selected":x})},_),t.createElement(t.Fragment,null,t.createElement("div",{className:"chip__wrapper"},s?r!=null?r:t.createElement(N,null):null,t.createElement(m,{className:"chip__text",size:m.sizes.small,theme:m.themes.emphasis},C))))};var E=c;export{E as default};
1
+ var v=Object.defineProperty;var p=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable;var c=(i,e,s)=>e in i?v(i,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[e]=s,n=(i,e)=>{for(var s in e||(e={}))h.call(e,s)&&c(i,s,e[s]);if(p)for(var s of p(e))_.call(e,s)&&c(i,s,e[s]);return i};var f=(i,e)=>{var s={};for(var m in i)h.call(i,m)&&e.indexOf(m)<0&&(s[m]=i[m]);if(i!=null&&p)for(var m of p(i))e.indexOf(m)<0&&_.call(i,m)&&(s[m]=i[m]);return s};import*as t from"react";import o from"classnames";import x from"../icons/16/close";import r from"../text";const C=N=>{var l=N,{className:i,customIcon:e,elementName:s="button",icon:m=!1,isSelected:a=!1,text:d}=l,u=f(l,["className","customIcon","elementName","icon","isSelected","text"]);return t.createElement(s,n({className:o("chip",i,{"chip--selected":a})},u),t.createElement(t.Fragment,null,t.createElement("div",{className:"chip__wrapper"},m?t.createElement(x,null):null,e?t.createElement("div",{className:o("chip__custom-icon chip__custom-icon--animated",{"chip__custom-icon--visible":a})},e):null,t.createElement(r,{className:o("chip__text",{"chip__text--with-icon":m||e&&a}),size:r.sizes.small,theme:r.themes.emphasis},d))))};var T=C;export{T as default};
2
2
  //# sourceMappingURL=chip.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../react/chip/chip.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport cn from 'classnames';\n\nimport Close from '../icons/16/close';\nimport Text from '../text';\n\nimport { Chip as Props } from './chip.types';\n\nconst Chip: React.FC<Props> = ({\n className,\n customIcon,\n elementName = 'button',\n icon = true,\n isSelected = false,\n text,\n ...rest\n}) =>\n React.createElement(\n elementName,\n {\n className: cn('chip', className, { 'chip--selected': isSelected }),\n ...rest,\n },\n <React.Fragment>\n <div className=\"chip__wrapper\">\n {icon ? (customIcon ?? <Close />) : null}\n <Text\n className=\"chip__text\"\n size={Text.sizes.small}\n theme={Text.themes.emphasis}\n >\n {text}\n </Text>\n </div>\n </React.Fragment>,\n );\n\nexport default Chip;\n"],
5
- "mappings": "2fAAA,UAAYA,MAAW,QACvB,OAAOC,MAAQ,aAEf,OAAOC,MAAW,oBAClB,OAAOC,MAAU,UAIjB,MAAMC,EAAyBC,GAQ5B,CAR4B,IAAAC,EAAAD,EAC7B,WAAAE,EACA,WAAAC,EACA,YAAAC,EAAc,SACd,KAAAC,EAAO,GACP,WAAAC,EAAa,GACb,KAAAC,CAdF,EAQ+BN,EAO1BO,EAAAC,EAP0BR,EAO1B,CANH,YACA,aACA,cACA,OACA,aACA,SAGA,OAAAN,EAAM,cACJS,EACAM,EAAA,CACE,UAAWd,EAAG,OAAQM,EAAW,CAAE,iBAAkBI,CAAW,CAAC,GAC9DE,GAELb,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OAAI,UAAU,iBACZU,EAAQF,GAAA,KAAAA,EAAcR,EAAA,cAACE,EAAA,IAAM,EAAM,KACpCF,EAAA,cAACG,EAAA,CACC,UAAU,aACV,KAAMA,EAAK,MAAM,MACjB,MAAOA,EAAK,OAAO,UAElBS,CACH,CACF,CACF,CACF,GAEF,IAAOI,EAAQZ",
4
+ "sourcesContent": ["import * as React from 'react';\nimport cn from 'classnames';\n\nimport Close from '../icons/16/close';\nimport Text from '../text';\n\nimport { Chip as Props } from './chip.types';\n\nconst Chip: React.FC<Props> = ({\n className,\n customIcon,\n elementName = 'button',\n icon = false,\n isSelected = false,\n text,\n ...rest\n}) =>\n React.createElement(\n elementName,\n {\n className: cn('chip', className, {\n 'chip--selected': isSelected,\n }),\n ...rest,\n },\n <React.Fragment>\n <div className=\"chip__wrapper\">\n {icon ? <Close /> : null}\n {customIcon ? (\n <div\n className={cn('chip__custom-icon chip__custom-icon--animated', {\n 'chip__custom-icon--visible': isSelected,\n })}\n >\n {customIcon}\n </div>\n ) : null}\n <Text\n className={cn('chip__text', {\n 'chip__text--with-icon': icon || (customIcon && isSelected),\n })}\n size={Text.sizes.small}\n theme={Text.themes.emphasis}\n >\n {text}\n </Text>\n </div>\n </React.Fragment>,\n );\n\nexport default Chip;\n"],
5
+ "mappings": "2fAAA,UAAYA,MAAW,QACvB,OAAOC,MAAQ,aAEf,OAAOC,MAAW,oBAClB,OAAOC,MAAU,UAIjB,MAAMC,EAAyBC,GAQ5B,CAR4B,IAAAC,EAAAD,EAC7B,WAAAE,EACA,WAAAC,EACA,YAAAC,EAAc,SACd,KAAAC,EAAO,GACP,WAAAC,EAAa,GACb,KAAAC,CAdF,EAQ+BN,EAO1BO,EAAAC,EAP0BR,EAO1B,CANH,YACA,aACA,cACA,OACA,aACA,SAGA,OAAAN,EAAM,cACJS,EACAM,EAAA,CACE,UAAWd,EAAG,OAAQM,EAAW,CAC/B,iBAAkBI,CACpB,CAAC,GACEE,GAELb,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC,OAAI,UAAU,iBACZU,EAAOV,EAAA,cAACE,EAAA,IAAM,EAAK,KACnBM,EACCR,EAAA,cAAC,OACC,UAAWC,EAAG,gDAAiD,CAC7D,6BAA8BU,CAChC,CAAC,GAEAH,CACH,EACE,KACJR,EAAA,cAACG,EAAA,CACC,UAAWF,EAAG,aAAc,CAC1B,wBAAyBS,GAASF,GAAcG,CAClD,CAAC,EACD,KAAMR,EAAK,MAAM,MACjB,MAAOA,EAAK,OAAO,UAElBS,CACH,CACF,CACF,CACF,GAEF,IAAOI,EAAQZ",
6
6
  "names": ["React", "cn", "Close", "Text", "Chip", "_a", "_b", "className", "customIcon", "elementName", "icon", "isSelected", "text", "rest", "__objRest", "__spreadValues", "chip_default"]
7
7
  }
@@ -2,15 +2,15 @@
2
2
  @use '../../tokens/spacing';
3
3
 
4
4
  .chip {
5
+ background-color: var(--background-secondary-default);
6
+ border-radius: 40px; // NOTE: Custom border radius by design
7
+ border: 1px solid var(--ge-chips-unselected-default);
5
8
  box-sizing: border-box;
6
9
  cursor: pointer;
10
+ display: inline-block;
7
11
  outline: 0;
8
12
  padding: 0;
9
13
  text-decoration: none;
10
- display: inline-block;
11
- border-radius: 40px; // NOTE: Custom border radius by design
12
- background-color: transparent;
13
- border: 1px solid var(--ge-chips-unselected-default);
14
14
 
15
15
  @media (hover: hover) {
16
16
  &:not([disabled]):hover {
@@ -33,7 +33,7 @@
33
33
 
34
34
  &__wrapper {
35
35
  display: flex;
36
- gap: spacing.$xs;
36
+ gap: 0; // NOTE: This is 0 because it can't be animated, wherase margin can, so margin is used on the text when an icon is present instead
37
37
  align-items: center;
38
38
  padding: spacing.$xs spacing.$m;
39
39
  }
@@ -43,4 +43,41 @@
43
43
  color: var(--on-ge-on-chips-selected-disabled);
44
44
  cursor: not-allowed;
45
45
  }
46
+
47
+ &__custom-icon {
48
+ align-items: center;
49
+ display: inline-flex;
50
+ flex: 0 0 auto;
51
+ justify-content: center;
52
+ max-width: 0;
53
+ min-width: 0;
54
+ opacity: 0;
55
+ overflow: hidden;
56
+ transform: scale(0.85);
57
+ }
58
+
59
+ &__custom-icon--visible {
60
+ max-width: 999px; // NOTE: This is just so that the component can grow as much as it needs when the icon is shown
61
+ opacity: 1;
62
+ transform: scale(1);
63
+ }
64
+
65
+ &__custom-icon--animated {
66
+ transition:
67
+ max-width 220ms ease,
68
+ opacity 160ms ease,
69
+ transform 200ms ease;
70
+ }
71
+
72
+ &__text {
73
+ margin-left: 0;
74
+
75
+ &--with-icon {
76
+ margin-left: spacing.$xs;
77
+ }
78
+ }
79
+
80
+ &__custom-icon--animated ~ .chip__text {
81
+ transition: margin-left 220ms ease;
82
+ }
46
83
  }
@@ -1,20 +1,26 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { ButtonHtmlProps, LinkHtmlProps } from '../types';
3
3
  type BasicChipProps = {
4
- className?: string;
5
- customIcon?: ReactElement;
6
4
  elementName: string;
7
- icon?: boolean;
8
5
  isSelected?: boolean;
9
6
  text: string;
10
7
  };
11
- export type ChipButton = BasicChipProps & ButtonHtmlProps;
12
- export type ChipLink = BasicChipProps & LinkHtmlProps;
13
- export type Chip = ({
8
+ type ChipWithCustomicon = {
9
+ customIcon: ReactElement;
10
+ icon?: never;
11
+ };
12
+ type ChipWithDefaultIcon = {
13
+ customIcon?: never;
14
+ icon?: boolean;
15
+ };
16
+ type ChipWithIcon = ChipWithCustomicon | ChipWithDefaultIcon;
17
+ export type ChipButton = ButtonHtmlProps;
18
+ export type ChipLink = LinkHtmlProps;
19
+ export type Chip = ChipWithIcon & BasicChipProps & (({
14
20
  elementName: 'button';
15
21
  } & ChipButton) | ({
16
22
  elementName: 'a';
17
23
  } & ChipLink) | ({
18
24
  elementName: string;
19
- } & (ChipLink | ChipButton));
25
+ } & (ChipLink | ChipButton)));
20
26
  export {};