@ankhorage/zora 14.0.0 → 15.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 (249) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +176 -6
  3. package/dist/features/app-bar/adapters/inbound/AppBar.d.ts +5 -0
  4. package/dist/features/app-bar/adapters/inbound/AppBar.d.ts.map +1 -0
  5. package/dist/features/app-bar/adapters/inbound/AppBar.js +92 -0
  6. package/dist/features/app-bar/adapters/inbound/AppBar.js.map +1 -0
  7. package/dist/{components/app-bar/meta.d.ts → features/app-bar/appBarMeta.d.ts} +1 -1
  8. package/dist/features/app-bar/appBarMeta.d.ts.map +1 -0
  9. package/dist/{components/app-bar/meta.js → features/app-bar/appBarMeta.js} +1 -1
  10. package/dist/features/app-bar/appBarMeta.js.map +1 -0
  11. package/dist/features/app-bar/public.d.ts +3 -0
  12. package/dist/features/app-bar/public.d.ts.map +1 -0
  13. package/dist/features/app-bar/public.js +2 -0
  14. package/dist/features/app-bar/public.js.map +1 -0
  15. package/dist/features/bottom-sheet/public.d.ts +2 -2
  16. package/dist/features/bottom-sheet/public.d.ts.map +1 -1
  17. package/dist/features/bottom-sheet/public.js +1 -1
  18. package/dist/features/bottom-sheet/public.js.map +1 -1
  19. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.d.ts +5 -0
  20. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.d.ts.map +1 -0
  21. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.js +81 -0
  22. package/dist/features/breadcrumbs/adapters/inbound/Breadcrumbs.js.map +1 -0
  23. package/dist/features/breadcrumbs/breadcrumbsMeta.d.ts +119 -0
  24. package/dist/features/breadcrumbs/breadcrumbsMeta.d.ts.map +1 -0
  25. package/dist/features/breadcrumbs/breadcrumbsMeta.js +94 -0
  26. package/dist/features/breadcrumbs/breadcrumbsMeta.js.map +1 -0
  27. package/dist/features/breadcrumbs/public.d.ts +3 -0
  28. package/dist/features/breadcrumbs/public.d.ts.map +1 -0
  29. package/dist/features/breadcrumbs/public.js +2 -0
  30. package/dist/features/breadcrumbs/public.js.map +1 -0
  31. package/dist/features/button/utils/resolveButtonThemeRecipe.d.ts +1 -1
  32. package/dist/features/data-table/adapters/inbound/DataTable.d.ts.map +1 -1
  33. package/dist/features/data-table/adapters/inbound/DataTable.js +4 -2
  34. package/dist/features/data-table/adapters/inbound/DataTable.js.map +1 -1
  35. package/dist/features/form/formFieldMeta.d.ts +1 -1
  36. package/dist/features/form/formFieldMeta.js +1 -1
  37. package/dist/features/form/formFieldMeta.js.map +1 -1
  38. package/dist/features/form/radio/utils/resolveRadioGroupThemeRecipe.d.ts +1 -1
  39. package/dist/features/form/select/adapters/inbound/Select.d.ts +2 -0
  40. package/dist/features/form/select/adapters/inbound/Select.d.ts.map +1 -0
  41. package/dist/features/form/select/adapters/inbound/Select.js +2 -0
  42. package/dist/features/form/select/adapters/inbound/Select.js.map +1 -0
  43. package/dist/features/form/select/adapters/inbound/Select.native.d.ts +5 -0
  44. package/dist/features/form/select/adapters/inbound/Select.native.d.ts.map +1 -0
  45. package/dist/features/form/select/adapters/inbound/Select.native.js +42 -0
  46. package/dist/features/form/select/adapters/inbound/Select.native.js.map +1 -0
  47. package/dist/features/form/select/adapters/inbound/Select.web.d.ts +5 -0
  48. package/dist/features/form/select/adapters/inbound/Select.web.d.ts.map +1 -0
  49. package/dist/features/form/select/adapters/inbound/Select.web.js +31 -0
  50. package/dist/features/form/select/adapters/inbound/Select.web.js.map +1 -0
  51. package/dist/features/form/select/composition/SelectField.d.ts +10 -0
  52. package/dist/features/form/select/composition/SelectField.d.ts.map +1 -0
  53. package/dist/features/form/select/composition/SelectField.js +8 -0
  54. package/dist/features/form/select/composition/SelectField.js.map +1 -0
  55. package/dist/features/form/select/composition/SelectOptionRow.d.ts +12 -0
  56. package/dist/features/form/select/composition/SelectOptionRow.d.ts.map +1 -0
  57. package/dist/features/form/select/composition/SelectOptionRow.js +9 -0
  58. package/dist/features/form/select/composition/SelectOptionRow.js.map +1 -0
  59. package/dist/features/form/select/composition/SelectTrigger.d.ts +10 -0
  60. package/dist/features/form/select/composition/SelectTrigger.d.ts.map +1 -0
  61. package/dist/features/form/select/composition/SelectTrigger.js +9 -0
  62. package/dist/features/form/select/composition/SelectTrigger.js.map +1 -0
  63. package/dist/features/form/select/composition/useSelectController.d.ts +8 -0
  64. package/dist/features/form/select/composition/useSelectController.d.ts.map +1 -0
  65. package/dist/features/form/select/composition/useSelectController.js +15 -0
  66. package/dist/features/form/select/composition/useSelectController.js.map +1 -0
  67. package/dist/features/form/select/public.d.ts +3 -0
  68. package/dist/features/form/select/public.d.ts.map +1 -0
  69. package/dist/features/form/select/public.js +2 -0
  70. package/dist/features/form/select/public.js.map +1 -0
  71. package/dist/features/form/select/selectMeta.d.ts +195 -0
  72. package/dist/features/form/select/selectMeta.d.ts.map +1 -0
  73. package/dist/features/form/select/selectMeta.js +152 -0
  74. package/dist/features/form/select/selectMeta.js.map +1 -0
  75. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.d.ts +5 -0
  76. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.d.ts.map +1 -0
  77. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js +43 -0
  78. package/dist/features/popover-menu/adapters/inbound/PopoverMenu.js.map +1 -0
  79. package/dist/features/popover-menu/popoverMenuMeta.d.ts +9 -0
  80. package/dist/features/popover-menu/popoverMenuMeta.d.ts.map +1 -0
  81. package/dist/features/popover-menu/popoverMenuMeta.js +9 -0
  82. package/dist/features/popover-menu/popoverMenuMeta.js.map +1 -0
  83. package/dist/features/popover-menu/public.d.ts +3 -0
  84. package/dist/features/popover-menu/public.d.ts.map +1 -0
  85. package/dist/features/popover-menu/public.js +2 -0
  86. package/dist/features/popover-menu/public.js.map +1 -0
  87. package/dist/features/typography/utils/resolveHeadingThemeRecipe.d.ts +1 -1
  88. package/dist/features/typography/utils/resolveTextThemeRecipe.d.ts +1 -1
  89. package/dist/index.d.ts +5 -8
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +4 -4
  92. package/dist/index.js.map +1 -1
  93. package/dist/layout/settings-layout/SettingsLayout.d.ts +0 -2
  94. package/dist/layout/settings-layout/SettingsLayout.d.ts.map +1 -1
  95. package/dist/layout/settings-layout/SettingsLayout.js +1 -3
  96. package/dist/layout/settings-layout/SettingsLayout.js.map +1 -1
  97. package/dist/metadata/bindableComponentMeta.d.ts +1 -2
  98. package/dist/metadata/bindableComponentMeta.d.ts.map +1 -1
  99. package/dist/metadata/bindableComponentMeta.js +1 -2
  100. package/dist/metadata/bindableComponentMeta.js.map +1 -1
  101. package/dist/metadata/componentMeta.d.ts.map +1 -1
  102. package/dist/metadata/componentMeta.js +5 -6
  103. package/dist/metadata/componentMeta.js.map +1 -1
  104. package/dist/patterns/reader/ReaderSurface.js +1 -1
  105. package/dist/patterns/reader/ReaderSurface.js.map +1 -1
  106. package/dist/patterns/theme-composer/ThemeComposer.js +1 -1
  107. package/dist/patterns/theme-composer/ThemeComposer.js.map +1 -1
  108. package/dist/registry.d.ts.map +1 -1
  109. package/dist/registry.js +5 -6
  110. package/dist/registry.js.map +1 -1
  111. package/dist/{components/app-bar/types.d.ts → types/app-bar.d.ts} +8 -5
  112. package/dist/types/app-bar.d.ts.map +1 -0
  113. package/dist/types/app-bar.js +2 -0
  114. package/dist/types/app-bar.js.map +1 -0
  115. package/dist/{components/breadcrumbs/types.d.ts → types/breadcrumbs.d.ts} +8 -6
  116. package/dist/types/breadcrumbs.d.ts.map +1 -0
  117. package/dist/types/breadcrumbs.js +2 -0
  118. package/dist/types/breadcrumbs.js.map +1 -0
  119. package/dist/types/data-table.d.ts +2 -2
  120. package/dist/types/data-table.d.ts.map +1 -1
  121. package/dist/types/data-table.js.map +1 -1
  122. package/dist/types/popover-menu.d.ts +24 -0
  123. package/dist/types/popover-menu.d.ts.map +1 -0
  124. package/dist/types/popover-menu.js +2 -0
  125. package/dist/types/popover-menu.js.map +1 -0
  126. package/dist/types/select.d.ts +22 -0
  127. package/dist/types/select.d.ts.map +1 -0
  128. package/dist/types/select.js +2 -0
  129. package/dist/types/select.js.map +1 -0
  130. package/package.json +2 -4
  131. package/src/features/app-bar/adapters/inbound/AppBar.tsx +184 -0
  132. package/src/features/app-bar/public.ts +2 -0
  133. package/src/features/bottom-sheet/public.test.ts +10 -1
  134. package/src/features/bottom-sheet/public.ts +9 -1
  135. package/src/features/breadcrumbs/adapters/inbound/Breadcrumbs.tsx +179 -0
  136. package/src/features/breadcrumbs/breadcrumbsMeta.ts +95 -0
  137. package/src/features/breadcrumbs/public.test.ts +22 -0
  138. package/src/features/breadcrumbs/public.ts +6 -0
  139. package/src/features/data-table/adapters/inbound/DataTable.tsx +9 -5
  140. package/src/features/form/formFieldMeta.ts +1 -1
  141. package/src/features/form/select/adapters/inbound/Select.native.tsx +78 -0
  142. package/src/features/form/select/adapters/inbound/Select.tsx +1 -0
  143. package/src/features/form/select/adapters/inbound/Select.web.tsx +63 -0
  144. package/src/features/form/select/composition/SelectField.tsx +27 -0
  145. package/src/features/form/select/composition/SelectOptionRow.tsx +36 -0
  146. package/src/features/form/select/composition/SelectTrigger.tsx +32 -0
  147. package/src/features/form/select/composition/useSelectController.ts +21 -0
  148. package/src/features/form/select/public.test.ts +25 -0
  149. package/src/features/form/select/public.ts +2 -0
  150. package/src/features/form/select/selectMeta.ts +154 -0
  151. package/src/features/popover-menu/adapters/inbound/PopoverMenu.tsx +60 -0
  152. package/src/{components/breadcrumbs/meta.ts → features/popover-menu/popoverMenuMeta.ts} +3 -3
  153. package/src/features/popover-menu/public.test.ts +11 -0
  154. package/src/features/popover-menu/public.ts +6 -0
  155. package/src/index.ts +15 -8
  156. package/src/interactionPolicy.test.ts +24 -22
  157. package/src/layout/settings-layout/SettingsLayout.tsx +1 -3
  158. package/src/metadata/bindableComponentMeta.test.ts +8 -0
  159. package/src/metadata/bindableComponentMeta.ts +1 -2
  160. package/src/metadata/componentMeta.test.ts +3 -0
  161. package/src/metadata/componentMeta.ts +5 -6
  162. package/src/nativePeerContract.test.ts +5 -19
  163. package/src/patterns/reader/ReaderSurface.tsx +1 -1
  164. package/src/patterns/theme-composer/ThemeComposer.tsx +1 -1
  165. package/src/platformAcceptance.test.ts +1 -1
  166. package/src/registry.ts +5 -6
  167. package/src/theme/themeScopeStructure.test.ts +10 -5
  168. package/src/{components/app-bar/types.ts → types/app-bar.ts} +7 -4
  169. package/src/{components/breadcrumbs/types.ts → types/breadcrumbs.ts} +8 -5
  170. package/src/types/data-table.ts +2 -2
  171. package/src/types/popover-menu.ts +31 -0
  172. package/src/{components/select/types.ts → types/select.ts} +11 -3
  173. package/dist/components/app-bar/AppBar.d.ts +0 -7
  174. package/dist/components/app-bar/AppBar.d.ts.map +0 -1
  175. package/dist/components/app-bar/AppBar.js +0 -67
  176. package/dist/components/app-bar/AppBar.js.map +0 -1
  177. package/dist/components/app-bar/index.d.ts +0 -3
  178. package/dist/components/app-bar/index.d.ts.map +0 -1
  179. package/dist/components/app-bar/index.js +0 -3
  180. package/dist/components/app-bar/index.js.map +0 -1
  181. package/dist/components/app-bar/meta.d.ts.map +0 -1
  182. package/dist/components/app-bar/meta.js.map +0 -1
  183. package/dist/components/app-bar/types.d.ts.map +0 -1
  184. package/dist/components/app-bar/types.js +0 -2
  185. package/dist/components/app-bar/types.js.map +0 -1
  186. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +0 -7
  187. package/dist/components/breadcrumbs/Breadcrumbs.d.ts.map +0 -1
  188. package/dist/components/breadcrumbs/Breadcrumbs.js +0 -80
  189. package/dist/components/breadcrumbs/Breadcrumbs.js.map +0 -1
  190. package/dist/components/breadcrumbs/index.d.ts +0 -3
  191. package/dist/components/breadcrumbs/index.d.ts.map +0 -1
  192. package/dist/components/breadcrumbs/index.js +0 -2
  193. package/dist/components/breadcrumbs/index.js.map +0 -1
  194. package/dist/components/breadcrumbs/meta.d.ts +0 -9
  195. package/dist/components/breadcrumbs/meta.d.ts.map +0 -1
  196. package/dist/components/breadcrumbs/meta.js +0 -9
  197. package/dist/components/breadcrumbs/meta.js.map +0 -1
  198. package/dist/components/breadcrumbs/types.d.ts.map +0 -1
  199. package/dist/components/breadcrumbs/types.js +0 -2
  200. package/dist/components/breadcrumbs/types.js.map +0 -1
  201. package/dist/components/menu/DropdownMenu.d.ts +0 -7
  202. package/dist/components/menu/DropdownMenu.d.ts.map +0 -1
  203. package/dist/components/menu/DropdownMenu.js +0 -9
  204. package/dist/components/menu/DropdownMenu.js.map +0 -1
  205. package/dist/components/menu/Menu.d.ts +0 -7
  206. package/dist/components/menu/Menu.d.ts.map +0 -1
  207. package/dist/components/menu/Menu.js +0 -46
  208. package/dist/components/menu/Menu.js.map +0 -1
  209. package/dist/components/menu/index.d.ts +0 -4
  210. package/dist/components/menu/index.d.ts.map +0 -1
  211. package/dist/components/menu/index.js +0 -3
  212. package/dist/components/menu/index.js.map +0 -1
  213. package/dist/components/menu/meta.d.ts +0 -17
  214. package/dist/components/menu/meta.d.ts.map +0 -1
  215. package/dist/components/menu/meta.js +0 -17
  216. package/dist/components/menu/meta.js.map +0 -1
  217. package/dist/components/menu/types.d.ts +0 -22
  218. package/dist/components/menu/types.d.ts.map +0 -1
  219. package/dist/components/menu/types.js +0 -2
  220. package/dist/components/menu/types.js.map +0 -1
  221. package/dist/components/select/Select.d.ts +0 -7
  222. package/dist/components/select/Select.d.ts.map +0 -1
  223. package/dist/components/select/Select.js +0 -32
  224. package/dist/components/select/Select.js.map +0 -1
  225. package/dist/components/select/index.d.ts +0 -3
  226. package/dist/components/select/index.d.ts.map +0 -1
  227. package/dist/components/select/index.js +0 -3
  228. package/dist/components/select/index.js.map +0 -1
  229. package/dist/components/select/meta.d.ts +0 -9
  230. package/dist/components/select/meta.d.ts.map +0 -1
  231. package/dist/components/select/meta.js +0 -9
  232. package/dist/components/select/meta.js.map +0 -1
  233. package/dist/components/select/types.d.ts +0 -14
  234. package/dist/components/select/types.d.ts.map +0 -1
  235. package/dist/components/select/types.js +0 -2
  236. package/dist/components/select/types.js.map +0 -1
  237. package/src/components/app-bar/AppBar.tsx +0 -140
  238. package/src/components/app-bar/index.ts +0 -2
  239. package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -147
  240. package/src/components/breadcrumbs/index.ts +0 -2
  241. package/src/components/menu/DropdownMenu.tsx +0 -11
  242. package/src/components/menu/Menu.tsx +0 -59
  243. package/src/components/menu/index.ts +0 -3
  244. package/src/components/menu/meta.ts +0 -19
  245. package/src/components/menu/types.ts +0 -31
  246. package/src/components/select/Select.tsx +0 -67
  247. package/src/components/select/index.ts +0 -2
  248. package/src/components/select/meta.ts +0 -10
  249. /package/src/{components/app-bar/meta.ts → features/app-bar/appBarMeta.ts} +0 -0
@@ -0,0 +1,119 @@
1
+ export declare const breadcrumbsMeta: {
2
+ readonly name: "Breadcrumbs";
3
+ readonly category: "component";
4
+ readonly description: "Hierarchical route context where the final item represents the current location.";
5
+ readonly directManifestNode: true;
6
+ readonly allowedChildren: readonly [];
7
+ readonly blueprint: {
8
+ readonly label: "Breadcrumbs";
9
+ readonly defaultProps: {
10
+ readonly items: readonly [{
11
+ readonly id: "settings";
12
+ readonly label: "Settings";
13
+ }, {
14
+ readonly id: "general";
15
+ readonly label: "General";
16
+ }];
17
+ readonly separator: "/";
18
+ readonly compact: false;
19
+ readonly disabled: false;
20
+ };
21
+ };
22
+ readonly bindings: {
23
+ readonly events: {
24
+ readonly itemPress: {
25
+ readonly label: "Item press";
26
+ readonly description: "Runs when a non-current breadcrumb item is pressed.";
27
+ readonly payload: {
28
+ readonly eventType: "breadcrumbs.itemPress";
29
+ readonly fields: readonly [{
30
+ readonly path: "id";
31
+ readonly type: "string";
32
+ readonly label: "Item id";
33
+ }];
34
+ };
35
+ };
36
+ };
37
+ };
38
+ readonly events: {
39
+ readonly itemPress: {
40
+ readonly label: "Item press";
41
+ readonly eventType: "breadcrumbs.itemPress";
42
+ readonly description: "Emitted when a non-current breadcrumb item is pressed.";
43
+ readonly payloadFields: readonly [{
44
+ readonly path: "id";
45
+ readonly type: "string";
46
+ readonly label: "Item id";
47
+ }];
48
+ };
49
+ };
50
+ readonly props: {
51
+ readonly items: {
52
+ readonly type: "array";
53
+ readonly category: "Content";
54
+ readonly label: "Items";
55
+ readonly itemSchema: readonly [{
56
+ readonly key: "id";
57
+ readonly schema: {
58
+ readonly type: "string";
59
+ readonly category: "Content";
60
+ readonly label: "Id";
61
+ };
62
+ }, {
63
+ readonly key: "label";
64
+ readonly schema: {
65
+ readonly type: "string";
66
+ readonly category: "Content";
67
+ readonly label: "Label";
68
+ };
69
+ }, {
70
+ readonly key: "disabled";
71
+ readonly schema: {
72
+ readonly type: "boolean";
73
+ readonly category: "State";
74
+ readonly label: "Disabled";
75
+ readonly default: false;
76
+ };
77
+ }];
78
+ readonly authoring: {
79
+ readonly authority: "instance";
80
+ };
81
+ };
82
+ readonly separator: {
83
+ readonly type: "string";
84
+ readonly category: "Content";
85
+ readonly label: "Separator";
86
+ readonly default: "/";
87
+ readonly authoring: {
88
+ readonly authority: "instance";
89
+ };
90
+ };
91
+ readonly maxItems: {
92
+ readonly type: "number";
93
+ readonly category: "Layout";
94
+ readonly label: "Maximum items";
95
+ readonly authoring: {
96
+ readonly authority: "instance";
97
+ };
98
+ };
99
+ readonly compact: {
100
+ readonly type: "boolean";
101
+ readonly category: "Layout";
102
+ readonly label: "Compact";
103
+ readonly default: false;
104
+ readonly authoring: {
105
+ readonly authority: "instance";
106
+ };
107
+ };
108
+ readonly disabled: {
109
+ readonly type: "boolean";
110
+ readonly category: "State";
111
+ readonly label: "Disabled";
112
+ readonly default: false;
113
+ readonly authoring: {
114
+ readonly authority: "instance";
115
+ };
116
+ };
117
+ };
118
+ };
119
+ //# sourceMappingURL=breadcrumbsMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbsMeta.d.ts","sourceRoot":"","sources":["../../../src/features/breadcrumbs/breadcrumbsMeta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FU,CAAC"}
@@ -0,0 +1,94 @@
1
+ export const breadcrumbsMeta = {
2
+ name: 'Breadcrumbs',
3
+ category: 'component',
4
+ description: 'Hierarchical route context where the final item represents the current location.',
5
+ directManifestNode: true,
6
+ allowedChildren: [],
7
+ blueprint: {
8
+ label: 'Breadcrumbs',
9
+ defaultProps: {
10
+ items: [
11
+ { id: 'settings', label: 'Settings' },
12
+ { id: 'general', label: 'General' },
13
+ ],
14
+ separator: '/',
15
+ compact: false,
16
+ disabled: false,
17
+ },
18
+ },
19
+ bindings: {
20
+ events: {
21
+ itemPress: {
22
+ label: 'Item press',
23
+ description: 'Runs when a non-current breadcrumb item is pressed.',
24
+ payload: {
25
+ eventType: 'breadcrumbs.itemPress',
26
+ fields: [{ path: 'id', type: 'string', label: 'Item id' }],
27
+ },
28
+ },
29
+ },
30
+ },
31
+ events: {
32
+ itemPress: {
33
+ label: 'Item press',
34
+ eventType: 'breadcrumbs.itemPress',
35
+ description: 'Emitted when a non-current breadcrumb item is pressed.',
36
+ payloadFields: [{ path: 'id', type: 'string', label: 'Item id' }],
37
+ },
38
+ },
39
+ props: {
40
+ items: {
41
+ type: 'array',
42
+ category: 'Content',
43
+ label: 'Items',
44
+ itemSchema: [
45
+ {
46
+ key: 'id',
47
+ schema: { type: 'string', category: 'Content', label: 'Id' },
48
+ },
49
+ {
50
+ key: 'label',
51
+ schema: { type: 'string', category: 'Content', label: 'Label' },
52
+ },
53
+ {
54
+ key: 'disabled',
55
+ schema: {
56
+ type: 'boolean',
57
+ category: 'State',
58
+ label: 'Disabled',
59
+ default: false,
60
+ },
61
+ },
62
+ ],
63
+ authoring: { authority: 'instance' },
64
+ },
65
+ separator: {
66
+ type: 'string',
67
+ category: 'Content',
68
+ label: 'Separator',
69
+ default: '/',
70
+ authoring: { authority: 'instance' },
71
+ },
72
+ maxItems: {
73
+ type: 'number',
74
+ category: 'Layout',
75
+ label: 'Maximum items',
76
+ authoring: { authority: 'instance' },
77
+ },
78
+ compact: {
79
+ type: 'boolean',
80
+ category: 'Layout',
81
+ label: 'Compact',
82
+ default: false,
83
+ authoring: { authority: 'instance' },
84
+ },
85
+ disabled: {
86
+ type: 'boolean',
87
+ category: 'State',
88
+ label: 'Disabled',
89
+ default: false,
90
+ authoring: { authority: 'instance' },
91
+ },
92
+ },
93
+ };
94
+ //# sourceMappingURL=breadcrumbsMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbsMeta.js","sourceRoot":"","sources":["../../../src/features/breadcrumbs/breadcrumbsMeta.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,kFAAkF;IAC/F,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE;QACT,KAAK,EAAE,aAAa;QACpB,YAAY,EAAE;YACZ,KAAK,EAAE;gBACL,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;gBACrC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;aACpC;YACD,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,SAAS,EAAE;gBACT,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,qDAAqD;gBAClE,OAAO,EAAE;oBACP,SAAS,EAAE,uBAAuB;oBAClC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;iBAC3D;aACF;SACF;KACF;IACD,MAAM,EAAE;QACN,SAAS,EAAE;YACT,KAAK,EAAE,YAAY;YACnB,SAAS,EAAE,uBAAuB;YAClC,WAAW,EAAE,wDAAwD;YACrE,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAClE;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,OAAO;YACd,UAAU,EAAE;gBACV;oBACE,GAAG,EAAE,IAAI;oBACT,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC7D;gBACD;oBACE,GAAG,EAAE,OAAO;oBACZ,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;iBAChE;gBACD;oBACE,GAAG,EAAE,UAAU;oBACf,MAAM,EAAE;wBACN,IAAI,EAAE,SAAS;wBACf,QAAQ,EAAE,OAAO;wBACjB,KAAK,EAAE,UAAU;wBACjB,OAAO,EAAE,KAAK;qBACf;iBACF;aACF;YACD,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;KACF;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\n\nexport const breadcrumbsMeta = {\n name: 'Breadcrumbs',\n category: 'component',\n description: 'Hierarchical route context where the final item represents the current location.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Breadcrumbs',\n defaultProps: {\n items: [\n { id: 'settings', label: 'Settings' },\n { id: 'general', label: 'General' },\n ],\n separator: '/',\n compact: false,\n disabled: false,\n },\n },\n bindings: {\n events: {\n itemPress: {\n label: 'Item press',\n description: 'Runs when a non-current breadcrumb item is pressed.',\n payload: {\n eventType: 'breadcrumbs.itemPress',\n fields: [{ path: 'id', type: 'string', label: 'Item id' }],\n },\n },\n },\n },\n events: {\n itemPress: {\n label: 'Item press',\n eventType: 'breadcrumbs.itemPress',\n description: 'Emitted when a non-current breadcrumb item is pressed.',\n payloadFields: [{ path: 'id', type: 'string', label: 'Item id' }],\n },\n },\n props: {\n items: {\n type: 'array',\n category: 'Content',\n label: 'Items',\n itemSchema: [\n {\n key: 'id',\n schema: { type: 'string', category: 'Content', label: 'Id' },\n },\n {\n key: 'label',\n schema: { type: 'string', category: 'Content', label: 'Label' },\n },\n {\n key: 'disabled',\n schema: {\n type: 'boolean',\n category: 'State',\n label: 'Disabled',\n default: false,\n },\n },\n ],\n authoring: { authority: 'instance' },\n },\n separator: {\n type: 'string',\n category: 'Content',\n label: 'Separator',\n default: '/',\n authoring: { authority: 'instance' },\n },\n maxItems: {\n type: 'number',\n category: 'Layout',\n label: 'Maximum items',\n authoring: { authority: 'instance' },\n },\n compact: {\n type: 'boolean',\n category: 'Layout',\n label: 'Compact',\n default: false,\n authoring: { authority: 'instance' },\n },\n disabled: {\n type: 'boolean',\n category: 'State',\n label: 'Disabled',\n default: false,\n authoring: { authority: 'instance' },\n },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,3 @@
1
+ export type { BreadcrumbItem, BreadcrumbPressEvent, BreadcrumbsProps, } from '../../types/breadcrumbs';
2
+ export { Breadcrumbs } from './adapters/inbound/Breadcrumbs';
3
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/features/breadcrumbs/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Breadcrumbs } from './adapters/inbound/Breadcrumbs';
2
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/features/breadcrumbs/public.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC","sourcesContent":["export type {\n BreadcrumbItem,\n BreadcrumbPressEvent,\n BreadcrumbsProps,\n} from '../../types/breadcrumbs';\nexport { Breadcrumbs } from './adapters/inbound/Breadcrumbs';\n"]}
@@ -5,5 +5,5 @@ export declare function resolveButtonThemeRecipe(input: {
5
5
  readonly variant?: ZoraButtonVariant;
6
6
  readonly size?: ZoraControlSize;
7
7
  readonly themeFields: Readonly<Record<string, ThemeRecipeOverrideValue>>;
8
- }): Pick<import("@ankhorage/surface").ButtonProps, "color" | "variant" | "size">;
8
+ }): Pick<import("@ankhorage/surface").ButtonProps, "color" | "size" | "variant">;
9
9
  //# sourceMappingURL=resolveButtonThemeRecipe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../src/features/data-table/adapters/inbound/DataTable.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAKV,cAAc,EAGf,MAAM,8BAA8B,CAAC;AAStC;;GAEG;AACH,eAAO,MAAM,SAAS,GAuVE,IAAI,SAAS,MAAM,2DAvVgB,CAAC"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../src/features/data-table/adapters/inbound/DataTable.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAKV,cAAc,EAGf,MAAM,8BAA8B,CAAC;AAUtC;;GAEG;AACH,eAAO,MAAM,SAAS,GA2VE,IAAI,SAAS,MAAM,2DA3VgB,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import { ScrollView } from 'react-native';
3
- import { DropdownMenu } from '../../../../components/menu';
4
3
  import { Show } from '../../../../foundation';
5
4
  import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
6
5
  import { Button } from '../../../button/public';
@@ -8,6 +7,7 @@ import { IconButton } from '../../../button/public';
8
7
  import { Card } from '../../../card/public';
9
8
  import { EmptyState } from '../../../empty-state/public';
10
9
  import { Box, Stack } from '../../../layout/public';
10
+ import { PopoverMenu } from '../../../popover-menu/public';
11
11
  import { SkeletonList } from '../../../skeleton/public';
12
12
  import { Text } from '../../../typography/public';
13
13
  import { resolveDataTableRowKey } from '../../utils/resolveDataTableRowKey';
@@ -95,6 +95,7 @@ function renderTableCell(column, row, rowIndex) {
95
95
  function resolveNextSortDirection(current) {
96
96
  return current === 'asc' ? 'desc' : 'asc';
97
97
  }
98
+ /*** Maps row-scoped DataTable actions into the shared PopoverMenu action contract. */
98
99
  function mapRowActions(row, actions) {
99
100
  return actions.map((action) => ({
100
101
  description: action.description,
@@ -106,12 +107,13 @@ function mapRowActions(row, actions) {
106
107
  title: action.title,
107
108
  }));
108
109
  }
110
+ /*** Renders the row action trigger and anchored PopoverMenu when actions exist. */
109
111
  function renderRowActions({ row, rowIndex, rowActions, testID, interactionPolicy, }) {
110
112
  const actions = rowActions?.(row, rowIndex) ?? [];
111
113
  if (actions.length === 0) {
112
114
  return null;
113
115
  }
114
- return (<DropdownMenu actions={mapRowActions(row, actions)} interactionPolicy={interactionPolicy} testID={testID ? `${testID}-row-actions-${rowIndex}` : undefined} trigger={<IconButton icon={{ name: 'ellipsis-horizontal' }} label="Row actions" size="s" variant="ghost"/>}/>);
116
+ return (<PopoverMenu actions={mapRowActions(row, actions)} interactionPolicy={interactionPolicy} testID={testID ? `${testID}-row-actions-${rowIndex}` : undefined} trigger={({ toggle }) => (<IconButton icon={{ name: 'ellipsis-horizontal' }} interactionPolicy={interactionPolicy} label="Row actions" onPress={toggle} size="s" variant="ghost"/>)}/>);
115
117
  }
116
118
  function DataTableHeader({ columns, sort, onSortChange, density, interactionPolicy, }) {
117
119
  const padding = resolveRowPadding(density ?? 'comfortable');
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../../../src/features/data-table/adapters/inbound/DataTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { InteractionPolicy } from '@ankhorage/surface';\nimport React from 'react';\nimport { ScrollView, type ViewStyle } from 'react-native';\n\nimport { DropdownMenu, type MenuAction } from '../../../../components/menu';\nimport { Show } from '../../../../foundation';\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type {\n DataTableCellContext,\n DataTableColumn,\n DataTableColumnAlign,\n DataTableDensity,\n DataTableProps,\n DataTableRowAction,\n DataTableSortDirection,\n} from '../../../../types/data-table';\nimport { Button } from '../../../button/public';\nimport { IconButton } from '../../../button/public';\nimport { Card } from '../../../card/public';\nimport { EmptyState } from '../../../empty-state/public';\nimport { Box, Stack } from '../../../layout/public';\nimport { SkeletonList } from '../../../skeleton/public';\nimport { Text, type TextAlign } from '../../../typography/public';\nimport { resolveDataTableRowKey } from '../../utils/resolveDataTableRowKey';\n/***\n * Displays structured tabular data with responsive desktop/mobile layouts.\n */\nexport const DataTable = withZoraThemeScope(DataTableInner);\n\nfunction resolveTextAlign(align: DataTableColumnAlign | undefined): TextAlign {\n switch (align) {\n case 'center':\n return 'center';\n case 'end':\n return 'right';\n case 'start':\n default:\n return 'left';\n }\n}\n\nfunction resolveCellJustify(align: DataTableColumnAlign | undefined): ViewStyle['alignItems'] {\n switch (align) {\n case 'center':\n return 'center';\n case 'end':\n return 'flex-end';\n case 'start':\n default:\n return 'flex-start';\n }\n}\n\nfunction resolveCellStyle<TRow extends object>(column: DataTableColumn<TRow>): ViewStyle {\n return {\n alignItems: resolveCellJustify(column.align),\n flexGrow: column.width === undefined ? 1 : 0,\n flexShrink: 0,\n minWidth: column.minWidth ?? 140,\n width: column.width,\n };\n}\n\nfunction resolveRowPadding(density: DataTableDensity) {\n return density === 'compact'\n ? { px: 'm' as const, py: 's' as const }\n : { px: 'm' as const, py: 'm' as const };\n}\n\nfunction resolveAccessorValue<TRow extends object>(row: TRow, column: DataTableColumn<TRow>) {\n if (column.accessor === undefined) {\n return undefined;\n }\n\n return row[column.accessor];\n}\n\nfunction renderDefaultCell(value: unknown): React.ReactNode {\n if (value === null || value === undefined) {\n return '—';\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n\n return '—';\n}\n\nfunction createCellContext<TRow extends object>(\n column: DataTableColumn<TRow>,\n row: TRow,\n rowIndex: number,\n): DataTableCellContext<TRow> {\n return {\n column,\n row,\n rowIndex,\n value: resolveAccessorValue(row, column),\n };\n}\n\nfunction renderCell<TRow extends object>(\n column: DataTableColumn<TRow>,\n row: TRow,\n rowIndex: number,\n) {\n const context = createCellContext(column, row, rowIndex);\n return column.renderCell ? column.renderCell(context) : renderDefaultCell(context.value);\n}\n\nfunction renderTableCell<TRow extends object>(\n column: DataTableColumn<TRow>,\n row: TRow,\n rowIndex: number,\n) {\n if (column.renderCell) {\n return column.renderCell(createCellContext(column, row, rowIndex));\n }\n\n return (\n <Text align={resolveTextAlign(column.align)} variant=\"bodySmall\">\n {renderDefaultCell(resolveAccessorValue(row, column))}\n </Text>\n );\n}\n\nfunction resolveNextSortDirection(\n current: DataTableSortDirection | undefined,\n): DataTableSortDirection {\n return current === 'asc' ? 'desc' : 'asc';\n}\n\nfunction mapRowActions<TRow extends object>(\n row: TRow,\n actions: readonly DataTableRowAction<TRow>[],\n): readonly MenuAction[] {\n return actions.map((action) => ({\n description: action.description,\n disabled: action.disabled,\n icon: action.icon,\n id: action.id,\n intent: action.intent,\n onPress: action.onPress ? () => action.onPress?.(row) : undefined,\n title: action.title,\n }));\n}\n\nfunction renderRowActions<TRow extends object>({\n row,\n rowIndex,\n rowActions,\n testID,\n interactionPolicy,\n}: {\n row: TRow;\n rowIndex: number;\n rowActions: DataTableProps<TRow>['rowActions'];\n testID?: string;\n interactionPolicy?: InteractionPolicy;\n}): React.ReactNode {\n const actions = rowActions?.(row, rowIndex) ?? [];\n\n if (actions.length === 0) {\n return null;\n }\n\n return (\n <DropdownMenu\n actions={mapRowActions(row, actions)}\n interactionPolicy={interactionPolicy}\n testID={testID ? `${testID}-row-actions-${rowIndex}` : undefined}\n trigger={\n <IconButton\n icon={{ name: 'ellipsis-horizontal' }}\n label=\"Row actions\"\n size=\"s\"\n variant=\"ghost\"\n />\n }\n />\n );\n}\n\nfunction DataTableHeader<TRow extends object>({\n columns,\n sort,\n onSortChange,\n density,\n interactionPolicy,\n}: Pick<DataTableProps<TRow>, 'columns' | 'density' | 'onSortChange' | 'sort'> & {\n interactionPolicy?: InteractionPolicy;\n}) {\n const padding = resolveRowPadding(density ?? 'comfortable');\n const passive = interactionPolicy === 'passive';\n\n return (\n <Box bg=\"subtle\" borderColor=\"border\" borderWidth={1} radius=\"m\">\n <Stack direction=\"row\" align=\"center\">\n {columns.map((column) => {\n const currentDirection = sort?.columnId === column.id ? sort.direction : undefined;\n const sortable = Boolean(column.sortable && onSortChange);\n const directionLabel =\n currentDirection === undefined ? '' : currentDirection === 'asc' ? ' ↑' : ' ↓';\n\n return (\n <Box key={column.id} px={padding.px} py={padding.py} style={resolveCellStyle(column)}>\n {sortable ? (\n <Button\n color=\"primary\"\n interactionPolicy={interactionPolicy}\n onPress={() => {\n if (passive) return;\n\n onSortChange?.({\n columnId: column.id,\n direction: resolveNextSortDirection(currentDirection),\n });\n }}\n size=\"s\"\n variant=\"ghost\"\n >\n {column.header}\n {directionLabel}\n </Button>\n ) : (\n <Text\n align={resolveTextAlign(column.align)}\n emphasis=\"muted\"\n variant=\"caption\"\n weight=\"semiBold\"\n >\n {column.header}\n </Text>\n )}\n </Box>\n );\n })}\n <Box px={padding.px} py={padding.py} style={{ minWidth: 56, width: 56 }}>\n <Text align=\"right\" emphasis=\"muted\" variant=\"caption\" weight=\"semiBold\">\n Actions\n </Text>\n </Box>\n </Stack>\n </Box>\n );\n}\n\nfunction DataTableDesktop<TRow extends object>({\n columns,\n rows,\n rowActions,\n rowId,\n rowKey,\n sort,\n onSortChange,\n density,\n testID,\n interactionPolicy,\n}: DataTableProps<TRow>) {\n const padding = resolveRowPadding(density ?? 'comfortable');\n\n return (\n <ScrollView horizontal showsHorizontalScrollIndicator={false}>\n <Box minWidth={720} style={{ width: '100%' }}>\n <Stack gap=\"xs\">\n <DataTableHeader\n columns={columns}\n density={density}\n interactionPolicy={interactionPolicy}\n onSortChange={onSortChange}\n sort={sort}\n />\n <Stack gap=\"xs\">\n {rows.map((row, rowIndex) => (\n <Box\n bg=\"surface\"\n borderColor=\"border\"\n borderWidth={1}\n key={resolveDataTableRowKey(row, rowIndex, rowKey, rowId)}\n radius=\"m\"\n testID={testID ? `${testID}-row-${rowIndex}` : undefined}\n >\n <Stack direction=\"row\" align=\"center\">\n {columns.map((column) => (\n <Box\n key={column.id}\n px={padding.px}\n py={padding.py}\n style={resolveCellStyle(column)}\n >\n {renderTableCell(column, row, rowIndex)}\n </Box>\n ))}\n <Box\n px={padding.px}\n py={padding.py}\n style={{ alignItems: 'flex-end', minWidth: 56, width: 56 }}\n >\n {renderRowActions({ row, rowActions, rowIndex, testID, interactionPolicy })}\n </Box>\n </Stack>\n </Box>\n ))}\n </Stack>\n </Stack>\n </Box>\n </ScrollView>\n );\n}\n\nfunction DataTableMobile<TRow extends object>({\n columns,\n rows,\n rowActions,\n rowId,\n rowKey,\n testID,\n interactionPolicy,\n}: DataTableProps<TRow>) {\n const [primaryColumn, ...detailColumns] = columns;\n\n return (\n <Stack gap=\"s\">\n {rows.map((row, rowIndex) => {\n const title = primaryColumn\n ? renderCell(primaryColumn, row, rowIndex)\n : `Row ${rowIndex + 1}`;\n const actions = renderRowActions({ row, rowActions, rowIndex, testID, interactionPolicy });\n\n return (\n <Card\n actions={actions}\n compact\n interactionPolicy={interactionPolicy}\n key={resolveDataTableRowKey(row, rowIndex, rowKey, rowId)}\n testID={testID ? `${testID}-card-${rowIndex}` : undefined}\n title={title}\n >\n <Stack gap=\"s\">\n {detailColumns.map((column) => (\n <Stack gap=\"xxs\" key={column.id}>\n <Text emphasis=\"muted\" variant=\"caption\" weight=\"semiBold\">\n {column.header}\n </Text>\n {column.renderCell ? (\n renderCell(column, row, rowIndex)\n ) : (\n <Text variant=\"bodySmall\">\n {renderDefaultCell(resolveAccessorValue(row, column))}\n </Text>\n )}\n </Stack>\n ))}\n </Stack>\n </Card>\n );\n })}\n </Stack>\n );\n}\n\nfunction DataTableInner<TRow extends object>({\n themeId: _themeId,\n mode: _mode,\n rows,\n loading = false,\n loadingRows = 5,\n emptyTitle = 'No data',\n emptyDescription = 'There are no rows to display.',\n testID,\n density = 'comfortable',\n interactionPolicy,\n ...props\n}: DataTableProps<TRow>) {\n if (loading) {\n return <SkeletonList rows={loadingRows} variant=\"card\" testID={testID} />;\n }\n\n if (rows.length === 0) {\n return <EmptyState title={emptyTitle} description={emptyDescription} />;\n }\n\n const tableProps: DataTableProps<TRow> = {\n ...props,\n density,\n emptyDescription,\n emptyTitle,\n interactionPolicy,\n loading,\n loadingRows,\n rows,\n testID,\n };\n\n return (\n <Box testID={testID}>\n <Show when={{ base: false, md: true }} fallback={<DataTableMobile {...tableProps} />}>\n <DataTableDesktop {...tableProps} />\n </Show>\n </Box>\n );\n}\n"]}
1
+ {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../../../src/features/data-table/adapters/inbound/DataTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { InteractionPolicy } from '@ankhorage/surface';\nimport React from 'react';\nimport { ScrollView, type ViewStyle } from 'react-native';\n\nimport { Show } from '../../../../foundation';\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type {\n DataTableCellContext,\n DataTableColumn,\n DataTableColumnAlign,\n DataTableDensity,\n DataTableProps,\n DataTableRowAction,\n DataTableSortDirection,\n} from '../../../../types/data-table';\nimport { Button } from '../../../button/public';\nimport { IconButton } from '../../../button/public';\nimport { Card } from '../../../card/public';\nimport { EmptyState } from '../../../empty-state/public';\nimport { Box, Stack } from '../../../layout/public';\nimport { PopoverMenu, type PopoverMenuAction } from '../../../popover-menu/public';\nimport { SkeletonList } from '../../../skeleton/public';\nimport { Text, type TextAlign } from '../../../typography/public';\nimport { resolveDataTableRowKey } from '../../utils/resolveDataTableRowKey';\n/***\n * Displays structured tabular data with responsive desktop/mobile layouts.\n */\nexport const DataTable = withZoraThemeScope(DataTableInner);\n\nfunction resolveTextAlign(align: DataTableColumnAlign | undefined): TextAlign {\n switch (align) {\n case 'center':\n return 'center';\n case 'end':\n return 'right';\n case 'start':\n default:\n return 'left';\n }\n}\n\nfunction resolveCellJustify(align: DataTableColumnAlign | undefined): ViewStyle['alignItems'] {\n switch (align) {\n case 'center':\n return 'center';\n case 'end':\n return 'flex-end';\n case 'start':\n default:\n return 'flex-start';\n }\n}\n\nfunction resolveCellStyle<TRow extends object>(column: DataTableColumn<TRow>): ViewStyle {\n return {\n alignItems: resolveCellJustify(column.align),\n flexGrow: column.width === undefined ? 1 : 0,\n flexShrink: 0,\n minWidth: column.minWidth ?? 140,\n width: column.width,\n };\n}\n\nfunction resolveRowPadding(density: DataTableDensity) {\n return density === 'compact'\n ? { px: 'm' as const, py: 's' as const }\n : { px: 'm' as const, py: 'm' as const };\n}\n\nfunction resolveAccessorValue<TRow extends object>(row: TRow, column: DataTableColumn<TRow>) {\n if (column.accessor === undefined) {\n return undefined;\n }\n\n return row[column.accessor];\n}\n\nfunction renderDefaultCell(value: unknown): React.ReactNode {\n if (value === null || value === undefined) {\n return '—';\n }\n\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n\n return '—';\n}\n\nfunction createCellContext<TRow extends object>(\n column: DataTableColumn<TRow>,\n row: TRow,\n rowIndex: number,\n): DataTableCellContext<TRow> {\n return {\n column,\n row,\n rowIndex,\n value: resolveAccessorValue(row, column),\n };\n}\n\nfunction renderCell<TRow extends object>(\n column: DataTableColumn<TRow>,\n row: TRow,\n rowIndex: number,\n) {\n const context = createCellContext(column, row, rowIndex);\n return column.renderCell ? column.renderCell(context) : renderDefaultCell(context.value);\n}\n\nfunction renderTableCell<TRow extends object>(\n column: DataTableColumn<TRow>,\n row: TRow,\n rowIndex: number,\n) {\n if (column.renderCell) {\n return column.renderCell(createCellContext(column, row, rowIndex));\n }\n\n return (\n <Text align={resolveTextAlign(column.align)} variant=\"bodySmall\">\n {renderDefaultCell(resolveAccessorValue(row, column))}\n </Text>\n );\n}\n\nfunction resolveNextSortDirection(\n current: DataTableSortDirection | undefined,\n): DataTableSortDirection {\n return current === 'asc' ? 'desc' : 'asc';\n}\n\n/*** Maps row-scoped DataTable actions into the shared PopoverMenu action contract. */\nfunction mapRowActions<TRow extends object>(\n row: TRow,\n actions: readonly DataTableRowAction<TRow>[],\n): readonly PopoverMenuAction[] {\n return actions.map((action) => ({\n description: action.description,\n disabled: action.disabled,\n icon: action.icon,\n id: action.id,\n intent: action.intent,\n onPress: action.onPress ? () => action.onPress?.(row) : undefined,\n title: action.title,\n }));\n}\n\n/*** Renders the row action trigger and anchored PopoverMenu when actions exist. */\nfunction renderRowActions<TRow extends object>({\n row,\n rowIndex,\n rowActions,\n testID,\n interactionPolicy,\n}: {\n row: TRow;\n rowIndex: number;\n rowActions: DataTableProps<TRow>['rowActions'];\n testID?: string;\n interactionPolicy?: InteractionPolicy;\n}): React.ReactNode {\n const actions = rowActions?.(row, rowIndex) ?? [];\n\n if (actions.length === 0) {\n return null;\n }\n\n return (\n <PopoverMenu\n actions={mapRowActions(row, actions)}\n interactionPolicy={interactionPolicy}\n testID={testID ? `${testID}-row-actions-${rowIndex}` : undefined}\n trigger={({ toggle }) => (\n <IconButton\n icon={{ name: 'ellipsis-horizontal' }}\n interactionPolicy={interactionPolicy}\n label=\"Row actions\"\n onPress={toggle}\n size=\"s\"\n variant=\"ghost\"\n />\n )}\n />\n );\n}\n\nfunction DataTableHeader<TRow extends object>({\n columns,\n sort,\n onSortChange,\n density,\n interactionPolicy,\n}: Pick<DataTableProps<TRow>, 'columns' | 'density' | 'onSortChange' | 'sort'> & {\n interactionPolicy?: InteractionPolicy;\n}) {\n const padding = resolveRowPadding(density ?? 'comfortable');\n const passive = interactionPolicy === 'passive';\n\n return (\n <Box bg=\"subtle\" borderColor=\"border\" borderWidth={1} radius=\"m\">\n <Stack direction=\"row\" align=\"center\">\n {columns.map((column) => {\n const currentDirection = sort?.columnId === column.id ? sort.direction : undefined;\n const sortable = Boolean(column.sortable && onSortChange);\n const directionLabel =\n currentDirection === undefined ? '' : currentDirection === 'asc' ? ' ↑' : ' ↓';\n\n return (\n <Box key={column.id} px={padding.px} py={padding.py} style={resolveCellStyle(column)}>\n {sortable ? (\n <Button\n color=\"primary\"\n interactionPolicy={interactionPolicy}\n onPress={() => {\n if (passive) return;\n\n onSortChange?.({\n columnId: column.id,\n direction: resolveNextSortDirection(currentDirection),\n });\n }}\n size=\"s\"\n variant=\"ghost\"\n >\n {column.header}\n {directionLabel}\n </Button>\n ) : (\n <Text\n align={resolveTextAlign(column.align)}\n emphasis=\"muted\"\n variant=\"caption\"\n weight=\"semiBold\"\n >\n {column.header}\n </Text>\n )}\n </Box>\n );\n })}\n <Box px={padding.px} py={padding.py} style={{ minWidth: 56, width: 56 }}>\n <Text align=\"right\" emphasis=\"muted\" variant=\"caption\" weight=\"semiBold\">\n Actions\n </Text>\n </Box>\n </Stack>\n </Box>\n );\n}\n\nfunction DataTableDesktop<TRow extends object>({\n columns,\n rows,\n rowActions,\n rowId,\n rowKey,\n sort,\n onSortChange,\n density,\n testID,\n interactionPolicy,\n}: DataTableProps<TRow>) {\n const padding = resolveRowPadding(density ?? 'comfortable');\n\n return (\n <ScrollView horizontal showsHorizontalScrollIndicator={false}>\n <Box minWidth={720} style={{ width: '100%' }}>\n <Stack gap=\"xs\">\n <DataTableHeader\n columns={columns}\n density={density}\n interactionPolicy={interactionPolicy}\n onSortChange={onSortChange}\n sort={sort}\n />\n <Stack gap=\"xs\">\n {rows.map((row, rowIndex) => (\n <Box\n bg=\"surface\"\n borderColor=\"border\"\n borderWidth={1}\n key={resolveDataTableRowKey(row, rowIndex, rowKey, rowId)}\n radius=\"m\"\n testID={testID ? `${testID}-row-${rowIndex}` : undefined}\n >\n <Stack direction=\"row\" align=\"center\">\n {columns.map((column) => (\n <Box\n key={column.id}\n px={padding.px}\n py={padding.py}\n style={resolveCellStyle(column)}\n >\n {renderTableCell(column, row, rowIndex)}\n </Box>\n ))}\n <Box\n px={padding.px}\n py={padding.py}\n style={{ alignItems: 'flex-end', minWidth: 56, width: 56 }}\n >\n {renderRowActions({ row, rowActions, rowIndex, testID, interactionPolicy })}\n </Box>\n </Stack>\n </Box>\n ))}\n </Stack>\n </Stack>\n </Box>\n </ScrollView>\n );\n}\n\nfunction DataTableMobile<TRow extends object>({\n columns,\n rows,\n rowActions,\n rowId,\n rowKey,\n testID,\n interactionPolicy,\n}: DataTableProps<TRow>) {\n const [primaryColumn, ...detailColumns] = columns;\n\n return (\n <Stack gap=\"s\">\n {rows.map((row, rowIndex) => {\n const title = primaryColumn\n ? renderCell(primaryColumn, row, rowIndex)\n : `Row ${rowIndex + 1}`;\n const actions = renderRowActions({ row, rowActions, rowIndex, testID, interactionPolicy });\n\n return (\n <Card\n actions={actions}\n compact\n interactionPolicy={interactionPolicy}\n key={resolveDataTableRowKey(row, rowIndex, rowKey, rowId)}\n testID={testID ? `${testID}-card-${rowIndex}` : undefined}\n title={title}\n >\n <Stack gap=\"s\">\n {detailColumns.map((column) => (\n <Stack gap=\"xxs\" key={column.id}>\n <Text emphasis=\"muted\" variant=\"caption\" weight=\"semiBold\">\n {column.header}\n </Text>\n {column.renderCell ? (\n renderCell(column, row, rowIndex)\n ) : (\n <Text variant=\"bodySmall\">\n {renderDefaultCell(resolveAccessorValue(row, column))}\n </Text>\n )}\n </Stack>\n ))}\n </Stack>\n </Card>\n );\n })}\n </Stack>\n );\n}\n\nfunction DataTableInner<TRow extends object>({\n themeId: _themeId,\n mode: _mode,\n rows,\n loading = false,\n loadingRows = 5,\n emptyTitle = 'No data',\n emptyDescription = 'There are no rows to display.',\n testID,\n density = 'comfortable',\n interactionPolicy,\n ...props\n}: DataTableProps<TRow>) {\n if (loading) {\n return <SkeletonList rows={loadingRows} variant=\"card\" testID={testID} />;\n }\n\n if (rows.length === 0) {\n return <EmptyState title={emptyTitle} description={emptyDescription} />;\n }\n\n const tableProps: DataTableProps<TRow> = {\n ...props,\n density,\n emptyDescription,\n emptyTitle,\n interactionPolicy,\n loading,\n loadingRows,\n rows,\n testID,\n };\n\n return (\n <Box testID={testID}>\n <Show when={{ base: false, md: true }} fallback={<DataTableMobile {...tableProps} />}>\n <DataTableDesktop {...tableProps} />\n </Show>\n </Box>\n );\n}\n"]}
@@ -2,7 +2,7 @@ export declare const formFieldMeta: {
2
2
  readonly name: "FormField";
3
3
  readonly category: "component";
4
4
  readonly directManifestNode: true;
5
- readonly allowedChildren: readonly ["Checkbox", "CheckboxGroup", "RadioGroup", "TextInput"];
5
+ readonly allowedChildren: readonly ["Checkbox", "CheckboxGroup", "RadioGroup", "Select", "TextInput"];
6
6
  readonly blueprint: {
7
7
  readonly label: "Form field";
8
8
  readonly defaultProps: {
@@ -2,7 +2,7 @@ export const formFieldMeta = {
2
2
  name: 'FormField',
3
3
  category: 'component',
4
4
  directManifestNode: true,
5
- allowedChildren: ['Checkbox', 'CheckboxGroup', 'RadioGroup', 'TextInput'],
5
+ allowedChildren: ['Checkbox', 'CheckboxGroup', 'RadioGroup', 'Select', 'TextInput'],
6
6
  blueprint: { label: 'Form field', defaultProps: { label: 'Label' } },
7
7
  bindings: {
8
8
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"formFieldMeta.js","sourceRoot":"","sources":["../../../src/features/form/formFieldMeta.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,WAAW;IACrB,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,CAAC;IACzE,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACpE,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,SAAS,EAAE;gBACT,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,+BAA+B;gBAC5C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,eAAe,EAAE,IAAI;aACtB;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,gCAAgC;gBAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;aACxB;SACF;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;QAChF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;QAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;QACzE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;QAC1E,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;QACxF,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;QACtF,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;QACnF,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;KACrF;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\nexport const formFieldMeta = {\n name: 'FormField',\n category: 'component',\n directManifestNode: true,\n allowedChildren: ['Checkbox', 'CheckboxGroup', 'RadioGroup', 'TextInput'],\n blueprint: { label: 'Form field', defaultProps: { label: 'Label' } },\n bindings: {\n props: {\n errorText: {\n label: 'Error text',\n description: 'Field-level validation error.',\n value: { type: 'unknown' },\n acceptsFallback: true,\n },\n disabled: {\n label: 'Disabled',\n description: 'Whether the field is disabled.',\n value: { type: 'boolean' },\n acceptsFallback: true,\n acceptsTransforms: true,\n },\n },\n },\n props: {\n label: { type: 'string', category: 'Content', label: 'Label', default: 'Label' },\n description: { type: 'string', category: 'Content', label: 'Description' },\n helperText: { type: 'string', category: 'Content', label: 'Helper text' },\n errorText: { type: 'string', category: 'Validation', label: 'Error text' },\n required: { type: 'boolean', category: 'Validation', label: 'Required', default: false },\n invalid: { type: 'boolean', category: 'Validation', label: 'Invalid', default: false },\n disabled: { type: 'boolean', category: 'State', label: 'Disabled', default: false },\n readOnly: { type: 'boolean', category: 'State', label: 'Read-only', default: false },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
1
+ {"version":3,"file":"formFieldMeta.js","sourceRoot":"","sources":["../../../src/features/form/formFieldMeta.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,WAAW;IACrB,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC;IACnF,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACpE,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,SAAS,EAAE;gBACT,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,+BAA+B;gBAC5C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,eAAe,EAAE,IAAI;aACtB;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,gCAAgC;gBAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;aACxB;SACF;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;QAChF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;QAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;QACzE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;QAC1E,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;QACxF,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;QACtF,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;QACnF,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE;KACrF;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\nexport const formFieldMeta = {\n name: 'FormField',\n category: 'component',\n directManifestNode: true,\n allowedChildren: ['Checkbox', 'CheckboxGroup', 'RadioGroup', 'Select', 'TextInput'],\n blueprint: { label: 'Form field', defaultProps: { label: 'Label' } },\n bindings: {\n props: {\n errorText: {\n label: 'Error text',\n description: 'Field-level validation error.',\n value: { type: 'unknown' },\n acceptsFallback: true,\n },\n disabled: {\n label: 'Disabled',\n description: 'Whether the field is disabled.',\n value: { type: 'boolean' },\n acceptsFallback: true,\n acceptsTransforms: true,\n },\n },\n },\n props: {\n label: { type: 'string', category: 'Content', label: 'Label', default: 'Label' },\n description: { type: 'string', category: 'Content', label: 'Description' },\n helperText: { type: 'string', category: 'Content', label: 'Helper text' },\n errorText: { type: 'string', category: 'Validation', label: 'Error text' },\n required: { type: 'boolean', category: 'Validation', label: 'Required', default: false },\n invalid: { type: 'boolean', category: 'Validation', label: 'Invalid', default: false },\n disabled: { type: 'boolean', category: 'State', label: 'Disabled', default: false },\n readOnly: { type: 'boolean', category: 'State', label: 'Read-only', default: false },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -13,7 +13,7 @@ export declare function resolveRadioGroupThemeRecipe(input: {
13
13
  readonly themeFields: Readonly<Record<string, ThemeRecipeOverrideValue>>;
14
14
  }): {
15
15
  readonly gap: RadioGroupGap;
16
- readonly color: "primary" | "secondary" | "tertiary" | "quaternary" | "neutral" | "success" | "warning" | "error" | "info" | "danger";
16
+ readonly color: "primary" | "secondary" | "tertiary" | "quaternary" | "neutral" | "error" | "success" | "warning" | "info" | "danger";
17
17
  readonly size: RadioGroupSize;
18
18
  };
19
19
  export {};
@@ -0,0 +1,2 @@
1
+ export { Select } from './Select.web';
2
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../../../src/features/form/select/adapters/inbound/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Select } from './Select.web';
2
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../../../src/features/form/select/adapters/inbound/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export { Select } from './Select.web';\n"]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { SelectProps } from '../../../../../types/select';
3
+ /*** Renders Select with BottomSheetFlatList presentation on native platforms. */
4
+ export declare const Select: <TValue extends string = string>(props: SelectProps<TValue>) => React.ReactElement | null;
5
+ //# sourceMappingURL=Select.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.native.d.ts","sourceRoot":"","sources":["../../../../../../src/features/form/select/adapters/inbound/Select.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAS7E,iFAAiF;AACjF,eAAO,MAAM,MAAM,GAGE,MAAM,SAAS,MAAM,mEAHW,CAAC"}
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import { StyleSheet } from 'react-native';
3
+ import { withZoraThemeScope } from '../../../../../theme/withZoraThemeScope';
4
+ import { BottomSheetFlatList, useBottomSheet } from '../../../../bottom-sheet/public';
5
+ import { SelectField } from '../../composition/SelectField';
6
+ import { SelectOptionRow } from '../../composition/SelectOptionRow';
7
+ import { SelectTrigger } from '../../composition/SelectTrigger';
8
+ import { useSelectController } from '../../composition/useSelectController';
9
+ const SELECT_SHEET_MAX_HEIGHT = 480;
10
+ /*** Renders Select with BottomSheetFlatList presentation on native platforms. */
11
+ export const Select = withZoraThemeScope(SelectInner);
12
+ /*** Connects shared Select state and controls to the native BottomSheet host. */
13
+ function SelectInner({ themeId: _themeId, mode: _mode, ...props }) {
14
+ const { dismiss, present } = useBottomSheet();
15
+ const { select, selectedOption, value } = useSelectController(props);
16
+ const passive = props.interactionPolicy === 'passive';
17
+ const { disabled, interactionPolicy, options, readOnly, testID } = props;
18
+ const listData = React.useMemo(() => [...options], [options]);
19
+ const handleSelect = React.useCallback((nextValue) => {
20
+ select(nextValue);
21
+ dismiss();
22
+ }, [dismiss, select]);
23
+ const renderOption = React.useCallback(({ item }) => (<SelectOptionRow interactionPolicy={interactionPolicy} onSelect={handleSelect} option={item} selected={value === item.value} testID={testID}/>), [handleSelect, interactionPolicy, testID, value]);
24
+ const openSelect = React.useCallback(() => {
25
+ if (disabled || readOnly || passive)
26
+ return;
27
+ present({
28
+ contentMode: 'direct',
29
+ maxDynamicContentSize: SELECT_SHEET_MAX_HEIGHT,
30
+ content: (<BottomSheetFlatList contentContainerStyle={styles.listContent} data={listData} keyExtractor={(item) => item.value} renderItem={renderOption}/>),
31
+ });
32
+ }, [disabled, listData, passive, present, readOnly, renderOption]);
33
+ return (<SelectField props={props}>
34
+ <SelectTrigger displayLabel={selectedOption?.label} onPress={openSelect} props={props}/>
35
+ </SelectField>);
36
+ }
37
+ const styles = StyleSheet.create({
38
+ listContent: {
39
+ padding: 16,
40
+ },
41
+ });
42
+ //# sourceMappingURL=Select.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.native.js","sourceRoot":"","sources":["../../../../../../src/features/form/select/adapters/inbound/Select.native.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { type ListRenderItemInfo, StyleSheet } from 'react-native';\n\nimport { withZoraThemeScope } from '../../../../../theme/withZoraThemeScope';\nimport type { SelectOption, SelectProps } from '../../../../../types/select';\nimport { BottomSheetFlatList, useBottomSheet } from '../../../../bottom-sheet/public';\nimport { SelectField } from '../../composition/SelectField';\nimport { SelectOptionRow } from '../../composition/SelectOptionRow';\nimport { SelectTrigger } from '../../composition/SelectTrigger';\nimport { useSelectController } from '../../composition/useSelectController';\n\nconst SELECT_SHEET_MAX_HEIGHT = 480;\n\n/*** Renders Select with BottomSheetFlatList presentation on native platforms. */\nexport const Select = withZoraThemeScope(SelectInner);\n\n/*** Connects shared Select state and controls to the native BottomSheet host. */\nfunction SelectInner<TValue extends string = string>({\n themeId: _themeId,\n mode: _mode,\n ...props\n}: SelectProps<TValue>) {\n const { dismiss, present } = useBottomSheet();\n const { select, selectedOption, value } = useSelectController(props);\n const passive = props.interactionPolicy === 'passive';\n const { disabled, interactionPolicy, options, readOnly, testID } = props;\n const listData = React.useMemo(() => [...options], [options]);\n\n const handleSelect = React.useCallback(\n (nextValue: TValue) => {\n select(nextValue);\n dismiss();\n },\n [dismiss, select],\n );\n\n const renderOption = React.useCallback(\n ({ item }: ListRenderItemInfo<SelectOption<TValue>>) => (\n <SelectOptionRow\n interactionPolicy={interactionPolicy}\n onSelect={handleSelect}\n option={item}\n selected={value === item.value}\n testID={testID}\n />\n ),\n [handleSelect, interactionPolicy, testID, value],\n );\n\n const openSelect = React.useCallback(() => {\n if (disabled || readOnly || passive) return;\n\n present({\n contentMode: 'direct',\n maxDynamicContentSize: SELECT_SHEET_MAX_HEIGHT,\n content: (\n <BottomSheetFlatList\n contentContainerStyle={styles.listContent}\n data={listData}\n keyExtractor={(item) => item.value}\n renderItem={renderOption}\n />\n ),\n });\n }, [disabled, listData, passive, present, readOnly, renderOption]);\n\n return (\n <SelectField props={props}>\n <SelectTrigger displayLabel={selectedOption?.label} onPress={openSelect} props={props} />\n </SelectField>\n );\n}\n\nconst styles = StyleSheet.create({\n listContent: {\n padding: 16,\n },\n});\n"]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { SelectProps } from '../../../../../types/select';
3
+ /*** Renders Select with anchored Popover presentation on web. */
4
+ export declare const Select: <TValue extends string = string>(props: SelectProps<TValue>) => React.ReactElement | null;
5
+ //# sourceMappingURL=Select.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.web.d.ts","sourceRoot":"","sources":["../../../../../../src/features/form/select/adapters/inbound/Select.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAQ/D,iEAAiE;AACjE,eAAO,MAAM,MAAM,GAGE,MAAM,SAAS,MAAM,mEAHW,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { Popover } from '@ankhorage/surface';
2
+ import React from 'react';
3
+ import { withZoraThemeScope } from '../../../../../theme/withZoraThemeScope';
4
+ import { Stack } from '../../../../layout/public';
5
+ import { Surface } from '../../../../surface/public';
6
+ import { SelectField } from '../../composition/SelectField';
7
+ import { SelectOptionRow } from '../../composition/SelectOptionRow';
8
+ import { SelectTrigger } from '../../composition/SelectTrigger';
9
+ import { useSelectController } from '../../composition/useSelectController';
10
+ /*** Renders Select with anchored Popover presentation on web. */
11
+ export const Select = withZoraThemeScope(SelectInner);
12
+ /*** Connects shared Select state and controls to the web Popover host. */
13
+ function SelectInner({ themeId: _themeId, mode: _mode, ...props }) {
14
+ const [open, setOpen] = React.useState(false);
15
+ const { select, selectedOption, value } = useSelectController(props);
16
+ const { interactionPolicy, options, testID } = props;
17
+ const selectAndClose = React.useCallback((nextValue) => {
18
+ select(nextValue);
19
+ setOpen(false);
20
+ }, [select]);
21
+ return (<SelectField props={props}>
22
+ <Popover anchor={({ toggle }) => (<SelectTrigger displayLabel={selectedOption?.label} onPress={toggle} props={props}/>)} interactionPolicy={props.interactionPolicy} onOpenChange={setOpen} open={open} placement="bottom-start" testID={testID ? `${testID}-popover` : undefined}>
23
+ <Surface variant="raised">
24
+ <Stack gap="xs" p="xs">
25
+ {options.map((option) => (<SelectOptionRow interactionPolicy={interactionPolicy} key={option.value} onSelect={selectAndClose} option={option} selected={value === option.value} testID={testID}/>))}
26
+ </Stack>
27
+ </Surface>
28
+ </Popover>
29
+ </SelectField>);
30
+ }
31
+ //# sourceMappingURL=Select.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.web.js","sourceRoot":"","sources":["../../../../../../src/features/form/select/adapters/inbound/Select.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAE5E,iEAAiE;AACjE,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAEtD,0EAA0E;AAC1E,SAAS,WAAW,CAAiC,EACnD,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,EACX,GAAG,KAAK,EACY;IACpB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACrE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAErD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACtC,CAAC,SAAiB,EAAE,EAAE;QACpB,MAAM,CAAC,SAAS,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO,CACL,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CACxB;MAAA,CAAC,OAAO,CACN,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACtB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAG,CACtF,CAAC,CACF,iBAAiB,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAC3C,YAAY,CAAC,CAAC,OAAO,CAAC,CACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CACX,SAAS,CAAC,cAAc,CACxB,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAEjD;QAAA,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CACvB;UAAA,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACpB;YAAA,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,CAAC,eAAe,CACd,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAClB,QAAQ,CAAC,CAAC,cAAc,CAAC,CACzB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CACjC,MAAM,CAAC,CAAC,MAAM,CAAC,EACf,CACH,CAAC,CACJ;UAAA,EAAE,KAAK,CACT;QAAA,EAAE,OAAO,CACX;MAAA,EAAE,OAAO,CACX;IAAA,EAAE,WAAW,CAAC,CACf,CAAC;AACJ,CAAC","sourcesContent":["import { Popover } from '@ankhorage/surface';\nimport React from 'react';\n\nimport { withZoraThemeScope } from '../../../../../theme/withZoraThemeScope';\nimport type { SelectProps } from '../../../../../types/select';\nimport { Stack } from '../../../../layout/public';\nimport { Surface } from '../../../../surface/public';\nimport { SelectField } from '../../composition/SelectField';\nimport { SelectOptionRow } from '../../composition/SelectOptionRow';\nimport { SelectTrigger } from '../../composition/SelectTrigger';\nimport { useSelectController } from '../../composition/useSelectController';\n\n/*** Renders Select with anchored Popover presentation on web. */\nexport const Select = withZoraThemeScope(SelectInner);\n\n/*** Connects shared Select state and controls to the web Popover host. */\nfunction SelectInner<TValue extends string = string>({\n themeId: _themeId,\n mode: _mode,\n ...props\n}: SelectProps<TValue>) {\n const [open, setOpen] = React.useState(false);\n const { select, selectedOption, value } = useSelectController(props);\n const { interactionPolicy, options, testID } = props;\n\n const selectAndClose = React.useCallback(\n (nextValue: TValue) => {\n select(nextValue);\n setOpen(false);\n },\n [select],\n );\n\n return (\n <SelectField props={props}>\n <Popover\n anchor={({ toggle }) => (\n <SelectTrigger displayLabel={selectedOption?.label} onPress={toggle} props={props} />\n )}\n interactionPolicy={props.interactionPolicy}\n onOpenChange={setOpen}\n open={open}\n placement=\"bottom-start\"\n testID={testID ? `${testID}-popover` : undefined}\n >\n <Surface variant=\"raised\">\n <Stack gap=\"xs\" p=\"xs\">\n {options.map((option) => (\n <SelectOptionRow\n interactionPolicy={interactionPolicy}\n key={option.value}\n onSelect={selectAndClose}\n option={option}\n selected={value === option.value}\n testID={testID}\n />\n ))}\n </Stack>\n </Surface>\n </Popover>\n </SelectField>\n );\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type React from 'react';
2
+ import type { SelectProps } from '../../../../types/select';
3
+ /*** Wraps Select presentation in the canonical Surface form-field semantics. */
4
+ export declare function SelectField<TValue extends string>({ children, props }: SelectFieldProps<TValue>): React.JSX.Element;
5
+ interface SelectFieldProps<TValue extends string> {
6
+ children: React.ReactNode;
7
+ props: SelectProps<TValue>;
8
+ }
9
+ export {};
10
+ //# sourceMappingURL=SelectField.d.ts.map