@mintlify/msft-sdk 1.1.0 → 1.1.2

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 (91) hide show
  1. package/dist/components/content-components/callouts.js +35 -20
  2. package/dist/components/content-components/callouts.js.map +1 -1
  3. package/dist/components/content-components/code-block.js +87 -60
  4. package/dist/components/content-components/code-block.js.map +1 -1
  5. package/dist/components/content-components/default-components.js +52 -33
  6. package/dist/components/content-components/default-components.js.map +1 -1
  7. package/dist/components/content-components/details/details.js +28 -25
  8. package/dist/components/content-components/details/details.js.map +1 -1
  9. package/dist/components/content-components/heading.js +6 -1
  10. package/dist/components/content-components/heading.js.map +1 -1
  11. package/dist/components/content-components/home.js +256 -163
  12. package/dist/components/content-components/home.js.map +1 -1
  13. package/dist/components/content-components/link.js +7 -7
  14. package/dist/components/content-components/link.js.map +1 -1
  15. package/dist/components/content-components/param-name.js +4 -5
  16. package/dist/components/content-components/param-name.js.map +1 -1
  17. package/dist/components/content-components/table/index.js +101 -67
  18. package/dist/components/content-components/table/index.js.map +1 -1
  19. package/dist/components/content-components/table/table-modal.js +31 -32
  20. package/dist/components/content-components/table/table-modal.js.map +1 -1
  21. package/dist/components/content-components/tabs/tabs.js +51 -46
  22. package/dist/components/content-components/tabs/tabs.js.map +1 -1
  23. package/dist/components/content-components/zone-pivots/zone-pivot-selector.js +39 -36
  24. package/dist/components/content-components/zone-pivots/zone-pivot-selector.js.map +1 -1
  25. package/dist/components/mdx-renderer.js +16 -8
  26. package/dist/components/mdx-renderer.js.map +1 -1
  27. package/dist/components/nav-tree/dropdown-menu.js +40 -33
  28. package/dist/components/nav-tree/dropdown-menu.js.map +1 -1
  29. package/dist/components/nav-tree/index.js +122 -93
  30. package/dist/components/nav-tree/index.js.map +1 -1
  31. package/dist/components/nav-tree/mobile-nav.js +60 -41
  32. package/dist/components/nav-tree/mobile-nav.js.map +1 -1
  33. package/dist/components/page-context-menu.js +107 -90
  34. package/dist/components/page-context-menu.js.map +1 -1
  35. package/dist/components/page.js +108 -86
  36. package/dist/components/page.js.map +1 -1
  37. package/dist/components/plain-text-page.js +3 -4
  38. package/dist/components/plain-text-page.js.map +1 -1
  39. package/dist/components/toc/index.js +45 -42
  40. package/dist/components/toc/index.js.map +1 -1
  41. package/dist/context/components-context.js +17 -0
  42. package/dist/context/components-context.js.map +1 -0
  43. package/dist/index.d.ts +34 -5
  44. package/dist/index.js +109 -103
  45. package/dist/index.js.map +1 -1
  46. package/dist/node_modules/.pnpm/tailwind-merge@3.3.1/node_modules/tailwind-merge/dist/bundle-mjs.js +2732 -0
  47. package/dist/node_modules/.pnpm/tailwind-merge@3.3.1/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  48. package/dist/styles.css +1 -1
  49. package/dist/utils/cn.js +9 -0
  50. package/dist/utils/cn.js.map +1 -0
  51. package/package.json +5 -1
  52. package/dist/components/content-components/callouts.module.css.js +0 -26
  53. package/dist/components/content-components/callouts.module.css.js.map +0 -1
  54. package/dist/components/content-components/code-block.module.css.js +0 -32
  55. package/dist/components/content-components/code-block.module.css.js.map +0 -1
  56. package/dist/components/content-components/default-components.module.css.js +0 -12
  57. package/dist/components/content-components/default-components.module.css.js.map +0 -1
  58. package/dist/components/content-components/details/details.module.css.js +0 -20
  59. package/dist/components/content-components/details/details.module.css.js.map +0 -1
  60. package/dist/components/content-components/home.module.css.js +0 -74
  61. package/dist/components/content-components/home.module.css.js.map +0 -1
  62. package/dist/components/content-components/link.module.css.js +0 -10
  63. package/dist/components/content-components/link.module.css.js.map +0 -1
  64. package/dist/components/content-components/param-name.module.css.js +0 -8
  65. package/dist/components/content-components/param-name.module.css.js.map +0 -1
  66. package/dist/components/content-components/table/table-modal.module.css.js +0 -18
  67. package/dist/components/content-components/table/table-modal.module.css.js.map +0 -1
  68. package/dist/components/content-components/table/table.module.css.js +0 -30
  69. package/dist/components/content-components/table/table.module.css.js.map +0 -1
  70. package/dist/components/content-components/tabs/tabs.module.css.js +0 -24
  71. package/dist/components/content-components/tabs/tabs.module.css.js.map +0 -1
  72. package/dist/components/content-components/zone-pivots/zone-pivot-selector.module.css.js +0 -14
  73. package/dist/components/content-components/zone-pivots/zone-pivot-selector.module.css.js.map +0 -1
  74. package/dist/components/mdx-renderer.module.css.js +0 -8
  75. package/dist/components/mdx-renderer.module.css.js.map +0 -1
  76. package/dist/components/nav-tree/dropdown-menu.module.css.js +0 -52
  77. package/dist/components/nav-tree/dropdown-menu.module.css.js.map +0 -1
  78. package/dist/components/nav-tree/mobile-nav.module.css.js +0 -22
  79. package/dist/components/nav-tree/mobile-nav.module.css.js.map +0 -1
  80. package/dist/components/nav-tree/nav-tree.module.css.js +0 -50
  81. package/dist/components/nav-tree/nav-tree.module.css.js.map +0 -1
  82. package/dist/components/page-context-menu.module.css.js +0 -42
  83. package/dist/components/page-context-menu.module.css.js.map +0 -1
  84. package/dist/components/page.module.css.js +0 -52
  85. package/dist/components/page.module.css.js.map +0 -1
  86. package/dist/components/plain-text-page.module.css.js +0 -10
  87. package/dist/components/plain-text-page.module.css.js.map +0 -1
  88. package/dist/components/prose.module.css.js +0 -8
  89. package/dist/components/prose.module.css.js.map +0 -1
  90. package/dist/components/toc/toc.module.css.js +0 -18
  91. package/dist/components/toc/toc.module.css.js.map +0 -1
@@ -1,9 +1,8 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import m from "./param-name.module.css.js";
3
- function s({ children: r }) {
4
- return /* @__PURE__ */ a("span", { className: `not-prose ${m.paramName}`, children: r });
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ function i({ children: n }) {
3
+ return /* @__PURE__ */ m("span", { className: "not-prose mint:inline-block mint:mt-2 mint:mr-1 mint:px-1.5 mint:py-0.5 mint:text-sm mint:font-semibold mint:font-mono mint:rounded mint:bg-gray-100 mint:dark:bg-[#2d2d2d]", children: n });
5
4
  }
6
5
  export {
7
- s as ParamName
6
+ i as ParamName
8
7
  };
9
8
  //# sourceMappingURL=param-name.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"param-name.js","sources":["../../../src/components/content-components/param-name.tsx"],"sourcesContent":["import styles from \"./param-name.module.css\";\n\ninterface ParamNameProps {\n children: React.ReactNode;\n}\n\nexport function ParamName({ children }: ParamNameProps) {\n return <span className={`not-prose ${styles.paramName}`}>{children}</span>;\n}\n"],"names":["ParamName","children","styles"],"mappings":";;AAMO,SAASA,EAAU,EAAE,UAAAC,KAA4B;AACtD,2BAAQ,QAAA,EAAK,WAAW,aAAaC,EAAO,SAAS,IAAK,UAAAD,GAAS;AACrE;"}
1
+ {"version":3,"file":"param-name.js","sources":["../../../src/components/content-components/param-name.tsx"],"sourcesContent":["interface ParamNameProps {\n children: React.ReactNode;\n}\n\nexport function ParamName({ children }: ParamNameProps) {\n return (\n <span className=\"not-prose mint:inline-block mint:mt-2 mint:mr-1 mint:px-1.5 mint:py-0.5 mint:text-sm mint:font-semibold mint:font-mono mint:rounded mint:bg-gray-100 mint:dark:bg-[#2d2d2d]\">\n {children}\n </span>\n );\n}\n"],"names":["ParamName","children","jsx"],"mappings":";AAIO,SAASA,EAAU,EAAE,UAAAC,KAA4B;AACtD,SACE,gBAAAC,EAAC,QAAA,EAAK,WAAU,+KACb,UAAAD,EAAA,CACH;AAEJ;"}
@@ -1,122 +1,156 @@
1
- import { jsxs as r, Fragment as m, jsx as t } from "react/jsx-runtime";
2
- import * as s from "react";
3
- import { useState as p } from "react";
4
- import { TableModal as f } from "./table-modal.js";
5
- import { ArrowExpand20Regular as N } from "@fluentui/react-icons";
6
- import o from "./table.module.css.js";
7
- const T = s.forwardRef(({ className: a, children: e, ...l }, n) => {
8
- const [c, d] = p(!1), i = () => {
9
- d(!0);
1
+ import { jsxs as d, Fragment as c, jsx as r } from "react/jsx-runtime";
2
+ import * as i from "react";
3
+ import { useState as f } from "react";
4
+ import { TableModal as g } from "./table-modal.js";
5
+ import { ArrowExpand20Regular as x } from "@fluentui/react-icons";
6
+ import { cn as n } from "../../../utils/cn.js";
7
+ const p = i.forwardRef(({ className: t, children: a, ...e }, l) => {
8
+ const [o, m] = f(!1), s = () => {
9
+ m(!0);
10
10
  }, b = () => {
11
- d(!1);
11
+ m(!1);
12
12
  };
13
- return /* @__PURE__ */ r(m, { children: [
14
- /* @__PURE__ */ r(
13
+ return /* @__PURE__ */ d(c, { children: [
14
+ /* @__PURE__ */ d(
15
15
  "div",
16
16
  {
17
- className: o.container,
17
+ className: "mint:relative mint:block mint:mb-4 mint:mt-8",
18
18
  role: "region",
19
19
  "aria-label": "Data table",
20
20
  children: [
21
- /* @__PURE__ */ r(
21
+ /* @__PURE__ */ d(
22
22
  "button",
23
23
  {
24
- onClick: i,
25
- className: o.expandButton,
24
+ onClick: s,
25
+ className: "mint:ml-auto mint:flex mint:items-center mint:gap-2 mint:px-2 mint:py-1 mint:rounded-lg mint:bg-transparent mint:border-none mint:cursor-pointer mint:hover:bg-gray-100 mint:dark:hover:bg-[#2d2d2d]",
26
26
  "aria-label": "Expand table to full screen view",
27
27
  title: "Expand table",
28
28
  children: [
29
- /* @__PURE__ */ t(N, { className: o.expandIcon }),
30
- /* @__PURE__ */ t("span", { className: o.expandText, children: "Expand table" })
29
+ /* @__PURE__ */ r(x, { className: "mint:h-4 mint:w-4 mint:text-gray-700 mint:dark:text-gray-200" }),
30
+ /* @__PURE__ */ r("span", { className: "mint:text-sm mint:text-gray-700 mint:dark:text-gray-200", children: "Expand table" })
31
31
  ]
32
32
  }
33
33
  ),
34
- /* @__PURE__ */ t("div", { className: o.scrollContainer, children: /* @__PURE__ */ t(
34
+ /* @__PURE__ */ r("div", { className: "mint:mt-2 mint:overflow-x-auto", children: /* @__PURE__ */ r(
35
35
  "table",
36
36
  {
37
- ref: n,
38
- className: `${o.table} ${a || ""}`,
39
- ...l,
40
- children: e
37
+ ref: l,
38
+ className: n(
39
+ "mint:mt-2 mint:border-collapse mint:text-sm mint:w-full mint:rounded-xl mint:overflow-hidden mint:bg-gray-50 mint:dark:bg-[#2d2d2d]",
40
+ t
41
+ ),
42
+ ...e,
43
+ children: a
41
44
  }
42
45
  ) })
43
46
  ]
44
47
  }
45
48
  ),
46
- /* @__PURE__ */ t(f, { isOpen: c, onClose: b, children: /* @__PURE__ */ t(
49
+ /* @__PURE__ */ r(g, { isOpen: o, onClose: b, children: /* @__PURE__ */ r(
47
50
  "table",
48
51
  {
49
- className: `${o.table} ${a || ""}`,
50
- children: e
52
+ className: n(
53
+ "mint:mt-2 mint:border-collapse mint:text-sm mint:w-full mint:rounded-xl mint:overflow-hidden mint:bg-gray-50 mint:dark:bg-[#2d2d2d]",
54
+ t
55
+ ),
56
+ children: a
51
57
  }
52
58
  ) })
53
59
  ] });
54
60
  });
55
- T.displayName = "Table";
56
- const $ = s.forwardRef(({ className: a, ...e }, l) => /* @__PURE__ */ t(
61
+ p.displayName = "Table";
62
+ const y = i.forwardRef(({ className: t, ...a }, e) => /* @__PURE__ */ r(
57
63
  "thead",
58
64
  {
59
- ref: l,
60
- className: `${o.tableHeader} ${a || ""}`,
61
- ...e
65
+ ref: e,
66
+ className: n(
67
+ "mint:text-gray-700 mint:bg-gray-50 mint:dark:text-gray-300 mint:dark:bg-[#2d2d2d] mint:[&>tr]:border-0",
68
+ t
69
+ ),
70
+ ...a
71
+ }
72
+ ));
73
+ y.displayName = "TableHeader";
74
+ const h = i.forwardRef(({ className: t, ...a }, e) => /* @__PURE__ */ r(
75
+ "tbody",
76
+ {
77
+ ref: e,
78
+ className: n(
79
+ "mint:[&>tr:first-child>td:first-child]:rounded-tl-xl mint:[&>tr:first-child>td:last-child]:rounded-tr-xl mint:[&>tr:last-child>td:first-child]:rounded-bl-xl mint:[&>tr:last-child>td:last-child]:rounded-br-xl",
80
+ t
81
+ ),
82
+ ...a
62
83
  }
63
84
  ));
64
- $.displayName = "TableHeader";
65
- const w = s.forwardRef(({ className: a, ...e }, l) => /* @__PURE__ */ t("tbody", { ref: l, className: a, ...e }));
66
- w.displayName = "TableBody";
67
- const R = s.forwardRef(({ className: a, ...e }, l) => /* @__PURE__ */ t(
85
+ h.displayName = "TableBody";
86
+ const u = i.forwardRef(({ className: t, ...a }, e) => /* @__PURE__ */ r(
68
87
  "tfoot",
69
88
  {
70
- ref: l,
71
- className: `${o.tableFooter} ${a || ""}`,
72
- ...e
89
+ ref: e,
90
+ className: n(
91
+ "mint:border-t mint:border-gray-200 mint:bg-gray-50/50 mint:font-medium mint:dark:border-t-gray-600 mint:dark:bg-[#2d2d2d]/50 mint:[&>tr:last-child]:border-b-0",
92
+ t
93
+ ),
94
+ ...a
73
95
  }
74
96
  ));
75
- R.displayName = "TableFooter";
76
- const x = s.forwardRef(({ className: a, ...e }, l) => /* @__PURE__ */ t(
97
+ u.displayName = "TableFooter";
98
+ const N = i.forwardRef(({ className: t, ...a }, e) => /* @__PURE__ */ r(
77
99
  "tr",
78
100
  {
79
- ref: l,
80
- className: `${o.tableRow} ${a || ""}`,
81
- ...e
101
+ ref: e,
102
+ className: n(
103
+ "mint:border mint:border-gray-50 mint:dark:border-[#2d2d2d]",
104
+ t
105
+ ),
106
+ ...a
82
107
  }
83
108
  ));
84
- x.displayName = "TableRow";
85
- const y = s.forwardRef(({ className: a, ...e }, l) => /* @__PURE__ */ t(
109
+ N.displayName = "TableRow";
110
+ const w = i.forwardRef(({ className: t, ...a }, e) => /* @__PURE__ */ r(
86
111
  "th",
87
112
  {
88
- ref: l,
89
- className: `${o.tableHead} ${a || ""}`,
90
- ...e
113
+ ref: e,
114
+ className: n(
115
+ "mint:h-10 mint:bg-gray-50 mint:overflow-hidden mint:px-6 mint:text-left mint:font-semibold mint:text-gray-700 mint:first:rounded-tl-xl mint:last:rounded-tr-xl mint:dark:bg-[#2d2d2d] mint:dark:text-gray-300",
116
+ t
117
+ ),
118
+ ...a
91
119
  }
92
120
  ));
93
- y.displayName = "TableHead";
94
- const C = s.forwardRef(({ className: a, ...e }, l) => /* @__PURE__ */ t(
121
+ w.displayName = "TableHead";
122
+ const k = i.forwardRef(({ className: t, ...a }, e) => /* @__PURE__ */ r(
95
123
  "td",
96
124
  {
97
- ref: l,
98
- className: `${o.tableCell} ${a || ""}`,
99
- ...e
125
+ ref: e,
126
+ className: n(
127
+ "mint:bg-white mint:border-gray-50 mint:px-6 mint:py-3 mint:text-[#141414] mint:dark:bg-[#252525] mint:dark:border-[#2d2d2d] mint:dark:text-gray-200",
128
+ t
129
+ ),
130
+ ...a
100
131
  }
101
132
  ));
102
- C.displayName = "TableCell";
103
- const h = s.forwardRef(({ className: a, ...e }, l) => /* @__PURE__ */ t(
133
+ k.displayName = "TableCell";
134
+ const T = i.forwardRef(({ className: t, ...a }, e) => /* @__PURE__ */ r(
104
135
  "caption",
105
136
  {
106
- ref: l,
107
- className: `${o.tableCaption} ${a || ""}`,
108
- ...e
137
+ ref: e,
138
+ className: n(
139
+ "mint:mt-4 mint:text-sm mint:text-gray-500 mint:dark:text-gray-400",
140
+ t
141
+ ),
142
+ ...a
109
143
  }
110
144
  ));
111
- h.displayName = "TableCaption";
145
+ T.displayName = "TableCaption";
112
146
  export {
113
- T as Table,
114
- w as TableBody,
115
- h as TableCaption,
116
- C as TableCell,
117
- R as TableFooter,
118
- y as TableHead,
119
- $ as TableHeader,
120
- x as TableRow
147
+ p as Table,
148
+ h as TableBody,
149
+ T as TableCaption,
150
+ k as TableCell,
151
+ u as TableFooter,
152
+ w as TableHead,
153
+ y as TableHeader,
154
+ N as TableRow
121
155
  };
122
156
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/content-components/table/index.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useState } from \"react\";\nimport { TableModal } from \"./table-modal\";\nimport { ArrowExpand20Regular } from \"@fluentui/react-icons\";\nimport styles from \"./table.module.css\";\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, children, ...props }, ref) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const handleExpandClick = () => {\n setIsModalOpen(true);\n };\n\n const handleCloseModal = () => {\n setIsModalOpen(false);\n };\n\n return (\n <>\n <div\n className={styles.container}\n role=\"region\"\n aria-label=\"Data table\"\n >\n <button\n onClick={handleExpandClick}\n className={styles.expandButton}\n aria-label=\"Expand table to full screen view\"\n title=\"Expand table\"\n >\n <ArrowExpand20Regular className={styles.expandIcon} />\n <span className={styles.expandText}>\n Expand table\n </span>\n </button>\n <div className={styles.scrollContainer}>\n <table\n ref={ref}\n className={`${styles.table} ${className || \"\"}`}\n {...props}\n >\n {children}\n </table>\n </div>\n </div>\n <TableModal isOpen={isModalOpen} onClose={handleCloseModal}>\n <table\n className={`${styles.table} ${className || \"\"}`}\n >\n {children}\n </table>\n </TableModal>\n </>\n );\n});\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={`${styles.tableHeader} ${className || \"\"}`}\n {...props}\n />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={className} {...props} />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={`${styles.tableFooter} ${className || \"\"}`}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={`${styles.tableRow} ${className || \"\"}`}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={`${styles.tableHead} ${className || \"\"}`}\n {...props}\n />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={`${styles.tableCell} ${className || \"\"}`}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={`${styles.tableCaption} ${className || \"\"}`}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"],"names":["Table","React","className","children","props","ref","isModalOpen","setIsModalOpen","useState","handleExpandClick","handleCloseModal","jsxs","Fragment","styles","jsx","ArrowExpand20Regular","TableModal","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/content-components/table/index.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useState } from \"react\";\nimport { TableModal } from \"./table-modal\";\nimport { ArrowExpand20Regular } from \"@fluentui/react-icons\";\nimport { cn } from \"../../../utils/cn\";\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, children, ...props }, ref) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const handleExpandClick = () => {\n setIsModalOpen(true);\n };\n\n const handleCloseModal = () => {\n setIsModalOpen(false);\n };\n\n return (\n <>\n <div\n className=\"mint:relative mint:block mint:mb-4 mint:mt-8\"\n role=\"region\"\n aria-label=\"Data table\"\n >\n <button\n onClick={handleExpandClick}\n className=\"mint:ml-auto mint:flex mint:items-center mint:gap-2 mint:px-2 mint:py-1 mint:rounded-lg mint:bg-transparent mint:border-none mint:cursor-pointer mint:hover:bg-gray-100 mint:dark:hover:bg-[#2d2d2d]\"\n aria-label=\"Expand table to full screen view\"\n title=\"Expand table\"\n >\n <ArrowExpand20Regular className=\"mint:h-4 mint:w-4 mint:text-gray-700 mint:dark:text-gray-200\" />\n <span className=\"mint:text-sm mint:text-gray-700 mint:dark:text-gray-200\">\n Expand table\n </span>\n </button>\n <div className=\"mint:mt-2 mint:overflow-x-auto\">\n <table\n ref={ref}\n className={cn(\n \"mint:mt-2 mint:border-collapse mint:text-sm mint:w-full mint:rounded-xl mint:overflow-hidden mint:bg-gray-50 mint:dark:bg-[#2d2d2d]\",\n className\n )}\n {...props}\n >\n {children}\n </table>\n </div>\n </div>\n <TableModal isOpen={isModalOpen} onClose={handleCloseModal}>\n <table\n className={cn(\n \"mint:mt-2 mint:border-collapse mint:text-sm mint:w-full mint:rounded-xl mint:overflow-hidden mint:bg-gray-50 mint:dark:bg-[#2d2d2d]\",\n className\n )}\n >\n {children}\n </table>\n </TableModal>\n </>\n );\n});\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(\n \"mint:text-gray-700 mint:bg-gray-50 mint:dark:text-gray-300 mint:dark:bg-[#2d2d2d] mint:[&>tr]:border-0\",\n className\n )}\n {...props}\n />\n));\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\n \"mint:[&>tr:first-child>td:first-child]:rounded-tl-xl mint:[&>tr:first-child>td:last-child]:rounded-tr-xl mint:[&>tr:last-child>td:first-child]:rounded-bl-xl mint:[&>tr:last-child>td:last-child]:rounded-br-xl\",\n className\n )}\n {...props}\n />\n));\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"mint:border-t mint:border-gray-200 mint:bg-gray-50/50 mint:font-medium mint:dark:border-t-gray-600 mint:dark:bg-[#2d2d2d]/50 mint:[&>tr:last-child]:border-b-0\",\n className\n )}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"mint:border mint:border-gray-50 mint:dark:border-[#2d2d2d]\",\n className\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"mint:h-10 mint:bg-gray-50 mint:overflow-hidden mint:px-6 mint:text-left mint:font-semibold mint:text-gray-700 mint:first:rounded-tl-xl mint:last:rounded-tr-xl mint:dark:bg-[#2d2d2d] mint:dark:text-gray-300\",\n className\n )}\n {...props}\n />\n));\nTableHead.displayName = \"TableHead\";\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"mint:bg-white mint:border-gray-50 mint:px-6 mint:py-3 mint:text-[#141414] mint:dark:bg-[#252525] mint:dark:border-[#2d2d2d] mint:dark:text-gray-200\",\n className\n )}\n {...props}\n />\n));\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\n \"mint:mt-4 mint:text-sm mint:text-gray-500 mint:dark:text-gray-400\",\n className\n )}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n"],"names":["Table","React","className","children","props","ref","isModalOpen","setIsModalOpen","useState","handleExpandClick","handleCloseModal","jsxs","Fragment","jsx","ArrowExpand20Regular","cn","TableModal","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption"],"mappings":"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"}
@@ -1,57 +1,56 @@
1
- import { jsx as l, jsxs as b } from "react/jsx-runtime";
2
- import { useRef as s, useEffect as u } from "react";
3
- import { Dismiss20Regular as w } from "@fluentui/react-icons";
4
- import o from "./table-modal.module.css.js";
5
- function x({ isOpen: n, onClose: r, children: y }) {
6
- const i = s(null), m = s(null), f = s(null);
7
- return u(() => {
8
- var e, t;
9
- return n ? (f.current = document.activeElement, document.body.style.overflow = "hidden", (e = m.current) == null || e.focus()) : (document.body.style.overflow = "unset", (t = f.current) == null || t.focus()), () => {
1
+ import { jsx as i, jsxs as v } from "react/jsx-runtime";
2
+ import { useRef as d, useEffect as c } from "react";
3
+ import { Dismiss20Regular as y } from "@fluentui/react-icons";
4
+ function x({ isOpen: n, onClose: r, children: b }) {
5
+ const a = d(null), s = d(null), u = d(null);
6
+ return c(() => {
7
+ var t, e;
8
+ return n ? (u.current = document.activeElement, document.body.style.overflow = "hidden", (t = s.current) == null || t.focus()) : (document.body.style.overflow = "unset", (e = u.current) == null || e.focus()), () => {
10
9
  document.body.style.overflow = "unset";
11
10
  };
12
- }, [n]), u(() => {
13
- const e = (t) => {
14
- t.key === "Escape" && r();
11
+ }, [n]), c(() => {
12
+ const t = (e) => {
13
+ e.key === "Escape" && r();
15
14
  };
16
- return n && window.addEventListener("keydown", e), () => {
17
- window.removeEventListener("keydown", e);
15
+ return n && window.addEventListener("keydown", t), () => {
16
+ window.removeEventListener("keydown", t);
18
17
  };
19
- }, [n, r]), u(() => {
20
- if (!n || !i.current) return;
21
- const e = i.current, t = e.querySelectorAll(
18
+ }, [n, r]), c(() => {
19
+ if (!n || !a.current) return;
20
+ const t = a.current, e = t.querySelectorAll(
22
21
  'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
23
- ), a = t[0], c = t[t.length - 1], v = (d) => {
24
- d.key === "Tab" && (d.shiftKey ? document.activeElement === a && (d.preventDefault(), c == null || c.focus()) : document.activeElement === c && (d.preventDefault(), a == null || a.focus()));
22
+ ), m = e[0], o = e[e.length - 1], f = (l) => {
23
+ l.key === "Tab" && (l.shiftKey ? document.activeElement === m && (l.preventDefault(), o == null || o.focus()) : document.activeElement === o && (l.preventDefault(), m == null || m.focus()));
25
24
  };
26
- return e.addEventListener("keydown", v), () => {
27
- e.removeEventListener("keydown", v);
25
+ return t.addEventListener("keydown", f), () => {
26
+ t.removeEventListener("keydown", f);
28
27
  };
29
- }, [n]), n ? /* @__PURE__ */ l(
28
+ }, [n]), n ? /* @__PURE__ */ i(
30
29
  "div",
31
30
  {
32
- className: o.overlay,
31
+ className: "mint:fixed mint:inset-0 mint:z-50 mint:flex mint:items-center mint:justify-center mint:p-4 mint:backdrop-blur-sm",
33
32
  onClick: r,
34
33
  role: "dialog",
35
34
  "aria-modal": "true",
36
35
  "aria-labelledby": "table-modal-title",
37
- children: /* @__PURE__ */ b(
36
+ children: /* @__PURE__ */ v(
38
37
  "div",
39
38
  {
40
- ref: i,
41
- className: o.modal,
42
- onClick: (e) => e.stopPropagation(),
39
+ ref: a,
40
+ className: "mint:relative mint:w-full mint:max-w-screen-2xl mint:max-h-[90vh] mint:overflow-auto mint:bg-white mint:rounded-2xl mint:shadow-[0_25px_50px_-12px_rgba(0,0,0,0.25)] mint:border mint:border-gray-200 mint:dark:bg-[#1f1f1f] mint:dark:border-white/10",
41
+ onClick: (t) => t.stopPropagation(),
43
42
  children: [
44
- /* @__PURE__ */ l("div", { className: o.header, children: /* @__PURE__ */ l(
43
+ /* @__PURE__ */ i("div", { className: "mint:sticky mint:top-0 mint:right-0 mint:z-10 mint:flex mint:justify-end mint:p-2 mint:pr-4 mint:backdrop-blur-sm", children: /* @__PURE__ */ i(
45
44
  "button",
46
45
  {
47
- ref: m,
46
+ ref: s,
48
47
  onClick: r,
49
- className: o.closeButton,
48
+ className: "mint:p-2 mint:rounded-lg mint:bg-transparent mint:border-none mint:cursor-pointer mint:hover:bg-gray-100 mint:dark:hover:bg-[#141414]",
50
49
  "aria-label": "Close table expanded view",
51
- children: /* @__PURE__ */ l(w, { className: o.closeIcon })
50
+ children: /* @__PURE__ */ i(y, { className: "mint:h-5 mint:w-5 mint:text-gray-700 mint:dark:text-white" })
52
51
  }
53
52
  ) }),
54
- /* @__PURE__ */ l("div", { className: o.content, id: "table-modal-title", children: y })
53
+ /* @__PURE__ */ i("div", { className: "mint:px-6 mint:py-4", id: "table-modal-title", children: b })
55
54
  ]
56
55
  }
57
56
  )
@@ -1 +1 @@
1
- {"version":3,"file":"table-modal.js","sources":["../../../../src/components/content-components/table/table-modal.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport { Dismiss20Regular } from \"@fluentui/react-icons\";\nimport styles from \"./table-modal.module.css\";\n\ninterface TableModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n}\n\nexport function TableModal({ isOpen, onClose, children }: TableModalProps) {\n const modalRef = useRef<HTMLDivElement>(null);\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n const previousActiveElement = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (isOpen) {\n previousActiveElement.current = document.activeElement as HTMLElement;\n document.body.style.overflow = \"hidden\";\n closeButtonRef.current?.focus();\n } else {\n document.body.style.overflow = \"unset\";\n previousActiveElement.current?.focus();\n }\n\n return () => {\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen]);\n\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n if (isOpen) {\n window.addEventListener(\"keydown\", handleEscape);\n }\n\n return () => {\n window.removeEventListener(\"keydown\", handleEscape);\n };\n }, [isOpen, onClose]);\n\n useEffect(() => {\n if (!isOpen || !modalRef.current) return;\n\n const modal = modalRef.current;\n const focusableElements = modal.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n const firstFocusable = focusableElements[0];\n const lastFocusable = focusableElements[focusableElements.length - 1];\n\n const handleTabKey = (e: KeyboardEvent) => {\n if (e.key !== \"Tab\") return;\n\n if (e.shiftKey) {\n if (document.activeElement === firstFocusable) {\n e.preventDefault();\n lastFocusable?.focus();\n }\n } else {\n if (document.activeElement === lastFocusable) {\n e.preventDefault();\n firstFocusable?.focus();\n }\n }\n };\n\n modal.addEventListener(\"keydown\", handleTabKey as EventListener);\n return () => {\n modal.removeEventListener(\"keydown\", handleTabKey as EventListener);\n };\n }, [isOpen]);\n\n if (!isOpen) return null;\n\n return (\n <div\n className={styles.overlay}\n onClick={onClose}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"table-modal-title\"\n >\n <div\n ref={modalRef}\n className={styles.modal}\n onClick={(e) => e.stopPropagation()}\n >\n <div className={styles.header}>\n <button\n ref={closeButtonRef}\n onClick={onClose}\n className={styles.closeButton}\n aria-label=\"Close table expanded view\"\n >\n <Dismiss20Regular className={styles.closeIcon} />\n </button>\n </div>\n <div className={styles.content} id=\"table-modal-title\">\n {children}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["TableModal","isOpen","onClose","children","modalRef","useRef","closeButtonRef","previousActiveElement","useEffect","_a","_b","handleEscape","e","modal","focusableElements","firstFocusable","lastFocusable","handleTabKey","jsx","styles","jsxs","Dismiss20Regular"],"mappings":";;;;AAUO,SAASA,EAAW,EAAE,QAAAC,GAAQ,SAAAC,GAAS,UAAAC,KAA6B;AACzE,QAAMC,IAAWC,EAAuB,IAAI,GACtCC,IAAiBD,EAA0B,IAAI,GAC/CE,IAAwBF,EAA2B,IAAI;AAiE7D,SA/DAG,EAAU,MAAM;;AACd,WAAIP,KACFM,EAAsB,UAAU,SAAS,eACzC,SAAS,KAAK,MAAM,WAAW,WAC/BE,IAAAH,EAAe,YAAf,QAAAG,EAAwB,YAExB,SAAS,KAAK,MAAM,WAAW,UAC/BC,IAAAH,EAAsB,YAAtB,QAAAG,EAA+B,UAG1B,MAAM;AACX,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA,EACF,GAAG,CAACT,CAAM,CAAC,GAEXO,EAAU,MAAM;AACd,UAAMG,IAAe,CAACC,MAAqB;AACzC,MAAIA,EAAE,QAAQ,YACZV,EAAA;AAAA,IAEJ;AAEA,WAAID,KACF,OAAO,iBAAiB,WAAWU,CAAY,GAG1C,MAAM;AACX,aAAO,oBAAoB,WAAWA,CAAY;AAAA,IACpD;AAAA,EACF,GAAG,CAACV,GAAQC,CAAO,CAAC,GAEpBM,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACG,EAAS,QAAS;AAElC,UAAMS,IAAQT,EAAS,SACjBU,IAAoBD,EAAM;AAAA,MAC9B;AAAA,IAAA,GAEIE,IAAiBD,EAAkB,CAAC,GACpCE,IAAgBF,EAAkBA,EAAkB,SAAS,CAAC,GAE9DG,IAAe,CAACL,MAAqB;AACzC,MAAIA,EAAE,QAAQ,UAEVA,EAAE,WACA,SAAS,kBAAkBG,MAC7BH,EAAE,eAAA,GACFI,KAAA,QAAAA,EAAe,WAGb,SAAS,kBAAkBA,MAC7BJ,EAAE,eAAA,GACFG,KAAA,QAAAA,EAAgB;AAAA,IAGtB;AAEA,WAAAF,EAAM,iBAAiB,WAAWI,CAA6B,GACxD,MAAM;AACX,MAAAJ,EAAM,oBAAoB,WAAWI,CAA6B;AAAA,IACpE;AAAA,EACF,GAAG,CAAChB,CAAM,CAAC,GAENA,IAGH,gBAAAiB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAO;AAAA,MAClB,SAASjB;AAAA,MACT,MAAK;AAAA,MACL,cAAW;AAAA,MACX,mBAAgB;AAAA,MAEhB,UAAA,gBAAAkB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKhB;AAAA,UACL,WAAWe,EAAO;AAAA,UAClB,SAAS,CAAC,MAAM,EAAE,gBAAA;AAAA,UAElB,UAAA;AAAA,YAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAO,QACrB,UAAA,gBAAAD;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAKZ;AAAA,gBACL,SAASJ;AAAA,gBACT,WAAWiB,EAAO;AAAA,gBAClB,cAAW;AAAA,gBAEX,UAAA,gBAAAD,EAACG,GAAA,EAAiB,WAAWF,EAAO,UAAA,CAAW;AAAA,cAAA;AAAA,YAAA,GAEnD;AAAA,8BACC,OAAA,EAAI,WAAWA,EAAO,SAAS,IAAG,qBAChC,UAAAhB,EAAA,CACH;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,IA5BgB;AA+BtB;"}
1
+ {"version":3,"file":"table-modal.js","sources":["../../../../src/components/content-components/table/table-modal.tsx"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\nimport { Dismiss20Regular } from \"@fluentui/react-icons\";\n\ninterface TableModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n}\n\nexport function TableModal({ isOpen, onClose, children }: TableModalProps) {\n const modalRef = useRef<HTMLDivElement>(null);\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n const previousActiveElement = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (isOpen) {\n previousActiveElement.current = document.activeElement as HTMLElement;\n document.body.style.overflow = \"hidden\";\n closeButtonRef.current?.focus();\n } else {\n document.body.style.overflow = \"unset\";\n previousActiveElement.current?.focus();\n }\n\n return () => {\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen]);\n\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n if (isOpen) {\n window.addEventListener(\"keydown\", handleEscape);\n }\n\n return () => {\n window.removeEventListener(\"keydown\", handleEscape);\n };\n }, [isOpen, onClose]);\n\n useEffect(() => {\n if (!isOpen || !modalRef.current) return;\n\n const modal = modalRef.current;\n const focusableElements = modal.querySelectorAll<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n const firstFocusable = focusableElements[0];\n const lastFocusable = focusableElements[focusableElements.length - 1];\n\n const handleTabKey = (e: KeyboardEvent) => {\n if (e.key !== \"Tab\") return;\n\n if (e.shiftKey) {\n if (document.activeElement === firstFocusable) {\n e.preventDefault();\n lastFocusable?.focus();\n }\n } else {\n if (document.activeElement === lastFocusable) {\n e.preventDefault();\n firstFocusable?.focus();\n }\n }\n };\n\n modal.addEventListener(\"keydown\", handleTabKey as EventListener);\n return () => {\n modal.removeEventListener(\"keydown\", handleTabKey as EventListener);\n };\n }, [isOpen]);\n\n if (!isOpen) return null;\n\n return (\n <div\n className=\"mint:fixed mint:inset-0 mint:z-50 mint:flex mint:items-center mint:justify-center mint:p-4 mint:backdrop-blur-sm\"\n onClick={onClose}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"table-modal-title\"\n >\n <div\n ref={modalRef}\n className=\"mint:relative mint:w-full mint:max-w-screen-2xl mint:max-h-[90vh] mint:overflow-auto mint:bg-white mint:rounded-2xl mint:shadow-[0_25px_50px_-12px_rgba(0,0,0,0.25)] mint:border mint:border-gray-200 mint:dark:bg-[#1f1f1f] mint:dark:border-white/10\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"mint:sticky mint:top-0 mint:right-0 mint:z-10 mint:flex mint:justify-end mint:p-2 mint:pr-4 mint:backdrop-blur-sm\">\n <button\n ref={closeButtonRef}\n onClick={onClose}\n className=\"mint:p-2 mint:rounded-lg mint:bg-transparent mint:border-none mint:cursor-pointer mint:hover:bg-gray-100 mint:dark:hover:bg-[#141414]\"\n aria-label=\"Close table expanded view\"\n >\n <Dismiss20Regular className=\"mint:h-5 mint:w-5 mint:text-gray-700 mint:dark:text-white\" />\n </button>\n </div>\n <div className=\"mint:px-6 mint:py-4\" id=\"table-modal-title\">\n {children}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["TableModal","isOpen","onClose","children","modalRef","useRef","closeButtonRef","previousActiveElement","useEffect","_a","_b","handleEscape","modal","focusableElements","firstFocusable","lastFocusable","handleTabKey","e","jsx","jsxs","Dismiss20Regular"],"mappings":";;;AASO,SAASA,EAAW,EAAE,QAAAC,GAAQ,SAAAC,GAAS,UAAAC,KAA6B;AACzE,QAAMC,IAAWC,EAAuB,IAAI,GACtCC,IAAiBD,EAA0B,IAAI,GAC/CE,IAAwBF,EAA2B,IAAI;AAiE7D,SA/DAG,EAAU,MAAM;;AACd,WAAIP,KACFM,EAAsB,UAAU,SAAS,eACzC,SAAS,KAAK,MAAM,WAAW,WAC/BE,IAAAH,EAAe,YAAf,QAAAG,EAAwB,YAExB,SAAS,KAAK,MAAM,WAAW,UAC/BC,IAAAH,EAAsB,YAAtB,QAAAG,EAA+B,UAG1B,MAAM;AACX,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA,EACF,GAAG,CAACT,CAAM,CAAC,GAEXO,EAAU,MAAM;AACd,UAAMG,IAAe,CAAC,MAAqB;AACzC,MAAI,EAAE,QAAQ,YACZT,EAAA;AAAA,IAEJ;AAEA,WAAID,KACF,OAAO,iBAAiB,WAAWU,CAAY,GAG1C,MAAM;AACX,aAAO,oBAAoB,WAAWA,CAAY;AAAA,IACpD;AAAA,EACF,GAAG,CAACV,GAAQC,CAAO,CAAC,GAEpBM,EAAU,MAAM;AACd,QAAI,CAACP,KAAU,CAACG,EAAS,QAAS;AAElC,UAAMQ,IAAQR,EAAS,SACjBS,IAAoBD,EAAM;AAAA,MAC9B;AAAA,IAAA,GAEIE,IAAiBD,EAAkB,CAAC,GACpCE,IAAgBF,EAAkBA,EAAkB,SAAS,CAAC,GAE9DG,IAAe,CAACC,MAAqB;AACzC,MAAIA,EAAE,QAAQ,UAEVA,EAAE,WACA,SAAS,kBAAkBH,MAC7BG,EAAE,eAAA,GACFF,KAAA,QAAAA,EAAe,WAGb,SAAS,kBAAkBA,MAC7BE,EAAE,eAAA,GACFH,KAAA,QAAAA,EAAgB;AAAA,IAGtB;AAEA,WAAAF,EAAM,iBAAiB,WAAWI,CAA6B,GACxD,MAAM;AACX,MAAAJ,EAAM,oBAAoB,WAAWI,CAA6B;AAAA,IACpE;AAAA,EACF,GAAG,CAACf,CAAM,CAAC,GAENA,IAGH,gBAAAiB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAShB;AAAA,MACT,MAAK;AAAA,MACL,cAAW;AAAA,MACX,mBAAgB;AAAA,MAEhB,UAAA,gBAAAiB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKf;AAAA,UACL,WAAU;AAAA,UACV,SAAS,CAACa,MAAMA,EAAE,gBAAA;AAAA,UAElB,UAAA;AAAA,YAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,qHACb,UAAA,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,KAAKZ;AAAA,gBACL,SAASJ;AAAA,gBACT,WAAU;AAAA,gBACV,cAAW;AAAA,gBAEX,UAAA,gBAAAgB,EAACE,GAAA,EAAiB,WAAU,4DAAA,CAA4D;AAAA,cAAA;AAAA,YAAA,GAE5F;AAAA,8BACC,OAAA,EAAI,WAAU,uBAAsB,IAAG,qBACrC,UAAAjB,EAAA,CACH;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,IA5BgB;AA+BtB;"}
@@ -1,87 +1,92 @@
1
- import { jsx as n, jsxs as d } from "react/jsx-runtime";
2
- import i, { useState as v, useRef as $, useEffect as g } from "react";
3
- import a from "./tabs.module.css.js";
4
- import y from "../../prose.module.css.js";
5
- const A = i.createContext({
1
+ import { jsx as a, jsxs as d } from "react/jsx-runtime";
2
+ import s, { useState as g, useRef as v, useEffect as y } from "react";
3
+ import { cn as u } from "../../../utils/cn.js";
4
+ const k = s.createContext({
6
5
  activeTab: 0,
7
6
  setActiveTab: () => {
8
7
  }
9
8
  });
10
- function D({ children: h, defaultTab: f = 0 }) {
11
- const [c, b] = v(f), o = $([]), r = i.Children.toArray(h);
12
- g(() => {
13
- o.current = o.current.slice(0, r.length);
9
+ function T({ children: f, defaultTab: p = 0 }) {
10
+ const [o, m] = g(p), l = v([]), r = s.Children.toArray(f);
11
+ y(() => {
12
+ l.current = l.current.slice(0, r.length);
14
13
  }, [r.length]);
15
- const m = (t, e) => {
16
- var s;
17
- let l = e;
18
- switch (t.key) {
14
+ const h = (e, t) => {
15
+ var i;
16
+ let n = t;
17
+ switch (e.key) {
19
18
  case "ArrowRight":
20
- t.preventDefault(), l = (e + 1) % r.length;
19
+ e.preventDefault(), n = (t + 1) % r.length;
21
20
  break;
22
21
  case "ArrowLeft":
23
- t.preventDefault(), l = (e - 1 + r.length) % r.length;
22
+ e.preventDefault(), n = (t - 1 + r.length) % r.length;
24
23
  break;
25
24
  case "Home":
26
- t.preventDefault(), l = 0;
25
+ e.preventDefault(), n = 0;
27
26
  break;
28
27
  case "End":
29
- t.preventDefault(), l = r.length - 1;
28
+ e.preventDefault(), n = r.length - 1;
30
29
  break;
31
30
  default:
32
31
  return;
33
32
  }
34
- b(l), (s = o.current[l]) == null || s.focus();
33
+ m(n), (i = l.current[n]) == null || i.focus();
35
34
  };
36
- return /* @__PURE__ */ n(A.Provider, { value: { activeTab: c, setActiveTab: b }, children: /* @__PURE__ */ d("div", { className: a.container, children: [
37
- /* @__PURE__ */ n(
35
+ return /* @__PURE__ */ a(k.Provider, { value: { activeTab: o, setActiveTab: m }, children: /* @__PURE__ */ d("div", { className: "mint:my-6", children: [
36
+ /* @__PURE__ */ a(
38
37
  "div",
39
38
  {
40
39
  role: "tablist",
41
40
  "aria-label": "Content tabs",
42
- className: a.tabList,
43
- children: r.map((t, e) => {
44
- if (!i.isValidElement(t)) return null;
45
- const l = t.props.title || `Tab ${e + 1}`, s = t.props.icon, p = c === e;
46
- return /* @__PURE__ */ n(
41
+ className: "mint:flex mint:gap-1 mint:border-b mint:border-gray-200 mint:mb-4 mint:overflow-x-auto mint:dark:border-b-gray-700",
42
+ children: r.map((e, t) => {
43
+ if (!s.isValidElement(e)) return null;
44
+ const n = e.props.title || `Tab ${t + 1}`, i = e.props.icon, c = o === t;
45
+ return /* @__PURE__ */ a(
47
46
  "button",
48
47
  {
49
- ref: (u) => o.current[e] = u,
48
+ ref: (b) => l.current[t] = b,
50
49
  role: "tab",
51
- "aria-selected": p,
52
- "aria-controls": `tabpanel-${e}`,
53
- id: `tab-${e}`,
54
- tabIndex: p ? 0 : -1,
55
- onClick: () => b(e),
56
- onKeyDown: (u) => m(u, e),
57
- className: `${a.tab} ${p ? a.tabActive : a.tabInactive}`,
58
- children: /* @__PURE__ */ d("span", { className: a.tabContent, children: [
59
- s && /* @__PURE__ */ n("span", { "aria-hidden": "true", children: s }),
60
- l
50
+ "aria-selected": c,
51
+ "aria-controls": `tabpanel-${t}`,
52
+ id: `tab-${t}`,
53
+ tabIndex: c ? 0 : -1,
54
+ onClick: () => m(t),
55
+ onKeyDown: (b) => h(b, t),
56
+ className: u(
57
+ "mint:px-4 mint:py-2 mint:text-sm mint:font-medium mint:border-b-2 mint:rounded-t mint:bg-transparent mint:cursor-pointer mint:transition-all mint:duration-150 mint:focus:outline-none mint:focus-visible:shadow-[0_0_0_2px_#fff,0_0_0_4px_#75b6e7] mint:focus-visible:outline-offset-2",
58
+ c ? "mint:border-b-[#0078d4] mint:text-[#0078d4] mint:dark:border-b-[#75b6e7] mint:dark:text-[#75b6e7]" : "mint:border-b-transparent mint:text-gray-600 mint:hover:text-gray-900 mint:hover:border-b-gray-300 mint:dark:text-gray-400 mint:dark:hover:text-gray-200 mint:dark:hover:border-b-gray-600"
59
+ ),
60
+ children: /* @__PURE__ */ d("span", { className: "mint:flex mint:items-center mint:gap-2", children: [
61
+ i && /* @__PURE__ */ a("span", { "aria-hidden": "true", children: i }),
62
+ n
61
63
  ] })
62
64
  },
63
- e
65
+ t
64
66
  );
65
67
  })
66
68
  }
67
69
  ),
68
- /* @__PURE__ */ n("div", { className: `${a.panelContainer} ${y.prose}`, children: r.map((t, e) => /* @__PURE__ */ n(
70
+ /* @__PURE__ */ a("div", { children: r.map((e, t) => /* @__PURE__ */ a(
69
71
  "div",
70
72
  {
71
73
  role: "tabpanel",
72
- id: `tabpanel-${e}`,
73
- "aria-labelledby": `tab-${e}`,
74
+ id: `tabpanel-${t}`,
75
+ "aria-labelledby": `tab-${t}`,
74
76
  tabIndex: 0,
75
- hidden: c !== e,
76
- className: `${a.panel} ${c === e ? "" : a.panelHidden}`,
77
- children: i.isValidElement(t) ? t.props.children : null
77
+ hidden: o !== t,
78
+ className: u(
79
+ "mint:outline-none",
80
+ o !== t && "mint:hidden"
81
+ ),
82
+ children: s.isValidElement(e) ? e.props.children : null
78
83
  },
79
- e
84
+ t
80
85
  )) })
81
86
  ] }) });
82
87
  }
83
88
  export {
84
- D as Tabs,
85
- A as TabsContext
89
+ T as Tabs,
90
+ k as TabsContext
86
91
  };
87
92
  //# sourceMappingURL=tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sources":["../../../../src/components/content-components/tabs/tabs.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport styles from \"./tabs.module.css\";\nimport proseStyles from \"../../prose.module.css\";\n\ninterface TabsProps {\n children: React.ReactNode;\n defaultTab?: number;\n}\n\ninterface TabsContextValue {\n activeTab: number;\n setActiveTab: (index: number) => void;\n}\n\nexport const TabsContext = React.createContext<TabsContextValue>({\n activeTab: 0,\n setActiveTab: () => {},\n});\n\nexport function Tabs({ children, defaultTab = 0 }: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultTab);\n const tabRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n const tabs = React.Children.toArray(children);\n\n useEffect(() => {\n tabRefs.current = tabRefs.current.slice(0, tabs.length);\n }, [tabs.length]);\n\n const handleKeyDown = (event: React.KeyboardEvent, currentIndex: number) => {\n let newIndex = currentIndex;\n\n switch (event.key) {\n case \"ArrowRight\":\n event.preventDefault();\n newIndex = (currentIndex + 1) % tabs.length;\n break;\n case \"ArrowLeft\":\n event.preventDefault();\n newIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n break;\n case \"Home\":\n event.preventDefault();\n newIndex = 0;\n break;\n case \"End\":\n event.preventDefault();\n newIndex = tabs.length - 1;\n break;\n default:\n return;\n }\n\n setActiveTab(newIndex);\n tabRefs.current[newIndex]?.focus();\n };\n\n return (\n <TabsContext.Provider value={{ activeTab, setActiveTab }}>\n <div className={styles.container}>\n <div\n role=\"tablist\"\n aria-label=\"Content tabs\"\n className={styles.tabList}\n >\n {tabs.map((tab, index) => {\n if (!React.isValidElement(tab)) return null;\n const title = tab.props.title || `Tab ${index + 1}`;\n const icon = tab.props.icon;\n const isActive = activeTab === index;\n\n return (\n <button\n key={index}\n ref={(el) => (tabRefs.current[index] = el)}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`tabpanel-${index}`}\n id={`tab-${index}`}\n tabIndex={isActive ? 0 : -1}\n onClick={() => setActiveTab(index)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n className={`${styles.tab} ${\n isActive ? styles.tabActive : styles.tabInactive\n }`}\n >\n <span className={styles.tabContent}>\n {icon && <span aria-hidden=\"true\">{icon}</span>}\n {title}\n </span>\n </button>\n );\n })}\n </div>\n\n <div className={`${styles.panelContainer} ${proseStyles.prose}`}>\n {tabs.map((tab, index) => (\n <div\n key={index}\n role=\"tabpanel\"\n id={`tabpanel-${index}`}\n aria-labelledby={`tab-${index}`}\n tabIndex={0}\n hidden={activeTab !== index}\n className={`${styles.panel} ${\n activeTab === index ? \"\" : styles.panelHidden\n }`}\n >\n {React.isValidElement(tab) ? tab.props.children : null}\n </div>\n ))}\n </div>\n </div>\n </TabsContext.Provider>\n );\n}\n"],"names":["TabsContext","React","Tabs","children","defaultTab","activeTab","setActiveTab","useState","tabRefs","useRef","tabs","useEffect","handleKeyDown","event","currentIndex","newIndex","_a","jsx","jsxs","styles","tab","index","title","icon","isActive","el","e","proseStyles"],"mappings":"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"}
1
+ {"version":3,"file":"tabs.js","sources":["../../../../src/components/content-components/tabs/tabs.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport { cn } from \"../../../utils/cn\";\n\ninterface TabsProps {\n children: React.ReactNode;\n defaultTab?: number;\n}\n\ninterface TabsContextValue {\n activeTab: number;\n setActiveTab: (index: number) => void;\n}\n\nexport const TabsContext = React.createContext<TabsContextValue>({\n activeTab: 0,\n setActiveTab: () => {},\n});\n\nexport function Tabs({ children, defaultTab = 0 }: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultTab);\n const tabRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n const tabs = React.Children.toArray(children);\n\n useEffect(() => {\n tabRefs.current = tabRefs.current.slice(0, tabs.length);\n }, [tabs.length]);\n\n const handleKeyDown = (event: React.KeyboardEvent, currentIndex: number) => {\n let newIndex = currentIndex;\n\n switch (event.key) {\n case \"ArrowRight\":\n event.preventDefault();\n newIndex = (currentIndex + 1) % tabs.length;\n break;\n case \"ArrowLeft\":\n event.preventDefault();\n newIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n break;\n case \"Home\":\n event.preventDefault();\n newIndex = 0;\n break;\n case \"End\":\n event.preventDefault();\n newIndex = tabs.length - 1;\n break;\n default:\n return;\n }\n\n setActiveTab(newIndex);\n tabRefs.current[newIndex]?.focus();\n };\n\n return (\n <TabsContext.Provider value={{ activeTab, setActiveTab }}>\n <div className=\"mint:my-6\">\n <div\n role=\"tablist\"\n aria-label=\"Content tabs\"\n className=\"mint:flex mint:gap-1 mint:border-b mint:border-gray-200 mint:mb-4 mint:overflow-x-auto mint:dark:border-b-gray-700\"\n >\n {tabs.map((tab, index) => {\n if (!React.isValidElement(tab)) return null;\n const title = tab.props.title || `Tab ${index + 1}`;\n const icon = tab.props.icon;\n const isActive = activeTab === index;\n\n return (\n <button\n key={index}\n ref={(el) => (tabRefs.current[index] = el)}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`tabpanel-${index}`}\n id={`tab-${index}`}\n tabIndex={isActive ? 0 : -1}\n onClick={() => setActiveTab(index)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n className={cn(\n \"mint:px-4 mint:py-2 mint:text-sm mint:font-medium mint:border-b-2 mint:rounded-t mint:bg-transparent mint:cursor-pointer mint:transition-all mint:duration-150 mint:focus:outline-none mint:focus-visible:shadow-[0_0_0_2px_#fff,0_0_0_4px_#75b6e7] mint:focus-visible:outline-offset-2\",\n isActive\n ? \"mint:border-b-[#0078d4] mint:text-[#0078d4] mint:dark:border-b-[#75b6e7] mint:dark:text-[#75b6e7]\"\n : \"mint:border-b-transparent mint:text-gray-600 mint:hover:text-gray-900 mint:hover:border-b-gray-300 mint:dark:text-gray-400 mint:dark:hover:text-gray-200 mint:dark:hover:border-b-gray-600\"\n )}\n >\n <span className=\"mint:flex mint:items-center mint:gap-2\">\n {icon && <span aria-hidden=\"true\">{icon}</span>}\n {title}\n </span>\n </button>\n );\n })}\n </div>\n\n <div>\n {tabs.map((tab, index) => (\n <div\n key={index}\n role=\"tabpanel\"\n id={`tabpanel-${index}`}\n aria-labelledby={`tab-${index}`}\n tabIndex={0}\n hidden={activeTab !== index}\n className={cn(\n \"mint:outline-none\",\n activeTab !== index && \"mint:hidden\"\n )}\n >\n {React.isValidElement(tab) ? tab.props.children : null}\n </div>\n ))}\n </div>\n </div>\n </TabsContext.Provider>\n );\n}\n"],"names":["TabsContext","React","Tabs","children","defaultTab","activeTab","setActiveTab","useState","tabRefs","useRef","tabs","useEffect","handleKeyDown","event","currentIndex","newIndex","_a","jsx","jsxs","tab","index","title","icon","isActive","el","e","cn"],"mappings":"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"}