@lmb-it/kitsconcerto-native 0.1.277 → 0.1.285
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/apps/mobile/src/Core/AutoComplete/index.cjs +12 -4
- package/apps/mobile/src/Core/AutoComplete/index.cjs.map +1 -1
- package/apps/mobile/src/Core/AutoComplete/index.js +12 -4
- package/apps/mobile/src/Core/AutoComplete/index.js.map +1 -1
- package/apps/mobile/src/Core/MultiSelect/index.cjs +7 -4
- package/apps/mobile/src/Core/MultiSelect/index.cjs.map +1 -1
- package/apps/mobile/src/Core/MultiSelect/index.js +7 -4
- package/apps/mobile/src/Core/MultiSelect/index.js.map +1 -1
- package/components/Avatar/index.cjs +1 -0
- package/components/Avatar/index.cjs.map +1 -1
- package/components/Avatar/index.js +1 -0
- package/components/Avatar/index.js.map +1 -1
- package/components/Banner/banner.cjs +1 -0
- package/components/Banner/banner.cjs.map +1 -1
- package/components/Banner/banner.js +1 -0
- package/components/Banner/banner.js.map +1 -1
- package/components/BottomTabBar/index.cjs +1 -0
- package/components/BottomTabBar/index.cjs.map +1 -1
- package/components/BottomTabBar/index.js +1 -0
- package/components/BottomTabBar/index.js.map +1 -1
- package/components/BreadCrumb/index.cjs.map +1 -1
- package/components/BreadCrumb/index.js.map +1 -1
- package/components/Button/Button.cjs +1 -0
- package/components/Button/Button.cjs.map +1 -1
- package/components/Button/Button.js +1 -0
- package/components/Button/Button.js.map +1 -1
- package/components/Carousel/index.cjs +1 -0
- package/components/Carousel/index.cjs.map +1 -1
- package/components/Carousel/index.js +1 -0
- package/components/Carousel/index.js.map +1 -1
- package/components/ChatBubble/index.cjs +1 -0
- package/components/ChatBubble/index.cjs.map +1 -1
- package/components/ChatBubble/index.js +1 -0
- package/components/ChatBubble/index.js.map +1 -1
- package/components/Chip/index.cjs +1 -0
- package/components/Chip/index.cjs.map +1 -1
- package/components/Chip/index.js +1 -0
- package/components/Chip/index.js.map +1 -1
- package/components/DateSeparator/index.cjs +1 -0
- package/components/DateSeparator/index.cjs.map +1 -1
- package/components/DateSeparator/index.js +1 -0
- package/components/DateSeparator/index.js.map +1 -1
- package/components/DetailsList/index.cjs +1 -0
- package/components/DetailsList/index.cjs.map +1 -1
- package/components/DetailsList/index.js +1 -0
- package/components/DetailsList/index.js.map +1 -1
- package/components/EmptyState/index.cjs +1 -0
- package/components/EmptyState/index.cjs.map +1 -1
- package/components/EmptyState/index.js +1 -0
- package/components/EmptyState/index.js.map +1 -1
- package/components/Gallery/index.cjs +1 -0
- package/components/Gallery/index.cjs.map +1 -1
- package/components/Gallery/index.js +1 -0
- package/components/Gallery/index.js.map +1 -1
- package/components/MessageComposer/index.cjs +1 -0
- package/components/MessageComposer/index.cjs.map +1 -1
- package/components/MessageComposer/index.js +1 -0
- package/components/MessageComposer/index.js.map +1 -1
- package/components/MessageReceipt/index.cjs +1 -0
- package/components/MessageReceipt/index.cjs.map +1 -1
- package/components/MessageReceipt/index.js +1 -0
- package/components/MessageReceipt/index.js.map +1 -1
- package/components/ProgressBar/index.cjs +1 -0
- package/components/ProgressBar/index.cjs.map +1 -1
- package/components/ProgressBar/index.js +1 -0
- package/components/ProgressBar/index.js.map +1 -1
- package/components/SegmentedControl/index.cjs +1 -0
- package/components/SegmentedControl/index.cjs.map +1 -1
- package/components/SegmentedControl/index.js +1 -0
- package/components/SegmentedControl/index.js.map +1 -1
- package/components/StatCard/index.cjs +1 -0
- package/components/StatCard/index.cjs.map +1 -1
- package/components/StatCard/index.js +1 -0
- package/components/StatCard/index.js.map +1 -1
- package/components/Stepper/index.cjs +1 -0
- package/components/Stepper/index.cjs.map +1 -1
- package/components/Stepper/index.js +1 -0
- package/components/Stepper/index.js.map +1 -1
- package/components/Tabs/index.cjs +1 -0
- package/components/Tabs/index.cjs.map +1 -1
- package/components/Tabs/index.js +1 -0
- package/components/Tabs/index.js.map +1 -1
- package/components/Timeline/index.cjs +1 -0
- package/components/Timeline/index.cjs.map +1 -1
- package/components/Timeline/index.js +1 -0
- package/components/Timeline/index.js.map +1 -1
- package/components/Translate/index.cjs +1 -0
- package/components/Translate/index.cjs.map +1 -1
- package/components/Translate/index.js +1 -0
- package/components/Translate/index.js.map +1 -1
- package/components/TypingIndicator/index.cjs +1 -0
- package/components/TypingIndicator/index.cjs.map +1 -1
- package/components/TypingIndicator/index.js +1 -0
- package/components/TypingIndicator/index.js.map +1 -1
- package/components/overlay/ConfirmDialog/index.cjs +1 -0
- package/components/overlay/ConfirmDialog/index.cjs.map +1 -1
- package/components/overlay/ConfirmDialog/index.js +1 -0
- package/components/overlay/ConfirmDialog/index.js.map +1 -1
- package/components/overlay/Dialog/index.cjs +1 -0
- package/components/overlay/Dialog/index.cjs.map +1 -1
- package/components/overlay/Dialog/index.js +1 -0
- package/components/overlay/Dialog/index.js.map +1 -1
- package/contexts/BreadcrumbContext.cjs +33 -0
- package/contexts/BreadcrumbContext.cjs.map +1 -0
- package/contexts/BreadcrumbContext.js +28 -0
- package/contexts/BreadcrumbContext.js.map +1 -0
- package/form/controls/Checkbox/index.cjs +1 -0
- package/form/controls/Checkbox/index.cjs.map +1 -1
- package/form/controls/Checkbox/index.js +1 -0
- package/form/controls/Checkbox/index.js.map +1 -1
- package/form/controls/RadioButton/radio.cjs +1 -0
- package/form/controls/RadioButton/radio.cjs.map +1 -1
- package/form/controls/RadioButton/radio.js +1 -0
- package/form/controls/RadioButton/radio.js.map +1 -1
- package/form/controls/TriStateCheckbox/index.cjs +1 -0
- package/form/controls/TriStateCheckbox/index.cjs.map +1 -1
- package/form/controls/TriStateCheckbox/index.js +1 -0
- package/form/controls/TriStateCheckbox/index.js.map +1 -1
- package/form/file-pickers/index.cjs +1 -0
- package/form/file-pickers/index.cjs.map +1 -1
- package/form/file-pickers/index.js +1 -0
- package/form/file-pickers/index.js.map +1 -1
- package/form/helpers/FormContainer/index.cjs +13 -2
- package/form/helpers/FormContainer/index.cjs.map +1 -1
- package/form/helpers/FormContainer/index.js +13 -2
- package/form/helpers/FormContainer/index.js.map +1 -1
- package/form/inputs/ColorPicker/index.cjs +1 -0
- package/form/inputs/ColorPicker/index.cjs.map +1 -1
- package/form/inputs/ColorPicker/index.js +1 -0
- package/form/inputs/ColorPicker/index.js.map +1 -1
- package/form/inputs/Datepicker/index.cjs +1 -0
- package/form/inputs/Datepicker/index.cjs.map +1 -1
- package/form/inputs/Datepicker/index.js +1 -0
- package/form/inputs/Datepicker/index.js.map +1 -1
- package/form/inputs/InputLocation/index.cjs +1 -0
- package/form/inputs/InputLocation/index.cjs.map +1 -1
- package/form/inputs/InputLocation/index.js +1 -0
- package/form/inputs/InputLocation/index.js.map +1 -1
- package/form/inputs/InputMask/index.cjs +1 -0
- package/form/inputs/InputMask/index.cjs.map +1 -1
- package/form/inputs/InputMask/index.js +1 -0
- package/form/inputs/InputMask/index.js.map +1 -1
- package/form/inputs/InputNumber/index.cjs +1 -0
- package/form/inputs/InputNumber/index.cjs.map +1 -1
- package/form/inputs/InputNumber/index.js +1 -0
- package/form/inputs/InputNumber/index.js.map +1 -1
- package/form/inputs/InputPassword/index.cjs +1 -0
- package/form/inputs/InputPassword/index.cjs.map +1 -1
- package/form/inputs/InputPassword/index.js +1 -0
- package/form/inputs/InputPassword/index.js.map +1 -1
- package/form/inputs/InputSwitch/index.cjs +1 -0
- package/form/inputs/InputSwitch/index.cjs.map +1 -1
- package/form/inputs/InputSwitch/index.js +1 -0
- package/form/inputs/InputSwitch/index.js.map +1 -1
- package/form/inputs/InputText/index.cjs +1 -0
- package/form/inputs/InputText/index.cjs.map +1 -1
- package/form/inputs/InputText/index.js +1 -0
- package/form/inputs/InputText/index.js.map +1 -1
- package/form/inputs/InputTextarea/index.cjs +1 -0
- package/form/inputs/InputTextarea/index.cjs.map +1 -1
- package/form/inputs/InputTextarea/index.js +1 -0
- package/form/inputs/InputTextarea/index.js.map +1 -1
- package/form/inputs/PhoneInput/index.cjs +1 -0
- package/form/inputs/PhoneInput/index.cjs.map +1 -1
- package/form/inputs/PhoneInput/index.js +1 -0
- package/form/inputs/PhoneInput/index.js.map +1 -1
- package/form/selects/AutoComplete/index.cjs +11 -1
- package/form/selects/AutoComplete/index.cjs.map +1 -1
- package/form/selects/AutoComplete/index.js +12 -2
- package/form/selects/AutoComplete/index.js.map +1 -1
- package/form/selects/CascadeSelect/index.cjs +1 -0
- package/form/selects/CascadeSelect/index.cjs.map +1 -1
- package/form/selects/CascadeSelect/index.js +1 -0
- package/form/selects/CascadeSelect/index.js.map +1 -1
- package/form/selects/Dropdown/index.cjs +1 -0
- package/form/selects/Dropdown/index.cjs.map +1 -1
- package/form/selects/Dropdown/index.js +1 -0
- package/form/selects/Dropdown/index.js.map +1 -1
- package/form/selects/ListBox/index.cjs +1 -0
- package/form/selects/ListBox/index.cjs.map +1 -1
- package/form/selects/ListBox/index.js +1 -0
- package/form/selects/ListBox/index.js.map +1 -1
- package/form/selects/MultiSelect/index.cjs +9 -1
- package/form/selects/MultiSelect/index.cjs.map +1 -1
- package/form/selects/MultiSelect/index.js +10 -2
- package/form/selects/MultiSelect/index.js.map +1 -1
- package/form/selects/TreeSelect/index.cjs +1 -0
- package/form/selects/TreeSelect/index.cjs.map +1 -1
- package/form/selects/TreeSelect/index.js +1 -0
- package/form/selects/TreeSelect/index.js.map +1 -1
- package/form/selects/helpers/SelectPopupOverlay.cjs +1 -0
- package/form/selects/helpers/SelectPopupOverlay.cjs.map +1 -1
- package/form/selects/helpers/SelectPopupOverlay.js +1 -0
- package/form/selects/helpers/SelectPopupOverlay.js.map +1 -1
- package/form-renderer/components/fields/FileUploader/index.cjs +1 -0
- package/form-renderer/components/fields/FileUploader/index.cjs.map +1 -1
- package/form-renderer/components/fields/FileUploader/index.js +1 -0
- package/form-renderer/components/fields/FileUploader/index.js.map +1 -1
- package/form-renderer/components/fields/Group/index.cjs +1 -0
- package/form-renderer/components/fields/Group/index.cjs.map +1 -1
- package/form-renderer/components/fields/Group/index.js +1 -0
- package/form-renderer/components/fields/Group/index.js.map +1 -1
- package/form-renderer/components/fields/Radios/index.cjs +1 -0
- package/form-renderer/components/fields/Radios/index.cjs.map +1 -1
- package/form-renderer/components/fields/Radios/index.js +1 -0
- package/form-renderer/components/fields/Radios/index.js.map +1 -1
- package/form-renderer/components/fields/Select/index.cjs +1 -0
- package/form-renderer/components/fields/Select/index.cjs.map +1 -1
- package/form-renderer/components/fields/Select/index.js +1 -0
- package/form-renderer/components/fields/Select/index.js.map +1 -1
- package/hooks/main.cjs +1 -0
- package/hooks/main.cjs.map +1 -1
- package/hooks/main.js +1 -0
- package/hooks/main.js.map +1 -1
- package/hooks/useBreadcrumbTrail.cjs +21 -0
- package/hooks/useBreadcrumbTrail.cjs.map +1 -0
- package/hooks/useBreadcrumbTrail.js +16 -0
- package/hooks/useBreadcrumbTrail.js.map +1 -0
- package/hooks/useComponentDefaults.cjs +50 -8
- package/hooks/useComponentDefaults.cjs.map +1 -1
- package/hooks/useComponentDefaults.js +50 -8
- package/hooks/useComponentDefaults.js.map +1 -1
- package/index.cjs +5 -0
- package/index.cjs.map +1 -1
- package/index.d.ts +245 -19
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/packages/types/src/Theme/defaultTheme.cjs +24 -4
- package/packages/types/src/Theme/defaultTheme.cjs.map +1 -1
- package/packages/types/src/Theme/defaultTheme.js +24 -4
- package/packages/types/src/Theme/defaultTheme.js.map +1 -1
- package/primitives/Card/index.cjs +1 -0
- package/primitives/Card/index.cjs.map +1 -1
- package/primitives/Card/index.js +1 -0
- package/primitives/Card/index.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/ChatBubble/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IChatBubbleProps, ChatBubbleTone} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text, Icon} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\nimport {MessageReceipt} from \"../MessageReceipt\";\n\nconst TONE: Record<ChatBubbleTone, {bg: string; text: string}> = {\n neutral: {bg: \"surface-muted\", text: \"text-secondary\"},\n info: {bg: \"brand-tint\", text: \"brand-text\"},\n warning: {bg: \"warning-tint\", text: \"warning-text\"},\n success: {bg: \"success-tint\", text: \"success-text\"},\n};\n\n/**\n * ChatBubble — a message bubble (incoming / outgoing) or a centered system\n * event pill. Presentational and cross-platform (Box + Text), mirroring the\n * app's chat thread styling.\n *\n * <ChatBubble variant=\"incoming\" author=\"Sam\" time=\"10:30\">Hi!</ChatBubble>\n * <ChatBubble variant=\"outgoing\" time=\"10:32\">On my way</ChatBubble>\n * <ChatBubble variant=\"system\" tone=\"warning\" time=\"10:40\">Leadership transferred</ChatBubble>\n */\nexport function ChatBubble(rawProps: IChatBubbleProps) {\n const props = useComponentDefaults<IChatBubbleProps>(\"ChatBubble\", rawProps).mergedProps;\n const {\n variant = \"incoming\",\n children,\n text,\n author,\n authorColor = \"text-secondary\",\n time,\n tone = \"neutral\",\n incomingColor = \"gray.100\",\n outgoingColor = \"brand\",\n receipt,\n receiptLabel,\n footer,\n bare = false,\n reply,\n icon,\n testID,\n ...rest\n } = props;\n\n const content = text ?? children;\n const a11y = testID ? ({testID, \"data-testid\": testID} as any) : {};\n\n if (variant === \"system\") {\n const t = TONE[tone] ?? TONE.neutral;\n return (\n <Box\n alignSelf=\"center\"\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={6}\n bgColor={t.bg}\n borderRadius={999}\n paddingLeft={10}\n paddingRight={10}\n paddingTop={4}\n paddingBottom={4}\n marginTop={4}\n marginBottom={4}\n {...(rest as any)}\n {...a11y}\n >\n {icon != null && (typeof icon === \"string\"\n ? <Icon name={icon} size={13} color={t.text} />\n : icon)}\n <Text fontSize={11} fontWeight=\"600\" color={t.text}>\n {content}\n </Text>\n {time != null && (\n <Text fontSize={10} color={t.text}>\n {time}\n </Text>\n )}\n </Box>\n );\n }\n\n const outgoing = variant === \"outgoing\";\n const bubbleBg = outgoing ? outgoingColor : incomingColor;\n const fg = outgoing ? \"#FFFFFF\" : \"text\";\n const timeFg = outgoing ? \"rgba(255,255,255,0.7)\" : \"text-secondary\";\n\n return (\n <Box\n alignSelf={outgoing ? \"flex-end\" : \"flex-start\"}\n maxWidth=\"78%\"\n marginTop={3}\n marginBottom={3}\n {...(rest as any)}\n {...a11y}\n >\n {author != null && !outgoing && (\n <Text fontSize={11} fontWeight=\"600\" color={authorColor} marginLeft={4} marginBottom={2}>\n {author}\n </Text>\n )}\n <Box\n bgColor={bubbleBg}\n paddingLeft={bare ? 0 : 12}\n paddingRight={bare ? 0 : 12}\n paddingTop={bare ? 0 : 8}\n paddingBottom={bare ? 0 : 8}\n overflow={bare ? \"hidden\" : undefined}\n borderTopLeftRadius={16}\n borderTopRightRadius={16}\n borderBottomLeftRadius={outgoing ? 16 : 4}\n borderBottomRightRadius={outgoing ? 4 : 16}\n >\n {reply}\n {bare ? content : (\n <Text fontSize={14} color={fg} lineHeight={19}>\n {content}\n </Text>\n )}\n {time != null && !bare && !(outgoing && (receipt != null || footer != null)) && (\n <Text fontSize={10} color={timeFg} alignSelf=\"flex-end\" marginTop={2}>\n {time}\n </Text>\n )}\n </Box>\n {outgoing && (receipt != null || footer != null) && (\n <Box flexDirection=\"row\" alignItems=\"center\" justifyContent=\"flex-end\" gap={4} marginTop={2} marginRight={2}>\n {time != null && receipt !== \"failed\" && (\n <Text fontSize={10} color=\"text-secondary\">\n {time}\n </Text>\n )}\n {receipt != null && (\n <MessageReceipt state={receipt} label={receiptLabel} showLabel={receiptLabel != null} />\n )}\n {footer}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default ChatBubble;\n"],"names":["useComponentDefaults","jsxs","Box","jsx","Icon","Text","MessageReceipt"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/ChatBubble/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IChatBubbleProps, ChatBubbleTone} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text, Icon} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\nimport {MessageReceipt} from \"../MessageReceipt\";\n\nconst TONE: Record<ChatBubbleTone, {bg: string; text: string}> = {\n neutral: {bg: \"surface-muted\", text: \"text-secondary\"},\n info: {bg: \"brand-tint\", text: \"brand-text\"},\n warning: {bg: \"warning-tint\", text: \"warning-text\"},\n success: {bg: \"success-tint\", text: \"success-text\"},\n};\n\n/**\n * ChatBubble — a message bubble (incoming / outgoing) or a centered system\n * event pill. Presentational and cross-platform (Box + Text), mirroring the\n * app's chat thread styling.\n *\n * <ChatBubble variant=\"incoming\" author=\"Sam\" time=\"10:30\">Hi!</ChatBubble>\n * <ChatBubble variant=\"outgoing\" time=\"10:32\">On my way</ChatBubble>\n * <ChatBubble variant=\"system\" tone=\"warning\" time=\"10:40\">Leadership transferred</ChatBubble>\n */\nexport function ChatBubble(rawProps: IChatBubbleProps) {\n const props = useComponentDefaults<IChatBubbleProps>(\"ChatBubble\", rawProps).mergedProps;\n const {\n variant = \"incoming\",\n children,\n text,\n author,\n authorColor = \"text-secondary\",\n time,\n tone = \"neutral\",\n incomingColor = \"gray.100\",\n outgoingColor = \"brand\",\n receipt,\n receiptLabel,\n footer,\n bare = false,\n reply,\n icon,\n testID,\n ...rest\n } = props;\n\n const content = text ?? children;\n const a11y = testID ? ({testID, \"data-testid\": testID} as any) : {};\n\n if (variant === \"system\") {\n const t = TONE[tone] ?? TONE.neutral;\n return (\n <Box\n alignSelf=\"center\"\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={6}\n bgColor={t.bg}\n borderRadius={999}\n paddingLeft={10}\n paddingRight={10}\n paddingTop={4}\n paddingBottom={4}\n marginTop={4}\n marginBottom={4}\n {...(rest as any)}\n {...a11y}\n >\n {icon != null && (typeof icon === \"string\"\n ? <Icon name={icon} size={13} color={t.text} />\n : icon)}\n <Text fontSize={11} fontWeight=\"600\" color={t.text}>\n {content}\n </Text>\n {time != null && (\n <Text fontSize={10} color={t.text}>\n {time}\n </Text>\n )}\n </Box>\n );\n }\n\n const outgoing = variant === \"outgoing\";\n const bubbleBg = outgoing ? outgoingColor : incomingColor;\n const fg = outgoing ? \"#FFFFFF\" : \"text\";\n const timeFg = outgoing ? \"rgba(255,255,255,0.7)\" : \"text-secondary\";\n\n return (\n <Box\n alignSelf={outgoing ? \"flex-end\" : \"flex-start\"}\n maxWidth=\"78%\"\n marginTop={3}\n marginBottom={3}\n {...(rest as any)}\n {...a11y}\n >\n {author != null && !outgoing && (\n <Text fontSize={11} fontWeight=\"600\" color={authorColor} marginLeft={4} marginBottom={2}>\n {author}\n </Text>\n )}\n <Box\n bgColor={bubbleBg}\n paddingLeft={bare ? 0 : 12}\n paddingRight={bare ? 0 : 12}\n paddingTop={bare ? 0 : 8}\n paddingBottom={bare ? 0 : 8}\n overflow={bare ? \"hidden\" : undefined}\n borderTopLeftRadius={16}\n borderTopRightRadius={16}\n borderBottomLeftRadius={outgoing ? 16 : 4}\n borderBottomRightRadius={outgoing ? 4 : 16}\n >\n {reply}\n {bare ? content : (\n <Text fontSize={14} color={fg} lineHeight={19}>\n {content}\n </Text>\n )}\n {time != null && !bare && !(outgoing && (receipt != null || footer != null)) && (\n <Text fontSize={10} color={timeFg} alignSelf=\"flex-end\" marginTop={2}>\n {time}\n </Text>\n )}\n </Box>\n {outgoing && (receipt != null || footer != null) && (\n <Box flexDirection=\"row\" alignItems=\"center\" justifyContent=\"flex-end\" gap={4} marginTop={2} marginRight={2}>\n {time != null && receipt !== \"failed\" && (\n <Text fontSize={10} color=\"text-secondary\">\n {time}\n </Text>\n )}\n {receipt != null && (\n <MessageReceipt state={receipt} label={receiptLabel} showLabel={receiptLabel != null} />\n )}\n {footer}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default ChatBubble;\n"],"names":["useComponentDefaults","jsxs","Box","jsx","Icon","Text","MessageReceipt"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { Icon } from '../../primitives/Icon/index.js';
|
|
|
5
5
|
import 'react';
|
|
6
6
|
import '../../contexts/DialogContext.js';
|
|
7
7
|
import '../../contexts/PermissionsContext.js';
|
|
8
|
+
import '../../contexts/BreadcrumbContext.js';
|
|
8
9
|
import useComponentDefaults from '../../hooks/useComponentDefaults.js';
|
|
9
10
|
import { MessageReceipt } from '../MessageReceipt/index.js';
|
|
10
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/ChatBubble/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IChatBubbleProps, ChatBubbleTone} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text, Icon} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\nimport {MessageReceipt} from \"../MessageReceipt\";\n\nconst TONE: Record<ChatBubbleTone, {bg: string; text: string}> = {\n neutral: {bg: \"surface-muted\", text: \"text-secondary\"},\n info: {bg: \"brand-tint\", text: \"brand-text\"},\n warning: {bg: \"warning-tint\", text: \"warning-text\"},\n success: {bg: \"success-tint\", text: \"success-text\"},\n};\n\n/**\n * ChatBubble — a message bubble (incoming / outgoing) or a centered system\n * event pill. Presentational and cross-platform (Box + Text), mirroring the\n * app's chat thread styling.\n *\n * <ChatBubble variant=\"incoming\" author=\"Sam\" time=\"10:30\">Hi!</ChatBubble>\n * <ChatBubble variant=\"outgoing\" time=\"10:32\">On my way</ChatBubble>\n * <ChatBubble variant=\"system\" tone=\"warning\" time=\"10:40\">Leadership transferred</ChatBubble>\n */\nexport function ChatBubble(rawProps: IChatBubbleProps) {\n const props = useComponentDefaults<IChatBubbleProps>(\"ChatBubble\", rawProps).mergedProps;\n const {\n variant = \"incoming\",\n children,\n text,\n author,\n authorColor = \"text-secondary\",\n time,\n tone = \"neutral\",\n incomingColor = \"gray.100\",\n outgoingColor = \"brand\",\n receipt,\n receiptLabel,\n footer,\n bare = false,\n reply,\n icon,\n testID,\n ...rest\n } = props;\n\n const content = text ?? children;\n const a11y = testID ? ({testID, \"data-testid\": testID} as any) : {};\n\n if (variant === \"system\") {\n const t = TONE[tone] ?? TONE.neutral;\n return (\n <Box\n alignSelf=\"center\"\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={6}\n bgColor={t.bg}\n borderRadius={999}\n paddingLeft={10}\n paddingRight={10}\n paddingTop={4}\n paddingBottom={4}\n marginTop={4}\n marginBottom={4}\n {...(rest as any)}\n {...a11y}\n >\n {icon != null && (typeof icon === \"string\"\n ? <Icon name={icon} size={13} color={t.text} />\n : icon)}\n <Text fontSize={11} fontWeight=\"600\" color={t.text}>\n {content}\n </Text>\n {time != null && (\n <Text fontSize={10} color={t.text}>\n {time}\n </Text>\n )}\n </Box>\n );\n }\n\n const outgoing = variant === \"outgoing\";\n const bubbleBg = outgoing ? outgoingColor : incomingColor;\n const fg = outgoing ? \"#FFFFFF\" : \"text\";\n const timeFg = outgoing ? \"rgba(255,255,255,0.7)\" : \"text-secondary\";\n\n return (\n <Box\n alignSelf={outgoing ? \"flex-end\" : \"flex-start\"}\n maxWidth=\"78%\"\n marginTop={3}\n marginBottom={3}\n {...(rest as any)}\n {...a11y}\n >\n {author != null && !outgoing && (\n <Text fontSize={11} fontWeight=\"600\" color={authorColor} marginLeft={4} marginBottom={2}>\n {author}\n </Text>\n )}\n <Box\n bgColor={bubbleBg}\n paddingLeft={bare ? 0 : 12}\n paddingRight={bare ? 0 : 12}\n paddingTop={bare ? 0 : 8}\n paddingBottom={bare ? 0 : 8}\n overflow={bare ? \"hidden\" : undefined}\n borderTopLeftRadius={16}\n borderTopRightRadius={16}\n borderBottomLeftRadius={outgoing ? 16 : 4}\n borderBottomRightRadius={outgoing ? 4 : 16}\n >\n {reply}\n {bare ? content : (\n <Text fontSize={14} color={fg} lineHeight={19}>\n {content}\n </Text>\n )}\n {time != null && !bare && !(outgoing && (receipt != null || footer != null)) && (\n <Text fontSize={10} color={timeFg} alignSelf=\"flex-end\" marginTop={2}>\n {time}\n </Text>\n )}\n </Box>\n {outgoing && (receipt != null || footer != null) && (\n <Box flexDirection=\"row\" alignItems=\"center\" justifyContent=\"flex-end\" gap={4} marginTop={2} marginRight={2}>\n {time != null && receipt !== \"failed\" && (\n <Text fontSize={10} color=\"text-secondary\">\n {time}\n </Text>\n )}\n {receipt != null && (\n <MessageReceipt state={receipt} label={receiptLabel} showLabel={receiptLabel != null} />\n )}\n {footer}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default ChatBubble;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/ChatBubble/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IChatBubbleProps, ChatBubbleTone} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text, Icon} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\nimport {MessageReceipt} from \"../MessageReceipt\";\n\nconst TONE: Record<ChatBubbleTone, {bg: string; text: string}> = {\n neutral: {bg: \"surface-muted\", text: \"text-secondary\"},\n info: {bg: \"brand-tint\", text: \"brand-text\"},\n warning: {bg: \"warning-tint\", text: \"warning-text\"},\n success: {bg: \"success-tint\", text: \"success-text\"},\n};\n\n/**\n * ChatBubble — a message bubble (incoming / outgoing) or a centered system\n * event pill. Presentational and cross-platform (Box + Text), mirroring the\n * app's chat thread styling.\n *\n * <ChatBubble variant=\"incoming\" author=\"Sam\" time=\"10:30\">Hi!</ChatBubble>\n * <ChatBubble variant=\"outgoing\" time=\"10:32\">On my way</ChatBubble>\n * <ChatBubble variant=\"system\" tone=\"warning\" time=\"10:40\">Leadership transferred</ChatBubble>\n */\nexport function ChatBubble(rawProps: IChatBubbleProps) {\n const props = useComponentDefaults<IChatBubbleProps>(\"ChatBubble\", rawProps).mergedProps;\n const {\n variant = \"incoming\",\n children,\n text,\n author,\n authorColor = \"text-secondary\",\n time,\n tone = \"neutral\",\n incomingColor = \"gray.100\",\n outgoingColor = \"brand\",\n receipt,\n receiptLabel,\n footer,\n bare = false,\n reply,\n icon,\n testID,\n ...rest\n } = props;\n\n const content = text ?? children;\n const a11y = testID ? ({testID, \"data-testid\": testID} as any) : {};\n\n if (variant === \"system\") {\n const t = TONE[tone] ?? TONE.neutral;\n return (\n <Box\n alignSelf=\"center\"\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={6}\n bgColor={t.bg}\n borderRadius={999}\n paddingLeft={10}\n paddingRight={10}\n paddingTop={4}\n paddingBottom={4}\n marginTop={4}\n marginBottom={4}\n {...(rest as any)}\n {...a11y}\n >\n {icon != null && (typeof icon === \"string\"\n ? <Icon name={icon} size={13} color={t.text} />\n : icon)}\n <Text fontSize={11} fontWeight=\"600\" color={t.text}>\n {content}\n </Text>\n {time != null && (\n <Text fontSize={10} color={t.text}>\n {time}\n </Text>\n )}\n </Box>\n );\n }\n\n const outgoing = variant === \"outgoing\";\n const bubbleBg = outgoing ? outgoingColor : incomingColor;\n const fg = outgoing ? \"#FFFFFF\" : \"text\";\n const timeFg = outgoing ? \"rgba(255,255,255,0.7)\" : \"text-secondary\";\n\n return (\n <Box\n alignSelf={outgoing ? \"flex-end\" : \"flex-start\"}\n maxWidth=\"78%\"\n marginTop={3}\n marginBottom={3}\n {...(rest as any)}\n {...a11y}\n >\n {author != null && !outgoing && (\n <Text fontSize={11} fontWeight=\"600\" color={authorColor} marginLeft={4} marginBottom={2}>\n {author}\n </Text>\n )}\n <Box\n bgColor={bubbleBg}\n paddingLeft={bare ? 0 : 12}\n paddingRight={bare ? 0 : 12}\n paddingTop={bare ? 0 : 8}\n paddingBottom={bare ? 0 : 8}\n overflow={bare ? \"hidden\" : undefined}\n borderTopLeftRadius={16}\n borderTopRightRadius={16}\n borderBottomLeftRadius={outgoing ? 16 : 4}\n borderBottomRightRadius={outgoing ? 4 : 16}\n >\n {reply}\n {bare ? content : (\n <Text fontSize={14} color={fg} lineHeight={19}>\n {content}\n </Text>\n )}\n {time != null && !bare && !(outgoing && (receipt != null || footer != null)) && (\n <Text fontSize={10} color={timeFg} alignSelf=\"flex-end\" marginTop={2}>\n {time}\n </Text>\n )}\n </Box>\n {outgoing && (receipt != null || footer != null) && (\n <Box flexDirection=\"row\" alignItems=\"center\" justifyContent=\"flex-end\" gap={4} marginTop={2} marginRight={2}>\n {time != null && receipt !== \"failed\" && (\n <Text fontSize={10} color=\"text-secondary\">\n {time}\n </Text>\n )}\n {receipt != null && (\n <MessageReceipt state={receipt} label={receiptLabel} showLabel={receiptLabel != null} />\n )}\n {footer}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default ChatBubble;\n"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ var index_native = require('../../assets/Icons/index.cjs');
|
|
|
7
7
|
var useSeverityColors = require('../../hooks/useSeverityColors.cjs');
|
|
8
8
|
require('../../contexts/DialogContext.cjs');
|
|
9
9
|
require('../../contexts/PermissionsContext.cjs');
|
|
10
|
+
require('../../contexts/BreadcrumbContext.cjs');
|
|
10
11
|
var useResolvedStyle = require('../../hooks/useResolvedStyle.cjs');
|
|
11
12
|
var useRtlLineHeight = require('../../hooks/useRtlLineHeight.cjs');
|
|
12
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/Chip/index.native.tsx"],"sourcesContent":["import React, {useMemo} from \"react\";\nimport {Pressable, Text, View, StyleSheet} from \"react-native\";\nimport type {IChipProps, IconName} from \"@lmb-it/kitsconcerto-types\";\nimport {IconMap} from \"../../assets/Icons\";\nimport {useSeverityColors} from \"../../hooks/useSeverityColors\";\nimport {useResolvedStyle} from \"../../hooks\";\nimport useRtlLineHeight from \"../../hooks/useRtlLineHeight\";\n\nconst SIZE_MAP = {\n sm: {fontSize: 12, px: 8, py: 4, gap: 6, iconSize: 12, height: 24, removeSize: 12},\n md: {fontSize: 14, px: 12, py: 6, gap: 6, iconSize: 14, height: 32, removeSize: 14},\n lg: {fontSize: 16, px: 14, py: 8, gap: 8, iconSize: 16, height: 40, removeSize: 16},\n} as const;\n\nfunction resolveIcon(icon: unknown, color: string, iconSize: number): React.ReactNode {\n if (!icon) return null;\n if (icon === \"dot\") {\n return (\n <View\n style={{\n width: 6,\n height: 6,\n borderRadius: 3,\n backgroundColor: color,\n }}\n />\n );\n }\n if (React.isValidElement(icon)) return icon;\n if (typeof icon !== \"string\") return null;\n const Component = IconMap[icon as IconName];\n if (Component) return <Component size={iconSize} color={color}/>;\n return null;\n}\n\nexport function Chip(props: IChipProps) {\n const {\n label,\n children,\n icon,\n selected = false,\n onPress,\n disabled = false,\n onRemove,\n severity = \"secondary\",\n size: rawSize,\n outlined,\n testID,\n style,\n // LEGIT-PLATFORM-ONLY (web): className is a CSS class hook with no\n // native equivalent — use `style` for cross-platform overrides.\n } = props;\n const resolvedStyle = useResolvedStyle(style || {});\n\n const sizeStr = String(rawSize ?? \"md\");\n const size: \"sm\" | \"md\" | \"lg\" = sizeStr === \"sm\" || sizeStr === \"lg\" ? sizeStr : \"md\";\n const sizeConfig = SIZE_MAP[size];\n\n // RTL only: NotoKufiArabic needs a taller line box than its own metrics\n // give it. `undefined` in LTR, so English chips are byte-identical.\n const rtlLineHeight = useRtlLineHeight(size as string, sizeConfig.fontSize);\n\n const sevColors = useSeverityColors(severity as any);\n\n const visual = useMemo(() => {\n if (selected && !outlined) {\n return {\n backgroundColor: sevColors.solid,\n textColor: sevColors.solidText,\n borderColor: sevColors.border || sevColors.solid,\n };\n }\n if (outlined) {\n return {\n backgroundColor: \"transparent\",\n textColor: sevColors.solid,\n borderColor: sevColors.solid,\n };\n }\n return {\n backgroundColor: sevColors.bgTint,\n textColor: sevColors.text,\n borderColor: sevColors.border,\n };\n }, [selected, outlined, sevColors]);\n\n const resolvedIcon = resolveIcon(icon, visual.textColor, sizeConfig.iconSize);\n const content = label ?? children;\n const isInteractive = !!onPress && !disabled;\n\n const containerStyle = {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n gap: sizeConfig.gap,\n height: sizeConfig.height,\n paddingHorizontal: sizeConfig.px,\n paddingRight: onRemove ? sizeConfig.gap : sizeConfig.px,\n borderRadius: 9999,\n borderWidth: 1,\n borderStyle: \"solid\" as const,\n backgroundColor: visual.backgroundColor,\n borderColor: visual.borderColor,\n opacity: disabled ? 0.5 : 1,\n // Consumer `style` wins last — mirrors web's computedCss merge order.\n ...(resolvedStyle as object),\n };\n\n const inner = (\n <>\n {resolvedIcon}\n {content != null && (\n <Text\n style={{\n fontSize: sizeConfig.fontSize,\n fontWeight: \"500\",\n color: visual.textColor,\n /* ⛔ ARABIC CLIPS WITHOUT AN EXPLICIT LINE BOX, AND THE\n CHIP'S OWN HEIGHT DOES NOT SAVE IT. Every SIZE_MAP\n row is already tall enough — 24/32/40 against font\n sizes 12/14/16, all above the 1.5x this script needs.\n The container was never the problem: React Native\n gives this raw <Text> the FONT'S natural line box,\n and NotoKufiArabic's is too short for its own\n ascenders, so the glyph is cut inside a box with room\n to spare. undefined in LTR — English is unchanged. */\n ...(rtlLineHeight != null ? {lineHeight: rtlLineHeight} : {}),\n }}\n numberOfLines={1}\n >\n {content}\n </Text>\n )}\n {onRemove && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Remove\"\n onPress={(e) => {\n e.stopPropagation?.();\n if (!disabled) onRemove();\n }}\n hitSlop={6}\n style={{\n marginLeft: 2,\n width: sizeConfig.removeSize + 4,\n height: sizeConfig.removeSize + 4,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: (sizeConfig.removeSize + 4) / 2,\n }}\n >\n <Text style={{fontSize: sizeConfig.removeSize, color: visual.textColor, lineHeight: sizeConfig.removeSize + 2}}>×</Text>\n </Pressable>\n )}\n </>\n );\n\n if (isInteractive) {\n return (\n <Pressable\n onPress={onPress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityState={{selected, disabled}}\n testID={testID}\n style={({pressed}) => [containerStyle, pressed && styles.pressed]}\n >\n {inner}\n </Pressable>\n );\n }\n\n return (\n <View style={containerStyle} testID={testID}>\n {inner}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n pressed: {\n opacity: 0.7,\n },\n});\n\nexport default Chip;\n"],"names":["jsx","View","IconMap","useResolvedStyle","useRtlLineHeight","useSeverityColors","useMemo","jsxs","Fragment","Text","Pressable","StyleSheet"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/Chip/index.native.tsx"],"sourcesContent":["import React, {useMemo} from \"react\";\nimport {Pressable, Text, View, StyleSheet} from \"react-native\";\nimport type {IChipProps, IconName} from \"@lmb-it/kitsconcerto-types\";\nimport {IconMap} from \"../../assets/Icons\";\nimport {useSeverityColors} from \"../../hooks/useSeverityColors\";\nimport {useResolvedStyle} from \"../../hooks\";\nimport useRtlLineHeight from \"../../hooks/useRtlLineHeight\";\n\nconst SIZE_MAP = {\n sm: {fontSize: 12, px: 8, py: 4, gap: 6, iconSize: 12, height: 24, removeSize: 12},\n md: {fontSize: 14, px: 12, py: 6, gap: 6, iconSize: 14, height: 32, removeSize: 14},\n lg: {fontSize: 16, px: 14, py: 8, gap: 8, iconSize: 16, height: 40, removeSize: 16},\n} as const;\n\nfunction resolveIcon(icon: unknown, color: string, iconSize: number): React.ReactNode {\n if (!icon) return null;\n if (icon === \"dot\") {\n return (\n <View\n style={{\n width: 6,\n height: 6,\n borderRadius: 3,\n backgroundColor: color,\n }}\n />\n );\n }\n if (React.isValidElement(icon)) return icon;\n if (typeof icon !== \"string\") return null;\n const Component = IconMap[icon as IconName];\n if (Component) return <Component size={iconSize} color={color}/>;\n return null;\n}\n\nexport function Chip(props: IChipProps) {\n const {\n label,\n children,\n icon,\n selected = false,\n onPress,\n disabled = false,\n onRemove,\n severity = \"secondary\",\n size: rawSize,\n outlined,\n testID,\n style,\n // LEGIT-PLATFORM-ONLY (web): className is a CSS class hook with no\n // native equivalent — use `style` for cross-platform overrides.\n } = props;\n const resolvedStyle = useResolvedStyle(style || {});\n\n const sizeStr = String(rawSize ?? \"md\");\n const size: \"sm\" | \"md\" | \"lg\" = sizeStr === \"sm\" || sizeStr === \"lg\" ? sizeStr : \"md\";\n const sizeConfig = SIZE_MAP[size];\n\n // RTL only: NotoKufiArabic needs a taller line box than its own metrics\n // give it. `undefined` in LTR, so English chips are byte-identical.\n const rtlLineHeight = useRtlLineHeight(size as string, sizeConfig.fontSize);\n\n const sevColors = useSeverityColors(severity as any);\n\n const visual = useMemo(() => {\n if (selected && !outlined) {\n return {\n backgroundColor: sevColors.solid,\n textColor: sevColors.solidText,\n borderColor: sevColors.border || sevColors.solid,\n };\n }\n if (outlined) {\n return {\n backgroundColor: \"transparent\",\n textColor: sevColors.solid,\n borderColor: sevColors.solid,\n };\n }\n return {\n backgroundColor: sevColors.bgTint,\n textColor: sevColors.text,\n borderColor: sevColors.border,\n };\n }, [selected, outlined, sevColors]);\n\n const resolvedIcon = resolveIcon(icon, visual.textColor, sizeConfig.iconSize);\n const content = label ?? children;\n const isInteractive = !!onPress && !disabled;\n\n const containerStyle = {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n gap: sizeConfig.gap,\n height: sizeConfig.height,\n paddingHorizontal: sizeConfig.px,\n paddingRight: onRemove ? sizeConfig.gap : sizeConfig.px,\n borderRadius: 9999,\n borderWidth: 1,\n borderStyle: \"solid\" as const,\n backgroundColor: visual.backgroundColor,\n borderColor: visual.borderColor,\n opacity: disabled ? 0.5 : 1,\n // Consumer `style` wins last — mirrors web's computedCss merge order.\n ...(resolvedStyle as object),\n };\n\n const inner = (\n <>\n {resolvedIcon}\n {content != null && (\n <Text\n style={{\n fontSize: sizeConfig.fontSize,\n fontWeight: \"500\",\n color: visual.textColor,\n /* ⛔ ARABIC CLIPS WITHOUT AN EXPLICIT LINE BOX, AND THE\n CHIP'S OWN HEIGHT DOES NOT SAVE IT. Every SIZE_MAP\n row is already tall enough — 24/32/40 against font\n sizes 12/14/16, all above the 1.5x this script needs.\n The container was never the problem: React Native\n gives this raw <Text> the FONT'S natural line box,\n and NotoKufiArabic's is too short for its own\n ascenders, so the glyph is cut inside a box with room\n to spare. undefined in LTR — English is unchanged. */\n ...(rtlLineHeight != null ? {lineHeight: rtlLineHeight} : {}),\n }}\n numberOfLines={1}\n >\n {content}\n </Text>\n )}\n {onRemove && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Remove\"\n onPress={(e) => {\n e.stopPropagation?.();\n if (!disabled) onRemove();\n }}\n hitSlop={6}\n style={{\n marginLeft: 2,\n width: sizeConfig.removeSize + 4,\n height: sizeConfig.removeSize + 4,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: (sizeConfig.removeSize + 4) / 2,\n }}\n >\n <Text style={{fontSize: sizeConfig.removeSize, color: visual.textColor, lineHeight: sizeConfig.removeSize + 2}}>×</Text>\n </Pressable>\n )}\n </>\n );\n\n if (isInteractive) {\n return (\n <Pressable\n onPress={onPress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityState={{selected, disabled}}\n testID={testID}\n style={({pressed}) => [containerStyle, pressed && styles.pressed]}\n >\n {inner}\n </Pressable>\n );\n }\n\n return (\n <View style={containerStyle} testID={testID}>\n {inner}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n pressed: {\n opacity: 0.7,\n },\n});\n\nexport default Chip;\n"],"names":["jsx","View","IconMap","useResolvedStyle","useRtlLineHeight","useSeverityColors","useMemo","jsxs","Fragment","Text","Pressable","StyleSheet"],"mappings":"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"}
|
package/components/Chip/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { IconMap } from '../../assets/Icons/index.js';
|
|
|
5
5
|
import { useSeverityColors } from '../../hooks/useSeverityColors.js';
|
|
6
6
|
import '../../contexts/DialogContext.js';
|
|
7
7
|
import '../../contexts/PermissionsContext.js';
|
|
8
|
+
import '../../contexts/BreadcrumbContext.js';
|
|
8
9
|
import useResolvedStyle from '../../hooks/useResolvedStyle.js';
|
|
9
10
|
import useRtlLineHeight from '../../hooks/useRtlLineHeight.js';
|
|
10
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/Chip/index.native.tsx"],"sourcesContent":["import React, {useMemo} from \"react\";\nimport {Pressable, Text, View, StyleSheet} from \"react-native\";\nimport type {IChipProps, IconName} from \"@lmb-it/kitsconcerto-types\";\nimport {IconMap} from \"../../assets/Icons\";\nimport {useSeverityColors} from \"../../hooks/useSeverityColors\";\nimport {useResolvedStyle} from \"../../hooks\";\nimport useRtlLineHeight from \"../../hooks/useRtlLineHeight\";\n\nconst SIZE_MAP = {\n sm: {fontSize: 12, px: 8, py: 4, gap: 6, iconSize: 12, height: 24, removeSize: 12},\n md: {fontSize: 14, px: 12, py: 6, gap: 6, iconSize: 14, height: 32, removeSize: 14},\n lg: {fontSize: 16, px: 14, py: 8, gap: 8, iconSize: 16, height: 40, removeSize: 16},\n} as const;\n\nfunction resolveIcon(icon: unknown, color: string, iconSize: number): React.ReactNode {\n if (!icon) return null;\n if (icon === \"dot\") {\n return (\n <View\n style={{\n width: 6,\n height: 6,\n borderRadius: 3,\n backgroundColor: color,\n }}\n />\n );\n }\n if (React.isValidElement(icon)) return icon;\n if (typeof icon !== \"string\") return null;\n const Component = IconMap[icon as IconName];\n if (Component) return <Component size={iconSize} color={color}/>;\n return null;\n}\n\nexport function Chip(props: IChipProps) {\n const {\n label,\n children,\n icon,\n selected = false,\n onPress,\n disabled = false,\n onRemove,\n severity = \"secondary\",\n size: rawSize,\n outlined,\n testID,\n style,\n // LEGIT-PLATFORM-ONLY (web): className is a CSS class hook with no\n // native equivalent — use `style` for cross-platform overrides.\n } = props;\n const resolvedStyle = useResolvedStyle(style || {});\n\n const sizeStr = String(rawSize ?? \"md\");\n const size: \"sm\" | \"md\" | \"lg\" = sizeStr === \"sm\" || sizeStr === \"lg\" ? sizeStr : \"md\";\n const sizeConfig = SIZE_MAP[size];\n\n // RTL only: NotoKufiArabic needs a taller line box than its own metrics\n // give it. `undefined` in LTR, so English chips are byte-identical.\n const rtlLineHeight = useRtlLineHeight(size as string, sizeConfig.fontSize);\n\n const sevColors = useSeverityColors(severity as any);\n\n const visual = useMemo(() => {\n if (selected && !outlined) {\n return {\n backgroundColor: sevColors.solid,\n textColor: sevColors.solidText,\n borderColor: sevColors.border || sevColors.solid,\n };\n }\n if (outlined) {\n return {\n backgroundColor: \"transparent\",\n textColor: sevColors.solid,\n borderColor: sevColors.solid,\n };\n }\n return {\n backgroundColor: sevColors.bgTint,\n textColor: sevColors.text,\n borderColor: sevColors.border,\n };\n }, [selected, outlined, sevColors]);\n\n const resolvedIcon = resolveIcon(icon, visual.textColor, sizeConfig.iconSize);\n const content = label ?? children;\n const isInteractive = !!onPress && !disabled;\n\n const containerStyle = {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n gap: sizeConfig.gap,\n height: sizeConfig.height,\n paddingHorizontal: sizeConfig.px,\n paddingRight: onRemove ? sizeConfig.gap : sizeConfig.px,\n borderRadius: 9999,\n borderWidth: 1,\n borderStyle: \"solid\" as const,\n backgroundColor: visual.backgroundColor,\n borderColor: visual.borderColor,\n opacity: disabled ? 0.5 : 1,\n // Consumer `style` wins last — mirrors web's computedCss merge order.\n ...(resolvedStyle as object),\n };\n\n const inner = (\n <>\n {resolvedIcon}\n {content != null && (\n <Text\n style={{\n fontSize: sizeConfig.fontSize,\n fontWeight: \"500\",\n color: visual.textColor,\n /* ⛔ ARABIC CLIPS WITHOUT AN EXPLICIT LINE BOX, AND THE\n CHIP'S OWN HEIGHT DOES NOT SAVE IT. Every SIZE_MAP\n row is already tall enough — 24/32/40 against font\n sizes 12/14/16, all above the 1.5x this script needs.\n The container was never the problem: React Native\n gives this raw <Text> the FONT'S natural line box,\n and NotoKufiArabic's is too short for its own\n ascenders, so the glyph is cut inside a box with room\n to spare. undefined in LTR — English is unchanged. */\n ...(rtlLineHeight != null ? {lineHeight: rtlLineHeight} : {}),\n }}\n numberOfLines={1}\n >\n {content}\n </Text>\n )}\n {onRemove && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Remove\"\n onPress={(e) => {\n e.stopPropagation?.();\n if (!disabled) onRemove();\n }}\n hitSlop={6}\n style={{\n marginLeft: 2,\n width: sizeConfig.removeSize + 4,\n height: sizeConfig.removeSize + 4,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: (sizeConfig.removeSize + 4) / 2,\n }}\n >\n <Text style={{fontSize: sizeConfig.removeSize, color: visual.textColor, lineHeight: sizeConfig.removeSize + 2}}>×</Text>\n </Pressable>\n )}\n </>\n );\n\n if (isInteractive) {\n return (\n <Pressable\n onPress={onPress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityState={{selected, disabled}}\n testID={testID}\n style={({pressed}) => [containerStyle, pressed && styles.pressed]}\n >\n {inner}\n </Pressable>\n );\n }\n\n return (\n <View style={containerStyle} testID={testID}>\n {inner}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n pressed: {\n opacity: 0.7,\n },\n});\n\nexport default Chip;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/Chip/index.native.tsx"],"sourcesContent":["import React, {useMemo} from \"react\";\nimport {Pressable, Text, View, StyleSheet} from \"react-native\";\nimport type {IChipProps, IconName} from \"@lmb-it/kitsconcerto-types\";\nimport {IconMap} from \"../../assets/Icons\";\nimport {useSeverityColors} from \"../../hooks/useSeverityColors\";\nimport {useResolvedStyle} from \"../../hooks\";\nimport useRtlLineHeight from \"../../hooks/useRtlLineHeight\";\n\nconst SIZE_MAP = {\n sm: {fontSize: 12, px: 8, py: 4, gap: 6, iconSize: 12, height: 24, removeSize: 12},\n md: {fontSize: 14, px: 12, py: 6, gap: 6, iconSize: 14, height: 32, removeSize: 14},\n lg: {fontSize: 16, px: 14, py: 8, gap: 8, iconSize: 16, height: 40, removeSize: 16},\n} as const;\n\nfunction resolveIcon(icon: unknown, color: string, iconSize: number): React.ReactNode {\n if (!icon) return null;\n if (icon === \"dot\") {\n return (\n <View\n style={{\n width: 6,\n height: 6,\n borderRadius: 3,\n backgroundColor: color,\n }}\n />\n );\n }\n if (React.isValidElement(icon)) return icon;\n if (typeof icon !== \"string\") return null;\n const Component = IconMap[icon as IconName];\n if (Component) return <Component size={iconSize} color={color}/>;\n return null;\n}\n\nexport function Chip(props: IChipProps) {\n const {\n label,\n children,\n icon,\n selected = false,\n onPress,\n disabled = false,\n onRemove,\n severity = \"secondary\",\n size: rawSize,\n outlined,\n testID,\n style,\n // LEGIT-PLATFORM-ONLY (web): className is a CSS class hook with no\n // native equivalent — use `style` for cross-platform overrides.\n } = props;\n const resolvedStyle = useResolvedStyle(style || {});\n\n const sizeStr = String(rawSize ?? \"md\");\n const size: \"sm\" | \"md\" | \"lg\" = sizeStr === \"sm\" || sizeStr === \"lg\" ? sizeStr : \"md\";\n const sizeConfig = SIZE_MAP[size];\n\n // RTL only: NotoKufiArabic needs a taller line box than its own metrics\n // give it. `undefined` in LTR, so English chips are byte-identical.\n const rtlLineHeight = useRtlLineHeight(size as string, sizeConfig.fontSize);\n\n const sevColors = useSeverityColors(severity as any);\n\n const visual = useMemo(() => {\n if (selected && !outlined) {\n return {\n backgroundColor: sevColors.solid,\n textColor: sevColors.solidText,\n borderColor: sevColors.border || sevColors.solid,\n };\n }\n if (outlined) {\n return {\n backgroundColor: \"transparent\",\n textColor: sevColors.solid,\n borderColor: sevColors.solid,\n };\n }\n return {\n backgroundColor: sevColors.bgTint,\n textColor: sevColors.text,\n borderColor: sevColors.border,\n };\n }, [selected, outlined, sevColors]);\n\n const resolvedIcon = resolveIcon(icon, visual.textColor, sizeConfig.iconSize);\n const content = label ?? children;\n const isInteractive = !!onPress && !disabled;\n\n const containerStyle = {\n flexDirection: \"row\" as const,\n alignItems: \"center\" as const,\n justifyContent: \"center\" as const,\n gap: sizeConfig.gap,\n height: sizeConfig.height,\n paddingHorizontal: sizeConfig.px,\n paddingRight: onRemove ? sizeConfig.gap : sizeConfig.px,\n borderRadius: 9999,\n borderWidth: 1,\n borderStyle: \"solid\" as const,\n backgroundColor: visual.backgroundColor,\n borderColor: visual.borderColor,\n opacity: disabled ? 0.5 : 1,\n // Consumer `style` wins last — mirrors web's computedCss merge order.\n ...(resolvedStyle as object),\n };\n\n const inner = (\n <>\n {resolvedIcon}\n {content != null && (\n <Text\n style={{\n fontSize: sizeConfig.fontSize,\n fontWeight: \"500\",\n color: visual.textColor,\n /* ⛔ ARABIC CLIPS WITHOUT AN EXPLICIT LINE BOX, AND THE\n CHIP'S OWN HEIGHT DOES NOT SAVE IT. Every SIZE_MAP\n row is already tall enough — 24/32/40 against font\n sizes 12/14/16, all above the 1.5x this script needs.\n The container was never the problem: React Native\n gives this raw <Text> the FONT'S natural line box,\n and NotoKufiArabic's is too short for its own\n ascenders, so the glyph is cut inside a box with room\n to spare. undefined in LTR — English is unchanged. */\n ...(rtlLineHeight != null ? {lineHeight: rtlLineHeight} : {}),\n }}\n numberOfLines={1}\n >\n {content}\n </Text>\n )}\n {onRemove && (\n <Pressable\n accessibilityRole=\"button\"\n accessibilityLabel=\"Remove\"\n onPress={(e) => {\n e.stopPropagation?.();\n if (!disabled) onRemove();\n }}\n hitSlop={6}\n style={{\n marginLeft: 2,\n width: sizeConfig.removeSize + 4,\n height: sizeConfig.removeSize + 4,\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: (sizeConfig.removeSize + 4) / 2,\n }}\n >\n <Text style={{fontSize: sizeConfig.removeSize, color: visual.textColor, lineHeight: sizeConfig.removeSize + 2}}>×</Text>\n </Pressable>\n )}\n </>\n );\n\n if (isInteractive) {\n return (\n <Pressable\n onPress={onPress}\n disabled={disabled}\n accessibilityRole=\"button\"\n accessibilityState={{selected, disabled}}\n testID={testID}\n style={({pressed}) => [containerStyle, pressed && styles.pressed]}\n >\n {inner}\n </Pressable>\n );\n }\n\n return (\n <View style={containerStyle} testID={testID}>\n {inner}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n pressed: {\n opacity: 0.7,\n },\n});\n\nexport default Chip;\n"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ var index_native = require('../../primitives/Text/index.cjs');
|
|
|
6
6
|
require('react');
|
|
7
7
|
require('../../contexts/DialogContext.cjs');
|
|
8
8
|
require('../../contexts/PermissionsContext.cjs');
|
|
9
|
+
require('../../contexts/BreadcrumbContext.cjs');
|
|
9
10
|
var useComponentDefaults = require('../../hooks/useComponentDefaults.cjs');
|
|
10
11
|
|
|
11
12
|
function DateSeparator(rawProps) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/DateSeparator/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IDateSeparatorProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\n\n/**\n * DateSeparator — a centered date-divider pill for chat threads (e.g. \"Today\",\n * \"12 Jun\"). Presentational and cross-platform (Box + Text). `label` is a\n * resolved, already-localized/formatted string supplied by the consumer — this\n * primitive holds no copy and does no date formatting.\n *\n * <DateSeparator label=\"Today\" />\n */\nexport function DateSeparator(rawProps: IDateSeparatorProps) {\n const props = useComponentDefaults<IDateSeparatorProps>(\"DateSeparator\", rawProps).mergedProps;\n const {label, color = \"text-secondary\", backgroundColor = \"surface-muted\", testID, ...rest} = props;\n const a11y = testID ? ({testID, \"data-testid\": testID} as any) : {};\n\n return (\n <Box alignSelf=\"center\" marginTop={10} marginBottom={10} {...(rest as any)} {...a11y}>\n <Box\n bgColor={backgroundColor}\n borderWidth={1}\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius={999}\n paddingLeft={14}\n paddingRight={14}\n paddingTop={5}\n paddingBottom={5}\n >\n <Text fontSize={12} fontWeight=\"600\" color={color}>\n {label}\n </Text>\n </Box>\n </Box>\n );\n}\n\nexport default DateSeparator;\n"],"names":["useComponentDefaults","jsx","Box","Text"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/DateSeparator/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IDateSeparatorProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\n\n/**\n * DateSeparator — a centered date-divider pill for chat threads (e.g. \"Today\",\n * \"12 Jun\"). Presentational and cross-platform (Box + Text). `label` is a\n * resolved, already-localized/formatted string supplied by the consumer — this\n * primitive holds no copy and does no date formatting.\n *\n * <DateSeparator label=\"Today\" />\n */\nexport function DateSeparator(rawProps: IDateSeparatorProps) {\n const props = useComponentDefaults<IDateSeparatorProps>(\"DateSeparator\", rawProps).mergedProps;\n const {label, color = \"text-secondary\", backgroundColor = \"surface-muted\", testID, ...rest} = props;\n const a11y = testID ? ({testID, \"data-testid\": testID} as any) : {};\n\n return (\n <Box alignSelf=\"center\" marginTop={10} marginBottom={10} {...(rest as any)} {...a11y}>\n <Box\n bgColor={backgroundColor}\n borderWidth={1}\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius={999}\n paddingLeft={14}\n paddingRight={14}\n paddingTop={5}\n paddingBottom={5}\n >\n <Text fontSize={12} fontWeight=\"600\" color={color}>\n {label}\n </Text>\n </Box>\n </Box>\n );\n}\n\nexport default DateSeparator;\n"],"names":["useComponentDefaults","jsx","Box","Text"],"mappings":";;;;;;;;;;;AAaO,SAAS,cAAc,QAAA,EAA+B;AACzD,EAAA,MAAM,KAAA,GAAQA,4BAAA,CAA0C,eAAA,EAAiB,QAAQ,CAAA,CAAE,WAAA;AACnF,EAAA,MAAM,EAAC,OAAO,KAAA,GAAQ,gBAAA,EAAkB,kBAAkB,eAAA,EAAiB,MAAA,EAAQ,GAAG,IAAA,EAAI,GAAI,KAAA;AAC9F,EAAA,MAAM,OAAO,MAAA,GAAU,EAAC,QAAQ,aAAA,EAAe,MAAA,KAAkB,EAAC;AAElE,EAAA,uBACIC,cAAA,CAACC,aAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,SAAA,EAAW,EAAA,EAAI,YAAA,EAAc,EAAA,EAAK,GAAI,IAAA,EAAe,GAAG,IAAA,EAC5E,QAAA,kBAAAD,cAAA;AAAA,IAACC,aAAA;AAAA,IAAA;AAAA,MACG,OAAA,EAAS,eAAA;AAAA,MACT,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAY,OAAA;AAAA,MACZ,WAAA,EAAY,QAAA;AAAA,MACZ,YAAA,EAAc,GAAA;AAAA,MACd,WAAA,EAAa,EAAA;AAAA,MACb,YAAA,EAAc,EAAA;AAAA,MACd,UAAA,EAAY,CAAA;AAAA,MACZ,aAAA,EAAe,CAAA;AAAA,MAEf,yCAACC,oBAAA,EAAA,EAAK,QAAA,EAAU,IAAI,UAAA,EAAW,KAAA,EAAM,OAChC,QAAA,EAAA,KAAA,EACL;AAAA;AAAA,GACJ,EACJ,CAAA;AAER;;;;"}
|
|
@@ -4,6 +4,7 @@ import Text from '../../primitives/Text/index.js';
|
|
|
4
4
|
import 'react';
|
|
5
5
|
import '../../contexts/DialogContext.js';
|
|
6
6
|
import '../../contexts/PermissionsContext.js';
|
|
7
|
+
import '../../contexts/BreadcrumbContext.js';
|
|
7
8
|
import useComponentDefaults from '../../hooks/useComponentDefaults.js';
|
|
8
9
|
|
|
9
10
|
function DateSeparator(rawProps) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/DateSeparator/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IDateSeparatorProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\n\n/**\n * DateSeparator — a centered date-divider pill for chat threads (e.g. \"Today\",\n * \"12 Jun\"). Presentational and cross-platform (Box + Text). `label` is a\n * resolved, already-localized/formatted string supplied by the consumer — this\n * primitive holds no copy and does no date formatting.\n *\n * <DateSeparator label=\"Today\" />\n */\nexport function DateSeparator(rawProps: IDateSeparatorProps) {\n const props = useComponentDefaults<IDateSeparatorProps>(\"DateSeparator\", rawProps).mergedProps;\n const {label, color = \"text-secondary\", backgroundColor = \"surface-muted\", testID, ...rest} = props;\n const a11y = testID ? ({testID, \"data-testid\": testID} as any) : {};\n\n return (\n <Box alignSelf=\"center\" marginTop={10} marginBottom={10} {...(rest as any)} {...a11y}>\n <Box\n bgColor={backgroundColor}\n borderWidth={1}\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius={999}\n paddingLeft={14}\n paddingRight={14}\n paddingTop={5}\n paddingBottom={5}\n >\n <Text fontSize={12} fontWeight=\"600\" color={color}>\n {label}\n </Text>\n </Box>\n </Box>\n );\n}\n\nexport default DateSeparator;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/DateSeparator/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IDateSeparatorProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\n\n/**\n * DateSeparator — a centered date-divider pill for chat threads (e.g. \"Today\",\n * \"12 Jun\"). Presentational and cross-platform (Box + Text). `label` is a\n * resolved, already-localized/formatted string supplied by the consumer — this\n * primitive holds no copy and does no date formatting.\n *\n * <DateSeparator label=\"Today\" />\n */\nexport function DateSeparator(rawProps: IDateSeparatorProps) {\n const props = useComponentDefaults<IDateSeparatorProps>(\"DateSeparator\", rawProps).mergedProps;\n const {label, color = \"text-secondary\", backgroundColor = \"surface-muted\", testID, ...rest} = props;\n const a11y = testID ? ({testID, \"data-testid\": testID} as any) : {};\n\n return (\n <Box alignSelf=\"center\" marginTop={10} marginBottom={10} {...(rest as any)} {...a11y}>\n <Box\n bgColor={backgroundColor}\n borderWidth={1}\n borderStyle=\"solid\"\n borderColor=\"border\"\n borderRadius={999}\n paddingLeft={14}\n paddingRight={14}\n paddingTop={5}\n paddingBottom={5}\n >\n <Text fontSize={12} fontWeight=\"600\" color={color}>\n {label}\n </Text>\n </Box>\n </Box>\n );\n}\n\nexport default DateSeparator;\n"],"names":[],"mappings":";;;;;;;;;AAaO,SAAS,cAAc,QAAA,EAA+B;AACzD,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAA0C,eAAA,EAAiB,QAAQ,CAAA,CAAE,WAAA;AACnF,EAAA,MAAM,EAAC,OAAO,KAAA,GAAQ,gBAAA,EAAkB,kBAAkB,eAAA,EAAiB,MAAA,EAAQ,GAAG,IAAA,EAAI,GAAI,KAAA;AAC9F,EAAA,MAAM,OAAO,MAAA,GAAU,EAAC,QAAQ,aAAA,EAAe,MAAA,KAAkB,EAAC;AAElE,EAAA,uBACI,GAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAU,QAAA,EAAS,SAAA,EAAW,EAAA,EAAI,YAAA,EAAc,EAAA,EAAK,GAAI,IAAA,EAAe,GAAG,IAAA,EAC5E,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACG,OAAA,EAAS,eAAA;AAAA,MACT,WAAA,EAAa,CAAA;AAAA,MACb,WAAA,EAAY,OAAA;AAAA,MACZ,WAAA,EAAY,QAAA;AAAA,MACZ,YAAA,EAAc,GAAA;AAAA,MACd,WAAA,EAAa,EAAA;AAAA,MACb,YAAA,EAAc,EAAA;AAAA,MACd,UAAA,EAAY,CAAA;AAAA,MACZ,aAAA,EAAe,CAAA;AAAA,MAEf,8BAAC,IAAA,EAAA,EAAK,QAAA,EAAU,IAAI,UAAA,EAAW,KAAA,EAAM,OAChC,QAAA,EAAA,KAAA,EACL;AAAA;AAAA,GACJ,EACJ,CAAA;AAER;;;;"}
|
|
@@ -18,6 +18,7 @@ require('axios');
|
|
|
18
18
|
var SelectContext = require('../../form/selects/SelectContext.cjs');
|
|
19
19
|
require('../../contexts/DialogContext.cjs');
|
|
20
20
|
require('../../contexts/PermissionsContext.cjs');
|
|
21
|
+
require('../../contexts/BreadcrumbContext.cjs');
|
|
21
22
|
|
|
22
23
|
const DetailList = ({
|
|
23
24
|
title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/DetailsList/index.tsx"],"sourcesContent":["import React, {type ReactNode, useState} from 'react';\nimport {\n Box,\n Flex,\n HStack,\n Heading,\n Text,\n Button,\n KitsInputText,\n KitsInputNumber,\n KitsInputTextarea,\n FormSelect,\n useLanguage,\n} from '../../_compat';\nimport type {IDetailListProps, IDetailItem} from '@lmb-it/kitsconcerto-types';\n\nconst DetailList = <T extends Record<string, any>>({\n title,\n description,\n data,\n items,\n headerActions,\n itemActions,\n}: IDetailListProps<T>) => {\n const {t} = useLanguage();\n const [editingField, setEditingField] = useState<keyof T | null>(null);\n const [draftValue, setDraftValue] = useState<any>(null);\n const [isSaving, setIsSaving] = useState(false);\n\n const handleEdit = (item: IDetailItem<T>) => {\n setEditingField(item.name);\n setDraftValue(data[item.name]);\n };\n\n const handleCancel = () => {\n setEditingField(null);\n setDraftValue(null);\n };\n\n const handleSave = async (item: IDetailItem<T>) => {\n if (item.onSave) {\n setIsSaving(true);\n try {\n await item.onSave(item.name, draftValue);\n setEditingField(null);\n } finally {\n setIsSaving(false);\n }\n } else {\n setEditingField(null);\n }\n };\n\n const renderControl = (item: IDetailItem<T>) => {\n const commonProps = {\n value: draftValue,\n onChange: (e: any) => setDraftValue(e.target ? e.target.value : e.value),\n w: '100%',\n ...item.inputProps,\n };\n\n switch (item.type) {\n case 'number':\n return (\n <KitsInputNumber\n value={draftValue}\n onChange={(e) => setDraftValue(e.value)}\n style={{width: '100%'}}\n {...item.inputProps}\n />\n );\n case 'textarea':\n return <KitsInputTextarea {...commonProps} rows={3} autoResize/>;\n case 'select':\n return (\n <FormSelect\n shape=\"dropdown\"\n {...commonProps}\n list={item.list || []}\n labelKey={item.labelKey}\n valueKey={item.valueKey}\n />\n );\n case 'multiselect':\n return (\n <FormSelect\n shape=\"multiselect\"\n {...commonProps}\n list={item.list || []}\n labelKey={item.labelKey}\n valueKey={item.valueKey}\n />\n );\n case 'text':\n default:\n return <KitsInputText {...commonProps} />;\n }\n };\n\n // @ts-ignore\n // @ts-ignore\n return (\n <Box bgColor=\"var(--surface-0)\" p=\"1.5rem\" borderRadius=\"0.75rem\">\n {/* Header Area */}\n {(title || description || headerActions) && (\n <HStack justifyContent=\"space-between\" alignItems=\"flex-start\" mb=\"1.5rem\">\n <Box>\n {title && (\n typeof title === 'string'\n ? (\n <Heading as=\"h2\" fontSize=\"1.5rem\" fontWeight=\"600\"\n fontColor=\"var(--text-900)\"\n mb={description ? '0.5rem' : '0'}>\n {title}\n </Heading>\n )\n : title\n )}\n {description && (\n typeof description === 'string'\n ? (\n <Text as=\"p\" fontColor=\"var(--text-500)\" fontSize=\"0.875rem\">\n {description}\n </Text>\n )\n : description\n )}\n </Box>\n {headerActions && <Box>{headerActions}</Box>}\n </HStack>\n )}\n\n {/* List Area */}\n <Box as=\"ul\" p=\"0\" m=\"0\" style={{listStyle: 'none'}}>\n {items.map((item, index) => {\n const isEditing = editingField === item.name;\n const isLast = index === items.length - 1;\n\n return (\n <Flex\n key={item.name as string}\n as=\"li\"\n alignItems=\"center\"\n py=\"1rem\"\n // justifyContent={'center'}\n px=\"0.5rem\"\n style={{\n borderTop: '1px solid var(--surface-200)',\n borderBottom: isLast ? '1px solid var(--surface-200)' : 'none',\n }}\n flexWrap=\"wrap\"\n >\n <Flex w={['50%', null, '85%']} flexDirection={['column', 'row']}>\n {/* Label Column */}\n <Text\n m={0}\n w={['50%', null, '16.666%']}\n fontColor=\"var(--surface-500)\"\n fontWeight=\"500\"\n fontSize=\"0.875rem\"\n >\n {item.label}\n </Text>\n\n {/* Value / Edit Control Column */}\n <Box\n w={['100%', null, '66.666%']}\n fontColor=\"var(--text-900)\"\n lineHeight={item.type === 'textarea' ? 1.5 : undefined}\n >\n {isEditing\n ? renderControl(item)\n : item.body\n ? item.body(data[item.name], data)\n : (data[item.name] as ReactNode)}\n </Box>\n </Flex>\n\n {/* Actions Column */}\n <Flex\n w={['50%', null, '15%']}\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n gap=\"0.5rem\"\n >\n {itemActions && !isEditing && itemActions(item, data)}\n\n {item.editable && !isEditing && (\n <Button\n label={t(\"edit\")}\n icon=\"pencil\"\n severity=\"contrast\"\n outlined\n onClick={() => handleEdit(item)}\n />\n )}\n\n {isEditing && (\n <HStack gap=\"0.25rem\">\n <Button\n icon=\"pi pi-check\"\n severity=\"success\"\n loading={isSaving}\n onClick={() => handleSave(item)}\n aria-label={t(\"save\")}\n />\n <Button\n icon=\"pi pi-times\"\n severity=\"secondary\"\n disabled={isSaving}\n onClick={handleCancel}\n aria-label={t(\"cancel\")}\n />\n </HStack>\n )}\n </Flex>\n </Flex>\n );\n })}\n </Box>\n </Box>\n );\n}\n\nexport default DetailList\n"],"names":["useLanguage","useState","jsx","KitsInputNumber","KitsInputTextarea","FormSelect","KitsInputText","Box","jsxs","HStack","Heading","Text","index","Flex","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/DetailsList/index.tsx"],"sourcesContent":["import React, {type ReactNode, useState} from 'react';\nimport {\n Box,\n Flex,\n HStack,\n Heading,\n Text,\n Button,\n KitsInputText,\n KitsInputNumber,\n KitsInputTextarea,\n FormSelect,\n useLanguage,\n} from '../../_compat';\nimport type {IDetailListProps, IDetailItem} from '@lmb-it/kitsconcerto-types';\n\nconst DetailList = <T extends Record<string, any>>({\n title,\n description,\n data,\n items,\n headerActions,\n itemActions,\n}: IDetailListProps<T>) => {\n const {t} = useLanguage();\n const [editingField, setEditingField] = useState<keyof T | null>(null);\n const [draftValue, setDraftValue] = useState<any>(null);\n const [isSaving, setIsSaving] = useState(false);\n\n const handleEdit = (item: IDetailItem<T>) => {\n setEditingField(item.name);\n setDraftValue(data[item.name]);\n };\n\n const handleCancel = () => {\n setEditingField(null);\n setDraftValue(null);\n };\n\n const handleSave = async (item: IDetailItem<T>) => {\n if (item.onSave) {\n setIsSaving(true);\n try {\n await item.onSave(item.name, draftValue);\n setEditingField(null);\n } finally {\n setIsSaving(false);\n }\n } else {\n setEditingField(null);\n }\n };\n\n const renderControl = (item: IDetailItem<T>) => {\n const commonProps = {\n value: draftValue,\n onChange: (e: any) => setDraftValue(e.target ? e.target.value : e.value),\n w: '100%',\n ...item.inputProps,\n };\n\n switch (item.type) {\n case 'number':\n return (\n <KitsInputNumber\n value={draftValue}\n onChange={(e) => setDraftValue(e.value)}\n style={{width: '100%'}}\n {...item.inputProps}\n />\n );\n case 'textarea':\n return <KitsInputTextarea {...commonProps} rows={3} autoResize/>;\n case 'select':\n return (\n <FormSelect\n shape=\"dropdown\"\n {...commonProps}\n list={item.list || []}\n labelKey={item.labelKey}\n valueKey={item.valueKey}\n />\n );\n case 'multiselect':\n return (\n <FormSelect\n shape=\"multiselect\"\n {...commonProps}\n list={item.list || []}\n labelKey={item.labelKey}\n valueKey={item.valueKey}\n />\n );\n case 'text':\n default:\n return <KitsInputText {...commonProps} />;\n }\n };\n\n // @ts-ignore\n // @ts-ignore\n return (\n <Box bgColor=\"var(--surface-0)\" p=\"1.5rem\" borderRadius=\"0.75rem\">\n {/* Header Area */}\n {(title || description || headerActions) && (\n <HStack justifyContent=\"space-between\" alignItems=\"flex-start\" mb=\"1.5rem\">\n <Box>\n {title && (\n typeof title === 'string'\n ? (\n <Heading as=\"h2\" fontSize=\"1.5rem\" fontWeight=\"600\"\n fontColor=\"var(--text-900)\"\n mb={description ? '0.5rem' : '0'}>\n {title}\n </Heading>\n )\n : title\n )}\n {description && (\n typeof description === 'string'\n ? (\n <Text as=\"p\" fontColor=\"var(--text-500)\" fontSize=\"0.875rem\">\n {description}\n </Text>\n )\n : description\n )}\n </Box>\n {headerActions && <Box>{headerActions}</Box>}\n </HStack>\n )}\n\n {/* List Area */}\n <Box as=\"ul\" p=\"0\" m=\"0\" style={{listStyle: 'none'}}>\n {items.map((item, index) => {\n const isEditing = editingField === item.name;\n const isLast = index === items.length - 1;\n\n return (\n <Flex\n key={item.name as string}\n as=\"li\"\n alignItems=\"center\"\n py=\"1rem\"\n // justifyContent={'center'}\n px=\"0.5rem\"\n style={{\n borderTop: '1px solid var(--surface-200)',\n borderBottom: isLast ? '1px solid var(--surface-200)' : 'none',\n }}\n flexWrap=\"wrap\"\n >\n <Flex w={['50%', null, '85%']} flexDirection={['column', 'row']}>\n {/* Label Column */}\n <Text\n m={0}\n w={['50%', null, '16.666%']}\n fontColor=\"var(--surface-500)\"\n fontWeight=\"500\"\n fontSize=\"0.875rem\"\n >\n {item.label}\n </Text>\n\n {/* Value / Edit Control Column */}\n <Box\n w={['100%', null, '66.666%']}\n fontColor=\"var(--text-900)\"\n lineHeight={item.type === 'textarea' ? 1.5 : undefined}\n >\n {isEditing\n ? renderControl(item)\n : item.body\n ? item.body(data[item.name], data)\n : (data[item.name] as ReactNode)}\n </Box>\n </Flex>\n\n {/* Actions Column */}\n <Flex\n w={['50%', null, '15%']}\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n gap=\"0.5rem\"\n >\n {itemActions && !isEditing && itemActions(item, data)}\n\n {item.editable && !isEditing && (\n <Button\n label={t(\"edit\")}\n icon=\"pencil\"\n severity=\"contrast\"\n outlined\n onClick={() => handleEdit(item)}\n />\n )}\n\n {isEditing && (\n <HStack gap=\"0.25rem\">\n <Button\n icon=\"pi pi-check\"\n severity=\"success\"\n loading={isSaving}\n onClick={() => handleSave(item)}\n aria-label={t(\"save\")}\n />\n <Button\n icon=\"pi pi-times\"\n severity=\"secondary\"\n disabled={isSaving}\n onClick={handleCancel}\n aria-label={t(\"cancel\")}\n />\n </HStack>\n )}\n </Flex>\n </Flex>\n );\n })}\n </Box>\n </Box>\n );\n}\n\nexport default DetailList\n"],"names":["useLanguage","useState","jsx","KitsInputNumber","KitsInputTextarea","FormSelect","KitsInputText","Box","jsxs","HStack","Heading","Text","index","Flex","Button"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,aAAa,CAAgC;AAAA,EAC/C,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA;AACJ,CAAA,KAA2B;AACvB,EAAA,MAAM,EAAC,CAAA,EAAC,GAAIA,kBAAA,EAAY;AACxB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIC,eAAyB,IAAI,CAAA;AACrE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAc,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE9C,EAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAAyB;AACzC,IAAA,eAAA,CAAgB,KAAK,IAAI,CAAA;AACzB,IAAA,aAAA,CAAc,IAAA,CAAK,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,EACjC,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACvB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,OAAO,IAAA,KAAyB;AAC/C,IAAA,IAAI,KAAK,MAAA,EAAQ;AACb,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,IAAI;AACA,QAAA,MAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,UAAU,CAAA;AACvC,QAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,MACxB,CAAA,SAAE;AACE,QAAA,WAAA,CAAY,KAAK,CAAA;AAAA,MACrB;AAAA,IACJ,CAAA,MAAO;AACH,MAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,IACxB;AAAA,EACJ,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,IAAA,KAAyB;AAC5C,IAAA,MAAM,WAAA,GAAc;AAAA,MAChB,KAAA,EAAO,UAAA;AAAA,MACP,QAAA,EAAU,CAAC,CAAA,KAAW,aAAA,CAAc,CAAA,CAAE,SAAS,CAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAA,CAAE,KAAK,CAAA;AAAA,MACvE,CAAA,EAAG,MAAA;AAAA,MACH,GAAG,IAAA,CAAK;AAAA,KACZ;AAEA,IAAA,QAAQ,KAAK,IAAA;AAAM,MACf,KAAK,QAAA;AACD,QAAA,uBACIC,cAAA;AAAA,UAACC,sBAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAO,UAAA;AAAA,YACP,QAAA,EAAU,CAAC,CAAA,KAAM,aAAA,CAAc,EAAE,KAAK,CAAA;AAAA,YACtC,KAAA,EAAO,EAAC,KAAA,EAAO,MAAA,EAAM;AAAA,YACpB,GAAG,IAAA,CAAK;AAAA;AAAA,SACb;AAAA,MAER,KAAK,UAAA;AACD,QAAA,sCAAQC,sBAAA,EAAA,EAAmB,GAAG,WAAA,EAAa,IAAA,EAAM,GAAG,UAAA,EAAU,IAAA,EAAA,CAAA;AAAA,MAClE,KAAK,QAAA;AACD,QAAA,uBACIF,cAAA;AAAA,UAACG,qBAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAM,UAAA;AAAA,YACL,GAAG,WAAA;AAAA,YACJ,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,EAAC;AAAA,YACpB,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,UAAU,IAAA,CAAK;AAAA;AAAA,SACnB;AAAA,MAER,KAAK,aAAA;AACD,QAAA,uBACIH,cAAA;AAAA,UAACG,qBAAA;AAAA,UAAA;AAAA,YACG,KAAA,EAAM,aAAA;AAAA,YACL,GAAG,WAAA;AAAA,YACJ,IAAA,EAAM,IAAA,CAAK,IAAA,IAAQ,EAAC;AAAA,YACpB,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,UAAU,IAAA,CAAK;AAAA;AAAA,SACnB;AAAA,MAER,KAAK,MAAA;AAAA,MACL;AACI,QAAA,uBAAOH,cAAA,CAACI,sBAAA,EAAA,EAAe,GAAG,WAAA,EAAa,CAAA;AAAA;AAC/C,EACJ,CAAA;AAIA,EAAA,uCACKC,aAAA,EAAA,EAAI,OAAA,EAAQ,oBAAmB,CAAA,EAAE,QAAA,EAAS,cAAa,SAAA,EAElD,QAAA,EAAA;AAAA,IAAA,CAAA,KAAA,IAAS,WAAA,IAAe,kCACtBC,eAAA,CAACC,oBAAA,EAAA,EAAO,gBAAe,eAAA,EAAgB,UAAA,EAAW,YAAA,EAAa,EAAA,EAAG,QAAA,EAC9D,QAAA,EAAA;AAAA,sBAAAD,eAAA,CAACD,aAAA,EAAA,EACI,QAAA,EAAA;AAAA,QAAA,KAAA,KACG,OAAO,UAAU,QAAA,mBAETL,cAAA;AAAA,UAACQ,sBAAA;AAAA,UAAA;AAAA,YAAQ,EAAA,EAAG,IAAA;AAAA,YAAK,QAAA,EAAS,QAAA;AAAA,YAAS,UAAA,EAAW,KAAA;AAAA,YACrC,SAAA,EAAU,iBAAA;AAAA,YACV,EAAA,EAAI,cAAc,QAAA,GAAW,GAAA;AAAA,YACjC,QAAA,EAAA;AAAA;AAAA,SACL,GAEF,KAAA,CAAA;AAAA,QAET,WAAA,KACG,OAAO,WAAA,KAAgB,QAAA,mBAEfR,cAAA,CAACS,sBAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,SAAA,EAAU,iBAAA,EAAkB,QAAA,EAAS,UAAA,EAC7C,uBACL,CAAA,GAEF,WAAA;AAAA,OAAA,EAEd,CAAA;AAAA,MACC,aAAA,oBAAiBT,cAAA,CAACK,aAAA,EAAA,EAAK,QAAA,EAAA,aAAA,EAAc;AAAA,KAAA,EAC1C,CAAA;AAAA,mCAIHA,aAAA,EAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA,EAAE,KAAI,CAAA,EAAE,GAAA,EAAI,KAAA,EAAO,EAAC,WAAW,MAAA,EAAM,EAC7C,gBAAM,GAAA,CAAI,CAAC,MAAMK,OAAA,KAAU;AACxB,MAAA,MAAM,SAAA,GAAY,iBAAiB,IAAA,CAAK,IAAA;AACxC,MAAA,MAAM,MAAA,GAASA,OAAA,KAAU,KAAA,CAAM,MAAA,GAAS,CAAA;AAExC,MAAA,uBACIJ,eAAA;AAAA,QAACK,eAAA;AAAA,QAAA;AAAA,UAEG,EAAA,EAAG,IAAA;AAAA,UACH,UAAA,EAAW,QAAA;AAAA,UACX,EAAA,EAAG,MAAA;AAAA,UAEH,EAAA,EAAG,QAAA;AAAA,UACH,KAAA,EAAO;AAAA,YACH,SAAA,EAAW,8BAAA;AAAA,YACX,YAAA,EAAc,SAAS,8BAAA,GAAiC;AAAA,WAC5D;AAAA,UACA,QAAA,EAAS,MAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAL,eAAA,CAACK,eAAA,EAAA,EAAK,CAAA,EAAG,CAAC,KAAA,EAAO,IAAA,EAAM,KAAK,CAAA,EAAG,aAAA,EAAe,CAAC,QAAA,EAAU,KAAK,CAAA,EAE1D,QAAA,EAAA;AAAA,8BAAAX,cAAA;AAAA,gBAACS,sBAAA;AAAA,gBAAA;AAAA,kBACG,CAAA,EAAG,CAAA;AAAA,kBACH,CAAA,EAAG,CAAC,KAAA,EAAO,IAAA,EAAM,SAAS,CAAA;AAAA,kBAC1B,SAAA,EAAU,oBAAA;AAAA,kBACV,UAAA,EAAW,KAAA;AAAA,kBACX,QAAA,EAAS,UAAA;AAAA,kBAER,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,eACV;AAAA,8BAGAT,cAAA;AAAA,gBAACK,aAAA;AAAA,gBAAA;AAAA,kBACG,CAAA,EAAG,CAAC,MAAA,EAAQ,IAAA,EAAM,SAAS,CAAA;AAAA,kBAC3B,SAAA,EAAU,iBAAA;AAAA,kBACV,UAAA,EAAY,IAAA,CAAK,IAAA,KAAS,UAAA,GAAa,GAAA,GAAM,MAAA;AAAA,kBAE5C,sBACK,aAAA,CAAc,IAAI,CAAA,GAClB,IAAA,CAAK,OACD,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG,IAAI,CAAA,GAC9B,IAAA,CAAK,KAAK,IAAI;AAAA;AAAA;AAC7B,aAAA,EACJ,CAAA;AAAA,4BAGCC,eAAA;AAAA,cAACK,eAAA;AAAA,cAAA;AAAA,gBACG,CAAA,EAAG,CAAC,KAAA,EAAO,IAAA,EAAM,KAAK,CAAA;AAAA,gBACtB,cAAA,EAAe,UAAA;AAAA,gBACf,UAAA,EAAW,QAAA;AAAA,gBACX,GAAA,EAAI,QAAA;AAAA,gBAEH,QAAA,EAAA;AAAA,kBAAA,WAAA,IAAe,CAAC,SAAA,IAAa,WAAA,CAAY,IAAA,EAAM,IAAI,CAAA;AAAA,kBAEnD,IAAA,CAAK,QAAA,IAAY,CAAC,SAAA,oBACfX,cAAA;AAAA,oBAACY,oBAAA;AAAA,oBAAA;AAAA,sBACG,KAAA,EAAO,EAAE,MAAM,CAAA;AAAA,sBACf,IAAA,EAAK,QAAA;AAAA,sBACL,QAAA,EAAS,UAAA;AAAA,sBACT,QAAA,EAAQ,IAAA;AAAA,sBACR,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI;AAAA;AAAA,mBAClC;AAAA,kBAGH,SAAA,oBACGN,eAAA,CAACC,oBAAA,EAAA,EAAO,GAAA,EAAI,SAAA,EACR,QAAA,EAAA;AAAA,oCAAAP,cAAA;AAAA,sBAACY,oBAAA;AAAA,sBAAA;AAAA,wBACG,IAAA,EAAK,aAAA;AAAA,wBACL,QAAA,EAAS,SAAA;AAAA,wBACT,OAAA,EAAS,QAAA;AAAA,wBACT,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,wBAC9B,YAAA,EAAY,EAAE,MAAM;AAAA;AAAA,qBACxB;AAAA,oCACAZ,cAAA;AAAA,sBAACY,oBAAA;AAAA,sBAAA;AAAA,wBACG,IAAA,EAAK,aAAA;AAAA,wBACL,QAAA,EAAS,WAAA;AAAA,wBACT,QAAA,EAAU,QAAA;AAAA,wBACV,OAAA,EAAS,YAAA;AAAA,wBACT,YAAA,EAAY,EAAE,QAAQ;AAAA;AAAA;AAC1B,mBAAA,EACJ;AAAA;AAAA;AAAA;AAER;AAAA,SAAA;AAAA,QA3EK,IAAA,CAAK;AAAA,OA4Ed;AAAA,IAER,CAAC,CAAA,EACL;AAAA,GAAA,EACJ,CAAA;AAER;;;;"}
|
|
@@ -14,6 +14,7 @@ import 'axios';
|
|
|
14
14
|
import FormSelect from '../../form/selects/SelectContext.js';
|
|
15
15
|
import '../../contexts/DialogContext.js';
|
|
16
16
|
import '../../contexts/PermissionsContext.js';
|
|
17
|
+
import '../../contexts/BreadcrumbContext.js';
|
|
17
18
|
|
|
18
19
|
const DetailList = ({
|
|
19
20
|
title,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/DetailsList/index.tsx"],"sourcesContent":["import React, {type ReactNode, useState} from 'react';\nimport {\n Box,\n Flex,\n HStack,\n Heading,\n Text,\n Button,\n KitsInputText,\n KitsInputNumber,\n KitsInputTextarea,\n FormSelect,\n useLanguage,\n} from '../../_compat';\nimport type {IDetailListProps, IDetailItem} from '@lmb-it/kitsconcerto-types';\n\nconst DetailList = <T extends Record<string, any>>({\n title,\n description,\n data,\n items,\n headerActions,\n itemActions,\n}: IDetailListProps<T>) => {\n const {t} = useLanguage();\n const [editingField, setEditingField] = useState<keyof T | null>(null);\n const [draftValue, setDraftValue] = useState<any>(null);\n const [isSaving, setIsSaving] = useState(false);\n\n const handleEdit = (item: IDetailItem<T>) => {\n setEditingField(item.name);\n setDraftValue(data[item.name]);\n };\n\n const handleCancel = () => {\n setEditingField(null);\n setDraftValue(null);\n };\n\n const handleSave = async (item: IDetailItem<T>) => {\n if (item.onSave) {\n setIsSaving(true);\n try {\n await item.onSave(item.name, draftValue);\n setEditingField(null);\n } finally {\n setIsSaving(false);\n }\n } else {\n setEditingField(null);\n }\n };\n\n const renderControl = (item: IDetailItem<T>) => {\n const commonProps = {\n value: draftValue,\n onChange: (e: any) => setDraftValue(e.target ? e.target.value : e.value),\n w: '100%',\n ...item.inputProps,\n };\n\n switch (item.type) {\n case 'number':\n return (\n <KitsInputNumber\n value={draftValue}\n onChange={(e) => setDraftValue(e.value)}\n style={{width: '100%'}}\n {...item.inputProps}\n />\n );\n case 'textarea':\n return <KitsInputTextarea {...commonProps} rows={3} autoResize/>;\n case 'select':\n return (\n <FormSelect\n shape=\"dropdown\"\n {...commonProps}\n list={item.list || []}\n labelKey={item.labelKey}\n valueKey={item.valueKey}\n />\n );\n case 'multiselect':\n return (\n <FormSelect\n shape=\"multiselect\"\n {...commonProps}\n list={item.list || []}\n labelKey={item.labelKey}\n valueKey={item.valueKey}\n />\n );\n case 'text':\n default:\n return <KitsInputText {...commonProps} />;\n }\n };\n\n // @ts-ignore\n // @ts-ignore\n return (\n <Box bgColor=\"var(--surface-0)\" p=\"1.5rem\" borderRadius=\"0.75rem\">\n {/* Header Area */}\n {(title || description || headerActions) && (\n <HStack justifyContent=\"space-between\" alignItems=\"flex-start\" mb=\"1.5rem\">\n <Box>\n {title && (\n typeof title === 'string'\n ? (\n <Heading as=\"h2\" fontSize=\"1.5rem\" fontWeight=\"600\"\n fontColor=\"var(--text-900)\"\n mb={description ? '0.5rem' : '0'}>\n {title}\n </Heading>\n )\n : title\n )}\n {description && (\n typeof description === 'string'\n ? (\n <Text as=\"p\" fontColor=\"var(--text-500)\" fontSize=\"0.875rem\">\n {description}\n </Text>\n )\n : description\n )}\n </Box>\n {headerActions && <Box>{headerActions}</Box>}\n </HStack>\n )}\n\n {/* List Area */}\n <Box as=\"ul\" p=\"0\" m=\"0\" style={{listStyle: 'none'}}>\n {items.map((item, index) => {\n const isEditing = editingField === item.name;\n const isLast = index === items.length - 1;\n\n return (\n <Flex\n key={item.name as string}\n as=\"li\"\n alignItems=\"center\"\n py=\"1rem\"\n // justifyContent={'center'}\n px=\"0.5rem\"\n style={{\n borderTop: '1px solid var(--surface-200)',\n borderBottom: isLast ? '1px solid var(--surface-200)' : 'none',\n }}\n flexWrap=\"wrap\"\n >\n <Flex w={['50%', null, '85%']} flexDirection={['column', 'row']}>\n {/* Label Column */}\n <Text\n m={0}\n w={['50%', null, '16.666%']}\n fontColor=\"var(--surface-500)\"\n fontWeight=\"500\"\n fontSize=\"0.875rem\"\n >\n {item.label}\n </Text>\n\n {/* Value / Edit Control Column */}\n <Box\n w={['100%', null, '66.666%']}\n fontColor=\"var(--text-900)\"\n lineHeight={item.type === 'textarea' ? 1.5 : undefined}\n >\n {isEditing\n ? renderControl(item)\n : item.body\n ? item.body(data[item.name], data)\n : (data[item.name] as ReactNode)}\n </Box>\n </Flex>\n\n {/* Actions Column */}\n <Flex\n w={['50%', null, '15%']}\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n gap=\"0.5rem\"\n >\n {itemActions && !isEditing && itemActions(item, data)}\n\n {item.editable && !isEditing && (\n <Button\n label={t(\"edit\")}\n icon=\"pencil\"\n severity=\"contrast\"\n outlined\n onClick={() => handleEdit(item)}\n />\n )}\n\n {isEditing && (\n <HStack gap=\"0.25rem\">\n <Button\n icon=\"pi pi-check\"\n severity=\"success\"\n loading={isSaving}\n onClick={() => handleSave(item)}\n aria-label={t(\"save\")}\n />\n <Button\n icon=\"pi pi-times\"\n severity=\"secondary\"\n disabled={isSaving}\n onClick={handleCancel}\n aria-label={t(\"cancel\")}\n />\n </HStack>\n )}\n </Flex>\n </Flex>\n );\n })}\n </Box>\n </Box>\n );\n}\n\nexport default DetailList\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/DetailsList/index.tsx"],"sourcesContent":["import React, {type ReactNode, useState} from 'react';\nimport {\n Box,\n Flex,\n HStack,\n Heading,\n Text,\n Button,\n KitsInputText,\n KitsInputNumber,\n KitsInputTextarea,\n FormSelect,\n useLanguage,\n} from '../../_compat';\nimport type {IDetailListProps, IDetailItem} from '@lmb-it/kitsconcerto-types';\n\nconst DetailList = <T extends Record<string, any>>({\n title,\n description,\n data,\n items,\n headerActions,\n itemActions,\n}: IDetailListProps<T>) => {\n const {t} = useLanguage();\n const [editingField, setEditingField] = useState<keyof T | null>(null);\n const [draftValue, setDraftValue] = useState<any>(null);\n const [isSaving, setIsSaving] = useState(false);\n\n const handleEdit = (item: IDetailItem<T>) => {\n setEditingField(item.name);\n setDraftValue(data[item.name]);\n };\n\n const handleCancel = () => {\n setEditingField(null);\n setDraftValue(null);\n };\n\n const handleSave = async (item: IDetailItem<T>) => {\n if (item.onSave) {\n setIsSaving(true);\n try {\n await item.onSave(item.name, draftValue);\n setEditingField(null);\n } finally {\n setIsSaving(false);\n }\n } else {\n setEditingField(null);\n }\n };\n\n const renderControl = (item: IDetailItem<T>) => {\n const commonProps = {\n value: draftValue,\n onChange: (e: any) => setDraftValue(e.target ? e.target.value : e.value),\n w: '100%',\n ...item.inputProps,\n };\n\n switch (item.type) {\n case 'number':\n return (\n <KitsInputNumber\n value={draftValue}\n onChange={(e) => setDraftValue(e.value)}\n style={{width: '100%'}}\n {...item.inputProps}\n />\n );\n case 'textarea':\n return <KitsInputTextarea {...commonProps} rows={3} autoResize/>;\n case 'select':\n return (\n <FormSelect\n shape=\"dropdown\"\n {...commonProps}\n list={item.list || []}\n labelKey={item.labelKey}\n valueKey={item.valueKey}\n />\n );\n case 'multiselect':\n return (\n <FormSelect\n shape=\"multiselect\"\n {...commonProps}\n list={item.list || []}\n labelKey={item.labelKey}\n valueKey={item.valueKey}\n />\n );\n case 'text':\n default:\n return <KitsInputText {...commonProps} />;\n }\n };\n\n // @ts-ignore\n // @ts-ignore\n return (\n <Box bgColor=\"var(--surface-0)\" p=\"1.5rem\" borderRadius=\"0.75rem\">\n {/* Header Area */}\n {(title || description || headerActions) && (\n <HStack justifyContent=\"space-between\" alignItems=\"flex-start\" mb=\"1.5rem\">\n <Box>\n {title && (\n typeof title === 'string'\n ? (\n <Heading as=\"h2\" fontSize=\"1.5rem\" fontWeight=\"600\"\n fontColor=\"var(--text-900)\"\n mb={description ? '0.5rem' : '0'}>\n {title}\n </Heading>\n )\n : title\n )}\n {description && (\n typeof description === 'string'\n ? (\n <Text as=\"p\" fontColor=\"var(--text-500)\" fontSize=\"0.875rem\">\n {description}\n </Text>\n )\n : description\n )}\n </Box>\n {headerActions && <Box>{headerActions}</Box>}\n </HStack>\n )}\n\n {/* List Area */}\n <Box as=\"ul\" p=\"0\" m=\"0\" style={{listStyle: 'none'}}>\n {items.map((item, index) => {\n const isEditing = editingField === item.name;\n const isLast = index === items.length - 1;\n\n return (\n <Flex\n key={item.name as string}\n as=\"li\"\n alignItems=\"center\"\n py=\"1rem\"\n // justifyContent={'center'}\n px=\"0.5rem\"\n style={{\n borderTop: '1px solid var(--surface-200)',\n borderBottom: isLast ? '1px solid var(--surface-200)' : 'none',\n }}\n flexWrap=\"wrap\"\n >\n <Flex w={['50%', null, '85%']} flexDirection={['column', 'row']}>\n {/* Label Column */}\n <Text\n m={0}\n w={['50%', null, '16.666%']}\n fontColor=\"var(--surface-500)\"\n fontWeight=\"500\"\n fontSize=\"0.875rem\"\n >\n {item.label}\n </Text>\n\n {/* Value / Edit Control Column */}\n <Box\n w={['100%', null, '66.666%']}\n fontColor=\"var(--text-900)\"\n lineHeight={item.type === 'textarea' ? 1.5 : undefined}\n >\n {isEditing\n ? renderControl(item)\n : item.body\n ? item.body(data[item.name], data)\n : (data[item.name] as ReactNode)}\n </Box>\n </Flex>\n\n {/* Actions Column */}\n <Flex\n w={['50%', null, '15%']}\n justifyContent=\"flex-end\"\n alignItems=\"center\"\n gap=\"0.5rem\"\n >\n {itemActions && !isEditing && itemActions(item, data)}\n\n {item.editable && !isEditing && (\n <Button\n label={t(\"edit\")}\n icon=\"pencil\"\n severity=\"contrast\"\n outlined\n onClick={() => handleEdit(item)}\n />\n )}\n\n {isEditing && (\n <HStack gap=\"0.25rem\">\n <Button\n icon=\"pi pi-check\"\n severity=\"success\"\n loading={isSaving}\n onClick={() => handleSave(item)}\n aria-label={t(\"save\")}\n />\n <Button\n icon=\"pi pi-times\"\n severity=\"secondary\"\n disabled={isSaving}\n onClick={handleCancel}\n aria-label={t(\"cancel\")}\n />\n </HStack>\n )}\n </Flex>\n </Flex>\n );\n })}\n </Box>\n </Box>\n );\n}\n\nexport default DetailList\n"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ var index_native = require('../../primitives/Icon/index.cjs');
|
|
|
7
7
|
require('react');
|
|
8
8
|
require('../../contexts/DialogContext.cjs');
|
|
9
9
|
require('../../contexts/PermissionsContext.cjs');
|
|
10
|
+
require('../../contexts/BreadcrumbContext.cjs');
|
|
10
11
|
var useComponentDefaults = require('../../hooks/useComponentDefaults.cjs');
|
|
11
12
|
|
|
12
13
|
const SIZE = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/EmptyState/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IEmptyStateProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text, Icon} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\n\nconst SIZE = {\n sm: {bubble: 48, icon: 22, title: 15, desc: 12, gap: 8, pad: 20},\n md: {bubble: 64, icon: 30, title: 17, desc: 13, gap: 10, pad: 28},\n} as const;\n\n/**\n * EmptyState — centred placeholder for empty / zero-result screens\n * (no applications yet, no submissions, closed without hire, dissolved team).\n *\n * Cross-platform and presentational (Box + Text + Icon). Pass `action` /\n * `secondaryAction` as `<Button>` nodes.\n *\n * <EmptyState icon=\"inbox\" title=\"No applications yet\"\n * description=\"Share your job to start receiving bids.\"\n * action={<Button label=\"Edit posting\" />} />\n */\nexport function EmptyState(rawProps: IEmptyStateProps) {\n const props = useComponentDefaults<IEmptyStateProps>(\"EmptyState\", rawProps).mergedProps;\n const {\n icon,\n illustration,\n title,\n description,\n action,\n secondaryAction,\n accentColor = \"brand\",\n size = \"md\",\n testID,\n ...rest\n } = props;\n\n const cfg = SIZE[size === \"sm\" ? \"sm\" : \"md\"];\n\n const a11yProps = {\n role: \"status\",\n ...(testID ? {testID, \"data-testid\": testID} : {}),\n } as Record<string, unknown>;\n\n return (\n <Box\n flexDirection=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={cfg.gap}\n padding={cfg.pad}\n {...(rest as any)}\n {...(a11yProps as any)}\n >\n {illustration != null ? (\n illustration\n ) : icon != null ? (\n <Box\n width={cfg.bubble}\n height={cfg.bubble}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n bgColor=\"gray.100\"\n marginBottom={2}\n >\n <Icon name={icon as never} size={cfg.icon} color={accentColor} />\n </Box>\n ) : null}\n\n <Text fontSize={cfg.title} fontWeight=\"700\" color=\"text\" textAlign=\"center\">\n {title}\n </Text>\n\n {description != null && (\n <Text fontSize={cfg.desc} color=\"text-secondary\" textAlign=\"center\" lineHeight={Math.round(cfg.desc * 1.45)}>\n {description}\n </Text>\n )}\n\n {(action != null || secondaryAction != null) && (\n <Box flexDirection=\"row\" alignItems=\"center\" justifyContent=\"center\" gap={10} marginTop={6} flexWrap=\"wrap\">\n {secondaryAction}\n {action}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default EmptyState;\n"],"names":["useComponentDefaults","jsxs","Box","jsx","Icon","Text"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/EmptyState/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IEmptyStateProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text, Icon} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\n\nconst SIZE = {\n sm: {bubble: 48, icon: 22, title: 15, desc: 12, gap: 8, pad: 20},\n md: {bubble: 64, icon: 30, title: 17, desc: 13, gap: 10, pad: 28},\n} as const;\n\n/**\n * EmptyState — centred placeholder for empty / zero-result screens\n * (no applications yet, no submissions, closed without hire, dissolved team).\n *\n * Cross-platform and presentational (Box + Text + Icon). Pass `action` /\n * `secondaryAction` as `<Button>` nodes.\n *\n * <EmptyState icon=\"inbox\" title=\"No applications yet\"\n * description=\"Share your job to start receiving bids.\"\n * action={<Button label=\"Edit posting\" />} />\n */\nexport function EmptyState(rawProps: IEmptyStateProps) {\n const props = useComponentDefaults<IEmptyStateProps>(\"EmptyState\", rawProps).mergedProps;\n const {\n icon,\n illustration,\n title,\n description,\n action,\n secondaryAction,\n accentColor = \"brand\",\n size = \"md\",\n testID,\n ...rest\n } = props;\n\n const cfg = SIZE[size === \"sm\" ? \"sm\" : \"md\"];\n\n const a11yProps = {\n role: \"status\",\n ...(testID ? {testID, \"data-testid\": testID} : {}),\n } as Record<string, unknown>;\n\n return (\n <Box\n flexDirection=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={cfg.gap}\n padding={cfg.pad}\n {...(rest as any)}\n {...(a11yProps as any)}\n >\n {illustration != null ? (\n illustration\n ) : icon != null ? (\n <Box\n width={cfg.bubble}\n height={cfg.bubble}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n bgColor=\"gray.100\"\n marginBottom={2}\n >\n <Icon name={icon as never} size={cfg.icon} color={accentColor} />\n </Box>\n ) : null}\n\n <Text fontSize={cfg.title} fontWeight=\"700\" color=\"text\" textAlign=\"center\">\n {title}\n </Text>\n\n {description != null && (\n <Text fontSize={cfg.desc} color=\"text-secondary\" textAlign=\"center\" lineHeight={Math.round(cfg.desc * 1.45)}>\n {description}\n </Text>\n )}\n\n {(action != null || secondaryAction != null) && (\n <Box flexDirection=\"row\" alignItems=\"center\" justifyContent=\"center\" gap={10} marginTop={6} flexWrap=\"wrap\">\n {secondaryAction}\n {action}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default EmptyState;\n"],"names":["useComponentDefaults","jsxs","Box","jsx","Icon","Text"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { Icon } from '../../primitives/Icon/index.js';
|
|
|
5
5
|
import 'react';
|
|
6
6
|
import '../../contexts/DialogContext.js';
|
|
7
7
|
import '../../contexts/PermissionsContext.js';
|
|
8
|
+
import '../../contexts/BreadcrumbContext.js';
|
|
8
9
|
import useComponentDefaults from '../../hooks/useComponentDefaults.js';
|
|
9
10
|
|
|
10
11
|
const SIZE = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/EmptyState/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IEmptyStateProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text, Icon} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\n\nconst SIZE = {\n sm: {bubble: 48, icon: 22, title: 15, desc: 12, gap: 8, pad: 20},\n md: {bubble: 64, icon: 30, title: 17, desc: 13, gap: 10, pad: 28},\n} as const;\n\n/**\n * EmptyState — centred placeholder for empty / zero-result screens\n * (no applications yet, no submissions, closed without hire, dissolved team).\n *\n * Cross-platform and presentational (Box + Text + Icon). Pass `action` /\n * `secondaryAction` as `<Button>` nodes.\n *\n * <EmptyState icon=\"inbox\" title=\"No applications yet\"\n * description=\"Share your job to start receiving bids.\"\n * action={<Button label=\"Edit posting\" />} />\n */\nexport function EmptyState(rawProps: IEmptyStateProps) {\n const props = useComponentDefaults<IEmptyStateProps>(\"EmptyState\", rawProps).mergedProps;\n const {\n icon,\n illustration,\n title,\n description,\n action,\n secondaryAction,\n accentColor = \"brand\",\n size = \"md\",\n testID,\n ...rest\n } = props;\n\n const cfg = SIZE[size === \"sm\" ? \"sm\" : \"md\"];\n\n const a11yProps = {\n role: \"status\",\n ...(testID ? {testID, \"data-testid\": testID} : {}),\n } as Record<string, unknown>;\n\n return (\n <Box\n flexDirection=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={cfg.gap}\n padding={cfg.pad}\n {...(rest as any)}\n {...(a11yProps as any)}\n >\n {illustration != null ? (\n illustration\n ) : icon != null ? (\n <Box\n width={cfg.bubble}\n height={cfg.bubble}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n bgColor=\"gray.100\"\n marginBottom={2}\n >\n <Icon name={icon as never} size={cfg.icon} color={accentColor} />\n </Box>\n ) : null}\n\n <Text fontSize={cfg.title} fontWeight=\"700\" color=\"text\" textAlign=\"center\">\n {title}\n </Text>\n\n {description != null && (\n <Text fontSize={cfg.desc} color=\"text-secondary\" textAlign=\"center\" lineHeight={Math.round(cfg.desc * 1.45)}>\n {description}\n </Text>\n )}\n\n {(action != null || secondaryAction != null) && (\n <Box flexDirection=\"row\" alignItems=\"center\" justifyContent=\"center\" gap={10} marginTop={6} flexWrap=\"wrap\">\n {secondaryAction}\n {action}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default EmptyState;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/EmptyState/index.tsx"],"sourcesContent":["import React from \"react\";\nimport type {IEmptyStateProps} from \"@lmb-it/kitsconcerto-types\";\nimport {Box, Text, Icon} from \"../../primitives\";\nimport {useComponentDefaults} from \"../../hooks\";\n\nconst SIZE = {\n sm: {bubble: 48, icon: 22, title: 15, desc: 12, gap: 8, pad: 20},\n md: {bubble: 64, icon: 30, title: 17, desc: 13, gap: 10, pad: 28},\n} as const;\n\n/**\n * EmptyState — centred placeholder for empty / zero-result screens\n * (no applications yet, no submissions, closed without hire, dissolved team).\n *\n * Cross-platform and presentational (Box + Text + Icon). Pass `action` /\n * `secondaryAction` as `<Button>` nodes.\n *\n * <EmptyState icon=\"inbox\" title=\"No applications yet\"\n * description=\"Share your job to start receiving bids.\"\n * action={<Button label=\"Edit posting\" />} />\n */\nexport function EmptyState(rawProps: IEmptyStateProps) {\n const props = useComponentDefaults<IEmptyStateProps>(\"EmptyState\", rawProps).mergedProps;\n const {\n icon,\n illustration,\n title,\n description,\n action,\n secondaryAction,\n accentColor = \"brand\",\n size = \"md\",\n testID,\n ...rest\n } = props;\n\n const cfg = SIZE[size === \"sm\" ? \"sm\" : \"md\"];\n\n const a11yProps = {\n role: \"status\",\n ...(testID ? {testID, \"data-testid\": testID} : {}),\n } as Record<string, unknown>;\n\n return (\n <Box\n flexDirection=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={cfg.gap}\n padding={cfg.pad}\n {...(rest as any)}\n {...(a11yProps as any)}\n >\n {illustration != null ? (\n illustration\n ) : icon != null ? (\n <Box\n width={cfg.bubble}\n height={cfg.bubble}\n borderRadius={999}\n alignItems=\"center\"\n justifyContent=\"center\"\n bgColor=\"gray.100\"\n marginBottom={2}\n >\n <Icon name={icon as never} size={cfg.icon} color={accentColor} />\n </Box>\n ) : null}\n\n <Text fontSize={cfg.title} fontWeight=\"700\" color=\"text\" textAlign=\"center\">\n {title}\n </Text>\n\n {description != null && (\n <Text fontSize={cfg.desc} color=\"text-secondary\" textAlign=\"center\" lineHeight={Math.round(cfg.desc * 1.45)}>\n {description}\n </Text>\n )}\n\n {(action != null || secondaryAction != null) && (\n <Box flexDirection=\"row\" alignItems=\"center\" justifyContent=\"center\" gap={10} marginTop={6} flexWrap=\"wrap\">\n {secondaryAction}\n {action}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default EmptyState;\n"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ var index_native$1 = require('../../primitives/Icon/index.cjs');
|
|
|
8
8
|
require('react');
|
|
9
9
|
require('../../contexts/DialogContext.cjs');
|
|
10
10
|
require('../../contexts/PermissionsContext.cjs');
|
|
11
|
+
require('../../contexts/BreadcrumbContext.cjs');
|
|
11
12
|
var useComponentDefaults = require('../../hooks/useComponentDefaults.cjs');
|
|
12
13
|
|
|
13
14
|
function Gallery(rawProps) {
|