@cdc/core 4.25.8 → 4.25.11

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.
Files changed (163) hide show
  1. package/_stories/StoryRenderingTests.stories.tsx +164 -0
  2. package/components/AdvancedEditor/AdvancedEditor.tsx +32 -9
  3. package/components/CustomColorsEditor/CustomColorsEditor.css +299 -0
  4. package/components/CustomColorsEditor/CustomColorsEditor.tsx +209 -0
  5. package/components/CustomColorsEditor/index.ts +1 -0
  6. package/components/DataTable/DataTable.tsx +56 -38
  7. package/components/DataTable/DataTableStandAlone.tsx +8 -3
  8. package/components/DataTable/components/ChartHeader.tsx +44 -14
  9. package/components/DataTable/components/DataTableEditorPanel.tsx +12 -2
  10. package/components/DataTable/components/ExpandCollapse.tsx +10 -1
  11. package/components/DataTable/components/MapHeader.tsx +24 -13
  12. package/components/DataTable/data-table.css +12 -0
  13. package/components/DataTable/helpers/chartCellMatrix.tsx +11 -8
  14. package/components/DataTable/helpers/mapCellMatrix.tsx +33 -4
  15. package/components/DataTable/helpers/standardizeState.js +2 -2
  16. package/components/DataTable/helpers/tests/standardizeState.test.js +54 -0
  17. package/components/DownloadButton.tsx +40 -14
  18. package/components/EditorPanel/DataTableEditor.tsx +3 -3
  19. package/components/EditorPanel/EditorPanel.styles.css +423 -0
  20. package/components/EditorPanel/FootnotesEditor.tsx +44 -37
  21. package/components/EditorPanel/Inputs.tsx +12 -2
  22. package/components/EditorPanel/VizFilterEditor/NestedDropdownEditor.tsx +35 -62
  23. package/components/EditorPanel/VizFilterEditor/VizFilterEditor.tsx +12 -2
  24. package/components/EditorPanel/components/MarkupHighlightedTextField.tsx +227 -0
  25. package/components/EditorPanel/components/MarkupVariablesEditor.tsx +450 -0
  26. package/components/EditorPanel/components/PanelMarkup.tsx +59 -0
  27. package/components/ErrorBoundary.jsx +3 -1
  28. package/components/Filters/Filters.tsx +52 -24
  29. package/components/Filters/components/Dropdown.tsx +6 -1
  30. package/components/Filters/components/Tabs.tsx +1 -0
  31. package/components/Footnotes/Footnotes.tsx +35 -25
  32. package/components/Footnotes/FootnotesStandAlone.tsx +42 -6
  33. package/components/HeaderThemeSelector/HeaderThemeSelector.css +43 -0
  34. package/components/HeaderThemeSelector/HeaderThemeSelector.stories.tsx +74 -0
  35. package/components/HeaderThemeSelector/HeaderThemeSelector.tsx +61 -0
  36. package/components/HeaderThemeSelector/index.ts +2 -0
  37. package/components/Layout/styles/editor.scss +2 -1
  38. package/components/Legend/Legend.Gradient.tsx +3 -6
  39. package/components/LegendShape.tsx +121 -3
  40. package/components/Loader/Loader.tsx +1 -1
  41. package/components/MediaControls.tsx +72 -21
  42. package/components/PaletteConversionModal.tsx +90 -0
  43. package/components/PaletteSelector/DeveloperPaletteRollback.tsx +114 -0
  44. package/components/PaletteSelector/PaletteSelector.css +94 -0
  45. package/components/PaletteSelector/PaletteSelector.tsx +112 -0
  46. package/components/PaletteSelector/index.ts +2 -0
  47. package/components/RichTooltip/RichTooltip.tsx +1 -0
  48. package/components/Table/Table.tsx +3 -1
  49. package/components/Table/components/Cell.tsx +23 -2
  50. package/components/Table/components/Row.tsx +5 -3
  51. package/components/_stories/BlurStrokeTest.stories.tsx +1 -1
  52. package/components/_stories/DataTable.stories.tsx +1 -1
  53. package/components/_stories/Filters.stories.tsx +21 -2
  54. package/components/_stories/Footnotes.CSV.stories.tsx +247 -0
  55. package/components/_stories/Footnotes.stories.tsx +769 -4
  56. package/components/_stories/Inputs.stories.tsx +3 -3
  57. package/components/_stories/MultiSelect.stories.tsx +3 -3
  58. package/components/_stories/NestedDropdown.stories.tsx +1 -1
  59. package/components/_stories/Table.stories.tsx +1 -1
  60. package/components/_stories/styles.scss +0 -1
  61. package/components/elements/_stories/Button.stories.tsx +1 -1
  62. package/components/elements/_stories/Card.stories.tsx +1 -1
  63. package/components/inputs/InputToggle.tsx +2 -0
  64. package/components/managers/DataDesigner.tsx +10 -9
  65. package/components/managers/_stories/DataDesigner.stories.tsx +1 -1
  66. package/components/ui/Accordion.jsx +1 -1
  67. package/components/ui/Tooltip.tsx +2 -1
  68. package/components/ui/_stories/Accordion.stories.tsx +1 -1
  69. package/components/ui/_stories/ColorPaletteMigration.stories.mdx +275 -0
  70. package/components/ui/_stories/Colors.stories.tsx +330 -0
  71. package/components/ui/_stories/IconGallery.stories.tsx +316 -0
  72. package/components/ui/_stories/Title.stories.tsx +1 -1
  73. package/components/ui/accordion.styles.css +57 -0
  74. package/contexts/EditorContext.ts +18 -0
  75. package/contexts/editor.actions.ts +28 -0
  76. package/contexts/editor.reducer.ts +94 -0
  77. package/data/chartColorPalettes.ts +118 -0
  78. package/data/colorPalettes.ts +9 -0
  79. package/data/mapColorPalettes.ts +45 -0
  80. package/data/sharedPalettes.ts +50 -0
  81. package/dist/cove-main.css +63 -14
  82. package/dist/cove-main.css.map +1 -1
  83. package/generateViteConfig.js +80 -0
  84. package/helpers/addValuesToFilters.ts +7 -3
  85. package/helpers/cloneConfig.ts +31 -0
  86. package/helpers/configDataHelpers.ts +128 -0
  87. package/helpers/configHelpers.ts +27 -0
  88. package/helpers/constants.ts +42 -2
  89. package/helpers/cove/number.ts +33 -12
  90. package/helpers/coveUpdateWorker.ts +15 -3
  91. package/helpers/fetchRemoteData.ts +3 -15
  92. package/helpers/filterColorPalettes.ts +152 -0
  93. package/helpers/generateColorsArray.ts +13 -0
  94. package/helpers/getColorPaletteVersion.ts +33 -0
  95. package/helpers/getPaletteAccessor.ts +18 -0
  96. package/helpers/markupProcessor.ts +220 -0
  97. package/helpers/mergeCustomOrderValues.ts +37 -0
  98. package/helpers/metrics/helpers.ts +42 -19
  99. package/helpers/metrics/types.ts +48 -9
  100. package/helpers/metrics/utils.ts +34 -0
  101. package/helpers/palettes/colorDistributions.ts +56 -0
  102. package/helpers/palettes/migratePaletteName.ts +150 -0
  103. package/helpers/palettes/standardizePaletteNames.ts +77 -0
  104. package/helpers/palettes/utils.ts +267 -0
  105. package/helpers/parseCsvWithQuotes.ts +65 -0
  106. package/helpers/queryStringUtils.ts +13 -0
  107. package/helpers/testing.ts +358 -0
  108. package/helpers/tests/addValuesToFilters.test.ts +1 -2
  109. package/helpers/tests/generateColorsArray.test.ts +24 -0
  110. package/helpers/tests/markupProcessor.test.ts +538 -0
  111. package/helpers/tests/testStandaloneBuild.ts +44 -0
  112. package/helpers/useMarkupVariables.ts +31 -0
  113. package/helpers/vegaConfig.ts +0 -1
  114. package/helpers/ver/4.24.10.ts +2 -1
  115. package/helpers/ver/4.24.11.ts +2 -1
  116. package/helpers/ver/4.24.3.ts +2 -1
  117. package/helpers/ver/4.24.4.ts +2 -1
  118. package/helpers/ver/4.24.5.ts +2 -1
  119. package/helpers/ver/4.24.7.ts +2 -1
  120. package/helpers/ver/4.24.9.ts +2 -1
  121. package/helpers/ver/4.25.1.ts +2 -1
  122. package/helpers/ver/4.25.10.ts +36 -0
  123. package/helpers/ver/4.25.11.ts +13 -0
  124. package/helpers/ver/4.25.3.ts +2 -1
  125. package/helpers/ver/4.25.4.ts +2 -1
  126. package/helpers/ver/4.25.6.ts +2 -1
  127. package/helpers/ver/4.25.7.ts +2 -1
  128. package/helpers/ver/4.25.8.ts +2 -1
  129. package/helpers/ver/4.25.9.ts +293 -0
  130. package/helpers/ver/tests/4.25.10.test.ts +204 -0
  131. package/helpers/ver/tests/4.25.8.test.ts +1 -1
  132. package/helpers/ver/tests/4.25.9.test.ts +51 -0
  133. package/helpers/viewports.ts +2 -0
  134. package/hooks/useColorPalette.ts +79 -0
  135. package/package.json +13 -4
  136. package/styles/_common-components.css +73 -0
  137. package/styles/_global.scss +32 -10
  138. package/styles/base.scss +8 -55
  139. package/styles/cove-main.scss +3 -1
  140. package/styles/filters.scss +10 -3
  141. package/styles/v2/base/index.scss +0 -1
  142. package/styles/v2/components/button.scss +4 -3
  143. package/styles/v2/components/editor.scss +16 -7
  144. package/styles/v2/layout/_data-table.scss +3 -2
  145. package/styles/v2/themes/_color-definitions.scss +18 -17
  146. package/styles/v2/utils/_breakpoints.scss +1 -1
  147. package/styles/v2/utils/index.scss +0 -1
  148. package/styles/waiting.scss +1 -1
  149. package/testing-setup.js +32 -0
  150. package/types/MarkupInclude.ts +8 -2
  151. package/types/MarkupVariable.ts +19 -0
  152. package/types/VizFilter.ts +2 -0
  153. package/vitest.config.ts +16 -0
  154. package/components/ui/_stories/Colors.stories.mdx +0 -220
  155. package/components/ui/_stories/IconGallery.stories.mdx +0 -14
  156. package/data/colorPalettes.js +0 -171
  157. package/helpers/formatConfigBeforeSave.ts +0 -135
  158. package/helpers/tests/formatConfigBeforeSave.test.ts +0 -68
  159. package/styles/_mixins.scss +0 -13
  160. package/styles/v2/base/_typography.scss +0 -0
  161. package/styles/v2/components/guidance-block.scss +0 -74
  162. package/styles/v2/utils/_functions.scss +0 -0
  163. /package/{styles/_typography.scss → testBuild.js} +0 -0
@@ -1,6 +1,6 @@
1
- import { Meta, StoryObj } from '@storybook/react'
1
+ import { Meta, StoryObj } from '@storybook/react-vite'
2
2
 
3
- import InputSelect from '../inputs/InputSelect'
3
+ import { Select as SelectInput } from '../EditorPanel/Inputs'
4
4
  import { useState } from 'react'
5
5
 
6
6
  const Inputs: React.FC = ({ config }: any) => {
@@ -16,7 +16,7 @@ const Inputs: React.FC = ({ config }: any) => {
16
16
  }
17
17
  return (
18
18
  <div>
19
- <InputSelect label='Select' options={['apple', 'banana', 'orange']} fieldName='inputselect' updateField={updateField} />
19
+ <SelectInput label='Select' options={['apple', 'banana', 'orange']} fieldName='inputselect' updateField={updateField} />
20
20
  </div>
21
21
  )
22
22
  }
@@ -1,7 +1,7 @@
1
- import { Meta, StoryObj } from '@storybook/react'
1
+ import { Meta, StoryObj } from '@storybook/react-vite'
2
2
 
3
3
  import MultiSelect from '../MultiSelect'
4
- import { userEvent, within } from '@storybook/testing-library'
4
+ import { userEvent, within } from 'storybook/test'
5
5
 
6
6
  const meta: Meta<typeof MultiSelect> = {
7
7
  title: 'Components/Molecules/MultiSelect',
@@ -10,7 +10,7 @@ const meta: Meta<typeof MultiSelect> = {
10
10
 
11
11
  type Story = StoryObj<typeof MultiSelect>
12
12
 
13
- export const Primary: Story = {
13
+ export const PrimaryTests: Story = {
14
14
  args: {
15
15
  options: [
16
16
  { value: '1', label: 'One' },
@@ -1,4 +1,4 @@
1
- import { Meta, StoryObj } from '@storybook/react'
1
+ import { Meta, StoryObj } from '@storybook/react-vite'
2
2
  import NestedDropdown from '../NestedDropdown'
3
3
  import nestedDropdownStory from './_mocks/nested-dropdown.json'
4
4
  import { useState } from 'react'
@@ -1,4 +1,4 @@
1
- import { Meta, StoryObj } from '@storybook/react'
1
+ import { Meta, StoryObj } from '@storybook/react-vite'
2
2
 
3
3
  import Table from '../Table'
4
4
  import { ReactNode } from 'react'
@@ -1,6 +1,5 @@
1
1
  @import '../../styles/base.scss';
2
2
  @import '../../styles/_variables';
3
- @import '../../styles/_mixins';
4
3
  @import '../../styles/_global.scss';
5
4
 
6
5
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import type { Meta, StoryObj } from '@storybook/react'
2
+ import type { Meta, StoryObj } from '@storybook/react-vite'
3
3
 
4
4
  import Button from '../Button'
5
5
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import type { Meta, StoryObj } from '@storybook/react'
2
+ import type { Meta, StoryObj } from '@storybook/react-vite'
3
3
 
4
4
  import Card from '../Card'
5
5
 
@@ -19,6 +19,8 @@ type InputSliderProps = {
19
19
  fieldName?: string
20
20
  /** Prop drill down of the updateField function */
21
21
  updateField?: Function
22
+ /** Click handler function */
23
+ onClick?: Function
22
24
  /** Current value of the input, usually the current config option value */
23
25
  value: boolean
24
26
  }
@@ -22,6 +22,7 @@ type DataDesignerProps = {
22
22
 
23
23
  const DataDesigner = (props: DataDesignerProps) => {
24
24
  const { configureData, updateDescriptionProp, config, setConfig } = props
25
+ const firstDataRow = configureData?.data?.[0] || {}
25
26
  const hasDataOrientation = config?.visualizationType !== 'Forest Plot'
26
27
  const hasMultipleSeries = config?.visualizationType !== 'Forest Plot'
27
28
  const hasRowSelection = config?.visualizationType !== 'Forest Plot'
@@ -134,7 +135,7 @@ const DataDesigner = (props: DataDesignerProps) => {
134
135
  defaultValue={configureData.dataDescription.seriesKey}
135
136
  >
136
137
  <option value=''>Choose an option</option>
137
- {Object.keys(configureData.data[0]).map((value, index) => (
138
+ {Object.keys(firstDataRow).map((value, index) => (
138
139
  <option value={value} key={index}>
139
140
  {value}
140
141
  </option>
@@ -200,7 +201,7 @@ const DataDesigner = (props: DataDesignerProps) => {
200
201
  defaultValue={configureData.dataDescription.seriesKey}
201
202
  >
202
203
  <option value=''>Choose an option</option>
203
- {Object.keys(configureData.data[0]).map((value, index) => (
204
+ {Object.keys(firstDataRow).map((value, index) => (
204
205
  <option value={value} key={index}>
205
206
  {value}
206
207
  </option>
@@ -218,7 +219,7 @@ const DataDesigner = (props: DataDesignerProps) => {
218
219
  defaultValue={configureData.dataDescription.xKey}
219
220
  >
220
221
  <option value=''>Choose an option</option>
221
- {Object.keys(configureData.data[0]).map((value, index) => (
222
+ {Object.keys(firstDataRow).map((value, index) => (
222
223
  <option value={value} key={index}>
223
224
  {value}
224
225
  </option>
@@ -264,7 +265,7 @@ const DataDesigner = (props: DataDesignerProps) => {
264
265
  }}
265
266
  >
266
267
  <option value=''>Choose an option</option>
267
- {Object.keys(configureData.data[0])
268
+ {Object.keys(firstDataRow)
268
269
  .filter(
269
270
  value =>
270
271
  !configureData.dataDescription.valueKeysTallSupport ||
@@ -313,7 +314,7 @@ const DataDesigner = (props: DataDesignerProps) => {
313
314
  }}
314
315
  >
315
316
  <option value=''>Choose an option</option>
316
- {Object.keys(configureData.data[0])
317
+ {Object.keys(firstDataRow)
317
318
  .filter(
318
319
  value =>
319
320
  !configureData.dataDescription.ignoredKeys ||
@@ -348,7 +349,7 @@ const DataDesigner = (props: DataDesignerProps) => {
348
349
  defaultValue={'Select'}
349
350
  >
350
351
  <option value=''>Choose an option</option>
351
- {Object.keys(configureData.data[0]).map((value, index) => (
352
+ {Object.keys(firstDataRow).map((value, index) => (
352
353
  <option value={value} key={index}>
353
354
  {value}
354
355
  </option>
@@ -371,7 +372,7 @@ const DataDesigner = (props: DataDesignerProps) => {
371
372
  defaultValue={'Select'}
372
373
  >
373
374
  <option value=''>Choose an option</option>
374
- {Object.keys(configureData.data[0]).map((value, index) => (
375
+ {Object.keys(firstDataRow).map((value, index) => (
375
376
  <option value={value} key={index}>
376
377
  {value}
377
378
  </option>
@@ -394,7 +395,7 @@ const DataDesigner = (props: DataDesignerProps) => {
394
395
  defaultValue={'Select'}
395
396
  >
396
397
  <option value=''>Choose an option</option>
397
- {Object.keys(configureData.data[0]).map((value, index) => (
398
+ {Object.keys(firstDataRow).map((value, index) => (
398
399
  <option value={value} key={index}>
399
400
  {value}
400
401
  </option>
@@ -417,7 +418,7 @@ const DataDesigner = (props: DataDesignerProps) => {
417
418
  defaultValue={'Select'}
418
419
  >
419
420
  <option value=''>Choose an option</option>
420
- {Object.keys(configureData.data[0]).map((value, index) => (
421
+ {Object.keys(firstDataRow).map((value, index) => (
421
422
  <option value={value} key={index}>
422
423
  {value}
423
424
  </option>
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import type { Meta, StoryObj } from '@storybook/react'
2
+ import type { Meta, StoryObj } from '@storybook/react-vite'
3
3
 
4
4
  import DataDesigner from '../DataDesigner'
5
5
 
@@ -40,7 +40,7 @@ const Accordion = ({ children }) => {
40
40
  ) : null}
41
41
  </AccordionItemButton>
42
42
  </AccordionItemHeading>
43
- <AccordionItemPanel className='cove-accordion__panel'>{section.props.children}</AccordionItemPanel>
43
+ <AccordionItemPanel className={`cove-accordion__panel ${section.props.className || ''}`}>{section.props.children}</AccordionItemPanel>
44
44
  </AccordionItem>
45
45
  ))}
46
46
  </AccordionComponent>
@@ -2,6 +2,7 @@ import { useId } from 'react'
2
2
 
3
3
  // Third Party
4
4
  import { Tooltip as ReactTooltip } from 'react-tooltip'
5
+ import 'react-tooltip/dist/react-tooltip.css'
5
6
  import type { PlacesType } from 'react-tooltip'
6
7
 
7
8
  // Styles
@@ -44,7 +45,7 @@ const Tooltip: React.FC<ToolTipProps> & { Target; Content } = ({
44
45
  className='cove-tooltip--target'
45
46
  data-tooltip-float={float}
46
47
  data-tooltip-place={place}
47
- data-tooltip-isOpen={true}
48
+ data-tooltip-isopen={true}
48
49
  >
49
50
  {tooltipTargetChildren ? tooltipTargetChildren.props.children : null}
50
51
  </a>
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { Meta, StoryObj } from '@storybook/react'
2
+ import { Meta, StoryObj } from '@storybook/react-vite'
3
3
 
4
4
  import Accordion from '../Accordion'
5
5
 
@@ -0,0 +1,275 @@
1
+ import { Meta, ColorPalette, ColorItem } from '@storybook/blocks'
2
+ import { mapColorPalettesV1, mapColorPalettesV2 } from '@cdc/core/data/colorPalettes'
3
+
4
+ <Meta title="Design Systems/Color Palette Migration" />
5
+
6
+ # Color Palette Migration: V1 to V2
7
+
8
+ This story shows the evolution from v1 to v2 color palettes side by side. This comparison helps visualize how each v1 palette translates to the new v2 palette.
9
+
10
+ ## Blue Palettes
11
+
12
+ ### Sequential Blue Extended → Sequential Blue
13
+ <ColorPalette>
14
+ <ColorItem
15
+ title="V1: Sequential Blue Extended"
16
+ colors={mapColorPalettesV1.sequential_blue_extended}
17
+ />
18
+ <ColorItem
19
+ title="V2: Sequential Blue"
20
+ colors={mapColorPalettesV2.sequential_blue}
21
+ />
22
+ </ColorPalette>
23
+
24
+ ### Sequential Blue Green → Sequential Blue
25
+ <ColorPalette>
26
+ <ColorItem
27
+ title="V1: Sequential Blue Green"
28
+ colors={mapColorPalettesV1.sequential_blue_green}
29
+ />
30
+ <ColorItem
31
+ title="V2: Sequential Blue"
32
+ colors={mapColorPalettesV2.sequential_blue}
33
+ />
34
+ </ColorPalette>
35
+
36
+ ### Sequential Green Blue → Sequential Teal
37
+ <ColorPalette>
38
+ <ColorItem
39
+ title="V1: Sequential Green Blue"
40
+ colors={mapColorPalettesV1.sequential_green_blue}
41
+ />
42
+ <ColorItem
43
+ title="V2: Sequential Teal"
44
+ colors={mapColorPalettesV2.sequential_teal}
45
+ />
46
+ </ColorPalette>
47
+
48
+ ## Green Palettes
49
+
50
+ ### New V2: Sequential Green
51
+ <ColorPalette>
52
+ <ColorItem
53
+ title="V2: Sequential Green (New)"
54
+ colors={mapColorPalettesV2.sequential_green}
55
+ />
56
+ </ColorPalette>
57
+
58
+ ## Purple Palettes
59
+
60
+ ### Sequential Pink Purple → Sequential Purple
61
+ <ColorPalette>
62
+ <ColorItem
63
+ title="V1: Sequential Pink Purple"
64
+ colors={mapColorPalettesV1.sequential_pink_purple}
65
+ />
66
+ <ColorItem
67
+ title="V2: Sequential Purple"
68
+ colors={mapColorPalettesV2.sequential_purple}
69
+ />
70
+ </ColorPalette>
71
+
72
+ ### Sequential Red → Sequential Purple
73
+ <ColorPalette>
74
+ <ColorItem
75
+ title="V1: Sequential Red"
76
+ colors={mapColorPalettesV1.sequential_red}
77
+ />
78
+ <ColorItem
79
+ title="V2: Sequential Purple"
80
+ colors={mapColorPalettesV2.sequential_purple}
81
+ />
82
+ </ColorPalette>
83
+
84
+ ### Divergent Yellow Purple → Sequential Purple
85
+ <ColorPalette>
86
+ <ColorItem
87
+ title="V1: Divergent Yellow Purple"
88
+ colors={mapColorPalettesV1.divergent_yellow_purple}
89
+ />
90
+ <ColorItem
91
+ title="V2: Sequential Purple"
92
+ colors={mapColorPalettesV2.sequential_purple}
93
+ />
94
+ </ColorPalette>
95
+
96
+ ## Orange Palettes
97
+
98
+ ### Sequential Yellow Orange Red → Sequential Orange
99
+ <ColorPalette>
100
+ <ColorItem
101
+ title="V1: Sequential Yellow Orange Red"
102
+ colors={mapColorPalettesV1.sequential_yellow_orange_red}
103
+ />
104
+ <ColorItem
105
+ title="V2: Sequential Orange"
106
+ colors={mapColorPalettesV2.sequential_orange}
107
+ />
108
+ </ColorPalette>
109
+
110
+ ### Sequential Yellow Orange Brown → Sequential Orange
111
+ <ColorPalette>
112
+ <ColorItem
113
+ title="V1: Sequential Yellow Orange Brown"
114
+ colors={mapColorPalettesV1.sequential_yellow_orange_brown}
115
+ />
116
+ <ColorItem
117
+ title="V2: Sequential Orange"
118
+ colors={mapColorPalettesV2.sequential_orange}
119
+ />
120
+ </ColorPalette>
121
+
122
+ ### Sequential Orange Red → Sequential Orange
123
+ <ColorPalette>
124
+ <ColorItem
125
+ title="V1: Sequential Orange Red"
126
+ colors={mapColorPalettesV1.sequential_orange_red}
127
+ />
128
+ <ColorItem
129
+ title="V2: Sequential Orange"
130
+ colors={mapColorPalettesV2.sequential_orange}
131
+ />
132
+ </ColorPalette>
133
+
134
+ ### Sequential Orange Extended → Sequential Orange
135
+ <ColorPalette>
136
+ <ColorItem
137
+ title="V1: Sequential Orange Extended"
138
+ colors={mapColorPalettesV1.sequential_orange_extended}
139
+ />
140
+ <ColorItem
141
+ title="V2: Sequential Orange"
142
+ colors={mapColorPalettesV2.sequential_orange}
143
+ />
144
+ </ColorPalette>
145
+
146
+ ## Diverging/Special Palettes
147
+
148
+ ### New V2 Diverging and Special Palettes
149
+ <ColorPalette>
150
+ <ColorItem
151
+ title="V2: Divergent Blue Cyan (New)"
152
+ colors={mapColorPalettesV2.divergent_blue_cyan}
153
+ />
154
+ <ColorItem
155
+ title="V2: Divergent Blue Purple (New)"
156
+ colors={mapColorPalettesV2.divergent_blue_purple}
157
+ />
158
+ <ColorItem
159
+ title="V2: Divergent Green Orange (New)"
160
+ colors={mapColorPalettesV2.divergent_green_orange}
161
+ />
162
+ <ColorItem
163
+ title="V2: Divergent Blue Orange (New)"
164
+ colors={mapColorPalettesV2.divergent_blue_orange}
165
+ />
166
+ </ColorPalette>
167
+
168
+ ## Categorical/Qualitative Palettes
169
+
170
+ ### Qualitative 1 → Qualitative
171
+ <ColorPalette>
172
+ <ColorItem
173
+ title="V1: Qualitative 1"
174
+ colors={mapColorPalettesV1.qualitative1}
175
+ />
176
+ <ColorItem
177
+ title="V2: Qualitative"
178
+ colors={mapColorPalettesV2.qualitative}
179
+ />
180
+ </ColorPalette>
181
+
182
+ ### Qualitative 2 → Qualitative
183
+ <ColorPalette>
184
+ <ColorItem
185
+ title="V1: Qualitative 2"
186
+ colors={mapColorPalettesV1.qualitative2}
187
+ />
188
+ <ColorItem
189
+ title="V2: Qualitative"
190
+ colors={mapColorPalettesV2.qualitative}
191
+ />
192
+ </ColorPalette>
193
+
194
+ ### Qualitative 3 → Qualitative
195
+ <ColorPalette>
196
+ <ColorItem
197
+ title="V1: Qualitative 3"
198
+ colors={mapColorPalettesV1.qualitative3}
199
+ />
200
+ <ColorItem
201
+ title="V2: Qualitative"
202
+ colors={mapColorPalettesV2.qualitative}
203
+ />
204
+ </ColorPalette>
205
+
206
+ ### Qualitative 4 → Qualitative
207
+ <ColorPalette>
208
+ <ColorItem
209
+ title="V1: Qualitative 4"
210
+ colors={mapColorPalettesV1.qualitative4}
211
+ />
212
+ <ColorItem
213
+ title="V2: Qualitative"
214
+ colors={mapColorPalettesV2.qualitative}
215
+ />
216
+ </ColorPalette>
217
+
218
+ ### Qualitative Earth Tones → Qualitative
219
+ <ColorPalette>
220
+ <ColorItem
221
+ title="V1: Qualitative Earth Tones"
222
+ colors={mapColorPalettesV1.qualitative_earth_tones}
223
+ />
224
+ <ColorItem
225
+ title="V2: Qualitative"
226
+ colors={mapColorPalettesV2.qualitative}
227
+ />
228
+ </ColorPalette>
229
+
230
+ ### Colorblind Safe → Qualitative
231
+ <ColorPalette>
232
+ <ColorItem
233
+ title="V1: Colorblind Safe"
234
+ colors={mapColorPalettesV1.colorblindsafe}
235
+ />
236
+ <ColorItem
237
+ title="V2: Qualitative (Colorblind-friendly)"
238
+ colors={mapColorPalettesV2.qualitative}
239
+ />
240
+ </ColorPalette>
241
+
242
+ ## New V2 Palettes
243
+
244
+ These are new palettes introduced in V2 that don't have direct V1 equivalents:
245
+
246
+ <ColorPalette>
247
+ <ColorItem
248
+ title="V2: Sequential Green"
249
+ colors={mapColorPalettesV2.sequential_green}
250
+ />
251
+ <ColorItem
252
+ title="V2: Divergent Blue Cyan"
253
+ colors={mapColorPalettesV2.divergent_blue_cyan}
254
+ />
255
+ <ColorItem
256
+ title="V2: Divergent Blue Purple"
257
+ colors={mapColorPalettesV2.divergent_blue_purple}
258
+ />
259
+ <ColorItem
260
+ title="V2: Divergent Green Orange"
261
+ colors={mapColorPalettesV2.divergent_green_orange}
262
+ />
263
+ <ColorItem
264
+ title="V2: Divergent Blue Orange"
265
+ colors={mapColorPalettesV2.divergent_blue_orange}
266
+ />
267
+ </ColorPalette>
268
+
269
+ ## Migration Notes
270
+
271
+ - **Sequential palettes**: V1 had many specific sequential palettes that map to broader single-hue categories in V2
272
+ - **Qualitative palettes**: V1 had 4 different qualitative sets that all map to a single, refined qualitative palette in V2
273
+ - **Divergent palettes**: V2 introduces new divergent palettes for better data representation
274
+ - **Heat maps**: V2 adds a dedicated heat map palette for specialized visualizations
275
+ - **Colorblind accessibility**: Both versions maintain colorblind-safe options