@ai-matrx/design-system 0.55.0 → 0.56.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/CHANGELOG.md +39 -0
- package/README.md +20 -0
- package/dist/data-table/copy-helpers.d.cts +1 -1
- package/dist/data-table/copy-helpers.d.ts +1 -1
- package/dist/data-table/filter-engine.d.cts +1 -1
- package/dist/data-table/filter-engine.d.ts +1 -1
- package/dist/data-table/host.d.cts +1 -1
- package/dist/data-table/host.d.ts +1 -1
- package/dist/data-table/index.cjs +2294 -2238
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.d.cts +8 -3
- package/dist/data-table/index.d.ts +8 -3
- package/dist/data-table/index.js +2406 -2350
- package/dist/data-table/index.js.map +1 -1
- package/dist/data-table/infer-filter.d.cts +1 -1
- package/dist/data-table/infer-filter.d.ts +1 -1
- package/dist/data-table/layered-filters.d.cts +1 -1
- package/dist/data-table/layered-filters.d.ts +1 -1
- package/dist/data-table/query-control.d.cts +1 -1
- package/dist/data-table/query-control.d.ts +1 -1
- package/dist/data-table/types.cjs.map +1 -1
- package/dist/data-table/types.d.cts +1 -1
- package/dist/data-table/types.d.ts +1 -1
- package/dist/data-table/url-state.d.cts +1 -1
- package/dist/data-table/url-state.d.ts +1 -1
- package/dist/data-table/xlsx.d.cts +1 -1
- package/dist/data-table/xlsx.d.ts +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/{layered-filters-v-hFI3Pk.d.cts → layered-filters-CNFxkmfs.d.cts} +21 -10
- package/dist/{layered-filters-DlGwwJbD.d.ts → layered-filters-cXDqSLSR.d.ts} +21 -10
- package/dist/styles.css +46 -27
- package/dist/tokens.css +19 -5
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ContentTransferReference } from './content-transfer.cjs';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
3
|
+
import { ReactNode, ComponentType, MouseEvent } from 'react';
|
|
4
4
|
import { AgentPayloadInput, AiVariant, AiCustomSource, CopyExportConfig } from './data-table/copy-types.cjs';
|
|
5
5
|
import { TableStyle, ChoiceColorLookup } from './data-table/table-style.cjs';
|
|
6
6
|
import { F as FieldFormatConfig } from './types-JnZD8wM0.cjs';
|
|
@@ -95,6 +95,21 @@ type TableSearchMatchMode = "contains" | "whole_words";
|
|
|
95
95
|
type CellEditType = "string" | "number" | "boolean" | "select"
|
|
96
96
|
/** Free-text multi-value chips (string[] cells: tags, labels, aliases). */
|
|
97
97
|
| "tags" | "date" | false;
|
|
98
|
+
/** The table owns action markup and geometry; hosts supply behavior and an icon component only. */
|
|
99
|
+
interface MatrxTableIconAction {
|
|
100
|
+
id: string;
|
|
101
|
+
icon: ComponentType<{
|
|
102
|
+
className?: string;
|
|
103
|
+
"aria-hidden"?: boolean;
|
|
104
|
+
}>;
|
|
105
|
+
label: string;
|
|
106
|
+
tooltip?: string;
|
|
107
|
+
onClick: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
108
|
+
disabled?: boolean;
|
|
109
|
+
loading?: boolean;
|
|
110
|
+
tone?: "default" | "primary" | "destructive" | "success" | "warning";
|
|
111
|
+
variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link";
|
|
112
|
+
}
|
|
98
113
|
interface MatrxColumnDef<T> {
|
|
99
114
|
/** Stable id used for sort/filter state. Defaults to `accessorKey` when set. */
|
|
100
115
|
id?: string;
|
|
@@ -118,6 +133,8 @@ interface MatrxColumnDef<T> {
|
|
|
118
133
|
label?: string;
|
|
119
134
|
/** Cell renderer. Defaults to stringified accessor value. */
|
|
120
135
|
cell?: (row: T, index: number) => ReactNode;
|
|
136
|
+
/** An explicitly declared custom actions column. Arbitrary content never enters the built-in Actions column. */
|
|
137
|
+
customActions?: (row: T, controls: MatrxDataTableRecordControls) => ReactNode;
|
|
121
138
|
/** Sortable unless explicitly false. Default true. */
|
|
122
139
|
sortable?: boolean;
|
|
123
140
|
/**
|
|
@@ -1629,8 +1646,8 @@ interface MatrxDataTableProps<T> {
|
|
|
1629
1646
|
* the table owns checkbox selection and Alchemy copy for loaded rows.
|
|
1630
1647
|
*/
|
|
1631
1648
|
selection?: false | MatrxDataTableSelectionConfig<T>;
|
|
1632
|
-
/**
|
|
1633
|
-
rowActions?: (row: T, controls: MatrxDataTableRecordControls) =>
|
|
1649
|
+
/** Icon-only actions in the built-in Actions column. Labels are accessible names/tooltips, never button text. */
|
|
1650
|
+
rowActions?: (row: T, controls: MatrxDataTableRecordControls) => readonly MatrxTableIconAction[];
|
|
1634
1651
|
/** Extra rows rendered in the table footer with the same columns as data rows. */
|
|
1635
1652
|
footerRows?: T[];
|
|
1636
1653
|
/** Optional KPIs above the toolbar and aligned totals in the canonical footer. */
|
|
@@ -1703,12 +1720,6 @@ interface MatrxDataTableProps<T> {
|
|
|
1703
1720
|
* scrolls. A phone always scrolls: a fitted phone table is columns too narrow to read.
|
|
1704
1721
|
*/
|
|
1705
1722
|
fitToWidth?: boolean | undefined;
|
|
1706
|
-
/**
|
|
1707
|
-
* WHAT THE ACTIONS HEADER OFFERS, beside its word — the table's own "add a row action" and the
|
|
1708
|
-
* actions menu (merged-grid review 2, G4: "the ACTIONS header has no controls at all"). Drawn
|
|
1709
|
-
* only where the Actions column is.
|
|
1710
|
-
*/
|
|
1711
|
-
rowActionsHeader?: ReactNode;
|
|
1712
1723
|
/** Highlight an index in the currently rendered page without selecting it. */
|
|
1713
1724
|
highlightedIndex?: number | undefined;
|
|
1714
1725
|
/** Receives the complete visible local view after local processing, before paging. Attaching after absence receives one snapshot; callback identity changes alone do not notify. */
|
|
@@ -1840,4 +1851,4 @@ declare function columnFiltersToLayeredRules(filters: ColumnFiltersState, fieldI
|
|
|
1840
1851
|
declare function layeredFilterMatchesValue(value: unknown, rule: LayeredFilterRule): boolean;
|
|
1841
1852
|
declare function layeredFilterRuleSummary(rule: LayeredFilterRule, fields: readonly LayeredFilterField[]): string;
|
|
1842
1853
|
|
|
1843
|
-
export { type
|
|
1854
|
+
export { type SpreadsheetSelection as $, type AnyOfColumnSearch as A, type MatrxDataTableHierarchyMove as B, type ColumnFiltersState as C, type MatrxDataTableMobileCardControls as D, type MatrxDataTableMultiExpandedDetailConfig as E, type MatrxDataTableQueryControl as F, type MatrxDataTableReadStatus as G, type MatrxDataTableSelectionConfig as H, type MatrxDataTableSingleExpandedDetailConfig as I, type MatrxDataTableSourceProcessing as J, type MatrxDataTableSpreadsheetConfig as K, type LayeredFilterRule as L, type MatrxColumnDef as M, type MatrxDataTableStyleConfig as N, type MatrxDataTableSummaryConfig as O, type MatrxDataTableSummaryContext as P, type MatrxDataTableSummaryMetric as Q, type MatrxDataTableToolbar as R, type SortState as S, type TableSearchMatchMode as T, type MatrxDataTableUrlStateConfig as U, type MatrxDataTableVirtualizeConfig as V, type MatrxDataTableWindowConfig as W, type MatrxTablePagination as X, type NumberFilterOp as Y, type SavedTableViewTab as Z, type SortDirection as _, type ColumnFilterValue as a, type TableRankedSearchOptions as a0, type TableSearchRole as a1, type TableSearchScope as a2, type TableViewQuery as a3, type TableViewTab as a4, TableViewTabs as a5, type TableViewTabsProps as a6, type TableViewTabsStore as a7, type TextFilterMode as a8, type ToolbarFacet as a9, inferTableSearchRole as aa, rankTableSearchRows as ab, resolveTableSearchScopes as ac, LAYERED_FILTER_OPERATORS as ad, LAYERED_FILTER_OPERATOR_LABELS as ae, type LayeredFilterField as af, type LayeredFilterOperator as ag, columnFiltersToLayeredRules as ah, completeLayeredFilterRules as ai, decodeLayeredFilterRules as aj, encodeLayeredFilterRules as ak, isCompleteLayeredFilterRule as al, isLayeredFilterOperator as am, layeredFilterMatchesValue as an, layeredFilterNeedsValue as ao, layeredFilterRuleSummary as ap, operatorsForLayeredField as aq, type TableSavedViewsProps as b, type MatrxDataTableDensity as c, type MatrxDataTableRecordControls as d, type MatrxDataTableQueryState as e, type ColumnFilterKind as f, type MatrxDataTableCopyConfig as g, type MatrxTableIconAction as h, type MatrxDataTableProps as i, type MatrxDataTableAppearance as j, type TableViewSnapshot as k, type MatrxDataTableRead as l, type ColumnMarker as m, type CellEditType as n, type CellEditsMap as o, type MatrxDataTableContextMenuConfig as p, type MatrxDataTableCoverageConfig as q, type MatrxDataTableDetailConfig as r, type MatrxDataTableDrillConfig as s, type MatrxDataTableEditConfig as t, type MatrxDataTableEmptyState as u, type MatrxDataTableExpandedDetailConfig as v, type MatrxDataTableFacetsConfig as w, type MatrxDataTableFilterUi as x, type MatrxDataTableGroupingConfig as y, type MatrxDataTableHierarchyConfig as z };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ContentTransferReference } from './content-transfer.js';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
3
|
+
import { ReactNode, ComponentType, MouseEvent } from 'react';
|
|
4
4
|
import { AgentPayloadInput, AiVariant, AiCustomSource, CopyExportConfig } from './data-table/copy-types.js';
|
|
5
5
|
import { TableStyle, ChoiceColorLookup } from './data-table/table-style.js';
|
|
6
6
|
import { F as FieldFormatConfig } from './types-JnZD8wM0.js';
|
|
@@ -95,6 +95,21 @@ type TableSearchMatchMode = "contains" | "whole_words";
|
|
|
95
95
|
type CellEditType = "string" | "number" | "boolean" | "select"
|
|
96
96
|
/** Free-text multi-value chips (string[] cells: tags, labels, aliases). */
|
|
97
97
|
| "tags" | "date" | false;
|
|
98
|
+
/** The table owns action markup and geometry; hosts supply behavior and an icon component only. */
|
|
99
|
+
interface MatrxTableIconAction {
|
|
100
|
+
id: string;
|
|
101
|
+
icon: ComponentType<{
|
|
102
|
+
className?: string;
|
|
103
|
+
"aria-hidden"?: boolean;
|
|
104
|
+
}>;
|
|
105
|
+
label: string;
|
|
106
|
+
tooltip?: string;
|
|
107
|
+
onClick: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
108
|
+
disabled?: boolean;
|
|
109
|
+
loading?: boolean;
|
|
110
|
+
tone?: "default" | "primary" | "destructive" | "success" | "warning";
|
|
111
|
+
variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link";
|
|
112
|
+
}
|
|
98
113
|
interface MatrxColumnDef<T> {
|
|
99
114
|
/** Stable id used for sort/filter state. Defaults to `accessorKey` when set. */
|
|
100
115
|
id?: string;
|
|
@@ -118,6 +133,8 @@ interface MatrxColumnDef<T> {
|
|
|
118
133
|
label?: string;
|
|
119
134
|
/** Cell renderer. Defaults to stringified accessor value. */
|
|
120
135
|
cell?: (row: T, index: number) => ReactNode;
|
|
136
|
+
/** An explicitly declared custom actions column. Arbitrary content never enters the built-in Actions column. */
|
|
137
|
+
customActions?: (row: T, controls: MatrxDataTableRecordControls) => ReactNode;
|
|
121
138
|
/** Sortable unless explicitly false. Default true. */
|
|
122
139
|
sortable?: boolean;
|
|
123
140
|
/**
|
|
@@ -1629,8 +1646,8 @@ interface MatrxDataTableProps<T> {
|
|
|
1629
1646
|
* the table owns checkbox selection and Alchemy copy for loaded rows.
|
|
1630
1647
|
*/
|
|
1631
1648
|
selection?: false | MatrxDataTableSelectionConfig<T>;
|
|
1632
|
-
/**
|
|
1633
|
-
rowActions?: (row: T, controls: MatrxDataTableRecordControls) =>
|
|
1649
|
+
/** Icon-only actions in the built-in Actions column. Labels are accessible names/tooltips, never button text. */
|
|
1650
|
+
rowActions?: (row: T, controls: MatrxDataTableRecordControls) => readonly MatrxTableIconAction[];
|
|
1634
1651
|
/** Extra rows rendered in the table footer with the same columns as data rows. */
|
|
1635
1652
|
footerRows?: T[];
|
|
1636
1653
|
/** Optional KPIs above the toolbar and aligned totals in the canonical footer. */
|
|
@@ -1703,12 +1720,6 @@ interface MatrxDataTableProps<T> {
|
|
|
1703
1720
|
* scrolls. A phone always scrolls: a fitted phone table is columns too narrow to read.
|
|
1704
1721
|
*/
|
|
1705
1722
|
fitToWidth?: boolean | undefined;
|
|
1706
|
-
/**
|
|
1707
|
-
* WHAT THE ACTIONS HEADER OFFERS, beside its word — the table's own "add a row action" and the
|
|
1708
|
-
* actions menu (merged-grid review 2, G4: "the ACTIONS header has no controls at all"). Drawn
|
|
1709
|
-
* only where the Actions column is.
|
|
1710
|
-
*/
|
|
1711
|
-
rowActionsHeader?: ReactNode;
|
|
1712
1723
|
/** Highlight an index in the currently rendered page without selecting it. */
|
|
1713
1724
|
highlightedIndex?: number | undefined;
|
|
1714
1725
|
/** Receives the complete visible local view after local processing, before paging. Attaching after absence receives one snapshot; callback identity changes alone do not notify. */
|
|
@@ -1840,4 +1851,4 @@ declare function columnFiltersToLayeredRules(filters: ColumnFiltersState, fieldI
|
|
|
1840
1851
|
declare function layeredFilterMatchesValue(value: unknown, rule: LayeredFilterRule): boolean;
|
|
1841
1852
|
declare function layeredFilterRuleSummary(rule: LayeredFilterRule, fields: readonly LayeredFilterField[]): string;
|
|
1842
1853
|
|
|
1843
|
-
export { type
|
|
1854
|
+
export { type SpreadsheetSelection as $, type AnyOfColumnSearch as A, type MatrxDataTableHierarchyMove as B, type ColumnFiltersState as C, type MatrxDataTableMobileCardControls as D, type MatrxDataTableMultiExpandedDetailConfig as E, type MatrxDataTableQueryControl as F, type MatrxDataTableReadStatus as G, type MatrxDataTableSelectionConfig as H, type MatrxDataTableSingleExpandedDetailConfig as I, type MatrxDataTableSourceProcessing as J, type MatrxDataTableSpreadsheetConfig as K, type LayeredFilterRule as L, type MatrxColumnDef as M, type MatrxDataTableStyleConfig as N, type MatrxDataTableSummaryConfig as O, type MatrxDataTableSummaryContext as P, type MatrxDataTableSummaryMetric as Q, type MatrxDataTableToolbar as R, type SortState as S, type TableSearchMatchMode as T, type MatrxDataTableUrlStateConfig as U, type MatrxDataTableVirtualizeConfig as V, type MatrxDataTableWindowConfig as W, type MatrxTablePagination as X, type NumberFilterOp as Y, type SavedTableViewTab as Z, type SortDirection as _, type ColumnFilterValue as a, type TableRankedSearchOptions as a0, type TableSearchRole as a1, type TableSearchScope as a2, type TableViewQuery as a3, type TableViewTab as a4, TableViewTabs as a5, type TableViewTabsProps as a6, type TableViewTabsStore as a7, type TextFilterMode as a8, type ToolbarFacet as a9, inferTableSearchRole as aa, rankTableSearchRows as ab, resolveTableSearchScopes as ac, LAYERED_FILTER_OPERATORS as ad, LAYERED_FILTER_OPERATOR_LABELS as ae, type LayeredFilterField as af, type LayeredFilterOperator as ag, columnFiltersToLayeredRules as ah, completeLayeredFilterRules as ai, decodeLayeredFilterRules as aj, encodeLayeredFilterRules as ak, isCompleteLayeredFilterRule as al, isLayeredFilterOperator as am, layeredFilterMatchesValue as an, layeredFilterNeedsValue as ao, layeredFilterRuleSummary as ap, operatorsForLayeredField as aq, type TableSavedViewsProps as b, type MatrxDataTableDensity as c, type MatrxDataTableRecordControls as d, type MatrxDataTableQueryState as e, type ColumnFilterKind as f, type MatrxDataTableCopyConfig as g, type MatrxTableIconAction as h, type MatrxDataTableProps as i, type MatrxDataTableAppearance as j, type TableViewSnapshot as k, type MatrxDataTableRead as l, type ColumnMarker as m, type CellEditType as n, type CellEditsMap as o, type MatrxDataTableContextMenuConfig as p, type MatrxDataTableCoverageConfig as q, type MatrxDataTableDetailConfig as r, type MatrxDataTableDrillConfig as s, type MatrxDataTableEditConfig as t, type MatrxDataTableEmptyState as u, type MatrxDataTableExpandedDetailConfig as v, type MatrxDataTableFacetsConfig as w, type MatrxDataTableFilterUi as x, type MatrxDataTableGroupingConfig as y, type MatrxDataTableHierarchyConfig as z };
|
package/dist/styles.css
CHANGED
|
@@ -453,50 +453,49 @@
|
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
.matrx-motion-sheet-top[data-state="open"] {
|
|
456
|
-
animation: matrx-slide-in-top var(--matrx-motion-duration-
|
|
457
|
-
var(--matrx-motion-ease-
|
|
456
|
+
animation: matrx-slide-in-top var(--matrx-motion-duration-panel)
|
|
457
|
+
var(--matrx-motion-ease-panel);
|
|
458
458
|
}
|
|
459
459
|
.matrx-motion-sheet-top[data-state="closed"] {
|
|
460
|
-
animation: matrx-slide-out-top var(--matrx-motion-duration-
|
|
461
|
-
var(--matrx-motion-ease-
|
|
460
|
+
animation: matrx-slide-out-top var(--matrx-motion-duration-panel)
|
|
461
|
+
var(--matrx-motion-ease-panel);
|
|
462
462
|
}
|
|
463
463
|
.matrx-motion-sheet-bottom[data-state="open"] {
|
|
464
|
-
animation: matrx-slide-in-bottom var(--matrx-motion-duration-
|
|
465
|
-
var(--matrx-motion-ease-
|
|
464
|
+
animation: matrx-slide-in-bottom var(--matrx-motion-duration-panel)
|
|
465
|
+
var(--matrx-motion-ease-panel);
|
|
466
466
|
}
|
|
467
467
|
.matrx-motion-sheet-bottom[data-state="closed"] {
|
|
468
|
-
animation: matrx-slide-out-bottom var(--matrx-motion-duration-
|
|
469
|
-
var(--matrx-motion-ease-
|
|
468
|
+
animation: matrx-slide-out-bottom var(--matrx-motion-duration-panel)
|
|
469
|
+
var(--matrx-motion-ease-panel);
|
|
470
470
|
}
|
|
471
471
|
.matrx-motion-sheet-left[data-state="open"] {
|
|
472
|
-
animation: matrx-slide-in-left var(--matrx-motion-duration-
|
|
473
|
-
var(--matrx-motion-ease-
|
|
472
|
+
animation: matrx-slide-in-left var(--matrx-motion-duration-panel)
|
|
473
|
+
var(--matrx-motion-ease-panel);
|
|
474
474
|
}
|
|
475
475
|
.matrx-motion-sheet-left[data-state="closed"] {
|
|
476
|
-
animation: matrx-slide-out-left var(--matrx-motion-duration-
|
|
477
|
-
var(--matrx-motion-ease-
|
|
476
|
+
animation: matrx-slide-out-left var(--matrx-motion-duration-panel)
|
|
477
|
+
var(--matrx-motion-ease-panel);
|
|
478
478
|
}
|
|
479
479
|
.matrx-motion-sheet-right[data-state="open"] {
|
|
480
|
-
animation: matrx-slide-in-right var(--matrx-motion-duration-
|
|
481
|
-
var(--matrx-motion-ease-
|
|
480
|
+
animation: matrx-slide-in-right var(--matrx-motion-duration-panel)
|
|
481
|
+
var(--matrx-motion-ease-panel);
|
|
482
482
|
}
|
|
483
483
|
.matrx-motion-sheet-right[data-state="closed"] {
|
|
484
|
-
animation: matrx-slide-out-right var(--matrx-motion-duration-
|
|
485
|
-
var(--matrx-motion-ease-
|
|
484
|
+
animation: matrx-slide-out-right var(--matrx-motion-duration-panel)
|
|
485
|
+
var(--matrx-motion-ease-panel);
|
|
486
486
|
}
|
|
487
487
|
/* A `side="center"` Sheet has no edge to come from, so it fades like a
|
|
488
488
|
dialog scrim rather than sliding from nowhere. */
|
|
489
489
|
.matrx-motion-sheet-center[data-state="open"] {
|
|
490
|
-
animation: matrx-fade-in var(--matrx-motion-duration-
|
|
491
|
-
var(--matrx-motion-ease-
|
|
490
|
+
animation: matrx-fade-in var(--matrx-motion-duration-panel)
|
|
491
|
+
var(--matrx-motion-ease-panel);
|
|
492
492
|
}
|
|
493
493
|
.matrx-motion-sheet-center[data-state="closed"] {
|
|
494
|
-
animation: matrx-fade-out var(--matrx-motion-duration-
|
|
495
|
-
var(--matrx-motion-ease-
|
|
494
|
+
animation: matrx-fade-out var(--matrx-motion-duration-panel)
|
|
495
|
+
var(--matrx-motion-ease-panel);
|
|
496
496
|
}
|
|
497
|
-
/* The mobile Dialog / CommandDialog bottom sheet: slides AND fades
|
|
498
|
-
|
|
499
|
-
wearing sheet geometry and it opens from a tap, not from a nav gesture. */
|
|
497
|
+
/* The mobile Dialog / CommandDialog bottom sheet: slides AND fades on THE
|
|
498
|
+
panel motion (0.56.0, the motion standard) — a bottom sheet is a panel. */
|
|
500
499
|
@keyframes matrx-bottom-sheet-in {
|
|
501
500
|
from {
|
|
502
501
|
opacity: 0;
|
|
@@ -518,12 +517,12 @@
|
|
|
518
517
|
}
|
|
519
518
|
}
|
|
520
519
|
.matrx-motion-bottom-sheet[data-state="open"] {
|
|
521
|
-
animation: matrx-bottom-sheet-in var(--matrx-motion-duration-
|
|
522
|
-
var(--matrx-motion-ease-
|
|
520
|
+
animation: matrx-bottom-sheet-in var(--matrx-motion-duration-panel)
|
|
521
|
+
var(--matrx-motion-ease-panel);
|
|
523
522
|
}
|
|
524
523
|
.matrx-motion-bottom-sheet[data-state="closed"] {
|
|
525
|
-
animation: matrx-bottom-sheet-out var(--matrx-motion-duration-
|
|
526
|
-
var(--matrx-motion-ease-
|
|
524
|
+
animation: matrx-bottom-sheet-out var(--matrx-motion-duration-panel)
|
|
525
|
+
var(--matrx-motion-ease-panel);
|
|
527
526
|
}
|
|
528
527
|
|
|
529
528
|
/* --- poppers -----------------------------------------------------------
|
|
@@ -957,6 +956,26 @@
|
|
|
957
956
|
animation: none;
|
|
958
957
|
}
|
|
959
958
|
|
|
959
|
+
/* THE PANEL MOTION on the vaul Drawer (0.56.0, the motion standard). vaul
|
|
960
|
+
1.1.2 injects `[data-vaul-drawer]{transition: transform .5s
|
|
961
|
+
cubic-bezier(.32,.72,0,1); animation-duration: .5s; …}` (0,1,0) and sets the
|
|
962
|
+
same pace INLINE when a released drag settles. Two attributes (0,2,0) beat
|
|
963
|
+
its sheet whatever the load order; `!important` on the two timing longhands
|
|
964
|
+
beats its inline settle WITHOUT touching `transition-property`, so vaul's
|
|
965
|
+
inline `transition: none` while a finger drags still means no motion. */
|
|
966
|
+
[data-vaul-drawer][data-vaul-drawer-direction] {
|
|
967
|
+
animation-duration: var(--matrx-motion-duration-panel) !important;
|
|
968
|
+
animation-timing-function: var(--matrx-motion-ease-panel) !important;
|
|
969
|
+
transition-duration: var(--matrx-motion-duration-panel) !important;
|
|
970
|
+
transition-timing-function: var(--matrx-motion-ease-panel) !important;
|
|
971
|
+
}
|
|
972
|
+
[data-vaul-overlay][data-vaul-snap-points][data-state] {
|
|
973
|
+
animation-duration: var(--matrx-motion-duration-panel);
|
|
974
|
+
animation-timing-function: var(--matrx-motion-ease-panel);
|
|
975
|
+
transition-duration: var(--matrx-motion-duration-panel);
|
|
976
|
+
transition-timing-function: var(--matrx-motion-ease-panel);
|
|
977
|
+
}
|
|
978
|
+
|
|
960
979
|
.matrx-mobile-sheet > [data-slot="dialog-footer"] {
|
|
961
980
|
padding-bottom: max(var(--dialog-pad, 0px), env(safe-area-inset-bottom, 0px));
|
|
962
981
|
}
|
package/dist/tokens.css
CHANGED
|
@@ -139,14 +139,21 @@
|
|
|
139
139
|
switch: `prefers-reduced-motion: reduce` silences the animations
|
|
140
140
|
outright in styles.css, regardless of these values.
|
|
141
141
|
|
|
142
|
-
The numbers are the ones the primitives already carried as
|
|
143
|
-
`duration-*` utilities before the package owned the keyframes:
|
|
144
|
-
poppers/tooltips 150ms, dialogs and overlays 200ms,
|
|
145
|
-
300ms and opening 500ms. */
|
|
142
|
+
The small-motion numbers are the ones the primitives already carried as
|
|
143
|
+
Tailwind `duration-*` utilities before the package owned the keyframes:
|
|
144
|
+
poppers/tooltips 150ms, dialogs and overlays 200ms, 300ms slow. */
|
|
146
145
|
--matrx-motion-duration-fast: 150ms;
|
|
147
146
|
--matrx-motion-duration-base: 200ms;
|
|
148
147
|
--matrx-motion-duration-slow: 300ms;
|
|
149
|
-
|
|
148
|
+
/* THE PANEL MOTION (0.56.0) — the motion standard (AI Matrx
|
|
149
|
+
common-docs/policies/motion-standard.md, Arman 2026-10-02): every panel-like
|
|
150
|
+
slide — the Sheet on every side, the mobile Dialog bottom sheet, the vaul
|
|
151
|
+
Drawer and the Sidebar's collapse — opens AND closes on this one pair. The
|
|
152
|
+
NAMES are the package's contract; the VALUES are the host's (a host that
|
|
153
|
+
declares them unlayered wins over this layered default). An even
|
|
154
|
+
ease-in-out, never a spring; 0ms under reduced motion (below). */
|
|
155
|
+
--matrx-motion-duration-panel: 600ms;
|
|
156
|
+
--matrx-motion-ease-panel: cubic-bezier(0.4, 0, 0.2, 1);
|
|
150
157
|
/* Enters decelerate (the surface arrives and settles); exits accelerate
|
|
151
158
|
(it leaves and is gone). Linear on both — which is what
|
|
152
159
|
`tailwindcss-animate` defaulted to — reads mechanical at these
|
|
@@ -263,4 +270,11 @@
|
|
|
263
270
|
--background-texture: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2' viewBox='0 0 2 2'%3E%3Cpath fill='%23999' fill-opacity='0.07' d='M1 1h0.5v0.5H1V1z'%3E%3C/path%3E%3C/svg%3E");
|
|
264
271
|
--card-texture: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2' height='2' viewBox='0 0 2 2'%3E%3Cpath fill='%23fff' fill-opacity='0.02' d='M1 1h0.5v0.5H1V1z'%3E%3C/path%3E%3C/svg%3E");
|
|
265
272
|
}
|
|
273
|
+
|
|
274
|
+
/* Reduced motion means no panel slide (the motion standard, rule 6). */
|
|
275
|
+
@media (prefers-reduced-motion: reduce) {
|
|
276
|
+
:root {
|
|
277
|
+
--matrx-motion-duration-panel: 0ms;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
266
280
|
}
|
package/package.json
CHANGED