@astryxdesign/core 0.1.3 → 0.1.4-canary.02643db

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 (168) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/Button/Button.d.ts.map +1 -1
  3. package/dist/Button/Button.js +29 -8
  4. package/dist/Calendar/Calendar.d.ts.map +1 -1
  5. package/dist/Calendar/Calendar.js +49 -20
  6. package/dist/Calendar/dayCellUtils.d.ts +67 -5
  7. package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
  8. package/dist/Calendar/dayCellUtils.js +139 -18
  9. package/dist/CheckboxInput/CheckboxInput.d.ts +6 -1
  10. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  11. package/dist/CheckboxInput/CheckboxInput.js +7 -1
  12. package/dist/Code/Code.d.ts +15 -1
  13. package/dist/Code/Code.d.ts.map +1 -1
  14. package/dist/Code/Code.js +32 -2
  15. package/dist/Code/index.d.ts +1 -1
  16. package/dist/Code/index.d.ts.map +1 -1
  17. package/dist/CodeBlock/index.d.ts +1 -1
  18. package/dist/CodeBlock/index.d.ts.map +1 -1
  19. package/dist/CommandPalette/CommandPaletteEmpty.d.ts +1 -1
  20. package/dist/CommandPalette/CommandPaletteEmpty.d.ts.map +1 -1
  21. package/dist/CommandPalette/CommandPaletteEmpty.js +24 -4
  22. package/dist/ContextMenu/ContextMenu.d.ts +9 -1
  23. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  24. package/dist/ContextMenu/ContextMenu.js +6 -3
  25. package/dist/DateRangeInput/DateRangeInput.js +2 -2
  26. package/dist/DateTimeInput/DateTimeInput.d.ts +0 -5
  27. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  28. package/dist/Divider/Divider.d.ts +0 -22
  29. package/dist/Divider/Divider.d.ts.map +1 -1
  30. package/dist/Markdown/parser.d.ts +7 -0
  31. package/dist/Markdown/parser.d.ts.map +1 -1
  32. package/dist/Markdown/parser.js +300 -6
  33. package/dist/MultiSelector/MultiSelector.d.ts +7 -1
  34. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  35. package/dist/MultiSelector/MultiSelector.js +10 -1
  36. package/dist/RadioList/RadioList.d.ts +7 -1
  37. package/dist/RadioList/RadioList.d.ts.map +1 -1
  38. package/dist/RadioList/RadioList.js +3 -1
  39. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  40. package/dist/RadioList/RadioListItem.js +6 -1
  41. package/dist/Selector/Selector.d.ts +6 -0
  42. package/dist/Selector/Selector.d.ts.map +1 -1
  43. package/dist/Selector/Selector.js +9 -0
  44. package/dist/Slider/Slider.d.ts +6 -0
  45. package/dist/Slider/Slider.d.ts.map +1 -1
  46. package/dist/Slider/Slider.js +10 -1
  47. package/dist/Spinner/Spinner.d.ts.map +1 -1
  48. package/dist/Spinner/Spinner.js +1 -1
  49. package/dist/Switch/Switch.d.ts +6 -1
  50. package/dist/Switch/Switch.d.ts.map +1 -1
  51. package/dist/Switch/Switch.js +7 -1
  52. package/dist/Table/BaseTable.d.ts.map +1 -1
  53. package/dist/Table/BaseTable.js +8 -1
  54. package/dist/Table/TableCell.d.ts.map +1 -1
  55. package/dist/Table/TableCell.js +73 -4
  56. package/dist/Table/index.d.ts +2 -0
  57. package/dist/Table/index.d.ts.map +1 -1
  58. package/dist/Table/index.js +1 -0
  59. package/dist/Table/plugins/rowExpansion/index.d.ts +3 -0
  60. package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -0
  61. package/dist/Table/plugins/rowExpansion/index.js +3 -0
  62. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +90 -0
  63. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -0
  64. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +398 -0
  65. package/dist/Table/tableContextMenu.d.ts +5 -1
  66. package/dist/Table/tableContextMenu.d.ts.map +1 -1
  67. package/dist/Table/tableContextMenu.js +10 -3
  68. package/dist/Text/Text.d.ts +1 -1
  69. package/dist/Text/Text.d.ts.map +1 -1
  70. package/dist/Text/Text.js +4 -3
  71. package/dist/Text/text.stylex.d.ts +35 -0
  72. package/dist/Text/text.stylex.d.ts.map +1 -1
  73. package/dist/Text/text.stylex.js +52 -1
  74. package/dist/Tokenizer/Tokenizer.d.ts +6 -1
  75. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  76. package/dist/Tokenizer/Tokenizer.js +10 -1
  77. package/dist/astryx.css +16 -0
  78. package/dist/astryx.umd.js +51 -49
  79. package/dist/astryx.umd.js.map +4 -4
  80. package/dist/docs-types.d.ts +12 -0
  81. package/dist/docs-types.d.ts.map +1 -1
  82. package/package.json +1 -1
  83. package/src/AspectRatio/AspectRatio.doc.mjs +1 -1
  84. package/src/Avatar/Avatar.doc.mjs +2 -2
  85. package/src/Button/Button.tsx +39 -6
  86. package/src/ButtonGroup/ButtonGroup.doc.mjs +1 -1
  87. package/src/Calendar/Calendar.test.tsx +106 -0
  88. package/src/Calendar/Calendar.tsx +59 -22
  89. package/src/Calendar/dayCellUtils.test.ts +306 -1
  90. package/src/Calendar/dayCellUtils.ts +206 -13
  91. package/src/Card/Card.doc.mjs +1 -1
  92. package/src/Chat/useChatNewMessages.test.tsx +4 -4
  93. package/src/CheckboxInput/CheckboxInput.doc.mjs +9 -1
  94. package/src/CheckboxInput/CheckboxInput.test.tsx +36 -0
  95. package/src/CheckboxInput/CheckboxInput.tsx +11 -0
  96. package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
  97. package/src/Code/Code.test.tsx +54 -0
  98. package/src/Code/Code.tsx +48 -4
  99. package/src/Code/index.ts +1 -1
  100. package/src/CodeBlock/index.ts +1 -1
  101. package/src/CommandPalette/CommandPaletteEmpty.tsx +15 -1
  102. package/src/ContextMenu/ContextMenu.tsx +17 -1
  103. package/src/DateInput/DateInput.doc.mjs +6 -1
  104. package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
  105. package/src/DateRangeInput/DateRangeInput.tsx +2 -2
  106. package/src/DateTimeInput/DateTimeInput.doc.mjs +1 -1
  107. package/src/DateTimeInput/DateTimeInput.tsx +1 -6
  108. package/src/Divider/Divider.tsx +1 -23
  109. package/src/DropdownMenu/DropdownMenu.test.tsx +5 -3
  110. package/src/EmptyState/EmptyState.doc.mjs +1 -1
  111. package/src/Field/Field.doc.mjs +1 -1
  112. package/src/FileInput/FileInput.doc.mjs +1 -1
  113. package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -3
  114. package/src/Grid/Grid.doc.mjs +3 -3
  115. package/src/Layout/__tests__/edgeCompensation.test.tsx +72 -0
  116. package/src/Markdown/Markdown.test.tsx +23 -0
  117. package/src/Markdown/incremental.test.ts +36 -0
  118. package/src/Markdown/parser.test.ts +210 -0
  119. package/src/Markdown/parser.ts +301 -6
  120. package/src/MobileNav/MobileNav.doc.mjs +20 -0
  121. package/src/MultiSelector/MultiSelector.doc.mjs +14 -1
  122. package/src/MultiSelector/MultiSelector.test.tsx +33 -0
  123. package/src/MultiSelector/MultiSelector.tsx +20 -0
  124. package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
  125. package/src/RadioList/RadioList.doc.mjs +7 -1
  126. package/src/RadioList/RadioList.test.tsx +46 -0
  127. package/src/RadioList/RadioList.tsx +10 -1
  128. package/src/RadioList/RadioListItem.tsx +4 -0
  129. package/src/Section/Section.test.tsx +4 -10
  130. package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
  131. package/src/Selector/Selector.doc.mjs +12 -1
  132. package/src/Selector/Selector.test.tsx +30 -0
  133. package/src/Selector/Selector.tsx +18 -0
  134. package/src/Slider/Slider.doc.mjs +14 -2
  135. package/src/Slider/Slider.test.tsx +30 -0
  136. package/src/Slider/Slider.tsx +20 -0
  137. package/src/Spinner/Spinner.tsx +1 -0
  138. package/src/Switch/Switch.doc.mjs +14 -2
  139. package/src/Switch/Switch.test.tsx +38 -0
  140. package/src/Switch/Switch.tsx +12 -0
  141. package/src/TabList/TabList.doc.mjs +3 -3
  142. package/src/Table/BaseTable.tsx +9 -1
  143. package/src/Table/Table.test.tsx +23 -0
  144. package/src/Table/TableCell.tsx +87 -8
  145. package/src/Table/index.ts +5 -0
  146. package/src/Table/plugins/rowExpansion/index.ts +7 -0
  147. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +155 -0
  148. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +590 -0
  149. package/src/Table/tableContextMenu.test.tsx +27 -3
  150. package/src/Table/tableContextMenu.tsx +20 -2
  151. package/src/Table/useTablePagination.doc.mjs +4 -1
  152. package/src/Table/useTableRowExpansion.doc.mjs +80 -0
  153. package/src/Table/useTableSortable.doc.mjs +4 -1
  154. package/src/Text/Text.doc.mjs +2 -2
  155. package/src/Text/Text.test.tsx +11 -0
  156. package/src/Text/Text.tsx +4 -2
  157. package/src/Text/text.stylex.ts +41 -0
  158. package/src/TextArea/TextArea.doc.mjs +1 -1
  159. package/src/TextInput/TextInput.doc.mjs +1 -1
  160. package/src/TimeInput/TimeInput.doc.mjs +11 -6
  161. package/src/Tokenizer/Tokenizer.doc.mjs +14 -2
  162. package/src/Tokenizer/Tokenizer.test.tsx +33 -0
  163. package/src/Tokenizer/Tokenizer.tsx +19 -0
  164. package/src/Toolbar/Toolbar.test.tsx +1 -1
  165. package/src/Typeahead/BaseTypeahead.doc.mjs +10 -0
  166. package/src/Typeahead/Typeahead.doc.mjs +6 -1
  167. package/src/docs-types.ts +12 -0
  168. package/src/hooks/useKeyboardHint.doc.mjs +6 -6
@@ -0,0 +1,398 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useTableRowExpansion.tsx
7
+ * @input React, StyleX, Icon, Table types
8
+ * @output Exports useTableRowExpansion hook + config/state types
9
+ * @position Row-expansion plugin; consumed by Table via plugins prop
10
+ *
11
+ * SYNC: When modified, update these files to stay in sync:
12
+ * - /packages/core/src/Table/index.ts (exports)
13
+ */
14
+ import { useCallback, useMemo, useRef } from 'react';
15
+ import * as stylex from '@stylexjs/stylex';
16
+ import "../../../theme/tokens.stylex.js";
17
+ import { spacingVars, colorVars, radiusVars } from "../../../theme/tokens.stylex.js";
18
+ import { Icon } from "../../../Icon/index.js";
19
+ import { resolveContextActions } from "../../tableContextMenu.js";
20
+
21
+ // =============================================================================
22
+ // Config
23
+ // =============================================================================
24
+
25
+ /**
26
+ * Configuration for useTableRowExpansion (inherited-columns mode).
27
+ *
28
+ * Child rows use the same columns as their parents, with indentation on the
29
+ * first content column. The consumer provides a **flat** data array (use
30
+ * {@link useTableRowExpansionState} to flatten a tree) and a `getDepth`
31
+ * function so the plugin knows each row's nesting level.
32
+ */
33
+
34
+ /**
35
+ * Configuration for {@link useTableRowExpansionState}.
36
+ *
37
+ * Mirrors the shape of {@link useTableSelectionState}: you own the
38
+ * `expandedKeys` set (via `useState`), and the hook derives everything the
39
+ * plugin needs — the flattened `data`, per-row depth, expand/collapse
40
+ * handlers, and the expand-all toggle state.
41
+ */
42
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
43
+ /**
44
+ * Manages row-expansion state and derives the config for
45
+ * {@link useTableRowExpansion}. This is the recommended entry point — it
46
+ * removes the boilerplate of flattening the tree, tracking depth, and
47
+ * computing the expand-all state.
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
52
+ * const {data, expansionConfig} = useTableRowExpansionState({
53
+ * baseData: tree,
54
+ * getChildren: item => item.children ?? [],
55
+ * getRowKey: item => item.id,
56
+ * expandedKeys,
57
+ * setExpandedKeys,
58
+ * });
59
+ * const expansion = useTableRowExpansion(expansionConfig);
60
+ * <Table data={data} columns={columns} idKey="id" plugins={{expansion}} />;
61
+ * ```
62
+ */
63
+ export function useTableRowExpansionState({
64
+ baseData,
65
+ getChildren,
66
+ getRowKey,
67
+ getIsItemExpandable,
68
+ expandedKeys,
69
+ setExpandedKeys
70
+ }) {
71
+ const isExpandable = useCallback(item => getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0, [getIsItemExpandable, getChildren]);
72
+ const depthMap = useMemo(() => {
73
+ const map = new Map();
74
+ function walk(items, depth) {
75
+ for (const item of items) {
76
+ const key = getRowKey(item);
77
+ map.set(key, depth);
78
+ if (expandedKeys.has(key)) {
79
+ walk(getChildren(item), depth + 1);
80
+ }
81
+ }
82
+ }
83
+ walk(baseData, 0);
84
+ return map;
85
+ }, [baseData, getChildren, getRowKey, expandedKeys]);
86
+ const data = useMemo(() => {
87
+ const result = [];
88
+ function walk(items) {
89
+ for (const item of items) {
90
+ result.push(item);
91
+ const key = getRowKey(item);
92
+ if (expandedKeys.has(key)) {
93
+ walk(getChildren(item));
94
+ }
95
+ }
96
+ }
97
+ walk(baseData);
98
+ return result;
99
+ }, [baseData, getChildren, getRowKey, expandedKeys]);
100
+
101
+ // Every expandable key across the whole tree (drives expand-all).
102
+ const allExpandableKeys = useMemo(() => {
103
+ const keys = [];
104
+ function walk(items) {
105
+ for (const item of items) {
106
+ if (isExpandable(item)) {
107
+ keys.push(getRowKey(item));
108
+ walk(getChildren(item));
109
+ }
110
+ }
111
+ }
112
+ walk(baseData);
113
+ return keys;
114
+ }, [baseData, getChildren, getRowKey, isExpandable]);
115
+ const getDepth = useCallback(item => depthMap.get(getRowKey(item)) ?? 0, [depthMap, getRowKey]);
116
+ const onToggle = useCallback(key => {
117
+ setExpandedKeys(prev => {
118
+ const next = new Set(prev);
119
+ if (next.has(key)) {
120
+ next.delete(key);
121
+ } else {
122
+ next.add(key);
123
+ }
124
+ return next;
125
+ });
126
+ }, [setExpandedKeys]);
127
+ const isAllExpanded = useMemo(() => {
128
+ if (allExpandableKeys.length === 0) {
129
+ return false;
130
+ }
131
+ const expandedCount = allExpandableKeys.filter(k => expandedKeys.has(k)).length;
132
+ if (expandedCount === 0) {
133
+ return false;
134
+ }
135
+ if (expandedCount === allExpandableKeys.length) {
136
+ return true;
137
+ }
138
+ return 'indeterminate';
139
+ }, [allExpandableKeys, expandedKeys]);
140
+ const onToggleExpandAll = useCallback(expand => {
141
+ setExpandedKeys(expand ? new Set(allExpandableKeys) : new Set());
142
+ }, [setExpandedKeys, allExpandableKeys]);
143
+ const expansionConfig = useMemo(() => ({
144
+ expandedKeys,
145
+ onToggle,
146
+ getRowKey,
147
+ getChildren,
148
+ getDepth,
149
+ getIsItemExpandable,
150
+ isAllExpanded,
151
+ onToggleExpandAll
152
+ }), [expandedKeys, onToggle, getRowKey, getChildren, getDepth, getIsItemExpandable, isAllExpanded, onToggleExpandAll]);
153
+ return {
154
+ data,
155
+ expansionConfig
156
+ };
157
+ }
158
+
159
+ // =============================================================================
160
+ // Styles
161
+ // =============================================================================
162
+
163
+ const EXPANSION_COLUMN_WIDTH = {
164
+ type: 'pixel',
165
+ value: 40
166
+ };
167
+
168
+ /** Indentation applied per depth level, in pixels. */
169
+ const INDENT_PER_DEPTH = 24;
170
+ const _temp = {
171
+ kZCmMZ: "xnvo3vl",
172
+ "$$css": true
173
+ };
174
+ const expansionStyles = {
175
+ indentedCell: {
176
+ k1xSpc: "x78zum5",
177
+ kGNEyG: "x6s0dn4",
178
+ kOIVth: "xzye2dw",
179
+ $$css: true
180
+ },
181
+ indent: px => [_temp, {
182
+ "--x-paddingInlineStart": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(`${px}px`)
183
+ }],
184
+ clickableRow: {
185
+ kkrTdU: "x1ypdohk",
186
+ $$css: true
187
+ }
188
+ };
189
+
190
+ // =============================================================================
191
+ // Chevron
192
+ // =============================================================================
193
+
194
+ function ExpansionChevron({
195
+ isExpanded,
196
+ onToggle,
197
+ ariaLabel
198
+ }) {
199
+ return /*#__PURE__*/_jsx("button", {
200
+ type: "button",
201
+ ...{
202
+ className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
203
+ },
204
+ onClick: e => {
205
+ e.stopPropagation();
206
+ onToggle();
207
+ },
208
+ "aria-label": ariaLabel,
209
+ "aria-expanded": isExpanded,
210
+ children: /*#__PURE__*/_jsx("span", {
211
+ ...{
212
+ 0: {
213
+ className: "x3nfvp2 x11xpdln xx6bhzk"
214
+ },
215
+ 1: {
216
+ className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
217
+ }
218
+ }[!!isExpanded << 0],
219
+ children: /*#__PURE__*/_jsx(Icon, {
220
+ icon: "chevronRight",
221
+ size: "xsm"
222
+ })
223
+ })
224
+ });
225
+ }
226
+
227
+ // =============================================================================
228
+ // Hook
229
+ // =============================================================================
230
+
231
+ export function useTableRowExpansion(config) {
232
+ const {
233
+ expandedKeys,
234
+ onToggle,
235
+ getRowKey,
236
+ getChildren,
237
+ getDepth,
238
+ getIsItemExpandable,
239
+ hasRowClickExpansion = false,
240
+ isAllExpanded,
241
+ onToggleExpandAll
242
+ } = config;
243
+
244
+ // Track the first non-plugin column key for indentation.
245
+ const firstUserColumnKeyRef = useRef(null);
246
+ const expansionColumn = useMemo(() => ({
247
+ key: '__expansion',
248
+ header: '',
249
+ width: EXPANSION_COLUMN_WIDTH,
250
+ resizable: false,
251
+ renderCell: item => {
252
+ // Child rows (depth > 0) show their chevron inline in the first user
253
+ // column instead — don't double up here.
254
+ const depth = getDepth ? getDepth(item) : 0;
255
+ if (depth > 0) {
256
+ return null;
257
+ }
258
+ const key = getRowKey(item);
259
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
260
+ if (!expandable) {
261
+ return null;
262
+ }
263
+ const isExpanded = expandedKeys.has(key);
264
+ return /*#__PURE__*/_jsx(ExpansionChevron, {
265
+ isExpanded: isExpanded,
266
+ onToggle: () => onToggle(key),
267
+ ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
268
+ });
269
+ }
270
+ }), [expandedKeys, onToggle, getRowKey, getChildren, getIsItemExpandable, getDepth]);
271
+ return useMemo(() => ({
272
+ transformColumns(columns) {
273
+ // Track the first user column for indentation.
274
+ const firstUserCol = columns.find(c => !c.key.startsWith('__'));
275
+ firstUserColumnKeyRef.current = firstUserCol?.key ?? null;
276
+
277
+ // Wrap the first user column's renderCell to add depth indentation +
278
+ // an inline chevron for child rows. This is the inherited-columns
279
+ // pattern: child rows use the same columns but indent their first
280
+ // content cell.
281
+ const wrappedColumns = columns.map(col => {
282
+ if (col.key !== firstUserColumnKeyRef.current) {
283
+ return col;
284
+ }
285
+ const originalRenderCell = col.renderCell;
286
+ return {
287
+ ...col,
288
+ renderCell: item => {
289
+ const depth = getDepth ? getDepth(item) : 0;
290
+ const originalContent = originalRenderCell ? originalRenderCell(item) : String(item[col.key] ?? '');
291
+ if (depth === 0) {
292
+ return originalContent;
293
+ }
294
+ const indent = (depth - 1) * INDENT_PER_DEPTH;
295
+ const key = getRowKey(item);
296
+ const isExpanded = expandedKeys.has(key);
297
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
298
+ const chevron = expandable ? /*#__PURE__*/_jsx(ExpansionChevron, {
299
+ isExpanded: isExpanded,
300
+ onToggle: () => onToggle(key),
301
+ ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
302
+ }) : /*#__PURE__*/_jsx("span", {
303
+ ...{
304
+ className: "x1rg5ohu xvy4d1p xxk0z11 x2lah0s"
305
+ }
306
+ });
307
+ return /*#__PURE__*/_jsxs("div", {
308
+ ...stylex.props(expansionStyles.indentedCell, indent > 0 && expansionStyles.indent(indent)),
309
+ children: [chevron, originalContent]
310
+ });
311
+ }
312
+ };
313
+ });
314
+ return [expansionColumn, ...wrappedColumns];
315
+ },
316
+ transformHeaderCell(props, column) {
317
+ if (column.key !== '__expansion') {
318
+ return props;
319
+ }
320
+
321
+ // Show expand-all toggle when the consumer provides the state + callback.
322
+ if (isAllExpanded !== undefined && onToggleExpandAll) {
323
+ const allExpanded = isAllExpanded === true;
324
+ return {
325
+ ...props,
326
+ content: /*#__PURE__*/_jsx("button", {
327
+ type: "button",
328
+ ...{
329
+ className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
330
+ },
331
+ onClick: () => onToggleExpandAll(!allExpanded),
332
+ "aria-label": allExpanded ? 'Collapse all rows' : 'Expand all rows',
333
+ children: /*#__PURE__*/_jsx("span", {
334
+ ...{
335
+ 0: {
336
+ className: "x3nfvp2 x11xpdln xx6bhzk"
337
+ },
338
+ 1: {
339
+ className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
340
+ }
341
+ }[!!allExpanded << 0],
342
+ children: /*#__PURE__*/_jsx(Icon, {
343
+ icon: "chevronRight",
344
+ size: "xsm"
345
+ })
346
+ })
347
+ })
348
+ };
349
+ }
350
+ return {
351
+ ...props,
352
+ content: null
353
+ };
354
+ },
355
+ transformBodyCell(props, column, item) {
356
+ // Contribute "Expand/Collapse row" context-menu action on every cell
357
+ // so right-clicking anywhere in the row shows the option.
358
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
359
+ if (!expandable) {
360
+ return props;
361
+ }
362
+ const key = getRowKey(item);
363
+ const isExpanded = expandedKeys.has(key);
364
+ return {
365
+ ...props,
366
+ contextMenuActions: () => [...resolveContextActions(props.contextMenuActions), {
367
+ id: 'row-expansion-toggle',
368
+ group: 'row-expansion',
369
+ label: isExpanded ? 'Collapse row' : 'Expand row',
370
+ icon: /*#__PURE__*/_jsx(Icon, {
371
+ icon: isExpanded ? 'chevronDown' : 'chevronRight',
372
+ size: "xsm",
373
+ "aria-hidden": true
374
+ }),
375
+ onSelect: () => onToggle(key)
376
+ }]
377
+ };
378
+ },
379
+ transformBodyRow(props, item) {
380
+ if (!hasRowClickExpansion) {
381
+ return props;
382
+ }
383
+ const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
384
+ if (!expandable) {
385
+ return props;
386
+ }
387
+ const key = getRowKey(item);
388
+ return {
389
+ ...props,
390
+ htmlProps: {
391
+ ...props.htmlProps,
392
+ onClick: () => onToggle(key)
393
+ },
394
+ styles: [...props.styles, expansionStyles.clickableRow]
395
+ };
396
+ }
397
+ }), [expandedKeys, getRowKey, onToggle, getChildren, getDepth, getIsItemExpandable, hasRowClickExpansion, isAllExpanded, onToggleExpandAll, expansionColumn]);
398
+ }
@@ -9,6 +9,7 @@
9
9
  * - /packages/core/src/Table/types.ts (TableContextAction)
10
10
  */
11
11
  import { type ReactNode } from 'react';
12
+ import type { StyleXStyles } from '../theme/types';
12
13
  import type { TableContextAction, TableContextActions } from './types';
13
14
  /**
14
15
  * Resolve a `contextMenuActions` value (array or getter) to a plain array.
@@ -28,6 +29,9 @@ export declare function resolveContextActions(actions: TableContextActions | und
28
29
  * context menu rendering the aggregated `actions`. Accepts a static array or a
29
30
  * getter (resolved lazily on open). When there are no actions the element is
30
31
  * returned untouched so the native browser menu passes through.
32
+ *
33
+ * `triggerXstyle` styles the right-click target wrapper. Cells pass a fill +
34
+ * padding style so the entire cell (padding included) opens the menu.
31
35
  */
32
- export declare function wrapInTableContextMenu(element: ReactNode, actions: TableContextActions | undefined): ReactNode;
36
+ export declare function wrapInTableContextMenu(element: ReactNode, actions: TableContextActions | undefined, triggerXstyle?: StyleXStyles | StyleXStyles[]): ReactNode;
33
37
  //# sourceMappingURL=tableContextMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableContextMenu.d.ts","sourceRoot":"","sources":["../../src/Table/tableContextMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/C,OAAO,KAAK,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,kBAAkB,EAAE,CAKtB;AAgFD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,SAAS,CAaX"}
1
+ {"version":3,"file":"tableContextMenu.d.ts","sourceRoot":"","sources":["../../src/Table/tableContextMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,kBAAkB,EAAE,CAKtB;AAmFD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,aAAa,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,GAC5C,SAAS,CAuBX"}
@@ -93,11 +93,13 @@ function toContextMenuOptions(actions) {
93
93
  */
94
94
  function LazyTableContextMenu({
95
95
  element,
96
- getActions
96
+ getActions,
97
+ triggerXstyle
97
98
  }) {
98
99
  const [options, setOptions] = useState(null);
99
100
  return /*#__PURE__*/_jsx(ContextMenu, {
100
101
  items: options ?? [],
102
+ triggerXstyle: triggerXstyle,
101
103
  onOpenChange: open => {
102
104
  // Resolve actions when opening; clear on close so state derived later
103
105
  // (e.g. current sort direction) is always fresh next open.
@@ -112,13 +114,17 @@ function LazyTableContextMenu({
112
114
  * context menu rendering the aggregated `actions`. Accepts a static array or a
113
115
  * getter (resolved lazily on open). When there are no actions the element is
114
116
  * returned untouched so the native browser menu passes through.
117
+ *
118
+ * `triggerXstyle` styles the right-click target wrapper. Cells pass a fill +
119
+ * padding style so the entire cell (padding included) opens the menu.
115
120
  */
116
- export function wrapInTableContextMenu(element, actions) {
121
+ export function wrapInTableContextMenu(element, actions, triggerXstyle) {
117
122
  // Getter form → resolve lazily on open.
118
123
  if (typeof actions === 'function') {
119
124
  return /*#__PURE__*/_jsx(LazyTableContextMenu, {
120
125
  element: element,
121
- getActions: actions
126
+ getActions: actions,
127
+ triggerXstyle: triggerXstyle
122
128
  });
123
129
  }
124
130
  if (!actions || actions.length === 0) {
@@ -128,6 +134,7 @@ export function wrapInTableContextMenu(element, actions) {
128
134
  // when the user arrow-keys into the menu.
129
135
  return /*#__PURE__*/_jsx(ContextMenu, {
130
136
  items: toContextMenuOptions(actions),
137
+ triggerXstyle: triggerXstyle,
131
138
  children: element
132
139
  });
133
140
  }
@@ -119,7 +119,7 @@ export interface TextProps extends Omit<BaseProps, 'children'> {
119
119
  * <Text type="body" maxLines={2}>Clamped text</Text>
120
120
  * ```
121
121
  */
122
- export declare function Text({ type, size: _size, color, weight, display, maxLines, hasTruncateTooltip, wordBreak, textWrap, justify, hasCapsize, hasStrikethrough, hasTabularNumbers, xstyle, className, style, as: Component, children, ref, ...props }: TextProps): import("react").JSX.Element;
122
+ export declare function Text({ type, size, color, weight, display, maxLines, hasTruncateTooltip, wordBreak, textWrap, justify, hasCapsize, hasStrikethrough, hasTabularNumbers, xstyle, className, style, as: Component, children, ref, ...props }: TextProps): import("react").JSX.Element;
123
123
  export declare namespace Text {
124
124
  var displayName: string;
125
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/Text/Text.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,QAAQ,EAER,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AAE7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,YAAY,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC;AAEjC,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1D;AA2BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAa,EACb,IAAI,EAAE,KAAK,EACX,KAAK,EACL,MAAM,EACN,OAAkB,EAClB,QAAY,EACZ,kBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,OAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,iBAAyB,EACzB,MAAM,EACN,SAAS,EACT,KAAK,EACL,EAAE,EAAE,SAAkB,EACtB,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BAkFX;yBAvGe,IAAI"}
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/Text/Text.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,QAAQ,EAER,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AAE7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,YAAY,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC;AAEjC,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1D;AA2BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAa,EACb,IAAI,EACJ,KAAK,EACL,MAAM,EACN,OAAkB,EAClB,QAAY,EACZ,kBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,OAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,iBAAyB,EACzB,MAAM,EACN,SAAS,EACT,KAAK,EACL,EAAE,EAAE,SAAkB,EACtB,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BAmFX;yBAxGe,IAAI"}
package/dist/Text/Text.js CHANGED
@@ -17,7 +17,7 @@
17
17
  */
18
18
  import { lazy, Suspense, useRef } from 'react';
19
19
  import * as stylex from '@stylexjs/stylex';
20
- import { colorStyles, defaultWeightByTypeStyles, sizeByTypeStyles, weightStyles, displayStyles, justifyStyles, truncationStyles, wordBreakStyles, textWrapStyles, capsizeStyles, decorationStyles, tabularNumbersStyle, truncationTooltipStyles } from "./text.stylex.js";
20
+ import { colorStyles, defaultWeightByTypeStyles, sizeStyles, sizeByTypeStyles, weightStyles, displayStyles, justifyStyles, truncationStyles, wordBreakStyles, textWrapStyles, capsizeStyles, decorationStyles, tabularNumbersStyle, truncationTooltipStyles } from "./text.stylex.js";
21
21
  import { useTruncation } from "./useTruncation.js";
22
22
  import { mergeProps, mergeRefs } from "../utils/index.js";
23
23
  import { themeProps } from "../utils/themeProps.js";
@@ -67,7 +67,7 @@ function resolveStyleType(type) {
67
67
  */
68
68
  export function Text({
69
69
  type = 'body',
70
- size: _size,
70
+ size,
71
71
  color,
72
72
  weight,
73
73
  display = 'inline',
@@ -120,8 +120,9 @@ export function Text({
120
120
  ref: mergeRefs(ref, truncation.ref, textRef),
121
121
  ...mergeProps(themeProps('text', {
122
122
  type,
123
+ size,
123
124
  color: resolvedColor
124
- }), stylex.props(colorStyles[resolvedColor], sizeByTypeStyles[styleType], defaultWeightByTypeStyles[styleType], weight && weightStyles[weight],
125
+ }), stylex.props(colorStyles[resolvedColor], sizeByTypeStyles[styleType], size && sizeStyles[size], defaultWeightByTypeStyles[styleType], weight && weightStyles[weight],
125
126
  // Display: use truncation styles when maxLines > 0
126
127
  maxLines === 1 ? truncationStyles.singleLine : maxLines > 1 ? truncationStyles.multiLine : displayStyles[resolvedDisplay],
127
128
  // Word break when truncating
@@ -110,6 +110,41 @@ export declare const sizeByTypeStyles: Readonly<{
110
110
  readonly lineHeight: stylex.StyleXClassNameFor<"lineHeight", "inherit">;
111
111
  }>;
112
112
  }>;
113
+ export declare const sizeStyles: Readonly<{
114
+ readonly '4xs': Readonly<{
115
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.375rem">;
116
+ }>;
117
+ readonly '3xs': Readonly<{
118
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.4375rem">;
119
+ }>;
120
+ readonly '2xs': Readonly<{
121
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.5rem">;
122
+ }>;
123
+ readonly xsm: Readonly<{
124
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.625rem">;
125
+ }>;
126
+ readonly sm: Readonly<{
127
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.75rem">;
128
+ }>;
129
+ readonly base: Readonly<{
130
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.875rem">;
131
+ }>;
132
+ readonly lg: Readonly<{
133
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "1.0625rem">;
134
+ }>;
135
+ readonly xl: Readonly<{
136
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "1.25rem">;
137
+ }>;
138
+ readonly '2xl': Readonly<{
139
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "1.5rem">;
140
+ }>;
141
+ readonly '3xl': Readonly<{
142
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "1.8125rem">;
143
+ }>;
144
+ readonly '4xl': Readonly<{
145
+ readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "2.1875rem">;
146
+ }>;
147
+ }>;
113
148
  export declare const sizeByLevelStyles: Readonly<{
114
149
  readonly 1: Readonly<{
115
150
  readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "var(--font-size-2xl)">;
@@ -1 +1 @@
1
- {"version":3,"file":"text.stylex.d.ts","sourceRoot":"","sources":["../../src/Text/text.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAY3C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;EAmBtB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;EAavB,CAAC;AAMH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BpC,CAAC;AAWH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC3B,CAAC;AASH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;EAOxB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAe3B,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AAMH,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAazB,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;EAMxB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;EAI3B,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;EAUxB,CAAC;AAMH,eAAO,MAAM,uBAAuB;;;;;EAKlC,CAAC"}
1
+ {"version":3,"file":"text.stylex.d.ts","sourceRoot":"","sources":["../../src/Text/text.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAa3C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;EAmBtB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;EAavB,CAAC;AAMH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BpC,CAAC;AAWH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC3B,CAAC;AAMH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCrB,CAAC;AASH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;EAOxB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAe3B,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AAMH,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAazB,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;EAMxB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;EAI3B,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;EAUxB,CAAC;AAMH,eAAO,MAAM,uBAAuB;;;;;EAKlC,CAAC"}
@@ -12,7 +12,7 @@
12
12
 
13
13
  import * as stylex from '@stylexjs/stylex';
14
14
  import "../theme/tokens.stylex.js";
15
- import { colorVars, fontWeightVars, typeScaleVars, typographyVars } from "../theme/tokens.stylex.js";
15
+ import { colorVars, fontWeightVars, textSizeVars, typeScaleVars, typographyVars } from "../theme/tokens.stylex.js";
16
16
 
17
17
  // =============================================================================
18
18
  // Color Styles
@@ -169,6 +169,57 @@ export const sizeByTypeStyles = {
169
169
  }
170
170
  };
171
171
 
172
+ // =============================================================================
173
+ // Explicit Size Override
174
+ // =============================================================================
175
+
176
+ export const sizeStyles = {
177
+ "4xs": {
178
+ kGuDYH: "xxc45ev",
179
+ $$css: true
180
+ },
181
+ "3xs": {
182
+ kGuDYH: "x10p7juq",
183
+ $$css: true
184
+ },
185
+ "2xs": {
186
+ kGuDYH: "x16a80zy",
187
+ $$css: true
188
+ },
189
+ xsm: {
190
+ kGuDYH: "x51wmvv",
191
+ $$css: true
192
+ },
193
+ sm: {
194
+ kGuDYH: "x1eqnyfr",
195
+ $$css: true
196
+ },
197
+ base: {
198
+ kGuDYH: "x1j29vfg",
199
+ $$css: true
200
+ },
201
+ lg: {
202
+ kGuDYH: "xc7cgfe",
203
+ $$css: true
204
+ },
205
+ xl: {
206
+ kGuDYH: "x1wqms48",
207
+ $$css: true
208
+ },
209
+ "2xl": {
210
+ kGuDYH: "xhs0kqb",
211
+ $$css: true
212
+ },
213
+ "3xl": {
214
+ kGuDYH: "x10srzze",
215
+ $$css: true
216
+ },
217
+ "4xl": {
218
+ kGuDYH: "xqcvi3d",
219
+ $$css: true
220
+ }
221
+ };
222
+
172
223
  // =============================================================================
173
224
  // Baseline Size/Leading by Heading Level (from type-scale tokens)
174
225
  //
@@ -79,6 +79,11 @@ export interface TokenizerProps<T extends SearchableItem> extends Omit<BaseProps
79
79
  searchSource: SearchSource<T>;
80
80
  /** Currently selected items. */
81
81
  value: T[];
82
+ /**
83
+ * The HTML name attribute for form submissions. When set, hidden inputs
84
+ * carry one entry per selected item's id under this name.
85
+ */
86
+ htmlName?: string;
82
87
  /** Callback when selection changes. Includes change metadata. */
83
88
  onChange: (items: T[], change: TokenizerChange<T>) => void;
84
89
  /** Render function for dropdown items. Default: TypeaheadItem. */
@@ -189,7 +194,7 @@ export interface TokenizerProps<T extends SearchableItem> extends Omit<BaseProps
189
194
  * />
190
195
  * ```
191
196
  */
192
- export declare function Tokenizer<T extends SearchableItem>({ label, isLabelHidden, description, isRequired, isOptional, status, startIcon, labelTooltip, searchSource, value, onChange, renderItem, renderToken, maxEntries, placeholder, hasEntriesOnFocus, maxMenuItems, emptySearchResultsText, isDisabled, disabledMessage, hasClear, endContent, hasAutoFocus, size: sizeProp, tokenOverflowBehavior, debounceMs, hasCreate, onChangeQuery, onFocus, onBlur, width, xstyle, className, style, 'data-testid': testId, ref, handleRef, }: TokenizerProps<T>): React.JSX.Element;
197
+ export declare function Tokenizer<T extends SearchableItem>({ label, isLabelHidden, description, isRequired, isOptional, status, startIcon, labelTooltip, searchSource, value, onChange, renderItem, renderToken, maxEntries, placeholder, hasEntriesOnFocus, maxMenuItems, emptySearchResultsText, isDisabled, htmlName, disabledMessage, hasClear, endContent, hasAutoFocus, size: sizeProp, tokenOverflowBehavior, debounceMs, hasCreate, onChangeQuery, onFocus, onBlur, width, xstyle, className, style, 'data-testid': testId, ref, handleRef, }: TokenizerProps<T>): React.JSX.Element;
193
198
  export declare namespace Tokenizer {
194
199
  var displayName: string;
195
200
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer/Tokenizer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAGL,KAAK,WAAW,EAKjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAUtD,OAAO,KAAK,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAKrE,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,mBAAmB,GACvC,MAAM,UAAU,CAAC;AAMlB;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,cAAc,IAChD;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAC,GACtB;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC,GACzB;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC,GACzB;IAAC,IAAI,EAAE,SAAS,CAAA;CAAC,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GACjC,MAAM,GACN,iBAAiB,GACjB,gBAAgB,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,KAAK,IAAI,IAAI,CAAC;IACd,gCAAgC;IAChC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,IAAI,CACpE,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yBAAyB;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,gCAAgC;IAChC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,iEAAiE;IACjE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC3D,kEAAkE;IAClE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC;IACpC,iFAAiF;IACjF,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC;IAC3D,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gCAAgC;IAChC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,sDAAsD;IACtD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACvC,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,oDAAoD;IACpD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CACxC;AAwHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,cAAc,EAAE,EAClD,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,UAAkB,EAClB,eAAe,EACf,QAAgB,EAChB,UAAU,EACV,YAAY,EACZ,IAAI,EAAE,QAAQ,EACd,qBAA8B,EAC9B,UAAU,EACV,SAAiB,EACjB,aAAa,EACb,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,SAAS,GACV,EAAE,cAAc,CAAC,CAAC,CAAC,qBA0dnB;yBAhgBe,SAAS"}
1
+ {"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer/Tokenizer.tsx"],"names":[],"mappings":"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"}