playbook_ui 14.25.0.pre.alpha.play1986inlineloadingsolidvariant9963 → 14.25.0.pre.alpha.testingcss9700

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_date_picker/_date_picker.tsx +0 -19
  3. data/app/pb_kits/playbook/pb_date_picker/date_picker.html.erb +0 -1
  4. data/app/pb_kits/playbook/pb_fixed_confirmation_toast/docs/_fixed_confirmation_toast_props_swift.md +2 -3
  5. data/app/pb_kits/playbook/pb_flex/_flex.tsx +6 -9
  6. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.html.erb +1 -12
  7. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.jsx +1 -26
  8. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap.md +9 -0
  9. data/app/pb_kits/playbook/pb_flex/flex.rb +12 -6
  10. data/app/pb_kits/playbook/pb_icon/_icon.scss +0 -4
  11. data/app/pb_kits/playbook/pb_loading_inline/_loading_inline.tsx +1 -3
  12. data/app/pb_kits/playbook/pb_loading_inline/docs/example.yml +0 -2
  13. data/app/pb_kits/playbook/pb_loading_inline/docs/index.js +0 -1
  14. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.html.erb +1 -1
  15. data/app/pb_kits/playbook/pb_loading_inline/loading_inline.rb +0 -11
  16. data/app/pb_kits/playbook/pb_text_input/text_input.rb +0 -15
  17. data/app/pb_kits/playbook/pb_user/docs/_user_props_table.md +7 -14
  18. data/app/pb_kits/playbook/utilities/_gap.scss +24 -12
  19. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +0 -2
  20. data/app/pb_kits/playbook/utilities/globalProps.ts +4 -28
  21. data/dist/chunks/_line_graph-DPTwfQR-.js +544 -0
  22. data/dist/chunks/_typeahead-CEqlHw0H.js +30978 -0
  23. data/dist/chunks/_weekday_stacked-D3dG14OB.js +20894 -0
  24. data/dist/chunks/lazysizes-BUUj27EF.js +611 -0
  25. data/dist/chunks/lib-CIetbXpr.js +9609 -0
  26. data/dist/chunks/pb_form_validation-D_g9rOE9.js +60 -0
  27. data/dist/chunks/vendor.js +11 -1
  28. data/dist/playbook-doc.js +67243 -3
  29. data/dist/playbook-rails-react-bindings.js +112 -1
  30. data/dist/playbook-rails.js +2464 -1
  31. data/dist/playbook.css +92354 -2
  32. data/dist/reset.css +89 -1
  33. data/lib/playbook/classnames.rb +0 -2
  34. data/lib/playbook/spacing.rb +1 -53
  35. data/lib/playbook/version.rb +1 -1
  36. metadata +9 -13
  37. data/app/pb_kits/playbook/pb_date/date.test.js +0 -506
  38. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_rails.md +0 -11
  39. data/app/pb_kits/playbook/pb_flex/docs/_flex_gap_react.md +0 -11
  40. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.html.erb +0 -5
  41. data/app/pb_kits/playbook/pb_loading_inline/docs/_loading_inline_variant.jsx +0 -24
  42. data/dist/chunks/_line_graph-CiVc-Cod.js +0 -1
  43. data/dist/chunks/_typeahead-BQnvz-Ks.js +0 -6
  44. data/dist/chunks/_weekday_stacked-BkvHv3ZO.js +0 -37
  45. data/dist/chunks/lazysizes-B7xYodB-.js +0 -1
  46. data/dist/chunks/lib-CY5ZPzic.js +0 -29
  47. data/dist/chunks/pb_form_validation-D3b0JKHH.js +0 -1
@@ -1,506 +0,0 @@
1
- import React from 'react'
2
- import { render, screen } from '../utilities/test-utils'
3
- import PbDate from './_date'
4
- import DateTime from '../pb_kit/dateTime'
5
-
6
- // Mock DateTime utility functions
7
- jest.mock('../pb_kit/dateTime', () => ({
8
- toWeekday: jest.fn(),
9
- toMonth: jest.fn(),
10
- toDay: jest.fn(),
11
- toYear: jest.fn(),
12
- }))
13
-
14
- // Set test date
15
- const TEST_DATE = new Date('2025-08-19T10:30:00Z') // Monday, August 19, 2025
16
- const CURRENT_YEAR = new Date().getFullYear()
17
-
18
- describe('PbDate Kit', () => {
19
- beforeEach(() => {
20
- // Reset mocks before each test
21
- jest.clearAllMocks()
22
-
23
- // Set up default mock returns
24
- DateTime.toWeekday.mockReturnValue('Monday')
25
- DateTime.toMonth.mockReturnValue('August')
26
- DateTime.toDay.mockReturnValue('19')
27
- DateTime.toYear.mockReturnValue(2025)
28
-
29
- // Mock console.error to avoid noise in tests
30
- jest.spyOn(console, 'error').mockImplementation(() => {})
31
- })
32
-
33
- afterEach(() => {
34
- console.error.mockRestore()
35
- })
36
-
37
- // Default Props
38
- describe('Default Props', () => {
39
- test('renders with minimal required props', () => {
40
- const testId = 'pb-date-default'
41
- render(
42
- <PbDate
43
- data={{ testid: testId }}
44
- value={TEST_DATE}
45
- />
46
- )
47
-
48
- const kit = screen.getByTestId(testId)
49
- expect(kit).toBeInTheDocument()
50
- expect(kit).toHaveClass('pb_date_kit_left')
51
- })
52
-
53
- test('displays date in default format without day of week', () => {
54
- // Mock current year to test hiding logic
55
- DateTime.toYear.mockReturnValue(CURRENT_YEAR)
56
-
57
- const testId = 'pb-date-format'
58
- render(
59
- <PbDate
60
- data={{ testid: testId }}
61
- value={TEST_DATE}
62
- />
63
- )
64
-
65
- const kit = screen.getByTestId(testId)
66
- expect(kit).toHaveTextContent('August 19')
67
- expect(kit).not.toHaveTextContent('Monday')
68
- expect(kit).not.toHaveTextContent(`, ${CURRENT_YEAR}`)
69
- })
70
-
71
- test('applies default CSS classes', () => {
72
- const testId = 'pb-date-css'
73
- render(
74
- <PbDate
75
- data={{ testid: testId }}
76
- value={TEST_DATE}
77
- />
78
- )
79
-
80
- const kit = screen.getByTestId(testId)
81
- expect(kit).toHaveClass('pb_date_kit_left')
82
- })
83
- })
84
-
85
- // Prop Variations
86
- describe('Prop Variations', () => {
87
- test('renders with showDayOfWeek enabled', () => {
88
- const testId = 'pb-date-weekday'
89
- render(
90
- <PbDate
91
- data={{ testid: testId }}
92
- showDayOfWeek
93
- value={TEST_DATE}
94
- />
95
- )
96
-
97
- const kit = screen.getByTestId(testId)
98
- expect(kit).toHaveTextContent('Monday')
99
- expect(kit).toHaveTextContent('•')
100
- expect(kit).toHaveTextContent('August 19')
101
- })
102
-
103
- test('renders with showCurrentYear enabled', () => {
104
- const testId = 'pb-date-current-year'
105
- render(
106
- <PbDate
107
- data={{ testid: testId }}
108
- showCurrentYear
109
- value={TEST_DATE}
110
- />
111
- )
112
-
113
- const kit = screen.getByTestId(testId)
114
- expect(kit).toHaveTextContent(', 2025')
115
- })
116
-
117
- test('renders with showIcon enabled for medium size', () => {
118
- const testId = 'pb-date-icon-md'
119
- render(
120
- <PbDate
121
- data={{ testid: testId }}
122
- showIcon
123
- size="md"
124
- value={TEST_DATE}
125
- />
126
- )
127
-
128
- const kit = screen.getByTestId(testId)
129
- const iconContainer = kit.querySelector('.pb_icon_kit_container')
130
- expect(iconContainer).toBeInTheDocument()
131
- })
132
-
133
- test('renders with showIcon enabled for small size', () => {
134
- const testId = 'pb-date-icon-sm'
135
- render(
136
- <PbDate
137
- data={{ testid: testId }}
138
- showIcon
139
- size="sm"
140
- value={TEST_DATE}
141
- />
142
- )
143
-
144
- const kit = screen.getByTestId(testId)
145
- const iconContainer = kit.querySelector('.pb_icon_kit_container')
146
- expect(iconContainer).toBeInTheDocument()
147
- })
148
-
149
- test('renders different sizes correctly', () => {
150
- const sizes = ['sm', 'md', 'lg']
151
-
152
- sizes.forEach(size => {
153
- const testId = `pb-date-size-${size}`
154
- render(
155
- <PbDate
156
- data={{ testid: testId }}
157
- size={size}
158
- value={TEST_DATE}
159
- />
160
- )
161
-
162
- const kit = screen.getByTestId(testId)
163
- expect(kit).toBeInTheDocument()
164
-
165
- expect(kit).toHaveTextContent('August 19')
166
- })
167
- })
168
-
169
- test('renders different alignments correctly', () => {
170
- const alignments = ['left', 'center', 'right']
171
-
172
- alignments.forEach(alignment => {
173
- const testId = `pb-date-align-${alignment}`
174
- render(
175
- <PbDate
176
- alignment={alignment}
177
- data={{ testid: testId }}
178
- value={TEST_DATE}
179
- />
180
- )
181
-
182
- const kit = screen.getByTestId(testId)
183
- expect(kit).toHaveClass(`pb_date_kit_${alignment}`)
184
- })
185
- })
186
-
187
- test('renders in dark mode', () => {
188
- const testId = 'pb-date-dark'
189
- render(
190
- <PbDate
191
- dark
192
- data={{ testid: testId }}
193
- value={TEST_DATE}
194
- />
195
- )
196
-
197
- const kit = screen.getByTestId(testId)
198
- expect(kit).toBeInTheDocument()
199
- })
200
-
201
- test('renders in unstyled mode', () => {
202
- const testId = 'pb-date-unstyled'
203
- render(
204
- <PbDate
205
- data={{ testid: testId }}
206
- showDayOfWeek
207
- showIcon
208
- unstyled
209
- value={TEST_DATE}
210
- />
211
- )
212
-
213
- const kit = screen.getByTestId(testId)
214
- expect(kit).toHaveTextContent('Monday')
215
- expect(kit).toHaveTextContent('•')
216
- expect(kit).toHaveTextContent('August 19')
217
-
218
- expect(kit.querySelector('.pb_title_kit')).not.toBeInTheDocument()
219
- expect(kit.querySelector('.pb_caption_kit')).not.toBeInTheDocument()
220
- })
221
-
222
- test('applies custom className', () => {
223
- const testId = 'pb-date-custom-class'
224
- const customClass = 'my-custom-date-class'
225
-
226
- render(
227
- <PbDate
228
- className={customClass}
229
- data={{ testid: testId }}
230
- value={TEST_DATE}
231
- />
232
- )
233
-
234
- const kit = screen.getByTestId(testId)
235
- expect(kit).toHaveClass(customClass)
236
- })
237
-
238
- test('applies custom id', () => {
239
- const customId = 'my-custom-date-id'
240
-
241
- render(
242
- <PbDate
243
- id={customId}
244
- value={TEST_DATE}
245
- />
246
- )
247
-
248
- const kit = document.getElementById(customId)
249
- expect(kit).toBeInTheDocument()
250
- expect(kit).toHaveAttribute('id', customId)
251
- })
252
- })
253
-
254
- // Year Display
255
- describe('Year Display Logic', () => {
256
- test('hides current year by default', () => {
257
- DateTime.toYear.mockReturnValue(CURRENT_YEAR)
258
-
259
- const testId = 'pb-date-current-year-hidden'
260
- render(
261
- <PbDate
262
- data={{ testid: testId }}
263
- value={TEST_DATE}
264
- />
265
- )
266
-
267
- const kit = screen.getByTestId(testId)
268
- expect(kit).not.toHaveTextContent(`, ${CURRENT_YEAR}`)
269
- })
270
-
271
- test('shows current year when showCurrentYear is true', () => {
272
- DateTime.toYear.mockReturnValue(CURRENT_YEAR)
273
-
274
- const testId = 'pb-date-force-current-year'
275
- render(
276
- <PbDate
277
- data={{ testid: testId }}
278
- showCurrentYear
279
- value={TEST_DATE}
280
- />
281
- )
282
-
283
- const kit = screen.getByTestId(testId)
284
- expect(kit).toHaveTextContent(`, ${CURRENT_YEAR}`)
285
- })
286
-
287
- test('shows non-current year automatically', () => {
288
- const pastYear = CURRENT_YEAR - 1
289
- DateTime.toYear.mockReturnValue(pastYear)
290
-
291
- const testId = 'pb-date-past-year'
292
- render(
293
- <PbDate
294
- data={{ testid: testId }}
295
- value={TEST_DATE}
296
- />
297
- )
298
-
299
- const kit = screen.getByTestId(testId)
300
- expect(kit).toHaveTextContent(`, ${pastYear}`)
301
- })
302
-
303
- test('shows future year automatically', () => {
304
- const futureYear = CURRENT_YEAR + 1
305
- DateTime.toYear.mockReturnValue(futureYear)
306
-
307
- const testId = 'pb-date-future-year'
308
- render(
309
- <PbDate
310
- data={{ testid: testId }}
311
- value={TEST_DATE}
312
- />
313
- )
314
-
315
- const kit = screen.getByTestId(testId)
316
- expect(kit).toHaveTextContent(`, ${futureYear}`)
317
- })
318
- })
319
-
320
- // Edge Cases
321
- describe('Edge Cases', () => {
322
- test('handles leap year date', () => {
323
- const leapYearDate = new Date('2024-02-29T12:00:00Z')
324
- DateTime.toMonth.mockReturnValue('February')
325
- DateTime.toDay.mockReturnValue('29')
326
- DateTime.toYear.mockReturnValue(2024)
327
- DateTime.toWeekday.mockReturnValue('Thursday')
328
-
329
- const testId = 'pb-date-leap-year'
330
- render(
331
- <PbDate
332
- data={{ testid: testId }}
333
- value={leapYearDate}
334
- />
335
- )
336
-
337
- const kit = screen.getByTestId(testId)
338
- expect(kit).toHaveTextContent('February 29')
339
- })
340
-
341
- test('handles beginning of year', () => {
342
- const newYearDate = new Date('2023-01-01T00:00:00Z')
343
- DateTime.toMonth.mockReturnValue('January')
344
- DateTime.toDay.mockReturnValue('1')
345
- DateTime.toYear.mockReturnValue(2023)
346
- DateTime.toWeekday.mockReturnValue('Sunday')
347
-
348
- const testId = 'pb-date-new-year'
349
- render(
350
- <PbDate
351
- data={{ testid: testId }}
352
- value={newYearDate}
353
- />
354
- )
355
-
356
- const kit = screen.getByTestId(testId)
357
- expect(kit).toHaveTextContent('January 1')
358
- })
359
-
360
- test('handles end of year', () => {
361
- const endYearDate = new Date('2023-12-31T23:59:59Z')
362
- DateTime.toMonth.mockReturnValue('December')
363
- DateTime.toDay.mockReturnValue('31')
364
- DateTime.toYear.mockReturnValue(2023)
365
- DateTime.toWeekday.mockReturnValue('Sunday')
366
-
367
- const testId = 'pb-date-end-year'
368
- render(
369
- <PbDate
370
- data={{ testid: testId }}
371
- value={endYearDate}
372
- />
373
- )
374
-
375
- const kit = screen.getByTestId(testId)
376
- expect(kit).toHaveTextContent('December 31')
377
- })
378
-
379
- test('handles very old date', () => {
380
- const oldDate = new Date('1900-01-01T00:00:00Z')
381
- DateTime.toMonth.mockReturnValue('January')
382
- DateTime.toDay.mockReturnValue('1')
383
- DateTime.toYear.mockReturnValue(1900)
384
- DateTime.toWeekday.mockReturnValue('Monday')
385
-
386
- const testId = 'pb-date-old'
387
- render(
388
- <PbDate
389
- data={{ testid: testId }}
390
- value={oldDate}
391
- />
392
- )
393
-
394
- const kit = screen.getByTestId(testId)
395
- expect(kit).toHaveTextContent('January 1')
396
- expect(kit).toHaveTextContent(', 1900')
397
- })
398
-
399
- test('handles far future date', () => {
400
- const futureDate = new Date('2099-12-31T23:59:59Z')
401
- DateTime.toMonth.mockReturnValue('December')
402
- DateTime.toDay.mockReturnValue('31')
403
- DateTime.toYear.mockReturnValue(2099)
404
- DateTime.toWeekday.mockReturnValue('Friday')
405
-
406
- const testId = 'pb-date-future'
407
- render(
408
- <PbDate
409
- data={{ testid: testId }}
410
- value={futureDate}
411
- />
412
- )
413
-
414
- const kit = screen.getByTestId(testId)
415
- expect(kit).toHaveTextContent('December 31')
416
- expect(kit).toHaveTextContent(', 2099')
417
- })
418
- })
419
-
420
- // Accessibility and HTML
421
- describe('Accessibility and HTML Attributes', () => {
422
- test('applies aria attributes correctly', () => {
423
- const testId = 'pb-date-aria'
424
- const ariaLabel = 'Custom date label'
425
-
426
- render(
427
- <PbDate
428
- aria={{ label: ariaLabel }}
429
- data={{ testid: testId }}
430
- value={TEST_DATE}
431
- />
432
- )
433
-
434
- const kit = screen.getByTestId(testId)
435
- expect(kit).toHaveAttribute('aria-label', ariaLabel)
436
- })
437
-
438
- test('applies data attributes correctly', () => {
439
- const testId = 'pb-date-data'
440
- const customData = 'custom-value'
441
-
442
- render(
443
- <PbDate
444
- data={{ testid: testId, custom: customData }}
445
- value={TEST_DATE}
446
- />
447
- )
448
-
449
- const kit = screen.getByTestId(testId)
450
- expect(kit).toHaveAttribute('data-custom', customData)
451
- })
452
-
453
- test('applies HTML options correctly', () => {
454
- const testId = 'pb-date-html'
455
- const title = 'Custom title'
456
-
457
- render(
458
- <PbDate
459
- data={{ testid: testId }}
460
- htmlOptions={{ title }}
461
- value={TEST_DATE}
462
- />
463
- )
464
-
465
- const kit = screen.getByTestId(testId)
466
- expect(kit).toHaveAttribute('title', title)
467
- })
468
- })
469
-
470
- // Componenet Integration
471
- describe('Component Integration', () => {
472
- test('calls DateTime utility functions correctly', () => {
473
- render(
474
- <PbDate value={TEST_DATE} />
475
- )
476
-
477
- expect(DateTime.toWeekday).toHaveBeenCalledWith(TEST_DATE)
478
- expect(DateTime.toMonth).toHaveBeenCalledWith(TEST_DATE)
479
- expect(DateTime.toDay).toHaveBeenCalledWith(TEST_DATE)
480
- expect(DateTime.toYear).toHaveBeenCalledWith(TEST_DATE)
481
- })
482
-
483
- test('renders all components together correctly', () => {
484
- const testId = 'pb-date-full-featured'
485
- render(
486
- <PbDate
487
- alignment="center"
488
- data={{ testid: testId }}
489
- showDayOfWeek
490
- showIcon
491
- size="lg"
492
- value={TEST_DATE}
493
- />
494
- )
495
-
496
- const kit = screen.getByTestId(testId)
497
- expect(kit).toHaveClass('pb_date_kit_center')
498
- expect(kit).toHaveTextContent('Monday')
499
- expect(kit).toHaveTextContent('•')
500
- expect(kit).toHaveTextContent('August 19')
501
-
502
- const iconContainer = kit.querySelector('.pb_icon_kit_container')
503
- expect(iconContainer).toBeInTheDocument()
504
- })
505
- })
506
- })
@@ -1,11 +0,0 @@
1
- ##### Prop
2
-
3
- `gap` | `row_gap` | `column_gap` | **Type**: String | Hash | **Values**: xxs | xs | sm | md | lg | xl | none
4
-
5
- Setting the gap prop sets the `row_gap` and the `column_gap` props to the same size and creates equal space within a flex container.
6
-
7
- Setting the `row_gap` prop creates space between rows in a flex container.
8
-
9
- Setting the `column_gap` prop creates space between columns in a flex container.
10
-
11
- You can also set responsive values by passing a hash with device sizes and values.
@@ -1,11 +0,0 @@
1
- ##### Prop
2
-
3
- `gap` | `rowGap` | `columnGap` | **Type**: String | Object | **Values**: xxs | xs | sm | md | lg | xl | none
4
-
5
- Setting the gap prop sets the `rowGap` and the `columnGap` props to the same size and creates equal space within a flex container.
6
-
7
- Setting the `rowGap` prop creates space between rows in a flex container.
8
-
9
- Setting the `columnGap` prop creates space between columns in a flex container.
10
-
11
- You can also set responsive values by passing an object with device sizes and values.
@@ -1,5 +0,0 @@
1
- <%= pb_rails("loading_inline", props: {text: "Dotted Spinner", variant: "dotted"}) %>
2
-
3
- <br/>
4
-
5
- <%= pb_rails("loading_inline", props: {text: "Solid Spinner", variant: "solid"}) %>
@@ -1,24 +0,0 @@
1
- import React from 'react'
2
- import { LoadingInline } from 'playbook-ui'
3
-
4
- const LoadingInlineVariant = (props) => {
5
- return (
6
- <div>
7
- <LoadingInline
8
- text=" Dotted Spinner"
9
- variant="dotted"
10
- {...props}
11
- />
12
-
13
- <br />
14
-
15
- <LoadingInline
16
- text=" Solid Spinner"
17
- variant="solid"
18
- {...props}
19
- />
20
- </div>
21
- )
22
- }
23
-
24
- export default LoadingInlineVariant
@@ -1 +0,0 @@
1
- import{jsx,Fragment,jsxs}from"react/jsx-runtime";import{useState,useEffect}from"react";import{b as buildAriaProps,c as buildDataProps,d as buildHtmlProps,H as HighchartsReact,e as Highcharts,f as classnames,g as globalProps,h as HighchartsMore,S as SolidGauge,i as buildCss}from"./_typeahead-BQnvz-Ks.js";import{c as colors,h as highchartsTheme,m as merge,a as highchartsDarkTheme,t as typography}from"./lib-CY5ZPzic.js";const mapColors=array=>{const regex=/(data)\-[1-8]/;const newArray=array.map((item=>regex.test(item)?`${colors[`data_${item[item.length-1]}`]}`:item));return newArray};const BarGraph=({aria:aria={},data:data={},align:align="center",axisTitle:axisTitle,dark:dark=false,chartData:chartData,className:className="pb_bar_graph",colors:colors2,htmlOptions:htmlOptions={},customOptions:customOptions={},axisFormat:axisFormat,id:id,pointStart:pointStart,stacking:stacking,subTitle:subTitle,type:type="column",title:title="Title",xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,legend:legend=false,toggleLegendClick:toggleLegendClick=true,height:height,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:[{labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat&&axisFormat[0]?axisFormat[0].format:""},min:yAxisMin,max:yAxisMax,opposite:false,title:{text:Array.isArray(axisTitle)?axisTitle.length>0?axisTitle[0].name:null:axisTitle},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]}],xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{stacking:stacking,pointStart:pointStart,borderWidth:stacking?0:"",events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(Array.isArray(axisTitle)&&axisTitle.length>1&&axisTitle[1].name){staticOptions.yAxis.push({labels:{format:typeof axisFormat==="string"?axisFormat:axisFormat[1].format},min:yAxisMin,max:yAxisMax,opposite:true,title:{text:axisTitle[1].name},plotLines:typeof yAxisMin!=="undefined"&&yAxisMin!==null?[]:[{value:0,zIndex:10,color:"#E4E8F0"}]})}if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const alignBlockElement=event=>{const itemToMove=document.querySelector(`#wrapper-circle-chart-${event.target.renderTo.id} .pb-circle-chart-block`);const chartContainer=document.querySelector(`#${event.target.renderTo.id}`);if(itemToMove!==null&&chartContainer!==null){itemToMove.style.height=`${event.target.chartHeight}px`;itemToMove.style.width=`${event.target.chartWidth}px`;if(chartContainer.firstChild!==null){chartContainer.firstChild.before(itemToMove)}}};const CircleChart=({align:align="center",aria:aria={},rounded:rounded=false,borderColor:borderColor=(rounded?null:""),borderWidth:borderWidth=(rounded?20:null),chartData:chartData,children:children,className:className,colors:colors2=[],customOptions:customOptions={},dark:dark=false,data:data={},dataLabelHtml:dataLabelHtml="<div>{point.name}</div>",dataLabels:dataLabels=false,height:height,htmlOptions:htmlOptions={},id:id,innerSize:innerSize="md",legend:legend=false,maxPointSize:maxPointSize=null,minPointSize:minPointSize=null,startAngle:startAngle=null,style:style="pie",title:title,tooltipHtml:tooltipHtml,useHtml:useHtml=false,zMin:zMin=null,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{headerFormat:null,pointFormat:tooltipHtml?tooltipHtml:'<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',useHTML:useHtml}});const innerSizes={sm:"35%",md:"50%",lg:"85%",none:"0%"};const innerSizeFormat=size=>innerSizes[size];const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={title:{text:title},chart:{height:height,type:style,events:{render:event=>alignBlockElement(event),redraw:event=>alignBlockElement(event)}},legend:{align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},plotOptions:{pie:{colors:colors2.length>0?mapColors(colors2):highchartsTheme.colors,dataLabels:{enabled:dataLabels,connectorShape:"straight",connectorWidth:3,format:dataLabelHtml},showInLegend:legend}},series:[{minPointSize:minPointSize,maxPointSize:maxPointSize,innerSize:borderWidth==20?"100%":innerSizeFormat(innerSize),data:formattedChartData,zMin:zMin,startAngle:startAngle,borderWidth:borderWidth,borderColor:borderColor}],credits:false};setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(Fragment,{children:children?jsxs("div",{id:`wrapper-circle-chart-${id}`,children:[jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options}),jsx("div",{className:"pb-circle-chart-block",children:children})]}):jsx(HighchartsReact,{containerProps:{className:classnames("pb_circle_chart",globalProps(filteredProps)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})})};const Gauge=({aria:aria={},chartData:chartData,customOptions:customOptions={},dark:dark=false,data:data={},disableAnimation:disableAnimation=false,fullCircle:fullCircle=false,height:height=null,htmlOptions:htmlOptions={},id:id,max:max=100,min:min=0,prefix:prefix="",showLabels:showLabels=false,style:style="solidgauge",suffix:suffix="",title:title="",tooltipHtml:tooltipHtml='<span style="font-weight: bold; color:{point.color};">●</span>{point.name}: <b>{point.y}</b>',colors:colors$1=[],minorTickInterval:minorTickInterval=null,circumference:circumference=(fullCircle?[0,360]:[-100,100]),...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);HighchartsMore(Highcharts);SolidGauge(Highcharts);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();Highcharts.setOptions({tooltip:{pointFormat:tooltipHtml,followPointer:true}});const css=buildCss({pb_gauge_kit:true});const[options,setOptions]=useState({});useEffect((()=>{const formattedChartData=chartData.map((obj=>{obj.y=obj.value;delete obj.value;return obj}));const staticOptions={chart:{events:{load(){setTimeout(this.reflow.bind(this),0)}},type:style,height:height},title:{text:title},yAxis:{min:min,max:max,lineWidth:0,tickWidth:0,minorTickInterval:minorTickInterval,tickAmount:2,tickPositions:[min,max],labels:{y:26,enabled:showLabels}},credits:false,series:[{data:formattedChartData}],pane:{center:["50%","50%"],size:"90%",startAngle:circumference[0],endAngle:circumference[1],background:{borderWidth:20,innerRadius:"90%",outerRadius:"90%",shape:"arc",className:"gauge-pane"}},colors:colors$1!==void 0&&colors$1.length>0?mapColors(colors$1):highchartsTheme.colors,plotOptions:{series:{animation:!disableAnimation},solidgauge:{borderColor:colors$1!==void 0&&colors$1.length===1?mapColors(colors$1).join():highchartsTheme.colors[0],borderWidth:20,radius:90,innerRadius:"90%",dataLabels:{borderWidth:0,color:colors.text_lt_default,enabled:true,format:`<span class="prefix${dark?" dark":""}">${prefix}</span><span class="fix${dark?" dark":""}">{y:,f}</span><span class="suffix${dark?" dark":""}">${suffix}</span>`,style:{fontFamily:typography.font_family_base,fontWeight:typography.regular,fontSize:typography.heading_2},y:-26}}}};setOptions(merge(staticOptions,customOptions));if(document.querySelector(".prefix")){document.querySelectorAll(".prefix").forEach((prefix2=>{prefix2.setAttribute("y","28")}));document.querySelectorAll(".fix").forEach((fix=>fix.setAttribute("y","38")))}}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(css,globalProps(props)),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};const LineGraph=({aria:aria={},data:data={},align:align="center",className:className="pb_bar_graph",customOptions:customOptions={},dark:dark=false,gradient:gradient=false,type:type="line",htmlOptions:htmlOptions={},id:id,legend:legend=false,toggleLegendClick:toggleLegendClick=true,layout:layout="horizontal",verticalAlign:verticalAlign="bottom",x:x=0,y:y=0,axisTitle:axisTitle,xAxisCategories:xAxisCategories,yAxisMin:yAxisMin,yAxisMax:yAxisMax,chartData:chartData,pointStart:pointStart,subTitle:subTitle,title:title,height:height,colors:colors2=[],...props})=>{const ariaProps=buildAriaProps(aria);const dataProps=buildDataProps(data);const htmlProps=buildHtmlProps(htmlOptions);const setupTheme=()=>{dark?Highcharts.setOptions(highchartsDarkTheme):Highcharts.setOptions(highchartsTheme)};setupTheme();const staticOptions={title:{text:title},chart:{height:height,type:type},subtitle:{text:subTitle},yAxis:{min:yAxisMin,max:yAxisMax,title:{text:axisTitle}},xAxis:{categories:xAxisCategories},legend:{enabled:legend,align:align,verticalAlign:verticalAlign,layout:layout,x:x,y:y},colors:colors2!==void 0&&colors2.length>0?mapColors(colors2):highchartsTheme.colors,plotOptions:{series:{pointStart:pointStart,events:{},dataLabels:{enabled:false}}},series:chartData,credits:false};if(!toggleLegendClick){staticOptions.plotOptions.series.events={legendItemClick:()=>false}}const filteredProps={...props};delete filteredProps.verticalAlign;const[options,setOptions]=useState({});useEffect((()=>{setOptions(merge(staticOptions,customOptions))}),[chartData]);return jsx(HighchartsReact,{containerProps:{className:classnames(globalProps(filteredProps),className),id:id,...ariaProps,...dataProps,...htmlProps},highcharts:Highcharts,options:options})};export{BarGraph as B,CircleChart as C,Gauge as G,LineGraph as L};