@ai-matrx/records-ui 0.101.27 → 0.101.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/index.cjs +2218 -2184
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -2
- package/dist/index.d.ts +7 -2
- package/dist/index.js +66 -32
- package/dist/index.js.map +1 -1
- package/dist/pickers.cjs +5 -3
- package/dist/pickers.cjs.map +1 -1
- package/dist/pickers.js +6 -4
- package/dist/pickers.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.cts
CHANGED
|
@@ -3369,9 +3369,14 @@ declare function choiceNudgeOf(client: RecordsClient): Promise<ChoiceNudge>;
|
|
|
3369
3369
|
*/
|
|
3370
3370
|
declare function useChoiceNudge(enabled?: boolean): ChoiceNudge | null;
|
|
3371
3371
|
|
|
3372
|
+
interface EmbeddedLook {
|
|
3373
|
+
blankEmpty: boolean;
|
|
3374
|
+
choiceDot: boolean;
|
|
3375
|
+
}
|
|
3376
|
+
|
|
3372
3377
|
/** The envelope for one key, when the document carries one. */
|
|
3373
3378
|
declare function envelopeFor(document: RecordDocument | undefined, key: string): ValueEnvelope | undefined;
|
|
3374
|
-
declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
3379
|
+
declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null, look?: EmbeddedLook | null): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
3375
3380
|
/**
|
|
3376
3381
|
* The text of one scalar, with the Field's UNIT and FORMAT applied — FLD-N-1
|
|
3377
3382
|
* says both change the MEANING — and with an id resolved to the NAME of the
|
|
@@ -3441,7 +3446,7 @@ declare function RecordValue({ field, value, document, format, withheld, inCell,
|
|
|
3441
3446
|
* unbound, the words as written.
|
|
3442
3447
|
*/
|
|
3443
3448
|
inCell?: boolean | undefined;
|
|
3444
|
-
}): react.JSX.Element;
|
|
3449
|
+
}): react.JSX.Element | null;
|
|
3445
3450
|
/**
|
|
3446
3451
|
* WHAT ONE CARD SAYS — the kanban's, the calendar's, the gallery's and the pipeline's alike, so
|
|
3447
3452
|
* no card can read a record differently from another. `field` is the card's title column
|
package/dist/index.d.ts
CHANGED
|
@@ -3369,9 +3369,14 @@ declare function choiceNudgeOf(client: RecordsClient): Promise<ChoiceNudge>;
|
|
|
3369
3369
|
*/
|
|
3370
3370
|
declare function useChoiceNudge(enabled?: boolean): ChoiceNudge | null;
|
|
3371
3371
|
|
|
3372
|
+
interface EmbeddedLook {
|
|
3373
|
+
blankEmpty: boolean;
|
|
3374
|
+
choiceDot: boolean;
|
|
3375
|
+
}
|
|
3376
|
+
|
|
3372
3377
|
/** The envelope for one key, when the document carries one. */
|
|
3373
3378
|
declare function envelopeFor(document: RecordDocument | undefined, key: string): ValueEnvelope | undefined;
|
|
3374
|
-
declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
3379
|
+
declare function renderValue(field: Field, value: unknown, document?: RecordDocument, labels?: LabelLookup, stillWaitingFor?: string | null, look?: EmbeddedLook | null): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react.JSX.Element | null;
|
|
3375
3380
|
/**
|
|
3376
3381
|
* The text of one scalar, with the Field's UNIT and FORMAT applied — FLD-N-1
|
|
3377
3382
|
* says both change the MEANING — and with an id resolved to the NAME of the
|
|
@@ -3441,7 +3446,7 @@ declare function RecordValue({ field, value, document, format, withheld, inCell,
|
|
|
3441
3446
|
* unbound, the words as written.
|
|
3442
3447
|
*/
|
|
3443
3448
|
inCell?: boolean | undefined;
|
|
3444
|
-
}): react.JSX.Element;
|
|
3449
|
+
}): react.JSX.Element | null;
|
|
3445
3450
|
/**
|
|
3446
3451
|
* WHAT ONE CARD SAYS — the kanban's, the calendar's, the gallery's and the pipeline's alike, so
|
|
3447
3452
|
* no card can read a record differently from another. `field` is the card's title column
|
package/dist/index.js
CHANGED
|
@@ -5119,7 +5119,7 @@ function useWhoChanged(fieldKey, recordId) {
|
|
|
5119
5119
|
}
|
|
5120
5120
|
|
|
5121
5121
|
// src/values.tsx
|
|
5122
|
-
import { formatColumnValue } from "@ai-matrx/design-system/data-table";
|
|
5122
|
+
import { SWATCH_CLASS, formatColumnValue } from "@ai-matrx/design-system/data-table";
|
|
5123
5123
|
import { formatFieldValue as formatFieldValue3 } from "@ai-matrx/design-system/field-formats";
|
|
5124
5124
|
|
|
5125
5125
|
// src/withheld.tsx
|
|
@@ -5155,6 +5155,25 @@ function WithheldValue({ field: field2, notice }) {
|
|
|
5155
5155
|
// src/values.tsx
|
|
5156
5156
|
import { Badge as Badge5, cn as cn17 } from "@ai-matrx/design-system";
|
|
5157
5157
|
|
|
5158
|
+
// src/embeddedLook.tsx
|
|
5159
|
+
import { createContext as createContext4, useContext as useContext4 } from "react";
|
|
5160
|
+
var EMBEDDED_LOOK = { blankEmpty: true, choiceDot: true };
|
|
5161
|
+
var EmbeddedLookContext = createContext4(null);
|
|
5162
|
+
var EmbeddedLookProvider = EmbeddedLookContext.Provider;
|
|
5163
|
+
function useEmbeddedLook() {
|
|
5164
|
+
return useContext4(EmbeddedLookContext);
|
|
5165
|
+
}
|
|
5166
|
+
var EMBEDDED_TABLE_CLASS = [
|
|
5167
|
+
"[&_tbody_td]:h-10",
|
|
5168
|
+
"[&_tbody_td]:align-middle!",
|
|
5169
|
+
"[&_tbody_td]:border-r",
|
|
5170
|
+
"[&_tbody_td]:border-border",
|
|
5171
|
+
"[&_tbody_td:last-child]:border-r-0",
|
|
5172
|
+
"[&_thead_th]:border-r",
|
|
5173
|
+
"[&_thead_th]:border-border",
|
|
5174
|
+
"[&_thead_th:last-child]:border-r-0"
|
|
5175
|
+
].join(" ");
|
|
5176
|
+
|
|
5158
5177
|
// src/enumLabels.ts
|
|
5159
5178
|
function exhaustiveValuesOf() {
|
|
5160
5179
|
return function(values) {
|
|
@@ -6145,7 +6164,7 @@ function SourceArchivedValue({ state }) {
|
|
|
6145
6164
|
return /* @__PURE__ */ jsx26("span", { className: "text-xs italic text-muted-foreground", title: sourceArchivedSentence(state), "data-records-source-archived": state.field_id ?? "", children: SOURCE_ARCHIVED_WORDS });
|
|
6146
6165
|
}
|
|
6147
6166
|
var ABSENCE_WORDS = ABSENCE_WORD_LABEL;
|
|
6148
|
-
function renderValue(field2, value, document2, labels, stillWaitingFor) {
|
|
6167
|
+
function renderValue(field2, value, document2, labels, stillWaitingFor, look) {
|
|
6149
6168
|
const archivedSource = sourceArchivedOf2(value);
|
|
6150
6169
|
if (archivedSource) return /* @__PURE__ */ jsx26(SourceArchivedValue, { state: archivedSource });
|
|
6151
6170
|
const envelope = envelopeFor(document2, field2.key);
|
|
@@ -6165,6 +6184,7 @@ function renderValue(field2, value, document2, labels, stillWaitingFor) {
|
|
|
6165
6184
|
if (computed?.why) {
|
|
6166
6185
|
return /* @__PURE__ */ jsx26("span", { className: "text-muted-foreground", title: computed.why, "data-records-empty-why": computed.kind, children: "\u2014" });
|
|
6167
6186
|
}
|
|
6187
|
+
if (look?.blankEmpty) return null;
|
|
6168
6188
|
return /* @__PURE__ */ jsx26("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
6169
6189
|
}
|
|
6170
6190
|
if (isSignatureField(field2)) return /* @__PURE__ */ jsx26(SignatureValue, { value, fieldKey: field2.key, document: document2 });
|
|
@@ -6180,8 +6200,8 @@ function renderValue(field2, value, document2, labels, stillWaitingFor) {
|
|
|
6180
6200
|
if (kv) return /* @__PURE__ */ jsx26(KindValueCell, { kv, where: "cell", title: field2.label });
|
|
6181
6201
|
const chosen = kind === "select" || kind === "multi_select";
|
|
6182
6202
|
const chipOf = (item) => {
|
|
6183
|
-
const
|
|
6184
|
-
return { className:
|
|
6203
|
+
const chipLook = choiceChipLookOf(field2, item, scalarText(field2, item, labels));
|
|
6204
|
+
return { className: chipLook.className, tinted: chipLook.color !== null, dot: SWATCH_CLASS[chipLook.color ?? "gray"] };
|
|
6185
6205
|
};
|
|
6186
6206
|
if (chosen) {
|
|
6187
6207
|
const items = Array.isArray(value) ? value : [value];
|
|
@@ -6195,6 +6215,7 @@ function renderValue(field2, value, document2, labels, stillWaitingFor) {
|
|
|
6195
6215
|
"data-records-choice-chip": "",
|
|
6196
6216
|
...chip.tinted ? { "data-records-choice-tint": "" } : {},
|
|
6197
6217
|
children: [
|
|
6218
|
+
look?.choiceDot ? /* @__PURE__ */ jsx26("span", { "aria-hidden": "true", "data-records-choice-dot": "", className: cn17("mr-1.5 inline-block size-1.5 shrink-0 rounded-full", chip.dot) }) : null,
|
|
6198
6219
|
statusMark(field2, item, Array.isArray(value) ? void 0 : document2),
|
|
6199
6220
|
scalarText(field2, item, labels, Array.isArray(value) ? void 0 : stillWaitingFor)
|
|
6200
6221
|
]
|
|
@@ -6306,6 +6327,7 @@ function RecordValue({
|
|
|
6306
6327
|
const ui = useRecordsUi();
|
|
6307
6328
|
const labels = useRecordLabels(ONE_FIELD_ARRAY_CACHE(field2));
|
|
6308
6329
|
const stillWaitingFor = useLabelWait(field2);
|
|
6330
|
+
const embeddedLook = useEmbeddedLook();
|
|
6309
6331
|
if (withheld && (value === null || value === void 0)) return /* @__PURE__ */ jsx26(WithheldValue, { field: field2, notice: withheld });
|
|
6310
6332
|
if (value === null || value === void 0) {
|
|
6311
6333
|
const failed = workedOutErrorFor(document2, field2.key);
|
|
@@ -6317,7 +6339,7 @@ function RecordValue({
|
|
|
6317
6339
|
}
|
|
6318
6340
|
const archivedSource = sourceArchivedOf2(value);
|
|
6319
6341
|
if (archivedSource) return /* @__PURE__ */ jsx26(SourceArchivedValue, { state: archivedSource });
|
|
6320
|
-
if (formulaHasNothingToWorkOn(field2, document2)) return /* @__PURE__ */ jsx26("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
6342
|
+
if (formulaHasNothingToWorkOn(field2, document2)) return embeddedLook?.blankEmpty ? null : /* @__PURE__ */ jsx26("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
6321
6343
|
if (value !== null && value !== void 0 && value !== "" && !envelopeFor(document2, field2.key)?.absent) {
|
|
6322
6344
|
const newer = newerKindValue(field2, value, { inCell });
|
|
6323
6345
|
if (newer !== void 0) return /* @__PURE__ */ jsx26(Fragment6, { children: newer });
|
|
@@ -6345,10 +6367,11 @@ function RecordValue({
|
|
|
6345
6367
|
}
|
|
6346
6368
|
}
|
|
6347
6369
|
const shown4 = format ?? formatForField(field2);
|
|
6348
|
-
const
|
|
6370
|
+
const shape = shown4 && (shown4.id === "date" || shown4.id === "datetime") && isDateField(field2) ? dateFormatFor(field2, value) : void 0;
|
|
6371
|
+
const dated = shape ? { ...shape, ...shown4?.options ? { options: shown4.options } : {} } : void 0;
|
|
6349
6372
|
const formatted = shown4 ? formatColumnValue({ format: dated ?? shown4 }, value) : null;
|
|
6350
6373
|
if (formatted) return /* @__PURE__ */ jsx26(FormattedValue, { value, format: dated ?? shown4 });
|
|
6351
|
-
return /* @__PURE__ */ jsx26(Fragment6, { children: renderValue(field2, value, document2, labels, stillWaitingFor) });
|
|
6374
|
+
return /* @__PURE__ */ jsx26(Fragment6, { children: renderValue(field2, value, document2, labels, stillWaitingFor, embeddedLook) });
|
|
6352
6375
|
}
|
|
6353
6376
|
var ONE_FIELD_ARRAYS = /* @__PURE__ */ new WeakMap();
|
|
6354
6377
|
function ONE_FIELD_ARRAY_CACHE(field2) {
|
|
@@ -8766,7 +8789,7 @@ import {
|
|
|
8766
8789
|
SelectValue as SelectValue5,
|
|
8767
8790
|
cn as cn21
|
|
8768
8791
|
} from "@ai-matrx/design-system";
|
|
8769
|
-
import { STYLE_COLORS as STYLE_COLORS3, STYLE_COLOR_LABELS, SWATCH_CLASS } from "@ai-matrx/design-system/data-table";
|
|
8792
|
+
import { STYLE_COLORS as STYLE_COLORS3, STYLE_COLOR_LABELS, SWATCH_CLASS as SWATCH_CLASS2 } from "@ai-matrx/design-system/data-table";
|
|
8770
8793
|
import { Fragment as Fragment9, jsx as jsx35, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
8771
8794
|
var rowSeed = 0;
|
|
8772
8795
|
var nextRow = () => `new-${rowSeed += 1}`;
|
|
@@ -8989,7 +9012,7 @@ function ChoiceSwatch({ words: words2, color, onColor }) {
|
|
|
8989
9012
|
"data-records-choice-swatch": color ?? "none",
|
|
8990
9013
|
className: cn21(
|
|
8991
9014
|
"h-4 w-4 shrink-0 rounded-full",
|
|
8992
|
-
color ?
|
|
9015
|
+
color ? SWATCH_CLASS2[color] : "border border-border bg-background"
|
|
8993
9016
|
)
|
|
8994
9017
|
}
|
|
8995
9018
|
) }),
|
|
@@ -9016,7 +9039,7 @@ function ChoiceSwatch({ words: words2, color, onColor }) {
|
|
|
9016
9039
|
title: STYLE_COLOR_LABELS[c],
|
|
9017
9040
|
"data-records-choice-color": `${words2}:${c}`,
|
|
9018
9041
|
onClick: () => pick(c),
|
|
9019
|
-
className: cn21("h-5 w-5 rounded-full",
|
|
9042
|
+
className: cn21("h-5 w-5 rounded-full", SWATCH_CLASS2[c], color === c && "ring-2 ring-ring ring-offset-1")
|
|
9020
9043
|
},
|
|
9021
9044
|
c
|
|
9022
9045
|
))
|
|
@@ -13382,6 +13405,14 @@ function asField(f) {
|
|
|
13382
13405
|
relation_target: f.relation_target ?? null
|
|
13383
13406
|
};
|
|
13384
13407
|
}
|
|
13408
|
+
function CustomValue({ field: field2, value }) {
|
|
13409
|
+
const choice = isChoiceField(field2);
|
|
13410
|
+
const index = useChoiceOptions(choice ? [field2] : [], choice ? [field2.key] : []);
|
|
13411
|
+
const options = index.get(field2.key);
|
|
13412
|
+
if (!choice || !options) return renderValue(field2, value);
|
|
13413
|
+
const worded = (v) => optionFor(options, v)?.label ?? v;
|
|
13414
|
+
return renderValue(field2, Array.isArray(value) ? value.map(worded) : worded(value));
|
|
13415
|
+
}
|
|
13385
13416
|
function CustomFieldsSection({
|
|
13386
13417
|
entityToken,
|
|
13387
13418
|
recordId,
|
|
@@ -13701,7 +13732,7 @@ function CustomFieldsSection({
|
|
|
13701
13732
|
setCellValue(values[f.key]);
|
|
13702
13733
|
setCellKey(f.key);
|
|
13703
13734
|
},
|
|
13704
|
-
children: isEmptyValue(values[f.key]) ? /* @__PURE__ */ jsx47("span", { className: "text-muted-foreground", children: "\u2014" }) :
|
|
13735
|
+
children: isEmptyValue(values[f.key]) ? /* @__PURE__ */ jsx47("span", { className: "text-muted-foreground", children: "\u2014" }) : /* @__PURE__ */ jsx47(CustomValue, { field: asField(f), value: values[f.key] })
|
|
13705
13736
|
}
|
|
13706
13737
|
) })
|
|
13707
13738
|
] }, f.id)) })
|
|
@@ -18409,12 +18440,12 @@ function shapeTextOfNode(node) {
|
|
|
18409
18440
|
}
|
|
18410
18441
|
|
|
18411
18442
|
// src/toolbarSlot.tsx
|
|
18412
|
-
import { createContext as
|
|
18443
|
+
import { createContext as createContext5, useContext as useContext5 } from "react";
|
|
18413
18444
|
import { createPortal } from "react-dom";
|
|
18414
18445
|
import { Fragment as Fragment18, jsx as jsx58 } from "react/jsx-runtime";
|
|
18415
|
-
var TableToolbarSlotContext =
|
|
18446
|
+
var TableToolbarSlotContext = createContext5(void 0);
|
|
18416
18447
|
function useTableToolbarSlot() {
|
|
18417
|
-
return
|
|
18448
|
+
return useContext5(TableToolbarSlotContext);
|
|
18418
18449
|
}
|
|
18419
18450
|
function InTableToolbar({ children }) {
|
|
18420
18451
|
const slot = useTableToolbarSlot();
|
|
@@ -18422,13 +18453,13 @@ function InTableToolbar({ children }) {
|
|
|
18422
18453
|
if (slot === null) return null;
|
|
18423
18454
|
return createPortal(children, slot);
|
|
18424
18455
|
}
|
|
18425
|
-
var TableToolbarFoldContext =
|
|
18456
|
+
var TableToolbarFoldContext = createContext5(0);
|
|
18426
18457
|
function useTableToolbarFold() {
|
|
18427
|
-
return
|
|
18458
|
+
return useContext5(TableToolbarFoldContext);
|
|
18428
18459
|
}
|
|
18429
|
-
var TableToolbarSheetExtrasContext =
|
|
18460
|
+
var TableToolbarSheetExtrasContext = createContext5(void 0);
|
|
18430
18461
|
function useTableToolbarSheetExtras() {
|
|
18431
|
-
return
|
|
18462
|
+
return useContext5(TableToolbarSheetExtrasContext);
|
|
18432
18463
|
}
|
|
18433
18464
|
|
|
18434
18465
|
// src/GridLayoutMenu.tsx
|
|
@@ -20926,7 +20957,7 @@ function HandOrderDialog({
|
|
|
20926
20957
|
}
|
|
20927
20958
|
|
|
20928
20959
|
// src/viewAddress.ts
|
|
20929
|
-
import { createContext as
|
|
20960
|
+
import { createContext as createContext6, useContext as useContext6 } from "react";
|
|
20930
20961
|
var VIEW_ADDRESS_KEYS = ["sort", "cf", "q", "hide", "page"];
|
|
20931
20962
|
function isViewAddressEmpty(state) {
|
|
20932
20963
|
if (!state) return true;
|
|
@@ -20980,8 +21011,8 @@ function viewAddressFromParams(get) {
|
|
|
20980
21011
|
function sameViewAddress(a, b) {
|
|
20981
21012
|
return JSON.stringify(viewAddressToParams(a)) === JSON.stringify(viewAddressToParams(b));
|
|
20982
21013
|
}
|
|
20983
|
-
var ViewAddressContext =
|
|
20984
|
-
var useViewAddress = () =>
|
|
21014
|
+
var ViewAddressContext = createContext6(null);
|
|
21015
|
+
var useViewAddress = () => useContext6(ViewAddressContext);
|
|
20985
21016
|
|
|
20986
21017
|
// src/Grid.tsx
|
|
20987
21018
|
import { Fragment as Fragment23, jsx as jsx68, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
@@ -22358,6 +22389,8 @@ function GridBody({
|
|
|
22358
22389
|
const tableToolbar = useMemo35(
|
|
22359
22390
|
() => ({
|
|
22360
22391
|
search: !embedded,
|
|
22392
|
+
// The host (Spaces) has its own Properties menu: an embedded table draws no Columns button.
|
|
22393
|
+
...embedded ? { columns: false } : {},
|
|
22361
22394
|
searchPlaceholder: "Search records",
|
|
22362
22395
|
/*
|
|
22363
22396
|
* A PHONE (tranche 6o): search and the one Tools button sit side by side at the START of
|
|
@@ -22745,7 +22778,7 @@ function GridBody({
|
|
|
22745
22778
|
"data-records-grid-wrap": look.wrap ? "on" : "off",
|
|
22746
22779
|
"data-records-grid-fit": look.fit,
|
|
22747
22780
|
onPasteCapture: takeEmptyTablePaste,
|
|
22748
|
-
children: /* @__PURE__ */ jsx68(
|
|
22781
|
+
children: /* @__PURE__ */ jsx68(EmbeddedLookProvider, { value: embedded ? EMBEDDED_LOOK : null, children: /* @__PURE__ */ jsx68(
|
|
22749
22782
|
MatrxDataTable,
|
|
22750
22783
|
{
|
|
22751
22784
|
...fills ? { className: "min-h-0 flex-1" } : {},
|
|
@@ -22765,7 +22798,8 @@ function GridBody({
|
|
|
22765
22798
|
...embedded ? { appearance: "embedded" } : {},
|
|
22766
22799
|
tableClassName: cn34(
|
|
22767
22800
|
!look.wrap && "[&_tbody_td]:max-w-[28rem] [&_tbody_td]:overflow-hidden [&_tbody_td]:text-ellipsis [&_tbody_td]:whitespace-nowrap! [&_tbody_td_*]:whitespace-nowrap!",
|
|
22768
|
-
look.fit === "scroll" && "sm:[&>table]:w-max! sm:[&>table]:max-w-none! sm:[&>table]:min-w-full!"
|
|
22801
|
+
look.fit === "scroll" && "sm:[&>table]:w-max! sm:[&>table]:max-w-none! sm:[&>table]:min-w-full!",
|
|
22802
|
+
embedded && EMBEDDED_TABLE_CLASS
|
|
22769
22803
|
),
|
|
22770
22804
|
footerRows,
|
|
22771
22805
|
...embedded ? { copy: false } : copyConfig ? { copy: copyConfig } : {},
|
|
@@ -22825,7 +22859,7 @@ function GridBody({
|
|
|
22825
22859
|
toolbar: tableToolbar
|
|
22826
22860
|
},
|
|
22827
22861
|
`records-grid-${tableId}:${openingKey}`
|
|
22828
|
-
)
|
|
22862
|
+
) })
|
|
22829
22863
|
}
|
|
22830
22864
|
),
|
|
22831
22865
|
summaries.error ? /* @__PURE__ */ jsx68(RefusalNotice, { error: summaries.error }) : null,
|
|
@@ -27933,7 +27967,7 @@ import { Button as Button67, Select as Select16, SelectContent as SelectContent1
|
|
|
27933
27967
|
import {
|
|
27934
27968
|
CHOICE_CHIP_CLASS as CHOICE_CHIP_CLASS4,
|
|
27935
27969
|
EMPTY_TABLE_STYLE as EMPTY_TABLE_STYLE2,
|
|
27936
|
-
SWATCH_CLASS as
|
|
27970
|
+
SWATCH_CLASS as SWATCH_CLASS3,
|
|
27937
27971
|
resolveRowColor as resolveRowColor4,
|
|
27938
27972
|
ROW_TINT_CLASS as ROW_TINT_CLASS3
|
|
27939
27973
|
} from "@ai-matrx/design-system/data-table";
|
|
@@ -31977,7 +32011,7 @@ function Kanban({
|
|
|
31977
32011
|
void move(card, name, to);
|
|
31978
32012
|
},
|
|
31979
32013
|
children: [
|
|
31980
|
-
columnColor(name) ? /* @__PURE__ */ jsx105("span", { "aria-hidden": "true", "data-card-accent": columnColor(name), className: cn53("absolute inset-y-0.5 left-0 w-1 rounded",
|
|
32014
|
+
columnColor(name) ? /* @__PURE__ */ jsx105("span", { "aria-hidden": "true", "data-card-accent": columnColor(name), className: cn53("absolute inset-y-0.5 left-0 w-1 rounded", SWATCH_CLASS3[columnColor(name)]) }) : null,
|
|
31981
32015
|
/* @__PURE__ */ jsx105(
|
|
31982
32016
|
RecordActionMenu,
|
|
31983
32017
|
{
|
|
@@ -35912,7 +35946,7 @@ import { BasicInput as BasicInput24, Button as Button78, cn as cn66 } from "@ai-
|
|
|
35912
35946
|
// src/AccentSwatches.tsx
|
|
35913
35947
|
import { PORTAL_ACCENTS } from "@ai-matrx/records";
|
|
35914
35948
|
import { cn as cn64 } from "@ai-matrx/design-system";
|
|
35915
|
-
import { STYLE_COLOR_LABELS as STYLE_COLOR_LABELS3, SWATCH_CLASS as
|
|
35949
|
+
import { STYLE_COLOR_LABELS as STYLE_COLOR_LABELS3, SWATCH_CLASS as SWATCH_CLASS4 } from "@ai-matrx/design-system/data-table";
|
|
35916
35950
|
import { jsx as jsx116, jsxs as jsxs105 } from "react/jsx-runtime";
|
|
35917
35951
|
function AccentSwatches({ value, onChange, options = PORTAL_ACCENTS, noneLabel = "App colour" }) {
|
|
35918
35952
|
return /* @__PURE__ */ jsxs105("div", { className: "flex flex-wrap gap-1.5", role: "radiogroup", "aria-label": "Colour", children: [
|
|
@@ -35939,7 +35973,7 @@ function AccentSwatches({ value, onChange, options = PORTAL_ACCENTS, noneLabel =
|
|
|
35939
35973
|
"aria-label": STYLE_COLOR_LABELS3[c],
|
|
35940
35974
|
title: STYLE_COLOR_LABELS3[c],
|
|
35941
35975
|
onClick: () => onChange(c),
|
|
35942
|
-
className: cn64("h-7 w-7 rounded-full border-2",
|
|
35976
|
+
className: cn64("h-7 w-7 rounded-full border-2", SWATCH_CLASS4[c], value === c ? "border-foreground" : "border-transparent")
|
|
35943
35977
|
},
|
|
35944
35978
|
c
|
|
35945
35979
|
))
|
|
@@ -36931,7 +36965,7 @@ function Invite({ card, onInvited }) {
|
|
|
36931
36965
|
|
|
36932
36966
|
// src/FormLookFrame.tsx
|
|
36933
36967
|
import { cn as cn68 } from "@ai-matrx/design-system";
|
|
36934
|
-
import { SWATCH_CLASS as
|
|
36968
|
+
import { SWATCH_CLASS as SWATCH_CLASS5 } from "@ai-matrx/design-system/data-table";
|
|
36935
36969
|
import { jsx as jsx120, jsxs as jsxs109 } from "react/jsx-runtime";
|
|
36936
36970
|
var ACCENT_PRIMARY = {
|
|
36937
36971
|
slate: "215 19% 35%",
|
|
@@ -36950,15 +36984,15 @@ function safeHref(url) {
|
|
|
36950
36984
|
return null;
|
|
36951
36985
|
}
|
|
36952
36986
|
function formLookView(style, fallbackName) {
|
|
36953
|
-
const accent = style?.accent && style.accent in
|
|
36987
|
+
const accent = style?.accent && style.accent in SWATCH_CLASS5 ? style.accent : null;
|
|
36954
36988
|
const https = (u) => typeof u === "string" && /^https:\/\//i.test(u) ? u : null;
|
|
36955
36989
|
const links = Array.isArray(style?.footer_links) ? style.footer_links : [];
|
|
36956
36990
|
return {
|
|
36957
36991
|
name: (style?.display_name ?? "").trim() || fallbackName.trim() || "Form",
|
|
36958
36992
|
logoUrl: https(style?.logo_url),
|
|
36959
36993
|
coverUrl: https(style?.cover_url),
|
|
36960
|
-
bandClass: accent ?
|
|
36961
|
-
monogramClass: accent ? `${
|
|
36994
|
+
bandClass: accent ? SWATCH_CLASS5[accent] : null,
|
|
36995
|
+
monogramClass: accent ? `${SWATCH_CLASS5[accent]} text-white` : "bg-primary text-primary-foreground",
|
|
36962
36996
|
primaryVars: accent && ACCENT_PRIMARY[accent] ? {
|
|
36963
36997
|
"--primary": ACCENT_PRIMARY[accent],
|
|
36964
36998
|
"--primary-foreground": "0 0% 100%",
|