@jirawatpyk/aura-react 5.7.3 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +40 -0
  2. package/dist/aura.bundle.js +1751 -1208
  3. package/dist/cjs/index.cjs +1751 -1208
  4. package/dist/esm/Accordion.js +2 -1
  5. package/dist/esm/Alert.js +7 -19
  6. package/dist/esm/AppShell.js +2 -1
  7. package/dist/esm/Badge.js +2 -19
  8. package/dist/esm/Breadcrumb.js +2 -1
  9. package/dist/esm/Button.js +17 -17
  10. package/dist/esm/Card.js +2 -19
  11. package/dist/esm/Checkbox.js +2 -1
  12. package/dist/esm/Combobox.js +7 -6
  13. package/dist/esm/Command.js +3 -2
  14. package/dist/esm/DataTable.js +35 -13
  15. package/dist/esm/DatePicker.js +8 -7
  16. package/dist/esm/Dialog.js +38 -5
  17. package/dist/esm/EmptyState.js +2 -15
  18. package/dist/esm/Field.js +2 -1
  19. package/dist/esm/FileUpload.js +4 -3
  20. package/dist/esm/FilterBar.js +3 -2
  21. package/dist/esm/FormErrorSummary.js +2 -1
  22. package/dist/esm/Icon.js +50 -31
  23. package/dist/esm/Menu.js +2 -1
  24. package/dist/esm/NumberField.js +3 -2
  25. package/dist/esm/Pagination.js +3 -2
  26. package/dist/esm/PasswordField.js +2 -1
  27. package/dist/esm/Popover.js +2 -1
  28. package/dist/esm/RadioGroup.js +2 -1
  29. package/dist/esm/Select.js +4 -3
  30. package/dist/esm/SideNav.js +3 -2
  31. package/dist/esm/Stat.js +8 -1
  32. package/dist/esm/StatusPill.js +4 -14
  33. package/dist/esm/Stepper.js +2 -1
  34. package/dist/esm/Table.js +104 -11
  35. package/dist/esm/Tabs.js +79 -9
  36. package/dist/esm/Tag.js +3 -2
  37. package/dist/esm/TimePicker.js +5 -4
  38. package/dist/esm/Toaster.js +3 -2
  39. package/dist/esm/classes.js +33 -0
  40. package/dist/esm/colorScheme.js +8 -1
  41. package/dist/esm/display.js +155 -0
  42. package/dist/esm/iconSvg.js +53 -0
  43. package/dist/esm/icons.js +531 -0
  44. package/dist/esm/index.js +4 -1
  45. package/dist/esm/internal.js +1 -27
  46. package/dist/esm/locale.js +7 -0
  47. package/dist/esm/strings.js +4 -245
  48. package/dist/esm/strings.sv.js +127 -0
  49. package/dist/esm/strings.th.js +127 -0
  50. package/dist/icons/index.cjs +613 -0
  51. package/dist/icons/index.d.cts +106 -0
  52. package/dist/icons/index.d.ts +106 -0
  53. package/dist/index.d.cts +69 -6
  54. package/dist/index.d.ts +69 -6
  55. package/dist/locales/sv.cjs +149 -0
  56. package/dist/locales/sv.d.cts +96 -0
  57. package/dist/locales/sv.d.ts +96 -0
  58. package/dist/locales/th.cjs +149 -0
  59. package/dist/locales/th.d.cts +96 -0
  60. package/dist/locales/th.d.ts +96 -0
  61. package/dist/server/index.cjs +618 -275
  62. package/dist/server/index.d.cts +141 -0
  63. package/dist/server/index.d.ts +141 -0
  64. package/dist/server/index.js +608 -275
  65. package/dist/styles.css +35 -0
  66. package/dist/styles.layer.css +35 -0
  67. package/package.json +35 -3
  68. package/scripts/aura-icons-codemod.mjs +345 -0
@@ -0,0 +1,106 @@
1
+ import * as React$1 from 'react';
2
+
3
+ /** An AURA icon name, or any icon element (e.g. `<Building />` from lucide-react). AURA sizes it and hides it from screen readers. */
4
+ export type IconInput = IconName | React$1.ReactElement;
5
+ export type IconName = "check" | "x" | "plus" | "minus" | "search" | "chevron-down" | "chevron-up" | "chevron-left" | "chevron-right" | "arrow-right" | "arrow-up-right" | "arrow-up-down" | "loader-circle" | "circle-alert" | "circle-check" | "info" | "triangle-alert" | "settings" | "user" | "users" | "filter" | "ellipsis" | "external-link" | "copy" | "trash-2" | "pencil" | "download" | "upload" | "calendar" | "bell" | "menu" | "eye" | "log-out" | "circle" | "circle-dot-dashed" | "ban" | "arrow-up" | "arrow-down" | "inbox" | "pin" | "pin-off" | "eye-off" | "columns-3" | "arrow-left" | "rotate-ccw" | "house" | "layout-dashboard" | "folder" | "chart-column" | "file-text" | "mail" | "lock" | "clock" | "trending-up" | "trending-down" | "image" | "paperclip" | "cloud-upload" | "file" | "sun" | "moon" | "monitor" | "panel-left-close" | "panel-left-open" | "server" | "globe" | "activity" | "shield-alert" | "phone" | "wrench";
6
+ /** Lucide stroke icon drawn inline in currentColor. */
7
+ export interface IconProps {
8
+ /** A name from the set, or an icon element of your own (sized and styled the same way). */
9
+ name: IconInput;
10
+ /** `sm` 16 (default) · `md` 20 · `lg` 24, or a px number. */
11
+ size?: "sm" | "md" | "lg" | number | undefined;
12
+ /** Accessible name. Omit for decorative icons next to a text label (then aria-hidden). */
13
+ label?: string | undefined;
14
+ /** Default 2 (Lucide's). */
15
+ strokeWidth?: number | undefined;
16
+ className?: string | undefined;
17
+ }
18
+ /** One SVG child: element name and its attributes. */
19
+ export type IconShape = [
20
+ string,
21
+ Record<string, string>
22
+ ];
23
+ /** An AURA icon component from `@jirawatpyk/aura-react/icons` (5.9), e.g. `IconUsers`. */
24
+ export type AuraIcon = React$1.ForwardRefExoticComponent<Omit<IconProps, "name"> & React$1.RefAttributes<SVGSVGElement>> & {
25
+ /** The icon's path data. */
26
+ readonly auraShapes: IconShape[];
27
+ /** Its name in the set, e.g. `users`. */
28
+ readonly iconName: string;
29
+ };
30
+ /** Makes an icon component from path data (24×24, stroked in currentColor, like Lucide). The per-icon exports are
31
+ * built with it; use it for an icon of your own that should look and behave exactly like AURA's. */
32
+ export declare function defineIcon(name: string, shapes: IconShape[]): AuraIcon;
33
+ export declare const IconCheck: AuraIcon;
34
+ export declare const IconX: AuraIcon;
35
+ export declare const IconPlus: AuraIcon;
36
+ export declare const IconMinus: AuraIcon;
37
+ export declare const IconSearch: AuraIcon;
38
+ export declare const IconChevronDown: AuraIcon;
39
+ export declare const IconChevronUp: AuraIcon;
40
+ export declare const IconChevronLeft: AuraIcon;
41
+ export declare const IconChevronRight: AuraIcon;
42
+ export declare const IconArrowRight: AuraIcon;
43
+ export declare const IconArrowUpRight: AuraIcon;
44
+ export declare const IconArrowUpDown: AuraIcon;
45
+ export declare const IconLoaderCircle: AuraIcon;
46
+ export declare const IconCircleAlert: AuraIcon;
47
+ export declare const IconCircleCheck: AuraIcon;
48
+ export declare const IconInfo: AuraIcon;
49
+ export declare const IconTriangleAlert: AuraIcon;
50
+ export declare const IconSettings: AuraIcon;
51
+ export declare const IconUser: AuraIcon;
52
+ export declare const IconUsers: AuraIcon;
53
+ export declare const IconFilter: AuraIcon;
54
+ export declare const IconEllipsis: AuraIcon;
55
+ export declare const IconExternalLink: AuraIcon;
56
+ export declare const IconCopy: AuraIcon;
57
+ export declare const IconTrash2: AuraIcon;
58
+ export declare const IconPencil: AuraIcon;
59
+ export declare const IconDownload: AuraIcon;
60
+ export declare const IconUpload: AuraIcon;
61
+ export declare const IconCalendar: AuraIcon;
62
+ export declare const IconBell: AuraIcon;
63
+ export declare const IconMenu: AuraIcon;
64
+ export declare const IconEye: AuraIcon;
65
+ export declare const IconLogOut: AuraIcon;
66
+ export declare const IconCircle: AuraIcon;
67
+ export declare const IconCircleDotDashed: AuraIcon;
68
+ export declare const IconBan: AuraIcon;
69
+ export declare const IconArrowUp: AuraIcon;
70
+ export declare const IconArrowDown: AuraIcon;
71
+ export declare const IconInbox: AuraIcon;
72
+ export declare const IconPin: AuraIcon;
73
+ export declare const IconPinOff: AuraIcon;
74
+ export declare const IconEyeOff: AuraIcon;
75
+ export declare const IconColumns3: AuraIcon;
76
+ export declare const IconArrowLeft: AuraIcon;
77
+ export declare const IconRotateCcw: AuraIcon;
78
+ export declare const IconHouse: AuraIcon;
79
+ export declare const IconLayoutDashboard: AuraIcon;
80
+ export declare const IconFolder: AuraIcon;
81
+ export declare const IconChartColumn: AuraIcon;
82
+ export declare const IconFileText: AuraIcon;
83
+ export declare const IconMail: AuraIcon;
84
+ export declare const IconLock: AuraIcon;
85
+ export declare const IconClock: AuraIcon;
86
+ export declare const IconTrendingUp: AuraIcon;
87
+ export declare const IconTrendingDown: AuraIcon;
88
+ export declare const IconImage: AuraIcon;
89
+ export declare const IconPaperclip: AuraIcon;
90
+ export declare const IconCloudUpload: AuraIcon;
91
+ export declare const IconFile: AuraIcon;
92
+ export declare const IconSun: AuraIcon;
93
+ export declare const IconMoon: AuraIcon;
94
+ export declare const IconMonitor: AuraIcon;
95
+ export declare const IconPanelLeftClose: AuraIcon;
96
+ export declare const IconPanelLeftOpen: AuraIcon;
97
+ export declare const IconServer: AuraIcon;
98
+ export declare const IconGlobe: AuraIcon;
99
+ export declare const IconActivity: AuraIcon;
100
+ export declare const IconShieldAlert: AuraIcon;
101
+ export declare const IconPhone: AuraIcon;
102
+ export declare const IconWrench: AuraIcon;
103
+ /** Every icon — what `registerIcons(allIcons)` takes to keep icon names as strings working in 6.0. */
104
+ export declare const allIcons: AuraIcon[];
105
+
106
+ export {};
@@ -0,0 +1,106 @@
1
+ import * as React$1 from 'react';
2
+
3
+ /** An AURA icon name, or any icon element (e.g. `<Building />` from lucide-react). AURA sizes it and hides it from screen readers. */
4
+ export type IconInput = IconName | React$1.ReactElement;
5
+ export type IconName = "check" | "x" | "plus" | "minus" | "search" | "chevron-down" | "chevron-up" | "chevron-left" | "chevron-right" | "arrow-right" | "arrow-up-right" | "arrow-up-down" | "loader-circle" | "circle-alert" | "circle-check" | "info" | "triangle-alert" | "settings" | "user" | "users" | "filter" | "ellipsis" | "external-link" | "copy" | "trash-2" | "pencil" | "download" | "upload" | "calendar" | "bell" | "menu" | "eye" | "log-out" | "circle" | "circle-dot-dashed" | "ban" | "arrow-up" | "arrow-down" | "inbox" | "pin" | "pin-off" | "eye-off" | "columns-3" | "arrow-left" | "rotate-ccw" | "house" | "layout-dashboard" | "folder" | "chart-column" | "file-text" | "mail" | "lock" | "clock" | "trending-up" | "trending-down" | "image" | "paperclip" | "cloud-upload" | "file" | "sun" | "moon" | "monitor" | "panel-left-close" | "panel-left-open" | "server" | "globe" | "activity" | "shield-alert" | "phone" | "wrench";
6
+ /** Lucide stroke icon drawn inline in currentColor. */
7
+ export interface IconProps {
8
+ /** A name from the set, or an icon element of your own (sized and styled the same way). */
9
+ name: IconInput;
10
+ /** `sm` 16 (default) · `md` 20 · `lg` 24, or a px number. */
11
+ size?: "sm" | "md" | "lg" | number | undefined;
12
+ /** Accessible name. Omit for decorative icons next to a text label (then aria-hidden). */
13
+ label?: string | undefined;
14
+ /** Default 2 (Lucide's). */
15
+ strokeWidth?: number | undefined;
16
+ className?: string | undefined;
17
+ }
18
+ /** One SVG child: element name and its attributes. */
19
+ export type IconShape = [
20
+ string,
21
+ Record<string, string>
22
+ ];
23
+ /** An AURA icon component from `@jirawatpyk/aura-react/icons` (5.9), e.g. `IconUsers`. */
24
+ export type AuraIcon = React$1.ForwardRefExoticComponent<Omit<IconProps, "name"> & React$1.RefAttributes<SVGSVGElement>> & {
25
+ /** The icon's path data. */
26
+ readonly auraShapes: IconShape[];
27
+ /** Its name in the set, e.g. `users`. */
28
+ readonly iconName: string;
29
+ };
30
+ /** Makes an icon component from path data (24×24, stroked in currentColor, like Lucide). The per-icon exports are
31
+ * built with it; use it for an icon of your own that should look and behave exactly like AURA's. */
32
+ export declare function defineIcon(name: string, shapes: IconShape[]): AuraIcon;
33
+ export declare const IconCheck: AuraIcon;
34
+ export declare const IconX: AuraIcon;
35
+ export declare const IconPlus: AuraIcon;
36
+ export declare const IconMinus: AuraIcon;
37
+ export declare const IconSearch: AuraIcon;
38
+ export declare const IconChevronDown: AuraIcon;
39
+ export declare const IconChevronUp: AuraIcon;
40
+ export declare const IconChevronLeft: AuraIcon;
41
+ export declare const IconChevronRight: AuraIcon;
42
+ export declare const IconArrowRight: AuraIcon;
43
+ export declare const IconArrowUpRight: AuraIcon;
44
+ export declare const IconArrowUpDown: AuraIcon;
45
+ export declare const IconLoaderCircle: AuraIcon;
46
+ export declare const IconCircleAlert: AuraIcon;
47
+ export declare const IconCircleCheck: AuraIcon;
48
+ export declare const IconInfo: AuraIcon;
49
+ export declare const IconTriangleAlert: AuraIcon;
50
+ export declare const IconSettings: AuraIcon;
51
+ export declare const IconUser: AuraIcon;
52
+ export declare const IconUsers: AuraIcon;
53
+ export declare const IconFilter: AuraIcon;
54
+ export declare const IconEllipsis: AuraIcon;
55
+ export declare const IconExternalLink: AuraIcon;
56
+ export declare const IconCopy: AuraIcon;
57
+ export declare const IconTrash2: AuraIcon;
58
+ export declare const IconPencil: AuraIcon;
59
+ export declare const IconDownload: AuraIcon;
60
+ export declare const IconUpload: AuraIcon;
61
+ export declare const IconCalendar: AuraIcon;
62
+ export declare const IconBell: AuraIcon;
63
+ export declare const IconMenu: AuraIcon;
64
+ export declare const IconEye: AuraIcon;
65
+ export declare const IconLogOut: AuraIcon;
66
+ export declare const IconCircle: AuraIcon;
67
+ export declare const IconCircleDotDashed: AuraIcon;
68
+ export declare const IconBan: AuraIcon;
69
+ export declare const IconArrowUp: AuraIcon;
70
+ export declare const IconArrowDown: AuraIcon;
71
+ export declare const IconInbox: AuraIcon;
72
+ export declare const IconPin: AuraIcon;
73
+ export declare const IconPinOff: AuraIcon;
74
+ export declare const IconEyeOff: AuraIcon;
75
+ export declare const IconColumns3: AuraIcon;
76
+ export declare const IconArrowLeft: AuraIcon;
77
+ export declare const IconRotateCcw: AuraIcon;
78
+ export declare const IconHouse: AuraIcon;
79
+ export declare const IconLayoutDashboard: AuraIcon;
80
+ export declare const IconFolder: AuraIcon;
81
+ export declare const IconChartColumn: AuraIcon;
82
+ export declare const IconFileText: AuraIcon;
83
+ export declare const IconMail: AuraIcon;
84
+ export declare const IconLock: AuraIcon;
85
+ export declare const IconClock: AuraIcon;
86
+ export declare const IconTrendingUp: AuraIcon;
87
+ export declare const IconTrendingDown: AuraIcon;
88
+ export declare const IconImage: AuraIcon;
89
+ export declare const IconPaperclip: AuraIcon;
90
+ export declare const IconCloudUpload: AuraIcon;
91
+ export declare const IconFile: AuraIcon;
92
+ export declare const IconSun: AuraIcon;
93
+ export declare const IconMoon: AuraIcon;
94
+ export declare const IconMonitor: AuraIcon;
95
+ export declare const IconPanelLeftClose: AuraIcon;
96
+ export declare const IconPanelLeftOpen: AuraIcon;
97
+ export declare const IconServer: AuraIcon;
98
+ export declare const IconGlobe: AuraIcon;
99
+ export declare const IconActivity: AuraIcon;
100
+ export declare const IconShieldAlert: AuraIcon;
101
+ export declare const IconPhone: AuraIcon;
102
+ export declare const IconWrench: AuraIcon;
103
+ /** Every icon — what `registerIcons(allIcons)` takes to keep icon names as strings working in 6.0. */
104
+ export declare const allIcons: AuraIcon[];
105
+
106
+ export {};
package/dist/index.d.cts CHANGED
@@ -223,7 +223,7 @@ export interface AuraProviderProps {
223
223
  locale?: "th" | "en" | "sv" | undefined;
224
224
  /** Default calendar for DatePicker / DateRangePicker / Calendar / formatDate callers that read it. Unset: `buddhist` (พ.ศ.) for `th`, `gregory` for `en` and `sv`. */
225
225
  calendar?: "buddhist" | "gregory" | undefined;
226
- /** Override individual strings. */
226
+ /** Override individual strings, or pass a whole locale pack (`strings={th}` from `@jirawatpyk/aura-react/locales/th`, 5.9). */
227
227
  strings?: Partial<Record<string, string | ((...args: any[]) => string)>> | undefined;
228
228
  /** IANA time zone for "today" in DatePicker, DateRangePicker and Calendar, e.g. `Asia/Bangkok` (4.19). Default: the browser's. */
229
229
  timeZone?: string | undefined;
@@ -236,8 +236,8 @@ export interface AuraProviderProps {
236
236
  /** `warning` (5.1): needs attention but still works — Warning, Problem, Degraded, At risk. */
237
237
  export type StatusTone = "neutral" | "progress" | "ready" | "warning" | "blocked";
238
238
  /** Status pill: tone fill + icon + the status word. Tone comes from the word unless given. */
239
- export interface StatusPillProps {
240
- /** The status word shown, e.g. "In Progress". */
239
+ export interface StatusPillProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children"> {
240
+ /** The status word shown, e.g. "In Progress". Other attributes (`id`, `data-*`, `aria-*`) go on the pill (5.8). */
241
241
  children: React$1.ReactNode;
242
242
  /** Force a tone. Default: matched from the word (Ready/Done → ready, In Progress/In Review → progress, Warning/Problem/Degraded/At risk → warning (5.1), Blocked/Failed → blocked, anything else → neutral). */
243
243
  tone?: StatusTone | undefined;
@@ -488,8 +488,13 @@ export interface SwitchProps {
488
488
  className?: string | undefined;
489
489
  }
490
490
  export type FeedbackTone = "info" | "success" | "warning" | "danger";
491
- export interface AlertProps {
491
+ export interface AlertProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title" | "role"> {
492
492
  tone?: FeedbackTone | undefined;
493
+ /** Default: `alert` for warning and danger, `status` otherwise (5.8). Pass `status` for a standing notice in a
494
+ * warning or danger tone that shouldn't interrupt; `note` or `none` for one that isn't a live region. */
495
+ role?: "alert" | "status" | "note" | "none" | undefined;
496
+ /** Replaces the tone's icon (5.8): a name or your own element; always hidden from screen readers. */
497
+ icon?: IconInput | undefined;
493
498
  title?: React$1.ReactNode | undefined;
494
499
  children?: React$1.ReactNode | undefined;
495
500
  /** Usually a secondary Button. */
@@ -562,7 +567,8 @@ export interface DialogProps {
562
567
  autoFocus?: boolean | undefined;
563
568
  className?: string | undefined;
564
569
  }
565
- export interface CardProps {
570
+ /** Other attributes (`id`, `data-*`, `aria-*`) go on the card's root (5.8). */
571
+ export interface CardProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "title"> {
566
572
  title?: React$1.ReactNode | undefined;
567
573
  description?: React$1.ReactNode | undefined;
568
574
  /** Top-right, usually an IconButton. */
@@ -590,6 +596,9 @@ export interface TabItem {
590
596
  /** A route (4.19). When every tab has one, Tabs renders a `nav` of links (section tabs that are pages), with
591
597
  * `aria-current="page"` on the current one and no panels. */
592
598
  href?: string | undefined;
599
+ /** Attributes for this tab's button (or link): `data-testid`, or an `aria-label` that starts with the visible
600
+ * label ("Card — switch payment method") so voice control still finds it (WCAG 2.5.3). (5.9, Chamber-OS 71) */
601
+ tabProps?: ButtonAttributes | undefined;
593
602
  }
594
603
  export interface TabsProps {
595
604
  tabs: TabItem[];
@@ -602,6 +611,12 @@ export interface TabsProps {
602
611
  /** Router link for tabs with `href`; defaults to AuraProvider's `linkComponent`, then `<a>`. (4.19) */
603
612
  linkComponent?: React$1.ElementType | undefined;
604
613
  className?: string | undefined;
614
+ /** Keep every panel mounted, the inactive ones `hidden`, so their state survives a switch (a payment iframe, a
615
+ * half-filled form). Default false: only the active panel is rendered. (5.9, Chamber-OS 71) */
616
+ keepMounted?: boolean | undefined;
617
+ /** `auto` (default): arrow keys select as they move. `manual`: arrows, Home and End only move focus; Enter, Space
618
+ * or a click selects — for tabs whose selection does work (loads data, starts a payment). (5.9) */
619
+ activation?: "auto" | "manual" | undefined;
605
620
  }
606
621
  export interface NavItem {
607
622
  id: string;
@@ -864,7 +879,14 @@ export interface DateRangePickerProps extends DateFieldProps {
864
879
  defaultValue?: DateRange | undefined;
865
880
  onChange?: ((value: DateRange) => void) | undefined;
866
881
  }
867
- export interface DrawerProps {
882
+ /** `data-*` attributes in an object prop (TypeScript checks object literals, where JSX would allow them anyway). */
883
+ export type DataAttributes = {
884
+ [key: `data-${string}`]: string | number | boolean | undefined;
885
+ };
886
+ /** Attributes for a button AURA renders for you (a Drawer's close button, a tab): `data-testid`, `aria-*`, `id`… */
887
+ export type ButtonAttributes = React$1.ButtonHTMLAttributes<HTMLButtonElement> & DataAttributes;
888
+ /** `id`, `data-*`, `aria-*`, `style`, `lang` and `dir` go on the `.aura-drawer` panel (5.9, Chamber-OS 70). */
889
+ export interface DrawerProps extends Pick<React$1.HTMLAttributes<HTMLDivElement>, "id" | "style" | "lang" | "dir">, React$1.AriaAttributes, DataAttributes {
868
890
  open: boolean;
869
891
  onClose: () => void;
870
892
  /** Default `right`. */
@@ -885,6 +907,11 @@ export interface DrawerProps {
885
907
  /** Needed when there is no title. */
886
908
  "aria-label"?: string | undefined;
887
909
  className?: string | undefined;
910
+ /** The close button's accessible name and tooltip, saying what it closes ("Close payment drawer"). Default: the
911
+ * built-in "Close" in the provider's language. (5.9) */
912
+ closeLabel?: string | undefined;
913
+ /** Attributes for the close button, e.g. `{ 'data-testid': 'pay-sheet-close' }`. (5.9) */
914
+ closeProps?: ButtonAttributes | undefined;
888
915
  }
889
916
  export type Breakpoint = "base" | "sm" | "md" | "lg" | "xl";
890
917
  export type Responsive<T> = T | Partial<Record<Breakpoint, T>>;
@@ -943,6 +970,10 @@ export interface TableProps extends Omit<React$1.TableHTMLAttributes<HTMLTableEl
943
970
  captionHidden?: boolean | undefined;
944
971
  /** `compact` tightens the cell padding. Default follows the page. */
945
972
  density?: "comfortable" | "compact" | undefined;
973
+ /** Below this width of the table's box (5.8) — `sm` 640px, `md` 768px — each body row becomes a card and each
974
+ * cell shows its column's header as a label: a `Td`'s `label`, else the text of the matching `Th` in `THead`.
975
+ * Done in CSS (a container query), so the server's HTML is already right; table semantics are kept. */
976
+ stackBelow?: "sm" | "md" | undefined;
946
977
  className?: string | undefined;
947
978
  children?: React$1.ReactNode | undefined;
948
979
  }
@@ -961,6 +992,8 @@ export interface TableCellProps extends Omit<React$1.TdHTMLAttributes<HTMLTableC
961
992
  mono?: boolean | undefined;
962
993
  /** Th only. Default `col`. */
963
994
  scope?: "col" | "row" | "colgroup" | "rowgroup" | undefined;
995
+ /** The label this cell shows when its table is stacked (`stackBelow`, 5.8). Default: the matching header's text. */
996
+ label?: string | undefined;
964
997
  className?: string | undefined;
965
998
  }
966
999
  export interface ActionBarProps {
@@ -1235,7 +1268,22 @@ export type IconShape = [
1235
1268
  string,
1236
1269
  Record<string, string>
1237
1270
  ];
1271
+ /** An AURA icon component from `@jirawatpyk/aura-react/icons` (5.9), e.g. `IconUsers`. */
1272
+ export type AuraIcon = React$1.ForwardRefExoticComponent<Omit<IconProps, "name"> & React$1.RefAttributes<SVGSVGElement>> & {
1273
+ /** The icon's path data. */
1274
+ readonly auraShapes: IconShape[];
1275
+ /** Its name in the set, e.g. `users`. */
1276
+ readonly iconName: string;
1277
+ };
1278
+ /** @deprecated 5.9 — path data by name. In 6.0 it is removed; use the per-icon components or `allIcons` from
1279
+ * `@jirawatpyk/aura-react/icons`. */
1238
1280
  export declare const ICONS: Record<IconName, IconShape[]>;
1281
+ /** Makes icon names as strings work: `registerIcons(allIcons)` once at startup, with `allIcons` from
1282
+ * `@jirawatpyk/aura-react/icons`, or only the icons you use (`registerIcons([IconUsers, IconPlus])`). In 5.x every
1283
+ * name already works and this only says you are ready for 6.0 (it silences the notice); in 6.0 it is required. Call it in the module
1284
+ * graph that renders the names: a client module for the components, and also a server module if Server Components
1285
+ * render names with `/server`'s Icon (the two entries keep separate registries). */
1286
+ export declare function registerIcons(icons: readonly AuraIcon[]): void;
1239
1287
  export declare const Icon: React$1.ForwardRefExoticComponent<IconProps & React$1.RefAttributes<SVGSVGElement>>;
1240
1288
  /** Every icon name the bundle carries. */
1241
1289
  export declare const iconNames: IconName[];
@@ -1306,6 +1354,15 @@ export declare const Calendar: React$1.ForwardRefExoticComponent<CalendarProps &
1306
1354
  /** Typed date field + calendar popover. English / Gregorian unless a locale is set; `th` shows Buddhist-era dates (18 ก.ย. 2569) and accepts พ.ศ. or ค.ศ. years. The value is always a Gregorian ISO date. */
1307
1355
  export declare const DatePicker: React$1.ForwardRefExoticComponent<DatePickerProps & React$1.RefAttributes<HTMLInputElement>>;
1308
1356
  export declare const DateRangePicker: React$1.ForwardRefExoticComponent<DateRangePickerProps & React$1.RefAttributes<HTMLInputElement>>;
1357
+ /** The class list of a Button (5.8): put it on your own link or `<Link>` to make it look like one, e.g. in a Server
1358
+ * Component — `<Link href="/renew" className={buttonClass({ variant: 'secondary' })}>Renew</Link>`. */
1359
+ export declare function buttonClass(opts?: {
1360
+ variant?: ButtonProps["variant"];
1361
+ size?: ButtonProps["size"];
1362
+ fullWidth?: boolean | undefined;
1363
+ loading?: boolean | undefined;
1364
+ className?: string | undefined;
1365
+ }): string;
1309
1366
  export declare const Alert: React$1.ForwardRefExoticComponent<AlertProps & React$1.RefAttributes<HTMLDivElement>>;
1310
1367
  /** Show a toast; returns its id. Needs `<Toaster />` mounted once. */
1311
1368
  export declare function toast(opts: ToastOptions | string): string;
@@ -1488,6 +1545,12 @@ export interface AuraStrings {
1488
1545
  pageN: (p: number) => string;
1489
1546
  accepts: (list?: string, max?: number | string) => string;
1490
1547
  }
1548
+ /** Built-in strings by locale. th and sv also ship as packs (`@jirawatpyk/aura-react/locales/th`, `/sv`, 5.9); in 6.0
1549
+ * only en stays built in and a Thai or Swedish app passes its pack to AuraProvider `strings`. */
1550
+ /** A whole language for AuraProvider `strings` (5.9): every built-in label, and assignable to the prop. */
1551
+ export type AuraLocalePack = AuraStrings & {
1552
+ [key: string]: string | ((...args: any[]) => string);
1553
+ };
1491
1554
  export declare const STRINGS: {
1492
1555
  en: AuraStrings;
1493
1556
  th: AuraStrings;
package/dist/index.d.ts CHANGED
@@ -223,7 +223,7 @@ export interface AuraProviderProps {
223
223
  locale?: "th" | "en" | "sv" | undefined;
224
224
  /** Default calendar for DatePicker / DateRangePicker / Calendar / formatDate callers that read it. Unset: `buddhist` (พ.ศ.) for `th`, `gregory` for `en` and `sv`. */
225
225
  calendar?: "buddhist" | "gregory" | undefined;
226
- /** Override individual strings. */
226
+ /** Override individual strings, or pass a whole locale pack (`strings={th}` from `@jirawatpyk/aura-react/locales/th`, 5.9). */
227
227
  strings?: Partial<Record<string, string | ((...args: any[]) => string)>> | undefined;
228
228
  /** IANA time zone for "today" in DatePicker, DateRangePicker and Calendar, e.g. `Asia/Bangkok` (4.19). Default: the browser's. */
229
229
  timeZone?: string | undefined;
@@ -236,8 +236,8 @@ export interface AuraProviderProps {
236
236
  /** `warning` (5.1): needs attention but still works — Warning, Problem, Degraded, At risk. */
237
237
  export type StatusTone = "neutral" | "progress" | "ready" | "warning" | "blocked";
238
238
  /** Status pill: tone fill + icon + the status word. Tone comes from the word unless given. */
239
- export interface StatusPillProps {
240
- /** The status word shown, e.g. "In Progress". */
239
+ export interface StatusPillProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children"> {
240
+ /** The status word shown, e.g. "In Progress". Other attributes (`id`, `data-*`, `aria-*`) go on the pill (5.8). */
241
241
  children: React$1.ReactNode;
242
242
  /** Force a tone. Default: matched from the word (Ready/Done → ready, In Progress/In Review → progress, Warning/Problem/Degraded/At risk → warning (5.1), Blocked/Failed → blocked, anything else → neutral). */
243
243
  tone?: StatusTone | undefined;
@@ -488,8 +488,13 @@ export interface SwitchProps {
488
488
  className?: string | undefined;
489
489
  }
490
490
  export type FeedbackTone = "info" | "success" | "warning" | "danger";
491
- export interface AlertProps {
491
+ export interface AlertProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title" | "role"> {
492
492
  tone?: FeedbackTone | undefined;
493
+ /** Default: `alert` for warning and danger, `status` otherwise (5.8). Pass `status` for a standing notice in a
494
+ * warning or danger tone that shouldn't interrupt; `note` or `none` for one that isn't a live region. */
495
+ role?: "alert" | "status" | "note" | "none" | undefined;
496
+ /** Replaces the tone's icon (5.8): a name or your own element; always hidden from screen readers. */
497
+ icon?: IconInput | undefined;
493
498
  title?: React$1.ReactNode | undefined;
494
499
  children?: React$1.ReactNode | undefined;
495
500
  /** Usually a secondary Button. */
@@ -562,7 +567,8 @@ export interface DialogProps {
562
567
  autoFocus?: boolean | undefined;
563
568
  className?: string | undefined;
564
569
  }
565
- export interface CardProps {
570
+ /** Other attributes (`id`, `data-*`, `aria-*`) go on the card's root (5.8). */
571
+ export interface CardProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "title"> {
566
572
  title?: React$1.ReactNode | undefined;
567
573
  description?: React$1.ReactNode | undefined;
568
574
  /** Top-right, usually an IconButton. */
@@ -590,6 +596,9 @@ export interface TabItem {
590
596
  /** A route (4.19). When every tab has one, Tabs renders a `nav` of links (section tabs that are pages), with
591
597
  * `aria-current="page"` on the current one and no panels. */
592
598
  href?: string | undefined;
599
+ /** Attributes for this tab's button (or link): `data-testid`, or an `aria-label` that starts with the visible
600
+ * label ("Card — switch payment method") so voice control still finds it (WCAG 2.5.3). (5.9, Chamber-OS 71) */
601
+ tabProps?: ButtonAttributes | undefined;
593
602
  }
594
603
  export interface TabsProps {
595
604
  tabs: TabItem[];
@@ -602,6 +611,12 @@ export interface TabsProps {
602
611
  /** Router link for tabs with `href`; defaults to AuraProvider's `linkComponent`, then `<a>`. (4.19) */
603
612
  linkComponent?: React$1.ElementType | undefined;
604
613
  className?: string | undefined;
614
+ /** Keep every panel mounted, the inactive ones `hidden`, so their state survives a switch (a payment iframe, a
615
+ * half-filled form). Default false: only the active panel is rendered. (5.9, Chamber-OS 71) */
616
+ keepMounted?: boolean | undefined;
617
+ /** `auto` (default): arrow keys select as they move. `manual`: arrows, Home and End only move focus; Enter, Space
618
+ * or a click selects — for tabs whose selection does work (loads data, starts a payment). (5.9) */
619
+ activation?: "auto" | "manual" | undefined;
605
620
  }
606
621
  export interface NavItem {
607
622
  id: string;
@@ -864,7 +879,14 @@ export interface DateRangePickerProps extends DateFieldProps {
864
879
  defaultValue?: DateRange | undefined;
865
880
  onChange?: ((value: DateRange) => void) | undefined;
866
881
  }
867
- export interface DrawerProps {
882
+ /** `data-*` attributes in an object prop (TypeScript checks object literals, where JSX would allow them anyway). */
883
+ export type DataAttributes = {
884
+ [key: `data-${string}`]: string | number | boolean | undefined;
885
+ };
886
+ /** Attributes for a button AURA renders for you (a Drawer's close button, a tab): `data-testid`, `aria-*`, `id`… */
887
+ export type ButtonAttributes = React$1.ButtonHTMLAttributes<HTMLButtonElement> & DataAttributes;
888
+ /** `id`, `data-*`, `aria-*`, `style`, `lang` and `dir` go on the `.aura-drawer` panel (5.9, Chamber-OS 70). */
889
+ export interface DrawerProps extends Pick<React$1.HTMLAttributes<HTMLDivElement>, "id" | "style" | "lang" | "dir">, React$1.AriaAttributes, DataAttributes {
868
890
  open: boolean;
869
891
  onClose: () => void;
870
892
  /** Default `right`. */
@@ -885,6 +907,11 @@ export interface DrawerProps {
885
907
  /** Needed when there is no title. */
886
908
  "aria-label"?: string | undefined;
887
909
  className?: string | undefined;
910
+ /** The close button's accessible name and tooltip, saying what it closes ("Close payment drawer"). Default: the
911
+ * built-in "Close" in the provider's language. (5.9) */
912
+ closeLabel?: string | undefined;
913
+ /** Attributes for the close button, e.g. `{ 'data-testid': 'pay-sheet-close' }`. (5.9) */
914
+ closeProps?: ButtonAttributes | undefined;
888
915
  }
889
916
  export type Breakpoint = "base" | "sm" | "md" | "lg" | "xl";
890
917
  export type Responsive<T> = T | Partial<Record<Breakpoint, T>>;
@@ -943,6 +970,10 @@ export interface TableProps extends Omit<React$1.TableHTMLAttributes<HTMLTableEl
943
970
  captionHidden?: boolean | undefined;
944
971
  /** `compact` tightens the cell padding. Default follows the page. */
945
972
  density?: "comfortable" | "compact" | undefined;
973
+ /** Below this width of the table's box (5.8) — `sm` 640px, `md` 768px — each body row becomes a card and each
974
+ * cell shows its column's header as a label: a `Td`'s `label`, else the text of the matching `Th` in `THead`.
975
+ * Done in CSS (a container query), so the server's HTML is already right; table semantics are kept. */
976
+ stackBelow?: "sm" | "md" | undefined;
946
977
  className?: string | undefined;
947
978
  children?: React$1.ReactNode | undefined;
948
979
  }
@@ -961,6 +992,8 @@ export interface TableCellProps extends Omit<React$1.TdHTMLAttributes<HTMLTableC
961
992
  mono?: boolean | undefined;
962
993
  /** Th only. Default `col`. */
963
994
  scope?: "col" | "row" | "colgroup" | "rowgroup" | undefined;
995
+ /** The label this cell shows when its table is stacked (`stackBelow`, 5.8). Default: the matching header's text. */
996
+ label?: string | undefined;
964
997
  className?: string | undefined;
965
998
  }
966
999
  export interface ActionBarProps {
@@ -1235,7 +1268,22 @@ export type IconShape = [
1235
1268
  string,
1236
1269
  Record<string, string>
1237
1270
  ];
1271
+ /** An AURA icon component from `@jirawatpyk/aura-react/icons` (5.9), e.g. `IconUsers`. */
1272
+ export type AuraIcon = React$1.ForwardRefExoticComponent<Omit<IconProps, "name"> & React$1.RefAttributes<SVGSVGElement>> & {
1273
+ /** The icon's path data. */
1274
+ readonly auraShapes: IconShape[];
1275
+ /** Its name in the set, e.g. `users`. */
1276
+ readonly iconName: string;
1277
+ };
1278
+ /** @deprecated 5.9 — path data by name. In 6.0 it is removed; use the per-icon components or `allIcons` from
1279
+ * `@jirawatpyk/aura-react/icons`. */
1238
1280
  export declare const ICONS: Record<IconName, IconShape[]>;
1281
+ /** Makes icon names as strings work: `registerIcons(allIcons)` once at startup, with `allIcons` from
1282
+ * `@jirawatpyk/aura-react/icons`, or only the icons you use (`registerIcons([IconUsers, IconPlus])`). In 5.x every
1283
+ * name already works and this only says you are ready for 6.0 (it silences the notice); in 6.0 it is required. Call it in the module
1284
+ * graph that renders the names: a client module for the components, and also a server module if Server Components
1285
+ * render names with `/server`'s Icon (the two entries keep separate registries). */
1286
+ export declare function registerIcons(icons: readonly AuraIcon[]): void;
1239
1287
  export declare const Icon: React$1.ForwardRefExoticComponent<IconProps & React$1.RefAttributes<SVGSVGElement>>;
1240
1288
  /** Every icon name the bundle carries. */
1241
1289
  export declare const iconNames: IconName[];
@@ -1306,6 +1354,15 @@ export declare const Calendar: React$1.ForwardRefExoticComponent<CalendarProps &
1306
1354
  /** Typed date field + calendar popover. English / Gregorian unless a locale is set; `th` shows Buddhist-era dates (18 ก.ย. 2569) and accepts พ.ศ. or ค.ศ. years. The value is always a Gregorian ISO date. */
1307
1355
  export declare const DatePicker: React$1.ForwardRefExoticComponent<DatePickerProps & React$1.RefAttributes<HTMLInputElement>>;
1308
1356
  export declare const DateRangePicker: React$1.ForwardRefExoticComponent<DateRangePickerProps & React$1.RefAttributes<HTMLInputElement>>;
1357
+ /** The class list of a Button (5.8): put it on your own link or `<Link>` to make it look like one, e.g. in a Server
1358
+ * Component — `<Link href="/renew" className={buttonClass({ variant: 'secondary' })}>Renew</Link>`. */
1359
+ export declare function buttonClass(opts?: {
1360
+ variant?: ButtonProps["variant"];
1361
+ size?: ButtonProps["size"];
1362
+ fullWidth?: boolean | undefined;
1363
+ loading?: boolean | undefined;
1364
+ className?: string | undefined;
1365
+ }): string;
1309
1366
  export declare const Alert: React$1.ForwardRefExoticComponent<AlertProps & React$1.RefAttributes<HTMLDivElement>>;
1310
1367
  /** Show a toast; returns its id. Needs `<Toaster />` mounted once. */
1311
1368
  export declare function toast(opts: ToastOptions | string): string;
@@ -1488,6 +1545,12 @@ export interface AuraStrings {
1488
1545
  pageN: (p: number) => string;
1489
1546
  accepts: (list?: string, max?: number | string) => string;
1490
1547
  }
1548
+ /** Built-in strings by locale. th and sv also ship as packs (`@jirawatpyk/aura-react/locales/th`, `/sv`, 5.9); in 6.0
1549
+ * only en stays built in and a Thai or Swedish app passes its pack to AuraProvider `strings`. */
1550
+ /** A whole language for AuraProvider `strings` (5.9): every built-in label, and assignable to the prop. */
1551
+ export type AuraLocalePack = AuraStrings & {
1552
+ [key: string]: string | ((...args: any[]) => string);
1553
+ };
1491
1554
  export declare const STRINGS: {
1492
1555
  en: AuraStrings;
1493
1556
  th: AuraStrings;