@k2b/ui 0.4.1 → 0.5.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.
Files changed (42) hide show
  1. package/dist/browser/intl/messages.js +2 -0
  2. package/dist/browser/intl/messages.js.map +1 -1
  3. package/dist/browser/layout/AppOverview.js +29 -20
  4. package/dist/browser/layout/AppOverview.js.map +1 -1
  5. package/dist/browser/layout/AppWorkspace.js +60 -54
  6. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  7. package/dist/browser/layout/BottomSheet.js +6 -1
  8. package/dist/browser/layout/BottomSheet.js.map +1 -1
  9. package/dist/browser/layout/PanelHeader.js +1 -1
  10. package/dist/browser/layout/PanelHeader.js.map +1 -1
  11. package/dist/browser/layout/PullToRefresh.js +217 -0
  12. package/dist/browser/layout/PullToRefresh.js.map +1 -0
  13. package/dist/browser/layout/index.js +1 -0
  14. package/dist/browser/layout/index.js.map +1 -1
  15. package/dist/browser/surfaces/LinkCard.js +13 -2
  16. package/dist/browser/surfaces/LinkCard.js.map +1 -1
  17. package/dist/ssr/intl/messages.js +2 -0
  18. package/dist/ssr/intl/messages.js.map +1 -1
  19. package/dist/ssr/layout/AppOverview.js +14 -5
  20. package/dist/ssr/layout/AppOverview.js.map +1 -1
  21. package/dist/ssr/layout/AppWorkspace.js +5 -2
  22. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  23. package/dist/ssr/layout/BottomSheet.js +6 -1
  24. package/dist/ssr/layout/BottomSheet.js.map +1 -1
  25. package/dist/ssr/layout/PanelHeader.js +1 -1
  26. package/dist/ssr/layout/PanelHeader.js.map +1 -1
  27. package/dist/ssr/layout/PullToRefresh.js +177 -0
  28. package/dist/ssr/layout/PullToRefresh.js.map +1 -0
  29. package/dist/ssr/layout/index.js +1 -0
  30. package/dist/ssr/layout/index.js.map +1 -1
  31. package/dist/ssr/surfaces/LinkCard.js +11 -2
  32. package/dist/ssr/surfaces/LinkCard.js.map +1 -1
  33. package/dist/styles.css +1 -1
  34. package/dist/types/intl/messages.d.ts +1 -0
  35. package/dist/types/layout/AppOverview.d.ts +7 -0
  36. package/dist/types/layout/AppWorkspace.d.ts +14 -2
  37. package/dist/types/layout/BottomSheet.d.ts +1 -0
  38. package/dist/types/layout/PanelHeader.d.ts +1 -1
  39. package/dist/types/layout/PullToRefresh.d.ts +21 -0
  40. package/dist/types/layout/index.d.ts +3 -1
  41. package/dist/types/surfaces/LinkCard.d.ts +5 -2
  42. package/package.json +1 -1
@@ -83,6 +83,7 @@ declare const uiMessages: import("@k2b/stdlib").Catalog<{
83
83
  page: number;
84
84
  }) => string;
85
85
  retry: string;
86
+ refreshing: string;
86
87
  reset: string;
87
88
  required: string;
88
89
  rename: string;
@@ -3,6 +3,8 @@ export type AppOverviewProps = {
3
3
  title: string;
4
4
  subtitle?: string;
5
5
  icon: string;
6
+ /** The page's single primary action, such as a create button or menu. */
7
+ actions?: JSX.Element;
6
8
  class?: string;
7
9
  children: JSX.Element;
8
10
  };
@@ -20,9 +22,14 @@ export type AppOverviewEmptyStateProps = {
20
22
  class?: string;
21
23
  children?: JSX.Element;
22
24
  };
25
+ export type AppOverviewCardsProps = {
26
+ class?: string;
27
+ children: JSX.Element;
28
+ };
23
29
  type AppOverviewComponent = ((props: AppOverviewProps) => JSX.Element) & {
24
30
  Main: (props: AppOverviewPanelProps) => JSX.Element;
25
31
  Aside: (props: AppOverviewPanelProps) => JSX.Element;
32
+ Cards: (props: AppOverviewCardsProps) => JSX.Element;
26
33
  EmptyState: (props: AppOverviewEmptyStateProps) => JSX.Element;
27
34
  };
28
35
  declare const AppOverview: AppOverviewComponent;
@@ -34,6 +34,8 @@ export type AppWorkspaceContentProps = {
34
34
  export type AppWorkspaceMainProps = {
35
35
  children: JSX.Element;
36
36
  class?: string;
37
+ /** `"content"` centers the children as one reading column with the shared page width on large screens. */
38
+ width?: "full" | "content";
37
39
  mobilePane?: string;
38
40
  scroll?: boolean;
39
41
  scrollFade?: boolean;
@@ -83,6 +85,12 @@ export type AppWorkspaceSidebarProps = {
83
85
  label?: string;
84
86
  children: JSX.Element;
85
87
  class?: string;
88
+ /**
89
+ * Below the desktop breakpoint the sidebar is hidden and the host's mobile
90
+ * navigation takes over. `"stacked"` keeps it as a block above the content
91
+ * instead, for overviews whose sidebar is the primary object list.
92
+ */
93
+ mobile?: "hidden" | "stacked";
86
94
  resizable?: boolean;
87
95
  resizeShadow?: boolean;
88
96
  collapsible?: boolean;
@@ -115,8 +123,12 @@ export type AppWorkspaceSidebarItemTone = "default" | "success" | "danger";
115
123
  export type AppWorkspaceSidebarIconActionTone = "default" | "success" | "danger";
116
124
  export type AppWorkspaceSidebarItemProps = {
117
125
  children: JSX.Element;
118
- /** Card rows add a quiet context header above the main label. */
119
- variant?: "row" | "card";
126
+ /**
127
+ * Card rows add a quiet context header above the main label. Object rows
128
+ * present one resource with a title, a description line, and stacked
129
+ * trailing counts; use them for the objects an overview navigates into.
130
+ */
131
+ variant?: "row" | "card" | "object";
120
132
  context?: JSX.Element;
121
133
  contextMeta?: JSX.Element;
122
134
  /** Passive second line; keep controls in actions or preview. */
@@ -2,6 +2,7 @@ import { type JSX } from "solid-js";
2
2
  export declare const bottomSheetOptions: {
3
3
  panelClassName: string;
4
4
  contentClassName: string;
5
+ initialFocus: (dialog: HTMLDialogElement) => HTMLElement | null;
5
6
  };
6
7
  export type BottomSheetProps = {
7
8
  children: JSX.Element;
@@ -4,7 +4,7 @@ export type PanelHeaderProps = {
4
4
  subtitle?: JSX.Element;
5
5
  actions?: JSX.Element;
6
6
  as?: "h1" | "h2" | "h3";
7
- size?: "sm" | "md";
7
+ size?: "sm" | "md" | "lg";
8
8
  class?: string;
9
9
  };
10
10
  export declare function PanelHeader(props: PanelHeaderProps): JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { type JSX } from "solid-js";
2
+ export type PullToRefreshState = "idle" | "pulling" | "ready" | "refreshing";
3
+ export type PullToRefreshProps = {
4
+ /** Reloads the wrapped content. The indicator stays busy until the promise settles. */
5
+ onRefresh: () => Promise<void>;
6
+ disabled?: boolean;
7
+ /** Status text announced while refreshing. Defaults to the shared "Refreshing" message. */
8
+ label?: string;
9
+ class?: string;
10
+ /** Exactly one scroll container; the gesture only starts while it is scrolled to the top. */
11
+ children: JSX.Element;
12
+ };
13
+ /**
14
+ * Turns a downward pull on a scroll container that is already at its top into
15
+ * one `onRefresh` call. Touch pulls, mouse or pen drags on non-interactive
16
+ * space, and trackpad or wheel overscroll share one gesture model. The gesture
17
+ * is an enhancement: keep a keyboard-reachable refresh (a button or the page
18
+ * reload) next to it.
19
+ */
20
+ export declare function PullToRefresh(props: PullToRefreshProps): JSX.Element;
21
+ export default PullToRefresh;
@@ -1,4 +1,4 @@
1
- export type { AppOverviewEmptyStateProps, AppOverviewPanelProps, AppOverviewProps, } from "./AppOverview";
1
+ export type { AppOverviewCardsProps, AppOverviewEmptyStateProps, AppOverviewPanelProps, AppOverviewProps, } from "./AppOverview";
2
2
  export { default as AppOverview } from "./AppOverview";
3
3
  export type { AppWorkspaceBottomDrawerHeight, AppWorkspaceBottomDrawerProps, AppWorkspaceContentProps, AppWorkspaceDetailProps, AppWorkspaceDetailWidth, AppWorkspaceMainPaneProps, AppWorkspaceMainProps, AppWorkspaceNavTreeItemProps, AppWorkspaceNavTreeProps, AppWorkspaceProps, AppWorkspaceSidebarAccessoryVisibility, AppWorkspaceSidebarBodyProps, AppWorkspaceSidebarIconActionProps, AppWorkspaceSidebarIconActionTone, AppWorkspaceSidebarIconGridProps, AppWorkspaceSidebarItemActionProps, AppWorkspaceSidebarItemActionsProps, AppWorkspaceSidebarItemIconProps, AppWorkspaceSidebarItemLabelProps, AppWorkspaceSidebarItemMetaProps, AppWorkspaceSidebarItemProps, AppWorkspaceSidebarItemTone, AppWorkspaceSidebarProps, AppWorkspaceSidebarSectionProps, AppWorkspaceSidebarVisibility, } from "./AppWorkspace";
4
4
  export { default as AppWorkspace } from "./AppWorkspace";
@@ -23,6 +23,8 @@ export type { PanelHeaderProps } from "./PanelHeader";
23
23
  export { PanelHeader } from "./PanelHeader";
24
24
  export type { PanesItem, PanesProps } from "./Panes";
25
25
  export { default as Panes } from "./Panes";
26
+ export type { PullToRefreshProps, PullToRefreshState } from "./PullToRefresh";
27
+ export { default as PullToRefresh } from "./PullToRefresh";
26
28
  export type { AddPanesItemOptions, PanesDirection, PanesGroup, PanesIntent, PanesLayout, PanesNode, PanesPath, PanesPathSegment, PanesSide, PanesSplit, } from "./panes-layout";
27
29
  export { activatePanesItem, addPanesItem, applyPanesIntent, createPanesLayout, isPanesItemVisible, PANES_LAYOUT_VERSION, parsePanesLayout, reconcilePanesLayout, removePanesItem, resizePanesSplit, } from "./panes-layout";
28
30
  export type { ScrollAreaProps } from "./ScrollArea";
@@ -1,11 +1,14 @@
1
- import type { JSX } from "solid-js";
1
+ import { type JSX } from "solid-js";
2
2
  export type LinkCardColor = "blue" | "emerald" | "violet" | "orange" | "red" | "amber" | "zinc" | "cyan" | "rose";
3
3
  export type LinkCardProps = {
4
4
  href: string;
5
5
  title: string;
6
6
  description: string;
7
7
  icon: string;
8
- color: LinkCardColor;
8
+ /** Glyph color. Omit it to use the host application's accent. */
9
+ color?: LinkCardColor;
10
+ /** One trailing fact, such as a count or a badge. */
11
+ meta?: JSX.Element;
9
12
  };
10
13
  export declare function LinkCard(props: LinkCardProps): JSX.Element;
11
14
  export default LinkCard;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k2b/ui",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Production-ready components for SolidJS applications.",
5
5
  "repository": {
6
6
  "type": "git",