@ankhorage/surface 4.3.0 → 4.4.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 (151) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +4 -4
  3. package/dist/components/tabs/Tabs.js +2 -2
  4. package/dist/components/tabs/Tabs.js.map +1 -1
  5. package/dist/components/tabs/context.js +1 -1
  6. package/dist/components/tabs/context.js.map +1 -1
  7. package/dist/context/FontContext.d.ts.map +1 -1
  8. package/dist/context/FontContext.js +3 -3
  9. package/dist/context/FontContext.js.map +1 -1
  10. package/dist/context/TranslationContext.d.ts.map +1 -1
  11. package/dist/context/TranslationContext.js +3 -4
  12. package/dist/context/TranslationContext.js.map +1 -1
  13. package/dist/core/responsive/ResponsiveProvider.d.ts.map +1 -1
  14. package/dist/core/responsive/ResponsiveProvider.js +3 -3
  15. package/dist/core/responsive/ResponsiveProvider.js.map +1 -1
  16. package/dist/examples/DocsExamples.js +1 -1
  17. package/dist/examples/DocsExamples.js.map +1 -1
  18. package/dist/features/accordion/adapters/inbound/Accordion.js +2 -2
  19. package/dist/features/accordion/adapters/inbound/Accordion.js.map +1 -1
  20. package/dist/features/accordion/adapters/inbound/AccordionContent.js +1 -1
  21. package/dist/features/accordion/adapters/inbound/AccordionContent.js.map +1 -1
  22. package/dist/features/accordion/adapters/inbound/AccordionItem.js +3 -3
  23. package/dist/features/accordion/adapters/inbound/AccordionItem.js.map +1 -1
  24. package/dist/features/accordion/adapters/inbound/AccordionTrigger.js +1 -1
  25. package/dist/features/accordion/adapters/inbound/AccordionTrigger.js.map +1 -1
  26. package/dist/features/bottom-sheet/BottomSheetProvider.js +2 -2
  27. package/dist/features/bottom-sheet/BottomSheetProvider.js.map +1 -1
  28. package/dist/features/bottom-sheet/useBottomSheet.js +1 -1
  29. package/dist/features/bottom-sheet/useBottomSheet.js.map +1 -1
  30. package/dist/features/popover/adapters/inbound/Popover.d.ts +5 -0
  31. package/dist/features/popover/adapters/inbound/Popover.d.ts.map +1 -0
  32. package/dist/features/popover/adapters/inbound/Popover.js +31 -0
  33. package/dist/features/popover/adapters/inbound/Popover.js.map +1 -0
  34. package/dist/features/popover/adapters/inbound/PopoverOverlay.d.ts +17 -0
  35. package/dist/features/popover/adapters/inbound/PopoverOverlay.d.ts.map +1 -0
  36. package/dist/features/popover/adapters/inbound/PopoverOverlay.js +34 -0
  37. package/dist/features/popover/adapters/inbound/PopoverOverlay.js.map +1 -0
  38. package/dist/features/popover/adapters/inbound/usePopoverLayout.d.ts +21 -0
  39. package/dist/features/popover/adapters/inbound/usePopoverLayout.d.ts.map +1 -0
  40. package/dist/features/popover/adapters/inbound/usePopoverLayout.js +33 -0
  41. package/dist/features/popover/adapters/inbound/usePopoverLayout.js.map +1 -0
  42. package/dist/features/popover/public.d.ts +3 -0
  43. package/dist/features/popover/public.d.ts.map +1 -0
  44. package/dist/features/popover/public.js +2 -0
  45. package/dist/features/popover/public.js.map +1 -0
  46. package/dist/features/popover/utils/resolvePopoverPosition.d.ts +25 -0
  47. package/dist/features/popover/utils/resolvePopoverPosition.d.ts.map +1 -0
  48. package/dist/features/popover/utils/resolvePopoverPosition.js +23 -0
  49. package/dist/features/popover/utils/resolvePopoverPosition.js.map +1 -0
  50. package/dist/{components/toast → features/toast/adapters/inbound}/Toast.d.ts +2 -1
  51. package/dist/features/toast/adapters/inbound/Toast.d.ts.map +1 -0
  52. package/dist/{components/toast → features/toast/adapters/inbound}/Toast.js +37 -32
  53. package/dist/features/toast/adapters/inbound/Toast.js.map +1 -0
  54. package/dist/features/toast/adapters/inbound/ToastProvider.d.ts +5 -0
  55. package/dist/features/toast/adapters/inbound/ToastProvider.d.ts.map +1 -0
  56. package/dist/features/toast/adapters/inbound/ToastProvider.js +29 -0
  57. package/dist/features/toast/adapters/inbound/ToastProvider.js.map +1 -0
  58. package/dist/features/toast/adapters/inbound/useToast.d.ts +4 -0
  59. package/dist/features/toast/adapters/inbound/useToast.d.ts.map +1 -0
  60. package/dist/features/toast/adapters/inbound/useToast.js +11 -0
  61. package/dist/features/toast/adapters/inbound/useToast.js.map +1 -0
  62. package/dist/features/toast/composition/ToastContext.d.ts +4 -0
  63. package/dist/features/toast/composition/ToastContext.d.ts.map +1 -0
  64. package/dist/features/toast/composition/ToastContext.js +4 -0
  65. package/dist/features/toast/composition/ToastContext.js.map +1 -0
  66. package/dist/features/toast/composition/useToastRuntime.d.ts +11 -0
  67. package/dist/features/toast/composition/useToastRuntime.d.ts.map +1 -0
  68. package/dist/features/toast/composition/useToastRuntime.js +50 -0
  69. package/dist/features/toast/composition/useToastRuntime.js.map +1 -0
  70. package/dist/features/toast/public.d.ts +5 -0
  71. package/dist/features/toast/public.d.ts.map +1 -0
  72. package/dist/features/toast/public.js +4 -0
  73. package/dist/features/toast/public.js.map +1 -0
  74. package/dist/index.d.ts +4 -2
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +2 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/internal/overlay/OverlayProvider.d.ts +1 -0
  79. package/dist/internal/overlay/OverlayProvider.d.ts.map +1 -1
  80. package/dist/internal/overlay/OverlayProvider.js +9 -7
  81. package/dist/internal/overlay/OverlayProvider.js.map +1 -1
  82. package/dist/internal/overlay/useOverlayStack.js +1 -1
  83. package/dist/internal/overlay/useOverlayStack.js.map +1 -1
  84. package/dist/internal/resolvers/resolveOverlayZIndex.d.ts +1 -1
  85. package/dist/internal/resolvers/resolveOverlayZIndex.d.ts.map +1 -1
  86. package/dist/internal/resolvers/resolveOverlayZIndex.js +1 -0
  87. package/dist/internal/resolvers/resolveOverlayZIndex.js.map +1 -1
  88. package/dist/layout/AppBar.js +1 -1
  89. package/dist/layout/AppBar.js.map +1 -1
  90. package/dist/theme/ThemeContext.d.ts.map +1 -1
  91. package/dist/theme/ThemeContext.js +4 -5
  92. package/dist/theme/ThemeContext.js.map +1 -1
  93. package/dist/types/popover.d.ts +21 -0
  94. package/dist/types/popover.d.ts.map +1 -0
  95. package/dist/types/popover.js +2 -0
  96. package/dist/types/popover.js.map +1 -0
  97. package/dist/{components/toast/types.d.ts → types/toast.d.ts} +11 -3
  98. package/dist/types/toast.d.ts.map +1 -0
  99. package/dist/types/toast.js +2 -0
  100. package/dist/types/toast.js.map +1 -0
  101. package/package.json +1 -1
  102. package/src/components/tabs/Tabs.tsx +2 -2
  103. package/src/components/tabs/context.tsx +1 -1
  104. package/src/context/FontContext.tsx +3 -3
  105. package/src/context/TranslationContext.tsx +3 -4
  106. package/src/core/responsive/ResponsiveProvider.tsx +3 -3
  107. package/src/examples/DocsExamples.tsx +1 -1
  108. package/src/features/accordion/adapters/inbound/Accordion.tsx +2 -2
  109. package/src/features/accordion/adapters/inbound/AccordionContent.tsx +1 -1
  110. package/src/features/accordion/adapters/inbound/AccordionItem.tsx +3 -3
  111. package/src/features/accordion/adapters/inbound/AccordionTrigger.tsx +1 -1
  112. package/src/features/bottom-sheet/BottomSheetProvider.tsx +2 -2
  113. package/src/features/bottom-sheet/useBottomSheet.ts +1 -1
  114. package/src/features/popover/adapters/inbound/Popover.tsx +49 -0
  115. package/src/features/popover/adapters/inbound/PopoverOverlay.tsx +72 -0
  116. package/src/features/popover/adapters/inbound/usePopoverLayout.ts +51 -0
  117. package/src/features/popover/public.ts +2 -0
  118. package/src/features/popover/utils/resolvePopoverPosition.test.ts +31 -0
  119. package/src/features/popover/utils/resolvePopoverPosition.ts +40 -0
  120. package/src/{components/toast → features/toast/adapters/inbound}/Toast.tsx +58 -54
  121. package/src/features/toast/adapters/inbound/ToastProvider.tsx +47 -0
  122. package/src/features/toast/adapters/inbound/useToast.test.tsx +18 -0
  123. package/src/features/toast/adapters/inbound/useToast.ts +15 -0
  124. package/src/features/toast/composition/ToastContext.ts +6 -0
  125. package/src/features/toast/composition/useToastRuntime.ts +76 -0
  126. package/src/features/toast/public.ts +10 -0
  127. package/src/index.test.ts +3 -1
  128. package/src/index.ts +14 -2
  129. package/src/internal/overlay/OverlayProvider.tsx +10 -8
  130. package/src/internal/overlay/useOverlayStack.ts +1 -1
  131. package/src/internal/resolvers/resolveOverlayZIndex.test.ts +2 -1
  132. package/src/internal/resolvers/resolveOverlayZIndex.ts +2 -1
  133. package/src/layout/AppBar.tsx +1 -1
  134. package/src/theme/ThemeContext.tsx +4 -5
  135. package/src/types/popover.ts +25 -0
  136. package/src/{components/toast/types.ts → types/toast.ts} +12 -2
  137. package/dist/components/toast/Toast.d.ts.map +0 -1
  138. package/dist/components/toast/Toast.js.map +0 -1
  139. package/dist/components/toast/ToastProvider.d.ts +0 -13
  140. package/dist/components/toast/ToastProvider.d.ts.map +0 -1
  141. package/dist/components/toast/ToastProvider.js +0 -70
  142. package/dist/components/toast/ToastProvider.js.map +0 -1
  143. package/dist/components/toast/index.d.ts +0 -4
  144. package/dist/components/toast/index.d.ts.map +0 -1
  145. package/dist/components/toast/index.js +0 -3
  146. package/dist/components/toast/index.js.map +0 -1
  147. package/dist/components/toast/types.d.ts.map +0 -1
  148. package/dist/components/toast/types.js +0 -2
  149. package/dist/components/toast/types.js.map +0 -1
  150. package/src/components/toast/ToastProvider.tsx +0 -115
  151. package/src/components/toast/index.ts +0 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ankhorage/surface
2
2
 
3
+ ## 4.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - ee44bc6: Add a feature-owned toast runtime and anchored popover foundation, and modernize Surface-owned React contexts to the React 19 context API.
8
+
3
9
  ## 4.3.0
4
10
 
5
11
  ### Minor Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/surface
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v4.1.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v4.3.0](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Cross-platform UI foundation for React Native and React Native Web. Provides theming, layout primitives, and core building blocks for modern apps.
9
9
 
@@ -15,21 +15,21 @@ Cross-platform UI foundation for React Native and React Native Web. Provides the
15
15
  - [Architecture overview](././paradox/diagrams/architecture-overview.mmd)
16
16
  - [Module relationships](././paradox/diagrams/module-relationships.mmd)
17
17
  - [Export graph](././paradox/diagrams/export-graph.mmd)
18
+ - [Accordion sequence](././paradox/diagrams/sequences/accordion.mmd)
18
19
  - [AppBar sequence](././paradox/diagrams/sequences/app-bar.mmd)
19
20
  - [Badge sequence](././paradox/diagrams/sequences/badge.mmd)
20
21
  - [Button sequence](././paradox/diagrams/sequences/button.mmd)
21
22
  - [Card sequence](././paradox/diagrams/sequences/card.mmd)
22
23
  - [Checkbox sequence](././paradox/diagrams/sequences/checkbox.mmd)
23
- - [Container sequence](././paradox/diagrams/sequences/container.mmd)
24
24
  - [Field sequence](././paradox/diagrams/sequences/field.mmd)
25
25
  - [FontProvider sequence](././paradox/diagrams/sequences/font-provider.mmd)
26
- - [Grid sequence](././paradox/diagrams/sequences/grid.mmd)
27
26
  - [Icon sequence](././paradox/diagrams/sequences/icon.mmd)
28
27
  - [IconButton sequence](././paradox/diagrams/sequences/icon-button.mmd)
29
28
  - [isDeepEqual sequence](././paradox/diagrams/sequences/is-deep-equal.mmd)
30
29
  - [ListItem sequence](././paradox/diagrams/sequences/list-item.mmd)
31
30
  - [Menu sequence](././paradox/diagrams/sequences/menu.mmd)
32
31
  - [Modal sequence](././paradox/diagrams/sequences/modal.mmd)
32
+ - [Popover sequence](././paradox/diagrams/sequences/popover.mmd)
33
33
  - [Radio sequence](././paradox/diagrams/sequences/radio.mmd)
34
34
  - [resolveResponsive sequence](././paradox/diagrams/sequences/resolve-responsive.mmd)
35
35
  - [ResponsiveProvider sequence](././paradox/diagrams/sequences/responsive-provider.mmd)
@@ -40,7 +40,6 @@ Cross-platform UI foundation for React Native and React Native Web. Provides the
40
40
  - [TabList sequence](././paradox/diagrams/sequences/tab-list.mmd)
41
41
  - [TabPanel sequence](././paradox/diagrams/sequences/tab-panel.mmd)
42
42
  - [Tabs sequence](././paradox/diagrams/sequences/tabs.mmd)
43
- - [Template sequence](././paradox/diagrams/sequences/template.mmd)
44
43
  - [ThemeProvider sequence](././paradox/diagrams/sequences/theme-provider.mmd)
45
44
  - [Toast sequence](././paradox/diagrams/sequences/toast.mmd)
46
45
  - [ToastProvider sequence](././paradox/diagrams/sequences/toast-provider.mmd)
@@ -51,4 +50,5 @@ Cross-platform UI foundation for React Native and React Native Web. Provides the
51
50
  - [useTheme sequence](././paradox/diagrams/sequences/use-theme.mmd)
52
51
  - [useThemeConfig sequence](././paradox/diagrams/sequences/use-theme-config.mmd)
53
52
  - [useThemeMode sequence](././paradox/diagrams/sequences/use-theme-mode.mmd)
53
+ - [useToast sequence](././paradox/diagrams/sequences/use-toast.mmd)
54
54
  - [useTranslationContext sequence](././paradox/diagrams/sequences/use-translation-context.mmd)
@@ -47,8 +47,8 @@ export function Tabs({ children, value, defaultValue, onValueChange, testID }) {
47
47
  tabs,
48
48
  unregisterTab,
49
49
  }), [activeValue, focusedValue, registerTab, setActiveValue, tabs, testID, unregisterTab]);
50
- return (<TabsContext.Provider value={contextValue}>
50
+ return (<TabsContext value={contextValue}>
51
51
  <Box testID={testID}>{children}</Box>
52
- </TabsContext.Provider>);
52
+ </TabsContext>);
53
53
  }
54
54
  //# sourceMappingURL=Tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/components/tabs/Tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Box } from '../../features/layout/public';\nimport { useControllableState } from '../../internal/useControllableState';\nimport { getTabId as resolveTabId, getTabPanelId as resolveTabPanelId } from './a11y';\nimport { type TabRegistration, TabsContext } from './context';\nimport type { TabsProps } from './types';\n\nexport function Tabs({ children, value, defaultValue, onValueChange, testID }: TabsProps) {\n const [activeValue, setActiveValue] = useControllableState<string | undefined>({\n value,\n defaultValue,\n onChange: (nextValue) => {\n if (nextValue !== undefined) {\n onValueChange?.(nextValue);\n }\n },\n });\n const [focusedValue, setFocusedValue] = React.useState<string | undefined>(undefined);\n const [tabs, setTabs] = React.useState<TabRegistration[]>([]);\n\n const registerTab = React.useCallback((tab: TabRegistration) => {\n setTabs((current) => {\n return current.some((entry) => entry.value === tab.value)\n ? current.map((entry) => (entry.value === tab.value ? tab : entry))\n : [...current, tab];\n });\n }, []);\n\n const unregisterTab = React.useCallback((valueToRemove: string) => {\n setTabs((current) => current.filter((entry) => entry.value !== valueToRemove));\n }, []);\n\n React.useEffect(() => {\n if (activeValue !== undefined) {\n return;\n }\n\n const firstEnabledTab = tabs.find((entry) => !entry.disabled);\n if (firstEnabledTab) {\n setActiveValue(firstEnabledTab.value);\n }\n }, [activeValue, setActiveValue, tabs]);\n\n const contextValue = React.useMemo(\n () => ({\n activeValue,\n focusedValue,\n getPanelId: (tabValue: string) => resolveTabPanelId(testID, tabValue),\n getTabId: (tabValue: string) => resolveTabId(testID, tabValue),\n registerTab,\n setActiveValue: (nextValue: string) => {\n setActiveValue(nextValue);\n },\n setFocusedValue,\n tabs,\n unregisterTab,\n }),\n [activeValue, focusedValue, registerTab, setActiveValue, tabs, testID, unregisterTab],\n );\n\n return (\n <TabsContext.Provider value={contextValue}>\n <Box testID={testID}>{children}</Box>\n </TabsContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../src/components/tabs/Tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Box } from '../../features/layout/public';\nimport { useControllableState } from '../../internal/useControllableState';\nimport { getTabId as resolveTabId, getTabPanelId as resolveTabPanelId } from './a11y';\nimport { type TabRegistration, TabsContext } from './context';\nimport type { TabsProps } from './types';\n\nexport function Tabs({ children, value, defaultValue, onValueChange, testID }: TabsProps) {\n const [activeValue, setActiveValue] = useControllableState<string | undefined>({\n value,\n defaultValue,\n onChange: (nextValue) => {\n if (nextValue !== undefined) {\n onValueChange?.(nextValue);\n }\n },\n });\n const [focusedValue, setFocusedValue] = React.useState<string | undefined>(undefined);\n const [tabs, setTabs] = React.useState<TabRegistration[]>([]);\n\n const registerTab = React.useCallback((tab: TabRegistration) => {\n setTabs((current) => {\n return current.some((entry) => entry.value === tab.value)\n ? current.map((entry) => (entry.value === tab.value ? tab : entry))\n : [...current, tab];\n });\n }, []);\n\n const unregisterTab = React.useCallback((valueToRemove: string) => {\n setTabs((current) => current.filter((entry) => entry.value !== valueToRemove));\n }, []);\n\n React.useEffect(() => {\n if (activeValue !== undefined) {\n return;\n }\n\n const firstEnabledTab = tabs.find((entry) => !entry.disabled);\n if (firstEnabledTab) {\n setActiveValue(firstEnabledTab.value);\n }\n }, [activeValue, setActiveValue, tabs]);\n\n const contextValue = React.useMemo(\n () => ({\n activeValue,\n focusedValue,\n getPanelId: (tabValue: string) => resolveTabPanelId(testID, tabValue),\n getTabId: (tabValue: string) => resolveTabId(testID, tabValue),\n registerTab,\n setActiveValue: (nextValue: string) => {\n setActiveValue(nextValue);\n },\n setFocusedValue,\n tabs,\n unregisterTab,\n }),\n [activeValue, focusedValue, registerTab, setActiveValue, tabs, testID, unregisterTab],\n );\n\n return (\n <TabsContext value={contextValue}>\n <Box testID={testID}>{children}</Box>\n </TabsContext>\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  export const TabsContext = React.createContext(null);
3
3
  export function useTabsContext() {
4
- const value = React.useContext(TabsContext);
4
+ const value = React.use(TabsContext);
5
5
  if (!value) {
6
6
  throw new Error('Tabs components must be used within <Tabs>.');
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/components/tabs/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAoB1B,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA0B,IAAI,CAAC,CAAC;AAE9E,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import React from 'react';\n\nexport interface TabRegistration {\n disabled: boolean;\n focus: () => void;\n value: string;\n}\n\nexport interface TabsContextValue {\n activeValue: string | undefined;\n focusedValue: string | undefined;\n getPanelId: (value: string) => string;\n getTabId: (value: string) => string;\n registerTab: (tab: TabRegistration) => void;\n setActiveValue: (value: string) => void;\n setFocusedValue: (value: string | undefined) => void;\n tabs: TabRegistration[];\n unregisterTab: (value: string) => void;\n}\n\nexport const TabsContext = React.createContext<TabsContextValue | null>(null);\n\nexport function useTabsContext(): TabsContextValue {\n const value = React.useContext(TabsContext);\n\n if (!value) {\n throw new Error('Tabs components must be used within <Tabs>.');\n }\n\n return value;\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/components/tabs/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAoB1B,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA0B,IAAI,CAAC,CAAC;AAE9E,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAErC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import React from 'react';\n\nexport interface TabRegistration {\n disabled: boolean;\n focus: () => void;\n value: string;\n}\n\nexport interface TabsContextValue {\n activeValue: string | undefined;\n focusedValue: string | undefined;\n getPanelId: (value: string) => string;\n getTabId: (value: string) => string;\n registerTab: (tab: TabRegistration) => void;\n setActiveValue: (value: string) => void;\n setFocusedValue: (value: string | undefined) => void;\n tabs: TabRegistration[];\n unregisterTab: (value: string) => void;\n}\n\nexport const TabsContext = React.createContext<TabsContextValue | null>(null);\n\nexport function useTabsContext(): TabsContextValue {\n const value = React.use(TabsContext);\n\n if (!value) {\n throw new Error('Tabs components must be used within <Tabs>.');\n }\n\n return value;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FontContext.d.ts","sourceRoot":"","sources":["../../src/context/FontContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,WAAW,EAAE,OAAO,CAAC;IAErB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,uCAAuC;IACvC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAYD,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,qBAuBA;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C"}
1
+ {"version":3,"file":"FontContext.d.ts","sourceRoot":"","sources":["../../src/context/FontContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,WAAW,EAAE,OAAO,CAAC;IAErB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,uCAAuC;IACvC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAYD,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,qBAuBA;AAED,wBAAgB,cAAc,IAAI,WAAW,CAE5C"}
@@ -1,4 +1,4 @@
1
- import React, { createContext, useContext, useMemo, useState } from 'react';
1
+ import React, { createContext, use, useMemo, useState } from 'react';
2
2
  const fallbackRuntime = {
3
3
  fontsLoaded: true,
4
4
  activeFontId: null,
@@ -19,9 +19,9 @@ export function FontProvider(props) {
19
19
  onActiveFontChange(id);
20
20
  },
21
21
  }), [fontsLoaded, activeFontId, onActiveFontChange]);
22
- return <FontContext.Provider value={value}>{children}</FontContext.Provider>;
22
+ return <FontContext value={value}>{children}</FontContext>;
23
23
  }
24
24
  export function useFontContext() {
25
- return useContext(FontContext);
25
+ return use(FontContext);
26
26
  }
27
27
  //# sourceMappingURL=FontContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FontContext.js","sourceRoot":"","sources":["../../src/context/FontContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAgB5E,MAAM,eAAe,GAAgB;IACnC,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,GAAG,EAAE;QACpB,cAAc;IAChB,CAAC;CACF,CAAC;AAEF,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEnD,MAAM,UAAU,YAAY,CAAC,KAK5B;IACC,MAAM,EACJ,WAAW,EACX,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,QAAQ,EACR,kBAAkB,GACnB,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,WAAW;QACX,YAAY;QACZ,eAAe,EAAE,CAAC,EAAU,EAAE,EAAE;YAC9B,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,kBAAkB;gBAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;KACF,CAAC,EACF,CAAC,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAChD,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import React, { createContext, useContext, useMemo, useState } from 'react';\n\n/**\n * Runtime font state consumed by theme and text primitives.\n */\nexport interface FontRuntime {\n /** true when the active font assets have finished loading */\n fontsLoaded: boolean;\n\n /** The currently active font family id */\n activeFontId: string | null;\n\n /** Update the active font family id */\n setActiveFontId: (id: string) => void;\n}\n\nconst fallbackRuntime: FontRuntime = {\n fontsLoaded: true,\n activeFontId: null,\n setActiveFontId: () => {\n /* fallback */\n },\n};\n\nconst FontContext = createContext(fallbackRuntime);\n\nexport function FontProvider(props: {\n fontsLoaded: boolean;\n activeFontId?: string | null;\n children: React.ReactNode;\n onActiveFontChange?: (id: string) => void;\n}) {\n const {\n fontsLoaded,\n activeFontId: initialActiveFontId = null,\n children,\n onActiveFontChange,\n } = props;\n\n const [activeFontId, setActiveFontIdState] = useState(initialActiveFontId);\n\n const value = useMemo<FontRuntime>(\n () => ({\n fontsLoaded,\n activeFontId,\n setActiveFontId: (id: string) => {\n setActiveFontIdState(id);\n if (onActiveFontChange) onActiveFontChange(id);\n },\n }),\n [fontsLoaded, activeFontId, onActiveFontChange],\n );\n\n return <FontContext.Provider value={value}>{children}</FontContext.Provider>;\n}\n\nexport function useFontContext(): FontRuntime {\n return useContext(FontContext);\n}\n"]}
1
+ {"version":3,"file":"FontContext.js","sourceRoot":"","sources":["../../src/context/FontContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAgBrE,MAAM,eAAe,GAAgB;IACnC,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,GAAG,EAAE;QACpB,cAAc;IAChB,CAAC;CACF,CAAC;AAEF,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAEnD,MAAM,UAAU,YAAY,CAAC,KAK5B;IACC,MAAM,EACJ,WAAW,EACX,YAAY,EAAE,mBAAmB,GAAG,IAAI,EACxC,QAAQ,EACR,kBAAkB,GACnB,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,WAAW;QACX,YAAY;QACZ,eAAe,EAAE,CAAC,EAAU,EAAE,EAAE;YAC9B,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,kBAAkB;gBAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;KACF,CAAC,EACF,CAAC,WAAW,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAChD,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import React, { createContext, use, useMemo, useState } from 'react';\n\n/**\n * Runtime font state consumed by theme and text primitives.\n */\nexport interface FontRuntime {\n /** true when the active font assets have finished loading */\n fontsLoaded: boolean;\n\n /** The currently active font family id */\n activeFontId: string | null;\n\n /** Update the active font family id */\n setActiveFontId: (id: string) => void;\n}\n\nconst fallbackRuntime: FontRuntime = {\n fontsLoaded: true,\n activeFontId: null,\n setActiveFontId: () => {\n /* fallback */\n },\n};\n\nconst FontContext = createContext(fallbackRuntime);\n\nexport function FontProvider(props: {\n fontsLoaded: boolean;\n activeFontId?: string | null;\n children: React.ReactNode;\n onActiveFontChange?: (id: string) => void;\n}) {\n const {\n fontsLoaded,\n activeFontId: initialActiveFontId = null,\n children,\n onActiveFontChange,\n } = props;\n\n const [activeFontId, setActiveFontIdState] = useState(initialActiveFontId);\n\n const value = useMemo<FontRuntime>(\n () => ({\n fontsLoaded,\n activeFontId,\n setActiveFontId: (id: string) => {\n setActiveFontIdState(id);\n if (onActiveFontChange) onActiveFontChange(id);\n },\n }),\n [fontsLoaded, activeFontId, onActiveFontChange],\n );\n\n return <FontContext value={value}>{children}</FontContext>;\n}\n\nexport function useFontContext(): FontRuntime {\n return use(FontContext);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationContext.d.ts","sourceRoot":"","sources":["../../src/context/TranslationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,UAAU,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,UAAU,CAAC;IACd,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B;AASD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,CAAC,EAAE,UAAU,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qBAgBA;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D"}
1
+ {"version":3,"file":"TranslationContext.d.ts","sourceRoot":"","sources":["../../src/context/TranslationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,UAAU,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,UAAU,CAAC;IACd,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;CAC3B;AASD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,CAAC,EAAE,UAAU,CAAC;IACd,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,qBAeA;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D"}
@@ -1,4 +1,4 @@
1
- import React, { createContext, useContext } from 'react';
1
+ import React, { createContext, use } from 'react';
2
2
  const fallbackRuntime = {
3
3
  t: (key) => key,
4
4
  i18n: null,
@@ -10,7 +10,6 @@ export function TranslationProvider(props) {
10
10
  t: (key, options) => {
11
11
  if (i18n?.t) {
12
12
  const result = i18n.t(key, options);
13
- // If translation returns the key, it's missing in the current dictionary
14
13
  if (result !== key)
15
14
  return result;
16
15
  }
@@ -18,9 +17,9 @@ export function TranslationProvider(props) {
18
17
  },
19
18
  i18n: i18n ?? null,
20
19
  };
21
- return <TranslationContext.Provider value={value}>{children}</TranslationContext.Provider>;
20
+ return <TranslationContext value={value}>{children}</TranslationContext>;
22
21
  }
23
22
  export function useTranslationContext() {
24
- return useContext(TranslationContext);
23
+ return use(TranslationContext);
25
24
  }
26
25
  //# sourceMappingURL=TranslationContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationContext.js","sourceRoot":"","sources":["../../src/context/TranslationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAmBzD,MAAM,eAAe,GAAuB;IAC1C,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;IACf,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CAAC,KAInC;IACC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEpC,MAAM,KAAK,GAAuB;QAChC,CAAC,EAAE,CAAC,GAAW,EAAE,OAAiC,EAAE,EAAE;YACpD,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACpC,yEAAyE;gBACzE,IAAI,MAAM,KAAK,GAAG;oBAAE,OAAO,MAAM,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,EAAE,IAAI,IAAI,IAAI;KACnB,CAAC;IAEF,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC;AACxC,CAAC","sourcesContent":["import React, { createContext, useContext } from 'react';\n\n/**\n * Minimal translation runtime surface.\n * Do not import i18next types here; keep Surface runtime-agnostic.\n */\nexport interface I18nInstance {\n changeLanguage: (lng: string) => Promise<unknown>;\n language?: string;\n t?: Translator;\n}\n\nexport type Translator = (key: string, options?: Record<string, unknown>) => string;\n\nexport interface TranslationRuntime {\n t: Translator;\n i18n: I18nInstance | null;\n}\n\nconst fallbackRuntime: TranslationRuntime = {\n t: (key) => key,\n i18n: null,\n};\n\nconst TranslationContext = createContext(fallbackRuntime);\n\nexport function TranslationProvider(props: {\n t: Translator;\n i18n?: I18nInstance | null;\n children: React.ReactNode;\n}) {\n const { t, i18n, children } = props;\n\n const value: TranslationRuntime = {\n t: (key: string, options?: Record<string, unknown>) => {\n if (i18n?.t) {\n const result = i18n.t(key, options);\n // If translation returns the key, it's missing in the current dictionary\n if (result !== key) return result;\n }\n return t(key, options);\n },\n i18n: i18n ?? null,\n };\n\n return <TranslationContext.Provider value={value}>{children}</TranslationContext.Provider>;\n}\n\nexport function useTranslationContext(): TranslationRuntime {\n return useContext(TranslationContext);\n}\n"]}
1
+ {"version":3,"file":"TranslationContext.js","sourceRoot":"","sources":["../../src/context/TranslationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAmBlD,MAAM,eAAe,GAAuB;IAC1C,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;IACf,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,kBAAkB,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CAAC,KAInC;IACC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEpC,MAAM,KAAK,GAAuB;QAChC,CAAC,EAAE,CAAC,GAAW,EAAE,OAAiC,EAAE,EAAE;YACpD,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACpC,IAAI,MAAM,KAAK,GAAG;oBAAE,OAAO,MAAM,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,EAAE,IAAI,IAAI,IAAI;KACnB,CAAC;IAEF,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import React, { createContext, use } from 'react';\n\n/**\n * Minimal translation runtime surface.\n * Do not import i18next types here; keep Surface runtime-agnostic.\n */\nexport interface I18nInstance {\n changeLanguage: (lng: string) => Promise<unknown>;\n language?: string;\n t?: Translator;\n}\n\nexport type Translator = (key: string, options?: Record<string, unknown>) => string;\n\nexport interface TranslationRuntime {\n t: Translator;\n i18n: I18nInstance | null;\n}\n\nconst fallbackRuntime: TranslationRuntime = {\n t: (key) => key,\n i18n: null,\n};\n\nconst TranslationContext = createContext(fallbackRuntime);\n\nexport function TranslationProvider(props: {\n t: Translator;\n i18n?: I18nInstance | null;\n children: React.ReactNode;\n}) {\n const { t, i18n, children } = props;\n\n const value: TranslationRuntime = {\n t: (key: string, options?: Record<string, unknown>) => {\n if (i18n?.t) {\n const result = i18n.t(key, options);\n if (result !== key) return result;\n }\n return t(key, options);\n },\n i18n: i18n ?? null,\n };\n\n return <TranslationContext value={value}>{children}</TranslationContext>;\n}\n\nexport function useTranslationContext(): TranslationRuntime {\n return use(TranslationContext);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ResponsiveProvider.d.ts","sourceRoot":"","sources":["../../../src/core/responsive/ResponsiveProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAIlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAIjD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAY7E;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAQxD"}
1
+ {"version":3,"file":"ResponsiveProvider.d.ts","sourceRoot":"","sources":["../../../src/core/responsive/ResponsiveProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAIjD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAY7E;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAQxD"}
@@ -1,4 +1,4 @@
1
- import React, { createContext, useContext, useMemo } from 'react';
1
+ import React, { createContext, use, useMemo } from 'react';
2
2
  import { useWindowDimensions } from 'react-native';
3
3
  import { getBreakpointFromWidth } from './getBreakpointFromWidth';
4
4
  const ResponsiveContext = createContext(null);
@@ -8,10 +8,10 @@ export function ResponsiveProvider({ children }) {
8
8
  breakpoint: getBreakpointFromWidth(width),
9
9
  width,
10
10
  }), [width]);
11
- return <ResponsiveContext.Provider value={value}>{children}</ResponsiveContext.Provider>;
11
+ return <ResponsiveContext value={value}>{children}</ResponsiveContext>;
12
12
  }
13
13
  export function useResponsiveRuntime() {
14
- const runtime = useContext(ResponsiveContext);
14
+ const runtime = use(ResponsiveContext);
15
15
  if (!runtime) {
16
16
  throw new Error('useResponsiveRuntime must be used within a ResponsiveProvider');
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ResponsiveProvider.js","sourceRoot":"","sources":["../../../src/core/responsive/ResponsiveProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,iBAAiB,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAExE,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAiC;IAC5E,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAExC,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,UAAU,EAAE,sBAAsB,CAAC,KAAK,CAAC;QACzC,KAAK;KACN,CAAC,EACF,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import React, { createContext, useContext, useMemo } from 'react';\nimport { useWindowDimensions } from 'react-native';\n\nimport { getBreakpointFromWidth } from './getBreakpointFromWidth';\nimport type { ResponsiveRuntime } from './types';\n\nconst ResponsiveContext = createContext<ResponsiveRuntime | null>(null);\n\nexport function ResponsiveProvider({ children }: { children: React.ReactNode }) {\n const { width } = useWindowDimensions();\n\n const value = useMemo<ResponsiveRuntime>(\n () => ({\n breakpoint: getBreakpointFromWidth(width),\n width,\n }),\n [width],\n );\n\n return <ResponsiveContext.Provider value={value}>{children}</ResponsiveContext.Provider>;\n}\n\nexport function useResponsiveRuntime(): ResponsiveRuntime {\n const runtime = useContext(ResponsiveContext);\n\n if (!runtime) {\n throw new Error('useResponsiveRuntime must be used within a ResponsiveProvider');\n }\n\n return runtime;\n}\n"]}
1
+ {"version":3,"file":"ResponsiveProvider.js","sourceRoot":"","sources":["../../../src/core/responsive/ResponsiveProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,MAAM,iBAAiB,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAExE,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAAiC;IAC5E,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAExC,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,UAAU,EAAE,sBAAsB,CAAC,KAAK,CAAC;QACzC,KAAK;KACN,CAAC,EACF,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import React, { createContext, use, useMemo } from 'react';\nimport { useWindowDimensions } from 'react-native';\n\nimport { getBreakpointFromWidth } from './getBreakpointFromWidth';\nimport type { ResponsiveRuntime } from './types';\n\nconst ResponsiveContext = createContext<ResponsiveRuntime | null>(null);\n\nexport function ResponsiveProvider({ children }: { children: React.ReactNode }) {\n const { width } = useWindowDimensions();\n\n const value = useMemo<ResponsiveRuntime>(\n () => ({\n breakpoint: getBreakpointFromWidth(width),\n width,\n }),\n [width],\n );\n\n return <ResponsiveContext value={value}>{children}</ResponsiveContext>;\n}\n\nexport function useResponsiveRuntime(): ResponsiveRuntime {\n const runtime = use(ResponsiveContext);\n\n if (!runtime) {\n throw new Error('useResponsiveRuntime must be used within a ResponsiveProvider');\n }\n\n return runtime;\n}\n"]}
@@ -4,13 +4,13 @@ import { HelperText } from '../components/helper-text';
4
4
  import { Menu } from '../components/menu';
5
5
  import { Modal } from '../components/modal';
6
6
  import { Tab, TabList, TabPanel, Tabs } from '../components/tabs';
7
- import { ToastProvider, useToast } from '../components/toast';
8
7
  import { Tooltip } from '../components/tooltip';
9
8
  import { Button } from '../features/button/public';
10
9
  import { Card } from '../features/card/public';
11
10
  import { Checkbox } from '../features/form/checkbox/public';
12
11
  import { TextInput } from '../features/form/text-input/public';
13
12
  import { Box, Stack } from '../features/layout/public';
13
+ import { ToastProvider, useToast } from '../features/toast/public';
14
14
  import { Text } from '../features/typography/public';
15
15
  import { ThemeProvider } from '../theme';
16
16
  const docsThemeConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"DocsExamples.js","sourceRoot":"","sources":["../../src/examples/DocsExamples.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Field } from '../components/field';\nimport { HelperText } from '../components/helper-text';\nimport { Menu } from '../components/menu';\nimport { Modal } from '../components/modal';\nimport { Tab, TabList, TabPanel, Tabs } from '../components/tabs';\nimport { ToastProvider, useToast } from '../components/toast';\nimport { Tooltip } from '../components/tooltip';\nimport { Button } from '../features/button/public';\nimport { Card } from '../features/card/public';\nimport { Checkbox } from '../features/form/checkbox/public';\nimport { TextInput } from '../features/form/text-input/public';\nimport { Box, Stack } from '../features/layout/public';\nimport { Text } from '../features/typography/public';\nimport { ThemeProvider } from '../theme';\nimport type { ThemeConfig } from '../theme/types';\n\nconst docsThemeConfig: ThemeConfig = {\n id: 'docs',\n name: 'Docs',\n light: { primaryColor: '#2563EB', harmony: 'analogous' },\n dark: { primaryColor: '#60A5FA', harmony: 'analogous' },\n};\n\nexport function FormExample() {\n return (\n <ThemeProvider initialConfig={docsThemeConfig}>\n <Stack gap=\"m\" p=\"l\">\n <Field helperText=\"Use your work email.\" label=\"Email\" required>\n <TextInput placeholder=\"you@example.com\" />\n </Field>\n <Checkbox checked>Accept terms</Checkbox>\n <HelperText emphasis=\"muted\">Looks good.</HelperText>\n </Stack>\n </ThemeProvider>\n );\n}\n\nfunction ToastButton() {\n const { showToast } = useToast();\n return (\n <Button\n onPress={() =>\n showToast({ description: 'Your changes were saved.', status: 'success', title: 'Saved' })\n }\n >\n Show toast\n </Button>\n );\n}\n\nexport function FeedbackExample() {\n return (\n <ThemeProvider initialConfig={docsThemeConfig}>\n <ToastProvider>\n <Stack gap=\"m\" p=\"l\">\n <Tooltip content=\"Helpful contextual information\">\n <Text>Hover for tooltip</Text>\n </Tooltip>\n <ToastButton />\n </Stack>\n </ToastProvider>\n </ThemeProvider>\n );\n}\n\nexport function OverlayExample() {\n const [modalVisible, setModalVisible] = React.useState(false);\n\n return (\n <ThemeProvider initialConfig={docsThemeConfig}>\n <Stack gap=\"m\" p=\"l\">\n <Button onPress={() => setModalVisible(true)}>Open modal</Button>\n <Modal onDismiss={() => setModalVisible(false)} visible={modalVisible}>\n <Card>\n <Stack gap=\"s\">\n <Text variant=\"label\" weight=\"semiBold\">\n Modal title\n </Text>\n <Text>Modal content</Text>\n </Stack>\n </Card>\n </Modal>\n </Stack>\n </ThemeProvider>\n );\n}\n\nexport function NavigationExample() {\n return (\n <ThemeProvider initialConfig={docsThemeConfig}>\n <Stack gap=\"m\" p=\"l\">\n <Tabs defaultValue=\"account\">\n <TabList>\n <Tab value=\"account\">Account</Tab>\n <Tab disabled value=\"security\">\n Security\n </Tab>\n <Tab value=\"billing\">Billing</Tab>\n </TabList>\n <TabPanel value=\"account\">\n <Text>Account settings</Text>\n </TabPanel>\n <TabPanel value=\"billing\">\n <Text>Billing settings</Text>\n </TabPanel>\n </Tabs>\n <Menu\n actions={[\n { id: 'edit', title: 'Edit' },\n { disabled: true, id: 'archive', title: 'Archive' },\n ]}\n trigger={<Text>Open menu</Text>}\n />\n <Box>\n <Text color=\"success\">Theme overrides can stay semantic.</Text>\n </Box>\n </Stack>\n </ThemeProvider>\n );\n}\n"]}
1
+ {"version":3,"file":"DocsExamples.js","sourceRoot":"","sources":["../../src/examples/DocsExamples.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,eAAe,GAAgB;IACnC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE;IACxD,IAAI,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE;CACxD,CAAC;AAEF,MAAM,UAAU,WAAW;IACzB,OAAO,CACL,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAC5C;MAAA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAClB;QAAA,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAC7D;UAAA,CAAC,SAAS,CAAC,WAAW,CAAC,iBAAiB,EAC1C;QAAA,EAAE,KAAK,CACP;QAAA,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CACxC;QAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CACtD;MAAA,EAAE,KAAK,CACT;IAAA,EAAE,aAAa,CAAC,CACjB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,CAAC;IACjC,OAAO,CACL,CAAC,MAAM,CACL,OAAO,CAAC,CAAC,GAAG,EAAE,CACZ,SAAS,CAAC,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAC1F,CAAC,CAED;;IACF,EAAE,MAAM,CAAC,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAC5C;MAAA,CAAC,aAAa,CACZ;QAAA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAClB;UAAA,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAC/C;YAAA,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAC/B;UAAA,EAAE,OAAO,CACT;UAAA,CAAC,WAAW,CAAC,AAAD,EACd;QAAA,EAAE,KAAK,CACT;MAAA,EAAE,aAAa,CACjB;IAAA,EAAE,aAAa,CAAC,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9D,OAAO,CACL,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAC5C;MAAA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAClB;QAAA,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAChE;QAAA,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CACpE;UAAA,CAAC,IAAI,CACH;YAAA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CACZ;cAAA,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CACrC;;cACF,EAAE,IAAI,CACN;cAAA,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAC3B;YAAA,EAAE,KAAK,CACT;UAAA,EAAE,IAAI,CACR;QAAA,EAAE,KAAK,CACT;MAAA,EAAE,KAAK,CACT;IAAA,EAAE,aAAa,CAAC,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CACL,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC,CAC5C;MAAA,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAClB;QAAA,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAC1B;UAAA,CAAC,OAAO,CACN;YAAA,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CACjC;YAAA,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAC5B;;YACF,EAAE,GAAG,CACL;YAAA,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CACnC;UAAA,EAAE,OAAO,CACT;UAAA,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CACvB;YAAA,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAC9B;UAAA,EAAE,QAAQ,CACV;UAAA,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CACvB;YAAA,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAC9B;UAAA,EAAE,QAAQ,CACZ;QAAA,EAAE,IAAI,CACN;QAAA,CAAC,IAAI,CACH,OAAO,CAAC,CAAC;YACP,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAC7B,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;SACpD,CAAC,CACF,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAElC;QAAA,CAAC,GAAG,CACF;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kCAAkC,EAAE,IAAI,CAChE;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,KAAK,CACT;IAAA,EAAE,aAAa,CAAC,CACjB,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\n\nimport { Field } from '../components/field';\nimport { HelperText } from '../components/helper-text';\nimport { Menu } from '../components/menu';\nimport { Modal } from '../components/modal';\nimport { Tab, TabList, TabPanel, Tabs } from '../components/tabs';\nimport { Tooltip } from '../components/tooltip';\nimport { Button } from '../features/button/public';\nimport { Card } from '../features/card/public';\nimport { Checkbox } from '../features/form/checkbox/public';\nimport { TextInput } from '../features/form/text-input/public';\nimport { Box, Stack } from '../features/layout/public';\nimport { ToastProvider, useToast } from '../features/toast/public';\nimport { Text } from '../features/typography/public';\nimport { ThemeProvider } from '../theme';\nimport type { ThemeConfig } from '../theme/types';\n\nconst docsThemeConfig: ThemeConfig = {\n id: 'docs',\n name: 'Docs',\n light: { primaryColor: '#2563EB', harmony: 'analogous' },\n dark: { primaryColor: '#60A5FA', harmony: 'analogous' },\n};\n\nexport function FormExample() {\n return (\n <ThemeProvider initialConfig={docsThemeConfig}>\n <Stack gap=\"m\" p=\"l\">\n <Field helperText=\"Use your work email.\" label=\"Email\" required>\n <TextInput placeholder=\"you@example.com\" />\n </Field>\n <Checkbox checked>Accept terms</Checkbox>\n <HelperText emphasis=\"muted\">Looks good.</HelperText>\n </Stack>\n </ThemeProvider>\n );\n}\n\nfunction ToastButton() {\n const { showToast } = useToast();\n return (\n <Button\n onPress={() =>\n showToast({ description: 'Your changes were saved.', status: 'success', title: 'Saved' })\n }\n >\n Show toast\n </Button>\n );\n}\n\nexport function FeedbackExample() {\n return (\n <ThemeProvider initialConfig={docsThemeConfig}>\n <ToastProvider>\n <Stack gap=\"m\" p=\"l\">\n <Tooltip content=\"Helpful contextual information\">\n <Text>Hover for tooltip</Text>\n </Tooltip>\n <ToastButton />\n </Stack>\n </ToastProvider>\n </ThemeProvider>\n );\n}\n\nexport function OverlayExample() {\n const [modalVisible, setModalVisible] = React.useState(false);\n\n return (\n <ThemeProvider initialConfig={docsThemeConfig}>\n <Stack gap=\"m\" p=\"l\">\n <Button onPress={() => setModalVisible(true)}>Open modal</Button>\n <Modal onDismiss={() => setModalVisible(false)} visible={modalVisible}>\n <Card>\n <Stack gap=\"s\">\n <Text variant=\"label\" weight=\"semiBold\">\n Modal title\n </Text>\n <Text>Modal content</Text>\n </Stack>\n </Card>\n </Modal>\n </Stack>\n </ThemeProvider>\n );\n}\n\nexport function NavigationExample() {\n return (\n <ThemeProvider initialConfig={docsThemeConfig}>\n <Stack gap=\"m\" p=\"l\">\n <Tabs defaultValue=\"account\">\n <TabList>\n <Tab value=\"account\">Account</Tab>\n <Tab disabled value=\"security\">\n Security\n </Tab>\n <Tab value=\"billing\">Billing</Tab>\n </TabList>\n <TabPanel value=\"account\">\n <Text>Account settings</Text>\n </TabPanel>\n <TabPanel value=\"billing\">\n <Text>Billing settings</Text>\n </TabPanel>\n </Tabs>\n <Menu\n actions={[\n { id: 'edit', title: 'Edit' },\n { disabled: true, id: 'archive', title: 'Archive' },\n ]}\n trigger={<Text>Open menu</Text>}\n />\n <Box>\n <Text color=\"success\">Theme overrides can stay semantic.</Text>\n </Box>\n </Stack>\n </ThemeProvider>\n );\n}\n"]}
@@ -22,9 +22,9 @@ export function Accordion(props) {
22
22
  notifyValueChange(props, nextValues);
23
23
  }, [collapsible, controlled, disabled, interactionPolicy, openValues, props, type]);
24
24
  const contextValue = React.useMemo(() => ({ disabled, interactionPolicy, mode: type, openValues, toggleValue }), [disabled, interactionPolicy, openValues, toggleValue, type]);
25
- return (<AccordionContext.Provider value={contextValue}>
25
+ return (<AccordionContext value={contextValue}>
26
26
  <View {...viewProps}>{children}</View>
27
- </AccordionContext.Provider>);
27
+ </AccordionContext>);
28
28
  }
29
29
  /*** Normalizes the public single/multiple value shapes for internal state. */
30
30
  function normalizeAccordionValues(mode, value) {
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/Accordion.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport type {\n AccordionMode,\n AccordionMultipleProps,\n AccordionProps,\n AccordionSingleProps,\n} from '../../../../types/accordion';\nimport { resolveAccordionToggle } from '../../utils/resolveAccordionToggle';\nimport { AccordionContext } from './AccordionContext';\n\n/*** Coordinates controlled or uncontrolled accordion expansion state. */\nexport function Accordion(props: AccordionProps) {\n const {\n children,\n collapsible = false,\n defaultValue,\n disabled = false,\n interactionPolicy = 'enabled',\n onValueChange: _onValueChange,\n type = 'single',\n value,\n ...viewProps\n } = props;\n const [uncontrolledValues, setUncontrolledValues] = React.useState<readonly string[]>(() =>\n normalizeAccordionValues(type, defaultValue),\n );\n const controlled = value !== undefined;\n const openValues = controlled ? normalizeAccordionValues(type, value) : uncontrolledValues;\n\n const toggleValue = React.useCallback(\n (itemValue: string) => {\n if (disabled || interactionPolicy === 'passive') return;\n\n const nextValues = resolveAccordionToggle({\n collapsible,\n mode: type,\n openValues,\n value: itemValue,\n });\n\n if (!controlled) setUncontrolledValues(nextValues);\n notifyValueChange(props, nextValues);\n },\n [collapsible, controlled, disabled, interactionPolicy, openValues, props, type],\n );\n\n const contextValue = React.useMemo(\n () => ({ disabled, interactionPolicy, mode: type, openValues, toggleValue }),\n [disabled, interactionPolicy, openValues, toggleValue, type],\n );\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <View {...viewProps}>{children}</View>\n </AccordionContext.Provider>\n );\n}\n\n/*** Normalizes the public single/multiple value shapes for internal state. */\nfunction normalizeAccordionValues(\n mode: AccordionMode,\n value: string | readonly string[] | undefined,\n): readonly string[] {\n if (mode === 'multiple') {\n return typeof value === 'string' || value === undefined ? [] : value;\n }\n\n return typeof value === 'string' ? [value] : [];\n}\n\n/*** Emits the public value shape matching the configured accordion mode. */\nfunction notifyValueChange(props: AccordionProps, values: readonly string[]) {\n if (props.type === 'multiple') {\n const multipleProps: AccordionMultipleProps = props;\n multipleProps.onValueChange?.(values);\n return;\n }\n\n const singleProps: AccordionSingleProps = props;\n singleProps.onValueChange?.(values[0]);\n}\n"]}
1
+ {"version":3,"file":"Accordion.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/Accordion.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport type {\n AccordionMode,\n AccordionMultipleProps,\n AccordionProps,\n AccordionSingleProps,\n} from '../../../../types/accordion';\nimport { resolveAccordionToggle } from '../../utils/resolveAccordionToggle';\nimport { AccordionContext } from './AccordionContext';\n\n/*** Coordinates controlled or uncontrolled accordion expansion state. */\nexport function Accordion(props: AccordionProps) {\n const {\n children,\n collapsible = false,\n defaultValue,\n disabled = false,\n interactionPolicy = 'enabled',\n onValueChange: _onValueChange,\n type = 'single',\n value,\n ...viewProps\n } = props;\n const [uncontrolledValues, setUncontrolledValues] = React.useState<readonly string[]>(() =>\n normalizeAccordionValues(type, defaultValue),\n );\n const controlled = value !== undefined;\n const openValues = controlled ? normalizeAccordionValues(type, value) : uncontrolledValues;\n\n const toggleValue = React.useCallback(\n (itemValue: string) => {\n if (disabled || interactionPolicy === 'passive') return;\n\n const nextValues = resolveAccordionToggle({\n collapsible,\n mode: type,\n openValues,\n value: itemValue,\n });\n\n if (!controlled) setUncontrolledValues(nextValues);\n notifyValueChange(props, nextValues);\n },\n [collapsible, controlled, disabled, interactionPolicy, openValues, props, type],\n );\n\n const contextValue = React.useMemo(\n () => ({ disabled, interactionPolicy, mode: type, openValues, toggleValue }),\n [disabled, interactionPolicy, openValues, toggleValue, type],\n );\n\n return (\n <AccordionContext value={contextValue}>\n <View {...viewProps}>{children}</View>\n </AccordionContext>\n );\n}\n\n/*** Normalizes the public single/multiple value shapes for internal state. */\nfunction normalizeAccordionValues(\n mode: AccordionMode,\n value: string | readonly string[] | undefined,\n): readonly string[] {\n if (mode === 'multiple') {\n return typeof value === 'string' || value === undefined ? [] : value;\n }\n\n return typeof value === 'string' ? [value] : [];\n}\n\n/*** Emits the public value shape matching the configured accordion mode. */\nfunction notifyValueChange(props: AccordionProps, values: readonly string[]) {\n if (props.type === 'multiple') {\n const multipleProps: AccordionMultipleProps = props;\n multipleProps.onValueChange?.(values);\n return;\n }\n\n const singleProps: AccordionSingleProps = props;\n singleProps.onValueChange?.(values[0]);\n}\n"]}
@@ -3,7 +3,7 @@ import { View } from 'react-native';
3
3
  import { AccordionItemContext } from './AccordionItemContext';
4
4
  /*** Renders an accordion item's content when expanded or force-mounted. */
5
5
  export function AccordionContent({ children, forceMount = false, style, ...viewProps }) {
6
- const item = React.useContext(AccordionItemContext);
6
+ const item = React.use(AccordionItemContext);
7
7
  if (!item)
8
8
  throw new Error('AccordionContent must be rendered inside AccordionItem.');
9
9
  if (!item.open && !forceMount)
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionContent.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/AccordionContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,KAAK,EACL,GAAG,SAAS,EACU;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACtF,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,CACL,CAAC,IAAI,CACH,IAAI,SAAS,CAAC,CACd,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACxC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACzB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAE5D;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAc,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC","sourcesContent":["import React from 'react';\nimport { View, type ViewStyle } from 'react-native';\n\nimport type { AccordionContentProps } from '../../../../types/accordion';\nimport { AccordionItemContext } from './AccordionItemContext';\n\n/*** Renders an accordion item's content when expanded or force-mounted. */\nexport function AccordionContent({\n children,\n forceMount = false,\n style,\n ...viewProps\n}: AccordionContentProps) {\n const item = React.useContext(AccordionItemContext);\n if (!item) throw new Error('AccordionContent must be rendered inside AccordionItem.');\n if (!item.open && !forceMount) return null;\n\n return (\n <View\n {...viewProps}\n accessibilityLabelledBy={item.triggerId}\n nativeID={item.contentId}\n style={[!item.open ? hiddenContentStyle : undefined, style]}\n >\n {children}\n </View>\n );\n}\n\nconst hiddenContentStyle: ViewStyle = { display: 'none' };\n"]}
1
+ {"version":3,"file":"AccordionContent.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/AccordionContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,KAAK,EACL,GAAG,SAAS,EACU;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACtF,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE3C,OAAO,CACL,CAAC,IAAI,CACH,IAAI,SAAS,CAAC,CACd,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACxC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACzB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAE5D;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAc,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC","sourcesContent":["import React from 'react';\nimport { View, type ViewStyle } from 'react-native';\n\nimport type { AccordionContentProps } from '../../../../types/accordion';\nimport { AccordionItemContext } from './AccordionItemContext';\n\n/*** Renders an accordion item's content when expanded or force-mounted. */\nexport function AccordionContent({\n children,\n forceMount = false,\n style,\n ...viewProps\n}: AccordionContentProps) {\n const item = React.use(AccordionItemContext);\n if (!item) throw new Error('AccordionContent must be rendered inside AccordionItem.');\n if (!item.open && !forceMount) return null;\n\n return (\n <View\n {...viewProps}\n accessibilityLabelledBy={item.triggerId}\n nativeID={item.contentId}\n style={[!item.open ? hiddenContentStyle : undefined, style]}\n >\n {children}\n </View>\n );\n}\n\nconst hiddenContentStyle: ViewStyle = { display: 'none' };\n"]}
@@ -4,7 +4,7 @@ import { AccordionContext } from './AccordionContext';
4
4
  import { AccordionItemContext } from './AccordionItemContext';
5
5
  /*** Provides one accordion item's value, state, and trigger/content identifiers. */
6
6
  export function AccordionItem({ children, disabled = false, interactionPolicy, value, ...viewProps }) {
7
- const accordion = React.useContext(AccordionContext);
7
+ const accordion = React.use(AccordionContext);
8
8
  if (!accordion)
9
9
  throw new Error('AccordionItem must be rendered inside Accordion.');
10
10
  const reactId = React.useId();
@@ -21,8 +21,8 @@ export function AccordionItem({ children, disabled = false, interactionPolicy, v
21
21
  triggerId: `accordion-${reactId}-trigger`,
22
22
  value,
23
23
  }), [open, reactId, resolvedDisabled, resolvedInteractionPolicy, toggle, value]);
24
- return (<AccordionItemContext.Provider value={contextValue}>
24
+ return (<AccordionItemContext value={contextValue}>
25
25
  <View {...viewProps}>{children}</View>
26
- </AccordionItemContext.Provider>);
26
+ </AccordionItemContext>);
27
27
  }
28
28
  //# sourceMappingURL=AccordionItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionItem.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/AccordionItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,iBAAiB,EACjB,KAAK,EACL,GAAG,SAAS,EACO;IACnB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAEpF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACxD,MAAM,yBAAyB,GAAG,iBAAiB,IAAI,SAAS,CAAC,iBAAiB,CAAC;IACnF,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,aAAa,OAAO,UAAU;QACzC,QAAQ,EAAE,gBAAgB;QAC1B,iBAAiB,EAAE,yBAAyB;QAC5C,IAAI;QACJ,MAAM;QACN,SAAS,EAAE,aAAa,OAAO,UAAU;QACzC,KAAK;KACN,CAAC,EACF,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,EAAE,KAAK,CAAC,CAC5E,CAAC;IAEF,OAAO,CACL,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CACjD;MAAA,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CACvC;IAAA,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CACjC,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport type { AccordionItemProps } from '../../../../types/accordion';\nimport { AccordionContext } from './AccordionContext';\nimport { AccordionItemContext } from './AccordionItemContext';\n\n/*** Provides one accordion item's value, state, and trigger/content identifiers. */\nexport function AccordionItem({\n children,\n disabled = false,\n interactionPolicy,\n value,\n ...viewProps\n}: AccordionItemProps) {\n const accordion = React.useContext(AccordionContext);\n if (!accordion) throw new Error('AccordionItem must be rendered inside Accordion.');\n\n const reactId = React.useId();\n const resolvedDisabled = accordion.disabled || disabled;\n const resolvedInteractionPolicy = interactionPolicy ?? accordion.interactionPolicy;\n const open = accordion.openValues.includes(value);\n const toggle = React.useCallback(() => accordion.toggleValue(value), [accordion, value]);\n const contextValue = React.useMemo(\n () => ({\n contentId: `accordion-${reactId}-content`,\n disabled: resolvedDisabled,\n interactionPolicy: resolvedInteractionPolicy,\n open,\n toggle,\n triggerId: `accordion-${reactId}-trigger`,\n value,\n }),\n [open, reactId, resolvedDisabled, resolvedInteractionPolicy, toggle, value],\n );\n\n return (\n <AccordionItemContext.Provider value={contextValue}>\n <View {...viewProps}>{children}</View>\n </AccordionItemContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"AccordionItem.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/AccordionItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,iBAAiB,EACjB,KAAK,EACL,GAAG,SAAS,EACO;IACnB,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAEpF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACxD,MAAM,yBAAyB,GAAG,iBAAiB,IAAI,SAAS,CAAC,iBAAiB,CAAC;IACnF,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IACzF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE,aAAa,OAAO,UAAU;QACzC,QAAQ,EAAE,gBAAgB;QAC1B,iBAAiB,EAAE,yBAAyB;QAC5C,IAAI;QACJ,MAAM;QACN,SAAS,EAAE,aAAa,OAAO,UAAU;QACzC,KAAK;KACN,CAAC,EACF,CAAC,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,EAAE,KAAK,CAAC,CAC5E,CAAC;IAEF,OAAO,CACL,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CACxC;MAAA,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CACvC;IAAA,EAAE,oBAAoB,CAAC,CACxB,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport type { AccordionItemProps } from '../../../../types/accordion';\nimport { AccordionContext } from './AccordionContext';\nimport { AccordionItemContext } from './AccordionItemContext';\n\n/*** Provides one accordion item's value, state, and trigger/content identifiers. */\nexport function AccordionItem({\n children,\n disabled = false,\n interactionPolicy,\n value,\n ...viewProps\n}: AccordionItemProps) {\n const accordion = React.use(AccordionContext);\n if (!accordion) throw new Error('AccordionItem must be rendered inside Accordion.');\n\n const reactId = React.useId();\n const resolvedDisabled = accordion.disabled || disabled;\n const resolvedInteractionPolicy = interactionPolicy ?? accordion.interactionPolicy;\n const open = accordion.openValues.includes(value);\n const toggle = React.useCallback(() => accordion.toggleValue(value), [accordion, value]);\n const contextValue = React.useMemo(\n () => ({\n contentId: `accordion-${reactId}-content`,\n disabled: resolvedDisabled,\n interactionPolicy: resolvedInteractionPolicy,\n open,\n toggle,\n triggerId: `accordion-${reactId}-trigger`,\n value,\n }),\n [open, reactId, resolvedDisabled, resolvedInteractionPolicy, toggle, value],\n );\n\n return (\n <AccordionItemContext value={contextValue}>\n <View {...viewProps}>{children}</View>\n </AccordionItemContext>\n );\n}\n"]}
@@ -3,7 +3,7 @@ import { Pressable, View } from 'react-native';
3
3
  import { AccordionItemContext } from './AccordionItemContext';
4
4
  /*** Renders the accessible button that toggles its owning accordion item. */
5
5
  export function AccordionTrigger({ children, disabled = false, interactionPolicy, ...pressableProps }) {
6
- const item = React.useContext(AccordionItemContext);
6
+ const item = React.use(AccordionItemContext);
7
7
  if (!item)
8
8
  throw new Error('AccordionTrigger must be rendered inside AccordionItem.');
9
9
  const resolvedDisabled = item.disabled || disabled;
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionTrigger.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/AccordionTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,iBAAiB,EACjB,GAAG,cAAc,EACK;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAEtF,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACnD,MAAM,yBAAyB,GAAG,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC;IAE9E,OAAO,CACL,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAC9B;MAAA,CAAC,SAAS,CACR,IAAI,cAAc,CAAC,CACnB,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CACxE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAC3B,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACzB,OAAO,CAAC,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAE3E;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,SAAS,CACb;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport type { AccordionTriggerProps } from '../../../../types/accordion';\nimport { AccordionItemContext } from './AccordionItemContext';\n\n/*** Renders the accessible button that toggles its owning accordion item. */\nexport function AccordionTrigger({\n children,\n disabled = false,\n interactionPolicy,\n ...pressableProps\n}: AccordionTriggerProps) {\n const item = React.useContext(AccordionItemContext);\n if (!item) throw new Error('AccordionTrigger must be rendered inside AccordionItem.');\n\n const resolvedDisabled = item.disabled || disabled;\n const resolvedInteractionPolicy = interactionPolicy ?? item.interactionPolicy;\n\n return (\n <View accessibilityRole=\"header\">\n <Pressable\n {...pressableProps}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: resolvedDisabled, expanded: item.open }}\n disabled={resolvedDisabled}\n nativeID={item.triggerId}\n onPress={resolvedInteractionPolicy === 'passive' ? undefined : item.toggle}\n >\n {children}\n </Pressable>\n </View>\n );\n}\n"]}
1
+ {"version":3,"file":"AccordionTrigger.js","sourceRoot":"","sources":["../../../../../src/features/accordion/adapters/inbound/AccordionTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,iBAAiB,EACjB,GAAG,cAAc,EACK;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAEtF,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACnD,MAAM,yBAAyB,GAAG,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC;IAE9E,OAAO,CACL,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAC9B;MAAA,CAAC,SAAS,CACR,IAAI,cAAc,CAAC,CACnB,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CACxE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAC3B,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CACzB,OAAO,CAAC,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAE3E;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,SAAS,CACb;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport type { AccordionTriggerProps } from '../../../../types/accordion';\nimport { AccordionItemContext } from './AccordionItemContext';\n\n/*** Renders the accessible button that toggles its owning accordion item. */\nexport function AccordionTrigger({\n children,\n disabled = false,\n interactionPolicy,\n ...pressableProps\n}: AccordionTriggerProps) {\n const item = React.use(AccordionItemContext);\n if (!item) throw new Error('AccordionTrigger must be rendered inside AccordionItem.');\n\n const resolvedDisabled = item.disabled || disabled;\n const resolvedInteractionPolicy = interactionPolicy ?? item.interactionPolicy;\n\n return (\n <View accessibilityRole=\"header\">\n <Pressable\n {...pressableProps}\n accessibilityRole=\"button\"\n accessibilityState={{ disabled: resolvedDisabled, expanded: item.open }}\n disabled={resolvedDisabled}\n nativeID={item.triggerId}\n onPress={resolvedInteractionPolicy === 'passive' ? undefined : item.toggle}\n >\n {children}\n </Pressable>\n </View>\n );\n}\n"]}
@@ -29,12 +29,12 @@ export function BottomSheetProvider({ children }) {
29
29
  request?.onDismiss?.();
30
30
  }, []);
31
31
  const controller = React.useMemo(() => ({ dismiss, present }), [dismiss, present]);
32
- return (<BottomSheetContext.Provider value={controller}>
32
+ return (<BottomSheetContext value={controller}>
33
33
  <BottomSheetModalProvider>
34
34
  {children}
35
35
  <BottomSheetHost activeRequest={activeRequest} handleDismiss={handleDismiss} modalRef={modalRef} presentedRef={presentedRef}/>
36
36
  </BottomSheetModalProvider>
37
- </BottomSheetContext.Provider>);
37
+ </BottomSheetContext>);
38
38
  }
39
39
  /*** Renders and presents the single Gorhom modal owned by the provider. */
40
40
  function BottomSheetHost({ activeRequest, handleDismiss, modalRef, presentedRef, }) {
@@ -1 +1 @@
1
- {"version":3,"file":"BottomSheetProvider.js","sourceRoot":"","sources":["../../../src/features/bottom-sheet/BottomSheetProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n BottomSheetBackdrop,\n type BottomSheetBackdropProps,\n BottomSheetModal,\n BottomSheetModalProvider,\n BottomSheetView,\n} from '@gorhom/bottom-sheet';\nimport React from 'react';\n\nimport type { BottomSheetController, BottomSheetPresentOptions } from '../../types/bottomSheet';\nimport { BottomSheetContext } from './BottomSheetContext';\n\n/*** Installs the shared bottom-sheet modal host and controller for descendant consumers. */\nexport function BottomSheetProvider({ children }: { children: React.ReactNode }) {\n const modalRef = React.useRef<BottomSheetModal>(null);\n const activeRequestRef = React.useRef<BottomSheetPresentOptions | null>(null);\n const presentedRef = React.useRef(false);\n const [activeRequest, setActiveRequest] = React.useState<BottomSheetPresentOptions | null>(null);\n\n const present = React.useCallback((options: BottomSheetPresentOptions) => {\n activeRequestRef.current = options;\n setActiveRequest(options);\n }, []);\n\n const dismiss = React.useCallback(() => {\n if (presentedRef.current) {\n modalRef.current?.dismiss();\n return;\n }\n\n const request = activeRequestRef.current;\n activeRequestRef.current = null;\n setActiveRequest(null);\n request?.onDismiss?.();\n }, []);\n\n const handleDismiss = React.useCallback(() => {\n const request = activeRequestRef.current;\n presentedRef.current = false;\n activeRequestRef.current = null;\n setActiveRequest(null);\n request?.onDismiss?.();\n }, []);\n\n const controller = React.useMemo<BottomSheetController>(\n () => ({ dismiss, present }),\n [dismiss, present],\n );\n\n return (\n <BottomSheetContext.Provider value={controller}>\n <BottomSheetModalProvider>\n {children}\n <BottomSheetHost\n activeRequest={activeRequest}\n handleDismiss={handleDismiss}\n modalRef={modalRef}\n presentedRef={presentedRef}\n />\n </BottomSheetModalProvider>\n </BottomSheetContext.Provider>\n );\n}\n\ninterface BottomSheetHostProps {\n readonly activeRequest: BottomSheetPresentOptions | null;\n readonly handleDismiss: () => void;\n readonly modalRef: React.RefObject<BottomSheetModal | null>;\n readonly presentedRef: React.RefObject<boolean>;\n}\n\n/*** Renders and presents the single Gorhom modal owned by the provider. */\nfunction BottomSheetHost({\n activeRequest,\n handleDismiss,\n modalRef,\n presentedRef,\n}: BottomSheetHostProps) {\n React.useEffect(() => {\n if (!activeRequest || presentedRef.current) {\n return;\n }\n\n presentedRef.current = true;\n modalRef.current?.present();\n }, [activeRequest, modalRef, presentedRef]);\n\n const renderBackdrop = useBottomSheetBackdrop(activeRequest?.dismissOnBackdropPress);\n const snapPoints = React.useMemo(\n () => (activeRequest?.snapPoints ? [...activeRequest.snapPoints] : undefined),\n [activeRequest?.snapPoints],\n );\n\n if (!activeRequest) {\n return null;\n }\n\n return (\n <BottomSheetModal\n ref={modalRef}\n backdropComponent={renderBackdrop}\n enableDynamicSizing={activeRequest.enableDynamicSizing ?? true}\n enablePanDownToClose={activeRequest.enablePanDownToClose ?? true}\n index={activeRequest.initialIndex ?? 0}\n keyboardBehavior={activeRequest.keyboardBehavior ?? 'interactive'}\n keyboardBlurBehavior={activeRequest.keyboardBlurBehavior ?? 'restore'}\n onChange={activeRequest.onIndexChange}\n onDismiss={handleDismiss}\n snapPoints={snapPoints}\n >\n <BottomSheetView>{activeRequest.content}</BottomSheetView>\n </BottomSheetModal>\n );\n}\n\n/*** Creates the backdrop renderer for the active bottom-sheet request. */\nfunction useBottomSheetBackdrop(dismissOnBackdropPress: boolean | undefined) {\n return React.useCallback(\n (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop\n {...props}\n appearsOnIndex={0}\n disappearsOnIndex={-1}\n pressBehavior={dismissOnBackdropPress === false ? 'none' : 'close'}\n />\n ),\n [dismissOnBackdropPress],\n );\n}\n"]}
1
+ {"version":3,"file":"BottomSheetProvider.js","sourceRoot":"","sources":["../../../src/features/bottom-sheet/BottomSheetProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n BottomSheetBackdrop,\n type BottomSheetBackdropProps,\n BottomSheetModal,\n BottomSheetModalProvider,\n BottomSheetView,\n} from '@gorhom/bottom-sheet';\nimport React from 'react';\n\nimport type { BottomSheetController, BottomSheetPresentOptions } from '../../types/bottomSheet';\nimport { BottomSheetContext } from './BottomSheetContext';\n\n/*** Installs the shared bottom-sheet modal host and controller for descendant consumers. */\nexport function BottomSheetProvider({ children }: { children: React.ReactNode }) {\n const modalRef = React.useRef<BottomSheetModal>(null);\n const activeRequestRef = React.useRef<BottomSheetPresentOptions | null>(null);\n const presentedRef = React.useRef(false);\n const [activeRequest, setActiveRequest] = React.useState<BottomSheetPresentOptions | null>(null);\n\n const present = React.useCallback((options: BottomSheetPresentOptions) => {\n activeRequestRef.current = options;\n setActiveRequest(options);\n }, []);\n\n const dismiss = React.useCallback(() => {\n if (presentedRef.current) {\n modalRef.current?.dismiss();\n return;\n }\n\n const request = activeRequestRef.current;\n activeRequestRef.current = null;\n setActiveRequest(null);\n request?.onDismiss?.();\n }, []);\n\n const handleDismiss = React.useCallback(() => {\n const request = activeRequestRef.current;\n presentedRef.current = false;\n activeRequestRef.current = null;\n setActiveRequest(null);\n request?.onDismiss?.();\n }, []);\n\n const controller = React.useMemo<BottomSheetController>(\n () => ({ dismiss, present }),\n [dismiss, present],\n );\n\n return (\n <BottomSheetContext value={controller}>\n <BottomSheetModalProvider>\n {children}\n <BottomSheetHost\n activeRequest={activeRequest}\n handleDismiss={handleDismiss}\n modalRef={modalRef}\n presentedRef={presentedRef}\n />\n </BottomSheetModalProvider>\n </BottomSheetContext>\n );\n}\n\ninterface BottomSheetHostProps {\n readonly activeRequest: BottomSheetPresentOptions | null;\n readonly handleDismiss: () => void;\n readonly modalRef: React.RefObject<BottomSheetModal | null>;\n readonly presentedRef: React.RefObject<boolean>;\n}\n\n/*** Renders and presents the single Gorhom modal owned by the provider. */\nfunction BottomSheetHost({\n activeRequest,\n handleDismiss,\n modalRef,\n presentedRef,\n}: BottomSheetHostProps) {\n React.useEffect(() => {\n if (!activeRequest || presentedRef.current) {\n return;\n }\n\n presentedRef.current = true;\n modalRef.current?.present();\n }, [activeRequest, modalRef, presentedRef]);\n\n const renderBackdrop = useBottomSheetBackdrop(activeRequest?.dismissOnBackdropPress);\n const snapPoints = React.useMemo(\n () => (activeRequest?.snapPoints ? [...activeRequest.snapPoints] : undefined),\n [activeRequest?.snapPoints],\n );\n\n if (!activeRequest) {\n return null;\n }\n\n return (\n <BottomSheetModal\n ref={modalRef}\n backdropComponent={renderBackdrop}\n enableDynamicSizing={activeRequest.enableDynamicSizing ?? true}\n enablePanDownToClose={activeRequest.enablePanDownToClose ?? true}\n index={activeRequest.initialIndex ?? 0}\n keyboardBehavior={activeRequest.keyboardBehavior ?? 'interactive'}\n keyboardBlurBehavior={activeRequest.keyboardBlurBehavior ?? 'restore'}\n onChange={activeRequest.onIndexChange}\n onDismiss={handleDismiss}\n snapPoints={snapPoints}\n >\n <BottomSheetView>{activeRequest.content}</BottomSheetView>\n </BottomSheetModal>\n );\n}\n\n/*** Creates the backdrop renderer for the active bottom-sheet request. */\nfunction useBottomSheetBackdrop(dismissOnBackdropPress: boolean | undefined) {\n return React.useCallback(\n (props: BottomSheetBackdropProps) => (\n <BottomSheetBackdrop\n {...props}\n appearsOnIndex={0}\n disappearsOnIndex={-1}\n pressBehavior={dismissOnBackdropPress === false ? 'none' : 'close'}\n />\n ),\n [dismissOnBackdropPress],\n );\n}\n"]}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { BottomSheetContext } from './BottomSheetContext';
3
3
  /*** Returns the shared bottom-sheet controller installed by BottomSheetProvider. */
4
4
  export function useBottomSheet() {
5
- const controller = React.useContext(BottomSheetContext);
5
+ const controller = React.use(BottomSheetContext);
6
6
  if (!controller) {
7
7
  throw new Error('useBottomSheet must be used within BottomSheetProvider.');
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useBottomSheet.js","sourceRoot":"","sources":["../../../src/features/bottom-sheet/useBottomSheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,oFAAoF;AACpF,MAAM,UAAU,cAAc;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAExD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["import React from 'react';\n\nimport type { BottomSheetController } from '../../types/bottomSheet';\nimport { BottomSheetContext } from './BottomSheetContext';\n\n/*** Returns the shared bottom-sheet controller installed by BottomSheetProvider. */\nexport function useBottomSheet(): BottomSheetController {\n const controller = React.useContext(BottomSheetContext);\n\n if (!controller) {\n throw new Error('useBottomSheet must be used within BottomSheetProvider.');\n }\n\n return controller;\n}\n"]}
1
+ {"version":3,"file":"useBottomSheet.js","sourceRoot":"","sources":["../../../src/features/bottom-sheet/useBottomSheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,oFAAoF;AACpF,MAAM,UAAU,cAAc;IAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["import React from 'react';\n\nimport type { BottomSheetController } from '../../types/bottomSheet';\nimport { BottomSheetContext } from './BottomSheetContext';\n\n/*** Returns the shared bottom-sheet controller installed by BottomSheetProvider. */\nexport function useBottomSheet(): BottomSheetController {\n const controller = React.use(BottomSheetContext);\n\n if (!controller) {\n throw new Error('useBottomSheet must be used within BottomSheetProvider.');\n }\n\n return controller;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { PopoverProps } from '../../../../types/popover';
3
+ /*** Renders anchored overlay content through the shared Surface overlay stack. */
4
+ export declare function Popover(props: PopoverProps): React.JSX.Element;
5
+ //# sourceMappingURL=Popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../../../src/features/popover/adapters/inbound/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,kFAAkF;AAClF,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,qBAwC1C"}
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import { useControllableState } from '../../../../internal/useControllableState';
4
+ import { PopoverOverlay } from './PopoverOverlay';
5
+ /*** Renders anchored overlay content through the shared Surface overlay stack. */
6
+ export function Popover(props) {
7
+ const anchorRef = React.useRef(null);
8
+ const [resolvedOpen, setResolvedOpen] = useControllableState({
9
+ defaultValue: props.defaultOpen ?? false,
10
+ onChange: props.onOpenChange,
11
+ value: props.open,
12
+ });
13
+ const passive = props.interactionPolicy === 'passive';
14
+ const close = React.useCallback(() => {
15
+ if (!passive)
16
+ setResolvedOpen(false);
17
+ }, [passive, setResolvedOpen]);
18
+ const toggle = React.useCallback(() => {
19
+ if (!passive)
20
+ setResolvedOpen(!resolvedOpen);
21
+ }, [passive, resolvedOpen, setResolvedOpen]);
22
+ return (<>
23
+ <View collapsable={false} ref={anchorRef} testID={props.testID ? `${props.testID}-anchor` : undefined}>
24
+ {props.anchor({ close, open: resolvedOpen, toggle })}
25
+ </View>
26
+ {resolvedOpen ? (<PopoverOverlay anchorRef={anchorRef} closeOnOutsidePress={props.closeOnOutsidePress ?? true} offset={props.offset ?? 8} onClose={close} passive={passive} placement={props.placement ?? 'bottom-start'} testID={props.testID}>
27
+ {props.children}
28
+ </PopoverOverlay>) : null}
29
+ </>);
30
+ }
31
+ //# sourceMappingURL=Popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.js","sourceRoot":"","sources":["../../../../../src/features/popover/adapters/inbound/Popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,kFAAkF;AAClF,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,oBAAoB,CAAU;QACpE,YAAY,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK;QACxC,QAAQ,EAAE,KAAK,CAAC,YAAY;QAC5B,KAAK,EAAE,KAAK,CAAC,IAAI;KAClB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC;IAEtD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACnC,IAAI,CAAC,OAAO;YAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,CAAC,OAAO;YAAE,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAE7C,OAAO,CACL,EACE;MAAA,CAAC,IAAI,CACH,WAAW,CAAC,CAAC,KAAK,CAAC,CACnB,GAAG,CAAC,CAAC,SAAS,CAAC,CACf,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAE5D;QAAA,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CACtD;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,YAAY,CAAC,CAAC,CAAC,CACd,CAAC,cAAc,CACb,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,mBAAmB,CAAC,CAAC,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,CACvD,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAC1B,OAAO,CAAC,CAAC,KAAK,CAAC,CACf,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,cAAc,CAAC,CAC7C,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAErB;UAAA,CAAC,KAAK,CAAC,QAAQ,CACjB;QAAA,EAAE,cAAc,CAAC,CAClB,CAAC,CAAC,CAAC,IAAI,CACV;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { useControllableState } from '../../../../internal/useControllableState';\nimport type { PopoverProps } from '../../../../types/popover';\nimport { PopoverOverlay } from './PopoverOverlay';\n\n/*** Renders anchored overlay content through the shared Surface overlay stack. */\nexport function Popover(props: PopoverProps) {\n const anchorRef = React.useRef<View | null>(null);\n const [resolvedOpen, setResolvedOpen] = useControllableState<boolean>({\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange,\n value: props.open,\n });\n const passive = props.interactionPolicy === 'passive';\n\n const close = React.useCallback(() => {\n if (!passive) setResolvedOpen(false);\n }, [passive, setResolvedOpen]);\n const toggle = React.useCallback(() => {\n if (!passive) setResolvedOpen(!resolvedOpen);\n }, [passive, resolvedOpen, setResolvedOpen]);\n\n return (\n <>\n <View\n collapsable={false}\n ref={anchorRef}\n testID={props.testID ? `${props.testID}-anchor` : undefined}\n >\n {props.anchor({ close, open: resolvedOpen, toggle })}\n </View>\n {resolvedOpen ? (\n <PopoverOverlay\n anchorRef={anchorRef}\n closeOnOutsidePress={props.closeOnOutsidePress ?? true}\n offset={props.offset ?? 8}\n onClose={close}\n passive={passive}\n placement={props.placement ?? 'bottom-start'}\n testID={props.testID}\n >\n {props.children}\n </PopoverOverlay>\n ) : null}\n </>\n );\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { PopoverPlacement } from '../../../../types/popover';
4
+ /*** Renders and positions one mounted popover overlay for an open anchor. */
5
+ export declare function PopoverOverlay({ anchorRef, children, closeOnOutsidePress, offset, onClose, passive, placement, testID, }: PopoverOverlayProps): React.JSX.Element;
6
+ interface PopoverOverlayProps {
7
+ anchorRef: React.RefObject<View | null>;
8
+ children?: React.ReactNode;
9
+ closeOnOutsidePress: boolean;
10
+ offset: number;
11
+ onClose: () => void;
12
+ passive: boolean;
13
+ placement: PopoverPlacement;
14
+ testID?: string;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=PopoverOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/features/popover/adapters/inbound/PopoverOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAyB,IAAI,EAAkB,MAAM,cAAc,CAAC;AAG3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM,GACP,EAAE,mBAAmB,qBA6BrB;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}