@smwb/ui-solid 2.0.0 → 2.1.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/README.md +115 -0
- package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
- package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
- package/dist/assets/styles/less/components/breadcrumbs/breadcrumbs.entry.css +1 -1
- package/dist/assets/styles/less/components/button/button.entry.css +1 -1
- package/dist/assets/styles/less/components/buttonGroup/buttonGroup.entry.css +1 -1
- package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -1
- package/dist/assets/styles/less/components/meter/meter.entry.css +1 -1
- package/dist/assets/styles/less/components/screenDivider/screenDivider.entry.css +1 -1
- package/dist/assets/styles/less/components/sheet/sheet.entry.css +1 -1
- package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -1
- package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -1
- package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
- package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
- package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
- package/dist/assets/styles/less/tokens.entry.css +1 -1
- package/dist/components/dataDisplay/avatar/avatar.d.ts +5 -2
- package/dist/components/dataDisplay/avatar/avatar.js +9 -9
- package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/components/dataDisplay/chart/chart.d.ts +16 -8
- package/dist/components/dataDisplay/chart/chartFull.d.ts +14 -0
- package/dist/components/dataDisplay/chart/core.d.ts +19 -0
- package/dist/components/dataDisplay/chart/index.d.ts +1 -1
- package/dist/components/dataDisplay/dagView/dagView.d.ts +4 -0
- package/dist/components/dataDisplay/dagView/dagView.js +124 -123
- package/dist/components/dataDisplay/dagView/dagView.js.map +1 -1
- package/dist/components/dataDisplay/dagView/index.d.ts +1 -1
- package/dist/components/dataDisplay/meter/index.d.ts +1 -1
- package/dist/components/dataDisplay/meter/meter.d.ts +14 -0
- package/dist/components/dataDisplay/meter/meter.js +32 -30
- package/dist/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/components/dataDisplay/statusDot/index.d.ts +1 -1
- package/dist/components/dataDisplay/statusDot/statusDot.d.ts +10 -1
- package/dist/components/dataDisplay/statusDot/statusDot.js +20 -11
- package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -1
- package/dist/components/dataDisplay/treeView/treeView.d.ts +18 -2
- package/dist/components/dataDisplay/treeView/treeView.js +140 -121
- package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/components/inputs/button/button.d.ts +7 -0
- package/dist/components/inputs/button/button.js +57 -51
- package/dist/components/inputs/button/button.js.map +1 -1
- package/dist/components/inputs/toggle/toggle.d.ts +6 -0
- package/dist/components/inputs/toggle/toggle.js +23 -23
- package/dist/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/components/layout/appLayout/appLayout.d.ts +6 -1
- package/dist/components/layout/appLayout/appLayout.js +49 -42
- package/dist/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/components/layout/screenDivider/screenDivider.d.ts +12 -0
- package/dist/components/layout/screenDivider/screenDivider.js +87 -46
- package/dist/components/layout/screenDivider/screenDivider.js.map +1 -1
- package/dist/components/layout/sheet/sheet.d.ts +11 -0
- package/dist/components/layout/sheet/sheet.js +122 -102
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/tabGroups/index.d.ts +1 -1
- package/dist/components/layout/tabGroups/tabGroups.d.ts +44 -1
- package/dist/components/layout/tabGroups/tabGroups.js +500 -460
- package/dist/components/layout/tabGroups/tabGroups.js.map +1 -1
- package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +16 -0
- package/dist/components/layout/tabGroups/tabGroupsFocus.js +102 -70
- package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -1
- package/dist/components/navigation/appBar/appBar.d.ts +12 -0
- package/dist/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +9 -0
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js +47 -31
- package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/navigation/tabs/tab/tab.js +71 -68
- package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/components/navigation/tabs/tabs.d.ts +11 -0
- package/dist/components/navigation/tabs/tabs.js +19 -16
- package/dist/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/components/navigation/tabs/tabsContext.d.ts +2 -0
- package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/components/dataDisplay/avatar/avatar.js +9 -9
- package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
- package/dist/headless/components/dataDisplay/dagView/dagView.js +133 -132
- package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -1
- package/dist/headless/components/dataDisplay/meter/meter.js +32 -30
- package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js +19 -10
- package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -1
- package/dist/headless/components/dataDisplay/treeView/treeView.js +139 -120
- package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
- package/dist/headless/components/inputs/button/button.js +57 -51
- package/dist/headless/components/inputs/button/button.js.map +1 -1
- package/dist/headless/components/inputs/toggle/toggle.js +23 -23
- package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
- package/dist/headless/components/layout/appLayout/appLayout.js +52 -45
- package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
- package/dist/headless/components/layout/screenDivider/screenDivider.js +88 -47
- package/dist/headless/components/layout/screenDivider/screenDivider.js.map +1 -1
- package/dist/headless/components/layout/sheet/sheet.js +124 -104
- package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
- package/dist/headless/components/layout/tabGroups/tabGroups.js +500 -460
- package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -1
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +102 -70
- package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -1
- package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +46 -30
- package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tab/tab.js +70 -67
- package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabs.js +19 -16
- package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
- package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
- package/dist/headless/primitives/publishHeaderOffset.js +19 -0
- package/dist/headless/primitives/publishHeaderOffset.js.map +1 -0
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +1 -0
- package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx +14 -12
- package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/chart/chartFull.js +12 -0
- package/dist/headless/source/components/dataDisplay/chart/chartFull.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/chart/core.js +11 -0
- package/dist/headless/source/components/dataDisplay/chart/core.js.map +7 -0
- package/dist/headless/source/components/dataDisplay/chart/index.js +1 -1
- package/dist/headless/source/components/dataDisplay/chart/index.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +2 -1
- package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/dagView/index.js.map +2 -2
- package/dist/headless/source/components/dataDisplay/meter/index.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx +14 -2
- package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/statusDot/index.js.map +1 -1
- package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx +13 -1
- package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -1
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +16 -3
- package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/headless/source/components/inputs/button/button.jsx +26 -1
- package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/headless/source/components/inputs/toggle/toggle.jsx +9 -2
- package/dist/headless/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx +14 -2
- package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/headless/source/components/layout/screenDivider/screenDivider.jsx +102 -18
- package/dist/headless/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
- package/dist/headless/source/components/layout/sheet/sheet.jsx +14 -1
- package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/headless/source/components/layout/tabGroups/index.js.map +1 -1
- package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx +55 -1
- package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx.map +1 -1
- package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js +42 -0
- package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js.map +2 -2
- package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +39 -4
- package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +7 -1
- package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx +5 -1
- package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/headless/source/index.js +8 -1
- package/dist/headless/source/index.js.map +2 -2
- package/dist/headless/source/primitives/publishHeaderOffset.js +34 -0
- package/dist/headless/source/primitives/publishHeaderOffset.js.map +7 -0
- package/dist/index.d.ts +5 -5
- package/dist/primitives/publishHeaderOffset.d.ts +7 -0
- package/dist/primitives/publishHeaderOffset.js +19 -0
- package/dist/primitives/publishHeaderOffset.js.map +1 -0
- package/dist/source/components/dataDisplay/avatar/avatar.jsx +1 -0
- package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chart/chart.jsx +14 -12
- package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -1
- package/dist/source/components/dataDisplay/chart/chartFull.js +12 -0
- package/dist/source/components/dataDisplay/chart/chartFull.js.map +7 -0
- package/dist/source/components/dataDisplay/chart/core.js +11 -0
- package/dist/source/components/dataDisplay/chart/core.js.map +7 -0
- package/dist/source/components/dataDisplay/chart/index.js +1 -1
- package/dist/source/components/dataDisplay/chart/index.js.map +1 -1
- package/dist/source/components/dataDisplay/dagView/dagView.jsx +2 -1
- package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
- package/dist/source/components/dataDisplay/dagView/index.js.map +2 -2
- package/dist/source/components/dataDisplay/meter/index.js.map +1 -1
- package/dist/source/components/dataDisplay/meter/meter.jsx +14 -2
- package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -1
- package/dist/source/components/dataDisplay/statusDot/index.js.map +1 -1
- package/dist/source/components/dataDisplay/statusDot/statusDot.jsx +13 -1
- package/dist/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -1
- package/dist/source/components/dataDisplay/treeView/treeView.jsx +16 -3
- package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
- package/dist/source/components/inputs/button/button.jsx +26 -1
- package/dist/source/components/inputs/button/button.jsx.map +1 -1
- package/dist/source/components/inputs/toggle/toggle.jsx +9 -2
- package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
- package/dist/source/components/layout/appLayout/appLayout.jsx +14 -2
- package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
- package/dist/source/components/layout/screenDivider/screenDivider.jsx +102 -18
- package/dist/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
- package/dist/source/components/layout/sheet/sheet.jsx +14 -1
- package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
- package/dist/source/components/layout/tabGroups/index.js.map +1 -1
- package/dist/source/components/layout/tabGroups/tabGroups.jsx +55 -1
- package/dist/source/components/layout/tabGroups/tabGroups.jsx.map +1 -1
- package/dist/source/components/layout/tabGroups/tabGroupsFocus.js +42 -0
- package/dist/source/components/layout/tabGroups/tabGroupsFocus.js.map +2 -2
- package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +39 -4
- package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tab/tab.jsx +7 -1
- package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabs.jsx +5 -1
- package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
- package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
- package/dist/source/index.js +8 -1
- package/dist/source/index.js.map +2 -2
- package/dist/source/primitives/publishHeaderOffset.js +34 -0
- package/dist/source/primitives/publishHeaderOffset.js.map +7 -0
- package/package.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.js","sources":["../../../../src/components/dataDisplay/avatar/avatar.tsx"],"sourcesContent":["import {\n type JSX,\n type ParentProps,\n Show,\n children as resolveChildren,\n createSignal,\n mergeProps,\n splitProps,\n} from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport type AvatarSize = \"small\" | \"medium\" | \"large\";\n\nexport interface AvatarProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Image source. Falls back to children (initials / icon) on error or when absent. */\n src?: string | undefined;\n alt?: string | undefined;\n /** Preset size or an explicit pixel value. */\n size?: AvatarSize | number;\n variant?: \"circular\" | \"rounded\" | \"square\";\n /** Background color for the fallback (initials / icon). */\n color?: string;\n /** Extra attributes forwarded to the underlying <img> (srcSet, loading…). */\n imgProps?: JSX.ImgHTMLAttributes<HTMLImageElement>;\n /** Test id of the root `<div>`; `avatar` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst isPresetSize = (size: AvatarSize | number): size is AvatarSize => typeof size === \"string\";\n\nexport function Avatar(props: ParentProps<AvatarProps>): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as AvatarSize | number, variant: \"circular\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"src\",\n \"alt\",\n \"size\",\n \"variant\",\n \"color\",\n \"style\",\n \"imgProps\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const [imgFailed, setImgFailed] = createSignal(false);\n const showImage = (): boolean => Boolean(local.src) && !imgFailed();\n\n const inlineStyle = (): JSX.CSSProperties | string | undefined => {\n const size = local.size;\n return mergeStyle(local.style, {\n ...(isPresetSize(size) ? {} : { width: `${size}px`, height: `${size}px`, \"font-size\": `${size / 2.5}px` }),\n ...(local.color && !showImage() ? { \"background-color\": local.color } : {}),\n });\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"avatar\"}\n class={cn(\n \"smwb-avatar\",\n `smwb-avatar_${local.variant}`,\n isPresetSize(local.size) ? `smwb-avatar_${local.size}` : undefined,\n local.class\n )}\n style={inlineStyle()}\n >\n <Show\n when={showImage()}\n fallback={\n <span class=\"smwb-avatar__fallback\" role=\"img\" aria-label={local.alt}>\n {local.children}\n </span>\n }\n >\n <img\n {...(local.imgProps ?? {})}\n class={cn(\"smwb-avatar__img\", local.imgProps?.class)}\n src={local.src}\n alt={local.alt}\n onError={(event) => {\n setImgFailed(true);\n callHandler(local.imgProps?.onError, event);\n }}\n />\n </Show>\n </div>\n );\n}\n\nexport interface AvatarGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Maximum avatars to show before collapsing the rest into a \"+N\" surplus. */\n max?: number;\n /** Override the total count used for the surplus label (defaults to children count). */\n total?: number;\n /** Click handler for the \"+N\" surplus chip. */\n onSurplusClick?: () => void;\n /** Accessible name of the \"+N\" surplus chip. */\n surplusAriaLabel?: (count: number) => string;\n /** Size of the \"+N\" surplus chip: match the avatars in the group. */\n size?: AvatarSize | number;\n /** Test id of the root `<div>`; `avatar-group` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function AvatarGroup(props: ParentProps<AvatarGroupProps>): JSX.Element {\n const merged = mergeProps(\n { max: 5, surplusAriaLabel: (count: number) => `${count} more` },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"max\",\n \"total\",\n \"onSurplusClick\",\n \"surplusAriaLabel\",\n \"size\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const resolved = resolveChildren(() => local.children);\n const items = (): unknown[] => resolved.toArray();\n const totalCount = (): number => local.total ?? items().length;\n const clampedMax = (): number => Math.max(local.max, 1);\n const visible = (): unknown[] => items().slice(0, clampedMax());\n const hidden = (): unknown[] => items().slice(clampedMax());\n const surplus = (): number => totalCount() - visible().length;\n\n // In order, the first avatar first; the \"+N\" chip ends the row.\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"avatar-group\"}\n class={cn(\"smwb-avatar-group\", local.class)}\n >\n {visible() as JSX.Element}\n <Show when={surplus() > 0}>\n <Avatar\n class=\"smwb-avatar-group__surplus\"\n size={local.size ?? \"medium\"}\n alt={local.surplusAriaLabel(surplus())}\n onClick={local.onSurplusClick}\n style={local.onSurplusClick ? { cursor: \"pointer\" } : undefined}\n >\n {`+${surplus()}`}\n </Avatar>\n </Show>\n {/* Avatars past max are created with the rest (the children resolve at\n once), so they are rendered, hidden: a server that left them out would\n leave the browser without nodes to hydrate them from. */}\n <Show when={hidden().length > 0}>\n <span class=\"smwb-avatar-group__hidden\" hidden>\n {hidden() as JSX.Element}\n </span>\n </Show>\n </div>\n );\n}\n\nexport default Avatar;\n"],"names":["isPresetSize","size","Avatar","props","merged","mergeProps","variant","local","rest","splitProps","imgFailed","setImgFailed","createSignal","showImage","Boolean","src","inlineStyle","mergeStyle","style","width","height","color","_el$","_tmpl$2","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","cn","undefined","class","_$insert","_$createComponent","Show","when","fallback","_el$3","_tmpl$3","children","_$effect","_$setAttribute","alt","_el$2","_tmpl$","imgProps","event","callHandler","onError","AvatarGroup","max","surplusAriaLabel","count","resolved","resolveChildren","items","toArray","totalCount","total","length","clampedMax","Math","visible","slice","hidden","surplus","_el$4","_ref$2","onClick","onSurplusClick","cursor","_el$5","_tmpl$4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"avatar.js","sources":["../../../../src/components/dataDisplay/avatar/avatar.tsx"],"sourcesContent":["import {\n type JSX,\n type ParentProps,\n Show,\n children as resolveChildren,\n createSignal,\n mergeProps,\n splitProps,\n} from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport type AvatarSize = \"small\" | \"medium\" | \"large\";\n\nexport interface AvatarProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * Image source. Falls back to children (initials / icon) on error or when absent. While the image is shown the\n * avatar paints no background under it, so a transparent PNG/SVG shows what is behind the avatar.\n */\n src?: string | undefined;\n alt?: string | undefined;\n /** Preset size or an explicit pixel value. */\n size?: AvatarSize | number;\n variant?: \"circular\" | \"rounded\" | \"square\";\n /** Background color for the fallback (initials / icon); not painted under an image. */\n color?: string;\n /** Extra attributes forwarded to the underlying <img> (srcSet, loading…). */\n imgProps?: JSX.ImgHTMLAttributes<HTMLImageElement>;\n /** Test id of the root `<div>`; `avatar` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst isPresetSize = (size: AvatarSize | number): size is AvatarSize => typeof size === \"string\";\n\nexport function Avatar(props: ParentProps<AvatarProps>): JSX.Element {\n const merged = mergeProps({ size: \"medium\" as AvatarSize | number, variant: \"circular\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"src\",\n \"alt\",\n \"size\",\n \"variant\",\n \"color\",\n \"style\",\n \"imgProps\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const [imgFailed, setImgFailed] = createSignal(false);\n const showImage = (): boolean => Boolean(local.src) && !imgFailed();\n\n const inlineStyle = (): JSX.CSSProperties | string | undefined => {\n const size = local.size;\n return mergeStyle(local.style, {\n ...(isPresetSize(size) ? {} : { width: `${size}px`, height: `${size}px`, \"font-size\": `${size / 2.5}px` }),\n ...(local.color && !showImage() ? { \"background-color\": local.color } : {}),\n });\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"avatar\"}\n class={cn(\n \"smwb-avatar\",\n `smwb-avatar_${local.variant}`,\n isPresetSize(local.size) ? `smwb-avatar_${local.size}` : undefined,\n showImage() ? \"smwb-avatar_image\" : undefined,\n local.class\n )}\n style={inlineStyle()}\n >\n <Show\n when={showImage()}\n fallback={\n <span class=\"smwb-avatar__fallback\" role=\"img\" aria-label={local.alt}>\n {local.children}\n </span>\n }\n >\n <img\n {...(local.imgProps ?? {})}\n class={cn(\"smwb-avatar__img\", local.imgProps?.class)}\n src={local.src}\n alt={local.alt}\n onError={(event) => {\n setImgFailed(true);\n callHandler(local.imgProps?.onError, event);\n }}\n />\n </Show>\n </div>\n );\n}\n\nexport interface AvatarGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Maximum avatars to show before collapsing the rest into a \"+N\" surplus. */\n max?: number;\n /** Override the total count used for the surplus label (defaults to children count). */\n total?: number;\n /** Click handler for the \"+N\" surplus chip. */\n onSurplusClick?: () => void;\n /** Accessible name of the \"+N\" surplus chip. */\n surplusAriaLabel?: (count: number) => string;\n /** Size of the \"+N\" surplus chip: match the avatars in the group. */\n size?: AvatarSize | number;\n /** Test id of the root `<div>`; `avatar-group` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function AvatarGroup(props: ParentProps<AvatarGroupProps>): JSX.Element {\n const merged = mergeProps(\n { max: 5, surplusAriaLabel: (count: number) => `${count} more` },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"max\",\n \"total\",\n \"onSurplusClick\",\n \"surplusAriaLabel\",\n \"size\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const resolved = resolveChildren(() => local.children);\n const items = (): unknown[] => resolved.toArray();\n const totalCount = (): number => local.total ?? items().length;\n const clampedMax = (): number => Math.max(local.max, 1);\n const visible = (): unknown[] => items().slice(0, clampedMax());\n const hidden = (): unknown[] => items().slice(clampedMax());\n const surplus = (): number => totalCount() - visible().length;\n\n // In order, the first avatar first; the \"+N\" chip ends the row.\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"avatar-group\"}\n class={cn(\"smwb-avatar-group\", local.class)}\n >\n {visible() as JSX.Element}\n <Show when={surplus() > 0}>\n <Avatar\n class=\"smwb-avatar-group__surplus\"\n size={local.size ?? \"medium\"}\n alt={local.surplusAriaLabel(surplus())}\n onClick={local.onSurplusClick}\n style={local.onSurplusClick ? { cursor: \"pointer\" } : undefined}\n >\n {`+${surplus()}`}\n </Avatar>\n </Show>\n {/* Avatars past max are created with the rest (the children resolve at\n once), so they are rendered, hidden: a server that left them out would\n leave the browser without nodes to hydrate them from. */}\n <Show when={hidden().length > 0}>\n <span class=\"smwb-avatar-group__hidden\" hidden>\n {hidden() as JSX.Element}\n </span>\n </Show>\n </div>\n );\n}\n\nexport default Avatar;\n"],"names":["isPresetSize","size","Avatar","props","merged","mergeProps","variant","local","rest","splitProps","imgFailed","setImgFailed","createSignal","showImage","Boolean","src","inlineStyle","mergeStyle","style","width","height","color","_el$","_tmpl$2","_ref$","mergeRefs","ref","_$use","_$spread","_$mergeProps","cn","undefined","class","_$insert","_$createComponent","Show","when","fallback","_el$3","_tmpl$3","children","_$effect","_$setAttribute","alt","_el$2","_tmpl$","imgProps","event","callHandler","onError","AvatarGroup","max","surplusAriaLabel","count","resolved","resolveChildren","items","toArray","totalCount","total","length","clampedMax","Math","visible","slice","hidden","surplus","_el$4","_ref$2","onClick","onSurplusClick","cursor","_el$5","_tmpl$4"],"mappings":"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"}
|
|
@@ -43,9 +43,12 @@ export interface ChartProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "on
|
|
|
43
43
|
/** The chart's height: a number of pixels or any CSS length; 240 by default. It fills the width. */
|
|
44
44
|
height?: number | string;
|
|
45
45
|
/**
|
|
46
|
-
* Loads ECharts in the browser
|
|
47
|
-
*
|
|
48
|
-
*
|
|
46
|
+
* Loads ECharts in the browser. Optional in `@smwb/ui-solid/chart`, where
|
|
47
|
+
* `import("echarts")` — the whole library — is the default; required in
|
|
48
|
+
* `@smwb/ui-solid/chart/core`, which has no default and so never puts the
|
|
49
|
+
* whole library in your bundle. For a smaller bundle pass
|
|
50
|
+
* `() => import("./my-echarts")`, a module that registers only the charts
|
|
51
|
+
* you use with `echarts/core`.
|
|
49
52
|
*/
|
|
50
53
|
loader?: () => Promise<ChartModule>;
|
|
51
54
|
/** How ECharts draws: "canvas" (default) or "svg". Read once, when the chart is created. */
|
|
@@ -59,9 +62,14 @@ export interface ChartProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "on
|
|
|
59
62
|
ref?: Ref<HTMLDivElement>;
|
|
60
63
|
}
|
|
61
64
|
/**
|
|
62
|
-
* An ECharts chart in the theme's palette
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
+
* An ECharts chart in the theme's palette, loaded by the `loader` it is given
|
|
66
|
+
* and by nothing else: this module never reaches `echarts`, so a bundler that
|
|
67
|
+
* follows it finds no copy of the whole library. The `chart` entry puts the
|
|
68
|
+
* default loader on top (`chartFull.ts`); the `chart/core` entry is this
|
|
69
|
+
* component as it is, with `loader` required (`core.ts`).
|
|
70
|
+
*
|
|
71
|
+
* On the server, and until ECharts loads in the browser, a skeleton of the same
|
|
72
|
+
* size stands in its place, so the page does not jump; the chart follows theme
|
|
73
|
+
* switches and its box's size.
|
|
65
74
|
*/
|
|
66
|
-
export declare function
|
|
67
|
-
export default Chart;
|
|
75
|
+
export declare function ChartCore(props: ChartProps): JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type JSX } from "solid-js";
|
|
2
|
+
import { type ChartProps } from "./chart";
|
|
3
|
+
/**
|
|
4
|
+
* An ECharts chart in the theme's palette. Without a `loader` it loads the
|
|
5
|
+
* whole of `echarts`, which makes the bundler emit a chunk with the whole
|
|
6
|
+
* library; to build without that chunk import `Chart` from
|
|
7
|
+
* `@smwb/ui-solid/chart/core` and give it a `loader` of your own.
|
|
8
|
+
*
|
|
9
|
+
* On the server, and until ECharts loads in the browser, a skeleton of the same
|
|
10
|
+
* size stands in its place, so the page does not jump; the chart follows theme
|
|
11
|
+
* switches and its box's size.
|
|
12
|
+
*/
|
|
13
|
+
export declare function Chart(props: ChartProps): JSX.Element;
|
|
14
|
+
export default Chart;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { JSX } from "solid-js";
|
|
2
|
+
import { type ChartModule, type ChartProps as ChartPropsWithDefaultLoader } from "./chart";
|
|
3
|
+
/** The props of `Chart`, with `loader` required: there is no default to fall back on. */
|
|
4
|
+
export type ChartProps = Omit<ChartPropsWithDefaultLoader, "loader"> & {
|
|
5
|
+
/**
|
|
6
|
+
* Loads ECharts in the browser: `() => import("./my-echarts")`, a module that
|
|
7
|
+
* registers only the charts you use with `echarts/core` and exports its `init`.
|
|
8
|
+
*/
|
|
9
|
+
loader: () => Promise<ChartModule>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* An ECharts chart in the theme's palette, with no built-in ECharts: `loader`
|
|
13
|
+
* is required, and the whole library is never part of your bundle.
|
|
14
|
+
*/
|
|
15
|
+
export declare const Chart: (props: ChartProps) => JSX.Element;
|
|
16
|
+
export default Chart;
|
|
17
|
+
export type { ChartEventParams, ChartInstance, ChartModule } from "./chart";
|
|
18
|
+
export { chartTheme, readChartPalette } from "./chartTheme";
|
|
19
|
+
export type { ChartOption, ChartPalette } from "./chartTheme";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Chart, default } from "./
|
|
1
|
+
export { Chart, default } from "./chartFull";
|
|
2
2
|
export type { ChartProps, ChartEventParams, ChartInstance, ChartModule } from "./chart";
|
|
3
3
|
export { chartTheme, readChartPalette } from "./chartTheme";
|
|
4
4
|
export type { ChartOption, ChartPalette } from "./chartTheme";
|
|
@@ -4,6 +4,8 @@ import { type DagDirection, type DagLayoutInput, type DagLayoutResult } from "./
|
|
|
4
4
|
import { type Viewport } from "./panZoom";
|
|
5
5
|
/** A node's status: a built-in one, coloured by the theme, or any word of the app's, styled by `[data-status]`. */
|
|
6
6
|
export type DagViewStatus = "idle" | "pending" | "running" | "success" | "warning" | "error" | "skipped" | (string & {});
|
|
7
|
+
/** The line style of a node's frame: dashed or solid, over its status and the theme's `--smwb-dag-view-node-border-style`. */
|
|
8
|
+
export type DagViewNodeVariant = "solid" | "dashed";
|
|
7
9
|
export interface DagViewNode<T = unknown> {
|
|
8
10
|
/** Unique among the nodes; edges name nodes by it. */
|
|
9
11
|
id: string;
|
|
@@ -13,6 +15,8 @@ export interface DagViewNode<T = unknown> {
|
|
|
13
15
|
status?: DagViewStatus | undefined;
|
|
14
16
|
/** The node's accent colour, over its status colour: any CSS colour. */
|
|
15
17
|
accent?: string | undefined;
|
|
18
|
+
/** The line style of the node's frame, over its status and the theme; the theme's unless given. */
|
|
19
|
+
variant?: DagViewNodeVariant | undefined;
|
|
16
20
|
/** The node's width in pixels; `nodeWidth` unless given. */
|
|
17
21
|
width?: number | undefined;
|
|
18
22
|
/** The node's height in pixels; `nodeHeight` unless given. */
|