@northstar-js/react 0.0.0-stage → 0.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/LICENSE +21 -0
- package/dist/actions.d.ts +32 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +15 -0
- package/dist/actions.js.map +1 -0
- package/dist/data.d.ts +80 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +60 -0
- package/dist/data.js.map +1 -0
- package/dist/feedback.d.ts +50 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +60 -0
- package/dist/feedback.js.map +1 -0
- package/dist/forms.d.ts +130 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +241 -0
- package/dist/forms.js.map +1 -0
- package/dist/illustrations/data.d.ts +103 -0
- package/dist/illustrations/data.d.ts.map +1 -0
- package/dist/illustrations/data.js +3 -0
- package/dist/illustrations/data.js.map +1 -0
- package/dist/illustrations/index.d.ts +110 -0
- package/dist/illustrations/index.d.ts.map +1 -0
- package/dist/illustrations/index.js +54 -0
- package/dist/illustrations/index.js.map +1 -0
- package/dist/illustrations/types.d.ts +30 -0
- package/dist/illustrations/types.d.ts.map +1 -0
- package/dist/illustrations/types.js +2 -0
- package/dist/illustrations/types.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/icons.d.ts +9 -0
- package/dist/internal/icons.d.ts.map +1 -0
- package/dist/internal/icons.js +12 -0
- package/dist/internal/icons.js.map +1 -0
- package/dist/internal/layers.d.ts +12 -0
- package/dist/internal/layers.d.ts.map +1 -0
- package/dist/internal/layers.js +108 -0
- package/dist/internal/layers.js.map +1 -0
- package/dist/internal/util.d.ts +9 -0
- package/dist/internal/util.d.ts.map +1 -0
- package/dist/internal/util.js +33 -0
- package/dist/internal/util.js.map +1 -0
- package/dist/layout.d.ts +34 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +27 -0
- package/dist/layout.js.map +1 -0
- package/dist/navigation.d.ts +63 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +87 -0
- package/dist/navigation.js.map +1 -0
- package/dist/northstar/BriefForm.d.ts +23 -0
- package/dist/northstar/BriefForm.d.ts.map +1 -0
- package/dist/northstar/BriefForm.js +40 -0
- package/dist/northstar/BriefForm.js.map +1 -0
- package/dist/northstar/ExportMenu.d.ts +14 -0
- package/dist/northstar/ExportMenu.d.ts.map +1 -0
- package/dist/northstar/ExportMenu.js +11 -0
- package/dist/northstar/ExportMenu.js.map +1 -0
- package/dist/northstar/PopulationPanel.d.ts +30 -0
- package/dist/northstar/PopulationPanel.d.ts.map +1 -0
- package/dist/northstar/PopulationPanel.js +18 -0
- package/dist/northstar/PopulationPanel.js.map +1 -0
- package/dist/northstar/ResearchBuilder.d.ts +26 -0
- package/dist/northstar/ResearchBuilder.d.ts.map +1 -0
- package/dist/northstar/ResearchBuilder.js +81 -0
- package/dist/northstar/ResearchBuilder.js.map +1 -0
- package/dist/northstar/ResponsesView.d.ts +20 -0
- package/dist/northstar/ResponsesView.d.ts.map +1 -0
- package/dist/northstar/ResponsesView.js +42 -0
- package/dist/northstar/ResponsesView.js.map +1 -0
- package/dist/northstar/Run.d.ts +35 -0
- package/dist/northstar/Run.d.ts.map +1 -0
- package/dist/northstar/Run.js +31 -0
- package/dist/northstar/Run.js.map +1 -0
- package/dist/northstar/StudyShell.d.ts +28 -0
- package/dist/northstar/StudyShell.d.ts.map +1 -0
- package/dist/northstar/StudyShell.js +14 -0
- package/dist/northstar/StudyShell.js.map +1 -0
- package/dist/northstar/StudyStatus.d.ts +15 -0
- package/dist/northstar/StudyStatus.d.ts.map +1 -0
- package/dist/northstar/StudyStatus.js +24 -0
- package/dist/northstar/StudyStatus.js.map +1 -0
- package/dist/northstar/index.d.ts +10 -0
- package/dist/northstar/index.d.ts.map +1 -0
- package/dist/northstar/index.js +10 -0
- package/dist/northstar/index.js.map +1 -0
- package/dist/northstar/messages.d.ts +84 -0
- package/dist/northstar/messages.d.ts.map +1 -0
- package/dist/northstar/messages.js +107 -0
- package/dist/northstar/messages.js.map +1 -0
- package/dist/overlays.d.ts +111 -0
- package/dist/overlays.d.ts.map +1 -0
- package/dist/overlays.js +421 -0
- package/dist/overlays.js.map +1 -0
- package/dist/provider.d.ts +53 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +114 -0
- package/dist/provider.js.map +1 -0
- package/dist/styles.css +971 -0
- package/package.json +71 -3
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/illustrations/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** One illustration as layered path data. Every layer maps to one --ns-* colour role. */
|
|
2
|
+
export interface IllustrationLayers {
|
|
3
|
+
faint?: string;
|
|
4
|
+
knock?: string;
|
|
5
|
+
grid?: string;
|
|
6
|
+
washM?: string;
|
|
7
|
+
wash?: string;
|
|
8
|
+
hair?: string;
|
|
9
|
+
dash?: string;
|
|
10
|
+
inkHair?: string;
|
|
11
|
+
ink1?: string;
|
|
12
|
+
ink15?: string;
|
|
13
|
+
dim?: string;
|
|
14
|
+
ink?: string;
|
|
15
|
+
acc15?: string;
|
|
16
|
+
acc?: string;
|
|
17
|
+
labels?: readonly {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
t: string;
|
|
21
|
+
a: string;
|
|
22
|
+
}[];
|
|
23
|
+
/** Orbiting rings: path, seconds per turn, direction. Still under reduced motion. */
|
|
24
|
+
rings?: readonly {
|
|
25
|
+
d: string;
|
|
26
|
+
s: number;
|
|
27
|
+
dir: number;
|
|
28
|
+
}[];
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/illustrations/types.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnE,qFAAqF;IACrF,KAAK,CAAC,EAAE,SAAS;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/illustrations/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { NorthstarProvider, useNorthstar, Portal, en } from './provider.js';
|
|
2
|
+
export type { NorthstarProviderProps, NorthstarContextValue, Messages, ThemeSetting, ResolvedTheme, Density } from './provider.js';
|
|
3
|
+
export type { Size, Tone } from './internal/util.js';
|
|
4
|
+
export { Button, IconButton, Link, ButtonGroup } from './actions.js';
|
|
5
|
+
export type { ButtonProps, ButtonVariant, IconButtonProps, LinkProps, ButtonGroupProps } from './actions.js';
|
|
6
|
+
export { Field, useFieldProps, Input, Textarea, Select, Combobox, Checkbox, RadioGroup, Radio, Switch, Slider, NumberInput, SearchInput } from './forms.js';
|
|
7
|
+
export type { FieldProps, InputProps, TextareaProps, Option, SelectProps, ComboboxProps, CheckboxProps, RadioGroupProps, RadioProps, SwitchProps, SliderProps, NumberInputProps, SearchInputProps, } from './forms.js';
|
|
8
|
+
export { Dialog, Sheet, Popover, Menu, Tooltip } from './overlays.js';
|
|
9
|
+
export type { DialogContentProps, SheetContentProps, PopoverContentProps, MenuContentProps, MenuItemProps, TooltipProps, Side, Align } from './overlays.js';
|
|
10
|
+
export { Toast, Toaster, toast, useToasts, Banner } from './feedback.js';
|
|
11
|
+
export type { ToastOptions, ToastRecord, ToastProps, ToasterProps, BannerProps } from './feedback.js';
|
|
12
|
+
export { Tabs, Breadcrumbs, Pagination, Sidebar, SidebarSection, SidebarItem } from './navigation.js';
|
|
13
|
+
export type { TabsRootProps, TabsTriggerProps, TabsContentProps, BreadcrumbItem, BreadcrumbsProps, PaginationProps, SidebarProps, SidebarSectionProps, SidebarItemProps } from './navigation.js';
|
|
14
|
+
export { AppShell, TopBar, Stack, Grid } from './layout.js';
|
|
15
|
+
export type { AppShellProps, TopBarProps, StackProps, GridProps } from './layout.js';
|
|
16
|
+
export { Table, TableHead, TableBody, TableRow, TableHeaderCell, TableCell, List, ListItem, Tag, Badge, Avatar, initials, Kbd, EmptyState, Skeleton, Stale } from './data.js';
|
|
17
|
+
export type { TableProps, TableHeaderCellProps, SortDirection, ListProps, ListItemProps, TagProps, BadgeProps, AvatarProps, EmptyStateProps, SkeletonProps, StaleProps } from './data.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAC5E,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnI,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE7G,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5J,YAAY,EACV,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EACrH,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,GAC7D,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE5J,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEtG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtG,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEjM,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAC9K,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { NorthstarProvider, useNorthstar, Portal, en } from './provider.js';
|
|
2
|
+
export { Button, IconButton, Link, ButtonGroup } from './actions.js';
|
|
3
|
+
export { Field, useFieldProps, Input, Textarea, Select, Combobox, Checkbox, RadioGroup, Radio, Switch, Slider, NumberInput, SearchInput } from './forms.js';
|
|
4
|
+
export { Dialog, Sheet, Popover, Menu, Tooltip } from './overlays.js';
|
|
5
|
+
export { Toast, Toaster, toast, useToasts, Banner } from './feedback.js';
|
|
6
|
+
export { Tabs, Breadcrumbs, Pagination, Sidebar, SidebarSection, SidebarItem } from './navigation.js';
|
|
7
|
+
export { AppShell, TopBar, Stack, Grid } from './layout.js';
|
|
8
|
+
export { Table, TableHead, TableBody, TableRow, TableHeaderCell, TableCell, List, ListItem, Tag, Badge, Avatar, initials, Kbd, EmptyState, Skeleton, Stale } from './data.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAI5E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGrE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM5J,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGzE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGtG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAG5D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const ChevronDown: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const ChevronLeft: () => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare const ChevronRight: () => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare const Close: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare const Search: () => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare const Check: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const Minus: () => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const Plus: () => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/internal/icons.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,+CAAuD,CAAC;AAChF,eAAO,MAAM,WAAW,+CAAwD,CAAC;AACjF,eAAO,MAAM,YAAY,+CAAuD,CAAC;AACjF,eAAO,MAAM,KAAK,+CAA6D,CAAC;AAChF,eAAO,MAAM,MAAM,+CAA8F,CAAC;AAClH,eAAO,MAAM,KAAK,+CAA2D,CAAC;AAC9E,eAAO,MAAM,KAAK,+CAAiD,CAAC;AACpE,eAAO,MAAM,IAAI,+CAAuD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Small internal glyphs (16px grid, currentColor). Not part of the public API.
|
|
3
|
+
const base = { width: 16, height: 16, viewBox: '0 0 16 16', fill: 'none', stroke: 'currentColor', strokeWidth: 1.5, strokeLinecap: 'round', strokeLinejoin: 'round', 'aria-hidden': true, focusable: false };
|
|
4
|
+
export const ChevronDown = () => _jsx("svg", { ...base, children: _jsx("path", { d: "M4 6l4 4 4-4" }) });
|
|
5
|
+
export const ChevronLeft = () => _jsx("svg", { ...base, children: _jsx("path", { d: "M10 4L6 8l4 4" }) });
|
|
6
|
+
export const ChevronRight = () => _jsx("svg", { ...base, children: _jsx("path", { d: "M6 4l4 4-4 4" }) });
|
|
7
|
+
export const Close = () => _jsx("svg", { ...base, children: _jsx("path", { d: "M4 4l8 8M12 4l-8 8" }) });
|
|
8
|
+
export const Search = () => _jsxs("svg", { ...base, children: [_jsx("circle", { cx: "7", cy: "7", r: "4.25" }), _jsx("path", { d: "M10.25 10.25L13 13" })] });
|
|
9
|
+
export const Check = () => _jsx("svg", { ...base, children: _jsx("path", { d: "M3.5 8.5l3 3 6-7" }) });
|
|
10
|
+
export const Minus = () => _jsx("svg", { ...base, children: _jsx("path", { d: "M4 8h8" }) });
|
|
11
|
+
export const Plus = () => _jsx("svg", { ...base, children: _jsx("path", { d: "M8 4v8M4 8h8" }) });
|
|
12
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/internal/icons.tsx"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAW,CAAC;AAEtN,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,iBAAS,IAAI,YAAE,eAAM,CAAC,EAAC,cAAc,GAAG,GAAM,CAAC;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,iBAAS,IAAI,YAAE,eAAM,CAAC,EAAC,eAAe,GAAG,GAAM,CAAC;AACjF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,iBAAS,IAAI,YAAE,eAAM,CAAC,EAAC,cAAc,GAAG,GAAM,CAAC;AACjF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,iBAAS,IAAI,YAAE,eAAM,CAAC,EAAC,oBAAoB,GAAG,GAAM,CAAC;AAChF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,kBAAS,IAAI,aAAE,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,MAAM,GAAG,EAAA,eAAM,CAAC,EAAC,oBAAoB,GAAG,IAAM,CAAC;AAClH,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,iBAAS,IAAI,YAAE,eAAM,CAAC,EAAC,kBAAkB,GAAG,GAAM,CAAC;AAC9E,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,iBAAS,IAAI,YAAE,eAAM,CAAC,EAAC,QAAQ,GAAG,GAAM,CAAC;AACpE,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,iBAAS,IAAI,YAAE,eAAM,CAAC,EAAC,cAAc,GAAG,GAAM,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Close on Escape (topmost layer only) and on pointer-down outside every
|
|
3
|
+
* element in `inside`.
|
|
4
|
+
*/
|
|
5
|
+
export declare function useDismiss(active: boolean, inside: Array<React.RefObject<HTMLElement | null>>, onDismiss: () => void, options?: {
|
|
6
|
+
outside?: boolean;
|
|
7
|
+
}): void;
|
|
8
|
+
/** Keep Tab inside `ref` while active; restore focus to the opener afterwards. */
|
|
9
|
+
export declare function useFocusTrap(active: boolean, ref: React.RefObject<HTMLElement | null>, restore?: boolean): void;
|
|
10
|
+
/** Roving focus over `selector` items inside a container (arrow keys, Home, End). */
|
|
11
|
+
export declare function rovingKeyDown(e: React.KeyboardEvent<HTMLElement>, selector: string, orientation?: 'horizontal' | 'vertical' | 'both'): HTMLElement | null;
|
|
12
|
+
//# sourceMappingURL=layers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layers.d.ts","sourceRoot":"","sources":["../../src/internal/layers.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,EAClD,SAAS,EAAE,MAAM,IAAI,EACrB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,IAAI,CA+BN;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,OAAO,UAAO,GAAG,IAAI,CAiC5G;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAC3B,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,YAAY,GAAG,UAAU,GAAG,MAAmB,GAC3D,WAAW,GAAG,IAAI,CAiBpB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { focusables } from './util.js';
|
|
3
|
+
/** Stack of open dismissable layers, so Escape closes only the topmost. */
|
|
4
|
+
const stack = [];
|
|
5
|
+
/**
|
|
6
|
+
* Close on Escape (topmost layer only) and on pointer-down outside every
|
|
7
|
+
* element in `inside`.
|
|
8
|
+
*/
|
|
9
|
+
export function useDismiss(active, inside, onDismiss, options = {}) {
|
|
10
|
+
const cb = useRef(onDismiss);
|
|
11
|
+
cb.current = onDismiss;
|
|
12
|
+
const insideRef = useRef(inside);
|
|
13
|
+
insideRef.current = inside;
|
|
14
|
+
const outside = options.outside ?? true;
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (!active)
|
|
17
|
+
return;
|
|
18
|
+
const id = Symbol('layer');
|
|
19
|
+
stack.push(id);
|
|
20
|
+
const onKey = (e) => {
|
|
21
|
+
if (e.key === 'Escape' && stack[stack.length - 1] === id) {
|
|
22
|
+
e.stopPropagation();
|
|
23
|
+
cb.current();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const onPointer = (e) => {
|
|
27
|
+
if (!outside || stack[stack.length - 1] !== id)
|
|
28
|
+
return;
|
|
29
|
+
const t = e.target;
|
|
30
|
+
if (t && insideRef.current.some((r) => r.current?.contains(t)))
|
|
31
|
+
return;
|
|
32
|
+
cb.current();
|
|
33
|
+
};
|
|
34
|
+
document.addEventListener('keydown', onKey);
|
|
35
|
+
document.addEventListener('pointerdown', onPointer);
|
|
36
|
+
return () => {
|
|
37
|
+
document.removeEventListener('keydown', onKey);
|
|
38
|
+
document.removeEventListener('pointerdown', onPointer);
|
|
39
|
+
const i = stack.indexOf(id);
|
|
40
|
+
if (i >= 0)
|
|
41
|
+
stack.splice(i, 1);
|
|
42
|
+
};
|
|
43
|
+
}, [active, outside]);
|
|
44
|
+
}
|
|
45
|
+
/** Keep Tab inside `ref` while active; restore focus to the opener afterwards. */
|
|
46
|
+
export function useFocusTrap(active, ref, restore = true) {
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!active)
|
|
49
|
+
return;
|
|
50
|
+
const el = ref.current;
|
|
51
|
+
if (!el)
|
|
52
|
+
return;
|
|
53
|
+
const previous = document.activeElement;
|
|
54
|
+
const auto = el.querySelector('[data-autofocus]') ?? focusables(el)[0] ?? el;
|
|
55
|
+
auto.focus();
|
|
56
|
+
const onKey = (e) => {
|
|
57
|
+
if (e.key !== 'Tab')
|
|
58
|
+
return;
|
|
59
|
+
const items = focusables(el);
|
|
60
|
+
if (items.length === 0) {
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
el.focus();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const first = items[0];
|
|
66
|
+
const last = items[items.length - 1];
|
|
67
|
+
const current = document.activeElement;
|
|
68
|
+
if (e.shiftKey && (current === first || current === el)) {
|
|
69
|
+
e.preventDefault();
|
|
70
|
+
last?.focus();
|
|
71
|
+
}
|
|
72
|
+
else if (!e.shiftKey && current === last) {
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
first?.focus();
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
el.addEventListener('keydown', onKey);
|
|
78
|
+
return () => {
|
|
79
|
+
el.removeEventListener('keydown', onKey);
|
|
80
|
+
if (restore && previous && document.contains(previous))
|
|
81
|
+
previous.focus();
|
|
82
|
+
};
|
|
83
|
+
}, [active, ref, restore]);
|
|
84
|
+
}
|
|
85
|
+
/** Roving focus over `selector` items inside a container (arrow keys, Home, End). */
|
|
86
|
+
export function rovingKeyDown(e, selector, orientation = 'vertical') {
|
|
87
|
+
const items = Array.from(e.currentTarget.querySelectorAll(selector)).filter((el) => !el.hasAttribute('disabled') && el.getAttribute('aria-disabled') !== 'true');
|
|
88
|
+
if (items.length === 0)
|
|
89
|
+
return null;
|
|
90
|
+
const i = items.indexOf(document.activeElement);
|
|
91
|
+
const next = (orientation !== 'horizontal' && e.key === 'ArrowDown') || (orientation !== 'vertical' && e.key === 'ArrowRight');
|
|
92
|
+
const prev = (orientation !== 'horizontal' && e.key === 'ArrowUp') || (orientation !== 'vertical' && e.key === 'ArrowLeft');
|
|
93
|
+
let target;
|
|
94
|
+
if (next)
|
|
95
|
+
target = items[(i + 1) % items.length];
|
|
96
|
+
else if (prev)
|
|
97
|
+
target = items[(i - 1 + items.length) % items.length];
|
|
98
|
+
else if (e.key === 'Home')
|
|
99
|
+
target = items[0];
|
|
100
|
+
else if (e.key === 'End')
|
|
101
|
+
target = items[items.length - 1];
|
|
102
|
+
if (!target)
|
|
103
|
+
return null;
|
|
104
|
+
e.preventDefault();
|
|
105
|
+
target.focus();
|
|
106
|
+
return target;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=layers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layers.js","sourceRoot":"","sources":["../../src/internal/layers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type Size = 'sm' | 'md' | 'lg' | 'xl';
|
|
2
|
+
export type Tone = 'neutral' | 'signal';
|
|
3
|
+
export declare function cx(...parts: Array<string | false | null | undefined>): string;
|
|
4
|
+
/** Controlled/uncontrolled state: `value` wins when defined. */
|
|
5
|
+
export declare function useControllable<T>(value: T | undefined, defaultValue: T, onChange?: (next: T) => void): [T, (next: T) => void];
|
|
6
|
+
export declare const FOCUSABLE = "a[href],button:not([disabled]),input:not([disabled]):not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"]),[contenteditable=\"true\"]";
|
|
7
|
+
export declare function focusables(root: HTMLElement): HTMLElement[];
|
|
8
|
+
export declare function mergeRefs<T>(...refs: Array<React.Ref<T> | undefined>): React.RefCallback<T>;
|
|
9
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/internal/util.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7C,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExC,wBAAgB,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAE7E;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,CAAC,EAC/B,KAAK,EAAE,CAAC,GAAG,SAAS,EACpB,YAAY,EAAE,CAAC,EACf,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAC3B,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAcxB;AAED,eAAO,MAAM,SAAS,6LACgK,CAAC;AAEvL,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CAI3D;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAO3F"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useCallback, useRef, useState } from 'react';
|
|
2
|
+
export function cx(...parts) {
|
|
3
|
+
return parts.filter(Boolean).join(' ');
|
|
4
|
+
}
|
|
5
|
+
/** Controlled/uncontrolled state: `value` wins when defined. */
|
|
6
|
+
export function useControllable(value, defaultValue, onChange) {
|
|
7
|
+
const [inner, setInner] = useState(defaultValue);
|
|
8
|
+
const controlled = value !== undefined;
|
|
9
|
+
const current = controlled ? value : inner;
|
|
10
|
+
const ref = useRef(onChange);
|
|
11
|
+
ref.current = onChange;
|
|
12
|
+
const set = useCallback((next) => {
|
|
13
|
+
if (!controlled)
|
|
14
|
+
setInner(next);
|
|
15
|
+
ref.current?.(next);
|
|
16
|
+
}, [controlled]);
|
|
17
|
+
return [current, set];
|
|
18
|
+
}
|
|
19
|
+
export const FOCUSABLE = 'a[href],button:not([disabled]),input:not([disabled]):not([type="hidden"]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"]),[contenteditable="true"]';
|
|
20
|
+
export function focusables(root) {
|
|
21
|
+
return Array.from(root.querySelectorAll(FOCUSABLE)).filter((el) => !el.hasAttribute('inert') && el.getAttribute('aria-hidden') !== 'true');
|
|
22
|
+
}
|
|
23
|
+
export function mergeRefs(...refs) {
|
|
24
|
+
return (node) => {
|
|
25
|
+
for (const ref of refs) {
|
|
26
|
+
if (typeof ref === 'function')
|
|
27
|
+
ref(node);
|
|
28
|
+
else if (ref)
|
|
29
|
+
ref.current = node;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/internal/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAKtD,MAAM,UAAU,EAAE,CAAC,GAAG,KAA+C;IACnE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,eAAe,CAC7B,KAAoB,EACpB,YAAe,EACf,QAA4B;IAE5B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAI,YAAY,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC;IACvB,MAAM,GAAG,GAAG,WAAW,CACrB,CAAC,IAAO,EAAE,EAAE;QACV,IAAI,CAAC,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GACpB,oLAAoL,CAAC;AAEvL,MAAM,UAAU,UAAU,CAAC,IAAiB;IAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAc,SAAS,CAAC,CAAC,CAAC,MAAM,CACrE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM,CAC/E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAI,GAAG,IAAqC;IACnE,OAAO,CAAC,IAAI,EAAE,EAAE;QACd,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,OAAO,GAAG,KAAK,UAAU;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC;iBACpC,IAAI,GAAG;gBAAG,GAAiC,CAAC,OAAO,GAAG,IAAI,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/layout.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
type Space = 0 | 2 | 4 | 6 | 8 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 64;
|
|
2
|
+
export interface StackProps extends React.HTMLAttributes<HTMLElement> {
|
|
3
|
+
direction?: 'row' | 'column';
|
|
4
|
+
gap?: Space;
|
|
5
|
+
align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
6
|
+
justify?: 'start' | 'center' | 'end' | 'between';
|
|
7
|
+
wrap?: boolean;
|
|
8
|
+
as?: 'div' | 'section' | 'ul' | 'ol' | 'header' | 'footer' | 'nav' | 'main' | 'form';
|
|
9
|
+
}
|
|
10
|
+
export declare function Stack({ direction, gap, align, justify, wrap, as: Tag, className, style, ...rest }: StackProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export interface GridProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
12
|
+
/** A column count, or a minimum column width for an auto-fill grid. */
|
|
13
|
+
columns?: number | {
|
|
14
|
+
min: number;
|
|
15
|
+
};
|
|
16
|
+
gap?: Space;
|
|
17
|
+
}
|
|
18
|
+
export declare function Grid({ columns, gap, className, style, ...rest }: GridProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
20
|
+
sidebar?: React.ReactNode;
|
|
21
|
+
topBar?: React.ReactNode;
|
|
22
|
+
/** Id of <main>, the target for a skip link. */
|
|
23
|
+
mainId?: string;
|
|
24
|
+
skipLabel?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Sidebar, top bar and a single <main> landmark, with a skip link. */
|
|
27
|
+
export declare function AppShell({ sidebar, topBar, mainId, skipLabel, className, children, ...rest }: AppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export interface TopBarProps extends React.HTMLAttributes<HTMLElement> {
|
|
29
|
+
start?: React.ReactNode;
|
|
30
|
+
end?: React.ReactNode;
|
|
31
|
+
}
|
|
32
|
+
export declare function TopBar({ start, end, className, children, ...rest }: TopBarProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.tsx"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAKvE,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACnE,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC7B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5D,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;CACtF;AAID,wBAAgB,KAAK,CAAC,EAAE,SAAoB,EAAE,GAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAY,EAAE,EAAE,EAAE,GAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,2CAe5I;AAID,MAAM,WAAW,SAAU,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACrE,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,GAAG,CAAC,EAAE,KAAK,CAAC;CACb;AAED,wBAAgB,IAAI,CAAC,EAAE,OAAW,EAAE,GAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAGnF;AAID,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACzE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAkB,EAAE,SAA6B,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa,2CAe3I;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACvB;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,2CAQ/E"}
|
package/dist/layout.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Server-component safe: no state, no context.
|
|
3
|
+
import { cx } from './internal/util.js';
|
|
4
|
+
const space = (n) => (n === undefined ? undefined : n === 0 ? '0' : `var(--ns-space-${n})`);
|
|
5
|
+
const flex = { start: 'flex-start', end: 'flex-end', center: 'center', stretch: 'stretch', baseline: 'baseline', between: 'space-between' };
|
|
6
|
+
export function Stack({ direction = 'column', gap = 8, align, justify, wrap = false, as: Tag = 'div', className, style, ...rest }) {
|
|
7
|
+
return (_jsx(Tag, { ...rest, className: cx('ns-stack', className), style: {
|
|
8
|
+
flexDirection: direction,
|
|
9
|
+
gap: space(gap),
|
|
10
|
+
alignItems: align && flex[align],
|
|
11
|
+
justifyContent: justify && flex[justify],
|
|
12
|
+
flexWrap: wrap ? 'wrap' : undefined,
|
|
13
|
+
...style,
|
|
14
|
+
} }));
|
|
15
|
+
}
|
|
16
|
+
export function Grid({ columns = 2, gap = 16, className, style, ...rest }) {
|
|
17
|
+
const template = typeof columns === 'number' ? `repeat(${columns}, minmax(0, 1fr))` : `repeat(auto-fill, minmax(${columns.min}px, 1fr))`;
|
|
18
|
+
return _jsx("div", { ...rest, className: cx('ns-grid', className), style: { gridTemplateColumns: template, gap: space(gap), ...style } });
|
|
19
|
+
}
|
|
20
|
+
/** Sidebar, top bar and a single <main> landmark, with a skip link. */
|
|
21
|
+
export function AppShell({ sidebar, topBar, mainId = 'ns-main', skipLabel = 'Skip to content', className, children, ...rest }) {
|
|
22
|
+
return (_jsxs("div", { ...rest, className: cx('ns-app-shell', !sidebar && 'ns-app-shell--no-sidebar', className), children: [_jsx("a", { className: "ns-skip-link", href: `#${mainId}`, children: skipLabel }), sidebar && _jsx("div", { className: "ns-app-shell__sidebar", children: sidebar }), _jsxs("div", { className: "ns-app-shell__column", children: [topBar, _jsx("main", { id: mainId, className: "ns-app-shell__main", tabIndex: -1, children: children })] })] }));
|
|
23
|
+
}
|
|
24
|
+
export function TopBar({ start, end, className, children, ...rest }) {
|
|
25
|
+
return (_jsxs("header", { ...rest, className: cx('ns-top-bar', className), children: [start && _jsx("div", { className: "ns-top-bar__start", children: start }), _jsx("div", { className: "ns-top-bar__center", children: children }), end && _jsx("div", { className: "ns-top-bar__end", children: end })] }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export interface TabsRootProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'> {
|
|
2
|
+
value?: string;
|
|
3
|
+
defaultValue?: string;
|
|
4
|
+
onValueChange?: (value: string) => void;
|
|
5
|
+
orientation?: 'horizontal' | 'vertical';
|
|
6
|
+
}
|
|
7
|
+
declare function TabsRoot({ value, defaultValue, onValueChange, orientation, className, ...rest }: TabsRootProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function TabsList({ className, onKeyDown, ...rest }: React.HTMLAttributes<HTMLDivElement> & {
|
|
9
|
+
label?: string;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
12
|
+
value: string;
|
|
13
|
+
}
|
|
14
|
+
declare function TabsTrigger({ value, className, onClick, ...rest }: TabsTriggerProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
value: string;
|
|
17
|
+
/** Keep the panel mounted when hidden. */
|
|
18
|
+
forceMount?: boolean;
|
|
19
|
+
}
|
|
20
|
+
declare function TabsContent({ value, forceMount, className, ...rest }: TabsContentProps): import("react/jsx-runtime").JSX.Element | null;
|
|
21
|
+
/** Tabs with automatic activation: arrow keys move and select, Home/End jump. */
|
|
22
|
+
export declare const Tabs: {
|
|
23
|
+
Root: typeof TabsRoot;
|
|
24
|
+
List: typeof TabsList;
|
|
25
|
+
Trigger: typeof TabsTrigger;
|
|
26
|
+
Content: typeof TabsContent;
|
|
27
|
+
};
|
|
28
|
+
export interface BreadcrumbItem {
|
|
29
|
+
label: React.ReactNode;
|
|
30
|
+
href?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {
|
|
33
|
+
items: BreadcrumbItem[];
|
|
34
|
+
}
|
|
35
|
+
export declare function Breadcrumbs({ items, className, ...rest }: BreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export interface PaginationProps extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'> {
|
|
37
|
+
pageCount: number;
|
|
38
|
+
page?: number;
|
|
39
|
+
defaultPage?: number;
|
|
40
|
+
onPageChange?: (page: number) => void;
|
|
41
|
+
/** Pages shown either side of the current one. */
|
|
42
|
+
siblings?: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function Pagination({ pageCount, page, defaultPage, onPageChange, siblings, className, ...rest }: PaginationProps): import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
export interface SidebarProps extends React.HTMLAttributes<HTMLElement> {
|
|
46
|
+
label?: string;
|
|
47
|
+
header?: React.ReactNode;
|
|
48
|
+
footer?: React.ReactNode;
|
|
49
|
+
}
|
|
50
|
+
export declare function Sidebar({ label, header, footer, className, children, ...rest }: SidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
export interface SidebarSectionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
52
|
+
title?: React.ReactNode;
|
|
53
|
+
}
|
|
54
|
+
export declare function SidebarSection({ title, className, children, ...rest }: SidebarSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
55
|
+
export interface SidebarItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
56
|
+
icon?: React.ReactNode;
|
|
57
|
+
active?: boolean;
|
|
58
|
+
/** Trailing count or badge. */
|
|
59
|
+
meta?: React.ReactNode;
|
|
60
|
+
}
|
|
61
|
+
export declare function SidebarItem({ icon, active, meta, className, children, ...rest }: SidebarItemProps): import("react/jsx-runtime").JSX.Element;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useContext, useId } from 'react';
|
|
4
|
+
import { useNorthstar } from './provider.js';
|
|
5
|
+
import { rovingKeyDown } from './internal/layers.js';
|
|
6
|
+
import { cx, useControllable } from './internal/util.js';
|
|
7
|
+
import { ChevronLeft, ChevronRight } from './internal/icons.js';
|
|
8
|
+
const TabsContext = createContext(null);
|
|
9
|
+
function useTabs(name) {
|
|
10
|
+
const v = useContext(TabsContext);
|
|
11
|
+
if (!v)
|
|
12
|
+
throw new Error(`<${name}> must be used inside <Tabs.Root>`);
|
|
13
|
+
return v;
|
|
14
|
+
}
|
|
15
|
+
function TabsRoot({ value, defaultValue, onValueChange, orientation = 'horizontal', className, ...rest }) {
|
|
16
|
+
const [v, setV] = useControllable(value, defaultValue ?? '', onValueChange);
|
|
17
|
+
const baseId = `ns-tabs-${useId().replace(/:/g, '')}`;
|
|
18
|
+
return (_jsx(TabsContext.Provider, { value: { value: v, setValue: setV, baseId, orientation }, children: _jsx("div", { ...rest, className: cx('ns-tabs', `ns-tabs--${orientation}`, className) }) }));
|
|
19
|
+
}
|
|
20
|
+
function TabsList({ className, onKeyDown, ...rest }) {
|
|
21
|
+
const ctx = useTabs('Tabs.List');
|
|
22
|
+
const { label, ...props } = rest;
|
|
23
|
+
return (_jsx("div", { role: "tablist", "aria-label": label, "aria-orientation": ctx.orientation, ...props, className: cx('ns-tabs__list', className), onKeyDown: (e) => {
|
|
24
|
+
onKeyDown?.(e);
|
|
25
|
+
const t = rovingKeyDown(e, '[role="tab"]', ctx.orientation);
|
|
26
|
+
const v = t?.getAttribute('data-value');
|
|
27
|
+
if (v)
|
|
28
|
+
ctx.setValue(v);
|
|
29
|
+
} }));
|
|
30
|
+
}
|
|
31
|
+
function TabsTrigger({ value, className, onClick, ...rest }) {
|
|
32
|
+
const ctx = useTabs('Tabs.Trigger');
|
|
33
|
+
const selected = ctx.value === value;
|
|
34
|
+
return (_jsx("button", { type: "button", role: "tab", id: `${ctx.baseId}-tab-${value}`, "aria-selected": selected, "aria-controls": `${ctx.baseId}-panel-${value}`, tabIndex: selected ? 0 : -1, "data-value": value, ...rest, className: cx('ns-tabs__trigger', className), onClick: (e) => {
|
|
35
|
+
onClick?.(e);
|
|
36
|
+
ctx.setValue(value);
|
|
37
|
+
} }));
|
|
38
|
+
}
|
|
39
|
+
function TabsContent({ value, forceMount = false, className, ...rest }) {
|
|
40
|
+
const ctx = useTabs('Tabs.Content');
|
|
41
|
+
const selected = ctx.value === value;
|
|
42
|
+
if (!selected && !forceMount)
|
|
43
|
+
return null;
|
|
44
|
+
return (_jsx("div", { role: "tabpanel", id: `${ctx.baseId}-panel-${value}`, "aria-labelledby": `${ctx.baseId}-tab-${value}`, tabIndex: 0, hidden: !selected, ...rest, className: cx('ns-tabs__content', className) }));
|
|
45
|
+
}
|
|
46
|
+
/** Tabs with automatic activation: arrow keys move and select, Home/End jump. */
|
|
47
|
+
export const Tabs = { Root: TabsRoot, List: TabsList, Trigger: TabsTrigger, Content: TabsContent };
|
|
48
|
+
export function Breadcrumbs({ items, className, ...rest }) {
|
|
49
|
+
const { messages } = useNorthstar();
|
|
50
|
+
return (_jsx("nav", { "aria-label": messages.breadcrumbs, ...rest, className: cx('ns-breadcrumbs', className), children: _jsx("ol", { children: items.map((item, i) => {
|
|
51
|
+
const last = i === items.length - 1;
|
|
52
|
+
return (_jsxs("li", { children: [last || !item.href ? (_jsx("span", { "aria-current": last ? 'page' : undefined, children: item.label })) : (_jsx("a", { href: item.href, children: item.label })), !last && (_jsx("span", { className: "ns-breadcrumbs__sep", "aria-hidden": "true", children: "/" }))] }, i));
|
|
53
|
+
}) }) }));
|
|
54
|
+
}
|
|
55
|
+
function range(page, count, siblings) {
|
|
56
|
+
const out = [];
|
|
57
|
+
const from = Math.max(2, page - siblings);
|
|
58
|
+
const to = Math.min(count - 1, page + siblings);
|
|
59
|
+
out.push(1);
|
|
60
|
+
if (from > 2)
|
|
61
|
+
out.push('gap');
|
|
62
|
+
for (let i = from; i <= to; i++)
|
|
63
|
+
out.push(i);
|
|
64
|
+
if (to < count - 1)
|
|
65
|
+
out.push('gap');
|
|
66
|
+
if (count > 1)
|
|
67
|
+
out.push(count);
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
export function Pagination({ pageCount, page, defaultPage, onPageChange, siblings = 1, className, ...rest }) {
|
|
71
|
+
const { messages } = useNorthstar();
|
|
72
|
+
const [p, setP] = useControllable(page, defaultPage ?? 1, onPageChange);
|
|
73
|
+
const go = (n) => setP(Math.min(pageCount, Math.max(1, n)));
|
|
74
|
+
return (_jsxs("nav", { "aria-label": messages.pagination, ...rest, className: cx('ns-pagination', className), children: [_jsx("button", { type: "button", className: "ns-button ns-button--ghost ns-size-sm ns-icon-button", "aria-label": messages.previousPage, disabled: p <= 1, onClick: () => go(p - 1), children: _jsx(ChevronLeft, {}) }), _jsx("ul", { children: range(p, pageCount, siblings).map((n, i) => n === 'gap' ? (_jsx("li", { className: "ns-pagination__gap", "aria-hidden": "true", children: "\u2026" }, `gap-${i}`)) : (_jsx("li", { children: _jsx("button", { type: "button", className: "ns-button ns-button--ghost ns-size-sm ns-pagination__page", "aria-label": messages.page(n), "aria-current": n === p ? 'page' : undefined, onClick: () => go(n), children: n }) }, n))) }), _jsx("button", { type: "button", className: "ns-button ns-button--ghost ns-size-sm ns-icon-button", "aria-label": messages.nextPage, disabled: p >= pageCount, onClick: () => go(p + 1), children: _jsx(ChevronRight, {}) })] }));
|
|
75
|
+
}
|
|
76
|
+
export function Sidebar({ label, header, footer, className, children, ...rest }) {
|
|
77
|
+
const { messages } = useNorthstar();
|
|
78
|
+
return (_jsxs("nav", { "aria-label": label ?? messages.sidebar, ...rest, className: cx('ns-sidebar', className), children: [header && _jsx("div", { className: "ns-sidebar__header", children: header }), _jsx("div", { className: "ns-sidebar__body", children: children }), footer && _jsx("div", { className: "ns-sidebar__footer", children: footer })] }));
|
|
79
|
+
}
|
|
80
|
+
export function SidebarSection({ title, className, children, ...rest }) {
|
|
81
|
+
const id = useId();
|
|
82
|
+
return (_jsxs("div", { role: "group", "aria-labelledby": title ? id : undefined, ...rest, className: cx('ns-sidebar__section', className), children: [title && (_jsx("div", { id: id, className: "ns-sidebar__title", children: title })), _jsx("ul", { children: children })] }));
|
|
83
|
+
}
|
|
84
|
+
export function SidebarItem({ icon, active = false, meta, className, children, ...rest }) {
|
|
85
|
+
return (_jsx("li", { children: _jsxs("a", { "aria-current": active ? 'page' : undefined, ...rest, className: cx('ns-sidebar__item', className), children: [icon && (_jsx("span", { className: "ns-sidebar__icon", "aria-hidden": "true", children: icon })), _jsx("span", { className: "ns-sidebar__text", children: children }), meta !== undefined && _jsx("span", { className: "ns-sidebar__meta", children: meta })] }) }));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type WithMessages } from './messages.js';
|
|
3
|
+
export interface BriefValue {
|
|
4
|
+
title: string;
|
|
5
|
+
/** The decision the study informs. */
|
|
6
|
+
decision: string;
|
|
7
|
+
objectives: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface BriefFormProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange'>, WithMessages {
|
|
10
|
+
value?: BriefValue;
|
|
11
|
+
defaultValue?: BriefValue;
|
|
12
|
+
onValueChange?: (value: BriefValue) => void;
|
|
13
|
+
/** Most objectives a study may carry. Default 5. */
|
|
14
|
+
maxObjectives?: number;
|
|
15
|
+
/** Per-objective meta, e.g. "3 items". */
|
|
16
|
+
objectiveMeta?: (index: number) => ReactNode;
|
|
17
|
+
/** Shown above the objectives (a template picker, say). */
|
|
18
|
+
toolbar?: ReactNode;
|
|
19
|
+
readOnly?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/** The Brief tab: study name, the decision it informs, and its objectives. */
|
|
22
|
+
export declare function BriefForm({ value, defaultValue, onValueChange, maxObjectives, objectiveMeta, toolbar, readOnly, messages, className, ...rest }: BriefFormProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
//# sourceMappingURL=BriefForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BriefForm.d.ts","sourceRoot":"","sources":["../../src/northstar/BriefForm.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC,EAAE,YAAY;IAC3H,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC7C,2DAA2D;IAC3D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,EACxB,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,QAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAC9H,EAAE,cAAc,2CA8FhB"}
|