intable 0.0.7 → 0.0.9

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 (185) hide show
  1. package/README.md +263 -16
  2. package/dist/__uno.css +1 -0
  3. package/dist/chevron-right.js +6 -0
  4. package/dist/components/Columns.d.ts +3 -0
  5. package/dist/components/Columns.js +71 -0
  6. package/dist/components/DocTree.d.ts +4 -0
  7. package/dist/components/DocTree.js +32 -0
  8. package/dist/components/Menu.d.ts +1 -0
  9. package/dist/components/Menu.js +107 -0
  10. package/dist/components/Popover.d.ts +14 -0
  11. package/dist/components/Popover.js +41 -0
  12. package/dist/components/RecycleList.d.ts +26 -0
  13. package/dist/components/RecycleList.js +39 -0
  14. package/dist/components/Render.d.ts +4 -0
  15. package/dist/components/Render.js +20 -0
  16. package/dist/components/Split.d.ts +15 -0
  17. package/dist/components/Split.js +76 -0
  18. package/dist/components/Tree.d.ts +37 -0
  19. package/dist/components/Tree.js +82 -0
  20. package/dist/components/utils.d.ts +3 -0
  21. package/dist/components/utils.js +8 -0
  22. package/dist/hooks/index.d.ts +40 -0
  23. package/dist/hooks/index.js +157 -0
  24. package/dist/hooks/useDir.d.ts +11 -0
  25. package/dist/hooks/useDir.js +42 -0
  26. package/dist/hooks/useSelector.d.ts +16 -0
  27. package/dist/hooks/useSelector.js +69 -0
  28. package/dist/hooks/useSort.d.ts +18 -0
  29. package/dist/hooks/useSort.js +83 -0
  30. package/dist/hooks/useVirtualizer.d.ts +30 -0
  31. package/dist/hooks/useVirtualizer.js +97 -0
  32. package/dist/index.d.ts +147 -0
  33. package/dist/index.js +386 -0
  34. package/dist/loading.js +6 -0
  35. package/dist/plugins/CellChangeHighlightPlugin.d.ts +2 -0
  36. package/dist/plugins/CellChangeHighlightPlugin.js +4 -0
  37. package/dist/plugins/CellMergePlugin.d.ts +45 -0
  38. package/dist/plugins/CellMergePlugin.js +78 -0
  39. package/dist/plugins/CellSelectionPlugin.d.ts +15 -0
  40. package/dist/plugins/CellSelectionPlugin.js +113 -0
  41. package/dist/plugins/CommandPlugin.d.ts +14 -0
  42. package/dist/plugins/CommandPlugin.js +31 -0
  43. package/dist/plugins/CopyPastePlugin.d.ts +14 -0
  44. package/dist/plugins/CopyPastePlugin.js +47 -0
  45. package/dist/plugins/DiffPlugin.d.ts +29 -0
  46. package/dist/plugins/DiffPlugin.js +66 -0
  47. package/dist/plugins/DragPlugin.d.ts +14 -0
  48. package/dist/plugins/DragPlugin.js +47 -0
  49. package/dist/plugins/EditablePlugin.d.ts +51 -0
  50. package/dist/plugins/EditablePlugin.js +177 -0
  51. package/dist/plugins/ExpandPlugin.d.ts +18 -0
  52. package/dist/plugins/ExpandPlugin.js +46 -0
  53. package/dist/plugins/HeaderGroup.d.ts +11 -0
  54. package/dist/plugins/HeaderGroup.js +171 -0
  55. package/dist/plugins/HistoryPlugin.d.ts +10 -0
  56. package/dist/plugins/HistoryPlugin.js +27 -0
  57. package/dist/plugins/MenuPlugin.d.ts +19 -0
  58. package/dist/plugins/MenuPlugin.js +132 -0
  59. package/dist/plugins/RenderPlugin/components.d.ts +5 -0
  60. package/dist/plugins/RenderPlugin/components.js +87 -0
  61. package/dist/plugins/RenderPlugin/index.d.ts +30 -0
  62. package/dist/plugins/RenderPlugin/index.js +49 -0
  63. package/dist/plugins/ResizePlugin.d.ts +27 -0
  64. package/dist/plugins/ResizePlugin.js +82 -0
  65. package/dist/plugins/RowGroupPlugin.d.ts +18 -0
  66. package/dist/plugins/RowGroupPlugin.js +88 -0
  67. package/dist/plugins/RowSelectionPlugin.d.ts +20 -0
  68. package/dist/plugins/RowSelectionPlugin.js +42 -0
  69. package/dist/plugins/TreePlugin.d.ts +24 -0
  70. package/dist/plugins/TreePlugin.js +110 -0
  71. package/dist/plugins/VirtualScrollPlugin.d.ts +15 -0
  72. package/dist/plugins/VirtualScrollPlugin.js +123 -0
  73. package/dist/plugins/ZodValidatorPlugin.d.ts +38 -0
  74. package/dist/plugins/ZodValidatorPlugin.js +12 -0
  75. package/dist/plus.js +6 -0
  76. package/dist/rolldown_runtime.js +9 -0
  77. package/dist/style.css +3 -0
  78. package/dist/theme/dark.scss +46 -0
  79. package/dist/theme/github.scss +80 -0
  80. package/dist/theme/material.scss +73 -0
  81. package/dist/theme/shadcn.scss +66 -0
  82. package/dist/theme/stripe.scss +57 -0
  83. package/dist/tree.d.ts +1 -0
  84. package/dist/tree.js +12 -0
  85. package/dist/types/auto-imports.d.js +0 -0
  86. package/dist/utils.d.ts +31 -0
  87. package/dist/utils.js +71 -0
  88. package/dist/wc.d.ts +1 -0
  89. package/dist/wc.js +21 -0
  90. package/dist/web-component.d.ts +1 -0
  91. package/dist/web-component.js +2 -0
  92. package/dist/x.js +6 -0
  93. package/package.json +38 -30
  94. package/docs/index-BaMALNy6.css +0 -1
  95. package/docs/index-CDN48t9E.js +0 -3
  96. package/docs/index-Cc4RNkLY.css +0 -1
  97. package/docs/index-MRnbkYmU.js +0 -3
  98. package/docs/index.html +0 -15
  99. package/docs/vite.svg +0 -1
  100. package/index.html +0 -14
  101. package/packages/intable/README.md +0 -379
  102. package/packages/intable/package.json +0 -51
  103. package/packages/intable/src/assets/ClearFormat.svg +0 -3
  104. package/packages/intable/src/assets/Forms.svg +0 -4
  105. package/packages/intable/src/assets/MergeCell.svg +0 -4
  106. package/packages/intable/src/assets/SplitCell.svg +0 -4
  107. package/packages/intable/src/assets/gap.svg +0 -3
  108. package/packages/intable/src/assets/loading.svg +0 -12
  109. package/packages/intable/src/assets/paint.svg +0 -9
  110. package/packages/intable/src/assets/solid.svg +0 -1
  111. package/packages/intable/src/components/Columns.tsx +0 -86
  112. package/packages/intable/src/components/DocTree.tsx +0 -36
  113. package/packages/intable/src/components/Menu.tsx +0 -109
  114. package/packages/intable/src/components/Popover.tsx +0 -55
  115. package/packages/intable/src/components/RecycleList.tsx +0 -99
  116. package/packages/intable/src/components/Render.tsx +0 -26
  117. package/packages/intable/src/components/Split.tsx +0 -56
  118. package/packages/intable/src/components/Tree.tsx +0 -115
  119. package/packages/intable/src/components/utils.tsx +0 -12
  120. package/packages/intable/src/hooks/index.ts +0 -200
  121. package/packages/intable/src/hooks/useDir.ts +0 -78
  122. package/packages/intable/src/hooks/useSelector.ts +0 -91
  123. package/packages/intable/src/hooks/useSort.tsx +0 -118
  124. package/packages/intable/src/hooks/useVirtualizer.ts +0 -180
  125. package/packages/intable/src/index.tsx +0 -481
  126. package/packages/intable/src/plugins/CellChangeHighlightPlugin.tsx +0 -5
  127. package/packages/intable/src/plugins/CellMergePlugin.tsx +0 -153
  128. package/packages/intable/src/plugins/CellSelectionPlugin.tsx +0 -175
  129. package/packages/intable/src/plugins/CommandPlugin.tsx +0 -74
  130. package/packages/intable/src/plugins/CopyPastePlugin.tsx +0 -63
  131. package/packages/intable/src/plugins/DiffPlugin.tsx +0 -107
  132. package/packages/intable/src/plugins/DragPlugin.tsx +0 -81
  133. package/packages/intable/src/plugins/EditablePlugin.tsx +0 -252
  134. package/packages/intable/src/plugins/ExpandPlugin.tsx +0 -80
  135. package/packages/intable/src/plugins/HeaderGroup.tsx +0 -289
  136. package/packages/intable/src/plugins/HistoryPlugin.tsx +0 -49
  137. package/packages/intable/src/plugins/MenuPlugin.tsx +0 -195
  138. package/packages/intable/src/plugins/RenderPlugin/components.tsx +0 -51
  139. package/packages/intable/src/plugins/RenderPlugin/index.tsx +0 -81
  140. package/packages/intable/src/plugins/ResizePlugin.tsx +0 -122
  141. package/packages/intable/src/plugins/RowGroupPlugin.tsx +0 -122
  142. package/packages/intable/src/plugins/RowSelectionPlugin.tsx +0 -65
  143. package/packages/intable/src/plugins/TreePlugin.tsx +0 -212
  144. package/packages/intable/src/plugins/VirtualScrollPlugin.tsx +0 -190
  145. package/packages/intable/src/plugins/ZodValidatorPlugin.tsx +0 -61
  146. package/packages/intable/src/style.scss +0 -244
  147. package/packages/intable/src/tree.ts +0 -13
  148. package/packages/intable/src/types/auto-imports.d.ts +0 -13
  149. package/packages/intable/src/utils.ts +0 -122
  150. package/packages/intable/src/wc.tsx +0 -35
  151. package/packages/intable/src/web-component.ts +0 -1
  152. package/packages/react/package.json +0 -31
  153. package/packages/react/src/index.ts +0 -44
  154. package/packages/react/src/plugins/antd.ts +0 -94
  155. package/packages/react/src/style.scss +0 -12
  156. package/packages/react/src/types/auto-imports.d.ts +0 -10
  157. package/packages/vue/package.json +0 -34
  158. package/packages/vue/src/index.ts +0 -63
  159. package/packages/vue/src/plugins/element-plus.ts +0 -69
  160. package/packages/vue/src/style.scss +0 -12
  161. package/packages/vue/src/types/auto-imports.d.ts +0 -10
  162. package/pnpm-workspace.yaml +0 -2
  163. package/public/vite.svg +0 -1
  164. package/scripts/build.js +0 -184
  165. package/scripts/publish.js +0 -95
  166. package/src/assets/ClearFormat.svg +0 -3
  167. package/src/assets/Forms.svg +0 -4
  168. package/src/assets/MergeCell.svg +0 -4
  169. package/src/assets/SplitCell.svg +0 -4
  170. package/src/assets/gap.svg +0 -3
  171. package/src/assets/loading.svg +0 -12
  172. package/src/assets/paint.svg +0 -9
  173. package/src/assets/solid.svg +0 -1
  174. package/src/demo-vue.ts +0 -54
  175. package/src/demo.tsx +0 -107
  176. package/src/index.scss +0 -105
  177. package/src/styles/index.scss +0 -172
  178. package/src/types/auto-imports.d.ts +0 -13
  179. package/stats.html +0 -4949
  180. package/tsconfig.app.json +0 -34
  181. package/tsconfig.json +0 -7
  182. package/tsconfig.node.json +0 -26
  183. package/vite.config.ts +0 -63
  184. /package/{packages/intable/src → dist}/theme/antd.scss +0 -0
  185. /package/{packages/intable/src → dist}/theme/element-plus.scss +0 -0
@@ -0,0 +1,73 @@
1
+ /**
2
+ * intable — Material Design 3 Theme
3
+ * Google Material You / M3 surface tones and typography
4
+ * Best for: Android-style web apps, admin panels, data management UIs
5
+ */
6
+
7
+ .data-table {
8
+ --bg: #fffbfe;
9
+ --c-primary: #6750a4;
10
+
11
+ --menu-bg: #ece6f0;
12
+ --li-hover-bg: rgba(103, 80, 164, 0.08);
13
+
14
+ --table-b: 1px solid var(--table-b-c);
15
+ --table-b-c: #cac4d0;
16
+ --table-c: #1c1b1f;
17
+ --table-bg: #fffbfe;
18
+
19
+ --table-header-c: #49454f;
20
+ --table-header-bg: #fffbfe;
21
+
22
+ --table-row-hover-bg: rgba(103, 80, 164, 0.08);
23
+
24
+ --select-area-bg: rgba(103, 80, 164, 0.12);
25
+
26
+ font-size: 14px;
27
+ font-family: 'Roboto', sans-serif;
28
+
29
+ th, td {
30
+ padding: 10px 16px;
31
+ line-height: 20px;
32
+ }
33
+
34
+ thead th {
35
+ font-size: 12px;
36
+ font-weight: 500;
37
+ letter-spacing: 0.02em;
38
+ }
39
+
40
+ tr:not(:last-child) td {
41
+ border-bottom: 1px solid var(--table-b-c);
42
+ }
43
+
44
+ &--small {
45
+ font-size: 12px;
46
+
47
+ th, td {
48
+ padding: 6px 12px;
49
+ }
50
+ }
51
+
52
+ // Dark variant (M3 dark)
53
+ &.dark, [data-theme="dark"] & {
54
+ --bg: #1c1b1f;
55
+ --c-primary: #d0bcff;
56
+
57
+ --menu-bg: #2b2930;
58
+ --li-hover-bg: rgba(208, 188, 255, 0.08);
59
+
60
+ --table-b-c: #49454f;
61
+ --table-c: #e6e1e5;
62
+ --table-bg: #1c1b1f;
63
+
64
+ --table-header-c: #cac4d0;
65
+ --table-header-bg: #1c1b1f;
66
+
67
+ --table-row-hover-bg: rgba(208, 188, 255, 0.08);
68
+
69
+ --select-area-bg: rgba(208, 188, 255, 0.12);
70
+
71
+ color-scheme: dark;
72
+ }
73
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * intable — Shadcn/Zinc Theme
3
+ * Neutral zinc/slate tones, clean minimal, matches shadcn/ui palette
4
+ * Best for: modern SaaS dashboards, admin panels, clean productivity tools
5
+ */
6
+
7
+ .data-table {
8
+ --bg: #ffffff;
9
+ --c-primary: #18181b;
10
+
11
+ --menu-bg: #ffffff;
12
+ --li-hover-bg: #f4f4f5;
13
+
14
+ --table-b: 1px solid var(--table-b-c);
15
+ --table-b-c: #e4e4e7;
16
+ --table-c: #09090b;
17
+ --table-bg: #ffffff;
18
+
19
+ --table-header-c: #71717a;
20
+ --table-header-bg: #ffffff;
21
+
22
+ --table-row-hover-bg: #fafafa;
23
+
24
+ --select-area-bg: #18181b14;
25
+
26
+ font-size: 14px;
27
+
28
+ th, td {
29
+ padding: 10px 12px;
30
+ line-height: 20px;
31
+ }
32
+
33
+ thead th {
34
+ font-weight: 500;
35
+ }
36
+
37
+ &--small {
38
+ font-size: 13px;
39
+
40
+ th, td {
41
+ padding: 6px 10px;
42
+ }
43
+ }
44
+
45
+ // Dark mode variant
46
+ &.dark, [data-theme="dark"] & {
47
+ --bg: #09090b;
48
+ --c-primary: #fafafa;
49
+
50
+ --menu-bg: #09090b;
51
+ --li-hover-bg: #27272a;
52
+
53
+ --table-b-c: #27272a;
54
+ --table-c: #fafafa;
55
+ --table-bg: #09090b;
56
+
57
+ --table-header-c: #71717a;
58
+ --table-header-bg: #09090b;
59
+
60
+ --table-row-hover-bg: #18181b;
61
+
62
+ --select-area-bg: #ffffff14;
63
+
64
+ color-scheme: dark;
65
+ }
66
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * intable — Stripe Theme
3
+ * Ultra-clean minimal white, tight spacing, strong typographic hierarchy
4
+ * Best for: fintech, e-commerce, financial dashboards, data-dense UIs
5
+ */
6
+
7
+ .data-table {
8
+ --bg: #ffffff;
9
+ --c-primary: #635bff;
10
+
11
+ --menu-bg: #ffffff;
12
+ --li-hover-bg: #f6f8fa;
13
+
14
+ --table-b: 1px solid var(--table-b-c);
15
+ --table-b-c: #e3e8ee;
16
+ --table-c: #0a2540;
17
+ --table-bg: #ffffff;
18
+
19
+ --table-header-c: #425466;
20
+ --table-header-bg: #f7fafc;
21
+
22
+ --table-row-hover-bg: #f7fafc;
23
+
24
+ --select-area-bg: #635bff1a;
25
+
26
+ font-size: 13.5px;
27
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
28
+
29
+ th, td {
30
+ padding: 9px 14px;
31
+ line-height: 20px;
32
+ }
33
+
34
+ thead th {
35
+ font-size: 11.5px;
36
+ font-weight: 600;
37
+ text-transform: uppercase;
38
+ letter-spacing: 0.04em;
39
+ color: var(--table-header-c);
40
+ }
41
+
42
+ &--small {
43
+ font-size: 12.5px;
44
+
45
+ th, td {
46
+ padding: 5px 10px;
47
+ }
48
+
49
+ thead th {
50
+ font-size: 11px;
51
+ }
52
+ }
53
+
54
+ .row-selection {
55
+ width: 38px;
56
+ }
57
+ }
package/dist/tree.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const findParent: (data: any[], cb: any, childrenField?: string) => any;
package/dist/tree.js ADDED
@@ -0,0 +1,12 @@
1
+ import { __export } from "./rolldown_runtime.js";
2
+ var tree_exports = /* @__PURE__ */ __export({ findParent: () => findParent });
3
+ const findParent = (e, t, n = "children") => {
4
+ let r = null, i = [...e];
5
+ for (; i.length;) {
6
+ let e = i.pop();
7
+ if (t(e)) return r;
8
+ Array.isArray(e[n]) && (i.push(...e[n]), r = e);
9
+ }
10
+ return null;
11
+ };
12
+ export { findParent, tree_exports };
File without changes
@@ -0,0 +1,31 @@
1
+ export * as tree from './tree';
2
+ export declare function file2base64(file: File): Promise<string>;
3
+ export declare function chooseFile(opts: {
4
+ accept?: string;
5
+ multiple?: false;
6
+ }): Promise<File>;
7
+ export declare function chooseFile(opts: {
8
+ accept?: string;
9
+ multiple: true;
10
+ }): Promise<File[]>;
11
+ export declare function chooseImage(): Promise<File>;
12
+ export declare function print(html: string): Promise<void>;
13
+ export declare function mergeRect(rect1: DOMRect, rect2: DOMRect): DOMRect;
14
+ export declare function getStyles(el?: ParentNode): string;
15
+ export declare const unFn: (fn: any, ...args: any[]) => any;
16
+ export declare const log: (...args: any[]) => any;
17
+ export declare const toArr: (v: any) => any[];
18
+ export declare const parseStyle: (s: any) => any;
19
+ export declare function findret<T, R>(arr: readonly T[], cb: (e: T, i: number) => R): R | undefined;
20
+ export declare function emptyObject(o: any): any;
21
+ export declare function findAsync<T>(arr: T[], cb: (e: T, i: number) => Promise<boolean> | boolean): Promise<T>;
22
+ type Fnable<T> = T | (() => T);
23
+ type Awatable<T> = T | Promise<T>;
24
+ type BaseType = string | number | boolean | null;
25
+ export declare function resolveOptions(opts: Fnable<Awatable<Record<string, any> | ({
26
+ label: any;
27
+ value: any;
28
+ } | BaseType)[]>>): {
29
+ label: any;
30
+ value: any;
31
+ }[];
package/dist/utils.js ADDED
@@ -0,0 +1,71 @@
1
+ import { tree_exports } from "./tree.js";
2
+ import { useMemoAsync } from "./hooks/index.js";
3
+ import { delay, isFunction, isPlainObject, isPromise } from "es-toolkit";
4
+ function file2base64(e) {
5
+ return new Promise((y, b) => {
6
+ let x = new FileReader();
7
+ x.readAsDataURL(e), x.onload = () => y(x.result);
8
+ });
9
+ }
10
+ function chooseFile(e) {
11
+ return new Promise((y, b) => {
12
+ let x = document.createElement("input");
13
+ x.type = "file", x.accept = e?.accept, x.multiple = e?.multiple, x.onchange = () => {
14
+ x.files && x.files.length > 0 && y(x.multiple ? [...x.files] : x.files[0]);
15
+ }, x.oncancel = b, x.click();
16
+ });
17
+ }
18
+ function chooseImage() {
19
+ return chooseFile({ accept: "image/*" });
20
+ }
21
+ async function print(e) {
22
+ let y = document.createElement("iframe");
23
+ y.srcdoc = `${[...document.querySelectorAll("style"), ...document.querySelectorAll("link[rel=\"stylesheet\"]")].map((e) => e.outerHTML).join("\n")}\n\n${e}`, Object.assign(y.style, {
24
+ position: "fixed",
25
+ display: "none"
26
+ }), document.body.append(y), await new Promise((e) => y.contentWindow.addEventListener("load", e, { once: !0 })), await delay(300), y.contentWindow.print(), y.remove();
27
+ }
28
+ function mergeRect(e, y) {
29
+ return DOMRect.fromRect({
30
+ x: Math.min(e.x, y.x),
31
+ y: Math.min(e.y, y.y),
32
+ width: Math.max(e.right, y.right) - Math.min(e.x, y.x),
33
+ height: Math.max(e.bottom, y.bottom) - Math.min(e.y, y.y)
34
+ });
35
+ }
36
+ function getStyles(e = document) {
37
+ return [...e.querySelectorAll("style"), ...e.querySelectorAll("link[rel=\"stylesheet\"]")].map((e) => e.outerHTML).join("\n");
38
+ }
39
+ const unFn = (e, ...y) => typeof e == "function" ? e(...y) : e, log = (...e) => (console.log(...e), e[0]), toArr = (e) => Array.isArray(e) ? e : e == null ? [] : [e], parseStyle = (e) => e ? e.split(";").reduce((e, y) => ((([y, b]) => e[y.trim()] = b.trim())(y.split(":")), e), {}) : {};
40
+ function findret(e, y) {
41
+ for (let b = 0; b < e.length; b++) {
42
+ let x = y(e[b], b);
43
+ if (x != null) return x;
44
+ }
45
+ }
46
+ function emptyObject(e) {
47
+ for (let y of Object.keys(e)) delete e[y];
48
+ return e;
49
+ }
50
+ async function findAsync(e, y) {
51
+ for (let b = 0; b < e.length; b++) if (await y(e[b], b)) return e[b];
52
+ }
53
+ var cache = /* @__PURE__ */ new WeakMap();
54
+ function resolveOptions(e) {
55
+ let b = e;
56
+ return isFunction(b) && (b = b()), isPromise(b) ? (cache.has(b) || cache.set(b, useMemoAsync(() => b.then((e) => e.map((e) => resolveOptions(e))))), cache.get(b)()) : (isPlainObject(b) && (b = Object.entries(b).map(([e, y]) => ({
57
+ value: e,
58
+ label: y,
59
+ ...y
60
+ }))), b?.map((e) => resolveOpt(e)) || []);
61
+ }
62
+ function resolveOpt(e) {
63
+ return isPlainObject(e) ? e : Array.isArray(e) ? {
64
+ label: e[0],
65
+ value: e[1]
66
+ } : {
67
+ label: e,
68
+ value: e
69
+ };
70
+ }
71
+ export { chooseFile, chooseImage, emptyObject, file2base64, findAsync, findret, getStyles, log, mergeRect, parseStyle, print, resolveOptions, toArr, tree_exports as tree, unFn };
package/dist/wc.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const TableElement: CustomElementConstructor;
package/dist/wc.js ADDED
@@ -0,0 +1,21 @@
1
+ import { useMemoState } from "./hooks/index.js";
2
+ import { Intable } from "./index.js";
3
+ import { createComponent } from "solid-js/web";
4
+ import { createEffect, createSignal } from "solid-js";
5
+ import { customElement, noShadowDOM } from "solid-element";
6
+ const TableElement = customElement("wc-table", {
7
+ options: {},
8
+ css: {
9
+ value: "",
10
+ attribute: "css",
11
+ notify: !0,
12
+ reflect: !1
13
+ },
14
+ theme: "",
15
+ noShadow: !0
16
+ }, (a, { element: o }) => {
17
+ a.noShadow && noShadowDOM();
18
+ let s = useMemoState(() => a.options);
19
+ return createComponent(Intable, s);
20
+ });
21
+ export { TableElement };
@@ -0,0 +1 @@
1
+ export * from './wc';
@@ -0,0 +1,2 @@
1
+ import { TableElement } from "./wc.js";
2
+ export { TableElement };
package/dist/x.js ADDED
@@ -0,0 +1,6 @@
1
+ import { spread, template } from "solid-js/web";
2
+ var _tmpl$ = /* @__PURE__ */ template("<svg viewBox=\"0 0 24 24\"width=1.2em height=1.2em><path fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 d=\"M18 6L6 18M6 6l12 12\">"), x_default = (n = {}) => (() => {
3
+ var r = _tmpl$();
4
+ return spread(r, n, !0, !0), r;
5
+ })();
6
+ export { x_default as default };
package/package.json CHANGED
@@ -1,43 +1,51 @@
1
1
  {
2
2
  "name": "intable",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
+ "license": "MIT",
4
5
  "type": "module",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "main": "./dist/index.js",
10
+ "module": "./dist/index.js",
11
+ "exports": {
12
+ ".": "./dist/index.js",
13
+ "./theme/*": "./dist/theme/*",
14
+ "./*": {
15
+ "import": "./dist/*.js",
16
+ "types": "./dist/*.d.ts"
17
+ }
18
+ },
5
19
  "dependencies": {
20
+ "@floating-ui/dom": "^1.7.4",
21
+ "@solid-primitives/bounds": "^0.1.3",
22
+ "@solid-primitives/deep": "^0.3.3",
23
+ "@solid-primitives/event-listener": "^2.4.3",
24
+ "@solid-primitives/history": "^0.2.2",
25
+ "@solid-primitives/keyboard": "^1.3.3",
26
+ "@solid-primitives/media": "^2.3.3",
27
+ "@solid-primitives/memo": "^1.4.3",
28
+ "@solid-primitives/mutation-observer": "^1.2.2",
29
+ "@solid-primitives/pointer": "^0.3.3",
30
+ "@solid-primitives/props": "^3.2.2",
31
+ "@solid-primitives/resize-observer": "^2.1.3",
32
+ "@solid-primitives/scroll": "^2.1.3",
33
+ "@solid-primitives/storage": "^4.3.3",
34
+ "@solid-primitives/utils": "^6.3.2",
35
+ "@tanstack/solid-virtual": "^3.13.12",
6
36
  "es-toolkit": "^1.39.10",
37
+ "floating-ui-solid": "^1.0.63",
38
+ "solid-element": "^1.9.1",
7
39
  "solid-js": "^1.9.9",
8
- "@intable/vue": "^0.0.7",
9
- "intable": "^0.0.7"
10
- },
11
- "devDependencies": {
12
- "@babel/plugin-syntax-typescript": "^7.27.1",
13
- "@iconify-json/lucide": "^1.2.63",
14
- "@iconify-json/solar": "^1.2.4",
15
- "@iconify-json/vscode-icons": "^1.2.29",
16
- "@types/node": "^25.0.8",
17
- "@unocss/transformer-directives": "^66.4.2",
18
- "babel-plugin-solid-undestructure": "^1.1.0",
19
- "rollup-plugin-visualizer": "^6.0.3",
20
- "sass": "^1.90.0",
21
- "tinyglobby": "^0.2.15",
22
- "typescript": "~5.8.3",
23
- "undestructure-macros": "^0.0.1",
24
- "unocss": "^66.4.2",
25
- "unplugin-auto-import": "^19.3.0",
26
- "unplugin-icons": "^22.2.0",
27
- "vite": "npm:rolldown-vite@7.1.12",
28
- "vite-plugin-lib-inject-css": "^2.2.2",
29
- "vite-plugin-solid": "^2.11.8",
30
- "vue": "^3.5.24"
40
+ "tinykeys": "^3.0.0",
41
+ "uuid": "^13.0.0",
42
+ "zod": "^4.3.6"
31
43
  },
32
44
  "publishConfig": {
33
45
  "access": "public",
34
46
  "registry": "https://registry.npmjs.org/"
35
47
  },
36
- "scripts": {
37
- "dev": "vite",
38
- "build": "vite build",
39
- "build:lib": "node scripts/build.js",
40
- "publish:lib": "pnpm build:lib && node scripts/publish.js",
41
- "preview": "vite preview"
48
+ "devDependencies": {
49
+ "diff": "^8.0.2"
42
50
  }
43
51
  }
@@ -1 +0,0 @@
1
- @supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--un-bg-opacity:100%;--un-content:"";--un-translate-x:initial;--un-translate-y:initial;--un-translate-z:initial;--un-text-opacity:100%;--un-border-opacity:100%;--un-space-y-reverse:initial;--un-space-x-reverse:initial;--un-outline-style:solid;--un-outline-opacity:100%;--un-leading:initial}}@property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-leading{syntax:"*";inherits:false}@property --un-bg-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}@property --un-translate-x{syntax:"*";inherits:false;initial-value:0}@property --un-translate-y{syntax:"*";inherits:false;initial-value:0}@property --un-translate-z{syntax:"*";inherits:false;initial-value:0}:root,:host{--spacing:.25rem;--colors-gray-DEFAULT:#99a1af;--text-sm-fontSize:.875rem;--text-sm-lineHeight:1.25rem;--radius-sm:.25rem;--colors-red-DEFAULT:#ff6568;--font-sans:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-monoFont-family:var(--font-mono)}@supports (color:lab(0% 0 0)){:root,:host{--colors-gray-DEFAULT:lab(65.9269% -.832707 -8.17474);--colors-red-DEFAULT:lab(63.7053% 60.7449 31.3109)}}*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-featureSettings,normal);font-variation-settings:var(--default-font-variationSettings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-monoFont-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-monoFont-featureSettings,normal);font-variation-settings:var(--default-monoFont-variationSettings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden~=until-found])){display:none!important}.aic{align-items:center}.text-3\.5{font-size:.875rem}.c-red{color:color-mix(in srgb,var(--colors-red-DEFAULT)var(--un-text-opacity),transparent)}.lh-\[1\]{--un-leading:1;line-height:1}.m-10{margin:40px}.m9{margin:36px}.mx-1{margin-inline:4px}.my-1{margin-block:4px}.ml-\.5{margin-left:2px}.ml-1{margin-left:4px}.mr--1{margin-right:-4px}.mr-1{margin-right:4px}.mr-2\.5{margin-right:10px}.p-1{padding:4px}.p-2{padding:8px}.px,.px-4{padding-inline:16px}.px-2{padding-inline:8px}.py-1{padding-block:4px}.py-2{padding-block:8px}.pl-1{padding-left:4px}.pr-4{padding-right:16px}.b,.border{border-width:1px}.rd-2{border-radius:.5rem}.rd-sm{border-radius:var(--radius-sm)}.bg-gray\/20{background-color:color-mix(in srgb,var(--colors-gray-DEFAULT)20%,transparent)}.op-75{opacity:.75}.op40{opacity:.4}.flex{display:flex}.flex-shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.gap-2{gap:8px}.size-4\!{width:16px!important;height:16px!important}.h-1\!{height:4px!important}.h-40vh{height:40vh}.h-full{height:100%}.max-h-100{max-height:400px}.w-10px\!{width:10px!important}.w-50vw\!{width:50vw!important}.after\:h-1:after{height:4px}.after\:w-1:after{width:4px}.inline{display:inline}.cursor-s-resize{cursor:s-resize}.cursor-w-resize{cursor:w-resize}.resize{resize:both}.select-none{-webkit-user-select:none;user-select:none}.translate-x-1\/2{--un-translate-x:50%;translate:var(--un-translate-x)var(--un-translate-y)}.transform{transform:var(--un-rotate-x)var(--un-rotate-y)var(--un-rotate-z)var(--un-skew-x)var(--un-skew-y)}.items-center{align-items:center}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.justify-end\!{justify-content:flex-end!important}.justify-center{justify-content:center}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.z-1{z-index:1}.overflow-auto{overflow:auto}.table{display:table}.table-cell{display:table-cell}@supports (color:color-mix(in lab, red, red)){.c-red{color:color-mix(in oklab,var(--colors-red-DEFAULT)var(--un-text-opacity),transparent)}.bg-gray\/20{background-color:color-mix(in oklab,var(--colors-gray-DEFAULT)20%,transparent)}}.data-table{--bg:#fff;--c-primary:#51a2ff;--menu-bg:#fff;--li-hover-bg:#99a1af33;--table-b:1px solid var(--table-b-c);--table-b-c:#ebeef5;--table-c:#606266;--table-bg:#fff;--table-header-c:#909399;--table-header-bg:var(--table-bg);--table-row-hover-bg:#f5f7fa;--select-area-bg:#5292f71a;color:color-mix(in oklab,var(--table-c)var(--un-text-opacity),transparent);border-color:color-mix(in oklab,var(--table-b-c)var(--un-border-opacity),transparent);font-size:14px;position:relative}@property --un-border-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}.data-table--table{color:color-mix(in oklab,var(--table-c)var(--un-text-opacity),transparent);outline-style:var(--un-outline-style);border-collapse:collapse;table-layout:fixed;border-collapse:separate;border-spacing:0;border-width:0;outline-width:0;width:max-content}@property --un-outline-style{syntax:"*";inherits:false;initial-value:solid}.data-table thead{color:color-mix(in oklab,var(--table-header-c)var(--un-text-opacity),transparent)}.data-table tr:hover>td{background-color:color-mix(in oklab,var(--table-row-hover-bg)var(--un-bg-opacity),transparent)}.data-table th{background-color:color-mix(in oklab,var(--table-header-bg)var(--un-bg-opacity),transparent)}.data-table td{background-color:color-mix(in oklab,var(--table-bg)var(--un-bg-opacity),transparent)}.data-table td,.data-table th{vertical-align:middle;outline-style:var(--un-outline-style);border-width:0;border-color:color-mix(in oklab,var(--table-b-c)var(--un-border-opacity),transparent);--un-border-style:solid;box-sizing:border-box;text-align:inherit;background-image:linear-gradient(var(--table-b-c),var(--table-b-c));background-position:100% 100%,100% 0;background-repeat:no-repeat;background-size:100% 1px,1px 100%;border-style:solid;outline-width:0;padding-block:2px;padding-inline:8px}.data-table td:empty:after{content:"ㅤ"!important}.data-table--border{border-width:1px}.data-table--border th,.data-table--border td{background-image:linear-gradient(var(--table-b-c),var(--table-b-c)),linear-gradient(var(--table-b-c),var(--table-b-c))}.data-table--scroll-view{overflow:auto}.data-table__layers{pointer-events:none;z-index:1;position:absolute;top:0;left:0}.data-table__layers>*{position:absolute}.range-selected{position:relative}.range-selected>.area{border-width:0;border-color:color-mix(in oklab,var(--c-primary)var(--un-border-opacity),transparent);--un-border-style:solid;background-color:color-mix(in oklab,var(--select-area-bg)var(--un-bg-opacity),transparent);pointer-events:none;border-style:solid;position:absolute;inset:0}.range-selected-l>.area{border-left-width:1.5px}.range-selected-r>.area{border-right-width:1.5px}.range-selected-t>.area{border-top-width:1.5px}.range-selected-b>.area{border-bottom-width:1.5px}.row-range-highlight,.col-range-highlight{position:relative}.row-range-highlight>.area,.col-range-highlight>.area{border-width:0;border-color:color-mix(in oklab,var(--c-primary)var(--un-border-opacity),transparent);--un-border-style:solid;background-color:color-mix(in oklab,var(--c-primary)10%,transparent);pointer-events:none;border-style:solid;position:absolute;inset:0}.row-range-highlight.index>.area{border-right-width:1px}.col-range-highlight>.area{border-bottom-width:1px}.sticky-header{background-color:color-mix(in oklab,#fff var(--un-bg-opacity),transparent);z-index:9;position:sticky;top:0}.sticky-header:after{pointer-events:none;--un-content:"";content:var(--un-content);width:100%;height:10px;position:absolute;top:100%;box-shadow:inset 0 10px 10px -10px #00000026}@property --un-content{syntax:"*";inherits:false;initial-value:""}.fixed-left,.fixed-right{background-color:color-mix(in oklab,#fff var(--un-bg-opacity),transparent);z-index:1;position:sticky!important}.fixed-left:after,.fixed-right:after{pointer-events:none;--un-content:"";content:var(--un-content);width:10px;height:100%;position:absolute;top:0}.is-scroll-right .fixed-left:after,.is-scroll-mid .fixed-left:after{left:100%;box-shadow:inset 10px 0 10px -10px #00000026}.is-scroll-left .fixed-right:after,.is-scroll-mid .fixed-right:after{right:100%;box-shadow:inset -10px 0 10px -10px #00000026}.copied .range-selected:before{border-style:dashed}.data-table.virtual{width:fit-content;display:block;overflow:auto}.data-table.virtual thead{width:fit-content;display:block}.data-table.virtual thead>tr{display:flex}.data-table.virtual thead>tr>th{flex:none;display:block}.data-table.virtual tbody{width:fit-content;display:block}.data-table.virtual tbody>tr{display:flex}.data-table.virtual tbody>tr>td{flex:none;display:block}.row-selection{width:40px;position:relative}.row-selection>label{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}.icon-clickable{box-sizing:border-box;border-radius:.25rem;justify-content:center;align-items:center;width:20px;height:20px;padding:2px;display:flex}.icon-clickable:hover{background-color:color-mix(in srgb,var(--colors-gray-DEFAULT)30%,transparent)}@supports (color:color-mix(in lab, red, red)){.icon-clickable:hover{background-color:color-mix(in oklab,var(--colors-gray-DEFAULT)30%,transparent)}}.icon-clickable>svg{width:100%;height:100%}input[type=checkbox].you-checkbox{color:color-mix(in oklab,#2196f3 var(--un-text-opacity),transparent);appearance:none;outline-offset:0px;--un-border-style:solid;border:2px solid;border-radius:.25rem;width:16px;height:16px;margin:4px;position:relative}input[type=checkbox].you-checkbox:focus{outline-style:var(--un-outline-style);--un-outline-style:solid;outline:4px solid oklab(65.8156% -.0610626 -.157539/.4)}@property --un-outline-opacity{syntax:"<percentage>";inherits:false;initial-value:100%}input[type=checkbox].you-checkbox:checked{background-color:currentColor}input[type=checkbox].you-checkbox.checked:after{color:color-mix(in oklab,#fff var(--un-text-opacity),transparent);--un-content:"✓";content:var(--un-content);--un-translate-x:-50%;--un-translate-y:-50%;translate:var(--un-translate-x)var(--un-translate-y);z-index:1;font-size:.75rem;position:absolute;top:50%;left:50%}.in-cell-edit-wrapper{z-index:1;position:absolute;inset:0;box-shadow:0 0 10px -2px #00000050}.in-cell__resize-handle{width:100%;height:100%;position:absolute}.in-cell__resize-handle:hover:after{background-color:color-mix(in oklab,var(--c-primary)40%,transparent)}.in-cell__resize-handle:active:after{background-color:color-mix(in oklab,var(--c-primary)var(--un-bg-opacity),transparent)}.in-cell__resize-handle:after{--un-content:"";content:var(--un-content)}.li{cursor:pointer;position:relative}.li:hover,.li.hover{background-color:color-mix(in oklab,var(--li-hover-bg)var(--un-bg-opacity),transparent)}.li:active:before,.li.selected:before,.li.active:before{content:"";border-radius:inherit;background-color:color-mix(in srgb,var(--colors-gray-DEFAULT)15%,transparent);position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){.li:active:before,.li.selected:before,.li.active:before{background-color:color-mix(in oklab,var(--colors-gray-DEFAULT)15%,transparent)}}.li.disabled,.li[disabled]{opacity:.4}.tt-menu{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight));border-width:1px;border-color:color-mix(in srgb,var(--colors-gray-DEFAULT)30%,transparent);--un-border-style:solid;background-color:color-mix(in oklab,var(--menu-bg)var(--un-bg-opacity),transparent);cursor:default;--un-shadow:0 10px 15px -3px var(--un-shadow-color,#0000001a),0 4px 6px -4px var(--un-shadow-color,#0000001a);box-shadow:var(--un-inset-shadow),var(--un-inset-ring-shadow),var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow);border-style:solid;border-radius:.5rem;padding-block:4px}@supports (color:color-mix(in lab, red, red)){.tt-menu{border-color:color-mix(in oklab,var(--colors-gray-DEFAULT)30%,transparent)}}@property --un-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-shadow-color{syntax:"*";inherits:false}@property --un-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-shadow-color{syntax:"*";inherits:false}@property --un-ring-color{syntax:"*";inherits:false}@property --un-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-inset-ring-color{syntax:"*";inherits:false}@property --un-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --un-ring-inset{syntax:"*";inherits:false}@property --un-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --un-ring-offset-color{syntax:"*";inherits:false}@property --un-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}:where(.tt-menu>:not(:last-child)){--un-space-y-reverse:0;margin-block-start:calc(calc(4px*.5)*var(--un-space-y-reverse));margin-block-end:calc(calc(4px*.5)*calc(1 - var(--un-space-y-reverse)))}@property --un-space-y-reverse{syntax:"*";inherits:false;initial-value:0}.tt-menu-x{font-size:var(--text-sm-fontSize);line-height:var(--un-leading,var(--text-sm-lineHeight));border-width:1px;border-color:color-mix(in srgb,var(--colors-gray-DEFAULT)30%,transparent);--un-border-style:solid;background-color:color-mix(in oklab,var(--menu-bg)var(--un-bg-opacity),transparent);cursor:default;--un-shadow:0 10px 15px -3px var(--un-shadow-color,#0000001a),0 4px 6px -4px var(--un-shadow-color,#0000001a);box-shadow:var(--un-inset-shadow),var(--un-inset-ring-shadow),var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow);border-style:solid;border-radius:.5rem;padding-inline:4px}@supports (color:color-mix(in lab, red, red)){.tt-menu-x{border-color:color-mix(in oklab,var(--colors-gray-DEFAULT)30%,transparent)}}:where(.tt-menu-x>:not(:last-child)){--un-space-x-reverse:0;margin-inline-start:calc(calc(4px*.5)*var(--un-space-x-reverse));margin-inline-end:calc(calc(4px*.5)*calc(1 - var(--un-space-x-reverse)))}@property --un-space-x-reverse{syntax:"*";inherits:false;initial-value:0}.tt-menu-x>.hr{background-color:color-mix(in srgb,var(--colors-gray-DEFAULT)30%,transparent);width:1px;margin-block:6px}@supports (color:color-mix(in lab, red, red)){.tt-menu-x>.hr{background-color:color-mix(in oklab,var(--colors-gray-DEFAULT)30%,transparent)}}.col__guide-line,.row__guide-line{background-color:color-mix(in oklab,var(--c-primary)var(--un-bg-opacity),transparent);pointer-events:none;z-index:9;position:fixed;top:0;left:0}th[draggable=true],td[draggable=true]{cursor:move}