@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
@@ -16,6 +16,37 @@ export interface FileRejection {
16
16
  file: File;
17
17
  reason: string;
18
18
  }
19
+ /**
20
+ * A file upload's words, for the `labels` prop. `{name}` is a file's name; `{types}` is `acceptedTypesLabel`
21
+ * (or the extensions, listed in English); `{size}` and `{max}` are sizes in the page's locale, or a count.
22
+ */
23
+ export interface FileUploadLabels {
24
+ /** On the drop area while something is dragged over it. */
25
+ dropToAdd: string;
26
+ dropFiles: string;
27
+ dropFile: string;
28
+ chooseFiles: string;
29
+ chooseFile: string;
30
+ /** A file's progress bar. */
31
+ uploadingFile: string;
32
+ uploading: string;
33
+ uploaded: string;
34
+ /** Said before an error, to a screen reader. */
35
+ errorPrefix: string;
36
+ /** A failed upload with no `error` of its own. */
37
+ failed: string;
38
+ retry: string;
39
+ dismiss: string;
40
+ cancel: string;
41
+ remove: string;
42
+ /** Announced when a file finishes. */
43
+ announceUploaded: string;
44
+ /** Announced when one fails; `{error}` is its `error`, or nothing. */
45
+ announceFailed: string;
46
+ wrongType: string;
47
+ tooBig: string;
48
+ tooMany: string;
49
+ }
19
50
  export interface FileUploadProps {
20
51
  label: string;
21
52
  /** What to upload, and the limits in words: "PDF or PNG, up to 10 MB each". */
@@ -38,6 +69,7 @@ export interface FileUploadProps {
38
69
  /** Also told about files that were turned away (they are listed with the reason either way). */
39
70
  onReject?: (rejections: FileRejection[]) => void;
40
71
  isDisabled?: boolean;
72
+ labels?: Partial<FileUploadLabels>;
41
73
  className?: string;
42
74
  }
43
75
  /** "2.4 MB", in the page's locale. */
@@ -50,5 +82,5 @@ export declare function formatBytes(bytes: number): string;
50
82
  * in the list with a reason that says what to do. Additions, completions and failures are announced once
51
83
  * each through a polite live region. Removing a file moves focus to the next file, or back to "Choose files".
52
84
  */
53
- export declare function FileUpload({ label, description, acceptedFileTypes, acceptedTypesLabel, maxFileSize, maxFiles, allowsMultiple, items, onSelect, onRemove, onRetry, onReject, isDisabled, className, }: FileUploadProps): import("react").JSX.Element;
85
+ export declare function FileUpload({ label, description, acceptedFileTypes, acceptedTypesLabel, maxFileSize, maxFiles, allowsMultiple, items, onSelect, onRemove, onRetry, onReject, isDisabled, labels: given, className, }: FileUploadProps): import("react").JSX.Element;
54
86
  //# sourceMappingURL=file-upload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../src/ui/file-upload.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAehE,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9D,0GAA0G;AAC1G,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gGAAgG;IAChG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,uGAAuG;IACvG,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,gGAAgG;IAChG,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAajD;AAiCD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,cAAqB,EACrB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,SAAS,GACV,EAAE,eAAe,+BA6QjB"}
1
+ {"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../src/ui/file-upload.tsx"],"names":[],"mappings":"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"}
@@ -4,9 +4,31 @@ import { useId, useRef, useState } from 'react';
4
4
  import { DropZone as RACDropZone, FileTrigger, ProgressBar as RACProgressBar, Text, isFileDropItem, } from 'react-aria-components';
5
5
  import { CircleAlert, CircleCheck, FileText, RotateCcw, Upload, X } from 'lucide-react';
6
6
  import { cn } from '../lib/cn.js';
7
+ import { fill, withLabels } from '../lib/labels.js';
7
8
  import { Button } from './button.js';
8
9
  import { fieldStack } from './field.js';
9
10
  import { IconButton } from './icon-button.js';
11
+ const fileUploadLabels = {
12
+ dropToAdd: 'Drop to add',
13
+ dropFiles: 'Drop files here',
14
+ dropFile: 'Drop a file here',
15
+ chooseFiles: 'Choose files',
16
+ chooseFile: 'Choose a file',
17
+ uploadingFile: 'Uploading {name}',
18
+ uploading: 'Uploading',
19
+ uploaded: 'Uploaded',
20
+ errorPrefix: 'Error: ',
21
+ failed: 'It didn’t upload. Try again.',
22
+ retry: 'Try uploading {name} again',
23
+ dismiss: 'Dismiss {name}',
24
+ cancel: 'Cancel {name}',
25
+ remove: 'Remove {name}',
26
+ announceUploaded: '{name} uploaded',
27
+ announceFailed: "{name} didn't upload. {error}",
28
+ wrongType: "{name} isn't {types}. Choose {types}.",
29
+ tooBig: '{name} is {size}. Choose a file under {max}.',
30
+ tooMany: "{name} wasn't added: you can add up to {max} files. Remove one to add another.",
31
+ };
10
32
  const units = ['byte', 'kilobyte', 'megabyte', 'gigabyte'];
11
33
  /** "2.4 MB", in the page's locale. */
12
34
  export function formatBytes(bytes) {
@@ -53,7 +75,8 @@ function typesLabel(accepted) {
53
75
  * in the list with a reason that says what to do. Additions, completions and failures are announced once
54
76
  * each through a polite live region. Removing a file moves focus to the next file, or back to "Choose files".
55
77
  */
56
- export function FileUpload({ label, description, acceptedFileTypes, acceptedTypesLabel, maxFileSize, maxFiles, allowsMultiple = true, items, onSelect, onRemove, onRetry, onReject, isDisabled, className, }) {
78
+ export function FileUpload({ label, description, acceptedFileTypes, acceptedTypesLabel, maxFileSize, maxFiles, allowsMultiple = true, items, onSelect, onRemove, onRetry, onReject, isDisabled, labels: given, className, }) {
79
+ const labels = withLabels(fileUploadLabels, given);
57
80
  const labelId = useId();
58
81
  const descriptionId = useId();
59
82
  const listRef = useRef(null);
@@ -71,9 +94,9 @@ export function FileUpload({ label, description, acceptedFileTypes, acceptedType
71
94
  const was = before.get(item.id);
72
95
  if (was && was !== item.status) {
73
96
  if (item.status === 'done')
74
- messages.push(`${item.name} uploaded`);
97
+ messages.push(fill(labels.announceUploaded, { name: item.name }));
75
98
  if (item.status === 'error')
76
- messages.push(`${item.name} didn't upload. ${item.error ?? ''}`.trim());
99
+ messages.push(fill(labels.announceFailed, { name: item.name, error: item.error ?? '' }).trim());
77
100
  }
78
101
  }
79
102
  setPrevItems(items);
@@ -88,19 +111,26 @@ export function FileUpload({ label, description, acceptedFileTypes, acceptedType
88
111
  if (acceptedFileTypes?.length && !matchesType(file, acceptedFileTypes)) {
89
112
  no.push({
90
113
  file,
91
- reason: `${file.name} isn't ${acceptedTypesLabel ?? typesLabel(acceptedFileTypes)}. Choose ${acceptedTypesLabel ?? typesLabel(acceptedFileTypes)}.`,
114
+ reason: fill(labels.wrongType, {
115
+ name: file.name,
116
+ types: acceptedTypesLabel ?? typesLabel(acceptedFileTypes),
117
+ }),
92
118
  });
93
119
  }
94
120
  else if (maxFileSize != null && file.size > maxFileSize) {
95
121
  no.push({
96
122
  file,
97
- reason: `${file.name} is ${formatBytes(file.size)}. Choose a file under ${formatBytes(maxFileSize)}.`,
123
+ reason: fill(labels.tooBig, {
124
+ name: file.name,
125
+ size: formatBytes(file.size),
126
+ max: formatBytes(maxFileSize),
127
+ }),
98
128
  });
99
129
  }
100
130
  else if (room <= 0) {
101
131
  no.push({
102
132
  file,
103
- reason: `${file.name} wasn't added: you can add up to ${maxFiles} files. Remove one to add another.`,
133
+ reason: fill(labels.tooMany, { name: file.name, max: maxFiles ?? 0 }),
104
134
  });
105
135
  }
106
136
  else {
@@ -152,18 +182,16 @@ export function FileUpload({ label, description, acceptedFileTypes, acceptedType
152
182
  ...rejected.map((r) => ({ kind: 'rejected', ...r })),
153
183
  ];
154
184
  return (_jsxs("div", { role: "group", "aria-labelledby": labelId, "aria-describedby": description ? descriptionId : undefined, className: cn(fieldStack, 'max-w-[36rem]', className), children: [_jsx("span", { id: labelId, className: "block text-sm leading-5 font-semibold text-foreground", children: label }), description && (_jsx("p", { id: descriptionId, className: "max-w-(--measure) text-[13px] leading-5 text-muted-foreground", children: description })), _jsx(RACDropZone, { isDisabled: isDisabled, getDropOperation: () => 'copy', onDrop: onDrop, className: cn('relative flex flex-col items-center gap-3 rounded-lg border-2 border-dashed border-input bg-card px-4 py-6 text-center outline-none', 'data-drop-target:border-solid data-drop-target:border-primary data-drop-target:bg-brand-subtle data-focus-visible:focus-ring data-disabled:opacity-60'), children: ({ isDropTarget }) => (_jsxs(_Fragment, { children: [_jsx(Upload, { "aria-hidden": "true", className: "size-6 text-muted-foreground" }), _jsx(Text, { slot: "label", className: "text-sm leading-5 text-foreground", children: isDropTarget
155
- ? 'Drop to add'
185
+ ? labels.dropToAdd
156
186
  : allowsMultiple
157
- ? 'Drop files here'
158
- : 'Drop a file here' }), _jsx("span", { "aria-hidden": "true", className: "-my-1 text-[13px] leading-5 text-muted-foreground", children: "or" }), _jsx(FileTrigger, { acceptedFileTypes: acceptedFileTypes, allowsMultiple: allowsMultiple, onSelect: (list) => list && accept(Array.from(list)), children: _jsx(Button, { ref: triggerRef, isDisabled: isDisabled, children: allowsMultiple ? 'Choose files' : 'Choose a file' }) })] })) }), rows.length > 0 && (_jsx("ul", { ref: listRef, "aria-label": `${label}: files`, className: "mt-1 flex flex-col gap-2", children: rows.map((row) => (_jsxs("li", { "data-file-row": row.id, className: cn('flex items-start gap-3 rounded-md border px-3 py-2', row.kind === 'rejected' || row.status === 'error'
187
+ ? labels.dropFiles
188
+ : labels.dropFile }), _jsx("span", { "aria-hidden": "true", className: "-my-1 text-[13px] leading-5 text-muted-foreground", children: "or" }), _jsx(FileTrigger, { acceptedFileTypes: acceptedFileTypes, allowsMultiple: allowsMultiple, onSelect: (list) => list && accept(Array.from(list)), children: _jsx(Button, { ref: triggerRef, isDisabled: isDisabled, children: allowsMultiple ? labels.chooseFiles : labels.chooseFile }) })] })) }), rows.length > 0 && (_jsx("ul", { ref: listRef, "aria-label": `${label}: files`, className: "mt-1 flex flex-col gap-2", children: rows.map((row) => (_jsxs("li", { "data-file-row": row.id, className: cn('flex items-start gap-3 rounded-md border px-3 py-2', row.kind === 'rejected' || row.status === 'error'
159
189
  ? 'border-destructive'
160
- : 'border-border'), children: [row.kind === 'rejected' || row.status === 'error' ? (_jsx(CircleAlert, { "aria-hidden": "true", className: "mt-0.5 size-5 shrink-0 text-destructive" })) : row.status === 'done' ? (_jsx(CircleCheck, { "aria-hidden": "true", className: "mt-0.5 size-5 shrink-0 text-success" })) : (_jsx(FileText, { "aria-hidden": "true", className: "mt-0.5 size-5 shrink-0 text-muted-foreground" })), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsx("span", { className: "text-sm leading-5 font-semibold [overflow-wrap:anywhere]", children: row.name }), _jsxs("span", { className: "text-[13px] leading-5 text-muted-foreground", children: [formatBytes(row.size), row.kind === 'item' && row.status === 'done' && ' · Uploaded', row.kind === 'item' && row.status === 'uploading' && ' · Uploading', row.kind === 'rejected' && ' · Not added', row.kind === 'item' && row.status === 'error' && ' · Not uploaded'] }), row.kind === 'item' && row.status === 'uploading' && (_jsx(RACProgressBar, { "aria-label": `Uploading ${row.name}`, value: row.progress, isIndeterminate: row.progress == null, className: "flex items-center gap-3", children: ({ percentage, valueText }) => (_jsxs(_Fragment, { children: [_jsx("div", { className: "h-2 flex-1 overflow-hidden rounded-full border border-input bg-muted aaa:h-3", children: _jsx("div", { className: cn('h-full rounded-full bg-primary transition-[width] duration-(--duration-fast) motion-reduce:transition-none', row.progress == null && 'w-1/3 animate-pulse'), style: row.progress == null ? undefined : { width: `${percentage ?? 0}%` } }) }), row.progress != null && (_jsx("span", { className: "text-[13px] text-muted-foreground tabular-nums", children: valueText }))] })) })), (row.kind === 'rejected' || row.status === 'error') && (_jsxs("span", { className: "text-[13px] leading-5 font-semibold text-destructive", children: [_jsx("span", { className: "sr-only", children: "Error: " }), row.kind === 'rejected'
161
- ? row.reason
162
- : (row.error ?? 'It didn’t upload. Try again.')] }))] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [row.kind === 'item' && row.status === 'error' && onRetry && (_jsx(IconButton, { label: `Try uploading ${row.name} again`, icon: RotateCcw, visualSize: "icon-sm", onPress: () => onRetry(row.id) })), _jsx(IconButton, { label: row.kind === 'rejected'
163
- ? `Dismiss ${row.name}`
190
+ : 'border-border'), children: [row.kind === 'rejected' || row.status === 'error' ? (_jsx(CircleAlert, { "aria-hidden": "true", className: "mt-0.5 size-5 shrink-0 text-destructive" })) : row.status === 'done' ? (_jsx(CircleCheck, { "aria-hidden": "true", className: "mt-0.5 size-5 shrink-0 text-success" })) : (_jsx(FileText, { "aria-hidden": "true", className: "mt-0.5 size-5 shrink-0 text-muted-foreground" })), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsx("span", { className: "text-sm leading-5 font-semibold [overflow-wrap:anywhere]", children: row.name }), _jsxs("span", { className: "text-[13px] leading-5 text-muted-foreground", children: [formatBytes(row.size), row.kind === 'item' && row.status === 'done' && ` · ${labels.uploaded}`, row.kind === 'item' && row.status === 'uploading' && ` · ${labels.uploading}`, row.kind === 'rejected' && ' · Not added', row.kind === 'item' && row.status === 'error' && ' · Not uploaded'] }), row.kind === 'item' && row.status === 'uploading' && (_jsx(RACProgressBar, { "aria-label": fill(labels.uploadingFile, { name: row.name }), value: row.progress, isIndeterminate: row.progress == null, className: "flex items-center gap-3", children: ({ percentage, valueText }) => (_jsxs(_Fragment, { children: [_jsx("div", { className: "h-2 flex-1 overflow-hidden rounded-full border border-input bg-muted aaa:h-3", children: _jsx("div", { className: cn('h-full rounded-full bg-primary transition-[width] duration-(--duration-fast) motion-reduce:transition-none', row.progress == null && 'w-1/3 animate-pulse'), style: row.progress == null ? undefined : { width: `${percentage ?? 0}%` } }) }), row.progress != null && (_jsx("span", { className: "text-[13px] text-muted-foreground tabular-nums", children: valueText }))] })) })), (row.kind === 'rejected' || row.status === 'error') && (_jsxs("span", { className: "text-[13px] leading-5 font-semibold text-destructive", children: [_jsx("span", { className: "sr-only", children: labels.errorPrefix }), row.kind === 'rejected' ? row.reason : (row.error ?? labels.failed)] }))] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [row.kind === 'item' && row.status === 'error' && onRetry && (_jsx(IconButton, { label: fill(labels.retry, { name: row.name }), icon: RotateCcw, visualSize: "icon-sm", onPress: () => onRetry(row.id) })), _jsx(IconButton, { label: row.kind === 'rejected'
191
+ ? fill(labels.dismiss, { name: row.name })
164
192
  : row.status === 'uploading'
165
- ? `Cancel ${row.name}`
166
- : `Remove ${row.name}`, icon: X, visualSize: "icon-sm", onPress: () => removeAndRefocus(row.id, () => row.kind === 'rejected'
193
+ ? fill(labels.cancel, { name: row.name })
194
+ : fill(labels.remove, { name: row.name }), icon: X, visualSize: "icon-sm", onPress: () => removeAndRefocus(row.id, () => row.kind === 'rejected'
167
195
  ? setRejected((r) => r.filter((x) => x.id !== row.id))
168
196
  : onRemove(row.id)) })] })] }, row.id))) })), _jsx("p", { role: "status", className: "sr-only", children: announcement })] }));
169
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../src/ui/file-upload.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../src/ui/file-upload.tsx"],"names":[],"mappings":"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"}
package/dist/ui/form.d.ts CHANGED
@@ -28,9 +28,10 @@ export interface FormProps extends Omit<RACFormProps, 'className'> {
28
28
  /**
29
29
  * React Aria Form, validated natively on submit: invalid fields show their message and the first gets focus;
30
30
  * the ErrorSummary lists them all. Server errors (`validationErrors`, keyed by field name) show the same way,
31
- * and the summary takes focus because no field has it.
31
+ * and the summary takes focus because no field has it. A `ref` reaches the `<form>`, as well as the one Form
32
+ * keeps for itself.
32
33
  */
33
- export declare function Form({ necessityIndicator, errorSummary, validationErrors, onSubmit, className, children, ...props }: FormProps): import("react").JSX.Element;
34
+ export declare const Form: import("react").ForwardRefExoticComponent<FormProps & import("react").RefAttributes<HTMLFormElement>>;
34
35
  export interface FormSectionProps {
35
36
  title: string;
36
37
  description?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/ui/form.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAmB,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxF,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,KAA4B,EAC5B,SAAS,EACT,SAAS,GACV,EAAE,iBAAiB,sCA+CnB;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;IAChE,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,kFAAkF;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwCD;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,EACnB,kBAA+B,EAC/B,YAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,SAAS,+BA6DX;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAwBxF;AAED,6GAA6G;AAC7G,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAW/F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,IAAgB,EAChB,SAAS,GACV,EAAE;IACD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAkBA"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/ui/form.tsx"],"names":[],"mappings":"AAEA,OAAO,EASL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAmB,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxF,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,KAA4B,EAC5B,SAAS,EACT,SAAS,GACV,EAAE,iBAAiB,sCA+CnB;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;IAChE,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,kFAAkF;IAClF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwCD;;;;;GAKG;AACH,eAAO,MAAM,IAAI,uGAgFf,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAwBxF;AAED,6GAA6G;AAC7G,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAW/F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,IAAgB,EAChB,SAAS,GACV,EAAE;IACD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAkBA"}
package/dist/ui/form.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useEffect, useId, useLayoutEffect, useRef, useState, } from 'react';
3
+ import { forwardRef, useCallback, useEffect, useId, useLayoutEffect, useRef, useState, } from 'react';
4
4
  import { Form as RACForm } from 'react-aria-components';
5
5
  import { CircleAlert, CircleCheck } from 'lucide-react';
6
6
  import { cn } from '../lib/cn.js';
@@ -42,10 +42,10 @@ function fieldTarget(el) {
42
42
  }
43
43
  /** The message a field is showing — what the summary must repeat word for word. */
44
44
  function shownMessage(root, fallback) {
45
- const text = root
46
- ?.querySelector('[data-field-error-text]')
47
- ?.textContent?.replace(/^Error:\s*/, '')
48
- .trim();
45
+ const shown = root?.querySelector('[data-field-error-text]');
46
+ // Without the hidden prefix ("Error: ", or a product's own word for it).
47
+ const prefix = shown?.querySelector('[data-field-error-prefix]')?.textContent ?? '';
48
+ const text = shown?.textContent?.slice(prefix.length).trim();
49
49
  return text || fallback;
50
50
  }
51
51
  function collectErrors(form) {
@@ -69,10 +69,18 @@ function collectErrors(form) {
69
69
  /**
70
70
  * React Aria Form, validated natively on submit: invalid fields show their message and the first gets focus;
71
71
  * the ErrorSummary lists them all. Server errors (`validationErrors`, keyed by field name) show the same way,
72
- * and the summary takes focus because no field has it.
72
+ * and the summary takes focus because no field has it. A `ref` reaches the `<form>`, as well as the one Form
73
+ * keeps for itself.
73
74
  */
74
- export function Form({ necessityIndicator = 'required', errorSummary = true, validationErrors, onSubmit, className, children, ...props }) {
75
+ export const Form = forwardRef(function Form({ necessityIndicator = 'required', errorSummary = true, validationErrors, onSubmit, className, children, ...props }, forwardedRef) {
75
76
  const ref = useRef(null);
77
+ const setRef = useCallback((node) => {
78
+ ref.current = node;
79
+ if (typeof forwardedRef === 'function')
80
+ forwardedRef(node);
81
+ else if (forwardedRef)
82
+ forwardedRef.current = node;
83
+ }, [forwardedRef]);
76
84
  const [errors, setErrors] = useState([]);
77
85
  const [fromServer, setFromServer] = useState(false);
78
86
  useEffect(() => {
@@ -113,11 +121,11 @@ export function Form({ necessityIndicator = 'required', errorSummary = true, val
113
121
  });
114
122
  return () => cancelAnimationFrame(frame);
115
123
  }, [validationErrors]);
116
- return (_jsx(NecessityContext.Provider, { value: necessityIndicator, children: _jsxs(RACForm, { ref: ref, ...props, validationErrors: validationErrors, onSubmit: (e) => {
124
+ return (_jsx(NecessityContext.Provider, { value: necessityIndicator, children: _jsxs(RACForm, { ref: setRef, ...props, validationErrors: validationErrors, onSubmit: (e) => {
117
125
  setErrors([]);
118
126
  onSubmit?.(e);
119
127
  }, className: cn('flex flex-col gap-(--field-gap)', className), children: [errorSummary && _jsx(ErrorSummary, { errors: errors, autoFocus: fromServer }), children] }) }));
120
- }
128
+ });
121
129
  /** A titled group of related fields: heading and hint on the left at wide sizes, fields on the right. */
122
130
  export function FormSection({ title, description, children, className }) {
123
131
  const id = useId();
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/ui/form.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/ui/form.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { type ReactNode } from 'react';
1
+ import type { ReactNode } from 'react';
2
2
  import { type LinkProps as RACLinkProps } from 'react-aria-components';
3
3
  import { type IconProp } from './icon.js';
4
4
  export interface LinkCardProps extends Omit<RACLinkProps, 'className' | 'children'> {
5
5
  href: string;
6
- /** The heading, which names the link. */
6
+ /** The heading; the start of the link's name. */
7
7
  title: ReactNode;
8
8
  headingLevel?: 2 | 3 | 4;
9
- /** Muted text under the title; the link's description. */
9
+ /** Muted text under the title; the rest of the link's name. */
10
10
  description?: ReactNode;
11
11
  icon?: IconProp;
12
12
  /** Layer 1, the target: the whole card. */
@@ -15,7 +15,9 @@ export interface LinkCardProps extends Omit<RACLinkProps, 'className' | 'childre
15
15
  visualClassName?: string;
16
16
  }
17
17
  /**
18
- * A card that is one link: the whole card is the `<a>`, named by its heading and described by its text. It
18
+ * A card that is one link: the whole card is the `<a>`, named by everything it shows, heading first. Naming it
19
+ * by the heading alone would leave the description out of a name that has to contain the visible text (2.5.3,
20
+ * as axe and the Setsquare SDK measure it), so a list of links reads the description too: keep it short. It
19
21
  * holds no other control, since a link can't contain one. Three layers: the link is the target, the card is
20
22
  * the paint (hover, focus ring), the text is the content. No overlay stretches a link over a card.
21
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"link-card.d.ts","sourceRoot":"","sources":["../../src/ui/link-card.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAmB,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxF,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,UAAU,CAAC;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,YAAgB,EAChB,WAAW,EACX,IAAI,EACJ,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,EAAE,aAAa,+BAyCf"}
1
+ {"version":3,"file":"link-card.d.ts","sourceRoot":"","sources":["../../src/ui/link-card.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAmB,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGxF,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,UAAU,CAAC;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,YAAgB,EAChB,WAAW,EACX,IAAI,EACJ,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,EAAE,aAAa,+BA8Bf"}
@@ -1,19 +1,18 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useId } from 'react';
4
3
  import { Link as RACLink } from 'react-aria-components';
5
4
  import { ArrowRight } from 'lucide-react';
6
5
  import { cn } from '../lib/cn.js';
7
6
  import { renderIcon } from './icon.js';
8
7
  /**
9
- * A card that is one link: the whole card is the `<a>`, named by its heading and described by its text. It
8
+ * A card that is one link: the whole card is the `<a>`, named by everything it shows, heading first. Naming it
9
+ * by the heading alone would leave the description out of a name that has to contain the visible text (2.5.3,
10
+ * as axe and the Setsquare SDK measure it), so a list of links reads the description too: keep it short. It
10
11
  * holds no other control, since a link can't contain one. Three layers: the link is the target, the card is
11
12
  * the paint (hover, focus ring), the text is the content. No overlay stretches a link over a card.
12
13
  */
13
14
  export function LinkCard({ href, title, headingLevel = 3, description, icon, className, visualClassName, ...props }) {
14
- const titleId = useId();
15
- const descriptionId = useId();
16
15
  const Heading = `h${headingLevel}`;
17
- return (_jsx(RACLink, { ...props, href: href, "aria-labelledby": titleId, "aria-describedby": description ? descriptionId : undefined, className: cn('group/link-card relative flex min-h-target min-w-target cursor-pointer text-foreground no-underline outline-none', className), children: _jsxs("div", { className: cn('card-surface flex w-full flex-col gap-2 group-data-hovered/link-card:bg-accent group-data-focus-visible/link-card:focus-ring', visualClassName), children: [icon && (_jsx("span", { className: "mb-2 inline-flex size-10 items-center justify-center rounded-md bg-brand-subtle text-brand", children: renderIcon(icon, 'size-5') })), _jsxs(Heading, { id: titleId, className: "flex items-start gap-2 text-subheading group-data-hovered/link-card:underline", children: [_jsx("span", { className: "min-w-0", children: title }), _jsx(ArrowRight, { "aria-hidden": "true", className: "mt-1 size-4 shrink-0" })] }), description && (_jsx("p", { id: descriptionId, className: "text-body text-muted-foreground", children: description }))] }) }));
16
+ return (_jsx(RACLink, { ...props, href: href, className: cn('group/link-card relative flex min-h-target min-w-target cursor-pointer text-foreground no-underline outline-none', className), children: _jsxs("div", { className: cn('card-surface flex w-full flex-col gap-2 group-data-hovered/link-card:bg-accent group-data-focus-visible/link-card:focus-ring', visualClassName), children: [icon && (_jsx("span", { className: "mb-2 inline-flex size-10 items-center justify-center rounded-md bg-brand-subtle text-brand", children: renderIcon(icon, 'size-5') })), _jsxs(Heading, { className: "flex items-start gap-2 text-subheading group-data-hovered/link-card:underline", children: [_jsx("span", { className: "min-w-0", children: title }), _jsx(ArrowRight, { "aria-hidden": "true", className: "mt-1 size-4 shrink-0" })] }), description && _jsx("p", { className: "text-body text-muted-foreground", children: description })] }) }));
18
17
  }
19
18
  //# sourceMappingURL=link-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"link-card.js","sourceRoot":"","sources":["../../src/ui/link-card.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,EAAkB,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,IAAI,IAAI,OAAO,EAAkC,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAgBtD;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,YAAY,GAAG,CAAC,EAChB,WAAW,EACX,IAAI,EACJ,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACM;IACd,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,aAAa,GAAG,KAAK,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,YAAY,EAAwB,CAAC;IACzD,OAAO,CACL,KAAC,OAAO,OACF,KAAK,EACT,IAAI,EAAE,IAAI,qBACO,OAAO,sBACN,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EACzD,SAAS,EAAE,EAAE,CACX,kHAAkH,EAClH,SAAS,CACV,YAED,eACE,SAAS,EAAE,EAAE,CACX,8HAA8H,EAC9H,eAAe,CAChB,aAEA,IAAI,IAAI,CACP,eAAM,SAAS,EAAC,4FAA4F,YACzG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,GACtB,CACR,EACD,MAAC,OAAO,IACN,EAAE,EAAE,OAAO,EACX,SAAS,EAAC,+EAA+E,aAEzF,eAAM,SAAS,EAAC,SAAS,YAAE,KAAK,GAAQ,EACxC,KAAC,UAAU,mBAAa,MAAM,EAAC,SAAS,EAAC,sBAAsB,GAAG,IAC1D,EACT,WAAW,IAAI,CACd,YAAG,EAAE,EAAE,aAAa,EAAE,SAAS,EAAC,iCAAiC,YAC9D,WAAW,GACV,CACL,IACG,GACE,CACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"link-card.js","sourceRoot":"","sources":["../../src/ui/link-card.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,IAAI,IAAI,OAAO,EAAkC,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAgBtD;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,YAAY,GAAG,CAAC,EAChB,WAAW,EACX,IAAI,EACJ,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACM;IACd,MAAM,OAAO,GAAG,IAAI,YAAY,EAAwB,CAAC;IACzD,OAAO,CACL,KAAC,OAAO,OACF,KAAK,EACT,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CACX,kHAAkH,EAClH,SAAS,CACV,YAED,eACE,SAAS,EAAE,EAAE,CACX,8HAA8H,EAC9H,eAAe,CAChB,aAEA,IAAI,IAAI,CACP,eAAM,SAAS,EAAC,4FAA4F,YACzG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,GACtB,CACR,EACD,MAAC,OAAO,IAAC,SAAS,EAAC,+EAA+E,aAChG,eAAM,SAAS,EAAC,SAAS,YAAE,KAAK,GAAQ,EACxC,KAAC,UAAU,mBAAa,MAAM,EAAC,SAAS,EAAC,sBAAsB,GAAG,IAC1D,EACT,WAAW,IAAI,YAAG,SAAS,EAAC,iCAAiC,YAAE,WAAW,GAAK,IAC5E,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import { type NumberFieldProps as RACNumberFieldProps } from 'react-aria-components';
3
- import { type FieldWidth } from './field.js';
3
+ import { type FieldWidth, type FieldLabels } from './field.js';
4
4
  export interface NumberFieldProps extends Omit<RACNumberFieldProps, 'className' | 'children' | 'validate'> {
5
5
  label: string;
6
6
  description?: ReactNode;
@@ -8,6 +8,7 @@ export interface NumberFieldProps extends Omit<RACNumberFieldProps, 'className'
8
8
  requiredMessage?: string;
9
9
  validate?: (value: number) => string | string[] | true | null | undefined;
10
10
  width?: FieldWidth;
11
+ labels?: Partial<FieldLabels>;
11
12
  className?: string;
12
13
  }
13
14
  /**
@@ -15,5 +16,5 @@ export interface NumberFieldProps extends Omit<RACNumberFieldProps, 'className'
15
16
  * 28px painted button that stays 4px from the box's edge at every level. Arrow keys and typing work too;
16
17
  * min and max clamp on blur.
17
18
  */
18
- export declare function NumberField({ label, description, errorMessage, requiredMessage, validate, width, className, ...props }: NumberFieldProps): import("react").JSX.Element;
19
+ export declare function NumberField({ label, description, errorMessage, requiredMessage, validate, width, labels, className, ...props }: NumberFieldProps): import("react").JSX.Element;
19
20
  //# sourceMappingURL=number-field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-field.d.ts","sourceRoot":"","sources":["../../src/ui/number-field.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAIL,KAAK,gBAAgB,IAAI,mBAAmB,EAC7C,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAUL,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,mBAAmB,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,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1E,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,KAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,+BA+ClB"}
1
+ {"version":3,"file":"number-field.d.ts","sourceRoot":"","sources":["../../src/ui/number-field.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAIL,KAAK,gBAAgB,IAAI,mBAAmB,EAC7C,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAUL,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,mBAAmB,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,MAAM,KAAK,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1E,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,KAAY,EACZ,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAkDlB"}
@@ -10,10 +10,10 @@ import { FieldDescription, FieldError, FieldLabel, fieldBox, fieldInput, fieldSt
10
10
  * 28px painted button that stays 4px from the box's edge at every level. Arrow keys and typing work too;
11
11
  * min and max clamp on blur.
12
12
  */
13
- export function NumberField({ label, description, errorMessage, requiredMessage, validate, width = 'sm', className, ...props }) {
13
+ export function NumberField({ label, description, errorMessage, requiredMessage, validate, width = 'sm', labels, className, ...props }) {
14
14
  return (_jsxs(RACNumberField, { ...props, validate: withRequired(props.isRequired, requiredMessage ?? `Enter ${lcFirst(label)}`, (v) => v == null || Number.isNaN(v), validate), className: cn(fieldStack, fieldWidths[width],
15
15
  // Two stepper targets plus room for five digits. At AAA the targets are 44px, so a narrow field
16
16
  // grows past its width rather than squeezing the number (min-width wins over max-width).
17
- 'min-w-[calc(2*max(var(--target-min),var(--control-height-sm))+5ch+1.5rem)]', className), children: [_jsx(FieldLabel, { isRequired: props.isRequired, children: label }), description && _jsx(FieldDescription, { children: description }), _jsx(FieldError, { requiredMessage: requiredMessage ?? `Enter ${lcFirst(label)}`, children: errorMessage }), _jsxs(Group, { className: fieldBox, children: [_jsx(Button, { slot: "decrement", variant: "ghost", visualSize: "icon-sm", className: "ms-1 justify-start", visualClassName: "[&_svg]:size-4", children: _jsx(Minus, { "aria-hidden": "true" }) }), _jsx(Input, { className: cn(fieldInput, 'px-2 text-center tabular-nums') }), _jsx(Button, { slot: "increment", variant: "ghost", visualSize: "icon-sm", className: "me-1 justify-end", visualClassName: "[&_svg]:size-4", children: _jsx(Plus, { "aria-hidden": "true" }) })] })] }));
17
+ 'min-w-[calc(2*max(var(--target-min),var(--control-height-sm))+5ch+1.5rem)]', className), children: [_jsx(FieldLabel, { isRequired: props.isRequired, children: label }), description && _jsx(FieldDescription, { children: description }), _jsx(FieldError, { errorPrefix: labels?.errorPrefix, requiredMessage: requiredMessage ?? `Enter ${lcFirst(label)}`, children: errorMessage }), _jsxs(Group, { className: fieldBox, children: [_jsx(Button, { slot: "decrement", variant: "ghost", visualSize: "icon-sm", className: "ms-1 justify-start", visualClassName: "[&_svg]:size-4", children: _jsx(Minus, { "aria-hidden": "true" }) }), _jsx(Input, { className: cn(fieldInput, 'px-2 text-center tabular-nums') }), _jsx(Button, { slot: "increment", variant: "ghost", visualSize: "icon-sm", className: "me-1 justify-end", visualClassName: "[&_svg]:size-4", children: _jsx(Plus, { "aria-hidden": "true" }) })] })] }));
18
18
  }
19
19
  //# sourceMappingURL=number-field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-field.js","sourceRoot":"","sources":["../../src/ui/number-field.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,KAAK,EACL,KAAK,EACL,WAAW,IAAI,cAAc,GAE9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC3C,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;AAepB;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,KAAK,GAAG,IAAI,EACZ,SAAS,EACT,GAAG,KAAK,EACS;IACjB,OAAO,CACL,MAAC,cAAc,OACT,KAAK,EACT,QAAQ,EAAE,YAAY,CACpB,KAAK,CAAC,UAAU,EAChB,eAAe,IAAI,SAAS,OAAO,CAAC,KAAK,CAAC,EAAE,EAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACnC,QAAQ,CACT,EACD,SAAS,EAAE,EAAE,CACX,UAAU,EACV,WAAW,CAAC,KAAK,CAAC;QAClB,gGAAgG;QAChG,yFAAyF;QACzF,4EAA4E,EAC5E,SAAS,CACV,aAED,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,SAAS,OAAO,CAAC,KAAK,CAAC,EAAE,YACtE,YAAY,GACF,EACb,MAAC,KAAK,IAAC,SAAS,EAAE,QAAQ,aACxB,KAAC,MAAM,IACL,IAAI,EAAC,WAAW,EAChB,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,SAAS,EACpB,SAAS,EAAC,oBAAoB,EAC9B,eAAe,EAAC,gBAAgB,YAEhC,KAAC,KAAK,mBAAa,MAAM,GAAG,GACrB,EACT,KAAC,KAAK,IAAC,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,+BAA+B,CAAC,GAAI,EACrE,KAAC,MAAM,IACL,IAAI,EAAC,WAAW,EAChB,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,SAAS,EACpB,SAAS,EAAC,kBAAkB,EAC5B,eAAe,EAAC,gBAAgB,YAEhC,KAAC,IAAI,mBAAa,MAAM,GAAG,GACpB,IACH,IACO,CAClB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"number-field.js","sourceRoot":"","sources":["../../src/ui/number-field.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EACL,KAAK,EACL,KAAK,EACL,WAAW,IAAI,cAAc,GAE9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC3C,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;AAgBpB;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,KAAK,GAAG,IAAI,EACZ,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACS;IACjB,OAAO,CACL,MAAC,cAAc,OACT,KAAK,EACT,QAAQ,EAAE,YAAY,CACpB,KAAK,CAAC,UAAU,EAChB,eAAe,IAAI,SAAS,OAAO,CAAC,KAAK,CAAC,EAAE,EAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACnC,QAAQ,CACT,EACD,SAAS,EAAE,EAAE,CACX,UAAU,EACV,WAAW,CAAC,KAAK,CAAC;QAClB,gGAAgG;QAChG,yFAAyF;QACzF,4EAA4E,EAC5E,SAAS,CACV,aAED,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,SAAS,OAAO,CAAC,KAAK,CAAC,EAAE,YAE5D,YAAY,GACF,EACb,MAAC,KAAK,IAAC,SAAS,EAAE,QAAQ,aACxB,KAAC,MAAM,IACL,IAAI,EAAC,WAAW,EAChB,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,SAAS,EACpB,SAAS,EAAC,oBAAoB,EAC9B,eAAe,EAAC,gBAAgB,YAEhC,KAAC,KAAK,mBAAa,MAAM,GAAG,GACrB,EACT,KAAC,KAAK,IAAC,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,+BAA+B,CAAC,GAAI,EACrE,KAAC,MAAM,IACL,IAAI,EAAC,WAAW,EAChB,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,SAAS,EACpB,SAAS,EAAC,kBAAkB,EAC5B,eAAe,EAAC,gBAAgB,YAEhC,KAAC,IAAI,mBAAa,MAAM,GAAG,GACpB,IACH,IACO,CAClB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ /** Pagination's words, for the `labels` prop. `{page}` is a page number. */
2
+ export interface PaginationLabels {
3
+ /** Names the navigation landmark. */
4
+ pagination: string;
5
+ previous: string;
6
+ next: string;
7
+ /** A page link's name around its number, which is all it shows: "Page {page}". */
8
+ page: string;
9
+ }
10
+ export interface PaginationProps {
11
+ /** The current page, from 1. */
12
+ page: number;
13
+ pageCount: number;
14
+ /**
15
+ * Where a page is: a function, or a string with `{page}` in it ("/projects?page={page}&sort=name"), which a
16
+ * server component can pass where it can't pass a function.
17
+ */
18
+ href: string | ((page: number) => string);
19
+ labels?: Partial<PaginationLabels>;
20
+ className?: string;
21
+ }
22
+ /**
23
+ * Links to the pages of a long list: Previous, the first and last pages, the ones either side of the current one,
24
+ * and Next. Every page is a link, so it works with JavaScript off and goes through your router's
25
+ * `RouterProvider` when it is on. The current page is marked `aria-current="page"` and painted as the primary
26
+ * button: fill and weight, not colour alone. Previous and Next are left out at the ends rather than disabled.
27
+ * Nothing renders for a single page.
28
+ */
29
+ export declare function Pagination({ page, pageCount, href, labels: given, className }: PaginationProps): import("react").JSX.Element | null;
30
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/ui/pagination.tsx"],"names":[],"mappings":"AAQA,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;CACd;AASD,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,eAAe,sCA4C9F"}
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Link } from 'react-aria-components';
4
+ import { ChevronLeft, ChevronRight } from 'lucide-react';
5
+ import { cn } from '../lib/cn.js';
6
+ import { fill, withLabels } from '../lib/labels.js';
7
+ const paginationLabels = {
8
+ pagination: 'Pagination',
9
+ previous: 'Previous',
10
+ next: 'Next',
11
+ page: 'Page {page}',
12
+ };
13
+ /** First, last, and the pages either side of the current one, with a gap where pages are left out. */
14
+ function pageWindow(current, last) {
15
+ const pages = [...new Set([1, last, current - 1, current, current + 1])]
16
+ .filter((n) => n >= 1 && n <= last)
17
+ .toSorted((a, b) => a - b);
18
+ const out = [];
19
+ let previous = 0;
20
+ for (const n of pages) {
21
+ if (n - previous > 1)
22
+ out.push({ key: `gap-${previous}-${n}`, gap: true });
23
+ out.push({ key: `page-${n}`, page: n });
24
+ previous = n;
25
+ }
26
+ return out;
27
+ }
28
+ /**
29
+ * Links to the pages of a long list: Previous, the first and last pages, the ones either side of the current one,
30
+ * and Next. Every page is a link, so it works with JavaScript off and goes through your router's
31
+ * `RouterProvider` when it is on. The current page is marked `aria-current="page"` and painted as the primary
32
+ * button: fill and weight, not colour alone. Previous and Next are left out at the ends rather than disabled.
33
+ * Nothing renders for a single page.
34
+ */
35
+ export function Pagination({ page, pageCount, href, labels: given, className }) {
36
+ if (pageCount <= 1)
37
+ return null;
38
+ const labels = withLabels(paginationLabels, given);
39
+ const to = (n) => (typeof href === 'function' ? href(n) : fill(href, { page: n }));
40
+ // A page link shows its number; the words around it ("Page …") are for its name, which keeps the number (2.5.3).
41
+ const [before, after = ''] = labels.page.split('{page}');
42
+ return (_jsx("nav", { "aria-label": labels.pagination, className: cn('min-w-0', className), children: _jsxs("ul", { role: "list", className: "flex flex-wrap items-center gap-1", children: [page > 1 && (_jsx("li", { children: _jsxs(PageLink, { href: to(page - 1), rel: "prev", children: [_jsx(ChevronLeft, { "aria-hidden": "true", className: "size-4" }), labels.previous] }) })), pageWindow(page, pageCount).map((entry) => 'gap' in entry ? (_jsx("li", { "aria-hidden": "true", className: "px-1 text-sm text-muted-foreground", children: "\u2026" }, entry.key)) : (_jsx("li", { children: _jsxs(PageLink, { href: to(entry.page), isCurrent: entry.page === page, children: [before && _jsx("span", { className: "sr-only", children: before }), entry.page, after && _jsx("span", { className: "sr-only", children: after })] }) }, entry.key))), page < pageCount && (_jsx("li", { children: _jsxs(PageLink, { href: to(page + 1), rel: "next", children: [labels.next, _jsx(ChevronRight, { "aria-hidden": "true", className: "size-4" })] }) }))] }) }));
43
+ }
44
+ /** Three layers: the link is the target, at least --target-min both ways; the painted box carries hover, focus and current. */
45
+ function PageLink({ href, rel, isCurrent, children, }) {
46
+ return (_jsx(Link, { href: href, rel: rel, "aria-current": isCurrent ? 'page' : undefined, className: "group/page relative inline-flex min-h-target min-w-target cursor-pointer items-center justify-center no-underline outline-none", children: _jsx("span", { className: cn('inline-flex h-control min-w-control items-center justify-center gap-1 rounded-md px-2 text-sm font-medium text-foreground tabular-nums', 'group-data-hovered/page:bg-accent group-data-focus-visible/page:focus-ring', 'group-aria-[current=page]/page:bg-primary group-aria-[current=page]/page:font-bold group-aria-[current=page]/page:text-primary-foreground'), children: children }) }));
47
+ }
48
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/ui/pagination.tsx"],"names":[],"mappings":"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"}