@crisp-ui-kit/crisp 0.54.10 → 0.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.
- package/dist/cjs/components/datatable/datatable.js +249 -46
- package/dist/cjs/components/datatable/datatable.recipe.js +24 -0
- package/dist/cjs/components/resizablepanel/resizablepanel.js +10 -1
- package/dist/cjs/components/table/table.js +8 -1
- package/dist/cjs/components/tabletoolbar/tabletoolbar.chrome.js +25 -2
- package/dist/cjs/components/tabletoolbar/tabletoolbar.js +176 -43
- package/dist/cjs/components/tabletoolbar/tabletoolbar.recipe.js +28 -9
- package/dist/cjs/index.js +0 -2
- package/dist/cjs/product/recordpage/column.js +19 -0
- package/dist/cjs/product/recordpage/index.js +6 -1
- package/dist/cjs/product/recordpage/recordpage.js +25 -8
- package/dist/cjs/product/recordpage/test-fixtures.js +55 -0
- package/dist/cjs/product/savedviews/savedviews.recipe.js +13 -11
- package/dist/datatable.css +14 -0
- package/dist/datatable.layered.css +14 -0
- package/dist/esm/components/datatable/datatable.js +250 -47
- package/dist/esm/components/datatable/datatable.recipe.js +24 -0
- package/dist/esm/components/resizablepanel/resizablepanel.js +10 -1
- package/dist/esm/components/table/table.js +8 -1
- package/dist/esm/components/tabletoolbar/tabletoolbar.chrome.js +25 -2
- package/dist/esm/components/tabletoolbar/tabletoolbar.js +177 -44
- package/dist/esm/components/tabletoolbar/tabletoolbar.recipe.js +28 -9
- package/dist/esm/index.js +0 -2
- package/dist/esm/product/recordpage/column.js +16 -0
- package/dist/esm/product/recordpage/index.js +2 -0
- package/dist/esm/product/recordpage/recordpage.js +22 -5
- package/dist/esm/product/recordpage/test-fixtures.js +52 -0
- package/dist/esm/product/savedviews/savedviews.recipe.js +13 -11
- package/dist/savedviews.css +6 -18
- package/dist/savedviews.layered.css +6 -18
- package/dist/styles.css +43 -276
- package/dist/styles.layered.css +43 -276
- package/dist/tabletoolbar.css +23 -3
- package/dist/tabletoolbar.layered.css +23 -3
- package/dist/types/components/datatable/datatable.d.ts +30 -3
- package/dist/types/components/table/table.d.ts +14 -0
- package/dist/types/components/tabletoolbar/tabletoolbar.d.ts +26 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/product/recordpage/column.d.ts +112 -0
- package/dist/types/product/recordpage/index.d.ts +2 -0
- package/dist/types/product/recordpage/recordpage.d.ts +1 -1
- package/dist/types/product/recordpage/test-fixtures.d.ts +3 -0
- package/dist/types/product/recordpanel/recordpanel.d.ts +1 -1
- package/package.json +2 -12
- package/dist/cjs/product/recordstable/company-logos.js +0 -29
- package/dist/cjs/product/recordstable/index.js +0 -13
- package/dist/cjs/product/recordstable/recordstable.js +0 -1357
- package/dist/cjs/product/recordstable/recordstable.recipe.js +0 -175
- package/dist/cjs/product/recordstable/recordstable.tag.js +0 -26
- package/dist/cjs/product/taskstable/index.js +0 -7
- package/dist/cjs/product/taskstable/taskstable.js +0 -27
- package/dist/cjs/product/taskstable/taskstable.recipe.js +0 -56
- package/dist/esm/product/recordstable/company-logos.js +0 -26
- package/dist/esm/product/recordstable/index.js +0 -3
- package/dist/esm/product/recordstable/recordstable.js +0 -1317
- package/dist/esm/product/recordstable/recordstable.recipe.js +0 -172
- package/dist/esm/product/recordstable/recordstable.tag.js +0 -23
- package/dist/esm/product/taskstable/index.js +0 -2
- package/dist/esm/product/taskstable/taskstable.js +0 -24
- package/dist/esm/product/taskstable/taskstable.recipe.js +0 -53
- package/dist/recordstable.css +0 -223
- package/dist/recordstable.d.ts +0 -7
- package/dist/recordstable.layered.css +0 -225
- package/dist/taskstable.css +0 -30
- package/dist/taskstable.d.ts +0 -7
- package/dist/taskstable.layered.css +0 -32
- package/dist/types/product/recordstable/company-logos.d.ts +0 -1
- package/dist/types/product/recordstable/index.d.ts +0 -3
- package/dist/types/product/recordstable/recordstable.d.ts +0 -289
- package/dist/types/product/recordstable/recordstable.recipe.d.ts +0 -5
- package/dist/types/product/recordstable/recordstable.tag.d.ts +0 -15
- package/dist/types/product/taskstable/index.d.ts +0 -2
- package/dist/types/product/taskstable/taskstable.d.ts +0 -54
- package/dist/types/product/taskstable/taskstable.recipe.d.ts +0 -3
- /package/dist/cjs/product/{recordstable → recordpage}/editable-field.js +0 -0
- /package/dist/esm/product/{recordstable → recordpage}/editable-field.js +0 -0
- /package/dist/types/product/{recordstable → recordpage}/editable-field.d.ts +0 -0
|
@@ -192,6 +192,31 @@ export type TableToolbarProps = Omit<React.ComponentPropsWithoutRef<"div">, "chi
|
|
|
192
192
|
* the filter chips from View settings is dropped along with it.
|
|
193
193
|
*/
|
|
194
194
|
showViewSettings?: boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Relocates the View settings trigger (and its popover) into a
|
|
197
|
+
* consumer-supplied element instead of this toolbar's own row
|
|
198
|
+
* (your-moon/crisp#766) — a plain DOM ref, e.g. a `<span ref={...} />`
|
|
199
|
+
* rendered right next to `SavedViews`' own trigger. Measured live: Attio's
|
|
200
|
+
* view bar puts the view switcher and View settings adjacent, then a
|
|
201
|
+
* flexible gap, then Import/Export immediately before the primary "+ New"
|
|
202
|
+
* action (see `importExportRef`, a SEPARATE ref — the two controls sit
|
|
203
|
+
* far apart, not next to each other). The row below holds only Sort and
|
|
204
|
+
* Filter. Neither `SavedViews` nor `TableToolbar` renders the OTHER
|
|
205
|
+
* component's pieces itself — they stay two separate components, each
|
|
206
|
+
* still owning its own state — this ref is a portal target, not a new
|
|
207
|
+
* cross-component API. Omit it (the default) and View settings renders
|
|
208
|
+
* exactly where it always has, inline in this toolbar's own row,
|
|
209
|
+
* unchanged — existing consumers see no difference at all.
|
|
210
|
+
*/
|
|
211
|
+
viewSettingsRef?: React.RefObject<HTMLElement | null>;
|
|
212
|
+
/**
|
|
213
|
+
* Same relocation, for the Import/Export trigger (and its menu) — a
|
|
214
|
+
* separate ref from `viewSettingsRef` because Attio's own layout puts
|
|
215
|
+
* Import/Export far from View settings, immediately before the primary
|
|
216
|
+
* action instead of next to the view switcher. Omit it and Import/Export
|
|
217
|
+
* renders exactly where it always has, inline in this toolbar's own row.
|
|
218
|
+
*/
|
|
219
|
+
importExportRef?: React.RefObject<HTMLElement | null>;
|
|
195
220
|
/**
|
|
196
221
|
* The full set of attributes View settings offers — every attribute on
|
|
197
222
|
* the object, shown or not. Defaults to `columns`. Omit both, along with
|
|
@@ -288,7 +313,7 @@ export declare function applySorts<T>(rows: T[], sorts: ToolbarSort[], get?: (ro
|
|
|
288
313
|
* this (Sort: Due date/Assignee/Creation date; Filter: Assignee/Record/
|
|
289
314
|
* Created by), which one shared list can't reproduce.
|
|
290
315
|
*/
|
|
291
|
-
export declare function TableToolbar({ columns, sortColumns: sortColumnsProp, filterColumns: filterColumnsProp, sorts: sortsProp, defaultSorts, onSortsChange, filters: filtersProp, defaultFilters, onFiltersChange, count, children, helpHref, className, sortLabel: sortLabelProp, filterLabel: filterLabelProp, reorderSortLabel: reorderSortLabelProp, noSortsLabel: noSortsLabelProp, addSortLabel: addSortLabelProp, learnSortingLabel: learnSortingLabelProp, selectConditionLabel: selectConditionLabelProp, sortFieldLabel: sortFieldLabelProp, sortDirectionLabel: sortDirectionLabelProp, removeSortLabel: removeSortLabelProp, filterFieldLabel: filterFieldLabelProp, filterFieldPlaceholder: filterFieldPlaceholderProp, filterValuePlaceholder: filterValuePlaceholderProp, filterOptionsLabel: filterOptionsLabelProp, deleteFilterLabel: deleteFilterLabelProp, ascendingLabel: ascendingLabelProp, descendingLabel: descendingLabelProp, sortTriggerLabel, filterTriggerLabel, inline, showSort, showViewSettings, viewColumns: viewColumnsProp, shownKeys: shownKeysProp, defaultShownKeys, onShownKeysChange, viewSettingsLabel: viewSettingsLabelProp, reorderAttributeLabel: reorderAttributeLabelProp, hideAttributeLabel, addAttributeToViewLabel: addAttributeToViewLabelProp, searchAttributesPlaceholder: searchAttributesPlaceholderProp, importExportLabel: importExportLabelProp, onImportCsv, onExportCsv, onExportExcel, importExportHelpHref, importCsvLabel: importCsvLabelProp, exportCsvLabel: exportCsvLabelProp, exportExcelLabel: exportExcelLabelProp, learnImportExportLabel: learnImportExportLabelProp, backLabel: backLabelProp, nestedFieldPlaceholder, ...rest }: TableToolbarProps): React.JSX.Element;
|
|
316
|
+
export declare function TableToolbar({ columns, sortColumns: sortColumnsProp, filterColumns: filterColumnsProp, sorts: sortsProp, defaultSorts, onSortsChange, filters: filtersProp, defaultFilters, onFiltersChange, count, children, helpHref, className, sortLabel: sortLabelProp, filterLabel: filterLabelProp, reorderSortLabel: reorderSortLabelProp, noSortsLabel: noSortsLabelProp, addSortLabel: addSortLabelProp, learnSortingLabel: learnSortingLabelProp, selectConditionLabel: selectConditionLabelProp, sortFieldLabel: sortFieldLabelProp, sortDirectionLabel: sortDirectionLabelProp, removeSortLabel: removeSortLabelProp, filterFieldLabel: filterFieldLabelProp, filterFieldPlaceholder: filterFieldPlaceholderProp, filterValuePlaceholder: filterValuePlaceholderProp, filterOptionsLabel: filterOptionsLabelProp, deleteFilterLabel: deleteFilterLabelProp, ascendingLabel: ascendingLabelProp, descendingLabel: descendingLabelProp, sortTriggerLabel, filterTriggerLabel, inline, showSort, showViewSettings, viewSettingsRef, importExportRef, viewColumns: viewColumnsProp, shownKeys: shownKeysProp, defaultShownKeys, onShownKeysChange, viewSettingsLabel: viewSettingsLabelProp, reorderAttributeLabel: reorderAttributeLabelProp, hideAttributeLabel, addAttributeToViewLabel: addAttributeToViewLabelProp, searchAttributesPlaceholder: searchAttributesPlaceholderProp, importExportLabel: importExportLabelProp, onImportCsv, onExportCsv, onExportExcel, importExportHelpHref, importCsvLabel: importCsvLabelProp, exportCsvLabel: exportCsvLabelProp, exportExcelLabel: exportExcelLabelProp, learnImportExportLabel: learnImportExportLabelProp, backLabel: backLabelProp, nestedFieldPlaceholder, ...rest }: TableToolbarProps): React.JSX.Element;
|
|
292
317
|
export type ToolbarToolProps = React.ComponentPropsWithoutRef<"button"> & {
|
|
293
318
|
/** Drawn the way Sort/Filter are once a condition is set (#399). */
|
|
294
319
|
active?: boolean;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -78,7 +78,6 @@ export * from "./product/objectsettings";
|
|
|
78
78
|
export * from "./product/onboarding";
|
|
79
79
|
export * from "./product/recordpage";
|
|
80
80
|
export * from "./product/recordpanel";
|
|
81
|
-
export * from "./product/recordstable";
|
|
82
81
|
export * from "./product/richtext";
|
|
83
82
|
export * from "./product/savedviews";
|
|
84
83
|
export * from "./product/settingssection";
|
|
@@ -86,7 +85,6 @@ export * from "./product/settingsshell";
|
|
|
86
85
|
export * from "./product/sidebar";
|
|
87
86
|
export * from "./product/statlist";
|
|
88
87
|
export * from "./product/tasklist";
|
|
89
|
-
export * from "./product/taskstable";
|
|
90
88
|
export * from "./product/themepicker";
|
|
91
89
|
export * from "./product/trialbanner";
|
|
92
90
|
export * from "./product/viewtoggle";
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import type { EditableOption } from "./editable-field";
|
|
3
|
+
type IconType = React.ComponentType<{
|
|
4
|
+
size?: number;
|
|
5
|
+
strokeWidth?: number;
|
|
6
|
+
}>;
|
|
7
|
+
export type ColumnType = "entity" | "text" | "tags" | "number" | "url" | "date" | "currency" | "status" | "reference";
|
|
8
|
+
export type StatusOption = {
|
|
9
|
+
value: string;
|
|
10
|
+
label: string;
|
|
11
|
+
color: string;
|
|
12
|
+
};
|
|
13
|
+
export type ReferenceOption = {
|
|
14
|
+
value: string;
|
|
15
|
+
label: string;
|
|
16
|
+
avatar?: string;
|
|
17
|
+
};
|
|
18
|
+
export type EntityValue = {
|
|
19
|
+
name: string;
|
|
20
|
+
avatar?: string;
|
|
21
|
+
};
|
|
22
|
+
export type Row = {
|
|
23
|
+
id: string;
|
|
24
|
+
} & Record<string, any>;
|
|
25
|
+
export type Column = {
|
|
26
|
+
key: string;
|
|
27
|
+
label: string;
|
|
28
|
+
type?: ColumnType;
|
|
29
|
+
/** Mark the column's values as AI-enriched — tints the cells the way
|
|
30
|
+
* enriched values are washed (#9b69ff at 4%). */
|
|
31
|
+
enriched?: boolean;
|
|
32
|
+
icon?: IconType;
|
|
33
|
+
/** This column's values reference another type of record (e.g. a
|
|
34
|
+
* "Primary location" column of Country records). When the header
|
|
35
|
+
* overflows, its `Tooltip` appends this type's icon and name after the
|
|
36
|
+
* label and switches to Attio's second, reference-column tooltip chrome
|
|
37
|
+
* (crisp#580) — distinct from `icon` above (the column's own field-type
|
|
38
|
+
* glyph shown in the header row) and from `refOptions` (the picker's
|
|
39
|
+
* selectable values). Omit for a plain column; the tooltip stays
|
|
40
|
+
* label-only (#534). */
|
|
41
|
+
referencedType?: {
|
|
42
|
+
icon: IconType;
|
|
43
|
+
label: string;
|
|
44
|
+
};
|
|
45
|
+
width?: number;
|
|
46
|
+
/** Currency symbol for `currency` columns (default "$"). */
|
|
47
|
+
symbol?: string;
|
|
48
|
+
/** Choices for a `status` column (each a coloured dot + label). */
|
|
49
|
+
options?: StatusOption[];
|
|
50
|
+
/** Choices for a `reference` column (a searchable record picker). */
|
|
51
|
+
refOptions?: ReferenceOption[];
|
|
52
|
+
/** Adds a trailing "Create {createLabel}" row to the picker (Attio's own
|
|
53
|
+
* always has one) — rendered only when this is provided. Picking it hands
|
|
54
|
+
* back the picker's current search text, e.g. to open a create flow
|
|
55
|
+
* pre-seeded with it. */
|
|
56
|
+
onCreateReference?: (query: string) => void;
|
|
57
|
+
/** The object noun in "Create {createLabel}" (Attio: "Create Person").
|
|
58
|
+
* Only used with `onCreateReference`; defaults to "record". */
|
|
59
|
+
createLabel?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Full custom cell content — an escape hatch for a display crisp can't
|
|
62
|
+
* express via `type` (sign-coloured currency, a maskable amount, a custom
|
|
63
|
+
* badge, …). Precedence is **`render` > `format` > the built-in `type`
|
|
64
|
+
* renderer**: when `render` is set it is the *only* thing drawn in the
|
|
65
|
+
* cell, replacing whatever `type` would normally render.
|
|
66
|
+
*
|
|
67
|
+
* Interaction contract for a `render` column: it keeps every grid chrome —
|
|
68
|
+
* row height, hairlines, padding, hover/selected tint, the cell focus ring,
|
|
69
|
+
* shift-click range select, the right-click row menu — but is **never**
|
|
70
|
+
* inline-editable and never shows a `type` picker (status/reference/date/
|
|
71
|
+
* tags), because crisp has no way to write a value back into custom
|
|
72
|
+
* content. Use `format` instead if the column should stay editable.
|
|
73
|
+
*
|
|
74
|
+
* ⌘C copies `format(value, row)` when the column also has one, otherwise
|
|
75
|
+
* the raw value stringified the same way a plain column would — never a
|
|
76
|
+
* serialization of the rendered node. Sort, filter, and the footer
|
|
77
|
+
* aggregation all read `row[column.key]` directly and never call `render`.
|
|
78
|
+
*/
|
|
79
|
+
render?: (value: unknown, row: Row) => React.ReactNode;
|
|
80
|
+
/**
|
|
81
|
+
* Display-only string transform. Unlike `render`, a `format` column keeps
|
|
82
|
+
* the built-in `type` renderer's chrome (a `currency`/`number` column stays
|
|
83
|
+
* right-aligned in its numeric span; `text`/`url`/`date`/the default case
|
|
84
|
+
* keep their own wrapper) — `format`'s return value simply replaces the
|
|
85
|
+
* text that renderer would otherwise show. `format` fully owns that text,
|
|
86
|
+
* so a `currency` column's `format` should include its own symbol/masking
|
|
87
|
+
* if it wants one (the built-in `$` prefix is skipped once `format` is
|
|
88
|
+
* set). A `format` column stays editable/pickable exactly like a plain
|
|
89
|
+
* `type` column — only `render` disables that.
|
|
90
|
+
*
|
|
91
|
+
* Sort, filter, and the footer aggregation all read the **raw**
|
|
92
|
+
* `row[column.key]` value, never `format`'s output — so a grouped/prefixed
|
|
93
|
+
* currency string still sums and sorts numerically.
|
|
94
|
+
*/
|
|
95
|
+
format?: (value: unknown, row: Row) => string;
|
|
96
|
+
/**
|
|
97
|
+
* Opts this column into `RecordPanel`/`RecordPage`'s editable-field API
|
|
98
|
+
* (#431) — click-to-edit there. A plain `editable` column, with no
|
|
99
|
+
* `editor`, opens a text/number/date field (inferred from `type`); `editor`
|
|
100
|
+
* below picks a `select`/`switch` picker instead. Requires `onEdit` to
|
|
101
|
+
* actually be given for a field to open at all.
|
|
102
|
+
*/
|
|
103
|
+
editable?: boolean;
|
|
104
|
+
/** `select`/`switch` render as the field's own live, always-interactive
|
|
105
|
+
* content instead of opening on click. `select` reads `editOptions`. */
|
|
106
|
+
editor?: "select" | "switch";
|
|
107
|
+
/** Options for `editor: "select"`. Not `options` (`StatusOption` requires
|
|
108
|
+
* `color`, for this type's own `status` picker) so this stays additive. */
|
|
109
|
+
editOptions?: EditableOption[];
|
|
110
|
+
};
|
|
111
|
+
export declare function tagTone(t: string): string;
|
|
112
|
+
export {};
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
export { type Column, type ColumnType, type EntityValue, type ReferenceOption, type Row, type StatusOption, tagTone, } from "./column";
|
|
2
|
+
export { type EditableOption, editableInputType, useEditableField, } from "./editable-field";
|
|
1
3
|
export { RecordDetails, type RecordDetailsProps, RecordPage, type RecordPageHighlight, type RecordPageLabels, type RecordPageLabelsInput, type RecordPageNote, type RecordPageProps, type RecordPageSection, type RecordPageTab, type RecordPageTask, recordPageLabels, } from "./recordpage";
|
|
2
4
|
export { recordpageRecipe } from "./recordpage.recipe";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { type AvatarProps } from "../../components/avatar";
|
|
3
|
-
import type { Row } from "../
|
|
3
|
+
import type { Row } from "../recordpage/column";
|
|
4
4
|
type IconType = React.ComponentType<{
|
|
5
5
|
size?: number;
|
|
6
6
|
strokeWidth?: number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crisp-ui-kit/crisp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.55.0",
|
|
4
4
|
"description": "A lean React design system, measured pixel-for-pixel from Attio.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -428,11 +428,6 @@
|
|
|
428
428
|
"import": "./dist/esm/product/recordpanel/index.js",
|
|
429
429
|
"require": "./dist/cjs/product/recordpanel/index.js"
|
|
430
430
|
},
|
|
431
|
-
"./recordstable": {
|
|
432
|
-
"types": "./dist/types/product/recordstable/index.d.ts",
|
|
433
|
-
"import": "./dist/esm/product/recordstable/index.js",
|
|
434
|
-
"require": "./dist/cjs/product/recordstable/index.js"
|
|
435
|
-
},
|
|
436
431
|
"./richtext": {
|
|
437
432
|
"types": "./dist/types/product/richtext/index.d.ts",
|
|
438
433
|
"import": "./dist/esm/product/richtext/index.js",
|
|
@@ -468,11 +463,6 @@
|
|
|
468
463
|
"import": "./dist/esm/product/tasklist/index.js",
|
|
469
464
|
"require": "./dist/cjs/product/tasklist/index.js"
|
|
470
465
|
},
|
|
471
|
-
"./taskstable": {
|
|
472
|
-
"types": "./dist/types/product/taskstable/index.d.ts",
|
|
473
|
-
"import": "./dist/esm/product/taskstable/index.js",
|
|
474
|
-
"require": "./dist/cjs/product/taskstable/index.js"
|
|
475
|
-
},
|
|
476
466
|
"./themepicker": {
|
|
477
467
|
"types": "./dist/types/product/themepicker/index.d.ts",
|
|
478
468
|
"import": "./dist/esm/product/themepicker/index.js",
|
|
@@ -524,7 +514,7 @@
|
|
|
524
514
|
"prepublishOnly": "bun run build && bun run check:dist && bun run check:css",
|
|
525
515
|
"typecheck": "tsc --noEmit",
|
|
526
516
|
"lint": "biome check .",
|
|
527
|
-
"test": "bun test",
|
|
517
|
+
"test": "bun test ./tokens/ ./core/ ./components/ ./product/ ./build/",
|
|
528
518
|
"spec": "bun build/spec-check.mjs",
|
|
529
519
|
"lynx": "bun build/lynx-lint.mjs",
|
|
530
520
|
"lynx:emit": "bun build/emit-lynx.mjs",
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.companyLogos = void 0;
|
|
4
|
-
// Clean, self-contained brand-mark data URIs for the built-in demo dataset
|
|
5
|
-
// (defaultRows below). Each PNG is a real favicon, fetched once from
|
|
6
|
-
// Google's public favicon service, then hard-thresholded on alpha (<128
|
|
7
|
-
// -> fully transparent, >=128 -> fully opaque) before being baked in here.
|
|
8
|
-
//
|
|
9
|
-
// Why: those source PNGs anti-alias their edges against an assumed white
|
|
10
|
-
// canvas, so boundary pixels come back literally white-colored at partial
|
|
11
|
-
// alpha even though the corners are properly transparent. On a light page
|
|
12
|
-
// that blends in invisibly; on dark rows it reads as a white halo/outline
|
|
13
|
-
// around every logo. Thresholding removes that halo. It does NOT remove a
|
|
14
|
-
// company's own opaque branding (e.g. Google's white circle, Notion's
|
|
15
|
-
// white backing, OpenAI/Anthropic's light square) — those pixels are fully
|
|
16
|
-
// opaque real brand-icon content, not an artifact, and are left as-is.
|
|
17
|
-
//
|
|
18
|
-
// Baking these in as data URIs (instead of the live s2/favicons URL) also
|
|
19
|
-
// means the demo never depends on a live network request.
|
|
20
|
-
exports.companyLogos = {
|
|
21
|
-
"google.com": "data:image/png;base64,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",
|
|
22
|
-
"stripe.com": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACzklEQVR42u2az24SURTGv3M7BdsoRUKopcUqiU2jMRpbJWl0V7vqzufxDUx8Ct/AhakkbozJaGNq/JPGGkwL0tIgUmqk0OFeFzgMA5gopcDMnLOCS1h8v++7597JGUrMPUNzTQYTEMKnRsQY3FQ1WYaUVcoVddu6aP4SCy+rUW3CdeIBYESMYVSbULHwsuoIYCa8opSdhytLQWAmvKJsAFqpeKFMzWIymIAXnO+UhHq/Ez7Pud+Iv/Ap4caG9z+NUcDjxQAYAANgAAzAySWNk11jNKeJNQzgV8Fam5kn/Cy5EIApFqgL/pGuf75+n3BvFZiNE24m6muPHyrkdhSERs4FUD1SNmfHQ0AoQrh2xxI7FQXOBez/O/zjvmEAPs0hCWiOsuns+RhwZZEQvwrcvkuIxjoL7nVpg3A3EAGm44T4qiX20mXA5++/GVq/3F1cIdxaIkSi6Ju7pw7gb135wkU0xC4khkNozwFUjxS+vWvvylNRwO8fTJz7BkAaCtNxwqMnhLn5FjAV54jv+iZons9T0fbfnCSenwUYAANgAAyAATAABsAAGAADYAAMgAEwAAbAAJxcmuby2WC1AlQqwG4WyKaBNy8VUp+ArXWF8RDgO0PuA3BYqgve0IG3rxT2doDCfvuQpZuZ4FABaHZ3Qwe2Uwp6EviqW6Pv6RtW1INRctZorFN93rSi/H0P+PIBKGaVbTg6u3Ayd4cCgBnjbBrYzwIvnipsrSvb2Gw81HtnBwaged9upxQ+vgZKBYXSPmzuDkJszwCYR85utl3s++dWjAft7r8UPViSXb9kczYAZDbt+1bTTn/fDs0WKBXU0Drbl5ugk5zmZwEGwAAYAANgAB0A1GTZs+JrsgwhZZW8CkDKKolcUQdBek48QSJX1Os9IJ1Pei4FpuZGE8zk18gLSSBIZPJr1PEUSOeTdGwckBsbY02WcWwcUGvafwM6ARIBbCv6CwAAAABJRU5ErkJggg==",
|
|
23
|
-
"figma.com": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAADAUlEQVR42u2bP0+TURTGf0/BNIGWqoMuDsYQpi4GTGtY3BQ3ln4EdwIDTKSTLJbZz+Dgnxj0G2CxboZBcOEjFJrwLx4HCokRor3v5fa273vHpr1vz3Of85xznt7KzEjzypHyNepll3IZikVwodNsD+8VYIBJlPZh9XsEDKhWoVAwQuTS+RNkRnvcWHqceEs5f+9aDfb2kgc96wGYiaZYtcAM8BG8r9WuWtgUqFYjkzKDpUogAMpliLF2mox6OQAAxSJIcda09ngAAOLunCzdjZADM4cLAMta4QyADIBrB0Cx1kBA6PoBODmJ9ziLBwEY0GrFyQJDLuOxmwZsbsZX/xpfAotgs6lYEp+JLYV3hM46YlGpgGR9o31js89lsNmE01NhJoKMCXam9gencqW9d0+w/qBF/rjbivZIxuVXf39CH4GRK5rb81c6Tp2vfwaszUP+6MyqxIMq6DMw0t3vKmNUGAVMG/SPAW9q8POoG7SPwN8AhR4PVZg2kD3vAwMugvfWxDgyWpg+BQZgbd7PqV/EsEHShHZOh54BqNfADG9yrw/dnE7eDpjqATQgf+y5qt3wuFclAAMMf6fv7uNcudP1e4IRD8OBRNAyRygDgFS7wvFKYBgGKIdvGRSD5AneuuM5/DGPe80FYMCL12AepwB74nZyl0Ti5Mo4ieDKe6+jAPYscSLIngauAocPPWvBvjMPZHP9uCPUXS/nQQmGo+V3f4bdHW0tRPBe+oCVt3D7LvLlDtgccID+wQexlTx4LwwAKG/XOey0u2Ntb0jszDQ00Bclp1qLGGaDOiSNunt4NSbv3zOU0llgGIJ3BmCqtQhK6TRY3q5j/LLUjsOHnTZDc/wuAOQ0XP+w6N0UzTzBzBLLAEi3BqB0AyDzKYP9l9SeASjlOt4enh+72XcGOI3DU18XsOQXo7Qz0xhMEfzxaD3xXckYgk9UBXamJ5woYIjdmVI0SprYEZr8toDsv7FQLCfvrQ/YnV6npI6QdOlv5xJgKqkTXfDePMGsExzg9Rvv7eoPX7dwVQAAAABJRU5ErkJggg==",
|
|
24
|
-
"notion.so": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEmElEQVR42uVb4XGrMAyW3/V/3AniDUo3MBOUDUomKJ0gZALYADpBsgFkAtjAMAF0Ar0/jxwFg02AQni640gv4EhfJfmzJRP4JUHEzq/uGI4AABBCRutFJjQGYRkhY4AgCgOXMurXQCASw1dldJZlt8+UUqCUTgoE+S3jy7K8XVmWQVmW8P39ffu7Mrb+XFmWrXE452DbNry/v08CQh0AHPpfybLs9jnP85by9eemFtu2wfO8Po/QBwIRARsihEDHcZBzjoZhIGMMKaX4z0tWcTHGMEkS7BE9D2g+maYpmKYpdcEphDF2u1dxXV37/V76XZZlkKYpnE6nlke5rgvH4/EuT5ACYJomxHGsNKSuYFPhLkMUSUxLXNeF0+nUAjWKohu4g4CQ+E3L1c7nM0ZRhEIIFELg0iKEQMbYDz0ppej7/vCQ0AFgDUbLQLBtu6Wvbdu9+g4GoEL3fD7jGsXzvFaCZoxhGIZ6IOgAUF2u664SBCGEdJZyHAeLoujEQJoEVfOnZVngeV5fwhnF+po8oiJMdXJUJ00qrtGVIEmVFocCUA3qui68vb0BpbRXuTzPWwRKdp9TOOcQRdF0ADyiNEOfEEKeHtmgOqGq3wEA4jjW8qxFAKgToqby1Xe73a5FoJrv9Ekcx2Ca5n1UeEgIUErBsqwfilUsUGbAFExwwCaBMgQGT4PNK4oiXKs0dZXNg6M9YMAqeoltIqUH/IH/XB5iFrhcLnC9Xlukp7pzziEIgvUBEMcxXK/XltJ1Vue6Lnx8fHSOEYYhHA6H3t95eXkZTRDuToJdEgSB1vuU0t6Vm+d5yDlvLX0BAIMgUK36lElwNgA459pjcM4nyeqrAqAoChRCYBRFWuMoNjIeD4Ch46lCYS4AVjMNlmWpTHZzrpIW9wCdUNhMCMgyuk4obAYAVWLsmhU2AwAiomVZg0NhUwAURdFbaqOUtjYzNwVAxfL6xrYsa9sA6DDGei1ikwB07efLQmGTRIgxBo7j9BKkZiH04YmQTPq4QdfUuYkQqETFDWQAbQoARETHcSb97YcDoCgKZShsdjVY1RHu3dt7+CRYFxVN3mwI6HKD2UNg6rr/Pdygp+tr/hBwXXdWD1D09mnT5NlCQLVSG6JE1/xOKUXLsnr3AVWhMCUAINuPHwOA7/tKEHW2w5MkaY1DKcXj8ThdcbSrV/jz8xN837+rOHo4HCCOY2n9f7/fg2EYwDnX7h26XC4AAGAYBhiGoVVm1y6Pd3lBURRoGMboHLD68nhfy3yWZfD6+trZN7yp8vi/F0hzSlqEnY2UNE1HHZnRzgdLe0DzjEJZlpDnOfi+32qSknlA35mhlmWyLvIoirST2djGSNk7Y9vkiOLhVj4wTfMHstWOzm63m6Srcy4xDAOSJBl2pEQ2M+hWe9d2BUEw/DgJdMxzuiQJVnCkxrKsrk42/YOTMrRs24avr6/Zu0C7eg2rRsrmqRTdxVzl/k8DTpdhs3fn+fkZwjBsJaOmMjLlms2UTYPnpgiDj872nSusktpvd4JOccqUDF02P3BLoDTpk3v2DtZklC4Nnuv0OC6p/BTyFxmRx6YRUfIyAAAAAElFTkSuQmCC",
|
|
25
|
-
"linear.app": "data:image/png;base64,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",
|
|
26
|
-
"vercel.com": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACMUlEQVR42u3ZLa+yYBgH8Os8nqKbjY2RCAYMWHXTIgaKm4FCsBFJJJMfgG9Aur+DnXwHGo1iYCYyATfHdp10zjzu2c458ipc/83mG7/7ut/fAAChx/kHPQ8BEAABEAABEAABEAABEAABEAAB1B1FUUBV1cYRsKlXkiTIOccm/0NjAJZlYZ7niIhoWVa/AARBwCiK8DNRFKEkSf0BcF0Xsyz7AsiyDF3X7QeApmkYhiE+JgxDVFW1+wCMsa++f588z9HzvG4D6Lr+re8/Jo5jNE2zuwCMMfwpjLFuAjiO89/Sf0ySJLVOi7WsBGVZhvV6DYPB4Mf3iqIIu90OZFnuzkrQtu1ftf79gGjbdje6gCRJGAQB/jVBEKAgCK8PcDwe8dnUNBZU+wNpmj4NkCTJaw+Ch8MBxuPx058XRRE8z6t0AHyDCq/H0zQtBAAAcL1eYTQavd6BSBiGhR8eAGA4HMLpdHqtadA0zUJ9/zFpmla5RC7/SznnWHY455VMi6V3AcdxYDKZlF6ms9kMLMtqdxeYz+eVtP5nfN9HRVHaWwGGYcBisahssFqtVrDf79tZAVW3/v35oa7r7asAXddhuVxWvnObTqew2WzaVQGGYfxpt1c0cRyXVgWlVMB2u/3VXr/M8wXTNNtRAZqm1dr692cGhmE0vxDyfR+bShAEhQHei5bP+XyGy+XSyKXm7XZr926QrscJgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIoH35AMeAlc846gXqAAAAAElFTkSuQmCC",
|
|
27
|
-
"openai.com": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFm0lEQVR42u2av2v6ThjHn8+XbwsfcShWqFvTRZycLB3s0MlFaGP/Ae0WKNhJcLJ0ckuhk50UOgecnAuhUHBJu8SlQwtxMtNZ5drhvpPhklxiTo31S3MQSO1pcq88P973PPlDCCHwi8c/8MtHBCACEAGIAEQAIgARgN87/l3XhcbjMby9vcH39zcAAMTjcchkMj9PgIQ8FEUh2WyWAADzkCSJ6LpOfmqEBkBVVSIIgufCnUetViMY47UD+BPGZqjT6cDFxYX1dzabhUqlAoeHh5BMJmE8HsPHxwc8PDxAt9u1zbu+vobn52d4eXmBz89P2NnZgWQyCaenp3BycgKJRGKzXUBRFOupJhIJ0uv1fOcbhkGKxSKXpSCENtMFDMOwbjSbzZLJZDL3O+12m8RiMddCc7kcEUXR0436/f7mARBF0brBeYtXVZUkEgnbokRRJJqmMef3+31SKBRs8+dZ11oB6Lpu3ZiiKL5WQoOaWUvQJ0q7GAAQwzA2A0Cr1bJuijUwxqTRaLhM2Q+W1+j1etb38/n8zwIwTZPIskxSqRQBAFIul31veHY0Gg1fN5mnDWiYqqr+DIBms+lamCzLvosvl8u+ZkvPFwTBc3EIIdtvrhUAQojk83lmdHYCoF3D70npuu4KcnRwZEGTJMmas6iI4gaAMSbpdNq6cLFYJLquW5/5AWCNyWRCarUa00WcnzWbTdtC2+229T/TNNcDoFqt2kTJbMxiAA8AZ0R3Ch3TNG3XAwASi8Ws9Nfv963PvdLnSgHQF6T9DmPMBUDTNJcL5XI5z9jAcg9RFG0WsOiGigsALVlpORoUAMbY9UR5AyRLNTrvJxQApmna/NMZF4IAcB7tdtv2FGlfD6o51hYDVFX19DdeAE4NMJlMuEUSQoiUy2WbmlwkE8AiuzynuQUFIEmSr4kbhmFLbTOl5xfgZFm25lar1c0GEPimGO5SrVY9zZy2BN5sELgo+vfvX+v86+trLeW6YrFond/d3cHu7i7c39+75smybJ3f3t6GUxChU6BT0WGMra1tKpWy7eyWsYB2u00wxi6hVCwWffUJTywAHgXo52vOLa4oisQ0TVuU5wXQarVs8YEurjrdkA7SPMUSLh1A+xormLFSGi14lgHgtCYnADpN8xRKuBoj9XrdOr+8vHT9v1KpAEIIGo2G9dnT09Na4sX29rZ1Pp1Ow+kMZTIZqNVqAADQ7Xbh6urKNScej8PNzQ3oum4LYgAApVIJBoOB5+8PBgMolUpLw6ADdihVYdrfC4WCb25n1f6clV2EEHNHyOMCdJAOLQbQym3eVjVIfPCSwosAoAEGqUYvBYAOOLzylSV56exCZ5ugAOhyPG91CFZRAXamQD/5quu6q1dYKBRs21leAPRWmXdbvBAATdNc0pPVC5QkyZKvCCHmVpiVsoIAmLkbnZrpAk2oAGiTcy6AtftjLdwvZswDkEqliKqqJJfL+arDtQRBFnWEkGtXt0hV2M8C5knj0MvitOl5RV269JVOp33Tk67rrjKZ07rora8XpLUBoLX3vAqO3xNnaYB0Os0soc+sShAE0mq1Fq4CrawxQkffRRqVLA3g90Rp/UA2oT1OB0OeG1NV1dZbmFfwcBZklm2IrrQ3SLvCTAP0ej1mXNA0zaUZcrnc3Ny9qjZYaN1hWhg5mxiiKNrSFe3nQdwGIWSzllX4fSjtcYwxs1nqdeTz+blPXlVVWx9gmS4wWddLUtPpFB4fH+H5+Rne399hNBrB1tYWHB0dwfHxMdTrdVuNQBRFODs7g729PTg4OIDRaAT9fh86nQ68vr5a8xRFgfPz8//fe4LLWoogCCt7H2it7wkGySB+ILLZ7EJvj2zEe4K8YzgcwnA4tCpK+/v7fFWdJcZGAIjeFo8ARAAiABGACEAEIAIQAfiB8R/yJaxaNgYgiwAAAABJRU5ErkJggg==",
|
|
28
|
-
"anthropic.com": "data:image/png;base64,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",
|
|
29
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.recordstableRecipe = exports.tagTone = exports.RecordsTable = exports.defaultRows = exports.defaultColumns = exports.useEditableField = exports.editableInputType = void 0;
|
|
4
|
-
var editable_field_1 = require("./editable-field");
|
|
5
|
-
Object.defineProperty(exports, "editableInputType", { enumerable: true, get: function () { return editable_field_1.editableInputType; } });
|
|
6
|
-
Object.defineProperty(exports, "useEditableField", { enumerable: true, get: function () { return editable_field_1.useEditableField; } });
|
|
7
|
-
var recordstable_1 = require("./recordstable");
|
|
8
|
-
Object.defineProperty(exports, "defaultColumns", { enumerable: true, get: function () { return recordstable_1.defaultColumns; } });
|
|
9
|
-
Object.defineProperty(exports, "defaultRows", { enumerable: true, get: function () { return recordstable_1.defaultRows; } });
|
|
10
|
-
Object.defineProperty(exports, "RecordsTable", { enumerable: true, get: function () { return recordstable_1.RecordsTable; } });
|
|
11
|
-
Object.defineProperty(exports, "tagTone", { enumerable: true, get: function () { return recordstable_1.tagTone; } });
|
|
12
|
-
var recordstable_recipe_1 = require("./recordstable.recipe");
|
|
13
|
-
Object.defineProperty(exports, "recordstableRecipe", { enumerable: true, get: function () { return recordstable_recipe_1.recordstableRecipe; } });
|