@particle-academy/react-fancy 5.63.0 → 5.64.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -0
- package/README.md +1 -0
- package/dist/chunk-BXPLERIJ.js +293 -0
- package/dist/chunk-BXPLERIJ.js.map +1 -0
- package/dist/chunk-DTOIO42M.js +605 -0
- package/dist/chunk-DTOIO42M.js.map +1 -0
- package/dist/chunk-QP6VNKLW.cjs +608 -0
- package/dist/chunk-QP6VNKLW.cjs.map +1 -0
- package/dist/chunk-XZOBGKZL.cjs +296 -0
- package/dist/chunk-XZOBGKZL.cjs.map +1 -0
- package/dist/dropdown.cjs +3 -3
- package/dist/dropdown.d.cts +10 -0
- package/dist/dropdown.d.ts +10 -0
- package/dist/dropdown.js +1 -1
- package/dist/index.cjs +30 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/inputs.cjs +10 -10
- package/dist/inputs.js +2 -2
- package/dist/reorderable-grid.cjs +20 -0
- package/dist/reorderable-grid.cjs.map +1 -0
- package/dist/reorderable-grid.d.cts +141 -0
- package/dist/reorderable-grid.d.ts +141 -0
- package/dist/reorderable-grid.js +7 -0
- package/dist/reorderable-grid.js.map +1 -0
- package/docs/ReorderableGrid.md +233 -0
- package/package.json +11 -1
- package/dist/chunk-A6HWKQ4D.cjs +0 -172
- package/dist/chunk-A6HWKQ4D.cjs.map +0 -1
- package/dist/chunk-JG2DJK5A.js +0 -169
- package/dist/chunk-JG2DJK5A.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunkYH75G6SP_cjs = require('./chunk-YH75G6SP.cjs');
|
|
3
4
|
var chunkUXYFM2XT_cjs = require('./chunk-UXYFM2XT.cjs');
|
|
4
5
|
var chunkH2YRZYKK_cjs = require('./chunk-H2YRZYKK.cjs');
|
|
5
6
|
var chunkAVEFCM6T_cjs = require('./chunk-AVEFCM6T.cjs');
|
|
6
7
|
var chunkIR6JSQ4O_cjs = require('./chunk-IR6JSQ4O.cjs');
|
|
7
8
|
require('./chunk-O5IO7TCO.cjs');
|
|
9
|
+
var chunkZ4UXLQSK_cjs = require('./chunk-Z4UXLQSK.cjs');
|
|
8
10
|
require('./chunk-OYZDSMNP.cjs');
|
|
9
11
|
require('./chunk-5FV6GMFP.cjs');
|
|
10
12
|
var chunk6MDZQIMZ_cjs = require('./chunk-6MDZQIMZ.cjs');
|
|
13
|
+
var chunkETNQ4AEQ_cjs = require('./chunk-ETNQ4AEQ.cjs');
|
|
11
14
|
var chunkDJB3N4G3_cjs = require('./chunk-DJB3N4G3.cjs');
|
|
12
15
|
require('./chunk-URTLYNZI.cjs');
|
|
13
16
|
require('./chunk-QGPMVFZJ.cjs');
|
|
14
17
|
var chunkIB673TEG_cjs = require('./chunk-IB673TEG.cjs');
|
|
15
18
|
var chunkH7ELUIF6_cjs = require('./chunk-H7ELUIF6.cjs');
|
|
16
19
|
require('./chunk-HXLSEBAL.cjs');
|
|
17
|
-
var
|
|
18
|
-
var chunkETNQ4AEQ_cjs = require('./chunk-ETNQ4AEQ.cjs');
|
|
20
|
+
var chunkFNIHCNVD_cjs = require('./chunk-FNIHCNVD.cjs');
|
|
19
21
|
var chunk7DDUMW4R_cjs = require('./chunk-7DDUMW4R.cjs');
|
|
20
22
|
var chunkFVQO75KY_cjs = require('./chunk-FVQO75KY.cjs');
|
|
21
23
|
var chunkATJSHM6J_cjs = require('./chunk-ATJSHM6J.cjs');
|
|
@@ -23,15 +25,14 @@ var chunkYJXP6AOL_cjs = require('./chunk-YJXP6AOL.cjs');
|
|
|
23
25
|
var chunkCQ54H7DZ_cjs = require('./chunk-CQ54H7DZ.cjs');
|
|
24
26
|
require('./chunk-XURQVDCN.cjs');
|
|
25
27
|
var chunk4DL2U23D_cjs = require('./chunk-4DL2U23D.cjs');
|
|
26
|
-
var chunkYH75G6SP_cjs = require('./chunk-YH75G6SP.cjs');
|
|
27
28
|
var chunkBK6XQQYG_cjs = require('./chunk-BK6XQQYG.cjs');
|
|
28
29
|
var chunkAE53RKWR_cjs = require('./chunk-AE53RKWR.cjs');
|
|
29
30
|
var chunkSYEHWUM5_cjs = require('./chunk-SYEHWUM5.cjs');
|
|
31
|
+
var chunkQP6VNKLW_cjs = require('./chunk-QP6VNKLW.cjs');
|
|
30
32
|
var chunkCEFK54WP_cjs = require('./chunk-CEFK54WP.cjs');
|
|
31
33
|
var chunk5P3PISAX_cjs = require('./chunk-5P3PISAX.cjs');
|
|
32
34
|
var chunkY7RGUUTS_cjs = require('./chunk-Y7RGUUTS.cjs');
|
|
33
35
|
var chunkEZA6GWZL_cjs = require('./chunk-EZA6GWZL.cjs');
|
|
34
|
-
var chunkFNIHCNVD_cjs = require('./chunk-FNIHCNVD.cjs');
|
|
35
36
|
var chunkKSU6RYWU_cjs = require('./chunk-KSU6RYWU.cjs');
|
|
36
37
|
var chunkK5MQZTDW_cjs = require('./chunk-K5MQZTDW.cjs');
|
|
37
38
|
var chunkB4YV2V7G_cjs = require('./chunk-B4YV2V7G.cjs');
|
|
@@ -76,7 +77,7 @@ var chunkFQSSVOVQ_cjs = require('./chunk-FQSSVOVQ.cjs');
|
|
|
76
77
|
require('./chunk-S3TRSECD.cjs');
|
|
77
78
|
var chunkZ7SQMQTF_cjs = require('./chunk-Z7SQMQTF.cjs');
|
|
78
79
|
var chunkAJPYGRLA_cjs = require('./chunk-AJPYGRLA.cjs');
|
|
79
|
-
var
|
|
80
|
+
var chunkXZOBGKZL_cjs = require('./chunk-XZOBGKZL.cjs');
|
|
80
81
|
var chunkATIDUWY6_cjs = require('./chunk-ATIDUWY6.cjs');
|
|
81
82
|
var chunkA2JUTNE6_cjs = require('./chunk-A2JUTNE6.cjs');
|
|
82
83
|
var chunkT6YELZPJ_cjs = require('./chunk-T6YELZPJ.cjs');
|
|
@@ -218,6 +219,10 @@ var THEME_TOKENS = {
|
|
|
218
219
|
}
|
|
219
220
|
};
|
|
220
221
|
|
|
222
|
+
Object.defineProperty(exports, "TimePicker", {
|
|
223
|
+
enumerable: true,
|
|
224
|
+
get: function () { return chunkYH75G6SP_cjs.TimePicker; }
|
|
225
|
+
});
|
|
221
226
|
Object.defineProperty(exports, "Timeline", {
|
|
222
227
|
enumerable: true,
|
|
223
228
|
get: function () { return chunkUXYFM2XT_cjs.Timeline; }
|
|
@@ -242,6 +247,10 @@ Object.defineProperty(exports, "VirtualList", {
|
|
|
242
247
|
enumerable: true,
|
|
243
248
|
get: function () { return chunkIR6JSQ4O_cjs.VirtualList; }
|
|
244
249
|
});
|
|
250
|
+
Object.defineProperty(exports, "Slider", {
|
|
251
|
+
enumerable: true,
|
|
252
|
+
get: function () { return chunkZ4UXLQSK_cjs.Slider; }
|
|
253
|
+
});
|
|
245
254
|
Object.defineProperty(exports, "Form", {
|
|
246
255
|
enumerable: true,
|
|
247
256
|
get: function () { return chunk6MDZQIMZ_cjs.Form; }
|
|
@@ -250,6 +259,10 @@ Object.defineProperty(exports, "FormProvider", {
|
|
|
250
259
|
enumerable: true,
|
|
251
260
|
get: function () { return chunk6MDZQIMZ_cjs.FormProvider; }
|
|
252
261
|
});
|
|
262
|
+
Object.defineProperty(exports, "Checkbox", {
|
|
263
|
+
enumerable: true,
|
|
264
|
+
get: function () { return chunkETNQ4AEQ_cjs.Checkbox; }
|
|
265
|
+
});
|
|
253
266
|
Object.defineProperty(exports, "CheckboxGroup", {
|
|
254
267
|
enumerable: true,
|
|
255
268
|
get: function () { return chunkDJB3N4G3_cjs.CheckboxGroup; }
|
|
@@ -262,13 +275,9 @@ Object.defineProperty(exports, "RadioGroup", {
|
|
|
262
275
|
enumerable: true,
|
|
263
276
|
get: function () { return chunkH7ELUIF6_cjs.RadioGroup; }
|
|
264
277
|
});
|
|
265
|
-
Object.defineProperty(exports, "
|
|
266
|
-
enumerable: true,
|
|
267
|
-
get: function () { return chunkZ4UXLQSK_cjs.Slider; }
|
|
268
|
-
});
|
|
269
|
-
Object.defineProperty(exports, "Checkbox", {
|
|
278
|
+
Object.defineProperty(exports, "Skeleton", {
|
|
270
279
|
enumerable: true,
|
|
271
|
-
get: function () { return
|
|
280
|
+
get: function () { return chunkFNIHCNVD_cjs.Skeleton; }
|
|
272
281
|
});
|
|
273
282
|
Object.defineProperty(exports, "Stat", {
|
|
274
283
|
enumerable: true,
|
|
@@ -302,10 +311,6 @@ Object.defineProperty(exports, "TimeGrid", {
|
|
|
302
311
|
enumerable: true,
|
|
303
312
|
get: function () { return chunk4DL2U23D_cjs.TimeGrid; }
|
|
304
313
|
});
|
|
305
|
-
Object.defineProperty(exports, "TimePicker", {
|
|
306
|
-
enumerable: true,
|
|
307
|
-
get: function () { return chunkYH75G6SP_cjs.TimePicker; }
|
|
308
|
-
});
|
|
309
314
|
Object.defineProperty(exports, "PullQuote", {
|
|
310
315
|
enumerable: true,
|
|
311
316
|
get: function () { return chunkBK6XQQYG_cjs.PullQuote; }
|
|
@@ -326,6 +331,14 @@ Object.defineProperty(exports, "ReasonTag", {
|
|
|
326
331
|
enumerable: true,
|
|
327
332
|
get: function () { return chunkSYEHWUM5_cjs.ReasonTag; }
|
|
328
333
|
});
|
|
334
|
+
Object.defineProperty(exports, "ReorderableGrid", {
|
|
335
|
+
enumerable: true,
|
|
336
|
+
get: function () { return chunkQP6VNKLW_cjs.ReorderableGrid; }
|
|
337
|
+
});
|
|
338
|
+
Object.defineProperty(exports, "moveItem", {
|
|
339
|
+
enumerable: true,
|
|
340
|
+
get: function () { return chunkQP6VNKLW_cjs.moveItem; }
|
|
341
|
+
});
|
|
329
342
|
Object.defineProperty(exports, "ResizablePanels", {
|
|
330
343
|
enumerable: true,
|
|
331
344
|
get: function () { return chunkCEFK54WP_cjs.ResizablePanels; }
|
|
@@ -346,10 +359,6 @@ Object.defineProperty(exports, "useSidebar", {
|
|
|
346
359
|
enumerable: true,
|
|
347
360
|
get: function () { return chunkEZA6GWZL_cjs.useSidebar; }
|
|
348
361
|
});
|
|
349
|
-
Object.defineProperty(exports, "Skeleton", {
|
|
350
|
-
enumerable: true,
|
|
351
|
-
get: function () { return chunkFNIHCNVD_cjs.Skeleton; }
|
|
352
|
-
});
|
|
353
362
|
Object.defineProperty(exports, "Pillbox", {
|
|
354
363
|
enumerable: true,
|
|
355
364
|
get: function () { return chunkKSU6RYWU_cjs.Pillbox; }
|
|
@@ -628,11 +637,11 @@ Object.defineProperty(exports, "useDrawer", {
|
|
|
628
637
|
});
|
|
629
638
|
Object.defineProperty(exports, "Dropdown", {
|
|
630
639
|
enumerable: true,
|
|
631
|
-
get: function () { return
|
|
640
|
+
get: function () { return chunkXZOBGKZL_cjs.Dropdown; }
|
|
632
641
|
});
|
|
633
642
|
Object.defineProperty(exports, "useDropdown", {
|
|
634
643
|
enumerable: true,
|
|
635
|
-
get: function () { return
|
|
644
|
+
get: function () { return chunkXZOBGKZL_cjs.useDropdown; }
|
|
636
645
|
});
|
|
637
646
|
Object.defineProperty(exports, "Editor", {
|
|
638
647
|
enumerable: true,
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme-tokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/theme-tokens.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Semantic theme tokens — the small set of colours the kit's DOM components\n * read, so a host can repaint the whole kit with its own palette WITHOUT\n * remapping Tailwind's `zinc` or `violet`.\n *\n * Each role is two CSS custom properties, one per mode:\n *\n * --fancy-surface the light value\n * --fancy-surface-dark the dark value\n *\n * Components read them through their var() FALLBACK, which is the colour the\n * component used before these existed:\n *\n * bg-[color:var(--fancy-surface,var(--color-white))]\n * dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\n *\n * So:\n * - **Set nothing and nothing changes.** An unset custom property resolves to\n * its fallback, which is the exact declaration the old `bg-white` produced.\n * - **Set one and every surface follows**, wherever the variable is in scope:\n * `:root`, `body`, or any wrapper element. No selector to match, no layer or\n * specificity to win — a custom property is inherited, not cascaded against.\n * - **Both modes are stated, not derived.** The dark value is a separate\n * variable rather than a flip under `.dark`, so which one applies is decided\n * by the host's own `dark:` variant — the same switch that drives every\n * other `dark:` utility in the kit. (See `dark-variant.css` for a variant\n * that follows `[data-theme=\"dark\"]` as well as `.dark`.)\n *\n * NOT covered, deliberately: colours that ENCODE DATA — chart series,\n * file-type marks, mood and confidence scales, event kinds. Repainting those\n * with a host's neutral palette would erase what they mean. A component's\n * explicit `color` prop (Badge, Button, Callout …) is also untouched: that is\n * the host choosing a hue, not the kit choosing one for it.\n *\n * `light` / `dark` are the defaults exactly as components write them in their\n * fallbacks. `tests/theme-tokens.test.tsx` fails if a component's fallback\n * disagrees with this table, so the table is the contract rather than a\n * description of it.\n */\nexport const THEME_TOKENS = {\n surface: {\n variable: \"--fancy-surface\",\n darkVariable: \"--fancy-surface-dark\",\n light: \"var(--color-white)\",\n dark: \"var(--color-zinc-900)\",\n description: \"Panels, cards, overlays (menus, modals, popovers, toasts), sidebars and navbars.\",\n },\n \"surface-muted\": {\n variable: \"--fancy-surface-muted\",\n darkVariable: \"--fancy-surface-muted-dark\",\n light: \"var(--color-zinc-100)\",\n dark: \"var(--color-zinc-800)\",\n description: \"Hovered and selected rows, chips, inset wells, toolbar buttons.\",\n },\n border: {\n variable: \"--fancy-border\",\n darkVariable: \"--fancy-border-dark\",\n light: \"var(--color-zinc-200)\",\n dark: \"var(--color-zinc-700)\",\n description: \"Outlines, dividers, separators and tracks (skeletons, progress, sliders).\",\n },\n \"border-strong\": {\n variable: \"--fancy-border-strong\",\n darkVariable: \"--fancy-border-strong-dark\",\n light: \"var(--color-zinc-300)\",\n dark: \"var(--color-zinc-700)\",\n description: \"The firmer outline on form controls (inputs, checkboxes, radios) and keycaps.\",\n },\n input: {\n variable: \"--fancy-input\",\n darkVariable: \"--fancy-input-dark\",\n light: \"var(--color-white)\",\n dark: \"#1e1e24\",\n description: \"The field surface of text inputs, checkboxes, radios, OTP cells and pickers.\",\n },\n text: {\n variable: \"--fancy-text\",\n darkVariable: \"--fancy-text-dark\",\n light: \"var(--color-zinc-900)\",\n dark: \"var(--color-zinc-100)\",\n description: \"Strongest foreground: headings, values, field text, active items.\",\n },\n \"text-soft\": {\n variable: \"--fancy-text-soft\",\n darkVariable: \"--fancy-text-soft-dark\",\n light: \"var(--color-zinc-700)\",\n dark: \"var(--color-zinc-300)\",\n description: \"Body copy and menu items: readable, one step back from text.\",\n },\n \"text-muted\": {\n variable: \"--fancy-text-muted\",\n darkVariable: \"--fancy-text-muted-dark\",\n light: \"var(--color-zinc-500)\",\n dark: \"var(--color-zinc-400)\",\n description: \"Descriptions, captions, secondary labels, axis labels.\",\n },\n \"text-faint\": {\n variable: \"--fancy-text-faint\",\n darkVariable: \"--fancy-text-faint-dark\",\n light: \"var(--color-zinc-400)\",\n dark: \"var(--color-zinc-500)\",\n description: \"Placeholders, disabled hints, decorative icons.\",\n },\n \"text-subtle\": {\n variable: \"--fancy-text-subtle\",\n darkVariable: \"--fancy-text-subtle-dark\",\n light: \"var(--color-zinc-600)\",\n dark: \"var(--color-zinc-400)\",\n description: \"Inactive nav labels (Sidebar, Menu, Navbar, MultiSwitch) and secondary prose. Added 5.53.1.\",\n },\n \"surface-hover\": {\n variable: \"--fancy-surface-hover\",\n darkVariable: \"--fancy-surface-hover-dark\",\n light: \"var(--color-zinc-50)\",\n // Tailwind's `bg-zinc-800/50`, written out so a host's value is used as-is.\n dark: \"color-mix(in oklab, var(--color-zinc-800) 50%, transparent)\",\n description: \"The hover fill on nav items, list options and table rows. Added 5.53.1.\",\n },\n focus: {\n variable: \"--fancy-focus\",\n darkVariable: \"--fancy-focus-dark\",\n light: \"var(--color-blue-500)\",\n dark: \"var(--color-blue-400)\",\n description: \"The focus border and ring on form controls.\",\n },\n} as const;\n\nexport type ThemeTokenRole = keyof typeof THEME_TOKENS;\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -35,6 +35,7 @@ export { Container, ContainerProps } from './container.cjs';
|
|
|
35
35
|
export { Section, SectionProps } from './section.cjs';
|
|
36
36
|
export { Grid, GridProps } from './grid.cjs';
|
|
37
37
|
export { ResizablePanels, ResizablePanelsOrientation, ResizablePanelsProps } from './resizable-panels.cjs';
|
|
38
|
+
export { MoveItemOptions, ReorderableGrid, ReorderableGridAnnouncementContext, ReorderableGridItem, ReorderableGridItemState, ReorderableGridLabels, ReorderableGridProps, moveItem } from './reorderable-grid.cjs';
|
|
38
39
|
export { StatList, StatListItem, StatListProps } from './stat-list.cjs';
|
|
39
40
|
export { Kbd, KbdProps } from './kbd.cjs';
|
|
40
41
|
export { IndexList, IndexListItem, IndexListProps } from './index-list.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ export { Container, ContainerProps } from './container.js';
|
|
|
35
35
|
export { Section, SectionProps } from './section.js';
|
|
36
36
|
export { Grid, GridProps } from './grid.js';
|
|
37
37
|
export { ResizablePanels, ResizablePanelsOrientation, ResizablePanelsProps } from './resizable-panels.js';
|
|
38
|
+
export { MoveItemOptions, ReorderableGrid, ReorderableGridAnnouncementContext, ReorderableGridItem, ReorderableGridItemState, ReorderableGridLabels, ReorderableGridProps, moveItem } from './reorderable-grid.js';
|
|
38
39
|
export { StatList, StatListItem, StatListProps } from './stat-list.js';
|
|
39
40
|
export { Kbd, KbdProps } from './kbd.js';
|
|
40
41
|
export { IndexList, IndexListItem, IndexListProps } from './index-list.js';
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
export { TimePicker } from './chunk-AZQXPI5S.js';
|
|
1
2
|
export { Timeline } from './chunk-QGY5FPVM.js';
|
|
2
3
|
export { Toast, useToast } from './chunk-BQFPC5FL.js';
|
|
3
4
|
export { TreeNav, useTreeNav } from './chunk-OYDJVGFS.js';
|
|
4
5
|
export { VirtualList } from './chunk-Z4CW3U6C.js';
|
|
5
6
|
import './chunk-VXHFR5MV.js';
|
|
7
|
+
export { Slider } from './chunk-NVXTHTJI.js';
|
|
6
8
|
import './chunk-NW3GJWJ7.js';
|
|
7
9
|
import './chunk-ORCXPDDG.js';
|
|
8
10
|
export { Form, FormProvider } from './chunk-PQWQ5K6J.js';
|
|
11
|
+
export { Checkbox } from './chunk-OTM7RL2L.js';
|
|
9
12
|
export { CheckboxGroup } from './chunk-TAYJSIOP.js';
|
|
10
13
|
import './chunk-V4EARA4F.js';
|
|
11
14
|
import './chunk-SHDSKHCC.js';
|
|
12
15
|
export { MultiSwitch } from './chunk-YUNOVQQJ.js';
|
|
13
16
|
export { RadioGroup } from './chunk-4FH2JHUY.js';
|
|
14
17
|
import './chunk-GNHQVPZP.js';
|
|
15
|
-
export {
|
|
16
|
-
export { Checkbox } from './chunk-OTM7RL2L.js';
|
|
18
|
+
export { Skeleton } from './chunk-X7VIIM2P.js';
|
|
17
19
|
export { Stat, StatBand } from './chunk-KC3PYCBO.js';
|
|
18
20
|
export { StatList } from './chunk-SXXDTW7S.js';
|
|
19
21
|
export { StickyNote } from './chunk-CCG2L5EH.js';
|
|
@@ -21,15 +23,14 @@ export { Table } from './chunk-YAPGHVBZ.js';
|
|
|
21
23
|
export { Tabs, useTabs } from './chunk-IU5WQUUC.js';
|
|
22
24
|
import './chunk-TMR56BBE.js';
|
|
23
25
|
export { TimeGrid } from './chunk-MLZGGAXQ.js';
|
|
24
|
-
export { TimePicker } from './chunk-AZQXPI5S.js';
|
|
25
26
|
export { PullQuote } from './chunk-44VYWOCG.js';
|
|
26
27
|
export { QrCode, encodeQr, selectMode } from './chunk-RLE5WYY6.js';
|
|
27
28
|
export { ReasonTag } from './chunk-QP35Z2WB.js';
|
|
29
|
+
export { ReorderableGrid, moveItem } from './chunk-DTOIO42M.js';
|
|
28
30
|
export { ResizablePanels } from './chunk-GDF6XTHC.js';
|
|
29
31
|
export { Section } from './chunk-SLJD25VV.js';
|
|
30
32
|
export { Separator } from './chunk-JSD6IEBW.js';
|
|
31
33
|
export { Sidebar, useSidebar } from './chunk-YJHP5FVA.js';
|
|
32
|
-
export { Skeleton } from './chunk-X7VIIM2P.js';
|
|
33
34
|
export { Pillbox } from './chunk-G35XN5WV.js';
|
|
34
35
|
export { Profile } from './chunk-GOE36IXL.js';
|
|
35
36
|
export { Progress } from './chunk-UE3QO7R3.js';
|
|
@@ -74,7 +75,7 @@ export { Container } from './chunk-VKMPVFQK.js';
|
|
|
74
75
|
import './chunk-AUTW5O4W.js';
|
|
75
76
|
export { ContextMenu, useContextMenu } from './chunk-NSJBVV7R.js';
|
|
76
77
|
export { Drawer, useDrawer } from './chunk-PXZRYL5I.js';
|
|
77
|
-
export { Dropdown, useDropdown } from './chunk-
|
|
78
|
+
export { Dropdown, useDropdown } from './chunk-BXPLERIJ.js';
|
|
78
79
|
export { Editor, useEditor } from './chunk-CAUEKGMR.js';
|
|
79
80
|
export { THEME_STORAGE_KEY, getThemePreference, initTheme, resolveTheme, setThemePreference, subscribeTheme, useId, useNodeRegistry, useTheme } from './chunk-2BXMMVQS.js';
|
|
80
81
|
export { usePanZoom } from './chunk-CPY7NHXM.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme-tokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/theme-tokens.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Semantic theme tokens — the small set of colours the kit's DOM components\n * read, so a host can repaint the whole kit with its own palette WITHOUT\n * remapping Tailwind's `zinc` or `violet`.\n *\n * Each role is two CSS custom properties, one per mode:\n *\n * --fancy-surface the light value\n * --fancy-surface-dark the dark value\n *\n * Components read them through their var() FALLBACK, which is the colour the\n * component used before these existed:\n *\n * bg-[color:var(--fancy-surface,var(--color-white))]\n * dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\n *\n * So:\n * - **Set nothing and nothing changes.** An unset custom property resolves to\n * its fallback, which is the exact declaration the old `bg-white` produced.\n * - **Set one and every surface follows**, wherever the variable is in scope:\n * `:root`, `body`, or any wrapper element. No selector to match, no layer or\n * specificity to win — a custom property is inherited, not cascaded against.\n * - **Both modes are stated, not derived.** The dark value is a separate\n * variable rather than a flip under `.dark`, so which one applies is decided\n * by the host's own `dark:` variant — the same switch that drives every\n * other `dark:` utility in the kit. (See `dark-variant.css` for a variant\n * that follows `[data-theme=\"dark\"]` as well as `.dark`.)\n *\n * NOT covered, deliberately: colours that ENCODE DATA — chart series,\n * file-type marks, mood and confidence scales, event kinds. Repainting those\n * with a host's neutral palette would erase what they mean. A component's\n * explicit `color` prop (Badge, Button, Callout …) is also untouched: that is\n * the host choosing a hue, not the kit choosing one for it.\n *\n * `light` / `dark` are the defaults exactly as components write them in their\n * fallbacks. `tests/theme-tokens.test.tsx` fails if a component's fallback\n * disagrees with this table, so the table is the contract rather than a\n * description of it.\n */\nexport const THEME_TOKENS = {\n surface: {\n variable: \"--fancy-surface\",\n darkVariable: \"--fancy-surface-dark\",\n light: \"var(--color-white)\",\n dark: \"var(--color-zinc-900)\",\n description: \"Panels, cards, overlays (menus, modals, popovers, toasts), sidebars and navbars.\",\n },\n \"surface-muted\": {\n variable: \"--fancy-surface-muted\",\n darkVariable: \"--fancy-surface-muted-dark\",\n light: \"var(--color-zinc-100)\",\n dark: \"var(--color-zinc-800)\",\n description: \"Hovered and selected rows, chips, inset wells, toolbar buttons.\",\n },\n border: {\n variable: \"--fancy-border\",\n darkVariable: \"--fancy-border-dark\",\n light: \"var(--color-zinc-200)\",\n dark: \"var(--color-zinc-700)\",\n description: \"Outlines, dividers, separators and tracks (skeletons, progress, sliders).\",\n },\n \"border-strong\": {\n variable: \"--fancy-border-strong\",\n darkVariable: \"--fancy-border-strong-dark\",\n light: \"var(--color-zinc-300)\",\n dark: \"var(--color-zinc-700)\",\n description: \"The firmer outline on form controls (inputs, checkboxes, radios) and keycaps.\",\n },\n input: {\n variable: \"--fancy-input\",\n darkVariable: \"--fancy-input-dark\",\n light: \"var(--color-white)\",\n dark: \"#1e1e24\",\n description: \"The field surface of text inputs, checkboxes, radios, OTP cells and pickers.\",\n },\n text: {\n variable: \"--fancy-text\",\n darkVariable: \"--fancy-text-dark\",\n light: \"var(--color-zinc-900)\",\n dark: \"var(--color-zinc-100)\",\n description: \"Strongest foreground: headings, values, field text, active items.\",\n },\n \"text-soft\": {\n variable: \"--fancy-text-soft\",\n darkVariable: \"--fancy-text-soft-dark\",\n light: \"var(--color-zinc-700)\",\n dark: \"var(--color-zinc-300)\",\n description: \"Body copy and menu items: readable, one step back from text.\",\n },\n \"text-muted\": {\n variable: \"--fancy-text-muted\",\n darkVariable: \"--fancy-text-muted-dark\",\n light: \"var(--color-zinc-500)\",\n dark: \"var(--color-zinc-400)\",\n description: \"Descriptions, captions, secondary labels, axis labels.\",\n },\n \"text-faint\": {\n variable: \"--fancy-text-faint\",\n darkVariable: \"--fancy-text-faint-dark\",\n light: \"var(--color-zinc-400)\",\n dark: \"var(--color-zinc-500)\",\n description: \"Placeholders, disabled hints, decorative icons.\",\n },\n \"text-subtle\": {\n variable: \"--fancy-text-subtle\",\n darkVariable: \"--fancy-text-subtle-dark\",\n light: \"var(--color-zinc-600)\",\n dark: \"var(--color-zinc-400)\",\n description: \"Inactive nav labels (Sidebar, Menu, Navbar, MultiSwitch) and secondary prose. Added 5.53.1.\",\n },\n \"surface-hover\": {\n variable: \"--fancy-surface-hover\",\n darkVariable: \"--fancy-surface-hover-dark\",\n light: \"var(--color-zinc-50)\",\n // Tailwind's `bg-zinc-800/50`, written out so a host's value is used as-is.\n dark: \"color-mix(in oklab, var(--color-zinc-800) 50%, transparent)\",\n description: \"The hover fill on nav items, list options and table rows. Added 5.53.1.\",\n },\n focus: {\n variable: \"--fancy-focus\",\n darkVariable: \"--fancy-focus-dark\",\n light: \"var(--color-blue-500)\",\n dark: \"var(--color-blue-400)\",\n description: \"The focus border and ring on form controls.\",\n },\n} as const;\n\nexport type ThemeTokenRole = keyof typeof THEME_TOKENS;\n"]}
|
package/dist/inputs.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('./chunk-O5IO7TCO.cjs');
|
|
4
|
+
var chunkZ4UXLQSK_cjs = require('./chunk-Z4UXLQSK.cjs');
|
|
4
5
|
require('./chunk-OYZDSMNP.cjs');
|
|
5
6
|
require('./chunk-5FV6GMFP.cjs');
|
|
6
7
|
var chunk6MDZQIMZ_cjs = require('./chunk-6MDZQIMZ.cjs');
|
|
8
|
+
var chunkETNQ4AEQ_cjs = require('./chunk-ETNQ4AEQ.cjs');
|
|
7
9
|
var chunkDJB3N4G3_cjs = require('./chunk-DJB3N4G3.cjs');
|
|
8
10
|
require('./chunk-URTLYNZI.cjs');
|
|
9
11
|
require('./chunk-QGPMVFZJ.cjs');
|
|
10
12
|
var chunkIB673TEG_cjs = require('./chunk-IB673TEG.cjs');
|
|
11
13
|
var chunkH7ELUIF6_cjs = require('./chunk-H7ELUIF6.cjs');
|
|
12
14
|
require('./chunk-HXLSEBAL.cjs');
|
|
13
|
-
var chunkZ4UXLQSK_cjs = require('./chunk-Z4UXLQSK.cjs');
|
|
14
|
-
var chunkETNQ4AEQ_cjs = require('./chunk-ETNQ4AEQ.cjs');
|
|
15
15
|
require('./chunk-I27K6NLX.cjs');
|
|
16
16
|
var chunk2O5UXH5R_cjs = require('./chunk-2O5UXH5R.cjs');
|
|
17
17
|
var chunkTLRFXSPA_cjs = require('./chunk-TLRFXSPA.cjs');
|
|
@@ -36,6 +36,10 @@ require('./chunk-ZU5Q77OT.cjs');
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
Object.defineProperty(exports, "Slider", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
get: function () { return chunkZ4UXLQSK_cjs.Slider; }
|
|
42
|
+
});
|
|
39
43
|
Object.defineProperty(exports, "Form", {
|
|
40
44
|
enumerable: true,
|
|
41
45
|
get: function () { return chunk6MDZQIMZ_cjs.Form; }
|
|
@@ -44,6 +48,10 @@ Object.defineProperty(exports, "FormProvider", {
|
|
|
44
48
|
enumerable: true,
|
|
45
49
|
get: function () { return chunk6MDZQIMZ_cjs.FormProvider; }
|
|
46
50
|
});
|
|
51
|
+
Object.defineProperty(exports, "Checkbox", {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () { return chunkETNQ4AEQ_cjs.Checkbox; }
|
|
54
|
+
});
|
|
47
55
|
Object.defineProperty(exports, "CheckboxGroup", {
|
|
48
56
|
enumerable: true,
|
|
49
57
|
get: function () { return chunkDJB3N4G3_cjs.CheckboxGroup; }
|
|
@@ -56,14 +64,6 @@ Object.defineProperty(exports, "RadioGroup", {
|
|
|
56
64
|
enumerable: true,
|
|
57
65
|
get: function () { return chunkH7ELUIF6_cjs.RadioGroup; }
|
|
58
66
|
});
|
|
59
|
-
Object.defineProperty(exports, "Slider", {
|
|
60
|
-
enumerable: true,
|
|
61
|
-
get: function () { return chunkZ4UXLQSK_cjs.Slider; }
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(exports, "Checkbox", {
|
|
64
|
-
enumerable: true,
|
|
65
|
-
get: function () { return chunkETNQ4AEQ_cjs.Checkbox; }
|
|
66
|
-
});
|
|
67
67
|
Object.defineProperty(exports, "Switch", {
|
|
68
68
|
enumerable: true,
|
|
69
69
|
get: function () { return chunk2O5UXH5R_cjs.Switch; }
|
package/dist/inputs.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import './chunk-VXHFR5MV.js';
|
|
2
|
+
export { Slider } from './chunk-NVXTHTJI.js';
|
|
2
3
|
import './chunk-NW3GJWJ7.js';
|
|
3
4
|
import './chunk-ORCXPDDG.js';
|
|
4
5
|
export { Form, FormProvider } from './chunk-PQWQ5K6J.js';
|
|
6
|
+
export { Checkbox } from './chunk-OTM7RL2L.js';
|
|
5
7
|
export { CheckboxGroup } from './chunk-TAYJSIOP.js';
|
|
6
8
|
import './chunk-V4EARA4F.js';
|
|
7
9
|
import './chunk-SHDSKHCC.js';
|
|
8
10
|
export { MultiSwitch } from './chunk-YUNOVQQJ.js';
|
|
9
11
|
export { RadioGroup } from './chunk-4FH2JHUY.js';
|
|
10
12
|
import './chunk-GNHQVPZP.js';
|
|
11
|
-
export { Slider } from './chunk-NVXTHTJI.js';
|
|
12
|
-
export { Checkbox } from './chunk-OTM7RL2L.js';
|
|
13
13
|
import './chunk-SV5BW3IA.js';
|
|
14
14
|
export { Switch } from './chunk-DXZCKDYS.js';
|
|
15
15
|
export { DatePicker } from './chunk-2UTN3EFK.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQP6VNKLW_cjs = require('./chunk-QP6VNKLW.cjs');
|
|
4
|
+
require('./chunk-I27K6NLX.cjs');
|
|
5
|
+
require('./chunk-OUYC6EIL.cjs');
|
|
6
|
+
require('./chunk-SNHU2AI4.cjs');
|
|
7
|
+
require('./chunk-ZU5Q77OT.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
Object.defineProperty(exports, "ReorderableGrid", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return chunkQP6VNKLW_cjs.ReorderableGrid; }
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, "moveItem", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return chunkQP6VNKLW_cjs.moveItem; }
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=reorderable-grid.cjs.map
|
|
20
|
+
//# sourceMappingURL=reorderable-grid.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"reorderable-grid.cjs"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode, Ref, ReactElement } from 'react';
|
|
2
|
+
|
|
3
|
+
/** The least an item needs. Anything else on it is yours, and reaches `renderItem` untouched. */
|
|
4
|
+
interface ReorderableGridItem {
|
|
5
|
+
/** Stable id. The order is reported as these. */
|
|
6
|
+
id: string;
|
|
7
|
+
/**
|
|
8
|
+
* Pinned: this cell keeps its slot. It cannot be picked up or dragged, and
|
|
9
|
+
* nothing can be dropped onto it; other cells flow around it.
|
|
10
|
+
*/
|
|
11
|
+
locked?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** What `renderItem` gets alongside the item. */
|
|
14
|
+
interface ReorderableGridItemState {
|
|
15
|
+
/** 0-based index in the order currently shown (the live preview while dragging). */
|
|
16
|
+
index: number;
|
|
17
|
+
/** 1-based position. */
|
|
18
|
+
position: number;
|
|
19
|
+
/** 1-based row. */
|
|
20
|
+
row: number;
|
|
21
|
+
/** 1-based column. */
|
|
22
|
+
column: number;
|
|
23
|
+
total: number;
|
|
24
|
+
/** Being dragged with a pointer. */
|
|
25
|
+
dragging: boolean;
|
|
26
|
+
/** Picked up with the keyboard. */
|
|
27
|
+
pickedUp: boolean;
|
|
28
|
+
/** This cell's slot is where the active item will land. */
|
|
29
|
+
dropTarget: boolean;
|
|
30
|
+
locked: boolean;
|
|
31
|
+
disabled: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Spread on an element to make it the drag handle. Once a cell contains a
|
|
34
|
+
* handle, only the handle starts a pointer drag; without one, the whole cell
|
|
35
|
+
* does. The keyboard always works on the cell itself.
|
|
36
|
+
*/
|
|
37
|
+
handleProps: {
|
|
38
|
+
"data-reorderable-handle": "";
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** Facts every announcement can use. Positions are 1-based. */
|
|
42
|
+
interface ReorderableGridAnnouncementContext {
|
|
43
|
+
id: string;
|
|
44
|
+
/** From `getItemLabel`, else `item.label` when it is a string, else the id. */
|
|
45
|
+
label: string;
|
|
46
|
+
position: number;
|
|
47
|
+
total: number;
|
|
48
|
+
row: number;
|
|
49
|
+
column: number;
|
|
50
|
+
}
|
|
51
|
+
/** Every string the grid speaks or shows to assistive tech. Override any of them (i18n). */
|
|
52
|
+
interface ReorderableGridLabels {
|
|
53
|
+
/** Read with each cell (`aria-describedby`). */
|
|
54
|
+
instructions: string;
|
|
55
|
+
/** `aria-roledescription` of each cell. */
|
|
56
|
+
roleDescription: string;
|
|
57
|
+
pickedUp: (ctx: ReorderableGridAnnouncementContext) => string;
|
|
58
|
+
moved: (ctx: ReorderableGridAnnouncementContext) => string;
|
|
59
|
+
dropped: (ctx: ReorderableGridAnnouncementContext) => string;
|
|
60
|
+
/** `ctx` is the restored (original) position. */
|
|
61
|
+
cancelled: (ctx: ReorderableGridAnnouncementContext) => string;
|
|
62
|
+
locked: (ctx: ReorderableGridAnnouncementContext) => string;
|
|
63
|
+
}
|
|
64
|
+
interface ReorderableGridProps<T extends ReorderableGridItem> extends Omit<HTMLAttributes<HTMLDivElement>, "children" | "defaultValue" | "onChange"> {
|
|
65
|
+
/** The cells' data. Each needs a unique `id`. */
|
|
66
|
+
items: T[];
|
|
67
|
+
/**
|
|
68
|
+
* Controlled order, as ids. Ids that are not in `items` are ignored, and
|
|
69
|
+
* items missing from it follow in `items` order, so a stale or partial order
|
|
70
|
+
* never drops a cell.
|
|
71
|
+
*/
|
|
72
|
+
value?: string[];
|
|
73
|
+
/** Uncontrolled starting order. Omit both to start in `items` order. */
|
|
74
|
+
defaultValue?: string[];
|
|
75
|
+
/**
|
|
76
|
+
* The full new order, once per committed move: a pointer release or a
|
|
77
|
+
* keyboard drop that changed something. Never on a cancel, never on a
|
|
78
|
+
* no-op drop, never during the live preview.
|
|
79
|
+
*/
|
|
80
|
+
onReorder?: (ids: string[]) => void;
|
|
81
|
+
/** Renders a cell's content. Default: the item's label. */
|
|
82
|
+
renderItem?: (item: T, state: ReorderableGridItemState) => ReactNode;
|
|
83
|
+
/** Columns, 1 to 12. Placement is row-major. Default `2`. */
|
|
84
|
+
columns?: number;
|
|
85
|
+
/** Gutter. Default `sm`. */
|
|
86
|
+
gap?: "none" | "sm" | "md" | "lg";
|
|
87
|
+
/** No reordering at all, and no tab stops. */
|
|
88
|
+
disabled?: boolean;
|
|
89
|
+
/** Accessible name of the grid. */
|
|
90
|
+
label?: string;
|
|
91
|
+
/** The name an item is announced by. */
|
|
92
|
+
getItemLabel?: (item: T) => string;
|
|
93
|
+
/** Overrides for any announcement or label. */
|
|
94
|
+
labels?: Partial<ReorderableGridLabels>;
|
|
95
|
+
/** Skip the cell's default visuals (border, surface, padding). Behaviour stays. */
|
|
96
|
+
unstyled?: boolean;
|
|
97
|
+
/** Extra classes on every cell. */
|
|
98
|
+
cellClassName?: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* A grid of cells reordered in place, row-major, by pointer or keyboard.
|
|
103
|
+
*
|
|
104
|
+
* Built for field-order designers: the grid looks like the grid it designs.
|
|
105
|
+
* Order is a list of ids (`value` / `defaultValue` / `onReorder`); the pure
|
|
106
|
+
* `moveItem(ids, from, to, { locked })` is the same rule without a DOM, for
|
|
107
|
+
* agents.
|
|
108
|
+
*/
|
|
109
|
+
declare const ReorderableGrid: (<T extends ReorderableGridItem>(props: ReorderableGridProps<T> & {
|
|
110
|
+
ref?: Ref<HTMLDivElement>;
|
|
111
|
+
}) => ReactElement) & {
|
|
112
|
+
displayName?: string;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
interface MoveItemOptions<T> {
|
|
116
|
+
/**
|
|
117
|
+
* Pinned entries. A locked entry keeps its absolute index: it cannot be
|
|
118
|
+
* moved, nothing can be dropped onto its slot, and the other entries flow
|
|
119
|
+
* around it. Either the locked ids themselves or a predicate.
|
|
120
|
+
*/
|
|
121
|
+
locked?: Iterable<T> | ((id: T) => boolean);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Move the entry at `fromIndex` so that it ends up at `toIndex`, row-major,
|
|
125
|
+
* and return a NEW array. The input is never mutated.
|
|
126
|
+
*
|
|
127
|
+
* This is the whole reorder rule of `ReorderableGrid`, with no DOM: the grid's
|
|
128
|
+
* pointer drags and arrow keys both go through it, and an agent bridge can call
|
|
129
|
+
* it directly to reorder from a tool call.
|
|
130
|
+
*
|
|
131
|
+
* - `toIndex` is the entry's index in the RESULT, so `moveItem(ids, 0, ids.length - 1)`
|
|
132
|
+
* moves the first entry to the end.
|
|
133
|
+
* - An index outside the list (or not an integer) throws `RangeError`. That is
|
|
134
|
+
* a caller bug, and a silent no-op would hide it.
|
|
135
|
+
* - With `locked`: a locked entry keeps its absolute index and the move happens
|
|
136
|
+
* among the free slots only. Moving a locked entry, or onto a locked slot,
|
|
137
|
+
* returns the order unchanged: that is the rule doing its job, not an error.
|
|
138
|
+
*/
|
|
139
|
+
declare function moveItem<T>(ids: readonly T[], fromIndex: number, toIndex: number, options?: MoveItemOptions<T>): T[];
|
|
140
|
+
|
|
141
|
+
export { type MoveItemOptions, ReorderableGrid, type ReorderableGridAnnouncementContext, type ReorderableGridItem, type ReorderableGridItemState, type ReorderableGridLabels, type ReorderableGridProps, moveItem };
|