@gradio/dataframe 0.18.7 → 0.19.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.
Files changed (74) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/Example.svelte +8 -8
  3. package/Index.svelte +1 -1
  4. package/README.md +232 -37
  5. package/dist/Example.svelte +8 -8
  6. package/dist/Example.svelte.d.ts +3 -1
  7. package/dist/Index.svelte.d.ts +20 -18
  8. package/dist/shared/BooleanCell.svelte +1 -2
  9. package/dist/shared/BooleanCell.svelte.d.ts +4 -2
  10. package/dist/shared/CellMenu.svelte +4 -8
  11. package/dist/shared/CellMenu.svelte.d.ts +11 -9
  12. package/dist/shared/CellMenuButton.svelte.d.ts +2 -0
  13. package/dist/shared/CellMenuIcons.svelte.d.ts +2 -0
  14. package/dist/shared/EditableCell.svelte +6 -12
  15. package/dist/shared/EditableCell.svelte.d.ts +17 -15
  16. package/dist/shared/EmptyRowButton.svelte.d.ts +2 -0
  17. package/dist/shared/Example.svelte.d.ts +2 -0
  18. package/dist/shared/FilterMenu.svelte +2 -4
  19. package/dist/shared/FilterMenu.svelte.d.ts +3 -1
  20. package/dist/shared/RowNumber.svelte.d.ts +4 -2
  21. package/dist/shared/Table.svelte +127 -157
  22. package/dist/shared/Table.svelte.d.ts +24 -22
  23. package/dist/shared/TableCell.svelte +7 -13
  24. package/dist/shared/TableCell.svelte.d.ts +6 -4
  25. package/dist/shared/TableHeader.svelte +5 -10
  26. package/dist/shared/TableHeader.svelte.d.ts +4 -2
  27. package/dist/shared/Toolbar.svelte +3 -4
  28. package/dist/shared/Toolbar.svelte.d.ts +7 -5
  29. package/dist/shared/VirtualTable.svelte +19 -16
  30. package/dist/shared/VirtualTable.svelte.d.ts +9 -6
  31. package/dist/shared/context/dataframe_context.d.ts +1 -1
  32. package/dist/shared/context/dataframe_context.js +1 -1
  33. package/dist/shared/icons/FilterIcon.svelte.d.ts +3 -3
  34. package/dist/shared/icons/Padlock.svelte.d.ts +2 -0
  35. package/dist/shared/icons/SelectionButtons.svelte +2 -4
  36. package/dist/shared/icons/SelectionButtons.svelte.d.ts +3 -1
  37. package/dist/shared/icons/SortArrowDown.svelte.d.ts +3 -1
  38. package/dist/shared/icons/SortArrowUp.svelte.d.ts +3 -1
  39. package/dist/shared/icons/SortButtonDown.svelte.d.ts +2 -0
  40. package/dist/shared/icons/SortButtonUp.svelte.d.ts +2 -0
  41. package/dist/shared/icons/SortIcon.svelte.d.ts +4 -2
  42. package/dist/shared/utils/data_processing.d.ts +1 -1
  43. package/dist/shared/utils/drag_utils.js +1 -1
  44. package/dist/shared/utils/keyboard_utils.js +5 -3
  45. package/dist/shared/{selection_utils.d.ts → utils/selection_utils.d.ts} +1 -1
  46. package/dist/shared/{utils.d.ts → utils/utils.d.ts} +2 -2
  47. package/dist/standalone/Index.svelte +660 -0
  48. package/dist/standalone/Index.svelte.d.ts +45 -0
  49. package/dist/standalone/default_i18n.d.ts +1 -0
  50. package/dist/standalone/default_i18n.js +32 -0
  51. package/dist/standalone/stubs/Upload.svelte +18 -0
  52. package/dist/standalone/stubs/Upload.svelte.d.ts +27 -0
  53. package/dist/standalone/stubs/upload.d.ts +1 -0
  54. package/dist/standalone/stubs/upload.js +1 -0
  55. package/package.json +11 -14
  56. package/shared/CellMenu.svelte +1 -1
  57. package/shared/FilterMenu.svelte +1 -2
  58. package/shared/Table.svelte +9 -7
  59. package/shared/TableCell.svelte +2 -2
  60. package/shared/Toolbar.svelte +1 -0
  61. package/shared/VirtualTable.svelte +11 -2
  62. package/shared/context/dataframe_context.ts +1 -1
  63. package/shared/utils/data_processing.ts +1 -1
  64. package/shared/utils/drag_utils.ts +1 -1
  65. package/shared/utils/keyboard_utils.ts +5 -5
  66. package/shared/{selection_utils.ts → utils/selection_utils.ts} +1 -1
  67. package/shared/{utils.ts → utils/utils.ts} +11 -2
  68. package/standalone/Index.svelte +688 -0
  69. package/standalone/default_i18n.ts +32 -0
  70. package/standalone/stubs/Upload.svelte +19 -0
  71. package/standalone/stubs/upload.ts +1 -0
  72. package/test/table_utils.test.ts +1 -1
  73. /package/dist/shared/{selection_utils.js → utils/selection_utils.js} +0 -0
  74. /package/dist/shared/{utils.js → utils/utils.js} +0 -0
@@ -0,0 +1,688 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import Table from "../shared/Table.svelte";
4
+ import type { Datatype, DataframeValue } from "../shared/utils/utils";
5
+ import type { I18nFormatter } from "@gradio/utils";
6
+ import { default_i18n } from "./default_i18n";
7
+
8
+ export let i18n: I18nFormatter | undefined = undefined;
9
+ const i18n_fn = (key: string | null | undefined): string => {
10
+ if (!key) return "";
11
+ if (typeof i18n === "function") return (i18n as any)(key);
12
+ if (i18n && typeof i18n === "object")
13
+ return (i18n as any)[key] ?? default_i18n[key] ?? key;
14
+ return default_i18n[key] ?? key;
15
+ };
16
+
17
+ export let value: DataframeValue = {
18
+ data: [["", "", ""]],
19
+ headers: ["1", "2", "3"],
20
+ metadata: null
21
+ };
22
+ export let datatype: Datatype | Datatype[] = "str";
23
+ export let editable = true;
24
+ export let show_row_numbers = false;
25
+ export let max_height = 500;
26
+ export let show_search: "none" | "search" | "filter" = "none";
27
+ export let show_copy_button = false;
28
+ export let show_fullscreen_button = false;
29
+ export let wrap = false;
30
+ export let line_breaks = true;
31
+ export let column_widths: string[] = [];
32
+ export let max_chars: number | undefined = undefined;
33
+ export let pinned_columns = 0;
34
+ export let static_columns: (string | number)[] = [];
35
+ export let fullscreen = false;
36
+ export let label: string | null = null;
37
+ export let show_label = true;
38
+ export let latex_delimiters: any[] = [];
39
+ export let col_count: [number, "fixed" | "dynamic"] | undefined = undefined;
40
+ export let row_count: [number, "fixed" | "dynamic"] | undefined = undefined;
41
+
42
+ // mirrors default row count and column count logic in dataframe.py
43
+ $: resolved_row_count = (() => {
44
+ if (
45
+ row_count &&
46
+ Array.isArray(row_count) &&
47
+ row_count.length === 2 &&
48
+ typeof row_count[0] === "number" &&
49
+ (row_count[1] === "fixed" || row_count[1] === "dynamic")
50
+ ) {
51
+ return row_count as [number, "fixed" | "dynamic"];
52
+ }
53
+ return [1, "dynamic"] as [number, "fixed" | "dynamic"];
54
+ })();
55
+ $: resolved_col_count = (() => {
56
+ if (
57
+ col_count &&
58
+ Array.isArray(col_count) &&
59
+ col_count.length === 2 &&
60
+ typeof col_count[0] === "number" &&
61
+ (col_count[1] === "fixed" || col_count[1] === "dynamic")
62
+ ) {
63
+ return col_count as [number, "fixed" | "dynamic"];
64
+ }
65
+ const headerLength =
66
+ value && value.headers && typeof value.headers.length === "number"
67
+ ? value.headers.length
68
+ : 3;
69
+ return [headerLength, "dynamic"] as [number, "fixed" | "dynamic"];
70
+ })();
71
+ $: if (
72
+ static_columns &&
73
+ static_columns.length > 0 &&
74
+ resolved_col_count[1] !== "fixed"
75
+ ) {
76
+ resolved_col_count = [resolved_col_count[0], "fixed"];
77
+ }
78
+
79
+ let root = "";
80
+
81
+ onMount(() => {
82
+ const handler = (e: KeyboardEvent): void => {
83
+ if (e.key === "Escape") {
84
+ fullscreen = false;
85
+ }
86
+ };
87
+ window.addEventListener("keydown", handler);
88
+ return () => window.removeEventListener("keydown", handler);
89
+ });
90
+ </script>
91
+
92
+ <div class="gradio-dataframe-standalone" class:fullscreen>
93
+ <Table
94
+ values={value.data}
95
+ headers={value.headers}
96
+ display_value={value?.metadata?.display_value}
97
+ styling={value?.metadata?.styling}
98
+ {datatype}
99
+ {editable}
100
+ {show_row_numbers}
101
+ {max_height}
102
+ {show_search}
103
+ {show_copy_button}
104
+ {show_fullscreen_button}
105
+ {wrap}
106
+ {line_breaks}
107
+ {column_widths}
108
+ {max_chars}
109
+ {pinned_columns}
110
+ {static_columns}
111
+ {fullscreen}
112
+ {label}
113
+ {show_label}
114
+ {latex_delimiters}
115
+ col_count={resolved_col_count}
116
+ row_count={resolved_row_count}
117
+ {root}
118
+ i18n={i18n_fn}
119
+ on:change={(e) => {
120
+ value.data = e.detail.data;
121
+ value.headers = e.detail.headers;
122
+ }}
123
+ on:blur
124
+ on:keydown
125
+ on:input
126
+ on:select
127
+ on:fullscreen={(e) => (fullscreen = e.detail)}
128
+ upload={async () => null}
129
+ stream_handler={() => new EventSource("about:blank")}
130
+ />
131
+ </div>
132
+
133
+ <style>
134
+ .gradio-dataframe-standalone {
135
+ --gr-df-font-mono: unset;
136
+ --gr-df-font-sans: unset;
137
+ --gr-df-table-bg-even: unset;
138
+ --gr-df-table-bg-odd: unset;
139
+ --gr-df-table-border: unset;
140
+ --gr-df-table-radius: unset;
141
+
142
+ --gr-df-table-text: unset;
143
+ --gr-df-accent: unset;
144
+ --gr-df-accent-soft: unset;
145
+
146
+ --gr-df-input-background-fill: unset;
147
+ --gr-df-input-background-fill-focus: unset;
148
+ --gr-df-input-background-fill-hover: unset;
149
+ --gr-df-input-border-color: unset;
150
+ --gr-df-input-border-color-focus: unset;
151
+ --gr-df-input-placeholder-color: unset;
152
+ --gr-df-input-radius: unset;
153
+ --gr-df-input-text-size: unset;
154
+ --gr-df-copied-cell-color: unset;
155
+
156
+ --gr-df-checkbox-border-color: unset;
157
+ --gr-df-checkbox-background-color: unset;
158
+ --gr-df-checkbox-border-color-focus: unset;
159
+ --gr-df-checkbox-shadow: unset;
160
+ --gr-df-checkbox-border-radius: unset;
161
+
162
+ /* Dataframe-scoped defaults (only used as fallbacks) */
163
+ --df-font-mono: var(
164
+ --gr-df-font-mono,
165
+ "IBM Plex Mono",
166
+ ui-monospace,
167
+ Consolas,
168
+ monospace
169
+ );
170
+ --df-font-sans: var(
171
+ --gr-df-font-sans,
172
+ "Source Sans Pro",
173
+ ui-sans-serif,
174
+ system-ui,
175
+ sans-serif
176
+ );
177
+ --df-table-radius: var(--df-radius-sm, 4px);
178
+ --df-border-color-primary: var(--gr-df-table-border, var(--df-neutral-200));
179
+ --df-background-fill-primary: #ffffff;
180
+ --df-background-fill-secondary: #f8fafc;
181
+ --df-color-accent: #7c3aed;
182
+ --df-color-accent-soft: #f3e8ff;
183
+ --df-color-accent-copied: #faf5ff;
184
+ --df-body-text-color: #111827;
185
+ --df-block-background-fill: #ffffff;
186
+ --df-block-radius: var(--df-radius-sm, 4px);
187
+ --df-table-even-background-fill: #ffffff;
188
+ --df-table-odd-background-fill: #f9fafb;
189
+ --df-radius-sm: 4px;
190
+ --df-size-1: 4px;
191
+ --df-size-2: 8px;
192
+ --df-size-4: 16px;
193
+ --df-size-6: 24px;
194
+ --df-size-8: 32px;
195
+ --df-size-12: 48px;
196
+ --df-size-3: 12px;
197
+ --df-size-5: 20px;
198
+ --df-size-7: 28px;
199
+ --df-size-9: 36px;
200
+ --df-size-10: 40px;
201
+ --df-size-11: 44px;
202
+ --df-size-14: 56px;
203
+ --df-size-px: 1px;
204
+ --df-size-full: 100%;
205
+ --df-text-sm: 12px;
206
+ --df-size-0-5: 2px;
207
+ --df-size-1-5: 6px;
208
+ --df-size-2-5: 10px;
209
+ --df-text-md: 14px;
210
+ --df-text-lg: 16px;
211
+ --df-radius-100: 100%;
212
+ --df-radius-xs: 2px;
213
+ --df-radius-sm: 4px;
214
+ --df-radius-md: 6px;
215
+ --df-radius-lg: 8px;
216
+ --df-radius-xl: 12px;
217
+ --df-radius-2xl: 16px;
218
+ --df-radius-3xl: 22px;
219
+ --df-input-text-size: var(--df-text-md, 14px);
220
+
221
+ --df-primary-50: #fff7ed;
222
+ --df-primary-100: #ffedd5;
223
+ --df-primary-200: #fed7aa;
224
+ --df-primary-300: #fdba74;
225
+ --df-primary-400: #fb923c;
226
+ --df-primary-500: #f97316;
227
+ --df-primary-600: #ea580c;
228
+
229
+ --df-neutral-50: #fafafa;
230
+ --df-neutral-100: #f4f4f5;
231
+ --df-neutral-200: #e4e4e7;
232
+ --df-neutral-300: #d4d4d8;
233
+ --df-neutral-400: #bbbbc2;
234
+ --df-neutral-500: #71717a;
235
+ --df-neutral-600: #52525b;
236
+ --df-neutral-700: #3f3f46;
237
+ --df-neutral-800: #27272a;
238
+ --df-neutral-900: #18181b;
239
+ --df-neutral-950: #0f0f11;
240
+
241
+ /* Secondary palette (scoped) */
242
+ --df-secondary-50: #eff6ff;
243
+ --df-secondary-100: #dbeafe;
244
+ --df-secondary-200: #bfdbfe;
245
+ --df-secondary-300: #93c5fd;
246
+ --df-secondary-400: #60a5fa;
247
+ --df-secondary-500: #3b82f6;
248
+
249
+ --neutral-50: var(--df-neutral-50, #f9fafb);
250
+ --neutral-100: var(--df-neutral-100, #f3f4f6);
251
+ --neutral-200: var(--df-neutral-200, #e5e7eb);
252
+ --neutral-300: var(--df-neutral-300, #d1d5db);
253
+ --neutral-400: var(--df-neutral-400, #9ca3af);
254
+ --neutral-500: var(--df-neutral-500, #6b7280);
255
+ --neutral-600: var(--df-neutral-600, #4b5563);
256
+ --neutral-700: var(--df-neutral-700, #374151);
257
+ --neutral-800: var(--df-neutral-800, #1f2937);
258
+ --neutral-900: var(--df-neutral-900, #111827);
259
+ --neutral-950: var(--df-neutral-950, #0b0f19);
260
+
261
+ --secondary-50: var(--df-secondary-50, #eff6ff);
262
+ --secondary-100: var(--df-secondary-100, #dbeafe);
263
+ --secondary-200: var(--df-secondary-200, #bfdbfe);
264
+
265
+ --df-spacing-xxs: 1px;
266
+ --df-spacing-xs: 2px;
267
+ --df-spacing-sm: 4px;
268
+ --df-spacing-md: 6px;
269
+ --df-spacing-lg: 8px;
270
+ --df-spacing-xl: 10px;
271
+ --df-spacing-xxl: 16px;
272
+
273
+ --df-radius-xxs: 1px;
274
+ --df-radius-xxl: 22px;
275
+
276
+ --df-text-xxs: 9px;
277
+ --df-text-xs: 10px;
278
+ --df-text-xl: 22px;
279
+ --df-text-xxl: 26px;
280
+
281
+ --df-body-background-fill: var(
282
+ --df-background-fill-primary,
283
+ var(--background-fill-primary, #ffffff)
284
+ );
285
+ --df-body-text-color: var(--gr-df-table-text, --df-neutral-800);
286
+ --df-body-text-size: var(--df-text-md, 14px);
287
+ --df-body-text-weight: 400;
288
+
289
+ --df-color-accent: var(--df-primary-500, #f97316);
290
+ --df-color-accent-soft: var(--df-primary-50, #fff7ed);
291
+ --df-background-fill-primary: white;
292
+ --df-background-fill-secondary: var(--df-neutral-50, #f9fafb);
293
+ --df-border-color-accent: var(--df-primary-300, #fdba74);
294
+ --df-body-text-color-subdued: var(--df-neutral-400, #9ca3af);
295
+ --df-table-text-color: var(--df-body-text-color, #111827);
296
+ --df-shadow-drop: rgba(0, 0, 0, 0.05) 0px 1px 2px 0px;
297
+ --df-shadow-drop-lg: 0 1px 3px 0 rgb(0 0 0 / 0.1),
298
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
299
+ --df-shadow-inset: rgba(0, 0, 0, 0.05) 0px 2px 4px 0px inset;
300
+ --df-shadow-spread: 3px;
301
+
302
+ --df-bw-svt-p-top: 0px;
303
+ --df-bw-svt-p-bottom: 0px;
304
+
305
+ --df-border-color-secondary: var(--df-border-color-accent, #fdba74);
306
+ --df-shadow-md: 0 12px 16px -4px rgba(0, 0, 0, 0.1),
307
+ 0 4px 6px -2px rgba(0, 0, 0, 0.05);
308
+
309
+ --df-checkbox-border-radius: var(--df-radius-sm, 4px);
310
+ --df-checkbox-shadow: none;
311
+ --df-checkbox-border-color: var(--df-neutral-300, #d4d4d8);
312
+ --df-checkbox-background-color: var(--df-background-fill-primary, #ffffff);
313
+ --df-checkbox-background-color-selected: var(
314
+ --df-color-accent,
315
+ var(--color-accent)
316
+ );
317
+ --df-checkbox-border-color-focus: var(--df-color-accent, #f97316);
318
+ --df-button-transition: none;
319
+ --df-block-background-fill: var(--df-background-fill-primary, white);
320
+ --df-block-border-color: var(
321
+ --df-border-color-primary,
322
+ var(--df-neutral-200, #e5e7eb)
323
+ );
324
+ --df-block-border-width: 1px;
325
+ --df-input-text-size: 0.95rem;
326
+ --df-line-md: 1.5;
327
+ --df-line-lg: 1.75;
328
+
329
+ --df-input-background-fill: var(--df-background-fill-primary, #ffffff);
330
+ --df-input-background-fill-focus: var(
331
+ --df-input-background-fill,
332
+ var(--df-background-fill-primary, #ffffff)
333
+ );
334
+ --df-input-background-fill-hover: var(
335
+ --df-input-background-fill,
336
+ var(--df-background-fill-primary, #ffffff)
337
+ );
338
+ --df-input-border-color: var(--df-border-color-primary, #e5e7eb);
339
+ --df-input-border-color-focus: var(--secondary-300, #93c5fd);
340
+ --df-input-border-color-hover: var(
341
+ --df-input-border-color,
342
+ var(--df-border-color-primary, #e5e7eb)
343
+ );
344
+ --df-input-border-width: 1px;
345
+ --df-input-padding: var(--df-spacing-xl, 10px);
346
+ --df-input-placeholder-color: var(--neutral-400, #9ca3af);
347
+ --df-input-radius: var(--df-radius-sm, 4px);
348
+ --df-input-shadow: none;
349
+ --df-input-shadow-focus: 0 0 0 var(--shadow-spread, 3px)
350
+ var(--secondary-50, #eff6ff),
351
+ var(--shadow-inset, rgba(0, 0, 0, 0.05) 0px 2px 4px 0px inset);
352
+
353
+ --table-radius: var(--gr-df-table-radius, var(--df-table-radius, 4px));
354
+ --table-row-hover: var(--gr-df-table-row-hover, var(--color-accent-soft));
355
+ --cell-padding: var(--gr-df-cell-padding, var(--size-2));
356
+ --df-font-size: var(--gr-df-font-size, var(--text-md));
357
+ --background-fill-primary: var(--df-background-fill-primary, #ffffff);
358
+ --background-fill-secondary: var(--df-background-fill-secondary, #f8fafc);
359
+ --color-accent: var(--gr-df-accent, var(--df-color-accent, #7c3aed));
360
+ --color-accent-soft: var(
361
+ --gr-df-accent-soft,
362
+ var(--df-color-accent-soft, #f3e8ff)
363
+ );
364
+ --color-accent-copied: var(
365
+ --gr-df-copied-cell-color,
366
+ var(--color-accent-soft)
367
+ );
368
+ --body-text-color: var(--df-body-text-color, #111827);
369
+ --block-background-fill: var(
370
+ --df-block-background-fill,
371
+ var(--background-fill-primary)
372
+ );
373
+ --block-radius: var(--df-block-radius, var(--radius-sm, 4px));
374
+ --table-even-background-fill: var(
375
+ --gr-df-table-bg-even,
376
+ var(--df-table-even-background-fill, #ffffff)
377
+ );
378
+ --table-odd-background-fill: var(
379
+ --gr-df-table-bg-odd,
380
+ var(--df-table-odd-background-fill, #f9fafb)
381
+ );
382
+ --border-color-primary: var(--df-border-color-primary, #e5e7eb);
383
+ --radius-sm: var(--df-radius-sm, 4px);
384
+ --size-1: var(--df-size-1, 4px);
385
+ --size-2: var(--df-size-2, 8px);
386
+ --size-3: var(--df-size-3, 12px);
387
+ --size-4: var(--df-size-4, 16px);
388
+ --size-5: var(--df-size-5, 20px);
389
+ --size-6: var(--df-size-6, 24px);
390
+ --size-7: var(--df-size-7, 28px);
391
+ --size-8: var(--df-size-8, 32px);
392
+ --size-9: var(--df-size-9, 36px);
393
+ --size-10: var(--df-size-10, 40px);
394
+ --size-11: var(--df-size-11, 44px);
395
+ --size-12: var(--df-size-12, 48px);
396
+ --size-14: var(--df-size-14, 56px);
397
+ --size-16: var(--df-size-16, 64px);
398
+ --size-20: var(--df-size-20, 80px);
399
+ --size-24: var(--df-size-24, 96px);
400
+
401
+ --size-px: var(--df-size-px, 1px);
402
+ --size-full: var(--df-size-full, 100%);
403
+ --size-0-5: var(--df-size-0-5, 2px);
404
+ --size-1-5: var(--df-size-1-5, 6px);
405
+ --size-2-5: var(--df-size-2-5, 10px);
406
+ --input-text-size: var(--df-input-text-size, 0.95rem);
407
+ --text-sm: var(--df-text-sm, 12px);
408
+ --text-md: var(--df-text-md, 14px);
409
+ --text-lg: var(--df-text-lg, 16px);
410
+ --text-xl: var(--df-text-xl, 22px);
411
+ --text-xxl: var(--df-text-xxl, 26px);
412
+
413
+ --spacing-xxs: var(--df-spacing-xxs, 1px);
414
+ --spacing-xs: var(--df-spacing-xs, 2px);
415
+ --spacing-sm: var(--df-spacing-sm, 4px);
416
+ --spacing-md: var(--df-spacing-md, 6px);
417
+ --spacing-lg: var(--df-spacing-lg, 8px);
418
+ --spacing-xl: var(--df-spacing-xl, 10px);
419
+ --spacing-xxl: var(--df-spacing-xxl, 16px);
420
+
421
+ --radius-xxs: var(--df-radius-xxs, 1px);
422
+ --radius-xs: var(--df-radius-xs, 2px);
423
+ --radius-sm: var(--df-radius-sm, 4px);
424
+ --radius-md: var(--df-radius-md, 6px);
425
+ --radius-lg: var(--df-radius-lg, 8px);
426
+ --radius-xl: var(--df-radius-xl, 12px);
427
+ --radius-2xl: var(--df-radius-2xl, 16px);
428
+ --radius-3xl: var(--df-radius-3xl, 22px);
429
+ --radius-full: var(--df-radius-full, 9999px);
430
+ --font-mono: var(--df-font-mono, "Courier New", Courier, monospace);
431
+ --font-sans: var(
432
+ --df-font-sans,
433
+ "Source Sans Pro",
434
+ ui-sans-serif,
435
+ system-ui,
436
+ sans-serif
437
+ );
438
+
439
+ --input-background-fill: var(
440
+ --gr-df-input-background-fill,
441
+ var(--df-input-background-fill, var(--background-fill-primary, #ffffff))
442
+ );
443
+ --input-background-fill-focus: var(
444
+ --gr-df-input-background-fill-focus,
445
+ var(
446
+ --df-input-background-fill-focus,
447
+ var(--input-background-fill, var(--background-fill-primary, #ffffff))
448
+ )
449
+ );
450
+ --input-background-fill-hover: var(
451
+ --gr-df-input-background-fill-hover,
452
+ var(
453
+ --df-input-background-fill-hover,
454
+ var(--input-background-fill, var(--background-fill-primary, #ffffff))
455
+ )
456
+ );
457
+ --input-border-color: var(
458
+ --gr-df-input-border-color,
459
+ var(--df-input-border-color, var(--border-color-primary, #e5e7eb))
460
+ );
461
+ --input-border-color-focus: var(
462
+ --gr-df-input-border-color-focus,
463
+ var(--df-input-border-color-focus, var(--secondary-300, #93c5fd))
464
+ );
465
+ --input-border-color-hover: var(
466
+ --gr-df-input-border-color-hover,
467
+ var(
468
+ --df-input-border-color-hover,
469
+ var(--input-border-color, var(--border-color-primary, #e5e7eb))
470
+ )
471
+ );
472
+ --input-border-width: var(
473
+ --gr-df-input-border-width,
474
+ var(--df-input-border-width, 1px)
475
+ );
476
+
477
+ --weight-bold: var(--df-weight-bold, 700);
478
+ --weight-semibold: var(--df-weight-semibold, 600);
479
+ --checkbox-border-radius: var(
480
+ --gr-df-checkbox-border-radius,
481
+ var(--df-checkbox-border-radius, var(--df-radius-sm, 4px))
482
+ );
483
+ --checkbox-shadow: var(
484
+ --gr-df-checkbox-shadow,
485
+ var(--df-checkbox-shadow, none)
486
+ );
487
+ --checkbox-border-color: var(
488
+ --gr-df-checkbox-border-color,
489
+ var(--df-checkbox-border-color, var(--df-neutral-300, #d4d4d8))
490
+ );
491
+ --checkbox-background-color: var(
492
+ --gr-df-checkbox-background-color,
493
+ var(
494
+ --df-checkbox-background-color,
495
+ var(--df-background-fill-primary, #ffffff)
496
+ )
497
+ );
498
+ --checkbox-background-color-selected: var(
499
+ --gr-df-checkbox-background-color,
500
+ var(--df-checkbox-background-color-selected, var(--color-accent))
501
+ );
502
+ --checkbox-border-color-focus: var(
503
+ --gr-df-checkbox-border-color-focus,
504
+ var(--df-checkbox-border-color-focus, var(--df-color-accent, #f97316))
505
+ );
506
+ --checkbox-check: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
507
+ --button-transition: var(--df-button-transition, none);
508
+ --max-height: var(--df-max-height, 500px);
509
+ --df-layer-1: 10;
510
+ --df-layer-2: 20;
511
+ --df-layer-3: 30;
512
+ --df-layer-4: 40;
513
+ --df-layer-5: 50;
514
+ --df-layer-below: -1;
515
+ --df-layer-top: 2147483647;
516
+
517
+ --layer-1: var(--df-layer-1, 10);
518
+ --layer-2: var(--df-layer-2, 20);
519
+ --layer-3: var(--df-layer-3, 30);
520
+ --layer-4: var(--df-layer-4, 40);
521
+ --layer-5: var(--df-layer-5, 50);
522
+ --layer-below: var(--df-layer-below, -1);
523
+ --layer-top: var(--df-layer-top, 2147483647);
524
+
525
+ --line-md: var(--df-line-md, 1.5);
526
+ --line-lg: var(--df-line-lg, 1.75);
527
+
528
+ --shadow-xs: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
529
+ --shadow-sm: 0 4px 6px -2px rgba(0, 0, 0, 0.1),
530
+ 0 2px 4px -2px rgba(0, 0, 0, 0.06);
531
+ --shadow-md: 0 12px 16px -4px rgba(0, 0, 0, 0.1),
532
+ 0 4px 6px -2px rgba(0, 0, 0, 0.05);
533
+ --shadow-lg: 0 20px 24px -4px rgba(0, 0, 0, 0.1),
534
+ 0 8px 8px -4px rgba(0, 0, 0, 0.04);
535
+ --shadow-drop: rgba(0, 0, 0, 0.05) 0px 1px 2px 0px;
536
+ --shadow-drop-lg: 0 1px 3px 0 rgb(0 0 0 / 0.1),
537
+ 0 1px 2px -1px rgb(0 0 0 / 0.1);
538
+ --shadow-inset: rgba(0, 0, 0, 0.05) 0px 2px 4px 0px inset;
539
+ --shadow-spread: 3px;
540
+ }
541
+
542
+ .gradio-dataframe-standalone.fullscreen {
543
+ position: fixed;
544
+ top: 0;
545
+ left: 0;
546
+ width: 100vw;
547
+ height: 100vh;
548
+ z-index: 1000;
549
+ overflow: auto;
550
+ border-radius: 0;
551
+ background-color: var(--block-background-fill);
552
+ }
553
+
554
+ :global(.gradio-container),
555
+ :global(*),
556
+ :global(::before),
557
+ :global(::after) {
558
+ box-sizing: border-box;
559
+ border-width: 0;
560
+ border-style: solid;
561
+ }
562
+
563
+ :global(.gradio-container) :global(textarea) {
564
+ padding-top: var(--input-padding, var(--df-input-padding, 10px));
565
+ padding-bottom: var(--input-padding, var(--df-input-padding, 10px));
566
+ box-sizing: border-box;
567
+ }
568
+
569
+ :global(button),
570
+ :global(input),
571
+ :global(select),
572
+ :global(textarea) {
573
+ margin: 0;
574
+ padding: 0;
575
+ color: inherit;
576
+ font-weight: inherit;
577
+ font-size: 100%;
578
+ line-height: inherit;
579
+ font-family: inherit;
580
+ }
581
+
582
+ :global([type="text"]),
583
+ :global([type="url"]),
584
+ :global([type="number"]),
585
+ :global([multiple]),
586
+ :global(textarea),
587
+ :global(select) {
588
+ --tw-shadow: 0 0 #0000;
589
+ appearance: none;
590
+ border-width: 1px;
591
+ border-color: #6b7280;
592
+ border-radius: 0px;
593
+ background-color: #fff;
594
+ padding-top: 0.5rem;
595
+ padding-right: 0.75rem;
596
+ padding-bottom: 0.5rem;
597
+ padding-left: 0.75rem;
598
+ font-size: 1rem;
599
+ line-height: 1.5rem;
600
+ }
601
+
602
+ :global(button),
603
+ :global(input[type="button"]),
604
+ :global(input[type="submit"]) {
605
+ -webkit-appearance: button;
606
+ appearance: button;
607
+ background-image: none;
608
+ background-color: transparent;
609
+ }
610
+
611
+ :global(.sr-only) {
612
+ clip: rect(0, 0, 0, 0);
613
+ position: absolute;
614
+ margin: -1px;
615
+ border-width: 0;
616
+ padding: 0;
617
+ width: 1px;
618
+ height: 1px;
619
+ overflow: hidden;
620
+ white-space: nowrap;
621
+ }
622
+
623
+ :global(input[type="checkbox"]) {
624
+ accent-color: var(--color-accent);
625
+ }
626
+
627
+ :global(label) {
628
+ display: flex;
629
+ align-items: center;
630
+ transition: all 0.15s ease;
631
+ cursor: pointer;
632
+ /* default label color */
633
+ color: #111111;
634
+ font-weight: 400;
635
+ font-size: 14px;
636
+ line-height: 1.5;
637
+ }
638
+
639
+ :global(label) > * + * {
640
+ margin-left: 8px;
641
+ }
642
+
643
+ :global(input) {
644
+ --ring-color: transparent;
645
+ position: relative;
646
+ /* default shadow */
647
+ box-shadow: none;
648
+ border: 1px solid #888888;
649
+ border-radius: 6px;
650
+ background-color: #ffffff;
651
+ line-height: 1;
652
+ }
653
+
654
+ :global(input:checked),
655
+ :global(input:checked:hover),
656
+ :global(input:checked:focus) {
657
+ /* checked state: orange */
658
+ background-image: none;
659
+ background-color: #f97316;
660
+ border-color: #f97316;
661
+ }
662
+
663
+ :global(input:checked:focus) {
664
+ background-image: none;
665
+ background-color: #f97316;
666
+ border-color: #f97316;
667
+ }
668
+
669
+ :global(input:hover) {
670
+ border-color: #1e90ff;
671
+ background-color: #e6f0ff;
672
+ }
673
+
674
+ :global(input:focus) {
675
+ border-color: #f97316;
676
+ background-color: #fff4e6;
677
+ }
678
+
679
+ :global(input[disabled]),
680
+ :global(.disabled) {
681
+ cursor: not-allowed !important;
682
+ opacity: 0.6;
683
+ }
684
+
685
+ :global(input:hover) {
686
+ cursor: pointer;
687
+ }
688
+ </style>
@@ -0,0 +1,32 @@
1
+ export const default_i18n: Record<string, string> = {
2
+ "dataframe.add_row_above": "Add row above",
3
+ "dataframe.add_row_below": "Add row below",
4
+ "dataframe.delete_row": "Delete row",
5
+ "dataframe.add_column_left": "Add column left",
6
+ "dataframe.add_column_right": "Add column right",
7
+ "dataframe.delete_column": "Delete column",
8
+ "dataframe.sort_asc": "Sort ascending",
9
+ "dataframe.sort_desc": "Sort descending",
10
+ "dataframe.sort_ascending": "Sort ascending",
11
+ "dataframe.sort_descending": "Sort descending",
12
+ "dataframe.clear_sort": "Clear sort",
13
+ "dataframe.filter": "Filter",
14
+ "dataframe.clear_filter": "Clear filter",
15
+ "dataframe.copy": "Copy",
16
+ "dataframe.paste": "Paste",
17
+ "dataframe.cut": "Cut",
18
+ "dataframe.select_all": "Select all",
19
+ "dataframe.fullscreen": "Fullscreen",
20
+ "dataframe.exit_fullscreen": "Exit fullscreen",
21
+ "dataframe.search": "Search",
22
+ "dataframe.export": "Export",
23
+ "dataframe.import": "Import",
24
+ "dataframe.edit": "Edit",
25
+ "dataframe.save": "Save",
26
+ "dataframe.cancel": "Cancel",
27
+ "dataframe.confirm": "Confirm",
28
+ "dataframe.reset": "Reset",
29
+ "dataframe.clear": "Clear",
30
+ "dataframe.undo": "Undo",
31
+ "dataframe.redo": "Redo"
32
+ };