@ex-grid/mantine 0.0.0-stage → 0.2.0-rc.1
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/LICENSE +21 -0
- package/README.md +42 -2
- package/dist/index.d.ts +91 -0
- package/dist/index.js +824 -0
- package/dist/index.js.map +7 -0
- package/package.json +37 -4
- package/styles.css +229 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/mantine-ex-grid.ts", "../src/chrome.ts", "../src/presentation.ts", "../src/mantine-glyph-widths.ts"],
|
|
4
|
+
"sourcesContent": ["// MantineExGrid (ADR-0390, ADR-0030): ExGrid for React inside Mantine's Paper, its Chrome drawn in Mantine's\n// components and its Visual Tokens mapped onto the Mantine theme by the Wrapper's stylesheet. It owns no geometry, no\n// DOM inside the grid's root and no state: it hands the grid the widths of the font it sets, the preset Mantine's\n// words map onto, and its Chrome, and the grid decides everything else.\n\nimport { createElement, useMemo, type CSSProperties, type ReactElement } from 'react';\nimport { Paper, type MantineRadius, type MantineShadow } from '@mantine/core';\nimport { ExGrid, type ExGridProps } from '@ex-grid/react';\nimport { MantineSizeContext, mantineChrome } from './chrome';\nimport { mantineDefaultFont, mantinePresentationDefaults, mantineSizeOf, type MantineExGridFont } from './presentation';\n\n/** A MantineExGrid's props: an ExGrid's, and the Paper's and Table's words Mantine draws a grid with. No\n * `presentationDefaults`: the Wrapper's are its own, made from `font`, `striped` and `highlightOnHover`, so the\n * widths `####` is judged by are always the font's the Paper writes (ADR-0027). */\nexport type MantineExGridProps<Row> = Omit<ExGridProps<Row>, 'presentationDefaults'> & {\n /** The Paper's border, Mantine's `withBorder`. */\n readonly withBorder?: boolean;\n /** The Paper's corner radius, a theme radius or a CSS length; `0` sets the grid square in its Paper. */\n readonly radius?: MantineRadius;\n /** The Paper's shadow. */\n readonly shadow?: MantineShadow;\n /** Row Stripes where the grid is given no `stripeRows`, Mantine's Table's `striped` (ADR-0038). */\n readonly striped?: boolean;\n /** The hover band where the grid is given no `highlightHoverRow`, Mantine's Table's `highlightOnHover` (ADR-0029). */\n readonly highlightOnHover?: boolean;\n /** A rule between columns, Mantine's Table's `withColumnBorders`. */\n readonly withColumnBorders?: boolean;\n /** The cells' font with its widths (ADR-0027); Mantine's default stack unless given. */\n readonly font?: MantineExGridFont;\n /** A class for the Paper. */\n readonly className?: string;\n /** A style for the Paper. */\n readonly style?: CSSProperties;\n};\n\n/**\n * An Excel-like grid drawn with Mantine: the Chrome slots a `chrome` prop leaves are Mantine's, the cells are in\n * the font whose widths the grid judges `####` by, and the colours follow the theme and its scheme with no render.\n * Needs Mantine's MantineProvider above it and `@ex-grid/mantine/styles.css` loaded after Mantine's styles.\n */\nexport function MantineExGrid<Row>(props: MantineExGridProps<Row>): ReactElement {\n const {\n withBorder, radius, shadow, striped, highlightOnHover, withColumnBorders, font = mantineDefaultFont, className, style, chrome, ...grid\n } = props;\n const density = grid.density ?? 'compact'; // oxlint-disable-line ex-grid/no-stand-in-default -- ADR-0028: an untouched grid is compact\n const defaults = useMemo(\n () => mantinePresentationDefaults(font, {\n ...(striped === undefined ? {} : { striped }), ...(highlightOnHover === undefined ? {} : { highlightOnHover }),\n }),\n [font, striped, highlightOnHover]);\n // The Consumer's slots win over the Wrapper's; one merge per chrome handed, so a render function handed again\n // keeps its mount (ADR-0390).\n const merged = useMemo(() => (chrome === undefined ? mantineChrome : { ...mantineChrome, ...chrome }), [chrome]);\n const classes = ['mantine-ex-grid'];\n if (radius === 0) classes.push('mantine-ex-grid-square');\n // A Stretch grid follows its container's width (ADR-0045), so the Paper round it does too, rather than take the\n // width of every column as its own.\n if (grid.viewportWidth === 'stretch') classes.push('mantine-ex-grid-stretch');\n if (withColumnBorders === true) classes.push('mantine-ex-grid-column-borders');\n if (className !== undefined) classes.push(className);\n // The family is written beside the widths the grid is handed, in the same render (ADR-0027).\n const paperStyle: CSSProperties & Readonly<Record<'--ex-font-family', string>> = { ...style, '--ex-font-family': font.family };\n return createElement(Paper<'div'>, {\n className: classes.join(' '),\n style: paperStyle,\n ...(withBorder === undefined ? {} : { withBorder }),\n ...(radius === undefined ? {} : { radius }),\n ...(shadow === undefined ? {} : { shadow }),\n }, createElement(MantineSizeContext.Provider, { value: mantineSizeOf(density) },\n createElement(ExGrid<Row>, { ...grid, presentationDefaults: defaults, chrome: merged })));\n}\n", "// The Mantine Chrome (ADR-0390 section 3): Mantine's components in each of ExGrid for React's Chrome slots. What a\n// slot shows, its order, what a key means and what a choice does are the core's, reached through the React adapter's\n// hooks; these components only draw it in Mantine's look, at the size the grid's density maps onto. The frames they\n// stand in, the popovers and the boxes over a cell, are the core's, so Mantine's own Menu, Popover and Combobox,\n// which position themselves, are not used inside the grid.\n\nimport { createContext, createElement, useCallback, useContext, type ReactElement } from 'react';\nimport { Button, Checkbox, Loader, NativeSelect, Radio, Text, TextInput, type MantineSize } from '@mantine/core';\nimport {\n filterPanelLabelIds, findPanelLabelIds, operatorLabelId, summaryLabelIds, type FilterOperator, type FilterPanelCondition,\n type GridCellEditorSlotContext, type GridCellMessageSlotContext, type GridEditorCompletionSlotContext, type GridFilterPanelSlotContext,\n type GridFindPanelSlotContext, type GridFormulaBarTextSlotContext, type GridLoadingIndicatorSlotContext, type GridMenuSlotContext, type GridNameBoxSlotContext,\n type GridSelectionSummarySlotContext,\n} from '@ex-grid/core';\nimport {\n useCellEditor, useEditorCompletion, useFilterPanel, useFindPanel, useFormulaBarText, useMenuItems, useNameBox, type ExGridChrome,\n type FilterPanelHandles,\n} from '@ex-grid/react';\n\n/** The size Mantine's components are drawn at inside a grid: the one its density maps onto, handed down from\n * MantineExGrid through React's context, which a portal keeps. A frame of the Consumer's own that draws\n * {@link mantineChrome} gives it, as it gives the class `mantine-ex-grid` the Wrapper's stylesheet is scoped to. */\nexport const MantineSizeContext = createContext<MantineSize>('xs');\n\n/** A menu, the column menu's or the Context Menu's: one of Mantine's subtle buttons per command, as its Menu draws\n * an item. */\nfunction MantineMenu({ context }: { readonly context: GridMenuSlotContext }): ReactElement {\n const item = useMenuItems(context);\n const size = useContext(MantineSizeContext);\n return createElement('div', { role: 'none', className: 'mantine-ex-grid-menu' },\n ...context.commands.map((command, index) => createElement(Button<'button'>, {\n ...item(index), key: command.id, type: 'button', variant: 'subtle', color: 'gray', size, fullWidth: true,\n justify: 'flex-start', className: 'mantine-ex-grid-menu-item',\n }, context.label(command.id))));\n}\n\n/** One condition of the condition form: its operator, and its value where the operator takes one. */\nfunction conditionControls(context: GridFilterPanelSlotContext, condition: FilterPanelCondition | undefined, allowed: readonly FilterOperator[],\n second: boolean, size: MantineSize, handles: FilterPanelHandles): ReactElement[] {\n const choices = allowed.map(operator => ({ value: operator, label: context.label(operatorLabelId(operator)) }));\n const operator = createElement(NativeSelect, {\n key: second ? 'second-operator' : 'operator', size,\n data: second ? [{ value: '', label: context.label(filterPanelLabelIds.none) }, ...choices] : choices,\n value: condition === undefined ? '' : condition.operator,\n onChange: event => {\n const { value } = event.currentTarget;\n if (second && value === '') context.setSecond(undefined);\n else if (second) context.setSecond(operatorOf(value, allowed));\n else context.setOperator(operatorOf(value, allowed));\n },\n ...(second ? {} : { ref: handles.first }),\n });\n if (condition === undefined || !condition.takesOperand) return [operator];\n const operand = createElement(TextInput, {\n key: second ? 'second-operand' : 'operand', size, type: 'text', value: condition.operand,\n error: condition.refusal,\n onChange: event => { if (second) context.setSecondOperand(event.currentTarget.value); else context.setOperand(event.currentTarget.value); },\n ...(second ? {} : { ref: handles.search }),\n });\n return [operator, operand];\n}\n\n/** The operator an option names: one the core offered, never one a changed option claims (ADR-0009, FN-18). */\nfunction operatorOf(value: string, allowed: readonly FilterOperator[]): FilterOperator {\n const found = allowed.find(operator => operator === value);\n if (found === undefined) throw new RangeError(`'${value}' is not an operator this column's filter offers.`);\n return found;\n}\n\n/** The filter panel: the value list or the condition form as the core holds it, in Mantine's controls. */\nfunction MantineFilterPanel({ context }: { readonly context: GridFilterPanelSlotContext }): ReactElement {\n const handles = useFilterPanel(context);\n const { view, first, last, search, onValueListKeyDown } = handles;\n const size = useContext(MantineSizeContext);\n // The search box is both the first control and the one E puts the keyboard on: one ref made once, so a render\n // does not hand React a new one, which it would take away and back (useFilterPanel's refs are stable too).\n const searchBox = useCallback((control: HTMLInputElement | null) => { first(control); search(control); }, [first, search]);\n const body = view.kind === 'valueList'\n ? [\n createElement(TextInput, {\n key: 'search', size, type: 'search', value: view.search, placeholder: context.label(filterPanelLabelIds.search),\n 'aria-label': context.label(filterPanelLabelIds.search),\n ref: searchBox,\n onChange: event => { context.setSearch(event.currentTarget.value); },\n }),\n view.addOffered\n ? createElement(Checkbox, {\n key: 'add', size, label: context.label(filterPanelLabelIds.addToCurrent), checked: view.addToCurrent,\n onChange: event => { context.setAddToCurrent(event.currentTarget.checked); },\n })\n : null,\n createElement('div', { key: 'list', className: 'mantine-ex-grid-filter-values', onKeyDown: onValueListKeyDown },\n createElement(Checkbox, {\n key: 'all', size, checked: view.selectAll === 'checked', indeterminate: view.selectAll === 'mixed',\n label: context.label(view.search === '' ? filterPanelLabelIds.selectAll : filterPanelLabelIds.selectAllSearchResults),\n onChange: () => { context.toggleAll(); },\n }),\n // Keyed by position: two values may read the same (1.001 and 1.004 at two places), and the core's list\n // is the order it stands in.\n ...view.entries.map((each, at) => createElement(Checkbox, {\n key: at, size, label: each.text, checked: each.checked,\n onChange: event => { context.setChecked(each.value, event.currentTarget.checked); },\n }))),\n ]\n : [\n ...conditionControls(context, view.first, view.allowed, false, size, handles),\n createElement(Radio.Group, {\n key: 'join', value: view.combinator, size,\n onChange: (value: unknown) => {\n if (value !== 'and' && value !== 'or') throw new RangeError(`'${String(value)}' joins no two conditions (FN-18).`);\n context.setCombinator(value);\n },\n children: createElement('div', { className: 'mantine-ex-grid-filter-join' },\n createElement(Radio, { value: 'and', size, label: context.label(filterPanelLabelIds.and) }),\n createElement(Radio, { value: 'or', size, label: context.label(filterPanelLabelIds.or) })),\n }),\n ...conditionControls(context, view.second, view.allowed, true, size, handles),\n ];\n // OK before Cancel, as Excel orders them; Cancel, never disabled, is the last control Shift+Tab wraps to.\n return createElement('div', { className: 'mantine-ex-grid-filter' }, ...body,\n createElement('div', { className: 'mantine-ex-grid-filter-actions' },\n createElement(Button<'button'>, {\n type: 'button', size, className: 'ex-popover-closes', disabled: !view.canApply, onClick: () => { context.apply(); },\n }, context.label(filterPanelLabelIds.ok)),\n createElement(Button<'button'>, {\n type: 'button', size, variant: 'default', className: 'ex-popover-closes', ref: last, onClick: () => { context.cancel(); },\n }, context.label(filterPanelLabelIds.cancel))));\n}\n\n/** The find panel and its Replace: each change and step handed to the core, Enter left to the core's form. */\nfunction MantineFindPanel({ context }: { readonly context: GridFindPanelSlotContext }): ReactElement {\n const { view, field } = useFindPanel(context);\n const size = useContext(MantineSizeContext);\n const button = (id: string, press: () => void, variant: 'default' | 'filled', disabled = false): ReactElement =>\n createElement(Button<'button'>, { key: id, type: 'button', size, variant, disabled, onClick: press }, context.label(id));\n return createElement('div', { className: 'mantine-ex-grid-find' },\n createElement(TextInput, {\n size, ref: field, value: view.text, 'aria-label': context.label(findPanelLabelIds.field),\n placeholder: context.label(findPanelLabelIds.field), onChange: event => { context.setText(event.currentTarget.value); },\n }),\n createElement(Checkbox, {\n size, label: context.label(findPanelLabelIds.matchCase), checked: view.matchCase,\n onChange: event => { context.setMatchCase(event.currentTarget.checked); },\n }),\n createElement(Checkbox, {\n size, label: context.label(findPanelLabelIds.wholeCell), checked: view.wholeCell,\n onChange: event => { context.setWholeCell(event.currentTarget.checked); },\n }),\n createElement('div', { className: 'mantine-ex-grid-find-actions' },\n ...(view.findAllShown ? [button(findPanelLabelIds.findAll, context.findAll, 'default')] : []),\n button(findPanelLabelIds.previous, context.previous, 'default'),\n button(findPanelLabelIds.next, context.next, 'filled')),\n ...(view.replaceShown ? [\n createElement(TextInput, {\n key: 'replace', size, value: view.replaceText, 'aria-label': context.label(findPanelLabelIds.replaceField),\n placeholder: context.label(findPanelLabelIds.replaceField), onChange: event => { context.setReplaceText(event.currentTarget.value); },\n }),\n createElement('div', { key: 'writes', className: 'mantine-ex-grid-find-actions' },\n button(findPanelLabelIds.replace, context.replace, 'default', view.replaceWaiting),\n button(findPanelLabelIds.replaceAll, context.replaceAll, 'filled', view.replaceWaiting)),\n ] : []),\n createElement(Text<'span'>, { size, role: 'status', className: 'mantine-ex-grid-find-outcome' }, view.outcome));\n}\n\n/** The Cell Editor's field, uncontrolled as the hook asks: the core reads it at the commit and marks a Reject on it. */\nfunction MantineCellEditor({ context }: { readonly context: GridCellEditorSlotContext }): ReactElement {\n const { field, defaultValue } = useCellEditor(context);\n return createElement('input', { ref: field, defaultValue, className: 'mantine-ex-editor' });\n}\n\n/** The Formula Bar's text field, uncontrolled, dimmed where its text is borrowed. */\nfunction MantineBarText({ context }: { readonly context: GridFormulaBarTextSlotContext }): ReactElement {\n const { view, field } = useFormulaBarText(context);\n return createElement('input', { ref: field, className: 'mantine-ex-formula-bar-text', 'data-borrowed': view.borrowed ? '' : undefined });\n}\n\n/** The Name Box's field. */\nfunction MantineNameBox({ context }: { readonly context: GridNameBoxSlotContext }): ReactElement {\n const { field } = useNameBox(context);\n return createElement('input', { ref: field, className: 'mantine-ex-name-box' });\n}\n\n/** A cell's message, the core's sentence, in Mantine's text. */\nfunction MantineCellMessage({ context }: { readonly context: GridCellMessageSlotContext }): ReactElement {\n const size = useContext(MantineSizeContext);\n return createElement(Text<'span'>, { size, span: true }, context.message);\n}\n\n/** The loading indicator: Mantine's Loader while rows are on their way, and nothing once they are in. */\nfunction MantineLoading({ context }: { readonly context: GridLoadingIndicatorSlotContext }): ReactElement | null {\n const size = useContext(MantineSizeContext);\n return context.loading ? createElement(Loader, { size, type: 'dots' }) : null;\n}\n\n/** The Selection Summary's figures, each named and formatted by the core, in Excel's order. */\nfunction MantineSelectionSummary({ context }: { readonly context: GridSelectionSummarySlotContext }): ReactElement {\n const size = useContext(MantineSizeContext);\n const said = context.status === 'pending' ? context.label(summaryLabelIds.pending)\n : context.status === 'declined' ? context.declineReason\n : context.figures.map(figure => `${context.label(figure.labelId)}: ${figure.text}`).join(' ');\n return createElement(Text<'span'>, { size, span: true }, said);\n}\n\n/** The completion list and the argument hint (ADR-0051): the chosen candidate in the theme's primary as Mantine's\n * Combobox marks its selected option, and the hint beneath in Mantine's dimmed colour with the argument the caret is\n * in set off. Both are in the cell's font, as the text typed above them is. The box, its place and every key are the\n * core's, so Mantine's Combobox, which keeps its own store and keys, is not used. */\nfunction MantineCompletion({ context }: { readonly context: GridEditorCompletionSlotContext }): ReactElement {\n const { list, option } = useEditorCompletion(context);\n const hint = context.hint?.parts();\n return createElement('div', { className: 'mantine-ex-grid-completion' },\n context.candidates.length === 0 ? null : createElement('div', { ...list, className: 'mantine-ex-grid-completion-list' },\n ...context.candidates.map((candidate, index) => createElement('div', {\n ...option(index), key: index, className: 'mantine-ex-grid-completion-item',\n }, candidate.label))),\n hint === undefined ? null : createElement('div', { className: 'mantine-ex-grid-completion-hint' },\n hint[0], hint[1].length === 0 ? null : createElement('strong', null, hint[1]), hint[2]));\n}\n\nconst menu = (context: GridMenuSlotContext): ReactElement => createElement(MantineMenu, { context });\n\n/** Every Chrome slot drawn in Mantine's components: what {@link MantineExGrid} hands its grid. A Consumer that frames\n * an ExGrid itself spreads it into the grid's `chrome`, inside an element of the class `mantine-ex-grid` and a\n * {@link MantineSizeContext}, as MantineExGrid draws them. */\nexport const mantineChrome: ExGridChrome<unknown> = Object.freeze({\n columnMenu: menu,\n contextMenu: menu,\n filterPanel: (context: GridFilterPanelSlotContext) => createElement(MantineFilterPanel, { context }),\n findPanel: (context: GridFindPanelSlotContext) => createElement(MantineFindPanel, { context }),\n cellEditor: (context: GridCellEditorSlotContext) => createElement(MantineCellEditor, { context }),\n cellMessage: (context: GridCellMessageSlotContext) => createElement(MantineCellMessage, { context }),\n loadingIndicator: (context: GridLoadingIndicatorSlotContext) => createElement(MantineLoading, { context }),\n selectionSummary: (context: GridSelectionSummarySlotContext) => createElement(MantineSelectionSummary, { context }),\n formulaBarText: (context: GridFormulaBarTextSlotContext) => createElement(MantineBarText, { context }),\n nameBox: (context: GridNameBoxSlotContext) => createElement(MantineNameBox, { context }),\n editorCompletion: (context: GridEditorCompletionSlotContext) => createElement(MantineCompletion, { context }),\n});\n", "// What @ex-grid/mantine hands the grids inside it (ADR-0030, ADR-0390): the widths of the font its stylesheet sets\n// and the preset Mantine's own words map onto. Whoever sets the font owes the widths (ADR-0027), so the font and its\n// widths travel in one value.\n\nimport { GridPresentationDefaults, type GridDensity, type GridPresentationDefaultsOptions } from '@ex-grid/core';\nimport type { MantineSize } from '@mantine/core';\nimport { mantineClassWidths, mantineGlyphWidths } from './mantine-glyph-widths';\n\n/** The widths a font is charged at, in the forms the grid takes: everything a Wrapper's presentation defaults hold\n * but the Density, hover band and Row Stripes, which are the Wrapper's words. */\nexport type MantineExGridFontWidths = Omit<GridPresentationDefaultsOptions, 'density' | 'highlightHoverRow' | 'stripeRows'>;\n\n/** A font for the grid's cells, with the widths measured for it (ADR-0027): `family` is written as\n * `--ex-font-family` and `widths` are what `####` is judged by, in the same render. */\nexport interface MantineExGridFont {\n /** The CSS font family list, as `font-family` takes it. */\n readonly family: string;\n /** The widths measured for that family (`tests/GlyphWidths` measures one). */\n readonly widths: MantineExGridFontWidths;\n}\n\n/** Mantine's default font stack (`-apple-system`, `BlinkMacSystemFont`, `Segoe UI`, `Roboto`, `Helvetica`,\n * `Arial`, `sans-serif`) with the widest widths any face it resolves to was measured at: macOS's system face, Segoe UI,\n * Roboto, Liberation Sans for Helvetica and Arial on Linux, and DejaVu Sans. What the cells are drawn in unless a\n * font is given. */\nexport const mantineDefaultFont: MantineExGridFont = Object.freeze({\n family: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif',\n widths: Object.freeze({\n ...mantineClassWidths,\n get glyphWidths() { return mantineGlyphWidths(); },\n }),\n});\n\n/** What Mantine's own words are on the Wrapper: its Table's `striped` and `highlightOnHover`. */\nexport interface MantinePresentationWords {\n /** The preset the grid takes where it is given none. */\n readonly density?: GridDensity;\n /** Row Stripes, Mantine's Table's `striped` (ADR-0038). */\n readonly striped?: boolean;\n /** The hover band, Mantine's Table's `highlightOnHover` (ADR-0029). */\n readonly highlightOnHover?: boolean;\n}\n\n/** What the Wrapper hands a grid: `font`'s widths, and the Density, hover band and Row Stripes its words map onto. A\n * value the grid is given beats these, and these beat the preset (ADR-0028). */\nexport function mantinePresentationDefaults(font: MantineExGridFont, words: MantinePresentationWords = {}): GridPresentationDefaults {\n return new GridPresentationDefaults({\n ...font.widths,\n ...(words.density === undefined ? {} : { density: words.density }),\n ...(words.striped === undefined ? {} : { stripeRows: words.striped }),\n ...(words.highlightOnHover === undefined ? {} : { highlightHoverRow: words.highlightOnHover }),\n });\n}\n\n/** The size Mantine's components are drawn at in a grid of `density` (ADR-0390): Mantine has no word like Dense, so\n * the preset picks a size, `xs` for the compact ones and `sm`, Mantine's own default, for Standard. */\nexport function mantineSizeOf(density: GridDensity): MantineSize {\n switch (density) {\n case 'compact':\n case 'excel':\n return 'xs';\n case 'standard':\n return 'sm';\n case 'comfortable':\n return 'md';\n default:\n throw new RangeError(`Unknown density preset '${String(density satisfies never)}' (ADR-0028).`);\n }\n}\n", "// Generated by tests/GlyphWidths/tables.mjs from system-ui on macos in Chrome 154 (2026-10-01),\n// system-ui on windows in Chrome 154 (2026-10-11), system-ui on windows in Edge 155 (2026-10-11),\n// roboto on macos in Chrome 154 (2026-10-01), roboto on windows in Chrome 154 (2026-10-11), roboto\n// on windows in Edge 155 (2026-10-11), dejavu-sans on macos in Chrome 154 (2026-10-01),\n// liberation-sans on linux in Chrome 153 (2026-10-27).\n// Do not edit by hand: measure again and run it (tests/GlyphWidths/README.md).\nimport { GlyphWidthTable } from '@ex-grid/core';\n\ntype Row = readonly [glyph: string, regularPx: number, boldPx: number];\n\n/** The class widths of Mantine's default stack at 14px, which the core scales to the resolved size: each the\n * widest any record shows at 400, 500 and 600 (regular) or 700 (bold), at 14px or at 12px scaled, a shade over. */\nexport const mantineClassWidths = Object.freeze({\n fontSizePx: 14,\n wideWidthPx: 14.05,\n digitWidthPx: 9.76,\n narrowWidthPx: 6.42,\n otherWidthPx: 14.01,\n boldWideWidthPx: 14.52,\n boldDigitWidthPx: 9.76,\n boldNarrowWidthPx: 6.42,\n boldOtherWidthPx: 14.01,\n} as const);\n\nconst at14: readonly Row[] = [\n ['A', 10.86, 10.86],\n ['B', 10.69, 10.69],\n ['C', 10.29, 10.40],\n ['D', 11.64, 11.64],\n ['F', 9.59, 9.59],\n ['G', 11.51, 11.51],\n ['H', 11.73, 11.73],\n ['I', 5.23, 5.23],\n ['J', 8.14, 8.43],\n ['K', 10.87, 10.87],\n ['L', 8.94, 8.94],\n ['M', 13.96, 13.96],\n ['N', 11.73, 11.73],\n ['O', 11.92, 11.92],\n ['P', 10.28, 10.28],\n ['Q', 11.92, 11.92],\n ['R', 10.80, 10.80],\n ['S', 10.11, 10.11],\n ['T', 9.89, 9.89],\n ['U', 11.38, 11.38],\n ['V', 10.86, 10.86],\n ['W', 15.47, 15.47],\n ['X', 10.82, 10.82],\n ['Y', 10.16, 10.16],\n ['Z', 10.17, 10.17],\n ['a', 9.47, 9.47],\n ['b', 10.04, 10.04],\n ['c', 8.32, 8.32],\n ['d', 10.04, 10.04],\n ['e', 9.51, 9.51],\n ['f', 6.12, 6.12],\n ['g', 10.04, 10.04],\n ['h', 9.98, 9.98],\n ['i', 4.82, 4.82],\n ['j', 4.82, 4.82],\n ['k', 9.33, 9.33],\n ['l', 4.82, 4.82],\n ['m', 14.61, 14.61],\n ['n', 9.98, 9.98],\n ['o', 9.64, 9.64],\n ['p', 10.04, 10.04],\n ['q', 10.04, 10.04],\n ['r', 6.92, 6.92],\n ['s', 8.36, 8.36],\n ['t', 6.72, 6.72],\n ['u', 9.98, 9.98],\n ['v', 9.15, 9.15],\n ['w', 12.95, 12.95],\n ['x', 9.05, 9.05],\n ['y', 9.15, 9.15],\n ['z', 8.17, 8.17],\n ['\u00A2', 9.76, 9.76],\n ['\u00A4', 10.01, 9.71],\n ['\u00C0', 10.86, 10.86],\n ['\u00C1', 10.86, 10.86],\n ['\u00C2', 10.86, 10.86],\n ['\u00C3', 10.86, 10.86],\n ['\u00C4', 10.86, 10.86],\n ['\u00C5', 10.86, 10.86],\n ['\u00C6', 15.21, 15.21],\n ['\u00C7', 10.29, 10.40],\n ['\u00C8', 9.59, 9.59],\n ['\u00C9', 9.59, 9.59],\n ['\u00CA', 9.59, 9.59],\n ['\u00CB', 9.59, 9.59],\n ['\u00CC', 5.23, 5.23],\n ['\u00CD', 5.23, 5.23],\n ['\u00CE', 5.23, 5.23],\n ['\u00CF', 5.23, 5.23],\n ['\u00D0', 11.75, 11.75],\n ['\u00D1', 11.73, 11.73],\n ['\u00D2', 11.92, 11.92],\n ['\u00D3', 11.92, 11.92],\n ['\u00D4', 11.92, 11.92],\n ['\u00D5', 11.92, 11.92],\n ['\u00D6', 11.92, 11.92],\n ['\u00D8', 11.92, 11.92],\n ['\u00D9', 11.38, 11.38],\n ['\u00DA', 11.38, 11.38],\n ['\u00DB', 11.38, 11.38],\n ['\u00DC', 11.38, 11.38],\n ['\u00DD', 10.16, 10.16],\n ['\u00DE', 10.35, 10.35],\n ['\u00DF', 10.09, 10.09],\n ['\u00E0', 9.47, 9.47],\n ['\u00E1', 9.47, 9.47],\n ['\u00E2', 9.47, 9.47],\n ['\u00E3', 9.47, 9.47],\n ['\u00E4', 9.47, 9.47],\n ['\u00E5', 9.47, 9.47],\n ['\u00E6', 14.68, 14.68],\n ['\u00E7', 8.32, 8.32],\n ['\u00E8', 9.51, 9.51],\n ['\u00E9', 9.51, 9.51],\n ['\u00EA', 9.51, 9.51],\n ['\u00EB', 9.51, 9.51],\n ['\u00EC', 4.82, 4.82],\n ['\u00ED', 4.82, 4.82],\n ['\u00EE', 4.82, 4.82],\n ['\u00EF', 4.82, 4.82],\n ['\u00F0', 9.64, 9.64],\n ['\u00F1', 9.98, 9.98],\n ['\u00F2', 9.64, 9.64],\n ['\u00F3', 9.64, 9.64],\n ['\u00F4', 9.64, 9.64],\n ['\u00F5', 9.64, 9.64],\n ['\u00F6', 9.64, 9.64],\n ['\u00F8', 9.64, 9.64],\n ['\u00F9', 9.98, 9.98],\n ['\u00FA', 9.98, 9.98],\n ['\u00FB', 9.98, 9.98],\n ['\u00FC', 9.98, 9.98],\n ['\u00FD', 9.15, 9.15],\n ['\u00FE', 10.04, 10.04],\n ['\u00FF', 9.15, 9.15],\n ['\u0100', 10.86, 10.86],\n ['\u0101', 9.47, 9.47],\n ['\u0102', 10.86, 10.86],\n ['\u0103', 9.47, 9.47],\n ['\u0104', 10.86, 10.86],\n ['\u0105', 9.47, 9.47],\n ['\u0106', 10.29, 10.40],\n ['\u0107', 8.32, 8.32],\n ['\u0108', 10.29, 10.40],\n ['\u0109', 8.32, 8.32],\n ['\u010A', 10.29, 10.40],\n ['\u010B', 8.32, 8.32],\n ['\u010C', 10.29, 10.40],\n ['\u010D', 8.32, 8.32],\n ['\u010E', 11.64, 11.64],\n ['\u010F', 10.55, 10.89],\n ['\u0110', 11.75, 11.75],\n ['\u0111', 10.04, 10.04],\n ['\u0112', 9.59, 9.59],\n ['\u0113', 9.51, 9.51],\n ['\u0114', 9.59, 9.59],\n ['\u0115', 9.51, 9.51],\n ['\u0116', 9.59, 9.59],\n ['\u0117', 9.51, 9.51],\n ['\u0118', 9.59, 9.59],\n ['\u0119', 9.51, 9.51],\n ['\u011A', 9.59, 9.59],\n ['\u011B', 9.51, 9.51],\n ['\u011C', 11.51, 11.51],\n ['\u011D', 10.04, 10.04],\n ['\u011E', 11.51, 11.51],\n ['\u011F', 10.04, 10.04],\n ['\u0120', 11.51, 11.51],\n ['\u0121', 10.04, 10.04],\n ['\u0122', 11.51, 11.51],\n ['\u0123', 10.04, 10.04],\n ['\u0124', 11.73, 11.73],\n ['\u0125', 9.98, 9.98],\n ['\u0126', 13.65, 13.65],\n ['\u0127', 11.08, 11.08],\n ['\u0128', 5.23, 5.23],\n ['\u0129', 4.82, 4.82],\n ['\u012A', 5.23, 5.23],\n ['\u012B', 4.82, 4.82],\n ['\u012C', 5.23, 5.23],\n ['\u012D', 4.82, 4.82],\n ['\u012E', 5.23, 5.23],\n ['\u012F', 4.82, 4.82],\n ['\u0130', 5.23, 5.23],\n ['\u0131', 4.82, 4.82],\n ['\u0132', 12.35, 12.90],\n ['\u0133', 9.62, 9.62],\n ['\u0134', 8.14, 8.43],\n ['\u0135', 4.82, 4.82],\n ['\u0136', 10.87, 10.87],\n ['\u0137', 9.33, 9.33],\n ['\u0138', 9.33, 9.33],\n ['\u0139', 8.94, 8.94],\n ['\u013A', 4.82, 4.82],\n ['\u013B', 8.94, 8.94],\n ['\u013C', 4.82, 4.82],\n ['\u013D', 8.94, 8.94],\n ['\u013E', 6.74, 6.74],\n ['\u013F', 8.94, 8.94],\n ['\u0140', 7.81, 7.81],\n ['\u0141', 9.02, 9.02],\n ['\u0142', 5.21, 5.21],\n ['\u0143', 11.73, 11.73],\n ['\u0144', 9.98, 9.98],\n ['\u0145', 11.73, 11.73],\n ['\u0146', 9.98, 9.98],\n ['\u0147', 11.73, 11.73],\n ['\u0148', 9.98, 9.98],\n ['\u0149', 13.78, 13.78],\n ['\u014A', 11.73, 11.73],\n ['\u014B', 9.98, 9.98],\n ['\u014C', 11.92, 11.92],\n ['\u014D', 9.64, 9.64],\n ['\u014E', 11.92, 11.92],\n ['\u014F', 9.64, 9.64],\n ['\u0150', 11.92, 11.92],\n ['\u0151', 9.64, 9.64],\n ['\u0152', 16.36, 16.36],\n ['\u0153', 15.34, 15.34],\n ['\u0154', 10.80, 10.80],\n ['\u0155', 6.92, 6.92],\n ['\u0156', 10.80, 10.80],\n ['\u0157', 6.92, 6.92],\n ['\u0158', 10.80, 10.80],\n ['\u0159', 6.92, 6.92],\n ['\u015A', 10.11, 10.11],\n ['\u015B', 8.36, 8.36],\n ['\u015C', 10.11, 10.11],\n ['\u015D', 8.36, 8.36],\n ['\u015E', 10.11, 10.11],\n ['\u015F', 8.36, 8.36],\n ['\u0160', 10.11, 10.11],\n ['\u0161', 8.36, 8.36],\n ['\u0162', 9.57, 9.57],\n ['\u0163', 6.72, 6.72],\n ['\u0164', 9.89, 9.89],\n ['\u0165', 6.73, 7.20],\n ['\u0166', 9.57, 9.57],\n ['\u0167', 6.72, 6.72],\n ['\u0168', 11.38, 11.38],\n ['\u0169', 9.98, 9.98],\n ['\u016A', 11.38, 11.38],\n ['\u016B', 9.98, 9.98],\n ['\u016C', 11.38, 11.38],\n ['\u016D', 9.98, 9.98],\n ['\u016E', 11.38, 11.38],\n ['\u016F', 9.98, 9.98],\n ['\u0170', 11.38, 11.38],\n ['\u0171', 9.98, 9.98],\n ['\u0172', 11.38, 11.38],\n ['\u0173', 9.98, 9.98],\n ['\u0174', 15.47, 15.47],\n ['\u0175', 12.95, 12.95],\n ['\u0176', 10.16, 10.16],\n ['\u0177', 9.15, 9.15],\n ['\u0178', 10.16, 10.16],\n ['\u0179', 10.17, 10.17],\n ['\u017A', 8.17, 8.17],\n ['\u017B', 10.17, 10.17],\n ['\u017C', 8.17, 8.17],\n ['\u017D', 10.17, 10.17],\n ['\u017E', 8.17, 8.17],\n ['\u017F', 6.12, 6.12],\n ['\u0192', 7.81, 8.07],\n ['\u0386', 11.18, 11.18],\n ['\u0388', 11.97, 11.97],\n ['\u0389', 14.14, 14.14],\n ['\u038A', 7.90, 7.90],\n ['\u038C', 12.48, 12.48],\n ['\u038E', 13.74, 13.74],\n ['\u038F', 12.73, 12.97],\n ['\u0390', 5.48, 5.48],\n ['\u0391', 10.86, 10.86],\n ['\u0392', 10.69, 10.69],\n ['\u0393', 8.94, 8.94],\n ['\u0394', 10.86, 10.86],\n ['\u0395', 9.59, 9.59],\n ['\u0396', 10.17, 10.17],\n ['\u0397', 11.73, 11.73],\n ['\u0398', 11.92, 11.92],\n ['\u0399', 5.23, 5.23],\n ['\u039A', 10.87, 10.87],\n ['\u039B', 10.86, 10.86],\n ['\u039C', 13.96, 13.96],\n ['\u039D', 11.73, 11.73],\n ['\u039E', 9.34, 9.40],\n ['\u039F', 11.92, 11.92],\n ['\u03A0', 11.73, 11.73],\n ['\u03A1', 10.28, 10.28],\n ['\u03A3', 9.59, 9.59],\n ['\u03A4', 9.57, 9.57],\n ['\u03A5', 10.16, 10.16],\n ['\u03A6', 12.42, 12.77],\n ['\u03A7', 10.82, 10.82],\n ['\u03A8', 11.95, 12.19],\n ['\u03A9', 11.92, 11.92],\n ['\u03AA', 5.23, 5.23],\n ['\u03AB', 10.16, 10.16],\n ['\u03AC', 9.64, 9.64],\n ['\u03AD', 7.81, 8.09],\n ['\u03AE', 9.98, 9.98],\n ['\u03AF', 5.48, 5.48],\n ['\u03B0', 9.48, 9.48],\n ['\u03B1', 9.64, 9.64],\n ['\u03B2', 10.04, 10.04],\n ['\u03B3', 9.56, 9.56],\n ['\u03B4', 9.64, 9.64],\n ['\u03B5', 7.81, 8.09],\n ['\u03B6', 8.29, 8.29],\n ['\u03B7', 9.98, 9.98],\n ['\u03B8', 9.64, 9.64],\n ['\u03B9', 5.48, 5.48],\n ['\u03BA', 9.96, 9.96],\n ['\u03BB', 8.87, 8.87],\n ['\u03BC', 10.33, 10.33],\n ['\u03BD', 9.56, 9.56],\n ['\u03BE', 8.29, 8.29],\n ['\u03BF', 9.64, 9.64],\n ['\u03C0', 11.09, 11.09],\n ['\u03C1', 10.04, 10.04],\n ['\u03C2', 8.32, 8.32],\n ['\u03C3', 10.93, 10.93],\n ['\u03C4', 8.96, 8.96],\n ['\u03C5', 9.48, 9.48],\n ['\u03C6', 10.97, 10.97],\n ['\u03C7', 9.05, 9.05],\n ['\u03C8', 11.13, 11.13],\n ['\u03C9', 12.19, 12.19],\n ['\u03CA', 5.48, 5.48],\n ['\u03CB', 9.48, 9.48],\n ['\u03CC', 9.64, 9.64],\n ['\u03CD', 9.48, 9.48],\n ['\u03CE', 12.19, 12.19],\n ['\u0400', 9.59, 9.59],\n ['\u0401', 9.59, 9.59],\n ['\u0402', 12.42, 12.42],\n ['\u0403', 8.94, 8.94],\n ['\u0404', 10.55, 10.67],\n ['\u0405', 10.11, 10.11],\n ['\u0406', 5.23, 5.23],\n ['\u0407', 5.23, 5.23],\n ['\u0408', 8.27, 8.58],\n ['\u0409', 16.18, 16.18],\n ['\u040A', 16.07, 16.29],\n ['\u040B', 12.83, 12.97],\n ['\u040C', 11.46, 11.46],\n ['\u040D', 11.73, 11.73],\n ['\u040E', 10.82, 10.82],\n ['\u040F', 11.73, 11.73],\n ['\u0410', 10.86, 10.86],\n ['\u0411', 10.69, 10.69],\n ['\u0412', 10.69, 10.69],\n ['\u0413', 8.94, 8.94],\n ['\u0414', 12.48, 12.48],\n ['\u0415', 9.59, 9.59],\n ['\u0416', 17.16, 17.16],\n ['\u0417', 9.96, 9.96],\n ['\u0418', 11.73, 11.73],\n ['\u0419', 11.73, 11.73],\n ['\u041A', 11.46, 11.46],\n ['\u041B', 11.65, 11.65],\n ['\u041C', 13.96, 13.96],\n ['\u041D', 11.73, 11.73],\n ['\u041E', 11.92, 11.92],\n ['\u041F', 11.73, 11.73],\n ['\u0420', 10.28, 10.28],\n ['\u0421', 10.42, 10.53],\n ['\u0422', 9.57, 9.57],\n ['\u0423', 10.82, 10.82],\n ['\u0424', 13.90, 13.90],\n ['\u0425', 10.82, 10.82],\n ['\u0426', 13.01, 13.01],\n ['\u0427', 11.34, 11.34],\n ['\u0428', 17.31, 17.31],\n ['\u0429', 18.59, 18.59],\n ['\u042A', 13.17, 13.17],\n ['\u042B', 14.53, 14.53],\n ['\u042C', 10.69, 10.69],\n ['\u042D', 10.55, 10.67],\n ['\u042E', 16.45, 16.45],\n ['\u042F', 10.80, 10.80],\n ['\u0430', 9.47, 9.47],\n ['\u0431', 9.80, 9.80],\n ['\u0432', 8.87, 8.87],\n ['\u0433', 7.37, 7.34],\n ['\u0434', 11.33, 11.33],\n ['\u0435', 9.51, 9.51],\n ['\u0436', 13.96, 13.96],\n ['\u0437', 8.16, 8.16],\n ['\u0438', 9.84, 9.84],\n ['\u0439', 9.84, 9.84],\n ['\u043A', 9.53, 9.53],\n ['\u043B', 10.28, 10.28],\n ['\u043C', 11.46, 11.46],\n ['\u043D', 9.70, 9.70],\n ['\u043E', 9.64, 9.64],\n ['\u043F', 9.70, 9.70],\n ['\u0440', 10.04, 10.04],\n ['\u0441', 8.32, 8.38],\n ['\u0442', 8.18, 8.14],\n ['\u0443', 9.15, 9.15],\n ['\u0444', 13.90, 13.90],\n ['\u0445', 9.05, 9.05],\n ['\u0446', 10.40, 10.40],\n ['\u0447', 9.64, 9.64],\n ['\u0448', 14.88, 14.88],\n ['\u0449', 15.49, 15.49],\n ['\u044A', 10.55, 10.55],\n ['\u044B', 12.68, 12.68],\n ['\u044C', 8.87, 8.87],\n ['\u044D', 8.32, 8.41],\n ['\u044E', 13.63, 13.63],\n ['\u044F', 9.02, 9.02],\n ['\u0450', 9.51, 9.51],\n ['\u0451', 9.51, 9.51],\n ['\u0452', 10.02, 10.02],\n ['\u0453', 7.37, 7.34],\n ['\u0454', 8.32, 8.41],\n ['\u0455', 8.36, 8.36],\n ['\u0456', 4.82, 4.82],\n ['\u0457', 4.82, 4.82],\n ['\u0458', 4.82, 4.82],\n ['\u0459', 13.90, 13.90],\n ['\u045A', 13.41, 13.41],\n ['\u045B', 10.29, 10.29],\n ['\u045C', 9.53, 9.53],\n ['\u045D', 9.84, 9.84],\n ['\u045E', 9.15, 9.15],\n ['\u045F', 9.70, 9.70],\n ['\u20A6', 11.34, 11.40],\n ['\u20A9', 15.47, 15.47],\n ['\u20AA', 12.68, 12.68],\n ['\u20B1', 10.42, 10.46],\n];\n\nlet built: GlyphWidthTable | undefined;\n\n/** The letters and currency signs every Linux face of Mantine's default stack draws itself, at 14px. Built on first\n * asking, so loading the module does no work. */\nexport function mantineGlyphWidths(): GlyphWidthTable {\n built ??= new GlyphWidthTable(14, at14);\n return built;\n}\n"],
|
|
5
|
+
"mappings": "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AA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAAO,KAAK;AAAA,EAClB,CAAC,UAAK,MAAM,IAAI;AAAA,EAChB,CAAC,UAAK,OAA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",
|
|
6
|
+
"names": ["createElement", "operator", "createElement"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ex-grid/mantine",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.2.0-rc.1",
|
|
4
|
+
"description": "ExGrid for Mantine: the design-system Wrapper that draws ExGrid for React's Chrome with Mantine's components and maps its Visual Tokens onto a Mantine theme.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/AkiraMisawa/ex-grid.git",
|
|
9
|
+
"directory": "packages/mantine"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://akiramisawa.github.io/ex-grid/",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"sideEffects": [
|
|
14
|
+
"*.css"
|
|
15
|
+
],
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./styles.css": "./styles.css"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist/index.js",
|
|
25
|
+
"dist/index.js.map",
|
|
26
|
+
"dist/index.d.ts",
|
|
27
|
+
"styles.css"
|
|
28
|
+
],
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@ex-grid/core": "0.2.0-rc.1",
|
|
31
|
+
"@ex-grid/react": "0.2.0-rc.1"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@mantine/core": "^9.7.0",
|
|
35
|
+
"@mantine/hooks": "^9.7.0",
|
|
36
|
+
"react": "^19.2.0",
|
|
37
|
+
"react-dom": "^19.2.0"
|
|
38
|
+
}
|
|
39
|
+
}
|
package/styles.css
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/* @ex-grid/mantine — the Wrapper's stylesheet (ADR-0390 section 5, ADR-0030). Every rule is scoped under the
|
|
2
|
+
Wrapper's own element, .mantine-ex-grid, so it outranks the core's bare-class defaults whatever order the two
|
|
3
|
+
stylesheets load in. It sets Visual Tokens, mapped onto the variables MantineProvider writes on the page, so a
|
|
4
|
+
change of scheme or a palette edit recolours the grid with no render anywhere (ADR-0027), and styles the
|
|
5
|
+
Wrapper's own elements. It touches no geometry, no internal class and no ARIA (ADR-0029/0030). Mantine's own
|
|
6
|
+
styles.layer.css sits in @layer mantine, which these unlayered rules always beat. */
|
|
7
|
+
.mantine-ex-grid {
|
|
8
|
+
/* Ground. No --ex-font-family: it is metrics-bearing (ADR-0027/0030), so MantineExGrid writes it inline, its
|
|
9
|
+
font's family beside the widths it hands the grid in the same render, never --mantine-font-family, whose
|
|
10
|
+
widths the grid would not know. A frame without it keeps the core's font and the core's widths. */
|
|
11
|
+
--ex-background: var(--mantine-color-body);
|
|
12
|
+
--ex-color: var(--mantine-color-text);
|
|
13
|
+
/* Header: Mantine's table header is the body at the 600 weight, its rules the table's border colour. */
|
|
14
|
+
--ex-header-background: var(--mantine-color-body);
|
|
15
|
+
--ex-header-color: var(--mantine-color-text);
|
|
16
|
+
--ex-header-font-weight: 600;
|
|
17
|
+
--ex-header-rule-color: var(--mantine-ex-rule);
|
|
18
|
+
/* Rules: rows always, columns only with withColumnBorders, as Mantine's Table draws them. */
|
|
19
|
+
--ex-row-rule-color: var(--mantine-ex-rule);
|
|
20
|
+
--ex-column-rule-color: transparent;
|
|
21
|
+
--ex-pinned-background: var(--mantine-color-body);
|
|
22
|
+
/* Selection from the primary colour, translucent so the value reads through it (ADR-0008); the Focus outline
|
|
23
|
+
and everything drawn with it is the primary filled. */
|
|
24
|
+
--ex-selection-fill: color-mix(in srgb, var(--mantine-primary-color-filled) 18%, transparent);
|
|
25
|
+
--ex-focus-row-fill: color-mix(in srgb, var(--mantine-primary-color-filled) 8%, transparent);
|
|
26
|
+
/* The hover band is an overlay drawn above the cells' text, as the Focus band is (ADR-0029), so it is
|
|
27
|
+
translucent: the text's colour thinned until it lays the shade Mantine's Table hovers in over the body. An
|
|
28
|
+
opaque shade there hid every value in the row under the pointer. */
|
|
29
|
+
--ex-row-hover-background: var(--mantine-ex-hover);
|
|
30
|
+
/* Row Stripes (ADR-0038): Mantine's own striped colour. */
|
|
31
|
+
--ex-row-stripe-background: var(--mantine-ex-stripe);
|
|
32
|
+
--ex-focus-outline: var(--mantine-ex-strong);
|
|
33
|
+
/* Heading Mark shades are opaque, so nothing beneath can alter the frame's shade. */
|
|
34
|
+
--ex-heading-mark-background: color-mix(in srgb, var(--mantine-color-text) 12%, var(--mantine-color-body));
|
|
35
|
+
--ex-heading-mark-whole-background: color-mix(in srgb, var(--mantine-primary-color-filled) 20%, var(--mantine-color-body));
|
|
36
|
+
--ex-grid-focus-outline: 2px solid var(--mantine-ex-strong);
|
|
37
|
+
--ex-editor-background: var(--mantine-color-body);
|
|
38
|
+
--ex-editor-color: var(--mantine-color-text);
|
|
39
|
+
--ex-editor-outline: 2px solid var(--mantine-ex-strong);
|
|
40
|
+
--ex-placeholder-background: var(--mantine-color-default-hover);
|
|
41
|
+
--ex-resize-guide-color: var(--mantine-primary-color-filled);
|
|
42
|
+
--ex-drop-indicator-color: var(--mantine-primary-color-filled);
|
|
43
|
+
/* The Size Tip (ADR-0052): the colours Mantine gives its own Tooltip, which read in both schemes. */
|
|
44
|
+
--ex-size-tip-background: var(--mantine-ex-tooltip-background);
|
|
45
|
+
--ex-size-tip-color: var(--mantine-ex-tooltip-color);
|
|
46
|
+
--ex-size-tip-outline: none;
|
|
47
|
+
/* Tone (ADR-0006): a loss in the theme's error, a gain in its success. */
|
|
48
|
+
--ex-tone-negative-color: var(--mantine-color-error);
|
|
49
|
+
--ex-tone-positive-color: var(--mantine-color-success);
|
|
50
|
+
/* Cell State (ADR-0006): the theme's error, and the primary for a Modified mark. */
|
|
51
|
+
--ex-state-error-color: var(--mantine-color-error);
|
|
52
|
+
--ex-state-modified-mark: var(--mantine-primary-color-filled);
|
|
53
|
+
--ex-state-stale-color: var(--mantine-color-dimmed);
|
|
54
|
+
--ex-state-missing-background: var(--mantine-color-default-hover);
|
|
55
|
+
/* A Header Group's toggle (ADR-0400 section 7): the chevron Mantine's own Accordion draws, pointing right while
|
|
56
|
+
the group is collapsed and down while it is open, in the text's colour. */
|
|
57
|
+
--ex-header-group-collapsed-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'%3E%3Cpath transform='rotate(-90 7.5 7.5)' d='M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z'/%3E%3C/svg%3E");
|
|
58
|
+
--ex-header-group-expanded-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'%3E%3Cpath d='M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z'/%3E%3C/svg%3E");
|
|
59
|
+
--ex-header-group-toggle-color: var(--mantine-color-text);
|
|
60
|
+
/* The Change Highlight (ADR-0068): a highlighter's amber, none of the colours above, translucent beneath the
|
|
61
|
+
text. */
|
|
62
|
+
--ex-change-highlight-background: color-mix(in srgb, var(--mantine-color-yellow-filled) 25%, transparent);
|
|
63
|
+
/* The Match Mark (ADR-0332 §4): the matches in view in grape, the current one in orange, more strongly, so the
|
|
64
|
+
two read apart and neither reads as the selection's primary or the Change Highlight's amber. */
|
|
65
|
+
--ex-match-mark-fill: color-mix(in srgb, var(--mantine-color-grape-filled) 22%, transparent);
|
|
66
|
+
--ex-match-mark-current-fill: color-mix(in srgb, var(--mantine-color-orange-filled) 45%, transparent);
|
|
67
|
+
--ex-scrollbar-color: var(--mantine-ex-scrollbar);
|
|
68
|
+
|
|
69
|
+
/* The surface itself. Inline-flex so the paper is as wide as its grid; a flex or grid parent may give it less
|
|
70
|
+
than its columns' width, and a Stretch grid then takes that box (ADR-0045). */
|
|
71
|
+
display: inline-flex;
|
|
72
|
+
flex-direction: column;
|
|
73
|
+
min-width: 0;
|
|
74
|
+
box-sizing: border-box;
|
|
75
|
+
color: var(--mantine-color-text);
|
|
76
|
+
font-family: var(--mantine-font-family);
|
|
77
|
+
/* The inset that keeps the grid's square corners inside the paper's round ones (ADR-0030): a rounded paper
|
|
78
|
+
cannot clip its content, which would clip the grid's popovers (UX-11). */
|
|
79
|
+
padding: var(--paper-radius, var(--mantine-radius-default));
|
|
80
|
+
}
|
|
81
|
+
/* The colours Mantine's Table and Tooltip take per scheme, named once here so the tokens above read one variable. */
|
|
82
|
+
:where([data-mantine-color-scheme='light']) .mantine-ex-grid {
|
|
83
|
+
--mantine-ex-rule: var(--mantine-color-gray-3);
|
|
84
|
+
/* gray-1 over the white body. */
|
|
85
|
+
--mantine-ex-hover: color-mix(in srgb, var(--mantine-color-text) 5%, transparent);
|
|
86
|
+
--mantine-ex-stripe: var(--mantine-color-gray-0);
|
|
87
|
+
--mantine-ex-tooltip-background: var(--mantine-color-gray-9);
|
|
88
|
+
--mantine-ex-tooltip-color: var(--mantine-color-white);
|
|
89
|
+
--mantine-ex-scrollbar: var(--mantine-color-gray-4);
|
|
90
|
+
/* What the keyboard's marks are drawn in, the Focus outline, the grid's and the editor's: the primary, which
|
|
91
|
+
the light body sets off. */
|
|
92
|
+
--mantine-ex-strong: var(--mantine-primary-color-filled);
|
|
93
|
+
}
|
|
94
|
+
:where([data-mantine-color-scheme='dark']) .mantine-ex-grid {
|
|
95
|
+
--mantine-ex-rule: var(--mantine-color-dark-4);
|
|
96
|
+
/* dark-5 over the dark-7 body. */
|
|
97
|
+
--mantine-ex-hover: color-mix(in srgb, var(--mantine-color-text) 14%, transparent);
|
|
98
|
+
--mantine-ex-stripe: var(--mantine-color-dark-6);
|
|
99
|
+
--mantine-ex-tooltip-background: var(--mantine-color-gray-2);
|
|
100
|
+
--mantine-ex-tooltip-color: var(--mantine-color-black);
|
|
101
|
+
--mantine-ex-scrollbar: var(--mantine-color-dark-3);
|
|
102
|
+
/* The dark scheme's (UX-9): the primary with its lightness raised just far enough to clear 3:1 against the
|
|
103
|
+
dark body, hue and chroma kept, as the MudBlazor Wrapper raises its own. */
|
|
104
|
+
--mantine-ex-strong: oklch(from var(--mantine-primary-color-filled) max(l, 0.64) c h);
|
|
105
|
+
}
|
|
106
|
+
/* A Stretch grid's Paper (ADR-0045): as wide as the container, so the grid inside it takes the container's width, not
|
|
107
|
+
its columns'. */
|
|
108
|
+
.mantine-ex-grid.mantine-ex-grid-stretch {
|
|
109
|
+
display: flex;
|
|
110
|
+
width: 100%;
|
|
111
|
+
}
|
|
112
|
+
.mantine-ex-grid.mantine-ex-grid-square {
|
|
113
|
+
padding: 0;
|
|
114
|
+
}
|
|
115
|
+
.mantine-ex-grid.mantine-ex-grid-column-borders {
|
|
116
|
+
--ex-column-rule-color: var(--mantine-ex-rule);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* The menus' items (ADR-0010/0036): Mantine's subtle buttons laid out as its Menu's items, each label at the
|
|
120
|
+
start. Scoped to the menu's own element, which stands inside the core's popover; the popover, its place and its
|
|
121
|
+
box stay the core's. */
|
|
122
|
+
.mantine-ex-grid-menu {
|
|
123
|
+
display: flex;
|
|
124
|
+
flex-direction: column;
|
|
125
|
+
padding: 4px;
|
|
126
|
+
}
|
|
127
|
+
.mantine-ex-grid-menu .mantine-ex-grid-menu-item {
|
|
128
|
+
justify-content: flex-start;
|
|
129
|
+
font-weight: 400;
|
|
130
|
+
}
|
|
131
|
+
.mantine-ex-grid-menu .mantine-ex-grid-menu-item .mantine-Button-inner {
|
|
132
|
+
justify-content: flex-start;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* The filter panel (ADR-0009/0030): Mantine's controls in a column inside the core's popover, the value list
|
|
136
|
+
scrolling on its own and the actions at the end. No width of its own: the core's popover sets it (ADR-0040). */
|
|
137
|
+
.mantine-ex-grid-filter {
|
|
138
|
+
display: flex;
|
|
139
|
+
flex-direction: column;
|
|
140
|
+
gap: 8px;
|
|
141
|
+
padding: 8px;
|
|
142
|
+
flex: 1 1 auto;
|
|
143
|
+
min-height: 0;
|
|
144
|
+
}
|
|
145
|
+
.mantine-ex-grid-filter-values {
|
|
146
|
+
display: flex;
|
|
147
|
+
flex-direction: column;
|
|
148
|
+
gap: 4px;
|
|
149
|
+
max-height: 240px;
|
|
150
|
+
min-height: 48px;
|
|
151
|
+
flex: 1 1 auto;
|
|
152
|
+
overflow-y: auto;
|
|
153
|
+
}
|
|
154
|
+
.mantine-ex-grid-filter-actions,
|
|
155
|
+
.mantine-ex-grid-find-actions {
|
|
156
|
+
display: flex;
|
|
157
|
+
justify-content: flex-end;
|
|
158
|
+
gap: 4px;
|
|
159
|
+
flex-shrink: 0;
|
|
160
|
+
}
|
|
161
|
+
/* The find panel (ADR-0055): the filter panel's column, with no list to give way. The outcome line keeps its height
|
|
162
|
+
when empty, so the panel does not jump when a step finds nothing. */
|
|
163
|
+
.mantine-ex-grid-find {
|
|
164
|
+
display: flex;
|
|
165
|
+
flex-direction: column;
|
|
166
|
+
gap: 6px;
|
|
167
|
+
padding: 8px;
|
|
168
|
+
min-height: 0;
|
|
169
|
+
}
|
|
170
|
+
.mantine-ex-grid-find-outcome { min-height: 1.4em; }
|
|
171
|
+
|
|
172
|
+
/* The Cell Editor's field (ADR-0010): fills the box the core floats over the cell; the box, its outline and its
|
|
173
|
+
background are the core's (.ex-editor). No padding of its own, since the box already pads by the cell's, and the
|
|
174
|
+
text would jump at the start and the commit of an edit. */
|
|
175
|
+
.mantine-ex-grid .ex-editor .mantine-ex-editor,
|
|
176
|
+
.mantine-ex-grid .ex-name-box .mantine-ex-name-box,
|
|
177
|
+
.mantine-ex-grid .ex-formula-bar-text .mantine-ex-formula-bar-text {
|
|
178
|
+
box-sizing: border-box;
|
|
179
|
+
width: 100%;
|
|
180
|
+
height: 100%;
|
|
181
|
+
margin: 0;
|
|
182
|
+
padding: 0;
|
|
183
|
+
border: none;
|
|
184
|
+
outline: none;
|
|
185
|
+
font: inherit;
|
|
186
|
+
line-height: inherit;
|
|
187
|
+
background: transparent;
|
|
188
|
+
color: inherit;
|
|
189
|
+
}
|
|
190
|
+
.mantine-ex-grid .ex-editor .mantine-ex-editor {
|
|
191
|
+
box-shadow: inset 0 -2px 0 var(--mantine-ex-strong);
|
|
192
|
+
}
|
|
193
|
+
/* A Reject stands (ADR-0034): the underline turns the theme's error colour. Painted, not laid out. */
|
|
194
|
+
.mantine-ex-grid .ex-editor .mantine-ex-editor[aria-invalid='true'] {
|
|
195
|
+
box-shadow: inset 0 -2px 0 var(--mantine-color-error);
|
|
196
|
+
}
|
|
197
|
+
.mantine-ex-grid .ex-name-box .mantine-ex-name-box,
|
|
198
|
+
.mantine-ex-grid .ex-formula-bar-text .mantine-ex-formula-bar-text {
|
|
199
|
+
white-space: nowrap;
|
|
200
|
+
overflow: hidden;
|
|
201
|
+
text-overflow: ellipsis;
|
|
202
|
+
}
|
|
203
|
+
.mantine-ex-grid .ex-formula-bar-text .mantine-ex-formula-bar-text[data-borrowed] {
|
|
204
|
+
color: var(--mantine-color-dimmed);
|
|
205
|
+
}
|
|
206
|
+
.mantine-ex-grid .ex-formula-bar-text .mantine-ex-formula-bar-text:not([readonly]):focus {
|
|
207
|
+
box-shadow: inset 0 -2px 0 var(--mantine-ex-strong);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/* The completion list and the argument hint (ADR-0051): a row's height per candidate in the cell's font, as the
|
|
211
|
+
core's own list, the chosen one in the theme's primary as Mantine's Combobox marks its selected option. The box
|
|
212
|
+
beneath the editor, its place, its bound and its scrolling are the core's (.ex-completion). */
|
|
213
|
+
.mantine-ex-grid .mantine-ex-grid-completion-item,
|
|
214
|
+
.mantine-ex-grid .mantine-ex-grid-completion-hint {
|
|
215
|
+
padding: 0 var(--ex-cell-padding-x, 8px);
|
|
216
|
+
line-height: var(--ex-row-height);
|
|
217
|
+
white-space: nowrap;
|
|
218
|
+
overflow: hidden;
|
|
219
|
+
text-overflow: ellipsis;
|
|
220
|
+
}
|
|
221
|
+
.mantine-ex-grid .mantine-ex-grid-completion-item { cursor: pointer; }
|
|
222
|
+
.mantine-ex-grid .mantine-ex-grid-completion-hint { color: var(--mantine-color-dimmed); }
|
|
223
|
+
.mantine-ex-grid .mantine-ex-grid-completion-item[aria-selected='true'] {
|
|
224
|
+
background: var(--mantine-primary-color-filled);
|
|
225
|
+
color: var(--mantine-primary-color-contrast);
|
|
226
|
+
}
|
|
227
|
+
.mantine-ex-grid .mantine-ex-grid-completion-list + .mantine-ex-grid-completion-hint {
|
|
228
|
+
border-top: var(--ex-rule-width, 1px) solid var(--mantine-ex-rule);
|
|
229
|
+
}
|