@setsquare/ui 0.1.0 → 0.2.1

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 (125) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +36 -1
  3. package/dist/index.d.ts +20 -13
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +2 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/labels.d.ts +11 -0
  8. package/dist/lib/labels.d.ts.map +1 -0
  9. package/dist/lib/labels.js +15 -0
  10. package/dist/lib/labels.js.map +1 -0
  11. package/dist/shell/app-header.d.ts +4 -1
  12. package/dist/shell/app-header.d.ts.map +1 -1
  13. package/dist/shell/app-header.js +2 -2
  14. package/dist/shell/app-header.js.map +1 -1
  15. package/dist/shell/dashboard-shell.d.ts +1 -1
  16. package/dist/shell/dashboard-shell.d.ts.map +1 -1
  17. package/dist/shell/dashboard-shell.js +10 -14
  18. package/dist/shell/dashboard-shell.js.map +1 -1
  19. package/dist/shell/right-panel.d.ts +7 -1
  20. package/dist/shell/right-panel.d.ts.map +1 -1
  21. package/dist/shell/right-panel.js +6 -3
  22. package/dist/shell/right-panel.js.map +1 -1
  23. package/dist/shell/sidebar.d.ts +16 -2
  24. package/dist/shell/sidebar.d.ts.map +1 -1
  25. package/dist/shell/sidebar.js +17 -8
  26. package/dist/shell/sidebar.js.map +1 -1
  27. package/dist/styles/theme.css +2 -1
  28. package/dist/ui/alert.d.ts +16 -2
  29. package/dist/ui/alert.d.ts.map +1 -1
  30. package/dist/ui/alert.js +11 -4
  31. package/dist/ui/alert.js.map +1 -1
  32. package/dist/ui/calendar.d.ts +9 -2
  33. package/dist/ui/calendar.d.ts.map +1 -1
  34. package/dist/ui/calendar.js +6 -6
  35. package/dist/ui/calendar.js.map +1 -1
  36. package/dist/ui/checkbox.d.ts +5 -2
  37. package/dist/ui/checkbox.d.ts.map +1 -1
  38. package/dist/ui/checkbox.js +4 -4
  39. package/dist/ui/checkbox.js.map +1 -1
  40. package/dist/ui/code-block.d.ts +10 -1
  41. package/dist/ui/code-block.d.ts.map +1 -1
  42. package/dist/ui/code-block.js +6 -3
  43. package/dist/ui/code-block.js.map +1 -1
  44. package/dist/ui/combo-box.d.ts +3 -2
  45. package/dist/ui/combo-box.d.ts.map +1 -1
  46. package/dist/ui/combo-box.js +2 -2
  47. package/dist/ui/combo-box.js.map +1 -1
  48. package/dist/ui/copy-button.d.ts +12 -1
  49. package/dist/ui/copy-button.d.ts.map +1 -1
  50. package/dist/ui/copy-button.js +18 -5
  51. package/dist/ui/copy-button.js.map +1 -1
  52. package/dist/ui/date-field.d.ts +22 -5
  53. package/dist/ui/date-field.d.ts.map +1 -1
  54. package/dist/ui/date-field.js +23 -17
  55. package/dist/ui/date-field.js.map +1 -1
  56. package/dist/ui/dialog.d.ts +19 -2
  57. package/dist/ui/dialog.d.ts.map +1 -1
  58. package/dist/ui/dialog.js +14 -8
  59. package/dist/ui/dialog.js.map +1 -1
  60. package/dist/ui/error-state.d.ts +17 -1
  61. package/dist/ui/error-state.d.ts.map +1 -1
  62. package/dist/ui/error-state.js +15 -5
  63. package/dist/ui/error-state.js.map +1 -1
  64. package/dist/ui/field.d.ts +8 -1
  65. package/dist/ui/field.d.ts.map +1 -1
  66. package/dist/ui/field.js +2 -2
  67. package/dist/ui/field.js.map +1 -1
  68. package/dist/ui/file-upload.d.ts +33 -1
  69. package/dist/ui/file-upload.d.ts.map +1 -1
  70. package/dist/ui/file-upload.js +43 -15
  71. package/dist/ui/file-upload.js.map +1 -1
  72. package/dist/ui/form.d.ts +3 -2
  73. package/dist/ui/form.d.ts.map +1 -1
  74. package/dist/ui/form.js +17 -9
  75. package/dist/ui/form.js.map +1 -1
  76. package/dist/ui/link-card.d.ts +6 -4
  77. package/dist/ui/link-card.d.ts.map +1 -1
  78. package/dist/ui/link-card.js +4 -5
  79. package/dist/ui/link-card.js.map +1 -1
  80. package/dist/ui/number-field.d.ts +3 -2
  81. package/dist/ui/number-field.d.ts.map +1 -1
  82. package/dist/ui/number-field.js +2 -2
  83. package/dist/ui/number-field.js.map +1 -1
  84. package/dist/ui/pagination.d.ts +30 -0
  85. package/dist/ui/pagination.d.ts.map +1 -0
  86. package/dist/ui/pagination.js +48 -0
  87. package/dist/ui/pagination.js.map +1 -0
  88. package/dist/ui/radio-group.d.ts +3 -1
  89. package/dist/ui/radio-group.d.ts.map +1 -1
  90. package/dist/ui/radio-group.js +2 -2
  91. package/dist/ui/radio-group.js.map +1 -1
  92. package/dist/ui/search.d.ts +23 -5
  93. package/dist/ui/search.d.ts.map +1 -1
  94. package/dist/ui/search.js +24 -10
  95. package/dist/ui/search.js.map +1 -1
  96. package/dist/ui/select.d.ts +3 -2
  97. package/dist/ui/select.d.ts.map +1 -1
  98. package/dist/ui/select.js +2 -2
  99. package/dist/ui/select.js.map +1 -1
  100. package/dist/ui/selection-bar.d.ts +14 -1
  101. package/dist/ui/selection-bar.d.ts.map +1 -1
  102. package/dist/ui/selection-bar.js +15 -6
  103. package/dist/ui/selection-bar.js.map +1 -1
  104. package/dist/ui/sheet.d.ts +6 -1
  105. package/dist/ui/sheet.d.ts.map +1 -1
  106. package/dist/ui/sheet.js +2 -2
  107. package/dist/ui/sheet.js.map +1 -1
  108. package/dist/ui/tabs.d.ts +43 -0
  109. package/dist/ui/tabs.d.ts.map +1 -0
  110. package/dist/ui/tabs.js +37 -0
  111. package/dist/ui/tabs.js.map +1 -0
  112. package/dist/ui/text-field.d.ts +4 -3
  113. package/dist/ui/text-field.d.ts.map +1 -1
  114. package/dist/ui/text-field.js +4 -4
  115. package/dist/ui/text-field.js.map +1 -1
  116. package/dist/ui/theme-switcher.d.ts +14 -1
  117. package/dist/ui/theme-switcher.d.ts.map +1 -1
  118. package/dist/ui/theme-switcher.js +15 -4
  119. package/dist/ui/theme-switcher.js.map +1 -1
  120. package/dist/ui/toast.d.ts +7 -1
  121. package/dist/ui/toast.d.ts.map +1 -1
  122. package/dist/ui/toast.js +2 -11
  123. package/dist/ui/toast.js.map +1 -1
  124. package/package.json +21 -20
  125. package/templates/next/prefetch-on-intent.ts +10 -3
@@ -1,9 +1,10 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { createContext, useContext, useId } from 'react';
4
4
  import { Button as RACButton, Link } from 'react-aria-components';
5
5
  import { ChevronsUpDown, Menu as MenuIcon, PanelLeft } from 'lucide-react';
6
6
  import { cn } from '../lib/cn.js';
7
+ import { fill, withLabels } from '../lib/labels.js';
7
8
  import { IconButton } from '../ui/icon-button.js';
8
9
  import { renderIcon } from '../ui/icon.js';
9
10
  import { Menu, MenuTrigger, Popover } from '../ui/menu.js';
@@ -13,14 +14,16 @@ import { useShell } from './dashboard-shell.js';
13
14
  const SidebarCollapsedContext = createContext(false);
14
15
  /** True when the sidebar shows icons only (never inside the mobile Sheet). */
15
16
  export const useSidebarCollapsed = () => useContext(SidebarCollapsedContext);
17
+ const sidebarLabels = { navigation: '{product} navigation' };
16
18
  /**
17
19
  * The full-height sidebar. Expanded, collapsed to icons (labels stay in the accessibility tree
18
20
  * and show as tooltips), or — on phones — a Sheet opened from the header.
19
21
  */
20
- export function Sidebar({ children, label = 'Primary', className }) {
22
+ export function Sidebar({ children, label = 'Primary', labels: given, className }) {
21
23
  const { size, sidebarCollapsed, mobileNavOpen, setMobileNavOpen, productName, isSizeForced } = useShell();
24
+ const labels = withLabels(sidebarLabels, given);
22
25
  if (size === 'mobile') {
23
- return (_jsx(Sheet, { side: "left", isOpen: mobileNavOpen, onOpenChange: setMobileNavOpen, "aria-label": `${productName} navigation`, children: _jsx(SidebarCollapsedContext.Provider, { value: false, children: _jsx("nav", { "aria-label": label, className: "flex h-full min-h-0 flex-col text-sidebar-foreground", children: children }) }) }));
26
+ return (_jsx(Sheet, { side: "left", isOpen: mobileNavOpen, onOpenChange: setMobileNavOpen, "aria-label": fill(labels.navigation, { product: productName }), children: _jsx(SidebarCollapsedContext.Provider, { value: false, children: _jsx("nav", { "aria-label": label, className: "flex h-full min-h-0 flex-col text-sidebar-foreground", children: children }) }) }));
24
27
  }
25
28
  return (_jsx(SidebarCollapsedContext.Provider, { value: sidebarCollapsed, children: _jsx("nav", { "aria-label": label, "data-collapsed": sidebarCollapsed || undefined, style: { viewTransitionName: 'shell-sidebar' }, className: cn('group/sidebar flex h-full min-h-0 w-sidebar shrink-0 flex-col text-sidebar-foreground', 'transition-[width] duration-(--duration-panel) ease-(--ease-standard) motion-reduce:transition-none aaa:transition-none', 'data-collapsed:w-sidebar-collapsed', !isSizeForced && '@max-[48rem]/shell:hidden', className), children: children }) }));
26
29
  }
@@ -53,16 +56,22 @@ export function SidebarItem({ href, icon, children, isCurrent, count, onPress })
53
56
  /** A sidebar row that opens a menu: the workspace switcher at the top, the account menu at the foot. */
54
57
  export function SidebarSwitcher({ leading, title, subtitle, menuLabel, children, onAction, selectedKey, placement = 'bottom start', }) {
55
58
  const collapsed = useSidebarCollapsed();
56
- const name = [title, subtitle, menuLabel].filter(Boolean).join(', ');
57
- const button = (_jsx(RACButton, { "aria-label": name, className: cn(
59
+ // Named by its content, not an aria-label: the title and subtitle as shown, then the menu's purpose, so the
60
+ // name always contains the visible text (2.5.3). The commas are for the name; the layout already separates them.
61
+ const button = (_jsx(RACButton, { className: cn(
58
62
  // Layer 1: the target. Collapsed, it keeps at least --target-min across the rail.
59
- 'group/switcher flex min-h-target w-full min-w-target cursor-pointer items-center text-left outline-none', 'group-data-collapsed/sidebar:justify-center'), children: _jsxs("span", { className: cn('flex min-h-[calc(var(--nav-item-height)+12px)] w-full min-w-0 items-center gap-3 rounded-md px-2', 'group-data-hovered/switcher:bg-sidebar-accent group-data-pressed/switcher:bg-sidebar-accent group-data-focus-visible/switcher:focus-ring', 'group-data-collapsed/sidebar:w-nav-item group-data-collapsed/sidebar:justify-center group-data-collapsed/sidebar:px-0'), children: [leading, _jsxs("span", { className: "flex min-w-0 flex-1 flex-col group-data-collapsed/sidebar:sr-only", children: [_jsx("span", { className: "truncate text-sm leading-5 font-bold", children: title }), subtitle && (_jsx("span", { className: "truncate text-[13px] leading-5 text-muted-foreground", children: subtitle }))] }), _jsx(ChevronsUpDown, { "aria-hidden": "true", className: "size-4 shrink-0 text-muted-foreground group-data-collapsed/sidebar:hidden" })] }) }));
63
+ 'group/switcher flex min-h-target w-full min-w-target cursor-pointer items-center text-left outline-none', 'group-data-collapsed/sidebar:justify-center'), children: _jsxs("span", { className: cn('flex min-h-[calc(var(--nav-item-height)+12px)] w-full min-w-0 items-center gap-3 rounded-md px-2', 'group-data-hovered/switcher:bg-sidebar-accent group-data-pressed/switcher:bg-sidebar-accent group-data-focus-visible/switcher:focus-ring', 'group-data-collapsed/sidebar:w-nav-item group-data-collapsed/sidebar:justify-center group-data-collapsed/sidebar:px-0'), children: [leading, _jsxs("span", { className: "flex min-w-0 flex-1 flex-col group-data-collapsed/sidebar:sr-only", children: [_jsx("span", { className: "truncate text-sm leading-5 font-bold", children: title }), subtitle && (_jsxs(_Fragment, { children: [_jsx("span", { className: "sr-only", children: ", " }), _jsx("span", { className: "truncate text-[13px] leading-5 text-muted-foreground", children: subtitle })] })), _jsxs("span", { className: "sr-only", children: [", ", menuLabel] })] }), _jsx(ChevronsUpDown, { "aria-hidden": "true", className: "size-4 shrink-0 text-muted-foreground group-data-collapsed/sidebar:hidden" })] }) }));
60
64
  return (_jsxs(MenuTrigger, { children: [collapsed ? (_jsxs(TooltipTrigger, { delay: 300, children: [button, _jsx(Tooltip, { placement: "right", children: title })] })) : (button), _jsx(Popover, { placement: collapsed ? 'right top' : placement, className: "min-w-64", children: _jsx(Menu, { onAction: onAction, selectionMode: selectedKey != null ? 'single' : undefined, selectedKeys: selectedKey != null ? [selectedKey] : undefined, children: children }) })] }));
61
65
  }
66
+ const sidebarTriggerLabels = {
67
+ openNavigation: 'Open navigation',
68
+ toggleSidebar: 'Toggle sidebar',
69
+ };
62
70
  /** Collapses the sidebar to icons, or opens it as a Sheet on phones. */
63
- export function SidebarTrigger({ className }) {
71
+ export function SidebarTrigger({ labels: given, className, }) {
64
72
  const { size, sidebarCollapsed, toggleSidebar, mobileNavOpen, setMobileNavOpen } = useShell();
65
73
  const mobile = size === 'mobile';
66
- return (_jsx(IconButton, { className: className, label: mobile ? 'Open navigation' : 'Toggle sidebar', icon: mobile ? MenuIcon : PanelLeft, "aria-expanded": mobile ? mobileNavOpen : !sidebarCollapsed, "aria-haspopup": mobile ? 'dialog' : undefined, onPress: () => (mobile ? setMobileNavOpen(true) : toggleSidebar()) }));
74
+ const labels = withLabels(sidebarTriggerLabels, given);
75
+ return (_jsx(IconButton, { className: className, label: mobile ? labels.openNavigation : labels.toggleSidebar, icon: mobile ? MenuIcon : PanelLeft, "aria-expanded": mobile ? mobileNavOpen : !sidebarCollapsed, "aria-haspopup": mobile ? 'dialog' : undefined, onPress: () => (mobile ? setMobileNavOpen(true) : toggleSidebar()) }));
67
76
  }
68
77
  //# sourceMappingURL=sidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../src/shell/sidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../src/shell/sidebar.tsx"],"names":[],"mappings":"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"}
@@ -455,7 +455,8 @@
455
455
 
456
456
  @media (prefers-reduced-motion: reduce) {
457
457
  [data-overlay], [data-sheet] { animation-duration: 0s !important; }
458
- ::view-transition-old(*), ::view-transition-new(*), ::view-transition-group(*) {
458
+ /* The image pair too: the page-exit cover (setsquare-cover) is animated there. */
459
+ ::view-transition-old(*), ::view-transition-new(*), ::view-transition-group(*), ::view-transition-image-pair(*) {
459
460
  animation-duration: 0s !important;
460
461
  animation-delay: 0s !important;
461
462
  }
@@ -1,6 +1,11 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { type IconProp } from './icon.js';
3
3
  export type AlertTone = 'info' | 'success' | 'warning' | 'danger';
4
+ /** An Alert's words, for the `labels` prop. */
5
+ export interface AlertLabels {
6
+ /** The dismiss button, when there is `onDismiss`. */
7
+ dismiss: string;
8
+ }
4
9
  export interface AlertProps {
5
10
  tone?: AlertTone;
6
11
  title?: ReactNode;
@@ -18,18 +23,27 @@ export interface AlertProps {
18
23
  layout?: 'inline' | 'banner';
19
24
  icon?: IconProp;
20
25
  titleAs?: 'p' | 'h2' | 'h3';
26
+ labels?: Partial<AlertLabels>;
21
27
  className?: string;
22
28
  }
23
29
  /** A message about the page or task: tone ground, icon and words — never colour alone. Gains a tone border at AAA. */
24
- export declare function Alert({ tone, title, children, actions, onDismiss, live, layout, icon, titleAs: Title, className, }: AlertProps): import("react").JSX.Element;
30
+ export declare function Alert({ tone, title, children, actions, onDismiss, live, layout, icon, titleAs: Title, labels, className, }: AlertProps): import("react").JSX.Element;
25
31
  /** true while the browser reports a connection. */
26
32
  export declare function useOnline(): boolean;
33
+ /** OfflineAlert's words, for the `labels` prop. */
34
+ export interface OfflineAlertLabels {
35
+ offline: string;
36
+ /** What happens to changes made while offline. */
37
+ offlineDetail: string;
38
+ backOnline: string;
39
+ }
27
40
  /**
28
41
  * A banner that appears when the connection drops and says so again when it returns.
29
42
  * The live region is always in the page, so both changes are announced.
30
43
  */
31
- export declare function OfflineAlert({ forceOffline, className, }: {
44
+ export declare function OfflineAlert({ forceOffline, labels: given, className, }: {
32
45
  forceOffline?: boolean;
46
+ labels?: Partial<OfflineAlertLabels>;
33
47
  className?: string;
34
48
  }): import("react").JSX.Element;
35
49
  //# sourceMappingURL=alert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/ui/alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1F,OAAO,EAAkC,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1E,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAiBlE,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,uFAAuF;IACvF,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sHAAsH;AACtH,wBAAgB,KAAK,CAAC,EACpB,IAAa,EACb,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,IAAI,EACJ,MAAiB,EACjB,IAAI,EACJ,OAAO,EAAE,KAAW,EACpB,SAAS,GACV,EAAE,UAAU,+BAsCZ;AAUD,mDAAmD;AACnD,wBAAgB,SAAS,IAAI,OAAO,CAMnC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,YAAY,EACZ,SAAS,GACV,EAAE;IACD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAwBA"}
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/ui/alert.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAM1F,OAAO,EAAkC,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1E,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAiBlE,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC9B,uFAAuF;IACvF,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sHAAsH;AACtH,wBAAgB,KAAK,CAAC,EACpB,IAAa,EACb,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,EACT,IAAI,EACJ,MAAiB,EACjB,IAAI,EACJ,OAAO,EAAE,KAAW,EACpB,MAAM,EACN,SAAS,GACV,EAAE,UAAU,+BAsCZ;AAUD,mDAAmD;AACnD,wBAAgB,SAAS,IAAI,OAAO,CAMnC;AAED,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AASD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,YAAY,EACZ,MAAM,EAAE,KAAK,EACb,SAAS,GACV,EAAE;IACD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAwBA"}
package/dist/ui/alert.js CHANGED
@@ -3,6 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useState, useSyncExternalStore } from 'react';
4
4
  import { CircleAlert, CircleCheck, Info, TriangleAlert, WifiOff, X } from 'lucide-react';
5
5
  import { cn } from '../lib/cn.js';
6
+ import { withLabels } from '../lib/labels.js';
6
7
  import { focusAfter } from '../lib/tokens.js';
7
8
  import { IconButton } from './icon-button.js';
8
9
  import { renderIcon } from './icon.js';
@@ -21,11 +22,11 @@ const tones = {
21
22
  },
22
23
  };
23
24
  /** A message about the page or task: tone ground, icon and words — never colour alone. Gains a tone border at AAA. */
24
- export function Alert({ tone = 'info', title, children, actions, onDismiss, live, layout = 'inline', icon, titleAs: Title = 'p', className, }) {
25
+ export function Alert({ tone = 'info', title, children, actions, onDismiss, live, layout = 'inline', icon, titleAs: Title = 'p', labels, className, }) {
25
26
  const ref = useRef(null);
26
27
  const t = tones[tone];
27
28
  const shown = icon ?? t.Icon;
28
- return (_jsxs("div", { ref: ref, role: live === 'assertive' ? 'alert' : live === 'polite' ? 'status' : undefined, className: cn('flex items-start gap-3 border border-transparent text-sm leading-5 text-foreground', layout === 'banner' ? 'border-x-0 border-t-0 px-4 py-3' : 'rounded-lg p-4', t.box, className), children: [renderIcon(shown, cn('mt-px size-5 shrink-0', t.icon)), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [title && _jsx(Title, { className: "font-semibold", children: title }), children && _jsx("div", { className: "max-w-(--measure)", children: children }), actions && (_jsx("div", { className: "mt-2 flex flex-wrap items-center gap-(--control-gap)", children: actions }))] }), onDismiss && (_jsx(IconButton, { label: "Dismiss", icon: X, visualSize: "icon-sm", tooltip: false, className: "-mt-1 -mr-1 items-start justify-end", onPress: () => {
29
+ return (_jsxs("div", { ref: ref, role: live === 'assertive' ? 'alert' : live === 'polite' ? 'status' : undefined, className: cn('flex items-start gap-3 border border-transparent text-sm leading-5 text-foreground', layout === 'banner' ? 'border-x-0 border-t-0 px-4 py-3' : 'rounded-lg p-4', t.box, className), children: [renderIcon(shown, cn('mt-px size-5 shrink-0', t.icon)), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [title && _jsx(Title, { className: "font-semibold", children: title }), children && _jsx("div", { className: "max-w-(--measure)", children: children }), actions && (_jsx("div", { className: "mt-2 flex flex-wrap items-center gap-(--control-gap)", children: actions }))] }), onDismiss && (_jsx(IconButton, { label: labels?.dismiss ?? 'Dismiss', icon: X, visualSize: "icon-sm", tooltip: false, className: "-mt-1 -mr-1 items-start justify-end", onPress: () => {
29
30
  focusAfter(ref.current);
30
31
  onDismiss();
31
32
  } }))] }));
@@ -42,11 +43,17 @@ function subscribeOnline(cb) {
42
43
  export function useOnline() {
43
44
  return useSyncExternalStore(subscribeOnline, () => navigator.onLine, () => true);
44
45
  }
46
+ const offlineAlertLabels = {
47
+ offline: "You're offline",
48
+ offlineDetail: "Changes you make now won't be saved. Keep this page open and we'll try again when you're back online.",
49
+ backOnline: "You're back online",
50
+ };
45
51
  /**
46
52
  * A banner that appears when the connection drops and says so again when it returns.
47
53
  * The live region is always in the page, so both changes are announced.
48
54
  */
49
- export function OfflineAlert({ forceOffline, className, }) {
55
+ export function OfflineAlert({ forceOffline, labels: given, className, }) {
56
+ const labels = withLabels(offlineAlertLabels, given);
50
57
  const online = useOnline() && !forceOffline;
51
58
  const [back, setBack] = useState(false);
52
59
  const wasOffline = useRef(!online);
@@ -60,6 +67,6 @@ export function OfflineAlert({ forceOffline, className, }) {
60
67
  return () => clearTimeout(t);
61
68
  }
62
69
  }, [online]);
63
- return (_jsxs("div", { role: "status", className: className, children: [!online && (_jsx(Alert, { tone: "warning", layout: "banner", icon: WifiOff, title: "You're offline", children: "Changes you make now won't be saved. Keep this page open and we'll try again when you're back online." })), online && back && _jsx(Alert, { tone: "success", layout: "banner", title: "You're back online" })] }));
70
+ return (_jsxs("div", { role: "status", className: className, children: [!online && (_jsx(Alert, { tone: "warning", layout: "banner", icon: WifiOff, title: labels.offline, children: labels.offlineDetail })), online && back && _jsx(Alert, { tone: "success", layout: "banner", title: labels.backOnline })] }));
64
71
  }
65
72
  //# sourceMappingURL=alert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../src/ui/alert.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../src/ui/alert.tsx"],"names":[],"mappings":"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"}
@@ -1,19 +1,26 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import { type CalendarProps as RACCalendarProps, type DateValue, type RangeCalendarProps as RACRangeCalendarProps } from 'react-aria-components';
3
+ /** A calendar's words, for the `labels` prop (also on `DatePicker` and `DateRangePicker`). */
4
+ export interface CalendarLabels {
5
+ previousMonth: string;
6
+ nextMonth: string;
7
+ }
3
8
  export interface CalendarProps<T extends DateValue> extends Omit<RACCalendarProps<T>, 'className' | 'children'> {
4
9
  /** Shown under the grid when the calendar is invalid. */
5
10
  errorMessage?: ReactNode;
11
+ labels?: Partial<CalendarLabels>;
6
12
  className?: string;
7
13
  }
8
14
  /**
9
15
  * A month grid for choosing one date. Arrow keys move by day, Page Up/Down by month, Home/End to the week's
10
16
  * ends; Enter selects. Inside a DatePicker this is supplied for you — use it alone only for an inline picker.
11
17
  */
12
- export declare function Calendar<T extends DateValue>({ errorMessage, className, ...props }: CalendarProps<T>): import("react").JSX.Element;
18
+ export declare function Calendar<T extends DateValue>({ errorMessage, labels, className, ...props }: CalendarProps<T>): import("react").JSX.Element;
13
19
  export interface RangeCalendarProps<T extends DateValue> extends Omit<RACRangeCalendarProps<T>, 'className' | 'children'> {
14
20
  errorMessage?: ReactNode;
21
+ labels?: Partial<CalendarLabels>;
15
22
  className?: string;
16
23
  }
17
24
  /** A month grid for choosing a start and an end date: select one, then the other. */
18
- export declare function RangeCalendar<T extends DateValue>({ errorMessage, className, ...props }: RangeCalendarProps<T>): import("react").JSX.Element;
25
+ export declare function RangeCalendar<T extends DateValue>({ errorMessage, labels, className, ...props }: RangeCalendarProps<T>): import("react").JSX.Element;
19
26
  //# sourceMappingURL=calendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/ui/calendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAUL,KAAK,aAAa,IAAI,gBAAgB,EACtC,KAAK,SAAS,EACd,KAAK,kBAAkB,IAAI,qBAAqB,EACjD,MAAM,uBAAuB,CAAC;AA8G/B,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,IAAI,CAC9D,gBAAgB,CAAC,CAAC,CAAC,EACnB,WAAW,GAAG,UAAU,CACzB;IACC,yDAAyD;IACzD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,EAC5C,YAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,CAAC,CAAC,+BAYlB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,IAAI,CACnE,qBAAqB,CAAC,CAAC,CAAC,EACxB,WAAW,GAAG,UAAU,CACzB;IACC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,EACjD,YAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,CAAC,CAAC,+BAYvB"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/ui/calendar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAUL,KAAK,aAAa,IAAI,gBAAgB,EACtC,KAAK,SAAS,EACd,KAAK,kBAAkB,IAAI,qBAAqB,EACjD,MAAM,uBAAuB,CAAC;AAW/B,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqGD,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,IAAI,CAC9D,gBAAgB,CAAC,CAAC,CAAC,EACnB,WAAW,GAAG,UAAU,CACzB;IACC,yDAAyD;IACzD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,EAC5C,YAAY,EACZ,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,CAAC,CAAC,+BAYlB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,IAAI,CACnE,qBAAqB,CAAC,CAAC,CAAC,EACxB,WAAW,GAAG,UAAU,CACzB;IACC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,EACjD,YAAY,EACZ,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,CAAC,CAAC,+BAYvB"}
@@ -9,8 +9,8 @@ import { IconButton } from './icon-button.js';
9
9
  * and they must be positioned against the calendar, not against whatever scrolls around it.
10
10
  */
11
11
  const calendarRoot = 'relative flex w-fit max-w-full flex-col gap-3 text-sm text-foreground';
12
- function CalendarHeader() {
13
- return (_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(IconButton, { slot: "previous", label: "Previous month", icon: ChevronLeft, visualSize: "icon-sm", tooltip: false }), _jsx(Heading, { className: "text-sm leading-5 font-semibold" }), _jsx(IconButton, { slot: "next", label: "Next month", icon: ChevronRight, visualSize: "icon-sm", tooltip: false })] }));
12
+ function CalendarHeader({ labels }) {
13
+ return (_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(IconButton, { slot: "previous", label: labels?.previousMonth ?? 'Previous month', icon: ChevronLeft, visualSize: "icon-sm", tooltip: false }), _jsx(Heading, { className: "text-sm leading-5 font-semibold" }), _jsx(IconButton, { slot: "next", label: labels?.nextMonth ?? 'Next month', icon: ChevronRight, visualSize: "icon-sm", tooltip: false })] }));
14
14
  }
15
15
  /**
16
16
  * Days in three layers. The cell is the target (Layer 1): --target-min square, or the painted day if that is
@@ -42,11 +42,11 @@ function Grid({ range }) {
42
42
  * A month grid for choosing one date. Arrow keys move by day, Page Up/Down by month, Home/End to the week's
43
43
  * ends; Enter selects. Inside a DatePicker this is supplied for you — use it alone only for an inline picker.
44
44
  */
45
- export function Calendar({ errorMessage, className, ...props }) {
46
- return (_jsxs(RACCalendar, { ...props, className: cn(calendarRoot, className), children: [_jsx(CalendarHeader, {}), _jsx(Grid, {}), errorMessage && (_jsx(Text, { slot: "errorMessage", className: "text-[13px] leading-5 font-semibold text-destructive", children: errorMessage }))] }));
45
+ export function Calendar({ errorMessage, labels, className, ...props }) {
46
+ return (_jsxs(RACCalendar, { ...props, className: cn(calendarRoot, className), children: [_jsx(CalendarHeader, { labels: labels }), _jsx(Grid, {}), errorMessage && (_jsx(Text, { slot: "errorMessage", className: "text-[13px] leading-5 font-semibold text-destructive", children: errorMessage }))] }));
47
47
  }
48
48
  /** A month grid for choosing a start and an end date: select one, then the other. */
49
- export function RangeCalendar({ errorMessage, className, ...props }) {
50
- return (_jsxs(RACRangeCalendar, { ...props, className: cn(calendarRoot, className), children: [_jsx(CalendarHeader, {}), _jsx(Grid, { range: true }), errorMessage && (_jsx(Text, { slot: "errorMessage", className: "text-[13px] leading-5 font-semibold text-destructive", children: errorMessage }))] }));
49
+ export function RangeCalendar({ errorMessage, labels, className, ...props }) {
50
+ return (_jsxs(RACRangeCalendar, { ...props, className: cn(calendarRoot, className), children: [_jsx(CalendarHeader, { labels: labels }), _jsx(Grid, { range: true }), errorMessage && (_jsx(Text, { slot: "errorMessage", className: "text-[13px] leading-5 font-semibold text-destructive", children: errorMessage }))] }));
51
51
  }
52
52
  //# sourceMappingURL=calendar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/ui/calendar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/ui/calendar.tsx"],"names":[],"mappings":"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"}
@@ -1,18 +1,20 @@
1
1
  import { type ReactNode } from 'react';
2
2
  import { type CheckboxGroupProps as RACCheckboxGroupProps, type CheckboxProps as RACCheckboxProps } from 'react-aria-components';
3
+ import { type FieldLabels } from './field.js';
3
4
  export interface CheckboxProps extends Omit<RACCheckboxProps, 'className' | 'children' | 'validate'> {
4
5
  children: ReactNode;
5
6
  /** Second line under the label. */
6
7
  description?: ReactNode;
7
8
  /** For a single required checkbox ("I accept the terms"): what to do. */
8
9
  requiredMessage?: string;
10
+ labels?: Partial<FieldLabels>;
9
11
  className?: string;
10
12
  }
11
13
  /**
12
14
  * A yes/no choice submitted with the form (settings that apply at once are a Switch).
13
15
  * The whole row — box and label — is the target, at least --target-min tall.
14
16
  */
15
- export declare function Checkbox({ children, description, requiredMessage, className, ...props }: CheckboxProps): import("react").JSX.Element;
17
+ export declare function Checkbox({ children, description, requiredMessage, labels, className, ...props }: CheckboxProps): import("react").JSX.Element;
16
18
  export interface CheckboxGroupProps extends Omit<RACCheckboxGroupProps, 'className' | 'children' | 'validate'> {
17
19
  label: string;
18
20
  description?: ReactNode;
@@ -20,10 +22,11 @@ export interface CheckboxGroupProps extends Omit<RACCheckboxGroupProps, 'classNa
20
22
  /** For "choose at least one". */
21
23
  requiredMessage?: string;
22
24
  children: ReactNode;
25
+ labels?: Partial<FieldLabels>;
23
26
  className?: string;
24
27
  }
25
28
  /** A labelled list of checkboxes, read as a group. */
26
- export declare function CheckboxGroup({ label, description, errorMessage, requiredMessage, children, className, ...props }: CheckboxGroupProps): import("react").JSX.Element;
29
+ export declare function CheckboxGroup({ label, description, errorMessage, requiredMessage, children, labels, className, ...props }: CheckboxGroupProps): import("react").JSX.Element;
27
30
  export interface SelectionCheckboxProps extends Omit<RACCheckboxProps, 'className' | 'children' | 'slot'> {
28
31
  className?: string;
29
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/ui/checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAGL,KAAK,kBAAkB,IAAI,qBAAqB,EAChD,KAAK,aAAa,IAAI,gBAAgB,EACvC,MAAM,uBAAuB,CAAC;AAqB/B,MAAM,WAAW,aAAc,SAAQ,IAAI,CACzC,gBAAgB,EAChB,WAAW,GAAG,UAAU,GAAG,UAAU,CACtC;IACC,QAAQ,EAAE,SAAS,CAAC;IACpB,mCAAmC;IACnC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,WAAW,EACX,eAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,aAAa,+BAiEf;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAC9C,qBAAqB,EACrB,WAAW,GAAG,UAAU,GAAG,UAAU,CACtC;IACC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,+BAyBpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAClD,gBAAgB,EAChB,WAAW,GAAG,UAAU,GAAG,MAAM,CAClC;IACC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,+BAiBhF"}
1
+ {"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/ui/checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAGL,KAAK,kBAAkB,IAAI,qBAAqB,EAChD,KAAK,aAAa,IAAI,gBAAgB,EACvC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAWpB,MAAM,WAAW,aAAc,SAAQ,IAAI,CACzC,gBAAgB,EAChB,WAAW,GAAG,UAAU,GAAG,UAAU,CACtC;IACC,QAAQ,EAAE,SAAS,CAAC;IACpB,mCAAmC;IACnC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,WAAW,EACX,eAAe,EACf,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,aAAa,+BAmEf;AAED,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAC9C,qBAAqB,EACrB,WAAW,GAAG,UAAU,GAAG,UAAU,CACtC;IACC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,+BA4BpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAClD,gBAAgB,EAChB,WAAW,GAAG,UAAU,GAAG,MAAM,CAClC;IACC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,+BAiBhF"}
@@ -11,7 +11,7 @@ const boxStyles = cn('grid size-choice shrink-0 place-items-center rounded-sm bo
11
11
  * A yes/no choice submitted with the form (settings that apply at once are a Switch).
12
12
  * The whole row — box and label — is the target, at least --target-min tall.
13
13
  */
14
- export function Checkbox({ children, description, requiredMessage, className, ...props }) {
14
+ export function Checkbox({ children, description, requiredMessage, labels, className, ...props }) {
15
15
  const necessity = useContext(NecessityContext);
16
16
  const autoId = useId();
17
17
  const id = props.id ?? autoId;
@@ -19,13 +19,13 @@ export function Checkbox({ children, description, requiredMessage, className, ..
19
19
  return (_jsx(RACCheckbox, { ...props, id: id, "aria-describedby": [props['aria-describedby'], props.isRequired ? errorId : null].filter(Boolean).join(' ') ||
20
20
  undefined, validate: props.isRequired
21
21
  ? withRequired(true, requiredMessage ?? 'Select this to continue', (v) => !v)
22
- : undefined, className: cn('group/choice relative flex min-h-target cursor-pointer items-start gap-3 py-[calc((var(--target-min)-var(--choice-size))/2)] text-sm leading-5 text-foreground outline-none data-disabled:cursor-not-allowed data-disabled:opacity-60 data-readonly:cursor-default', className), children: ({ isSelected, isIndeterminate, isInvalid }) => (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", className: cn('mt-[calc((20px-var(--choice-size))/2)]', boxStyles), children: isIndeterminate ? _jsx(Minus, {}) : isSelected ? _jsx(Check, {}) : null }), _jsxs("span", { className: "flex min-w-0 flex-col", children: [_jsxs("span", { children: [children, props.isRequired && necessity === 'required' && (_jsxs("span", { "aria-hidden": "true", className: "text-muted-foreground", children: [' ', "(required)"] }))] }), description && (_jsx("span", { className: "text-[13px] text-muted-foreground", children: description })), props.isRequired && isInvalid && (_jsxs("span", { id: errorId, "aria-hidden": "true", className: "mt-1 flex items-start gap-1.5 text-[13px] leading-5 font-semibold text-destructive", children: [_jsx(CircleAlert, { className: "mt-0.5 size-4 shrink-0" }), _jsxs("span", { "data-field-error-text": true, children: [_jsx("span", { className: "sr-only", children: "Error: " }), requiredMessage ?? 'Select this to continue'] })] }))] })] })) }));
22
+ : undefined, className: cn('group/choice relative flex min-h-target cursor-pointer items-start gap-3 py-[calc((var(--target-min)-var(--choice-size))/2)] text-sm leading-5 text-foreground outline-none data-disabled:cursor-not-allowed data-disabled:opacity-60 data-readonly:cursor-default', className), children: ({ isSelected, isIndeterminate, isInvalid }) => (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", className: cn('mt-[calc((20px-var(--choice-size))/2)]', boxStyles), children: isIndeterminate ? _jsx(Minus, {}) : isSelected ? _jsx(Check, {}) : null }), _jsxs("span", { className: "flex min-w-0 flex-col", children: [_jsxs("span", { children: [children, props.isRequired && necessity === 'required' && (_jsxs("span", { "aria-hidden": "true", className: "text-muted-foreground", children: [' ', "(required)"] }))] }), description && (_jsx("span", { className: "text-[13px] text-muted-foreground", children: description })), props.isRequired && isInvalid && (_jsxs("span", { id: errorId, "aria-hidden": "true", className: "mt-1 flex items-start gap-1.5 text-[13px] leading-5 font-semibold text-destructive", children: [_jsx(CircleAlert, { className: "mt-0.5 size-4 shrink-0" }), _jsxs("span", { "data-field-error-text": true, children: [_jsx("span", { className: "sr-only", "data-field-error-prefix": true, children: labels?.errorPrefix ?? 'Error: ' }), requiredMessage ?? 'Select this to continue'] })] }))] })] })) }));
23
23
  }
24
24
  /** A labelled list of checkboxes, read as a group. */
25
- export function CheckboxGroup({ label, description, errorMessage, requiredMessage, children, className, ...props }) {
25
+ export function CheckboxGroup({ label, description, errorMessage, requiredMessage, children, labels, className, ...props }) {
26
26
  return (_jsxs(RACCheckboxGroup, { ...props, validate: props.isRequired
27
27
  ? withRequired(true, requiredMessage ?? 'Select at least one option', (v) => !v?.length)
28
- : undefined, className: cn(fieldStack, className), children: [_jsx(FieldLabel, { elementType: "span", isRequired: props.isRequired, children: label }), description && _jsx(FieldDescription, { children: description }), _jsx(FieldError, { requiredMessage: requiredMessage ?? 'Select at least one option', children: errorMessage }), _jsx("div", { className: "flex flex-col", children: children })] }));
28
+ : undefined, className: cn(fieldStack, className), children: [_jsx(FieldLabel, { elementType: "span", isRequired: props.isRequired, children: label }), description && _jsx(FieldDescription, { children: description }), _jsx(FieldError, { errorPrefix: labels?.errorPrefix, requiredMessage: requiredMessage ?? 'Select at least one option', children: errorMessage }), _jsx("div", { className: "flex flex-col", children: children })] }));
29
29
  }
30
30
  /**
31
31
  * The box alone, for the selection column of a Table or a GridList item. React Aria wires it to the row
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/ui/checkbox.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,UAAU,EAAE,KAAK,EAAkB,MAAM,OAAO,CAAC;AAC1D,OAAO,EACL,QAAQ,IAAI,WAAW,EACvB,aAAa,IAAI,gBAAgB,GAGlC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,wHAAwH;AACxH,MAAM,SAAS,GAAG,EAAE,CAClB,mHAAmH,EACnH,wFAAwF,EACxF,2KAA2K,EAC3K,8GAA8G,EAC9G,sEAAsE,CACvE,CAAC;AAcF;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,WAAW,EACX,eAAe,EACf,SAAS,EACT,GAAG,KAAK,EACM;IACd,MAAM,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC;IAC9B,MAAM,OAAO,GAAG,GAAG,EAAE,QAAQ,CAAC;IAC9B,OAAO,CAGL,KAAC,WAAW,OACN,KAAK,EACT,EAAE,EAAE,EAAE,sBAEJ,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACxF,SAAS,EAEX,QAAQ,EACN,KAAK,CAAC,UAAU;YACd,CAAC,CAAC,YAAY,CAAU,IAAI,EAAE,eAAe,IAAI,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC,CAAC,SAAS,EAEf,SAAS,EAAE,EAAE,CACX,oQAAoQ,EACpQ,SAAS,CACV,YAEA,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAC/C,8BACE,8BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,wCAAwC,EAAE,SAAS,CAAC,YAEjE,eAAe,CAAC,CAAC,CAAC,KAAC,KAAK,KAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAC,KAAK,KAAG,CAAC,CAAC,CAAC,IAAI,GACvD,EACP,gBAAM,SAAS,EAAC,uBAAuB,aACrC,2BACG,QAAQ,EACR,KAAK,CAAC,UAAU,IAAI,SAAS,KAAK,UAAU,IAAI,CAC/C,+BAAkB,MAAM,EAAC,SAAS,EAAC,uBAAuB,aACvD,GAAG,kBAEC,CACR,IACI,EACN,WAAW,IAAI,CACd,eAAM,SAAS,EAAC,mCAAmC,YAAE,WAAW,GAAQ,CACzE,EAEA,KAAK,CAAC,UAAU,IAAI,SAAS,IAAI,CAChC,gBACE,EAAE,EAAE,OAAO,iBACC,MAAM,EAClB,SAAS,EAAC,oFAAoF,aAE9F,KAAC,WAAW,IAAC,SAAS,EAAC,wBAAwB,GAAG,EAClD,0DACE,eAAM,SAAS,EAAC,SAAS,wBAAe,EACvC,eAAe,IAAI,yBAAyB,IACxC,IACF,CACR,IACI,IACN,CACJ,GACW,CACf,CAAC;AACJ,CAAC;AAeD,sDAAsD;AACtD,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACW;IACnB,OAAO,CACL,MAAC,gBAAgB,OACX,KAAK,EACT,QAAQ,EACN,KAAK,CAAC,UAAU;YACd,CAAC,CAAC,YAAY,CACV,IAAI,EACJ,eAAe,IAAI,4BAA4B,EAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAClB;YACH,CAAC,CAAC,SAAS,EAEf,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,aAEpC,KAAC,UAAU,IAAC,WAAW,EAAC,MAAM,EAAC,UAAU,EAAE,KAAK,CAAC,UAAU,YACxD,KAAK,GACK,EACZ,WAAW,IAAI,KAAC,gBAAgB,cAAE,WAAW,GAAoB,EAClE,KAAC,UAAU,IAAC,eAAe,EAAE,eAAe,IAAI,4BAA4B,YACzE,YAAY,GACF,EACb,cAAK,SAAS,EAAC,eAAe,YAAE,QAAQ,GAAO,IAC9B,CACpB,CAAC;AACJ,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA0B;IAC/E,OAAO,CACL,KAAC,WAAW,OACN,KAAK,EACT,IAAI,EAAC,WAAW,EAChB,SAAS,EAAE,EAAE,CACX,iIAAiI,EACjI,SAAS,CACV,YAEA,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CACpC,8BAAkB,MAAM,EAAC,SAAS,EAAE,SAAS,YAC1C,eAAe,CAAC,CAAC,CAAC,KAAC,KAAK,KAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAC,KAAK,KAAG,CAAC,CAAC,CAAC,IAAI,GACvD,CACR,GACW,CACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/ui/checkbox.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type CopyButtonLabels } from './copy-button.js';
1
2
  export interface CodeBlockProps {
2
3
  code: string;
3
4
  /** What it is: a file path (`app/layout.tsx`), a language, or "Terminal". Shown above the code. */
@@ -9,12 +10,20 @@ export interface CodeBlockProps {
9
10
  tone?: 'code' | 'terminal';
10
11
  /** Show the Copy button. Default true. */
11
12
  copy?: boolean;
13
+ labels?: Partial<CodeBlockLabels>;
12
14
  className?: string;
13
15
  }
16
+ /** A code block's words, for the `labels` prop: its copy button's, and what it calls itself unlabelled. */
17
+ export interface CodeBlockLabels extends CopyButtonLabels {
18
+ /** Shown above a `terminal` block with no `label`. */
19
+ terminal: string;
20
+ /** What the copy button says it copies when there is no `label`. */
21
+ code: string;
22
+ }
14
23
  /**
15
24
  * Code with a label and a copy button. Long lines scroll sideways inside a ScrollRegion, never the page; the
16
25
  * region is named by the label and the first line, so two on a page can be told apart. Server-safe: it renders
17
26
  * ScrollRegion and CopyButton, which are client components, and holds no state itself.
18
27
  */
19
- export declare function CodeBlock({ code, label, tone, copy, className }: CodeBlockProps): import("react").JSX.Element;
28
+ export declare function CodeBlock({ code, label, tone, copy, labels, className, }: CodeBlockProps): import("react").JSX.Element;
20
29
  //# sourceMappingURL=code-block.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-block.d.ts","sourceRoot":"","sources":["../../src/ui/code-block.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC3B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAa,EAAE,IAAW,EAAE,SAAS,EAAE,EAAE,cAAc,+BAgD/F"}
1
+ {"version":3,"file":"code-block.d.ts","sourceRoot":"","sources":["../../src/ui/code-block.tsx"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIrE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC3B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2GAA2G;AAC3G,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,IAAa,EACb,IAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE,cAAc,+BAiDhB"}
@@ -1,21 +1,24 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from '../lib/cn.js';
3
3
  import { CopyButton } from './copy-button.js';
4
+ import { withLabels } from '../lib/labels.js';
4
5
  import { ScrollRegion } from './scroll-region.js';
6
+ const codeBlockNames = { terminal: 'Terminal', code: 'code' };
5
7
  const PROMPT = /^\$ /;
6
8
  /**
7
9
  * Code with a label and a copy button. Long lines scroll sideways inside a ScrollRegion, never the page; the
8
10
  * region is named by the label and the first line, so two on a page can be told apart. Server-safe: it renders
9
11
  * ScrollRegion and CopyButton, which are client components, and holds no state itself.
10
12
  */
11
- export function CodeBlock({ code, label, tone = 'code', copy = true, className }) {
13
+ export function CodeBlock({ code, label, tone = 'code', copy = true, labels, className, }) {
14
+ const names = withLabels(codeBlockNames, labels);
12
15
  const lines = code.split('\n');
13
16
  const terminal = tone === 'terminal';
14
17
  const commands = terminal ? lines.filter((l) => PROMPT.test(l)) : [];
15
18
  const copied = commands.length ? commands.map((l) => l.replace(PROMPT, '')).join('\n') : code;
16
- const name = label ?? (terminal ? 'Terminal' : 'code');
19
+ const name = label ?? (terminal ? names.terminal : names.code);
17
20
  const first = (commands[0]?.replace(PROMPT, '') ?? lines[0]).trim().slice(0, 60);
18
- return (_jsxs("figure", { className: cn('relative m-0 min-w-0 overflow-clip rounded-lg border border-border bg-background', className), children: [(label || terminal || copy) && (_jsxs("figcaption", { className: "relative flex items-center justify-between gap-2.5 border-b border-border py-1 pr-1.5 pl-4", children: [_jsx("span", { className: "min-w-0 truncate font-mono text-[13px] leading-5 text-muted-foreground", children: label ?? (terminal ? 'Terminal' : '') }), copy && _jsx(CopyButton, { text: copied, label: name })] })), _jsx(ScrollRegion, { label: first ? `${name}: ${first}` : name, children: _jsx("pre", { className: "m-0 w-max min-w-full p-[18px] text-code", children: _jsx("code", { children: terminal
21
+ return (_jsxs("figure", { className: cn('relative m-0 min-w-0 overflow-clip rounded-lg border border-border bg-background', className), children: [(label || terminal || copy) && (_jsxs("figcaption", { className: "relative flex items-center justify-between gap-2.5 border-b border-border py-1 pr-1.5 pl-4", children: [_jsx("span", { className: "min-w-0 truncate font-mono text-[13px] leading-5 text-muted-foreground", children: label ?? (terminal ? names.terminal : '') }), copy && _jsx(CopyButton, { text: copied, label: name, labels: labels })] })), _jsx(ScrollRegion, { label: first ? `${name}: ${first}` : name, children: _jsx("pre", { className: "m-0 w-max min-w-full p-[18px] text-code", children: _jsx("code", { children: terminal
19
22
  ? lines.map((line, i) => (_jsx("span", { className: "block", children: PROMPT.test(line) ? (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", className: "text-muted-foreground select-none", children: '$ ' }), line.replace(PROMPT, '')] })) : (_jsx("span", { className: "text-muted-foreground", children: line || ' ' })) }, i)))
20
23
  : code }) }) })] }));
21
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"code-block.js","sourceRoot":"","sources":["../../src/ui/code-block.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAgBlD,MAAM,MAAM,GAAG,MAAM,CAAC;AAEtB;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,EAAkB;IAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,KAAK,UAAU,CAAC;IACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjF,OAAO,CACL,kBACE,SAAS,EAAE,EAAE,CACX,kFAAkF,EAClF,SAAS,CACV,aAEA,CAAC,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,CAC9B,sBAAY,SAAS,EAAC,4FAA4F,aAChH,eAAM,SAAS,EAAC,wEAAwE,YACrF,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GACjC,EACN,IAAI,IAAI,KAAC,UAAU,IAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAI,IACvC,CACd,EACD,KAAC,YAAY,IAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,YAErD,cAAK,SAAS,EAAC,yCAAyC,YACtD,yBACG,QAAQ;4BACP,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAErB,eAAc,SAAS,EAAC,OAAO,YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACnB,8BACE,8BAAkB,MAAM,EAAC,SAAS,EAAC,mCAAmC,YACnE,IAAI,GACA,EACN,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IACxB,CACJ,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,uBAAuB,YAAE,IAAI,IAAI,GAAG,GAAQ,CAC7D,IAVQ,CAAC,CAWL,CACR,CAAC;4BACJ,CAAC,CAAC,IAAI,GACH,GACH,GACO,IACR,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"code-block.js","sourceRoot":"","sources":["../../src/ui/code-block.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import { type ComboBoxProps as RACComboBoxProps, type Key } from 'react-aria-components';
3
- import { type FieldWidth } from './field.js';
3
+ import { type FieldWidth, type FieldLabels } from './field.js';
4
4
  export interface ComboBoxProps<T extends object> extends Omit<RACComboBoxProps<T>, 'className' | 'children' | 'validate'> {
5
5
  label: string;
6
6
  description?: ReactNode;
@@ -10,8 +10,9 @@ export interface ComboBoxProps<T extends object> extends Omit<RACComboBoxProps<T
10
10
  placeholder?: string;
11
11
  children: ReactNode | ((item: T) => ReactNode);
12
12
  width?: FieldWidth;
13
+ labels?: Partial<FieldLabels>;
13
14
  className?: string;
14
15
  }
15
16
  /** Type to filter a long list, then choose (people, countries, projects). The list opens as you type or from the button. */
16
- export declare function ComboBox<T extends object>({ label, description, errorMessage, requiredMessage, validate, placeholder, children, width, className, ...props }: ComboBoxProps<T>): import("react").JSX.Element;
17
+ export declare function ComboBox<T extends object>({ label, description, errorMessage, requiredMessage, validate, placeholder, children, width, labels, className, ...props }: ComboBoxProps<T>): import("react").JSX.Element;
17
18
  //# sourceMappingURL=combo-box.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"combo-box.d.ts","sourceRoot":"","sources":["../../src/ui/combo-box.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAGL,KAAK,aAAa,IAAI,gBAAgB,EACtC,KAAK,GAAG,EACT,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAUL,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAC3D,gBAAgB,CAAC,CAAC,CAAC,EACnB,WAAW,GAAG,UAAU,GAAG,UAAU,CACtC;IACC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4HAA4H;AAC5H,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,EACzC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,CAAC,CAAC,+BA4ClB"}
1
+ {"version":3,"file":"combo-box.d.ts","sourceRoot":"","sources":["../../src/ui/combo-box.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAGL,KAAK,aAAa,IAAI,gBAAgB,EACtC,KAAK,GAAG,EACT,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAUL,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAC3D,gBAAgB,CAAC,CAAC,CAAC,EACnB,WAAW,GAAG,UAAU,GAAG,UAAU,CACtC;IACC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4HAA4H;AAC5H,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,EACzC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAY,EACZ,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,aAAa,CAAC,CAAC,CAAC,+BA+ClB"}
@@ -8,7 +8,7 @@ import { FieldDescription, FieldError, FieldLabel, fieldBox, fieldInput, fieldSt
8
8
  import { ListBox } from './list-box.js';
9
9
  import { Popover } from './menu.js';
10
10
  /** Type to filter a long list, then choose (people, countries, projects). The list opens as you type or from the button. */
11
- export function ComboBox({ label, description, errorMessage, requiredMessage, validate, placeholder, children, width = 'md', className, ...props }) {
12
- return (_jsxs(RACComboBox, { ...props, validate: withRequired(props.isRequired, requiredMessage ?? `Choose ${lcFirst(label)}`, (v) => v == null, validate), className: cn(fieldStack, fieldWidths[width], className), children: [_jsx(FieldLabel, { isRequired: props.isRequired, children: label }), description && _jsx(FieldDescription, { children: description }), _jsx(FieldError, { requiredMessage: requiredMessage ?? `Choose ${lcFirst(label)}`, children: errorMessage }), _jsxs("div", { className: fieldBox, children: [_jsx(Input, { placeholder: placeholder, className: fieldInput }), _jsx(Button, { variant: "ghost", visualSize: "icon-sm", className: "me-1 justify-end", visualClassName: "text-muted-foreground group-data-hovered/button:text-foreground [&_svg]:size-4", children: _jsx(ChevronsUpDown, { "aria-hidden": "true" }) })] }), _jsx(Popover, { placement: "bottom start", className: "max-h-80", children: _jsx(ListBox, { renderEmptyState: () => (_jsx("p", { className: "px-3 py-2 text-sm text-muted-foreground", children: "No matches. Check the spelling or try fewer letters." })), children: children }) })] }));
11
+ export function ComboBox({ label, description, errorMessage, requiredMessage, validate, placeholder, children, width = 'md', labels, className, ...props }) {
12
+ return (_jsxs(RACComboBox, { ...props, validate: withRequired(props.isRequired, requiredMessage ?? `Choose ${lcFirst(label)}`, (v) => v == null, validate), className: cn(fieldStack, fieldWidths[width], className), children: [_jsx(FieldLabel, { isRequired: props.isRequired, children: label }), description && _jsx(FieldDescription, { children: description }), _jsx(FieldError, { errorPrefix: labels?.errorPrefix, requiredMessage: requiredMessage ?? `Choose ${lcFirst(label)}`, children: errorMessage }), _jsxs("div", { className: fieldBox, children: [_jsx(Input, { placeholder: placeholder, className: fieldInput }), _jsx(Button, { variant: "ghost", visualSize: "icon-sm", className: "me-1 justify-end", visualClassName: "text-muted-foreground group-data-hovered/button:text-foreground [&_svg]:size-4", children: _jsx(ChevronsUpDown, { "aria-hidden": "true" }) })] }), _jsx(Popover, { placement: "bottom start", className: "max-h-80", children: _jsx(ListBox, { renderEmptyState: () => (_jsx("p", { className: "px-3 py-2 text-sm text-muted-foreground", children: "No matches. Check the spelling or try fewer letters." })), children: children }) })] }));
13
13
  }
14
14
  //# sourceMappingURL=combo-box.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"combo-box.js","sourceRoot":"","sources":["../../src/ui/combo-box.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,QAAQ,IAAI,WAAW,EACvB,KAAK,GAGN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,OAAO,EACP,YAAY,GAEb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,4HAA4H;AAC5H,MAAM,UAAU,QAAQ,CAAmB,EACzC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,GAAG,IAAI,EACZ,SAAS,EACT,GAAG,KAAK,EACS;IACjB,OAAO,CACL,MAAC,WAAW,OACL,KAA6B,EAClC,QAAQ,EACN,YAAY,CACV,KAAK,CAAC,UAAU,EAChB,eAAe,IAAI,UAAU,OAAO,CAAC,KAAK,CAAC,EAAE,EAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAChB,QAAQ,CACA,EAEZ,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,aAExD,KAAC,UAAU,IAAC,UAAU,EAAE,KAAK,CAAC,UAAU,YAAG,KAAK,GAAc,EAC7D,WAAW,IAAI,KAAC,gBAAgB,cAAE,WAAW,GAAoB,EAClE,KAAC,UAAU,IAAC,eAAe,EAAE,eAAe,IAAI,UAAU,OAAO,CAAC,KAAK,CAAC,EAAE,YACvE,YAAY,GACF,EACb,eAAK,SAAS,EAAE,QAAQ,aACtB,KAAC,KAAK,IAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,GAAI,EAE1D,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,SAAS,EACpB,SAAS,EAAC,kBAAkB,EAC5B,eAAe,EAAC,gFAAgF,YAEhG,KAAC,cAAc,mBAAa,MAAM,GAAG,GAC9B,IACL,EACN,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,EAAC,SAAS,EAAC,UAAU,YACpD,KAAC,OAAO,IACN,gBAAgB,EAAE,GAAG,EAAE,CAAC,CACtB,YAAG,SAAS,EAAC,yCAAyC,qEAElD,CACL,YAEA,QAAiB,GACV,GACF,IACE,CACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"combo-box.js","sourceRoot":"","sources":["../../src/ui/combo-box.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,QAAQ,IAAI,WAAW,EACvB,KAAK,GAGN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,OAAO,EACP,YAAY,GAGb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,4HAA4H;AAC5H,MAAM,UAAU,QAAQ,CAAmB,EACzC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,GAAG,IAAI,EACZ,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACS;IACjB,OAAO,CACL,MAAC,WAAW,OACL,KAA6B,EAClC,QAAQ,EACN,YAAY,CACV,KAAK,CAAC,UAAU,EAChB,eAAe,IAAI,UAAU,OAAO,CAAC,KAAK,CAAC,EAAE,EAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAChB,QAAQ,CACA,EAEZ,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,aAExD,KAAC,UAAU,IAAC,UAAU,EAAE,KAAK,CAAC,UAAU,YAAG,KAAK,GAAc,EAC7D,WAAW,IAAI,KAAC,gBAAgB,cAAE,WAAW,GAAoB,EAClE,KAAC,UAAU,IACT,WAAW,EAAE,MAAM,EAAE,WAAW,EAChC,eAAe,EAAE,eAAe,IAAI,UAAU,OAAO,CAAC,KAAK,CAAC,EAAE,YAE7D,YAAY,GACF,EACb,eAAK,SAAS,EAAE,QAAQ,aACtB,KAAC,KAAK,IAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,GAAI,EAE1D,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,SAAS,EACpB,SAAS,EAAC,kBAAkB,EAC5B,eAAe,EAAC,gFAAgF,YAEhG,KAAC,cAAc,mBAAa,MAAM,GAAG,GAC9B,IACL,EACN,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,EAAC,SAAS,EAAC,UAAU,YACpD,KAAC,OAAO,IACN,gBAAgB,EAAE,GAAG,EAAE,CAAC,CACtB,YAAG,SAAS,EAAC,yCAAyC,qEAElD,CACL,YAEA,QAAiB,GACV,GACF,IACE,CACf,CAAC;AACJ,CAAC"}
@@ -4,11 +4,22 @@ export interface CopyButtonProps extends Omit<ButtonProps, 'onPress' | 'children
4
4
  text: string;
5
5
  /** What it copies, said after "Copy" to a screen reader: "install command", "app/layout.tsx". */
6
6
  label: string;
7
+ labels?: Partial<CopyButtonLabels>;
8
+ }
9
+ /** A copy button's words, for the `labels` prop (also on `CodeBlock`); `{label}` is what it copies. */
10
+ export interface CopyButtonLabels {
11
+ copy: string;
12
+ copied: string;
13
+ notCopied: string;
14
+ /** Said after a copy. */
15
+ announceCopied: string;
16
+ /** Said when the browser refuses. */
17
+ announceFailed: string;
7
18
  }
8
19
  /**
9
20
  * Copies text to the clipboard and says so: the button reads Copied (or Not copied) for two seconds, and a
10
21
  * status message says what happened, again on a second copy. The visible word starts the button's name, so a
11
22
  * voice command for what's on screen reaches it.
12
23
  */
13
- export declare function CopyButton({ text, label, variant, visualSize, ...props }: CopyButtonProps): import("react").JSX.Element;
24
+ export declare function CopyButton({ text, label, variant, visualSize, labels: given, ...props }: CopyButtonProps): import("react").JSX.Element;
14
25
  //# sourceMappingURL=copy-button.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy-button.d.ts","sourceRoot":"","sources":["../../src/ui/copy-button.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/F,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,KAAK,EAAE,MAAM,CAAC;CACf;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,OAAiB,EACjB,UAAiB,EACjB,GAAG,KAAK,EACT,EAAE,eAAe,+BAuCjB"}
1
+ {"version":3,"file":"copy-button.d.ts","sourceRoot":"","sources":["../../src/ui/copy-button.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGvD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;IAC/F,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpC;AAED,uGAAuG;AACvG,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,cAAc,EAAE,MAAM,CAAC;CACxB;AAYD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,OAAiB,EACjB,UAAiB,EACjB,MAAM,EAAE,KAAK,EACb,GAAG,KAAK,EACT,EAAE,eAAe,+BA6CjB"}