@aglyn/shared-ui-jsx 1.0.0-beta.143

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 (261) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +7 -0
  3. package/package.json +63 -0
  4. package/src/index.d.ts +48 -0
  5. package/src/index.js +179 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/components/aglyn-text.d.ts +86 -0
  8. package/src/lib/components/aglyn-text.js +44 -0
  9. package/src/lib/components/aglyn-text.js.map +1 -0
  10. package/src/lib/components/app-link.d.ts +74 -0
  11. package/src/lib/components/app-link.js +139 -0
  12. package/src/lib/components/app-link.js.map +1 -0
  13. package/src/lib/components/aspect-ratio.d.ts +59 -0
  14. package/src/lib/components/aspect-ratio.js +153 -0
  15. package/src/lib/components/aspect-ratio.js.map +1 -0
  16. package/src/lib/components/background-image.component.d.ts +30 -0
  17. package/src/lib/components/background-image.component.js +42 -0
  18. package/src/lib/components/background-image.component.js.map +1 -0
  19. package/src/lib/components/card-columns.d.ts +86 -0
  20. package/src/lib/components/card-columns.js +148 -0
  21. package/src/lib/components/card-columns.js.map +1 -0
  22. package/src/lib/components/card-display.d.ts +36 -0
  23. package/src/lib/components/card-display.js +158 -0
  24. package/src/lib/components/card-display.js.map +1 -0
  25. package/src/lib/components/card-list-item.d.ts +35 -0
  26. package/src/lib/components/card-list-item.js +137 -0
  27. package/src/lib/components/card-list-item.js.map +1 -0
  28. package/src/lib/components/children-function-prop.d.ts +25 -0
  29. package/src/lib/components/children-function-prop.js +29 -0
  30. package/src/lib/components/children-function-prop.js.map +1 -0
  31. package/src/lib/components/confirmation-provider.component.d.ts +19 -0
  32. package/src/lib/components/confirmation-provider.component.js +83 -0
  33. package/src/lib/components/confirmation-provider.component.js.map +1 -0
  34. package/src/lib/components/container.d.ts +25 -0
  35. package/src/lib/components/container.js +62 -0
  36. package/src/lib/components/container.js.map +1 -0
  37. package/src/lib/components/data-table.component.d.ts +54 -0
  38. package/src/lib/components/data-table.component.js +211 -0
  39. package/src/lib/components/data-table.component.js.map +1 -0
  40. package/src/lib/components/dialog-confirm.d.ts +36 -0
  41. package/src/lib/components/dialog-confirm.js +74 -0
  42. package/src/lib/components/dialog-confirm.js.map +1 -0
  43. package/src/lib/components/ellipsis-pulse.component.d.ts +22 -0
  44. package/src/lib/components/ellipsis-pulse.component.js +51 -0
  45. package/src/lib/components/ellipsis-pulse.component.js.map +1 -0
  46. package/src/lib/components/emotion-cache-provider.d.ts +31 -0
  47. package/src/lib/components/emotion-cache-provider.js +40 -0
  48. package/src/lib/components/emotion-cache-provider.js.map +1 -0
  49. package/src/lib/components/empty-state.component.d.ts +63 -0
  50. package/src/lib/components/empty-state.component.js +214 -0
  51. package/src/lib/components/empty-state.component.js.map +1 -0
  52. package/src/lib/components/error-boundary.component.d.ts +28 -0
  53. package/src/lib/components/error-boundary.component.js +86 -0
  54. package/src/lib/components/error-boundary.component.js.map +1 -0
  55. package/src/lib/components/grid-buttons.d.ts +26 -0
  56. package/src/lib/components/grid-buttons.js +45 -0
  57. package/src/lib/components/grid-buttons.js.map +1 -0
  58. package/src/lib/components/grid-items.d.ts +103 -0
  59. package/src/lib/components/grid-items.js +336 -0
  60. package/src/lib/components/grid-items.js.map +1 -0
  61. package/src/lib/components/grid-list.d.ts +37 -0
  62. package/src/lib/components/grid-list.js +156 -0
  63. package/src/lib/components/grid-list.js.map +1 -0
  64. package/src/lib/components/help-tip.component.d.ts +30 -0
  65. package/src/lib/components/help-tip.component.js +139 -0
  66. package/src/lib/components/help-tip.component.js.map +1 -0
  67. package/src/lib/components/link-navigation-reporter.d.ts +24 -0
  68. package/src/lib/components/link-navigation-reporter.js +64 -0
  69. package/src/lib/components/link-navigation-reporter.js.map +1 -0
  70. package/src/lib/components/list-pagination.component.d.ts +57 -0
  71. package/src/lib/components/list-pagination.component.js +90 -0
  72. package/src/lib/components/list-pagination.component.js.map +1 -0
  73. package/src/lib/components/list-table.component.d.ts +155 -0
  74. package/src/lib/components/list-table.component.js +369 -0
  75. package/src/lib/components/list-table.component.js.map +1 -0
  76. package/src/lib/components/loading-layout-app.component.d.ts +35 -0
  77. package/src/lib/components/loading-layout-app.component.js +42 -0
  78. package/src/lib/components/loading-layout-app.component.js.map +1 -0
  79. package/src/lib/components/loading-modal-overlay.d.ts +30 -0
  80. package/src/lib/components/loading-modal-overlay.js +156 -0
  81. package/src/lib/components/loading-modal-overlay.js.map +1 -0
  82. package/src/lib/components/loading-modal.d.ts +19 -0
  83. package/src/lib/components/loading-modal.js +113 -0
  84. package/src/lib/components/loading-modal.js.map +1 -0
  85. package/src/lib/components/loading-text.component.d.ts +21 -0
  86. package/src/lib/components/loading-text.component.js +40 -0
  87. package/src/lib/components/loading-text.component.js.map +1 -0
  88. package/src/lib/components/mdi-icon/index.d.ts +2 -0
  89. package/src/lib/components/mdi-icon/index.js +4 -0
  90. package/src/lib/components/mdi-icon/index.js.map +1 -0
  91. package/src/lib/components/mdi-icon/md-icon-stack.d.ts +31 -0
  92. package/src/lib/components/mdi-icon/md-icon-stack.js +101 -0
  93. package/src/lib/components/mdi-icon/md-icon-stack.js.map +1 -0
  94. package/src/lib/components/mdi-icon/md-icon.d.ts +32 -0
  95. package/src/lib/components/mdi-icon/md-icon.js +147 -0
  96. package/src/lib/components/mdi-icon/md-icon.js.map +1 -0
  97. package/src/lib/components/mdi-icon/mdi-icon-from-id.d.ts +23 -0
  98. package/src/lib/components/mdi-icon/mdi-icon-from-id.js +35 -0
  99. package/src/lib/components/mdi-icon/mdi-icon-from-id.js.map +1 -0
  100. package/src/lib/components/mdi-icon/mdi-icon.d.ts +24 -0
  101. package/src/lib/components/mdi-icon/mdi-icon.js +46 -0
  102. package/src/lib/components/mdi-icon/mdi-icon.js.map +1 -0
  103. package/src/lib/components/measured-figures.component.d.ts +64 -0
  104. package/src/lib/components/measured-figures.component.js +161 -0
  105. package/src/lib/components/measured-figures.component.js.map +1 -0
  106. package/src/lib/components/menu.d.ts +45 -0
  107. package/src/lib/components/menu.js +229 -0
  108. package/src/lib/components/menu.js.map +1 -0
  109. package/src/lib/components/mui-shadow-dom.d.ts +38 -0
  110. package/src/lib/components/mui-shadow-dom.js +161 -0
  111. package/src/lib/components/mui-shadow-dom.js.map +1 -0
  112. package/src/lib/components/navigation-drawer.component.d.ts +31 -0
  113. package/src/lib/components/navigation-drawer.component.js +76 -0
  114. package/src/lib/components/navigation-drawer.component.js.map +1 -0
  115. package/src/lib/components/navigation-intent.d.ts +18 -0
  116. package/src/lib/components/navigation-intent.js +56 -0
  117. package/src/lib/components/navigation-intent.js.map +1 -0
  118. package/src/lib/components/navigation-view/index.d.ts +18 -0
  119. package/src/lib/components/navigation-view/index.js +19 -0
  120. package/src/lib/components/navigation-view/index.js.map +1 -0
  121. package/src/lib/components/navigation-view/navigation-view.d.ts +35 -0
  122. package/src/lib/components/navigation-view/navigation-view.js +175 -0
  123. package/src/lib/components/navigation-view/navigation-view.js.map +1 -0
  124. package/src/lib/components/next-link.d.ts +27 -0
  125. package/src/lib/components/next-link.js +88 -0
  126. package/src/lib/components/next-link.js.map +1 -0
  127. package/src/lib/components/popper-styled.component.d.ts +25 -0
  128. package/src/lib/components/popper-styled.component.js +129 -0
  129. package/src/lib/components/popper-styled.component.js.map +1 -0
  130. package/src/lib/components/quota-readout.component.d.ts +69 -0
  131. package/src/lib/components/quota-readout.component.js +52 -0
  132. package/src/lib/components/quota-readout.component.js.map +1 -0
  133. package/src/lib/components/resizeable-stack.d.ts +4 -0
  134. package/src/lib/components/resizeable-stack.js +23 -0
  135. package/src/lib/components/resizeable-stack.js.map +1 -0
  136. package/src/lib/components/row-actions-menu.component.d.ts +53 -0
  137. package/src/lib/components/row-actions-menu.component.js +132 -0
  138. package/src/lib/components/row-actions-menu.component.js.map +1 -0
  139. package/src/lib/components/ruler-guides.component.d.ts +35 -0
  140. package/src/lib/components/ruler-guides.component.js +166 -0
  141. package/src/lib/components/ruler-guides.component.js.map +1 -0
  142. package/src/lib/components/sandbox-frame.d.ts +42 -0
  143. package/src/lib/components/sandbox-frame.js +122 -0
  144. package/src/lib/components/sandbox-frame.js.map +1 -0
  145. package/src/lib/components/scroll-reaction.d.ts +59 -0
  146. package/src/lib/components/scroll-reaction.js +43 -0
  147. package/src/lib/components/scroll-reaction.js.map +1 -0
  148. package/src/lib/components/scroll-table.component.d.ts +124 -0
  149. package/src/lib/components/scroll-table.component.js +103 -0
  150. package/src/lib/components/scroll-table.component.js.map +1 -0
  151. package/src/lib/components/shadow-dom/index.d.ts +18 -0
  152. package/src/lib/components/shadow-dom/index.js +19 -0
  153. package/src/lib/components/shadow-dom/index.js.map +1 -0
  154. package/src/lib/components/shadow-dom/shadow-dom.d.ts +42 -0
  155. package/src/lib/components/shadow-dom/shadow-dom.js +123 -0
  156. package/src/lib/components/shadow-dom/shadow-dom.js.map +1 -0
  157. package/src/lib/components/splash-screen.d.ts +33 -0
  158. package/src/lib/components/splash-screen.js +105 -0
  159. package/src/lib/components/splash-screen.js.map +1 -0
  160. package/src/lib/components/sr-only.d.ts +20 -0
  161. package/src/lib/components/sr-only.js +25 -0
  162. package/src/lib/components/sr-only.js.map +1 -0
  163. package/src/lib/components/status-screen-plain.component.d.ts +27 -0
  164. package/src/lib/components/status-screen-plain.component.js +178 -0
  165. package/src/lib/components/status-screen-plain.component.js.map +1 -0
  166. package/src/lib/components/usage-meter.component.d.ts +30 -0
  167. package/src/lib/components/usage-meter.component.js +92 -0
  168. package/src/lib/components/usage-meter.component.js.map +1 -0
  169. package/src/lib/components/variable-text-field.component.d.ts +50 -0
  170. package/src/lib/components/variable-text-field.component.js +188 -0
  171. package/src/lib/components/variable-text-field.component.js.map +1 -0
  172. package/src/lib/components/zoomable-panning-component/index.d.ts +1 -0
  173. package/src/lib/components/zoomable-panning-component/index.js +3 -0
  174. package/src/lib/components/zoomable-panning-component/index.js.map +1 -0
  175. package/src/lib/components/zoomable-panning-component/util.d.ts +58 -0
  176. package/src/lib/components/zoomable-panning-component/util.js +114 -0
  177. package/src/lib/components/zoomable-panning-component/util.js.map +1 -0
  178. package/src/lib/components/zoomable-panning-component/zoomable-panning-component.d.ts +132 -0
  179. package/src/lib/components/zoomable-panning-component/zoomable-panning-component.js +728 -0
  180. package/src/lib/components/zoomable-panning-component/zoomable-panning-component.js.map +1 -0
  181. package/src/lib/const/aglyn-besigner-logo-full.d.ts +39 -0
  182. package/src/lib/const/aglyn-besigner-logo-full.js +146 -0
  183. package/src/lib/const/aglyn-besigner-logo-full.js.map +1 -0
  184. package/src/lib/const/aglyn-console-logo-full.d.ts +34 -0
  185. package/src/lib/const/aglyn-console-logo-full.js +142 -0
  186. package/src/lib/const/aglyn-console-logo-full.js.map +1 -0
  187. package/src/lib/const/aglyn-logo-class-keys.d.ts +30 -0
  188. package/src/lib/const/aglyn-logo-class-keys.js +32 -0
  189. package/src/lib/const/aglyn-logo-class-keys.js.map +1 -0
  190. package/src/lib/const/aglyn-logo-full.d.ts +29 -0
  191. package/src/lib/const/aglyn-logo-full.js +111 -0
  192. package/src/lib/const/aglyn-logo-full.js.map +1 -0
  193. package/src/lib/const/list-filter.d.ts +260 -0
  194. package/src/lib/const/list-filter.js +409 -0
  195. package/src/lib/const/list-filter.js.map +1 -0
  196. package/src/lib/const/prebuilt-components.d.ts +17 -0
  197. package/src/lib/const/prebuilt-components.js +22 -0
  198. package/src/lib/const/prebuilt-components.js.map +1 -0
  199. package/src/lib/const/svg-icons.d.ts +75 -0
  200. package/src/lib/const/svg-icons.js +313 -0
  201. package/src/lib/const/svg-icons.js.map +1 -0
  202. package/src/lib/const/table-pagination.d.ts +106 -0
  203. package/src/lib/const/table-pagination.js +106 -0
  204. package/src/lib/const/table-pagination.js.map +1 -0
  205. package/src/lib/contexts/confirmation.context.d.ts +996 -0
  206. package/src/lib/contexts/confirmation.context.js +49 -0
  207. package/src/lib/contexts/confirmation.context.js.map +1 -0
  208. package/src/lib/contexts/loading.context.d.ts +93 -0
  209. package/src/lib/contexts/loading.context.js +126 -0
  210. package/src/lib/contexts/loading.context.js.map +1 -0
  211. package/src/lib/hocs/create-hoc-with-context-consumer.d.ts +36 -0
  212. package/src/lib/hocs/create-hoc-with-context-consumer.js +44 -0
  213. package/src/lib/hocs/create-hoc-with-context-consumer.js.map +1 -0
  214. package/src/lib/hocs/with-hoc.d.ts +32 -0
  215. package/src/lib/hocs/with-hoc.js +37 -0
  216. package/src/lib/hocs/with-hoc.js.map +1 -0
  217. package/src/lib/hooks/mdi-icon/use-mdi-icon.d.ts +20 -0
  218. package/src/lib/hooks/mdi-icon/use-mdi-icon.js +48 -0
  219. package/src/lib/hooks/mdi-icon/use-mdi-icon.js.map +1 -0
  220. package/src/lib/hooks/mdi-icon/use-mdi-icons-fuzzy.d.ts +26 -0
  221. package/src/lib/hooks/mdi-icon/use-mdi-icons-fuzzy.js +73 -0
  222. package/src/lib/hooks/mdi-icon/use-mdi-icons-fuzzy.js.map +1 -0
  223. package/src/lib/hooks/mdi-icon/use-mdi-icons.d.ts +19 -0
  224. package/src/lib/hooks/mdi-icon/use-mdi-icons.js +49 -0
  225. package/src/lib/hooks/mdi-icon/use-mdi-icons.js.map +1 -0
  226. package/src/lib/hooks/router-events.d.ts +56 -0
  227. package/src/lib/hooks/router-events.js +88 -0
  228. package/src/lib/hooks/router-events.js.map +1 -0
  229. package/src/lib/hooks/use-async-effect.d.ts +24 -0
  230. package/src/lib/hooks/use-async-effect.js +44 -0
  231. package/src/lib/hooks/use-async-effect.js.map +1 -0
  232. package/src/lib/hooks/use-callback-param-ref.d.ts +19 -0
  233. package/src/lib/hooks/use-callback-param-ref.js +29 -0
  234. package/src/lib/hooks/use-callback-param-ref.js.map +1 -0
  235. package/src/lib/hooks/use-id.d.ts +21 -0
  236. package/src/lib/hooks/use-id.js +28 -0
  237. package/src/lib/hooks/use-id.js.map +1 -0
  238. package/src/lib/hooks/use-isomorphic-layout-effect.d.ts +19 -0
  239. package/src/lib/hooks/use-isomorphic-layout-effect.js +20 -0
  240. package/src/lib/hooks/use-isomorphic-layout-effect.js.map +1 -0
  241. package/src/lib/hooks/use-merge-refs.d.ts +38 -0
  242. package/src/lib/hooks/use-merge-refs.js +52 -0
  243. package/src/lib/hooks/use-merge-refs.js.map +1 -0
  244. package/src/lib/hooks/use-subscribable.d.ts +29 -0
  245. package/src/lib/hooks/use-subscribable.js +50 -0
  246. package/src/lib/hooks/use-subscribable.js.map +1 -0
  247. package/src/lib/types.d.ts +18 -0
  248. package/src/lib/types.js +18 -0
  249. package/src/lib/types.js.map +1 -0
  250. package/src/lib/utils/make-link-elements.d.ts +24 -0
  251. package/src/lib/utils/make-link-elements.js +32 -0
  252. package/src/lib/utils/make-link-elements.js.map +1 -0
  253. package/src/lib/utils/make-meta-elements.d.ts +24 -0
  254. package/src/lib/utils/make-meta-elements.js +32 -0
  255. package/src/lib/utils/make-meta-elements.js.map +1 -0
  256. package/src/lib/utils/scroll-overflow.d.ts +120 -0
  257. package/src/lib/utils/scroll-overflow.js +115 -0
  258. package/src/lib/utils/scroll-overflow.js.map +1 -0
  259. package/src/lib/utils/vendor.d.ts +17 -0
  260. package/src/lib/utils/vendor.js +18 -0
  261. package/src/lib/utils/vendor.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../libs/shared/ui/jsx/src/lib/components/navigation-view/navigation-view.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { generateComponentClassKeys } from '@aglyn/shared-ui-theme'\nimport { mergeSxProps } from '@aglyn/shared-ui-theme'\nimport {\n AppBar,\n type AppBarProps,\n Stack,\n type StackProps,\n styled,\n Toolbar,\n} from '@mui/material'\nimport { motion } from 'framer-motion'\nimport { forwardRef, useState } from 'react'\nimport ScrollReaction from '../scroll-reaction'\n\nconst classKeys = generateComponentClassKeys('AglynNavigationDrawer', [\n 'root',\n 'appBar',\n 'toolbar',\n 'appBarLeft',\n 'appBarRight',\n 'content',\n 'bottomAppBar',\n])\n\nconst StyledAppBar = styled<any>(AppBar)<AppBarProps>(({ theme }) => {\n const tv = (theme as any).vars || theme\n return {\n borderBottomWidth: 1,\n borderBottomStyle: 'solid',\n borderBottomColor: tv.palette.divider,\n zIndex: theme.zIndex.appBar,\n transition: theme.transitions.create(['background-image', 'box-shadow'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.standard,\n }),\n }\n})\n\nexport interface NavigationAppBarProps extends AppBarProps {\n scrollView?: Node | Window\n disableHideOnScroll?: boolean\n disableElevateOnScroll?: boolean\n}\n\nexport const NavigationAppBar = forwardRef<any, NavigationAppBarProps>(\n (props, forwardRef) => {\n const {\n disableHideOnScroll,\n disableElevateOnScroll,\n scrollView,\n children,\n ...rest\n } = props\n\n return (\n <ScrollReaction threshold={50} target={scrollView}>\n {({ activeWithoutHysteresis, activeWithHysteresis }) => (\n <StyledAppBar\n ref={forwardRef}\n color=\"default\"\n position=\"relative\"\n variant=\"elevation\"\n elevation={\n activeWithoutHysteresis && !disableElevateOnScroll ? 4 : 0\n }\n enableColorOnDark\n component={disableHideOnScroll ? 'header' : motion.header}\n animate={\n disableHideOnScroll\n ? undefined\n : {\n height: !activeWithHysteresis ? null : 0,\n overflow: 'hidden',\n }\n }\n {...rest}\n >\n {children}\n </StyledAppBar>\n )}\n </ScrollReaction>\n )\n },\n)\n\nexport interface NavigationViewProps extends StackProps {\n appBarLeft?: JSX.Children\n appBarRight?: JSX.Children\n childrenAfterToolbar?: JSX.Children\n bottomAppBar?: JSX.Children\n AppBarProps?: Partial<NavigationAppBarProps>\n AppBarLeftProps?: Partial<StackProps>\n AppBarRightProps?: Partial<StackProps>\n ContentProps?: Partial<StackProps>\n}\n\nexport const NavigationView = forwardRef<any, NavigationViewProps>(\n (props, forwardRef) => {\n const {\n sx,\n children,\n appBarLeft,\n appBarRight,\n childrenAfterToolbar,\n bottomAppBar,\n AppBarProps,\n AppBarLeftProps,\n AppBarRightProps,\n ContentProps,\n ...rest\n } = props\n\n const [scrollView, setScrollView] = useState<Node | Window>(null)\n\n return (\n <Stack\n ref={forwardRef}\n direction=\"column\"\n spacing={0}\n {...rest}\n sx={mergeSxProps(\n {\n alignItems: 'stretch',\n justifyContent: 'flex-start',\n flexGrow: 1,\n height: 1,\n width: 1,\n overflow: 'hidden',\n },\n sx,\n )}\n >\n <NavigationAppBar\n scrollView={scrollView}\n className={classKeys.appBar}\n {...AppBarProps}\n >\n <Toolbar className={classKeys.toolbar}>\n <Stack\n direction=\"row\"\n spacing={2}\n sx={{\n alignItems: 'center',\n justifyContent: 'space-between',\n width: 1,\n }}\n >\n <Stack\n direction=\"row\"\n className={classKeys.appBarLeft}\n {...AppBarLeftProps}\n sx={mergeSxProps(\n { alignItems: 'center', justifyContent: 'flex-start' },\n AppBarLeftProps?.sx,\n )}\n >\n {appBarLeft}\n </Stack>\n <Stack\n direction=\"row\"\n className={classKeys.appBarRight}\n {...AppBarRightProps}\n sx={mergeSxProps(\n { alignItems: 'center', justifyContent: 'flex-start' },\n AppBarRightProps?.sx,\n )}\n >\n {appBarRight}\n </Stack>\n </Stack>\n </Toolbar>\n {childrenAfterToolbar}\n </NavigationAppBar>\n <Stack\n ref={setScrollView}\n component=\"main\"\n direction=\"column\"\n className={classKeys.content}\n {...ContentProps}\n sx={mergeSxProps(\n {\n overflow: 'auto',\n flexGrow: 1,\n height: 1,\n width: 1,\n bgcolor: 'background.default',\n zIndex: 1,\n },\n ContentProps?.sx,\n )}\n >\n {children}\n </Stack>\n <Stack\n component=\"footer\"\n direction=\"column\"\n className={classKeys.bottomAppBar}\n >\n {bottomAppBar}\n </Stack>\n </Stack>\n )\n },\n)\nNavigationView.displayName = 'NavigationView'\n\nexport default NavigationView\n"],"names":["generateComponentClassKeys","mergeSxProps","AppBar","Stack","styled","Toolbar","motion","forwardRef","useState","ScrollReaction","classKeys","StyledAppBar","theme","tv","vars","borderBottomWidth","borderBottomStyle","borderBottomColor","palette","divider","zIndex","appBar","transition","transitions","create","easing","sharp","duration","standard","NavigationAppBar","props","disableHideOnScroll","disableElevateOnScroll","scrollView","children","rest","threshold","target","activeWithoutHysteresis","activeWithHysteresis","ref","color","position","variant","elevation","enableColorOnDark","component","header","animate","undefined","height","overflow","NavigationView","sx","appBarLeft","appBarRight","childrenAfterToolbar","bottomAppBar","AppBarProps","AppBarLeftProps","AppBarRightProps","ContentProps","setScrollView","direction","spacing","alignItems","justifyContent","flexGrow","width","className","toolbar","content","bgcolor","displayName"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2024 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { type LinkProps } from 'next/link';
18
+ import { type AnchorHTMLAttributes } from 'react';
19
+ export interface NextAnchorProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
20
+ }
21
+ export declare const NextAnchor: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & NextAnchorProps, Pick<import("react").DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, keyof import("react").ClassAttributes<HTMLAnchorElement> | keyof AnchorHTMLAttributes<HTMLAnchorElement>>, {}>;
22
+ export type NextLinkBaseProps = Omit<NextAnchorProps, 'href'> & Omit<LinkProps, 'href'> & JSX.OverrideableComponentProps;
23
+ export interface NextLinkProps extends NextLinkBaseProps, NextLinkBaseProps {
24
+ hrefTo?: LinkProps['href'];
25
+ }
26
+ export declare const NextLink: import("react").ForwardRefExoticComponent<Omit<NextLinkProps, "ref"> & import("react").RefAttributes<any>>;
27
+ export default NextLink;
@@ -0,0 +1,88 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ /**
5
+ * @license
6
+ * Copyright 2024 Aglyn LLC
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */ import { styled } from "@mui/material/styles";
20
+ import Link from "next/link";
21
+ import { forwardRef, useCallback, useState } from "react";
22
+ import { LinkNavigationReporter } from "./link-navigation-reporter.js";
23
+ // Add support for the sx prop
24
+ export const NextAnchor = styled('a', {
25
+ name: 'AglynNextLink'
26
+ })({});
27
+ NextAnchor.displayName = 'NextAnchor';
28
+ NextAnchor.aglyn = true;
29
+ export const NextLink = /*#__PURE__*/ forwardRef((props, ref)=>{
30
+ const { href: _2, hrefTo, replace, scroll, passHref = true, shallow, prefetch, locale, children, onPointerEnter, onTouchStart, onFocus } = props, rest = _object_without_properties_loose(props, [
31
+ "href",
32
+ "hrefTo",
33
+ "replace",
34
+ "scroll",
35
+ "passHref",
36
+ "shallow",
37
+ "prefetch",
38
+ "locale",
39
+ "children",
40
+ "onPointerEnter",
41
+ "onTouchStart",
42
+ "onFocus"
43
+ ]);
44
+ // Next prefetches every link that enters the viewport, and for a statically
45
+ // generated route that means the route's whole RSC payload. On a page whose
46
+ // header links to five destinations, a visitor who reads the page and leaves
47
+ // is served all five anyway — measured at 164.5 KB across 5 requests on the
48
+ // marketing home page, about a sixth of everything that page transfers, and
49
+ // five tenant invocations besides.
50
+ //
51
+ // Prefetching is held until the visitor reaches for a link instead. Pointer,
52
+ // touch and focus are the three ways that happens, and each precedes the
53
+ // click by long enough for the payload to land. Flipping Next's own prop is
54
+ // what re-arms it: `false` suppresses viewport AND hover prefetch in the app
55
+ // router, so leaving it there would move the fetch onto the click itself.
56
+ //
57
+ // An explicit `prefetch` from a caller still decides — `true` for a link
58
+ // worth paying for up front, `false` for one that must never prefetch.
59
+ const [reachedFor, setReachedFor] = useState(false);
60
+ const noteIntent = useCallback(()=>setReachedFor(true), []);
61
+ const compose = (theirs)=>(event)=>{
62
+ theirs == null ? void 0 : theirs(event);
63
+ noteIntent();
64
+ };
65
+ return /*#__PURE__*/ _jsxs(Link, _extends({
66
+ ref: ref,
67
+ href: hrefTo,
68
+ locale: locale,
69
+ passHref: passHref,
70
+ prefetch: prefetch != null ? prefetch : reachedFor ? undefined : false,
71
+ replace: replace,
72
+ scroll: scroll,
73
+ shallow: shallow,
74
+ onPointerEnter: compose(onPointerEnter),
75
+ onTouchStart: compose(onTouchStart),
76
+ onFocus: compose(onFocus)
77
+ }, rest, {
78
+ children: [
79
+ children,
80
+ /*#__PURE__*/ _jsx(LinkNavigationReporter, {})
81
+ ]
82
+ }));
83
+ });
84
+ NextLink.displayName = 'NextLink';
85
+ NextLink.aglyn = true;
86
+ export default NextLink;
87
+
88
+ //# sourceMappingURL=next-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/components/next-link.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2024 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { styled } from '@mui/material/styles'\nimport Link, { type LinkProps } from 'next/link'\nimport {\n type AnchorHTMLAttributes,\n forwardRef,\n useCallback,\n useState,\n} from 'react'\nimport { LinkNavigationReporter } from './link-navigation-reporter'\n\nexport interface NextAnchorProps\n extends AnchorHTMLAttributes<HTMLAnchorElement> {}\n\n// Add support for the sx prop\nexport const NextAnchor = styled('a', {\n name: 'AglynNextLink',\n})<NextAnchorProps>({})\nNextAnchor.displayName = 'NextAnchor'\nNextAnchor.aglyn = true\n\nexport type NextLinkBaseProps = Omit<NextAnchorProps, 'href'> &\n Omit<LinkProps, 'href'> &\n JSX.OverrideableComponentProps\n\nexport interface NextLinkProps extends NextLinkBaseProps, NextLinkBaseProps {\n hrefTo?: LinkProps['href']\n}\n\nexport const NextLink = forwardRef<any, NextLinkProps>((props, ref) => {\n const {\n href: _2,\n hrefTo,\n replace,\n scroll,\n passHref = true,\n shallow,\n prefetch,\n locale,\n children,\n onPointerEnter,\n onTouchStart,\n onFocus,\n ...rest\n } = props as LinkProps & NextLinkProps\n\n // Next prefetches every link that enters the viewport, and for a statically\n // generated route that means the route's whole RSC payload. On a page whose\n // header links to five destinations, a visitor who reads the page and leaves\n // is served all five anyway — measured at 164.5 KB across 5 requests on the\n // marketing home page, about a sixth of everything that page transfers, and\n // five tenant invocations besides.\n //\n // Prefetching is held until the visitor reaches for a link instead. Pointer,\n // touch and focus are the three ways that happens, and each precedes the\n // click by long enough for the payload to land. Flipping Next's own prop is\n // what re-arms it: `false` suppresses viewport AND hover prefetch in the app\n // router, so leaving it there would move the fetch onto the click itself.\n //\n // An explicit `prefetch` from a caller still decides — `true` for a link\n // worth paying for up front, `false` for one that must never prefetch.\n const [reachedFor, setReachedFor] = useState(false)\n const noteIntent = useCallback(() => setReachedFor(true), [])\n const compose =\n (theirs: ((event: any) => void) | undefined) => (event: any) => {\n theirs?.(event)\n noteIntent()\n }\n\n return (\n <Link\n ref={ref}\n href={hrefTo}\n locale={locale}\n passHref={passHref}\n prefetch={prefetch ?? (reachedFor ? undefined : false)}\n replace={replace}\n scroll={scroll}\n shallow={shallow}\n onPointerEnter={compose(onPointerEnter)}\n onTouchStart={compose(onTouchStart)}\n onFocus={compose(onFocus)}\n {...rest}\n >\n {children}\n {/* null-rendering: drives the global loading overlay off this link's\n real navigation transition (useLinkStatus), not URL-commit. */}\n <LinkNavigationReporter />\n </Link>\n )\n})\n\nNextLink.displayName = 'NextLink'\nNextLink.aglyn = true\n\nexport default NextLink\n"],"names":["styled","Link","forwardRef","useCallback","useState","LinkNavigationReporter","NextAnchor","name","displayName","aglyn","NextLink","props","ref","href","_2","hrefTo","replace","scroll","passHref","shallow","prefetch","locale","children","onPointerEnter","onTouchStart","onFocus","rest","reachedFor","setReachedFor","noteIntent","compose","theirs","event","undefined"],"mappings":";;;AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,MAAM,QAAQ,uBAAsB;AAC7C,OAAOC,UAA8B,YAAW;AAChD,SAEEC,UAAU,EACVC,WAAW,EACXC,QAAQ,QACH,QAAO;AACd,SAASC,sBAAsB,QAAQ,gCAA4B;AAKnE,8BAA8B;AAC9B,OAAO,MAAMC,aAAaN,OAAO,KAAK;IACpCO,MAAM;AACR,GAAoB,CAAC,GAAE;AACvBD,WAAWE,WAAW,GAAG;AACzBF,WAAWG,KAAK,GAAG;AAUnB,OAAO,MAAMC,yBAAWR,WAA+B,CAACS,OAAOC;IAC7D,MAAM,EACJC,MAAMC,EAAE,EACRC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,WAAW,IAAI,EACfC,OAAO,EACPC,QAAQ,EACRC,MAAM,EACNC,QAAQ,EACRC,cAAc,EACdC,YAAY,EACZC,OAAO,EAER,GAAGd,OADCe,wCACDf;;;;;;;;;;;;;;IAEJ,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,mCAAmC;IACnC,EAAE;IACF,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,EAAE;IACF,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,CAACgB,YAAYC,cAAc,GAAGxB,SAAS;IAC7C,MAAMyB,aAAa1B,YAAY,IAAMyB,cAAc,OAAO,EAAE;IAC5D,MAAME,UACJ,CAACC,SAA+C,CAACC;YAC/CD,0BAAAA,OAASC;YACTH;QACF;IAEF,qBACE,MAAC5B;QACCW,KAAKA;QACLC,MAAME;QACNM,QAAQA;QACRH,UAAUA;QACVE,QAAQ,EAAEA,mBAAAA,WAAaO,aAAaM,YAAY;QAChDjB,SAASA;QACTC,QAAQA;QACRE,SAASA;QACTI,gBAAgBO,QAAQP;QACxBC,cAAcM,QAAQN;QACtBC,SAASK,QAAQL;OACbC;;YAEHJ;0BAGD,KAACjB;;;AAGP,GAAE;AAEFK,SAASF,WAAW,GAAG;AACvBE,SAASD,KAAK,GAAG;AAEjB,eAAeC,SAAQ"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { type PopperProps as MuiPopperProps } from '@mui/material/Popper';
18
+ import { HTMLAttributes } from 'react';
19
+ export declare const PopperStyledArrowComponent: import("@emotion/styled").StyledComponent<Pick<HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<any>, keyof import("react").RefAttributes<any> | keyof HTMLAttributes<HTMLDivElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
20
+ export interface PopperStyledComponentProps extends MuiPopperProps {
21
+ disableArrow?: boolean;
22
+ arrowGap?: number | string;
23
+ }
24
+ export declare const PopperStyledComponent: import("@emotion/styled").StyledComponent<MuiPopperProps & import("react").RefAttributes<HTMLDivElement> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & PopperStyledComponentProps, {}, {}>;
25
+ export default PopperStyledComponent;
@@ -0,0 +1,129 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ /**
5
+ * @license
6
+ * Copyright 2023 Aglyn LLC
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ */ import { generateComponentClassKeys, styled } from "@aglyn/shared-ui-theme";
20
+ import { _isEqualitySameType } from "@aglyn/shared-util-tools";
21
+ import MuiPopper from "@mui/material/Popper";
22
+ import clsx from "clsx";
23
+ import { forwardRef } from "react";
24
+ const classKeys = generateComponentClassKeys('AglynPopperStyled', [
25
+ 'arrow'
26
+ ]);
27
+ export const PopperStyledArrowComponent = styled(/*#__PURE__*/ forwardRef((props, ref)=>{
28
+ const { className } = props, rest = _object_without_properties_loose(props, [
29
+ "className"
30
+ ]);
31
+ return /*#__PURE__*/ _jsx("div", _extends({
32
+ ref: ref,
33
+ className: clsx(classKeys.arrow, className)
34
+ }, rest));
35
+ }), {
36
+ name: 'AglynPopperArrow'
37
+ })({
38
+ position: 'absolute',
39
+ fontSize: 7,
40
+ width: '3em',
41
+ height: '3em',
42
+ '&::before': {
43
+ content: '""',
44
+ margin: 'auto',
45
+ display: 'block',
46
+ width: 0,
47
+ height: 0,
48
+ borderStyle: 'solid'
49
+ }
50
+ });
51
+ export const PopperStyledComponent = styled(MuiPopper, {
52
+ name: 'AglynPopperStyled',
53
+ shouldForwardProp: (prop)=>!_isEqualitySameType(prop, null, 'disableArrow', 'arrowGap')
54
+ })(({ theme, disableArrow, arrowGap = 2 })=>{
55
+ const tv = theme.vars || theme;
56
+ return {
57
+ zIndex: 1,
58
+ '& > div': {
59
+ position: 'relative'
60
+ },
61
+ '&[data-popper-placement*="bottom"]': {
62
+ '& > div': {
63
+ marginTop: !disableArrow ? arrowGap != null ? arrowGap : 2 : 0
64
+ },
65
+ [`& .${classKeys.arrow}`]: {
66
+ top: 0,
67
+ left: 0,
68
+ marginTop: '-0.9em',
69
+ width: '3em',
70
+ height: '1em',
71
+ '&::before': {
72
+ borderWidth: '0 1em 1em 1em',
73
+ borderColor: `transparent transparent ${tv.palette.primary.main} transparent`
74
+ }
75
+ }
76
+ },
77
+ '&[data-popper-placement*="top"]': {
78
+ '& > div': {
79
+ marginBottom: !disableArrow ? arrowGap != null ? arrowGap : 2 : 0
80
+ },
81
+ [`& .${classKeys.arrow}`]: {
82
+ bottom: 0,
83
+ left: 0,
84
+ marginBottom: '-0.9em',
85
+ width: '3em',
86
+ height: '1em',
87
+ '&::before': {
88
+ borderWidth: '1em 1em 0 1em',
89
+ borderColor: `${tv.palette.primary.main} transparent transparent transparent`
90
+ }
91
+ }
92
+ },
93
+ '&[data-popper-placement*="right"]': {
94
+ '& > div': {
95
+ marginLeft: !disableArrow ? arrowGap != null ? arrowGap : 2 : 0
96
+ },
97
+ [`& .${classKeys.arrow}`]: {
98
+ left: 0,
99
+ marginLeft: '-0.9em',
100
+ height: '3em',
101
+ width: '1em',
102
+ '&::before': {
103
+ borderWidth: '1em 1em 1em 0',
104
+ borderColor: `transparent ${tv.palette.primary.main} transparent transparent`
105
+ }
106
+ }
107
+ },
108
+ '&[data-popper-placement*="left"]': {
109
+ '& > div': {
110
+ marginRight: !disableArrow ? arrowGap != null ? arrowGap : 2 : 0
111
+ },
112
+ [`& .${classKeys.arrow}`]: {
113
+ right: 0,
114
+ marginRight: '-0.9em',
115
+ height: '3em',
116
+ width: '1em',
117
+ '&::before': {
118
+ borderWidth: '1em 0 1em 1em',
119
+ borderColor: `transparent transparent transparent ${tv.palette.primary.main}`
120
+ }
121
+ }
122
+ }
123
+ };
124
+ });
125
+ PopperStyledComponent.displayName = 'PopperStyledComponent';
126
+ PopperStyledComponent.aglyn = true;
127
+ export default PopperStyledComponent;
128
+
129
+ //# sourceMappingURL=popper-styled.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/components/popper-styled.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2023 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { generateComponentClassKeys, styled } from '@aglyn/shared-ui-theme'\nimport { _isEqualitySameType } from '@aglyn/shared-util-tools'\nimport MuiPopper, {\n type PopperProps as MuiPopperProps,\n} from '@mui/material/Popper'\nimport clsx from 'clsx'\nimport { forwardRef, HTMLAttributes } from 'react'\n\nconst classKeys = generateComponentClassKeys('AglynPopperStyled', ['arrow'])\n\nexport const PopperStyledArrowComponent = styled(\n forwardRef<any, HTMLAttributes<HTMLDivElement>>((props, ref) => {\n const { className, ...rest } = props\n return (\n <div ref={ref} className={clsx(classKeys.arrow, className)} {...rest} />\n )\n }),\n {\n name: 'AglynPopperArrow',\n },\n)({\n position: 'absolute',\n fontSize: 7,\n width: '3em',\n height: '3em',\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: 0,\n height: 0,\n borderStyle: 'solid',\n },\n})\n\nexport interface PopperStyledComponentProps extends MuiPopperProps {\n disableArrow?: boolean\n arrowGap?: number | string\n}\n\nexport const PopperStyledComponent = styled(MuiPopper, {\n name: 'AglynPopperStyled',\n shouldForwardProp: (prop) =>\n !_isEqualitySameType(prop, null, 'disableArrow', 'arrowGap'),\n})<PopperStyledComponentProps>(({ theme, disableArrow, arrowGap = 2 }) => {\n const tv = (theme as any).vars || theme\n return {\n zIndex: 1,\n '& > div': {\n position: 'relative',\n },\n '&[data-popper-placement*=\"bottom\"]': {\n '& > div': {\n marginTop: !disableArrow ? arrowGap ?? 2 : 0,\n },\n [`& .${classKeys.arrow}`]: {\n top: 0,\n left: 0,\n marginTop: '-0.9em',\n width: '3em',\n height: '1em',\n '&::before': {\n borderWidth: '0 1em 1em 1em',\n borderColor: `transparent transparent ${tv.palette.primary.main} transparent`,\n },\n },\n },\n '&[data-popper-placement*=\"top\"]': {\n '& > div': {\n marginBottom: !disableArrow ? arrowGap ?? 2 : 0,\n },\n [`& .${classKeys.arrow}`]: {\n bottom: 0,\n left: 0,\n marginBottom: '-0.9em',\n width: '3em',\n height: '1em',\n '&::before': {\n borderWidth: '1em 1em 0 1em',\n borderColor: `${tv.palette.primary.main} transparent transparent transparent`,\n },\n },\n },\n '&[data-popper-placement*=\"right\"]': {\n '& > div': {\n marginLeft: !disableArrow ? arrowGap ?? 2 : 0,\n },\n [`& .${classKeys.arrow}`]: {\n left: 0,\n marginLeft: '-0.9em',\n height: '3em',\n width: '1em',\n '&::before': {\n borderWidth: '1em 1em 1em 0',\n borderColor: `transparent ${tv.palette.primary.main} transparent transparent`,\n },\n },\n },\n '&[data-popper-placement*=\"left\"]': {\n '& > div': {\n marginRight: !disableArrow ? arrowGap ?? 2 : 0,\n },\n [`& .${classKeys.arrow}`]: {\n right: 0,\n marginRight: '-0.9em',\n height: '3em',\n width: '1em',\n '&::before': {\n borderWidth: '1em 0 1em 1em',\n borderColor: `transparent transparent transparent ${tv.palette.primary.main}`,\n },\n },\n },\n }\n})\n\nPopperStyledComponent.displayName = 'PopperStyledComponent'\nPopperStyledComponent.aglyn = true\n\nexport default PopperStyledComponent\n"],"names":["generateComponentClassKeys","styled","_isEqualitySameType","MuiPopper","clsx","forwardRef","classKeys","PopperStyledArrowComponent","props","ref","className","rest","div","arrow","name","position","fontSize","width","height","content","margin","display","borderStyle","PopperStyledComponent","shouldForwardProp","prop","theme","disableArrow","arrowGap","tv","vars","zIndex","marginTop","top","left","borderWidth","borderColor","palette","primary","main","marginBottom","bottom","marginLeft","marginRight","right","displayName","aglyn"],"mappings":";;;AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,0BAA0B,EAAEC,MAAM,QAAQ,yBAAwB;AAC3E,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,OAAOC,eAEA,uBAAsB;AAC7B,OAAOC,UAAU,OAAM;AACvB,SAASC,UAAU,QAAwB,QAAO;AAElD,MAAMC,YAAYN,2BAA2B,qBAAqB;IAAC;CAAQ;AAE3E,OAAO,MAAMO,6BAA6BN,qBACxCI,WAAgD,CAACG,OAAOC;IACtD,MAAM,EAAEC,SAAS,EAAW,GAAGF,OAATG,wCAASH;;;IAC/B,qBACE,KAACI;QAAIH,KAAKA;QAAKC,WAAWN,KAAKE,UAAUO,KAAK,EAAEH;OAAgBC;AAEpE,IACA;IACEG,MAAM;AACR,GACA;IACAC,UAAU;IACVC,UAAU;IACVC,OAAO;IACPC,QAAQ;IACR,aAAa;QACXC,SAAS;QACTC,QAAQ;QACRC,SAAS;QACTJ,OAAO;QACPC,QAAQ;QACRI,aAAa;IACf;AACF,GAAE;AAOF,OAAO,MAAMC,wBAAwBtB,OAAOE,WAAW;IACrDW,MAAM;IACNU,mBAAmB,CAACC,OAClB,CAACvB,oBAAoBuB,MAAM,MAAM,gBAAgB;AACrD,GAA+B,CAAC,EAAEC,KAAK,EAAEC,YAAY,EAAEC,WAAW,CAAC,EAAE;IACnE,MAAMC,KAAK,AAACH,MAAcI,IAAI,IAAIJ;IAClC,OAAO;QACLK,QAAQ;QACR,WAAW;YACThB,UAAU;QACZ;QACA,sCAAsC;YACpC,WAAW;gBACTiB,WAAW,CAACL,eAAeC,mBAAAA,WAAY,IAAI;YAC7C;YACA,CAAC,CAAC,GAAG,EAAEtB,UAAUO,KAAK,EAAE,CAAC,EAAE;gBACzBoB,KAAK;gBACLC,MAAM;gBACNF,WAAW;gBACXf,OAAO;gBACPC,QAAQ;gBACR,aAAa;oBACXiB,aAAa;oBACbC,aAAa,CAAC,wBAAwB,EAAEP,GAAGQ,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC,YAAY,CAAC;gBAC/E;YACF;QACF;QACA,mCAAmC;YACjC,WAAW;gBACTC,cAAc,CAACb,eAAeC,mBAAAA,WAAY,IAAI;YAChD;YACA,CAAC,CAAC,GAAG,EAAEtB,UAAUO,KAAK,EAAE,CAAC,EAAE;gBACzB4B,QAAQ;gBACRP,MAAM;gBACNM,cAAc;gBACdvB,OAAO;gBACPC,QAAQ;gBACR,aAAa;oBACXiB,aAAa;oBACbC,aAAa,GAAGP,GAAGQ,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC,oCAAoC,CAAC;gBAC/E;YACF;QACF;QACA,qCAAqC;YACnC,WAAW;gBACTG,YAAY,CAACf,eAAeC,mBAAAA,WAAY,IAAI;YAC9C;YACA,CAAC,CAAC,GAAG,EAAEtB,UAAUO,KAAK,EAAE,CAAC,EAAE;gBACzBqB,MAAM;gBACNQ,YAAY;gBACZxB,QAAQ;gBACRD,OAAO;gBACP,aAAa;oBACXkB,aAAa;oBACbC,aAAa,CAAC,YAAY,EAAEP,GAAGQ,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC,wBAAwB,CAAC;gBAC/E;YACF;QACF;QACA,oCAAoC;YAClC,WAAW;gBACTI,aAAa,CAAChB,eAAeC,mBAAAA,WAAY,IAAI;YAC/C;YACA,CAAC,CAAC,GAAG,EAAEtB,UAAUO,KAAK,EAAE,CAAC,EAAE;gBACzB+B,OAAO;gBACPD,aAAa;gBACbzB,QAAQ;gBACRD,OAAO;gBACP,aAAa;oBACXkB,aAAa;oBACbC,aAAa,CAAC,oCAAoC,EAAEP,GAAGQ,OAAO,CAACC,OAAO,CAACC,IAAI,EAAE;gBAC/E;YACF;QACF;IACF;AACF,GAAE;AAEFhB,sBAAsBsB,WAAW,GAAG;AACpCtB,sBAAsBuB,KAAK,GAAG;AAE9B,eAAevB,sBAAqB"}
@@ -0,0 +1,69 @@
1
+ import { type TypographyProps } from '@mui/material';
2
+ /**
3
+ * A standing "N/M &lt;noun&gt; on your plan" readout for an enforced quota
4
+ * (AGL-2113).
5
+ *
6
+ * WHY THIS EXISTS. A per-site quota is a plan differentiator the customer is
7
+ * paying for, and most of the console only ever mentioned one at the moment
8
+ * it refused a click — `Product limit reached (100) — upgrade in Billing`.
9
+ * That is the number arriving as a rejection: the operator learns their cap
10
+ * by hitting it, cannot see how close they are before that, and cannot tell
11
+ * whether an upgrade would help without first being blocked. Two cards
12
+ * (`locations-card`, `registers-card`) already rendered a standing readout;
13
+ * five siblings enforcing the same class of quota did not, and this component
14
+ * is what makes that a property of the shared UI rather than of whoever wrote
15
+ * the card.
16
+ *
17
+ * DELIBERATELY PRESENTATIONAL. It takes numbers, not an org doc, and it does
18
+ * NOT call `checkQuota` — this lib may not depend on `@aglyn/aglyn`, and more
19
+ * importantly the caller already holds the quota result it uses to gate its
20
+ * own controls. Recomputing here would let the readout and the gate disagree,
21
+ * which is the AGL-1716 defect (a card whose head-count came from a
22
+ * `limit()`-ed listener while the gate counted properly) in a new place.
23
+ *
24
+ * `ready` IS LOAD-BEARING and is not a nicety. `checkQuota(undefined, …)`
25
+ * resolves the FREE tier rather than "unknown", so a readout rendered before
26
+ * the org doc lands tells a paying customer they are on `0/0`. While `ready`
27
+ * is false this shows the count it does know and says the plan is still being
28
+ * read, which is the honest answer.
29
+ *
30
+ * NOT IN THE BARREL (AGL-1290). Console-only; import by subpath:
31
+ * `@aglyn/shared-ui-jsx/components/quota-readout.component`.
32
+ */
33
+ export interface QuotaReadoutProps extends Omit<TypographyProps<'div'>, 'children'> {
34
+ /**
35
+ * Whether the plan behind `limit` has actually resolved. False renders the
36
+ * count without a denominator — never a denominator invented from an
37
+ * unresolved org.
38
+ */
39
+ ready: boolean;
40
+ /** How many of the thing exist right now. */
41
+ used: number;
42
+ /**
43
+ * The plan's cap. `Number.POSITIVE_INFINITY` (which is what `UNLIMITED`
44
+ * is) renders as `∞`. Ignored entirely while `ready` is false.
45
+ */
46
+ limit: number;
47
+ /** Singular noun, lowercase — e.g. `product`, `redirect`, `record`. */
48
+ noun: string;
49
+ /** Plural, when it is not `noun + 's'` — e.g. `entries` for `entry`. */
50
+ nounPlural?: string;
51
+ /**
52
+ * For a quota that RESETS, the period it counts over — e.g. `this month`.
53
+ *
54
+ * Omitted, the readout says "on your plan", which is true of a standing
55
+ * count (products, redirects) and a lie about a monthly one: `340/500
56
+ * campaign emails on your plan` reads as a lifetime allowance, so a
57
+ * customer at 340 believes they have 160 left forever rather than until
58
+ * the 1st. Supplied, it replaces that tail — `340/500 campaign emails
59
+ * this month`.
60
+ *
61
+ * A string rather than a boolean because the reset window is the caller's
62
+ * fact, not this component's: every monthly counter in the product is
63
+ * keyed `YYYY-MM`, but nothing here reads the counter and a component that
64
+ * hardcoded "month" would be asserting a period it cannot see.
65
+ */
66
+ period?: string;
67
+ }
68
+ export declare const QuotaReadoutComponent: import("react").ForwardRefExoticComponent<Omit<QuotaReadoutProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
69
+ export default QuotaReadoutComponent;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ 'use client';
17
+ import { _ as _extends } from "@swc/helpers/_/_extends";
18
+ import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
19
+ import { jsx as _jsx } from "react/jsx-runtime";
20
+ import { Typography } from "@mui/material";
21
+ import { forwardRef } from "react";
22
+ /** `∞` for an unlimited cap, the number otherwise. */ function formatLimit(limit) {
23
+ return Number.isFinite(limit) ? String(limit) : '∞';
24
+ }
25
+ export const QuotaReadoutComponent = /*#__PURE__*/ forwardRef((props, ref)=>{
26
+ const { ready, used, limit, noun, nounPlural, period } = props, rest = _object_without_properties_loose(props, [
27
+ "ready",
28
+ "used",
29
+ "limit",
30
+ "noun",
31
+ "nounPlural",
32
+ "period"
33
+ ]);
34
+ const plural = nounPlural != null ? nounPlural : `${noun}s`;
35
+ const word = used === 1 ? noun : plural;
36
+ // A resetting quota says WHEN it resets; a standing one says the count is
37
+ // the plan's. Both tails are about the denominator, so neither renders
38
+ // while `ready` is false and there is no denominator to qualify.
39
+ const tail = period != null ? period : 'on your plan';
40
+ return /*#__PURE__*/ _jsx(Typography, _extends({
41
+ variant: "caption",
42
+ color: "text.secondary",
43
+ component: "div",
44
+ ref: ref
45
+ }, rest, {
46
+ children: ready ? `${used}/${formatLimit(limit)} ${plural} ${tail}` : `${used} ${word} · checking your plan…`
47
+ }));
48
+ });
49
+ QuotaReadoutComponent.displayName = 'QuotaReadoutComponent';
50
+ export default QuotaReadoutComponent;
51
+
52
+ //# sourceMappingURL=quota-readout.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/components/quota-readout.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport { Typography, type TypographyProps } from '@mui/material'\nimport { forwardRef } from 'react'\n\n/**\n * A standing \"N/M &lt;noun&gt; on your plan\" readout for an enforced quota\n * (AGL-2113).\n *\n * WHY THIS EXISTS. A per-site quota is a plan differentiator the customer is\n * paying for, and most of the console only ever mentioned one at the moment\n * it refused a click — `Product limit reached (100) — upgrade in Billing`.\n * That is the number arriving as a rejection: the operator learns their cap\n * by hitting it, cannot see how close they are before that, and cannot tell\n * whether an upgrade would help without first being blocked. Two cards\n * (`locations-card`, `registers-card`) already rendered a standing readout;\n * five siblings enforcing the same class of quota did not, and this component\n * is what makes that a property of the shared UI rather than of whoever wrote\n * the card.\n *\n * DELIBERATELY PRESENTATIONAL. It takes numbers, not an org doc, and it does\n * NOT call `checkQuota` — this lib may not depend on `@aglyn/aglyn`, and more\n * importantly the caller already holds the quota result it uses to gate its\n * own controls. Recomputing here would let the readout and the gate disagree,\n * which is the AGL-1716 defect (a card whose head-count came from a\n * `limit()`-ed listener while the gate counted properly) in a new place.\n *\n * `ready` IS LOAD-BEARING and is not a nicety. `checkQuota(undefined, …)`\n * resolves the FREE tier rather than \"unknown\", so a readout rendered before\n * the org doc lands tells a paying customer they are on `0/0`. While `ready`\n * is false this shows the count it does know and says the plan is still being\n * read, which is the honest answer.\n *\n * NOT IN THE BARREL (AGL-1290). Console-only; import by subpath:\n * `@aglyn/shared-ui-jsx/components/quota-readout.component`.\n */\nexport interface QuotaReadoutProps\n extends Omit<TypographyProps<'div'>, 'children'> {\n /**\n * Whether the plan behind `limit` has actually resolved. False renders the\n * count without a denominator — never a denominator invented from an\n * unresolved org.\n */\n ready: boolean\n /** How many of the thing exist right now. */\n used: number\n /**\n * The plan's cap. `Number.POSITIVE_INFINITY` (which is what `UNLIMITED`\n * is) renders as `∞`. Ignored entirely while `ready` is false.\n */\n limit: number\n /** Singular noun, lowercase — e.g. `product`, `redirect`, `record`. */\n noun: string\n /** Plural, when it is not `noun + 's'` — e.g. `entries` for `entry`. */\n nounPlural?: string\n /**\n * For a quota that RESETS, the period it counts over — e.g. `this month`.\n *\n * Omitted, the readout says \"on your plan\", which is true of a standing\n * count (products, redirects) and a lie about a monthly one: `340/500\n * campaign emails on your plan` reads as a lifetime allowance, so a\n * customer at 340 believes they have 160 left forever rather than until\n * the 1st. Supplied, it replaces that tail — `340/500 campaign emails\n * this month`.\n *\n * A string rather than a boolean because the reset window is the caller's\n * fact, not this component's: every monthly counter in the product is\n * keyed `YYYY-MM`, but nothing here reads the counter and a component that\n * hardcoded \"month\" would be asserting a period it cannot see.\n */\n period?: string\n}\n\n/** `∞` for an unlimited cap, the number otherwise. */\nfunction formatLimit(limit: number): string {\n return Number.isFinite(limit) ? String(limit) : '∞'\n}\n\nexport const QuotaReadoutComponent = forwardRef<\n HTMLDivElement,\n QuotaReadoutProps\n>((props, ref) => {\n const { ready, used, limit, noun, nounPlural, period, ...rest } = props\n const plural = nounPlural ?? `${noun}s`\n const word = used === 1 ? noun : plural\n // A resetting quota says WHEN it resets; a standing one says the count is\n // the plan's. Both tails are about the denominator, so neither renders\n // while `ready` is false and there is no denominator to qualify.\n const tail = period ?? 'on your plan'\n return (\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n component=\"div\"\n ref={ref}\n {...rest}\n >\n {ready\n ? `${used}/${formatLimit(limit)} ${plural} ${tail}`\n : `${used} ${word} · checking your plan…`}\n </Typography>\n )\n})\nQuotaReadoutComponent.displayName = 'QuotaReadoutComponent'\n\nexport default QuotaReadoutComponent\n"],"names":["Typography","forwardRef","formatLimit","limit","Number","isFinite","String","QuotaReadoutComponent","props","ref","ready","used","noun","nounPlural","period","rest","plural","word","tail","variant","color","component","displayName"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GACD;;;;AAEA,SAASA,UAAU,QAA8B,gBAAe;AAChE,SAASC,UAAU,QAAQ,QAAO;AAsElC,oDAAoD,GACpD,SAASC,YAAYC,KAAa;IAChC,OAAOC,OAAOC,QAAQ,CAACF,SAASG,OAAOH,SAAS;AAClD;AAEA,OAAO,MAAMI,sCAAwBN,WAGnC,CAACO,OAAOC;IACR,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAER,KAAK,EAAES,IAAI,EAAEC,UAAU,EAAEC,MAAM,EAAW,GAAGN,OAATO,wCAASP;;;;;;;;IAClE,MAAMQ,SAASH,qBAAAA,aAAc,GAAGD,KAAK,CAAC,CAAC;IACvC,MAAMK,OAAON,SAAS,IAAIC,OAAOI;IACjC,0EAA0E;IAC1E,uEAAuE;IACvE,iEAAiE;IACjE,MAAME,OAAOJ,iBAAAA,SAAU;IACvB,qBACE,KAACd;QACCmB,SAAQ;QACRC,OAAM;QACNC,WAAU;QACVZ,KAAKA;OACDM;kBAEHL,QACG,GAAGC,KAAK,CAAC,EAAET,YAAYC,OAAO,CAAC,EAAEa,OAAO,CAAC,EAAEE,MAAM,GACjD,GAAGP,KAAK,CAAC,EAAEM,KAAK,sBAAsB,CAAC;;AAGjD,GAAE;AACFV,sBAAsBe,WAAW,GAAG;AAEpC,eAAef,sBAAqB"}
@@ -0,0 +1,4 @@
1
+ export interface ResizeableStackProps extends JSX.OverrideableComponentProps {
2
+ children: JSX.Children;
3
+ }
4
+ export declare const ResizeableStack: import("react").ForwardRefExoticComponent<Omit<ResizeableStackProps, "ref"> & import("react").RefAttributes<any>>;
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2023 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ import { forwardRef } from "react";
18
+ export const ResizeableStack = /*#__PURE__*/ forwardRef((props, ref)=>{
19
+ const { jjj } = props;
20
+ return /*#__PURE__*/ _jsx("div", {});
21
+ });
22
+
23
+ //# sourceMappingURL=resizeable-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/shared/ui/jsx/src/lib/components/resizeable-stack.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2023 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { forwardRef } from 'react'\n\nexport interface ResizeableStackProps extends JSX.OverrideableComponentProps {\n children: JSX.Children\n}\n\nexport const ResizeableStack = forwardRef<any, ResizeableStackProps>(\n (props, ref) => {\n const { jjj } = props\n\n return <div></div>\n },\n)\n"],"names":["forwardRef","ResizeableStack","props","ref","jjj","div"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GACD,SAASA,UAAU,QAAQ,QAAO;AAMlC,OAAO,MAAMC,gCAAkBD,WAC7B,CAACE,OAAOC;IACN,MAAM,EAAEC,GAAG,EAAE,GAAGF;IAEhB,qBAAO,KAACG;AACV,GACD"}
@@ -0,0 +1,53 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface RowActionsMenuItem {
3
+ key: string;
4
+ label: string;
5
+ icon?: ReactNode;
6
+ /**
7
+ * Where the item navigates. An item that carries one renders as a real
8
+ * anchor, so it can be middle-clicked into a new tab, copied, or opened
9
+ * from the browser's own context menu — the affordances a click handler
10
+ * cannot offer however faithfully it calls `router.push`.
11
+ */
12
+ href?: string;
13
+ /** `href` leaves the console, so it opens in a new tab. */
14
+ external?: boolean;
15
+ /** For items that open a dialog rather than navigate. */
16
+ onClick?: () => void;
17
+ /** Renders the row in the error colour, for destructive actions. */
18
+ destructive?: boolean;
19
+ disabled?: boolean;
20
+ /**
21
+ * Why the item cannot be used, shown as its tooltip. Mirrors the quick
22
+ * action's `unavailableReason`: a control that is present but inert says
23
+ * nothing on its own, and an absent one and an inapplicable one look alike.
24
+ */
25
+ disabledReason?: string;
26
+ }
27
+ export interface RowActionsMenuProps {
28
+ items: RowActionsMenuItem[];
29
+ /** Distinguishes this row's menu for screen readers. */
30
+ label?: string;
31
+ }
32
+ /**
33
+ * Overflow menu for a table row's secondary actions (AGL-701).
34
+ *
35
+ * The DataGrid lists get this from `GridActionsCellItem showInMenu`, but the
36
+ * screens table is hand-rolled markup driven by a `renderRowActions`
37
+ * render-prop, so `showInMenu` is not available to it and it needs a real
38
+ * menu of its own.
39
+ *
40
+ * Every handler closes the menu first. Delete opens a confirmation, and a
41
+ * menu left standing over that dialog reads as though the click missed.
42
+ *
43
+ * An item that names an `href` is an ANCHOR, not a handler — a navigation
44
+ * action must be middle-clickable and copyable like any other link. It still
45
+ * renders as a menu item: the anchor is the MenuItem's own root element, so
46
+ * it inherits the item's colour, padding and focus ring rather than the
47
+ * browser's link styling.
48
+ */
49
+ export declare function RowActionsMenu(props: RowActionsMenuProps): import("react").JSX.Element;
50
+ export declare namespace RowActionsMenu {
51
+ var displayName: string;
52
+ }
53
+ export default RowActionsMenu;