@jameskabz/nextcraft-ui 0.6.6 → 0.6.7

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 (309) hide show
  1. package/dist/components/craft-alert.cjs +69 -0
  2. package/dist/components/craft-alert.cjs.map +1 -0
  3. package/dist/components/craft-alert.d.cts +16 -0
  4. package/dist/components/craft-alert.d.ts +16 -0
  5. package/dist/components/craft-alert.js +45 -0
  6. package/dist/components/craft-alert.js.map +1 -0
  7. package/dist/components/craft-badge.cjs +54 -0
  8. package/dist/components/craft-badge.cjs.map +1 -0
  9. package/dist/components/craft-badge.d.cts +12 -0
  10. package/dist/components/craft-badge.d.ts +12 -0
  11. package/dist/components/craft-badge.js +30 -0
  12. package/dist/components/craft-badge.js.map +1 -0
  13. package/dist/components/craft-button.cjs +66 -0
  14. package/dist/components/craft-button.cjs.map +1 -0
  15. package/dist/components/craft-button.d.cts +15 -0
  16. package/dist/components/craft-button.d.ts +15 -0
  17. package/dist/components/craft-button.js +42 -0
  18. package/dist/components/craft-button.js.map +1 -0
  19. package/dist/components/craft-card.cjs +63 -0
  20. package/dist/components/craft-card.cjs.map +1 -0
  21. package/dist/components/craft-card.d.cts +13 -0
  22. package/dist/components/craft-card.d.ts +13 -0
  23. package/dist/components/craft-card.js +39 -0
  24. package/dist/components/craft-card.js.map +1 -0
  25. package/dist/components/craft-checkbox.cjs +103 -0
  26. package/dist/components/craft-checkbox.cjs.map +1 -0
  27. package/dist/components/craft-checkbox.d.cts +16 -0
  28. package/dist/components/craft-checkbox.d.ts +16 -0
  29. package/dist/components/craft-checkbox.js +69 -0
  30. package/dist/components/craft-checkbox.js.map +1 -0
  31. package/dist/components/craft-command-palette.cjs +134 -0
  32. package/dist/components/craft-command-palette.cjs.map +1 -0
  33. package/dist/components/craft-command-palette.d.cts +28 -0
  34. package/dist/components/craft-command-palette.d.ts +28 -0
  35. package/dist/components/craft-command-palette.js +100 -0
  36. package/dist/components/craft-command-palette.js.map +1 -0
  37. package/dist/components/craft-confirm-dialog.cjs +114 -0
  38. package/dist/components/craft-confirm-dialog.cjs.map +1 -0
  39. package/dist/components/craft-confirm-dialog.d.cts +21 -0
  40. package/dist/components/craft-confirm-dialog.d.ts +21 -0
  41. package/dist/components/craft-confirm-dialog.js +80 -0
  42. package/dist/components/craft-confirm-dialog.js.map +1 -0
  43. package/dist/components/craft-create-edit-drawer.cjs +112 -0
  44. package/dist/components/craft-create-edit-drawer.cjs.map +1 -0
  45. package/dist/components/craft-create-edit-drawer.d.cts +28 -0
  46. package/dist/components/craft-create-edit-drawer.d.ts +28 -0
  47. package/dist/components/craft-create-edit-drawer.js +78 -0
  48. package/dist/components/craft-create-edit-drawer.js.map +1 -0
  49. package/dist/components/craft-currency-input.cjs +68 -0
  50. package/dist/components/craft-currency-input.cjs.map +1 -0
  51. package/dist/components/craft-currency-input.d.cts +14 -0
  52. package/dist/components/craft-currency-input.d.ts +14 -0
  53. package/dist/components/craft-currency-input.js +34 -0
  54. package/dist/components/craft-currency-input.js.map +1 -0
  55. package/dist/components/craft-data-table.cjs +407 -0
  56. package/dist/components/craft-data-table.cjs.map +1 -0
  57. package/dist/components/craft-data-table.d.cts +58 -0
  58. package/dist/components/craft-data-table.d.ts +58 -0
  59. package/dist/components/craft-data-table.js +373 -0
  60. package/dist/components/craft-data-table.js.map +1 -0
  61. package/dist/components/craft-date-picker.cjs +226 -0
  62. package/dist/components/craft-date-picker.cjs.map +1 -0
  63. package/dist/components/craft-date-picker.d.cts +17 -0
  64. package/dist/components/craft-date-picker.d.ts +17 -0
  65. package/dist/components/craft-date-picker.js +192 -0
  66. package/dist/components/craft-date-picker.js.map +1 -0
  67. package/dist/components/craft-drawer.cjs +126 -0
  68. package/dist/components/craft-drawer.cjs.map +1 -0
  69. package/dist/components/craft-drawer.d.cts +19 -0
  70. package/dist/components/craft-drawer.d.ts +19 -0
  71. package/dist/components/craft-drawer.js +92 -0
  72. package/dist/components/craft-drawer.js.map +1 -0
  73. package/dist/components/craft-dropdown-menu.cjs +127 -0
  74. package/dist/components/craft-dropdown-menu.cjs.map +1 -0
  75. package/dist/components/craft-dropdown-menu.d.cts +28 -0
  76. package/dist/components/craft-dropdown-menu.d.ts +28 -0
  77. package/dist/components/craft-dropdown-menu.js +93 -0
  78. package/dist/components/craft-dropdown-menu.js.map +1 -0
  79. package/dist/components/craft-empty-state.cjs +58 -0
  80. package/dist/components/craft-empty-state.cjs.map +1 -0
  81. package/dist/components/craft-empty-state.d.cts +14 -0
  82. package/dist/components/craft-empty-state.d.ts +14 -0
  83. package/dist/components/craft-empty-state.js +34 -0
  84. package/dist/components/craft-empty-state.js.map +1 -0
  85. package/dist/components/craft-error-state.cjs +60 -0
  86. package/dist/components/craft-error-state.cjs.map +1 -0
  87. package/dist/components/craft-error-state.d.cts +15 -0
  88. package/dist/components/craft-error-state.d.ts +15 -0
  89. package/dist/components/craft-error-state.js +36 -0
  90. package/dist/components/craft-error-state.js.map +1 -0
  91. package/dist/components/craft-filter-bar.cjs +76 -0
  92. package/dist/components/craft-filter-bar.cjs.map +1 -0
  93. package/dist/components/craft-filter-bar.d.cts +18 -0
  94. package/dist/components/craft-filter-bar.d.ts +18 -0
  95. package/dist/components/craft-filter-bar.js +52 -0
  96. package/dist/components/craft-filter-bar.js.map +1 -0
  97. package/dist/components/craft-form-builder.cjs +330 -0
  98. package/dist/components/craft-form-builder.cjs.map +1 -0
  99. package/dist/components/craft-form-builder.d.cts +57 -0
  100. package/dist/components/craft-form-builder.d.ts +57 -0
  101. package/dist/components/craft-form-builder.js +301 -0
  102. package/dist/components/craft-form-builder.js.map +1 -0
  103. package/dist/components/craft-form-field.cjs +301 -0
  104. package/dist/components/craft-form-field.cjs.map +1 -0
  105. package/dist/components/craft-form-field.d.cts +30 -0
  106. package/dist/components/craft-form-field.d.ts +30 -0
  107. package/dist/components/craft-form-field.js +280 -0
  108. package/dist/components/craft-form-field.js.map +1 -0
  109. package/dist/components/craft-form.cjs +114 -0
  110. package/dist/components/craft-form.cjs.map +1 -0
  111. package/dist/components/craft-form.d.cts +27 -0
  112. package/dist/components/craft-form.d.ts +27 -0
  113. package/dist/components/craft-form.js +80 -0
  114. package/dist/components/craft-form.js.map +1 -0
  115. package/dist/components/craft-icon.cjs +102 -0
  116. package/dist/components/craft-icon.cjs.map +1 -0
  117. package/dist/components/craft-icon.d.cts +19 -0
  118. package/dist/components/craft-icon.d.ts +19 -0
  119. package/dist/components/craft-icon.js +67 -0
  120. package/dist/components/craft-icon.js.map +1 -0
  121. package/dist/components/craft-input.cjs +78 -0
  122. package/dist/components/craft-input.cjs.map +1 -0
  123. package/dist/components/craft-input.d.cts +19 -0
  124. package/dist/components/craft-input.d.ts +19 -0
  125. package/dist/components/craft-input.js +44 -0
  126. package/dist/components/craft-input.js.map +1 -0
  127. package/dist/components/craft-link.cjs +70 -0
  128. package/dist/components/craft-link.cjs.map +1 -0
  129. package/dist/components/craft-link.d.cts +14 -0
  130. package/dist/components/craft-link.d.ts +14 -0
  131. package/dist/components/craft-link.js +36 -0
  132. package/dist/components/craft-link.js.map +1 -0
  133. package/dist/components/craft-loading-state.cjs +64 -0
  134. package/dist/components/craft-loading-state.cjs.map +1 -0
  135. package/dist/components/craft-loading-state.d.cts +13 -0
  136. package/dist/components/craft-loading-state.d.ts +13 -0
  137. package/dist/components/craft-loading-state.js +40 -0
  138. package/dist/components/craft-loading-state.js.map +1 -0
  139. package/dist/components/craft-modal.cjs +174 -0
  140. package/dist/components/craft-modal.cjs.map +1 -0
  141. package/dist/components/craft-modal.d.cts +19 -0
  142. package/dist/components/craft-modal.d.ts +19 -0
  143. package/dist/components/craft-modal.js +140 -0
  144. package/dist/components/craft-modal.js.map +1 -0
  145. package/dist/components/craft-number-input.cjs +63 -0
  146. package/dist/components/craft-number-input.cjs.map +1 -0
  147. package/dist/components/craft-number-input.d.cts +12 -0
  148. package/dist/components/craft-number-input.d.ts +12 -0
  149. package/dist/components/craft-number-input.js +29 -0
  150. package/dist/components/craft-number-input.js.map +1 -0
  151. package/dist/components/craft-pagination.cjs +130 -0
  152. package/dist/components/craft-pagination.cjs.map +1 -0
  153. package/dist/components/craft-pagination.d.cts +19 -0
  154. package/dist/components/craft-pagination.d.ts +19 -0
  155. package/dist/components/craft-pagination.js +106 -0
  156. package/dist/components/craft-pagination.js.map +1 -0
  157. package/dist/components/craft-popover.cjs +123 -0
  158. package/dist/components/craft-popover.cjs.map +1 -0
  159. package/dist/components/craft-popover.d.cts +20 -0
  160. package/dist/components/craft-popover.d.ts +20 -0
  161. package/dist/components/craft-popover.js +89 -0
  162. package/dist/components/craft-popover.js.map +1 -0
  163. package/dist/components/craft-select.cjs +84 -0
  164. package/dist/components/craft-select.cjs.map +1 -0
  165. package/dist/components/craft-select.d.cts +12 -0
  166. package/dist/components/craft-select.d.ts +12 -0
  167. package/dist/components/craft-select.js +50 -0
  168. package/dist/components/craft-select.js.map +1 -0
  169. package/dist/components/craft-skeleton.cjs +45 -0
  170. package/dist/components/craft-skeleton.cjs.map +1 -0
  171. package/dist/components/craft-skeleton.d.cts +10 -0
  172. package/dist/components/craft-skeleton.d.ts +10 -0
  173. package/dist/components/craft-skeleton.js +21 -0
  174. package/dist/components/craft-skeleton.js.map +1 -0
  175. package/dist/components/craft-stat-card.cjs +67 -0
  176. package/dist/components/craft-stat-card.cjs.map +1 -0
  177. package/dist/components/craft-stat-card.d.cts +17 -0
  178. package/dist/components/craft-stat-card.d.ts +17 -0
  179. package/dist/components/craft-stat-card.js +43 -0
  180. package/dist/components/craft-stat-card.js.map +1 -0
  181. package/dist/components/craft-submit-button.cjs +71 -0
  182. package/dist/components/craft-submit-button.cjs.map +1 -0
  183. package/dist/components/craft-submit-button.d.cts +13 -0
  184. package/dist/components/craft-submit-button.d.ts +13 -0
  185. package/dist/components/craft-submit-button.js +47 -0
  186. package/dist/components/craft-submit-button.js.map +1 -0
  187. package/dist/components/craft-switch.cjs +82 -0
  188. package/dist/components/craft-switch.cjs.map +1 -0
  189. package/dist/components/craft-switch.d.cts +14 -0
  190. package/dist/components/craft-switch.d.ts +14 -0
  191. package/dist/components/craft-switch.js +48 -0
  192. package/dist/components/craft-switch.js.map +1 -0
  193. package/dist/components/craft-table-toolbar.cjs +79 -0
  194. package/dist/components/craft-table-toolbar.cjs.map +1 -0
  195. package/dist/components/craft-table-toolbar.d.cts +19 -0
  196. package/dist/components/craft-table-toolbar.d.ts +19 -0
  197. package/dist/components/craft-table-toolbar.js +55 -0
  198. package/dist/components/craft-table-toolbar.js.map +1 -0
  199. package/dist/components/craft-tabs.cjs +105 -0
  200. package/dist/components/craft-tabs.cjs.map +1 -0
  201. package/dist/components/craft-tabs.d.cts +19 -0
  202. package/dist/components/craft-tabs.d.ts +19 -0
  203. package/dist/components/craft-tabs.js +71 -0
  204. package/dist/components/craft-tabs.js.map +1 -0
  205. package/dist/components/craft-textarea.cjs +69 -0
  206. package/dist/components/craft-textarea.cjs.map +1 -0
  207. package/dist/components/craft-textarea.d.cts +12 -0
  208. package/dist/components/craft-textarea.d.ts +12 -0
  209. package/dist/components/craft-textarea.js +35 -0
  210. package/dist/components/craft-textarea.js.map +1 -0
  211. package/dist/components/craft-toast.cjs +98 -0
  212. package/dist/components/craft-toast.cjs.map +1 -0
  213. package/dist/components/craft-toast.d.cts +24 -0
  214. package/dist/components/craft-toast.d.ts +24 -0
  215. package/dist/components/craft-toast.js +63 -0
  216. package/dist/components/craft-toast.js.map +1 -0
  217. package/dist/components/craft-tooltip.cjs +75 -0
  218. package/dist/components/craft-tooltip.cjs.map +1 -0
  219. package/dist/components/craft-tooltip.d.cts +13 -0
  220. package/dist/components/craft-tooltip.d.ts +13 -0
  221. package/dist/components/craft-tooltip.js +41 -0
  222. package/dist/components/craft-tooltip.js.map +1 -0
  223. package/dist/components/glass-card.cjs +64 -0
  224. package/dist/components/glass-card.cjs.map +1 -0
  225. package/dist/components/glass-card.d.cts +12 -0
  226. package/dist/components/glass-card.d.ts +12 -0
  227. package/dist/components/glass-card.js +40 -0
  228. package/dist/components/glass-card.js.map +1 -0
  229. package/dist/components/layout/app-shell.cjs +49 -0
  230. package/dist/components/layout/app-shell.cjs.map +1 -0
  231. package/dist/components/layout/app-shell.d.cts +10 -0
  232. package/dist/components/layout/app-shell.d.ts +10 -0
  233. package/dist/components/layout/app-shell.js +25 -0
  234. package/dist/components/layout/app-shell.js.map +1 -0
  235. package/dist/components/layout/app-template.cjs +104 -0
  236. package/dist/components/layout/app-template.cjs.map +1 -0
  237. package/dist/components/layout/app-template.d.cts +19 -0
  238. package/dist/components/layout/app-template.d.ts +19 -0
  239. package/dist/components/layout/app-template.js +70 -0
  240. package/dist/components/layout/app-template.js.map +1 -0
  241. package/dist/components/layout/auth-layout.cjs +65 -0
  242. package/dist/components/layout/auth-layout.cjs.map +1 -0
  243. package/dist/components/layout/auth-layout.d.cts +12 -0
  244. package/dist/components/layout/auth-layout.d.ts +12 -0
  245. package/dist/components/layout/auth-layout.js +41 -0
  246. package/dist/components/layout/auth-layout.js.map +1 -0
  247. package/dist/components/layout/breadcrumbs.cjs +39 -0
  248. package/dist/components/layout/breadcrumbs.cjs.map +1 -0
  249. package/dist/components/layout/breadcrumbs.d.cts +13 -0
  250. package/dist/components/layout/breadcrumbs.d.ts +13 -0
  251. package/dist/components/layout/breadcrumbs.js +15 -0
  252. package/dist/components/layout/breadcrumbs.js.map +1 -0
  253. package/dist/components/layout/container.cjs +45 -0
  254. package/dist/components/layout/container.cjs.map +1 -0
  255. package/dist/components/layout/container.d.cts +9 -0
  256. package/dist/components/layout/container.d.ts +9 -0
  257. package/dist/components/layout/container.js +21 -0
  258. package/dist/components/layout/container.js.map +1 -0
  259. package/dist/components/layout/grid.cjs +47 -0
  260. package/dist/components/layout/grid.cjs.map +1 -0
  261. package/dist/components/layout/grid.d.cts +10 -0
  262. package/dist/components/layout/grid.d.ts +10 -0
  263. package/dist/components/layout/grid.js +23 -0
  264. package/dist/components/layout/grid.js.map +1 -0
  265. package/dist/components/layout/layout-config.cjs +78 -0
  266. package/dist/components/layout/layout-config.cjs.map +1 -0
  267. package/dist/components/layout/layout-config.d.cts +92 -0
  268. package/dist/components/layout/layout-config.d.ts +92 -0
  269. package/dist/components/layout/layout-config.js +54 -0
  270. package/dist/components/layout/layout-config.js.map +1 -0
  271. package/dist/components/layout/page-header.cjs +52 -0
  272. package/dist/components/layout/page-header.cjs.map +1 -0
  273. package/dist/components/layout/page-header.d.cts +11 -0
  274. package/dist/components/layout/page-header.d.ts +11 -0
  275. package/dist/components/layout/page-header.js +28 -0
  276. package/dist/components/layout/page-header.js.map +1 -0
  277. package/dist/components/layout/sidebar.cjs +64 -0
  278. package/dist/components/layout/sidebar.cjs.map +1 -0
  279. package/dist/components/layout/sidebar.d.cts +17 -0
  280. package/dist/components/layout/sidebar.d.ts +17 -0
  281. package/dist/components/layout/sidebar.js +40 -0
  282. package/dist/components/layout/sidebar.js.map +1 -0
  283. package/dist/components/layout/top-nav.cjs +49 -0
  284. package/dist/components/layout/top-nav.cjs.map +1 -0
  285. package/dist/components/layout/top-nav.d.cts +11 -0
  286. package/dist/components/layout/top-nav.d.ts +11 -0
  287. package/dist/components/layout/top-nav.js +25 -0
  288. package/dist/components/layout/top-nav.js.map +1 -0
  289. package/dist/components/theme-switcher.cjs +72 -0
  290. package/dist/components/theme-switcher.cjs.map +1 -0
  291. package/dist/components/theme-switcher.d.cts +9 -0
  292. package/dist/components/theme-switcher.d.ts +9 -0
  293. package/dist/components/theme-switcher.js +48 -0
  294. package/dist/components/theme-switcher.js.map +1 -0
  295. package/dist/index.cjs +103 -3448
  296. package/dist/index.cjs.map +1 -1
  297. package/dist/index.d.cts +54 -746
  298. package/dist/index.d.ts +54 -746
  299. package/dist/index.js +50 -3388
  300. package/dist/index.js.map +1 -1
  301. package/dist/theme-context-EVI9PfKv.d.cts +22 -0
  302. package/dist/theme-context-EVI9PfKv.d.ts +22 -0
  303. package/dist/utils/cn.cjs +31 -0
  304. package/dist/utils/cn.cjs.map +1 -0
  305. package/dist/utils/cn.d.cts +3 -0
  306. package/dist/utils/cn.d.ts +3 -0
  307. package/dist/utils/cn.js +7 -0
  308. package/dist/utils/cn.js.map +1 -0
  309. package/package.json +3 -2
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var craft_pagination_exports = {};
21
+ __export(craft_pagination_exports, {
22
+ CraftPagination: () => CraftPagination
23
+ });
24
+ module.exports = __toCommonJS(craft_pagination_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ var import_cn = require("../utils/cn");
27
+ function getPageNumbers(pageIndex, pageCount, maxButtons = 5) {
28
+ if (pageCount <= maxButtons) {
29
+ return Array.from({ length: pageCount }, (_, i) => i);
30
+ }
31
+ const pages = [];
32
+ const start = Math.max(0, pageIndex - 1);
33
+ const end = Math.min(pageCount - 1, pageIndex + 1);
34
+ pages.push(0);
35
+ if (start > 1) pages.push("ellipsis");
36
+ for (let i = start; i <= end; i += 1) {
37
+ if (i !== 0 && i !== pageCount - 1) pages.push(i);
38
+ }
39
+ if (end < pageCount - 2) pages.push("ellipsis");
40
+ pages.push(pageCount - 1);
41
+ return pages;
42
+ }
43
+ function CraftPagination({
44
+ pageIndex,
45
+ pageCount,
46
+ onPageChange,
47
+ canPrevious = pageIndex > 0,
48
+ canNext = pageIndex < pageCount - 1,
49
+ pageSize,
50
+ pageSizeOptions = [10, 20, 50],
51
+ onPageSizeChange,
52
+ tone,
53
+ className
54
+ }) {
55
+ const pages = getPageNumbers(pageIndex, pageCount);
56
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
57
+ "div",
58
+ {
59
+ className: (0, import_cn.cn)(
60
+ "flex flex-wrap items-center justify-between gap-4",
61
+ className
62
+ ),
63
+ "data-nc-theme": tone,
64
+ children: [
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2", children: [
66
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
67
+ "button",
68
+ {
69
+ type: "button",
70
+ className: (0, import_cn.cn)(
71
+ "rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-3 py-2 text-xs text-[rgb(var(--nc-fg))] transition",
72
+ "hover:bg-[rgb(var(--nc-surface)/0.2)]",
73
+ !canPrevious && "opacity-50 cursor-not-allowed"
74
+ ),
75
+ onClick: () => onPageChange(Math.max(pageIndex - 1, 0)),
76
+ disabled: !canPrevious,
77
+ children: "Prev"
78
+ }
79
+ ),
80
+ pages.map(
81
+ (page, index) => page === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "px-2 text-[rgb(var(--nc-fg-muted))]", children: "..." }, `ellipsis-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
82
+ "button",
83
+ {
84
+ type: "button",
85
+ className: (0, import_cn.cn)(
86
+ "rounded-xl border px-3 py-2 text-xs transition",
87
+ page === pageIndex ? "border-[rgb(var(--nc-accent-1)/0.6)] bg-[rgb(var(--nc-accent-1)/0.2)] text-[rgb(var(--nc-fg))]" : "border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] text-[rgb(var(--nc-fg-muted))] hover:text-[rgb(var(--nc-fg))] hover:bg-[rgb(var(--nc-surface)/0.2)]"
88
+ ),
89
+ onClick: () => onPageChange(page),
90
+ children: page + 1
91
+ },
92
+ page
93
+ )
94
+ ),
95
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
96
+ "button",
97
+ {
98
+ type: "button",
99
+ className: (0, import_cn.cn)(
100
+ "rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-3 py-2 text-xs text-[rgb(var(--nc-fg))] transition",
101
+ "hover:bg-[rgb(var(--nc-surface)/0.2)]",
102
+ !canNext && "opacity-50 cursor-not-allowed"
103
+ ),
104
+ onClick: () => onPageChange(Math.min(pageIndex + 1, pageCount - 1)),
105
+ disabled: !canNext,
106
+ children: "Next"
107
+ }
108
+ )
109
+ ] }),
110
+ onPageSizeChange && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-2 text-xs text-[rgb(var(--nc-fg-muted))]", children: [
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Rows" }),
112
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
113
+ "select",
114
+ {
115
+ className: "rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-2 py-1 text-xs text-[rgb(var(--nc-fg))]",
116
+ value: pageSize,
117
+ onChange: (event) => onPageSizeChange(Number(event.target.value)),
118
+ children: pageSizeOptions.map((size) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: size, children: size }, size))
119
+ }
120
+ )
121
+ ] })
122
+ ]
123
+ }
124
+ );
125
+ }
126
+ // Annotate the CommonJS export names for ESM import in node:
127
+ 0 && (module.exports = {
128
+ CraftPagination
129
+ });
130
+ //# sourceMappingURL=craft-pagination.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/craft-pagination.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils/cn\";\nimport type { ThemeName } from \"@/theme/theme-context\";\n\nexport type CraftPaginationProps = {\n pageIndex: number;\n pageCount: number;\n onPageChange: (page: number) => void;\n canPrevious?: boolean;\n canNext?: boolean;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (size: number) => void;\n tone?: ThemeName;\n className?: string;\n};\n\nfunction getPageNumbers(pageIndex: number, pageCount: number, maxButtons = 5) {\n if (pageCount <= maxButtons) {\n return Array.from({ length: pageCount }, (_, i) => i);\n }\n\n const pages: Array<number | \"ellipsis\"> = [];\n const start = Math.max(0, pageIndex - 1);\n const end = Math.min(pageCount - 1, pageIndex + 1);\n\n pages.push(0);\n\n if (start > 1) pages.push(\"ellipsis\");\n\n for (let i = start; i <= end; i += 1) {\n if (i !== 0 && i !== pageCount - 1) pages.push(i);\n }\n\n if (end < pageCount - 2) pages.push(\"ellipsis\");\n\n pages.push(pageCount - 1);\n\n return pages;\n}\n\nexport function CraftPagination({\n pageIndex,\n pageCount,\n onPageChange,\n canPrevious = pageIndex > 0,\n canNext = pageIndex < pageCount - 1,\n pageSize,\n pageSizeOptions = [10, 20, 50],\n onPageSizeChange,\n tone,\n className,\n}: CraftPaginationProps) {\n const pages = getPageNumbers(pageIndex, pageCount);\n\n return (\n <div\n className={cn(\n \"flex flex-wrap items-center justify-between gap-4\",\n className\n )}\n data-nc-theme={tone}\n >\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className={cn(\n \"rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-3 py-2 text-xs text-[rgb(var(--nc-fg))] transition\",\n \"hover:bg-[rgb(var(--nc-surface)/0.2)]\",\n !canPrevious && \"opacity-50 cursor-not-allowed\"\n )}\n onClick={() => onPageChange(Math.max(pageIndex - 1, 0))}\n disabled={!canPrevious}\n >\n Prev\n </button>\n {pages.map((page, index) =>\n page === \"ellipsis\" ? (\n <span key={`ellipsis-${index}`} className=\"px-2 text-[rgb(var(--nc-fg-muted))]\">\n ...\n </span>\n ) : (\n <button\n key={page}\n type=\"button\"\n className={cn(\n \"rounded-xl border px-3 py-2 text-xs transition\",\n page === pageIndex\n ? \"border-[rgb(var(--nc-accent-1)/0.6)] bg-[rgb(var(--nc-accent-1)/0.2)] text-[rgb(var(--nc-fg))]\"\n : \"border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] text-[rgb(var(--nc-fg-muted))] hover:text-[rgb(var(--nc-fg))] hover:bg-[rgb(var(--nc-surface)/0.2)]\"\n )}\n onClick={() => onPageChange(page)}\n >\n {page + 1}\n </button>\n )\n )}\n <button\n type=\"button\"\n className={cn(\n \"rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-3 py-2 text-xs text-[rgb(var(--nc-fg))] transition\",\n \"hover:bg-[rgb(var(--nc-surface)/0.2)]\",\n !canNext && \"opacity-50 cursor-not-allowed\"\n )}\n onClick={() => onPageChange(Math.min(pageIndex + 1, pageCount - 1))}\n disabled={!canNext}\n >\n Next\n </button>\n </div>\n\n {onPageSizeChange && (\n <div className=\"flex items-center gap-2 text-xs text-[rgb(var(--nc-fg-muted))]\">\n <span>Rows</span>\n <select\n className=\"rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-2 py-1 text-xs text-[rgb(var(--nc-fg))]\"\n value={pageSize}\n onChange={(event) => onPageSizeChange(Number(event.target.value))}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkEM;AA9DN,gBAAmB;AAgBnB,SAAS,eAAe,WAAmB,WAAmB,aAAa,GAAG;AAC5E,MAAI,aAAa,YAAY;AAC3B,WAAO,MAAM,KAAK,EAAE,QAAQ,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC;AAAA,EACtD;AAEA,QAAM,QAAoC,CAAC;AAC3C,QAAM,QAAQ,KAAK,IAAI,GAAG,YAAY,CAAC;AACvC,QAAM,MAAM,KAAK,IAAI,YAAY,GAAG,YAAY,CAAC;AAEjD,QAAM,KAAK,CAAC;AAEZ,MAAI,QAAQ,EAAG,OAAM,KAAK,UAAU;AAEpC,WAAS,IAAI,OAAO,KAAK,KAAK,KAAK,GAAG;AACpC,QAAI,MAAM,KAAK,MAAM,YAAY,EAAG,OAAM,KAAK,CAAC;AAAA,EAClD;AAEA,MAAI,MAAM,YAAY,EAAG,OAAM,KAAK,UAAU;AAE9C,QAAM,KAAK,YAAY,CAAC;AAExB,SAAO;AACT;AAEO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc,YAAY;AAAA,EAC1B,UAAU,YAAY,YAAY;AAAA,EAClC;AAAA,EACA,kBAAkB,CAAC,IAAI,IAAI,EAAE;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,QAAQ,eAAe,WAAW,SAAS;AAEjD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,iBAAe;AAAA,MAEf;AAAA,qDAAC,SAAI,WAAU,2BACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,eAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA,CAAC,eAAe;AAAA,cAClB;AAAA,cACA,SAAS,MAAM,aAAa,KAAK,IAAI,YAAY,GAAG,CAAC,CAAC;AAAA,cACtD,UAAU,CAAC;AAAA,cACZ;AAAA;AAAA,UAED;AAAA,UACC,MAAM;AAAA,YAAI,CAAC,MAAM,UAChB,SAAS,aACP,4CAAC,UAA+B,WAAU,uCAAsC,mBAArE,YAAY,KAAK,EAE5B,IAEA;AAAA,cAAC;AAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,eAAW;AAAA,kBACT;AAAA,kBACA,SAAS,YACL,mGACA;AAAA,gBACN;AAAA,gBACA,SAAS,MAAM,aAAa,IAAI;AAAA,gBAE/B,iBAAO;AAAA;AAAA,cAVH;AAAA,YAWP;AAAA,UAEJ;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,eAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA,CAAC,WAAW;AAAA,cACd;AAAA,cACA,SAAS,MAAM,aAAa,KAAK,IAAI,YAAY,GAAG,YAAY,CAAC,CAAC;AAAA,cAClE,UAAU,CAAC;AAAA,cACZ;AAAA;AAAA,UAED;AAAA,WACF;AAAA,QAEC,oBACC,6CAAC,SAAI,WAAU,kEACb;AAAA,sDAAC,UAAK,kBAAI;AAAA,UACV;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,cACP,UAAU,CAAC,UAAU,iBAAiB,OAAO,MAAM,OAAO,KAAK,CAAC;AAAA,cAE/D,0BAAgB,IAAI,CAAC,SACpB,4CAAC,YAAkB,OAAO,MACvB,kBADU,IAEb,CACD;AAAA;AAAA,UACH;AAAA,WACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { a as ThemeName } from '../theme-context-EVI9PfKv.cjs';
3
+ import 'react';
4
+
5
+ type CraftPaginationProps = {
6
+ pageIndex: number;
7
+ pageCount: number;
8
+ onPageChange: (page: number) => void;
9
+ canPrevious?: boolean;
10
+ canNext?: boolean;
11
+ pageSize?: number;
12
+ pageSizeOptions?: number[];
13
+ onPageSizeChange?: (size: number) => void;
14
+ tone?: ThemeName;
15
+ className?: string;
16
+ };
17
+ declare function CraftPagination({ pageIndex, pageCount, onPageChange, canPrevious, canNext, pageSize, pageSizeOptions, onPageSizeChange, tone, className, }: CraftPaginationProps): react_jsx_runtime.JSX.Element;
18
+
19
+ export { CraftPagination, type CraftPaginationProps };
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { a as ThemeName } from '../theme-context-EVI9PfKv.js';
3
+ import 'react';
4
+
5
+ type CraftPaginationProps = {
6
+ pageIndex: number;
7
+ pageCount: number;
8
+ onPageChange: (page: number) => void;
9
+ canPrevious?: boolean;
10
+ canNext?: boolean;
11
+ pageSize?: number;
12
+ pageSizeOptions?: number[];
13
+ onPageSizeChange?: (size: number) => void;
14
+ tone?: ThemeName;
15
+ className?: string;
16
+ };
17
+ declare function CraftPagination({ pageIndex, pageCount, onPageChange, canPrevious, canNext, pageSize, pageSizeOptions, onPageSizeChange, tone, className, }: CraftPaginationProps): react_jsx_runtime.JSX.Element;
18
+
19
+ export { CraftPagination, type CraftPaginationProps };
@@ -0,0 +1,106 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../utils/cn";
4
+ function getPageNumbers(pageIndex, pageCount, maxButtons = 5) {
5
+ if (pageCount <= maxButtons) {
6
+ return Array.from({ length: pageCount }, (_, i) => i);
7
+ }
8
+ const pages = [];
9
+ const start = Math.max(0, pageIndex - 1);
10
+ const end = Math.min(pageCount - 1, pageIndex + 1);
11
+ pages.push(0);
12
+ if (start > 1) pages.push("ellipsis");
13
+ for (let i = start; i <= end; i += 1) {
14
+ if (i !== 0 && i !== pageCount - 1) pages.push(i);
15
+ }
16
+ if (end < pageCount - 2) pages.push("ellipsis");
17
+ pages.push(pageCount - 1);
18
+ return pages;
19
+ }
20
+ function CraftPagination({
21
+ pageIndex,
22
+ pageCount,
23
+ onPageChange,
24
+ canPrevious = pageIndex > 0,
25
+ canNext = pageIndex < pageCount - 1,
26
+ pageSize,
27
+ pageSizeOptions = [10, 20, 50],
28
+ onPageSizeChange,
29
+ tone,
30
+ className
31
+ }) {
32
+ const pages = getPageNumbers(pageIndex, pageCount);
33
+ return /* @__PURE__ */ jsxs(
34
+ "div",
35
+ {
36
+ className: cn(
37
+ "flex flex-wrap items-center justify-between gap-4",
38
+ className
39
+ ),
40
+ "data-nc-theme": tone,
41
+ children: [
42
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
43
+ /* @__PURE__ */ jsx(
44
+ "button",
45
+ {
46
+ type: "button",
47
+ className: cn(
48
+ "rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-3 py-2 text-xs text-[rgb(var(--nc-fg))] transition",
49
+ "hover:bg-[rgb(var(--nc-surface)/0.2)]",
50
+ !canPrevious && "opacity-50 cursor-not-allowed"
51
+ ),
52
+ onClick: () => onPageChange(Math.max(pageIndex - 1, 0)),
53
+ disabled: !canPrevious,
54
+ children: "Prev"
55
+ }
56
+ ),
57
+ pages.map(
58
+ (page, index) => page === "ellipsis" ? /* @__PURE__ */ jsx("span", { className: "px-2 text-[rgb(var(--nc-fg-muted))]", children: "..." }, `ellipsis-${index}`) : /* @__PURE__ */ jsx(
59
+ "button",
60
+ {
61
+ type: "button",
62
+ className: cn(
63
+ "rounded-xl border px-3 py-2 text-xs transition",
64
+ page === pageIndex ? "border-[rgb(var(--nc-accent-1)/0.6)] bg-[rgb(var(--nc-accent-1)/0.2)] text-[rgb(var(--nc-fg))]" : "border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] text-[rgb(var(--nc-fg-muted))] hover:text-[rgb(var(--nc-fg))] hover:bg-[rgb(var(--nc-surface)/0.2)]"
65
+ ),
66
+ onClick: () => onPageChange(page),
67
+ children: page + 1
68
+ },
69
+ page
70
+ )
71
+ ),
72
+ /* @__PURE__ */ jsx(
73
+ "button",
74
+ {
75
+ type: "button",
76
+ className: cn(
77
+ "rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-3 py-2 text-xs text-[rgb(var(--nc-fg))] transition",
78
+ "hover:bg-[rgb(var(--nc-surface)/0.2)]",
79
+ !canNext && "opacity-50 cursor-not-allowed"
80
+ ),
81
+ onClick: () => onPageChange(Math.min(pageIndex + 1, pageCount - 1)),
82
+ disabled: !canNext,
83
+ children: "Next"
84
+ }
85
+ )
86
+ ] }),
87
+ onPageSizeChange && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-[rgb(var(--nc-fg-muted))]", children: [
88
+ /* @__PURE__ */ jsx("span", { children: "Rows" }),
89
+ /* @__PURE__ */ jsx(
90
+ "select",
91
+ {
92
+ className: "rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-2 py-1 text-xs text-[rgb(var(--nc-fg))]",
93
+ value: pageSize,
94
+ onChange: (event) => onPageSizeChange(Number(event.target.value)),
95
+ children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx("option", { value: size, children: size }, size))
96
+ }
97
+ )
98
+ ] })
99
+ ]
100
+ }
101
+ );
102
+ }
103
+ export {
104
+ CraftPagination
105
+ };
106
+ //# sourceMappingURL=craft-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/craft-pagination.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils/cn\";\nimport type { ThemeName } from \"@/theme/theme-context\";\n\nexport type CraftPaginationProps = {\n pageIndex: number;\n pageCount: number;\n onPageChange: (page: number) => void;\n canPrevious?: boolean;\n canNext?: boolean;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (size: number) => void;\n tone?: ThemeName;\n className?: string;\n};\n\nfunction getPageNumbers(pageIndex: number, pageCount: number, maxButtons = 5) {\n if (pageCount <= maxButtons) {\n return Array.from({ length: pageCount }, (_, i) => i);\n }\n\n const pages: Array<number | \"ellipsis\"> = [];\n const start = Math.max(0, pageIndex - 1);\n const end = Math.min(pageCount - 1, pageIndex + 1);\n\n pages.push(0);\n\n if (start > 1) pages.push(\"ellipsis\");\n\n for (let i = start; i <= end; i += 1) {\n if (i !== 0 && i !== pageCount - 1) pages.push(i);\n }\n\n if (end < pageCount - 2) pages.push(\"ellipsis\");\n\n pages.push(pageCount - 1);\n\n return pages;\n}\n\nexport function CraftPagination({\n pageIndex,\n pageCount,\n onPageChange,\n canPrevious = pageIndex > 0,\n canNext = pageIndex < pageCount - 1,\n pageSize,\n pageSizeOptions = [10, 20, 50],\n onPageSizeChange,\n tone,\n className,\n}: CraftPaginationProps) {\n const pages = getPageNumbers(pageIndex, pageCount);\n\n return (\n <div\n className={cn(\n \"flex flex-wrap items-center justify-between gap-4\",\n className\n )}\n data-nc-theme={tone}\n >\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n className={cn(\n \"rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-3 py-2 text-xs text-[rgb(var(--nc-fg))] transition\",\n \"hover:bg-[rgb(var(--nc-surface)/0.2)]\",\n !canPrevious && \"opacity-50 cursor-not-allowed\"\n )}\n onClick={() => onPageChange(Math.max(pageIndex - 1, 0))}\n disabled={!canPrevious}\n >\n Prev\n </button>\n {pages.map((page, index) =>\n page === \"ellipsis\" ? (\n <span key={`ellipsis-${index}`} className=\"px-2 text-[rgb(var(--nc-fg-muted))]\">\n ...\n </span>\n ) : (\n <button\n key={page}\n type=\"button\"\n className={cn(\n \"rounded-xl border px-3 py-2 text-xs transition\",\n page === pageIndex\n ? \"border-[rgb(var(--nc-accent-1)/0.6)] bg-[rgb(var(--nc-accent-1)/0.2)] text-[rgb(var(--nc-fg))]\"\n : \"border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] text-[rgb(var(--nc-fg-muted))] hover:text-[rgb(var(--nc-fg))] hover:bg-[rgb(var(--nc-surface)/0.2)]\"\n )}\n onClick={() => onPageChange(page)}\n >\n {page + 1}\n </button>\n )\n )}\n <button\n type=\"button\"\n className={cn(\n \"rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-3 py-2 text-xs text-[rgb(var(--nc-fg))] transition\",\n \"hover:bg-[rgb(var(--nc-surface)/0.2)]\",\n !canNext && \"opacity-50 cursor-not-allowed\"\n )}\n onClick={() => onPageChange(Math.min(pageIndex + 1, pageCount - 1))}\n disabled={!canNext}\n >\n Next\n </button>\n </div>\n\n {onPageSizeChange && (\n <div className=\"flex items-center gap-2 text-xs text-[rgb(var(--nc-fg-muted))]\">\n <span>Rows</span>\n <select\n className=\"rounded-xl border border-[rgb(var(--nc-border)/0.3)] bg-[rgb(var(--nc-surface)/0.12)] px-2 py-1 text-xs text-[rgb(var(--nc-fg))]\"\n value={pageSize}\n onChange={(event) => onPageSizeChange(Number(event.target.value))}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";AAkEM,SACE,KADF;AA9DN,SAAS,UAAU;AAgBnB,SAAS,eAAe,WAAmB,WAAmB,aAAa,GAAG;AAC5E,MAAI,aAAa,YAAY;AAC3B,WAAO,MAAM,KAAK,EAAE,QAAQ,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC;AAAA,EACtD;AAEA,QAAM,QAAoC,CAAC;AAC3C,QAAM,QAAQ,KAAK,IAAI,GAAG,YAAY,CAAC;AACvC,QAAM,MAAM,KAAK,IAAI,YAAY,GAAG,YAAY,CAAC;AAEjD,QAAM,KAAK,CAAC;AAEZ,MAAI,QAAQ,EAAG,OAAM,KAAK,UAAU;AAEpC,WAAS,IAAI,OAAO,KAAK,KAAK,KAAK,GAAG;AACpC,QAAI,MAAM,KAAK,MAAM,YAAY,EAAG,OAAM,KAAK,CAAC;AAAA,EAClD;AAEA,MAAI,MAAM,YAAY,EAAG,OAAM,KAAK,UAAU;AAE9C,QAAM,KAAK,YAAY,CAAC;AAExB,SAAO;AACT;AAEO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc,YAAY;AAAA,EAC1B,UAAU,YAAY,YAAY;AAAA,EAClC;AAAA,EACA,kBAAkB,CAAC,IAAI,IAAI,EAAE;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,QAAQ,eAAe,WAAW,SAAS;AAEjD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,iBAAe;AAAA,MAEf;AAAA,6BAAC,SAAI,WAAU,2BACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA,CAAC,eAAe;AAAA,cAClB;AAAA,cACA,SAAS,MAAM,aAAa,KAAK,IAAI,YAAY,GAAG,CAAC,CAAC;AAAA,cACtD,UAAU,CAAC;AAAA,cACZ;AAAA;AAAA,UAED;AAAA,UACC,MAAM;AAAA,YAAI,CAAC,MAAM,UAChB,SAAS,aACP,oBAAC,UAA+B,WAAU,uCAAsC,mBAArE,YAAY,KAAK,EAE5B,IAEA;AAAA,cAAC;AAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,WAAW;AAAA,kBACT;AAAA,kBACA,SAAS,YACL,mGACA;AAAA,gBACN;AAAA,gBACA,SAAS,MAAM,aAAa,IAAI;AAAA,gBAE/B,iBAAO;AAAA;AAAA,cAVH;AAAA,YAWP;AAAA,UAEJ;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA,CAAC,WAAW;AAAA,cACd;AAAA,cACA,SAAS,MAAM,aAAa,KAAK,IAAI,YAAY,GAAG,YAAY,CAAC,CAAC;AAAA,cAClE,UAAU,CAAC;AAAA,cACZ;AAAA;AAAA,UAED;AAAA,WACF;AAAA,QAEC,oBACC,qBAAC,SAAI,WAAU,kEACb;AAAA,8BAAC,UAAK,kBAAI;AAAA,UACV;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,cACP,UAAU,CAAC,UAAU,iBAAiB,OAAO,MAAM,OAAO,KAAK,CAAC;AAAA,cAE/D,0BAAgB,IAAI,CAAC,SACpB,oBAAC,YAAkB,OAAO,MACvB,kBADU,IAEb,CACD;AAAA;AAAA,UACH;AAAA,WACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var craft_popover_exports = {};
31
+ __export(craft_popover_exports, {
32
+ CraftPopover: () => CraftPopover
33
+ });
34
+ module.exports = __toCommonJS(craft_popover_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var React = __toESM(require("react"), 1);
37
+ var import_cn = require("../utils/cn");
38
+ const alignClasses = {
39
+ start: "left-0",
40
+ center: "left-1/2 -translate-x-1/2",
41
+ end: "right-0"
42
+ };
43
+ function CraftPopover({
44
+ open,
45
+ defaultOpen = false,
46
+ onOpenChange,
47
+ trigger,
48
+ content,
49
+ align = "start",
50
+ sideOffset = 10,
51
+ tone,
52
+ className,
53
+ contentClassName
54
+ }) {
55
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);
56
+ const isControlled = typeof open === "boolean";
57
+ const isOpen = isControlled ? open : uncontrolledOpen;
58
+ const rootRef = React.useRef(null);
59
+ const setOpen = React.useCallback(
60
+ (next) => {
61
+ if (!isControlled) setUncontrolledOpen(next);
62
+ onOpenChange == null ? void 0 : onOpenChange(next);
63
+ },
64
+ [isControlled, onOpenChange]
65
+ );
66
+ React.useEffect(() => {
67
+ if (!isOpen) return;
68
+ const handleClick = (event) => {
69
+ if (!rootRef.current) return;
70
+ if (!rootRef.current.contains(event.target)) setOpen(false);
71
+ };
72
+ const handleKey = (event) => {
73
+ if (event.key === "Escape") setOpen(false);
74
+ };
75
+ document.addEventListener("mousedown", handleClick);
76
+ document.addEventListener("keydown", handleKey);
77
+ return () => {
78
+ document.removeEventListener("mousedown", handleClick);
79
+ document.removeEventListener("keydown", handleKey);
80
+ };
81
+ }, [isOpen, setOpen]);
82
+ const triggerNode = React.isValidElement(trigger) ? React.cloneElement(trigger, {
83
+ onClick: (event) => {
84
+ const handler = trigger.props.onClick;
85
+ handler == null ? void 0 : handler(event);
86
+ if (!event.defaultPrevented) setOpen(!isOpen);
87
+ },
88
+ "aria-expanded": isOpen,
89
+ "aria-haspopup": "dialog"
90
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
91
+ "button",
92
+ {
93
+ type: "button",
94
+ onClick: () => setOpen(!isOpen),
95
+ className: "inline-flex",
96
+ "aria-expanded": isOpen,
97
+ "aria-haspopup": "dialog",
98
+ children: trigger
99
+ }
100
+ );
101
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_cn.cn)("relative inline-flex", className), ref: rootRef, children: [
102
+ triggerNode,
103
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
104
+ "div",
105
+ {
106
+ className: (0, import_cn.cn)(
107
+ "absolute z-40 w-max min-w-48 rounded-2xl border border-[rgb(var(--nc-border)/0.35)] bg-[rgb(var(--nc-surface)/0.08)] p-3 text-[rgb(var(--nc-fg))] shadow-[0_18px_40px_rgba(0,0,0,0.35)] backdrop-blur-2xl",
108
+ alignClasses[align],
109
+ contentClassName
110
+ ),
111
+ style: { marginTop: sideOffset },
112
+ role: "dialog",
113
+ "data-nc-theme": tone,
114
+ children: content
115
+ }
116
+ )
117
+ ] });
118
+ }
119
+ // Annotate the CommonJS export names for ESM import in node:
120
+ 0 && (module.exports = {
121
+ CraftPopover
122
+ });
123
+ //# sourceMappingURL=craft-popover.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/craft-popover.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils/cn\";\nimport type { ThemeName } from \"@/theme/theme-context\";\n\ntype PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport type CraftPopoverProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger: React.ReactNode;\n content: React.ReactNode;\n align?: PopoverAlign;\n sideOffset?: number;\n tone?: ThemeName;\n className?: string;\n contentClassName?: string;\n};\n\nconst alignClasses: Record<PopoverAlign, string> = {\n start: \"left-0\",\n center: \"left-1/2 -translate-x-1/2\",\n end: \"right-0\",\n};\n\nexport function CraftPopover({\n open,\n defaultOpen = false,\n onOpenChange,\n trigger,\n content,\n align = \"start\",\n sideOffset = 10,\n tone,\n className,\n contentClassName,\n}: CraftPopoverProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isControlled = typeof open === \"boolean\";\n const isOpen = isControlled ? open : uncontrolledOpen;\n const rootRef = React.useRef<HTMLDivElement>(null);\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n React.useEffect(() => {\n if (!isOpen) return;\n const handleClick = (event: MouseEvent) => {\n if (!rootRef.current) return;\n if (!rootRef.current.contains(event.target as Node)) setOpen(false);\n };\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", handleClick);\n document.addEventListener(\"keydown\", handleKey);\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n document.removeEventListener(\"keydown\", handleKey);\n };\n }, [isOpen, setOpen]);\n\n type TriggerProps = { onClick?: (event: React.MouseEvent) => void; \"aria-expanded\"?: boolean; \"aria-haspopup\"?: string };\n const triggerNode = React.isValidElement(trigger)\n ? React.cloneElement(trigger as React.ReactElement<TriggerProps>, {\n onClick: (event: React.MouseEvent) => {\n const handler = (trigger.props as TriggerProps).onClick;\n handler?.(event);\n if (!event.defaultPrevented) setOpen(!isOpen);\n },\n \"aria-expanded\": isOpen,\n \"aria-haspopup\": \"dialog\",\n })\n : (\n <button\n type=\"button\"\n onClick={() => setOpen(!isOpen)}\n className=\"inline-flex\"\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n >\n {trigger}\n </button>\n );\n\n return (\n <div className={cn(\"relative inline-flex\", className)} ref={rootRef}>\n {triggerNode}\n {isOpen && (\n <div\n className={cn(\n \"absolute z-40 w-max min-w-48 rounded-2xl border border-[rgb(var(--nc-border)/0.35)] bg-[rgb(var(--nc-surface)/0.08)] p-3 text-[rgb(var(--nc-fg))] shadow-[0_18px_40px_rgba(0,0,0,0.35)] backdrop-blur-2xl\",\n alignClasses[align],\n contentClassName\n )}\n style={{ marginTop: sideOffset }}\n role=\"dialog\"\n data-nc-theme={tone}\n >\n {content}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkFQ;AAhFR,YAAuB;AAEvB,gBAAmB;AAkBnB,MAAM,eAA6C;AAAA,EACjD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AACP;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,MAAM,SAAS,WAAW;AAC1E,QAAM,eAAe,OAAO,SAAS;AACrC,QAAM,SAAS,eAAe,OAAO;AACrC,QAAM,UAAU,MAAM,OAAuB,IAAI;AAEjD,QAAM,UAAU,MAAM;AAAA,IACpB,CAAC,SAAkB;AACjB,UAAI,CAAC,aAAc,qBAAoB,IAAI;AAC3C,mDAAe;AAAA,IACjB;AAAA,IACA,CAAC,cAAc,YAAY;AAAA,EAC7B;AAEA,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,OAAQ;AACb,UAAM,cAAc,CAAC,UAAsB;AACzC,UAAI,CAAC,QAAQ,QAAS;AACtB,UAAI,CAAC,QAAQ,QAAQ,SAAS,MAAM,MAAc,EAAG,SAAQ,KAAK;AAAA,IACpE;AACA,UAAM,YAAY,CAAC,UAAyB;AAC1C,UAAI,MAAM,QAAQ,SAAU,SAAQ,KAAK;AAAA,IAC3C;AACA,aAAS,iBAAiB,aAAa,WAAW;AAClD,aAAS,iBAAiB,WAAW,SAAS;AAC9C,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,WAAW;AACrD,eAAS,oBAAoB,WAAW,SAAS;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AAGpB,QAAM,cAAc,MAAM,eAAe,OAAO,IAC5C,MAAM,aAAa,SAA6C;AAAA,IAC9D,SAAS,CAAC,UAA4B;AACpC,YAAM,UAAW,QAAQ,MAAuB;AAChD,yCAAU;AACV,UAAI,CAAC,MAAM,iBAAkB,SAAQ,CAAC,MAAM;AAAA,IAC9C;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,EACnB,CAAC,IAEC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,MAAM,QAAQ,CAAC,MAAM;AAAA,MAC9B,WAAU;AAAA,MACV,iBAAe;AAAA,MACf,iBAAc;AAAA,MAEb;AAAA;AAAA,EACH;AAGN,SACE,6CAAC,SAAI,eAAW,cAAG,wBAAwB,SAAS,GAAG,KAAK,SACzD;AAAA;AAAA,IACA,UACC;AAAA,MAAC;AAAA;AAAA,QACC,eAAW;AAAA,UACT;AAAA,UACA,aAAa,KAAK;AAAA,UAClB;AAAA,QACF;AAAA,QACA,OAAO,EAAE,WAAW,WAAW;AAAA,QAC/B,MAAK;AAAA,QACL,iBAAe;AAAA,QAEd;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ;","names":[]}
@@ -0,0 +1,20 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { a as ThemeName } from '../theme-context-EVI9PfKv.cjs';
4
+
5
+ type PopoverAlign = "start" | "center" | "end";
6
+ type CraftPopoverProps = {
7
+ open?: boolean;
8
+ defaultOpen?: boolean;
9
+ onOpenChange?: (open: boolean) => void;
10
+ trigger: React.ReactNode;
11
+ content: React.ReactNode;
12
+ align?: PopoverAlign;
13
+ sideOffset?: number;
14
+ tone?: ThemeName;
15
+ className?: string;
16
+ contentClassName?: string;
17
+ };
18
+ declare function CraftPopover({ open, defaultOpen, onOpenChange, trigger, content, align, sideOffset, tone, className, contentClassName, }: CraftPopoverProps): react_jsx_runtime.JSX.Element;
19
+
20
+ export { CraftPopover, type CraftPopoverProps };
@@ -0,0 +1,20 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { a as ThemeName } from '../theme-context-EVI9PfKv.js';
4
+
5
+ type PopoverAlign = "start" | "center" | "end";
6
+ type CraftPopoverProps = {
7
+ open?: boolean;
8
+ defaultOpen?: boolean;
9
+ onOpenChange?: (open: boolean) => void;
10
+ trigger: React.ReactNode;
11
+ content: React.ReactNode;
12
+ align?: PopoverAlign;
13
+ sideOffset?: number;
14
+ tone?: ThemeName;
15
+ className?: string;
16
+ contentClassName?: string;
17
+ };
18
+ declare function CraftPopover({ open, defaultOpen, onOpenChange, trigger, content, align, sideOffset, tone, className, contentClassName, }: CraftPopoverProps): react_jsx_runtime.JSX.Element;
19
+
20
+ export { CraftPopover, type CraftPopoverProps };
@@ -0,0 +1,89 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../utils/cn";
5
+ const alignClasses = {
6
+ start: "left-0",
7
+ center: "left-1/2 -translate-x-1/2",
8
+ end: "right-0"
9
+ };
10
+ function CraftPopover({
11
+ open,
12
+ defaultOpen = false,
13
+ onOpenChange,
14
+ trigger,
15
+ content,
16
+ align = "start",
17
+ sideOffset = 10,
18
+ tone,
19
+ className,
20
+ contentClassName
21
+ }) {
22
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);
23
+ const isControlled = typeof open === "boolean";
24
+ const isOpen = isControlled ? open : uncontrolledOpen;
25
+ const rootRef = React.useRef(null);
26
+ const setOpen = React.useCallback(
27
+ (next) => {
28
+ if (!isControlled) setUncontrolledOpen(next);
29
+ onOpenChange == null ? void 0 : onOpenChange(next);
30
+ },
31
+ [isControlled, onOpenChange]
32
+ );
33
+ React.useEffect(() => {
34
+ if (!isOpen) return;
35
+ const handleClick = (event) => {
36
+ if (!rootRef.current) return;
37
+ if (!rootRef.current.contains(event.target)) setOpen(false);
38
+ };
39
+ const handleKey = (event) => {
40
+ if (event.key === "Escape") setOpen(false);
41
+ };
42
+ document.addEventListener("mousedown", handleClick);
43
+ document.addEventListener("keydown", handleKey);
44
+ return () => {
45
+ document.removeEventListener("mousedown", handleClick);
46
+ document.removeEventListener("keydown", handleKey);
47
+ };
48
+ }, [isOpen, setOpen]);
49
+ const triggerNode = React.isValidElement(trigger) ? React.cloneElement(trigger, {
50
+ onClick: (event) => {
51
+ const handler = trigger.props.onClick;
52
+ handler == null ? void 0 : handler(event);
53
+ if (!event.defaultPrevented) setOpen(!isOpen);
54
+ },
55
+ "aria-expanded": isOpen,
56
+ "aria-haspopup": "dialog"
57
+ }) : /* @__PURE__ */ jsx(
58
+ "button",
59
+ {
60
+ type: "button",
61
+ onClick: () => setOpen(!isOpen),
62
+ className: "inline-flex",
63
+ "aria-expanded": isOpen,
64
+ "aria-haspopup": "dialog",
65
+ children: trigger
66
+ }
67
+ );
68
+ return /* @__PURE__ */ jsxs("div", { className: cn("relative inline-flex", className), ref: rootRef, children: [
69
+ triggerNode,
70
+ isOpen && /* @__PURE__ */ jsx(
71
+ "div",
72
+ {
73
+ className: cn(
74
+ "absolute z-40 w-max min-w-48 rounded-2xl border border-[rgb(var(--nc-border)/0.35)] bg-[rgb(var(--nc-surface)/0.08)] p-3 text-[rgb(var(--nc-fg))] shadow-[0_18px_40px_rgba(0,0,0,0.35)] backdrop-blur-2xl",
75
+ alignClasses[align],
76
+ contentClassName
77
+ ),
78
+ style: { marginTop: sideOffset },
79
+ role: "dialog",
80
+ "data-nc-theme": tone,
81
+ children: content
82
+ }
83
+ )
84
+ ] });
85
+ }
86
+ export {
87
+ CraftPopover
88
+ };
89
+ //# sourceMappingURL=craft-popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/craft-popover.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"@/utils/cn\";\nimport type { ThemeName } from \"@/theme/theme-context\";\n\ntype PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport type CraftPopoverProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger: React.ReactNode;\n content: React.ReactNode;\n align?: PopoverAlign;\n sideOffset?: number;\n tone?: ThemeName;\n className?: string;\n contentClassName?: string;\n};\n\nconst alignClasses: Record<PopoverAlign, string> = {\n start: \"left-0\",\n center: \"left-1/2 -translate-x-1/2\",\n end: \"right-0\",\n};\n\nexport function CraftPopover({\n open,\n defaultOpen = false,\n onOpenChange,\n trigger,\n content,\n align = \"start\",\n sideOffset = 10,\n tone,\n className,\n contentClassName,\n}: CraftPopoverProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isControlled = typeof open === \"boolean\";\n const isOpen = isControlled ? open : uncontrolledOpen;\n const rootRef = React.useRef<HTMLDivElement>(null);\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n React.useEffect(() => {\n if (!isOpen) return;\n const handleClick = (event: MouseEvent) => {\n if (!rootRef.current) return;\n if (!rootRef.current.contains(event.target as Node)) setOpen(false);\n };\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", handleClick);\n document.addEventListener(\"keydown\", handleKey);\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n document.removeEventListener(\"keydown\", handleKey);\n };\n }, [isOpen, setOpen]);\n\n type TriggerProps = { onClick?: (event: React.MouseEvent) => void; \"aria-expanded\"?: boolean; \"aria-haspopup\"?: string };\n const triggerNode = React.isValidElement(trigger)\n ? React.cloneElement(trigger as React.ReactElement<TriggerProps>, {\n onClick: (event: React.MouseEvent) => {\n const handler = (trigger.props as TriggerProps).onClick;\n handler?.(event);\n if (!event.defaultPrevented) setOpen(!isOpen);\n },\n \"aria-expanded\": isOpen,\n \"aria-haspopup\": \"dialog\",\n })\n : (\n <button\n type=\"button\"\n onClick={() => setOpen(!isOpen)}\n className=\"inline-flex\"\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n >\n {trigger}\n </button>\n );\n\n return (\n <div className={cn(\"relative inline-flex\", className)} ref={rootRef}>\n {triggerNode}\n {isOpen && (\n <div\n className={cn(\n \"absolute z-40 w-max min-w-48 rounded-2xl border border-[rgb(var(--nc-border)/0.35)] bg-[rgb(var(--nc-surface)/0.08)] p-3 text-[rgb(var(--nc-fg))] shadow-[0_18px_40px_rgba(0,0,0,0.35)] backdrop-blur-2xl\",\n alignClasses[align],\n contentClassName\n )}\n style={{ marginTop: sideOffset }}\n role=\"dialog\"\n data-nc-theme={tone}\n >\n {content}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":";AAkFQ,cAYJ,YAZI;AAhFR,YAAY,WAAW;AAEvB,SAAS,UAAU;AAkBnB,MAAM,eAA6C;AAAA,EACjD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AACP;AAEO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,MAAM,SAAS,WAAW;AAC1E,QAAM,eAAe,OAAO,SAAS;AACrC,QAAM,SAAS,eAAe,OAAO;AACrC,QAAM,UAAU,MAAM,OAAuB,IAAI;AAEjD,QAAM,UAAU,MAAM;AAAA,IACpB,CAAC,SAAkB;AACjB,UAAI,CAAC,aAAc,qBAAoB,IAAI;AAC3C,mDAAe;AAAA,IACjB;AAAA,IACA,CAAC,cAAc,YAAY;AAAA,EAC7B;AAEA,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,OAAQ;AACb,UAAM,cAAc,CAAC,UAAsB;AACzC,UAAI,CAAC,QAAQ,QAAS;AACtB,UAAI,CAAC,QAAQ,QAAQ,SAAS,MAAM,MAAc,EAAG,SAAQ,KAAK;AAAA,IACpE;AACA,UAAM,YAAY,CAAC,UAAyB;AAC1C,UAAI,MAAM,QAAQ,SAAU,SAAQ,KAAK;AAAA,IAC3C;AACA,aAAS,iBAAiB,aAAa,WAAW;AAClD,aAAS,iBAAiB,WAAW,SAAS;AAC9C,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,WAAW;AACrD,eAAS,oBAAoB,WAAW,SAAS;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,QAAQ,OAAO,CAAC;AAGpB,QAAM,cAAc,MAAM,eAAe,OAAO,IAC5C,MAAM,aAAa,SAA6C;AAAA,IAC9D,SAAS,CAAC,UAA4B;AACpC,YAAM,UAAW,QAAQ,MAAuB;AAChD,yCAAU;AACV,UAAI,CAAC,MAAM,iBAAkB,SAAQ,CAAC,MAAM;AAAA,IAC9C;AAAA,IACA,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,EACnB,CAAC,IAEC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,MAAM,QAAQ,CAAC,MAAM;AAAA,MAC9B,WAAU;AAAA,MACV,iBAAe;AAAA,MACf,iBAAc;AAAA,MAEb;AAAA;AAAA,EACH;AAGN,SACE,qBAAC,SAAI,WAAW,GAAG,wBAAwB,SAAS,GAAG,KAAK,SACzD;AAAA;AAAA,IACA,UACC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,aAAa,KAAK;AAAA,UAClB;AAAA,QACF;AAAA,QACA,OAAO,EAAE,WAAW,WAAW;AAAA,QAC/B,MAAK;AAAA,QACL,iBAAe;AAAA,QAEd;AAAA;AAAA,IACH;AAAA,KAEJ;AAEJ;","names":[]}