@nori-ui/core 1.8.0 → 1.9.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.
- package/dist/{chunk-PLQPBMG2.js → chunk-BXZGCOKT.js} +2 -2
- package/dist/{chunk-PLQPBMG2.js.map → chunk-BXZGCOKT.js.map} +1 -1
- package/dist/{chunk-RI4Y2C5U.js → chunk-KLK7OMFT.js} +3 -3
- package/dist/{chunk-RI4Y2C5U.js.map → chunk-KLK7OMFT.js.map} +1 -1
- package/dist/chunk-OHWRTHGL.js +495 -0
- package/dist/chunk-OHWRTHGL.js.map +1 -0
- package/dist/{chunk-V5QSMDZL.js → chunk-QB6RH6UU.js} +3 -3
- package/dist/{chunk-V5QSMDZL.js.map → chunk-QB6RH6UU.js.map} +1 -1
- package/dist/chunk-S763GTIZ.js +350 -0
- package/dist/chunk-S763GTIZ.js.map +1 -0
- package/dist/chunk-UJRVWGK7.js +3 -0
- package/dist/chunk-UJRVWGK7.js.map +1 -0
- package/dist/client.cjs +2248 -1424
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +2 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.js +13 -10
- package/dist/client.js.map +1 -1
- package/dist/components/Accordion/index.js +2 -2
- package/dist/components/Command/index.cjs +1371 -0
- package/dist/components/Command/index.cjs.map +1 -0
- package/dist/components/Command/index.d.cts +89 -0
- package/dist/components/Command/index.d.ts +89 -0
- package/dist/components/Command/index.js +11 -0
- package/dist/components/Command/index.js.map +1 -0
- package/dist/components/Dialog/index.js +2 -1
- package/dist/components/Sidebar/index.cjs +675 -0
- package/dist/components/Sidebar/index.cjs.map +1 -0
- package/dist/components/Sidebar/index.d.cts +109 -0
- package/dist/components/Sidebar/index.d.ts +109 -0
- package/dist/components/Sidebar/index.js +7 -0
- package/dist/components/Sidebar/index.js.map +1 -0
- package/dist/components/Switch/index.js +2 -2
- package/dist/index.cjs +2248 -1424
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +13 -10
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/theme/px.ts","../../../../tokens/build/theme.ts","../../../src/theme/context.tsx","../../../src/theme/use-color-scheme.tsx","../../../src/theme/use-theme-colors.ts","../../../src/utils/cn.ts","../../../src/icons/default-semantic-icons.tsx","../../../src/slot/compose-refs.ts","../../../src/slot/slot.tsx","../../../src/components/Dialog/blur-backdrop.tsx","../../../src/components/Dialog/Dialog.tsx","../../../src/components/Command/Command.tsx"],"names":["createContext","Platform","useContext","useState","Appearance","useEffect","isWeb","jsx","RNText","forwardRef","Slot","isValidElement","Children","cloneElement","useCallback","useId","useRef","Pressable","jsxs","Modal","StyleSheet","View","RNTextInput","ScrollView"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Strip the `px` suffix from a CSS-flavored token value and return a\n * number, the form React Native style props expect for properties like\n * `borderRadius`, `paddingHorizontal`, `fontSize`, etc.\n *\n * The tokens package emits all dimensional tokens as `${number}px`\n * strings (it's the lingua franca for both CSS and Style Dictionary\n * consumers); inside RN we need the unitless number. RN-Web tolerates\n * both, but native is strict.\n *\n * Falls through unchanged for tokens that already came in as numbers\n * (forward-compat).\n *\n * Examples:\n * px('6px') → 6\n * px('1.5px') → 1.5\n * px(6) → 6\n * px('foo') → 0 (defensive — bad input shouldn't crash render)\n */\nexport function px(value: string | number): number {\n if (typeof value === 'number') {\n return value;\n }\n const n = Number.parseFloat(value);\n return Number.isFinite(n) ? n : 0;\n}\n","// GENERATED by @nori-ui/tokens — DO NOT EDIT.\n// Run `yarn build:tokens` to regenerate.\n\n// Generated for light mode.\n// Do not edit — run `yarn build:tokens`.\n\nexport const theme = {\n color: {\n danger: \"#ef4444\",\n info: \"#3b82f6\",\n neutral: {\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#a1a1aa\",\n \"50\": \"#fafafa\",\n \"500\": \"#71717a\",\n \"600\": \"#52525b\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n },\n primary: {\n \"100\": \"#ccfbf1\",\n \"200\": \"#99f6e4\",\n \"300\": \"#5eead4\",\n \"400\": \"#2dd4bf\",\n \"50\": \"#f0fdfa\",\n \"500\": \"#14b8a6\",\n \"600\": \"#0d9488\",\n \"700\": \"#0f766e\",\n \"800\": \"#115e59\",\n \"900\": \"#134e4a\",\n },\n success: \"#22c55e\",\n warning: \"#f59e0b\",\n },\n fontFamily: {\n body: \"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n display: \"ui-serif, Georgia, 'Times New Roman', serif\",\n mono: \"ui-monospace, 'SF Mono', Menlo, Consolas, 'DejaVu Sans Mono', monospace\",\n },\n fontSize: {\n \"2xl\": \"24px\",\n \"3xl\": \"30px\",\n \"4xl\": \"36px\",\n lg: \"18px\",\n md: \"16px\",\n sm: \"14px\",\n xl: \"20px\",\n xs: \"12px\",\n },\n fontWeight: {\n bold: \"700\",\n medium: \"500\",\n regular: \"400\",\n semibold: \"600\",\n },\n lineHeight: {\n normal: \"1.4\",\n relaxed: \"1.6\",\n tight: \"1.2\",\n },\n radius: {\n \"2xl\": \"16px\",\n full: \"9999px\",\n lg: \"8px\",\n md: \"6px\",\n none: \"0px\",\n sm: \"4px\",\n xl: \"12px\",\n },\n semantic: {\n background: {\n default: \"#fafafa\",\n elevated: \"#ffffff\",\n subtle: \"#f4f4f5\",\n },\n border: {\n default: \"#e4e4e7\",\n strong: \"#d4d4d8\",\n },\n interactive: {\n destructive: \"#ef4444\",\n primary: \"#0d9488\",\n primaryHover: \"#0f766e\",\n primaryPressed: \"#115e59\",\n },\n text: {\n default: \"#18181b\",\n inverted: \"#fafafa\",\n muted: \"#52525b\",\n },\n },\n shadow: {\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n },\n spacing: {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"2\": \"8px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n },\n} as const;\n\nexport type Theme = typeof theme;\n\n\n// Dark mode overrides\n// Generated for dark mode.\n// Do not edit — run `yarn build:tokens`.\n\nexport const themeDark = {\n color: {\n danger: \"#ef4444\",\n info: \"#3b82f6\",\n neutral: {\n \"100\": \"#f4f4f5\",\n \"200\": \"#e4e4e7\",\n \"300\": \"#d4d4d8\",\n \"400\": \"#a1a1aa\",\n \"50\": \"#fafafa\",\n \"500\": \"#71717a\",\n \"600\": \"#52525b\",\n \"700\": \"#3f3f46\",\n \"800\": \"#27272a\",\n \"900\": \"#18181b\",\n },\n primary: {\n \"100\": \"#ccfbf1\",\n \"200\": \"#99f6e4\",\n \"300\": \"#5eead4\",\n \"400\": \"#2dd4bf\",\n \"50\": \"#f0fdfa\",\n \"500\": \"#14b8a6\",\n \"600\": \"#0d9488\",\n \"700\": \"#0f766e\",\n \"800\": \"#115e59\",\n \"900\": \"#134e4a\",\n },\n success: \"#22c55e\",\n warning: \"#f59e0b\",\n },\n fontFamily: {\n body: \"system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n display: \"ui-serif, Georgia, 'Times New Roman', serif\",\n mono: \"ui-monospace, 'SF Mono', Menlo, Consolas, 'DejaVu Sans Mono', monospace\",\n },\n fontSize: {\n \"2xl\": \"24px\",\n \"3xl\": \"30px\",\n \"4xl\": \"36px\",\n lg: \"18px\",\n md: \"16px\",\n sm: \"14px\",\n xl: \"20px\",\n xs: \"12px\",\n },\n fontWeight: {\n bold: \"700\",\n medium: \"500\",\n regular: \"400\",\n semibold: \"600\",\n },\n lineHeight: {\n normal: \"1.4\",\n relaxed: \"1.6\",\n tight: \"1.2\",\n },\n radius: {\n \"2xl\": \"16px\",\n full: \"9999px\",\n lg: \"8px\",\n md: \"6px\",\n none: \"0px\",\n sm: \"4px\",\n xl: \"12px\",\n },\n semantic: {\n background: {\n default: \"#18181b\",\n elevated: \"#3f3f46\",\n subtle: \"#27272a\",\n },\n border: {\n default: \"#3f3f46\",\n strong: \"#52525b\",\n },\n interactive: {\n destructive: \"#ef4444\",\n primary: \"#2dd4bf\",\n primaryHover: \"#5eead4\",\n primaryPressed: \"#99f6e4\",\n },\n text: {\n default: \"#fafafa\",\n inverted: \"#18181b\",\n muted: \"#a1a1aa\",\n },\n },\n shadow: {\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n },\n spacing: {\n \"0\": \"0px\",\n \"1\": \"4px\",\n \"10\": \"40px\",\n \"12\": \"48px\",\n \"16\": \"64px\",\n \"2\": \"8px\",\n \"20\": \"80px\",\n \"24\": \"96px\",\n \"3\": \"12px\",\n \"4\": \"16px\",\n \"5\": \"20px\",\n \"6\": \"24px\",\n \"8\": \"32px\",\n },\n} as const;\n\n","'use client';\n\nimport { themeDark as defaultDark, theme as defaultLight, type Theme } from '@nori-ui/tokens';\nimport type { ReactNode } from 'react';\nimport { createContext } from 'react';\n\n/**\n * A `NoriTheme` is a paired light/dark palette. The active half is picked\n * by `useColorScheme()` so the same theme object covers both schemes.\n *\n * Build one yourself by spreading the defaults and overriding the colors\n * you care about, or pick a preset from `@nori-ui/core/themes` (see the\n * Theming docs for examples).\n */\nexport type NoriTheme = {\n light: Theme;\n dark: Theme;\n};\n\n/**\n * Default Nori palette — teal primary on a warm-paper light surface, and\n * teal-400 primary on a deep-zinc dark surface. Mirrors the `theme` /\n * `themeDark` exports from @nori-ui/tokens.\n */\nexport const defaultTheme: NoriTheme = {\n light: defaultLight,\n dark: defaultDark as unknown as Theme,\n};\n\n// Context value is the FULL pair, not the active half. `useThemeColors`\n// (the hook components reach for) resolves it to the right one based on\n// the current color scheme. Storing the pair means a parent only has to\n// declare the theme once — switching scheme is a separate concern.\nexport const ThemeContext = createContext<NoriTheme>(defaultTheme);\nThemeContext.displayName = 'ThemeContext';\n\nexport type ThemeProviderProps = {\n /**\n * The theme to apply to descendants. Pass either:\n * - a full `NoriTheme` (`{ light, dark }`) — both schemes covered\n * - a single `Theme` — used for both light and dark (rare; mostly\n * useful when you ONLY ever render in one scheme)\n * - omit — falls back to the Nori default (teal palette)\n */\n theme?: NoriTheme | Theme;\n children?: ReactNode;\n};\n\nconst isFullTheme = (t: NoriTheme | Theme): t is NoriTheme => 'light' in t && 'dark' in t;\n\nexport function ThemeProvider({ theme, children }: ThemeProviderProps) {\n const value: NoriTheme =\n theme === undefined ? defaultTheme : isFullTheme(theme) ? theme : { light: theme, dark: theme };\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n","'use client';\n\nimport { createContext, type ReactNode, useContext, useEffect, useState } from 'react';\nimport { Appearance, Platform } from 'react-native';\n\nexport type ColorScheme = 'light' | 'dark';\n\n// Override channel so a parent can force a scheme (e.g. an app shell with\n// hard-coded dark chrome that wants nested components to render against\n// the dark token half regardless of the OS Appearance). `null` means\n// \"no override — use the system signal\".\nconst ColorSchemeOverrideContext = createContext<ColorScheme | null>(null);\nColorSchemeOverrideContext.displayName = 'ColorSchemeOverrideContext';\n\nexport type ColorSchemeProviderProps = {\n /** Force a specific scheme for descendants. */\n value: ColorScheme;\n children?: ReactNode;\n};\n\n/**\n * Forces a color scheme for all descendants. Useful when a screen's chrome\n * is hard-coded to one scheme (e.g. a forced-dark editorial surface) and\n * you want library components inside it to follow that, not the OS.\n */\nexport function ColorSchemeProvider({ value, children }: ColorSchemeProviderProps) {\n return <ColorSchemeOverrideContext.Provider value={value}>{children}</ColorSchemeOverrideContext.Provider>;\n}\n\nconst isWeb = Platform.OS === 'web';\n\n// Web: a document is \"in dark mode\" when the root <html> element carries\n// the `dark` class (Tailwind / Fumadocs convention) OR a `data-theme=\"dark\"`\n// attribute (matches the `darkMode` selectors in our Tailwind preset).\n// We deliberately don't fall back to `prefers-color-scheme` — the app\n// usually owns that decision and writes it onto <html>; tracking the system\n// preference too would fight the app's chosen value.\nfunction readWebScheme(): ColorScheme {\n if (typeof document === 'undefined') {\n return 'light';\n }\n const root = document.documentElement;\n if (root.classList.contains('dark')) {\n return 'dark';\n }\n if (root.getAttribute('data-theme') === 'dark') {\n return 'dark';\n }\n return 'light';\n}\n\n/**\n * Returns the current color scheme — `'light'` or `'dark'`.\n *\n * On web: observes the root `<html>` element's `class=\"dark\"` and\n * `data-theme=\"dark\"` attribute (the same signals our Tailwind preset\n * keys on). Updates live as those flip.\n *\n * On native: delegates to `react-native`'s `Appearance` API so the hook\n * tracks the OS preference without extra wiring.\n *\n * Components consume this indirectly via `useThemeColors()`; reach for\n * this directly when you need the raw scheme (e.g. to swap an icon).\n */\nexport function useColorScheme(): ColorScheme {\n // A `<ColorSchemeProvider value=\"dark\">` ancestor (or NoriProvider's\n // `colorScheme` prop, which mounts one) wins over the OS signal — the\n // app shell knows which scheme its chrome is locked to.\n const override = useContext(ColorSchemeOverrideContext);\n\n const [scheme, setScheme] = useState<ColorScheme>(() => {\n if (isWeb) {\n return readWebScheme();\n }\n return (Appearance.getColorScheme() ?? 'light') as ColorScheme;\n });\n\n useEffect(() => {\n if (isWeb) {\n const root = document.documentElement;\n const update = () => setScheme(readWebScheme());\n const observer = new MutationObserver(update);\n observer.observe(root, { attributes: true, attributeFilter: ['class', 'data-theme'] });\n // Sync once after mount in case SSR shipped a different value.\n update();\n return () => observer.disconnect();\n }\n\n const sub = Appearance.addChangeListener(({ colorScheme }) => {\n setScheme((colorScheme ?? 'light') as ColorScheme);\n });\n return () => sub.remove();\n }, []);\n\n return override ?? scheme;\n}\n","'use client';\n\nimport type { Theme } from '@nori-ui/tokens';\nimport { useContext } from 'react';\nimport { ThemeContext } from './context';\nimport { useColorScheme } from './use-color-scheme';\n\n/**\n * Returns the active token palette — `theme.light` in light mode,\n * `theme.dark` in dark mode. Resolves the theme via `ThemeContext` so\n * any ancestor `<ThemeProvider theme={...}>` flows through. With no\n * provider in the tree, the default Nori palette (teal) is used.\n *\n * Use this **inside a component** when you need a hex value for a React\n * Native `style` prop (`backgroundColor`, `borderColor`, etc.).\n *\n * Note: className-based styles (e.g. `bg-semantic-interactive-primary`)\n * compile against the @nori-ui/tokens palette at build time and don't\n * follow `<ThemeProvider>` overrides today. Inline styles via this hook\n * always do — and inline beats class on CSS specificity, so the visible\n * color you see is whatever the hook resolves to. CSS-variable theming\n * for the className path is a planned follow-up.\n */\nexport function useThemeColors(): Theme {\n const scheme = useColorScheme();\n const themePair = useContext(ThemeContext);\n return scheme === 'dark' ? themePair.dark : themePair.light;\n}\n","// cn — class-name merger. clsx-compatible shape.\n//\n// Intentionally does NOT deduplicate Tailwind conflicts (e.g. \"text-sm text-lg\").\n// That's `tailwind-merge`'s job; we defer adding it until a component actually\n// needs it, to keep the core tree-shakable and the runtime zero-dep.\n\nexport type ClassInput =\n | string\n | number\n | boolean\n | null\n | undefined\n | ClassInput[]\n | Record<string, boolean | number | null | undefined>;\n\nexport function cn(...inputs: ClassInput[]): string {\n const out: string[] = [];\n for (const input of inputs) {\n append(out, input);\n }\n return out.join(' ');\n}\n\nfunction append(out: string[], input: ClassInput): void {\n if (!input) {\n return;\n }\n if (typeof input === 'string') {\n if (input.length > 0) {\n out.push(input);\n }\n return;\n }\n if (typeof input === 'number') {\n return; // numbers are never class names\n }\n if (Array.isArray(input)) {\n for (const inner of input) {\n append(out, inner);\n }\n return;\n }\n if (typeof input === 'object') {\n for (const key of Object.keys(input)) {\n if (input[key]) {\n out.push(key);\n }\n }\n }\n}\n","'use client';\n\n// default-semantic-icons — minimal built-in icon placeholders for internal\n// library glyphs. Consumers can swap each one via the provider:\n//\n// <NoriProvider icons={{ checkmark: MyCheck, close: MyX }}>\n//\n// These defaults exist so the library renders usable UI out of the box even\n// when lucide-react(-native) or any other icon set is not installed. They are\n// NOT intended to compete with Lucide on style — override them in production.\n//\n// Web ships an SVG path identical to the historical lucide-style stroke. Native\n// ships a Unicode glyph wrapped in `<Text>` because raw `<svg><path>` doesn't\n// exist on the React Native runtime — the renderer treats lowercase host names\n// as native components and crashes with \"View config getter callback for\n// component `path` must be a function\". `react-native-svg` would solve this\n// but it's an extra peer dep this library deliberately doesn't require.\n//\n// Marked `'use client'` because the native render path reads\n// `useThemeColors()` to default the glyph color to the active theme's\n// text token when no explicit color is passed. Without this the native\n// glyph would render in RNText's default (black) regardless of scheme.\n\nimport type { ComponentType } from 'react';\nimport { Platform, Text as RNText } from 'react-native';\nimport { useThemeColors } from '../theme/use-theme-colors';\nimport type { IconComponentProps } from './icon';\n\ntype SemanticIcon = ComponentType<IconComponentProps>;\n\ntype IconRecipe = {\n /** SVG `path` data — used on the web. */\n path: string;\n /** Unicode glyph rendered in `<Text>` on native. */\n glyph: string;\n};\n\nconst isWeb = Platform.OS === 'web';\n\nconst make = ({ path, glyph }: IconRecipe): SemanticIcon =>\n function PlaceholderIcon({ size = 20, color = 'currentColor' }) {\n // Always call the hook — rules-of-hooks. The native branch is the\n // only consumer of the resolved colors, but pulling them on web is\n // a cheap context read.\n const colors = useThemeColors();\n if (isWeb) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d={path} />\n </svg>\n );\n }\n // 'currentColor' is a CSS keyword without meaning on native — RNText\n // would render in its inherent default (~black). Resolve it against\n // the active theme so the glyph stays readable in both schemes.\n const resolvedColor = color === 'currentColor' ? colors.semantic.text.default : color;\n return (\n <RNText\n accessibilityElementsHidden\n importantForAccessibility=\"no-hide-descendants\"\n style={{ fontSize: size, lineHeight: size, color: resolvedColor }}\n >\n {glyph}\n </RNText>\n );\n };\n\nexport type SemanticIcons = {\n checkmark: SemanticIcon;\n close: SemanticIcon;\n eye: SemanticIcon;\n eyeOff: SemanticIcon;\n chevronDown: SemanticIcon;\n chevronUp: SemanticIcon;\n alertTriangle: SemanticIcon;\n info: SemanticIcon;\n check: SemanticIcon;\n x: SemanticIcon;\n};\n\nexport const defaultSemanticIcons: SemanticIcons = {\n checkmark: make({ path: 'M20 6 9 17l-5-5', glyph: '✓' }),\n close: make({ path: 'M18 6 6 18 M6 6l12 12', glyph: '✕' }),\n eye: make({\n path: 'M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z',\n glyph: '👁',\n }),\n eyeOff: make({\n path: 'M17.94 17.94A10 10 0 0 1 2 12s3.5-7 10-7c2 0 3.8.6 5.4 1.5 M1 1l22 22',\n glyph: '🙈',\n }),\n chevronDown: make({ path: 'm6 9 6 6 6-6', glyph: '⌄' }),\n chevronUp: make({ path: 'm18 15-6-6-6 6', glyph: '⌃' }),\n alertTriangle: make({\n path: 'M12 9v4 M12 17h.01 M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z',\n glyph: '⚠',\n }),\n info: make({\n path: 'M12 8h.01 M11 12h1v4h1 M12 22C6.48 22 2 17.52 2 12 2 6.48 6.48 2 12 2c5.52 0 10 4.48 10 10 0 5.52-4.48 10-10 10z',\n glyph: 'ⓘ',\n }),\n check: make({ path: 'M20 6 9 17l-5-5', glyph: '✓' }),\n x: make({ path: 'M18 6 6 18 M6 6l12 12', glyph: '✕' }),\n};\n","// composeRefs — merges multiple React refs (callback or object) into a single callback.\n// Derived from Radix UI's approach; reimplemented here so we don't take a Radix dependency.\n\nimport type { MutableRefObject, Ref, RefCallback } from 'react';\n\ntype PossibleRef<T> = Ref<T> | undefined;\n\nexport function composeRefs<T>(...refs: Array<PossibleRef<T>>): RefCallback<T> {\n return (node: T | null) => {\n for (const ref of refs) {\n if (ref == null) {\n continue;\n }\n if (typeof ref === 'function') {\n ref(node);\n } else {\n // React's MutableRefObject typing — we assign .current directly.\n (ref as MutableRefObject<T | null>).current = node;\n }\n }\n };\n}\n","import type { CSSProperties, ReactElement, Ref } from 'react';\nimport { Children, cloneElement, forwardRef, isValidElement } from 'react';\nimport { composeRefs } from './compose-refs';\n\ntype AnyProps = Record<string, unknown>;\n\nexport type SlotProps = {\n children?: React.ReactNode;\n} & AnyProps;\n\nexport const Slot = forwardRef<unknown, SlotProps>(function Slot(props, forwardedRef) {\n const { children, ...slotProps } = props;\n\n if (!isValidElement(children)) {\n return null;\n }\n\n // Assert that children is a single React element with props — we've narrowed above.\n const child = Children.only(children) as ReactElement<AnyProps> & { ref?: Ref<unknown> };\n const merged = mergeProps(slotProps, child.props);\n\n // Merge refs: Slot's forwarded ref + the child's own ref (if any).\n const childRef = (child as unknown as { ref?: Ref<unknown> }).ref;\n if (forwardedRef || childRef) {\n (merged as AnyProps).ref = composeRefs(forwardedRef, childRef);\n }\n\n return cloneElement(child, merged);\n});\nSlot.displayName = 'Slot';\n\nfunction mergeProps(outer: AnyProps, inner: AnyProps): AnyProps {\n // Inner (child) wins for everything except: className (concatenated), style (merged), and\n // event handlers (composed — outer runs first, then inner).\n const merged: AnyProps = { ...outer };\n\n for (const key of Object.keys(inner)) {\n const outerValue = outer[key];\n const innerValue = inner[key];\n\n if (key === 'className' || key === 'class') {\n merged[key] = joinClass(outerValue, innerValue);\n continue;\n }\n\n if (key === 'style') {\n merged[key] = {\n ...(outerValue as CSSProperties | undefined),\n ...(innerValue as CSSProperties | undefined),\n };\n continue;\n }\n\n if (isEventHandler(key, outerValue, innerValue)) {\n merged[key] = composeHandlers(outerValue as Fn, innerValue as Fn);\n continue;\n }\n\n merged[key] = innerValue;\n }\n\n return merged;\n}\n\nfunction joinClass(outer: unknown, inner: unknown): string | undefined {\n const a = typeof outer === 'string' ? outer : '';\n const b = typeof inner === 'string' ? inner : '';\n const joined = [a, b].filter(Boolean).join(' ');\n return joined.length > 0 ? joined : undefined;\n}\n\ntype Fn = (...args: unknown[]) => unknown;\n\nfunction isEventHandler(key: string, outer: unknown, inner: unknown): boolean {\n if (!key.startsWith('on') || key.length < 3) {\n return false;\n }\n if (key[2] !== key[2]?.toUpperCase()) {\n return false;\n }\n return typeof outer === 'function' && typeof inner === 'function';\n}\n\nfunction composeHandlers(outer: Fn, inner: Fn): Fn {\n return (...args: unknown[]) => {\n outer(...args);\n inner(...args);\n };\n}\n","'use client';\n\n// Web variant of the dialog blur backdrop. On web, the overlay's CSS\n// `backdrop-filter: blur(...)` (set directly on the DOM node by\n// Dialog/AlertDialog) handles the frosted look — there's nothing extra\n// to render here.\n//\n// Metro picks `blur-backdrop.native.tsx` for native bundles, which\n// statically imports `expo-blur`. The split keeps the static import\n// off the web bundle so web consumers don't drag a native module\n// through their build.\n\nimport type { ReactElement } from 'react';\nimport type { ViewProps } from 'react-native';\n\nexport type BlurBackdropProps = {\n /** 0..100. Maps to expo-blur's `intensity`. */\n intensity?: number;\n /** Match the active color scheme so the blur tint reads naturally. */\n tint?: 'light' | 'dark' | 'default';\n /** Style passed straight through (typically StyleSheet.absoluteFill). */\n style?: ViewProps['style'];\n};\n\nexport const BlurBackdrop = (_props: BlurBackdropProps): ReactElement | null => {\n return null;\n};\n","'use client';\n\nimport {\n createContext,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport type { ViewStyle } from 'react-native';\nimport { Modal, Platform, Pressable, Text as RNText, StyleSheet, View } from 'react-native';\nimport { defaultSemanticIcons } from '../../icons/default-semantic-icons';\nimport { Slot } from '../../slot';\nimport { px } from '../../theme/px';\nimport { useColorScheme } from '../../theme/use-color-scheme';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\nimport { BlurBackdrop } from './blur-backdrop';\n\ntype DialogContextValue = {\n open: boolean;\n setOpen: (next: boolean) => void;\n titleId: string;\n descriptionId: string;\n triggerRef: { current: HTMLElement | null };\n};\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nconst useDialogContext = (label: string): DialogContextValue => {\n const ctx = useContext(DialogContext);\n if (!ctx) {\n throw new Error(`<${label}> must be rendered inside a <Dialog>.`);\n }\n return ctx;\n};\n\nexport type DialogProps = {\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. @defaultValue false */\n defaultOpen?: boolean;\n /** Fires with the new open state. */\n onOpenChange?: (open: boolean) => void;\n children?: ReactNode;\n};\n\n/**\n * Modal dialog. Owns open state and provides context for `DialogTrigger`,\n * `DialogContent`, `DialogTitle`, `DialogDescription`, and `DialogClose`.\n *\n * Behavior:\n * - Click the trigger to open. Click outside the content, press Escape,\n * or click an explicit close to dismiss.\n * - Focus is trapped inside the content while open (web). On close, focus\n * returns to whatever opened the dialog.\n * - Background scrolling is locked while open (web).\n *\n * Cross-platform: uses RN `<Modal>` as the visibility/portal primitive. On\n * web, additional focus-trap / scroll-lock / Escape-key effects layer on\n * top via the platform check inside `DialogContent`.\n */\nconst DialogRoot = ({ open, defaultOpen = false, onOpenChange, children }: DialogProps) => {\n const [inner, setInner] = useState<boolean>(defaultOpen);\n const isControlled = open !== undefined;\n const current = isControlled ? open : inner;\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setInner(next);\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n const baseId = useId();\n const triggerRef = useRef<HTMLElement | null>(null);\n\n const ctxValue: DialogContextValue = {\n open: current,\n setOpen,\n titleId: `${baseId}-title`,\n descriptionId: `${baseId}-description`,\n triggerRef,\n };\n\n return <DialogContext.Provider value={ctxValue}>{children}</DialogContext.Provider>;\n};\n\nexport type DialogTriggerProps = {\n /** Render the child as the trigger (Slot pattern). Default true — pass `false` for an inline button. */\n asChild?: boolean;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/**\n * Element that opens the dialog when activated. Uses `asChild` by default so\n * any element (Button, Link, custom Pressable) becomes the trigger.\n */\nexport const DialogTrigger = ({ asChild = true, children, className, testID }: DialogTriggerProps) => {\n const ctx = useDialogContext('DialogTrigger');\n const onPress = useCallback(() => ctx.setOpen(true), [ctx]);\n\n if (asChild && isValidElement(children)) {\n const child = children as ReactElement<Record<string, unknown>>;\n // Pass both onClick (web HTML buttons) AND onPress (RN Pressable /\n // our own Button) so the trigger fires regardless of which event\n // model the wrapped child speaks. The child's existing handler\n // runs first, then we open.\n const fire = (existing: ((e: unknown) => void) | undefined) => (event: unknown) => {\n existing?.(event);\n ctx.setOpen(true);\n };\n return (\n <Slot\n ref={(node: HTMLElement | null) => {\n ctx.triggerRef.current = node;\n }}\n onClick={fire(child.props.onClick as ((e: unknown) => void) | undefined)}\n onPress={fire(child.props.onPress as ((e: unknown) => void) | undefined)}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n {...(className !== undefined ? { className } : {})}\n >\n {child}\n </Slot>\n );\n }\n\n return (\n <Pressable\n ref={(node) => {\n ctx.triggerRef.current = node as unknown as HTMLElement | null;\n }}\n onPress={onPress}\n {...(testID !== undefined ? { testID } : {})}\n {...(className !== undefined ? { className } : {})}\n >\n {wrapStringChildren(children)}\n </Pressable>\n );\n};\n\n// On native, raw strings rendered as children of a non-Text component\n// throw \"Text strings must be rendered within a <Text> component\". On\n// web, react-native-web silently tolerates it. Wrap any string/number\n// children in an RNText so the same JSX renders cleanly on both\n// platforms. Non-string children are passed through unchanged.\nfunction wrapStringChildren(children: ReactNode): ReactNode {\n if (typeof children === 'string' || typeof children === 'number') {\n return <RNText>{children}</RNText>;\n }\n return children;\n}\n\n// Scrim + blur target values — applied at the entered state on web,\n// always on as a flat scrim on native (RN doesn't have backdrop-filter\n// and the native shim would be an extra peer dep for vanishingly little\n// visual gain on a v0 component).\n// 24% scrim + 4px blur — strong enough to push the page back but the\n// content underneath is still legible. Earlier 32%/8px felt like a frosted\n// glass slab that completely obscured the page; this lets the page show\n// through as \"behind glass, slightly out of focus.\"\nconst SCRIM_COLOR = 'rgba(0, 0, 0, 0.24)';\nconst BLUR_AMOUNT = 4;\n\n// Static overlay layout — alignment, fixed positioning. The animatable\n// bits (scrim color, backdrop-filter blur) live in a useEffect inside\n// the component that pokes them onto the DOM ref directly so rn-web's\n// style filter can't strip the non-RN keys (backdropFilter,\n// transitionProperty). On web the styles start at blur(0px) +\n// transparent and transition to the target values on the next frame.\n//\n// Why not put blur(8px) here as a constant: when blur is applied to a\n// layer that's mid-fade (e.g. RN Modal's animationType=\"fade\" fades\n// opacity from 0 → 1), Safari and Chromium GPU-composite the layer\n// without rendering backdrop-filter — so the blur appears to \"snap in\"\n// at the end of the fade. Animating blur explicitly via our own\n// transition (and disabling the Modal's fade on web) avoids the snap.\nconst OVERLAY_LAYOUT_BASE: ViewStyle = {\n position: Platform.OS === 'web' ? ('fixed' as unknown as 'absolute') : 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n // On native the BlurBackdrop sibling renders BEHIND this overlay and\n // already provides dim + frosted-glass via expo-blur's `tint`/`intensity`.\n // Painting SCRIM_COLOR on top would mask the blur entirely (the user\n // sees only a flat tint), so the overlay stays transparent and the\n // BlurView is the dominant visual on native.\n ...(Platform.OS === 'web' ? ({ zIndex: 50 } as ViewStyle) : { backgroundColor: 'transparent' }),\n};\n\n// Layout / animation only — theme-driven dimensions are merged inside\n// DialogContent below.\nconst CONTENT_LAYOUT_BASE: ViewStyle = {\n width: '100%',\n maxWidth: 480, // component-density literal — not from theme\n ...(Platform.OS === 'web'\n ? ({\n boxShadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)',\n } as ViewStyle)\n : { elevation: 24 }),\n};\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nexport type DialogContentProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/**\n * The visible dialog surface — overlay + centered card. Renders only when\n * the parent `Dialog` is open. On web: traps focus inside, locks body\n * scroll, and dismisses on Escape or overlay click.\n */\nexport const DialogContent = ({ children, className, testID }: DialogContentProps) => {\n const ctx = useDialogContext('DialogContent');\n const colors = useThemeColors();\n const scheme = useColorScheme();\n const contentRef = useRef<HTMLDivElement | null>(null);\n const overlayStyle: ViewStyle = {\n ...OVERLAY_LAYOUT_BASE,\n padding: px(colors.spacing['4']),\n };\n const contentStyle: ViewStyle = {\n ...CONTENT_LAYOUT_BASE,\n borderRadius: px(colors.radius.xl),\n padding: px(colors.spacing['6']),\n gap: px(colors.spacing['3']),\n };\n // Scale-in: render at scale(0.96) + opacity 0 first, flip to 1 in a\n // useEffect so the CSS transition has a frame to animate from. Web\n // only; native uses `Modal animationType=\"fade\"` which is enough.\n const [entered, setEntered] = useState(false);\n useEffect(() => {\n if (Platform.OS !== 'web') {\n setEntered(true);\n return;\n }\n if (!ctx.open) {\n setEntered(false);\n return;\n }\n const id = requestAnimationFrame(() => setEntered(true));\n return () => cancelAnimationFrame(id);\n }, [ctx.open]);\n const enterStyle: ViewStyle =\n Platform.OS === 'web'\n ? ({\n opacity: entered ? 1 : 0,\n transform: [{ scale: entered ? 1 : 0.96 }],\n transitionProperty: 'opacity, transform',\n transitionDuration: '150ms',\n transitionTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',\n } as ViewStyle)\n : {};\n\n // Overlay's scrim + backdrop-filter share the same `entered` flag as\n // the content card, so the blur starts at 0 and the scrim at 0% on\n // the first paint, then both transition to their target values at the\n // next frame — same 150ms curve as the card. The blur duration is\n // bumped slightly (200ms) so it lands a hair AFTER the scrim instead\n // of slamming to full strength immediately, which reads more natural.\n //\n // We reach for a direct DOM ref + .style assignments here rather than\n // pass the styles through `<Pressable style={...}>`. Reason: rn-web's\n // style filter drops keys it doesn't recognize as RN style props —\n // and `backdropFilter`, `transitionProperty`, etc. fall through that\n // filter, taking the whole style fragment with them. Native gets a\n // flat scrim with no blur; RN doesn't have backdrop-filter and the\n // native shim would be an extra peer dep for negligible gain.\n const overlayDomRef = useRef<HTMLElement | null>(null);\n useEffect(() => {\n if (Platform.OS !== 'web') {\n return;\n }\n const node = overlayDomRef.current;\n if (!node) {\n return;\n }\n // First paint: kick off transparent + zero blur so the next\n // assignment animates from 0 to target. We only need this on\n // the very first frame — the inline style on second frame\n // overwrites these.\n node.style.transitionProperty = 'background-color, backdrop-filter, -webkit-backdrop-filter';\n node.style.transitionDuration = '150ms, 200ms, 200ms';\n node.style.transitionTimingFunction = 'ease-out';\n if (entered) {\n node.style.backgroundColor = SCRIM_COLOR;\n node.style.backdropFilter = `blur(${BLUR_AMOUNT}px)`;\n node.style.setProperty('-webkit-backdrop-filter', `blur(${BLUR_AMOUNT}px)`);\n } else {\n node.style.backgroundColor = 'rgba(0, 0, 0, 0)';\n node.style.backdropFilter = 'blur(0px)';\n node.style.setProperty('-webkit-backdrop-filter', 'blur(0px)');\n }\n }, [entered]);\n\n // Web-only side effects: focus trap, scroll lock, Escape close,\n // initial focus on the first focusable inside the dialog. RN Modal\n // handles its own focus model on native, so the platform check keeps\n // these out of the native render path.\n useEffect(() => {\n if (!ctx.open) {\n return;\n }\n if (Platform.OS !== 'web') {\n return;\n }\n if (typeof document === 'undefined') {\n return;\n }\n\n const previouslyFocused = document.activeElement as HTMLElement | null;\n\n // Lock body scroll. Preserve any previously set inline style so\n // we don't accidentally clobber a consumer's lock from elsewhere.\n const prevBodyOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n\n // Move focus into the dialog. Prefer the first focusable element;\n // if there isn't one, focus the dialog container itself so it\n // receives the keydown events.\n const focusFirst = () => {\n const node = contentRef.current;\n if (!node) {\n return;\n }\n const focusable = node.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\n const first = focusable[0];\n if (first) {\n first.focus();\n } else {\n node.setAttribute('tabindex', '-1');\n node.focus();\n }\n };\n focusFirst();\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n ctx.setOpen(false);\n return;\n }\n if (event.key !== 'Tab') {\n return;\n }\n const node = contentRef.current;\n if (!node) {\n return;\n }\n const focusable = Array.from(node.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => el.offsetParent !== null || el === document.activeElement\n );\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (!first || !last) {\n return;\n }\n if (event.shiftKey) {\n if (document.activeElement === first || !node.contains(document.activeElement)) {\n event.preventDefault();\n last.focus();\n }\n } else if (document.activeElement === last) {\n event.preventDefault();\n first.focus();\n }\n };\n document.addEventListener('keydown', onKeyDown);\n\n return () => {\n document.removeEventListener('keydown', onKeyDown);\n document.body.style.overflow = prevBodyOverflow;\n // Restore focus to whatever opened the dialog (the trigger),\n // falling back to the previously focused node if the trigger\n // is gone.\n const restoreTo = ctx.triggerRef.current ?? previouslyFocused;\n restoreTo?.focus?.();\n };\n }, [ctx.open, ctx.setOpen, ctx.triggerRef]);\n\n const onOverlayPress = useCallback(() => ctx.setOpen(false), [ctx]);\n\n return (\n <Modal\n visible={ctx.open}\n transparent\n // Web: 'none' so RN's built-in fade doesn't fight our own\n // overlay/content transitions (its layer-level fade caused\n // backdrop-filter to \"snap in\" at the end). Native: 'fade'\n // is what users expect on iOS/Android and we don't have a\n // CSS transition path there anyway.\n animationType={Platform.OS === 'web' ? 'none' : 'fade'}\n onRequestClose={() => ctx.setOpen(false)}\n >\n {/* Native blur layer. Renders nothing on web (the overlay's\n CSS backdrop-filter handles it) and renders nothing if\n expo-blur isn't installed (graceful degrade — the scrim\n Pressable below still dims the background). */}\n <BlurBackdrop intensity={60} tint={scheme === 'dark' ? 'dark' : 'light'} style={StyleSheet.absoluteFill} />\n <Pressable\n accessibilityRole=\"none\"\n aria-hidden={true}\n ref={(node) => {\n overlayDomRef.current = node as unknown as HTMLElement | null;\n }}\n style={overlayStyle}\n onPress={onOverlayPress}\n >\n <Pressable\n onPress={(event) => event.stopPropagation?.()}\n ref={(node) => {\n contentRef.current = node as unknown as HTMLDivElement | null;\n }}\n role=\"dialog\"\n accessibilityRole=\"none\"\n aria-modal={true}\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n {...(testID !== undefined ? { testID } : {})}\n className={cn('w-full max-w-md rounded-xl bg-semantic-background-elevated p-6 gap-3', className)}\n style={[contentStyle, { backgroundColor: colors.semantic.background.elevated }, enterStyle]}\n >\n <View\n className=\"flex-col gap-1.5\"\n style={{ flexDirection: 'column', gap: px(colors.spacing['2']) - 2 }}\n >\n {children}\n </View>\n </Pressable>\n </Pressable>\n </Modal>\n );\n};\n\nexport type DialogTextProps = {\n children?: ReactNode;\n className?: string;\n};\n\n/** Heading inside DialogContent. Wires `aria-labelledby`. */\nexport const DialogTitle = ({ children, className }: DialogTextProps) => {\n const ctx = useDialogContext('DialogTitle');\n const colors = useThemeColors();\n return (\n <RNText\n nativeID={ctx.titleId}\n id={ctx.titleId}\n role=\"heading\"\n aria-level={2}\n className={cn('text-lg font-semibold text-semantic-text-default', className)}\n style={{\n color: colors.semantic.text.default,\n fontFamily: colors.fontFamily.display,\n fontSize: px(colors.fontSize.lg),\n fontWeight: colors.fontWeight.semibold as '600',\n }}\n >\n {children}\n </RNText>\n );\n};\n\n/** Subtitle / description inside DialogContent. Wires `aria-describedby`. */\nexport const DialogDescription = ({ children, className }: DialogTextProps) => {\n const ctx = useDialogContext('DialogDescription');\n const colors = useThemeColors();\n return (\n <RNText\n nativeID={ctx.descriptionId}\n id={ctx.descriptionId}\n className={cn('text-sm text-semantic-text-muted', className)}\n style={{\n color: colors.semantic.text.muted,\n fontFamily: colors.fontFamily.body,\n fontSize: px(colors.fontSize.sm),\n lineHeight: px(colors.fontSize.sm) * Number(colors.lineHeight.normal),\n }}\n >\n {children}\n </RNText>\n );\n};\n\nexport type DialogCloseProps = {\n /** Render the child as the close button (Slot pattern). Default true. */\n asChild?: boolean;\n children?: ReactNode;\n className?: string;\n testID?: string;\n accessibilityLabel?: string;\n};\n\n/**\n * Element that closes the dialog when activated. With `asChild` (default),\n * wraps the child. Without `asChild`, renders a default ✕ button — useful\n * for the canonical top-right corner close.\n */\nexport const DialogClose = ({\n asChild = true,\n children,\n className,\n testID,\n accessibilityLabel = 'Close',\n}: DialogCloseProps) => {\n const ctx = useDialogContext('DialogClose');\n const colors = useThemeColors();\n const onPress = useCallback(() => ctx.setOpen(false), [ctx]);\n\n if (asChild && isValidElement(children)) {\n const child = children as ReactElement<Record<string, unknown>>;\n // Same dual-event story as DialogTrigger: pass both onClick (web\n // button) and onPress (RN Pressable / our own Button) so the\n // wrapped element fires regardless of its event model.\n const fire = (existing: ((e: unknown) => void) | undefined) => (event: unknown) => {\n existing?.(event);\n ctx.setOpen(false);\n };\n return (\n <Slot\n onClick={fire(child.props.onClick as ((e: unknown) => void) | undefined)}\n onPress={fire(child.props.onPress as ((e: unknown) => void) | undefined)}\n {...(testID !== undefined ? { 'data-testid': testID } : {})}\n {...(className !== undefined ? { className } : {})}\n >\n {child}\n </Slot>\n );\n }\n\n if (children !== undefined) {\n return (\n <Pressable\n onPress={onPress}\n role=\"button\"\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n aria-label={accessibilityLabel}\n {...(testID !== undefined ? { testID } : {})}\n {...(className !== undefined ? { className } : {})}\n >\n {wrapStringChildren(children)}\n </Pressable>\n );\n }\n\n return (\n <Pressable\n onPress={onPress}\n role=\"button\"\n accessibilityRole=\"button\"\n accessibilityLabel={accessibilityLabel}\n aria-label={accessibilityLabel}\n {...(testID !== undefined ? { testID } : {})}\n className={cn('absolute right-3 top-3 w-8 h-8 items-center justify-center rounded-md', className)}\n style={{\n position: 'absolute',\n right: px(colors.spacing['3']),\n top: px(colors.spacing['3']),\n // 32×32 close hit target — component-density literal — not from theme\n width: 32,\n height: 32,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: px(colors.radius.md),\n }}\n >\n <defaultSemanticIcons.close size={18} color={colors.semantic.text.muted} />\n </Pressable>\n );\n};\n\nexport type DialogFooterProps = {\n children?: ReactNode;\n className?: string;\n};\n\n/** Convenience row for dialog action buttons (right-aligned). */\nexport const DialogFooter = ({ children, className }: DialogFooterProps) => {\n const colors = useThemeColors();\n return (\n <View\n className={cn('mt-4 flex-row items-center justify-end gap-2', className)}\n style={{\n marginTop: px(colors.spacing['4']),\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n gap: px(colors.spacing['2']),\n }}\n >\n {children}\n </View>\n );\n};\n\n/**\n * Public `Dialog` value — the root function plus its `.Trigger`, `.Content`,\n * `.Title`, `.Description`, `.Footer`, and `.Close` static members. `Object.assign`\n * produces a value whose inferred type carries the static properties, so `.d.ts`\n * consumers can write `<Dialog.Content>` without a separate import.\n */\nexport const Dialog = Object.assign(DialogRoot, {\n Trigger: DialogTrigger,\n Content: DialogContent,\n Title: DialogTitle,\n Description: DialogDescription,\n Footer: DialogFooter,\n Close: DialogClose,\n});\n","'use client';\n\n/**\n * Command — cmdk-style command palette (compound component).\n *\n * Anatomy:\n * Command Root — owns open state and filter query.\n * Command.Trigger Element that opens the palette. Default asChild.\n * Command.Dialog The modal surface (search input + item list).\n * Command.Empty Shown when no items match the current query.\n * Command.Group Labelled section of items.\n * Command.Item Selectable action/navigation entry.\n * Command.Shortcut Inline keyboard shortcut hint (right-aligned).\n *\n * Web behaviour:\n * - Global ⌘K / Ctrl+K shortcut opens the palette.\n * - Search input filters items by substring (case-insensitive).\n * - Escape closes (inherited from Dialog).\n *\n * Native behaviour:\n * - Trigger tap opens the palette (no global keyboard shortcut).\n * - Same filtering logic; scrollable list.\n *\n * Implementation note:\n * Reuses the Dialog primitive as the modal surface so we inherit focus\n * trap, scroll lock, backdrop blur, and Escape-to-close for free.\n */\n\nimport {\n Children,\n cloneElement,\n createContext,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { Platform, Pressable, Text as RNText, TextInput as RNTextInput, ScrollView, View } from 'react-native';\nimport { px } from '../../theme/px';\nimport { useThemeColors } from '../../theme/use-theme-colors';\nimport { cn } from '../../utils/cn';\nimport { Dialog } from '../Dialog/Dialog';\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ntype CommandContextValue = {\n open: boolean;\n setOpen: (next: boolean) => void;\n query: string;\n setQuery: (q: string) => void;\n};\n\nconst CommandContext = createContext<CommandContextValue | null>(null);\n\nfunction useCommandContext(caller: string): CommandContextValue {\n const ctx = useContext(CommandContext);\n if (!ctx) {\n throw new Error(`<${caller}> must be rendered inside <Command>.`);\n }\n return ctx;\n}\n\n// ---------------------------------------------------------------------------\n// Root\n// ---------------------------------------------------------------------------\n\nexport type CommandProps = {\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. @defaultValue false */\n defaultOpen?: boolean;\n /** Fires with the new open state. */\n onOpenChange?: (open: boolean) => void;\n children?: ReactNode;\n};\n\n/**\n * Root of the Command compound. Owns open state and filter query.\n * Registers the global ⌘K / Ctrl+K shortcut on web.\n */\nconst CommandRoot = ({ open, defaultOpen = false, onOpenChange, children }: CommandProps) => {\n const [inner, setInner] = useState<boolean>(defaultOpen);\n const isControlled = open !== undefined;\n const current = isControlled ? (open as boolean) : inner;\n const [query, setQuery] = useState('');\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setInner(next);\n }\n if (!next) {\n // Reset query on close so the palette starts fresh next time.\n setQuery('');\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange]\n );\n\n // Global ⌘K / Ctrl+K on web only\n useEffect(() => {\n if (Platform.OS !== 'web') {\n return;\n }\n const handler = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === 'k') {\n e.preventDefault();\n setOpen(!current);\n }\n };\n window.addEventListener('keydown', handler);\n return () => window.removeEventListener('keydown', handler);\n }, [current, setOpen]);\n\n const ctxValue: CommandContextValue = {\n open: current,\n setOpen,\n query,\n setQuery,\n };\n\n return <CommandContext.Provider value={ctxValue}>{children}</CommandContext.Provider>;\n};\n\n// ---------------------------------------------------------------------------\n// Trigger\n// ---------------------------------------------------------------------------\n\nexport type CommandTriggerProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/**\n * Element that opens the command palette when activated.\n * On web it also receives aria-haspopup=\"dialog\" and aria-expanded.\n */\nconst CommandTrigger = ({ children, className, testID }: CommandTriggerProps) => {\n const ctx = useCommandContext('Command.Trigger');\n\n const open = () => ctx.setOpen(true);\n\n if (Platform.OS === 'web') {\n if (isValidElement(children)) {\n const child = children as ReactElement<{\n onClick?: (e: unknown) => void;\n onPress?: (e: unknown) => void;\n 'aria-haspopup'?: string;\n 'aria-expanded'?: string | boolean;\n }>;\n const existingOnClick = child.props.onClick;\n const existingOnPress = child.props.onPress;\n const fire = (e: unknown) => {\n existingOnClick?.(e);\n existingOnPress?.(e);\n open();\n };\n // Only forward onPress if the child already has it (i.e. it's a RN\n // Pressable-style element). Plain HTML elements (button, a, etc.)\n // don't have onPress and React DOM warns when it receives it.\n const extraProps: Record<string, unknown> = {\n onClick: fire,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': ctx.open ? 'true' : 'false',\n };\n if (existingOnPress !== undefined) {\n extraProps.onPress = fire;\n }\n return cloneElement(child, extraProps as Parameters<typeof cloneElement>[1]);\n }\n return (\n <button\n type=\"button\"\n data-testid={testID}\n className={cn('nori-command-trigger', className)}\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n onClick={open}\n >\n {children}\n </button>\n );\n }\n\n // Native\n return (\n <Pressable testID={testID} onPress={open} accessibilityRole=\"button\">\n {children}\n </Pressable>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Dialog (modal surface)\n// ---------------------------------------------------------------------------\n\nexport type CommandDialogProps = {\n /** Placeholder text for the search input. @defaultValue 'Type a command or search…' */\n placeholder?: string;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/**\n * The modal surface of the command palette.\n *\n * Wraps Dialog.Content and adds a search TextInput above the item list.\n * Children are typically Command.Empty and Command.Group elements.\n */\nconst CommandDialogInner = ({\n placeholder = 'Type a command or search…',\n children,\n className,\n testID,\n}: CommandDialogProps) => {\n const ctx = useCommandContext('Command.Dialog');\n const colors = useThemeColors();\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Auto-focus search input when the dialog opens\n useEffect(() => {\n if (!ctx.open) {\n return;\n }\n if (Platform.OS !== 'web') {\n return;\n }\n const id = setTimeout(() => inputRef.current?.focus(), 50);\n return () => clearTimeout(id);\n }, [ctx.open]);\n\n const contentProps =\n testID !== undefined\n ? { testID, className: cn('nori-command-dialog', className) }\n : { className: cn('nori-command-dialog', className) };\n\n return (\n <Dialog open={ctx.open} onOpenChange={ctx.setOpen}>\n <Dialog.Content {...contentProps}>\n {Platform.OS === 'web' ? (\n <div\n style={{\n maxHeight: '80vh',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n minWidth: 360,\n }}\n >\n {/* Search bar */}\n <div\n style={{\n padding: `${colors.spacing['3']}px ${colors.spacing['4']}px`,\n borderBottom: `1px solid ${colors.semantic.border.default}`,\n display: 'flex',\n alignItems: 'center',\n gap: colors.spacing['2'],\n }}\n >\n {/* Magnifier icon — inline SVG; no extra dep */}\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{ color: colors.semantic.text.muted, flexShrink: 0 }}\n >\n <path\n d=\"M6.5 11a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9ZM14 14l-3-3\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <input\n ref={inputRef}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={true}\n aria-autocomplete=\"list\"\n autoComplete=\"off\"\n spellCheck={false}\n placeholder={placeholder}\n value={ctx.query}\n onChange={(e) => ctx.setQuery(e.target.value)}\n style={\n {\n flex: 1,\n fontSize: 15,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n color: colors.semantic.text.default,\n width: '100%',\n } as React.CSSProperties\n }\n />\n </div>\n {/* Items list */}\n <div role=\"listbox\" style={{ overflowY: 'auto', flex: 1, maxHeight: 400 }}>\n {children}\n </div>\n </div>\n ) : (\n <View style={{ flex: 1 }}>\n <RNTextInput\n placeholder={placeholder}\n placeholderTextColor={colors.semantic.text.muted}\n value={ctx.query}\n onChangeText={ctx.setQuery}\n autoFocus={ctx.open}\n style={{\n fontSize: 15,\n color: colors.semantic.text.default,\n paddingHorizontal: px(colors.spacing['4']),\n paddingVertical: px(colors.spacing['3']),\n borderBottomWidth: 1,\n borderBottomColor: colors.semantic.border.default,\n }}\n />\n <ScrollView style={{ maxHeight: 400 }}>{children}</ScrollView>\n </View>\n )}\n </Dialog.Content>\n </Dialog>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Empty\n// ---------------------------------------------------------------------------\n\nexport type CommandEmptyProps = {\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/**\n * Shown when the current query has no matching Command.Item descendants.\n */\nconst CommandEmpty = ({ children, className, testID }: CommandEmptyProps) => {\n const colors = useThemeColors();\n\n if (Platform.OS === 'web') {\n return (\n <div\n data-testid={testID}\n role=\"status\"\n aria-live=\"polite\"\n className={cn('nori-command-empty', className)}\n style={\n {\n paddingTop: colors.spacing['6'],\n paddingBottom: colors.spacing['6'],\n paddingLeft: colors.spacing['4'],\n paddingRight: colors.spacing['4'],\n textAlign: 'center',\n color: colors.semantic.text.muted,\n fontSize: 14,\n } as React.CSSProperties\n }\n >\n {children}\n </div>\n );\n }\n return (\n <View\n testID={testID}\n style={{\n paddingVertical: px(colors.spacing['6']),\n paddingHorizontal: px(colors.spacing['4']),\n alignItems: 'center',\n }}\n >\n <RNText style={{ color: colors.semantic.text.muted, fontSize: 14 }}>\n {typeof children === 'string' ? children : 'No results found.'}\n </RNText>\n </View>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Group\n// ---------------------------------------------------------------------------\n\nexport type CommandGroupProps = {\n /** Section heading. */\n heading?: string;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/**\n * Labelled group of Command.Item elements.\n * Hides itself when all its items are filtered out.\n */\nconst CommandGroup = ({ heading, children, className, testID }: CommandGroupProps) => {\n const ctx = useCommandContext('Command.Group');\n const groupId = useId();\n const colors = useThemeColors();\n\n const visibleCount = countVisibleItems(children, ctx.query);\n\n if (visibleCount === 0) {\n return null;\n }\n\n if (Platform.OS === 'web') {\n return (\n <section\n data-testid={testID}\n aria-labelledby={heading ? `${groupId}-heading` : undefined}\n className={cn('nori-command-group', className)}\n >\n {heading && (\n <div\n id={`${groupId}-heading`}\n style={\n {\n padding: `${colors.spacing['2']}px ${colors.spacing['4']}px ${colors.spacing['1']}px`,\n fontSize: 11,\n fontWeight: 600,\n letterSpacing: '0.05em',\n textTransform: 'uppercase',\n color: colors.semantic.text.muted,\n } as React.CSSProperties\n }\n >\n {heading}\n </div>\n )}\n <div style={{ paddingBottom: colors.spacing['2'] }}>{children}</div>\n </section>\n );\n }\n\n return (\n <View testID={testID}>\n {heading && (\n <View\n style={{\n paddingHorizontal: px(colors.spacing['4']),\n paddingTop: px(colors.spacing['2']),\n paddingBottom: px(colors.spacing['1']),\n }}\n >\n <RNText\n style={{\n fontSize: 11,\n fontWeight: '600',\n textTransform: 'uppercase',\n color: colors.semantic.text.muted,\n letterSpacing: 0.5,\n }}\n >\n {heading}\n </RNText>\n </View>\n )}\n {children}\n </View>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Item\n// ---------------------------------------------------------------------------\n\nexport type CommandItemProps = {\n /** Fires when the item is selected (click or Enter). */\n onSelect?: () => void;\n /** Disable the item. @defaultValue false */\n disabled?: boolean;\n children?: ReactNode;\n className?: string;\n testID?: string;\n};\n\n/**\n * Selectable command item. Filters itself out when the current query does\n * not match its text content.\n */\nconst CommandItem = ({ onSelect, disabled = false, children, className, testID }: CommandItemProps) => {\n const ctx = useCommandContext('Command.Item');\n const colors = useThemeColors();\n\n const text = extractText(children);\n const visible = matchesQuery(text, ctx.query);\n\n if (!visible) {\n return null;\n }\n\n const handleSelect = () => {\n if (disabled) {\n return;\n }\n onSelect?.();\n ctx.setOpen(false);\n };\n\n if (Platform.OS === 'web') {\n return (\n <div\n data-testid={testID}\n role=\"option\"\n aria-selected=\"false\"\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n className={cn('nori-command-item', className)}\n onClick={handleSelect}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSelect();\n }\n }}\n onMouseEnter={(e) => {\n if (!disabled) {\n (e.currentTarget as HTMLElement).style.background = `${colors.semantic.interactive.primary}14`;\n }\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLElement).style.background = 'transparent';\n }}\n onFocus={(e) => {\n if (!disabled) {\n (e.currentTarget as HTMLElement).style.background = `${colors.semantic.interactive.primary}14`;\n }\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLElement).style.background = 'transparent';\n }}\n style={\n {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: `${colors.spacing['2']}px ${colors.spacing['4']}px`,\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.5 : 1,\n fontSize: 14,\n color: colors.semantic.text.default,\n borderRadius: colors.radius.sm,\n margin: `0 ${colors.spacing['1']}px`,\n outline: 'none',\n } as React.CSSProperties\n }\n >\n {children}\n </div>\n );\n }\n\n return (\n <Pressable\n testID={testID}\n onPress={handleSelect}\n disabled={disabled}\n accessibilityRole=\"button\"\n style={({ pressed }: { pressed: boolean }) => ({\n flexDirection: 'row' as const,\n alignItems: 'center' as const,\n justifyContent: 'space-between' as const,\n paddingHorizontal: px(colors.spacing['4']),\n paddingVertical: px(colors.spacing['3']),\n opacity: disabled ? 0.5 : pressed ? 0.7 : 1,\n })}\n >\n {typeof children === 'string' ? (\n <RNText style={{ fontSize: 14, color: colors.semantic.text.default }}>{children}</RNText>\n ) : (\n children\n )}\n </Pressable>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Shortcut\n// ---------------------------------------------------------------------------\n\nexport type CommandShortcutProps = {\n children?: ReactNode;\n className?: string;\n};\n\n/**\n * Keyboard shortcut hint rendered right-aligned inside a Command.Item.\n */\nconst CommandShortcut = ({ children, className }: CommandShortcutProps) => {\n const colors = useThemeColors();\n\n if (Platform.OS === 'web') {\n return (\n <span\n aria-hidden=\"true\"\n className={cn('nori-command-shortcut', className)}\n style={{\n marginLeft: 'auto',\n fontSize: 12,\n color: colors.semantic.text.muted,\n letterSpacing: '0.05em',\n opacity: 0.7,\n }}\n >\n {children}\n </span>\n );\n }\n\n return (\n <RNText\n style={{\n fontSize: 12,\n color: colors.semantic.text.muted,\n opacity: 0.7,\n }}\n >\n {typeof children === 'string' ? children : null}\n </RNText>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Filter helpers\n// ---------------------------------------------------------------------------\n\n/** Extract concatenated text from a ReactNode tree for query matching. */\nfunction extractText(node: ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n if (Array.isArray(node)) {\n return node.map(extractText).join(' ');\n }\n if (isValidElement(node)) {\n const el = node as ReactElement<{ children?: ReactNode }>;\n return extractText(el.props.children);\n }\n return '';\n}\n\n/** Case-insensitive substring match. Empty query matches everything. */\nfunction matchesQuery(text: string, query: string): boolean {\n if (!query.trim()) {\n return true;\n }\n return text.toLowerCase().includes(query.toLowerCase().trim());\n}\n\n/**\n * Count how many Command.Item children would be visible for the given query.\n * Inspects direct CommandItem-shaped children only (duck-typed by `onSelect` prop).\n */\nfunction countVisibleItems(children: ReactNode, query: string): number {\n let count = 0;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) {\n return;\n }\n const props = child.props as Record<string, unknown>;\n // CommandItem is duck-typed: has `onSelect` or no `heading`\n if ('onSelect' in props || !('heading' in props)) {\n const text = extractText(props.children as ReactNode);\n if (matchesQuery(text, query)) {\n count++;\n }\n }\n });\n return count;\n}\n\n// ---------------------------------------------------------------------------\n// Public Dialog wrapper: auto-show Empty when no group renders anything\n// ---------------------------------------------------------------------------\n\n/**\n * Wraps CommandDialogInner to automatically surface Command.Empty when all\n * items are filtered away. This is what is exposed as `Command.Dialog`.\n */\nconst CommandDialogWrapper = (props: CommandDialogProps) => {\n const ctx = useCommandContext('Command.Dialog');\n const { children, ...rest } = props;\n\n let anyVisible = false;\n let emptyNode: ReactNode = null;\n\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) {\n return;\n }\n const childProps = child.props as Record<string, unknown>;\n\n // Detect Empty: has no heading, no onSelect, no icon — purely a display node\n if (!('heading' in childProps) && !('onSelect' in childProps) && !('icon' in childProps)) {\n emptyNode = child;\n return;\n }\n\n // It's a Group — count visible items in its children\n const groupChildren = childProps.children as ReactNode;\n const count = countVisibleItems(groupChildren, ctx.query);\n if (count > 0) {\n anyVisible = true;\n }\n });\n\n return (\n <CommandDialogInner {...rest}>\n {anyVisible ? children : (emptyNode ?? <CommandEmpty>No results found.</CommandEmpty>)}\n </CommandDialogInner>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Compound export\n// ---------------------------------------------------------------------------\n\n/**\n * cmdk-style command palette.\n *\n * ```tsx\n * <Command>\n * <Command.Trigger>\n * <Button>Search<Kbd>⌘K</Kbd></Button>\n * </Command.Trigger>\n * <Command.Dialog placeholder=\"Type a command or search…\">\n * <Command.Empty>No results found.</Command.Empty>\n * <Command.Group heading=\"Suggestions\">\n * <Command.Item onSelect={() => navigate('/calendar')}>Calendar</Command.Item>\n * <Command.Item onSelect={() => navigate('/emoji')}>Search Emoji</Command.Item>\n * </Command.Group>\n * <Command.Group heading=\"Settings\">\n * <Command.Item onSelect={() => navigate('/profile')}>\n * Profile<Command.Shortcut>⌘P</Command.Shortcut>\n * </Command.Item>\n * </Command.Group>\n * </Command.Dialog>\n * </Command>\n * ```\n */\nexport const Command = Object.assign(CommandRoot, {\n Trigger: CommandTrigger,\n Dialog: CommandDialogWrapper,\n Empty: CommandEmpty,\n Group: CommandGroup,\n Item: CommandItem,\n Shortcut: CommandShortcut,\n});\n\n// Re-export context hook for advanced use.\nexport { useCommandContext };\n\nimport type React from 'react';\n"]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
type CommandContextValue = {
|
|
5
|
+
open: boolean;
|
|
6
|
+
setOpen: (next: boolean) => void;
|
|
7
|
+
query: string;
|
|
8
|
+
setQuery: (q: string) => void;
|
|
9
|
+
};
|
|
10
|
+
declare function useCommandContext(caller: string): CommandContextValue;
|
|
11
|
+
type CommandProps = {
|
|
12
|
+
/** Controlled open state. */
|
|
13
|
+
open?: boolean;
|
|
14
|
+
/** Uncontrolled initial open state. @defaultValue false */
|
|
15
|
+
defaultOpen?: boolean;
|
|
16
|
+
/** Fires with the new open state. */
|
|
17
|
+
onOpenChange?: (open: boolean) => void;
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
};
|
|
20
|
+
type CommandTriggerProps = {
|
|
21
|
+
children?: ReactNode;
|
|
22
|
+
className?: string;
|
|
23
|
+
testID?: string;
|
|
24
|
+
};
|
|
25
|
+
type CommandDialogProps = {
|
|
26
|
+
/** Placeholder text for the search input. @defaultValue 'Type a command or search…' */
|
|
27
|
+
placeholder?: string;
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
className?: string;
|
|
30
|
+
testID?: string;
|
|
31
|
+
};
|
|
32
|
+
type CommandEmptyProps = {
|
|
33
|
+
children?: ReactNode;
|
|
34
|
+
className?: string;
|
|
35
|
+
testID?: string;
|
|
36
|
+
};
|
|
37
|
+
type CommandGroupProps = {
|
|
38
|
+
/** Section heading. */
|
|
39
|
+
heading?: string;
|
|
40
|
+
children?: ReactNode;
|
|
41
|
+
className?: string;
|
|
42
|
+
testID?: string;
|
|
43
|
+
};
|
|
44
|
+
type CommandItemProps = {
|
|
45
|
+
/** Fires when the item is selected (click or Enter). */
|
|
46
|
+
onSelect?: () => void;
|
|
47
|
+
/** Disable the item. @defaultValue false */
|
|
48
|
+
disabled?: boolean;
|
|
49
|
+
children?: ReactNode;
|
|
50
|
+
className?: string;
|
|
51
|
+
testID?: string;
|
|
52
|
+
};
|
|
53
|
+
type CommandShortcutProps = {
|
|
54
|
+
children?: ReactNode;
|
|
55
|
+
className?: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* cmdk-style command palette.
|
|
59
|
+
*
|
|
60
|
+
* ```tsx
|
|
61
|
+
* <Command>
|
|
62
|
+
* <Command.Trigger>
|
|
63
|
+
* <Button>Search<Kbd>⌘K</Kbd></Button>
|
|
64
|
+
* </Command.Trigger>
|
|
65
|
+
* <Command.Dialog placeholder="Type a command or search…">
|
|
66
|
+
* <Command.Empty>No results found.</Command.Empty>
|
|
67
|
+
* <Command.Group heading="Suggestions">
|
|
68
|
+
* <Command.Item onSelect={() => navigate('/calendar')}>Calendar</Command.Item>
|
|
69
|
+
* <Command.Item onSelect={() => navigate('/emoji')}>Search Emoji</Command.Item>
|
|
70
|
+
* </Command.Group>
|
|
71
|
+
* <Command.Group heading="Settings">
|
|
72
|
+
* <Command.Item onSelect={() => navigate('/profile')}>
|
|
73
|
+
* Profile<Command.Shortcut>⌘P</Command.Shortcut>
|
|
74
|
+
* </Command.Item>
|
|
75
|
+
* </Command.Group>
|
|
76
|
+
* </Command.Dialog>
|
|
77
|
+
* </Command>
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
declare const Command: (({ open, defaultOpen, onOpenChange, children }: CommandProps) => react_jsx_runtime.JSX.Element) & {
|
|
81
|
+
Trigger: ({ children, className, testID }: CommandTriggerProps) => react_jsx_runtime.JSX.Element;
|
|
82
|
+
Dialog: (props: CommandDialogProps) => react_jsx_runtime.JSX.Element;
|
|
83
|
+
Empty: ({ children, className, testID }: CommandEmptyProps) => react_jsx_runtime.JSX.Element;
|
|
84
|
+
Group: ({ heading, children, className, testID }: CommandGroupProps) => react_jsx_runtime.JSX.Element | null;
|
|
85
|
+
Item: ({ onSelect, disabled, children, className, testID }: CommandItemProps) => react_jsx_runtime.JSX.Element | null;
|
|
86
|
+
Shortcut: ({ children, className }: CommandShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export { Command, type CommandDialogProps, type CommandEmptyProps, type CommandGroupProps, type CommandItemProps, type CommandProps, type CommandShortcutProps, type CommandTriggerProps, useCommandContext };
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
type CommandContextValue = {
|
|
5
|
+
open: boolean;
|
|
6
|
+
setOpen: (next: boolean) => void;
|
|
7
|
+
query: string;
|
|
8
|
+
setQuery: (q: string) => void;
|
|
9
|
+
};
|
|
10
|
+
declare function useCommandContext(caller: string): CommandContextValue;
|
|
11
|
+
type CommandProps = {
|
|
12
|
+
/** Controlled open state. */
|
|
13
|
+
open?: boolean;
|
|
14
|
+
/** Uncontrolled initial open state. @defaultValue false */
|
|
15
|
+
defaultOpen?: boolean;
|
|
16
|
+
/** Fires with the new open state. */
|
|
17
|
+
onOpenChange?: (open: boolean) => void;
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
};
|
|
20
|
+
type CommandTriggerProps = {
|
|
21
|
+
children?: ReactNode;
|
|
22
|
+
className?: string;
|
|
23
|
+
testID?: string;
|
|
24
|
+
};
|
|
25
|
+
type CommandDialogProps = {
|
|
26
|
+
/** Placeholder text for the search input. @defaultValue 'Type a command or search…' */
|
|
27
|
+
placeholder?: string;
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
className?: string;
|
|
30
|
+
testID?: string;
|
|
31
|
+
};
|
|
32
|
+
type CommandEmptyProps = {
|
|
33
|
+
children?: ReactNode;
|
|
34
|
+
className?: string;
|
|
35
|
+
testID?: string;
|
|
36
|
+
};
|
|
37
|
+
type CommandGroupProps = {
|
|
38
|
+
/** Section heading. */
|
|
39
|
+
heading?: string;
|
|
40
|
+
children?: ReactNode;
|
|
41
|
+
className?: string;
|
|
42
|
+
testID?: string;
|
|
43
|
+
};
|
|
44
|
+
type CommandItemProps = {
|
|
45
|
+
/** Fires when the item is selected (click or Enter). */
|
|
46
|
+
onSelect?: () => void;
|
|
47
|
+
/** Disable the item. @defaultValue false */
|
|
48
|
+
disabled?: boolean;
|
|
49
|
+
children?: ReactNode;
|
|
50
|
+
className?: string;
|
|
51
|
+
testID?: string;
|
|
52
|
+
};
|
|
53
|
+
type CommandShortcutProps = {
|
|
54
|
+
children?: ReactNode;
|
|
55
|
+
className?: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* cmdk-style command palette.
|
|
59
|
+
*
|
|
60
|
+
* ```tsx
|
|
61
|
+
* <Command>
|
|
62
|
+
* <Command.Trigger>
|
|
63
|
+
* <Button>Search<Kbd>⌘K</Kbd></Button>
|
|
64
|
+
* </Command.Trigger>
|
|
65
|
+
* <Command.Dialog placeholder="Type a command or search…">
|
|
66
|
+
* <Command.Empty>No results found.</Command.Empty>
|
|
67
|
+
* <Command.Group heading="Suggestions">
|
|
68
|
+
* <Command.Item onSelect={() => navigate('/calendar')}>Calendar</Command.Item>
|
|
69
|
+
* <Command.Item onSelect={() => navigate('/emoji')}>Search Emoji</Command.Item>
|
|
70
|
+
* </Command.Group>
|
|
71
|
+
* <Command.Group heading="Settings">
|
|
72
|
+
* <Command.Item onSelect={() => navigate('/profile')}>
|
|
73
|
+
* Profile<Command.Shortcut>⌘P</Command.Shortcut>
|
|
74
|
+
* </Command.Item>
|
|
75
|
+
* </Command.Group>
|
|
76
|
+
* </Command.Dialog>
|
|
77
|
+
* </Command>
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
declare const Command: (({ open, defaultOpen, onOpenChange, children }: CommandProps) => react_jsx_runtime.JSX.Element) & {
|
|
81
|
+
Trigger: ({ children, className, testID }: CommandTriggerProps) => react_jsx_runtime.JSX.Element;
|
|
82
|
+
Dialog: (props: CommandDialogProps) => react_jsx_runtime.JSX.Element;
|
|
83
|
+
Empty: ({ children, className, testID }: CommandEmptyProps) => react_jsx_runtime.JSX.Element;
|
|
84
|
+
Group: ({ heading, children, className, testID }: CommandGroupProps) => react_jsx_runtime.JSX.Element | null;
|
|
85
|
+
Item: ({ onSelect, disabled, children, className, testID }: CommandItemProps) => react_jsx_runtime.JSX.Element | null;
|
|
86
|
+
Shortcut: ({ children, className }: CommandShortcutProps) => react_jsx_runtime.JSX.Element;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export { Command, type CommandDialogProps, type CommandEmptyProps, type CommandGroupProps, type CommandItemProps, type CommandProps, type CommandShortcutProps, type CommandTriggerProps, useCommandContext };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { Command, useCommandContext } from '../../chunk-OHWRTHGL.js';
|
|
2
|
+
import '../../chunk-BXZGCOKT.js';
|
|
3
|
+
import '../../chunk-7Z4NMNX6.js';
|
|
4
|
+
import '../../chunk-KWRDJPP3.js';
|
|
5
|
+
import '../../chunk-ZIBNLXIV.js';
|
|
6
|
+
import '../../chunk-5A2QOOVN.js';
|
|
7
|
+
import '../../chunk-R5JMDDCB.js';
|
|
8
|
+
import '../../chunk-CHXHRJNZ.js';
|
|
9
|
+
import '../../chunk-WCQVDF3K.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|