@omnitend/dashboard-for-laravel 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/charts/chartTheme.d.ts +1 -0
- package/dist/components/extended/DXTable.vue.d.ts +9 -44
- package/dist/components/extended/DXTableEditorModal.vue.d.ts +80 -0
- package/dist/components/extended/DXTablePagination.vue.d.ts +27 -0
- package/dist/composables/useResourceEditor.d.ts +74 -0
- package/dist/dashboard-for-laravel.js +12435 -12608
- package/dist/dashboard-for-laravel.js.map +1 -1
- package/dist/dashboard-for-laravel.umd.cjs +8 -8
- package/dist/dashboard-for-laravel.umd.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/docs/public/api-reference.json +193 -7
- package/docs/public/docs-map.md +2 -2
- package/package.json +2 -2
- package/resources/css/theme.scss +28 -0
- package/resources/js/components/charts/DXBarChart.vue +1 -1
- package/resources/js/components/charts/DXDoughnutChart.vue +1 -1
- package/resources/js/components/charts/DXLineChart.vue +1 -1
- package/resources/js/components/charts/chartTheme.ts +19 -16
- package/resources/js/components/extended/DXTable.vue +161 -1034
- package/resources/js/components/extended/DXTableEditorModal.vue +247 -0
- package/resources/js/components/extended/DXTablePagination.vue +126 -0
- package/resources/js/composables/useResourceEditor.ts +542 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generated": "2026-07-
|
|
2
|
+
"generated": "2026-07-18T13:55:43.374Z",
|
|
3
3
|
"package": {
|
|
4
4
|
"name": "@omnitend/dashboard-for-laravel",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.28.0"
|
|
6
6
|
},
|
|
7
7
|
"components": {
|
|
8
8
|
"base": [
|
|
@@ -1265,7 +1265,7 @@
|
|
|
1265
1265
|
"name": "DXBarChart",
|
|
1266
1266
|
"category": "extended",
|
|
1267
1267
|
"filePath": "resources/js/components/charts/DXBarChart.vue",
|
|
1268
|
-
"description": "A themed bar chart. Thin wrapper around vue-chartjs (chart.js) with the
|
|
1268
|
+
"description": "A themed bar chart. Thin wrapper around vue-chartjs (chart.js) with the theme's dedicated chart palette (--dx-chart-1..8) applied and dashboard-friendly defaults (no x gridlines, formatted value ticks, responsive, legend hidden for a single series). Pass `labels` + `datasets`; `options` deep-merges over the defaults. Requires the optional peer deps `chart.js` and `vue-chartjs`.",
|
|
1269
1269
|
"props": [
|
|
1270
1270
|
{
|
|
1271
1271
|
"name": "labels",
|
|
@@ -1751,7 +1751,7 @@
|
|
|
1751
1751
|
"name": "DXDoughnutChart",
|
|
1752
1752
|
"category": "extended",
|
|
1753
1753
|
"filePath": "resources/js/components/charts/DXDoughnutChart.vue",
|
|
1754
|
-
"description": "A themed doughnut chart. Thin wrapper around vue-chartjs (chart.js) with one
|
|
1754
|
+
"description": "A themed doughnut chart. Thin wrapper around vue-chartjs (chart.js) with one chart-palette colour (--dx-chart-1..8) per slice and dashboard-friendly defaults. Pass `labels` + either `data` (a number array) or full `datasets`; `options` deep-merges over the defaults. Requires the optional peer deps `chart.js` and `vue-chartjs`.",
|
|
1755
1755
|
"props": [
|
|
1756
1756
|
{
|
|
1757
1757
|
"name": "labels",
|
|
@@ -2324,7 +2324,7 @@
|
|
|
2324
2324
|
"name": "DXLineChart",
|
|
2325
2325
|
"category": "extended",
|
|
2326
2326
|
"filePath": "resources/js/components/charts/DXLineChart.vue",
|
|
2327
|
-
"description": "A themed line chart. Thin wrapper around vue-chartjs (chart.js) with the
|
|
2327
|
+
"description": "A themed line chart. Thin wrapper around vue-chartjs (chart.js) with the theme's dedicated chart palette applied (--dx-chart-1..8 stroke + translucent fill, smoothed line) and dashboard-friendly defaults. Pass `labels` + `datasets`; `options` deep-merges over the defaults. Requires the optional peer deps `chart.js` and `vue-chartjs`.",
|
|
2328
2328
|
"props": [
|
|
2329
2329
|
{
|
|
2330
2330
|
"name": "labels",
|
|
@@ -3045,7 +3045,123 @@
|
|
|
3045
3045
|
"title": "binding"
|
|
3046
3046
|
}
|
|
3047
3047
|
]
|
|
3048
|
+
}
|
|
3049
|
+
],
|
|
3050
|
+
"methods": []
|
|
3051
|
+
},
|
|
3052
|
+
{
|
|
3053
|
+
"name": "DXTableEditorModal",
|
|
3054
|
+
"category": "extended",
|
|
3055
|
+
"filePath": "resources/js/components/extended/DXTableEditorModal.vue",
|
|
3056
|
+
"description": "Internal edit/create modal for `DXTable` (#129). Renders the `DModal` + `DXForm` and maps DXTable's `edit-value`/`edit-span`/`tab-*` slots onto DXForm's `value`/`span`/`tab-*` slots, providing the row context and a `close` handle. Extracted so `DXTable` is a thin façade over the table render, the pagination, the editor logic (`useResourceEditor`) and this modal — rather than owning all four. The edit-modal slots reach here forwarded from DXTable (consumer → DXTable → here → DXForm). This component computes which keyed slots the consumer actually provided from its OWN `$slots`, so the slot-plumbing lives entirely with the modal, not the composable.",
|
|
3057
|
+
"props": [
|
|
3058
|
+
{
|
|
3059
|
+
"name": "show",
|
|
3060
|
+
"type": "boolean",
|
|
3061
|
+
"required": true,
|
|
3062
|
+
"description": "Whether the modal is open (v-model:show)."
|
|
3063
|
+
},
|
|
3064
|
+
{
|
|
3065
|
+
"name": "title",
|
|
3066
|
+
"type": "string",
|
|
3067
|
+
"required": true,
|
|
3068
|
+
"description": "Modal title."
|
|
3069
|
+
},
|
|
3070
|
+
{
|
|
3071
|
+
"name": "size",
|
|
3072
|
+
"type": "union",
|
|
3073
|
+
"required": false,
|
|
3074
|
+
"description": "Modal size."
|
|
3075
|
+
},
|
|
3076
|
+
{
|
|
3077
|
+
"name": "loading",
|
|
3078
|
+
"type": "boolean",
|
|
3079
|
+
"required": true,
|
|
3080
|
+
"description": "True while the full record is loading via showUrl."
|
|
3081
|
+
},
|
|
3082
|
+
{
|
|
3083
|
+
"name": "form",
|
|
3084
|
+
"type": "any",
|
|
3085
|
+
"required": true,
|
|
3086
|
+
"description": "The edit/create form (a useForm instance), or null before first open."
|
|
3087
|
+
},
|
|
3088
|
+
{
|
|
3089
|
+
"name": "formInstanceKey",
|
|
3090
|
+
"type": "number",
|
|
3091
|
+
"required": true,
|
|
3092
|
+
"description": "Bumped per modal open to remount the DXForm subtree (fresh DXField state)."
|
|
3093
|
+
},
|
|
3094
|
+
{
|
|
3095
|
+
"name": "activeTab",
|
|
3096
|
+
"type": "number",
|
|
3097
|
+
"required": true,
|
|
3098
|
+
"description": "Active tab index (v-model:active-tab)."
|
|
3099
|
+
},
|
|
3100
|
+
{
|
|
3101
|
+
"name": "fields",
|
|
3102
|
+
"type": "Array",
|
|
3103
|
+
"required": true,
|
|
3104
|
+
"description": "Field definitions passed to DXForm."
|
|
3105
|
+
},
|
|
3106
|
+
{
|
|
3107
|
+
"name": "tabs",
|
|
3108
|
+
"type": "Array",
|
|
3109
|
+
"required": false,
|
|
3110
|
+
"description": "Tab definitions passed to DXForm."
|
|
3111
|
+
},
|
|
3112
|
+
{
|
|
3113
|
+
"name": "item",
|
|
3114
|
+
"type": "any",
|
|
3115
|
+
"required": true,
|
|
3116
|
+
"description": "The row being edited (null in create mode) — the slot/context row."
|
|
3117
|
+
},
|
|
3118
|
+
{
|
|
3119
|
+
"name": "isCreateMode",
|
|
3120
|
+
"type": "boolean",
|
|
3121
|
+
"required": true,
|
|
3122
|
+
"description": "Whether the modal is in create mode (vs edit)."
|
|
3123
|
+
},
|
|
3124
|
+
{
|
|
3125
|
+
"name": "pendingAction",
|
|
3126
|
+
"type": "union",
|
|
3127
|
+
"required": true,
|
|
3128
|
+
"description": "Which action is in flight, so Save/Delete show their own loading label."
|
|
3129
|
+
},
|
|
3130
|
+
{
|
|
3131
|
+
"name": "deleteUrl",
|
|
3132
|
+
"type": "string",
|
|
3133
|
+
"required": false,
|
|
3134
|
+
"description": "Delete endpoint — gates the Delete button."
|
|
3135
|
+
}
|
|
3136
|
+
],
|
|
3137
|
+
"events": [
|
|
3138
|
+
{
|
|
3139
|
+
"name": "update:show",
|
|
3140
|
+
"description": "v-model:show — the modal open state changed.",
|
|
3141
|
+
"properties": []
|
|
3142
|
+
},
|
|
3143
|
+
{
|
|
3144
|
+
"name": "update:activeTab",
|
|
3145
|
+
"description": "v-model:active-tab — the active tab changed.",
|
|
3146
|
+
"properties": []
|
|
3048
3147
|
},
|
|
3148
|
+
{
|
|
3149
|
+
"name": "save",
|
|
3150
|
+
"description": "Save was requested (footer button or DXForm submit).",
|
|
3151
|
+
"properties": []
|
|
3152
|
+
},
|
|
3153
|
+
{
|
|
3154
|
+
"name": "cancel",
|
|
3155
|
+
"description": "Cancel/close was requested.",
|
|
3156
|
+
"properties": []
|
|
3157
|
+
},
|
|
3158
|
+
{
|
|
3159
|
+
"name": "delete",
|
|
3160
|
+
"description": "Delete was requested.",
|
|
3161
|
+
"properties": []
|
|
3162
|
+
}
|
|
3163
|
+
],
|
|
3164
|
+
"slots": [
|
|
3049
3165
|
{
|
|
3050
3166
|
"name": "`edit-value(${key})`",
|
|
3051
3167
|
"description": "Custom input for field `<key>` in the edit/create modal, forwarded to DXForm. Name it `edit-value(<fieldKey>)`.",
|
|
@@ -3211,6 +3327,76 @@
|
|
|
3211
3327
|
],
|
|
3212
3328
|
"methods": []
|
|
3213
3329
|
},
|
|
3330
|
+
{
|
|
3331
|
+
"name": "DXTablePagination",
|
|
3332
|
+
"category": "extended",
|
|
3333
|
+
"filePath": "resources/js/components/extended/DXTablePagination.vue",
|
|
3334
|
+
"description": "Internal pagination + per-page footer for `DXTable`. Renders the pager, the per-page selector, and the \"X to Y out of Z items\" info line (with the \"Filtered from N\" note when a column filter is active). Extracted because `DXTable` used to carry three byte-identical copies of this footer — one per data mode (client-side / inertia / provider) — that differed only in which `PaginationData` object and page-change handler they used, so every footer fix had to be written three times (#123). `DXTable` now derives the active pagination + handler and renders this once. It owns its own `:deep(.pagination …)` styling (rather than leaving it in `DXTable`), because a scoped `:deep()` in `DXTable` would not reach the pager once it lives in a child component — the scope-id doesn't cross the boundary. Anchoring the rules on this component's own `.dx-table-pagination` root (a plain element it owns) gives the scope-id a deterministic host.",
|
|
3335
|
+
"props": [
|
|
3336
|
+
{
|
|
3337
|
+
"name": "pagination",
|
|
3338
|
+
"type": "PaginationData",
|
|
3339
|
+
"required": true,
|
|
3340
|
+
"description": "The active pagination metadata (client-side / inertia / provider)."
|
|
3341
|
+
},
|
|
3342
|
+
{
|
|
3343
|
+
"name": "perPage",
|
|
3344
|
+
"type": "number",
|
|
3345
|
+
"required": true,
|
|
3346
|
+
"description": "The effective page size, shown in the selector."
|
|
3347
|
+
},
|
|
3348
|
+
{
|
|
3349
|
+
"name": "perPageOptions",
|
|
3350
|
+
"type": "Array",
|
|
3351
|
+
"required": true,
|
|
3352
|
+
"description": "Page sizes offered by the selector."
|
|
3353
|
+
},
|
|
3354
|
+
{
|
|
3355
|
+
"name": "showPagination",
|
|
3356
|
+
"type": "boolean",
|
|
3357
|
+
"required": true,
|
|
3358
|
+
"description": "Whether to render the pager (still hidden when there is only one page)."
|
|
3359
|
+
},
|
|
3360
|
+
{
|
|
3361
|
+
"name": "showPerPageSelector",
|
|
3362
|
+
"type": "boolean",
|
|
3363
|
+
"required": true,
|
|
3364
|
+
"description": "Whether to render the per-page selector."
|
|
3365
|
+
},
|
|
3366
|
+
{
|
|
3367
|
+
"name": "singularItemName",
|
|
3368
|
+
"type": "string",
|
|
3369
|
+
"required": true,
|
|
3370
|
+
"description": "Singular item noun for the info line (e.g. \"product\")."
|
|
3371
|
+
},
|
|
3372
|
+
{
|
|
3373
|
+
"name": "pluralItemName",
|
|
3374
|
+
"type": "string",
|
|
3375
|
+
"required": true,
|
|
3376
|
+
"description": "Plural item noun for the info line (e.g. \"products\")."
|
|
3377
|
+
},
|
|
3378
|
+
{
|
|
3379
|
+
"name": "hasActiveFilters",
|
|
3380
|
+
"type": "boolean",
|
|
3381
|
+
"required": true,
|
|
3382
|
+
"description": "Whether a column filter is active — gates the \"Filtered from N\" note."
|
|
3383
|
+
}
|
|
3384
|
+
],
|
|
3385
|
+
"events": [
|
|
3386
|
+
{
|
|
3387
|
+
"name": "page-change",
|
|
3388
|
+
"description": "The user picked a page. Payload is the new 1-based page number.",
|
|
3389
|
+
"properties": []
|
|
3390
|
+
},
|
|
3391
|
+
{
|
|
3392
|
+
"name": "per-page-change",
|
|
3393
|
+
"description": "The per-page selector changed. Payload is the raw DFormSelect model value\n(the parent's `handlePerPageChange` narrows it — DFormSelect mirrors BVN's\nmodel, which can be a scalar, null, or array).",
|
|
3394
|
+
"properties": []
|
|
3395
|
+
}
|
|
3396
|
+
],
|
|
3397
|
+
"slots": [],
|
|
3398
|
+
"methods": []
|
|
3399
|
+
},
|
|
3214
3400
|
{
|
|
3215
3401
|
"name": "DXTableShell",
|
|
3216
3402
|
"category": "extended",
|
|
@@ -3295,8 +3481,8 @@
|
|
|
3295
3481
|
]
|
|
3296
3482
|
},
|
|
3297
3483
|
"stats": {
|
|
3298
|
-
"totalComponents":
|
|
3484
|
+
"totalComponents": 75,
|
|
3299
3485
|
"baseComponents": 56,
|
|
3300
|
-
"extendedComponents":
|
|
3486
|
+
"extendedComponents": 19
|
|
3301
3487
|
}
|
|
3302
3488
|
}
|
package/docs/public/docs-map.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Documentation Map
|
|
2
2
|
|
|
3
3
|
> Auto-generated hierarchical overview of all documentation
|
|
4
|
-
> Last updated: 2026-07-
|
|
4
|
+
> Last updated: 2026-07-18T13:55:43.432Z
|
|
5
5
|
|
|
6
6
|
This file provides a complete map of all available documentation for AI agents and developers.
|
|
7
7
|
|
|
@@ -95,7 +95,7 @@ This file provides a complete map of all available documentation for AI agents a
|
|
|
95
95
|
- [Forms](/guide/forms): The library includes a type-safe form system with validation, auto-generated forms, and composables.
|
|
96
96
|
- [Getting Started](/guide/getting-started): > **Alpha Notice:** v0.x — expect changes between minor versions.
|
|
97
97
|
- [Installation](/guide/installation): ```bash
|
|
98
|
-
- [Theming](/guide/theming): The library
|
|
98
|
+
- [Theming](/guide/theming): The library ships a custom Bootstrap 5 theme built around a **soft-first
|
|
99
99
|
- [TypeScript](/guide/typescript): The library is written in TypeScript and includes full type definitions for all components, composab
|
|
100
100
|
|
|
101
101
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omnitend/dashboard-for-laravel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"description": "Vue 3 dashboard components for Laravel with Bootstrap Vue Next",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/dashboard-for-laravel.umd.cjs",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"pretest:headless": "vite build",
|
|
39
39
|
"test:headless": "vitest --run --browser.headless",
|
|
40
40
|
"docs:dev": "astro dev",
|
|
41
|
-
"docs:build": "npm run docs:generate:ai && astro build",
|
|
41
|
+
"docs:build": "npm run docs:generate:ai && astro build && node scripts/check-docs-base-links.mjs",
|
|
42
42
|
"docs:preview": "astro preview",
|
|
43
43
|
"docs:generate": "node scripts/generate-component-docs.mjs",
|
|
44
44
|
"docs:generate:ai": "node scripts/generate-llms-txt.mjs && node scripts/generate-api-manifest.mjs && node scripts/generate-docs-map.mjs",
|
package/resources/css/theme.scss
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
// The Sass module for `color.mix()` etc. `@use` must precede all other
|
|
8
8
|
// statements (variable overrides, `@import`), so it stays at the very top.
|
|
9
9
|
@use "sass:color";
|
|
10
|
+
@use "sass:list";
|
|
10
11
|
@use "sass:map";
|
|
11
12
|
|
|
12
13
|
// ----------------------------------------------------------------------------
|
|
@@ -553,6 +554,33 @@ $bootstrap-icons-font-src: url("bootstrap-icons/font/fonts/bootstrap-icons.woff2
|
|
|
553
554
|
}
|
|
554
555
|
}
|
|
555
556
|
|
|
557
|
+
// ----------------------------------------------------------------------------
|
|
558
|
+
// Chart palette (data-viz)
|
|
559
|
+
// ----------------------------------------------------------------------------
|
|
560
|
+
// Dedicated categorical palette for the DX*Chart components — deliberately NOT
|
|
561
|
+
// the semantic UI colours (#141). Two reasons: the base $theme-colors carry
|
|
562
|
+
// dark "emphasis" shades (AA text/link colours, too muted for data series), and
|
|
563
|
+
// status colours (success/danger) shouldn't impersonate "series 2" — a green or
|
|
564
|
+
// red series should mean something.
|
|
565
|
+
//
|
|
566
|
+
// Eight vivid mid-lightness hues in a FIXED order. The order is load-bearing:
|
|
567
|
+
// it was derived by exhaustively permuting the hues (slot 1 pinned to the brand
|
|
568
|
+
// info-blue) to maximise the minimum adjacent-pair colour-vision-deficiency
|
|
569
|
+
// separation — validated at min adjacent ΔE 13.8 (OKLab ×100, protan/deutan
|
|
570
|
+
// simulated), min normal-vision ΔE 20.3, every hue ≥ 3:1 contrast on white.
|
|
571
|
+
// Reordering or swapping a hue needs that validation re-run, not an eyeball.
|
|
572
|
+
//
|
|
573
|
+
// Published as --dx-chart-1..8 so consumers can retheme charts by overriding
|
|
574
|
+
// the variables; chartTheme.ts reads them at runtime (with these hexes as
|
|
575
|
+
// fallbacks for SSR / missing-CSS cases — keep the two lists in sync).
|
|
576
|
+
$dx-chart-palette: (#2563eb, #65a30d, #7c3aed, #0d9488, #ea580c, #0891b2, #d97706, #db2777);
|
|
577
|
+
|
|
578
|
+
:root {
|
|
579
|
+
@for $i from 1 through list.length($dx-chart-palette) {
|
|
580
|
+
--dx-chart-#{$i}: #{list.nth($dx-chart-palette, $i)};
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
|
|
556
584
|
// ----------------------------------------------------------------------------
|
|
557
585
|
// Autocomplete
|
|
558
586
|
// ----------------------------------------------------------------------------
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component
|
|
3
3
|
A themed bar chart. Thin wrapper around vue-chartjs (chart.js) with the
|
|
4
|
-
|
|
4
|
+
theme's dedicated chart palette (--dx-chart-1..8) applied and dashboard-friendly defaults (no x gridlines,
|
|
5
5
|
formatted value ticks, responsive, legend hidden for a single series). Pass
|
|
6
6
|
`labels` + `datasets`; `options` deep-merges over the defaults.
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component
|
|
3
3
|
A themed doughnut chart. Thin wrapper around vue-chartjs (chart.js) with one
|
|
4
|
-
|
|
4
|
+
chart-palette colour (--dx-chart-1..8) per slice and dashboard-friendly defaults. Pass
|
|
5
5
|
`labels` + either `data` (a number array) or full `datasets`; `options`
|
|
6
6
|
deep-merges over the defaults.
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component
|
|
3
3
|
A themed line chart. Thin wrapper around vue-chartjs (chart.js) with the
|
|
4
|
-
|
|
4
|
+
theme's dedicated chart palette applied (--dx-chart-1..8 stroke + translucent fill, smoothed line)
|
|
5
5
|
and dashboard-friendly defaults. Pass `labels` + `datasets`; `options`
|
|
6
6
|
deep-merges over the defaults.
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared theming for the DX*Chart wrappers:
|
|
3
|
-
* the live
|
|
2
|
+
* Shared theming for the DX*Chart wrappers: the dedicated categorical chart
|
|
3
|
+
* palette (--dx-chart-* from the live theme), dashboard-friendly default options (no gridlines /
|
|
4
4
|
* legend clutter, responsive, formatted ticks), and a one-time Chart.js
|
|
5
5
|
* registration. chart.js / vue-chartjs are OPTIONAL peer deps.
|
|
6
6
|
*/
|
|
@@ -40,20 +40,23 @@ export function registerCharts(): void {
|
|
|
40
40
|
registered = true;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
//
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
["--
|
|
53
|
-
["--
|
|
54
|
-
["--
|
|
55
|
-
["--
|
|
56
|
-
["--
|
|
43
|
+
// The dedicated data-viz palette (`$dx-chart-palette` in theme.scss) — eight
|
|
44
|
+
// vivid hues in a fixed, CVD-validated order, published as --dx-chart-1..8.
|
|
45
|
+
// Deliberately NOT the semantic --bs-* colours (#141): the base theme colours
|
|
46
|
+
// are dark AA "emphasis" shades (too muted for series), and status colours
|
|
47
|
+
// shouldn't impersonate "series 2". Fallbacks mirror the shipped theme so
|
|
48
|
+
// charts still render without the CSS (SSR / tests / a consumer who didn't
|
|
49
|
+
// import it). Sync with theme.scss's $dx-chart-palette is enforced by a test
|
|
50
|
+
// that parses the Sass source (charts.test.ts), which is why this is exported.
|
|
51
|
+
export const PALETTE_VARS: Array<[string, string]> = [
|
|
52
|
+
["--dx-chart-1", "#2563eb"], // blue
|
|
53
|
+
["--dx-chart-2", "#65a30d"], // lime
|
|
54
|
+
["--dx-chart-3", "#7c3aed"], // violet
|
|
55
|
+
["--dx-chart-4", "#0d9488"], // teal
|
|
56
|
+
["--dx-chart-5", "#ea580c"], // orange
|
|
57
|
+
["--dx-chart-6", "#0891b2"], // cyan
|
|
58
|
+
["--dx-chart-7", "#d97706"], // amber
|
|
59
|
+
["--dx-chart-8", "#db2777"], // pink
|
|
57
60
|
];
|
|
58
61
|
|
|
59
62
|
/** Resolve the themed categorical palette from the document root. */
|