@lmb-it/kitsconcerto-native 0.1.243 → 0.1.245
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/animations/index.cjs +25 -15
- package/animations/index.cjs.map +1 -1
- package/animations/index.js +25 -15
- package/animations/index.js.map +1 -1
- package/apps/mobile/src/Core/AutoComplete/index.cjs +105 -64
- package/apps/mobile/src/Core/AutoComplete/index.cjs.map +1 -1
- package/apps/mobile/src/Core/AutoComplete/index.js +106 -65
- package/apps/mobile/src/Core/AutoComplete/index.js.map +1 -1
- package/apps/mobile/src/Core/Dropdown/index.cjs +2 -0
- package/apps/mobile/src/Core/Dropdown/index.cjs.map +1 -1
- package/apps/mobile/src/Core/Dropdown/index.js +2 -0
- package/apps/mobile/src/Core/Dropdown/index.js.map +1 -1
- package/apps/mobile/src/Core/Trees/components/CoreToolbar.cjs +2 -0
- package/apps/mobile/src/Core/Trees/components/CoreToolbar.cjs.map +1 -1
- package/apps/mobile/src/Core/Trees/components/CoreToolbar.js +2 -0
- package/apps/mobile/src/Core/Trees/components/CoreToolbar.js.map +1 -1
- package/apps/mobile/src/Factory/ResponsiveElement.cjs +2 -0
- package/apps/mobile/src/Factory/ResponsiveElement.cjs.map +1 -1
- package/apps/mobile/src/Factory/ResponsiveElement.js +2 -0
- package/apps/mobile/src/Factory/ResponsiveElement.js.map +1 -1
- package/apps/mobile/src/Factory/helpers/cssVarMap.cjs +16 -0
- package/apps/mobile/src/Factory/helpers/cssVarMap.cjs.map +1 -1
- package/apps/mobile/src/Factory/helpers/cssVarMap.js +16 -0
- package/apps/mobile/src/Factory/helpers/cssVarMap.js.map +1 -1
- package/apps/mobile/src/Factory/helpers/style.cjs +17 -1
- package/apps/mobile/src/Factory/helpers/style.cjs.map +1 -1
- package/apps/mobile/src/Factory/helpers/style.js +17 -1
- package/apps/mobile/src/Factory/helpers/style.js.map +1 -1
- package/apps/mobile/src/Factory/useSeparator.cjs +1 -0
- package/apps/mobile/src/Factory/useSeparator.cjs.map +1 -1
- package/apps/mobile/src/Factory/useSeparator.js +1 -0
- package/apps/mobile/src/Factory/useSeparator.js.map +1 -1
- package/components/Accordion/accordion.cjs +2 -0
- package/components/Accordion/accordion.cjs.map +1 -1
- package/components/Accordion/accordion.js +2 -0
- package/components/Accordion/accordion.js.map +1 -1
- package/components/Badge/index.cjs +2 -0
- package/components/Badge/index.cjs.map +1 -1
- package/components/Badge/index.js +2 -0
- package/components/Badge/index.js.map +1 -1
- package/components/BottomTabBar/index.cjs +2 -0
- package/components/BottomTabBar/index.cjs.map +1 -1
- package/components/BottomTabBar/index.js +2 -0
- package/components/BottomTabBar/index.js.map +1 -1
- package/components/Button/Button.cjs +2 -0
- package/components/Button/Button.cjs.map +1 -1
- package/components/Button/Button.js +2 -0
- package/components/Button/Button.js.map +1 -1
- package/components/MessageComposer/index.cjs +2 -0
- package/components/MessageComposer/index.cjs.map +1 -1
- package/components/MessageComposer/index.js +2 -0
- package/components/MessageComposer/index.js.map +1 -1
- package/components/SegmentedControl/index.cjs +2 -0
- package/components/SegmentedControl/index.cjs.map +1 -1
- package/components/SegmentedControl/index.js +2 -0
- package/components/SegmentedControl/index.js.map +1 -1
- package/components/SkeletonText/index.cjs +2 -0
- package/components/SkeletonText/index.cjs.map +1 -1
- package/components/SkeletonText/index.js +2 -0
- package/components/SkeletonText/index.js.map +1 -1
- package/components/Tabs/index.cjs +2 -0
- package/components/Tabs/index.cjs.map +1 -1
- package/components/Tabs/index.js +2 -0
- package/components/Tabs/index.js.map +1 -1
- package/components/overlay/ConfirmDialog/index.cjs +146 -89
- package/components/overlay/ConfirmDialog/index.cjs.map +1 -1
- package/components/overlay/ConfirmDialog/index.js +147 -90
- package/components/overlay/ConfirmDialog/index.js.map +1 -1
- package/components/overlay/Dialog/index.cjs +90 -64
- package/components/overlay/Dialog/index.cjs.map +1 -1
- package/components/overlay/Dialog/index.js +91 -65
- package/components/overlay/Dialog/index.js.map +1 -1
- package/components/overlay/Toast/index.cjs +59 -24
- package/components/overlay/Toast/index.cjs.map +1 -1
- package/components/overlay/Toast/index.js +62 -27
- package/components/overlay/Toast/index.js.map +1 -1
- package/contexts/Locale/index.cjs +2 -0
- package/contexts/Locale/index.cjs.map +1 -1
- package/contexts/Locale/index.js +2 -0
- package/contexts/Locale/index.js.map +1 -1
- package/contexts/Main/index.cjs +2 -0
- package/contexts/Main/index.cjs.map +1 -1
- package/contexts/Main/index.js +2 -0
- package/contexts/Main/index.js.map +1 -1
- package/contexts/Theme/KitsThemeProvider.cjs +2 -0
- package/contexts/Theme/KitsThemeProvider.cjs.map +1 -1
- package/contexts/Theme/KitsThemeProvider.js +2 -0
- package/contexts/Theme/KitsThemeProvider.js.map +1 -1
- package/contexts/Theme/index.cjs +1 -0
- package/contexts/Theme/index.cjs.map +1 -1
- package/contexts/Theme/index.js +1 -0
- package/contexts/Theme/index.js.map +1 -1
- package/contexts/Theme/resolvers.cjs +4 -0
- package/contexts/Theme/resolvers.cjs.map +1 -1
- package/contexts/Theme/resolvers.js +4 -0
- package/contexts/Theme/resolvers.js.map +1 -1
- package/data/DataView/Pagination/index.cjs +2 -0
- package/data/DataView/Pagination/index.cjs.map +1 -1
- package/data/DataView/Pagination/index.js +2 -0
- package/data/DataView/Pagination/index.js.map +1 -1
- package/data/TreeView/index.cjs +2 -0
- package/data/TreeView/index.cjs.map +1 -1
- package/data/TreeView/index.js +2 -0
- package/data/TreeView/index.js.map +1 -1
- package/form/controls/Checkbox/checkbox.cjs +2 -0
- package/form/controls/Checkbox/checkbox.cjs.map +1 -1
- package/form/controls/Checkbox/checkbox.js +2 -0
- package/form/controls/Checkbox/checkbox.js.map +1 -1
- package/form/controls/RadioButton/radiobutton.cjs +2 -0
- package/form/controls/RadioButton/radiobutton.cjs.map +1 -1
- package/form/controls/RadioButton/radiobutton.js +2 -0
- package/form/controls/RadioButton/radiobutton.js.map +1 -1
- package/form/controls/SelectButton/index.cjs +2 -0
- package/form/controls/SelectButton/index.cjs.map +1 -1
- package/form/controls/SelectButton/index.js +2 -0
- package/form/controls/SelectButton/index.js.map +1 -1
- package/form/controls/TriStateCheckbox/index.cjs +2 -0
- package/form/controls/TriStateCheckbox/index.cjs.map +1 -1
- package/form/controls/TriStateCheckbox/index.js +2 -0
- package/form/controls/TriStateCheckbox/index.js.map +1 -1
- package/form/file-pickers/MainUploader/index.cjs +1 -0
- package/form/file-pickers/MainUploader/index.cjs.map +1 -1
- package/form/file-pickers/MainUploader/index.js +1 -0
- package/form/file-pickers/MainUploader/index.js.map +1 -1
- package/form/helpers/ErrorMessage/errormessage.cjs +2 -0
- package/form/helpers/ErrorMessage/errormessage.cjs.map +1 -1
- package/form/helpers/ErrorMessage/errormessage.js +2 -0
- package/form/helpers/ErrorMessage/errormessage.js.map +1 -1
- package/form/helpers/FormContainer/index.cjs +2 -0
- package/form/helpers/FormContainer/index.cjs.map +1 -1
- package/form/helpers/FormContainer/index.js +2 -0
- package/form/helpers/FormContainer/index.js.map +1 -1
- package/form/helpers/Label/label.cjs +2 -0
- package/form/helpers/Label/label.cjs.map +1 -1
- package/form/helpers/Label/label.js +2 -0
- package/form/helpers/Label/label.js.map +1 -1
- package/form/inputs/InputMask/index.cjs +2 -0
- package/form/inputs/InputMask/index.cjs.map +1 -1
- package/form/inputs/InputMask/index.js +2 -0
- package/form/inputs/InputMask/index.js.map +1 -1
- package/form/inputs/InputNumber/index.cjs +2 -0
- package/form/inputs/InputNumber/index.cjs.map +1 -1
- package/form/inputs/InputNumber/index.js +2 -0
- package/form/inputs/InputNumber/index.js.map +1 -1
- package/form/inputs/InputPassword/index.cjs +2 -0
- package/form/inputs/InputPassword/index.cjs.map +1 -1
- package/form/inputs/InputPassword/index.js +2 -0
- package/form/inputs/InputPassword/index.js.map +1 -1
- package/form/inputs/InputSwitch/index.cjs +2 -0
- package/form/inputs/InputSwitch/index.cjs.map +1 -1
- package/form/inputs/InputSwitch/index.js +2 -0
- package/form/inputs/InputSwitch/index.js.map +1 -1
- package/form/inputs/InputText/index.cjs +2 -0
- package/form/inputs/InputText/index.cjs.map +1 -1
- package/form/inputs/InputText/index.js +2 -0
- package/form/inputs/InputText/index.js.map +1 -1
- package/form/inputs/InputTextarea/index.cjs +2 -0
- package/form/inputs/InputTextarea/index.cjs.map +1 -1
- package/form/inputs/InputTextarea/index.js +2 -0
- package/form/inputs/InputTextarea/index.js.map +1 -1
- package/form/inputs/PhoneInput/index.cjs +2 -0
- package/form/inputs/PhoneInput/index.cjs.map +1 -1
- package/form/inputs/PhoneInput/index.js +2 -0
- package/form/inputs/PhoneInput/index.js.map +1 -1
- package/form/inputs/RadiusPicker/components/NumericRadiusInput.cjs +1 -0
- package/form/inputs/RadiusPicker/components/NumericRadiusInput.cjs.map +1 -1
- package/form/inputs/RadiusPicker/components/NumericRadiusInput.js +1 -0
- package/form/inputs/RadiusPicker/components/NumericRadiusInput.js.map +1 -1
- package/form/selects/AutoComplete/index.cjs +2 -0
- package/form/selects/AutoComplete/index.cjs.map +1 -1
- package/form/selects/AutoComplete/index.js +2 -0
- package/form/selects/AutoComplete/index.js.map +1 -1
- package/form/selects/Dropdown/index.cjs +2 -0
- package/form/selects/Dropdown/index.cjs.map +1 -1
- package/form/selects/Dropdown/index.js +2 -0
- package/form/selects/Dropdown/index.js.map +1 -1
- package/form/selects/ListBox/index.cjs +2 -0
- package/form/selects/ListBox/index.cjs.map +1 -1
- package/form/selects/ListBox/index.js +2 -0
- package/form/selects/ListBox/index.js.map +1 -1
- package/form/selects/MultiSelect/index.cjs +2 -0
- package/form/selects/MultiSelect/index.cjs.map +1 -1
- package/form/selects/MultiSelect/index.js +2 -0
- package/form/selects/MultiSelect/index.js.map +1 -1
- package/form/selects/TreeSelect/index.cjs +2 -0
- package/form/selects/TreeSelect/index.cjs.map +1 -1
- package/form/selects/TreeSelect/index.js +2 -0
- package/form/selects/TreeSelect/index.js.map +1 -1
- package/form-renderer/components/layout/FieldWrapper.cjs +2 -0
- package/form-renderer/components/layout/FieldWrapper.cjs.map +1 -1
- package/form-renderer/components/layout/FieldWrapper.js +2 -0
- package/form-renderer/components/layout/FieldWrapper.js.map +1 -1
- package/hooks/shadowPresets.cjs +1 -0
- package/hooks/shadowPresets.cjs.map +1 -1
- package/hooks/shadowPresets.js +1 -0
- package/hooks/shadowPresets.js.map +1 -1
- package/hooks/useFocusStyles.cjs +2 -0
- package/hooks/useFocusStyles.cjs.map +1 -1
- package/hooks/useFocusStyles.js +2 -0
- package/hooks/useFocusStyles.js.map +1 -1
- package/index.cjs +5 -0
- package/index.cjs.map +1 -1
- package/index.d.ts +60 -3
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/layout/Center/index.cjs +2 -0
- package/layout/Center/index.cjs.map +1 -1
- package/layout/Center/index.js +2 -0
- package/layout/Center/index.js.map +1 -1
- package/layout/Container/container.cjs +2 -0
- package/layout/Container/container.cjs.map +1 -1
- package/layout/Container/container.js +2 -0
- package/layout/Container/container.js.map +1 -1
- package/layout/Flex/index.cjs +2 -0
- package/layout/Flex/index.cjs.map +1 -1
- package/layout/Flex/index.js +2 -0
- package/layout/Flex/index.js.map +1 -1
- package/layout/HStack/index.cjs +2 -0
- package/layout/HStack/index.cjs.map +1 -1
- package/layout/HStack/index.js +2 -0
- package/layout/HStack/index.js.map +1 -1
- package/layout/List/index.cjs +2 -0
- package/layout/List/index.cjs.map +1 -1
- package/layout/List/index.js +2 -0
- package/layout/List/index.js.map +1 -1
- package/layout/ListItem/index.cjs +2 -0
- package/layout/ListItem/index.cjs.map +1 -1
- package/layout/ListItem/index.js +2 -0
- package/layout/ListItem/index.js.map +1 -1
- package/layout/ScrollView/index.cjs +2 -0
- package/layout/ScrollView/index.cjs.map +1 -1
- package/layout/ScrollView/index.js +2 -0
- package/layout/ScrollView/index.js.map +1 -1
- package/layout/VStack/index.cjs +2 -0
- package/layout/VStack/index.cjs.map +1 -1
- package/layout/VStack/index.js +2 -0
- package/layout/VStack/index.js.map +1 -1
- package/package.json +1 -1
- package/packages/types/src/Theme/alphaColors.cjs +24 -0
- package/packages/types/src/Theme/alphaColors.cjs.map +1 -0
- package/packages/types/src/Theme/alphaColors.js +19 -0
- package/packages/types/src/Theme/alphaColors.js.map +1 -0
- package/packages/types/src/Theme/resolvers.cjs +6 -0
- package/packages/types/src/Theme/resolvers.cjs.map +1 -1
- package/packages/types/src/Theme/resolvers.js +6 -0
- package/packages/types/src/Theme/resolvers.js.map +1 -1
- package/primitives/Box/index.cjs +2 -0
- package/primitives/Box/index.cjs.map +1 -1
- package/primitives/Box/index.js +2 -0
- package/primitives/Box/index.js.map +1 -1
- package/primitives/Card/index.cjs +2 -0
- package/primitives/Card/index.cjs.map +1 -1
- package/primitives/Card/index.js +2 -0
- package/primitives/Card/index.js.map +1 -1
- package/primitives/Divider/index.cjs +2 -0
- package/primitives/Divider/index.cjs.map +1 -1
- package/primitives/Divider/index.js +2 -0
- package/primitives/Divider/index.js.map +1 -1
- package/primitives/Heading/index.cjs +2 -0
- package/primitives/Heading/index.cjs.map +1 -1
- package/primitives/Heading/index.js +2 -0
- package/primitives/Heading/index.js.map +1 -1
- package/primitives/Icon/index.cjs +1 -0
- package/primitives/Icon/index.cjs.map +1 -1
- package/primitives/Icon/index.js +1 -0
- package/primitives/Icon/index.js.map +1 -1
- package/primitives/Image/index.cjs +2 -0
- package/primitives/Image/index.cjs.map +1 -1
- package/primitives/Image/index.js +2 -0
- package/primitives/Image/index.js.map +1 -1
- package/primitives/Skeleton/index.cjs +2 -0
- package/primitives/Skeleton/index.cjs.map +1 -1
- package/primitives/Skeleton/index.js +2 -0
- package/primitives/Skeleton/index.js.map +1 -1
- package/primitives/Svg/index.cjs +2 -0
- package/primitives/Svg/index.cjs.map +1 -1
- package/primitives/Svg/index.js +2 -0
- package/primitives/Svg/index.js.map +1 -1
- package/primitives/Text/index.cjs +2 -0
- package/primitives/Text/index.cjs.map +1 -1
- package/primitives/Text/index.js +2 -0
- package/primitives/Text/index.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../../../../apps/mobile/src/Core/Dropdown/index.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef, useState, type ChangeEvent } from \"react\";\nimport {\n Dimensions,\n FlatList,\n Keyboard,\n Modal,\n Pressable,\n ScrollView,\n TouchableOpacity,\n View,\n StyleSheet, Text, TextInput\n} from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { Input, InputField, type VirtualScrollerOptions } from \"../../\";\nimport { resolveThemeTokenForNative } from '../../Factory/helpers/style';\n\n/* ---------------------------------------------\n Types (PrimeReact-compatible)\n---------------------------------------------- */\n\nexport interface DropdownChangeEvent<T = any> {\n originalEvent?: any;\n value: T | null;\n}\n\n\nexport interface DropdownProps<T = any> {\n value?: T | null;\n options?: T[];\n\n onChange?: (e: ChangeEvent<T>, item:any) => void;\n\n optionLabel?: string;\n optionValue?: string;\n\n placeholder?: string;\n disabled?: boolean;\n editable?: boolean;\n loading?: boolean;\n showClear?: boolean;\n isModal?: boolean;\n\n checkmark?: boolean;\n highlightOnSelect?: boolean;\n\n filter?: boolean;\n filterBy?: string;\n emptyFilterMessage?: string;\n\n itemTemplate?: (item: T) => React.ReactNode;\n valueTemplate?: (value: T | null) => React.ReactNode;\n panelFooterTemplate?: () => React.ReactNode;\n\n optionGroupLabel?: string;\n optionGroupChildren?: string;\n optionGroupTemplate?: (group: any) => React.ReactNode;\n\n virtualScrollerOptions?: VirtualScrollerOptions;\n\n invalid?: boolean;\n testID?: string;\n style?: import('react-native').ViewStyle;\n}\n\n/* ---------------------------------------------\n Helpers\n---------------------------------------------- */\n\nconst getLabel = (item: any, optionLabel?: string) => {\n if (!item) return \"\";\n if (!optionLabel) return String(item);\n return String(item[optionLabel]);\n};\n\nconst getValue = (item: any, optionValue?: string) => {\n if (!item) return null;\n if (!optionValue) return item;\n return item[optionValue];\n};\n\nconst t = resolveThemeTokenForNative;\n\nconst TEXT_STYLE_KEYS = new Set([\n 'fontSize', 'fontFamily', 'fontWeight', 'fontStyle',\n 'color', 'letterSpacing', 'lineHeight', 'textAlign',\n 'textDecorationLine', 'textTransform',\n]);\n\nfunction splitStyle(combined?: any): { viewStyle?: any; textStyle?: any } {\n if (!combined) return {};\n const view: Record<string, any> = {};\n const text: Record<string, any> = {};\n for (const [k, v] of Object.entries(combined)) {\n if (TEXT_STYLE_KEYS.has(k)) text[k] = v;\n else view[k] = v;\n }\n return {\n viewStyle: Object.keys(view).length ? view : undefined,\n textStyle: Object.keys(text).length ? text : undefined,\n };\n}\n\n/* ---------------------------------------------\n Component\n---------------------------------------------- */\n\nexport default function Dropdown<T = any>({\n value,\n options = [],\n onChange,\n\n optionLabel,\n optionValue,\n\n placeholder,\n disabled,\n editable,\n isModal = false,\n\n checkmark,\n highlightOnSelect = true,\n\n filter,\n filterBy,\n emptyFilterMessage = 'No results found',\n\n itemTemplate,\n valueTemplate,\n panelFooterTemplate,\n\n optionGroupLabel,\n optionGroupChildren,\n optionGroupTemplate,\n\n virtualScrollerOptions,\n\n invalid,\n testID,\n style: externalStyle,\n }: DropdownProps<T>) {\n const inputRef = useRef<any>(null);\n const triggerRef = useRef<View>(null);\n const [open, setOpen] = useState(false);\n const [inputText, setInputText] = useState(\"\");\n const [filterQuery, setFilterQuery] = useState(\"\");\n const [triggerLayout, setTriggerLayout] = useState<{\n x: number; y: number; width: number; height: number;\n } | null>(null);\n const insets = useSafeAreaInsets();\n\n const { viewStyle: externalViewStyle, textStyle: externalTextStyle } = splitStyle(externalStyle);\n\n const colors = {\n border: t('border') || t('gray.300'),\n borderInvalid: t('danger') || t('red.500'),\n bg: t('surface-card') || '#fff',\n text: t('text') || t('gray.800'),\n placeholder: t('text-secondary') || t('gray.400'),\n optionSelected: t('highlight-bg') || t('gray.100'),\n groupBg: t('surface-ground') || t('gray.50'),\n filterBorder: t('border') || t('gray.200'),\n filterBg: t('surface-ground') || t('gray.50'),\n filterText: t('text') || t('gray.800'),\n emptyText: t('text-secondary') || t('gray.400'),\n primary: t('primary'),\n };\n\n /* ---------------------------------------------\n Derived\n ---------------------------------------------- */\n\n const selectedItem = useMemo(() => {\n if (value == null) return null;\n // Search through group children when grouped\n if (optionGroupChildren) {\n for (const group of options as any[]) {\n const children = group[optionGroupChildren];\n if (Array.isArray(children)) {\n const found = children.find((c: any) => getValue(c, optionValue) === value);\n if (found) return found;\n }\n }\n return null;\n }\n return options.find(\n (o) => getValue(o, optionValue) === value\n ) ?? null;\n }, [value, options, optionValue, optionGroupChildren]);\n\n /* ---------------------------------------------\n Open / Close\n ---------------------------------------------- */\n\n const toggle = () => {\n if (disabled) return;\n Keyboard.dismiss();\n if (open) {\n setOpen(false);\n return;\n }\n setFilterQuery(\"\");\n // Measure trigger position in window so the popover can be rendered\n // inside a Modal (escaping any parent ScrollView) at the correct anchor.\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y, width, height });\n setOpen(true);\n });\n };\n\n const close = () => setOpen(false);\n\n /* ---------------------------------------------\n Selection\n ---------------------------------------------- */\n\n const selectItem = (item: T) => {\n const newValue = getValue(item, optionValue);\n\n if (!onChange) return;\n\n const syntheticEvent = {\n target: {\n value: newValue,\n },\n } as React.ChangeEvent<any>;\n\n onChange(syntheticEvent, item);\n\n setOpen(false);\n };\n\n /* ---------------------------------------------\n Render item\n ---------------------------------------------- */\n\n const renderItem = useCallback(\n (item: any, index: number) => {\n if (!item) {\n return null;\n }\n\n // Group header\n if (item.__group) {\n return (\n <Text key={`group-${index}`} style={[styles.groupLabel, { backgroundColor: colors.groupBg }]}>\n {optionGroupLabel ? item.group?.[optionGroupLabel] : \"\"}\n </Text>\n );\n }\n\n const selected =\n value != null &&\n getValue(item, optionValue) === value;\n\n let content: React.ReactElement;\n\n if (itemTemplate) {\n const rendered = itemTemplate(item);\n\n content = React.isValidElement(rendered) ? (\n rendered\n ) : (\n <Text>{String(rendered ?? \"\")}</Text>\n );\n } else {\n content = (\n <Text style={[{ color: colors.text }, externalTextStyle && { fontSize: externalTextStyle.fontSize }]}>\n {getLabel(item, optionLabel)}\n </Text>\n );\n }\n\n return (\n <Pressable\n key={`item-${index}`}\n onPress={() => selectItem(item)}\n style={[\n styles.option,\n selected && highlightOnSelect && { backgroundColor: colors.optionSelected },\n ]}\n >\n {content}\n {checkmark && selected && <Text>✓</Text>}\n </Pressable>\n );\n },\n [\n value,\n optionValue,\n optionLabel,\n itemTemplate,\n optionGroupLabel,\n checkmark,\n highlightOnSelect,\n ]\n );\n\n\n /* ---------------------------------------------\n Group flattening\n ---------------------------------------------- */\n\n const flatData = useMemo(() => {\n if (!optionGroupLabel || !optionGroupChildren) {\n return options;\n }\n\n const out: any[] = [];\n options.forEach((g: any) => {\n out.push({ __group: true, group: g });\n g[optionGroupChildren]?.forEach((c: any) => out.push(c));\n });\n return out;\n }, [options]);\n\n /* ---------------------------------------------\n Filter\n ---------------------------------------------- */\n\n const filteredData = useMemo(() => {\n if (!filter || !filterQuery) return flatData;\n const q = filterQuery.toLowerCase();\n const key = filterBy || optionLabel;\n\n return flatData.filter((entry: any) => {\n // Keep group headers\n if (entry.__group) return true;\n const label = getLabel(entry, key);\n return label.toLowerCase().includes(q);\n });\n }, [flatData, filter, filterQuery, filterBy, optionLabel]);\n\n /* ---------------------------------------------\n Display value\n ---------------------------------------------- */\n\n const displayValue = valueTemplate\n ? valueTemplate(selectedItem)\n : selectedItem\n ? getLabel(selectedItem, optionLabel)\n : \"\";\n\n /* ---------------------------------------------\n Render\n ---------------------------------------------- */\n\n return (\n <View style={styles.container} testID={testID}>\n <Pressable\n ref={triggerRef as any}\n style={[\n styles.control,\n { borderColor: colors.border, backgroundColor: colors.bg },\n invalid && { borderColor: colors.borderInvalid },\n disabled && styles.disabled,\n externalViewStyle,\n ]}\n onPress={toggle}\n >\n {editable ? (\n <Input style={styles.input}>\n <InputField\n ref={inputRef}\n value={inputText}\n onChangeText={setInputText}\n placeholder={placeholder}\n editable={!disabled}\n />\n </Input>\n ) : (\n <Text\n numberOfLines={1}\n style={[\n // Fill the trigger row and left-align the value/placeholder so it\n // doesn't read as centred (the row is justify=space-between, so the\n // arrow stays pinned right).\n { flex: 1, textAlign: \"left\" as const },\n displayValue ? { color: colors.text } : { color: colors.placeholder },\n externalTextStyle,\n !displayValue && { color: colors.placeholder },\n ]}>\n {displayValue || placeholder}\n </Text>\n )}\n\n <Text style={[{ color: colors.text }, externalTextStyle]}>▾</Text>\n </Pressable>\n\n {!isModal && (\n <Modal\n visible={open && !!triggerLayout}\n transparent\n animationType=\"none\"\n onRequestClose={close}\n >\n <Pressable style={styles.popoverOverlay} onPress={close}>\n {triggerLayout && (() => {\n const screen = Dimensions.get('window');\n const PANEL_MAX_HEIGHT = 260;\n const GAP = 4;\n const spaceBelow =\n screen.height - (triggerLayout.y + triggerLayout.height) - insets.bottom;\n const spaceAbove = triggerLayout.y - insets.top;\n const openUp = spaceBelow < PANEL_MAX_HEIGHT && spaceAbove > spaceBelow;\n const maxHeight = Math.min(\n PANEL_MAX_HEIGHT,\n openUp ? spaceAbove - GAP : spaceBelow - GAP,\n );\n const top = openUp\n ? triggerLayout.y - maxHeight - GAP\n : triggerLayout.y + triggerLayout.height + GAP;\n\n return (\n <View\n style={[\n styles.popoverPanel,\n {\n top,\n left: triggerLayout.x,\n width: triggerLayout.width,\n maxHeight,\n borderColor: colors.border,\n backgroundColor: colors.bg,\n },\n ]}\n onStartShouldSetResponder={() => true}\n >\n {filter && (\n <View style={[styles.filterContainer, { borderBottomColor: colors.filterBorder }]}>\n <TextInput\n value={filterQuery}\n onChangeText={setFilterQuery}\n placeholder=\"Search...\"\n placeholderTextColor={colors.placeholder}\n style={[styles.filterInput, {\n borderColor: colors.filterBorder,\n backgroundColor: colors.filterBg,\n color: colors.filterText,\n }]}\n autoFocus\n />\n </View>\n )}\n <FlatList\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 12 }}\n data={filteredData}\n keyExtractor={(item: any, i: number) =>\n item?.__group ? `group-${i}` : `item-${i}`\n }\n renderItem={({ item, index }) => renderItem(item, index)}\n keyboardShouldPersistTaps=\"handled\"\n showsHorizontalScrollIndicator={false}\n ListEmptyComponent={\n filterQuery ? (\n <View style={styles.emptyContainer}>\n <Text style={[styles.emptyText, { color: colors.emptyText }]}>{emptyFilterMessage}</Text>\n </View>\n ) : null\n }\n />\n {panelFooterTemplate?.()}\n </View>\n );\n })()}\n </Pressable>\n </Modal>\n )}\n\n {isModal && (\n <Modal visible={open} transparent animationType=\"fade\">\n <Pressable style={styles.modalOverlay} onPress={close}>\n <View\n style={[styles.modalPanel, { backgroundColor: colors.bg }]}\n onStartShouldSetResponder={() => true}\n >\n {filter && (\n <View style={[styles.filterContainer, { borderBottomColor: colors.filterBorder }]}>\n <TextInput\n value={filterQuery}\n onChangeText={setFilterQuery}\n placeholder=\"Search...\"\n placeholderTextColor={colors.placeholder}\n style={[styles.filterInput, {\n borderColor: colors.filterBorder,\n backgroundColor: colors.filterBg,\n color: colors.filterText,\n }]}\n autoFocus\n />\n </View>\n )}\n <FlatList\n data={filteredData}\n keyExtractor={(item: any, i: number) =>\n item?.__group ? `group-${i}` : `item-${i}`\n }\n renderItem={({ item, index }) => renderItem(item, index)}\n nestedScrollEnabled\n keyboardShouldPersistTaps=\"handled\"\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 12 }}\n ListEmptyComponent={\n filterQuery ? (\n <View style={styles.emptyContainer}>\n <Text style={[styles.emptyText, { color: colors.emptyText }]}>{emptyFilterMessage}</Text>\n </View>\n ) : null\n }\n />\n {panelFooterTemplate?.()}\n </View>\n </Pressable>\n </Modal>\n )}\n </View>\n );\n}\n\n/* ---------------------------------------------\n Styles (layout only — colors applied inline via theme tokens)\n---------------------------------------------- */\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n position: \"relative\" as const,\n },\n control: {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n justifyContent: \"space-between\" as const,\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 10,\n paddingVertical: 10,\n },\n disabled: {\n opacity: 0.5,\n },\n option: {\n paddingHorizontal: 12,\n paddingVertical: 10,\n flexDirection: \"row\" as const,\n justifyContent: \"space-between\" as const,\n alignItems: \"center\" as const,\n },\n groupLabel: {\n paddingHorizontal: 12,\n paddingVertical: 8,\n fontWeight: \"600\" as const,\n },\n input: {\n flex: 1,\n },\n panel: {\n position: \"absolute\" as const,\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 4,\n borderWidth: 1,\n borderRadius: 6,\n maxHeight: 260,\n overflow: \"hidden\" as const,\n zIndex: 9999,\n },\n filterContainer: {\n paddingHorizontal: 8,\n paddingVertical: 6,\n borderBottomWidth: 1,\n },\n filterInput: {\n fontSize: 14,\n paddingHorizontal: 8,\n paddingVertical: 6,\n borderWidth: 1,\n borderRadius: 4,\n },\n emptyContainer: {\n padding: 16,\n alignItems: 'center' as const,\n },\n emptyText: {\n fontSize: 14,\n },\n popoverOverlay: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n popoverPanel: {\n position: 'absolute' as const,\n borderWidth: 1,\n borderRadius: 6,\n overflow: 'hidden' as const,\n elevation: 8,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 8,\n },\n modalOverlay: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.4)',\n justifyContent: 'center' as const,\n },\n modalPanel: {\n margin: 24,\n maxHeight: '70%',\n borderRadius: 12,\n overflow: 'hidden' as const,\n },\n});\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../../../apps/mobile/src/Core/Dropdown/index.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef, useState, type ChangeEvent } from \"react\";\nimport {\n Dimensions,\n FlatList,\n Keyboard,\n Modal,\n Pressable,\n ScrollView,\n TouchableOpacity,\n View,\n StyleSheet, Text, TextInput\n} from \"react-native\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { Input, InputField, type VirtualScrollerOptions } from \"../../\";\nimport { resolveThemeTokenForNative } from '../../Factory/helpers/style';\n\n/* ---------------------------------------------\n Types (PrimeReact-compatible)\n---------------------------------------------- */\n\nexport interface DropdownChangeEvent<T = any> {\n originalEvent?: any;\n value: T | null;\n}\n\n\nexport interface DropdownProps<T = any> {\n value?: T | null;\n options?: T[];\n\n onChange?: (e: ChangeEvent<T>, item:any) => void;\n\n optionLabel?: string;\n optionValue?: string;\n\n placeholder?: string;\n disabled?: boolean;\n editable?: boolean;\n loading?: boolean;\n showClear?: boolean;\n isModal?: boolean;\n\n checkmark?: boolean;\n highlightOnSelect?: boolean;\n\n filter?: boolean;\n filterBy?: string;\n emptyFilterMessage?: string;\n\n itemTemplate?: (item: T) => React.ReactNode;\n valueTemplate?: (value: T | null) => React.ReactNode;\n panelFooterTemplate?: () => React.ReactNode;\n\n optionGroupLabel?: string;\n optionGroupChildren?: string;\n optionGroupTemplate?: (group: any) => React.ReactNode;\n\n virtualScrollerOptions?: VirtualScrollerOptions;\n\n invalid?: boolean;\n testID?: string;\n style?: import('react-native').ViewStyle;\n}\n\n/* ---------------------------------------------\n Helpers\n---------------------------------------------- */\n\nconst getLabel = (item: any, optionLabel?: string) => {\n if (!item) return \"\";\n if (!optionLabel) return String(item);\n return String(item[optionLabel]);\n};\n\nconst getValue = (item: any, optionValue?: string) => {\n if (!item) return null;\n if (!optionValue) return item;\n return item[optionValue];\n};\n\nconst t = resolveThemeTokenForNative;\n\nconst TEXT_STYLE_KEYS = new Set([\n 'fontSize', 'fontFamily', 'fontWeight', 'fontStyle',\n 'color', 'letterSpacing', 'lineHeight', 'textAlign',\n 'textDecorationLine', 'textTransform',\n]);\n\nfunction splitStyle(combined?: any): { viewStyle?: any; textStyle?: any } {\n if (!combined) return {};\n const view: Record<string, any> = {};\n const text: Record<string, any> = {};\n for (const [k, v] of Object.entries(combined)) {\n if (TEXT_STYLE_KEYS.has(k)) text[k] = v;\n else view[k] = v;\n }\n return {\n viewStyle: Object.keys(view).length ? view : undefined,\n textStyle: Object.keys(text).length ? text : undefined,\n };\n}\n\n/* ---------------------------------------------\n Component\n---------------------------------------------- */\n\nexport default function Dropdown<T = any>({\n value,\n options = [],\n onChange,\n\n optionLabel,\n optionValue,\n\n placeholder,\n disabled,\n editable,\n isModal = false,\n\n checkmark,\n highlightOnSelect = true,\n\n filter,\n filterBy,\n emptyFilterMessage = 'No results found',\n\n itemTemplate,\n valueTemplate,\n panelFooterTemplate,\n\n optionGroupLabel,\n optionGroupChildren,\n optionGroupTemplate,\n\n virtualScrollerOptions,\n\n invalid,\n testID,\n style: externalStyle,\n }: DropdownProps<T>) {\n const inputRef = useRef<any>(null);\n const triggerRef = useRef<View>(null);\n const [open, setOpen] = useState(false);\n const [inputText, setInputText] = useState(\"\");\n const [filterQuery, setFilterQuery] = useState(\"\");\n const [triggerLayout, setTriggerLayout] = useState<{\n x: number; y: number; width: number; height: number;\n } | null>(null);\n const insets = useSafeAreaInsets();\n\n const { viewStyle: externalViewStyle, textStyle: externalTextStyle } = splitStyle(externalStyle);\n\n const colors = {\n border: t('border') || t('gray.300'),\n borderInvalid: t('danger') || t('red.500'),\n bg: t('surface-card') || '#fff',\n text: t('text') || t('gray.800'),\n placeholder: t('text-secondary') || t('gray.400'),\n optionSelected: t('highlight-bg') || t('gray.100'),\n groupBg: t('surface-ground') || t('gray.50'),\n filterBorder: t('border') || t('gray.200'),\n filterBg: t('surface-ground') || t('gray.50'),\n filterText: t('text') || t('gray.800'),\n emptyText: t('text-secondary') || t('gray.400'),\n primary: t('primary'),\n };\n\n /* ---------------------------------------------\n Derived\n ---------------------------------------------- */\n\n const selectedItem = useMemo(() => {\n if (value == null) return null;\n // Search through group children when grouped\n if (optionGroupChildren) {\n for (const group of options as any[]) {\n const children = group[optionGroupChildren];\n if (Array.isArray(children)) {\n const found = children.find((c: any) => getValue(c, optionValue) === value);\n if (found) return found;\n }\n }\n return null;\n }\n return options.find(\n (o) => getValue(o, optionValue) === value\n ) ?? null;\n }, [value, options, optionValue, optionGroupChildren]);\n\n /* ---------------------------------------------\n Open / Close\n ---------------------------------------------- */\n\n const toggle = () => {\n if (disabled) return;\n Keyboard.dismiss();\n if (open) {\n setOpen(false);\n return;\n }\n setFilterQuery(\"\");\n // Measure trigger position in window so the popover can be rendered\n // inside a Modal (escaping any parent ScrollView) at the correct anchor.\n triggerRef.current?.measureInWindow((x, y, width, height) => {\n setTriggerLayout({ x, y, width, height });\n setOpen(true);\n });\n };\n\n const close = () => setOpen(false);\n\n /* ---------------------------------------------\n Selection\n ---------------------------------------------- */\n\n const selectItem = (item: T) => {\n const newValue = getValue(item, optionValue);\n\n if (!onChange) return;\n\n const syntheticEvent = {\n target: {\n value: newValue,\n },\n } as React.ChangeEvent<any>;\n\n onChange(syntheticEvent, item);\n\n setOpen(false);\n };\n\n /* ---------------------------------------------\n Render item\n ---------------------------------------------- */\n\n const renderItem = useCallback(\n (item: any, index: number) => {\n if (!item) {\n return null;\n }\n\n // Group header\n if (item.__group) {\n return (\n <Text key={`group-${index}`} style={[styles.groupLabel, { backgroundColor: colors.groupBg }]}>\n {optionGroupLabel ? item.group?.[optionGroupLabel] : \"\"}\n </Text>\n );\n }\n\n const selected =\n value != null &&\n getValue(item, optionValue) === value;\n\n let content: React.ReactElement;\n\n if (itemTemplate) {\n const rendered = itemTemplate(item);\n\n content = React.isValidElement(rendered) ? (\n rendered\n ) : (\n <Text>{String(rendered ?? \"\")}</Text>\n );\n } else {\n content = (\n <Text style={[{ color: colors.text }, externalTextStyle && { fontSize: externalTextStyle.fontSize }]}>\n {getLabel(item, optionLabel)}\n </Text>\n );\n }\n\n return (\n <Pressable\n key={`item-${index}`}\n onPress={() => selectItem(item)}\n style={[\n styles.option,\n selected && highlightOnSelect && { backgroundColor: colors.optionSelected },\n ]}\n >\n {content}\n {checkmark && selected && <Text>✓</Text>}\n </Pressable>\n );\n },\n [\n value,\n optionValue,\n optionLabel,\n itemTemplate,\n optionGroupLabel,\n checkmark,\n highlightOnSelect,\n ]\n );\n\n\n /* ---------------------------------------------\n Group flattening\n ---------------------------------------------- */\n\n const flatData = useMemo(() => {\n if (!optionGroupLabel || !optionGroupChildren) {\n return options;\n }\n\n const out: any[] = [];\n options.forEach((g: any) => {\n out.push({ __group: true, group: g });\n g[optionGroupChildren]?.forEach((c: any) => out.push(c));\n });\n return out;\n }, [options]);\n\n /* ---------------------------------------------\n Filter\n ---------------------------------------------- */\n\n const filteredData = useMemo(() => {\n if (!filter || !filterQuery) return flatData;\n const q = filterQuery.toLowerCase();\n const key = filterBy || optionLabel;\n\n return flatData.filter((entry: any) => {\n // Keep group headers\n if (entry.__group) return true;\n const label = getLabel(entry, key);\n return label.toLowerCase().includes(q);\n });\n }, [flatData, filter, filterQuery, filterBy, optionLabel]);\n\n /* ---------------------------------------------\n Display value\n ---------------------------------------------- */\n\n const displayValue = valueTemplate\n ? valueTemplate(selectedItem)\n : selectedItem\n ? getLabel(selectedItem, optionLabel)\n : \"\";\n\n /* ---------------------------------------------\n Render\n ---------------------------------------------- */\n\n return (\n <View style={styles.container} testID={testID}>\n <Pressable\n ref={triggerRef as any}\n style={[\n styles.control,\n { borderColor: colors.border, backgroundColor: colors.bg },\n invalid && { borderColor: colors.borderInvalid },\n disabled && styles.disabled,\n externalViewStyle,\n ]}\n onPress={toggle}\n >\n {editable ? (\n <Input style={styles.input}>\n <InputField\n ref={inputRef}\n value={inputText}\n onChangeText={setInputText}\n placeholder={placeholder}\n editable={!disabled}\n />\n </Input>\n ) : (\n <Text\n numberOfLines={1}\n style={[\n // Fill the trigger row and left-align the value/placeholder so it\n // doesn't read as centred (the row is justify=space-between, so the\n // arrow stays pinned right).\n { flex: 1, textAlign: \"left\" as const },\n displayValue ? { color: colors.text } : { color: colors.placeholder },\n externalTextStyle,\n !displayValue && { color: colors.placeholder },\n ]}>\n {displayValue || placeholder}\n </Text>\n )}\n\n <Text style={[{ color: colors.text }, externalTextStyle]}>▾</Text>\n </Pressable>\n\n {!isModal && (\n <Modal\n visible={open && !!triggerLayout}\n transparent\n animationType=\"none\"\n onRequestClose={close}\n >\n <Pressable style={styles.popoverOverlay} onPress={close}>\n {triggerLayout && (() => {\n const screen = Dimensions.get('window');\n const PANEL_MAX_HEIGHT = 260;\n const GAP = 4;\n const spaceBelow =\n screen.height - (triggerLayout.y + triggerLayout.height) - insets.bottom;\n const spaceAbove = triggerLayout.y - insets.top;\n const openUp = spaceBelow < PANEL_MAX_HEIGHT && spaceAbove > spaceBelow;\n const maxHeight = Math.min(\n PANEL_MAX_HEIGHT,\n openUp ? spaceAbove - GAP : spaceBelow - GAP,\n );\n const top = openUp\n ? triggerLayout.y - maxHeight - GAP\n : triggerLayout.y + triggerLayout.height + GAP;\n\n return (\n <View\n style={[\n styles.popoverPanel,\n {\n top,\n left: triggerLayout.x,\n width: triggerLayout.width,\n maxHeight,\n borderColor: colors.border,\n backgroundColor: colors.bg,\n },\n ]}\n onStartShouldSetResponder={() => true}\n >\n {filter && (\n <View style={[styles.filterContainer, { borderBottomColor: colors.filterBorder }]}>\n <TextInput\n value={filterQuery}\n onChangeText={setFilterQuery}\n placeholder=\"Search...\"\n placeholderTextColor={colors.placeholder}\n style={[styles.filterInput, {\n borderColor: colors.filterBorder,\n backgroundColor: colors.filterBg,\n color: colors.filterText,\n }]}\n autoFocus\n />\n </View>\n )}\n <FlatList\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 12 }}\n data={filteredData}\n keyExtractor={(item: any, i: number) =>\n item?.__group ? `group-${i}` : `item-${i}`\n }\n renderItem={({ item, index }) => renderItem(item, index)}\n keyboardShouldPersistTaps=\"handled\"\n showsHorizontalScrollIndicator={false}\n ListEmptyComponent={\n filterQuery ? (\n <View style={styles.emptyContainer}>\n <Text style={[styles.emptyText, { color: colors.emptyText }]}>{emptyFilterMessage}</Text>\n </View>\n ) : null\n }\n />\n {panelFooterTemplate?.()}\n </View>\n );\n })()}\n </Pressable>\n </Modal>\n )}\n\n {isModal && (\n <Modal visible={open} transparent animationType=\"fade\">\n <Pressable style={styles.modalOverlay} onPress={close}>\n <View\n style={[styles.modalPanel, { backgroundColor: colors.bg }]}\n onStartShouldSetResponder={() => true}\n >\n {filter && (\n <View style={[styles.filterContainer, { borderBottomColor: colors.filterBorder }]}>\n <TextInput\n value={filterQuery}\n onChangeText={setFilterQuery}\n placeholder=\"Search...\"\n placeholderTextColor={colors.placeholder}\n style={[styles.filterInput, {\n borderColor: colors.filterBorder,\n backgroundColor: colors.filterBg,\n color: colors.filterText,\n }]}\n autoFocus\n />\n </View>\n )}\n <FlatList\n data={filteredData}\n keyExtractor={(item: any, i: number) =>\n item?.__group ? `group-${i}` : `item-${i}`\n }\n renderItem={({ item, index }) => renderItem(item, index)}\n nestedScrollEnabled\n keyboardShouldPersistTaps=\"handled\"\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 12 }}\n ListEmptyComponent={\n filterQuery ? (\n <View style={styles.emptyContainer}>\n <Text style={[styles.emptyText, { color: colors.emptyText }]}>{emptyFilterMessage}</Text>\n </View>\n ) : null\n }\n />\n {panelFooterTemplate?.()}\n </View>\n </Pressable>\n </Modal>\n )}\n </View>\n );\n}\n\n/* ---------------------------------------------\n Styles (layout only — colors applied inline via theme tokens)\n---------------------------------------------- */\n\nconst styles = StyleSheet.create({\n container: {\n width: \"100%\",\n position: \"relative\" as const,\n },\n control: {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n justifyContent: \"space-between\" as const,\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 10,\n paddingVertical: 10,\n },\n disabled: {\n opacity: 0.5,\n },\n option: {\n paddingHorizontal: 12,\n paddingVertical: 10,\n flexDirection: \"row\" as const,\n justifyContent: \"space-between\" as const,\n alignItems: \"center\" as const,\n },\n groupLabel: {\n paddingHorizontal: 12,\n paddingVertical: 8,\n fontWeight: \"600\" as const,\n },\n input: {\n flex: 1,\n },\n panel: {\n position: \"absolute\" as const,\n top: \"100%\",\n left: 0,\n right: 0,\n marginTop: 4,\n borderWidth: 1,\n borderRadius: 6,\n maxHeight: 260,\n overflow: \"hidden\" as const,\n zIndex: 9999,\n },\n filterContainer: {\n paddingHorizontal: 8,\n paddingVertical: 6,\n borderBottomWidth: 1,\n },\n filterInput: {\n fontSize: 14,\n paddingHorizontal: 8,\n paddingVertical: 6,\n borderWidth: 1,\n borderRadius: 4,\n },\n emptyContainer: {\n padding: 16,\n alignItems: 'center' as const,\n },\n emptyText: {\n fontSize: 14,\n },\n popoverOverlay: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n popoverPanel: {\n position: 'absolute' as const,\n borderWidth: 1,\n borderRadius: 6,\n overflow: 'hidden' as const,\n elevation: 8,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 8,\n },\n modalOverlay: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.4)',\n justifyContent: 'center' as const,\n },\n modalPanel: {\n margin: 24,\n maxHeight: '70%',\n borderRadius: 12,\n overflow: 'hidden' as const,\n },\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ require('yup');
|
|
|
10
10
|
require('../../../../../../packages/types/src/Css/map/index.cjs');
|
|
11
11
|
require('../../../../../../packages/types/src/Theme/shadows.cjs');
|
|
12
12
|
require('../../../../../../packages/types/src/Theme/defaultTheme.cjs');
|
|
13
|
+
require('../../../../../../packages/types/src/Theme/alphaColors.cjs');
|
|
14
|
+
require('../../../Factory/helpers/cssVarMap.cjs');
|
|
13
15
|
|
|
14
16
|
reactNative.StyleSheet.create({
|
|
15
17
|
toolbar: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreToolbar.cjs","sources":["../../../../../../../../../../apps/mobile/src/Core/Trees/components/CoreToolbar.tsx"],"sourcesContent":["// core/tree/components/CoreToolbar.tsx\n\nimport React from 'react';\nimport { View, StyleSheet, useWindowDimensions } from 'react-native';\nimport type { ToolbarProps } from '../types';\nimport { resolveThemeTokenForNative } from '../../../Factory/helpers/style';\n\nconst t = resolveThemeTokenForNative;\n\n/* ------------------------------------------------------------------ */\n/* Toolbar Component */\n/* ------------------------------------------------------------------ */\n\nconst CoreToolbar: React.FC<ToolbarProps> = ({\n start,\n center,\n end,\n className,\n style,\n}) => {\n const { width } = useWindowDimensions();\n const isWide = width >= 768;\n\n const surfaceColor = t('gray.50');\n const borderColor = t('gray.300');\n\n const renderSection = (content: React.ReactNode | (() => React.ReactNode)) => {\n if (!content) return null;\n return typeof content === 'function' ? content() : content;\n };\n\n const startContent = renderSection(start);\n const centerContent = renderSection(center);\n const endContent = renderSection(end);\n\n if (isWide) {\n return (\n <View\n style={[styles.toolbar, { backgroundColor: surfaceColor, borderColor }, style]}\n accessibilityRole=\"toolbar\"\n >\n <View style={styles.startHorizontal}>\n {startContent}\n </View>\n <View style={styles.centerHorizontal}>\n {centerContent}\n </View>\n <View style={styles.endHorizontal}>\n {endContent}\n </View>\n </View>\n );\n }\n\n return (\n <View\n style={[styles.toolbarVertical, { backgroundColor: surfaceColor, borderColor }, style]}\n accessibilityRole=\"toolbar\"\n >\n {startContent && (\n <View style={styles.startVertical}>\n {startContent}\n </View>\n )}\n\n {(centerContent || endContent) && (\n <View style={styles.actionsRow}>\n <View style={styles.centerHorizontal}>\n {centerContent}\n </View>\n <View style={styles.endHorizontal}>\n {endContent}\n </View>\n </View>\n )}\n </View>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Styles (layout only — colors applied inline via theme tokens) */\n/* ------------------------------------------------------------------ */\n\nconst styles = StyleSheet.create({\n toolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n startHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n flex: 1,\n flexShrink: 1,\n minWidth: 0,\n gap: 8,\n },\n centerHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n gap: 4,\n },\n endHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexShrink: 0,\n gap: 4,\n },\n toolbarVertical: {\n flexDirection: 'column',\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n startVertical: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n gap: 8,\n },\n actionsRow: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 8,\n },\n});\n\nexport default CoreToolbar;\n"],"names":["StyleSheet"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoreToolbar.cjs","sources":["../../../../../../../../../../apps/mobile/src/Core/Trees/components/CoreToolbar.tsx"],"sourcesContent":["// core/tree/components/CoreToolbar.tsx\n\nimport React from 'react';\nimport { View, StyleSheet, useWindowDimensions } from 'react-native';\nimport type { ToolbarProps } from '../types';\nimport { resolveThemeTokenForNative } from '../../../Factory/helpers/style';\n\nconst t = resolveThemeTokenForNative;\n\n/* ------------------------------------------------------------------ */\n/* Toolbar Component */\n/* ------------------------------------------------------------------ */\n\nconst CoreToolbar: React.FC<ToolbarProps> = ({\n start,\n center,\n end,\n className,\n style,\n}) => {\n const { width } = useWindowDimensions();\n const isWide = width >= 768;\n\n const surfaceColor = t('gray.50');\n const borderColor = t('gray.300');\n\n const renderSection = (content: React.ReactNode | (() => React.ReactNode)) => {\n if (!content) return null;\n return typeof content === 'function' ? content() : content;\n };\n\n const startContent = renderSection(start);\n const centerContent = renderSection(center);\n const endContent = renderSection(end);\n\n if (isWide) {\n return (\n <View\n style={[styles.toolbar, { backgroundColor: surfaceColor, borderColor }, style]}\n accessibilityRole=\"toolbar\"\n >\n <View style={styles.startHorizontal}>\n {startContent}\n </View>\n <View style={styles.centerHorizontal}>\n {centerContent}\n </View>\n <View style={styles.endHorizontal}>\n {endContent}\n </View>\n </View>\n );\n }\n\n return (\n <View\n style={[styles.toolbarVertical, { backgroundColor: surfaceColor, borderColor }, style]}\n accessibilityRole=\"toolbar\"\n >\n {startContent && (\n <View style={styles.startVertical}>\n {startContent}\n </View>\n )}\n\n {(centerContent || endContent) && (\n <View style={styles.actionsRow}>\n <View style={styles.centerHorizontal}>\n {centerContent}\n </View>\n <View style={styles.endHorizontal}>\n {endContent}\n </View>\n </View>\n )}\n </View>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Styles (layout only — colors applied inline via theme tokens) */\n/* ------------------------------------------------------------------ */\n\nconst styles = StyleSheet.create({\n toolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n startHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n flex: 1,\n flexShrink: 1,\n minWidth: 0,\n gap: 8,\n },\n centerHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n gap: 4,\n },\n endHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexShrink: 0,\n gap: 4,\n },\n toolbarVertical: {\n flexDirection: 'column',\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n startVertical: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n gap: 8,\n },\n actionsRow: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 8,\n },\n});\n\nexport default CoreToolbar;\n"],"names":["StyleSheet"],"mappings":";;;;;;;;;;;;;;;AAmFeA,uBAAW,MAAA,CAAO;AAAA,EAC/B,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,CAAA;AAAA,IACZ,QAAA,EAAU,CAAA;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,CAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,UAAA;AAAA,IAChB,UAAA,EAAY,CAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,aAAA,EAAe,QAAA;AAAA,IACf,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,MAAA;AAAA,IACP,GAAA,EAAK;AAAA,GACP;AAAA,EACA,UAAA,EAAY;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,GAAA,EAAK;AAAA;AAET,CAAC;;"}
|
|
@@ -8,6 +8,8 @@ import 'yup';
|
|
|
8
8
|
import '../../../../../../packages/types/src/Css/map/index.js';
|
|
9
9
|
import '../../../../../../packages/types/src/Theme/shadows.js';
|
|
10
10
|
import '../../../../../../packages/types/src/Theme/defaultTheme.js';
|
|
11
|
+
import '../../../../../../packages/types/src/Theme/alphaColors.js';
|
|
12
|
+
import '../../../Factory/helpers/cssVarMap.js';
|
|
11
13
|
|
|
12
14
|
StyleSheet.create({
|
|
13
15
|
toolbar: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreToolbar.js","sources":["../../../../../../../../../../apps/mobile/src/Core/Trees/components/CoreToolbar.tsx"],"sourcesContent":["// core/tree/components/CoreToolbar.tsx\n\nimport React from 'react';\nimport { View, StyleSheet, useWindowDimensions } from 'react-native';\nimport type { ToolbarProps } from '../types';\nimport { resolveThemeTokenForNative } from '../../../Factory/helpers/style';\n\nconst t = resolveThemeTokenForNative;\n\n/* ------------------------------------------------------------------ */\n/* Toolbar Component */\n/* ------------------------------------------------------------------ */\n\nconst CoreToolbar: React.FC<ToolbarProps> = ({\n start,\n center,\n end,\n className,\n style,\n}) => {\n const { width } = useWindowDimensions();\n const isWide = width >= 768;\n\n const surfaceColor = t('gray.50');\n const borderColor = t('gray.300');\n\n const renderSection = (content: React.ReactNode | (() => React.ReactNode)) => {\n if (!content) return null;\n return typeof content === 'function' ? content() : content;\n };\n\n const startContent = renderSection(start);\n const centerContent = renderSection(center);\n const endContent = renderSection(end);\n\n if (isWide) {\n return (\n <View\n style={[styles.toolbar, { backgroundColor: surfaceColor, borderColor }, style]}\n accessibilityRole=\"toolbar\"\n >\n <View style={styles.startHorizontal}>\n {startContent}\n </View>\n <View style={styles.centerHorizontal}>\n {centerContent}\n </View>\n <View style={styles.endHorizontal}>\n {endContent}\n </View>\n </View>\n );\n }\n\n return (\n <View\n style={[styles.toolbarVertical, { backgroundColor: surfaceColor, borderColor }, style]}\n accessibilityRole=\"toolbar\"\n >\n {startContent && (\n <View style={styles.startVertical}>\n {startContent}\n </View>\n )}\n\n {(centerContent || endContent) && (\n <View style={styles.actionsRow}>\n <View style={styles.centerHorizontal}>\n {centerContent}\n </View>\n <View style={styles.endHorizontal}>\n {endContent}\n </View>\n </View>\n )}\n </View>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Styles (layout only — colors applied inline via theme tokens) */\n/* ------------------------------------------------------------------ */\n\nconst styles = StyleSheet.create({\n toolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n startHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n flex: 1,\n flexShrink: 1,\n minWidth: 0,\n gap: 8,\n },\n centerHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n gap: 4,\n },\n endHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexShrink: 0,\n gap: 4,\n },\n toolbarVertical: {\n flexDirection: 'column',\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n startVertical: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n gap: 8,\n },\n actionsRow: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 8,\n },\n});\n\nexport default CoreToolbar;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoreToolbar.js","sources":["../../../../../../../../../../apps/mobile/src/Core/Trees/components/CoreToolbar.tsx"],"sourcesContent":["// core/tree/components/CoreToolbar.tsx\n\nimport React from 'react';\nimport { View, StyleSheet, useWindowDimensions } from 'react-native';\nimport type { ToolbarProps } from '../types';\nimport { resolveThemeTokenForNative } from '../../../Factory/helpers/style';\n\nconst t = resolveThemeTokenForNative;\n\n/* ------------------------------------------------------------------ */\n/* Toolbar Component */\n/* ------------------------------------------------------------------ */\n\nconst CoreToolbar: React.FC<ToolbarProps> = ({\n start,\n center,\n end,\n className,\n style,\n}) => {\n const { width } = useWindowDimensions();\n const isWide = width >= 768;\n\n const surfaceColor = t('gray.50');\n const borderColor = t('gray.300');\n\n const renderSection = (content: React.ReactNode | (() => React.ReactNode)) => {\n if (!content) return null;\n return typeof content === 'function' ? content() : content;\n };\n\n const startContent = renderSection(start);\n const centerContent = renderSection(center);\n const endContent = renderSection(end);\n\n if (isWide) {\n return (\n <View\n style={[styles.toolbar, { backgroundColor: surfaceColor, borderColor }, style]}\n accessibilityRole=\"toolbar\"\n >\n <View style={styles.startHorizontal}>\n {startContent}\n </View>\n <View style={styles.centerHorizontal}>\n {centerContent}\n </View>\n <View style={styles.endHorizontal}>\n {endContent}\n </View>\n </View>\n );\n }\n\n return (\n <View\n style={[styles.toolbarVertical, { backgroundColor: surfaceColor, borderColor }, style]}\n accessibilityRole=\"toolbar\"\n >\n {startContent && (\n <View style={styles.startVertical}>\n {startContent}\n </View>\n )}\n\n {(centerContent || endContent) && (\n <View style={styles.actionsRow}>\n <View style={styles.centerHorizontal}>\n {centerContent}\n </View>\n <View style={styles.endHorizontal}>\n {endContent}\n </View>\n </View>\n )}\n </View>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Styles (layout only — colors applied inline via theme tokens) */\n/* ------------------------------------------------------------------ */\n\nconst styles = StyleSheet.create({\n toolbar: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n startHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n flex: 1,\n flexShrink: 1,\n minWidth: 0,\n gap: 8,\n },\n centerHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n gap: 4,\n },\n endHorizontal: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexShrink: 0,\n gap: 4,\n },\n toolbarVertical: {\n flexDirection: 'column',\n borderWidth: 1,\n borderRadius: 6,\n paddingHorizontal: 12,\n paddingVertical: 8,\n gap: 8,\n },\n startVertical: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n gap: 8,\n },\n actionsRow: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 8,\n },\n});\n\nexport default CoreToolbar;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAmFe,WAAW,MAAA,CAAO;AAAA,EAC/B,OAAA,EAAS;AAAA,IACP,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,IAAA,EAAM,CAAA;AAAA,IACN,UAAA,EAAY,CAAA;AAAA,IACZ,QAAA,EAAU,CAAA;AAAA,IACV,GAAA,EAAK;AAAA,GACP;AAAA,EACA,gBAAA,EAAkB;AAAA,IAChB,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,CAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,UAAA;AAAA,IAChB,UAAA,EAAY,CAAA;AAAA,IACZ,GAAA,EAAK;AAAA,GACP;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,aAAA,EAAe,QAAA;AAAA,IACf,WAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAc,CAAA;AAAA,IACd,iBAAA,EAAmB,EAAA;AAAA,IACnB,eAAA,EAAiB,CAAA;AAAA,IACjB,GAAA,EAAK;AAAA,GACP;AAAA,EACA,aAAA,EAAe;AAAA,IACb,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,MAAA;AAAA,IACP,GAAA,EAAK;AAAA,GACP;AAAA,EACA,UAAA,EAAY;AAAA,IACV,aAAA,EAAe,KAAA;AAAA,IACf,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,eAAA;AAAA,IAChB,GAAA,EAAK;AAAA;AAET,CAAC"}
|
|
@@ -64,6 +64,8 @@ require('yup');
|
|
|
64
64
|
require('../../../../packages/types/src/Css/map/index.cjs');
|
|
65
65
|
require('../../../../packages/types/src/Theme/shadows.cjs');
|
|
66
66
|
require('../../../../packages/types/src/Theme/defaultTheme.cjs');
|
|
67
|
+
require('../../../../packages/types/src/Theme/alphaColors.cjs');
|
|
68
|
+
require('./helpers/cssVarMap.cjs');
|
|
67
69
|
require('i18next');
|
|
68
70
|
require('react-i18next');
|
|
69
71
|
require('../Core/AutoComplete/index.cjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponsiveElement.cjs","sources":["../../../../../../../../apps/mobile/src/Factory/ResponsiveElement.tsx"],"sourcesContent":["import React, {useMemo,} from 'react';\nimport {GestureResponderEvent, Pressable as RNPressable, ScrollView, TouchableOpacity, View} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport type {IResponsiveElement} from '@lmb-it/kitsconcerto-types';\nimport {\n Box,\n Card,\n Center,\n Grid,\n GridItem,\n Heading,\n HStack,\n Image,\n Skeleton,\n Text,\n VStack\n} from '@lmb-it/kitsconcertomobile';\nimport {style} from './helpers/style';\nimport {useStyleContext} from './DimensionsContext';\nimport {enteringPresets, exitingPresets} from './animationPresets';\nimport {useKitsTheme} from '@lmb-it/kitsconcerto/contexts/Theme';\n\n\nconst COMPONENT_MAP: Record<string, React.ElementType<any>> = {\n Svg: View,\n List: View,\n ListItem: View,\n a: RNPressable,\n Pressable: RNPressable,\n Box,\n Image,\n Grid,\n GridItem,\n Card,\n Text,\n Heading,\n Center,\n Skeleton,\n HStack, VStack,\n ScrollView: ScrollView,\n};\n\n\n\nconst ResponsiveElement = <T,>({\n additionalStyles = {},\n additionalClasses, // ignored in native\n nativeProps,\n cssProps,\n children,\n as,\n scrollable,\n entering,\n exiting,\n ref, // directly available in React 19+\n }: React.PropsWithChildren<IResponsiveElement<T>> & { ref?: React.Ref<any> }) => {\n\n const styleCtx = useStyleContext();\n const {colorMode} = useKitsTheme();\n const combinedStyles = useMemo(() => {\n // KitsConcerto resolves `additionalStyles` (theme / component defaults)\n // and `cssProps` (CSS-prop pipeline like `bgColor`, `p`, `fontSize`)\n // into a single RN style object via `style(...)`.\n //\n // The consumer's `style` prop is then appended AS-IS — RN's own\n // style cascade flattens any shape (plain object, StyleSheet-created\n // numeric ID, or nested array) and applies it last so user-supplied\n // overrides win. Spreading `...nativeProps.style` into an object here\n // silently drops non-object values (numbers spread to nothing, arrays\n // spread numeric indices instead of merging styles).\n const base = style({ ...additionalStyles, ...cssProps }, styleCtx);\n return nativeProps?.style ? [base, nativeProps.style] : [base];\n }, [cssProps, additionalStyles, nativeProps?.style, styleCtx, colorMode]);\n\n const Component = as\n ? COMPONENT_MAP[as] || View\n : View;\n\n\n\n const isText = (typeof children === 'string' || typeof children === 'number') && (as !== 'Heading' && as !== 'Text')\n\n const hasAnimation = !!(entering || exiting);\n\n // Read animation duration/delay from cssProps (they flow through useSeparator)\n const animationDuration = cssProps?.animationDuration as number | undefined;\n const animationDelay = cssProps?.animationDelay as number | undefined;\n\n const enteringAnim = useMemo(() => {\n if (!entering) return undefined;\n let anim: any = enteringPresets[entering];\n if (animationDuration != null) anim = anim.duration(animationDuration);\n if (animationDelay != null) anim = anim.delay(animationDelay);\n return anim;\n }, [entering, animationDuration, animationDelay]);\n\n const exitingAnim = useMemo(() => {\n if (!exiting) return undefined;\n let anim: any = exitingPresets[exiting];\n if (animationDuration != null) anim = anim.duration(animationDuration);\n if (animationDelay != null) anim = anim.delay(animationDelay);\n return anim;\n }, [exiting, animationDuration, animationDelay]);\n\n /* ---- Press handling for non-Button components ---- */\n const pressHandler = ('onClick' in nativeProps ? nativeProps?.onClick : 'onPress' in nativeProps ? nativeProps?.onPress : null) as ((event: GestureResponderEvent) => void) | null;\n const hasPressHandler = typeof pressHandler === 'function';\n const isButton = as === 'Pressable' || as === 'a';\n const isImage = as === 'Image';\n\n // Strip onClick/onPress from nativeProps — View/Image don't support them\n const cleanedNativeProps = useMemo(() => {\n if (!hasPressHandler || isButton) return nativeProps;\n if (!nativeProps) return nativeProps;\n const {onClick, onPress, ...rest} = nativeProps as any;\n return rest;\n }, [nativeProps, hasPressHandler, isButton]);\n\n const touchFill = {width: '100%' as const, height: '100%' as const};\n\n let content: React.ReactElement;\n\n if (hasPressHandler && pressHandler && !isButton) {\n if (isImage) {\n // Image: wrap externally so the whole image area is tappable\n content = (\n <TouchableOpacity activeOpacity={0.7} onPress={pressHandler}>\n <Component ref={ref} {...cleanedNativeProps} style={combinedStyles} className={additionalClasses}/>\n </TouchableOpacity>\n );\n } else {\n // Box, VStack, HStack, Center, Text, etc.: inject TouchableOpacity as child\n content = (\n <TouchableOpacity activeOpacity={0.7} onPress={pressHandler} style={combinedStyles}>\n <Component\n ref={ref}\n {...cleanedNativeProps}\n // `combinedStyles` is an array — use array-spread rather than\n // object-spread. Object-spreading an array produces `{0: ..., 1: ...}`\n // garbage and RN's renderer ignores it.\n style={[...combinedStyles, {borderWidth: 0}]}\n className={additionalClasses}>\n {isText ? <Text>{children}</Text> : children}\n </Component>\n </TouchableOpacity>\n );\n }\n } else {\n content = (\n <Component ref={ref} {...nativeProps} style={combinedStyles} className={additionalClasses}>\n {isText ? <Text>{children}</Text> : children}\n </Component>\n );\n }\n\n if (scrollable) {\n return <ScrollView horizontal={as === 'HStack'}>{content}</ScrollView>;\n }\n\n if (hasAnimation) {\n return (\n <Animated.View entering={enteringAnim} exiting={exitingAnim}>\n {content}\n </Animated.View>\n );\n }\n\n return content;\n}\n\nexport default ResponsiveElement;\n"],"names":["View","RNPressable","Box","Image","Grid","GridItem","Card","Text","Heading","Center","Skeleton","HStack","VStack","ScrollView","useStyleContext","useKitsTheme","useMemo","style","enteringPresets","exitingPresets","jsx","TouchableOpacity"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,aAAA,GAAwD;AAAA,EAC5D,GAAA,EAAKA,gBAAA;AAAA,EACL,IAAA,EAAMA,gBAAA;AAAA,EACN,QAAA,EAAUA,gBAAA;AAAA,EACV,CAAA,EAAGC,qBAAA;AAAA,EACH,SAAA,EAAWA,qBAAA;AAAA,OACXC,WAAA;AAAA,SACAC,aAAA;AAAA,QACAC,YAAA;AAAA,YACAC,gBAAA;AAAA,QACAC,YAAA;AAAA,QACAC,YAAA;AAAA,WACAC,eAAA;AAAA,UACAC,cAAA;AAAA,YACAC,gBAAA;AAAA,UACAC,cAAA;AAAA,UAAQC,YAAA;AAAA,cACRC;AACF,CAAA;AAIA,MAAM,oBAAoB,CAAK;AAAA,EACE,mBAAmB,EAAC;AAAA,EACpB,iBAAA;AAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AAAA;AACF,CAAA,KAAiF;AAE9G,EAAA,MAAM,WAAWC,iCAAA,EAAgB;AACjC,EAAA,MAAM,EAAC,SAAA,EAAS,GAAIC,qCAAA,EAAa;AACjC,EAAA,MAAM,cAAA,GAAiBC,cAAQ,MAAM;AAWnC,IAAA,MAAM,IAAA,GAAOC,YAAM,EAAE,GAAG,kBAAkB,GAAG,QAAA,IAAY,QAAQ,CAAA;AACjE,IAAA,OAAO,WAAA,EAAa,QAAQ,CAAC,IAAA,EAAM,YAAY,KAAK,CAAA,GAAI,CAAC,IAAI,CAAA;AAAA,EAC/D,CAAA,EAAG,CAAC,QAAA,EAAU,gBAAA,EAAkB,aAAa,KAAA,EAAO,QAAA,EAAU,SAAS,CAAC,CAAA;AAExE,EAAA,MAAM,SAAA,GAAY,EAAA,GACd,aAAA,CAAc,EAAE,KAAKjB,gBAAA,GACrBA,gBAAA;AAIJ,EAAA,MAAM,MAAA,GAAA,CAAU,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,QAAA,MAAc,EAAA,KAAO,SAAA,IAAa,EAAA,KAAO,MAAA,CAAA;AAE7G,EAAA,MAAM,YAAA,GAAe,CAAC,EAAE,QAAA,IAAY,OAAA,CAAA;AAGpC,EAAA,MAAM,oBAAoB,QAAA,EAAU,iBAAA;AACpC,EAAA,MAAM,iBAAiB,QAAA,EAAU,cAAA;AAEjC,EAAA,MAAM,YAAA,GAAegB,cAAQ,MAAM;AACjC,IAAA,IAAI,CAAC,UAAU,OAAO,MAAA;AACtB,IAAA,IAAI,IAAA,GAAYE,iCAAgB,QAAQ,CAAA;AACxC,IAAA,IAAI,iBAAA,IAAqB,IAAA,EAAM,IAAA,GAAO,IAAA,CAAK,SAAS,iBAAiB,CAAA;AACrE,IAAA,IAAI,cAAA,IAAkB,IAAA,EAAM,IAAA,GAAO,IAAA,CAAK,MAAM,cAAc,CAAA;AAC5D,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,QAAA,EAAU,iBAAA,EAAmB,cAAc,CAAC,CAAA;AAEhD,EAAA,MAAM,WAAA,GAAcF,cAAQ,MAAM;AAChC,IAAA,IAAI,CAAC,SAAS,OAAO,MAAA;AACrB,IAAA,IAAI,IAAA,GAAYG,gCAAe,OAAO,CAAA;AACtC,IAAA,IAAI,iBAAA,IAAqB,IAAA,EAAM,IAAA,GAAO,IAAA,CAAK,SAAS,iBAAiB,CAAA;AACrE,IAAA,IAAI,cAAA,IAAkB,IAAA,EAAM,IAAA,GAAO,IAAA,CAAK,MAAM,cAAc,CAAA;AAC5D,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,OAAA,EAAS,iBAAA,EAAmB,cAAc,CAAC,CAAA;AAG/C,EAAA,MAAM,YAAA,GAAgB,aAAa,WAAA,GAAc,WAAA,EAAa,UAAU,SAAA,IAAa,WAAA,GAAc,aAAa,OAAA,GAAU,IAAA;AAC1H,EAAA,MAAM,eAAA,GAAkB,OAAO,YAAA,KAAiB,UAAA;AAChD,EAAA,MAAM,QAAA,GAAW,EAAA,KAAO,WAAA,IAAe,EAAA,KAAO,GAAA;AAC9C,EAAA,MAAM,UAAU,EAAA,KAAO,OAAA;AAGvB,EAAA,MAAM,kBAAA,GAAqBH,cAAQ,MAAM;AACvC,IAAA,IAAI,CAAC,eAAA,IAAmB,QAAA,EAAU,OAAO,WAAA;AACzC,IAAA,IAAI,CAAC,aAAa,OAAO,WAAA;AACzB,IAAA,MAAM,EAAC,OAAA,EAAS,OAAA,EAAS,GAAG,MAAI,GAAI,WAAA;AACpC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,WAAA,EAAa,eAAA,EAAiB,QAAQ,CAAC,CAAA;AAI3C,EAAA,IAAI,OAAA;AAEJ,EAAA,IAAI,eAAA,IAAmB,YAAA,IAAgB,CAAC,QAAA,EAAU;AAChD,IAAA,IAAI,OAAA,EAAS;AAEX,MAAA,OAAA,mBACII,cAAA,CAACC,4BAAA,EAAA,EAAiB,aAAA,EAAe,GAAA,EAAK,SAAS,YAAA,EAC7C,QAAA,kBAAAD,cAAA,CAAC,SAAA,EAAA,EAAU,GAAA,EAAW,GAAG,kBAAA,EAAoB,KAAA,EAAO,cAAA,EAAgB,SAAA,EAAW,mBAAkB,CAAA,EACnG,CAAA;AAAA,IAEN,CAAA,MAAO;AAEL,MAAA,OAAA,kCACKC,4BAAA,EAAA,EAAiB,aAAA,EAAe,KAAK,OAAA,EAAS,YAAA,EAAc,OAAO,cAAA,EAClE,QAAA,kBAAAD,cAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACC,GAAG,kBAAA;AAAA,UAIJ,OAAO,CAAC,GAAG,gBAAgB,EAAC,WAAA,EAAa,GAAE,CAAA;AAAA,UAC3C,SAAA,EAAW,iBAAA;AAAA,UACV,QAAA,EAAA,MAAA,mBAASA,cAAA,CAACb,YAAA,EAAA,EAAM,QAAA,EAAS,CAAA,GAAU;AAAA;AAAA,OACtC,EACF,CAAA;AAAA,IAEN;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAA,mBACIa,cAAA,CAAC,SAAA,EAAA,EAAU,GAAA,EAAW,GAAG,aAAa,KAAA,EAAO,cAAA,EAAgB,SAAA,EAAW,iBAAA,EACrE,QAAA,EAAA,MAAA,mBAASA,cAAA,CAACb,YAAA,EAAA,EAAM,QAAA,EAAS,IAAU,QAAA,EACtC,CAAA;AAAA,EAEN;AAEA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBAAOa,cAAA,CAACP,sBAAA,EAAA,EAAW,UAAA,EAAY,EAAA,KAAO,UAAW,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,EAC3D;AAEA,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,uBACEO,cAAA,CAAC,SAAS,IAAA,EAAT,EAAc,UAAU,YAAA,EAAc,OAAA,EAAS,aAC7C,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,OAAA;AACT;;;;"}
|
|
1
|
+
{"version":3,"file":"ResponsiveElement.cjs","sources":["../../../../../../../../apps/mobile/src/Factory/ResponsiveElement.tsx"],"sourcesContent":["import React, {useMemo,} from 'react';\nimport {GestureResponderEvent, Pressable as RNPressable, ScrollView, TouchableOpacity, View} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport type {IResponsiveElement} from '@lmb-it/kitsconcerto-types';\nimport {\n Box,\n Card,\n Center,\n Grid,\n GridItem,\n Heading,\n HStack,\n Image,\n Skeleton,\n Text,\n VStack\n} from '@lmb-it/kitsconcertomobile';\nimport {style} from './helpers/style';\nimport {useStyleContext} from './DimensionsContext';\nimport {enteringPresets, exitingPresets} from './animationPresets';\nimport {useKitsTheme} from '@lmb-it/kitsconcerto/contexts/Theme';\n\n\nconst COMPONENT_MAP: Record<string, React.ElementType<any>> = {\n Svg: View,\n List: View,\n ListItem: View,\n a: RNPressable,\n Pressable: RNPressable,\n Box,\n Image,\n Grid,\n GridItem,\n Card,\n Text,\n Heading,\n Center,\n Skeleton,\n HStack, VStack,\n ScrollView: ScrollView,\n};\n\n\n\nconst ResponsiveElement = <T,>({\n additionalStyles = {},\n additionalClasses, // ignored in native\n nativeProps,\n cssProps,\n children,\n as,\n scrollable,\n entering,\n exiting,\n ref, // directly available in React 19+\n }: React.PropsWithChildren<IResponsiveElement<T>> & { ref?: React.Ref<any> }) => {\n\n const styleCtx = useStyleContext();\n const {colorMode} = useKitsTheme();\n const combinedStyles = useMemo(() => {\n // KitsConcerto resolves `additionalStyles` (theme / component defaults)\n // and `cssProps` (CSS-prop pipeline like `bgColor`, `p`, `fontSize`)\n // into a single RN style object via `style(...)`.\n //\n // The consumer's `style` prop is then appended AS-IS — RN's own\n // style cascade flattens any shape (plain object, StyleSheet-created\n // numeric ID, or nested array) and applies it last so user-supplied\n // overrides win. Spreading `...nativeProps.style` into an object here\n // silently drops non-object values (numbers spread to nothing, arrays\n // spread numeric indices instead of merging styles).\n const base = style({ ...additionalStyles, ...cssProps }, styleCtx);\n return nativeProps?.style ? [base, nativeProps.style] : [base];\n }, [cssProps, additionalStyles, nativeProps?.style, styleCtx, colorMode]);\n\n const Component = as\n ? COMPONENT_MAP[as] || View\n : View;\n\n\n\n const isText = (typeof children === 'string' || typeof children === 'number') && (as !== 'Heading' && as !== 'Text')\n\n const hasAnimation = !!(entering || exiting);\n\n // Read animation duration/delay from cssProps (they flow through useSeparator)\n const animationDuration = cssProps?.animationDuration as number | undefined;\n const animationDelay = cssProps?.animationDelay as number | undefined;\n\n const enteringAnim = useMemo(() => {\n if (!entering) return undefined;\n let anim: any = enteringPresets[entering];\n if (animationDuration != null) anim = anim.duration(animationDuration);\n if (animationDelay != null) anim = anim.delay(animationDelay);\n return anim;\n }, [entering, animationDuration, animationDelay]);\n\n const exitingAnim = useMemo(() => {\n if (!exiting) return undefined;\n let anim: any = exitingPresets[exiting];\n if (animationDuration != null) anim = anim.duration(animationDuration);\n if (animationDelay != null) anim = anim.delay(animationDelay);\n return anim;\n }, [exiting, animationDuration, animationDelay]);\n\n /* ---- Press handling for non-Button components ---- */\n const pressHandler = ('onClick' in nativeProps ? nativeProps?.onClick : 'onPress' in nativeProps ? nativeProps?.onPress : null) as ((event: GestureResponderEvent) => void) | null;\n const hasPressHandler = typeof pressHandler === 'function';\n const isButton = as === 'Pressable' || as === 'a';\n const isImage = as === 'Image';\n\n // Strip onClick/onPress from nativeProps — View/Image don't support them\n const cleanedNativeProps = useMemo(() => {\n if (!hasPressHandler || isButton) return nativeProps;\n if (!nativeProps) return nativeProps;\n const {onClick, onPress, ...rest} = nativeProps as any;\n return rest;\n }, [nativeProps, hasPressHandler, isButton]);\n\n const touchFill = {width: '100%' as const, height: '100%' as const};\n\n let content: React.ReactElement;\n\n if (hasPressHandler && pressHandler && !isButton) {\n if (isImage) {\n // Image: wrap externally so the whole image area is tappable\n content = (\n <TouchableOpacity activeOpacity={0.7} onPress={pressHandler}>\n <Component ref={ref} {...cleanedNativeProps} style={combinedStyles} className={additionalClasses}/>\n </TouchableOpacity>\n );\n } else {\n // Box, VStack, HStack, Center, Text, etc.: inject TouchableOpacity as child\n content = (\n <TouchableOpacity activeOpacity={0.7} onPress={pressHandler} style={combinedStyles}>\n <Component\n ref={ref}\n {...cleanedNativeProps}\n // `combinedStyles` is an array — use array-spread rather than\n // object-spread. Object-spreading an array produces `{0: ..., 1: ...}`\n // garbage and RN's renderer ignores it.\n style={[...combinedStyles, {borderWidth: 0}]}\n className={additionalClasses}>\n {isText ? <Text>{children}</Text> : children}\n </Component>\n </TouchableOpacity>\n );\n }\n } else {\n content = (\n <Component ref={ref} {...nativeProps} style={combinedStyles} className={additionalClasses}>\n {isText ? <Text>{children}</Text> : children}\n </Component>\n );\n }\n\n if (scrollable) {\n return <ScrollView horizontal={as === 'HStack'}>{content}</ScrollView>;\n }\n\n if (hasAnimation) {\n return (\n <Animated.View entering={enteringAnim} exiting={exitingAnim}>\n {content}\n </Animated.View>\n );\n }\n\n return content;\n}\n\nexport default ResponsiveElement;\n"],"names":["View","RNPressable","Box","Image","Grid","GridItem","Card","Text","Heading","Center","Skeleton","HStack","VStack","ScrollView","useStyleContext","useKitsTheme","useMemo","style","enteringPresets","exitingPresets","jsx","TouchableOpacity"],"mappings":"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"}
|
|
@@ -60,6 +60,8 @@ import 'yup';
|
|
|
60
60
|
import '../../../../packages/types/src/Css/map/index.js';
|
|
61
61
|
import '../../../../packages/types/src/Theme/shadows.js';
|
|
62
62
|
import '../../../../packages/types/src/Theme/defaultTheme.js';
|
|
63
|
+
import '../../../../packages/types/src/Theme/alphaColors.js';
|
|
64
|
+
import './helpers/cssVarMap.js';
|
|
63
65
|
import 'i18next';
|
|
64
66
|
import 'react-i18next';
|
|
65
67
|
import '../Core/AutoComplete/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponsiveElement.js","sources":["../../../../../../../../apps/mobile/src/Factory/ResponsiveElement.tsx"],"sourcesContent":["import React, {useMemo,} from 'react';\nimport {GestureResponderEvent, Pressable as RNPressable, ScrollView, TouchableOpacity, View} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport type {IResponsiveElement} from '@lmb-it/kitsconcerto-types';\nimport {\n Box,\n Card,\n Center,\n Grid,\n GridItem,\n Heading,\n HStack,\n Image,\n Skeleton,\n Text,\n VStack\n} from '@lmb-it/kitsconcertomobile';\nimport {style} from './helpers/style';\nimport {useStyleContext} from './DimensionsContext';\nimport {enteringPresets, exitingPresets} from './animationPresets';\nimport {useKitsTheme} from '@lmb-it/kitsconcerto/contexts/Theme';\n\n\nconst COMPONENT_MAP: Record<string, React.ElementType<any>> = {\n Svg: View,\n List: View,\n ListItem: View,\n a: RNPressable,\n Pressable: RNPressable,\n Box,\n Image,\n Grid,\n GridItem,\n Card,\n Text,\n Heading,\n Center,\n Skeleton,\n HStack, VStack,\n ScrollView: ScrollView,\n};\n\n\n\nconst ResponsiveElement = <T,>({\n additionalStyles = {},\n additionalClasses, // ignored in native\n nativeProps,\n cssProps,\n children,\n as,\n scrollable,\n entering,\n exiting,\n ref, // directly available in React 19+\n }: React.PropsWithChildren<IResponsiveElement<T>> & { ref?: React.Ref<any> }) => {\n\n const styleCtx = useStyleContext();\n const {colorMode} = useKitsTheme();\n const combinedStyles = useMemo(() => {\n // KitsConcerto resolves `additionalStyles` (theme / component defaults)\n // and `cssProps` (CSS-prop pipeline like `bgColor`, `p`, `fontSize`)\n // into a single RN style object via `style(...)`.\n //\n // The consumer's `style` prop is then appended AS-IS — RN's own\n // style cascade flattens any shape (plain object, StyleSheet-created\n // numeric ID, or nested array) and applies it last so user-supplied\n // overrides win. Spreading `...nativeProps.style` into an object here\n // silently drops non-object values (numbers spread to nothing, arrays\n // spread numeric indices instead of merging styles).\n const base = style({ ...additionalStyles, ...cssProps }, styleCtx);\n return nativeProps?.style ? [base, nativeProps.style] : [base];\n }, [cssProps, additionalStyles, nativeProps?.style, styleCtx, colorMode]);\n\n const Component = as\n ? COMPONENT_MAP[as] || View\n : View;\n\n\n\n const isText = (typeof children === 'string' || typeof children === 'number') && (as !== 'Heading' && as !== 'Text')\n\n const hasAnimation = !!(entering || exiting);\n\n // Read animation duration/delay from cssProps (they flow through useSeparator)\n const animationDuration = cssProps?.animationDuration as number | undefined;\n const animationDelay = cssProps?.animationDelay as number | undefined;\n\n const enteringAnim = useMemo(() => {\n if (!entering) return undefined;\n let anim: any = enteringPresets[entering];\n if (animationDuration != null) anim = anim.duration(animationDuration);\n if (animationDelay != null) anim = anim.delay(animationDelay);\n return anim;\n }, [entering, animationDuration, animationDelay]);\n\n const exitingAnim = useMemo(() => {\n if (!exiting) return undefined;\n let anim: any = exitingPresets[exiting];\n if (animationDuration != null) anim = anim.duration(animationDuration);\n if (animationDelay != null) anim = anim.delay(animationDelay);\n return anim;\n }, [exiting, animationDuration, animationDelay]);\n\n /* ---- Press handling for non-Button components ---- */\n const pressHandler = ('onClick' in nativeProps ? nativeProps?.onClick : 'onPress' in nativeProps ? nativeProps?.onPress : null) as ((event: GestureResponderEvent) => void) | null;\n const hasPressHandler = typeof pressHandler === 'function';\n const isButton = as === 'Pressable' || as === 'a';\n const isImage = as === 'Image';\n\n // Strip onClick/onPress from nativeProps — View/Image don't support them\n const cleanedNativeProps = useMemo(() => {\n if (!hasPressHandler || isButton) return nativeProps;\n if (!nativeProps) return nativeProps;\n const {onClick, onPress, ...rest} = nativeProps as any;\n return rest;\n }, [nativeProps, hasPressHandler, isButton]);\n\n const touchFill = {width: '100%' as const, height: '100%' as const};\n\n let content: React.ReactElement;\n\n if (hasPressHandler && pressHandler && !isButton) {\n if (isImage) {\n // Image: wrap externally so the whole image area is tappable\n content = (\n <TouchableOpacity activeOpacity={0.7} onPress={pressHandler}>\n <Component ref={ref} {...cleanedNativeProps} style={combinedStyles} className={additionalClasses}/>\n </TouchableOpacity>\n );\n } else {\n // Box, VStack, HStack, Center, Text, etc.: inject TouchableOpacity as child\n content = (\n <TouchableOpacity activeOpacity={0.7} onPress={pressHandler} style={combinedStyles}>\n <Component\n ref={ref}\n {...cleanedNativeProps}\n // `combinedStyles` is an array — use array-spread rather than\n // object-spread. Object-spreading an array produces `{0: ..., 1: ...}`\n // garbage and RN's renderer ignores it.\n style={[...combinedStyles, {borderWidth: 0}]}\n className={additionalClasses}>\n {isText ? <Text>{children}</Text> : children}\n </Component>\n </TouchableOpacity>\n );\n }\n } else {\n content = (\n <Component ref={ref} {...nativeProps} style={combinedStyles} className={additionalClasses}>\n {isText ? <Text>{children}</Text> : children}\n </Component>\n );\n }\n\n if (scrollable) {\n return <ScrollView horizontal={as === 'HStack'}>{content}</ScrollView>;\n }\n\n if (hasAnimation) {\n return (\n <Animated.View entering={enteringAnim} exiting={exitingAnim}>\n {content}\n </Animated.View>\n );\n }\n\n return content;\n}\n\nexport default ResponsiveElement;\n"],"names":["RNPressable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ResponsiveElement.js","sources":["../../../../../../../../apps/mobile/src/Factory/ResponsiveElement.tsx"],"sourcesContent":["import React, {useMemo,} from 'react';\nimport {GestureResponderEvent, Pressable as RNPressable, ScrollView, TouchableOpacity, View} from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport type {IResponsiveElement} from '@lmb-it/kitsconcerto-types';\nimport {\n Box,\n Card,\n Center,\n Grid,\n GridItem,\n Heading,\n HStack,\n Image,\n Skeleton,\n Text,\n VStack\n} from '@lmb-it/kitsconcertomobile';\nimport {style} from './helpers/style';\nimport {useStyleContext} from './DimensionsContext';\nimport {enteringPresets, exitingPresets} from './animationPresets';\nimport {useKitsTheme} from '@lmb-it/kitsconcerto/contexts/Theme';\n\n\nconst COMPONENT_MAP: Record<string, React.ElementType<any>> = {\n Svg: View,\n List: View,\n ListItem: View,\n a: RNPressable,\n Pressable: RNPressable,\n Box,\n Image,\n Grid,\n GridItem,\n Card,\n Text,\n Heading,\n Center,\n Skeleton,\n HStack, VStack,\n ScrollView: ScrollView,\n};\n\n\n\nconst ResponsiveElement = <T,>({\n additionalStyles = {},\n additionalClasses, // ignored in native\n nativeProps,\n cssProps,\n children,\n as,\n scrollable,\n entering,\n exiting,\n ref, // directly available in React 19+\n }: React.PropsWithChildren<IResponsiveElement<T>> & { ref?: React.Ref<any> }) => {\n\n const styleCtx = useStyleContext();\n const {colorMode} = useKitsTheme();\n const combinedStyles = useMemo(() => {\n // KitsConcerto resolves `additionalStyles` (theme / component defaults)\n // and `cssProps` (CSS-prop pipeline like `bgColor`, `p`, `fontSize`)\n // into a single RN style object via `style(...)`.\n //\n // The consumer's `style` prop is then appended AS-IS — RN's own\n // style cascade flattens any shape (plain object, StyleSheet-created\n // numeric ID, or nested array) and applies it last so user-supplied\n // overrides win. Spreading `...nativeProps.style` into an object here\n // silently drops non-object values (numbers spread to nothing, arrays\n // spread numeric indices instead of merging styles).\n const base = style({ ...additionalStyles, ...cssProps }, styleCtx);\n return nativeProps?.style ? [base, nativeProps.style] : [base];\n }, [cssProps, additionalStyles, nativeProps?.style, styleCtx, colorMode]);\n\n const Component = as\n ? COMPONENT_MAP[as] || View\n : View;\n\n\n\n const isText = (typeof children === 'string' || typeof children === 'number') && (as !== 'Heading' && as !== 'Text')\n\n const hasAnimation = !!(entering || exiting);\n\n // Read animation duration/delay from cssProps (they flow through useSeparator)\n const animationDuration = cssProps?.animationDuration as number | undefined;\n const animationDelay = cssProps?.animationDelay as number | undefined;\n\n const enteringAnim = useMemo(() => {\n if (!entering) return undefined;\n let anim: any = enteringPresets[entering];\n if (animationDuration != null) anim = anim.duration(animationDuration);\n if (animationDelay != null) anim = anim.delay(animationDelay);\n return anim;\n }, [entering, animationDuration, animationDelay]);\n\n const exitingAnim = useMemo(() => {\n if (!exiting) return undefined;\n let anim: any = exitingPresets[exiting];\n if (animationDuration != null) anim = anim.duration(animationDuration);\n if (animationDelay != null) anim = anim.delay(animationDelay);\n return anim;\n }, [exiting, animationDuration, animationDelay]);\n\n /* ---- Press handling for non-Button components ---- */\n const pressHandler = ('onClick' in nativeProps ? nativeProps?.onClick : 'onPress' in nativeProps ? nativeProps?.onPress : null) as ((event: GestureResponderEvent) => void) | null;\n const hasPressHandler = typeof pressHandler === 'function';\n const isButton = as === 'Pressable' || as === 'a';\n const isImage = as === 'Image';\n\n // Strip onClick/onPress from nativeProps — View/Image don't support them\n const cleanedNativeProps = useMemo(() => {\n if (!hasPressHandler || isButton) return nativeProps;\n if (!nativeProps) return nativeProps;\n const {onClick, onPress, ...rest} = nativeProps as any;\n return rest;\n }, [nativeProps, hasPressHandler, isButton]);\n\n const touchFill = {width: '100%' as const, height: '100%' as const};\n\n let content: React.ReactElement;\n\n if (hasPressHandler && pressHandler && !isButton) {\n if (isImage) {\n // Image: wrap externally so the whole image area is tappable\n content = (\n <TouchableOpacity activeOpacity={0.7} onPress={pressHandler}>\n <Component ref={ref} {...cleanedNativeProps} style={combinedStyles} className={additionalClasses}/>\n </TouchableOpacity>\n );\n } else {\n // Box, VStack, HStack, Center, Text, etc.: inject TouchableOpacity as child\n content = (\n <TouchableOpacity activeOpacity={0.7} onPress={pressHandler} style={combinedStyles}>\n <Component\n ref={ref}\n {...cleanedNativeProps}\n // `combinedStyles` is an array — use array-spread rather than\n // object-spread. Object-spreading an array produces `{0: ..., 1: ...}`\n // garbage and RN's renderer ignores it.\n style={[...combinedStyles, {borderWidth: 0}]}\n className={additionalClasses}>\n {isText ? <Text>{children}</Text> : children}\n </Component>\n </TouchableOpacity>\n );\n }\n } else {\n content = (\n <Component ref={ref} {...nativeProps} style={combinedStyles} className={additionalClasses}>\n {isText ? <Text>{children}</Text> : children}\n </Component>\n );\n }\n\n if (scrollable) {\n return <ScrollView horizontal={as === 'HStack'}>{content}</ScrollView>;\n }\n\n if (hasAnimation) {\n return (\n <Animated.View entering={enteringAnim} exiting={exitingAnim}>\n {content}\n </Animated.View>\n );\n }\n\n return content;\n}\n\nexport default ResponsiveElement;\n"],"names":["RNPressable"],"mappings":"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"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
require('react-icons/fa');
|
|
4
|
+
require('react-icons/ai');
|
|
5
|
+
require('react-icons/io');
|
|
6
|
+
require('../../../../../packages/types/src/Components/Molecules/Form/FilePicker/types/filesTypes.cjs');
|
|
7
|
+
require('yup');
|
|
8
|
+
require('../../../../../packages/types/src/Css/map/index.cjs');
|
|
9
|
+
require('../../../../../packages/types/src/Theme/shadows.cjs');
|
|
10
|
+
require('../../../../../packages/types/src/Theme/defaultTheme.cjs');
|
|
11
|
+
var alphaColors = require('../../../../../packages/types/src/Theme/alphaColors.cjs');
|
|
12
|
+
|
|
3
13
|
const CSS_VAR_MAP = {
|
|
4
14
|
// ── Primary ───────────────────────────────────────────────────────
|
|
5
15
|
"--primary-color": "#3B82F6",
|
|
@@ -137,6 +147,12 @@ const CSS_VAR_MAP = {
|
|
|
137
147
|
"--pink-700": "#EC4899B3",
|
|
138
148
|
"--pink-800": "#EC4899CC",
|
|
139
149
|
"--pink-900": "#EC4899E6",
|
|
150
|
+
// ── Alpha overlay families (white-alpha-* / black-alpha-*) ────────
|
|
151
|
+
// LITERAL rgba, identical in light and dark. Kept in sync with the
|
|
152
|
+
// single source of truth (ALPHA_COLOR_VARS in @lmb-it/kitsconcerto-types),
|
|
153
|
+
// spread below so this static fallback resolves them even before the
|
|
154
|
+
// KitsThemeProvider installs the dynamic color map.
|
|
155
|
+
...alphaColors.ALPHA_COLOR_VARS,
|
|
140
156
|
// ── Special values ────────────────────────────────────────────────
|
|
141
157
|
"--white": "#FFFFFF",
|
|
142
158
|
"--black": "#000000",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cssVarMap.cjs","sources":["../../../../../../../../../apps/mobile/src/Factory/helpers/cssVarMap.ts"],"sourcesContent":["/**\n * Maps CSS variable names (stripped of var() wrapper) to resolved native color values.\n * Derived from apps/mobile/primeflex.js — the authoritative color source for native.\n *\n * Usage: when `toNativeValue()` encounters `var(--xyz)`, it strips `var()` and\n * looks up `--xyz` in this map. If found, returns the resolved value.\n */\nexport const CSS_VAR_MAP: Record<string, string> = {\n // ── Primary ───────────────────────────────────────────────────────\n '--primary-color': '#3B82F6',\n '--primary': '#3B82F6',\n '--primary-reverse': '#FFFFFF',\n\n // ── Surface (backgrounds / cards / overlays) ──────────────────────\n '--surface-ground': '#F9FAFB',\n '--surface-section': '#F3F4F6',\n '--surface-card': '#E5E7EB',\n '--surface-overlay': '#D1D5DB',\n '--surface-hover': '#9CA3AF',\n '--surface-border': '#E5E7EB',\n '--surface-0': '#F9FAFB',\n '--surface-50': '#F9FAFB',\n '--surface-100': '#F3F4F6',\n '--surface-200': '#E5E7EB',\n '--surface-300': '#D1D5DB',\n '--surface-400': '#9CA3AF',\n '--surface-500': '#6B7280',\n '--surface-600': '#4B5563',\n '--surface-700': '#374151',\n '--surface-800': '#1F2937',\n '--surface-900': '#111827',\n '--surface-f': '#F9FAFB',\n\n // ── Text colors ───────────────────────────────────────────────────\n '--text-color': '#111827',\n '--text-color-secondary': '#6B7280',\n '--text-0': '#F9FAFB',\n '--text-50': '#F9FAFB',\n '--text-100': '#F3F4F6',\n '--text-200': '#E5E7EB',\n '--text-300': '#D1D5DB',\n '--text-400': '#9CA3AF',\n '--text-500': '#6B7280',\n '--text-600': '#4B5563',\n '--text-700': '#374151',\n '--text-800': '#1F2937',\n '--text-900': '#111827',\n\n // ── Blue ──────────────────────────────────────────────────────────\n '--blue-50': '#3B82F60D',\n '--blue-100': '#3B82F61A',\n '--blue-200': '#3B82F633',\n '--blue-300': '#3B82F64D',\n '--blue-400': '#3B82F666',\n '--blue-500': '#3B82F6',\n '--blue-600': '#3B82F699',\n '--blue-700': '#3B82F6B3',\n '--blue-800': '#3B82F6CC',\n '--blue-900': '#3B82F6E6',\n\n // ── Green ─────────────────────────────────────────────────────────\n '--green-50': '#22C55E0D',\n '--green-100': '#22C55E1A',\n '--green-200': '#22C55E33',\n '--green-300': '#22C55E4D',\n '--green-400': '#22C55E66',\n '--green-500': '#22C55E',\n '--green-600': '#22C55E99',\n '--green-700': '#22C55EB3',\n '--green-800': '#22C55ECC',\n '--green-900': '#22C55EE6',\n\n // ── Yellow ────────────────────────────────────────────────────────\n '--yellow-50': '#EAB3080D',\n '--yellow-100': '#EAB3081A',\n '--yellow-200': '#EAB30833',\n '--yellow-300': '#EAB3084D',\n '--yellow-400': '#EAB30866',\n '--yellow-500': '#EAB308',\n '--yellow-600': '#EAB30899',\n '--yellow-700': '#EAB308B3',\n '--yellow-800': '#EAB308CC',\n '--yellow-900': '#EAB308E6',\n\n // ── Red ───────────────────────────────────────────────────────────\n '--red-50': '#EF44440D',\n '--red-100': '#EF44441A',\n '--red-200': '#EF444433',\n '--red-300': '#EF44444D',\n '--red-400': '#EF444466',\n '--red-500': '#EF4444',\n '--red-600': '#EF444499',\n '--red-700': '#EF4444B3',\n '--red-800': '#EF4444CC',\n '--red-900': '#EF4444E6',\n\n // ── Gray ──────────────────────────────────────────────────────────\n '--gray-50': '#9CA3AF0D',\n '--gray-100': '#9CA3AF1A',\n '--gray-200': '#9CA3AF33',\n '--gray-300': '#9CA3AF4D',\n '--gray-400': '#9CA3AF66',\n '--gray-500': '#9CA3AF',\n '--gray-600': '#9CA3AF99',\n '--gray-700': '#9CA3AFB3',\n '--gray-800': '#9CA3AFCC',\n '--gray-900': '#9CA3AFE6',\n\n // ── Purple ────────────────────────────────────────────────────────\n '--purple-50': '#8B5CF60D',\n '--purple-100': '#8B5CF61A',\n '--purple-200': '#8B5CF633',\n '--purple-300': '#8B5CF64D',\n '--purple-400': '#8B5CF666',\n '--purple-500': '#8B5CF6',\n '--purple-600': '#8B5CF699',\n '--purple-700': '#8B5CF6B3',\n '--purple-800': '#8B5CF6CC',\n '--purple-900': '#8B5CF6E6',\n\n // ── Orange ────────────────────────────────────────────────────────\n '--orange-50': '#F973160D',\n '--orange-100': '#F973161A',\n '--orange-200': '#F9731633',\n '--orange-300': '#F973164D',\n '--orange-400': '#F9731666',\n '--orange-500': '#F97316',\n '--orange-600': '#F9731699',\n '--orange-700': '#F97316B3',\n '--orange-800': '#F97316CC',\n '--orange-900': '#F97316E6',\n\n // ── Teal ──────────────────────────────────────────────────────────\n '--teal-50': '#14B8A60D',\n '--teal-100': '#14B8A61A',\n '--teal-200': '#14B8A633',\n '--teal-300': '#14B8A64D',\n '--teal-400': '#14B8A666',\n '--teal-500': '#14B8A6',\n '--teal-600': '#14B8A699',\n '--teal-700': '#14B8A6B3',\n '--teal-800': '#14B8A6CC',\n '--teal-900': '#14B8A6E6',\n\n // ── Pink ──────────────────────────────────────────────────────────\n '--pink-50': '#EC48990D',\n '--pink-100': '#EC48991A',\n '--pink-200': '#EC489933',\n '--pink-300': '#EC48994D',\n '--pink-400': '#EC489966',\n '--pink-500': '#EC4899',\n '--pink-600': '#EC489999',\n '--pink-700': '#EC4899B3',\n '--pink-800': '#EC4899CC',\n '--pink-900': '#EC4899E6',\n\n // ── Special values ────────────────────────────────────────────────\n '--white': '#FFFFFF',\n '--black': '#000000',\n '--font-family': 'System',\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cssVarMap.cjs","sources":["../../../../../../../../../apps/mobile/src/Factory/helpers/cssVarMap.ts"],"sourcesContent":["import {ALPHA_COLOR_VARS} from '@lmb-it/kitsconcerto-types';\n\n/**\n * Maps CSS variable names (stripped of var() wrapper) to resolved native color values.\n * Derived from apps/mobile/primeflex.js — the authoritative color source for native.\n *\n * Usage: when `toNativeValue()` encounters `var(--xyz)`, it strips `var()` and\n * looks up `--xyz` in this map. If found, returns the resolved value.\n */\nexport const CSS_VAR_MAP: Record<string, string> = {\n // ── Primary ───────────────────────────────────────────────────────\n '--primary-color': '#3B82F6',\n '--primary': '#3B82F6',\n '--primary-reverse': '#FFFFFF',\n\n // ── Surface (backgrounds / cards / overlays) ──────────────────────\n '--surface-ground': '#F9FAFB',\n '--surface-section': '#F3F4F6',\n '--surface-card': '#E5E7EB',\n '--surface-overlay': '#D1D5DB',\n '--surface-hover': '#9CA3AF',\n '--surface-border': '#E5E7EB',\n '--surface-0': '#F9FAFB',\n '--surface-50': '#F9FAFB',\n '--surface-100': '#F3F4F6',\n '--surface-200': '#E5E7EB',\n '--surface-300': '#D1D5DB',\n '--surface-400': '#9CA3AF',\n '--surface-500': '#6B7280',\n '--surface-600': '#4B5563',\n '--surface-700': '#374151',\n '--surface-800': '#1F2937',\n '--surface-900': '#111827',\n '--surface-f': '#F9FAFB',\n\n // ── Text colors ───────────────────────────────────────────────────\n '--text-color': '#111827',\n '--text-color-secondary': '#6B7280',\n '--text-0': '#F9FAFB',\n '--text-50': '#F9FAFB',\n '--text-100': '#F3F4F6',\n '--text-200': '#E5E7EB',\n '--text-300': '#D1D5DB',\n '--text-400': '#9CA3AF',\n '--text-500': '#6B7280',\n '--text-600': '#4B5563',\n '--text-700': '#374151',\n '--text-800': '#1F2937',\n '--text-900': '#111827',\n\n // ── Blue ──────────────────────────────────────────────────────────\n '--blue-50': '#3B82F60D',\n '--blue-100': '#3B82F61A',\n '--blue-200': '#3B82F633',\n '--blue-300': '#3B82F64D',\n '--blue-400': '#3B82F666',\n '--blue-500': '#3B82F6',\n '--blue-600': '#3B82F699',\n '--blue-700': '#3B82F6B3',\n '--blue-800': '#3B82F6CC',\n '--blue-900': '#3B82F6E6',\n\n // ── Green ─────────────────────────────────────────────────────────\n '--green-50': '#22C55E0D',\n '--green-100': '#22C55E1A',\n '--green-200': '#22C55E33',\n '--green-300': '#22C55E4D',\n '--green-400': '#22C55E66',\n '--green-500': '#22C55E',\n '--green-600': '#22C55E99',\n '--green-700': '#22C55EB3',\n '--green-800': '#22C55ECC',\n '--green-900': '#22C55EE6',\n\n // ── Yellow ────────────────────────────────────────────────────────\n '--yellow-50': '#EAB3080D',\n '--yellow-100': '#EAB3081A',\n '--yellow-200': '#EAB30833',\n '--yellow-300': '#EAB3084D',\n '--yellow-400': '#EAB30866',\n '--yellow-500': '#EAB308',\n '--yellow-600': '#EAB30899',\n '--yellow-700': '#EAB308B3',\n '--yellow-800': '#EAB308CC',\n '--yellow-900': '#EAB308E6',\n\n // ── Red ───────────────────────────────────────────────────────────\n '--red-50': '#EF44440D',\n '--red-100': '#EF44441A',\n '--red-200': '#EF444433',\n '--red-300': '#EF44444D',\n '--red-400': '#EF444466',\n '--red-500': '#EF4444',\n '--red-600': '#EF444499',\n '--red-700': '#EF4444B3',\n '--red-800': '#EF4444CC',\n '--red-900': '#EF4444E6',\n\n // ── Gray ──────────────────────────────────────────────────────────\n '--gray-50': '#9CA3AF0D',\n '--gray-100': '#9CA3AF1A',\n '--gray-200': '#9CA3AF33',\n '--gray-300': '#9CA3AF4D',\n '--gray-400': '#9CA3AF66',\n '--gray-500': '#9CA3AF',\n '--gray-600': '#9CA3AF99',\n '--gray-700': '#9CA3AFB3',\n '--gray-800': '#9CA3AFCC',\n '--gray-900': '#9CA3AFE6',\n\n // ── Purple ────────────────────────────────────────────────────────\n '--purple-50': '#8B5CF60D',\n '--purple-100': '#8B5CF61A',\n '--purple-200': '#8B5CF633',\n '--purple-300': '#8B5CF64D',\n '--purple-400': '#8B5CF666',\n '--purple-500': '#8B5CF6',\n '--purple-600': '#8B5CF699',\n '--purple-700': '#8B5CF6B3',\n '--purple-800': '#8B5CF6CC',\n '--purple-900': '#8B5CF6E6',\n\n // ── Orange ────────────────────────────────────────────────────────\n '--orange-50': '#F973160D',\n '--orange-100': '#F973161A',\n '--orange-200': '#F9731633',\n '--orange-300': '#F973164D',\n '--orange-400': '#F9731666',\n '--orange-500': '#F97316',\n '--orange-600': '#F9731699',\n '--orange-700': '#F97316B3',\n '--orange-800': '#F97316CC',\n '--orange-900': '#F97316E6',\n\n // ── Teal ──────────────────────────────────────────────────────────\n '--teal-50': '#14B8A60D',\n '--teal-100': '#14B8A61A',\n '--teal-200': '#14B8A633',\n '--teal-300': '#14B8A64D',\n '--teal-400': '#14B8A666',\n '--teal-500': '#14B8A6',\n '--teal-600': '#14B8A699',\n '--teal-700': '#14B8A6B3',\n '--teal-800': '#14B8A6CC',\n '--teal-900': '#14B8A6E6',\n\n // ── Pink ──────────────────────────────────────────────────────────\n '--pink-50': '#EC48990D',\n '--pink-100': '#EC48991A',\n '--pink-200': '#EC489933',\n '--pink-300': '#EC48994D',\n '--pink-400': '#EC489966',\n '--pink-500': '#EC4899',\n '--pink-600': '#EC489999',\n '--pink-700': '#EC4899B3',\n '--pink-800': '#EC4899CC',\n '--pink-900': '#EC4899E6',\n\n // ── Alpha overlay families (white-alpha-* / black-alpha-*) ────────\n // LITERAL rgba, identical in light and dark. Kept in sync with the\n // single source of truth (ALPHA_COLOR_VARS in @lmb-it/kitsconcerto-types),\n // spread below so this static fallback resolves them even before the\n // KitsThemeProvider installs the dynamic color map.\n ...ALPHA_COLOR_VARS,\n\n // ── Special values ────────────────────────────────────────────────\n '--white': '#FFFFFF',\n '--black': '#000000',\n '--font-family': 'System',\n};\n"],"names":["ALPHA_COLOR_VARS"],"mappings":"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"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
import 'react-icons/fa';
|
|
2
|
+
import 'react-icons/ai';
|
|
3
|
+
import 'react-icons/io';
|
|
4
|
+
import '../../../../../packages/types/src/Components/Molecules/Form/FilePicker/types/filesTypes.js';
|
|
5
|
+
import 'yup';
|
|
6
|
+
import '../../../../../packages/types/src/Css/map/index.js';
|
|
7
|
+
import '../../../../../packages/types/src/Theme/shadows.js';
|
|
8
|
+
import '../../../../../packages/types/src/Theme/defaultTheme.js';
|
|
9
|
+
import { ALPHA_COLOR_VARS } from '../../../../../packages/types/src/Theme/alphaColors.js';
|
|
10
|
+
|
|
1
11
|
const CSS_VAR_MAP = {
|
|
2
12
|
// ── Primary ───────────────────────────────────────────────────────
|
|
3
13
|
"--primary-color": "#3B82F6",
|
|
@@ -135,6 +145,12 @@ const CSS_VAR_MAP = {
|
|
|
135
145
|
"--pink-700": "#EC4899B3",
|
|
136
146
|
"--pink-800": "#EC4899CC",
|
|
137
147
|
"--pink-900": "#EC4899E6",
|
|
148
|
+
// ── Alpha overlay families (white-alpha-* / black-alpha-*) ────────
|
|
149
|
+
// LITERAL rgba, identical in light and dark. Kept in sync with the
|
|
150
|
+
// single source of truth (ALPHA_COLOR_VARS in @lmb-it/kitsconcerto-types),
|
|
151
|
+
// spread below so this static fallback resolves them even before the
|
|
152
|
+
// KitsThemeProvider installs the dynamic color map.
|
|
153
|
+
...ALPHA_COLOR_VARS,
|
|
138
154
|
// ── Special values ────────────────────────────────────────────────
|
|
139
155
|
"--white": "#FFFFFF",
|
|
140
156
|
"--black": "#000000",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cssVarMap.js","sources":["../../../../../../../../../apps/mobile/src/Factory/helpers/cssVarMap.ts"],"sourcesContent":["/**\n * Maps CSS variable names (stripped of var() wrapper) to resolved native color values.\n * Derived from apps/mobile/primeflex.js — the authoritative color source for native.\n *\n * Usage: when `toNativeValue()` encounters `var(--xyz)`, it strips `var()` and\n * looks up `--xyz` in this map. If found, returns the resolved value.\n */\nexport const CSS_VAR_MAP: Record<string, string> = {\n // ── Primary ───────────────────────────────────────────────────────\n '--primary-color': '#3B82F6',\n '--primary': '#3B82F6',\n '--primary-reverse': '#FFFFFF',\n\n // ── Surface (backgrounds / cards / overlays) ──────────────────────\n '--surface-ground': '#F9FAFB',\n '--surface-section': '#F3F4F6',\n '--surface-card': '#E5E7EB',\n '--surface-overlay': '#D1D5DB',\n '--surface-hover': '#9CA3AF',\n '--surface-border': '#E5E7EB',\n '--surface-0': '#F9FAFB',\n '--surface-50': '#F9FAFB',\n '--surface-100': '#F3F4F6',\n '--surface-200': '#E5E7EB',\n '--surface-300': '#D1D5DB',\n '--surface-400': '#9CA3AF',\n '--surface-500': '#6B7280',\n '--surface-600': '#4B5563',\n '--surface-700': '#374151',\n '--surface-800': '#1F2937',\n '--surface-900': '#111827',\n '--surface-f': '#F9FAFB',\n\n // ── Text colors ───────────────────────────────────────────────────\n '--text-color': '#111827',\n '--text-color-secondary': '#6B7280',\n '--text-0': '#F9FAFB',\n '--text-50': '#F9FAFB',\n '--text-100': '#F3F4F6',\n '--text-200': '#E5E7EB',\n '--text-300': '#D1D5DB',\n '--text-400': '#9CA3AF',\n '--text-500': '#6B7280',\n '--text-600': '#4B5563',\n '--text-700': '#374151',\n '--text-800': '#1F2937',\n '--text-900': '#111827',\n\n // ── Blue ──────────────────────────────────────────────────────────\n '--blue-50': '#3B82F60D',\n '--blue-100': '#3B82F61A',\n '--blue-200': '#3B82F633',\n '--blue-300': '#3B82F64D',\n '--blue-400': '#3B82F666',\n '--blue-500': '#3B82F6',\n '--blue-600': '#3B82F699',\n '--blue-700': '#3B82F6B3',\n '--blue-800': '#3B82F6CC',\n '--blue-900': '#3B82F6E6',\n\n // ── Green ─────────────────────────────────────────────────────────\n '--green-50': '#22C55E0D',\n '--green-100': '#22C55E1A',\n '--green-200': '#22C55E33',\n '--green-300': '#22C55E4D',\n '--green-400': '#22C55E66',\n '--green-500': '#22C55E',\n '--green-600': '#22C55E99',\n '--green-700': '#22C55EB3',\n '--green-800': '#22C55ECC',\n '--green-900': '#22C55EE6',\n\n // ── Yellow ────────────────────────────────────────────────────────\n '--yellow-50': '#EAB3080D',\n '--yellow-100': '#EAB3081A',\n '--yellow-200': '#EAB30833',\n '--yellow-300': '#EAB3084D',\n '--yellow-400': '#EAB30866',\n '--yellow-500': '#EAB308',\n '--yellow-600': '#EAB30899',\n '--yellow-700': '#EAB308B3',\n '--yellow-800': '#EAB308CC',\n '--yellow-900': '#EAB308E6',\n\n // ── Red ───────────────────────────────────────────────────────────\n '--red-50': '#EF44440D',\n '--red-100': '#EF44441A',\n '--red-200': '#EF444433',\n '--red-300': '#EF44444D',\n '--red-400': '#EF444466',\n '--red-500': '#EF4444',\n '--red-600': '#EF444499',\n '--red-700': '#EF4444B3',\n '--red-800': '#EF4444CC',\n '--red-900': '#EF4444E6',\n\n // ── Gray ──────────────────────────────────────────────────────────\n '--gray-50': '#9CA3AF0D',\n '--gray-100': '#9CA3AF1A',\n '--gray-200': '#9CA3AF33',\n '--gray-300': '#9CA3AF4D',\n '--gray-400': '#9CA3AF66',\n '--gray-500': '#9CA3AF',\n '--gray-600': '#9CA3AF99',\n '--gray-700': '#9CA3AFB3',\n '--gray-800': '#9CA3AFCC',\n '--gray-900': '#9CA3AFE6',\n\n // ── Purple ────────────────────────────────────────────────────────\n '--purple-50': '#8B5CF60D',\n '--purple-100': '#8B5CF61A',\n '--purple-200': '#8B5CF633',\n '--purple-300': '#8B5CF64D',\n '--purple-400': '#8B5CF666',\n '--purple-500': '#8B5CF6',\n '--purple-600': '#8B5CF699',\n '--purple-700': '#8B5CF6B3',\n '--purple-800': '#8B5CF6CC',\n '--purple-900': '#8B5CF6E6',\n\n // ── Orange ────────────────────────────────────────────────────────\n '--orange-50': '#F973160D',\n '--orange-100': '#F973161A',\n '--orange-200': '#F9731633',\n '--orange-300': '#F973164D',\n '--orange-400': '#F9731666',\n '--orange-500': '#F97316',\n '--orange-600': '#F9731699',\n '--orange-700': '#F97316B3',\n '--orange-800': '#F97316CC',\n '--orange-900': '#F97316E6',\n\n // ── Teal ──────────────────────────────────────────────────────────\n '--teal-50': '#14B8A60D',\n '--teal-100': '#14B8A61A',\n '--teal-200': '#14B8A633',\n '--teal-300': '#14B8A64D',\n '--teal-400': '#14B8A666',\n '--teal-500': '#14B8A6',\n '--teal-600': '#14B8A699',\n '--teal-700': '#14B8A6B3',\n '--teal-800': '#14B8A6CC',\n '--teal-900': '#14B8A6E6',\n\n // ── Pink ──────────────────────────────────────────────────────────\n '--pink-50': '#EC48990D',\n '--pink-100': '#EC48991A',\n '--pink-200': '#EC489933',\n '--pink-300': '#EC48994D',\n '--pink-400': '#EC489966',\n '--pink-500': '#EC4899',\n '--pink-600': '#EC489999',\n '--pink-700': '#EC4899B3',\n '--pink-800': '#EC4899CC',\n '--pink-900': '#EC4899E6',\n\n // ── Special values ────────────────────────────────────────────────\n '--white': '#FFFFFF',\n '--black': '#000000',\n '--font-family': 'System',\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cssVarMap.js","sources":["../../../../../../../../../apps/mobile/src/Factory/helpers/cssVarMap.ts"],"sourcesContent":["import {ALPHA_COLOR_VARS} from '@lmb-it/kitsconcerto-types';\n\n/**\n * Maps CSS variable names (stripped of var() wrapper) to resolved native color values.\n * Derived from apps/mobile/primeflex.js — the authoritative color source for native.\n *\n * Usage: when `toNativeValue()` encounters `var(--xyz)`, it strips `var()` and\n * looks up `--xyz` in this map. If found, returns the resolved value.\n */\nexport const CSS_VAR_MAP: Record<string, string> = {\n // ── Primary ───────────────────────────────────────────────────────\n '--primary-color': '#3B82F6',\n '--primary': '#3B82F6',\n '--primary-reverse': '#FFFFFF',\n\n // ── Surface (backgrounds / cards / overlays) ──────────────────────\n '--surface-ground': '#F9FAFB',\n '--surface-section': '#F3F4F6',\n '--surface-card': '#E5E7EB',\n '--surface-overlay': '#D1D5DB',\n '--surface-hover': '#9CA3AF',\n '--surface-border': '#E5E7EB',\n '--surface-0': '#F9FAFB',\n '--surface-50': '#F9FAFB',\n '--surface-100': '#F3F4F6',\n '--surface-200': '#E5E7EB',\n '--surface-300': '#D1D5DB',\n '--surface-400': '#9CA3AF',\n '--surface-500': '#6B7280',\n '--surface-600': '#4B5563',\n '--surface-700': '#374151',\n '--surface-800': '#1F2937',\n '--surface-900': '#111827',\n '--surface-f': '#F9FAFB',\n\n // ── Text colors ───────────────────────────────────────────────────\n '--text-color': '#111827',\n '--text-color-secondary': '#6B7280',\n '--text-0': '#F9FAFB',\n '--text-50': '#F9FAFB',\n '--text-100': '#F3F4F6',\n '--text-200': '#E5E7EB',\n '--text-300': '#D1D5DB',\n '--text-400': '#9CA3AF',\n '--text-500': '#6B7280',\n '--text-600': '#4B5563',\n '--text-700': '#374151',\n '--text-800': '#1F2937',\n '--text-900': '#111827',\n\n // ── Blue ──────────────────────────────────────────────────────────\n '--blue-50': '#3B82F60D',\n '--blue-100': '#3B82F61A',\n '--blue-200': '#3B82F633',\n '--blue-300': '#3B82F64D',\n '--blue-400': '#3B82F666',\n '--blue-500': '#3B82F6',\n '--blue-600': '#3B82F699',\n '--blue-700': '#3B82F6B3',\n '--blue-800': '#3B82F6CC',\n '--blue-900': '#3B82F6E6',\n\n // ── Green ─────────────────────────────────────────────────────────\n '--green-50': '#22C55E0D',\n '--green-100': '#22C55E1A',\n '--green-200': '#22C55E33',\n '--green-300': '#22C55E4D',\n '--green-400': '#22C55E66',\n '--green-500': '#22C55E',\n '--green-600': '#22C55E99',\n '--green-700': '#22C55EB3',\n '--green-800': '#22C55ECC',\n '--green-900': '#22C55EE6',\n\n // ── Yellow ────────────────────────────────────────────────────────\n '--yellow-50': '#EAB3080D',\n '--yellow-100': '#EAB3081A',\n '--yellow-200': '#EAB30833',\n '--yellow-300': '#EAB3084D',\n '--yellow-400': '#EAB30866',\n '--yellow-500': '#EAB308',\n '--yellow-600': '#EAB30899',\n '--yellow-700': '#EAB308B3',\n '--yellow-800': '#EAB308CC',\n '--yellow-900': '#EAB308E6',\n\n // ── Red ───────────────────────────────────────────────────────────\n '--red-50': '#EF44440D',\n '--red-100': '#EF44441A',\n '--red-200': '#EF444433',\n '--red-300': '#EF44444D',\n '--red-400': '#EF444466',\n '--red-500': '#EF4444',\n '--red-600': '#EF444499',\n '--red-700': '#EF4444B3',\n '--red-800': '#EF4444CC',\n '--red-900': '#EF4444E6',\n\n // ── Gray ──────────────────────────────────────────────────────────\n '--gray-50': '#9CA3AF0D',\n '--gray-100': '#9CA3AF1A',\n '--gray-200': '#9CA3AF33',\n '--gray-300': '#9CA3AF4D',\n '--gray-400': '#9CA3AF66',\n '--gray-500': '#9CA3AF',\n '--gray-600': '#9CA3AF99',\n '--gray-700': '#9CA3AFB3',\n '--gray-800': '#9CA3AFCC',\n '--gray-900': '#9CA3AFE6',\n\n // ── Purple ────────────────────────────────────────────────────────\n '--purple-50': '#8B5CF60D',\n '--purple-100': '#8B5CF61A',\n '--purple-200': '#8B5CF633',\n '--purple-300': '#8B5CF64D',\n '--purple-400': '#8B5CF666',\n '--purple-500': '#8B5CF6',\n '--purple-600': '#8B5CF699',\n '--purple-700': '#8B5CF6B3',\n '--purple-800': '#8B5CF6CC',\n '--purple-900': '#8B5CF6E6',\n\n // ── Orange ────────────────────────────────────────────────────────\n '--orange-50': '#F973160D',\n '--orange-100': '#F973161A',\n '--orange-200': '#F9731633',\n '--orange-300': '#F973164D',\n '--orange-400': '#F9731666',\n '--orange-500': '#F97316',\n '--orange-600': '#F9731699',\n '--orange-700': '#F97316B3',\n '--orange-800': '#F97316CC',\n '--orange-900': '#F97316E6',\n\n // ── Teal ──────────────────────────────────────────────────────────\n '--teal-50': '#14B8A60D',\n '--teal-100': '#14B8A61A',\n '--teal-200': '#14B8A633',\n '--teal-300': '#14B8A64D',\n '--teal-400': '#14B8A666',\n '--teal-500': '#14B8A6',\n '--teal-600': '#14B8A699',\n '--teal-700': '#14B8A6B3',\n '--teal-800': '#14B8A6CC',\n '--teal-900': '#14B8A6E6',\n\n // ── Pink ──────────────────────────────────────────────────────────\n '--pink-50': '#EC48990D',\n '--pink-100': '#EC48991A',\n '--pink-200': '#EC489933',\n '--pink-300': '#EC48994D',\n '--pink-400': '#EC489966',\n '--pink-500': '#EC4899',\n '--pink-600': '#EC489999',\n '--pink-700': '#EC4899B3',\n '--pink-800': '#EC4899CC',\n '--pink-900': '#EC4899E6',\n\n // ── Alpha overlay families (white-alpha-* / black-alpha-*) ────────\n // LITERAL rgba, identical in light and dark. Kept in sync with the\n // single source of truth (ALPHA_COLOR_VARS in @lmb-it/kitsconcerto-types),\n // spread below so this static fallback resolves them even before the\n // KitsThemeProvider installs the dynamic color map.\n ...ALPHA_COLOR_VARS,\n\n // ── Special values ────────────────────────────────────────────────\n '--white': '#FFFFFF',\n '--black': '#000000',\n '--font-family': 'System',\n};\n"],"names":[],"mappings":"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"}
|