@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.
Files changed (104) hide show
  1. package/LICENSE +21 -0
  2. package/dist/actions.d.ts +32 -0
  3. package/dist/actions.d.ts.map +1 -0
  4. package/dist/actions.js +15 -0
  5. package/dist/actions.js.map +1 -0
  6. package/dist/data.d.ts +80 -0
  7. package/dist/data.d.ts.map +1 -0
  8. package/dist/data.js +60 -0
  9. package/dist/data.js.map +1 -0
  10. package/dist/feedback.d.ts +50 -0
  11. package/dist/feedback.d.ts.map +1 -0
  12. package/dist/feedback.js +60 -0
  13. package/dist/feedback.js.map +1 -0
  14. package/dist/forms.d.ts +130 -0
  15. package/dist/forms.d.ts.map +1 -0
  16. package/dist/forms.js +241 -0
  17. package/dist/forms.js.map +1 -0
  18. package/dist/illustrations/data.d.ts +103 -0
  19. package/dist/illustrations/data.d.ts.map +1 -0
  20. package/dist/illustrations/data.js +3 -0
  21. package/dist/illustrations/data.js.map +1 -0
  22. package/dist/illustrations/index.d.ts +110 -0
  23. package/dist/illustrations/index.d.ts.map +1 -0
  24. package/dist/illustrations/index.js +54 -0
  25. package/dist/illustrations/index.js.map +1 -0
  26. package/dist/illustrations/types.d.ts +30 -0
  27. package/dist/illustrations/types.d.ts.map +1 -0
  28. package/dist/illustrations/types.js +2 -0
  29. package/dist/illustrations/types.js.map +1 -0
  30. package/dist/index.d.ts +18 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +9 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/internal/icons.d.ts +9 -0
  35. package/dist/internal/icons.d.ts.map +1 -0
  36. package/dist/internal/icons.js +12 -0
  37. package/dist/internal/icons.js.map +1 -0
  38. package/dist/internal/layers.d.ts +12 -0
  39. package/dist/internal/layers.d.ts.map +1 -0
  40. package/dist/internal/layers.js +108 -0
  41. package/dist/internal/layers.js.map +1 -0
  42. package/dist/internal/util.d.ts +9 -0
  43. package/dist/internal/util.d.ts.map +1 -0
  44. package/dist/internal/util.js +33 -0
  45. package/dist/internal/util.js.map +1 -0
  46. package/dist/layout.d.ts +34 -0
  47. package/dist/layout.d.ts.map +1 -0
  48. package/dist/layout.js +27 -0
  49. package/dist/layout.js.map +1 -0
  50. package/dist/navigation.d.ts +63 -0
  51. package/dist/navigation.d.ts.map +1 -0
  52. package/dist/navigation.js +87 -0
  53. package/dist/navigation.js.map +1 -0
  54. package/dist/northstar/BriefForm.d.ts +23 -0
  55. package/dist/northstar/BriefForm.d.ts.map +1 -0
  56. package/dist/northstar/BriefForm.js +40 -0
  57. package/dist/northstar/BriefForm.js.map +1 -0
  58. package/dist/northstar/ExportMenu.d.ts +14 -0
  59. package/dist/northstar/ExportMenu.d.ts.map +1 -0
  60. package/dist/northstar/ExportMenu.js +11 -0
  61. package/dist/northstar/ExportMenu.js.map +1 -0
  62. package/dist/northstar/PopulationPanel.d.ts +30 -0
  63. package/dist/northstar/PopulationPanel.d.ts.map +1 -0
  64. package/dist/northstar/PopulationPanel.js +18 -0
  65. package/dist/northstar/PopulationPanel.js.map +1 -0
  66. package/dist/northstar/ResearchBuilder.d.ts +26 -0
  67. package/dist/northstar/ResearchBuilder.d.ts.map +1 -0
  68. package/dist/northstar/ResearchBuilder.js +81 -0
  69. package/dist/northstar/ResearchBuilder.js.map +1 -0
  70. package/dist/northstar/ResponsesView.d.ts +20 -0
  71. package/dist/northstar/ResponsesView.d.ts.map +1 -0
  72. package/dist/northstar/ResponsesView.js +42 -0
  73. package/dist/northstar/ResponsesView.js.map +1 -0
  74. package/dist/northstar/Run.d.ts +35 -0
  75. package/dist/northstar/Run.d.ts.map +1 -0
  76. package/dist/northstar/Run.js +31 -0
  77. package/dist/northstar/Run.js.map +1 -0
  78. package/dist/northstar/StudyShell.d.ts +28 -0
  79. package/dist/northstar/StudyShell.d.ts.map +1 -0
  80. package/dist/northstar/StudyShell.js +14 -0
  81. package/dist/northstar/StudyShell.js.map +1 -0
  82. package/dist/northstar/StudyStatus.d.ts +15 -0
  83. package/dist/northstar/StudyStatus.d.ts.map +1 -0
  84. package/dist/northstar/StudyStatus.js +24 -0
  85. package/dist/northstar/StudyStatus.js.map +1 -0
  86. package/dist/northstar/index.d.ts +10 -0
  87. package/dist/northstar/index.d.ts.map +1 -0
  88. package/dist/northstar/index.js +10 -0
  89. package/dist/northstar/index.js.map +1 -0
  90. package/dist/northstar/messages.d.ts +84 -0
  91. package/dist/northstar/messages.d.ts.map +1 -0
  92. package/dist/northstar/messages.js +107 -0
  93. package/dist/northstar/messages.js.map +1 -0
  94. package/dist/overlays.d.ts +111 -0
  95. package/dist/overlays.d.ts.map +1 -0
  96. package/dist/overlays.js +421 -0
  97. package/dist/overlays.js.map +1 -0
  98. package/dist/provider.d.ts +53 -0
  99. package/dist/provider.d.ts.map +1 -0
  100. package/dist/provider.js +114 -0
  101. package/dist/provider.js.map +1 -0
  102. package/dist/styles.css +971 -0
  103. package/package.json +71 -3
  104. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/illustrations/types.ts"],"names":[],"mappings":""}
@@ -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"}
@@ -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"}