@tcn/ui 0.12.3 → 0.12.4

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 (88) hide show
  1. package/dist/actions/index.d.ts +0 -2
  2. package/dist/actions/index.d.ts.map +1 -1
  3. package/dist/actions/index.js +6 -10
  4. package/dist/actions/index.js.map +1 -1
  5. package/dist/group.css +1 -0
  6. package/dist/inputs/color_input/color_input.js +2 -4
  7. package/dist/inputs/color_input/color_input.js.map +1 -1
  8. package/dist/inputs/date_picker/date_picker_header.js +20 -22
  9. package/dist/inputs/date_picker/date_picker_header.js.map +1 -1
  10. package/dist/inputs/date_picker/date_picker_input.js +2 -4
  11. package/dist/inputs/date_picker/date_picker_input.js.map +1 -1
  12. package/dist/inputs/date_picker/date_picker_time_selector.js +9 -11
  13. package/dist/inputs/date_picker/date_picker_time_selector.js.map +1 -1
  14. package/dist/inputs/date_picker/date_picker_year_input.js +5 -7
  15. package/dist/inputs/date_picker/date_picker_year_input.js.map +1 -1
  16. package/dist/inputs/date_picker/date_picker_year_selector.js +2 -4
  17. package/dist/inputs/date_picker/date_picker_year_selector.js.map +1 -1
  18. package/dist/inputs/index.d.ts +2 -0
  19. package/dist/inputs/index.d.ts.map +1 -1
  20. package/dist/inputs/index.js +24 -20
  21. package/dist/inputs/index.js.map +1 -1
  22. package/dist/inputs/multiselect/multiselect_inline_values.js +7 -9
  23. package/dist/inputs/multiselect/multiselect_inline_values.js.map +1 -1
  24. package/dist/inputs/multiselect/multiselect_values.js +2 -4
  25. package/dist/inputs/multiselect/multiselect_values.js.map +1 -1
  26. package/dist/inputs/phone_number_input/phone_number_input_adapter.js +2 -4
  27. package/dist/inputs/phone_number_input/phone_number_input_adapter.js.map +1 -1
  28. package/dist/inputs/phone_number_input/sip_input.js +13 -15
  29. package/dist/inputs/phone_number_input/sip_input.js.map +1 -1
  30. package/dist/inputs/select/select.js +2 -4
  31. package/dist/inputs/select/select.js.map +1 -1
  32. package/dist/{actions/button → inputs}/select_group/select_group.d.ts +1 -1
  33. package/dist/inputs/select_group/select_group.d.ts.map +1 -0
  34. package/dist/{actions/button → inputs}/select_group/select_group.js +3 -3
  35. package/dist/inputs/select_group/select_group.js.map +1 -0
  36. package/dist/inputs/select_group/single_select_group.d.ts.map +1 -0
  37. package/dist/inputs/select_group/single_select_group.js.map +1 -0
  38. package/dist/inputs/suggestions/suggestion_list.js +2 -4
  39. package/dist/inputs/suggestions/suggestion_list.js.map +1 -1
  40. package/dist/layouts/group/group.d.ts +5 -0
  41. package/dist/layouts/group/group.d.ts.map +1 -0
  42. package/dist/layouts/group/group.js +26 -0
  43. package/dist/layouts/group/group.js.map +1 -0
  44. package/dist/layouts/index.d.ts +2 -0
  45. package/dist/layouts/index.d.ts.map +1 -1
  46. package/dist/layouts/index.js +36 -32
  47. package/dist/layouts/index.js.map +1 -1
  48. package/dist/select_group.css +1 -1
  49. package/dist/surfaces/alert/alert.d.ts +0 -2
  50. package/dist/surfaces/alert/alert.d.ts.map +1 -1
  51. package/dist/surfaces/alert/alert.js +5 -7
  52. package/dist/surfaces/alert/alert.js.map +1 -1
  53. package/dist/surfaces/confirm/confirm.d.ts +3 -3
  54. package/dist/surfaces/confirm/confirm.d.ts.map +1 -1
  55. package/dist/surfaces/confirm/confirm.js +46 -45
  56. package/dist/surfaces/confirm/confirm.js.map +1 -1
  57. package/dist/surfaces/pop_confirm/pop_confirm.js +4 -2
  58. package/dist/surfaces/pop_confirm/pop_confirm.js.map +1 -1
  59. package/dist/themes/stories/button_showcase.d.ts.map +1 -1
  60. package/dist/themes/stylesheets/reset.css +1 -1
  61. package/dist/themes/stylesheets/reset.js +3 -3
  62. package/dist/themes/stylesheets/reset.js.map +1 -1
  63. package/dist/themes/themes/ergo/ergo_theme.css +1 -1
  64. package/dist/themes/themes/ergo/ergo_theme.js +30 -4
  65. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  66. package/package.json +3 -2
  67. package/src/actions/index.ts +0 -8
  68. package/src/inputs/index.ts +9 -0
  69. package/src/{actions/button/__stories__ → inputs/select_group}/select_group.stories.tsx +5 -26
  70. package/src/{actions/button → inputs}/select_group/select_group.tsx +3 -3
  71. package/src/layouts/bar/bar.stories.tsx +61 -0
  72. package/src/layouts/group/group.module.css +8 -0
  73. package/src/layouts/group/group.tsx +23 -0
  74. package/src/layouts/index.ts +2 -0
  75. package/src/overlay/popper/__stories__/element_popper.stories.tsx +1 -1
  76. package/src/surfaces/alert/alert.tsx +0 -2
  77. package/src/surfaces/confirm/confirm.tsx +24 -9
  78. package/src/themes/stories/button_showcase.tsx +19 -51
  79. package/src/themes/stylesheets/reset.css +3 -3
  80. package/src/themes/themes/ergo/ergo_theme.css +30 -4
  81. package/dist/actions/button/select_group/select_group.d.ts.map +0 -1
  82. package/dist/actions/button/select_group/select_group.js.map +0 -1
  83. package/dist/actions/button/select_group/single_select_group.d.ts.map +0 -1
  84. package/dist/actions/button/select_group/single_select_group.js.map +0 -1
  85. /package/dist/{actions/button → inputs}/select_group/single_select_group.d.ts +0 -0
  86. /package/dist/{actions/button → inputs}/select_group/single_select_group.js +0 -0
  87. /package/src/{actions/button → inputs}/select_group/select_group.module.css +0 -0
  88. /package/src/{actions/button → inputs}/select_group/single_select_group.tsx +0 -0
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { clsx } from 'clsx';
3
+ import { Box, type BoxProps } from '../../stacks/index.js';
4
+
5
+ import styles from './group.module.css';
6
+
7
+ export type GroupProps = BoxProps;
8
+
9
+ export const Group = React.forwardRef<HTMLElement, GroupProps>(function Group(
10
+ { children, className, as = 'span', ...props }: GroupProps,
11
+ ref
12
+ ) {
13
+ return (
14
+ <Box
15
+ ref={ref}
16
+ as={as}
17
+ className={clsx(className, styles['group'], 'tcn-group')}
18
+ {...props}
19
+ >
20
+ {children}
21
+ </Box>
22
+ );
23
+ });
@@ -12,6 +12,8 @@ export { VBody, type VBodyProps } from './body/v_body.js';
12
12
  export { Footer, type FooterProps } from './footer/footer.js';
13
13
  export { Header, type HeaderProps } from './header/header.js';
14
14
  export { UtilityBar, type UtilityBarProps } from './utility_bar/utility_bar.js';
15
+ export { Group, type GroupProps } from './group/group.js';
16
+ export { Bar, type BarProps } from './bar/bar.js';
15
17
  export { Row } from './row/row.js';
16
18
  export { Section } from './section/section.js';
17
19
  export { Heading, type HeadingOwnProps } from './section/heading.js';
@@ -35,7 +35,7 @@ const meta: Meta<typeof ElementPopperComponent> = {
35
35
 
36
36
  export default meta;
37
37
 
38
- export function ElementPopper(props: ElementPopoverStoryProps) {
38
+ export function SBElementPopper(props: ElementPopoverStoryProps) {
39
39
  const [isOpen, setIsOpen] = useState(false);
40
40
  const anchorElement = useRef<HTMLButtonElement>(null);
41
41
 
@@ -6,8 +6,6 @@ import { Confirm, ConfirmProps } from '../confirm/confirm.js';
6
6
  export interface AlertProps extends Omit<ConfirmProps, 'actions'> {
7
7
  open?: boolean;
8
8
  graphic?: React.ReactNode;
9
- title?: string;
10
- description?: string;
11
9
  onAccept?: () => void;
12
10
  }
13
11
 
@@ -8,11 +8,12 @@ import { BodyText, Title } from '../../typography/index.js';
8
8
  import styles from './confirm.module.css';
9
9
  import { Box, type BoxProps } from '../../stacks/box/box.js';
10
10
 
11
- export interface ConfirmProps extends React.HTMLAttributes<HTMLDivElement> {
11
+ export interface ConfirmProps
12
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
12
13
  open?: boolean;
13
14
  graphic?: React.ReactNode;
14
- title?: string;
15
- description?: string;
15
+ title?: React.ReactNode;
16
+ description?: React.ReactNode;
16
17
  actions?: React.ReactNode;
17
18
  veilProps?: BoxProps;
18
19
  }
@@ -54,6 +55,24 @@ export const Confirm = React.forwardRef(function Confirm(
54
55
  setShake(true);
55
56
  }
56
57
 
58
+ const descriptionElement =
59
+ typeof description === 'string' ? (
60
+ <BodyText className="tcn-confirm-description" hierarchy="tertiary">
61
+ {description}
62
+ </BodyText>
63
+ ) : (
64
+ description
65
+ );
66
+
67
+ const titleElement =
68
+ typeof title === 'string' ? (
69
+ <Title className="tcn-confirm-title" emphasis="strong" size="sm">
70
+ {title}
71
+ </Title>
72
+ ) : (
73
+ title
74
+ );
75
+
57
76
  return (
58
77
  <>
59
78
  {open && (
@@ -68,12 +87,8 @@ export const Confirm = React.forwardRef(function Confirm(
68
87
  >
69
88
  <VStack hAlign="center">
70
89
  {graphic}
71
- <Title className="tcn-confirm-title" emphasis="strong" size="sm">
72
- {title}
73
- </Title>
74
- <BodyText className="tcn-confirm-description" hierarchy="tertiary">
75
- {description}
76
- </BodyText>
90
+ {titleElement}
91
+ {descriptionElement}
77
92
  <Spacer height="16px" />
78
93
  <Box
79
94
  className={clsx(styles.actions, 'tcn-confirm-actions')}
@@ -1,14 +1,7 @@
1
- import { useState } from 'react';
2
1
  import { CrossIcon } from '@tcn/icons/cross_icon.js';
3
2
  import { PhoneIcon } from '@tcn/icons/phone_icon.js';
4
3
  import { BluetoothIcon } from '@tcn/icons/bluetooth_icon.js';
5
- import {
6
- Button,
7
- ButtonGroup,
8
- SelectGroup,
9
- SingleSelectGroup,
10
- SlimButton,
11
- } from '../../actions/index.js';
4
+ import { Button, ButtonGroup } from '../../actions/index.js';
12
5
  import { HStack } from '../../stacks/h_stack.js';
13
6
  import { VStack } from '../../stacks/v_stack.js';
14
7
  import { Spacer } from '../../stacks/spacer.js';
@@ -17,12 +10,6 @@ import { FieldSet } from '../../form/field_set/field_set.js';
17
10
  import { BodyText } from '../../typography/index.js';
18
11
 
19
12
  export function ButtonShowcase() {
20
- const [singleSelectedOptions, setSingleSelectedOptions] = useState<string>('option1');
21
- const [multiselectOptions, setMultiselectOptions] = useState<string[]>([
22
- 'option1',
23
- 'option2',
24
- ]);
25
-
26
13
  return (
27
14
  <FieldSet legend="Button Showcase">
28
15
  {/* Basic Buttons */}
@@ -57,60 +44,41 @@ export function ButtonShowcase() {
57
44
  </VStack>
58
45
  </Field>
59
46
 
60
- {/* Select Groups */}
61
- <Field label="Select Groups">
62
- <VStack width="400px" gap="20px" hAlign="center">
63
- <SingleSelectGroup
64
- value={singleSelectedOptions}
65
- onChange={setSingleSelectedOptions}
66
- >
67
- <option value="option1">Option 1</option>
68
- <option value="option2">Option 2</option>
69
- <option value="option3">Option 3</option>
70
- </SingleSelectGroup>
71
- <SelectGroup value={multiselectOptions} onChange={setMultiselectOptions}>
72
- <option value="option1">Option 1</option>
73
- <option value="option2">Option 2</option>
74
- <option value="option3">Option 3</option>
75
- </SelectGroup>
76
- </VStack>
77
- </Field>
78
-
79
47
  {/* Slim Buttons */}
80
48
  <Field label="Slim Buttons">
81
49
  <VStack width="400px" gap="20px" hAlign="center">
82
50
  <HStack gap="8px" hAlign="center">
83
- <SlimButton size="sm" hierarchy="primary">
51
+ <Button utility size="sm" hierarchy="primary">
84
52
  <CrossIcon size="sm" />
85
- </SlimButton>
86
- <SlimButton size="md" hierarchy="primary">
53
+ </Button>
54
+ <Button utility size="md" hierarchy="primary">
87
55
  <CrossIcon size="md" />
88
- </SlimButton>
89
- <SlimButton size="lg" hierarchy="primary">
56
+ </Button>
57
+ <Button utility size="lg" hierarchy="primary">
90
58
  <CrossIcon size="lg" />
91
- </SlimButton>
59
+ </Button>
92
60
  </HStack>
93
61
  <HStack gap="8px" hAlign="center">
94
- <SlimButton size="sm" hierarchy="secondary">
62
+ <Button utility size="sm" hierarchy="secondary">
95
63
  <PhoneIcon size="sm" />
96
- </SlimButton>
97
- <SlimButton size="md" hierarchy="secondary">
64
+ </Button>
65
+ <Button utility size="md" hierarchy="secondary">
98
66
  <PhoneIcon size="md" />
99
- </SlimButton>
100
- <SlimButton size="lg" hierarchy="secondary">
67
+ </Button>
68
+ <Button utility size="lg" hierarchy="secondary">
101
69
  <PhoneIcon size="lg" />
102
- </SlimButton>
70
+ </Button>
103
71
  </HStack>
104
72
  <HStack gap="8px" hAlign="center">
105
- <SlimButton size="sm" hierarchy="tertiary">
73
+ <Button utility size="sm" hierarchy="tertiary">
106
74
  <BluetoothIcon size="sm" />
107
- </SlimButton>
108
- <SlimButton size="md" hierarchy="tertiary">
75
+ </Button>
76
+ <Button utility size="md" hierarchy="tertiary">
109
77
  <BluetoothIcon size="md" />
110
- </SlimButton>
111
- <SlimButton size="lg" hierarchy="tertiary">
78
+ </Button>
79
+ <Button utility size="lg" hierarchy="tertiary">
112
80
  <BluetoothIcon size="lg" />
113
- </SlimButton>
81
+ </Button>
114
82
  </HStack>
115
83
  </VStack>
116
84
  </Field>
@@ -91,17 +91,17 @@
91
91
  vertical-align: baseline;
92
92
  }
93
93
  /* HTML5 display-role reset for older browsers */
94
+ /* FIXME: sometimes reset breaks stacks display value (flex) */
95
+ /* header, section */
94
96
  article,
95
97
  aside,
96
98
  details,
97
99
  figcaption,
98
100
  figure,
99
101
  footer,
100
- header,
101
102
  hgroup,
102
103
  menu,
103
- nav,
104
- section {
104
+ nav {
105
105
  display: block;
106
106
  }
107
107
  body {
@@ -48,6 +48,7 @@
48
48
  --font-size: 12px;
49
49
 
50
50
  /* Spacing */
51
+ --gap-xs: 2px;
51
52
  --gap-small: 4px;
52
53
  --gap-medium: 8px;
53
54
  --gap-large: 16px;
@@ -563,17 +564,21 @@
563
564
 
564
565
  /* Inline */
565
566
  .tcn-tabs-bar[data-variant="inline"] {
567
+ font-size: 12px;
566
568
  min-width: min-content;
567
569
  width: auto;
568
570
  flex-grow: 0;
569
571
  border-radius: var(--shape-radius-medium);
570
572
  border: 1px solid var(--on-material);
573
+ padding-block: 1px;
574
+ padding-inline: 2px;
571
575
 
572
576
  .tcn-tabs-list {
573
- gap: var(--gap-small);
574
- padding: var(--padding-small);
577
+ height: 20px;
578
+ gap: var(--gap-xs);
575
579
  .tcn-tab-item {
576
580
  border-radius: var(--shape-radius-medium);
581
+ min-height: 20px;
577
582
  }
578
583
  }
579
584
  }
@@ -712,6 +717,9 @@
712
717
  }
713
718
 
714
719
  .tcn-rail {
720
+ :where(.tcn-rail-stack) {
721
+ gap: var(--gap-medium);
722
+ }
715
723
  :where(.tcn-body) {
716
724
  gap: var(--gap-medium);
717
725
  }
@@ -856,9 +864,25 @@
856
864
  background-color: var(--background-color-primary);
857
865
  }
858
866
 
867
+ .tcn-bar {
868
+ gap: var(--gap-medium);
869
+
870
+ /* Add a divider between groups unless there is a spacer after a group */
871
+ :where(.tcn-group:not(:last-child):not(:has(+ .tcn-spacer)))::after {
872
+ content: "";
873
+ display: block;
874
+ min-width: 2px;
875
+ height: 18px;
876
+ background: var(--ergo-grey);
877
+ border-radius: var(--shape-radius-small);
878
+ align-self: center;
879
+ }
880
+ }
881
+
859
882
  /* PANEL */
860
883
  .tcn-panel {
861
- background-color: var(--background-color-primary);
884
+ --material: var(--background-color-primary);
885
+ background-color: var(--material);
862
886
  border-radius: var(--shape-radius-medium);
863
887
  overflow: hidden;
864
888
  }
@@ -1279,7 +1303,9 @@
1279
1303
  .tcn-switch-wrapper,
1280
1304
  .tcn-date-picker,
1281
1305
  .tcn-date-picker-year-selector,
1282
- .tcn-radio {
1306
+ .tcn-radio,
1307
+ .tcn-suggestion-list-search-input,
1308
+ .tcn-suggestion-list {
1283
1309
  --accent-color: var(--ergo-primary);
1284
1310
  }
1285
1311
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"select_group.d.ts","sourceRoot":"","sources":["../../../../src/actions/button/select_group/select_group.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,yBAAyB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;AACnE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,qBAAqB,CAAC,mBAAmB,EAAE,KAAK,CAAC,EACjD,UAAU,CACX,GAAG;IACF,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,QAAQ,EACJ,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,GACrC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,WAAW,sGAsDtB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"select_group.js","sources":["../../../../src/actions/button/select_group/select_group.tsx"],"sourcesContent":["import { HStack } from '../../../stacks/h_stack.js';\nimport type { WithDetailedHTMLProps } from '../../../stacks/types/as.js';\nimport { clsx } from 'clsx';\nimport React from 'react';\nimport { Button } from '../button/button.js';\nimport styles from './select_group.module.css';\n\nexport type SelectGroupChangeCallback = (values: string[]) => void;\nexport interface SelectGroupOwnProps {\n value: string[];\n disabled?: boolean;\n}\n\nexport type SelectGroupProps = Omit<\n WithDetailedHTMLProps<SelectGroupOwnProps, 'div'>,\n 'onChange'\n> & {\n onChange?: SelectGroupChangeCallback;\n children:\n | React.ReactElement<HTMLOptionElement>\n | React.ReactElement<HTMLOptionElement>[];\n};\n\nexport const SelectGroup = React.forwardRef(function ButtonGroup(\n { children, value, className, onChange, disabled = false, ...props }: SelectGroupProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const options: React.ReactElement<any>[] = Array.isArray(children)\n ? children\n : [children];\n\n const handleChange = (option: string, isSelected: boolean) => {\n if (disabled) return;\n const next = [...value];\n if (isSelected) {\n const index = value.indexOf(option);\n index > -1 && next.splice(index, 1);\n } else {\n next.push(option);\n }\n onChange?.(next);\n };\n\n return (\n <HStack\n ref={ref}\n as=\"div\"\n inline\n width=\"auto\"\n height=\"auto\"\n data-is-disabled={disabled}\n className={clsx(styles['select-group'], 'tcn-select-group', className)}\n {...props}\n >\n {options.map((option, i) => {\n const isSelected = value.includes(option.props.value);\n const select = () => {\n handleChange(option.props.value, isSelected);\n };\n\n return (\n <React.Fragment key={i}>\n <Button\n disabled={disabled || option.props.disabled}\n data-is-disabled={disabled || option.props.disabled}\n className={clsx(styles['select-group-option'], 'tcn-select-group-option')}\n hierarchy={isSelected ? 'primary' : 'secondary'}\n onClick={select}\n value={option.props.value}\n >\n {option.props.children}\n </Button>\n </React.Fragment>\n );\n })}\n </HStack>\n );\n});\n"],"names":["SelectGroup","React","children","value","className","onChange","disabled","props","ref","options","handleChange","option","isSelected","next","index","jsx","HStack","clsx","styles","i","select","Button"],"mappings":";;;;;4LAuBaA,IAAcC,EAAM,WAAW,SAC1C,EAAE,UAAAC,GAAU,OAAAC,GAAO,WAAAC,GAAW,UAAAC,GAAU,UAAAC,IAAW,IAAO,GAAGC,EAAA,GAC7DC,GACA;AACA,QAAMC,IAAqC,MAAM,QAAQP,CAAQ,IAC7DA,IACA,CAACA,CAAQ,GAEPQ,IAAe,CAACC,GAAgBC,MAAwB;AAC5D,QAAIN,EAAU;AACd,UAAMO,IAAO,CAAC,GAAGV,CAAK;AACtB,QAAIS,GAAY;AACd,YAAME,IAAQX,EAAM,QAAQQ,CAAM;AAClC,MAAAG,IAAQ,MAAMD,EAAK,OAAOC,GAAO,CAAC;AAAA,IACpC;AACE,MAAAD,EAAK,KAAKF,CAAM;AAElB,IAAAN,IAAWQ,CAAI;AAAA,EACjB;AAEA,SACE,gBAAAE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,IAAG;AAAA,MACH,QAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,oBAAkBF;AAAA,MAClB,WAAWW,EAAKC,EAAO,cAAc,GAAG,oBAAoBd,CAAS;AAAA,MACpE,GAAGG;AAAA,MAEH,UAAAE,EAAQ,IAAI,CAACE,GAAQQ,MAAM;AAC1B,cAAMP,IAAaT,EAAM,SAASQ,EAAO,MAAM,KAAK,GAC9CS,IAAS,MAAM;AACnB,UAAAV,EAAaC,EAAO,MAAM,OAAOC,CAAU;AAAA,QAC7C;AAEA,eACE,gBAAAG,EAACd,EAAM,UAAN,EACC,UAAA,gBAAAc;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,UAAUf,KAAYK,EAAO,MAAM;AAAA,YACnC,oBAAkBL,KAAYK,EAAO,MAAM;AAAA,YAC3C,WAAWM,EAAKC,EAAO,qBAAqB,GAAG,yBAAyB;AAAA,YACxE,WAAWN,IAAa,YAAY;AAAA,YACpC,SAASQ;AAAA,YACT,OAAOT,EAAO,MAAM;AAAA,YAEnB,YAAO,MAAM;AAAA,UAAA;AAAA,QAAA,KATGQ,CAWrB;AAAA,MAEJ,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"single_select_group.d.ts","sourceRoot":"","sources":["../../../../src/actions/button/select_group/single_select_group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAe,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAElE,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,gBAAgB,EAChB,OAAO,GAAG,UAAU,GAAG,mBAAmB,CAC3C,GACC,yBAAyB,CAAC;AAE5B,eAAO,MAAM,iBAAiB,4GAgC5B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"single_select_group.js","sources":["../../../../src/actions/button/select_group/single_select_group.tsx"],"sourcesContent":["import React from 'react';\nimport { SelectGroup, SelectGroupProps } from './select_group.js';\n\nexport interface SingleSelectGroupOwnProps {\n value: string;\n disabled?: boolean;\n onChange?: (value: string) => void;\n}\n\nexport type SingleSelectGroupProps = Omit<\n SelectGroupProps,\n 'value' | 'onChange' | 'enableMultiselect'\n> &\n SingleSelectGroupOwnProps;\n\nexport const SingleSelectGroup = React.forwardRef(function SingleSelectGroup(\n {\n children,\n value,\n className,\n onChange,\n disabled = false,\n ...props\n }: SingleSelectGroupProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const handleChange = (values: string[]) => {\n if (values.length === 0) {\n return;\n }\n // For single select, we take the last selected value or empty string if none selected\n const singleValue = values.length > 0 ? values[values.length - 1] : '';\n onChange?.(singleValue);\n };\n\n return (\n <SelectGroup\n ref={ref}\n value={value != null ? [value] : []}\n onChange={handleChange}\n disabled={disabled}\n className={className}\n {...props}\n >\n {children}\n </SelectGroup>\n );\n});\n"],"names":["SingleSelectGroup","React","children","value","className","onChange","disabled","props","ref","handleChange","values","singleValue","jsx","SelectGroup"],"mappings":";;;AAeO,MAAMA,IAAoBC,EAAM,WAAW,SAChD;AAAA,EACE,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAe,CAACC,MAAqB;AACzC,QAAIA,EAAO,WAAW;AACpB;AAGF,UAAMC,IAAcD,EAAO,SAAS,IAAIA,EAAOA,EAAO,SAAS,CAAC,IAAI;AACpE,IAAAL,IAAWM,CAAW;AAAA,EACxB;AAEA,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAL;AAAA,MACA,OAAOL,KAAS,OAAO,CAACA,CAAK,IAAI,CAAA;AAAA,MACjC,UAAUM;AAAA,MACV,UAAAH;AAAA,MACA,WAAAF;AAAA,MACC,GAAGG;AAAA,MAEH,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}