@k2b/ui 0.33.0 → 0.34.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/dist/base.css +14 -1
- package/dist/browser/actions/ContextMenu.js +13 -0
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/Dropdown.js +15 -4
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/SelectionToolbar.js +129 -0
- package/dist/browser/actions/SelectionToolbar.js.map +1 -0
- package/dist/browser/actions/index.js +1 -0
- package/dist/browser/actions/index.js.map +1 -1
- package/dist/browser/charts.js +6 -0
- package/dist/browser/charts.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +525 -407
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +4 -0
- package/dist/browser/chat/chat-messages.js.map +1 -1
- package/dist/browser/chat/composer-document.js +19 -0
- package/dist/browser/chat/composer-document.js.map +1 -1
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/content/Chart.js +8 -0
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/FileGrid.js +231 -9
- package/dist/browser/content/FileGrid.js.map +1 -1
- package/dist/browser/content/FileTypeIcon.js +15 -0
- package/dist/browser/content/FileTypeIcon.js.map +1 -1
- package/dist/browser/content/FileView.js +11 -4
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/MessageRow.js +73 -53
- package/dist/browser/content/MessageRow.js.map +1 -1
- package/dist/browser/content/ReactionBar.js +3 -1
- package/dist/browser/content/ReactionBar.js.map +1 -1
- package/dist/browser/content/calendar-day-scroll.js +4 -3
- package/dist/browser/content/calendar-day-scroll.js.map +1 -1
- package/dist/browser/content/chart-bar.js +476 -0
- package/dist/browser/content/chart-bar.js.map +1 -0
- package/dist/browser/content/file-list-messages.js +52 -0
- package/dist/browser/content/file-list-messages.js.map +1 -0
- package/dist/browser/content/index.js +1 -1
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/feedback/Tooltip.js +31 -14
- package/dist/browser/feedback/Tooltip.js.map +1 -1
- package/dist/browser/inputs/ChoiceList.js +178 -0
- package/dist/browser/inputs/ChoiceList.js.map +1 -0
- package/dist/browser/inputs/ChoiceSlider.js +314 -0
- package/dist/browser/inputs/ChoiceSlider.js.map +1 -0
- package/dist/browser/inputs/ChoiceTiles.js +135 -0
- package/dist/browser/inputs/ChoiceTiles.js.map +1 -0
- package/dist/browser/inputs/ColorChoices.js +120 -0
- package/dist/browser/inputs/ColorChoices.js.map +1 -0
- package/dist/browser/inputs/QrScanner.js +95 -13
- package/dist/browser/inputs/QrScanner.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +15 -13
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/index.js +4 -0
- package/dist/browser/inputs/index.js.map +1 -1
- package/dist/browser/inputs/qr-messages.js +2 -0
- package/dist/browser/inputs/qr-messages.js.map +1 -1
- package/dist/browser/internal/radio-keys.js +13 -0
- package/dist/browser/internal/radio-keys.js.map +1 -0
- package/dist/browser/layout/AnchoredPopover.js +180 -0
- package/dist/browser/layout/AnchoredPopover.js.map +1 -0
- package/dist/browser/layout/AppWorkspace.js +155 -20
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/DetailPanel.js +443 -333
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/MobileShell.js +21 -7
- package/dist/browser/layout/MobileShell.js.map +1 -1
- package/dist/browser/layout/Settings.js +283 -175
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SidebarRailHint.js +79 -0
- package/dist/browser/layout/SidebarRailHint.js.map +1 -0
- package/dist/browser/layout/SidebarSwitcher.js +79 -66
- package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
- package/dist/browser/layout/TabBar.js +18 -4
- package/dist/browser/layout/TabBar.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +11 -4
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/detail-panel-messages.js +4 -2
- package/dist/browser/layout/detail-panel-messages.js.map +1 -1
- package/dist/browser/layout/index.js +2 -1
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/settings-messages.js +26 -2
- package/dist/browser/layout/settings-messages.js.map +1 -1
- package/dist/browser/surfaces/Avatar.js +2 -14
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/DotStrip.js +70 -0
- package/dist/browser/surfaces/DotStrip.js.map +1 -0
- package/dist/browser/surfaces/ProgressRing.js +3 -0
- package/dist/browser/surfaces/ProgressRing.js.map +1 -1
- package/dist/browser/surfaces/ResourceCard.js +125 -68
- package/dist/browser/surfaces/ResourceCard.js.map +1 -1
- package/dist/browser/surfaces/index.js +2 -0
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/browser/surfaces/person-color.js +18 -0
- package/dist/browser/surfaces/person-color.js.map +1 -0
- package/dist/browser/surfaces/resource-messages.js +6 -2
- package/dist/browser/surfaces/resource-messages.js.map +1 -1
- package/dist/browser/widgets/Widget.js +3 -2
- package/dist/browser/widgets/Widget.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js +9 -0
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +14 -4
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/SelectionToolbar.js +104 -0
- package/dist/ssr/actions/SelectionToolbar.js.map +1 -0
- package/dist/ssr/actions/index.js +1 -0
- package/dist/ssr/actions/index.js.map +1 -1
- package/dist/ssr/charts.js +6 -0
- package/dist/ssr/charts.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +132 -53
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +4 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -1
- package/dist/ssr/chat/composer-document.js +19 -0
- package/dist/ssr/chat/composer-document.js.map +1 -1
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/content/Chart.js +8 -0
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/FileGrid.js +132 -5
- package/dist/ssr/content/FileGrid.js.map +1 -1
- package/dist/ssr/content/FileTypeIcon.js +15 -0
- package/dist/ssr/content/FileTypeIcon.js.map +1 -1
- package/dist/ssr/content/FileView.js +11 -4
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/MessageRow.js +16 -6
- package/dist/ssr/content/MessageRow.js.map +1 -1
- package/dist/ssr/content/ReactionBar.js +3 -1
- package/dist/ssr/content/ReactionBar.js.map +1 -1
- package/dist/ssr/content/calendar-day-scroll.js +4 -3
- package/dist/ssr/content/calendar-day-scroll.js.map +1 -1
- package/dist/ssr/content/chart-bar.js +476 -0
- package/dist/ssr/content/chart-bar.js.map +1 -0
- package/dist/ssr/content/file-list-messages.js +52 -0
- package/dist/ssr/content/file-list-messages.js.map +1 -0
- package/dist/ssr/content/index.js +1 -1
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/feedback/Tooltip.js +31 -14
- package/dist/ssr/feedback/Tooltip.js.map +1 -1
- package/dist/ssr/inputs/ChoiceList.js +95 -0
- package/dist/ssr/inputs/ChoiceList.js.map +1 -0
- package/dist/ssr/inputs/ChoiceSlider.js +191 -0
- package/dist/ssr/inputs/ChoiceSlider.js.map +1 -0
- package/dist/ssr/inputs/ChoiceTiles.js +61 -0
- package/dist/ssr/inputs/ChoiceTiles.js.map +1 -0
- package/dist/ssr/inputs/ColorChoices.js +60 -0
- package/dist/ssr/inputs/ColorChoices.js.map +1 -0
- package/dist/ssr/inputs/QrScanner.js +89 -10
- package/dist/ssr/inputs/QrScanner.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js +13 -1
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/index.js +4 -0
- package/dist/ssr/inputs/index.js.map +1 -1
- package/dist/ssr/inputs/qr-messages.js +2 -0
- package/dist/ssr/inputs/qr-messages.js.map +1 -1
- package/dist/ssr/internal/radio-keys.js +13 -0
- package/dist/ssr/internal/radio-keys.js.map +1 -0
- package/dist/ssr/layout/AnchoredPopover.js +142 -0
- package/dist/ssr/layout/AnchoredPopover.js.map +1 -0
- package/dist/ssr/layout/AppWorkspace.js +154 -20
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/DetailPanel.js +181 -108
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/MobileShell.js +20 -6
- package/dist/ssr/layout/MobileShell.js.map +1 -1
- package/dist/ssr/layout/Settings.js +122 -45
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SidebarRailHint.js +79 -0
- package/dist/ssr/layout/SidebarRailHint.js.map +1 -0
- package/dist/ssr/layout/SidebarSwitcher.js +13 -3
- package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
- package/dist/ssr/layout/TabBar.js +11 -3
- package/dist/ssr/layout/TabBar.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +11 -4
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/detail-panel-messages.js +4 -2
- package/dist/ssr/layout/detail-panel-messages.js.map +1 -1
- package/dist/ssr/layout/index.js +2 -1
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/settings-messages.js +26 -2
- package/dist/ssr/layout/settings-messages.js.map +1 -1
- package/dist/ssr/surfaces/Avatar.js +2 -14
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/DotStrip.js +31 -0
- package/dist/ssr/surfaces/DotStrip.js.map +1 -0
- package/dist/ssr/surfaces/ProgressRing.js +3 -0
- package/dist/ssr/surfaces/ProgressRing.js.map +1 -1
- package/dist/ssr/surfaces/ResourceCard.js +40 -15
- package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
- package/dist/ssr/surfaces/index.js +2 -0
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/ssr/surfaces/person-color.js +18 -0
- package/dist/ssr/surfaces/person-color.js.map +1 -0
- package/dist/ssr/surfaces/resource-messages.js +6 -2
- package/dist/ssr/surfaces/resource-messages.js.map +1 -1
- package/dist/ssr/widgets/Widget.js +3 -2
- package/dist/ssr/widgets/Widget.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/ContextMenu.d.ts +5 -0
- package/dist/types/actions/Dropdown.d.ts +5 -0
- package/dist/types/actions/SelectionToolbar.d.ts +38 -0
- package/dist/types/actions/index.d.ts +2 -0
- package/dist/types/charts.d.ts +5 -0
- package/dist/types/chat/ChatComposer.d.ts +15 -0
- package/dist/types/chat/chat-messages.d.ts +2 -0
- package/dist/types/chat/composer-document.d.ts +5 -0
- package/dist/types/chat/index.d.ts +1 -1
- package/dist/types/content/Chart.d.ts +2 -1
- package/dist/types/content/FileGrid.d.ts +43 -3
- package/dist/types/content/FileTypeIcon.d.ts +10 -0
- package/dist/types/content/FileView.d.ts +5 -1
- package/dist/types/content/MessageRow.d.ts +2 -0
- package/dist/types/content/calendar-day-scroll.d.ts +2 -1
- package/dist/types/content/chart-bar.d.ts +60 -0
- package/dist/types/content/file-list-messages.d.ts +24 -0
- package/dist/types/content/index.d.ts +2 -2
- package/dist/types/feedback/Tooltip.d.ts +8 -2
- package/dist/types/inputs/ChoiceList.d.ts +28 -0
- package/dist/types/inputs/ChoiceSlider.d.ts +36 -0
- package/dist/types/inputs/ChoiceTiles.d.ts +25 -0
- package/dist/types/inputs/ColorChoices.d.ts +19 -0
- package/dist/types/inputs/index.d.ts +8 -0
- package/dist/types/inputs/qr-messages.d.ts +1 -0
- package/dist/types/internal/radio-keys.d.ts +5 -0
- package/dist/types/layout/AnchoredPopover.d.ts +31 -0
- package/dist/types/layout/AppWorkspace.d.ts +10 -0
- package/dist/types/layout/DetailPanel.d.ts +17 -0
- package/dist/types/layout/MobileShell.d.ts +5 -2
- package/dist/types/layout/Settings.d.ts +22 -0
- package/dist/types/layout/SidebarRailHint.d.ts +26 -0
- package/dist/types/layout/TabBar.d.ts +5 -0
- package/dist/types/layout/detail-panel-messages.d.ts +1 -0
- package/dist/types/layout/index.d.ts +3 -2
- package/dist/types/layout/settings-messages.d.ts +12 -0
- package/dist/types/surfaces/DotStrip.d.ts +22 -0
- package/dist/types/surfaces/ProgressRing.d.ts +2 -1
- package/dist/types/surfaces/ResourceCard.d.ts +9 -0
- package/dist/types/surfaces/index.d.ts +4 -1
- package/dist/types/surfaces/person-color.d.ts +10 -0
- package/dist/types/surfaces/resource-messages.d.ts +2 -0
- package/dist/types/widgets/Widget.d.ts +3 -2
- package/package.json +6 -1
|
@@ -13,7 +13,8 @@ const detailPanelMessages = i18n.define({
|
|
|
13
13
|
showMore: ({
|
|
14
14
|
count
|
|
15
15
|
}) => `Show ${count} more`,
|
|
16
|
-
showLess: "Show less"
|
|
16
|
+
showLess: "Show less",
|
|
17
|
+
moreActions: "More actions"
|
|
17
18
|
},
|
|
18
19
|
de: {
|
|
19
20
|
noneYet: "Noch keine",
|
|
@@ -23,7 +24,8 @@ const detailPanelMessages = i18n.define({
|
|
|
23
24
|
showMore: ({
|
|
24
25
|
count
|
|
25
26
|
}) => `${count} weitere anzeigen`,
|
|
26
|
-
showLess: "Weniger anzeigen"
|
|
27
|
+
showLess: "Weniger anzeigen",
|
|
28
|
+
moreActions: "Weitere Aktionen"
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["layout/detail-panel-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\n/** Counts and list folding shared by detail panel sections and discussions. */\nconst detailPanelMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n noneYet: \"None yet\",\n showOlder: ({ count }: { count: number }) => `Show ${count} older`,\n showMore: ({ count }: { count: number }) => `Show ${count} more`,\n showLess: \"Show less\",\n },\n de: {\n noneYet: \"Noch keine\",\n showOlder: ({ count }) => `${count} ältere anzeigen`,\n showMore: ({ count }) => `${count} weitere anzeigen`,\n showLess: \"Weniger anzeigen\",\n },\n },\n});\n\nexport type DetailPanelMessages = ReturnType<(typeof detailPanelMessages)[\"resolve\"]>[\"t\"];\n\nexport const useDetailPanelMessages = (): (() => DetailPanelMessages) => {\n const locale = useLocale();\n return () => detailPanelMessages.resolve([locale()]).t;\n};\n\nexport const checkDetailPanelMessages = () => detailPanelMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;;AAE1C;AACA,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;EACtC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,OAAO,EAAE,UAAU;MACnB,SAAS,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,QAAQ;MAClE,QAAQ,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,OAAO;MAChE,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/detail-panel-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\n/** Counts and list folding shared by detail panel sections and discussions. */\nconst detailPanelMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n noneYet: \"None yet\",\n showOlder: ({ count }: { count: number }) => `Show ${count} older`,\n showMore: ({ count }: { count: number }) => `Show ${count} more`,\n showLess: \"Show less\",\n moreActions: \"More actions\",\n },\n de: {\n noneYet: \"Noch keine\",\n showOlder: ({ count }) => `${count} ältere anzeigen`,\n showMore: ({ count }) => `${count} weitere anzeigen`,\n showLess: \"Weniger anzeigen\",\n moreActions: \"Weitere Aktionen\",\n },\n },\n});\n\nexport type DetailPanelMessages = ReturnType<(typeof detailPanelMessages)[\"resolve\"]>[\"t\"];\n\nexport const useDetailPanelMessages = (): (() => DetailPanelMessages) => {\n const locale = useLocale();\n return () => detailPanelMessages.resolve([locale()]).t;\n};\n\nexport const checkDetailPanelMessages = () => detailPanelMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;;AAE1C;AACA,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;EACtC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,OAAO,EAAE,UAAU;MACnB,SAAS,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,QAAQ;MAClE,QAAQ,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,OAAO;MAChE,QAAQ,EAAE,WAAW;MACrB,WAAW,EAAE;IACf,CAAC;IACD,EAAE,EAAE;MACF,OAAO,EAAE,YAAY;MACrB,SAAS,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,kBAAkB;MACpD,QAAQ,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,mBAAmB;MACpD,QAAQ,EAAE,kBAAkB;MAC5B,WAAW,EAAE;IACf;EACF;AACF,CAAC,CAAC;AAIF,OAAO,MAAM,sBAAsB,GAAG,MAAmC;EACvE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,OAAO,MAAM,wBAAwB,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { AnchoredPopover } from "./AnchoredPopover";
|
|
1
2
|
export { default as AppOverview } from "./AppOverview";
|
|
2
3
|
export { appWorkspaceDetailElementId, default as AppWorkspace } from "./AppWorkspace";
|
|
3
4
|
export { watchAppHostWidth } from "./app-host-width";
|
|
@@ -21,7 +22,7 @@ export { activatePanesItem, addPanesItem, applyPanesIntent, createPanesLayout, i
|
|
|
21
22
|
export { default as ResizeSeparator } from "./ResizeSeparator";
|
|
22
23
|
export { attachResizeSeparator } from "./resize-separator";
|
|
23
24
|
export { default as ScrollArea } from "./ScrollArea";
|
|
24
|
-
export { readSettingsError, SettingsField, SettingsGroup, SettingsPage, SettingsPanelFooter, SettingsSaveBar, SettingsSection, sameSettingValue } from "./Settings";
|
|
25
|
+
export { readSettingsError, SaveStatus, SettingsField, SettingsGroup, SettingsPage, SettingsPanelFooter, SettingsSaveBar, SettingsSection, sameSettingValue } from "./Settings";
|
|
25
26
|
export { default as SettingsCollection } from "./SettingsCollection";
|
|
26
27
|
export { default as SettingsModal } from "./SettingsModal";
|
|
27
28
|
export { APP_WORKSPACE_SWITCHER_SEARCH_FROM } from "./SidebarSwitcher";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["layout/index.ts"],"sourcesContent":["export type {\n AppOverviewCardsProps,\n AppOverviewEmptyStateProps,\n AppOverviewPanelProps,\n AppOverviewProps,\n} from \"./AppOverview\";\nexport { default as AppOverview } from \"./AppOverview\";\nexport type {\n AppWorkspaceBottomDrawerHeight,\n AppWorkspaceBottomDrawerProps,\n AppWorkspaceContentProps,\n AppWorkspaceDetailProps,\n AppWorkspaceDetailWidth,\n AppWorkspaceHeadProps,\n AppWorkspaceMainPaneProps,\n AppWorkspaceMainProps,\n AppWorkspaceNavTreeItemProps,\n AppWorkspaceNavTreeMove,\n AppWorkspaceNavTreeProps,\n AppWorkspaceProps,\n AppWorkspaceSidebarAccessoryVisibility,\n AppWorkspaceSidebarBodyProps,\n AppWorkspaceSidebarIconActionProps,\n AppWorkspaceSidebarIconActionTone,\n AppWorkspaceSidebarIconGridProps,\n AppWorkspaceSidebarItemActionProps,\n AppWorkspaceSidebarItemActionsProps,\n AppWorkspaceSidebarItemIconProps,\n AppWorkspaceSidebarItemLabelProps,\n AppWorkspaceSidebarItemMetaProps,\n AppWorkspaceSidebarItemProps,\n AppWorkspaceSidebarItemStatusProps,\n AppWorkspaceSidebarItemTone,\n AppWorkspaceSidebarProps,\n AppWorkspaceSidebarSectionProps,\n AppWorkspaceSidebarVisibility,\n AppWorkspaceWidthShare,\n} from \"./AppWorkspace\";\nexport { appWorkspaceDetailElementId, default as AppWorkspace } from \"./AppWorkspace\";\nexport { watchAppHostWidth } from \"./app-host-width\";\nexport type { AppWorkspaceControllerOptions } from \"./app-workspace-controller\";\nexport { installAppWorkspaceController, parkWorkspaceDetailDrawers } from \"./app-workspace-controller\";\nexport type {\n AppWorkspaceLayoutState,\n AppWorkspaceResizeKind,\n} from \"./app-workspace-state\";\nexport {\n APP_WORKSPACE_DETAIL_DEFAULT,\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_DEFAULT,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_MAIN_MIN,\n APP_WORKSPACE_MAIN_MIN_HEIGHT,\n APP_WORKSPACE_PANE_DEFAULT,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_DEFAULT,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n appWorkspaceLayoutStyle,\n appWorkspacePanelVariable,\n appWorkspaceResizeLimits,\n normalizeAppWorkspaceLayoutState,\n parseAppWorkspaceLayoutState,\n resolveAppWorkspaceSidebarWidth,\n safeAppWorkspacePanelId,\n serializeAppWorkspaceLayoutState,\n shouldCollapseAppWorkspaceSidebar,\n} from \"./app-workspace-state\";\nexport { type BottomSheetProps, bottomSheetAdaptiveOptions, bottomSheetOptions, default as BottomSheet } from \"./BottomSheet\";\nexport type { DataPanelProps } from \"./DataPanel\";\nexport { DataPanel } from \"./DataPanel\";\nexport type {\n DetailPanelActionButtonProps,\n DetailPanelActionLinkProps,\n DetailPanelActionProps,\n DetailPanelActionSecondary,\n DetailPanelBodyProps,\n DetailPanelGroupProps,\n DetailPanelHeaderProps,\n DetailPanelProps,\n DetailPanelSectionProps,\n DetailPanelSummaryProps,\n DetailPanelTone,\n} from \"./DetailPanel\";\nexport { default as DetailPanel } from \"./DetailPanel\";\nexport type { DiscussionComposerProps, DiscussionItemProps, DiscussionListProps, DiscussionProps } from \"./Discussion\";\nexport { default as Discussion } from \"./Discussion\";\nexport type {\n FloatingWindowClose,\n FloatingWindowProps,\n OpenFloatingWindowOptions,\n} from \"./FloatingWindow\";\nexport {\n default as FloatingWindow,\n type FloatingWindowRect,\n fitFloatingWindowRect,\n openFloatingWindow,\n} from \"./FloatingWindow\";\nexport type { MobileShellHeaderProps, MobileShellProps, MobileShellSidebarItem, MobileShellSidebarProps } from \"./MobileShell\";\nexport { default as MobileShell, observeMobileShell } from \"./MobileShell\";\nexport { default as Navigation, type NavigationProps } from \"./Navigation\";\nexport {\n createNavigation,\n findNavigationItem,\n type NavigationController,\n type NavigationItem,\n type NavigationOptions,\n type NavigationStatus,\n} from \"./navigation-model\";\nexport type { PageTitleProps, PageTrailLink, PageTrailState } from \"./PageTitle\";\nexport { followPageTrail, PAGE_TRAIL_EVENT, PageTitle, PageTrailProvider, readPageTrail, setPageTrail, usePageTrail } from \"./PageTitle\";\nexport type {\n PanelDialogBodyProps,\n PanelDialogFooterProps,\n PanelDialogHeaderProps,\n PanelDialogProps,\n PanelDialogSectionProps,\n PanelDialogSurface,\n PanelDialogTabOption,\n PanelDialogTabsProps,\n} from \"./PanelDialog\";\nexport {\n confirmDiscardIfDirty,\n default as PanelDialog,\n panelDialogFixedOptions,\n panelDialogFixedPanelClass,\n panelDialogOptions,\n panelDialogPanelClass,\n panelDialogWideOptions,\n panelDialogWidePanelClass,\n panelDialogWorkspaceOptions,\n panelDialogWorkspacePanelClass,\n} from \"./PanelDialog\";\nexport type { PanelHeaderProps } from \"./PanelHeader\";\nexport { PanelHeader } from \"./PanelHeader\";\nexport type { PanesItem, PanesProps } from \"./Panes\";\nexport { default as Panes } from \"./Panes\";\nexport type { PullToRefreshProps, PullToRefreshState } from \"./PullToRefresh\";\nexport { default as PullToRefresh } from \"./PullToRefresh\";\nexport { installPageTitleController } from \"./page-title-controller\";\nexport type {\n AddPanesItemOptions,\n PanesDirection,\n PanesGroup,\n PanesIntent,\n PanesLayout,\n PanesNode,\n PanesPath,\n PanesPathSegment,\n PanesSide,\n PanesSplit,\n} from \"./panes-layout\";\nexport {\n activatePanesItem,\n addPanesItem,\n applyPanesIntent,\n createPanesLayout,\n isPanesItemVisible,\n PANES_LAYOUT_VERSION,\n parsePanesLayout,\n reconcilePanesLayout,\n removePanesItem,\n resizePanesSplit,\n} from \"./panes-layout\";\nexport { default as ResizeSeparator, type ResizeSeparatorProps } from \"./ResizeSeparator\";\nexport { attachResizeSeparator, type ResizeSeparatorOptions } from \"./resize-separator\";\nexport type { ScrollAreaProps } from \"./ScrollArea\";\nexport { default as ScrollArea } from \"./ScrollArea\";\nexport type {\n SettingsFieldControlProps,\n SettingsFieldProps,\n SettingsGroupActionProps,\n SettingsGroupProps,\n SettingsPageProps,\n SettingsPanelFooterProps,\n SettingsSaveBarProps,\n SettingsSectionProps,\n} from \"./Settings\";\nexport {\n readSettingsError,\n SettingsField,\n SettingsGroup,\n SettingsPage,\n SettingsPanelFooter,\n SettingsSaveBar,\n SettingsSection,\n sameSettingValue,\n} from \"./Settings\";\nexport type {\n SettingsCollectionActionProps,\n SettingsCollectionItemActionsProps,\n SettingsCollectionItemProps,\n SettingsCollectionItemReorderProps,\n SettingsCollectionItemStatusProps,\n SettingsCollectionProps,\n} from \"./SettingsCollection\";\nexport { default as SettingsCollection } from \"./SettingsCollection\";\nexport type {\n SettingsModalFooterProps,\n SettingsModalGroupProps,\n SettingsModalProps,\n SettingsModalTabProps,\n SettingsModalTabTone,\n} from \"./SettingsModal\";\nexport { default as SettingsModal } from \"./SettingsModal\";\nexport {\n APP_WORKSPACE_SWITCHER_SEARCH_FROM,\n type AppWorkspaceSidebarSwitcherProps,\n type AppWorkspaceSwitcherAction,\n type AppWorkspaceSwitcherOption,\n} from \"./SidebarSwitcher\";\nexport { measureScrollFade } from \"./scroll-fade\";\nexport type { TabBarItem, TabBarProps } from \"./TabBar\";\nexport { default as TabBar } from \"./TabBar\";\nexport type { TableOfContentsItem, TableOfContentsProps } from \"./TableOfContents\";\nexport { TableOfContents } from \"./TableOfContents\";\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/index.ts"],"sourcesContent":["export { AnchoredPopover, type AnchoredPopoverProps } from \"./AnchoredPopover\";\nexport type {\n AppOverviewCardsProps,\n AppOverviewEmptyStateProps,\n AppOverviewPanelProps,\n AppOverviewProps,\n} from \"./AppOverview\";\nexport { default as AppOverview } from \"./AppOverview\";\nexport type {\n AppWorkspaceBottomDrawerHeight,\n AppWorkspaceBottomDrawerProps,\n AppWorkspaceContentProps,\n AppWorkspaceDetailProps,\n AppWorkspaceDetailWidth,\n AppWorkspaceHeadProps,\n AppWorkspaceMainPaneProps,\n AppWorkspaceMainProps,\n AppWorkspaceNavTreeItemProps,\n AppWorkspaceNavTreeMove,\n AppWorkspaceNavTreeProps,\n AppWorkspaceProps,\n AppWorkspaceSidebarAccessoryVisibility,\n AppWorkspaceSidebarBodyProps,\n AppWorkspaceSidebarIconActionProps,\n AppWorkspaceSidebarIconActionTone,\n AppWorkspaceSidebarIconGridProps,\n AppWorkspaceSidebarItemActionProps,\n AppWorkspaceSidebarItemActionsProps,\n AppWorkspaceSidebarItemIconProps,\n AppWorkspaceSidebarItemLabelProps,\n AppWorkspaceSidebarItemMetaProps,\n AppWorkspaceSidebarItemProps,\n AppWorkspaceSidebarItemStatusProps,\n AppWorkspaceSidebarItemTone,\n AppWorkspaceSidebarProps,\n AppWorkspaceSidebarSectionProps,\n AppWorkspaceSidebarVisibility,\n AppWorkspaceWidthShare,\n} from \"./AppWorkspace\";\nexport { appWorkspaceDetailElementId, default as AppWorkspace } from \"./AppWorkspace\";\nexport { watchAppHostWidth } from \"./app-host-width\";\nexport type { AppWorkspaceControllerOptions } from \"./app-workspace-controller\";\nexport { installAppWorkspaceController, parkWorkspaceDetailDrawers } from \"./app-workspace-controller\";\nexport type {\n AppWorkspaceLayoutState,\n AppWorkspaceResizeKind,\n} from \"./app-workspace-state\";\nexport {\n APP_WORKSPACE_DETAIL_DEFAULT,\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_DEFAULT,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_MAIN_MIN,\n APP_WORKSPACE_MAIN_MIN_HEIGHT,\n APP_WORKSPACE_PANE_DEFAULT,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSE_THRESHOLD,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_DEFAULT,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n appWorkspaceLayoutStyle,\n appWorkspacePanelVariable,\n appWorkspaceResizeLimits,\n normalizeAppWorkspaceLayoutState,\n parseAppWorkspaceLayoutState,\n resolveAppWorkspaceSidebarWidth,\n safeAppWorkspacePanelId,\n serializeAppWorkspaceLayoutState,\n shouldCollapseAppWorkspaceSidebar,\n} from \"./app-workspace-state\";\nexport { type BottomSheetProps, bottomSheetAdaptiveOptions, bottomSheetOptions, default as BottomSheet } from \"./BottomSheet\";\nexport type { DataPanelProps } from \"./DataPanel\";\nexport { DataPanel } from \"./DataPanel\";\nexport type {\n DetailPanelActionButtonProps,\n DetailPanelActionLinkProps,\n DetailPanelActionProps,\n DetailPanelActionSecondary,\n DetailPanelBodyProps,\n DetailPanelGroupProps,\n DetailPanelHeaderProps,\n DetailPanelProps,\n DetailPanelSectionProps,\n DetailPanelSummaryProps,\n DetailPanelTone,\n} from \"./DetailPanel\";\nexport { default as DetailPanel } from \"./DetailPanel\";\nexport type { DiscussionComposerProps, DiscussionItemProps, DiscussionListProps, DiscussionProps } from \"./Discussion\";\nexport { default as Discussion } from \"./Discussion\";\nexport type {\n FloatingWindowClose,\n FloatingWindowProps,\n OpenFloatingWindowOptions,\n} from \"./FloatingWindow\";\nexport {\n default as FloatingWindow,\n type FloatingWindowRect,\n fitFloatingWindowRect,\n openFloatingWindow,\n} from \"./FloatingWindow\";\nexport type { MobileShellHeaderProps, MobileShellProps, MobileShellSidebarItem, MobileShellSidebarProps } from \"./MobileShell\";\nexport { default as MobileShell, observeMobileShell } from \"./MobileShell\";\nexport { default as Navigation, type NavigationProps } from \"./Navigation\";\nexport {\n createNavigation,\n findNavigationItem,\n type NavigationController,\n type NavigationItem,\n type NavigationOptions,\n type NavigationStatus,\n} from \"./navigation-model\";\nexport type { PageTitleProps, PageTrailLink, PageTrailState } from \"./PageTitle\";\nexport { followPageTrail, PAGE_TRAIL_EVENT, PageTitle, PageTrailProvider, readPageTrail, setPageTrail, usePageTrail } from \"./PageTitle\";\nexport type {\n PanelDialogBodyProps,\n PanelDialogFooterProps,\n PanelDialogHeaderProps,\n PanelDialogProps,\n PanelDialogSectionProps,\n PanelDialogSurface,\n PanelDialogTabOption,\n PanelDialogTabsProps,\n} from \"./PanelDialog\";\nexport {\n confirmDiscardIfDirty,\n default as PanelDialog,\n panelDialogFixedOptions,\n panelDialogFixedPanelClass,\n panelDialogOptions,\n panelDialogPanelClass,\n panelDialogWideOptions,\n panelDialogWidePanelClass,\n panelDialogWorkspaceOptions,\n panelDialogWorkspacePanelClass,\n} from \"./PanelDialog\";\nexport type { PanelHeaderProps } from \"./PanelHeader\";\nexport { PanelHeader } from \"./PanelHeader\";\nexport type { PanesItem, PanesProps } from \"./Panes\";\nexport { default as Panes } from \"./Panes\";\nexport type { PullToRefreshProps, PullToRefreshState } from \"./PullToRefresh\";\nexport { default as PullToRefresh } from \"./PullToRefresh\";\nexport { installPageTitleController } from \"./page-title-controller\";\nexport type {\n AddPanesItemOptions,\n PanesDirection,\n PanesGroup,\n PanesIntent,\n PanesLayout,\n PanesNode,\n PanesPath,\n PanesPathSegment,\n PanesSide,\n PanesSplit,\n} from \"./panes-layout\";\nexport {\n activatePanesItem,\n addPanesItem,\n applyPanesIntent,\n createPanesLayout,\n isPanesItemVisible,\n PANES_LAYOUT_VERSION,\n parsePanesLayout,\n reconcilePanesLayout,\n removePanesItem,\n resizePanesSplit,\n} from \"./panes-layout\";\nexport { default as ResizeSeparator, type ResizeSeparatorProps } from \"./ResizeSeparator\";\nexport { attachResizeSeparator, type ResizeSeparatorOptions } from \"./resize-separator\";\nexport type { ScrollAreaProps } from \"./ScrollArea\";\nexport { default as ScrollArea } from \"./ScrollArea\";\nexport type {\n SaveStatusProps,\n SaveStatusState,\n SettingsFieldControlProps,\n SettingsFieldProps,\n SettingsGroupActionProps,\n SettingsGroupProps,\n SettingsPageProps,\n SettingsPanelFooterProps,\n SettingsSaveBarProps,\n SettingsSectionProps,\n} from \"./Settings\";\nexport {\n readSettingsError,\n SaveStatus,\n SettingsField,\n SettingsGroup,\n SettingsPage,\n SettingsPanelFooter,\n SettingsSaveBar,\n SettingsSection,\n sameSettingValue,\n} from \"./Settings\";\nexport type {\n SettingsCollectionActionProps,\n SettingsCollectionItemActionsProps,\n SettingsCollectionItemProps,\n SettingsCollectionItemReorderProps,\n SettingsCollectionItemStatusProps,\n SettingsCollectionProps,\n} from \"./SettingsCollection\";\nexport { default as SettingsCollection } from \"./SettingsCollection\";\nexport type {\n SettingsModalFooterProps,\n SettingsModalGroupProps,\n SettingsModalProps,\n SettingsModalTabProps,\n SettingsModalTabTone,\n} from \"./SettingsModal\";\nexport { default as SettingsModal } from \"./SettingsModal\";\nexport {\n APP_WORKSPACE_SWITCHER_SEARCH_FROM,\n type AppWorkspaceSidebarSwitcherProps,\n type AppWorkspaceSwitcherAction,\n type AppWorkspaceSwitcherOption,\n} from \"./SidebarSwitcher\";\nexport { measureScrollFade } from \"./scroll-fade\";\nexport type { TabBarItem, TabBarProps } from \"./TabBar\";\nexport { default as TabBar } from \"./TabBar\";\nexport type { TableOfContentsItem, TableOfContentsProps } from \"./TableOfContents\";\nexport { TableOfContents } from \"./TableOfContents\";\n"],"mappings":"AAAA,SAAS,eAAe,QAAmC,mBAAmB;AAO9E,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AAgCtD,SAAS,2BAA2B,EAAE,OAAO,IAAI,YAAY,QAAQ,gBAAgB;AACrF,SAAS,iBAAiB,QAAQ,kBAAkB;AAEpD,SAAS,6BAA6B,EAAE,0BAA0B,QAAQ,4BAA4B;AAKtG,SACE,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,wCAAwC,EACxC,+BAA+B,EAC/B,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,4BAA4B,EAC5B,+BAA+B,EAC/B,uBAAuB,EACvB,gCAAgC,EAChC,iCAAiC,QAC5B,uBAAuB;AAC9B,SAAgC,0BAA0B,EAAE,kBAAkB,EAAE,OAAO,IAAI,WAAW,QAAQ,eAAe;AAE7H,SAAS,SAAS,QAAQ,aAAa;AAcvC,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AAEtD,SAAS,OAAO,IAAI,UAAU,QAAQ,cAAc;AAMpD,SACE,OAAO,IAAI,cAAc,EAEzB,qBAAqB,EACrB,kBAAkB,QACb,kBAAkB;AAEzB,SAAS,OAAO,IAAI,WAAW,EAAE,kBAAkB,QAAQ,eAAe;AAC1E,SAAS,OAAO,IAAI,UAAU,QAA8B,cAAc;AAC1E,SACE,gBAAgB,EAChB,kBAAkB,QAKb,oBAAoB;AAE3B,SAAS,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,QAAQ,aAAa;AAWxI,SACE,qBAAqB,EACrB,OAAO,IAAI,WAAW,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,8BAA8B,QACzB,eAAe;AAEtB,SAAS,WAAW,QAAQ,eAAe;AAE3C,SAAS,OAAO,IAAI,KAAK,QAAQ,SAAS;AAE1C,SAAS,OAAO,IAAI,aAAa,QAAQ,iBAAiB;AAC1D,SAAS,0BAA0B,QAAQ,yBAAyB;AAapE,SACE,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,QACX,gBAAgB;AACvB,SAAS,OAAO,IAAI,eAAe,QAAmC,mBAAmB;AACzF,SAAS,qBAAqB,QAAqC,oBAAoB;AAEvF,SAAS,OAAO,IAAI,UAAU,QAAQ,cAAc;AAapD,SACE,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,gBAAgB,QACX,YAAY;AASnB,SAAS,OAAO,IAAI,kBAAkB,QAAQ,sBAAsB;AAQpE,SAAS,OAAO,IAAI,aAAa,QAAQ,iBAAiB;AAC1D,SACE,kCAAkC,QAI7B,mBAAmB;AAC1B,SAAS,iBAAiB,QAAQ,eAAe;AAEjD,SAAS,OAAO,IAAI,MAAM,QAAQ,UAAU;AAE5C,SAAS,eAAe,QAAQ,mBAAmB","ignoreList":[]}
|
|
@@ -16,12 +16,24 @@ const settingsMessages = i18n.define({
|
|
|
16
16
|
label
|
|
17
17
|
}) => `Move ${label} up`,
|
|
18
18
|
saveChanges: "Save changes",
|
|
19
|
+
save: "Save",
|
|
19
20
|
saving: "Saving",
|
|
20
21
|
unsaved: "Unsaved",
|
|
21
22
|
unsavedChangeLabel: ({
|
|
22
23
|
count
|
|
23
24
|
}) => `unsaved ${count === 1 ? "change" : "changes"}`,
|
|
24
|
-
noUnsavedChanges: "No unsaved changes"
|
|
25
|
+
noUnsavedChanges: "No unsaved changes",
|
|
26
|
+
statusSaved: "Saved",
|
|
27
|
+
statusSavedAt: ({
|
|
28
|
+
time
|
|
29
|
+
}) => `Saved ${time}`,
|
|
30
|
+
statusDraft: "Draft",
|
|
31
|
+
statusFailed: "Not saved",
|
|
32
|
+
statusInvalid: ({
|
|
33
|
+
count
|
|
34
|
+
}) => count === 1 ? "Check 1 entry" : `Check ${count} entries`,
|
|
35
|
+
statusUnknown: "Outcome unclear",
|
|
36
|
+
statusReadOnly: "Read only"
|
|
25
37
|
},
|
|
26
38
|
de: {
|
|
27
39
|
sectionsLabel: ({
|
|
@@ -36,12 +48,24 @@ const settingsMessages = i18n.define({
|
|
|
36
48
|
label
|
|
37
49
|
}) => `${label} nach oben verschieben`,
|
|
38
50
|
saveChanges: "Änderungen speichern",
|
|
51
|
+
save: "Speichern",
|
|
39
52
|
saving: "Wird gespeichert",
|
|
40
53
|
unsaved: "Ungespeichert",
|
|
41
54
|
unsavedChangeLabel: ({
|
|
42
55
|
count
|
|
43
56
|
}) => `ungespeicherte ${count === 1 ? "Änderung" : "Änderungen"}`,
|
|
44
|
-
noUnsavedChanges: "Keine ungespeicherten Änderungen"
|
|
57
|
+
noUnsavedChanges: "Keine ungespeicherten Änderungen",
|
|
58
|
+
statusSaved: "Gespeichert",
|
|
59
|
+
statusSavedAt: ({
|
|
60
|
+
time
|
|
61
|
+
}) => `Gespeichert ${time}`,
|
|
62
|
+
statusDraft: "Entwurf",
|
|
63
|
+
statusFailed: "Nicht gespeichert",
|
|
64
|
+
statusInvalid: ({
|
|
65
|
+
count
|
|
66
|
+
}) => count === 1 ? "1 Eingabe prüfen" : `${count} Eingaben prüfen`,
|
|
67
|
+
statusUnknown: "Ausgang unklar",
|
|
68
|
+
statusReadOnly: "Nur lesen"
|
|
45
69
|
}
|
|
46
70
|
}
|
|
47
71
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["layout/settings-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst settingsMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n sectionsLabel: ({ title }: { title: string }) => `${title} sections`,\n moveDown: \"Move down\",\n moveUp: \"Move up\",\n moveNamedDown: ({ label }: { label: string }) => `Move ${label} down`,\n moveNamedUp: ({ label }: { label: string }) => `Move ${label} up`,\n saveChanges: \"Save changes\",\n saving: \"Saving\",\n unsaved: \"Unsaved\",\n unsavedChangeLabel: ({ count }: { count: number }) => `unsaved ${count === 1 ? \"change\" : \"changes\"}`,\n noUnsavedChanges: \"No unsaved changes\",\n },\n de: {\n sectionsLabel: ({ title }) => `Bereiche von ${title}`,\n moveDown: \"Nach unten\",\n moveUp: \"Nach oben\",\n moveNamedDown: ({ label }) => `${label} nach unten verschieben`,\n moveNamedUp: ({ label }) => `${label} nach oben verschieben`,\n saveChanges: \"Änderungen speichern\",\n saving: \"Wird gespeichert\",\n unsaved: \"Ungespeichert\",\n unsavedChangeLabel: ({ count }) => `ungespeicherte ${count === 1 ? \"Änderung\" : \"Änderungen\"}`,\n noUnsavedChanges: \"Keine ungespeicherten Änderungen\",\n },\n },\n});\n\nexport type SettingsMessages = ReturnType<(typeof settingsMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useSettingsMessages = (): (() => SettingsMessages) => {\n const locale = useLocale();\n return () => settingsMessages.resolve([locale()]).t;\n};\n\nexport const checkSettingsMessages = () => settingsMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;EACnC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,WAAW;MACpE,QAAQ,EAAE,WAAW;MACrB,MAAM,EAAE,SAAS;MACjB,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,OAAO;MACrE,WAAW,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,KAAK;MACjE,WAAW,EAAE,cAAc;MAC3B,MAAM,EAAE,QAAQ;MAChB,OAAO,EAAE,SAAS;MAClB,kBAAkB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,KAAK,CAAC,GAAG,QAAQ,GAAG,SAAS,EAAE;MACrG,gBAAgB,EAAE;
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/settings-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst settingsMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n sectionsLabel: ({ title }: { title: string }) => `${title} sections`,\n moveDown: \"Move down\",\n moveUp: \"Move up\",\n moveNamedDown: ({ label }: { label: string }) => `Move ${label} down`,\n moveNamedUp: ({ label }: { label: string }) => `Move ${label} up`,\n saveChanges: \"Save changes\",\n save: \"Save\",\n saving: \"Saving\",\n unsaved: \"Unsaved\",\n unsavedChangeLabel: ({ count }: { count: number }) => `unsaved ${count === 1 ? \"change\" : \"changes\"}`,\n noUnsavedChanges: \"No unsaved changes\",\n statusSaved: \"Saved\",\n statusSavedAt: ({ time }: { time: string }) => `Saved ${time}`,\n statusDraft: \"Draft\",\n statusFailed: \"Not saved\",\n statusInvalid: ({ count }: { count: number }) => (count === 1 ? \"Check 1 entry\" : `Check ${count} entries`),\n statusUnknown: \"Outcome unclear\",\n statusReadOnly: \"Read only\",\n },\n de: {\n sectionsLabel: ({ title }) => `Bereiche von ${title}`,\n moveDown: \"Nach unten\",\n moveUp: \"Nach oben\",\n moveNamedDown: ({ label }) => `${label} nach unten verschieben`,\n moveNamedUp: ({ label }) => `${label} nach oben verschieben`,\n saveChanges: \"Änderungen speichern\",\n save: \"Speichern\",\n saving: \"Wird gespeichert\",\n unsaved: \"Ungespeichert\",\n unsavedChangeLabel: ({ count }) => `ungespeicherte ${count === 1 ? \"Änderung\" : \"Änderungen\"}`,\n noUnsavedChanges: \"Keine ungespeicherten Änderungen\",\n statusSaved: \"Gespeichert\",\n statusSavedAt: ({ time }) => `Gespeichert ${time}`,\n statusDraft: \"Entwurf\",\n statusFailed: \"Nicht gespeichert\",\n statusInvalid: ({ count }) => (count === 1 ? \"1 Eingabe prüfen\" : `${count} Eingaben prüfen`),\n statusUnknown: \"Ausgang unklar\",\n statusReadOnly: \"Nur lesen\",\n },\n },\n});\n\nexport type SettingsMessages = ReturnType<(typeof settingsMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useSettingsMessages = (): (() => SettingsMessages) => {\n const locale = useLocale();\n return () => settingsMessages.resolve([locale()]).t;\n};\n\nexport const checkSettingsMessages = () => settingsMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;EACnC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,WAAW;MACpE,QAAQ,EAAE,WAAW;MACrB,MAAM,EAAE,SAAS;MACjB,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,OAAO;MACrE,WAAW,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,KAAK;MACjE,WAAW,EAAE,cAAc;MAC3B,IAAI,EAAE,MAAM;MACZ,MAAM,EAAE,QAAQ;MAChB,OAAO,EAAE,SAAS;MAClB,kBAAkB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,KAAK,CAAC,GAAG,QAAQ,GAAG,SAAS,EAAE;MACrG,gBAAgB,EAAE,oBAAoB;MACtC,WAAW,EAAE,OAAO;MACpB,aAAa,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,SAAS,IAAI,EAAE;MAC9D,WAAW,EAAE,OAAO;MACpB,YAAY,EAAE,WAAW;MACzB,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAM,KAAK,KAAK,CAAC,GAAG,eAAe,GAAG,SAAS,KAAK,UAAW;MAC3G,aAAa,EAAE,iBAAiB;MAChC,cAAc,EAAE;IAClB,CAAC;IACD,EAAE,EAAE;MACF,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,gBAAgB,KAAK,EAAE;MACrD,QAAQ,EAAE,YAAY;MACtB,MAAM,EAAE,WAAW;MACnB,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,yBAAyB;MAC/D,WAAW,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,wBAAwB;MAC5D,WAAW,EAAE,sBAAsB;MACnC,IAAI,EAAE,WAAW;MACjB,MAAM,EAAE,kBAAkB;MAC1B,OAAO,EAAE,eAAe;MACxB,kBAAkB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,kBAAkB,KAAK,KAAK,CAAC,GAAG,UAAU,GAAG,YAAY,EAAE;MAC9F,gBAAgB,EAAE,kCAAkC;MACpD,WAAW,EAAE,aAAa;MAC1B,aAAa,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,eAAe,IAAI,EAAE;MAClD,WAAW,EAAE,SAAS;MACtB,YAAY,EAAE,mBAAmB;MACjC,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAM,KAAK,KAAK,CAAC,GAAG,kBAAkB,GAAG,GAAG,KAAK,kBAAmB;MAC7F,aAAa,EAAE,gBAAgB;MAC/B,cAAc,EAAE;IAClB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,mBAAmB,GAAG,MAAgC;EACjE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,OAAO,MAAM,qBAAqB,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ var _tmpl$ = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
|
|
|
12
12
|
_tmpl$3 = /*#__PURE__*/_$template(`<img decoding=async>`, true, false, false);
|
|
13
13
|
import { createEffect, createSignal, on, Show } from "solid-js";
|
|
14
14
|
import { useAvatarMessages } from "./avatar-messages";
|
|
15
|
+
import { personTint } from "./person-color";
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* A status ring around the avatar: `"success"` for an active state such as someone working on a task, or an explicit
|
|
@@ -26,19 +27,6 @@ const initialsFor = name => {
|
|
|
26
27
|
if (parts.length === 1) return parts[0]?.slice(0, 2).toUpperCase() ?? "?";
|
|
27
28
|
return `${parts[0]?.[0] ?? ""}${parts.at(-1)?.[0] ?? ""}`.toUpperCase();
|
|
28
29
|
};
|
|
29
|
-
|
|
30
|
-
/** Tints behind initials, as many as `.k2b-avatar[data-tint]` rules in the stylesheet. */
|
|
31
|
-
const TINTS = 10;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* The tint behind initials and icons, from the name, so the same name has one color wherever an avatar shows it. The
|
|
35
|
-
* hash is the one of `@k2b/stdlib`'s generated avatar.
|
|
36
|
-
*/
|
|
37
|
-
const tintFor = name => {
|
|
38
|
-
let hash = 0;
|
|
39
|
-
for (let index = 0; index < name.length; index++) hash = hash * 31 + name.charCodeAt(index) >>> 0;
|
|
40
|
-
return hash % TINTS;
|
|
41
|
-
};
|
|
42
30
|
export function Avatar(props) {
|
|
43
31
|
const avatarMessages = useAvatarMessages();
|
|
44
32
|
const [failed, setFailed] = createSignal(false);
|
|
@@ -77,7 +65,7 @@ export function Avatar(props) {
|
|
|
77
65
|
var _v$ = className(),
|
|
78
66
|
_v$2 = props.size ?? "md",
|
|
79
67
|
_v$3 = props.shape === "square" ? "square" : undefined,
|
|
80
|
-
_v$4 =
|
|
68
|
+
_v$4 = personTint(props.name),
|
|
81
69
|
_v$5 = ring(),
|
|
82
70
|
_v$6 = style(),
|
|
83
71
|
_v$7 = props.alt ?? avatarMessages().avatarLabel({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["surfaces/Avatar.tsx"],"sourcesContent":["import { createEffect, createSignal, type JSX, on, Show } from \"solid-js\";\nimport { useAvatarMessages } from \"./avatar-messages\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\n/**\n * A status ring around the avatar: `\"success\"` for an active state such as someone working on a task, or an explicit\n * color, for example a collaborator's cursor color.\n */\nexport type AvatarRing = \"success\" | { color: string };\n\n/** `square` marks an agent or service account; people stay round. */\nexport type AvatarShape = \"circle\" | \"square\";\n\nexport type AvatarProps = {\n name: string;\n src?: string | null;\n icon?: string;\n alt?: string;\n fallback?: string;\n size?: AvatarSize;\n /** Draws a ring with a small transparent gap inside the avatar's own box, so the avatar keeps its size and no container clips the ring. */\n ring?: AvatarRing;\n shape?: AvatarShape;\n loading?: \"eager\" | \"lazy\";\n class?: string;\n style?: JSX.CSSProperties | string;\n};\n\nconst initialsFor = (name: string): string => {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n if (parts.length === 1) return parts[0]?.slice(0, 2).toUpperCase() ?? \"?\";\n return `${parts[0]?.[0] ?? \"\"}${parts.at(-1)?.[0] ?? \"\"}`.toUpperCase();\n};\n\
|
|
1
|
+
{"version":3,"names":[],"sources":["surfaces/Avatar.tsx"],"sourcesContent":["import { createEffect, createSignal, type JSX, on, Show } from \"solid-js\";\nimport { useAvatarMessages } from \"./avatar-messages\";\nimport { personTint } from \"./person-color\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\n/**\n * A status ring around the avatar: `\"success\"` for an active state such as someone working on a task, or an explicit\n * color, for example a collaborator's cursor color.\n */\nexport type AvatarRing = \"success\" | { color: string };\n\n/** `square` marks an agent or service account; people stay round. */\nexport type AvatarShape = \"circle\" | \"square\";\n\nexport type AvatarProps = {\n name: string;\n src?: string | null;\n icon?: string;\n alt?: string;\n fallback?: string;\n size?: AvatarSize;\n /** Draws a ring with a small transparent gap inside the avatar's own box, so the avatar keeps its size and no container clips the ring. */\n ring?: AvatarRing;\n shape?: AvatarShape;\n loading?: \"eager\" | \"lazy\";\n class?: string;\n style?: JSX.CSSProperties | string;\n};\n\nconst initialsFor = (name: string): string => {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n if (parts.length === 1) return parts[0]?.slice(0, 2).toUpperCase() ?? \"?\";\n return `${parts[0]?.[0] ?? \"\"}${parts.at(-1)?.[0] ?? \"\"}`.toUpperCase();\n};\n\nexport function Avatar(props: AvatarProps): JSX.Element {\n const avatarMessages = useAvatarMessages();\n const [failed, setFailed] = createSignal(false);\n const label = () => props.name.trim() || avatarMessages().unknownUser;\n // Derive initials from the given name, not from the accessible-name fallback:\n // an empty `name` must render \"?\" the way Cloud's avatar does, not \"UU\".\n const fallback = () => props.fallback ?? initialsFor(props.name);\n const fallbackContent = () => (props.icon ? <i class={props.icon} aria-hidden=\"true\" /> : fallback());\n const className = () => `k2b-avatar ${props.class ?? \"\"}`;\n const ring = () => (props.ring === undefined ? undefined : typeof props.ring === \"string\" ? props.ring : \"color\");\n const style = (): JSX.CSSProperties | string | undefined => {\n const color = typeof props.ring === \"object\" ? props.ring.color : undefined;\n if (color === undefined) return props.style;\n if (typeof props.style === \"string\") return `${props.style ? `${props.style};` : \"\"}--k2b-avatar-ring:${color}`;\n return { ...props.style, \"--k2b-avatar-ring\": color };\n };\n\n createEffect(\n on(\n () => props.src,\n () => setFailed(false),\n { defer: true },\n ),\n );\n\n return (\n <Show\n when={!failed() ? props.src || undefined : undefined}\n fallback={\n <span\n class={className()}\n data-size={props.size ?? \"md\"}\n data-shape={props.shape === \"square\" ? \"square\" : undefined}\n data-tint={personTint(props.name)}\n data-ring={ring()}\n style={style()}\n role=\"img\"\n aria-label={props.alt ?? avatarMessages().avatarLabel({ name: label() })}\n >\n {fallbackContent()}\n </span>\n }\n >\n {(src) => (\n <img\n src={src()}\n alt={props.alt ?? avatarMessages().avatarLabel({ name: label() })}\n class={className()}\n data-size={props.size ?? \"md\"}\n data-shape={props.shape === \"square\" ? \"square\" : undefined}\n data-ring={ring()}\n style={style()}\n loading={props.loading ?? \"lazy\"}\n decoding=\"async\"\n onError={() => setFailed(true)}\n />\n )}\n </Show>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
|
|
3
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
4
|
+
import { className as _$className } from "solid-js/web";
|
|
5
|
+
import { effect as _$effect } from "solid-js/web";
|
|
6
|
+
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
7
|
+
import { insert as _$insert } from "solid-js/web";
|
|
8
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
9
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div role=img>`),
|
|
10
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<i>`);
|
|
11
|
+
import { For } from "solid-js";
|
|
12
|
+
|
|
13
|
+
/** `accent` = the app colour (it worked), `ai` = came from AI, `muted` = nothing happened. */
|
|
14
|
+
|
|
15
|
+
/** A fixed-size row of outcome dots: the last runs, checks or mails at a glance. */
|
|
16
|
+
export function DotStrip(props) {
|
|
17
|
+
const length = () => Math.max(props.length ?? props.dots.length, props.dots.length);
|
|
18
|
+
const slots = () => Array.from({
|
|
19
|
+
length: length()
|
|
20
|
+
}, (_, index) => index);
|
|
21
|
+
const state = index => {
|
|
22
|
+
if (props.waiting) return "waiting";
|
|
23
|
+
return props.dots[index] ?? "pending";
|
|
24
|
+
};
|
|
25
|
+
return (() => {
|
|
26
|
+
var _el$ = _$getNextElement(_tmpl$);
|
|
27
|
+
_$insert(_el$, _$createComponent(For, {
|
|
28
|
+
get each() {
|
|
29
|
+
return slots();
|
|
30
|
+
},
|
|
31
|
+
children: index => // The AI tone carries its own `-ai` class: the AI palette stays with AI surfaces (F3).
|
|
32
|
+
(() => {
|
|
33
|
+
var _el$2 = _$getNextElement(_tmpl$2);
|
|
34
|
+
_$effect(_p$ => {
|
|
35
|
+
var _v$5 = state(index) === "ai" ? "k2b-dot-strip__dot k2b-dot-strip__dot-ai" : "k2b-dot-strip__dot",
|
|
36
|
+
_v$6 = state(index),
|
|
37
|
+
_v$7 = props.selected === index ? "" : undefined;
|
|
38
|
+
_v$5 !== _p$.e && _$className(_el$2, _p$.e = _v$5);
|
|
39
|
+
_v$6 !== _p$.t && _$setAttribute(_el$2, "data-state", _p$.t = _v$6);
|
|
40
|
+
_v$7 !== _p$.a && _$setAttribute(_el$2, "data-selected", _p$.a = _v$7);
|
|
41
|
+
return _p$;
|
|
42
|
+
}, {
|
|
43
|
+
e: undefined,
|
|
44
|
+
t: undefined,
|
|
45
|
+
a: undefined
|
|
46
|
+
});
|
|
47
|
+
return _el$2;
|
|
48
|
+
})()
|
|
49
|
+
}));
|
|
50
|
+
_$effect(_p$ => {
|
|
51
|
+
var _v$ = `k2b-dot-strip ${props.class ?? ""}`,
|
|
52
|
+
_v$2 = props.size ?? "md",
|
|
53
|
+
_v$3 = props.label,
|
|
54
|
+
_v$4 = String(props.columns ?? length());
|
|
55
|
+
_v$ !== _p$.e && _$className(_el$, _p$.e = _v$);
|
|
56
|
+
_v$2 !== _p$.t && _$setAttribute(_el$, "data-size", _p$.t = _v$2);
|
|
57
|
+
_v$3 !== _p$.a && _$setAttribute(_el$, "aria-label", _p$.a = _v$3);
|
|
58
|
+
_v$4 !== _p$.o && _$setStyleProperty(_el$, "--k2b-dot-strip-columns", _p$.o = _v$4);
|
|
59
|
+
return _p$;
|
|
60
|
+
}, {
|
|
61
|
+
e: undefined,
|
|
62
|
+
t: undefined,
|
|
63
|
+
a: undefined,
|
|
64
|
+
o: undefined
|
|
65
|
+
});
|
|
66
|
+
return _el$;
|
|
67
|
+
})();
|
|
68
|
+
}
|
|
69
|
+
export default DotStrip;
|
|
70
|
+
//# sourceMappingURL=DotStrip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["surfaces/DotStrip.tsx"],"sourcesContent":["import { For, type JSX } from \"solid-js\";\n\n/** `accent` = the app colour (it worked), `ai` = came from AI, `muted` = nothing happened. */\nexport type DotStripTone = \"accent\" | \"warning\" | \"danger\" | \"ai\" | \"muted\";\n\nexport type DotStripProps = {\n /** Outcomes in order, left to right. */\n dots: readonly DotStripTone[];\n /** Total slots. Slots after `dots` show as empty rings, so a growing strip keeps its size. Defaults to `dots.length`. */\n length?: number;\n /** Shows every slot as a quiet placeholder, for \"nothing checked yet\". */\n waiting?: boolean;\n /** Index of the dot that belongs to the item shown next to the strip. */\n selected?: number | null;\n size?: \"md\" | \"lg\";\n /** Dots per row; more wrap into further rows of the same width. Defaults to one row. */\n columns?: number;\n /** Names the strip and its counts, for example \"Last 50 mails: 17 matched, 6 skipped, 27 not\". */\n label: string;\n class?: string;\n};\n\n/** A fixed-size row of outcome dots: the last runs, checks or mails at a glance. */\nexport function DotStrip(props: DotStripProps): JSX.Element {\n const length = () => Math.max(props.length ?? props.dots.length, props.dots.length);\n const slots = () => Array.from({ length: length() }, (_, index) => index);\n const state = (index: number) => {\n if (props.waiting) return \"waiting\";\n return props.dots[index] ?? \"pending\";\n };\n return (\n <div\n class={`k2b-dot-strip ${props.class ?? \"\"}`}\n data-size={props.size ?? \"md\"}\n role=\"img\"\n aria-label={props.label}\n style={{ \"--k2b-dot-strip-columns\": String(props.columns ?? length()) }}\n >\n <For each={slots()}>\n {(index) => (\n // The AI tone carries its own `-ai` class: the AI palette stays with AI surfaces (F3).\n <i\n class={state(index) === \"ai\" ? \"k2b-dot-strip__dot k2b-dot-strip__dot-ai\" : \"k2b-dot-strip__dot\"}\n data-state={state(index)}\n data-selected={props.selected === index ? \"\" : undefined}\n />\n )}\n </For>\n </div>\n );\n}\n\nexport default DotStrip;\n"],"mappings":";;;;;;;;;;AAAA,SAAS,GAAG,QAAkB,UAAU;;AAExC;;AAoBA;AACA,OAAO,SAAS,QAAQ,CAAC,KAAoB,EAAe;EAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;EACnF,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC;EACzE,MAAM,KAAK,GAAI,KAAa,IAAK;IAC/B,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,SAAS;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS;EACvC,CAAC;EACD;IAAA;IAAA,iCAQK,GAAG;MAAA,IAAC,IAAI;QAAA,OAAE,KAAK,CAAC,CAAC;MAAA;MAAA,UACd,KAAK,IACL;MAAA;QAAA;QAAA;UAAA,WAES,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,0CAA0C,GAAG,oBAAoB;YAAA,OACpF,KAAK,CAAC,KAAK,CAAC;YAAA,OACT,KAAK,CAAC,QAAQ,KAAK,KAAK,GAAG,EAAE,GAAG,SAAS;UAAA;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;UAAA;QAAA;QAAA;MAAA;IAE3D;IAAA;MAAA,UAdI,iBAAiB,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;QAAA,OAChC,KAAK,CAAC,IAAI,IAAI,IAAI;QAAA,OAEjB,KAAK,CAAC,KAAK;QAAA,OACa,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;MAAA;MAAA;MAAA;MAAA;MAAA;IAAA;MAAA;MAAA;MAAA;MAAA;IAAA;IAAA;EAAA;AAc3E;AAEA,eAAe,QAAQ","ignoreList":[]}
|
|
@@ -12,6 +12,9 @@ var _tmpl$ = /*#__PURE__*/_$template(`<svg><circle class=k2b-progress-ring__trac
|
|
|
12
12
|
_tmpl$5 = /*#__PURE__*/_$template(`<svg viewBox="0 0 16 16"fill=none aria-hidden=true>`),
|
|
13
13
|
_tmpl$6 = /*#__PURE__*/_$template(`<svg viewBox="0 0 16 16"fill=none role=progressbar aria-valuemin=0 aria-valuemax=100>`);
|
|
14
14
|
import { Show } from "solid-js";
|
|
15
|
+
|
|
16
|
+
/** `accent` draws the ring in the app's own colour, for progress that belongs to the app rather than to a state. */
|
|
17
|
+
|
|
15
18
|
const clamp = value => Number.isFinite(value) ? Math.max(0, Math.min(100, Math.round(value))) : 0;
|
|
16
19
|
|
|
17
20
|
/** Compact determinate ring without a number. Warning and danger add a centre mark, so tone is never colour alone. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["surfaces/ProgressRing.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\nimport type { IntentTone } from \"../semantics\";\n\nexport type ProgressRingTone = Extract<IntentTone, \"info\" | \"warning\" | \"danger\"
|
|
1
|
+
{"version":3,"names":[],"sources":["surfaces/ProgressRing.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\nimport type { IntentTone } from \"../semantics\";\n\n/** `accent` draws the ring in the app's own colour, for progress that belongs to the app rather than to a state. */\nexport type ProgressRingTone = Extract<IntentTone, \"info\" | \"warning\" | \"danger\"> | \"accent\";\n\nexport type ProgressRingProps = {\n value: number;\n tone?: ProgressRingTone;\n /** Names the ring as a progressbar. Omit it inside a control that already carries the name and value. */\n label?: string;\n class?: string;\n};\n\nconst clamp = (value: number) => (Number.isFinite(value) ? Math.max(0, Math.min(100, Math.round(value))) : 0);\n\n/** Compact determinate ring without a number. Warning and danger add a centre mark, so tone is never colour alone. */\nexport function ProgressRing(props: ProgressRingProps): JSX.Element {\n const percent = () => clamp(props.value);\n const tone = () => props.tone ?? \"info\";\n const shapes = () => (\n <>\n <circle class=\"k2b-progress-ring__track\" cx=\"8\" cy=\"8\" r=\"6\" stroke-width=\"2.5\" />\n <circle\n class=\"k2b-progress-ring__value\"\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke-width=\"2.5\"\n pathLength=\"100\"\n stroke-dasharray={`${percent()} 100`}\n transform=\"rotate(-90 8 8)\"\n />\n {tone() === \"warning\" ? <circle class=\"k2b-progress-ring__mark\" cx=\"8\" cy=\"8\" r=\"1.75\" /> : null}\n {tone() === \"danger\" ? <path class=\"k2b-progress-ring__mark\" d=\"M7.25 4.75h1.5v4h-1.5zM7.25 9.75h1.5v1.5h-1.5z\" /> : null}\n </>\n );\n const className = () => `k2b-progress-ring ${props.class ?? \"\"}`;\n return (\n <Show\n when={props.label}\n fallback={\n <svg class={className()} data-tone={tone()} viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n {shapes()}\n </svg>\n }\n >\n {(label) => (\n <svg\n class={className()}\n data-tone={tone()}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n role=\"progressbar\"\n aria-label={label()}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow={percent()}\n >\n {shapes()}\n </svg>\n )}\n </Show>\n );\n}\n\nexport default ProgressRing;\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAmB,IAAI,QAAQ,UAAU;;AAGzC;;AAWA,MAAM,KAAK,GAAI,KAAa,IAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAE;;AAE7G;AACA,OAAO,SAAS,YAAY,CAAC,KAAwB,EAAe;EAClE,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;EACxC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,IAAI,MAAM;EACvC,MAAM,MAAM,GAAG;IAAA;IAAA,yDAUS,GAAG,OAAO,CAAC,CAAC,MAAM;IAAA;EAAA,mBAGrC,iBAAI,CAAC,CAAC,KAAK,SAAS,kCAAuE,IAAI,gBAC/F,iBAAI,CAAC,CAAC,KAAK,QAAQ,kCAAiG,IAAI,EAE5H;EACD,MAAM,SAAS,GAAG,MAAM,qBAAqB,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;EAChE,yBACG,IAAI;IAAA,IACH,IAAI;MAAA,OAAE,KAAK,CAAC,KAAK;IAAA;IAAA,IACjB,QAAQ;MAAA;QAAA;QAAA,gBAEH,MAAM;QAAA;UAAA,UADG,SAAS,CAAC,CAAC;YAAA,OAAa,IAAI,CAAC,CAAC;UAAA;UAAA;UAAA;QAAA;UAAA;UAAA;QAAA;QAAA;MAAA;IAAA;IAAA,UAK1C,KAAK;MAAA;MAAA,gBAYF,MAAM;MAAA;QAAA,WAVA,SAAS,CAAC,CAAC;UAAA,OACP,IAAI,CAAC,CAAC;UAAA,OAIL,KAAK,CAAC,CAAC;UAAA,OAGJ,OAAO,CAAC,CAAC;QAAA;QAAA;QAAA;QAAA;QAAA;MAAA;QAAA;QAAA;QAAA;QAAA;MAAA;MAAA;IAAA;EAI3B;AAGP;AAEA,eAAe,YAAY","ignoreList":[]}
|