@vkzstudio/muza-ui 1.0.43 → 1.0.45

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 (116) hide show
  1. package/dist/components/Accordion/Accordion.d.ts +42 -6
  2. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  3. package/dist/components/Button/Button.d.ts +71 -17
  4. package/dist/components/Button/Button.d.ts.map +1 -1
  5. package/dist/components/DataTable/DataTable.d.ts +66 -20
  6. package/dist/components/DataTable/DataTable.d.ts.map +1 -1
  7. package/dist/components/DataTable/DataTable.js +39 -39
  8. package/dist/components/DataTable/DataTable.stories.d.ts.map +1 -1
  9. package/dist/components/DatePicker/DatePicker.d.ts +69 -36
  10. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
  11. package/dist/components/DatePicker/DatePicker.stories.d.ts.map +1 -1
  12. package/dist/components/DropdownMenu/DropdownMenu.d.ts +38 -7
  13. package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  14. package/dist/components/DropdownMenu/DropdownMenu.js +165 -163
  15. package/dist/components/DropdownMenu/DropdownMenu.stories.d.ts +3 -17
  16. package/dist/components/DropdownMenu/DropdownMenu.stories.d.ts.map +1 -1
  17. package/dist/components/EdgeButton/EdgeButton.d.ts +10 -11
  18. package/dist/components/EdgeButton/EdgeButton.d.ts.map +1 -1
  19. package/dist/components/ExpandableTable/ExpandableTable.d.ts +103 -19
  20. package/dist/components/ExpandableTable/ExpandableTable.d.ts.map +1 -1
  21. package/dist/components/ExpandableTable/ExpandableTable.js +100 -111
  22. package/dist/components/ExpandableTable/ExpandableTable.stories.d.ts +6 -1
  23. package/dist/components/ExpandableTable/ExpandableTable.stories.d.ts.map +1 -1
  24. package/dist/components/ExpandableTable/index.d.ts +1 -1
  25. package/dist/components/ExpandableTable/index.d.ts.map +1 -1
  26. package/dist/components/FileUpload/FileItem.d.ts +22 -0
  27. package/dist/components/FileUpload/FileItem.d.ts.map +1 -1
  28. package/dist/components/FileUpload/FileItem.js +38 -41
  29. package/dist/components/FileUpload/FileUpload.d.ts +137 -42
  30. package/dist/components/FileUpload/FileUpload.d.ts.map +1 -1
  31. package/dist/components/FileUpload/FileUpload.js +87 -83
  32. package/dist/components/FileUpload/FileUpload.stories.d.ts +1 -0
  33. package/dist/components/FileUpload/FileUpload.stories.d.ts.map +1 -1
  34. package/dist/components/FileUpload/index.d.ts +1 -1
  35. package/dist/components/FileUpload/index.d.ts.map +1 -1
  36. package/dist/components/Flex/Flex.d.ts +1 -1
  37. package/dist/components/Icons/CustomBadges.d.ts +14 -0
  38. package/dist/components/Icons/CustomBadges.d.ts.map +1 -0
  39. package/dist/components/Icons/CustomBadges.js +334 -0
  40. package/dist/components/Icons/CustomIcons.d.ts +24 -0
  41. package/dist/components/Icons/CustomIcons.d.ts.map +1 -1
  42. package/dist/components/Icons/CustomIcons.js +88 -42
  43. package/dist/components/Icons/CustomLogos.d.ts +29 -0
  44. package/dist/components/Icons/CustomLogos.d.ts.map +1 -0
  45. package/dist/components/Icons/CustomLogos.js +593 -0
  46. package/dist/components/Icons/LogosAndBadges.stories.d.ts +7 -0
  47. package/dist/components/Icons/LogosAndBadges.stories.d.ts.map +1 -0
  48. package/dist/components/Icons/index.d.ts +2 -0
  49. package/dist/components/Icons/index.d.ts.map +1 -1
  50. package/dist/components/Input/Input.d.ts +33 -34
  51. package/dist/components/Input/Input.d.ts.map +1 -1
  52. package/dist/components/Input/Input.stories.d.ts.map +1 -1
  53. package/dist/components/LanguageSwitcher/LanguageSwitcher.d.ts +24 -1
  54. package/dist/components/LanguageSwitcher/LanguageSwitcher.d.ts.map +1 -1
  55. package/dist/components/LanguageSwitcher/LanguageSwitcher.js +71 -52
  56. package/dist/components/LanguageSwitcher/LanguageSwitcher.stories.d.ts +2 -0
  57. package/dist/components/LanguageSwitcher/LanguageSwitcher.stories.d.ts.map +1 -1
  58. package/dist/components/MultiSelect/MultiSelect.d.ts +50 -23
  59. package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -1
  60. package/dist/components/MultiSelect/MultiSelect.js +18 -17
  61. package/dist/components/Reorderable/Reorderable.d.ts +48 -1
  62. package/dist/components/Reorderable/Reorderable.d.ts.map +1 -1
  63. package/dist/components/ReorderableTable/ReorderableTable.d.ts +34 -17
  64. package/dist/components/ReorderableTable/ReorderableTable.d.ts.map +1 -1
  65. package/dist/components/ReorderableTable/ReorderableTable.stories.d.ts.map +1 -1
  66. package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.d.ts +266 -0
  67. package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.d.ts.map +1 -0
  68. package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.examples.d.ts +39 -0
  69. package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.examples.d.ts.map +1 -0
  70. package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.js +134 -0
  71. package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.stories.d.ts +14 -0
  72. package/dist/components/ResponsiveLayoutTable/ResponsiveLayoutTable.stories.d.ts.map +1 -0
  73. package/dist/components/ResponsiveLayoutTable/index.d.ts +2 -0
  74. package/dist/components/ResponsiveLayoutTable/index.d.ts.map +1 -0
  75. package/dist/components/Select/Select.d.ts +58 -28
  76. package/dist/components/Select/Select.d.ts.map +1 -1
  77. package/dist/components/Select/Select.js +123 -92
  78. package/dist/components/Select/Select.stories.d.ts +1 -0
  79. package/dist/components/Select/Select.stories.d.ts.map +1 -1
  80. package/dist/components/Select/index.d.ts +1 -1
  81. package/dist/components/Select/index.d.ts.map +1 -1
  82. package/dist/components/Select/utils.d.ts +1 -0
  83. package/dist/components/Select/utils.d.ts.map +1 -1
  84. package/dist/components/Select/utils.js +5 -2
  85. package/dist/components/TextEditor/TextEditor.d.ts +82 -46
  86. package/dist/components/TextEditor/TextEditor.d.ts.map +1 -1
  87. package/dist/components/TextEditor/TextEditor.stories.d.ts.map +1 -1
  88. package/dist/components/TextEditor/index.d.ts +1 -1
  89. package/dist/components/TextEditor/index.d.ts.map +1 -1
  90. package/dist/components/Textarea/Textarea.d.ts +41 -10
  91. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  92. package/dist/components/Textarea/Textarea.stories.d.ts.map +1 -1
  93. package/dist/components/Toggle/Toggle.js +1 -1
  94. package/dist/components/ToggleCheckButton/ToggleCheckButton.d.ts +69 -0
  95. package/dist/components/ToggleCheckButton/ToggleCheckButton.d.ts.map +1 -0
  96. package/dist/components/ToggleCheckButton/ToggleCheckButton.js +64 -0
  97. package/dist/components/ToggleCheckButton/ToggleCheckButton.stories.d.ts +8 -0
  98. package/dist/components/ToggleCheckButton/ToggleCheckButton.stories.d.ts.map +1 -0
  99. package/dist/components/ToggleCheckButton/index.d.ts +2 -0
  100. package/dist/components/ToggleCheckButton/index.d.ts.map +1 -0
  101. package/dist/components/WebCheckoutNav/WebCheckoutNav.examples.d.ts +19 -0
  102. package/dist/components/WebCheckoutNav/WebCheckoutNav.examples.d.ts.map +1 -0
  103. package/dist/components/WebCheckoutNav/WebCheckoutNav.stories.d.ts +8 -0
  104. package/dist/components/WebCheckoutNav/WebCheckoutNav.stories.d.ts.map +1 -0
  105. package/dist/components/index.d.ts +2 -0
  106. package/dist/components/index.d.ts.map +1 -1
  107. package/dist/hooks/use-is-breakpoint.d.ts +11 -0
  108. package/dist/hooks/use-is-breakpoint.d.ts.map +1 -1
  109. package/dist/hooks/use-is-breakpoint.js +24 -13
  110. package/dist/index.js +236 -215
  111. package/dist/muza-ui.css +1 -1
  112. package/dist/styles/token-colors.css +64 -3
  113. package/dist/styles/token-sizes.css +86 -54
  114. package/dist/utils/cn.d.ts.map +1 -1
  115. package/dist/utils/cn.js +16 -5
  116. package/package.json +1 -1
@@ -1,14 +1,25 @@
1
1
  import { ReactNode } from 'react';
2
- /**
3
- * Named breakpoint at and above which a column becomes visible.
4
- * Mirrors the breakpoints exported from `@/hooks/use-is-breakpoint`.
5
- */
6
- export type ResponsiveBreakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
2
+ import { ResponsiveBreakpoint } from '../../hooks/use-is-breakpoint';
3
+ export type { ResponsiveBreakpoint };
7
4
  /**
8
5
  * Column definition for the ExpandableTable.
6
+ *
9
7
  * @typeParam T - The type of data objects in each row
8
+ *
9
+ * @example
10
+ * const columns: IColumn<Order>[] = [
11
+ * { dataKey: 'date', title: 'Date', responsive: 'sm' },
12
+ * {
13
+ * dataKey: 'status',
14
+ * title: 'Status',
15
+ * responsive: 'md',
16
+ * render: (value) => <Tag variant="success">{value}</Tag>,
17
+ * },
18
+ * ]
10
19
  */
11
- export interface IColumn<T> {
20
+ export interface IColumn<T extends {
21
+ id: string | number;
22
+ }> {
12
23
  /** Key of the data object to display in this column. */
13
24
  dataKey: keyof T;
14
25
  /** Header content rendered in the table head. */
@@ -28,50 +39,110 @@ export interface IColumn<T> {
28
39
  * - Named breakpoint (`'xs'..'3xl'`): visible at and above that breakpoint, rendered with static Tailwind classes.
29
40
  * - Boolean: caller supplies the visibility directly (e.g. from `useMediaQuery('(min-width: 52rem)')`).
30
41
  * `true` shows the column, `false` hides it. Use this for arbitrary thresholds.
42
+ *
31
43
  * @default 'xs'
44
+ * @see ResponsiveBreakpoint
32
45
  */
33
46
  responsive?: ResponsiveBreakpoint | boolean;
34
47
  /**
35
48
  * When `responsive` hides this column, also render it in the automatic expandable area
36
49
  * below the row. Set to `false` to just hide the column — useful when the expandable
37
50
  * area already contains a richer version of the same data.
51
+ *
38
52
  * @default true
39
53
  */
40
54
  moveToExpandable?: boolean;
41
55
  }
42
56
  /**
43
57
  * Cell definition within an expandable row section.
58
+ *
44
59
  * @typeParam T - The type of data objects in each row
60
+ *
61
+ * @example
62
+ * const cell: IExpandableTableRowCell<Order> = {
63
+ * dataKey: 'customerName',
64
+ * title: 'Customer',
65
+ * render: (value) => <a href="#profile">{value}</a>,
66
+ * }
45
67
  */
46
- export interface IExpandableTableRowCell<T> {
68
+ export interface IExpandableTableRowCell<T extends {
69
+ id: string | number;
70
+ }> {
47
71
  /** Key of the data object to display in this cell. */
48
72
  dataKey: keyof T;
49
73
  /** Additional CSS class applied to the cell. */
50
74
  className?: string;
51
75
  /** Label rendered next to the cell value. */
52
76
  title: ReactNode;
53
- /** Custom render function for the cell value. When omitted, the raw value is rendered as text. */
77
+ /**
78
+ * Custom render function for the cell value.
79
+ * When omitted, the raw value is rendered as text.
80
+ *
81
+ * @example
82
+ * render: (value, row) => <Typography weight="medium">{value}</Typography>
83
+ */
54
84
  render?: (value: T[keyof T], rowData: T) => ReactNode;
55
85
  }
56
86
  /**
57
87
  * Section definition for the expandable row content.
58
88
  * Groups related cells under an optional heading.
89
+ *
59
90
  * @typeParam T - The type of data objects in each row
91
+ *
92
+ * @example
93
+ * const section: IExpandableTableRowSection<Order> = {
94
+ * title: 'Customer Information',
95
+ * cells: [
96
+ * { dataKey: 'customerName', title: 'Name' },
97
+ * { dataKey: 'customerAddress', title: 'Address' },
98
+ * ],
99
+ * }
60
100
  */
61
- export interface IExpandableTableRowSection<T> {
101
+ export interface IExpandableTableRowSection<T extends {
102
+ id: string | number;
103
+ }> {
62
104
  /** Optional heading rendered above the section cells. */
63
105
  title?: ReactNode;
64
- /** Array of cell definitions displayed within this section. @see IExpandableTableRowCell */
106
+ /**
107
+ * Array of cell definitions displayed within this section.
108
+ *
109
+ * @see IExpandableTableRowCell
110
+ */
65
111
  cells: IExpandableTableRowCell<T>[];
66
112
  }
67
113
  /**
68
114
  * Props for the ExpandableTable component.
69
- * @typeParam T - The type of data objects in each row
115
+ *
116
+ * @typeParam T - The type of data objects in each row. Must include an
117
+ * `id: string | number` field — used both as the React key and as the
118
+ * internal expansion-state key. Keying by index corrupts focus, animation,
119
+ * and expansion state whenever rows reorder, filter, or paginate.
120
+ *
121
+ * @example
122
+ * <ExpandableTable<Order>
123
+ * data={orders}
124
+ * columns={columns}
125
+ * expandableRowSections={[
126
+ * { title: 'Details', cells: [{ dataKey: 'invoiceNumber', title: 'Invoice' }] },
127
+ * ]}
128
+ * />
70
129
  */
71
- export interface ExpandableTableProps<T> {
130
+ export interface ExpandableTableProps<T extends {
131
+ id: string | number;
132
+ }> {
72
133
  /** Array of data objects where each item represents one table row. */
73
134
  data: T[];
74
- /** Array of column definitions describing headers and cell rendering. @see IColumn */
135
+ /**
136
+ * Array of column definitions describing headers and cell rendering.
137
+ *
138
+ * @example
139
+ * const columns: IColumn<Order>[] = [
140
+ * { dataKey: 'date', title: 'Date', responsive: 'sm' },
141
+ * { dataKey: 'title', title: 'Order' },
142
+ * ]
143
+ *
144
+ * @see IColumn
145
+ */
75
146
  columns: IColumn<T>[];
76
147
  /**
77
148
  * Sections shown when a row is expanded. Can be a static array applied to every row
@@ -80,21 +151,32 @@ export interface ExpandableTableProps<T> {
80
151
  *
81
152
  * @example
82
153
  * // Static sections
83
- * expandableRowSections={[{ title: 'Details', cells: [{ dataKey: 'name', title: 'Name' }] }]}
154
+ * expandableRowSections={[
155
+ * { title: 'Details', cells: [{ dataKey: 'name', title: 'Name' }] },
156
+ * ]}
84
157
  *
85
158
  * // Dynamic sections based on row data
86
- * expandableRowSections={(row) => row.status === 'active' ? activeSections : inactiveSections}
159
+ * expandableRowSections={(row) =>
160
+ * row.status === 'active' ? activeSections : inactiveSections
161
+ * }
87
162
  *
88
163
  * @see IExpandableTableRowSection
89
164
  */
90
165
  expandableRowSections?: IExpandableTableRowSection<T>[] | ((row: T) => IExpandableTableRowSection<T>[]);
91
166
  /**
92
- * Custom CSS classes for internal elements.
167
+ * Custom CSS classes for internal elements of the expanded row area.
168
+ * Use to override the default grid layouts when labels are long or when
169
+ * independent column sizing is needed.
93
170
  *
94
171
  * @example
95
- * ```tsx
172
+ * // Override the outer grid used inside the expanded row
96
173
  * classNames={{ expandedContentGrid: 'md:grid-cols-[200px_1fr]' }}
97
- * ```
174
+ *
175
+ * // Replace the subgrid inside each section with independent columns
176
+ * classNames={{
177
+ * sectionTitle: 'md:grid-cols-[minmax(200px,auto)_1fr]',
178
+ * cellsWrap: 'md:grid-cols-[minmax(200px,auto)_1fr]',
179
+ * }}
98
180
  */
99
181
  classNames?: Partial<{
100
182
  /** Custom class for the expanded content grid container (overrides default `md:grid-cols-[auto_1fr]`). */
@@ -105,5 +187,7 @@ export interface ExpandableTableProps<T> {
105
187
  cellsWrap: string;
106
188
  }>;
107
189
  }
108
- export declare const ExpandableTable: <T>({ data, columns, expandableRowSections, classNames, }: ExpandableTableProps<T>) => import("react/jsx-runtime").JSX.Element;
190
+ export declare const ExpandableTable: <T extends {
191
+ id: string | number;
192
+ }>({ data, columns, expandableRowSections, classNames, }: ExpandableTableProps<T>) => import("react/jsx-runtime").JSX.Element;
109
193
  //# sourceMappingURL=ExpandableTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpandableTable.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/ExpandableTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAA;AAuBd;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAC5B,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,CAAA;AAET;;;GAGG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC,CAAA;IAChB,iDAAiD;IACjD,KAAK,EAAE,SAAS,CAAA;IAChB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,SAAS,CAAA;IACrD;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAA;IAC3C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC,CAAA;IAChB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,KAAK,EAAE,SAAS,CAAA;IAChB,kGAAkG;IAClG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,SAAS,CAAA;CACtD;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B,CAAC,CAAC;IAC3C,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,4FAA4F;IAC5F,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAA;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,sEAAsE;IACtE,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,sFAAsF;IACtF,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACrB;;;;;;;;;;;;;OAaG;IACH,qBAAqB,CAAC,EAClB,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAC/B,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACjD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACnB,0GAA0G;QAC1G,mBAAmB,EAAE,MAAM,CAAA;QAC3B,yFAAyF;QACzF,YAAY,EAAE,MAAM,CAAA;QACpB,0GAA0G;QAC1G,SAAS,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;CACH;AA4CD,eAAO,MAAM,eAAe,GAAI,CAAC,EAAG,uDAKjC,oBAAoB,CAAC,CAAC,CAAC,4CAiZzB,CAAA"}
1
+ {"version":3,"file":"ExpandableTable.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/ExpandableTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAA;AAEd,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,2BAA2B,CAAA;AAclC,YAAY,EAAE,oBAAoB,EAAE,CAAA;AAEpC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;IACxD,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC,CAAA;IAChB,iDAAiD;IACjD,KAAK,EAAE,SAAS,CAAA;IAChB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,SAAS,CAAA;IACrD;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAA;IAC3C;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;IACxE,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC,CAAA;IAChB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6CAA6C;IAC7C,KAAK,EAAE,SAAS,CAAA;IAChB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,SAAS,CAAA;CACtD;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,0BAA0B,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;IAC3E,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB;;;;OAIG;IACH,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAA;CACpC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;IACrE,sEAAsE;IACtE,IAAI,EAAE,CAAC,EAAE,CAAA;IACT;;;;;;;;;;OAUG;IACH,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACrB;;;;;;;;;;;;;;;;;OAiBG;IACH,qBAAqB,CAAC,EAClB,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAC/B,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACjD;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACnB,0GAA0G;QAC1G,mBAAmB,EAAE,MAAM,CAAA;QAC3B,yFAAyF;QACzF,YAAY,EAAE,MAAM,CAAA;QACpB,0GAA0G;QAC1G,SAAS,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;CACH;AA4CD,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,uDAKhE,oBAAoB,CAAC,CAAC,CAAC,4CAgYzB,CAAA"}
@@ -1,13 +1,13 @@
1
- import { jsxs as m, jsx as s, Fragment as J } from "react/jsx-runtime";
2
- import { useState as B, useRef as Q, useEffect as U, useCallback as Y, useMemo as E, Fragment as Z } from "react";
3
- import { cva as D } from "class-variance-authority";
4
- import { useIsMinSm as S, useIsMinMd as R, useIsMinLg as I, useIsMinXl as w, useIsMin2xl as ee, useIsMin3xl as re } from "../../hooks/use-is-breakpoint.js";
5
- import { Table as se, TableHeader as te, TableRow as H, TableHead as ie, TableRowGroup as ne, TableCell as P } from "./Table.js";
6
- import { cn as o } from "../../utils/cn.js";
1
+ import { jsxs as m, jsx as t, Fragment as G } from "react/jsx-runtime";
2
+ import { useState as F, useRef as _, useEffect as O, useCallback as W, useMemo as K, Fragment as q } from "react";
3
+ import { cva as J } from "class-variance-authority";
4
+ import { useBreakpoints as Q } from "../../hooks/use-is-breakpoint.js";
5
+ import { Table as U, TableHeader as X, TableRow as B, TableHead as Y, TableRowGroup as Z, TableCell as M } from "./Table.js";
6
+ import { cn as l } from "../../utils/cn.js";
7
7
  import { Typography as g } from "../Typography/Typography.js";
8
- import { AltArrowDownOutline as de } from "@solar-icons/react-perf";
9
- import { Flex as A } from "../Flex/Flex.js";
10
- const G = D("", {
8
+ import { AltArrowDownOutline as w } from "@solar-icons/react-perf";
9
+ import { Flex as $ } from "../Flex/Flex.js";
10
+ const j = J("", {
11
11
  variants: {
12
12
  responsive: {
13
13
  xs: "",
@@ -28,26 +28,26 @@ const G = D("", {
28
28
  "3xl": "3xl:hidden"
29
29
  }
30
30
  }
31
- }), X = (n) => typeof n == "string" && (n === "xs" || n === "sm" || n === "md" || n === "lg" || n === "xl" || n === "2xl" || n === "3xl"), C = (n, a) => n === void 0 || n === "xs" ? !0 : typeof n == "boolean" ? n : a[n], ge = ({
32
- data: n,
33
- columns: a,
34
- expandableRowSections: t,
31
+ }), z = (s) => typeof s == "string" && (s === "xs" || s === "sm" || s === "md" || s === "lg" || s === "xl" || s === "2xl" || s === "3xl"), E = (s, o) => s === void 0 || s === "xs" ? !0 : typeof s == "boolean" ? s : o[s], se = ({
32
+ data: s,
33
+ columns: o,
34
+ expandableRowSections: n,
35
35
  classNames: p
36
36
  }) => {
37
- const [v, _] = B(/* @__PURE__ */ new Set()), [O, y] = B(/* @__PURE__ */ new Set()), f = Q(
37
+ const [v, H] = F(/* @__PURE__ */ new Set()), [L, u] = F(/* @__PURE__ */ new Set()), f = _(
38
38
  /* @__PURE__ */ new Map()
39
39
  );
40
- U(() => {
40
+ O(() => {
41
41
  const e = f.current;
42
42
  return () => {
43
43
  e.forEach((i) => clearTimeout(i)), e.clear();
44
44
  };
45
45
  }, []);
46
- const M = Y((e) => {
47
- _((i) => {
48
- const l = new Set(i);
49
- if (l.has(e)) {
50
- l.delete(e), y((c) => {
46
+ const C = W((e) => {
47
+ H((i) => {
48
+ const a = new Set(i);
49
+ if (a.has(e)) {
50
+ a.delete(e), u((c) => {
51
51
  const r = new Set(c);
52
52
  return r.add(e), r;
53
53
  });
@@ -55,53 +55,42 @@ const G = D("", {
55
55
  d && clearTimeout(d), f.current.set(
56
56
  e,
57
57
  setTimeout(() => {
58
- y((c) => {
58
+ u((c) => {
59
59
  const r = new Set(c);
60
60
  return r.delete(e), r;
61
61
  }), f.current.delete(e);
62
62
  }, 150)
63
63
  );
64
64
  } else {
65
- l.add(e);
65
+ a.add(e);
66
66
  const d = f.current.get(e);
67
- d && (clearTimeout(d), f.current.delete(e), y((c) => {
67
+ d && (clearTimeout(d), f.current.delete(e), u((c) => {
68
68
  const r = new Set(c);
69
69
  return r.delete(e), r;
70
70
  }));
71
71
  }
72
- return l;
72
+ return a;
73
73
  });
74
- }, []), N = S(), V = R(), F = I(), K = w(), L = ee(), $ = re(), u = E(
75
- () => ({
76
- xs: !0,
77
- sm: N,
78
- md: V,
79
- lg: F,
80
- xl: K,
81
- "2xl": L,
82
- "3xl": $
83
- }),
84
- [N, V, F, K, L, $]
85
- ), j = E(
86
- () => a.some(
87
- (e) => e.responsive !== void 0 && e.responsive !== "xs" && e.moveToExpandable !== !1 && !C(e.responsive, u)
74
+ }, []), x = Q(), N = K(
75
+ () => o.some(
76
+ (e) => e.responsive !== void 0 && e.responsive !== "xs" && e.moveToExpandable !== !1 && !E(e.responsive, x)
88
77
  ),
89
- [a, u]
90
- ), { firstVisibleIndex: W, lastVisibleIndex: q } = E(() => {
78
+ [o, x]
79
+ ), { firstVisibleIndex: P, lastVisibleIndex: A } = K(() => {
91
80
  let e = -1, i = -1;
92
- return a.forEach((l, d) => {
93
- C(l.responsive, u) && (e === -1 && (e = d), i = d);
81
+ return o.forEach((a, d) => {
82
+ E(a.responsive, x) && (e === -1 && (e = d), i = d);
94
83
  }), { firstVisibleIndex: e, lastVisibleIndex: i };
95
- }, [a, u]), x = !t && j, z = !!t || x;
96
- return /* @__PURE__ */ m(se, { children: [
97
- /* @__PURE__ */ s(te, { children: /* @__PURE__ */ s(H, { className: "[&>th]:border-0 [&>th]:bg-transparent", children: a.map((e, i) => {
98
- const l = X(e.responsive) ? e.responsive : void 0, d = e.responsive === !1;
99
- return /* @__PURE__ */ s(
100
- ie,
84
+ }, [o, x]), y = !n && N, V = !!n || y;
85
+ return /* @__PURE__ */ m(U, { children: [
86
+ /* @__PURE__ */ t(X, { children: /* @__PURE__ */ t(B, { className: "[&>th]:border-0 [&>th]:bg-transparent", children: o.map((e, i) => {
87
+ const a = z(e.responsive) ? e.responsive : void 0, d = e.responsive === !1;
88
+ return /* @__PURE__ */ t(
89
+ Y,
101
90
  {
102
- className: o(
91
+ className: l(
103
92
  e.className,
104
- G({ responsive: l }),
93
+ j({ responsive: a }),
105
94
  d && "hidden"
106
95
  ),
107
96
  children: e.title
@@ -109,45 +98,45 @@ const G = D("", {
109
98
  i
110
99
  );
111
100
  }) }) }),
112
- n.map((e, i) => {
101
+ s.map((e) => {
113
102
  var c;
114
- const l = v.has(i) || x, d = O.has(i);
103
+ const i = e.id, a = v.has(i) || y, d = L.has(i);
115
104
  return /* @__PURE__ */ m(
116
- ne,
105
+ Z,
117
106
  {
118
- className: o({
119
- "group hover:[&_td]:border-stroke-brand-hover": t
107
+ className: l({
108
+ "group hover:[&_td]:border-stroke-brand-hover": n
120
109
  }),
121
110
  children: [
122
111
  /* @__PURE__ */ m(
123
- H,
112
+ B,
124
113
  {
125
- expandablePosition: t && (v.has(i) || d) || x ? "top" : "none",
126
- className: o("focus-visible-default", {
127
- "cursor-pointer": t
114
+ expandablePosition: n && (v.has(i) || d) || y ? "top" : "none",
115
+ className: l("focus-visible-default", {
116
+ "cursor-pointer": n
128
117
  }),
129
- onClick: t ? () => M(i) : void 0,
130
- onKeyDown: t ? (r) => {
131
- (r.key === "Enter" || r.key === " ") && (r.preventDefault(), M(i));
118
+ onClick: n ? () => C(i) : void 0,
119
+ onKeyDown: n ? (r) => {
120
+ (r.key === "Enter" || r.key === " ") && (r.preventDefault(), C(i));
132
121
  } : void 0,
133
- tabIndex: t ? 0 : void 0,
134
- role: t ? "button" : void 0,
135
- "aria-expanded": t ? v.has(i) : void 0,
122
+ tabIndex: n ? 0 : void 0,
123
+ role: n ? "button" : void 0,
124
+ "aria-expanded": n ? v.has(i) : void 0,
136
125
  children: [
137
- a.map((r, h) => {
138
- const T = X(r.responsive) ? r.responsive : void 0, b = r.responsive === !1;
139
- return /* @__PURE__ */ s(
140
- P,
126
+ o.map((r, h) => {
127
+ const T = z(r.responsive) ? r.responsive : void 0, b = r.responsive === !1;
128
+ return /* @__PURE__ */ t(
129
+ M,
141
130
  {
142
- isFirst: h === W,
143
- isLast: h === q && !t,
144
- expandablePosition: (l || d) && z ? "top" : "none",
145
- className: o(
131
+ isFirst: h === P,
132
+ isLast: h === A && !n,
133
+ expandablePosition: (a || d) && V ? "top" : "none",
134
+ className: l(
146
135
  r.className,
147
- G({ responsive: T }),
136
+ j({ responsive: T }),
148
137
  b && "hidden"
149
138
  ),
150
- children: r.render ? r.render(e[r.dataKey], e) : /* @__PURE__ */ s(
139
+ children: r.render ? r.render(e[r.dataKey], e) : /* @__PURE__ */ t(
151
140
  g,
152
141
  {
153
142
  variant: "body",
@@ -161,17 +150,17 @@ const G = D("", {
161
150
  h
162
151
  );
163
152
  }),
164
- t && /* @__PURE__ */ s(
165
- P,
153
+ n && /* @__PURE__ */ t(
154
+ M,
166
155
  {
167
156
  className: "w-[68px]",
168
157
  isFirst: !1,
169
158
  isLast: !0,
170
159
  expandablePosition: v.has(i) || d ? "top" : "none",
171
- children: /* @__PURE__ */ s(
172
- de,
160
+ children: /* @__PURE__ */ t(
161
+ w,
173
162
  {
174
- className: o(
163
+ className: l(
175
164
  "text-text-brand-def transition-transform duration-300",
176
165
  {
177
166
  "rotate-180": v.has(i)
@@ -184,51 +173,51 @@ const G = D("", {
184
173
  ]
185
174
  }
186
175
  ),
187
- z && /* @__PURE__ */ s("tr", { "aria-hidden": !l, children: /* @__PURE__ */ s(
176
+ V && /* @__PURE__ */ t("tr", { "aria-hidden": !a, children: /* @__PURE__ */ t(
188
177
  "td",
189
178
  {
190
- colSpan: a.length + (t ? 1 : 0),
179
+ colSpan: o.length + (n ? 1 : 0),
191
180
  className: "border-0 p-0",
192
- children: /* @__PURE__ */ s(
181
+ children: /* @__PURE__ */ t(
193
182
  "div",
194
183
  {
195
- className: o(
184
+ className: l(
196
185
  "grid transition-[grid-template-rows] duration-300 ease-in-out",
197
- l ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
186
+ a ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
198
187
  ),
199
- children: /* @__PURE__ */ s("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ m(
188
+ children: /* @__PURE__ */ t("div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ m(
200
189
  "div",
201
190
  {
202
- className: o(
191
+ className: l(
203
192
  "rounded-b-xl border-x-1 border-b-1 border-stroke-base-secondary bg-surface-base-secondary transition-colors group-hover:border-stroke-brand-hover"
204
193
  ),
205
194
  children: [
206
- /* @__PURE__ */ s("div", { className: "mx-comp-table-p border-t-1 border-stroke-base-secondary" }),
195
+ /* @__PURE__ */ t("div", { className: "mx-comp-table-p border-t-1 border-stroke-base-secondary" }),
207
196
  /* @__PURE__ */ m(
208
197
  "div",
209
198
  {
210
- className: o(
199
+ className: l(
211
200
  "grid grid-cols-1 gap-2xl px-comp-table-p py-2xl md:grid-cols-[auto_1fr]",
212
201
  p == null ? void 0 : p.expandedContentGrid
213
202
  ),
214
203
  children: [
215
- j && /* @__PURE__ */ m(J, { children: [
216
- /* @__PURE__ */ s(
217
- A,
204
+ N && /* @__PURE__ */ m(G, { children: [
205
+ /* @__PURE__ */ t(
206
+ $,
218
207
  {
219
208
  gap: "md",
220
209
  direction: "column",
221
210
  className: "col-span-full",
222
- children: a.filter(
223
- (r) => r.moveToExpandable !== !1 && r.responsive !== void 0 && r.responsive !== "xs" && !C(r.responsive, u)
211
+ children: o.filter(
212
+ (r) => r.moveToExpandable !== !1 && r.responsive !== void 0 && r.responsive !== "xs" && !E(r.responsive, x)
224
213
  ).map((r, h) => /* @__PURE__ */ m(
225
- A,
214
+ $,
226
215
  {
227
216
  align: "center",
228
217
  justify: "between",
229
218
  direction: "row",
230
219
  children: [
231
- /* @__PURE__ */ s(
220
+ /* @__PURE__ */ t(
232
221
  g,
233
222
  {
234
223
  variant: "body",
@@ -239,7 +228,7 @@ const G = D("", {
239
228
  r.render ? r.render(
240
229
  e[r.dataKey],
241
230
  e
242
- ) : /* @__PURE__ */ s(
231
+ ) : /* @__PURE__ */ t(
243
232
  g,
244
233
  {
245
234
  variant: "body",
@@ -255,21 +244,21 @@ const G = D("", {
255
244
  ))
256
245
  }
257
246
  ),
258
- t && /* @__PURE__ */ s("hr", { className: "col-span-full text-stroke-base-secondary md:col-span-2" })
247
+ n && /* @__PURE__ */ t("hr", { className: "col-span-full text-stroke-base-secondary md:col-span-2" })
259
248
  ] }),
260
- (c = typeof t == "function" ? t(e) : t) == null ? void 0 : c.map((r, h) => {
261
- if (!t) return null;
262
- const T = typeof t == "function" ? t(e).length : t.length;
263
- return /* @__PURE__ */ m(Z, { children: [
249
+ (c = typeof n == "function" ? n(e) : n) == null ? void 0 : c.map((r, h) => {
250
+ if (!n) return null;
251
+ const T = typeof n == "function" ? n(e).length : n.length;
252
+ return /* @__PURE__ */ m(q, { children: [
264
253
  /* @__PURE__ */ m(
265
254
  "div",
266
255
  {
267
- className: o(
256
+ className: l(
268
257
  "col-span-full grid grid-cols-1 gap-y-xl md:col-span-2 md:grid-cols-subgrid",
269
258
  p == null ? void 0 : p.sectionTitle
270
259
  ),
271
260
  children: [
272
- r.title && /* @__PURE__ */ s(
261
+ r.title && /* @__PURE__ */ t(
273
262
  g,
274
263
  {
275
264
  variant: "body",
@@ -281,16 +270,16 @@ const G = D("", {
281
270
  children: r.title
282
271
  }
283
272
  ),
284
- /* @__PURE__ */ s(
273
+ /* @__PURE__ */ t(
285
274
  "div",
286
275
  {
287
- className: o(
276
+ className: l(
288
277
  "col-span-full grid grid-cols-1 gap-x-3xl md:col-span-2 md:grid-cols-subgrid md:gap-y-md",
289
278
  p == null ? void 0 : p.cellsWrap
290
279
  ),
291
280
  children: r.cells.flatMap(
292
281
  (b, k) => [
293
- /* @__PURE__ */ s(
282
+ /* @__PURE__ */ t(
294
283
  g,
295
284
  {
296
285
  component: "span",
@@ -300,7 +289,7 @@ const G = D("", {
300
289
  },
301
290
  `${k}-label`
302
291
  ),
303
- b.render ? /* @__PURE__ */ s(
292
+ b.render ? /* @__PURE__ */ t(
304
293
  "div",
305
294
  {
306
295
  className: "mb-md block last-of-type:mb-0 md:mb-0",
@@ -310,7 +299,7 @@ const G = D("", {
310
299
  )
311
300
  },
312
301
  `${k}-value`
313
- ) : /* @__PURE__ */ s(
302
+ ) : /* @__PURE__ */ t(
314
303
  g,
315
304
  {
316
305
  variant: "body",
@@ -328,7 +317,7 @@ const G = D("", {
328
317
  ]
329
318
  }
330
319
  ),
331
- h < T - 1 && /* @__PURE__ */ s("hr", { className: "col-span-full text-stroke-base-secondary md:col-span-2" })
320
+ h < T - 1 && /* @__PURE__ */ t("hr", { className: "col-span-full text-stroke-base-secondary md:col-span-2" })
332
321
  ] }, h);
333
322
  })
334
323
  ]
@@ -349,5 +338,5 @@ const G = D("", {
349
338
  ] });
350
339
  };
351
340
  export {
352
- ge as ExpandableTable
341
+ se as ExpandableTable
353
342
  };
@@ -1,7 +1,9 @@
1
1
  import { StoryObj } from '@storybook/react-vite';
2
2
  declare const meta: {
3
3
  title: string;
4
- component: <T>({ data, columns, expandableRowSections, classNames, }: import('./ExpandableTable').ExpandableTableProps<T>) => import("react/jsx-runtime").JSX.Element;
4
+ component: <T extends {
5
+ id: string | number;
6
+ }>({ data, columns, expandableRowSections, classNames, }: import('./ExpandableTable').ExpandableTableProps<T>) => import("react/jsx-runtime").JSX.Element;
5
7
  parameters: {
6
8
  layout: string;
7
9
  docs: {
@@ -25,6 +27,9 @@ declare const meta: {
25
27
  expandableRowSections: {
26
28
  control: "object";
27
29
  };
30
+ classNames: {
31
+ control: "object";
32
+ };
28
33
  };
29
34
  };
30
35
  export default meta;
@@ -1 +1 @@
1
- {"version":3,"file":"ExpandableTable.stories.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/ExpandableTable.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAO3D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B8B,CAAA;AAExC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AA+MlC,eAAO,MAAM,MAAM,EAAE,KAsBpB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAkB/B,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAwJjC,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAuBvB,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,KAyH1C,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KA0DhC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAoExB,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KA6EjC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KA2E/B,CAAA"}
1
+ {"version":3,"file":"ExpandableTable.stories.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/ExpandableTable.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAO3D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC8B,CAAA;AAExC,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAmNlC,eAAO,MAAM,MAAM,EAAE,KAsBpB,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAkB/B,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAwJjC,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,KAuBvB,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,KAyH1C,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KA0DhC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAoExB,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KA6EjC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KA2E/B,CAAA"}
@@ -1,2 +1,2 @@
1
- export { ExpandableTable, type ExpandableTableProps, type IColumn, type IExpandableTableRowCell, type IExpandableTableRowSection, } from './ExpandableTable';
1
+ export { ExpandableTable, type ExpandableTableProps, type IColumn, type IExpandableTableRowCell, type IExpandableTableRowSection, type ResponsiveBreakpoint, } from './ExpandableTable';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ExpandableTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAA"}