@duro-app/ui 4.5.0 → 5.0.0

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 (235) hide show
  1. package/dist/{Table-CUp12BKZ.js → Table-BKN_d-mp.js} +512 -419
  2. package/dist/Table-BKN_d-mp.js.map +1 -0
  3. package/dist/components/ActionBar/ActionBar.stories.d.ts.map +1 -1
  4. package/dist/components/ActionBar/styles.css.d.ts +7 -7
  5. package/dist/components/ActionBar/styles.css.d.ts.map +1 -1
  6. package/dist/components/Alert/styles.css.d.ts +2 -2
  7. package/dist/components/Alert/styles.css.d.ts.map +1 -1
  8. package/dist/components/Badge/styles.css.d.ts +2 -2
  9. package/dist/components/Button/styles.css.d.ts +5 -5
  10. package/dist/components/Button/styles.css.d.ts.map +1 -1
  11. package/dist/components/Callout/styles.css.d.ts +1 -1
  12. package/dist/components/Callout/styles.css.d.ts.map +1 -1
  13. package/dist/components/Card/styles.css.d.ts +3 -3
  14. package/dist/components/Card/styles.css.d.ts.map +1 -1
  15. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  16. package/dist/components/Checkbox/styles.css.d.ts +7 -11
  17. package/dist/components/Checkbox/styles.css.d.ts.map +1 -1
  18. package/dist/components/Cluster/Cluster.stories.d.ts.map +1 -1
  19. package/dist/components/ColorInput/styles.css.d.ts +6 -6
  20. package/dist/components/ColorInput/styles.css.d.ts.map +1 -1
  21. package/dist/components/ColorMode/styles.css.d.ts +3 -3
  22. package/dist/components/ColorMode/styles.css.d.ts.map +1 -1
  23. package/dist/components/Combobox/styles.css.d.ts +3 -3
  24. package/dist/components/Combobox/styles.css.d.ts.map +1 -1
  25. package/dist/components/DetailPanel/DetailPanel.d.ts.map +1 -1
  26. package/dist/components/DetailPanel/DetailPanel.stories.d.ts.map +1 -1
  27. package/dist/components/DetailPanel/styles.css.d.ts +19 -10
  28. package/dist/components/DetailPanel/styles.css.d.ts.map +1 -1
  29. package/dist/components/Dialog/Dialog.d.ts.map +1 -1
  30. package/dist/components/Dialog/Dialog.stories.d.ts.map +1 -1
  31. package/dist/components/Dialog/styles.css.d.ts +18 -9
  32. package/dist/components/Dialog/styles.css.d.ts.map +1 -1
  33. package/dist/components/DragDrop/DragDrop.d.ts.map +1 -1
  34. package/dist/components/DragDrop/DragDrop.stories.d.ts.map +1 -1
  35. package/dist/components/DragDrop/styles.css.d.ts +0 -6
  36. package/dist/components/DragDrop/styles.css.d.ts.map +1 -1
  37. package/dist/components/Drawer/Drawer.d.ts.map +1 -1
  38. package/dist/components/Drawer/styles.css.d.ts +19 -10
  39. package/dist/components/Drawer/styles.css.d.ts.map +1 -1
  40. package/dist/components/Field/Field.stories.d.ts.map +1 -1
  41. package/dist/components/Field/styles.css.d.ts +1 -1
  42. package/dist/components/Field/styles.css.d.ts.map +1 -1
  43. package/dist/components/Form/Form.stories.d.ts.map +1 -1
  44. package/dist/components/Grid/Grid.d.ts +6 -4
  45. package/dist/components/Grid/Grid.d.ts.map +1 -1
  46. package/dist/components/Grid/Grid.stories.d.ts.map +1 -1
  47. package/dist/components/Grid/styles.css.d.ts +3 -3
  48. package/dist/components/Input/Input.stories.d.ts.map +1 -1
  49. package/dist/components/Input/styles.css.d.ts +3 -3
  50. package/dist/components/Input/styles.css.d.ts.map +1 -1
  51. package/dist/components/InputGroup/InputGroup.d.ts +4 -2
  52. package/dist/components/InputGroup/InputGroup.d.ts.map +1 -1
  53. package/dist/components/InputGroup/InputGroup.stories.d.ts.map +1 -1
  54. package/dist/components/InputGroup/styles.css.d.ts +3 -3
  55. package/dist/components/InputGroup/styles.css.d.ts.map +1 -1
  56. package/dist/components/LinkButton/styles.css.d.ts +1 -1
  57. package/dist/components/LinkButton/styles.css.d.ts.map +1 -1
  58. package/dist/components/List/List.stories.d.ts.map +1 -1
  59. package/dist/components/List/styles.css.d.ts +3 -3
  60. package/dist/components/List/styles.css.d.ts.map +1 -1
  61. package/dist/components/Menu/styles.css.d.ts +4 -4
  62. package/dist/components/Menu/styles.css.d.ts.map +1 -1
  63. package/dist/components/PageShell/styles.css.d.ts +3 -3
  64. package/dist/components/PageShell/styles.css.d.ts.map +1 -1
  65. package/dist/components/Panel/styles.css.d.ts +3 -3
  66. package/dist/components/Panel/styles.css.d.ts.map +1 -1
  67. package/dist/components/Popover/Popover.stories.d.ts.map +1 -1
  68. package/dist/components/Popover/styles.css.d.ts +2 -2
  69. package/dist/components/Popover/styles.css.d.ts.map +1 -1
  70. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  71. package/dist/components/RadioGroup/styles.css.d.ts +5 -9
  72. package/dist/components/RadioGroup/styles.css.d.ts.map +1 -1
  73. package/dist/components/ScrollArea/ScrollArea.d.ts +2 -1
  74. package/dist/components/ScrollArea/ScrollArea.d.ts.map +1 -1
  75. package/dist/components/ScrollArea/ScrollArea.stories.d.ts.map +1 -1
  76. package/dist/components/ScrollArea/styles.css.d.ts +8 -8
  77. package/dist/components/ScrollArea/styles.css.d.ts.map +1 -1
  78. package/dist/components/Select/styles.css.d.ts +4 -4
  79. package/dist/components/Select/styles.css.d.ts.map +1 -1
  80. package/dist/components/SideNav/styles.css.d.ts +7 -7
  81. package/dist/components/SideNav/styles.css.d.ts.map +1 -1
  82. package/dist/components/Spinner/Spinner.d.ts.map +1 -1
  83. package/dist/components/Spinner/styles.css.d.ts +10 -14
  84. package/dist/components/Spinner/styles.css.d.ts.map +1 -1
  85. package/dist/components/Switch/Switch.d.ts.map +1 -1
  86. package/dist/components/Switch/styles.css.d.ts +10 -14
  87. package/dist/components/Switch/styles.css.d.ts.map +1 -1
  88. package/dist/components/Table/ColumnFilter.d.ts.map +1 -1
  89. package/dist/components/Table/FromTanstack.d.ts +2 -1
  90. package/dist/components/Table/FromTanstack.d.ts.map +1 -1
  91. package/dist/components/Table/Pagination.d.ts.map +1 -1
  92. package/dist/components/Table/SortIndicator.d.ts.map +1 -1
  93. package/dist/components/Table/Table.d.ts +11 -9
  94. package/dist/components/Table/Table.d.ts.map +1 -1
  95. package/dist/components/Table/Table.stories.d.ts.map +1 -1
  96. package/dist/components/Table/styles.css.d.ts +6 -6
  97. package/dist/components/Table/styles.css.d.ts.map +1 -1
  98. package/dist/components/Tabs/styles.css.d.ts +8 -8
  99. package/dist/components/Tabs/styles.css.d.ts.map +1 -1
  100. package/dist/components/Tag/Tag.stories.d.ts.map +1 -1
  101. package/dist/components/Tag/styles.css.d.ts +4 -4
  102. package/dist/components/Tag/styles.css.d.ts.map +1 -1
  103. package/dist/components/TagGroup/TagGroup.d.ts.map +1 -1
  104. package/dist/components/TagGroup/styles.css.d.ts +4 -10
  105. package/dist/components/TagGroup/styles.css.d.ts.map +1 -1
  106. package/dist/components/Textarea/Textarea.stories.d.ts.map +1 -1
  107. package/dist/components/Textarea/styles.css.d.ts +3 -3
  108. package/dist/components/Textarea/styles.css.d.ts.map +1 -1
  109. package/dist/components/ThemeProvider/ThemeProvider.stories.d.ts.map +1 -1
  110. package/dist/components/Toast/Toast.stories.d.ts.map +1 -1
  111. package/dist/components/Toast/styles.css.d.ts +12 -12
  112. package/dist/components/Toast/styles.css.d.ts.map +1 -1
  113. package/dist/components/Toggle/styles.css.d.ts +8 -8
  114. package/dist/components/Toggle/styles.css.d.ts.map +1 -1
  115. package/dist/components/ToggleGroup/ToggleGroup.stories.d.ts.map +1 -1
  116. package/dist/components/ToggleGroup/styles.css.d.ts +1 -1
  117. package/dist/components/ToggleGroup/styles.css.d.ts.map +1 -1
  118. package/dist/components/Tooltip/styles.css.d.ts +1 -1
  119. package/dist/components/Tooltip/styles.css.d.ts.map +1 -1
  120. package/dist/components/Tree/styles.css.d.ts +4 -4
  121. package/dist/components/Tree/styles.css.d.ts.map +1 -1
  122. package/dist/components/VirtualTable/VirtualTable.d.ts +2 -1
  123. package/dist/components/VirtualTable/VirtualTable.d.ts.map +1 -1
  124. package/dist/components/VirtualTable/VirtualTable.stories.d.ts.map +1 -1
  125. package/dist/components/VirtualTable/styles.css.d.ts +7 -7
  126. package/dist/components/VirtualTable/styles.css.d.ts.map +1 -1
  127. package/dist/docs/Spacing.stories.d.ts.map +1 -1
  128. package/dist/docs/Typography.stories.d.ts.map +1 -1
  129. package/dist/docs/helpers.d.ts.map +1 -1
  130. package/dist/index.css +1 -1
  131. package/dist/index.js +2790 -2785
  132. package/dist/index.js.map +1 -1
  133. package/dist/shared/length.d.ts +24 -0
  134. package/dist/shared/length.d.ts.map +1 -0
  135. package/dist/shared/length.typecheck.d.ts +28 -0
  136. package/dist/shared/length.typecheck.d.ts.map +1 -0
  137. package/dist/styles/visually-hidden.css.d.ts +10 -0
  138. package/dist/styles/visually-hidden.css.d.ts.map +1 -0
  139. package/dist/table.js +166 -166
  140. package/dist/table.js.map +1 -1
  141. package/package.json +2 -2
  142. package/src/components/ActionBar/ActionBar.stories.tsx +4 -2
  143. package/src/components/ActionBar/styles.css.ts +11 -9
  144. package/src/components/Alert/styles.css.ts +4 -3
  145. package/src/components/Badge/styles.css.ts +3 -3
  146. package/src/components/Button/styles.css.ts +8 -7
  147. package/src/components/Callout/styles.css.ts +2 -1
  148. package/src/components/Card/styles.css.ts +4 -3
  149. package/src/components/Checkbox/Checkbox.tsx +2 -1
  150. package/src/components/Checkbox/styles.css.ts +10 -11
  151. package/src/components/Cluster/Cluster.stories.tsx +2 -1
  152. package/src/components/ColorInput/styles.css.ts +9 -7
  153. package/src/components/ColorMode/styles.css.ts +4 -3
  154. package/src/components/Combobox/styles.css.ts +5 -3
  155. package/src/components/DetailPanel/DetailPanel.stories.tsx +5 -3
  156. package/src/components/DetailPanel/DetailPanel.tsx +3 -0
  157. package/src/components/DetailPanel/styles.css.ts +17 -11
  158. package/src/components/Dialog/Dialog.stories.tsx +2 -1
  159. package/src/components/Dialog/Dialog.tsx +3 -0
  160. package/src/components/Dialog/styles.css.ts +14 -9
  161. package/src/components/DragDrop/DragDrop.stories.tsx +2 -1
  162. package/src/components/DragDrop/DragDrop.tsx +2 -1
  163. package/src/components/DragDrop/styles.css.ts +0 -7
  164. package/src/components/Drawer/Drawer.tsx +3 -0
  165. package/src/components/Drawer/DrawerScroll.stories.tsx +5 -5
  166. package/src/components/Drawer/styles.css.ts +15 -10
  167. package/src/components/Field/Field.stories.tsx +3 -2
  168. package/src/components/Field/styles.css.ts +2 -1
  169. package/src/components/Form/Form.stories.tsx +4 -3
  170. package/src/components/Grid/Grid.meta.ts +2 -2
  171. package/src/components/Grid/Grid.stories.tsx +3 -2
  172. package/src/components/Grid/Grid.tsx +8 -6
  173. package/src/components/Grid/styles.css.ts +2 -2
  174. package/src/components/Input/Input.stories.tsx +2 -1
  175. package/src/components/Input/styles.css.ts +4 -3
  176. package/src/components/InputGroup/InputGroup.stories.tsx +3 -2
  177. package/src/components/InputGroup/InputGroup.tsx +5 -3
  178. package/src/components/InputGroup/styles.css.ts +4 -3
  179. package/src/components/LinkButton/styles.css.ts +2 -1
  180. package/src/components/List/List.stories.tsx +4 -2
  181. package/src/components/List/styles.css.ts +6 -4
  182. package/src/components/Menu/styles.css.ts +6 -4
  183. package/src/components/PageShell/styles.css.ts +4 -3
  184. package/src/components/Panel/styles.css.ts +4 -3
  185. package/src/components/Popover/Popover.stories.tsx +6 -4
  186. package/src/components/Popover/styles.css.ts +3 -2
  187. package/src/components/RadioGroup/RadioGroup.tsx +2 -1
  188. package/src/components/RadioGroup/styles.css.ts +8 -9
  189. package/src/components/ScrollArea/ScrollArea.meta.ts +1 -1
  190. package/src/components/ScrollArea/ScrollArea.stories.tsx +7 -5
  191. package/src/components/ScrollArea/ScrollArea.tsx +7 -2
  192. package/src/components/ScrollArea/styles.css.ts +10 -9
  193. package/src/components/Select/styles.css.ts +6 -4
  194. package/src/components/SideNav/styles.css.ts +10 -8
  195. package/src/components/Spinner/Spinner.tsx +2 -1
  196. package/src/components/Spinner/styles.css.ts +14 -14
  197. package/src/components/Switch/Switch.tsx +2 -1
  198. package/src/components/Switch/styles.css.ts +15 -15
  199. package/src/components/Table/ColumnFilter.tsx +5 -4
  200. package/src/components/Table/FromTanstack.tsx +2 -1
  201. package/src/components/Table/Pagination.tsx +6 -4
  202. package/src/components/Table/SortIndicator.tsx +4 -2
  203. package/src/components/Table/Table.stories.tsx +8 -8
  204. package/src/components/Table/Table.tsx +19 -15
  205. package/src/components/Table/styles.css.ts +9 -7
  206. package/src/components/Tabs/styles.css.ts +11 -9
  207. package/src/components/Tag/Tag.stories.tsx +4 -2
  208. package/src/components/Tag/styles.css.ts +6 -5
  209. package/src/components/TagGroup/TagGroup.tsx +2 -1
  210. package/src/components/TagGroup/styles.css.ts +6 -10
  211. package/src/components/Textarea/Textarea.stories.tsx +2 -1
  212. package/src/components/Textarea/styles.css.ts +4 -3
  213. package/src/components/ThemeProvider/ThemeProvider.stories.tsx +7 -5
  214. package/src/components/Toast/Toast.stories.tsx +2 -1
  215. package/src/components/Toast/styles.css.ts +16 -14
  216. package/src/components/Toggle/Toggle.meta.ts +1 -1
  217. package/src/components/Toggle/styles.css.ts +12 -10
  218. package/src/components/ToggleGroup/ToggleGroup.meta.ts +1 -1
  219. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +7 -6
  220. package/src/components/ToggleGroup/styles.css.ts +7 -6
  221. package/src/components/Tooltip/styles.css.ts +2 -1
  222. package/src/components/Tree/styles.css.ts +8 -6
  223. package/src/components/VirtualTable/VirtualTable.stories.tsx +4 -3
  224. package/src/components/VirtualTable/VirtualTable.tsx +5 -3
  225. package/src/components/VirtualTable/styles.css.ts +9 -8
  226. package/src/docs/Spacing.stories.tsx +11 -10
  227. package/src/docs/Typography.stories.tsx +8 -6
  228. package/src/docs/helpers.tsx +3 -2
  229. package/src/shared/length.ts +51 -0
  230. package/src/shared/length.typecheck.tsx +47 -0
  231. package/src/styles/visually-hidden.css.ts +16 -0
  232. package/dist/Table-CUp12BKZ.js.map +0 -1
  233. package/dist/components/Toggle/rowHeight.d.ts +0 -17
  234. package/dist/components/Toggle/rowHeight.d.ts.map +0 -1
  235. package/src/components/Toggle/rowHeight.ts +0 -12
@@ -1,7 +1,8 @@
1
1
  import {css} from 'react-strict-dom'
2
2
  import {colors} from '@duro-app/tokens/tokens/colors.css'
3
- import {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'
3
+ import {microSpacing, radii, spacing} from '@duro-app/tokens/tokens/spacing.css'
4
4
  import {typography} from '@duro-app/tokens/tokens/typography.css'
5
+ import {borders} from '@duro-app/tokens/tokens/borders.css'
5
6
 
6
7
  export const styles = css.create({
7
8
  wrap: {
@@ -11,7 +12,7 @@ export const styles = css.create({
11
12
  scroll: {
12
13
  position: 'relative',
13
14
  width: '100%',
14
- borderWidth: 1,
15
+ borderWidth: borders.hairline,
15
16
  borderStyle: 'solid',
16
17
  borderColor: colors.border,
17
18
  borderRadius: radii.md,
@@ -32,7 +33,7 @@ export const styles = css.create({
32
33
  headRow: {
33
34
  display: 'flex',
34
35
  flexDirection: 'row',
35
- borderBottomWidth: 1,
36
+ borderBottomWidth: borders.hairline,
36
37
  borderBottomStyle: 'solid',
37
38
  borderBottomColor: colors.border,
38
39
  },
@@ -71,7 +72,7 @@ export const styles = css.create({
71
72
  flexDirection: 'row',
72
73
  alignItems: 'center',
73
74
  width: '100%',
74
- borderBottomWidth: 1,
75
+ borderBottomWidth: borders.hairline,
75
76
  borderBottomStyle: 'solid',
76
77
  borderBottomColor: colors.border,
77
78
  },
@@ -124,7 +125,7 @@ export const styles = css.create({
124
125
  gap: spacing.xs,
125
126
  width: '100%',
126
127
  padding: spacing.sm,
127
- borderWidth: 1,
128
+ borderWidth: borders.hairline,
128
129
  borderStyle: 'solid',
129
130
  borderColor: colors.border,
130
131
  borderRadius: radii.sm,
@@ -161,13 +162,13 @@ export const styles = css.create({
161
162
  position: 'absolute',
162
163
  right: spacing.sm,
163
164
  bottom: spacing.sm,
164
- paddingTop: 3,
165
- paddingBottom: 3,
165
+ paddingTop: microSpacing.px3,
166
+ paddingBottom: microSpacing.px3,
166
167
  paddingLeft: spacing.sm,
167
168
  paddingRight: spacing.sm,
168
169
  borderRadius: radii.full,
169
170
  backgroundColor: colors.bgCardHover,
170
- borderWidth: 1,
171
+ borderWidth: borders.hairline,
171
172
  borderStyle: 'solid',
172
173
  borderColor: colors.border,
173
174
  color: colors.textMuted,
@@ -7,6 +7,8 @@ import {Inline} from '../components/Inline/Inline'
7
7
  import {useContainerQuery} from '../hooks/useContainerQuery'
8
8
  import {TokenTable} from './helpers'
9
9
  import {typography, typeScale} from '@duro-app/tokens/tokens/typography.css'
10
+ import {borders} from '@duro-app/tokens/tokens/borders.css'
11
+ import {sizes} from '@duro-app/tokens/tokens/sizes.css'
10
12
 
11
13
  const primitiveTokens: Record<string, string> = {
12
14
  xs: '4px',
@@ -33,7 +35,7 @@ export default meta
33
35
 
34
36
  const styles = css.create({
35
37
  wrapper: {
36
- maxWidth: 640,
38
+ maxWidth: sizes.panelLg,
37
39
  },
38
40
  hint: {
39
41
  fontSize: typography.fontSizeXs,
@@ -41,10 +43,10 @@ const styles = css.create({
41
43
  fontStyle: 'italic',
42
44
  },
43
45
  baselineRow: {
44
- height: 24,
46
+ height: sizes.iconLg,
45
47
  display: 'flex',
46
48
  alignItems: 'center',
47
- borderBottomWidth: 1,
49
+ borderBottomWidth: borders.hairline,
48
50
  borderBottomStyle: 'dashed',
49
51
  borderBottomColor: colors.border,
50
52
  },
@@ -52,11 +54,10 @@ const styles = css.create({
52
54
  fontSize: typography.fontSizeXs,
53
55
  fontFamily: 'monospace',
54
56
  color: colors.textMuted,
55
- width: 50,
57
+ width: sizes.iconXxl,
56
58
  },
57
59
  baselineBlock: {
58
- flexGrow: 1,
59
- height: 24,
60
+ height: sizes.iconLg,
60
61
  backgroundColor: colors.accent,
61
62
  opacity: 0.15,
62
63
  borderRadius: radii.xs,
@@ -64,13 +65,13 @@ const styles = css.create({
64
65
  resizableContainer: {
65
66
  resize: 'horizontal',
66
67
  overflow: 'auto',
67
- borderWidth: 2,
68
+ borderWidth: borders.strong,
68
69
  borderStyle: 'dashed',
69
70
  borderColor: colors.border,
70
71
  padding: spacing.md,
71
- minWidth: 200,
72
+ minWidth: sizes.listMaxHSm,
72
73
  maxWidth: '100%',
73
- width: 600,
74
+ width: sizes.pageSm,
74
75
  },
75
76
  sizeLabel: {
76
77
  fontSize: typography.fontSizeHeading,
@@ -87,7 +88,7 @@ const styles = css.create({
87
88
  color: colors.successText,
88
89
  },
89
90
  mappingRow: {
90
- borderBottomWidth: 1,
91
+ borderBottomWidth: borders.hairline,
91
92
  borderBottomStyle: 'solid',
92
93
  borderBottomColor: colors.border,
93
94
  fontFamily: 'monospace',
@@ -8,6 +8,8 @@ import {Text} from '../components/Text/Text'
8
8
  import {Heading} from '../components/Heading/Heading'
9
9
  import {TypeScaleTable} from './helpers'
10
10
  import {typography} from '@duro-app/tokens/tokens/typography.css'
11
+ import {borders} from '@duro-app/tokens/tokens/borders.css'
12
+ import {sizes} from '@duro-app/tokens/tokens/sizes.css'
11
13
 
12
14
  const meta: Meta = {
13
15
  title: 'Foundations/Typography',
@@ -169,7 +171,7 @@ export const TextVariants: StoryObj = {
169
171
 
170
172
  const localStyles = css.create({
171
173
  wrapper: {
172
- maxWidth: 720,
174
+ maxWidth: sizes.dialogLg,
173
175
  },
174
176
  hint: {
175
177
  fontSize: typography.fontSizeXs,
@@ -187,8 +189,8 @@ const localStyles = css.create({
187
189
  position: 'relative',
188
190
  },
189
191
  gridLine: {
190
- height: 24,
191
- borderBottomWidth: 1,
192
+ height: sizes.iconLg,
193
+ borderBottomWidth: borders.hairline,
192
194
  borderBottomStyle: 'dashed',
193
195
  borderBottomColor: colors.border,
194
196
  },
@@ -201,12 +203,12 @@ const localStyles = css.create({
201
203
  resizableContainer: {
202
204
  resize: 'horizontal',
203
205
  overflow: 'auto',
204
- borderWidth: 2,
206
+ borderWidth: borders.strong,
205
207
  borderStyle: 'dashed',
206
208
  borderColor: colors.border,
207
209
  padding: spacing.md,
208
- minWidth: 280,
210
+ minWidth: sizes.gridColMd,
209
211
  maxWidth: '100%',
210
- width: 700,
212
+ width: sizes.dialogLg,
211
213
  },
212
214
  })
@@ -1,12 +1,13 @@
1
1
  import {css, html} from 'react-strict-dom'
2
2
  import {colors} from '@duro-app/tokens/tokens/colors.css'
3
- import {typography, typeScale} from '@duro-app/tokens/tokens/typography.css'
3
+ import {typography} from '@duro-app/tokens/tokens/typography.css'
4
4
  import {Table} from '../components/Table/Table'
5
5
  import {radii, spacing} from '@duro-app/tokens/tokens/spacing.css'
6
+ import {sizes} from '@duro-app/tokens/tokens/sizes.css'
6
7
 
7
8
  const styles = css.create({
8
9
  bar: {
9
- height: 12,
10
+ height: sizes.glyphSm,
10
11
  borderRadius: radii.xs,
11
12
  backgroundColor: colors.accent,
12
13
  },
@@ -0,0 +1,51 @@
1
+ import {sizes} from '@duro-app/tokens/tokens/sizes.css'
2
+ import {SIZE_KEYS, type SizeToken} from '@duro-app/tokens/keys'
3
+
4
+ /**
5
+ * A length a measure prop accepts without a token: zero, a relative unit or a
6
+ * keyword. These are the exemptions of design-system.every-measure-is-a-token
7
+ * (ADR-0027); a px value is not one of them.
8
+ */
9
+ export type RelativeLength =
10
+ | 0
11
+ | '0'
12
+ | 'auto'
13
+ | 'none'
14
+ | 'min-content'
15
+ | 'max-content'
16
+ | 'fit-content'
17
+ | `${number}%`
18
+ | `${number}vh`
19
+ | `${number}vw`
20
+ | `${number}dvh`
21
+ | `${number}svh`
22
+ | `${number}lvh`
23
+ | `${number}em`
24
+ | `${number}rem`
25
+ | `${number}ch`
26
+
27
+ /** A measure prop: a `sizes` token key (`"gridColMd"`) or a relative length. */
28
+ export type Length = SizeToken | RelativeLength
29
+
30
+ /**
31
+ * A CSS grid track: a Length, a fraction, or a track function. The arguments
32
+ * of `minmax()` / `fit-content()` are not checked by the type — pass tokens
33
+ * through `resolveLength` or `sizes.*` when building one.
34
+ *
35
+ * holds-until: a structured track type (`{min: Length, max: GridTrack}`)
36
+ * replaces the template-literal functions; a type cannot see inside
37
+ * `minmax(${string})`, so a px there is the one measure lint and types miss.
38
+ */
39
+ export type GridTrack = Length | `${number}fr` | `minmax(${string})` | `fit-content(${string})`
40
+
41
+ const sizeKeys: ReadonlySet<string> = new Set(SIZE_KEYS)
42
+
43
+ /** The CSS value for a Length: a size token key becomes its variable. */
44
+ export function resolveLength(value: Length): string | number {
45
+ return typeof value === 'string' && sizeKeys.has(value) ? sizes[value as SizeToken] : value
46
+ }
47
+
48
+ /** The CSS value for a GridTrack: a size token key becomes its variable. */
49
+ export function resolveTrack(track: GridTrack): string | number {
50
+ return typeof track === 'string' && sizeKeys.has(track) ? sizes[track as SizeToken] : track
51
+ }
@@ -0,0 +1,47 @@
1
+ // Compile-only fixtures for measure props (ADR-0027, plan 2c′). `pnpm typecheck`
2
+ // fails if a raw px becomes assignable to a measure prop, or if a token key or
3
+ // a relative length stops being. Never imported at runtime.
4
+
5
+ import type {Grid} from '../components/Grid/Grid'
6
+ import type {InputGroup} from '../components/InputGroup/InputGroup'
7
+ import type {ScrollArea} from '../components/ScrollArea/ScrollArea'
8
+ import type {Table} from '../components/Table/Table'
9
+ import type {VirtualTable} from '../components/VirtualTable/VirtualTable'
10
+ import type {GridTrack, Length} from './length'
11
+
12
+ /** `true` when every member of T is assignable to U. */
13
+ type Assignable<T, U> = [T] extends [U] ? true : false
14
+
15
+ /** The props a function component takes. */
16
+ type PropsOf<C> = C extends (props: infer P) => unknown ? P : never
17
+ type Prop<C, K extends keyof PropsOf<C>> = NonNullable<PropsOf<C>[K]>
18
+
19
+ // Accepted: token keys, zero, relative lengths, keywords.
20
+ export const lengthTokens: Assignable<'gridColMd' | 'touchTarget', Length> = true
21
+ export const lengthRelative: Assignable<0 | '0' | '100%' | '70vh' | '2rem' | 'auto', Length> = true
22
+ export const trackForms: Assignable<
23
+ 'iconButton' | '2fr' | 'max-content' | 'minmax(0, 2fr)',
24
+ GridTrack
25
+ > = true
26
+
27
+ // Refused: px as a string or a number.
28
+ export const lengthPxString: Assignable<'280px', Length> = false
29
+ export const lengthPxNumber: Assignable<44, Length> = false
30
+ export const trackPx: Assignable<'40px', GridTrack> = false
31
+
32
+ // The props themselves.
33
+ export const gridMin: Assignable<'280px', Prop<typeof Grid, 'minColumnWidth'>> = false
34
+ export const gridMinToken: Assignable<'gridColMd', Prop<typeof Grid, 'minColumnWidth'>> = true
35
+ export const addonMin: Assignable<80, Prop<typeof InputGroup.Addon, 'minWidth'>> = false
36
+ export const viewportMax: Assignable<300, Prop<typeof ScrollArea.Viewport, 'maxHeight'>> = false
37
+ export const viewportMaxToken: Assignable<
38
+ 'listMaxH',
39
+ Prop<typeof ScrollArea.Viewport, 'maxHeight'>
40
+ > = true
41
+ export const tableMin: Assignable<120, Prop<typeof Table.Root, 'minColumnWidth'>> = false
42
+ export const headerWidth: Assignable<'40px', Prop<typeof Table.HeaderCell, 'width'>> = false
43
+ export const headerWidthToken: Assignable<
44
+ 'iconButton',
45
+ Prop<typeof Table.HeaderCell, 'width'>
46
+ > = true
47
+ export const virtualMax: Assignable<300, Prop<typeof VirtualTable, 'maxHeight'>> = false
@@ -0,0 +1,16 @@
1
+ import {css} from 'react-strict-dom'
2
+
3
+ // The visually-hidden technique: a 1×1 box clipped by overflow, still in the
4
+ // accessibility tree and still focusable where the element is. The 1px is the
5
+ // technique, not a design measure, so this module is the one file the
6
+ // every-measure-is-a-token rule exempts (ADR-0027; `exemptFiles` in
7
+ // eslint.config.js). Components layer their own extras on top (`opacity: 0`
8
+ // for a native input, `clip` for a label).
9
+ export const visuallyHidden = css.create({
10
+ base: {
11
+ position: 'absolute',
12
+ width: 1,
13
+ height: 1,
14
+ overflow: 'hidden',
15
+ },
16
+ })
@@ -1 +0,0 @@
1
- {"version":3,"file":"Table-CUp12BKZ.js","sources":["../src/components/Menu/styles.css.ts","../src/components/Menu/MenuContext.ts","../src/components/Menu/useMenuRoot.ts","../src/shared/devWarnOnce.ts","../src/components/Menu/Menu.tsx","../../../node_modules/.pnpm/react-strict-dom@0.0.55_postcss@8.5.28_react-dom@19.2.4_react@19.2.4__react-native@0.84_0ade363cd0c4e49834b1d723f1f3430e/node_modules/react-strict-dom/dist/web/index.js","../../tokens/src/tokens/breakpoints.css.ts","../src/components/Table/styles.css.ts","../src/components/Table/Table.tsx"],"sourcesContent":["import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {shadows} from '@duro-app/tokens/tokens/shadows.css'\nimport {duration} from '@duro-app/tokens/tokens/motion.css'\n\nexport const styles = css.create({\n root: {\n position: 'relative',\n display: 'inline-flex',\n },\n trigger: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.sm,\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontFamily: typography.fontFamily,\n fontSize: typography.fontSizeSm,\n color: colors.text,\n backgroundColor: {\n default: 'transparent',\n ':hover': colors.bgCardHover,\n },\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n cursor: 'pointer',\n transitionProperty: 'background-color, border-color',\n transitionDuration: duration.fast,\n },\n backdrop: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 49,\n },\n popup: {\n position: 'absolute',\n top: '100%',\n left: 0,\n marginTop: spacing.xs,\n backgroundColor: colors.bgCard,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.sm,\n boxShadow: shadows.md,\n paddingTop: spacing.xs,\n paddingBottom: spacing.xs,\n minWidth: 160,\n zIndex: 50,\n },\n popupEnd: {\n left: 'auto',\n right: 0,\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: spacing.md,\n paddingRight: spacing.md,\n fontSize: typography.fontSizeSm,\n fontFamily: typography.fontFamily,\n color: colors.text,\n borderRadius: radii.sm,\n cursor: 'pointer',\n backgroundColor: 'transparent',\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n },\n itemHighlighted: {\n backgroundColor: colors.bgCardHover,\n },\n separator: {\n height: 0,\n marginTop: spacing.xs,\n marginBottom: spacing.xs,\n borderTopWidth: 1,\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n linkItem: {\n textDecoration: 'none',\n color: {\n default: colors.text,\n ':hover': colors.text,\n },\n },\n})\n","import {createContext, useContext} from 'react'\n\nexport interface MenuContextValue {\n open: boolean\n toggle: () => void\n close: () => void\n menuId: string\n highlightedId: string | null\n setHighlightedId: (id: string | null) => void\n registerItem: (id: string, element: HTMLElement) => () => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null)\n\nexport function useMenu() {\n const ctx = useContext(MenuContext)\n if (!ctx) throw new Error('Menu compound components must be used within Menu.Root')\n return ctx\n}\n","import {useState, useCallback, useRef, useId, useEffect} from 'react'\nimport type {MenuContextValue} from './MenuContext'\n\nexport function useMenuRoot() {\n const [open, setOpen] = useState(false)\n const [highlightedId, setHighlightedId] = useState<string | null>(null)\n const menuId = useId()\n const rootRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const itemsRef = useRef(new Map<string, HTMLElement>())\n const orderRef = useRef<string[]>([])\n const needsInitialHighlightRef = useRef(false)\n\n const close = useCallback(() => {\n setOpen(false)\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n triggerRef.current?.focus()\n }, [])\n\n const toggle = useCallback(() => {\n setOpen((prev) => {\n if (!prev) {\n needsInitialHighlightRef.current = true\n } else {\n setHighlightedId(null)\n needsInitialHighlightRef.current = false\n }\n return !prev\n })\n }, [])\n\n // Highlight the first item after items register on open.\n // Child effects (item registration) run before this parent effect,\n // so orderRef is populated by the time this runs.\n useEffect(() => {\n if (open && needsInitialHighlightRef.current) {\n needsInitialHighlightRef.current = false\n const order = orderRef.current\n if (order.length > 0) {\n setHighlightedId(order[0])\n }\n }\n }, [open])\n\n const registerItem = useCallback((id: string, element: HTMLElement) => {\n itemsRef.current.set(id, element)\n const map = itemsRef.current\n const ids = [...map.keys()]\n ids.sort((a, b) => {\n const elA = map.get(a)\n const elB = map.get(b)\n if (!elA || !elB) return 0\n return elA.compareDocumentPosition(elB) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1\n })\n orderRef.current = ids\n return () => {\n itemsRef.current.delete(id)\n orderRef.current = orderRef.current.filter((i) => i !== id)\n }\n }, [])\n\n // Native keydown for full KeyboardEvent access (preventDefault)\n useEffect(() => {\n const root = rootRef.current\n if (!root || !open) return\n\n function handleKeyDown(e: KeyboardEvent) {\n const order = orderRef.current\n if (order.length === 0) return\n\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : -1\n return order[(idx + 1) % order.length]\n })\n break\n }\n case 'ArrowUp': {\n e.preventDefault()\n setHighlightedId((prev) => {\n const idx = prev ? order.indexOf(prev) : 0\n return order[(idx - 1 + order.length) % order.length]\n })\n break\n }\n case 'Home': {\n e.preventDefault()\n setHighlightedId(order[0])\n break\n }\n case 'End': {\n e.preventDefault()\n setHighlightedId(order[order.length - 1])\n break\n }\n case 'Enter':\n case ' ': {\n e.preventDefault()\n const items = itemsRef.current\n setHighlightedId((prev) => {\n if (prev) {\n const el = items.get(prev)\n el?.click()\n }\n return prev\n })\n break\n }\n case 'Escape': {\n e.preventDefault()\n close()\n break\n }\n case 'Tab': {\n close()\n break\n }\n }\n }\n\n root.addEventListener('keydown', handleKeyDown)\n return () => root.removeEventListener('keydown', handleKeyDown)\n }, [open, close])\n\n const ctx: MenuContextValue = {\n open,\n toggle,\n close,\n menuId,\n highlightedId,\n setHighlightedId,\n registerItem,\n triggerRef,\n }\n\n return {ctx, rootRef}\n}\n","// --- Dev-only warn registry ---\n//\n// One-shot per warning code per process: long-running dev sessions\n// shouldn't drown the console on every re-render of a misused component.\nconst IS_PROD = typeof process !== 'undefined' && process.env?.NODE_ENV === 'production'\nconst warned = new Set<string>()\n\n/** Warn once, outside production, as `[duro-app/ui <scope>] <message>`. */\nexport function devWarnOnce(scope: string, code: string, message: string): void {\n const key = `${scope}:${code}`\n if (IS_PROD || warned.has(key)) return\n warned.add(key)\n\n console.warn(`[duro-app/ui ${scope}] ${message}`)\n}\n","import {type ReactNode, useRef, useId, useEffect} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {MenuContext, useMenu} from './MenuContext'\nimport {useMenuRoot} from './useMenuRoot'\nimport {devWarnOnce} from '../../shared/devWarnOnce'\n\n// --- Root ---\ninterface RootProps {\n children: ReactNode\n}\n\nfunction Root({children}: RootProps) {\n const {ctx, rootRef} = useMenuRoot()\n\n return (\n <MenuContext.Provider value={ctx}>\n <html.div ref={rootRef} style={styles.root}>\n {children}\n </html.div>\n </MenuContext.Provider>\n )\n}\n\n// --- Trigger ---\n// Trigger IS the button: aria-haspopup / aria-expanded / aria-controls have to\n// sit on the focusable element, so it cannot be a wrapper like Dialog.Trigger.\n// Its children are the label (text, an Icon) — never a Button or other control.\nconst NESTED_CONTROL = 'button, a[href], input, select, textarea, [role=\"button\"]'\n\nfunction Trigger({children}: {children: ReactNode}) {\n const {open, toggle, menuId, triggerRef} = useMenu()\n const localRef = useRef<HTMLButtonElement>(null)\n\n // Sync local ref to context triggerRef\n useEffect(() => {\n triggerRef.current = localRef.current\n })\n\n // TypeScript can't stop a <Button> child; the DOM can tell.\n useEffect(() => {\n if (localRef.current?.querySelector(NESTED_CONTROL)) {\n devWarnOnce(\n 'Menu',\n 'trigger-nested-control',\n 'Menu.Trigger is itself the button — give it the label (text, an Icon), not a Button, link or other control. A control inside a <button> is invalid HTML: it breaks hydration and hands assistive tech a button inside a button.',\n )\n }\n }, [])\n\n return (\n <html.button\n ref={localRef}\n type=\"button\"\n onClick={toggle}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n aria-controls={open ? menuId : undefined}\n style={styles.trigger}\n >\n {children}\n </html.button>\n )\n}\n\n// --- Popup ---\ninterface PopupProps {\n children: ReactNode\n align?: 'start' | 'end'\n}\n\nfunction Popup({children, align = 'start'}: PopupProps) {\n const {open, close, menuId, highlightedId} = useMenu()\n\n if (!open) return null\n\n return (\n <>\n <html.div style={styles.backdrop} onClick={close} />\n <html.div\n id={menuId}\n role=\"menu\"\n aria-activedescendant={highlightedId ?? undefined}\n style={[styles.popup, align === 'end' && styles.popupEnd]}\n >\n {children}\n </html.div>\n </>\n )\n}\n\n// --- Item ---\ninterface ItemProps {\n onClick?: () => void\n children: ReactNode\n}\n\nfunction Item({onClick, children}: ItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLDivElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n const handleClick = () => {\n onClick?.()\n close()\n }\n\n return (\n <html.div\n ref={ref}\n id={id}\n role=\"menuitem\"\n onClick={handleClick}\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.div>\n )\n}\n\n// --- LinkItem ---\ninterface LinkItemProps {\n href: string\n children: ReactNode\n}\n\nfunction LinkItem({href, children}: LinkItemProps) {\n const {close, highlightedId, setHighlightedId, registerItem} = useMenu()\n const id = useId()\n const ref = useRef<HTMLAnchorElement>(null)\n const isHighlighted = highlightedId === id\n\n useEffect(() => {\n const el = ref.current\n if (!el) return\n return registerItem(id, el)\n }, [id, registerItem])\n\n return (\n <html.a\n ref={ref}\n id={id}\n href={href}\n onClick={close}\n role=\"menuitem\"\n onPointerEnter={() => setHighlightedId(id)}\n style={[styles.item, styles.linkItem, isHighlighted && styles.itemHighlighted]}\n >\n {children}\n </html.a>\n )\n}\n\n// --- Separator ---\n// A rule between groups of items. role=\"separator\" is a valid child of a\n// menu (WAI-ARIA menu pattern), and it is never registered as an item, so\n// arrow keys and the active descendant pass over it.\nfunction Separator() {\n return <html.div role=\"separator\" aria-orientation=\"horizontal\" style={styles.separator} />\n}\n\nexport const Menu = {\n Root,\n Trigger,\n Popup,\n Item,\n LinkItem,\n Separator,\n}\n","/**\n * @license react-strict-dom\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\nimport { jsx } from 'react/jsx-runtime';\nimport * as stylex from '@stylexjs/stylex';\nexport { stylex as css };\n\nconst loggedMessages = {};\nfunction errorMsg(msg) {\n if (process.env.NODE_ENV !== 'test' && loggedMessages[msg]) {\n return;\n }\n loggedMessages[msg] = true;\n console.error(`[error] React Strict DOM: ${msg}`);\n}\n\nconst strictAttributeSet = new Set(['alt', 'aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colindextext', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowindextext', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'autoCapitalize', 'autoComplete', 'autoFocus', 'checked', 'children', 'crossOrigin', 'decoding', 'defaultChecked', 'defaultValue', 'dir', 'disabled', 'download', 'draggable', 'elementTiming', 'enterKeyHint', 'fetchPriority', 'for', 'height', 'hidden', 'href', 'id', 'inert', 'inputMode', 'label', 'lang', 'loading', 'max', 'maxLength', 'min', 'minLength', 'multiple', 'name', 'onAuxClick', 'onBeforeInput', 'onBlur', 'onChange', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onError', 'onFocus', 'onFocusIn', 'onFocusOut', 'onFullscreenChange', 'onFullscreenError', 'onGotPointerCapture', 'onInput', 'onInvalid', 'onKeyDown', 'onKeyUp', 'onLoad', 'onLostPointerCapture', 'onPaste', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onScroll', 'onSelect', 'onSelectionChange', 'onWheel', 'placeholder', 'readOnly', 'referrerPolicy', 'rel', 'required', 'role', 'rows', 'selected', 'spellCheck', 'src', 'srcSet', 'step', 'style', 'tabIndex', 'target', 'type', 'value', 'width', 'suppressHydrationWarning', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart']);\nfunction isPropAllowed(key) {\n return strictAttributeSet.has(key) || key.indexOf('data-') > -1;\n}\n\nvar styleq$1 = {};\n\nObject.defineProperty(styleq$1, \"__esModule\", {\n value: true\n});\nvar styleq_2 = styleq$1.styleq = void 0;\nvar cache = new WeakMap();\nvar compiledKey = '$$css';\nfunction createStyleq(options) {\n var disableCache;\n var disableMix;\n var transform;\n if (options != null) {\n disableCache = options.disableCache === true;\n disableMix = options.disableMix === true;\n transform = options.transform;\n }\n return function styleq() {\n var definedProperties = [];\n var className = '';\n var inlineStyle = null;\n var debugString = '';\n var nextCache = disableCache ? null : cache;\n var styles = new Array(arguments.length);\n for (var i = 0; i < arguments.length; i++) {\n styles[i] = arguments[i];\n }\n while (styles.length > 0) {\n var possibleStyle = styles.pop();\n if (possibleStyle == null || possibleStyle === false) {\n continue;\n }\n if (Array.isArray(possibleStyle)) {\n for (var _i = 0; _i < possibleStyle.length; _i++) {\n styles.push(possibleStyle[_i]);\n }\n continue;\n }\n var style = transform != null ? transform(possibleStyle) : possibleStyle;\n if (style.$$css != null) {\n var classNameChunk = '';\n if (nextCache != null && nextCache.has(style)) {\n var cacheEntry = nextCache.get(style);\n if (cacheEntry != null) {\n classNameChunk = cacheEntry[0];\n debugString = cacheEntry[2];\n definedProperties.push.apply(definedProperties, cacheEntry[1]);\n nextCache = cacheEntry[3];\n }\n } else {\n var definedPropertiesChunk = [];\n for (var prop in style) {\n var value = style[prop];\n if (prop === compiledKey) {\n var compiledKeyValue = style[prop];\n if (compiledKeyValue !== true) {\n debugString = debugString ? compiledKeyValue + '; ' + debugString : compiledKeyValue;\n }\n continue;\n }\n if (typeof value === 'string' || value === null) {\n if (!definedProperties.includes(prop)) {\n definedProperties.push(prop);\n if (nextCache != null) {\n definedPropertiesChunk.push(prop);\n }\n if (typeof value === 'string') {\n classNameChunk += classNameChunk ? ' ' + value : value;\n }\n }\n } else {\n console.error(\"styleq: \".concat(prop, \" typeof \").concat(String(value), \" is not \\\"string\\\" or \\\"null\\\".\"));\n }\n }\n if (nextCache != null) {\n var weakMap = new WeakMap();\n nextCache.set(style, [classNameChunk, definedPropertiesChunk, debugString, weakMap]);\n nextCache = weakMap;\n }\n }\n if (classNameChunk) {\n className = className ? classNameChunk + ' ' + className : classNameChunk;\n }\n } else {\n if (disableMix) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n inlineStyle = Object.assign({}, style, inlineStyle);\n } else {\n var subStyle = null;\n for (var _prop in style) {\n var _value = style[_prop];\n if (_value !== undefined) {\n if (!definedProperties.includes(_prop)) {\n if (_value != null) {\n if (inlineStyle == null) {\n inlineStyle = {};\n }\n if (subStyle == null) {\n subStyle = {};\n }\n subStyle[_prop] = _value;\n }\n definedProperties.push(_prop);\n nextCache = null;\n }\n }\n }\n if (subStyle != null) {\n inlineStyle = Object.assign(subStyle, inlineStyle);\n }\n }\n }\n }\n var styleProps = [className, inlineStyle, debugString];\n return styleProps;\n };\n}\nvar styleq = styleq_2 = styleq$1.styleq = createStyleq();\nstyleq.factory = createStyleq;\n\nconst optimizedStyleq = styleq_2.factory({\n disableMix: true\n});\nfunction merge(...styles) {\n const [className, style, dataStyleSrc] = optimizedStyleq(styles);\n const result = {};\n if (className != null && className !== '') {\n result.className = className;\n }\n if (style != null) {\n result.style = style;\n }\n if (dataStyleSrc != null && dataStyleSrc !== '') {\n const chunks = dataStyleSrc.split(';');\n const pathsMap = {};\n for (const chunk of chunks) {\n const trimmed = chunk.trim();\n const [path, line] = trimmed.split(':');\n if (line != null) {\n pathsMap[path] = pathsMap[path] != null ? `${pathsMap[path]},${line}` : line;\n }\n }\n result['data-style-src'] = Object.keys(pathsMap).map(path => `${path}:${pathsMap[path]}`).join('; ');\n }\n return result;\n}\n\nfunction validateStrictProps(props) {\n Object.keys(props).forEach(key => {\n const isValid = isPropAllowed(key);\n if (!isValid) {\n errorMsg(`invalid prop \"${key}\"`);\n delete props[key];\n }\n });\n}\nfunction createStrictDOMComponent(TagName, defaultStyle) {\n const debugStyle = {\n $$css: true,\n 'debug::name': `html-${TagName}`\n };\n function Component({\n ref,\n ...props\n }) {\n const {\n for: htmlFor,\n style,\n ...restProps\n } = props;\n const hostProps = restProps;\n validateStrictProps(hostProps);\n if (htmlFor != null) {\n hostProps.htmlFor = htmlFor;\n }\n if (props.role != null) {\n hostProps.role = props.role === 'none' ? 'presentation' : props.role;\n }\n if (TagName === 'button') {\n hostProps.type = hostProps.type ? hostProps.type : 'button';\n } else if (TagName === 'input' || TagName === 'textarea') {\n hostProps.dir = hostProps.dir ? hostProps.dir : 'auto';\n }\n const hostStyleProps = merge([debugStyle, defaultStyle, style]);\n const element = jsx(TagName, {\n ...hostProps,\n ...hostStyleProps,\n ref: ref\n });\n return element;\n }\n Component.displayName = `html.${TagName}`;\n return Component;\n}\n\nconst styles = stylex.create({\n block: {\n margin: 0,\n padding: 0\n },\n inline: {\n margin: 0,\n padding: 0,\n textDecoration: 'none',\n textAlign: 'inherit',\n wordWrap: 'break-word'\n },\n inlineblock: {\n borderStyle: 'solid',\n margin: 0,\n padding: 0\n },\n button: {\n borderWidth: 1\n },\n codePre: {\n fontFamily: 'monospace, \"monospace\"',\n fontSize: '1em',\n overflow: 'auto'\n },\n heading: {\n fontSize: '1.5rem',\n wordWrap: 'break-word'\n },\n hr: {\n backgroundColor: 'black',\n borderStyle: 'none',\n borderWidth: 0,\n boxSizing: 'border-box',\n height: 1\n },\n img: {\n aspectRatio: 'attr(width) / attr(height)',\n height: 'auto',\n maxWidth: '100%'\n },\n input: {\n borderWidth: 1,\n borderStyle: 'solid'\n },\n list: {\n listStyle: 'none'\n },\n strong: {\n fontWeight: 'bold'\n },\n textarea: {\n borderWidth: 1,\n borderStyle: 'solid',\n resize: 'vertical'\n }\n});\nconst a$1 = styles.inline;\nconst article$1 = styles.block;\nconst aside$1 = styles.block;\nconst b$1 = styles.inline;\nconst bdi$1 = styles.inline;\nconst bdo$1 = styles.inline;\nconst blockquote$1 = styles.block;\nconst br$1 = null;\nconst button$1 = [styles.inlineblock, styles.button];\nconst code$1 = [styles.inline, styles.codePre];\nconst del$1 = null;\nconst div$1 = styles.block;\nconst em$1 = styles.inline;\nconst fieldset$1 = styles.block;\nconst footer$1 = styles.block;\nconst form$1 = styles.block;\nconst heading = [styles.block, styles.heading];\nconst header$1 = styles.block;\nconst hr$1 = [styles.block, styles.hr];\nconst i$1 = styles.inline;\nconst img$1 = styles.img;\nconst input$1 = [styles.inlineblock, styles.input];\nconst ins$1 = null;\nconst kbd$1 = null;\nconst label$1 = styles.inline;\nconst li$1 = styles.block;\nconst main$1 = styles.block;\nconst mark$1 = styles.inline;\nconst nav$1 = styles.block;\nconst ol$1 = [styles.list, styles.block];\nconst optgroup$1 = null;\nconst option$1 = null;\nconst p$1 = styles.block;\nconst pre$1 = [styles.block, styles.codePre];\nconst s$1 = null;\nconst section$1 = styles.block;\nconst select$1 = styles.inlineblock;\nconst span$1 = styles.inline;\nconst strong$1 = [styles.inline, styles.strong];\nconst sub$1 = styles.inline;\nconst sup$1 = styles.inline;\nconst textarea$1 = [styles.inlineblock, styles.textarea];\nconst u$1 = null;\nconst ul$1 = [styles.list, styles.block];\nconst defaultStyles = {\n a: a$1,\n article: article$1,\n aside: aside$1,\n b: b$1,\n bdi: bdi$1,\n bdo: bdo$1,\n blockquote: blockquote$1,\n br: br$1,\n button: button$1,\n code: code$1,\n del: del$1,\n div: div$1,\n em: em$1,\n fieldset: fieldset$1,\n footer: footer$1,\n form: form$1,\n h1: heading,\n h2: heading,\n h3: heading,\n h4: heading,\n h5: heading,\n h6: heading,\n header: header$1,\n hr: hr$1,\n i: i$1,\n img: img$1,\n input: input$1,\n ins: ins$1,\n kbd: kbd$1,\n label: label$1,\n li: li$1,\n main: main$1,\n mark: mark$1,\n nav: nav$1,\n ol: ol$1,\n optgroup: optgroup$1,\n option: option$1,\n p: p$1,\n pre: pre$1,\n s: s$1,\n section: section$1,\n select: select$1,\n span: span$1,\n strong: strong$1,\n sub: sub$1,\n sup: sup$1,\n textarea: textarea$1,\n u: u$1,\n ul: ul$1\n};\n\nconst a = createStrictDOMComponent('a', defaultStyles.a);\nconst article = createStrictDOMComponent('article', defaultStyles.article);\nconst aside = createStrictDOMComponent('aside', defaultStyles.aside);\nconst b = createStrictDOMComponent('b', defaultStyles.b);\nconst bdi = createStrictDOMComponent('bdi', defaultStyles.bdi);\nconst bdo = createStrictDOMComponent('bdo', defaultStyles.bdo);\nconst blockquote = createStrictDOMComponent('blockquote', defaultStyles.blockquote);\nconst br = createStrictDOMComponent('br', defaultStyles.br);\nconst button = createStrictDOMComponent('button', defaultStyles.button);\nconst code = createStrictDOMComponent('code', defaultStyles.code);\nconst del = createStrictDOMComponent('del', defaultStyles.del);\nconst div = createStrictDOMComponent('div', defaultStyles.div);\nconst em = createStrictDOMComponent('em', defaultStyles.em);\nconst fieldset = createStrictDOMComponent('fieldset', defaultStyles.fieldset);\nconst footer = createStrictDOMComponent('footer', defaultStyles.footer);\nconst form = createStrictDOMComponent('form', defaultStyles.form);\nconst h1 = createStrictDOMComponent('h1', defaultStyles.h1);\nconst h2 = createStrictDOMComponent('h2', defaultStyles.h2);\nconst h3 = createStrictDOMComponent('h3', defaultStyles.h3);\nconst h4 = createStrictDOMComponent('h4', defaultStyles.h4);\nconst h5 = createStrictDOMComponent('h5', defaultStyles.h5);\nconst h6 = createStrictDOMComponent('h6', defaultStyles.h6);\nconst header = createStrictDOMComponent('header', defaultStyles.header);\nconst hr = createStrictDOMComponent('hr', defaultStyles.hr);\nconst i = createStrictDOMComponent('i', defaultStyles.i);\nconst img = createStrictDOMComponent('img', defaultStyles.img);\nconst input = createStrictDOMComponent('input', defaultStyles.input);\nconst ins = createStrictDOMComponent('ins', defaultStyles.ins);\nconst kbd = createStrictDOMComponent('kbd', defaultStyles.kbd);\nconst label = createStrictDOMComponent('label', defaultStyles.label);\nconst li = createStrictDOMComponent('li', defaultStyles.li);\nconst main = createStrictDOMComponent('main', defaultStyles.main);\nconst mark = createStrictDOMComponent('mark', defaultStyles.mark);\nconst nav = createStrictDOMComponent('nav', defaultStyles.nav);\nconst ol = createStrictDOMComponent('ol', defaultStyles.ol);\nconst optgroup = createStrictDOMComponent('optgroup', defaultStyles.optgroup);\nconst option = createStrictDOMComponent('option', defaultStyles.option);\nconst p = createStrictDOMComponent('p', defaultStyles.p);\nconst pre = createStrictDOMComponent('pre', defaultStyles.pre);\nconst s = createStrictDOMComponent('s', defaultStyles.s);\nconst section = createStrictDOMComponent('section', defaultStyles.section);\nconst select = createStrictDOMComponent('select', defaultStyles.select);\nconst span = createStrictDOMComponent('span', defaultStyles.span);\nconst strong = createStrictDOMComponent('strong', defaultStyles.strong);\nconst sub = createStrictDOMComponent('sub', defaultStyles.sub);\nconst sup = createStrictDOMComponent('sup', defaultStyles.sup);\nconst textarea = createStrictDOMComponent('textarea', defaultStyles.textarea);\nconst u = createStrictDOMComponent('u', defaultStyles.u);\nconst ul = createStrictDOMComponent('ul', defaultStyles.ul);\n\nvar html = /*#__PURE__*/Object.freeze({\n __proto__: null,\n a: a,\n article: article,\n aside: aside,\n b: b,\n bdi: bdi,\n bdo: bdo,\n blockquote: blockquote,\n br: br,\n button: button,\n code: code,\n del: del,\n div: div,\n em: em,\n fieldset: fieldset,\n footer: footer,\n form: form,\n h1: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\n header: header,\n hr: hr,\n i: i,\n img: img,\n input: input,\n ins: ins,\n kbd: kbd,\n label: label,\n li: li,\n main: main,\n mark: mark,\n nav: nav,\n ol: ol,\n optgroup: optgroup,\n option: option,\n p: p,\n pre: pre,\n s: s,\n section: section,\n select: select,\n span: span,\n strong: strong,\n sub: sub,\n sup: sup,\n textarea: textarea,\n u: u,\n ul: ul\n});\n\nexport { html };\n","import {css} from 'react-strict-dom'\n\n// Breakpoint scale — the widths at which responsive layouts change.\n//\n// These use `css.defineConsts` rather than `css.defineVars` because CSS media\n// and container queries cannot read custom properties: a query threshold has\n// to be a literal. `defineConsts` values are inlined into the query text at\n// build time by the StyleX babel plugin (that's their whole reason to exist),\n// so `@container (max-width: ${breakpoints.sm})` compiles to a real `640px`.\n//\n// For runtime JS comparisons (`containerWidth < breakpointsPx.sm`) use the\n// plain-number mirror below — defineConsts values are query strings, not\n// numbers. Keep the two in sync. Values follow the common Tailwind-aligned scale.\nexport const breakpoints = css.defineConsts({\n /** Phones — dense tables card up below here. */\n xs: '480px',\n /** Large phone / small tablet. The default \"go to the mobile layout\" line. */\n sm: '640px',\n /** Tablet portrait. */\n md: '768px',\n /** Tablet landscape / small laptop. */\n lg: '1024px',\n /** Desktop. */\n xl: '1280px',\n})\n\nexport const breakpointsPx = {\n xs: 480,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n} as const\n\nexport type Breakpoint = keyof typeof breakpointsPx\n","import {css} from 'react-strict-dom'\nimport {colors} from '@duro-app/tokens/tokens/colors.css'\nimport {spacing, radii} from '@duro-app/tokens/tokens/spacing.css'\nimport {typography} from '@duro-app/tokens/tokens/typography.css'\nimport {duration, easing} from '@duro-app/tokens/tokens/motion.css'\nimport {breakpoints} from '@duro-app/tokens/tokens/breakpoints.css'\n\n// Container-query thresholds, from the shared breakpoint scale. `sm` (640px)\n// is the single \"card up\" line used across every table (Table + VirtualTable);\n// below it dense tables become cards, above it they stay tabular and scroll\n// horizontally. `md` (768px) is the compact band (tighter padding, nowrap\n// headers). These are inlined into the @container query text at build time.\nconst COMPACT_BP = breakpoints.md\nconst STACK_BP = breakpoints.sm\n\nexport const styles = css.create({\n // Outer wrapper that hosts the @container query. Wraps SortChip + Root\n // + Pagination so all three react to the same width. Root itself does\n // NOT carry containerType — keeping a single query target per Table.\n //\n // @deprecated Use Table.Root's sortChip/pagination slot props instead.\n // This style backs the deprecated <Table.Container> wrapper.\n container: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // The same containment chrome, but applied by Root when responsive=true.\n // Mirrors `container` so consumers don't need to wrap manually.\n rootContainer: {\n containerType: 'inline-size',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.sm,\n },\n\n // Applied when Row receives an `onClick` handler. Cursor signals clickability;\n // the :focus-visible outline meets WCAG 2.4.7 for keyboard navigation.\n clickableRow: {\n cursor: 'pointer',\n outlineWidth: {\n default: 0,\n ':focus-visible': 2,\n },\n outlineStyle: 'solid',\n outlineColor: colors.accent,\n outlineOffset: -2,\n },\n\n // Root — the single grid container for the table itself\n root: {\n display: 'grid',\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: colors.border,\n borderRadius: radii.md,\n overflow: 'hidden',\n backgroundColor: colors.bgCard,\n fontFamily: typography.fontFamily,\n color: colors.text,\n },\n\n // Stack-mode override: the Root's grid collapses to a single column so\n // each Row spans full width and stacks vertically.\n // NOTE: gridTemplateColumns is intentionally absent here. It is handled by\n // gridColumnsResponsive() so that StyleX conflict resolution does not remove\n // the explicit column template (a later style with the same property key\n // always wins, so combining gridColumns + rootResponsive in one array would\n // silently drop the column template).\n rootResponsive: {\n // Size the grid to its content so it can OVERFLOW the scroll wrapper\n // rather than shrink: `min-content` here is the sum of each column's\n // minimum track (the minmax() floor / its content), so a dense table\n // grows past the container and Root's `scrollX` wrapper scrolls sideways.\n // In stack mode the grid is a single column, so drop the floor to let the\n // card fill the width instead of forcing a horizontal scrollbar.\n minWidth: {\n default: 'min-content',\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n // The card-list look needs the outer border to disappear in stack\n // mode — each row paints its own border.\n borderWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n backgroundColor: {\n default: colors.bgCard,\n [`@container (max-width: ${STACK_BP})`]: 'transparent',\n },\n overflow: {\n default: 'hidden',\n [`@container (max-width: ${STACK_BP})`]: 'visible',\n },\n rowGap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Header group — hidden entirely in stack mode\n header: {\n display: {\n default: 'grid',\n [`@container (max-width: ${STACK_BP})`]: 'none',\n },\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n backgroundColor: colors.bgCard,\n },\n\n // Body group\n body: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: 'subgrid',\n },\n\n // Row — spans all columns. In stack mode its template flips to 1fr so\n // children stack as grid items in a single column (we keep grid context\n // so cells with `gridColumn` overrides still compute).\n row: {\n display: 'grid',\n gridColumn: '1 / -1',\n gridTemplateColumns: {\n default: 'subgrid',\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n borderBottomWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderBottomStyle: 'solid',\n borderBottomColor: colors.border,\n },\n bodyRow: {\n backgroundColor: {\n default: 'transparent',\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n transitionProperty: 'background-color',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n // Stack-mode card chrome\n padding: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderRadius: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: radii.sm,\n },\n borderWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderStyle: 'solid',\n borderColor: colors.border,\n },\n\n // Header cell — keeps headers on a single line in compact mode\n headerCell: {\n fontWeight: typography.fontWeightSemibold,\n color: colors.textMuted,\n textAlign: 'start',\n // Match the body cell: shrink inside the track + wrap, so header labels\n // don't overlap when many columns are cramped.\n minWidth: 0,\n overflowWrap: 'break-word',\n whiteSpace: {\n default: 'normal',\n [`@container (max-width: ${COMPACT_BP})`]: 'nowrap',\n },\n },\n\n // Body cell. Text wraps by default — preferring \"wrap to a 2nd line\" over\n // \"truncate with ellipsis\" matches BI/data-reporting conventions where\n // hiding content (even with a visual hint) is treated as data loss.\n // Consumers that explicitly want single-line truncation use Text's\n // `truncate` prop, which sets its own nowrap + overflow + ellipsis chain\n // on the Text element itself. Buttons and badges already enforce\n // `white-space: nowrap` internally, so they're unaffected by this\n // default. In stack mode the cell becomes a 2-column grid for\n // label / value.\n cell: {\n color: colors.text,\n display: {\n default: 'flex',\n [`@container (max-width: ${STACK_BP})`]: 'grid',\n },\n alignItems: 'center',\n // Always let the cell shrink inside its `minmax(0, 1fr)` track. Previously\n // this was `auto` in the default (wide) band on the assumption there's\n // \"enough room\" — but a table with many columns (or wide content) whose\n // combined intrinsic width exceeds the container then can't shrink, so\n // content spills its track and overlaps the next column. `0` + the\n // wrapping below keeps every cell inside its column at any width.\n minWidth: 0,\n overflow: {\n // Safety against pathological unbreakable content (long URLs,\n // dataless ids) at narrow widths.\n default: 'visible',\n [`@container (max-width: ${COMPACT_BP})`]: 'hidden',\n },\n whiteSpace: 'normal',\n // Break long unbreakable tokens (emails, UUIDs) so they wrap within the\n // column instead of forcing it wider / overflowing.\n overflowWrap: 'break-word',\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr 2fr',\n },\n gap: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n },\n\n // Wrapper around a (non-actions) cell's value. A raw text node is an\n // anonymous flex item with `min-width: auto`, so it refuses to shrink and\n // overflows its column even when the cell itself can shrink. Giving the value\n // its own `min-width: 0` flex item lets the text wrap inside the column.\n cellValue: {\n minWidth: 0,\n flexGrow: 1,\n overflowWrap: 'break-word',\n },\n\n // Label rendered as a real <span> inside each cell. Display:none in\n // default/compact, shown only in stack — matches StyleX guidance to\n // prefer real elements over ::before/::after for non-shadow-DOM cases.\n cellLabel: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'block',\n },\n color: colors.textMuted,\n fontWeight: typography.fontWeightMedium,\n fontSize: typography.fontSizeXs,\n },\n\n // Actions cell. In default/compact behaves like any cell. In stack\n // mode: full-width footer of the card, right-aligned, with a top\n // separator. Label span is suppressed in JSX (Cell does not render it\n // when isActions=true).\n cellActions: {\n gridTemplateColumns: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n justifyContent: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: 'flex-end',\n },\n marginTop: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n paddingTop: {\n default: null,\n [`@container (max-width: ${STACK_BP})`]: spacing.sm,\n },\n borderTopWidth: {\n default: 0,\n [`@container (max-width: ${STACK_BP})`]: 1,\n },\n borderTopStyle: 'solid',\n borderTopColor: colors.border,\n },\n\n // Size: sm\n cellSm: {\n paddingTop: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingBottom: {\n default: spacing.xs,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.xs,\n },\n paddingLeft: spacing.sm,\n paddingRight: spacing.sm,\n fontSize: typography.fontSizeXs,\n },\n // Size: md\n cellMd: {\n paddingTop: spacing.sm,\n paddingBottom: spacing.sm,\n paddingLeft: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n paddingRight: {\n default: spacing.md,\n [`@container (max-width: ${COMPACT_BP})`]: spacing.sm,\n },\n fontSize: typography.fontSizeSm,\n },\n\n // Variant: striped (even body rows). Suppressed in stack — cards have\n // their own surface and zebra-striping reads as a bug there.\n stripedEven: {\n backgroundColor: {\n default: colors.bgCardHover,\n [`@container (max-width: ${STACK_BP})`]: colors.bgCard,\n ':hover': colors.bgCardHover,\n },\n },\n\n // Variant: bordered (cells get side borders). Suppressed in stack.\n borderedCell: {\n borderRightWidth: {\n default: 1,\n [`@container (max-width: ${STACK_BP})`]: 0,\n },\n borderRightStyle: 'solid',\n borderRightColor: colors.border,\n },\n borderedCellLast: {\n borderRightWidth: 0,\n },\n\n // SortChip — visible only in stack mode\n sortChip: {\n display: {\n default: 'none',\n [`@container (max-width: ${STACK_BP})`]: 'inline-flex',\n },\n alignSelf: 'flex-start',\n },\n\n // Horizontal-scroll frame around the grid (responsive path). Above the\n // stack breakpoint the grid keeps each column at least `minColumnWidth`\n // wide (see the minmax() template), so a dense table overflows and this\n // wrapper scrolls sideways instead of crushing its cells — the standard\n // data-table behavior. In stack mode the grid collapses to one column, so\n // nothing overflows and no scrollbar appears.\n scrollX: {\n overflowX: 'auto',\n // Contain the scroll to this axis; vertical growth (rows) is natural.\n overflowY: 'visible',\n // Momentum scroll on touch + a stable gutter so the layout doesn't jump\n // when the scrollbar shows.\n WebkitOverflowScrolling: 'touch',\n },\n\n // Positioning context for the scroll-affordance edge fades, which sit on\n // top of the scroll port (not inside it, so they don't scroll away).\n scrollFrame: {\n position: 'relative',\n },\n // A soft fade pinned to a scroll edge that hints \"there's more this way\".\n // It fades the content into the surface colour, so it reads in any theme.\n // Toggled by opacity from JS scroll position; pointer-events off so it\n // never eats clicks. Sits just inside the rounded frame border.\n edgeFade: {\n position: 'absolute',\n top: 1,\n bottom: 1,\n width: spacing.xl,\n pointerEvents: 'none',\n opacity: 0,\n transitionProperty: 'opacity',\n transitionDuration: duration.fast,\n transitionTimingFunction: easing.standard,\n },\n edgeFadeLeft: {\n left: 1,\n borderTopLeftRadius: radii.md,\n borderBottomLeftRadius: radii.md,\n backgroundImage: `linear-gradient(to left, transparent, ${colors.bgCard})`,\n },\n edgeFadeRight: {\n right: 1,\n borderTopRightRadius: radii.md,\n borderBottomRightRadius: radii.md,\n backgroundImage: `linear-gradient(to right, transparent, ${colors.bgCard})`,\n },\n edgeFadeVisible: {\n opacity: 1,\n },\n\n // Dynamic: grid columns applied on Root (non-responsive path only).\n gridColumns: (template: string) => ({\n gridTemplateColumns: template,\n }),\n\n // Dynamic: grid columns at three tiers (default / compact / stack) in\n // one style. Used instead of gridColumns() when responsive=true so that\n // every gridTemplateColumns rule lives in the same StyleX style object —\n // splitting them would let StyleX's conflict resolution drop the\n // earlier classes (the LAST style wins per property key).\n //\n // - default: balanced multi-column layout for desktop widths\n // - compact band (STACK_BP < width ≤ COMPACT_BP): consumer-supplied\n // \"compact\" template. This is written as an explicit RANGE, not just\n // `max-width: COMPACT_BP`, so it does NOT also match below STACK_BP —\n // otherwise both the compact and the stack rule would set\n // gridTemplateColumns at card widths and StyleX's ordering could let the\n // (wider, 4-column) compact template shadow the single-column stack one.\n // - @container (max-width: STACK_BP): collapse to a single column so\n // each row becomes a card\n gridColumnsResponsive: (template: string, compactTemplate: string) => ({\n gridTemplateColumns: {\n default: template,\n [`@container (${STACK_BP} < width <= ${COMPACT_BP})`]: compactTemplate,\n [`@container (max-width: ${STACK_BP})`]: '1fr',\n },\n }),\n})\n","import {\n type ReactElement,\n type ReactNode,\n type MutableRefObject,\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n Children,\n isValidElement,\n} from 'react'\nimport {html} from 'react-strict-dom'\nimport {styles} from './styles.css'\nimport {devWarnOnce} from '../../shared/devWarnOnce'\n\n// --- Types ---\n\nexport type TableVariant = 'default' | 'striped' | 'bordered'\nexport type TableSize = 'sm' | 'md'\n\n// --- Context ---\n\ninterface TableContextValue {\n variant: TableVariant\n size: TableSize\n responsive: boolean\n /** Header labels indexed by column position. Populated synchronously by\n * extractColumnMeta() during Root render so SSR HTML carries them. */\n labels: ReadonlyArray<string>\n /** Mutable ref: header Row writes inferred template, Root reads it */\n inferredTemplateRef: MutableRefObject<string | null>\n}\n\nconst TableContext = createContext<TableContextValue | null>(null)\n\nfunction useTable() {\n const ctx = useContext(TableContext)\n if (!ctx) throw new Error('Table compound components must be used within Table.Root')\n return ctx\n}\n\n// --- HeaderContext ---\n\nconst HeaderContext = createContext(false)\n\n// --- Container — owns the @container query target ---\n//\n// @deprecated Root sets up its own container query and accepts `sortChip`\n// / `pagination` as slot props. Container is kept exported as a passthrough\n// so existing call sites continue to work; new code should use Root alone.\n\nexport function Container({children}: {children: ReactNode}) {\n return <html.div style={styles.container}>{children}</html.div>\n}\n\n// --- Synchronous tree walk: widths + labels in document order ---\n//\n// Mirrors the pattern that was previously called extractTemplate(). Walks\n// the JSX tree, finds HeaderCell elements, captures their `width` and\n// `label` props (or extractText(children) fallback). Runs on every Root\n// render — cheap (small N, no DOM) — but worth memoising on `children`\n// reference if profiling flags it.\n\n// Shallow string-children extraction. We deliberately do NOT recurse into\n// child elements: an icon, tooltip trigger, or sort indicator nested inside\n// a HeaderCell would otherwise pollute the stack-mode label with its own\n// text content. JSX-only headers must set `label` explicitly.\nfunction extractText(node: ReactNode): string {\n let out = ''\n Children.forEach(node, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n out += String(child)\n }\n })\n return out\n}\n\n// Unwrap memo(...) / forwardRef(...) wrappers so JSX like\n// `<MemoizedHeaderCell ...>` still identifies as HeaderCell. Both wrappers\n// expose the inner component via a `.type` (memo) or `.render` (forwardRef)\n// property on the element-type descriptor. We walk both fields until we\n// reach a leaf, which is the underlying function/class component.\nfunction unwrapElementType(t: unknown): unknown {\n let current = t\n // Bounded loop — defensive cap against pathological infinite-nesting.\n for (let i = 0; i < 8 && current && typeof current === 'object'; i++) {\n const next =\n (current as {type?: unknown; render?: unknown}).type ?? (current as {render?: unknown}).render\n if (next == null) break\n current = next\n }\n return current\n}\n\nfunction extractColumnMeta(\n children: ReactNode,\n minColumnWidth: number,\n): {\n template: string\n compactTemplate: string\n labels: string[]\n} {\n const widths: string[] = []\n const compactWidths: string[] = []\n const labels: string[] = []\n\n function walk(node: ReactNode) {\n Children.forEach(node, (child) => {\n if (!isValidElement(child)) return\n const props = child.props as Record<string, any>\n const unwrappedType = unwrapElementType(child.type)\n const displayName =\n (unwrappedType as {name?: string; displayName?: string} | null)?.displayName ||\n (unwrappedType as {name?: string} | null)?.name ||\n ''\n if (unwrappedType === HeaderCell || displayName === 'HeaderCell') {\n // Default each column to `minmax(<minColumnWidth>px, 1fr)`: columns\n // share the row evenly (1fr) but never shrink below a readable floor.\n // That floor is what makes a dense table overflow its container\n // instead of crushing — Root's scroll wrapper then scrolls sideways.\n // Narrow columns (a checkbox) or naturally-wide ones (an actions\n // cell) override this with an explicit `width` (e.g. '40px',\n // 'max-content').\n const width = props.width || `minmax(${minColumnWidth}px, 1fr)`\n widths.push(width)\n // `compactWidth` lets the consumer switch to a content-aware\n // layout in the compact band while staying evenly distributed\n // at desktop. Falls back to `width` so columns that don't opt\n // in keep one template across both breakpoints.\n compactWidths.push(props.compactWidth || width)\n const explicit = typeof props.label === 'string' ? props.label : undefined\n const fallback = extractText(props.children).trim()\n const label = explicit ?? fallback\n if (!explicit && fallback === '' && props.children != null) {\n // Children are JSX with no string content — stack mode will render\n // an unlabeled cell. Tell the developer once.\n devWarnOnce(\n 'Table',\n 'headerCell-missing-label',\n 'Table.HeaderCell with JSX children must set `label` for stack-mode rendering.',\n )\n }\n labels.push(label)\n } else if (props.children) {\n walk(props.children)\n }\n })\n }\n\n walk(children)\n return {\n template: widths.join(' '),\n compactTemplate: compactWidths.join(' '),\n labels,\n }\n}\n\n// --- ScrollFrame ---\n//\n// Wraps the grid in the horizontal-scroll port and paints a soft fade at\n// whichever edge still has hidden columns, so a scrollable table advertises\n// that there's more to see (and stops advertising once you reach the end).\n// This is the ONLY JS the responsive Table uses, and it's purely cosmetic —\n// it reads scroll position and toggles fade opacity; it never changes layout,\n// so none of the flicker/oscillation risk of the old auto-stacking applies.\nfunction ScrollFrame({children}: {children: ReactNode}) {\n const scrollRef = useRef<HTMLDivElement>(null)\n const [edges, setEdges] = useState({start: false, end: false})\n\n useEffect(() => {\n const el = scrollRef.current\n if (!el) return\n const update = () => {\n const overflowing = el.scrollWidth - el.clientWidth > 1\n setEdges({\n start: overflowing && el.scrollLeft > 1,\n end: overflowing && el.scrollLeft + el.clientWidth < el.scrollWidth - 1,\n })\n }\n update()\n el.addEventListener('scroll', update, {passive: true})\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null\n ro?.observe(el)\n return () => {\n el.removeEventListener('scroll', update)\n ro?.disconnect()\n }\n }, [])\n\n return (\n <html.div style={styles.scrollFrame}>\n <html.div ref={scrollRef} style={styles.scrollX}>\n {children}\n </html.div>\n <html.div\n aria-hidden\n style={[styles.edgeFade, styles.edgeFadeLeft, edges.start && styles.edgeFadeVisible]}\n />\n <html.div\n aria-hidden\n style={[styles.edgeFade, styles.edgeFadeRight, edges.end && styles.edgeFadeVisible]}\n />\n </html.div>\n )\n}\n\n// --- Root ---\n\ninterface RootProps {\n children: ReactNode\n variant?: TableVariant\n size?: TableSize\n /** Opt out of responsive behavior (horizontal scroll + card breakpoint). Default true. */\n responsive?: boolean\n /**\n * Minimum width (px) each flexible column keeps before the table scrolls\n * horizontally rather than crushing its cells. Columns still share the row\n * evenly (`minmax(<minColumnWidth>px, 1fr)`); this is only the floor. Raise\n * it for roomier columns (more scrolling), lower it to fit more before\n * scrolling. Columns with an explicit `width` are unaffected. Default 120.\n */\n minColumnWidth?: number\n /**\n * Optional sort UI rendered above the grid. Visible only in stack mode\n * (SortChip carries its own `display: none → inline-flex` rule). Typical\n * value: `<Table.SortChip options={...} value={...} onChange={...} />`.\n */\n sortChip?: ReactNode\n /**\n * Optional pagination UI rendered below the grid. Typical value:\n * `<Table.Pagination table={tanstackTable} />`.\n */\n pagination?: ReactNode\n}\n\nexport function Root({\n children,\n variant = 'default',\n size = 'md',\n responsive = true,\n minColumnWidth = 120,\n sortChip,\n pagination,\n}: RootProps) {\n const inferredTemplateRef = useRef<string | null>(null)\n const {template, compactTemplate, labels} = extractColumnMeta(children, minColumnWidth)\n if (template) {\n inferredTemplateRef.current = template\n }\n\n const grid = (\n <html.div\n role=\"table\"\n style={[\n styles.root,\n // When responsive, use gridColumnsResponsive so the explicit column\n // template and the stack-mode @container override live in one StyleX\n // style object. Splitting them across two styles (gridColumns +\n // rootResponsive) causes StyleX conflict resolution to drop the\n // column template because rootResponsive's gridTemplateColumns key\n // always wins as the later entry in the array.\n template\n ? responsive\n ? styles.gridColumnsResponsive(template, compactTemplate)\n : styles.gridColumns(template)\n : undefined,\n responsive && styles.rootResponsive,\n ]}\n >\n {children}\n </html.div>\n )\n\n // Above the stack breakpoint the grid keeps each column ≥ minColumnWidth, so\n // a dense table overflows this wrapper and scrolls sideways instead of\n // crushing. Below it (@container ≤ sm) the grid is one column and there's\n // nothing to scroll. Non-responsive tables opt out of the frame entirely.\n const framedGrid = responsive ? <ScrollFrame>{grid}</ScrollFrame> : grid\n\n // Slots render unconditionally — `responsive=false` still wants its sort/\n // pagination chrome. Only the containerType:inline-size wrapper is\n // conditional, since it only matters when @container queries fire. SortChip\n // reveals itself in card mode via its own @container rule — no JS needed.\n const body = (\n <>\n {sortChip}\n {framedGrid}\n {pagination}\n </>\n )\n\n return (\n <TableContext.Provider value={{variant, size, responsive, labels, inferredTemplateRef}}>\n {responsive ? <html.div style={styles.rootContainer}>{body}</html.div> : body}\n </TableContext.Provider>\n )\n}\n\n// --- Header ---\n\nexport function Header({children}: {children: ReactNode}) {\n return (\n <HeaderContext.Provider value={true}>\n <html.div role=\"rowgroup\" style={styles.header}>\n {children}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\n// --- Body ---\n\nexport function Body({children}: {children: ReactNode}) {\n const {variant} = useTable()\n const childArray = Children.toArray(children) as ReactElement[]\n\n return (\n <HeaderContext.Provider value={false}>\n <html.div role=\"rowgroup\" style={styles.body}>\n {childArray.map((child, index) => {\n if (variant !== 'striped') return child\n // Key the provider by the child's React key (Children.toArray\n // guarantees one) so reordered rows carry their providers along\n // with them. Position is passed as the value because striping is\n // a positional concern even when row identity is stable.\n return (\n <RowIndexContext.Provider key={child.key ?? index} value={index}>\n {child}\n </RowIndexContext.Provider>\n )\n })}\n </html.div>\n </HeaderContext.Provider>\n )\n}\n\nconst RowIndexContext = createContext<number>(-1)\n\n// --- Row ---\n//\n// Always provides CellIndexContext, regardless of variant. Previously this\n// was only set up for `variant === 'bordered'`, which meant non-bordered\n// tables had every cell reading {index: 0} from the default — fine until\n// we needed to look up labels by column index.\n//\n// Interactive rows: pass `onClick` to make the row a navigation target.\n// The role stays `row` (per ARIA grid pattern) — we don't wrap in an outer\n// element with role=button, which would break the rowgroup → row hierarchy.\n// A click that originates inside an interactive descendant (button, link,\n// input, etc.) is treated as that descendant's click and does not fire\n// onClick — prevents double-fire when a row contains action buttons.\n\ninterface RowProps {\n children: ReactNode\n /** When set, the row becomes focusable + clickable. */\n onClick?: () => void\n /** Per-row accessible name — required when onClick is set, recommended otherwise. */\n 'aria-label'?: string\n}\n\n// Heuristic for \"clicking a descendant means the descendant, not the row\".\n// Matches the elements the WAI-ARIA grid pattern lists as \"widgets\" plus the\n// usual native focus-stealers.\nconst INTERACTIVE_SELECTOR =\n 'button, a, input, select, textarea, [role=\"button\"], [role=\"link\"], [role=\"checkbox\"], [role=\"menuitem\"], [role=\"switch\"], [role=\"tab\"], [contenteditable=\"true\"]'\n\nexport function Row({children, onClick, 'aria-label': ariaLabel}: RowProps) {\n const {variant} = useTable()\n const isHeader = useContext(HeaderContext)\n const rowIndex = useContext(RowIndexContext)\n const isEvenRow = rowIndex >= 0 && rowIndex % 2 === 1\n const childArray = Children.toArray(children) as ReactElement[]\n const isClickable = onClick !== undefined && !isHeader\n\n return (\n <html.div\n role=\"row\"\n tabIndex={isClickable ? 0 : undefined}\n aria-label={isClickable ? ariaLabel : undefined}\n onClick={\n isClickable\n ? (e) => {\n // react-strict-dom's typed click event omits `target`, but the\n // underlying SyntheticEvent still carries it. Cast through so\n // we can detect clicks that originate inside an interactive\n // descendant (action button, link, input) and let them be\n // attributed to that widget instead of the row.\n const target = (e as unknown as {target?: EventTarget | null}).target\n if (target instanceof Element && target.closest(INTERACTIVE_SELECTOR)) {\n return\n }\n onClick()\n }\n : undefined\n }\n onKeyDown={\n isClickable\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n onClick()\n }\n }\n : undefined\n }\n style={[\n styles.row,\n !isHeader && styles.bodyRow,\n !isHeader && variant === 'striped' && isEvenRow && styles.stripedEven,\n isClickable && styles.clickableRow,\n ]}\n >\n {childArray.map((child, index) => (\n // Key by the child's React key (Children.toArray assigns one) so a\n // reordered column carries its CellIndexContext provider along.\n // The positional `index` lives in the provider's value, not its key.\n <CellIndexContext.Provider\n key={child.key ?? index}\n value={{index, total: childArray.length}}\n >\n {child}\n </CellIndexContext.Provider>\n ))}\n </html.div>\n )\n}\n\nconst CellIndexContext = createContext<{index: number; total: number}>({index: 0, total: 0})\n\n// --- HeaderCell ---\n\nexport function HeaderCell({\n children,\n width: _width,\n compactWidth: _compactWidth,\n label: _label,\n 'aria-label': ariaLabel,\n}: {\n children?: ReactNode\n /** Column width at default (wide) viewport. CSS grid-template-columns\n * track value — e.g. '40px', '2fr', 'max-content'. Defaults to\n * 'minmax(0, 1fr)' so each column shares the row evenly and is free\n * to shrink below its content's intrinsic size. */\n width?: string\n /** Column width when the table's container drops into compact mode\n * (≤720px container). Use this to switch to a content-aware layout\n * at narrow widths — e.g. give a status badge `max-content` and the\n * action column `minmax(0, 2fr)` so it absorbs the slack — while\n * keeping evenly-distributed columns on wide screens. Defaults to the\n * same value as `width`. */\n compactWidth?: string\n /** Stack-mode label string. Optional when children is a plain string — the\n * text content is used as the label automatically. Required when children\n * contain JSX (icon + text, sort indicator, etc.). */\n label?: string\n 'aria-label'?: string\n}) {\n const {size, variant} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n\n return (\n <html.div\n role=\"columnheader\"\n aria-label={ariaLabel}\n style={[\n styles.headerCell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n ]}\n >\n {children}\n </html.div>\n )\n}\nHeaderCell.displayName = 'HeaderCell'\n\n// --- Cell ---\n//\n// Renders the column-header label as a real <html.span>, hidden via\n// container query in non-stack modes. The span is omitted entirely when\n// isActions=true — actions footers don't show a label.\n\nexport function Cell({children, isActions}: {children: ReactNode; isActions?: boolean}) {\n const {size, variant, labels, responsive} = useTable()\n const {index, total} = useContext(CellIndexContext)\n const isLast = variant === 'bordered' && index === total - 1\n const label = labels[index] ?? ''\n\n return (\n <html.div\n role=\"cell\"\n style={[\n styles.cell,\n size === 'sm' ? styles.cellSm : styles.cellMd,\n variant === 'bordered' && styles.borderedCell,\n isLast && styles.borderedCellLast,\n isActions && styles.cellActions,\n ]}\n >\n {responsive && !isActions && label !== '' ? (\n <html.span style={styles.cellLabel}>{label}</html.span>\n ) : null}\n {isActions ? children : <html.div style={styles.cellValue}>{children}</html.div>}\n </html.div>\n )\n}\n\n// --- Export ---\n\n/**\n * The presentational table. Deliberately free of any TanStack import: this is\n * reachable from the package root, and a static import here would put\n * `@tanstack/react-table` in the module graph of every consumer, including the\n * ones that never render a data table. A bundler has to RESOLVE an import\n * before it can tree-shake the code behind it, so that made an optional\n * feature's peer dependency mandatory for everyone.\n *\n * The TanStack-aware parts — Pagination, SortIndicator, ColumnFilter,\n * SortChip, FromTanstack, useDataTable, VirtualTable — live behind\n * `@duro-app/ui/table`, which re-exports this object with them attached. So\n * `Table.Root` is identical either way; only the import specifier differs.\n */\nexport const TableCore = {\n /** @deprecated Wrap behaviour is built into Table.Root. Drop this wrapper from new code. */\n Container,\n Root,\n Header,\n Body,\n Row,\n HeaderCell,\n Cell,\n}\n\nexport const Table = TableCore\n"],"names":["styles","root","$$css","trigger","backdrop","popup","popupEnd","item","itemHighlighted","separator","linkItem","MenuContext","createContext","useMenu","ctx","useContext","Error","useMenuRoot","$","_c","open","setOpen","useState","highlightedId","setHighlightedId","menuId","useId","rootRef","useRef","triggerRef","t0","Symbol","for","Map","itemsRef","t1","orderRef","needsInitialHighlightRef","t2","current","focus","close","t3","prev","toggle","t4","t5","order","length","useEffect","t6","id","element","set","map","ids","keys","sort","a","b","elA","get","elB","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","delete","filter","i","registerItem","t7","t8","handleKeyDown","e","order_0","bb54","key","preventDefault","prev_2","idx_0","indexOf","idx","prev_1","items","prev_0","click","addEventListener","removeEventListener","t9","IS_PROD","process","env","NODE_ENV","warned","Set","devWarnOnce","scope","code","message","has","add","console","warn","Root","children","_rsdMerge","_rsdDefaultStyles","div","NESTED_CONTROL","Trigger","localRef","querySelector","undefined","button","Popup","align","jsx","Item","onClick","ref","isHighlighted","el","handleClick","LinkItem","href","Separator","Menu","loggedMessages","errorMsg","msg","strictAttributeSet","isPropAllowed","styleq$1","styleq_2","cache","compiledKey","createStyleq","options","disableCache","disableMix","transform","definedProperties","className","inlineStyle","debugString","nextCache","possibleStyle","_i","style","classNameChunk","cacheEntry","definedPropertiesChunk","prop","value","compiledKeyValue","weakMap","subStyle","_prop","_value","styleProps","styleq","optimizedStyleq","merge","dataStyleSrc","result","chunks","pathsMap","chunk","trimmed","path","line","validateStrictProps","props","createStrictDOMComponent","TagName","defaultStyle","debugStyle","Component","htmlFor","restProps","hostProps","hostStyleProps","a$1","article$1","aside$1","b$1","bdi$1","bdo$1","blockquote$1","br$1","button$1","code$1","del$1","div$1","em$1","fieldset$1","footer$1","form$1","heading","header$1","hr$1","i$1","img$1","input$1","ins$1","kbd$1","label$1","li$1","main$1","mark$1","nav$1","ol$1","optgroup$1","option$1","p$1","pre$1","s$1","section$1","select$1","span$1","strong$1","sub$1","sup$1","textarea$1","u$1","ul$1","defaultStyles","article","aside","bdi","bdo","blockquote","br","del","em","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hr","img","input","ins","kbd","label","li","main","mark","nav","ol","optgroup","option","p","pre","s","section","select","span","strong","sub","sup","textarea","u","ul","html","breakpointsPx","xs","sm","md","lg","xl","container","rootContainer","clickableRow","rootResponsive","body","row","bodyRow","headerCell","cell","cellValue","cellLabel","cellActions","cellSm","cellMd","stripedEven","borderedCell","borderedCellLast","sortChip","scrollX","scrollFrame","edgeFade","edgeFadeLeft","edgeFadeRight","edgeFadeVisible","gridColumns","template","gridColumnsResponsive","compactTemplate","TableContext","useTable","HeaderContext","Container","extractText","node","out","Children","forEach","child","String","unwrapElementType","t","next","type","render","extractColumnMeta","minColumnWidth","widths","compactWidths","labels","walk","isValidElement","unwrappedType","displayName","name","HeaderCell","width","push","compactWidth","explicit","fallback","trim","join","ScrollFrame","scrollRef","start","end","edges","setEdges","update","overflowing","scrollWidth","clientWidth","scrollLeft","passive","ro","ResizeObserver","observe","disconnect","jsxs","variant","size","responsive","pagination","inferredTemplateRef","grid","Fragment","Header","Body","T0","T1","childArray","toArray","Provider","index","RowIndexContext","INTERACTIVE_SELECTOR","Row","ariaLabel","isHeader","rowIndex","isEvenRow","isClickable","target","Element","closest","e_0","CellIndexContext","total","isLast","Cell","isActions","TableCore","Table"],"mappings":";;;AAOO,MAAMA,IAAM;AAAA,EAAAC,MAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,kBAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAC,SAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAAD,OAAA;AAAA,EAAA;AAAA,EAAAE,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,iBAAA;AAAA,IAAAF,OAAA;AAAA,EAAA;AAAA,EAAAG,OAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,iBAAA;AAAA,IAAAH,OAAA;AAAA,EAAA;AAAA,EAAAI,UAAA;AAAA,IAAA,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAAJ,OAAA;AAAA,EAAA;AAAA,EAAAK,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAAL,OAAA;AAAA,EAAA;AAAA,EAAAM,iBAAA;AAAA,IAAA,0BAAA;AAAA,IAAAN,OAAA;AAAA,EAAA;AAAA,EAAAO,WAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAAP,OAAA;AAAA,EAAA;AAAA,EAAAQ,UAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAR,OAAA;AAAA,EAAA;AAAA,GCMNS,KAAcC,EAAuC,IAAI;AAE/D,SAAAC,IAAA;AACL,QAAAC,IAAYC,EAAWJ,EAAW;AAClC,MAAI,CAACG;AAAK,UAAM,IAAIE,MAAM,wDAAwD;AAAC,SAC5EF;AAAG;ACfL,SAAAG,KAAA;AAAA,QAAAC,IAAAC,EAAAA,EAAA,EAAA,GACL,CAAAC,GAAAC,CAAA,IAAwBC,EAAS,EAAK,GACtC,CAAAC,GAAAC,CAAA,IAA0CF,EAAwB,IAAI,GACtEG,IAAeC,EAAAA,GACfC,IAAgBC,EAAuB,IAAI,GAC3CC,IAAmBD,EAAiC,IAAI;AAAC,MAAAE;AAAA,EAAAZ,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KACjCF,wBAAIG,IAAAA,GAA0Bf,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAtD,QAAAgB,IAAiBN,EAAOE,CAA8B;AAAC,MAAAK;AAAA,EAAAjB,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KACrBG,IAAA,CAAA,GAAEjB,OAAAiB,KAAAA,IAAAjB,EAAA,CAAA;AAApC,QAAAkB,IAAiBR,EAAiBO,CAAE,GACpCE,IAAiCT,EAAO,EAAK;AAAC,MAAAU;AAAA,EAAApB,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KAEpBM,IAAAA,MAAA;AACxBjB,IAAAA,EAAQ,EAAK,GACbG,EAAiB,IAAI,GACrBa,EAAwBE,UAAW,IACnCV,EAAUU,SAAeC,MAAAA;AAAAA,EAAE,GAC5BtB,OAAAoB,KAAAA,IAAApB,EAAA,CAAA;AALD,QAAAuB,IAAcH;AAKR,MAAAI;AAAA,EAAAxB,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KAEqBU,IAAAA,MAAA;AACzBrB,IAAAA,EAAQsB,CAAAA,OACDA,KAGHnB,EAAiB,IAAI,GACrBa,EAAwBE,UAAW,MAHnCF,EAAwBE,UAAW,IAK9B,CAACI,EACT;AAAA,EAAC,GACHzB,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AAVD,QAAA0B,IAAeF;AAUT,MAAAG,GAAAC;AAAA,EAAA5B,SAAAE,KAKIyB,IAAAA,MAAA;AACR,QAAIzB,KAAQiB,EAAwBE,SAAQ;AAC1CF,MAAAA,EAAwBE,UAAW;AACnC,YAAAQ,IAAcX,EAAQG;AACtB,MAAIQ,EAAKC,SAAU,KACjBxB,EAAiBuB,EAAK,CAAA,CAAG;AAAA,IAC1B;AAAA,EACF,GACAD,IAAA,CAAC1B,CAAI,GAACF,OAAAE,GAAAF,OAAA2B,GAAA3B,OAAA4B,MAAAD,IAAA3B,EAAA,CAAA,GAAA4B,IAAA5B,EAAA,CAAA,IART+B,EAAUJ,GAQPC,CAAM;AAAC,MAAAI;AAAA,EAAAhC,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KAEuBkB,IAAAA,CAAAC,GAAAC,MAAA;AAC/BlB,IAAAA,EAAQK,QAAQc,IAAKF,GAAIC,CAAO;AAChC,UAAAE,IAAYpB,EAAQK,SACpBgB,IAAY,CAAA,GAAID,EAAGE,MAAO;AAC1BD,WAAAA,EAAGE,KAAM,CAAAC,GAAAC,MAAA;AACP,YAAAC,IAAYN,EAAGO,IAAKH,CAAC,GACrBI,IAAYR,EAAGO,IAAKF,CAAC;AACrB,aAAI,CAACC,KAAD,CAASE,IAAY,IAClBF,EAAGG,wBAAyBD,CAAG,IAAIE,KAAIC,8BAAvC,KAAA;AAAA,IAA4E,CACpF,GACD7B,EAAQG,UAAWgB,GACZ,MAAA;AACLrB,MAAAA,EAAQK,QAAQ2B,OAAQf,CAAE,GAC1Bf,EAAQG,UAAWH,EAAQG,QAAQ4B,OAAQC,CAAAA,MAAOA,MAAMjB,CAAE;AAAA,IAA1C;AAAA,EACjB,GACFjC,OAAAgC,KAAAA,IAAAhC,EAAA,CAAA;AAfD,QAAAmD,IAAqBnB;AAef,MAAAoB,GAAAC;AAAA,EAAArD,SAAAE,KAGIkD,IAAAA,MAAA;AACR,UAAArE,IAAa0B,EAAOY;AACpB,QAAI,CAACtC,KAAD,CAAUmB;AAAI;AAElB,UAAAoD,IAAA,SAAAC,GAAA;AACE,YAAAC,IAActC,EAAQG;AACtB,UAAIQ,EAAKC,WAAY;AAAS2B,QAAAA,EAE9B,SAAQF,EAACG,KAAAA;AAAAA,UAAI,KACN,aAAW;AACdH,YAAAA,EAACI,eAAAA,GACDrD,EAAiBsD,CAAAA,MAAA;AACf,oBAAAC,IAAYpC,IAAOI,EAAKiC,QAASrC,CAAS,IAA9B;AAA+B,qBACpCI,GAAOkC,IAAM,KAAKlC,EAAKC,MAAO;AAAA,YAAC,CACvC;AACD,kBAAA2B;AAAAA,UAAK;AAAA,UAAA,KAEF,WAAS;AACZF,YAAAA,EAACI,eAAAA,GACDrD,EAAiB0D,CAAAA,MAAA;AACf,oBAAAD,IAAYtC,IAAOI,EAAKiC,QAASrC,CAAQ,IAA7B;AAA8B,qBACnCI,GAAOkC,IAAM,IAAIlC,EAAKC,UAAWD,EAAKC,MAAO;AAAA,YAAC,CACtD;AACD,kBAAA2B;AAAAA,UAAK;AAAA,UAAA,KAEF,QAAM;AACTF,YAAAA,EAACI,eAAAA,GACDrD,EAAiBuB,EAAK,CAAA,CAAG;AACzB,kBAAA4B;AAAAA,UAAK;AAAA,UAAA,KAEF,OAAK;AACRF,YAAAA,EAACI,eAAAA,GACDrD,EAAiBuB,EAAMA,EAAKC,SAAU,CAAC,CAAC;AACxC,kBAAA2B;AAAAA,UAAK;AAAA,UAAA,KAEF;AAAA,UAAO,KACP,KAAG;AACNF,YAAAA,EAACI,eAAAA;AACD,kBAAAM,IAAcjD,EAAQK;AACtBf,YAAAA,EAAiB4D,CAAAA,OACXzC,KACSwC,EAAKtB,IAAKlB,CAAI,GACvB0C,MAAAA,GAEG1C,EACR;AACD,kBAAAgC;AAAAA,UAAK;AAAA,UAAA,KAEF,UAAQ;AACXF,YAAAA,EAACI,eAAAA,GACDpC,EAAAA;AACA,kBAAAkC;AAAAA,UAAK;AAAA,UAAA,KAEF;AACHlC,YAAAA,EAAAA;AAAAA,QAAO;AAAA,IAGV;AAGHxC,WAAAA,EAAIqF,iBAAkB,WAAWd,CAAa,GACvC,MAAMvE,EAAIsF,oBAAqB,WAAWf,CAAa;AAAA,EAAC,GAC9DD,IAAA,CAACnD,GAAMqB,CAAK,GAACvB,OAAAE,GAAAF,OAAAoD,GAAApD,QAAAqD,MAAAD,IAAApD,EAAA,CAAA,GAAAqD,IAAArD,EAAA,EAAA,IA9DhB+B,EAAUqB,GA8DPC,CAAa;AAAC,MAAAiB;AAAA,SAAAtE,EAAA,EAAA,MAAAK,KAAAL,UAAAO,KAAAP,EAAA,EAAA,MAAAE,KAaVoE,IAAA;AAAA,IAAA1E,KAXuB;AAAA,MAAAM,MAAAA;AAAAA,MAAAwB,QAAAA;AAAAA,MAAAH,OAAAA;AAAAA,MAAAhB,QAAAA;AAAAA,MAAAF,eAAAA;AAAAA,MAAAC,kBAAAA;AAAAA,MAAA6C,cAAAA;AAAAA,MAAAxC,YAAAA;AAAAA,IAAAA;AAAAA,IAWvBF,SAAAA;AAAAA,EAAAA,GAAcT,QAAAK,GAAAL,QAAAO,GAAAP,QAAAE,GAAAF,QAAAsE,KAAAA,IAAAtE,EAAA,EAAA,GAAdsE;AAAc;ACtIvB,MAAMC,KAAU,OAAOC,UAAY,OAAeA,QAAQC,KAAKC,aAAa,cACtEC,yBAAaC,IAAAA;AAGZ,SAASC,GAAYC,GAAeC,GAAcC,GAAuB;AAC9E,QAAMtB,IAAM,GAAGoB,CAAK,IAAIC,CAAI;AAC5B,EAAIR,MAAWI,GAAOM,IAAIvB,CAAG,MAC7BiB,GAAOO,IAAIxB,CAAG,GAEdyB,QAAQC,KAAK,gBAAgBN,CAAK,KAAKE,CAAO,EAAE;AAClD;ACFA,SAAAK,GAAAzE,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,CAAA,GAAc;AAAA,IAAAqF,UAAAA;AAAAA,EAAAA,IAAA1E,GACZ;AAAA,IAAAhB,KAAAA;AAAAA,IAAAa,SAAAA;AAAAA,EAAAA,IAAuBV,GAAAA;AAAa,MAAAkB;AAAA,EAAAjB,EAAA,CAAA,MAAAsF,KAAAtF,SAAAS,KAIhCQ,uEAAeR,QAAO,GAAA8E,EAAAC,EAAAC,KAAS3G,EAAMC,IAAK,GACvCuG,UAAAA,GACH,GAAWtF,OAAAsF,GAAAtF,OAAAS,GAAAT,OAAAiB,KAAAA,IAAAjB,EAAA,CAAA;AAAA,MAAAoB;AAAA,SAAApB,EAAA,CAAA,MAAAJ,KAAAI,SAAAiB,KAHbG,sBAAA3B,GAAA,UAAA,EAA6BG,OAAAA,GAC3BqB,UAAAA,GAGF,GAAuBjB,OAAAJ,GAAAI,OAAAiB,GAAAjB,OAAAoB,KAAAA,IAAApB,EAAA,CAAA,GAJvBoB;AAIuB;AAQ3B,MAAMsE,KAAiB;AAEvB,SAAAC,GAAA/E,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,CAAA,GAAiB;AAAA,IAAAqF,UAAAA;AAAAA,EAAAA,IAAA1E,GACf;AAAA,IAAAV,MAAAA;AAAAA,IAAAwB,QAAAA;AAAAA,IAAAnB,QAAAA;AAAAA,IAAAI,YAAAA;AAAAA,EAAAA,IAA2ChB,EAAAA,GAC3CiG,IAAiBlF,EAA0B,IAAI;AAAC,MAAAO;AAAA,EAAAjB,SAAAW,KAGtCM,IAAAA,MAAA;AACRN,IAAAA,EAAUU,UAAWuE,EAAQvE;AAAAA,EAAX,GACnBrB,OAAAW,GAAAX,OAAAiB,KAAAA,IAAAjB,EAAA,CAAA,GAFD+B,EAAUd,CAET;AAAC,MAAAG,GAAAI;AAAA,EAAAxB,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KAGQM,IAAAA,MAAA;AACR,IAAIwE,EAAQvE,SAAuBwE,cAACH,EAAc,KAChDb,GACE,QACA,0BACA,iOACF;AAAA,EACD,GACArD,IAAA,CAAA,GAAExB,OAAAoB,GAAApB,OAAAwB,MAAAJ,IAAApB,EAAA,CAAA,GAAAwB,IAAAxB,EAAA,CAAA,IARL+B,EAAUX,GAQPI,CAAE;AASc,QAAAG,IAAAzB,IAAAK,IAAAuF;AAAyB,MAAAlE;AAAA,SAAA5B,EAAA,CAAA,MAAAsF,KAAAtF,EAAA,CAAA,MAAAE,KAAAF,EAAA,CAAA,MAAA2B,KAAA3B,SAAA0B,KAN1CE,0EACOgE,QACA,MAAA,UACIlE,YACMxB,iBAAAA,GACD,iBAAA,QACC,iBAAAyB,MAAyB4D,EAAAC,EAAAO,QACjCjH,EAAMG,OAAQ,GAEpBqG,UAAAA,EAAAA,CACH,GAActF,OAAAsF,GAAAtF,OAAAE,GAAAF,OAAA2B,GAAA3B,OAAA0B,GAAA1B,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA,GAVd4B;AAUc;AAUlB,SAAAoE,GAAApF,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,EAAA,GAAe;AAAA,IAAAqF,UAAAA;AAAAA,IAAAW,OAAAhF;AAAAA,EAAAA,IAAAL,GAAWqF,IAAAhF,MAAA6E,SAAA,UAAA7E,GACxB;AAAA,IAAAf,MAAAA;AAAAA,IAAAqB,OAAAA;AAAAA,IAAAhB,QAAAA;AAAAA,IAAAF,eAAAA;AAAAA,EAAAA,IAA6CV,EAAAA;AAE7C,MAAI,CAACO;AAAI,WAAS;AAAI,MAAAkB;AAAA,EAAApB,SAAAuB,KAIlBH,IAAA,gBAAA8E,EAAA,OAAA,EAAA,oBAAA,oBAAA,GAAAX,EAAAC,EAAAC,KAAiB3G,EAAMI,QAAS,GAAWqC,SAAAA,EAAAA,CAAK,GAAIvB,OAAAuB,GAAAvB,OAAAoB,KAAAA,IAAApB,EAAA,CAAA;AAI3B,QAAAwB,IAAAnB,KAAAyF,QACDnE,IAAAsE,MAAU,SAASnH,EAAMM;AAAS,MAAAwC;AAAA,EAAA5B,SAAA2B,KAAjDC,KAAC9C,EAAMK,OAAQwC,CAAkC,GAAC3B,OAAA2B,GAAA3B,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA;AAAA,MAAAgC;AAAA,EAAAhC,EAAA,CAAA,MAAAsF,KAAAtF,EAAA,CAAA,MAAAO,KAAAP,EAAA,CAAA,MAAAwB,KAAAxB,SAAA4B,KAJ3DI,sBAAA,OAAA,EAAA,oBAAA,oBACMzB,IAAAA,GACC,MAAA,QACkB,yBAAAiB,GAA0B,GAAA+D,EAAAC,EAAAC,KAC1C7D,CAAkD,GAExD0D,UAAAA,GACH,GAAWtF,OAAAsF,GAAAtF,OAAAO,GAAAP,OAAAwB,GAAAxB,OAAA4B,GAAA5B,OAAAgC,KAAAA,IAAAhC,EAAA,CAAA;AAAA,MAAAoD;AAAA,SAAApD,EAAA,CAAA,MAAAoB,KAAApB,UAAAgC,KATboB,4BACEhC,UAAAA;AAAAA,IAAAA;AAAAA,IACAY;AAAAA,EAAAA,GAOW,GACVhC,OAAAoB,GAAApB,QAAAgC,GAAAhC,QAAAoD,KAAAA,IAAApD,EAAA,EAAA,GAVHoD;AAUG;AAUP,SAAA+C,GAAAvF,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAmG,SAAAA;AAAAA,IAAAd,UAAAA;AAAAA,EAAAA,IAAA1E,GACZ;AAAA,IAAAW,OAAAA;AAAAA,IAAAlB,eAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAA6C,cAAAA;AAAAA,EAAAA,IAA+DxD,EAAAA,GAC/DsC,IAAWzB,EAAAA,GACX6F,IAAY3F,EAAuB,IAAI,GACvC4F,IAAsBjG,MAAkB4B;AAAE,MAAAhB,GAAAG;AAAA,EAAApB,EAAA,CAAA,MAAAiC,KAAAjC,SAAAmD,KAEhClC,IAAAA,MAAA;AACR,UAAAsF,IAAWF,EAAGhF;AACd,QAAKkF;AAAU,aACRpD,EAAalB,GAAIsE,CAAE;AAAA,EAAC,GAC1BnF,IAAA,CAACa,GAAIkB,CAAY,GAACnD,OAAAiC,GAAAjC,OAAAmD,GAAAnD,OAAAiB,GAAAjB,OAAAoB,MAAAH,IAAAjB,EAAA,CAAA,GAAAoB,IAAApB,EAAA,CAAA,IAJrB+B,EAAUd,GAIPG,CAAkB;AAAC,MAAAI;AAAA,EAAAxB,EAAA,CAAA,MAAAuB,KAAAvB,SAAAoG,KAEF5E,IAAAA,MAAA;AAClB4E,IAAAA,IAAAA,GACA7E,EAAAA;AAAAA,EAAO,GACRvB,OAAAuB,GAAAvB,OAAAoG,GAAApG,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AAHD,QAAAwG,IAAoBhF;AAGnB,MAAAG;AAAA,EAAA3B,EAAA,CAAA,MAAAiC,KAAAjC,SAAAM,KAQmBqB,IAAAA,MAAMrB,EAAiB2B,CAAE,GAACjC,OAAAiC,GAAAjC,OAAAM,GAAAN,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AACrB,QAAA4B,IAAA0E,KAAiBxH,EAAMQ;AAAgB,MAAA0C;AAAA,EAAAhC,UAAA4B,KAArDI,KAAClD,EAAMO,MAAOuC,CAAuC,GAAC5B,QAAA4B,GAAA5B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA;AAAA,MAAAoD;AAAA,SAAApD,EAAA,EAAA,MAAAsF,KAAAtF,EAAA,EAAA,MAAAwG,KAAAxG,EAAA,EAAA,MAAAiC,KAAAjC,EAAA,EAAA,MAAA2B,KAAA3B,UAAAgC,KAN/DoB,wEACOiD,KAAAA,GACDpE,IAAAA,GACC,MAAA,YACIuE,SAAAA,GACO,gBAAA7E,MAA0B4D,EAAAC,EAAAC,KACnCzD,CAAsD,GAE5DsD,UAAAA,GACH,GAAWtF,QAAAsF,GAAAtF,QAAAwG,GAAAxG,QAAAiC,GAAAjC,QAAA2B,GAAA3B,QAAAgC,GAAAhC,QAAAoD,KAAAA,IAAApD,EAAA,EAAA,GATXoD;AASW;AAUf,SAAAqD,GAAA7F,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,EAAA,GAAkB;AAAA,IAAAyG,MAAAA;AAAAA,IAAApB,UAAAA;AAAAA,EAAAA,IAAA1E,GAChB;AAAA,IAAAW,OAAAA;AAAAA,IAAAlB,eAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAA6C,cAAAA;AAAAA,EAAAA,IAA+DxD,EAAAA,GAC/DsC,IAAWzB,EAAAA,GACX6F,IAAY3F,EAA0B,IAAI,GAC1C4F,IAAsBjG,MAAkB4B;AAAE,MAAAhB,GAAAG;AAAA,EAAApB,EAAA,CAAA,MAAAiC,KAAAjC,SAAAmD,KAEhClC,IAAAA,MAAA;AACR,UAAAsF,IAAWF,EAAGhF;AACd,QAAKkF;AAAU,aACRpD,EAAalB,GAAIsE,CAAE;AAAA,EAAC,GAC1BnF,IAAA,CAACa,GAAIkB,CAAY,GAACnD,OAAAiC,GAAAjC,OAAAmD,GAAAnD,OAAAiB,GAAAjB,OAAAoB,MAAAH,IAAAjB,EAAA,CAAA,GAAAoB,IAAApB,EAAA,CAAA,IAJrB+B,EAAUd,GAIPG,CAAkB;AAAC,MAAAI;AAAA,EAAAxB,EAAA,CAAA,MAAAiC,KAAAjC,SAAAM,KASFkB,IAAAA,MAAMlB,EAAiB2B,CAAE,GAACjC,OAAAiC,GAAAjC,OAAAM,GAAAN,OAAAwB,KAAAA,IAAAxB,EAAA,CAAA;AACJ,QAAA2B,IAAA2E,KAAiBxH,EAAMQ;AAAgB,MAAAsC;AAAA,EAAA5B,SAAA2B,KAAtEC,IAAA,CAAC9C,EAAMO,MAAOP,EAAMU,UAAWmC,CAAuC,GAAC3B,OAAA2B,GAAA3B,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA;AAAA,MAAAgC;AAAA,SAAAhC,SAAAsF,KAAAtF,EAAA,EAAA,MAAAuB,KAAAvB,EAAA,EAAA,MAAA0G,KAAA1G,EAAA,EAAA,MAAAiC,KAAAjC,UAAAwB,KAAAxB,EAAA,EAAA,MAAA4B,KAPhFI,sEACOqE,KAAAA,GACDpE,IAAAA,GACEyE,MAAAA,GACGnF,SAAAA,GACJ,MAAA,YACW,gBAAAC,GAA0B,GAAA+D,EAAAC,EAAAhD,GACnCZ,CAAuE,GAE7E0D,UAAAA,GACH,GAAStF,OAAAsF,GAAAtF,QAAAuB,GAAAvB,QAAA0G,GAAA1G,QAAAiC,GAAAjC,QAAAwB,GAAAxB,QAAA4B,GAAA5B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GAVTgC;AAUS;AAQb,SAAA2E,KAAA;AAAA,QAAA3G,IAAAC,EAAAA,EAAA,CAAA;AAAA,MAAAW;AAAA,SAAAZ,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KACSF,wEAAe,MAAA,aAA6B,oBAAA,cAAY,GAAA2E,EAAAC,EAAAC,KAAQ3G,EAAMS,SAAU,GAAA,GAAIS,OAAAY,KAAAA,IAAAZ,EAAA,CAAA,GAApFY;AAAoF;AAGtF,MAAMgG,KAAO;AAAA,EAAA,MAClBvB;AAAAA,EACAM,SAAAA;AAAAA,EACAK,OAAAA;AAAAA,EACAG,MAAAA;AAAAA,EACAM,UAAAA;AAAAA,EACAE,WAAAA;AACF;AChLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaA,MAAME,KAAiB,CAAA;AACvB,SAASC,GAASC,GAAK;AACrB,EAAI,QAAQ,IAAI,aAAa,UAAUF,GAAeE,CAAG,MAGzDF,GAAeE,CAAG,IAAI,IACtB,QAAQ,MAAM,6BAA6BA,CAAG,EAAE;AAClD;AACA,MAAMC,KAAqB,oBAAI,IAAI,CAAC,OAAO,yBAAyB,eAAe,qBAAqB,aAAa,gBAAgB,iBAAiB,iBAAiB,qBAAqB,gBAAgB,iBAAiB,gBAAgB,oBAAoB,gBAAgB,iBAAiB,qBAAqB,iBAAiB,eAAe,iBAAiB,eAAe,gBAAgB,qBAAqB,cAAc,mBAAmB,cAAc,aAAa,cAAc,kBAAkB,wBAAwB,oBAAoB,aAAa,oBAAoB,iBAAiB,gBAAgB,iBAAiB,iBAAiB,wBAAwB,iBAAiB,iBAAiB,qBAAqB,gBAAgB,iBAAiB,gBAAgB,aAAa,iBAAiB,iBAAiB,iBAAiB,kBAAkB,kBAAkB,gBAAgB,aAAa,WAAW,YAAY,eAAe,YAAY,kBAAkB,gBAAgB,OAAO,YAAY,YAAY,aAAa,iBAAiB,gBAAgB,iBAAiB,OAAO,UAAU,UAAU,QAAQ,MAAM,SAAS,aAAa,SAAS,QAAQ,WAAW,OAAO,aAAa,OAAO,aAAa,YAAY,QAAQ,cAAc,iBAAiB,UAAU,YAAY,WAAW,iBAAiB,UAAU,SAAS,WAAW,WAAW,aAAa,cAAc,sBAAsB,qBAAqB,uBAAuB,WAAW,aAAa,aAAa,WAAW,UAAU,wBAAwB,WAAW,mBAAmB,iBAAiB,kBAAkB,kBAAkB,iBAAiB,gBAAgB,iBAAiB,eAAe,YAAY,YAAY,qBAAqB,WAAW,eAAe,YAAY,kBAAkB,OAAO,YAAY,QAAQ,QAAQ,YAAY,cAAc,OAAO,UAAU,QAAQ,SAAS,YAAY,UAAU,QAAQ,SAAS,SAAS,4BAA4B,eAAe,gBAAgB,gBAAgB,eAAe,cAAc,eAAe,aAAa,iBAAiB,cAAc,eAAe,cAAc,CAAC;AACpkE,SAASC,GAAcvD,GAAK;AAC1B,SAAOsD,GAAmB,IAAItD,CAAG,KAAKA,EAAI,QAAQ,OAAO,IAAI;AAC/D;AACA,IAAIwD,IAAW,CAAA;AACf,OAAO,eAAeA,GAAU,cAAc;AAAA,EAC5C,OAAO;AACT,CAAC;AACD,IAAIC,KAAWD,EAAS,SAAS,QAC7BE,KAAQ,oBAAI,QAAO,GACnBC,KAAc;AAClB,SAASC,GAAaC,GAAS;AAC7B,MAAIC,GACAC,GACAC;AACJ,SAAIH,KAAW,SACbC,IAAeD,EAAQ,iBAAiB,IACxCE,IAAaF,EAAQ,eAAe,IACpCG,IAAYH,EAAQ,YAEf,WAAkB;AAOvB,aANII,IAAoB,CAAA,GACpBC,IAAY,IACZC,IAAc,MACdC,IAAc,IACdC,IAAYP,IAAe,OAAOJ,IAClCtI,IAAS,IAAI,MAAM,UAAU,MAAM,GAC9BoE,IAAI,GAAGA,IAAI,UAAU,QAAQA;AACpC,MAAApE,EAAOoE,CAAC,IAAI,UAAUA,CAAC;AAEzB,WAAOpE,EAAO,SAAS,KAAG;AACxB,UAAIkJ,IAAgBlJ,EAAO,IAAG;AAC9B,UAAI,EAAAkJ,KAAiB,QAAQA,MAAkB,KAG/C;AAAA,YAAI,MAAM,QAAQA,CAAa,GAAG;AAChC,mBAASC,IAAK,GAAGA,IAAKD,EAAc,QAAQC;AAC1C,YAAAnJ,EAAO,KAAKkJ,EAAcC,CAAE,CAAC;AAE/B;AAAA,QACF;AACA,YAAIC,IAAQR,KAAa,OAAOA,EAAUM,CAAa,IAAIA;AAC3D,YAAIE,EAAM,SAAS,MAAM;AACvB,cAAIC,IAAiB;AACrB,cAAIJ,KAAa,QAAQA,EAAU,IAAIG,CAAK,GAAG;AAC7C,gBAAIE,IAAaL,EAAU,IAAIG,CAAK;AACpC,YAAIE,KAAc,SAChBD,IAAiBC,EAAW,CAAC,GAC7BN,IAAcM,EAAW,CAAC,GAC1BT,EAAkB,KAAK,MAAMA,GAAmBS,EAAW,CAAC,CAAC,GAC7DL,IAAYK,EAAW,CAAC;AAAA,UAE5B,OAAO;AACL,gBAAIC,IAAyB,CAAA;AAC7B,qBAASC,KAAQJ,GAAO;AACtB,kBAAIK,IAAQL,EAAMI,CAAI;AACtB,kBAAIA,MAASjB,IAAa;AACxB,oBAAImB,IAAmBN,EAAMI,CAAI;AACjC,gBAAIE,MAAqB,OACvBV,IAAcA,IAAcU,IAAmB,OAAOV,IAAcU;AAEtE;AAAA,cACF;AACA,cAAI,OAAOD,KAAU,YAAYA,MAAU,OACpCZ,EAAkB,SAASW,CAAI,MAClCX,EAAkB,KAAKW,CAAI,GACvBP,KAAa,QACfM,EAAuB,KAAKC,CAAI,GAE9B,OAAOC,KAAU,aACnBJ,KAAkBA,IAAiB,MAAMI,IAAQA,MAIrD,QAAQ,MAAM,WAAW,OAAOD,GAAM,UAAU,EAAE,OAAO,OAAOC,CAAK,GAAG,6BAAiC,CAAC;AAAA,YAE9G;AACA,gBAAIR,KAAa,MAAM;AACrB,kBAAIU,IAAU,oBAAI,QAAO;AACzB,cAAAV,EAAU,IAAIG,GAAO,CAACC,GAAgBE,GAAwBP,GAAaW,CAAO,CAAC,GACnFV,IAAYU;AAAA,YACd;AAAA,UACF;AACA,UAAIN,MACFP,IAAYA,IAAYO,IAAiB,MAAMP,IAAYO;AAAA,QAE/D,WACMV;AACF,UAAII,KAAe,SACjBA,IAAc,CAAA,IAEhBA,IAAc,OAAO,OAAO,CAAA,GAAIK,GAAOL,CAAW;AAAA,aAC7C;AACL,cAAIa,IAAW;AACf,mBAASC,KAAST,GAAO;AACvB,gBAAIU,IAASV,EAAMS,CAAK;AACxB,YAAIC,MAAW,WACRjB,EAAkB,SAASgB,CAAK,MAC/BC,KAAU,SACRf,KAAe,SACjBA,IAAc,CAAA,IAEZa,KAAY,SACdA,IAAW,CAAA,IAEbA,EAASC,CAAK,IAAIC,IAEpBjB,EAAkB,KAAKgB,CAAK,GAC5BZ,IAAY;AAAA,UAGlB;AACA,UAAIW,KAAY,SACdb,IAAc,OAAO,OAAOa,GAAUb,CAAW;AAAA,QAErD;AAAA;AAAA,IAEJ;AACA,QAAIgB,IAAa,CAACjB,GAAWC,GAAaC,CAAW;AACrD,WAAOe;AAAA,EACT;AACF;AACA,IAAIC,KAAS3B,KAAWD,EAAS,SAASI,GAAY;AACtDwB,GAAO,UAAUxB;AACjB,MAAMyB,KAAkB5B,GAAS,QAAQ;AAAA,EACvC,YAAY;AACd,CAAC;AACD,SAAS6B,MAASlK,GAAQ;AACxB,QAAM,CAAC8I,GAAWM,GAAOe,CAAY,IAAIF,GAAgBjK,CAAM,GACzDoK,IAAS,CAAA;AAOf,MANItB,KAAa,QAAQA,MAAc,OACrCsB,EAAO,YAAYtB,IAEjBM,KAAS,SACXgB,EAAO,QAAQhB,IAEbe,KAAgB,QAAQA,MAAiB,IAAI;AAC/C,UAAME,IAASF,EAAa,MAAM,GAAG,GAC/BG,IAAW,CAAA;AACjB,eAAWC,KAASF,GAAQ;AAC1B,YAAMG,IAAUD,EAAM,KAAI,GACpB,CAACE,GAAMC,CAAI,IAAIF,EAAQ,MAAM,GAAG;AACtC,MAAIE,KAAQ,SACVJ,EAASG,CAAI,IAAIH,EAASG,CAAI,KAAK,OAAO,GAAGH,EAASG,CAAI,CAAC,IAAIC,CAAI,KAAKA;AAAA,IAE5E;AACA,IAAAN,EAAO,gBAAgB,IAAI,OAAO,KAAKE,CAAQ,EAAE,IAAI,CAAAG,MAAQ,GAAGA,CAAI,IAAIH,EAASG,CAAI,CAAC,EAAE,EAAE,KAAK,IAAI;AAAA,EACrG;AACA,SAAOL;AACT;AACA,SAASO,GAAoBC,GAAO;AAClC,SAAO,KAAKA,CAAK,EAAE,QAAQ,CAAAhG,MAAO;AAEhC,IADgBuD,GAAcvD,CAAG,MAE/BoD,GAAS,iBAAiBpD,CAAG,GAAG,GAChC,OAAOgG,EAAMhG,CAAG;AAAA,EAEpB,CAAC;AACH;AACA,SAASiG,EAAyBC,GAASC,GAAc;AACvD,QAAMC,IAAa;AAAA,IACjB,OAAO;AAAA,IACP,eAAe,QAAQF,CAAO;AAAA,EAClC;AACE,WAASG,EAAU;AAAA,IACjB,KAAA1D;AAAA,IACA,GAAGqD;AAAA,EACP,GAAK;AACD,UAAM;AAAA,MACJ,KAAKM;AAAA,MACL,OAAA9B;AAAA,MACA,GAAG+B;AAAA,IACT,IAAQP,GACEQ,IAAYD;AAClB,IAAAR,GAAoBS,CAAS,GACzBF,KAAW,SACbE,EAAU,UAAUF,IAElBN,EAAM,QAAQ,SAChBQ,EAAU,OAAOR,EAAM,SAAS,SAAS,iBAAiBA,EAAM,OAE9DE,MAAY,WACdM,EAAU,OAAOA,EAAU,OAAOA,EAAU,OAAO,YAC1CN,MAAY,WAAWA,MAAY,gBAC5CM,EAAU,MAAMA,EAAU,MAAMA,EAAU,MAAM;AAElD,UAAMC,IAAiBnB,GAAM,CAACc,GAAYD,GAAc3B,CAAK,CAAC;AAM9D,WALgBhC,EAAI0D,GAAS;AAAA,MAC3B,GAAGM;AAAA,MACH,GAAGC;AAAA,MACH,KAAK9D;AAAA,IACX,CAAK;AAAA,EAEH;AACA,SAAA0D,EAAU,cAAc,QAAQH,CAAO,IAChCG;AACT;AACA,MAAMjL,IAAS;AAAA,EACb,OAAO;AAAA,IACL,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,yBAAyB;AAAA,IACzB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,sBAAsB;AAAA,IACtB,OAAO;AAAA,EACX;AAAA,EACE,SAAS;AAAA,IACP,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,SAAS;AAAA,IACP,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,IAAI;AAAA,IACF,0BAA0B;AAAA,IAC1B,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACX;AAAA,EACE,KAAK;AAAA,IACH,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,mBAAmB;AAAA,IACnB,OAAO;AAAA,EACX;AAAA,EACE,OAAO;AAAA,IACL,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,OAAO;AAAA,EACX;AAAA,EACE,MAAM;AAAA,IACJ,oBAAoB;AAAA,IACpB,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,qBAAqB;AAAA,IACrB,OAAO;AAAA,EACX;AAAA,EACE,UAAU;AAAA,IACR,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACX;AACA,GACMsL,KAAMtL,EAAO,QACbuL,KAAYvL,EAAO,OACnBwL,KAAUxL,EAAO,OACjByL,KAAMzL,EAAO,QACb0L,KAAQ1L,EAAO,QACf2L,KAAQ3L,EAAO,QACf4L,KAAe5L,EAAO,OACtB6L,KAAO,MACPC,KAAW,CAAC9L,EAAO,aAAaA,EAAO,MAAM,GAC7C+L,KAAS,CAAC/L,EAAO,QAAQA,EAAO,OAAO,GACvCgM,KAAQ,MACRC,KAAQjM,EAAO,OACfkM,KAAOlM,EAAO,QACdmM,KAAanM,EAAO,OACpBoM,KAAWpM,EAAO,OAClBqM,KAASrM,EAAO,OAChBsM,IAAU,CAACtM,EAAO,OAAOA,EAAO,OAAO,GACvCuM,KAAWvM,EAAO,OAClBwM,KAAO,CAACxM,EAAO,OAAOA,EAAO,EAAE,GAC/ByM,KAAMzM,EAAO,QACb0M,KAAQ1M,EAAO,KACf2M,KAAU,CAAC3M,EAAO,aAAaA,EAAO,KAAK,GAC3C4M,KAAQ,MACRC,KAAQ,MACRC,KAAU9M,EAAO,QACjB+M,KAAO/M,EAAO,OACdgN,KAAShN,EAAO,OAChBiN,KAASjN,EAAO,QAChBkN,KAAQlN,EAAO,OACfmN,KAAO,CAACnN,EAAO,MAAMA,EAAO,KAAK,GACjCoN,KAAa,MACbC,KAAW,MACXC,KAAMtN,EAAO,OACbuN,KAAQ,CAACvN,EAAO,OAAOA,EAAO,OAAO,GACrCwN,KAAM,MACNC,KAAYzN,EAAO,OACnB0N,KAAW1N,EAAO,aAClB2N,KAAS3N,EAAO,QAChB4N,KAAW,CAAC5N,EAAO,QAAQA,EAAO,MAAM,GACxC6N,KAAQ7N,EAAO,QACf8N,KAAQ9N,EAAO,QACf+N,KAAa,CAAC/N,EAAO,aAAaA,EAAO,QAAQ,GACjDgO,KAAM,MACNC,KAAO,CAACjO,EAAO,MAAMA,EAAO,KAAK,GACjCkO,IAAgB;AAAA,EACpB,GAAG5C;AAAA,EACH,SAASC;AAAA,EACT,OAAOC;AAAA,EACP,GAAGC;AAAA,EACH,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,YAAYC;AAAA,EACZ,IAAIC;AAAA,EACJ,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,IAAIC;AAAA,EACJ,UAAUC;AAAA,EACV,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,IAAIC;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,QAAQC;AAAA,EACR,IAAIC;AAAA,EACJ,GAAGC;AAAA,EACH,KAAKC;AAAA,EACL,OAAOC;AAAA,EACP,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,OAAOC;AAAA,EACP,IAAIC;AAAA,EACJ,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,KAAKC;AAAA,EACL,IAAIC;AAAA,EACJ,UAAUC;AAAA,EACV,QAAQC;AAAA,EACR,GAAGC;AAAA,EACH,KAAKC;AAAA,EACL,GAAGC;AAAA,EACH,SAASC;AAAA,EACT,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,QAAQC;AAAA,EACR,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,UAAUC;AAAA,EACV,GAAGC;AAAA,EACH,IAAIC;AACN,GACMvK,KAAImH,EAAyB,KAAKqD,EAAc,CAAC,GACjDC,KAAUtD,EAAyB,WAAWqD,EAAc,OAAO,GACnEE,KAAQvD,EAAyB,SAASqD,EAAc,KAAK,GAC7DvK,KAAIkH,EAAyB,KAAKqD,EAAc,CAAC,GACjDG,KAAMxD,EAAyB,OAAOqD,EAAc,GAAG,GACvDI,KAAMzD,EAAyB,OAAOqD,EAAc,GAAG,GACvDK,KAAa1D,EAAyB,cAAcqD,EAAc,UAAU,GAC5EM,KAAK3D,EAAyB,MAAMqD,EAAc,EAAE,GACpDjH,KAAS4D,EAAyB,UAAUqD,EAAc,MAAM,GAChEjI,KAAO4E,EAAyB,QAAQqD,EAAc,IAAI,GAC1DO,KAAM5D,EAAyB,OAAOqD,EAAc,GAAG,GACvDvH,KAAMkE,EAAyB,OAAOqD,EAAc,GAAG,GACvDQ,KAAK7D,EAAyB,MAAMqD,EAAc,EAAE,GACpDS,KAAW9D,EAAyB,YAAYqD,EAAc,QAAQ,GACtEU,KAAS/D,EAAyB,UAAUqD,EAAc,MAAM,GAChEW,KAAOhE,EAAyB,QAAQqD,EAAc,IAAI,GAC1DY,KAAKjE,EAAyB,MAAMqD,EAAc,EAAE,GACpDa,KAAKlE,EAAyB,MAAMqD,EAAc,EAAE,GACpDc,KAAKnE,EAAyB,MAAMqD,EAAc,EAAE,GACpDe,KAAKpE,EAAyB,MAAMqD,EAAc,EAAE,GACpDgB,KAAKrE,EAAyB,MAAMqD,EAAc,EAAE,GACpDiB,KAAKtE,EAAyB,MAAMqD,EAAc,EAAE,GACpDkB,KAASvE,EAAyB,UAAUqD,EAAc,MAAM,GAChEmB,KAAKxE,EAAyB,MAAMqD,EAAc,EAAE,GACpD9J,KAAIyG,EAAyB,KAAKqD,EAAc,CAAC,GACjDoB,KAAMzE,EAAyB,OAAOqD,EAAc,GAAG,GACvDqB,KAAQ1E,EAAyB,SAASqD,EAAc,KAAK,GAC7DsB,KAAM3E,EAAyB,OAAOqD,EAAc,GAAG,GACvDuB,KAAM5E,EAAyB,OAAOqD,EAAc,GAAG,GACvDwB,KAAQ7E,EAAyB,SAASqD,EAAc,KAAK,GAC7DyB,KAAK9E,EAAyB,MAAMqD,EAAc,EAAE,GACpD0B,KAAO/E,EAAyB,QAAQqD,EAAc,IAAI,GAC1D2B,KAAOhF,EAAyB,QAAQqD,EAAc,IAAI,GAC1D4B,KAAMjF,EAAyB,OAAOqD,EAAc,GAAG,GACvD6B,KAAKlF,EAAyB,MAAMqD,EAAc,EAAE,GACpD8B,KAAWnF,EAAyB,YAAYqD,EAAc,QAAQ,GACtE+B,KAASpF,EAAyB,UAAUqD,EAAc,MAAM,GAChEgC,KAAIrF,EAAyB,KAAKqD,EAAc,CAAC,GACjDiC,KAAMtF,EAAyB,OAAOqD,EAAc,GAAG,GACvDkC,KAAIvF,EAAyB,KAAKqD,EAAc,CAAC,GACjDmC,KAAUxF,EAAyB,WAAWqD,EAAc,OAAO,GACnEoC,KAASzF,EAAyB,UAAUqD,EAAc,MAAM,GAChEqC,KAAO1F,EAAyB,QAAQqD,EAAc,IAAI,GAC1DsC,KAAS3F,EAAyB,UAAUqD,EAAc,MAAM,GAChEuC,KAAM5F,EAAyB,OAAOqD,EAAc,GAAG,GACvDwC,KAAM7F,EAAyB,OAAOqD,EAAc,GAAG,GACvDyC,KAAW9F,EAAyB,YAAYqD,EAAc,QAAQ,GACtE0C,KAAI/F,EAAyB,KAAKqD,EAAc,CAAC,GACjD2C,KAAKhG,EAAyB,MAAMqD,EAAc,EAAE;AAC1D,IAAI4C,KAAoB,uBAAO,OAAO;AAAA,EACpC,WAAW;AAAA,EACX,GAAGpN;AAAA,EACH,SAASyK;AAAA,EACT,OAAOC;AAAA,EACP,GAAGzK;AAAA,EACH,KAAK0K;AAAA,EACL,KAAKC;AAAA,EACL,YAAYC;AAAA,EACZ,IAAIC;AAAA,EACJ,QAAQvH;AAAA,EACR,MAAMhB;AAAA,EACN,KAAKwI;AAAA,EACL,KAAK9H;AAAA,EACL,IAAI+H;AAAA,EACJ,UAAUC;AAAA,EACV,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,IAAIC;AAAA,EACJ,QAAQC;AAAA,EACR,IAAIC;AAAA,EACJ,GAAGjL;AAAA,EACH,KAAKkL;AAAA,EACL,OAAOC;AAAA,EACP,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,OAAOC;AAAA,EACP,IAAIC;AAAA,EACJ,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,KAAKC;AAAA,EACL,IAAIC;AAAA,EACJ,UAAUC;AAAA,EACV,QAAQC;AAAA,EACR,GAAGC;AAAA,EACH,KAAKC;AAAA,EACL,GAAGC;AAAA,EACH,SAASC;AAAA,EACT,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,QAAQC;AAAA,EACR,KAAKC;AAAA,EACL,KAAKC;AAAA,EACL,UAAUC;AAAA,EACV,GAAGC;AAAA,EACH,IAAIC;AACN,CAAC;ACxcM,MAAME,KAAgB;AAAA,EAC3BC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AAAA,EACJC,IAAI;AACN,GCjBapR,IAAM;AAAA,EAAAqR,WAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAAnR,OAAA;AAAA,EAAA;AAAA,EAAAoR,eAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,cAAA;AAAA,IAAApR,OAAA;AAAA,EAAA;AAAA,EAAAqR,cAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,wBAAA;AAAA,IAAArR,OAAA;AAAA,EAAA;AAAA,EAAAD,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAAC,OAAA;AAAA,EAAA;AAAA,EAAAsR,gBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,iBAAA;AAAA,IAAAtR,OAAA;AAAA,EAAA;AAAA,EAAAkP,QAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,8BAAA;AAAA,IAAA,0BAAA;AAAA,IAAAlP,OAAA;AAAA,EAAA;AAAA,EAAAuR,MAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,8BAAA;AAAA,IAAAvR,OAAA;AAAA,EAAA;AAAA,EAAAwR,KAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,8BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAA,4BAAA;AAAA,IAAAxR,OAAA;AAAA,EAAA;AAAA,EAAAyR,SAAA;AAAA,IAAA,0BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,sBAAA;AAAA,IAAAzR,OAAA;AAAA,EAAA;AAAA,EAAA0R,YAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA1R,OAAA;AAAA,EAAA;AAAA,EAAA2R,MAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,8BAAA;AAAA,IAAA,cAAA;AAAA,IAAA3R,OAAA;AAAA,EAAA;AAAA,EAAA4R,WAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA5R,OAAA;AAAA,EAAA;AAAA,EAAA6R,WAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA7R,OAAA;AAAA,EAAA;AAAA,EAAA8R,aAAA;AAAA,IAAA,8BAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA,yBAAA;AAAA,IAAA9R,OAAA;AAAA,EAAA;AAAA,EAAA+R,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAA/R,OAAA;AAAA,EAAA;AAAA,EAAAgS,QAAA;AAAA,IAAA,qBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,sBAAA;AAAA,IAAA,uBAAA;AAAA,IAAA,mBAAA;AAAA,IAAAhS,OAAA;AAAA,EAAA;AAAA,EAAAiS,aAAA;AAAA,IAAA,0BAAA;AAAA,IAAAjS,OAAA;AAAA,EAAA;AAAA,EAAAkS,cAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAA,2BAAA;AAAA,IAAAlS,OAAA;AAAA,EAAA;AAAA,EAAAmS,kBAAA;AAAA,IAAA,2BAAA;AAAA,IAAAnS,OAAA;AAAA,EAAA;AAAA,EAAAoS,UAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,oBAAA;AAAA,IAAApS,OAAA;AAAA,EAAA;AAAA,EAAAqS,SAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,oBAAA;AAAA,IAAA,kCAAA;AAAA,IAAArS,OAAA;AAAA,EAAA;AAAA,EAAAsS,aAAA;AAAA,IAAA,mBAAA;AAAA,IAAAtS,OAAA;AAAA,EAAA;AAAA,EAAAuS,UAAA;AAAA,IAAA,mBAAA;AAAA,IAAA,cAAA;AAAA,IAAA,iBAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,wBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,6BAAA;AAAA,IAAA,mCAAA;AAAA,IAAAvS,OAAA;AAAA,EAAA;AAAA,EAAAwS,cAAA;AAAA,IAAA,eAAA;AAAA,IAAA,8BAAA;AAAA,IAAA,iCAAA;AAAA,IAAA,0BAAA;AAAA,IAAAxS,OAAA;AAAA,EAAA;AAAA,EAAAyS,eAAA;AAAA,IAAA,gBAAA;AAAA,IAAA,+BAAA;AAAA,IAAA,kCAAA;AAAA,IAAA,0BAAA;AAAA,IAAAzS,OAAA;AAAA,EAAA;AAAA,EAAA0S,iBAAA;AAAA,IAAA,kBAAA;AAAA,IAAA1S,OAAA;AAAA,EAAA;AAAA,EAAA2S,aAAAA,CAmXHC,MAAgB,CAAA;AAAA,IAAA,8BACPA,4CAAAA;AAAAA,IAAQ5S,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,2BAAR4S,KAAQ9L;AAAAA,EAAAA,CAAA;AAAA,EAAA+L,uBAAAA,CAkBPD,GAAkBE,MAAuB,CAAA;AAAA,IAAA,+BAEpDF,KAAQ,OAAA,iCAARA,MAC8CE,8CAAAA,KAAe;AAAA,IAAA9S,OAAA;AAAA,EAAA,GAAA;AAAA,IAAA,eAD7D4S,KAAQ9L;AAAAA,IAAA,eACsCgM,KAAehM;AAAAA,EAAAA,CAAA;AAAA,GCtXtEiM,KAAerS,EAAwC,IAAI;AAEjE,SAAAsS,IAAA;AACE,QAAApS,IAAYC,EAAWkS,EAAY;AACnC,MAAI,CAACnS;AAAK,UAAM,IAAIE,MAAM,0DAA0D;AAAC,SAC9EF;AAAG;AAKZ,MAAMqS,IAAgBvS,EAAc,EAAK;AAQlC,SAAAwS,GAAAtR,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,CAAA,GAAmB;AAAA,IAAAqF,UAAAA;AAAAA,EAAAA,IAAA1E;AAAiC,MAAAK;AAAA,SAAAjB,SAAAsF,KAClDrE,IAAA,gBAAAiF,EAAA,OAAA,EAAA,oBAAA,sBAAA,GAAAX,EAAAC,EAAAC,KAAiB3G,EAAMqR,SAAU,GAAG7K,UAAAA,EAAAA,CAAS,GAAWtF,OAAAsF,GAAAtF,OAAAiB,KAAAA,IAAAjB,EAAA,CAAA,GAAxDiB;AAAwD;AAejE,SAASkR,GAAYC,GAAyB;AAC5C,MAAIC,IAAM;AACVC,SAAAA,EAASC,QAAQH,GAAOI,CAAAA,MAAU;AAChC,KAAI,OAAOA,KAAU,YAAY,OAAOA,KAAU,cAChDH,KAAOI,OAAOD,CAAK;AAAA,EAEvB,CAAC,GACMH;AACT;AAOA,SAASK,GAAkBC,GAAqB;AAC9C,MAAItR,IAAUsR;AAEd,WAASzP,IAAI,GAAGA,IAAI,KAAK7B,KAAW,OAAOA,KAAY,UAAU6B,KAAK;AACpE,UAAM0P,IACHvR,EAA+CwR,QAASxR,EAA+ByR;AAC1F,QAAIF,KAAQ,KAAM;AAClBvR,IAAAA,IAAUuR;AAAAA,EACZ;AACA,SAAOvR;AACT;AAEA,SAAS0R,GACPzN,GACA0N,GAKA;AACA,QAAMC,IAAmB,CAAA,GACnBC,IAA0B,CAAA,GAC1BC,IAAmB,CAAA;AAEzB,WAASC,EAAKhB,GAAiB;AAC7BE,IAAAA,EAASC,QAAQH,GAAOI,CAAAA,MAAU;AAChC,UAAI,CAACa,GAAeb,CAAK,EAAG;AAC5B,YAAM9I,IAAQ8I,EAAM9I,OACd4J,IAAgBZ,GAAkBF,EAAMK,IAAI,GAC5CU,IACHD,GAAgEC,eAChED,GAA0CE,QAC3C;AACF,UAAIF,MAAkBG,MAAcF,MAAgB,cAAc;AAQhE,cAAMG,IAAQhK,EAAMgK,SAAS,UAAUV,CAAc;AACrDC,QAAAA,EAAOU,KAAKD,CAAK,GAKjBR,EAAcS,KAAKjK,EAAMkK,gBAAgBF,CAAK;AAC9C,cAAMG,IAAW,OAAOnK,EAAM8E,SAAU,WAAW9E,EAAM8E,QAAQ1I,QAC3DgO,IAAW3B,GAAYzI,EAAMpE,QAAQ,EAAEyO,KAAAA,GACvCvF,IAAQqF,KAAYC;AAC1B,QAAI,CAACD,KAAYC,MAAa,MAAMpK,EAAMpE,YAAY,QAGpDT,GACE,SACA,4BACA,+EACF,GAEFsO,EAAOQ,KAAKnF,CAAK;AAAA,MACnB,MAAA,CAAW9E,EAAMpE,YACf8N,EAAK1J,EAAMpE,QAAQ;AAAA,IAEvB,CAAC;AAAA,EACH;AAEA8N,SAAAA,EAAK9N,CAAQ,GACN;AAAA,IACLsM,UAAUqB,EAAOe,KAAK,GAAG;AAAA,IACzBlC,iBAAiBoB,EAAcc,KAAK,GAAG;AAAA,IACvCb,QAAAA;AAAAA,EAAAA;AAEJ;AAUA,SAAAc,GAAArT,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,EAAA,GAAqB;AAAA,IAAAqF,UAAAA;AAAAA,EAAAA,IAAA1E,GACnBsT,IAAkBxT,EAAuB,IAAI;AAAC,MAAAO;AAAA,EAAAjB,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KACXG,IAAA;AAAA,IAAAkT,OAAQ;AAAA,IAAKC,KAAO;AAAA,EAAA,GAAMpU,OAAAiB,KAAAA,IAAAjB,EAAA,CAAA;AAA7D,QAAA,CAAAqU,GAAAC,CAAA,IAA0BlU,EAASa,CAA0B;AAAC,MAAAG,GAAAI;AAAA,EAAAxB,EAAA,CAAA,MAAAa,OAAAC,IAAA,2BAAA,KAEpDM,IAAAA,MAAA;AACR,UAAAmF,IAAW2N,EAAS7S;AACpB,QAAI,CAACkF;AAAE;AACP,UAAAgO,IAAeA,MAAA;AACb,YAAAC,IAAoBjO,EAAEkO,cAAelO,EAAEmO,cAAe;AACtDJ,MAAAA,EAAS;AAAA,QAAAH,OACAK,KAAejO,EAAEoO,aAAc;AAAA,QAACP,KAClCI,KAAejO,EAAEoO,aAAcpO,EAAEmO,cAAenO,EAAEkO,cAAe;AAAA,MAAA,CACvE;AAAA,IAAC;AAEJF,IAAAA,EAAAA,GACAhO,EAAEnC,iBAAkB,UAAUmQ,GAAQ;AAAA,MAAAK,SAAU;AAAA,IAAA,CAAK;AACrD,UAAAC,IAAW,OAAOC,iBAAmB,MAA1B,IAA4CA,eAAeP,CAAa,IAAxE;AACXM,WAAAA,GAAEE,QAAUxO,CAAE,GACP,MAAA;AACLA,MAAAA,EAAElC,oBAAqB,UAAUkQ,CAAM,GACvCM,GAAEG,WAAAA;AAAAA,IAAc;AAAA,EACjB,GACAxT,IAAA,CAAA,GAAExB,OAAAoB,GAAApB,OAAAwB,MAAAJ,IAAApB,EAAA,CAAA,GAAAwB,IAAAxB,EAAA,CAAA,IAlBL+B,EAAUX,GAkBPI,CAAE;AAAC,MAAAG;AAAA,EAAA3B,SAAAsF,KAIF3D,0EAAeuS,QAAS,GAAA3O,EAAAC,EAAAC,KAAS3G,EAAMuS,OAAQ,GAC5C/L,UAAAA,GACH,GAAWtF,OAAAsF,GAAAtF,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAGqC,QAAA4B,IAAAyS,EAAKF,SAAUrV,EAAM4S;AAAgB,MAAA1P;AAAA,EAAAhC,SAAA4B,KAFrFI,IAAA,gBAAAkE,EAAA,OAAA,EAAA,oBAAA,uBACE,eAAA,IAAW,GAAAX,EAAAC,EAAAC,KACH3G,EAAMyS,UAAWzS,EAAM0S,cAAe5P,CAAqC,GAAA,GACnF5B,OAAA4B,GAAA5B,OAAAgC,KAAAA,IAAAhC,EAAA,CAAA;AAG+C,QAAAoD,IAAAiR,EAAKD,OAAQtV,EAAM4S;AAAgB,MAAArO;AAAA,EAAArD,SAAAoD,KAFpFC,IAAA,gBAAA6C,EAAA,OAAA,EAAA,oBAAA,uBACE,eAAA,IAAW,GAAAX,EAAAC,EAAAC,KACH3G,EAAMyS,UAAWzS,EAAM2S,eAAgBrO,CAAmC,GAAA,GAClFpD,OAAAoD,GAAApD,OAAAqD,KAAAA,IAAArD,EAAA,CAAA;AAAA,MAAAsE;AAAA,SAAAtE,EAAA,CAAA,MAAA2B,KAAA3B,UAAAgC,KAAAhC,EAAA,EAAA,MAAAqD,KAXJiB,IAAA,gBAAA2Q,EAAA,OAAA,EAAA,oBAAA,uBAAA,GAAA1P,EAAAC,EAAAC,KAAiB3G,EAAMwS,WAAY,GACjC3P,UAAAA;AAAAA,IAAAA;AAAAA,IAGAK;AAAAA,IAIAqB;AAAAA,EAAAA,GAIF,GAAWrD,OAAA2B,GAAA3B,QAAAgC,GAAAhC,QAAAqD,GAAArD,QAAAsE,KAAAA,IAAAtE,EAAA,EAAA,GAZXsE;AAYW;AAiCR,SAASe,GAAK;AAAA,EACnBC,UAAAA;AAAAA,EACA4P,SAAAA,IAAU;AAAA,EACVC,MAAAA,IAAO;AAAA,EACPC,YAAAA,IAAa;AAAA,EACbpC,gBAAAA,IAAiB;AAAA,EACjB5B,UAAAA;AAAAA,EACAiE,YAAAA;AACS,GAAG;AACZ,QAAMC,IAAsB5U,EAAsB,IAAI,GAChD;AAAA,IAACkR,UAAAA;AAAAA,IAAUE,iBAAAA;AAAAA,IAAiBqB,QAAAA;AAAAA,EAAAA,IAAUJ,GAAkBzN,GAAU0N,CAAc;AACtF,EAAIpB,MACF0D,EAAoBjU,UAAUuQ;AAGhC,QAAM2D,IACJ,gBAAArP,EAAA,OAAA,EAAA,oBAAA,uBACE,MAAK,SAAO,GAAAX;AAAAA,IAAAC,EAAAC;AAAAA,IAEV3G,EAAOC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAOP6S,IACIwD,IACEtW,EAAO+S,sBAAsBD,GAAUE,CAAe,IACtDhT,EAAO6S,YAAYC,CAAQ,IAC7B9L;AAAAA,IACJsP,KAActW,EAAOwR;AAAAA,EAAAA,GAGtBhL,UAAAA,EAAAA,CACH,GAaIiL,IACJ,gBAAA0E,EAAAO,IAAA,EACGpE,UAAAA;AAAAA,IAAAA;AAAAA,IARcgE,IAAa,gBAAAlP,EAAC+N,IAAA,EAAasB,aAAK,IAAiBA;AAAAA,IAU/DF;AAAAA,EAAAA,GACH;AAGF,SACE,gBAAAnP,EAAC6L,GAAa,UAAb,EAAsB,OAAO;AAAA,IAACmD,SAAAA;AAAAA,IAASC,MAAAA;AAAAA,IAAMC,YAAAA;AAAAA,IAAYjC,QAAAA;AAAAA,IAAQmC,qBAAAA;AAAAA,EAAAA,GAC/DF,UAAAA,IAAa,gBAAAlP,yDAAAX,EAAAC,EAAAC,KAAiB3G,EAAOsR,aAAa,GAAGG,UAAAA,EAAAA,CAAK,IAAcA,GAC3E;AAEJ;AAIO,SAAAkF,GAAA7U,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,CAAA,GAAgB;AAAA,IAAAqF,UAAAA;AAAAA,EAAAA,IAAA1E;AAAiC,MAAAK;AAAA,SAAAjB,SAAAsF,KAEpDrE,IAAA,gBAAAiF,EAAA+L,EAAA,UAAA,EAA+B,OAAA,IAC7B,UAAA,gBAAA/L,EAAA,SAAA,oBAAA,uBAAe,MAAA,YAAU,GAAAX,EAAAC,EAAAC,KAAQ3G,EAAMoP,MAAO,GAC3C5I,UAAAA,GACH,GACF,GAAyBtF,OAAAsF,GAAAtF,OAAAiB,KAAAA,IAAAjB,EAAA,CAAA,GAJzBiB;AAIyB;AAMtB,SAAAyU,GAAA9U,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAqF,UAAAA;AAAAA,EAAAA,IAAA1E,GACnB;AAAA,IAAAsU,SAAAA;AAAAA,EAAAA,IAAkBlD,EAAAA;AAAU,MAAA2D,GAAAC,GAAA3U,GAAAG,GAAAI,GAAAG;AAAA,MAAA3B,EAAA,CAAA,MAAAsF,KAAAtF,SAAAkV,GAAA;AAC5B,UAAAW,IAAmBvD,EAAQwD,QAASxQ,CAAQ;AAGzCsQ,IAAAA,IAAA3D,EAAa8D,UAAiBpU,IAAA,IAC5BgU,IAAA/F,GAAInK,KAAUxE,IAAA,YAAkBG,IAAAtC,EAAMyR;AAAK,QAAA3O;AAAA,IAAA5B,SAAAkV,KAC1BtT,IAAAA,CAAA4Q,GAAAwD,MACVd,MAAY,YAAkB1C,IAMhC,gBAAAtM,iBAA0D8P,OAAAA,GACvDxD,UAAAA,EAAAA,GAD4BA,EAAK9O,OAALsS,CAE/B,GAEHhW,OAAAkV,GAAAlV,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA,GAXAwB,IAAAqU,EAAUzT,IAAKR,CAWf,GAAC5B,OAAAsF,GAAAtF,OAAAkV,GAAAlV,OAAA2V,GAAA3V,OAAA4V,GAAA5V,OAAAiB,GAAAjB,OAAAoB,GAAApB,OAAAwB,GAAAxB,OAAA2B;AAAAA,EAAA;AAAAgU,IAAAA,IAAA3V,EAAA,CAAA,GAAA4V,IAAA5V,EAAA,CAAA,GAAAiB,IAAAjB,EAAA,CAAA,GAAAoB,IAAApB,EAAA,CAAA,GAAAwB,IAAAxB,EAAA,CAAA,GAAA2B,IAAA3B,EAAA,CAAA;AAAA,MAAA4B;AAAA,EAAA5B,EAAA,EAAA,MAAA2V,KAAA3V,EAAA,EAAA,MAAAiB,KAAAjB,EAAA,EAAA,MAAAoB,KAAApB,UAAAwB,KAZJI,sBAAC+T,GAAA,EAAc,MAAA1U,GAAkB,OAAAG,GAC9BI,UAAAA,GAYH,GAAWxB,QAAA2V,GAAA3V,QAAAiB,GAAAjB,QAAAoB,GAAApB,QAAAwB,GAAAxB,QAAA4B,KAAAA,IAAA5B,EAAA,EAAA;AAAA,MAAAgC;AAAA,SAAAhC,EAAA,EAAA,MAAA4V,KAAA5V,UAAA2B,KAAA3B,EAAA,EAAA,MAAA4B,KAdbI,IAAA,gBAAAkE,EAAC0P,GAAA,EAA8B,OAAAjU,GAC7BC,UAAAA,GAcF,GAAyB5B,QAAA4V,GAAA5V,QAAA2B,GAAA3B,QAAA4B,GAAA5B,QAAAgC,KAAAA,IAAAhC,EAAA,EAAA,GAfzBgC;AAeyB;AAI7B,MAAMiU,KAAkBvW,EAAsB,EAAE,GA2B1CwW,KACJ;AAEK,SAAAC,GAAAvV,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,EAAA,GAAa;AAAA,IAAAqF,UAAAA;AAAAA,IAAAc,SAAAA;AAAAA,IAAA,cAAAgQ;AAAAA,EAAAA,IAAAxV,GAClB;AAAA,IAAAsU,SAAAA;AAAAA,EAAAA,IAAkBlD,EAAAA,GAClBqE,IAAiBxW,EAAWoS,CAAa,GACzCqE,IAAiBzW,EAAWoW,EAAe,GAC3CM,IAAkBD,KAAY,KAAKA,IAAW,MAAM;AAAC,MAAArV;AAAA,MAAAjB,SAAAoW,KAAApW,EAAA,CAAA,MAAAsF,KAAAtF,EAAA,CAAA,MAAAuW,KAAAvW,EAAA,CAAA,MAAAqW,KAAArW,SAAAoG,KAAApG,EAAA,CAAA,MAAAkV,GAAA;AACrD,UAAAW,IAAmBvD,EAAQwD,QAASxQ,CAAQ,GAC5CkR,IAAoBpQ,MAAYN,UAAZ,CAA0BuQ;AAAQ,QAAAjV;AAAA,IAAApB,EAAA,CAAA,MAAAwW,KAAAxW,SAAAoG,KAQhDhF,IAAAoV,IAAAjT,CAAAA,MAAA;AAOM,YAAAkT,IAAgBlT,EAA6CkT;AAC7D,MAAIA,aAAkBC,WAAWD,EAAME,QAAST,EAAoB,KAGpE9P,EAAAA;AAAAA,IAAS,IAXfN,QAaa9F,OAAAwW,GAAAxW,OAAAoG,GAAApG,OAAAoB,KAAAA,IAAApB,EAAA,CAAA;AAAA,QAAAwB;AAAA,IAAAxB,EAAA,EAAA,MAAAwW,KAAAxW,UAAAoG,KAGb5E,IAAAgV,IAAAI,CAAAA,MAAA;AAEM,OAAIrT,EAACG,QAAS,WAAWH,EAACG,QAAS,QACjC0C,EAAAA;AAAAA,IACD,IAJPN,QAMa9F,QAAAwW,GAAAxW,QAAAoG,GAAApG,QAAAwB,KAAAA,IAAAxB,EAAA,EAAA;AAIb,UAAA2B,IAAA,CAAC0U,KAAYvX,EAAM2R,SACnB7O,IAAA,CAACyU,KAAYnB,MAAY,aAAzBqB,KAAmDzX,EAAMmS,aACzDjP,IAAAwU,KAAe1X,EAAMuR;AAAa,QAAAjN;AAAA,IAAApD,EAAA,EAAA,MAAA2B,KAAA3B,UAAA4B,KAAA5B,EAAA,EAAA,MAAAgC,KAJ7BoB,IAAA,CACLtE,EAAM0R,KACN7O,GACAC,GACAI,CAAkC,GACnChC,QAAA2B,GAAA3B,QAAA4B,GAAA5B,QAAAgC,GAAAhC,QAAAoD,KAAAA,IAAApD,EAAA,EAAA,GAlCHiB,IAAA,gBAAAiF,EAAA,OAAA,EAAA,oBAAA,uBACO,MAAA,OACK,UAAAsQ,IAAA,IAAA1Q,QACE,cAAA0Q,IAAAJ,IAAAtQ,QAEV,SAAA1E,GAgBA,WAAAI,GAMa,GAAA+D,EAAAC,EAAAC,KAERrC,CAKN,GAEAyS,UAAAA,EAAUzT,IAAK,CAAAoQ,GAAAwD,MAId,gBAAA9P,EAAA2Q,GAAA,UAAA,EAES,OAAA;AAAA,MAAAb,OAAAA;AAAAA,MAAAc,OAAejB,EAAU/T;AAAAA,IAAAA,GAE/B0Q,UAAAA,KAHIA,EAAK9O,OAALsS,CAIP,CACD,GACH,GAAWhW,OAAAoW,GAAApW,OAAAsF,GAAAtF,OAAAuW,GAAAvW,OAAAqW,GAAArW,OAAAoG,GAAApG,OAAAkV,GAAAlV,OAAAiB;AAAAA,EAAA;AAAAA,IAAAA,IAAAjB,EAAA,CAAA;AAAA,SA/CXiB;AA+CW;AAIf,MAAM4V,KAAmBnX,EAA8C;AAAA,EAACsW,OAAO;AAAA,EAAGc,OAAO;AAAC,CAAC;AAIpF,SAAArD,GAAA7S,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,CAAA,GAAoB;AAAA,IAAAqF,UAAAA;AAAAA,IAAA,cAAA8Q;AAAAA,EAAAA,IAAAxV,GA0BzB;AAAA,IAAAuU,MAAAA;AAAAA,IAAAD,SAAAA;AAAAA,EAAAA,IAAwBlD,EAAAA,GACxB;AAAA,IAAAgE,OAAAA;AAAAA,IAAAc,OAAAA;AAAAA,EAAAA,IAAuBjX,EAAWgX,EAAgB,GAClDE,IAAe7B,MAAY,cAAcc,MAAUc,IAAQ,GAQrD7V,IAAAkU,MAAS,OAAOrW,EAAMiS,SAAUjS,EAAMkS,QACtC5P,IAAA8T,MAAY,cAAcpW,EAAMoS,cAChC1P,IAAAuV,KAAUjY,EAAMqS;AAAiB,MAAAxP;AAAA,EAAA3B,EAAA,CAAA,MAAAiB,KAAAjB,SAAAoB,KAAApB,EAAA,CAAA,MAAAwB,KAJ5BG,IAAA,CACL7C,EAAM4R,YACNzP,GACAG,GACAI,CAAiC,GAClCxB,OAAAiB,GAAAjB,OAAAoB,GAAApB,OAAAwB,GAAAxB,OAAA2B,KAAAA,IAAA3B,EAAA,CAAA;AAAA,MAAA4B;AAAA,SAAA5B,EAAA,CAAA,MAAAoW,KAAApW,SAAAsF,KAAAtF,EAAA,CAAA,MAAA2B,KARHC,IAAA,gBAAAsE,EAAA,OAAA,EAAA,oBAAA,uBACO,MAAA,gBACOkQ,iBAAS,GAAA7Q,EAAAC,EAAAC,KACd9D,CAKN,GAEA2D,UAAAA,GACH,GAAWtF,OAAAoW,GAAApW,OAAAsF,GAAAtF,OAAA2B,GAAA3B,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA,GAXX4B;AAWW;AAGf6R,GAAWF,cAAc;AAQlB,SAAAyD,GAAApW,GAAA;AAAA,QAAAZ,IAAAC,EAAAA,EAAA,EAAA,GAAc;AAAA,IAAAqF,UAAAA;AAAAA,IAAA2R,WAAAA;AAAAA,EAAAA,IAAArW,GACnB;AAAA,IAAAuU,MAAAA;AAAAA,IAAAD,SAAAA;AAAAA,IAAA/B,QAAAA;AAAAA,IAAAiC,YAAAA;AAAAA,EAAAA,IAA4CpD,EAAAA,GAC5C;AAAA,IAAAgE,OAAAA;AAAAA,IAAAc,OAAAA;AAAAA,EAAAA,IAAuBjX,EAAWgX,EAAgB,GAClDE,IAAe7B,MAAY,cAAcc,MAAUc,IAAQ,GAC3DtI,IAAc2E,EAAO6C,CAAK,KAAZ,IAOR/U,IAAAkU,MAAS,OAAOrW,EAAMiS,SAAUjS,EAAMkS,QACtC5P,IAAA8T,MAAY,cAAcpW,EAAMoS,cAChC1P,IAAAuV,KAAUjY,EAAMqS,kBAChBxP,IAAAsV,KAAanY,EAAMgS;AAAY,MAAAlP;AAAA,EAAA5B,EAAA,CAAA,MAAAiB,KAAAjB,EAAA,CAAA,MAAAoB,KAAApB,EAAA,CAAA,MAAAwB,KAAAxB,SAAA2B,KAL1BC,IAAA,CACL9C,EAAM6R,MACN1P,GACAG,GACAI,GACAG,CAA+B,GAChC3B,OAAAiB,GAAAjB,OAAAoB,GAAApB,OAAAwB,GAAAxB,OAAA2B,GAAA3B,OAAA4B,KAAAA,IAAA5B,EAAA,CAAA;AAAA,MAAAgC;AAAA,EAAAhC,EAAA,CAAA,MAAAiX,KAAAjX,SAAAwO,KAAAxO,EAAA,CAAA,MAAAoV,KAEApT,IAAAoT,KAAA,CAAe6B,KAAazI,MAAU,uBACrC,QAAA,EAAA,oBAAA,uBAAA,GAAAjJ,EAAAC,EAAA6J,MAAkBvQ,EAAM+R,SAAU,GAAGrC,aAAM,IAD5C,MAEOxO,OAAAiX,GAAAjX,OAAAwO,GAAAxO,OAAAoV,GAAApV,OAAAgC,KAAAA,IAAAhC,EAAA,CAAA;AAAA,MAAAoD;AAAA,EAAApD,EAAA,CAAA,MAAAsF,KAAAtF,UAAAiX,KACP7T,IAAA6T,IAAA3R,IAAuB,gBAAAY,EAAA,OAAA,EAAA,oBAAA,uBAAA,GAAAX,EAAAC,EAAAC,KAAiB3G,EAAM8R,SAAU,GAAGtL,UAAAA,GAAS,GAAWtF,OAAAsF,GAAAtF,QAAAiX,GAAAjX,QAAAoD,KAAAA,IAAApD,EAAA,EAAA;AAAA,MAAAqD;AAAA,SAAArD,EAAA,EAAA,MAAA4B,KAAA5B,UAAAgC,KAAAhC,EAAA,EAAA,MAAAoD,KAblFC,0EACO,MAAA,QAAM,GAAAkC,EAAAC,EAAAC,KACJ7D,CAMN,GAEAI,UAAAA;AAAAA,IAAAA;AAAAA,IAGAoB;AAAAA,EAAAA,GACH,GAAWpD,QAAA4B,GAAA5B,QAAAgC,GAAAhC,QAAAoD,GAAApD,QAAAqD,KAAAA,IAAArD,EAAA,EAAA,GAdXqD;AAcW;AAmBR,MAAM6T,KAAY;AAAA;AAAA,EAEvBhF,WAAAA;AAAAA,EACA7M,MAAAA;AAAAA,EACAoQ,QAAAA;AAAAA,EACAC,MAAAA;AAAAA,EACAS,KAAAA;AAAAA,EACA1C,YAAAA;AAAAA,EACAuD,MAAAA;AACF,GAEaG,KAAQD;","x_google_ignoreList":[5]}
@@ -1,17 +0,0 @@
1
- /**
2
- * The fixed block size of a Toggle in a wrapping group, per size, and under a
3
- * coarse pointer. One source for ToggleGroup's `maxRows` arithmetic and the
4
- * stories that measure it.
5
- *
6
- * holds-until: StyleX can import a constant into a static style. Toggle's
7
- * `styles.css.ts` must repeat these numbers in its `wrapped*` heights. The
8
- * ToggleGroup stories (small, default) and the Drawer coarse-pointer story
9
- * measure a rendered toggle against this module to ±0.5px, so a drift in
10
- * either file fails a test rather than a layout.
11
- */
12
- export declare const ROW_HEIGHT: {
13
- readonly small: 28;
14
- readonly default: 39;
15
- readonly coarse: 44;
16
- };
17
- //# sourceMappingURL=rowHeight.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rowHeight.d.ts","sourceRoot":"","sources":["../../../src/components/Toggle/rowHeight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;CAAgD,CAAA"}
@@ -1,12 +0,0 @@
1
- /**
2
- * The fixed block size of a Toggle in a wrapping group, per size, and under a
3
- * coarse pointer. One source for ToggleGroup's `maxRows` arithmetic and the
4
- * stories that measure it.
5
- *
6
- * holds-until: StyleX can import a constant into a static style. Toggle's
7
- * `styles.css.ts` must repeat these numbers in its `wrapped*` heights. The
8
- * ToggleGroup stories (small, default) and the Drawer coarse-pointer story
9
- * measure a rendered toggle against this module to ±0.5px, so a drift in
10
- * either file fails a test rather than a layout.
11
- */
12
- export const ROW_HEIGHT = {small: 28, default: 39, coarse: 44} as const