@blakesteve/roster 5.6.0 → 5.8.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 (99) hide show
  1. package/README.md +190 -5
  2. package/dist/components/atoms/Avatar/Avatar.cjs +1 -1
  3. package/dist/components/atoms/Avatar/Avatar.d.ts +4 -0
  4. package/dist/components/atoms/Avatar/Avatar.js +1 -1
  5. package/dist/components/atoms/AvatarStrip/AvatarStrip.cjs +1 -1
  6. package/dist/components/atoms/AvatarStrip/AvatarStrip.d.ts +10 -1
  7. package/dist/components/atoms/AvatarStrip/AvatarStrip.js +34 -30
  8. package/dist/components/atoms/Button/button-variants.cjs +1 -1
  9. package/dist/components/atoms/Button/button-variants.js +5 -3
  10. package/dist/components/atoms/Eyebrow/eyebrow-variants.cjs +1 -1
  11. package/dist/components/atoms/Eyebrow/eyebrow-variants.js +8 -4
  12. package/dist/components/atoms/LoadingDots/LoadingDots.cjs +1 -0
  13. package/dist/components/atoms/LoadingDots/LoadingDots.d.ts +20 -0
  14. package/dist/components/atoms/LoadingDots/LoadingDots.js +43 -0
  15. package/dist/components/atoms/MultiSelect/MultiSelect.cjs +1 -1
  16. package/dist/components/atoms/MultiSelect/MultiSelect.d.ts +3 -1
  17. package/dist/components/atoms/MultiSelect/MultiSelect.js +87 -89
  18. package/dist/components/atoms/Progress/Progress.cjs +1 -0
  19. package/dist/components/atoms/Progress/Progress.d.ts +62 -0
  20. package/dist/components/atoms/Progress/Progress.js +107 -0
  21. package/dist/components/atoms/Progress/progress-values.cjs +1 -0
  22. package/dist/components/atoms/Progress/progress-values.d.ts +26 -0
  23. package/dist/components/atoms/Progress/progress-values.js +12 -0
  24. package/dist/components/atoms/Skeleton/Skeleton.cjs +1 -0
  25. package/dist/components/atoms/Skeleton/Skeleton.d.ts +79 -0
  26. package/dist/components/atoms/Skeleton/Skeleton.js +80 -0
  27. package/dist/components/atoms/Stat/Stat.cjs +1 -1
  28. package/dist/components/atoms/Stat/Stat.js +19 -19
  29. package/dist/components/atoms/Stat/stat-variants.cjs +1 -1
  30. package/dist/components/atoms/Stat/stat-variants.d.ts +1 -0
  31. package/dist/components/atoms/Stat/stat-variants.js +10 -7
  32. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.cjs +1 -1
  33. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.d.ts +10 -1
  34. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.js +31 -29
  35. package/dist/components/molecules/CallToAction/CallToAction.cjs +1 -1
  36. package/dist/components/molecules/CallToAction/CallToAction.d.ts +8 -1
  37. package/dist/components/molecules/CallToAction/CallToAction.js +34 -29
  38. package/dist/components/molecules/Carousel/Carousel.cjs +1 -1
  39. package/dist/components/molecules/Carousel/Carousel.d.ts +7 -0
  40. package/dist/components/molecules/Carousel/Carousel.js +155 -155
  41. package/dist/components/molecules/ErrorState/ErrorState.cjs +1 -1
  42. package/dist/components/molecules/ErrorState/ErrorState.d.ts +8 -1
  43. package/dist/components/molecules/ErrorState/ErrorState.js +44 -39
  44. package/dist/components/molecules/FileUpload/FileUpload.cjs +1 -1
  45. package/dist/components/molecules/FileUpload/FileUpload.js +122 -142
  46. package/dist/components/molecules/MediaPreview/MediaPreview.cjs +1 -1
  47. package/dist/components/molecules/MediaPreview/MediaPreview.d.ts +3 -1
  48. package/dist/components/molecules/MediaPreview/MediaPreview.js +13 -12
  49. package/dist/components/molecules/Pagination/Pagination.cjs +1 -1
  50. package/dist/components/molecules/Pagination/Pagination.d.ts +1 -0
  51. package/dist/components/molecules/Pagination/Pagination.js +47 -46
  52. package/dist/components/molecules/ProgressField/ProgressField.cjs +1 -0
  53. package/dist/components/molecules/ProgressField/ProgressField.d.ts +24 -0
  54. package/dist/components/molecules/ProgressField/ProgressField.js +32 -0
  55. package/dist/components/molecules/SkeletonPresets/SkeletonPresets.cjs +1 -0
  56. package/dist/components/molecules/SkeletonPresets/SkeletonPresets.d.ts +55 -0
  57. package/dist/components/molecules/SkeletonPresets/SkeletonPresets.js +45 -0
  58. package/dist/components/molecules/StepProgress/StepProgress.cjs +1 -0
  59. package/dist/components/molecules/StepProgress/StepProgress.d.ts +37 -0
  60. package/dist/components/molecules/StepProgress/StepProgress.js +90 -0
  61. package/dist/components/organisms/Countdown/Countdown.cjs +1 -1
  62. package/dist/components/organisms/Countdown/Countdown.d.ts +13 -0
  63. package/dist/components/organisms/Countdown/Countdown.js +54 -47
  64. package/dist/components/organisms/DataTable/DataTable.cjs +1 -1
  65. package/dist/components/organisms/DataTable/DataTable.d.ts +5 -3
  66. package/dist/components/organisms/DataTable/DataTable.js +27 -26
  67. package/dist/components/organisms/Dialog/Dialog.cjs +1 -1
  68. package/dist/components/organisms/Dialog/Dialog.d.ts +9 -2
  69. package/dist/components/organisms/Dialog/Dialog.js +25 -23
  70. package/dist/components/organisms/Footer/Footer.cjs +1 -1
  71. package/dist/components/organisms/Footer/Footer.d.ts +9 -0
  72. package/dist/components/organisms/Footer/Footer.js +21 -23
  73. package/dist/components/organisms/ModerationQueue/ModerationQueue.cjs +1 -1
  74. package/dist/components/organisms/ModerationQueue/ModerationQueue.d.ts +40 -1
  75. package/dist/components/organisms/ModerationQueue/ModerationQueue.js +262 -237
  76. package/dist/components/organisms/ModerationQueue/QueueEditDialog.cjs +1 -1
  77. package/dist/components/organisms/ModerationQueue/QueueEditDialog.d.ts +1 -1
  78. package/dist/components/organisms/ModerationQueue/QueueEditDialog.js +23 -21
  79. package/dist/components/organisms/ModerationQueue/QueueEditSheet.cjs +1 -1
  80. package/dist/components/organisms/ModerationQueue/QueueEditSheet.d.ts +1 -1
  81. package/dist/components/organisms/ModerationQueue/QueueEditSheet.js +22 -20
  82. package/dist/components/organisms/ModerationQueue/queue-actions.d.ts +29 -10
  83. package/dist/components/organisms/Navbar/Navbar.cjs +1 -1
  84. package/dist/components/organisms/Navbar/Navbar.d.ts +38 -3
  85. package/dist/components/organisms/Navbar/Navbar.js +210 -187
  86. package/dist/components/organisms/Navbar/navbar-variants.cjs +1 -1
  87. package/dist/components/organisms/Navbar/navbar-variants.js +4 -2
  88. package/dist/components/organisms/Sheet/Sheet.cjs +1 -1
  89. package/dist/components/organisms/Sheet/Sheet.d.ts +8 -1
  90. package/dist/components/organisms/Sheet/Sheet.js +65 -63
  91. package/dist/index.d.ts +6 -0
  92. package/dist/lib/labels.cjs +1 -0
  93. package/dist/lib/labels.d.ts +7 -0
  94. package/dist/lib/labels.js +12 -0
  95. package/dist/meta.json +3 -3
  96. package/dist/roster.cjs +1 -1
  97. package/dist/roster.css +1 -1
  98. package/dist/roster.js +174 -157
  99. package/package.json +1 -1
@@ -1,89 +1,96 @@
1
1
  "use client";
2
- import { jsx as t, jsxs as o } from "react/jsx-runtime";
2
+ import { jsx as t, jsxs as d } from "react/jsx-runtime";
3
3
  import N from "react";
4
- import { cn as s } from "../../../lib/utils.js";
5
- import { useCountdown as b } from "../../../hooks/useCountdown.js";
6
- import { countdownTitleVariants as i, countdownNumberVariants as g, countdownLabelVariants as y } from "./countdown-variants.js";
7
- const n = ({ value: l, label: a, size: r, variant: e }) => /* @__PURE__ */ o("div", { className: "rst:flex rst:flex-col rst:items-center", children: [
8
- /* @__PURE__ */ t("span", { className: s(g({ size: r, variant: e })), children: String(l).padStart(2, "0") }),
4
+ import { cn as e } from "../../../lib/utils.js";
5
+ import { withLabels as g } from "../../../lib/labels.js";
6
+ import { useCountdown as v } from "../../../hooks/useCountdown.js";
7
+ import { countdownTitleVariants as w, countdownNumberVariants as C, countdownLabelVariants as L } from "./countdown-variants.js";
8
+ const l = ({ value: o, label: n, size: r, variant: s }) => /* @__PURE__ */ d("div", { className: "rst:flex rst:flex-col rst:items-center", children: [
9
+ /* @__PURE__ */ t("span", { className: e(C({ size: r, variant: s })), children: String(o).padStart(2, "0") }),
9
10
  /* @__PURE__ */ t(
10
11
  "span",
11
12
  {
12
- className: s(
13
- y({ size: r }),
13
+ className: e(
14
+ L({ size: r }),
14
15
  "rst:@max-[22rem]:text-[9px]"
15
16
  ),
16
- children: a
17
+ children: n
17
18
  }
18
19
  )
19
- ] }), v = N.forwardRef(
20
+ ] }), S = {
21
+ days: () => "Days",
22
+ hours: () => "Hours",
23
+ minutes: () => "Minutes",
24
+ seconds: () => "Seconds"
25
+ }, j = N.forwardRef(
20
26
  ({
21
- targetDate: l,
22
- title: a,
27
+ targetDate: o,
28
+ title: n,
23
29
  size: r,
24
- variant: e = "gradient",
25
- className: d,
26
- completionText: c,
27
- ...m
28
- }, u) => {
29
- const { days: f, hours: x, minutes: h, seconds: p, isFinished: w } = b(l);
30
- return w ? c ? /* @__PURE__ */ t(
30
+ variant: s = "gradient",
31
+ className: c,
32
+ completionText: m,
33
+ labels: b,
34
+ ...u
35
+ }, i) => {
36
+ const a = g(S, b), { days: f, hours: h, minutes: x, seconds: p, isFinished: y } = v(o);
37
+ return y ? m ? /* @__PURE__ */ t(
31
38
  "div",
32
39
  {
33
- ref: u,
34
- className: s(
40
+ ref: i,
41
+ className: e(
35
42
  "rst:font-bold rst:w-full rst:text-center rst:text-gray-900 rst:dark:text-gray-100",
36
- d
43
+ c
37
44
  ),
38
- ...m,
39
- children: /* @__PURE__ */ t("h3", { className: s(i({ size: r }), "rst:mb-0"), children: c })
45
+ ...u,
46
+ children: /* @__PURE__ */ t("h3", { className: e(w({ size: r }), "rst:mb-0"), children: m })
40
47
  }
41
48
  ) : null : /* @__PURE__ */ t(
42
49
  "div",
43
50
  {
44
- ref: u,
45
- className: s(
51
+ ref: i,
52
+ className: e(
46
53
  "rst:font-bold rst:w-full rst:text-center rst:text-gray-900 rst:dark:text-gray-100",
47
- d
54
+ c
48
55
  ),
49
- ...m,
50
- children: /* @__PURE__ */ o("div", { className: "rst:@container rst:w-full", children: [
51
- a && /* @__PURE__ */ t("h3", { className: s(i({ size: r })), children: a }),
52
- /* @__PURE__ */ o("div", { className: "rst:flex rst:justify-center rst:gap-3 rst:@[22rem]:gap-6 rst:@[35rem]:gap-8", children: [
56
+ ...u,
57
+ children: /* @__PURE__ */ d("div", { className: "rst:@container rst:w-full", children: [
58
+ n && /* @__PURE__ */ t("h3", { className: e(w({ size: r })), children: n }),
59
+ /* @__PURE__ */ d("div", { className: "rst:flex rst:justify-center rst:gap-3 rst:@[22rem]:gap-6 rst:@[35rem]:gap-8", children: [
53
60
  /* @__PURE__ */ t(
54
- n,
61
+ l,
55
62
  {
56
63
  value: f,
57
- label: "Days",
64
+ label: a.days(f),
58
65
  size: r,
59
- variant: e
66
+ variant: s
60
67
  }
61
68
  ),
62
69
  /* @__PURE__ */ t(
63
- n,
70
+ l,
64
71
  {
65
- value: x,
66
- label: "Hours",
72
+ value: h,
73
+ label: a.hours(h),
67
74
  size: r,
68
- variant: e
75
+ variant: s
69
76
  }
70
77
  ),
71
78
  /* @__PURE__ */ t(
72
- n,
79
+ l,
73
80
  {
74
- value: h,
75
- label: "Minutes",
81
+ value: x,
82
+ label: a.minutes(x),
76
83
  size: r,
77
- variant: e
84
+ variant: s
78
85
  }
79
86
  ),
80
87
  /* @__PURE__ */ t(
81
- n,
88
+ l,
82
89
  {
83
90
  value: p,
84
- label: "Seconds",
91
+ label: a.seconds(p),
85
92
  size: r,
86
- variant: e
93
+ variant: s
87
94
  }
88
95
  )
89
96
  ] })
@@ -92,7 +99,7 @@ const n = ({ value: l, label: a, size: r, variant: e }) => /* @__PURE__ */ o("di
92
99
  );
93
100
  }
94
101
  );
95
- v.displayName = "Countdown";
102
+ j.displayName = "Countdown";
96
103
  export {
97
- v as Countdown
104
+ j as Countdown
98
105
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),y=require("react"),a=require("@tanstack/react-table"),c=require("../../../node_modules/@fortawesome/react-fontawesome/dist/index.cjs"),g=require("../../../node_modules/@fortawesome/free-solid-svg-icons/index.cjs"),l=require("../../../lib/utils.cjs"),h=require("../../molecules/Pagination/Pagination.cjs"),r=require("../Table/Table.cjs"),T=a.tableFeatures({rowSortingFeature:a.rowSortingFeature,rowPaginationFeature:a.rowPaginationFeature,sortedRowModel:a.createSortedRowModel(),paginatedRowModel:a.createPaginatedRowModel(),sortFns:a.sortFns});function C({columns:i,data:d,className:u,tableClassName:x,paginationClassName:m,variant:p="default",size:f="md",hoverable:j=!1,paginationLabels:o}){const[w,b]=y.useState([]),s=a.useTable({features:T,data:d,columns:i,onSortingChange:b,state:{sorting:w},initialState:{pagination:{pageIndex:0,pageSize:10}}});return e.jsxs("div",{className:l.cn("rst:font-ui rst:flex rst:flex-col rst:gap-4",u),children:[e.jsxs(r.Table,{variant:p,size:f,hoverable:j,className:x,children:[e.jsx(r.TableHeader,{children:s.getHeaderGroups().map(n=>e.jsx(r.TableRow,{children:n.headers.map(t=>e.jsx(r.TableHead,{children:t.isPlaceholder?null:e.jsxs("div",{className:l.cn("rst:flex rst:items-center rst:gap-2 rst:transition-opacity",t.column.getCanSort()&&"rst:cursor-pointer rst:select-none rst:opacity-80 rst:hover:opacity-100"),onClick:t.column.getToggleSortingHandler(),children:[a.flexRender(t.column.columnDef.header,t.getContext()),t.column.getCanSort()&&e.jsx("span",{className:"rst:w-4 rst:flex rst:justify-center rst:text-primary-500",children:t.column.getIsSorted()==="asc"?e.jsx(c.FontAwesomeIcon,{icon:g.faCaretUp}):t.column.getIsSorted()==="desc"?e.jsx(c.FontAwesomeIcon,{icon:g.faCaretDown}):null})]})},t.id))},n.id))}),e.jsx(r.TableBody,{children:s.getRowModel().rows?.length?s.getRowModel().rows.map(n=>e.jsx(r.TableRow,{children:n.getAllCells().map(t=>e.jsx(r.TableCell,{children:a.flexRender(t.column.columnDef.cell,t.getContext())},t.id))},n.id)):e.jsx(r.TableRow,{children:e.jsx(r.TableCell,{colSpan:i.length,className:"rst:h-24 rst:text-center rst:text-gray-500 rst:dark:text-gray-400 rst:italic",children:"No results found."})})})]}),e.jsxs("div",{className:l.cn("rst:flex rst:flex-col rst:sm:flex-row rst:items-center rst:justify-between rst:gap-4 rst:px-2",m),children:[e.jsx("div",{className:"rst:text-sm rst:font-medium rst:text-gray-500 rst:dark:text-gray-400",children:o?.status?o.status(s.state.pagination.pageIndex+1,s.getPageCount()):e.jsxs(e.Fragment,{children:["Page"," ",e.jsx("strong",{className:"rst:text-gray-900 rst:dark:text-gray-100",children:s.state.pagination.pageIndex+1})," ","of"," ",e.jsx("strong",{className:"rst:text-gray-900 rst:dark:text-gray-100",children:s.getPageCount()})]})}),e.jsx(h.Pagination,{layout:"arrows",align:"end",variant:"outline",page:s.state.pagination.pageIndex+1,pageCount:s.getPageCount(),onPageChange:n=>s.setPageIndex(n-1),labels:o})]})]})}exports.DataTable=C;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),h=require("react"),a=require("@tanstack/react-table"),c=require("../../../node_modules/@fortawesome/react-fontawesome/dist/index.cjs"),g=require("../../../node_modules/@fortawesome/free-solid-svg-icons/index.cjs"),l=require("../../../lib/utils.cjs"),T=require("../../molecules/Pagination/Pagination.cjs"),r=require("../Table/Table.cjs"),C=a.tableFeatures({rowSortingFeature:a.rowSortingFeature,rowPaginationFeature:a.rowPaginationFeature,sortedRowModel:a.createSortedRowModel(),paginatedRowModel:a.createPaginatedRowModel(),sortFns:a.sortFns});function S({columns:i,data:d,className:u,tableClassName:x,paginationClassName:m,variant:p="default",size:f="md",hoverable:j=!1,paginationLabels:o,emptyMessage:w="No results found."}){const[b,y]=h.useState([]),s=a.useTable({features:C,data:d,columns:i,onSortingChange:y,state:{sorting:b},initialState:{pagination:{pageIndex:0,pageSize:10}}});return e.jsxs("div",{className:l.cn("rst:font-ui rst:flex rst:flex-col rst:gap-4",u),children:[e.jsxs(r.Table,{variant:p,size:f,hoverable:j,className:x,children:[e.jsx(r.TableHeader,{children:s.getHeaderGroups().map(n=>e.jsx(r.TableRow,{children:n.headers.map(t=>e.jsx(r.TableHead,{children:t.isPlaceholder?null:e.jsxs("div",{className:l.cn("rst:flex rst:items-center rst:gap-2 rst:transition-opacity",t.column.getCanSort()&&"rst:cursor-pointer rst:select-none rst:opacity-80 rst:hover:opacity-100"),onClick:t.column.getToggleSortingHandler(),children:[a.flexRender(t.column.columnDef.header,t.getContext()),t.column.getCanSort()&&e.jsx("span",{className:"rst:w-4 rst:flex rst:justify-center rst:text-primary-500",children:t.column.getIsSorted()==="asc"?e.jsx(c.FontAwesomeIcon,{icon:g.faCaretUp}):t.column.getIsSorted()==="desc"?e.jsx(c.FontAwesomeIcon,{icon:g.faCaretDown}):null})]})},t.id))},n.id))}),e.jsx(r.TableBody,{children:s.getRowModel().rows?.length?s.getRowModel().rows.map(n=>e.jsx(r.TableRow,{children:n.getAllCells().map(t=>e.jsx(r.TableCell,{children:a.flexRender(t.column.columnDef.cell,t.getContext())},t.id))},n.id)):e.jsx(r.TableRow,{children:e.jsx(r.TableCell,{colSpan:i.length,className:"rst:h-24 rst:text-center rst:text-gray-500 rst:dark:text-gray-400 rst:italic",children:w})})})]}),e.jsxs("div",{className:l.cn("rst:flex rst:flex-col rst:sm:flex-row rst:items-center rst:justify-between rst:gap-4 rst:px-2",m),children:[e.jsx("div",{className:"rst:text-sm rst:font-medium rst:text-gray-500 rst:dark:text-gray-400",children:o?.status?o.status(s.state.pagination.pageIndex+1,s.getPageCount()):e.jsxs(e.Fragment,{children:["Page"," ",e.jsx("strong",{className:"rst:text-gray-900 rst:dark:text-gray-100",children:s.state.pagination.pageIndex+1})," ","of"," ",e.jsx("strong",{className:"rst:text-gray-900 rst:dark:text-gray-100",children:s.getPageCount()})]})}),e.jsx(T.Pagination,{layout:"arrows",align:"end",variant:"outline",page:s.state.pagination.pageIndex+1,pageCount:s.getPageCount(),onPageChange:n=>s.setPageIndex(n-1),labels:o})]})]})}exports.DataTable=S;
@@ -1,3 +1,4 @@
1
+ import { ReactNode } from 'react';
1
2
  import { ColumnDef, RowData } from '@tanstack/react-table';
2
3
  import { PaginationLabels } from '../../molecules/Pagination/Pagination';
3
4
  import { TableProps } from '../Table/Table';
@@ -46,10 +47,11 @@ export interface DataTableProps<TData extends RowData> {
46
47
  hoverable?: boolean;
47
48
  /**
48
49
  * Replaces the pager's words; see Pagination's `labels`. `status` also
49
- * replaces the "Page N of M" line beside it. ("No results found." is
50
- * DataTable's own and isn't covered.)
50
+ * replaces the "Page N of M" line beside it.
51
51
  */
52
52
  paginationLabels?: Partial<PaginationLabels>;
53
+ /** What an empty table says. "No results found." by default. */
54
+ emptyMessage?: ReactNode;
53
55
  }
54
- export declare function DataTable<TData extends RowData>({ columns, data, className, tableClassName, paginationClassName, variant, size, hoverable, paginationLabels, }: DataTableProps<TData>): import("react/jsx-runtime").JSX.Element;
56
+ export declare function DataTable<TData extends RowData>({ columns, data, className, tableClassName, paginationClassName, variant, size, hoverable, paginationLabels, emptyMessage, }: DataTableProps<TData>): import("react/jsx-runtime").JSX.Element;
55
57
  export {};
@@ -1,22 +1,22 @@
1
1
  "use client";
2
- import { jsxs as s, jsx as t, Fragment as S } from "react/jsx-runtime";
3
- import { useState as b } from "react";
4
- import { useTable as N, flexRender as c, tableFeatures as P, sortFns as T, rowPaginationFeature as I, rowSortingFeature as R, createPaginatedRowModel as F, createSortedRowModel as v } from "@tanstack/react-table";
2
+ import { jsxs as s, jsx as t, Fragment as b } from "react/jsx-runtime";
3
+ import { useState as N } from "react";
4
+ import { useTable as P, flexRender as c, tableFeatures as T, sortFns as I, rowPaginationFeature as R, rowSortingFeature as F, createPaginatedRowModel as v, createSortedRowModel as M } from "@tanstack/react-table";
5
5
  import { FontAwesomeIcon as g } from "../../../node_modules/@fortawesome/react-fontawesome/dist/index.js";
6
- import { faCaretUp as M, faCaretDown as k } from "../../../node_modules/@fortawesome/free-solid-svg-icons/index.js";
6
+ import { faCaretUp as k, faCaretDown as j } from "../../../node_modules/@fortawesome/free-solid-svg-icons/index.js";
7
7
  import { cn as o } from "../../../lib/utils.js";
8
- import { Pagination as j } from "../../molecules/Pagination/Pagination.js";
9
- import { Table as D, TableHeader as H, TableRow as l, TableHead as A, TableBody as z, TableCell as d } from "../Table/Table.js";
10
- const B = /* @__PURE__ */ P({
11
- rowSortingFeature: R,
12
- rowPaginationFeature: I,
13
- sortedRowModel: v(),
14
- paginatedRowModel: F(),
8
+ import { Pagination as D } from "../../molecules/Pagination/Pagination.js";
9
+ import { Table as H, TableHeader as A, TableRow as l, TableHead as z, TableBody as B, TableCell as d } from "../Table/Table.js";
10
+ const U = /* @__PURE__ */ T({
11
+ rowSortingFeature: F,
12
+ rowPaginationFeature: R,
13
+ sortedRowModel: M(),
14
+ paginatedRowModel: v(),
15
15
  // The whole built-in registry, not a subset: DataTable is generic over
16
16
  // consumer data, so auto sort detection has to be able to reach any of them.
17
- sortFns: T
17
+ sortFns: I
18
18
  });
19
- function V({
19
+ function W({
20
20
  columns: i,
21
21
  data: m,
22
22
  className: u,
@@ -25,15 +25,16 @@ function V({
25
25
  variant: x = "default",
26
26
  size: h = "md",
27
27
  hoverable: w = !1,
28
- paginationLabels: n
28
+ paginationLabels: n,
29
+ emptyMessage: y = "No results found."
29
30
  }) {
30
- const [y, C] = b([]), r = N({
31
- features: B,
31
+ const [C, S] = N([]), r = P({
32
+ features: U,
32
33
  data: m,
33
34
  columns: i,
34
- onSortingChange: C,
35
+ onSortingChange: S,
35
36
  state: {
36
- sorting: y
37
+ sorting: C
37
38
  },
38
39
  initialState: {
39
40
  pagination: {
@@ -44,14 +45,14 @@ function V({
44
45
  });
45
46
  return /* @__PURE__ */ s("div", { className: o("rst:font-ui rst:flex rst:flex-col rst:gap-4", u), children: [
46
47
  /* @__PURE__ */ s(
47
- D,
48
+ H,
48
49
  {
49
50
  variant: x,
50
51
  size: h,
51
52
  hoverable: w,
52
53
  className: p,
53
54
  children: [
54
- /* @__PURE__ */ t(H, { children: r.getHeaderGroups().map((a) => /* @__PURE__ */ t(l, { children: a.headers.map((e) => /* @__PURE__ */ t(A, { children: e.isPlaceholder ? null : /* @__PURE__ */ s(
55
+ /* @__PURE__ */ t(A, { children: r.getHeaderGroups().map((a) => /* @__PURE__ */ t(l, { children: a.headers.map((e) => /* @__PURE__ */ t(z, { children: e.isPlaceholder ? null : /* @__PURE__ */ s(
55
56
  "div",
56
57
  {
57
58
  className: o(
@@ -64,11 +65,11 @@ function V({
64
65
  e.column.columnDef.header,
65
66
  e.getContext()
66
67
  ),
67
- e.column.getCanSort() && /* @__PURE__ */ t("span", { className: "rst:w-4 rst:flex rst:justify-center rst:text-primary-500", children: e.column.getIsSorted() === "asc" ? /* @__PURE__ */ t(g, { icon: M }) : e.column.getIsSorted() === "desc" ? /* @__PURE__ */ t(g, { icon: k }) : null })
68
+ e.column.getCanSort() && /* @__PURE__ */ t("span", { className: "rst:w-4 rst:flex rst:justify-center rst:text-primary-500", children: e.column.getIsSorted() === "asc" ? /* @__PURE__ */ t(g, { icon: k }) : e.column.getIsSorted() === "desc" ? /* @__PURE__ */ t(g, { icon: j }) : null })
68
69
  ]
69
70
  }
70
71
  ) }, e.id)) }, a.id)) }),
71
- /* @__PURE__ */ t(z, { children: r.getRowModel().rows?.length ? (
72
+ /* @__PURE__ */ t(B, { children: r.getRowModel().rows?.length ? (
72
73
  // No data-state on the row: row selection is not one of the
73
74
  // registered features, and v8's getIsSelected() was always false
74
75
  // here, so React omitted the attribute anyway.
@@ -78,7 +79,7 @@ function V({
78
79
  {
79
80
  colSpan: i.length,
80
81
  className: "rst:h-24 rst:text-center rst:text-gray-500 rst:dark:text-gray-400 rst:italic",
81
- children: "No results found."
82
+ children: y
82
83
  }
83
84
  ) }) })
84
85
  ]
@@ -92,7 +93,7 @@ function V({
92
93
  f
93
94
  ),
94
95
  children: [
95
- /* @__PURE__ */ t("div", { className: "rst:text-sm rst:font-medium rst:text-gray-500 rst:dark:text-gray-400", children: n?.status ? n.status(r.state.pagination.pageIndex + 1, r.getPageCount()) : /* @__PURE__ */ s(S, { children: [
96
+ /* @__PURE__ */ t("div", { className: "rst:text-sm rst:font-medium rst:text-gray-500 rst:dark:text-gray-400", children: n?.status ? n.status(r.state.pagination.pageIndex + 1, r.getPageCount()) : /* @__PURE__ */ s(b, { children: [
96
97
  "Page",
97
98
  " ",
98
99
  /* @__PURE__ */ t("strong", { className: "rst:text-gray-900 rst:dark:text-gray-100", children: r.state.pagination.pageIndex + 1 }),
@@ -102,7 +103,7 @@ function V({
102
103
  /* @__PURE__ */ t("strong", { className: "rst:text-gray-900 rst:dark:text-gray-100", children: r.getPageCount() })
103
104
  ] }) }),
104
105
  /* @__PURE__ */ t(
105
- j,
106
+ D,
106
107
  {
107
108
  layout: "arrows",
108
109
  align: "end",
@@ -119,5 +120,5 @@ function V({
119
120
  ] });
120
121
  }
121
122
  export {
122
- V as DataTable
123
+ W as DataTable
123
124
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),t=require("react"),h=require("../../../node_modules/@fortawesome/react-fontawesome/dist/index.cjs"),k=require("../../../node_modules/@fortawesome/free-solid-svg-icons/index.cjs"),o=require("../../../node_modules/class-variance-authority/dist/index.cjs"),s=require("../../../lib/utils.cjs"),j=require("../../../internal/page-inert.cjs"),a=require("../../../node_modules/@headlessui/react/dist/components/dialog/dialog.cjs"),d=require("../../../node_modules/@headlessui/react/dist/components/transition/transition.cjs"),w=o.cva("rst:relative rst:w-full rst:transform rst:overflow-hidden rst:rounded-2xl rst:p-6 rst:text-left rst:align-middle rst:elevation-overlay rst:transition-all rst:border",{variants:{size:{xs:"rst:max-w-xs",sm:"rst:max-w-sm",md:"rst:max-w-md",lg:"rst:max-w-lg",xl:"rst:max-w-xl","2xl":"rst:max-w-2xl","3xl":"rst:max-w-3xl",full:"rst:max-w-[95vw] rst:m-4"},variant:{white:"rst:bg-[var(--roster-popover-bg)] rst:border-[var(--roster-popover-border)] rst:text-[var(--roster-popover-text)]",slate:"rst:bg-gray-700 rst:border-gray-600 rst:text-gray-100 rst:dark:bg-gray-900 rst:dark:border-gray-800 rst:[--roster-ring:var(--roster-primary-400,#5ea3de)] rst:[--roster-ring-offset:var(--roster-gray-700,#44403c)] rst:dark:[--roster-ring-offset:var(--roster-gray-900,#1c1917)] rst:[--roster-control-text:var(--roster-gray-100,#f5f5f4)] rst:[--roster-control-border:var(--roster-gray-400,#a8a29e)] rst:[--roster-control-border-focus:var(--roster-primary-400,#5ea3de)]",primary:"rst:bg-primary-700 rst:border-primary-600 rst:text-primary-700-ink rst:dark:text-white rst:dark:bg-primary-950 rst:dark:border-primary-900 rst:[--roster-ring:var(--roster-primary-400,#5ea3de)] rst:[--roster-ring-offset:var(--roster-primary-700,#084063)] rst:dark:[--roster-ring-offset:var(--roster-primary-950,#021724)] rst:[--roster-control-text:var(--roster-gray-100,#f5f5f4)] rst:[--roster-control-border:var(--roster-gray-400,#a8a29e)] rst:[--roster-control-border-focus:var(--roster-primary-400,#5ea3de)]",glass:"rst:bg-white/80 rst:border-white/20 rst:backdrop-blur-xl rst:text-gray-900 rst:dark:bg-slate-900/80 rst:dark:border-slate-700/50 rst:dark:text-white"},status:{default:"",destructive:"rst:border-t-4 rst:border-t-error-500",success:"rst:border-t-4 rst:border-t-success-500"}},defaultVariants:{size:"md",variant:"white",status:"default"}}),N=o.cva("rst:text-xl rst:font-bold rst:leading-6 rst:text-inherit"),_=o.cva("rst:mt-1 rst:text-sm rst:text-inherit rst:opacity-75"),q=o.cva("rst:inline-flex rst:size-11 rst:shrink-0 rst:items-center rst:justify-center rst:-m-3 rst:cursor-pointer rst:rounded-md rst:bg-transparent rst:text-inherit rst:opacity-50 rst:hover:opacity-100 rst:focus:outline-hidden rst:focus-visible:ring-2 rst:focus-visible:ring-ring rst:focus-visible:ring-offset-2 rst:ring-offset-background rst:transition-opacity"),F=({isOpen:u,onClose:i,title:m,description:n,size:x,variant:l,status:g,children:f,className:v,onAfterClose:b})=>{const[p,y]=t.useState(!1);t.useLayoutEffect(()=>{y(!0)},[]);const e=u&&p,c=t.useRef(null);return t.useLayoutEffect(()=>{if(e)return j.lockPage(c.current)},[e]),r.jsxs(r.Fragment,{children:[e&&r.jsx("span",{ref:c,hidden:!0}),r.jsxs(a.Dialog,{open:e,as:"div",className:"rst:font-ui rst:relative rst:z-50",onClose:i,children:[r.jsx(d.TransitionChild,{as:t.Fragment,enter:"rst:ease-out rst:duration-300",enterFrom:"rst:opacity-0",enterTo:"rst:opacity-100",leave:"rst:ease-in rst:duration-200",leaveFrom:"rst:opacity-100",leaveTo:"rst:opacity-0",children:r.jsx(a.DialogBackdrop,{className:s.cn("rst:fixed rst:inset-0 rst:transition-opacity",l==="glass"?"rst:bg-[var(--roster-backdrop,color-mix(in_oklab,oklch(20.8%_0.042_265.755)_40%,transparent))] rst:dark:bg-[var(--roster-backdrop,color-mix(in_oklab,var(--roster-black,#1e1c1a)_60%,transparent))]":"rst:bg-[var(--roster-backdrop,color-mix(in_oklab,oklch(20.8%_0.042_265.755)_60%,transparent))] rst:dark:bg-[var(--roster-backdrop,color-mix(in_oklab,var(--roster-black,#1e1c1a)_80%,transparent))] rst:backdrop-blur-backdrop")})}),r.jsx("div",{className:"rst:fixed rst:inset-0 rst:overflow-y-auto",children:r.jsx("div",{className:"rst:flex rst:min-h-full rst:items-center rst:justify-center rst:p-4 rst:text-center",children:r.jsx(d.TransitionChild,{as:t.Fragment,enter:"rst:ease-out rst:duration-300",enterFrom:"rst:opacity-0 rst:scale-95",enterTo:"rst:opacity-100 rst:scale-100",leave:"rst:ease-in rst:duration-200",leaveFrom:"rst:opacity-100 rst:scale-100",leaveTo:"rst:opacity-0 rst:scale-95",afterLeave:b,children:r.jsxs(a.DialogPanel,{className:s.cn(w({size:x,variant:l,status:g}),v),children:[r.jsxs("div",{className:"rst:flex rst:items-start rst:justify-between",children:[r.jsxs("div",{children:[r.jsx(a.DialogTitle,{as:"h2",className:s.cn(N()),children:m}),n&&r.jsx("p",{className:s.cn(_()),children:n})]}),r.jsx("div",{className:"rst:ml-4 rst:flex rst:shrink-0",children:r.jsx("button",{type:"button",onClick:i,className:s.cn(q()),"aria-label":"Close dialog",children:r.jsx(h.FontAwesomeIcon,{icon:k.faXmark,className:"rst:h-5 rst:w-5"})})})]}),r.jsx("div",{className:"rst:mt-6",children:f})]})})})})]})]})};exports.Dialog=F;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),t=require("react"),j=require("../../../node_modules/@fortawesome/react-fontawesome/dist/index.cjs"),w=require("../../../node_modules/@fortawesome/free-solid-svg-icons/index.cjs"),o=require("../../../node_modules/class-variance-authority/dist/index.cjs"),s=require("../../../lib/utils.cjs"),N=require("../../../lib/labels.cjs"),_=require("../../../internal/page-inert.cjs"),a=require("../../../node_modules/@headlessui/react/dist/components/dialog/dialog.cjs"),d=require("../../../node_modules/@headlessui/react/dist/components/transition/transition.cjs"),q=o.cva("rst:relative rst:w-full rst:transform rst:overflow-hidden rst:rounded-2xl rst:p-6 rst:text-left rst:align-middle rst:elevation-overlay rst:transition-all rst:border",{variants:{size:{xs:"rst:max-w-xs",sm:"rst:max-w-sm",md:"rst:max-w-md",lg:"rst:max-w-lg",xl:"rst:max-w-xl","2xl":"rst:max-w-2xl","3xl":"rst:max-w-3xl",full:"rst:max-w-[95vw] rst:m-4"},variant:{white:"rst:bg-[var(--roster-popover-bg)] rst:border-[var(--roster-popover-border)] rst:text-[var(--roster-popover-text)]",slate:"rst:bg-gray-700 rst:border-gray-600 rst:text-gray-100 rst:dark:bg-gray-900 rst:dark:border-gray-800 rst:[--roster-ring:var(--roster-primary-400,#5ea3de)] rst:[--roster-ring-offset:var(--roster-gray-700,#44403c)] rst:dark:[--roster-ring-offset:var(--roster-gray-900,#1c1917)] rst:[--roster-control-text:var(--roster-gray-100,#f5f5f4)] rst:[--roster-control-border:var(--roster-gray-400,#a8a29e)] rst:[--roster-control-border-focus:var(--roster-primary-400,#5ea3de)]",primary:"rst:bg-primary-700 rst:border-primary-600 rst:text-primary-700-ink rst:dark:text-white rst:dark:bg-primary-950 rst:dark:border-primary-900 rst:[--roster-ring:var(--roster-primary-400,#5ea3de)] rst:[--roster-ring-offset:var(--roster-primary-700,#084063)] rst:dark:[--roster-ring-offset:var(--roster-primary-950,#021724)] rst:[--roster-control-text:var(--roster-gray-100,#f5f5f4)] rst:[--roster-control-border:var(--roster-gray-400,#a8a29e)] rst:[--roster-control-border-focus:var(--roster-primary-400,#5ea3de)]",glass:"rst:bg-white/80 rst:border-white/20 rst:backdrop-blur-xl rst:text-gray-900 rst:dark:bg-slate-900/80 rst:dark:border-slate-700/50 rst:dark:text-white"},status:{default:"",destructive:"rst:border-t-4 rst:border-t-error-500",success:"rst:border-t-4 rst:border-t-success-500"}},defaultVariants:{size:"md",variant:"white",status:"default"}}),F=o.cva("rst:text-xl rst:font-bold rst:leading-6 rst:text-inherit"),T=o.cva("rst:mt-1 rst:text-sm rst:text-inherit rst:opacity-75"),D=o.cva("rst:inline-flex rst:size-11 rst:shrink-0 rst:items-center rst:justify-center rst:-m-3 rst:cursor-pointer rst:rounded-md rst:bg-transparent rst:text-inherit rst:opacity-50 rst:hover:opacity-100 rst:focus:outline-hidden rst:focus-visible:ring-2 rst:focus-visible:ring-ring rst:focus-visible:ring-offset-2 rst:ring-offset-background rst:transition-opacity"),L={close:"Close dialog"},V=({isOpen:u,onClose:i,title:m,description:n,size:x,variant:l,status:b,children:g,className:f,onAfterClose:v,labels:p})=>{const y=N.withLabels(L,p),[h,k]=t.useState(!1);t.useLayoutEffect(()=>{k(!0)},[]);const e=u&&h,c=t.useRef(null);return t.useLayoutEffect(()=>{if(e)return _.lockPage(c.current)},[e]),r.jsxs(r.Fragment,{children:[e&&r.jsx("span",{ref:c,hidden:!0}),r.jsxs(a.Dialog,{open:e,as:"div",className:"rst:font-ui rst:relative rst:z-50",onClose:i,children:[r.jsx(d.TransitionChild,{as:t.Fragment,enter:"rst:ease-out rst:duration-300",enterFrom:"rst:opacity-0",enterTo:"rst:opacity-100",leave:"rst:ease-in rst:duration-200",leaveFrom:"rst:opacity-100",leaveTo:"rst:opacity-0",children:r.jsx(a.DialogBackdrop,{className:s.cn("rst:fixed rst:inset-0 rst:transition-opacity",l==="glass"?"rst:bg-[var(--roster-backdrop,color-mix(in_oklab,oklch(20.8%_0.042_265.755)_40%,transparent))] rst:dark:bg-[var(--roster-backdrop,color-mix(in_oklab,var(--roster-black,#1e1c1a)_60%,transparent))]":"rst:bg-[var(--roster-backdrop,color-mix(in_oklab,oklch(20.8%_0.042_265.755)_60%,transparent))] rst:dark:bg-[var(--roster-backdrop,color-mix(in_oklab,var(--roster-black,#1e1c1a)_80%,transparent))] rst:backdrop-blur-backdrop")})}),r.jsx("div",{className:"rst:fixed rst:inset-0 rst:overflow-y-auto",children:r.jsx("div",{className:"rst:flex rst:min-h-full rst:items-center rst:justify-center rst:p-4 rst:text-center",children:r.jsx(d.TransitionChild,{as:t.Fragment,enter:"rst:ease-out rst:duration-300",enterFrom:"rst:opacity-0 rst:scale-95",enterTo:"rst:opacity-100 rst:scale-100",leave:"rst:ease-in rst:duration-200",leaveFrom:"rst:opacity-100 rst:scale-100",leaveTo:"rst:opacity-0 rst:scale-95",afterLeave:v,children:r.jsxs(a.DialogPanel,{className:s.cn(q({size:x,variant:l,status:b}),f),children:[r.jsxs("div",{className:"rst:flex rst:items-start rst:justify-between",children:[r.jsxs("div",{children:[r.jsx(a.DialogTitle,{as:"h2",className:s.cn(F()),children:m}),n&&r.jsx("p",{className:s.cn(T()),children:n})]}),r.jsx("div",{className:"rst:ml-4 rst:flex rst:shrink-0",children:r.jsx("button",{type:"button",onClick:i,className:s.cn(D()),"aria-label":y.close,children:r.jsx(j.FontAwesomeIcon,{icon:w.faXmark,className:"rst:h-5 rst:w-5"})})})]}),r.jsx("div",{className:"rst:mt-6",children:g})]})})})})]})]})};exports.Dialog=V;
@@ -1,10 +1,15 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { VariantProps } from 'class-variance-authority';
3
3
  declare const dialogVariants: (props?: ({
4
- size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full" | null | undefined;
4
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "full" | "2xl" | "3xl" | null | undefined;
5
5
  variant?: "primary" | "white" | "slate" | "glass" | null | undefined;
6
6
  status?: "success" | "default" | "destructive" | null | undefined;
7
7
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
8
+ /** Every word Dialog says of its own. Pass any of them in `labels` to replace it. */
9
+ export interface DialogLabels {
10
+ /** The close button's name. */
11
+ close: string;
12
+ }
8
13
  export interface DialogProps extends VariantProps<typeof dialogVariants> {
9
14
  isOpen: boolean;
10
15
  onClose: () => void;
@@ -20,6 +25,8 @@ export interface DialogProps extends VariantProps<typeof dialogVariants> {
20
25
  * while open.
21
26
  */
22
27
  onAfterClose?: () => void;
28
+ /** The component's own words, replaced; any left out stay English. */
29
+ labels?: Partial<DialogLabels>;
23
30
  }
24
- declare const Dialog: ({ isOpen, onClose, title, description, size, variant, status, children, className, onAfterClose, }: DialogProps) => import("react/jsx-runtime").JSX.Element;
31
+ declare const Dialog: ({ isOpen, onClose, title, description, size, variant, status, children, className, onAfterClose, labels, }: DialogProps) => import("react/jsx-runtime").JSX.Element;
25
32
  export { Dialog };
@@ -1,14 +1,15 @@
1
1
  "use client";
2
- import { jsxs as t, Fragment as k, jsx as r } from "react/jsx-runtime";
3
- import { useState as w, useLayoutEffect as c, useRef as N, Fragment as d } from "react";
4
- import { FontAwesomeIcon as _ } from "../../../node_modules/@fortawesome/react-fontawesome/dist/index.js";
5
- import { faXmark as F } from "../../../node_modules/@fortawesome/free-solid-svg-icons/index.js";
2
+ import { jsxs as t, Fragment as N, jsx as r } from "react/jsx-runtime";
3
+ import { useState as _, useLayoutEffect as c, useRef as F, Fragment as d } from "react";
4
+ import { FontAwesomeIcon as L } from "../../../node_modules/@fortawesome/react-fontawesome/dist/index.js";
5
+ import { faXmark as T } from "../../../node_modules/@fortawesome/free-solid-svg-icons/index.js";
6
6
  import { cva as a } from "../../../node_modules/class-variance-authority/dist/index.js";
7
7
  import { cn as s } from "../../../lib/utils.js";
8
- import { lockPage as T } from "../../../internal/page-inert.js";
9
- import { Dialog as j, DialogBackdrop as z, DialogPanel as D, DialogTitle as V } from "../../../node_modules/@headlessui/react/dist/components/dialog/dialog.js";
8
+ import { withLabels as j } from "../../../lib/labels.js";
9
+ import { lockPage as z } from "../../../internal/page-inert.js";
10
+ import { Dialog as D, DialogBackdrop as V, DialogPanel as A, DialogTitle as B } from "../../../node_modules/@headlessui/react/dist/components/dialog/dialog.js";
10
11
  import { TransitionChild as m } from "../../../node_modules/@headlessui/react/dist/components/transition/transition.js";
11
- const L = /* @__PURE__ */ a(
12
+ const C = /* @__PURE__ */ a(
12
13
  "rst:relative rst:w-full rst:transform rst:overflow-hidden rst:rounded-2xl rst:p-6 rst:text-left rst:align-middle rst:elevation-overlay rst:transition-all rst:border",
13
14
  {
14
15
  variants: {
@@ -77,9 +78,9 @@ const L = /* @__PURE__ */ a(
77
78
  status: "default"
78
79
  }
79
80
  }
80
- ), C = /* @__PURE__ */ a("rst:text-xl rst:font-bold rst:leading-6 rst:text-inherit"), P = /* @__PURE__ */ a("rst:mt-1 rst:text-sm rst:text-inherit rst:opacity-75"), R = /* @__PURE__ */ a(
81
+ ), E = /* @__PURE__ */ a("rst:text-xl rst:font-bold rst:leading-6 rst:text-inherit"), P = /* @__PURE__ */ a("rst:mt-1 rst:text-sm rst:text-inherit rst:opacity-75"), R = /* @__PURE__ */ a(
81
82
  "rst:inline-flex rst:size-11 rst:shrink-0 rst:items-center rst:justify-center rst:-m-3 rst:cursor-pointer rst:rounded-md rst:bg-transparent rst:text-inherit rst:opacity-50 rst:hover:opacity-100 rst:focus:outline-hidden rst:focus-visible:ring-2 rst:focus-visible:ring-ring rst:focus-visible:ring-offset-2 rst:ring-offset-background rst:transition-opacity"
82
- ), $ = ({
83
+ ), S = { close: "Close dialog" }, K = ({
83
84
  isOpen: f,
84
85
  onClose: o,
85
86
  title: p,
@@ -89,20 +90,21 @@ const L = /* @__PURE__ */ a(
89
90
  status: g,
90
91
  children: v,
91
92
  className: u,
92
- onAfterClose: x
93
+ onAfterClose: x,
94
+ labels: y
93
95
  }) => {
94
- const [y, h] = w(!1);
96
+ const h = j(S, y), [k, w] = _(!1);
95
97
  c(() => {
96
- h(!0);
98
+ w(!0);
97
99
  }, []);
98
- const e = f && y, l = N(null);
100
+ const e = f && k, l = F(null);
99
101
  return c(() => {
100
102
  if (e)
101
- return T(l.current);
102
- }, [e]), /* @__PURE__ */ t(k, { children: [
103
+ return z(l.current);
104
+ }, [e]), /* @__PURE__ */ t(N, { children: [
103
105
  e && /* @__PURE__ */ r("span", { ref: l, hidden: !0 }),
104
106
  /* @__PURE__ */ t(
105
- j,
107
+ D,
106
108
  {
107
109
  open: e,
108
110
  as: "div",
@@ -120,7 +122,7 @@ const L = /* @__PURE__ */ a(
120
122
  leaveFrom: "rst:opacity-100",
121
123
  leaveTo: "rst:opacity-0",
122
124
  children: /* @__PURE__ */ r(
123
- z,
125
+ V,
124
126
  {
125
127
  className: s(
126
128
  "rst:fixed rst:inset-0 rst:transition-opacity",
@@ -142,16 +144,16 @@ const L = /* @__PURE__ */ a(
142
144
  leaveTo: "rst:opacity-0 rst:scale-95",
143
145
  afterLeave: x,
144
146
  children: /* @__PURE__ */ t(
145
- D,
147
+ A,
146
148
  {
147
149
  className: s(
148
- L({ size: b, variant: n, status: g }),
150
+ C({ size: b, variant: n, status: g }),
149
151
  u
150
152
  ),
151
153
  children: [
152
154
  /* @__PURE__ */ t("div", { className: "rst:flex rst:items-start rst:justify-between", children: [
153
155
  /* @__PURE__ */ t("div", { children: [
154
- /* @__PURE__ */ r(V, { as: "h2", className: s(C()), children: p }),
156
+ /* @__PURE__ */ r(B, { as: "h2", className: s(E()), children: p }),
155
157
  i && /* @__PURE__ */ r("p", { className: s(P()), children: i })
156
158
  ] }),
157
159
  /* @__PURE__ */ r("div", { className: "rst:ml-4 rst:flex rst:shrink-0", children: /* @__PURE__ */ r(
@@ -160,8 +162,8 @@ const L = /* @__PURE__ */ a(
160
162
  type: "button",
161
163
  onClick: o,
162
164
  className: s(R()),
163
- "aria-label": "Close dialog",
164
- children: /* @__PURE__ */ r(_, { icon: F, className: "rst:h-5 rst:w-5" })
165
+ "aria-label": h.close,
166
+ children: /* @__PURE__ */ r(L, { icon: T, className: "rst:h-5 rst:w-5" })
165
167
  }
166
168
  ) })
167
169
  ] }),
@@ -177,5 +179,5 @@ const L = /* @__PURE__ */ a(
177
179
  ] });
178
180
  };
179
181
  export {
180
- $ as Dialog
182
+ K as Dialog
181
183
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),u=require("react"),m=require("../../../lib/utils.cjs"),h=require("./footer-variants.cjs"),s=u.forwardRef(({className:a,variant:o,companyName:i="Ball Collaborative",links:r,routerElement:n,...c},l)=>{const x=new Date().getFullYear(),f=n??"a";return t.jsx("footer",{ref:l,className:m.cn(h.footerVariants({variant:o}),a),...c,children:t.jsxs("div",{className:"rst:container rst:mx-auto rst:px-4 rst:flex rst:flex-col rst:items-center rst:gap-2",children:[r&&r.length>0&&t.jsx("nav",{"aria-label":"Footer navigation",className:"rst:flex rst:flex-wrap rst:justify-center rst:gap-x-5 rst:gap-y-1",children:r.map(e=>t.jsx(f,{href:e.href,to:e.href,className:"rst:text-sm rst:text-inherit rst:opacity-70 rst:hover:opacity-100 rst:transition-opacity",children:e.label},e.href))}),t.jsxs("p",{className:"rst:text-center rst:text-sm rst:font-medium rst:text-inherit",children:["© ",x," ",i,", All rights reserved."]})]})})});s.displayName="Footer";exports.Footer=s;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),m=require("react"),p=require("../../../lib/utils.cjs"),d=require("../../../lib/labels.cjs"),g=require("./footer-variants.cjs"),y={nav:"Footer navigation",copyright:(r,s)=>`© ${r} ${s}, All rights reserved.`},i=m.forwardRef(({className:r,variant:s,companyName:n="Ball Collaborative",links:a,routerElement:c,labels:l,...x},h)=>{const u=new Date().getFullYear(),o=d.withLabels(y,l),f=c??"a";return t.jsx("footer",{ref:h,className:p.cn(g.footerVariants({variant:s}),r),...x,children:t.jsxs("div",{className:"rst:container rst:mx-auto rst:px-4 rst:flex rst:flex-col rst:items-center rst:gap-2",children:[a&&a.length>0&&t.jsx("nav",{"aria-label":o.nav,className:"rst:flex rst:flex-wrap rst:justify-center rst:gap-x-5 rst:gap-y-1",children:a.map(e=>t.jsx(f,{href:e.href,to:e.href,className:"rst:text-sm rst:text-inherit rst:opacity-70 rst:hover:opacity-100 rst:transition-opacity",children:e.label},e.href))}),t.jsx("p",{className:"rst:text-center rst:text-sm rst:font-medium rst:text-inherit",children:o.copyright(u,n)})]})})});i.displayName="Footer";exports.Footer=i;
@@ -5,6 +5,13 @@ export interface FooterLink {
5
5
  label: string;
6
6
  href: string;
7
7
  }
8
+ /** Every word Footer shows or says of its own. Pass any of them in `labels` to replace it. */
9
+ export interface FooterLabels {
10
+ /** The link row's name. */
11
+ nav: string;
12
+ /** The copyright line. */
13
+ copyright: (year: number, companyName: string) => string;
14
+ }
8
15
  export interface FooterProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof footerVariants> {
9
16
  /**
10
17
  * The company name to display in the copyright notice.
@@ -21,6 +28,8 @@ export interface FooterProps extends React.HTMLAttributes<HTMLElement>, VariantP
21
28
  * footer link is rendered with this element instead of a plain `<a>` tag.
22
29
  */
23
30
  routerElement?: React.ElementType;
31
+ /** The component's own words, replaced; any left out stay English. */
32
+ labels?: Partial<FooterLabels>;
24
33
  }
25
34
  declare const Footer: React.ForwardRefExoticComponent<FooterProps & React.RefAttributes<HTMLElement>>;
26
35
  export { Footer };
@@ -1,20 +1,24 @@
1
1
  "use client";
2
- import { jsx as e, jsxs as s } from "react/jsx-runtime";
3
- import p from "react";
4
- import { cn as x } from "../../../lib/utils.js";
5
- import { footerVariants as h } from "./footer-variants.js";
6
- const d = p.forwardRef(
7
- ({ className: a, variant: o, companyName: i = "Ball Collaborative", links: r, routerElement: l, ...c }, n) => {
8
- const m = (/* @__PURE__ */ new Date()).getFullYear(), f = l ?? "a";
9
- return /* @__PURE__ */ e(
2
+ import { jsx as r, jsxs as h } from "react/jsx-runtime";
3
+ import x from "react";
4
+ import { cn as d } from "../../../lib/utils.js";
5
+ import { withLabels as g } from "../../../lib/labels.js";
6
+ import { footerVariants as u } from "./footer-variants.js";
7
+ const v = {
8
+ nav: "Footer navigation",
9
+ copyright: (e, s) => `© ${e} ${s}, All rights reserved.`
10
+ }, y = x.forwardRef(
11
+ ({ className: e, variant: s, companyName: i = "Ball Collaborative", links: a, routerElement: c, labels: l, ...n }, m) => {
12
+ const f = (/* @__PURE__ */ new Date()).getFullYear(), o = g(v, l), p = c ?? "a";
13
+ return /* @__PURE__ */ r(
10
14
  "footer",
11
15
  {
12
- ref: n,
13
- className: x(h({ variant: o }), a),
14
- ...c,
15
- children: /* @__PURE__ */ s("div", { className: "rst:container rst:mx-auto rst:px-4 rst:flex rst:flex-col rst:items-center rst:gap-2", children: [
16
- r && r.length > 0 && /* @__PURE__ */ e("nav", { "aria-label": "Footer navigation", className: "rst:flex rst:flex-wrap rst:justify-center rst:gap-x-5 rst:gap-y-1", children: r.map((t) => /* @__PURE__ */ e(
17
- f,
16
+ ref: m,
17
+ className: d(u({ variant: s }), e),
18
+ ...n,
19
+ children: /* @__PURE__ */ h("div", { className: "rst:container rst:mx-auto rst:px-4 rst:flex rst:flex-col rst:items-center rst:gap-2", children: [
20
+ a && a.length > 0 && /* @__PURE__ */ r("nav", { "aria-label": o.nav, className: "rst:flex rst:flex-wrap rst:justify-center rst:gap-x-5 rst:gap-y-1", children: a.map((t) => /* @__PURE__ */ r(
21
+ p,
18
22
  {
19
23
  href: t.href,
20
24
  to: t.href,
@@ -23,19 +27,13 @@ const d = p.forwardRef(
23
27
  },
24
28
  t.href
25
29
  )) }),
26
- /* @__PURE__ */ s("p", { className: "rst:text-center rst:text-sm rst:font-medium rst:text-inherit", children: [
27
- "© ",
28
- m,
29
- " ",
30
- i,
31
- ", All rights reserved."
32
- ] })
30
+ /* @__PURE__ */ r("p", { className: "rst:text-center rst:text-sm rst:font-medium rst:text-inherit", children: o.copyright(f, i) })
33
31
  ] })
34
32
  }
35
33
  );
36
34
  }
37
35
  );
38
- d.displayName = "Footer";
36
+ y.displayName = "Footer";
39
37
  export {
40
- d as Footer
38
+ y as Footer
41
39
  };