@amboss/design-system 2.4.3 → 2.4.4

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.
@@ -27,6 +27,8 @@ export type EntityTreeProps = {
27
27
  * @param ids - Updated expanded node ids
28
28
  */
29
29
  onToggle?: (ids: NodeID[]) => void;
30
+ /** Active node id that should be highlighted */
31
+ activeId?: NodeID;
30
32
  /** If provided, the filter function is used to filter the tree. */
31
33
  filterFn?: (node: TreeNode) => boolean;
32
34
  /** Callback function to handle tree change
@@ -39,5 +41,5 @@ export type EntityTreeProps = {
39
41
  renderRightContent?: (props: TreeNode & Parameters<EntityListItemProps["renderRight"]>[0]) => React.ReactNode;
40
42
  "data-e2e-test-id"?: string;
41
43
  } & PartialEntityListItemProps;
42
- export declare const BaseEntityTree: ({ data, selectedIds, onSelectionChange, expandedIds, onToggle, filterFn, onTreeChange, hideBorder, size, showItemsCount, renderRightContent, "data-e2e-test-id": dataE2eTestId, }: EntityTreeProps) => React.ReactElement;
44
+ export declare const BaseEntityTree: ({ data, selectedIds, onSelectionChange, expandedIds, onToggle, activeId, filterFn, onTreeChange, hideBorder, size, showItemsCount, renderRightContent, "data-e2e-test-id": dataE2eTestId, }: EntityTreeProps) => React.ReactElement;
43
45
  export {};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BaseEntityTree",{enumerable:!0,get:function(){return BaseEntityTree}});const _react=require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styledcomponents=require("../EntityList/styled-components"),_EntityListItem=require("../EntityList/EntityListItem"),_Text=require("../Typography/Text/Text"),_Checkbox=require("../Form/Checkbox/Checkbox"),_tree=require("./tree"),getLastNodeOfList=({node,data,level,isParentsLastOfLvl})=>{let currentLastNodeOfLvl=node.id===data[data.length-1].id;return 0===level?currentLastNodeOfLvl:isParentsLastOfLvl&&currentLastNodeOfLvl},makeRenderTreeBranches=({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange,handleToggle,expandAll,hideBorder,size,showItemsCount,renderRightContent})=>({data,level,renderFn,isParentsLastOfLvl})=>data.map(node=>{let readOnly=null===nodeCheckboxState,hasChildren=node.children.length>0,expandedState=!!expandAll||!!nodeExpandedState[node.id],leafItems=(0,_tree.getLeafNodeIds)(nodeChildrenMap,node.id),totalItemsCount=leafItems.length,selectedItemsCount=nodeCheckboxState?leafItems.filter(leafId=>"checked"===nodeCheckboxState[leafId]).length:null,countLabel=nodeCheckboxState?`(${selectedItemsCount}/${totalItemsCount})`:`(${totalItemsCount})`,isLastNodeOfList=getLastNodeOfList({node,data,level,isParentsLastOfLvl}),lastLeaf=!hasChildren&&!node.isFiltered,isExpanded=lastLeaf?void 0:expandedState;return _react.default.createElement(_EntityListItem.EntityListItem,{key:node.id,role:"treeitem",hideBorder:hideBorder||isLastNodeOfList&&(!isExpanded||node.isFiltered),size:size,isClickable:!0,lSpaceStep:level,"aria-label":node.label,description:node.description,renderLabel:({textSize})=>_react.default.createElement(_react.default.Fragment,null,node.label,showItemsCount&&!lastLeaf&&_react.default.createElement(_Text.Text,{as:"span",size:textSize,color:"tertiary"}," ",countLabel)),isExpanded:isExpanded,isDisabledExpand:expandAll,onExpandClick:e=>{e.stopPropagation(),handleToggle(node.id)},onClick:readOnly?()=>handleToggle(node.id):()=>handleSelectionChange(node.id),renderLeft:readOnly?void 0:()=>_react.default.createElement(_Checkbox.CheckboxRaw,{size:"s",name:node.label,checked:"checked"===nodeCheckboxState[node.id],indeterminate:"indeterminate"===nodeCheckboxState[node.id],onChange:()=>handleSelectionChange(node.id)}),renderRight:renderRightContent?sizeProps=>renderRightContent({...sizeProps,...node}):void 0},hasChildren&&_react.default.createElement("ul",null,renderFn({data:node.children,level:level+1,renderFn,isParentsLastOfLvl:isLastNodeOfList})))}),BaseEntityTree=({data,selectedIds,onSelectionChange,expandedIds=[],onToggle,filterFn,onTreeChange,hideBorder=!1,size="m",showItemsCount=!0,renderRightContent,"data-e2e-test-id":dataE2eTestId})=>{let nodeChildrenMap=Object.assign({},...data.map(tree=>(0,_tree.getNodeChildrenMap)(tree))),nodeCheckboxState=selectedIds?Object.assign({},...data.map(tree=>(0,_tree.getTreeCheckboxState)(nodeChildrenMap,tree.id,selectedIds))):null,nodeExpandedState=expandedIds.reduce((acc,id)=>(acc[id]=!0,acc),{}),dataShown=filterFn?data.map(tree=>(0,_tree.filterTree)(tree,filterFn)).filter(Boolean):data;(0,_react.useEffect)(()=>{onTreeChange&&onTreeChange(dataShown.map(tree=>(0,_tree.mapTree)(tree,node=>({...node,checkedState:!!nodeCheckboxState&&nodeCheckboxState[node.id],isExpanded:!!nodeExpandedState[node.id]}))))},[dataShown,nodeCheckboxState,nodeExpandedState,onTreeChange]);let renderTreeBranches=makeRenderTreeBranches({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange:targetId=>{if(onSelectionChange){let updatedSelectedIds=[];if(0===nodeChildrenMap[targetId].length)updatedSelectedIds=selectedIds.includes(targetId)?selectedIds.filter(id=>id!==targetId):selectedIds.concat([targetId]);else{let affectedLeafNodeIds=(0,_tree.getLeafNodeIds)(nodeChildrenMap,targetId);updatedSelectedIds="checked"===nodeCheckboxState[targetId]?selectedIds.filter(id=>!affectedLeafNodeIds.includes(id)):selectedIds.concat(affectedLeafNodeIds)}onSelectionChange(updatedSelectedIds)}},handleToggle:targetId=>{onToggle&&onToggle(expandedIds.includes(targetId)?expandedIds.filter(id=>id!==targetId):expandedIds.concat([targetId]))},expandAll:!!filterFn,hideBorder,size,showItemsCount,renderRightContent});return _react.default.createElement(_styledcomponents.StyledList,{role:"tree","data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityTree",size:size},renderTreeBranches({data:dataShown,level:0,renderFn:renderTreeBranches}))};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"BaseEntityTree",{enumerable:!0,get:function(){return BaseEntityTree}});const _react=require("@swc/helpers/_/_interop_require_wildcard")._(require("react")),_styledcomponents=require("../EntityList/styled-components"),_EntityListItem=require("../EntityList/EntityListItem"),_Text=require("../Typography/Text/Text"),_Checkbox=require("../Form/Checkbox/Checkbox"),_tree=require("./tree"),getLastNodeOfList=({node,data,level,isParentsLastOfLvl})=>{let currentLastNodeOfLvl=node.id===data[data.length-1].id;return 0===level?currentLastNodeOfLvl:isParentsLastOfLvl&&currentLastNodeOfLvl},makeRenderTreeBranches=({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange,handleToggle,expandAll,hideBorder,size,showItemsCount,renderRightContent,activeId})=>({data,level,renderFn,isParentsLastOfLvl})=>data.map(node=>{let readOnly=null===nodeCheckboxState,hasChildren=node.children.length>0,expandedState=!!expandAll||!!nodeExpandedState[node.id],leafItems=(0,_tree.getLeafNodeIds)(nodeChildrenMap,node.id),totalItemsCount=leafItems.length,selectedItemsCount=nodeCheckboxState?leafItems.filter(leafId=>"checked"===nodeCheckboxState[leafId]).length:null,countLabel=nodeCheckboxState?`(${selectedItemsCount}/${totalItemsCount})`:`(${totalItemsCount})`,isLastNodeOfList=getLastNodeOfList({node,data,level,isParentsLastOfLvl}),lastLeaf=!hasChildren&&!node.isFiltered,isExpanded=lastLeaf?void 0:expandedState;return _react.default.createElement(_EntityListItem.EntityListItem,{key:node.id,role:"treeitem",hideBorder:hideBorder||isLastNodeOfList&&(!isExpanded||node.isFiltered),size:size,isClickable:!0,lSpaceStep:level,"aria-label":node.label,description:node.description,renderLabel:({textSize})=>_react.default.createElement(_react.default.Fragment,null,node.label,showItemsCount&&!lastLeaf&&_react.default.createElement(_Text.Text,{as:"span",size:textSize,color:"tertiary"}," ",countLabel)),isActive:node.id===activeId,isExpanded:isExpanded,isDisabledExpand:expandAll,onExpandClick:e=>{e.stopPropagation(),handleToggle(node.id)},onClick:readOnly?()=>handleToggle(node.id):()=>handleSelectionChange(node.id),renderLeft:readOnly?void 0:()=>_react.default.createElement(_Checkbox.CheckboxRaw,{size:"s",name:node.label,checked:"checked"===nodeCheckboxState[node.id],indeterminate:"indeterminate"===nodeCheckboxState[node.id],onChange:()=>handleSelectionChange(node.id)}),renderRight:renderRightContent?sizeProps=>renderRightContent({...sizeProps,...node}):void 0},hasChildren&&_react.default.createElement("ul",null,renderFn({data:node.children,level:level+1,renderFn,isParentsLastOfLvl:isLastNodeOfList})))}),BaseEntityTree=({data,selectedIds,onSelectionChange,expandedIds=[],onToggle,activeId,filterFn,onTreeChange,hideBorder=!1,size="m",showItemsCount=!0,renderRightContent,"data-e2e-test-id":dataE2eTestId})=>{let nodeChildrenMap=Object.assign({},...data.map(tree=>(0,_tree.getNodeChildrenMap)(tree))),nodeCheckboxState=selectedIds?Object.assign({},...data.map(tree=>(0,_tree.getTreeCheckboxState)(nodeChildrenMap,tree.id,selectedIds))):null,nodeExpandedState=expandedIds.reduce((acc,id)=>(acc[id]=!0,acc),{}),dataShown=filterFn?data.map(tree=>(0,_tree.filterTree)(tree,filterFn)).filter(Boolean):data;(0,_react.useEffect)(()=>{onTreeChange&&onTreeChange(dataShown.map(tree=>(0,_tree.mapTree)(tree,node=>({...node,checkedState:!!nodeCheckboxState&&nodeCheckboxState[node.id],isExpanded:!!nodeExpandedState[node.id]}))))},[dataShown,nodeCheckboxState,nodeExpandedState,onTreeChange]);let renderTreeBranches=makeRenderTreeBranches({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange:targetId=>{if(onSelectionChange){let updatedSelectedIds=[];if(0===nodeChildrenMap[targetId].length)updatedSelectedIds=selectedIds.includes(targetId)?selectedIds.filter(id=>id!==targetId):selectedIds.concat([targetId]);else{let affectedLeafNodeIds=(0,_tree.getLeafNodeIds)(nodeChildrenMap,targetId);updatedSelectedIds="checked"===nodeCheckboxState[targetId]?selectedIds.filter(id=>!affectedLeafNodeIds.includes(id)):selectedIds.concat(affectedLeafNodeIds)}onSelectionChange(updatedSelectedIds)}},handleToggle:targetId=>{onToggle&&onToggle(expandedIds.includes(targetId)?expandedIds.filter(id=>id!==targetId):expandedIds.concat([targetId]))},expandAll:!!filterFn,hideBorder,size,showItemsCount,renderRightContent,activeId});return _react.default.createElement(_styledcomponents.StyledList,{role:"tree","data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityTree",size:size},renderTreeBranches({data:dataShown,level:0,renderFn:renderTreeBranches}))};
@@ -27,6 +27,8 @@ export type EntityTreeProps = {
27
27
  * @param ids - Updated expanded node ids
28
28
  */
29
29
  onToggle?: (ids: NodeID[]) => void;
30
+ /** Active node id that should be highlighted */
31
+ activeId?: NodeID;
30
32
  /** If provided, the filter function is used to filter the tree. */
31
33
  filterFn?: (node: TreeNode) => boolean;
32
34
  /** Callback function to handle tree change
@@ -39,5 +41,5 @@ export type EntityTreeProps = {
39
41
  renderRightContent?: (props: TreeNode & Parameters<EntityListItemProps["renderRight"]>[0]) => React.ReactNode;
40
42
  "data-e2e-test-id"?: string;
41
43
  } & PartialEntityListItemProps;
42
- export declare const BaseEntityTree: ({ data, selectedIds, onSelectionChange, expandedIds, onToggle, filterFn, onTreeChange, hideBorder, size, showItemsCount, renderRightContent, "data-e2e-test-id": dataE2eTestId, }: EntityTreeProps) => React.ReactElement;
44
+ export declare const BaseEntityTree: ({ data, selectedIds, onSelectionChange, expandedIds, onToggle, activeId, filterFn, onTreeChange, hideBorder, size, showItemsCount, renderRightContent, "data-e2e-test-id": dataE2eTestId, }: EntityTreeProps) => React.ReactElement;
43
45
  export {};
@@ -1 +1 @@
1
- import React,{useEffect}from"react";import{StyledList}from"../EntityList/styled-components";import{EntityListItem}from"../EntityList/EntityListItem";import{Text}from"../Typography/Text/Text";import{CheckboxRaw}from"../Form/Checkbox/Checkbox";import{getNodeChildrenMap,getTreeCheckboxState,getLeafNodeIds,filterTree,mapTree}from"./tree";let getLastNodeOfList=({node,data,level,isParentsLastOfLvl})=>{let currentLastNodeOfLvl=node.id===data[data.length-1].id;return 0===level?currentLastNodeOfLvl:isParentsLastOfLvl&&currentLastNodeOfLvl},makeRenderTreeBranches=({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange,handleToggle,expandAll,hideBorder,size,showItemsCount,renderRightContent})=>({data,level,renderFn,isParentsLastOfLvl})=>data.map(node=>{let readOnly=null===nodeCheckboxState,hasChildren=node.children.length>0,expandedState=!!expandAll||!!nodeExpandedState[node.id],leafItems=getLeafNodeIds(nodeChildrenMap,node.id),totalItemsCount=leafItems.length,selectedItemsCount=nodeCheckboxState?leafItems.filter(leafId=>"checked"===nodeCheckboxState[leafId]).length:null,countLabel=nodeCheckboxState?`(${selectedItemsCount}/${totalItemsCount})`:`(${totalItemsCount})`,isLastNodeOfList=getLastNodeOfList({node,data,level,isParentsLastOfLvl}),lastLeaf=!hasChildren&&!node.isFiltered,isExpanded=lastLeaf?void 0:expandedState;return React.createElement(EntityListItem,{key:node.id,role:"treeitem",hideBorder:hideBorder||isLastNodeOfList&&(!isExpanded||node.isFiltered),size:size,isClickable:!0,lSpaceStep:level,"aria-label":node.label,description:node.description,renderLabel:({textSize})=>React.createElement(React.Fragment,null,node.label,showItemsCount&&!lastLeaf&&React.createElement(Text,{as:"span",size:textSize,color:"tertiary"}," ",countLabel)),isExpanded:isExpanded,isDisabledExpand:expandAll,onExpandClick:e=>{e.stopPropagation(),handleToggle(node.id)},onClick:readOnly?()=>handleToggle(node.id):()=>handleSelectionChange(node.id),renderLeft:readOnly?void 0:()=>React.createElement(CheckboxRaw,{size:"s",name:node.label,checked:"checked"===nodeCheckboxState[node.id],indeterminate:"indeterminate"===nodeCheckboxState[node.id],onChange:()=>handleSelectionChange(node.id)}),renderRight:renderRightContent?sizeProps=>renderRightContent({...sizeProps,...node}):void 0},hasChildren&&React.createElement("ul",null,renderFn({data:node.children,level:level+1,renderFn,isParentsLastOfLvl:isLastNodeOfList})))});export const BaseEntityTree=({data,selectedIds,onSelectionChange,expandedIds=[],onToggle,filterFn,onTreeChange,hideBorder=!1,size="m",showItemsCount=!0,renderRightContent,"data-e2e-test-id":dataE2eTestId})=>{let nodeChildrenMap=Object.assign({},...data.map(tree=>getNodeChildrenMap(tree))),nodeCheckboxState=selectedIds?Object.assign({},...data.map(tree=>getTreeCheckboxState(nodeChildrenMap,tree.id,selectedIds))):null,nodeExpandedState=expandedIds.reduce((acc,id)=>(acc[id]=!0,acc),{}),dataShown=filterFn?data.map(tree=>filterTree(tree,filterFn)).filter(Boolean):data;useEffect(()=>{onTreeChange&&onTreeChange(dataShown.map(tree=>mapTree(tree,node=>({...node,checkedState:!!nodeCheckboxState&&nodeCheckboxState[node.id],isExpanded:!!nodeExpandedState[node.id]}))))},[dataShown,nodeCheckboxState,nodeExpandedState,onTreeChange]);let renderTreeBranches=makeRenderTreeBranches({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange:targetId=>{if(onSelectionChange){let updatedSelectedIds=[];if(0===nodeChildrenMap[targetId].length)updatedSelectedIds=selectedIds.includes(targetId)?selectedIds.filter(id=>id!==targetId):selectedIds.concat([targetId]);else{let affectedLeafNodeIds=getLeafNodeIds(nodeChildrenMap,targetId);updatedSelectedIds="checked"===nodeCheckboxState[targetId]?selectedIds.filter(id=>!affectedLeafNodeIds.includes(id)):selectedIds.concat(affectedLeafNodeIds)}onSelectionChange(updatedSelectedIds)}},handleToggle:targetId=>{onToggle&&onToggle(expandedIds.includes(targetId)?expandedIds.filter(id=>id!==targetId):expandedIds.concat([targetId]))},expandAll:!!filterFn,hideBorder,size,showItemsCount,renderRightContent});return React.createElement(StyledList,{role:"tree","data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityTree",size:size},renderTreeBranches({data:dataShown,level:0,renderFn:renderTreeBranches}))};
1
+ import React,{useEffect}from"react";import{StyledList}from"../EntityList/styled-components";import{EntityListItem}from"../EntityList/EntityListItem";import{Text}from"../Typography/Text/Text";import{CheckboxRaw}from"../Form/Checkbox/Checkbox";import{getNodeChildrenMap,getTreeCheckboxState,getLeafNodeIds,filterTree,mapTree}from"./tree";let getLastNodeOfList=({node,data,level,isParentsLastOfLvl})=>{let currentLastNodeOfLvl=node.id===data[data.length-1].id;return 0===level?currentLastNodeOfLvl:isParentsLastOfLvl&&currentLastNodeOfLvl},makeRenderTreeBranches=({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange,handleToggle,expandAll,hideBorder,size,showItemsCount,renderRightContent,activeId})=>({data,level,renderFn,isParentsLastOfLvl})=>data.map(node=>{let readOnly=null===nodeCheckboxState,hasChildren=node.children.length>0,expandedState=!!expandAll||!!nodeExpandedState[node.id],leafItems=getLeafNodeIds(nodeChildrenMap,node.id),totalItemsCount=leafItems.length,selectedItemsCount=nodeCheckboxState?leafItems.filter(leafId=>"checked"===nodeCheckboxState[leafId]).length:null,countLabel=nodeCheckboxState?`(${selectedItemsCount}/${totalItemsCount})`:`(${totalItemsCount})`,isLastNodeOfList=getLastNodeOfList({node,data,level,isParentsLastOfLvl}),lastLeaf=!hasChildren&&!node.isFiltered,isExpanded=lastLeaf?void 0:expandedState;return React.createElement(EntityListItem,{key:node.id,role:"treeitem",hideBorder:hideBorder||isLastNodeOfList&&(!isExpanded||node.isFiltered),size:size,isClickable:!0,lSpaceStep:level,"aria-label":node.label,description:node.description,renderLabel:({textSize})=>React.createElement(React.Fragment,null,node.label,showItemsCount&&!lastLeaf&&React.createElement(Text,{as:"span",size:textSize,color:"tertiary"}," ",countLabel)),isActive:node.id===activeId,isExpanded:isExpanded,isDisabledExpand:expandAll,onExpandClick:e=>{e.stopPropagation(),handleToggle(node.id)},onClick:readOnly?()=>handleToggle(node.id):()=>handleSelectionChange(node.id),renderLeft:readOnly?void 0:()=>React.createElement(CheckboxRaw,{size:"s",name:node.label,checked:"checked"===nodeCheckboxState[node.id],indeterminate:"indeterminate"===nodeCheckboxState[node.id],onChange:()=>handleSelectionChange(node.id)}),renderRight:renderRightContent?sizeProps=>renderRightContent({...sizeProps,...node}):void 0},hasChildren&&React.createElement("ul",null,renderFn({data:node.children,level:level+1,renderFn,isParentsLastOfLvl:isLastNodeOfList})))});export const BaseEntityTree=({data,selectedIds,onSelectionChange,expandedIds=[],onToggle,activeId,filterFn,onTreeChange,hideBorder=!1,size="m",showItemsCount=!0,renderRightContent,"data-e2e-test-id":dataE2eTestId})=>{let nodeChildrenMap=Object.assign({},...data.map(tree=>getNodeChildrenMap(tree))),nodeCheckboxState=selectedIds?Object.assign({},...data.map(tree=>getTreeCheckboxState(nodeChildrenMap,tree.id,selectedIds))):null,nodeExpandedState=expandedIds.reduce((acc,id)=>(acc[id]=!0,acc),{}),dataShown=filterFn?data.map(tree=>filterTree(tree,filterFn)).filter(Boolean):data;useEffect(()=>{onTreeChange&&onTreeChange(dataShown.map(tree=>mapTree(tree,node=>({...node,checkedState:!!nodeCheckboxState&&nodeCheckboxState[node.id],isExpanded:!!nodeExpandedState[node.id]}))))},[dataShown,nodeCheckboxState,nodeExpandedState,onTreeChange]);let renderTreeBranches=makeRenderTreeBranches({nodeChildrenMap,nodeCheckboxState,nodeExpandedState,handleSelectionChange:targetId=>{if(onSelectionChange){let updatedSelectedIds=[];if(0===nodeChildrenMap[targetId].length)updatedSelectedIds=selectedIds.includes(targetId)?selectedIds.filter(id=>id!==targetId):selectedIds.concat([targetId]);else{let affectedLeafNodeIds=getLeafNodeIds(nodeChildrenMap,targetId);updatedSelectedIds="checked"===nodeCheckboxState[targetId]?selectedIds.filter(id=>!affectedLeafNodeIds.includes(id)):selectedIds.concat(affectedLeafNodeIds)}onSelectionChange(updatedSelectedIds)}},handleToggle:targetId=>{onToggle&&onToggle(expandedIds.includes(targetId)?expandedIds.filter(id=>id!==targetId):expandedIds.concat([targetId]))},expandAll:!!filterFn,hideBorder,size,showItemsCount,renderRightContent,activeId});return React.createElement(StyledList,{role:"tree","data-e2e-test-id":dataE2eTestId,"data-ds-id":"EntityTree",size:size},renderTreeBranches({data:dataShown,level:0,renderFn:renderTreeBranches}))};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amboss/design-system",
3
- "version": "2.4.3",
3
+ "version": "2.4.4",
4
4
  "description": "the design system for AMBOSS products",
5
5
  "author": "AMBOSS",
6
6
  "license": "ISC",