@particle-academy/react-fancy 5.54.2 → 5.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,129 +0,0 @@
1
- import { cn } from './chunk-MMW2JGKZ.js';
2
- import { forwardRef, useState } from 'react';
3
- import { jsx, jsxs } from 'react/jsx-runtime';
4
-
5
- var TONE_CLASSES = {
6
- violet: "bg-violet-500 hover:bg-violet-600",
7
- emerald: "bg-emerald-500 hover:bg-emerald-600",
8
- sky: "bg-sky-500 hover:bg-sky-600",
9
- rose: "bg-rose-500 hover:bg-rose-600",
10
- amber: "bg-amber-500 hover:bg-amber-600",
11
- indigo: "bg-indigo-500 hover:bg-indigo-600",
12
- blue: "bg-blue-500 hover:bg-blue-600",
13
- zinc: "bg-zinc-500 hover:bg-zinc-600"
14
- };
15
- var OFF_CLASSES = "bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:bg-zinc-200 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:hover:bg-zinc-700";
16
- var TimeGrid = forwardRef(
17
- ({
18
- rows,
19
- cols,
20
- value,
21
- onChange,
22
- toneOn = "violet",
23
- cellWidth = 20,
24
- cellHeight = 16,
25
- sparseColLabels = true,
26
- toggleStripsOnHeaderClick = true,
27
- ariaCell,
28
- cellId,
29
- className
30
- }, ref) => {
31
- const [drag, setDrag] = useState(null);
32
- const setCell = (r, c, v) => {
33
- if (value[r]?.[c] === v) return;
34
- const next = value.map((row) => row.slice());
35
- next[r][c] = v;
36
- onChange(next);
37
- };
38
- const toggleRow = (r) => {
39
- if (!toggleStripsOnHeaderClick) return;
40
- const all = value[r].every(Boolean);
41
- const next = value.map((row) => row.slice());
42
- for (let c = 0; c < cols.length; c++) next[r][c] = !all;
43
- onChange(next);
44
- };
45
- const toggleCol = (c) => {
46
- if (!toggleStripsOnHeaderClick) return;
47
- const all = value.every((row) => row[c]);
48
- const next = value.map((row) => row.slice());
49
- for (let r = 0; r < rows.length; r++) next[r][c] = !all;
50
- onChange(next);
51
- };
52
- const colStep = Math.max(1, Math.floor(cols.length / 6));
53
- const onTone = TONE_CLASSES[toneOn];
54
- return /* @__PURE__ */ jsx(
55
- "div",
56
- {
57
- ref,
58
- "data-react-fancy-timegrid": "",
59
- className: cn(
60
- "select-none overflow-x-auto",
61
- className
62
- ),
63
- onMouseLeave: () => setDrag(null),
64
- onMouseUp: () => setDrag(null),
65
- children: /* @__PURE__ */ jsxs("table", { className: "text-[10px]", children: [
66
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
67
- /* @__PURE__ */ jsx("th", {}),
68
- cols.map((label, c) => /* @__PURE__ */ jsx(
69
- "th",
70
- {
71
- onClick: () => toggleCol(c),
72
- style: { width: cellWidth },
73
- "data-react-fancy-timegrid-col": c,
74
- className: cn(
75
- "text-zinc-400",
76
- toggleStripsOnHeaderClick && "cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-200"
77
- ),
78
- children: sparseColLabels ? c % colStep === 0 ? label : "" : label
79
- },
80
- c
81
- ))
82
- ] }) }),
83
- /* @__PURE__ */ jsx("tbody", { children: rows.map((label, r) => /* @__PURE__ */ jsxs("tr", { children: [
84
- /* @__PURE__ */ jsx(
85
- "th",
86
- {
87
- onClick: () => toggleRow(r),
88
- "data-react-fancy-timegrid-row": r,
89
- className: cn(
90
- "pr-1 text-right font-medium text-zinc-500",
91
- toggleStripsOnHeaderClick && "cursor-pointer hover:text-zinc-800 dark:hover:text-zinc-200"
92
- ),
93
- children: label
94
- }
95
- ),
96
- cols.map((_, c) => {
97
- const on = value[r]?.[c] ?? false;
98
- return /* @__PURE__ */ jsx("td", { className: "p-px", children: /* @__PURE__ */ jsx(
99
- "button",
100
- {
101
- type: "button",
102
- onMouseDown: () => {
103
- const v = !on;
104
- setDrag(v);
105
- setCell(r, c, v);
106
- },
107
- onMouseEnter: () => drag !== null && setCell(r, c, drag),
108
- style: { width: cellWidth, height: cellHeight },
109
- "data-react-fancy-timegrid-cell": cellId ? cellId(r, c) : `${r}:${c}`,
110
- "aria-pressed": on,
111
- "aria-label": ariaCell ? ariaCell(r, c, on) : `${rows[r]} ${cols[c]} ${on ? "on" : "off"}`,
112
- className: cn(
113
- "block rounded-sm transition",
114
- on ? onTone : OFF_CLASSES
115
- )
116
- }
117
- ) }, c);
118
- })
119
- ] }, r)) })
120
- ] })
121
- }
122
- );
123
- }
124
- );
125
- TimeGrid.displayName = "TimeGrid";
126
-
127
- export { TimeGrid };
128
- //# sourceMappingURL=chunk-GF23UBOT.js.map
129
- //# sourceMappingURL=chunk-GF23UBOT.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/TimeGrid/TimeGrid.tsx"],"names":[],"mappings":"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","file":"chunk-GF23UBOT.js","sourcesContent":["import { forwardRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { TimeGridProps, TimeGridTone } from \"./TimeGrid.types\";\n\nconst TONE_CLASSES: Record<TimeGridTone, string> = {\n violet: \"bg-violet-500 hover:bg-violet-600\",\n emerald: \"bg-emerald-500 hover:bg-emerald-600\",\n sky: \"bg-sky-500 hover:bg-sky-600\",\n rose: \"bg-rose-500 hover:bg-rose-600\",\n amber: \"bg-amber-500 hover:bg-amber-600\",\n indigo: \"bg-indigo-500 hover:bg-indigo-600\",\n blue: \"bg-blue-500 hover:bg-blue-600\",\n zinc: \"bg-zinc-500 hover:bg-zinc-600\",\n};\n\nconst OFF_CLASSES =\n \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:bg-zinc-200 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:hover:bg-zinc-700\";\n\nexport const TimeGrid = forwardRef<HTMLDivElement, TimeGridProps>(\n (\n {\n rows,\n cols,\n value,\n onChange,\n toneOn = \"violet\",\n cellWidth = 20,\n cellHeight = 16,\n sparseColLabels = true,\n toggleStripsOnHeaderClick = true,\n ariaCell,\n cellId,\n className,\n },\n ref,\n ) => {\n const [drag, setDrag] = useState<boolean | null>(null);\n\n const setCell = (r: number, c: number, v: boolean) => {\n if (value[r]?.[c] === v) return;\n const next = value.map((row) => row.slice());\n next[r][c] = v;\n onChange(next);\n };\n\n const toggleRow = (r: number) => {\n if (!toggleStripsOnHeaderClick) return;\n const all = value[r].every(Boolean);\n const next = value.map((row) => row.slice());\n for (let c = 0; c < cols.length; c++) next[r][c] = !all;\n onChange(next);\n };\n\n const toggleCol = (c: number) => {\n if (!toggleStripsOnHeaderClick) return;\n const all = value.every((row) => row[c]);\n const next = value.map((row) => row.slice());\n for (let r = 0; r < rows.length; r++) next[r][c] = !all;\n onChange(next);\n };\n\n const colStep = Math.max(1, Math.floor(cols.length / 6));\n const onTone = TONE_CLASSES[toneOn];\n\n return (\n <div\n ref={ref}\n data-react-fancy-timegrid=\"\"\n className={cn(\n \"select-none overflow-x-auto\",\n className,\n )}\n onMouseLeave={() => setDrag(null)}\n onMouseUp={() => setDrag(null)}\n >\n <table className=\"text-[10px]\">\n <thead>\n <tr>\n <th />\n {cols.map((label, c) => (\n <th\n key={c}\n onClick={() => toggleCol(c)}\n style={{ width: cellWidth }}\n data-react-fancy-timegrid-col={c}\n className={cn(\n \"text-zinc-400\",\n toggleStripsOnHeaderClick &&\n \"cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-200\",\n )}\n >\n {sparseColLabels ? (c % colStep === 0 ? label : \"\") : label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((label, r) => (\n <tr key={r}>\n <th\n onClick={() => toggleRow(r)}\n data-react-fancy-timegrid-row={r}\n className={cn(\n \"pr-1 text-right font-medium text-zinc-500\",\n toggleStripsOnHeaderClick &&\n \"cursor-pointer hover:text-zinc-800 dark:hover:text-zinc-200\",\n )}\n >\n {label}\n </th>\n {cols.map((_, c) => {\n const on = value[r]?.[c] ?? false;\n return (\n <td key={c} className=\"p-px\">\n <button\n type=\"button\"\n onMouseDown={() => {\n const v = !on;\n setDrag(v);\n setCell(r, c, v);\n }}\n onMouseEnter={() => drag !== null && setCell(r, c, drag)}\n style={{ width: cellWidth, height: cellHeight }}\n data-react-fancy-timegrid-cell={\n cellId ? cellId(r, c) : `${r}:${c}`\n }\n aria-pressed={on}\n aria-label={\n ariaCell\n ? ariaCell(r, c, on)\n : `${rows[r]} ${cols[c]} ${on ? \"on\" : \"off\"}`\n }\n className={cn(\n \"block rounded-sm transition\",\n on ? onTone : OFF_CLASSES,\n )}\n />\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n },\n);\n\nTimeGrid.displayName = \"TimeGrid\";\n"]}
@@ -1,131 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
4
- var react = require('react');
5
- var jsxRuntime = require('react/jsx-runtime');
6
-
7
- var TONE_CLASSES = {
8
- violet: "bg-violet-500 hover:bg-violet-600",
9
- emerald: "bg-emerald-500 hover:bg-emerald-600",
10
- sky: "bg-sky-500 hover:bg-sky-600",
11
- rose: "bg-rose-500 hover:bg-rose-600",
12
- amber: "bg-amber-500 hover:bg-amber-600",
13
- indigo: "bg-indigo-500 hover:bg-indigo-600",
14
- blue: "bg-blue-500 hover:bg-blue-600",
15
- zinc: "bg-zinc-500 hover:bg-zinc-600"
16
- };
17
- var OFF_CLASSES = "bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:bg-zinc-200 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:hover:bg-zinc-700";
18
- var TimeGrid = react.forwardRef(
19
- ({
20
- rows,
21
- cols,
22
- value,
23
- onChange,
24
- toneOn = "violet",
25
- cellWidth = 20,
26
- cellHeight = 16,
27
- sparseColLabels = true,
28
- toggleStripsOnHeaderClick = true,
29
- ariaCell,
30
- cellId,
31
- className
32
- }, ref) => {
33
- const [drag, setDrag] = react.useState(null);
34
- const setCell = (r, c, v) => {
35
- if (value[r]?.[c] === v) return;
36
- const next = value.map((row) => row.slice());
37
- next[r][c] = v;
38
- onChange(next);
39
- };
40
- const toggleRow = (r) => {
41
- if (!toggleStripsOnHeaderClick) return;
42
- const all = value[r].every(Boolean);
43
- const next = value.map((row) => row.slice());
44
- for (let c = 0; c < cols.length; c++) next[r][c] = !all;
45
- onChange(next);
46
- };
47
- const toggleCol = (c) => {
48
- if (!toggleStripsOnHeaderClick) return;
49
- const all = value.every((row) => row[c]);
50
- const next = value.map((row) => row.slice());
51
- for (let r = 0; r < rows.length; r++) next[r][c] = !all;
52
- onChange(next);
53
- };
54
- const colStep = Math.max(1, Math.floor(cols.length / 6));
55
- const onTone = TONE_CLASSES[toneOn];
56
- return /* @__PURE__ */ jsxRuntime.jsx(
57
- "div",
58
- {
59
- ref,
60
- "data-react-fancy-timegrid": "",
61
- className: chunkZU5Q77OT_cjs.cn(
62
- "select-none overflow-x-auto",
63
- className
64
- ),
65
- onMouseLeave: () => setDrag(null),
66
- onMouseUp: () => setDrag(null),
67
- children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "text-[10px]", children: [
68
- /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
69
- /* @__PURE__ */ jsxRuntime.jsx("th", {}),
70
- cols.map((label, c) => /* @__PURE__ */ jsxRuntime.jsx(
71
- "th",
72
- {
73
- onClick: () => toggleCol(c),
74
- style: { width: cellWidth },
75
- "data-react-fancy-timegrid-col": c,
76
- className: chunkZU5Q77OT_cjs.cn(
77
- "text-zinc-400",
78
- toggleStripsOnHeaderClick && "cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-200"
79
- ),
80
- children: sparseColLabels ? c % colStep === 0 ? label : "" : label
81
- },
82
- c
83
- ))
84
- ] }) }),
85
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((label, r) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
86
- /* @__PURE__ */ jsxRuntime.jsx(
87
- "th",
88
- {
89
- onClick: () => toggleRow(r),
90
- "data-react-fancy-timegrid-row": r,
91
- className: chunkZU5Q77OT_cjs.cn(
92
- "pr-1 text-right font-medium text-zinc-500",
93
- toggleStripsOnHeaderClick && "cursor-pointer hover:text-zinc-800 dark:hover:text-zinc-200"
94
- ),
95
- children: label
96
- }
97
- ),
98
- cols.map((_, c) => {
99
- const on = value[r]?.[c] ?? false;
100
- return /* @__PURE__ */ jsxRuntime.jsx("td", { className: "p-px", children: /* @__PURE__ */ jsxRuntime.jsx(
101
- "button",
102
- {
103
- type: "button",
104
- onMouseDown: () => {
105
- const v = !on;
106
- setDrag(v);
107
- setCell(r, c, v);
108
- },
109
- onMouseEnter: () => drag !== null && setCell(r, c, drag),
110
- style: { width: cellWidth, height: cellHeight },
111
- "data-react-fancy-timegrid-cell": cellId ? cellId(r, c) : `${r}:${c}`,
112
- "aria-pressed": on,
113
- "aria-label": ariaCell ? ariaCell(r, c, on) : `${rows[r]} ${cols[c]} ${on ? "on" : "off"}`,
114
- className: chunkZU5Q77OT_cjs.cn(
115
- "block rounded-sm transition",
116
- on ? onTone : OFF_CLASSES
117
- )
118
- }
119
- ) }, c);
120
- })
121
- ] }, r)) })
122
- ] })
123
- }
124
- );
125
- }
126
- );
127
- TimeGrid.displayName = "TimeGrid";
128
-
129
- exports.TimeGrid = TimeGrid;
130
- //# sourceMappingURL=chunk-WFHK2DKG.cjs.map
131
- //# sourceMappingURL=chunk-WFHK2DKG.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/TimeGrid/TimeGrid.tsx"],"names":["forwardRef","useState","jsx","cn","jsxs"],"mappings":"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","file":"chunk-WFHK2DKG.cjs","sourcesContent":["import { forwardRef, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { TimeGridProps, TimeGridTone } from \"./TimeGrid.types\";\n\nconst TONE_CLASSES: Record<TimeGridTone, string> = {\n violet: \"bg-violet-500 hover:bg-violet-600\",\n emerald: \"bg-emerald-500 hover:bg-emerald-600\",\n sky: \"bg-sky-500 hover:bg-sky-600\",\n rose: \"bg-rose-500 hover:bg-rose-600\",\n amber: \"bg-amber-500 hover:bg-amber-600\",\n indigo: \"bg-indigo-500 hover:bg-indigo-600\",\n blue: \"bg-blue-500 hover:bg-blue-600\",\n zinc: \"bg-zinc-500 hover:bg-zinc-600\",\n};\n\nconst OFF_CLASSES =\n \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:bg-zinc-200 dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:hover:bg-zinc-700\";\n\nexport const TimeGrid = forwardRef<HTMLDivElement, TimeGridProps>(\n (\n {\n rows,\n cols,\n value,\n onChange,\n toneOn = \"violet\",\n cellWidth = 20,\n cellHeight = 16,\n sparseColLabels = true,\n toggleStripsOnHeaderClick = true,\n ariaCell,\n cellId,\n className,\n },\n ref,\n ) => {\n const [drag, setDrag] = useState<boolean | null>(null);\n\n const setCell = (r: number, c: number, v: boolean) => {\n if (value[r]?.[c] === v) return;\n const next = value.map((row) => row.slice());\n next[r][c] = v;\n onChange(next);\n };\n\n const toggleRow = (r: number) => {\n if (!toggleStripsOnHeaderClick) return;\n const all = value[r].every(Boolean);\n const next = value.map((row) => row.slice());\n for (let c = 0; c < cols.length; c++) next[r][c] = !all;\n onChange(next);\n };\n\n const toggleCol = (c: number) => {\n if (!toggleStripsOnHeaderClick) return;\n const all = value.every((row) => row[c]);\n const next = value.map((row) => row.slice());\n for (let r = 0; r < rows.length; r++) next[r][c] = !all;\n onChange(next);\n };\n\n const colStep = Math.max(1, Math.floor(cols.length / 6));\n const onTone = TONE_CLASSES[toneOn];\n\n return (\n <div\n ref={ref}\n data-react-fancy-timegrid=\"\"\n className={cn(\n \"select-none overflow-x-auto\",\n className,\n )}\n onMouseLeave={() => setDrag(null)}\n onMouseUp={() => setDrag(null)}\n >\n <table className=\"text-[10px]\">\n <thead>\n <tr>\n <th />\n {cols.map((label, c) => (\n <th\n key={c}\n onClick={() => toggleCol(c)}\n style={{ width: cellWidth }}\n data-react-fancy-timegrid-col={c}\n className={cn(\n \"text-zinc-400\",\n toggleStripsOnHeaderClick &&\n \"cursor-pointer hover:text-zinc-700 dark:hover:text-zinc-200\",\n )}\n >\n {sparseColLabels ? (c % colStep === 0 ? label : \"\") : label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((label, r) => (\n <tr key={r}>\n <th\n onClick={() => toggleRow(r)}\n data-react-fancy-timegrid-row={r}\n className={cn(\n \"pr-1 text-right font-medium text-zinc-500\",\n toggleStripsOnHeaderClick &&\n \"cursor-pointer hover:text-zinc-800 dark:hover:text-zinc-200\",\n )}\n >\n {label}\n </th>\n {cols.map((_, c) => {\n const on = value[r]?.[c] ?? false;\n return (\n <td key={c} className=\"p-px\">\n <button\n type=\"button\"\n onMouseDown={() => {\n const v = !on;\n setDrag(v);\n setCell(r, c, v);\n }}\n onMouseEnter={() => drag !== null && setCell(r, c, drag)}\n style={{ width: cellWidth, height: cellHeight }}\n data-react-fancy-timegrid-cell={\n cellId ? cellId(r, c) : `${r}:${c}`\n }\n aria-pressed={on}\n aria-label={\n ariaCell\n ? ariaCell(r, c, on)\n : `${rows[r]} ${cols[c]} ${on ? \"on\" : \"off\"}`\n }\n className={cn(\n \"block rounded-sm transition\",\n on ? onTone : OFF_CLASSES,\n )}\n />\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n },\n);\n\nTimeGrid.displayName = \"TimeGrid\";\n"]}