@indusaction/cms-design-system 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Button/Button.tsx","../src/theme/colors.ts","../src/theme/theme.ts","../src/theme/ThemeProvider.tsx"],"names":["React","Button","jsx","AntButton","ConfigProvider"],"mappings":";;;;;;;;;;;AAcO,IAAM,SAASA,sBAAA,CAAM,UAAA;AAAA,EAC1B,SAASC,OAAAA,CACP,EAAE,OAAA,GAAU,SAAA,EAAW,IAAA,GAAO,QAAA,EAAU,QAAA,EAAU,GAAG,IAAA,EAAK,EAC1D,GAAA,EACA;AACA,IAAA,uBACEC,cAAA,CAACC,eAAU,GAAA,EAAU,IAAA,EAAM,SAAS,IAAA,EAAa,GAAG,MACjD,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;AC3Bd,IAAM,MAAA,GAAS;AAAA,EACpB,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,YAAA,EAAc,SAAA;AAAA,IACd,aAAA,EAAe,SAAA;AAAA,IACf,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,SAAA;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV;;;ACxBO,IAAM,KAAA,GAAqB;AAAA,EAChC,KAAA,EAAO;AAAA,IACL,YAAA,EAAc,OAAO,KAAA,CAAM,OAAA;AAAA,IAC3B,SAAA,EAAW,OAAO,QAAA,CAAS,IAAA;AAAA,IAC3B,YAAA,EAAc,OAAO,QAAA,CAAS,OAAA;AAAA,IAC9B,YAAA,EAAc,OAAO,QAAA,CAAS,OAAA;AAAA,IAC9B,UAAA,EAAY,OAAO,QAAA,CAAS,KAAA;AAAA,IAC5B,SAAA,EAAW,OAAO,KAAA,CAAM;AAAA,GAC1B;AAAA,EACA,UAAA,EAAY;AAAA,IACV,MAAA,EAAQ;AAAA,MACN,YAAA,EAAc,OAAO,KAAA,CAAM,OAAA;AAAA,MAC3B,iBAAA,EAAmB,OAAO,KAAA,CAAM,YAAA;AAAA,MAChC,kBAAA,EAAoB,OAAO,KAAA,CAAM;AAAA;AACnC;AAEJ;ACXO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAS,EAAuB;AAC9D,EAAA,uBAAOD,cAAAA,CAACE,mBAAA,EAAA,EAAe,KAAA,EAAe,QAAA,EAAS,CAAA;AACjD","file":"index.cjs","sourcesContent":["import React from \"react\";\nimport { Button as AntButton } from \"antd\";\nimport type { ButtonProps as AntButtonProps } from \"antd\";\n\nexport type ButtonVariant = \"primary\" | \"default\" | \"dashed\" | \"link\" | \"text\";\nexport type ButtonSize = \"large\" | \"middle\" | \"small\";\n\nexport interface ButtonProps\n extends Omit<AntButtonProps, \"type\" | \"variant\" | \"size\" | \"children\"> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n children?: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n { variant = \"default\", size = \"middle\", children, ...rest },\n ref\n ) {\n return (\n <AntButton ref={ref} type={variant} size={size} {...rest}>\n {children}\n </AntButton>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport default Button;\n","export const colors = {\n brand: {\n primary: \"#596993\",\n primaryHover: \"#6B7BA5\",\n primaryActive: \"#4A587C\",\n primaryLight: \"#E8EBF2\",\n },\n neutral: {\n white: \"#FFFFFF\",\n black: \"#000000\",\n gray50: \"#FAFAFA\",\n gray100: \"#F5F5F5\",\n gray200: \"#E8E8E8\",\n gray300: \"#D9D9D9\",\n gray400: \"#BFBFBF\",\n gray500: \"#8C8C8C\",\n gray600: \"#595959\",\n gray700: \"#434343\",\n gray800: \"#262626\",\n gray900: \"#1F1F1F\",\n },\n semantic: {\n success: \"#52C41A\",\n warning: \"#FAAD14\",\n error: \"#FF4D4F\",\n info: \"#596993\",\n },\n} as const;\n\nexport type Colors = typeof colors;\n","import type { ThemeConfig } from \"antd\";\nimport { colors } from \"./colors\";\n\nexport const theme: ThemeConfig = {\n token: {\n colorPrimary: colors.brand.primary,\n colorInfo: colors.semantic.info,\n colorSuccess: colors.semantic.success,\n colorWarning: colors.semantic.warning,\n colorError: colors.semantic.error,\n colorLink: colors.brand.primary,\n },\n components: {\n Button: {\n colorPrimary: colors.brand.primary,\n colorPrimaryHover: colors.brand.primaryHover,\n colorPrimaryActive: colors.brand.primaryActive,\n },\n },\n};\n","import React from \"react\";\nimport { ConfigProvider } from \"antd\";\nimport { theme } from \"./theme\";\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n}\n\nexport function ThemeProvider({ children }: ThemeProviderProps) {\n return <ConfigProvider theme={theme}>{children}</ConfigProvider>;\n}\n"]}
1
+ {"version":3,"sources":["../src/components/Button/Button.tsx","../src/theme.ts","../src/components/Tabs/Tabs.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Table/Table.tsx","../src/components/Tag/Tag.tsx","../src/components/Link/Link.tsx","../src/components/Card/Card.tsx","../src/components/Modal/Modal.tsx","../src/components/Header/Header.tsx","../src/assets/indusActionLogo.ts","../src/assets/icons.tsx","../src/components/SideNav/SideNav.tsx","../src/components/StatusPage/StatusPage.tsx","../src/components/StatusPage/NotFoundPage.tsx","../src/components/StatusPage/UnauthorizedPage.tsx"],"names":["React","Button","jsx","AntButton","antdTheme","ConfigProvider","AntTabs","AntDropdown","jsxs","AntSkeleton","useState","useEffect","useRef","useCallback","useMemo","Input","Pagination","AntTable","Tag","AntTag","Typography","Link","AntCard","AntModal","Breadcrumb","Avatar","Layout","Grid","getInitials","Popconfirm","Menu","theme","Fragment","createPortal","Drawer","Result"],"mappings":"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","file":"index.cjs","sourcesContent":["import React from \"react\";\nimport { Button as AntButton } from \"antd\";\nimport type { ButtonProps as AntButtonProps } from \"antd\";\n\nexport type ButtonVariant = \"primary\" | \"default\" | \"dashed\" | \"link\" | \"text\";\nexport type ButtonSize = \"large\" | \"middle\" | \"small\";\n\nexport interface ButtonProps\n extends Omit<AntButtonProps, \"type\" | \"variant\" | \"size\" | \"children\"> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n children?: React.ReactNode;\n}\n\nexport const Button = React.forwardRef(function Button(\n { variant = \"default\", size = \"middle\", children, ...rest }: ButtonProps,\n ref: React.Ref<HTMLButtonElement>\n) {\n return (\n <AntButton ref={ref} type={variant} size={size} {...rest}>\n {children}\n </AntButton>\n );\n});\n\nButton.displayName = \"Button\";\n\nexport default Button;\n","import React from \"react\";\nimport { ConfigProvider } from \"antd\";\nimport type { ThemeConfig } from \"antd\";\nimport { theme as antdTheme } from \"antd\";\n\nexport const colors = {\n brand: {\n primary: \"#596993\",\n primaryHover: \"#6B7BA5\",\n primaryActive: \"#4A587C\",\n primaryLight: \"#E8EBF2\",\n accent: \"#F69120\",\n },\n neutral: {\n white: \"#FFFFFF\",\n black: \"#000000\",\n gray50: \"#FAFAFA\",\n gray100: \"#F5F5F5\",\n gray200: \"#E8E8E8\",\n gray300: \"#D9D9D9\",\n gray400: \"#BFBFBF\",\n gray500: \"#8C8C8C\",\n gray600: \"#595959\",\n gray700: \"#434343\",\n gray800: \"#262626\",\n gray900: \"#1F1F1F\",\n },\n semantic: {\n success: \"#52C41A\",\n warning: \"#FAAD14\",\n error: \"#FF4D4F\",\n info: \"#596993\",\n },\n} as const;\n\nexport const spacing = {\n none: 0,\n xxs: 4,\n xs: 8,\n sm: 12,\n md: 16,\n lg: 24,\n xl: 32,\n xxl: 48,\n} as const;\n\nexport const fontSize = {\n xxs: 11,\n xs: 12,\n sm: 14,\n md: 16,\n lg: 20,\n xl: 24,\n xxl: 30,\n} as const;\n\n/** Viewport min-widths. Matches Ant Design's `Grid` / `Sider` breakpoint names. */\nexport const breakpoints = {\n xs: 480,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1600,\n} as const;\n\nexport type Colors = typeof colors;\nexport type Spacing = typeof spacing;\nexport type FontSize = typeof fontSize;\nexport type Breakpoints = typeof breakpoints;\n\n/**\n * Seed + map tokens only. Ant Design's algorithm applies these to Button,\n * Menu, Layout, and every other component — no per-component lists.\n */\nexport const theme: ThemeConfig = {\n algorithm: antdTheme.defaultAlgorithm,\n token: {\n colorPrimary: colors.brand.primary,\n colorPrimaryHover: colors.brand.primaryHover,\n colorPrimaryActive: colors.brand.primaryActive,\n colorPrimaryBg: colors.brand.primaryLight,\n colorLink: colors.brand.primary,\n colorInfo: colors.semantic.info,\n colorSuccess: colors.semantic.success,\n colorWarning: colors.semantic.warning,\n colorError: colors.semantic.error,\n paddingXXS: spacing.xxs,\n paddingXS: spacing.xs,\n paddingSM: spacing.sm,\n padding: spacing.md,\n paddingMD: spacing.md,\n paddingLG: spacing.lg,\n paddingXL: spacing.xl,\n marginXXS: spacing.xxs,\n marginXS: spacing.xs,\n marginSM: spacing.sm,\n margin: spacing.md,\n marginMD: spacing.md,\n marginLG: spacing.lg,\n marginXL: spacing.xl,\n marginXXL: spacing.xxl,\n fontSizeSM: fontSize.xs,\n fontSize: fontSize.sm,\n fontSizeLG: fontSize.md,\n fontSizeXL: fontSize.lg,\n fontSizeHeading5: fontSize.md,\n fontSizeHeading4: fontSize.lg,\n fontSizeHeading3: fontSize.xl,\n fontSizeHeading2: fontSize.xxl,\n screenXS: breakpoints.xs,\n screenSM: breakpoints.sm,\n screenMD: breakpoints.md,\n screenLG: breakpoints.lg,\n screenXL: breakpoints.xl,\n screenXXL: breakpoints.xxl,\n },\n};\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n}\n\nexport function ThemeProvider({ children }: ThemeProviderProps) {\n return React.createElement(ConfigProvider, { theme }, children);\n}\n","import React from \"react\";\nimport { Tabs as AntTabs, ConfigProvider } from \"antd\";\nimport type { TabsProps as AntTabsProps, TabPaneProps } from \"antd\";\nimport { fontSize } from \"../../theme\";\n\nexport type { TabPaneProps };\n\nexport interface TabsProps extends Omit<AntTabsProps, \"type\"> {\n type?: \"line\" | \"card\";\n}\n\nexport const Tabs: React.FC<TabsProps> = ({ type = \"line\", ...rest }) => {\n return (\n <ConfigProvider\n theme={{\n components: {\n Tabs: {\n titleFontSizeSM: fontSize.sm,\n titleFontSize: fontSize.md,\n titleFontSizeLG: fontSize.lg,\n },\n },\n }}\n >\n <AntTabs type={type} {...rest} />\n </ConfigProvider>\n );\n};\n\nTabs.displayName = \"Tabs\";\n\nexport default Tabs;\n","import React from \"react\";\nimport { Dropdown as AntDropdown, ConfigProvider } from \"antd\";\nimport type {\n DropdownProps as AntDropdownProps,\n MenuProps,\n} from \"antd\";\nimport type { DropdownButtonProps as AntDropdownButtonProps } from \"antd/es/dropdown\";\nimport { spacing } from \"../../theme\";\n\nexport type { MenuProps };\n\nexport interface DropdownProps extends AntDropdownProps {\n children?: React.ReactNode;\n}\n\nexport interface DropdownButtonProps extends AntDropdownButtonProps {\n children?: React.ReactNode;\n}\n\nconst DropdownButton: React.FC<DropdownButtonProps> = ({\n children,\n ...rest\n}) => {\n return (\n <ConfigProvider\n theme={{\n components: {\n Dropdown: {\n paddingXXS: spacing.xxs,\n paddingXS: spacing.xs,\n },\n },\n }}\n >\n <AntDropdown.Button {...rest}>{children}</AntDropdown.Button>\n </ConfigProvider>\n );\n};\nDropdownButton.displayName = \"Dropdown.Button\";\n\nexport interface DropdownInterface extends React.FC<DropdownProps> {\n Button: typeof DropdownButton;\n}\n\nexport const Dropdown: DropdownInterface = ({ children, ...rest }: DropdownProps) => {\n return (\n <ConfigProvider\n theme={{\n components: {\n Dropdown: {\n paddingXXS: spacing.xxs,\n paddingXS: spacing.xs,\n },\n },\n }}\n >\n <AntDropdown {...rest}>{children}</AntDropdown>\n </ConfigProvider>\n );\n};\n\nDropdown.Button = DropdownButton;\nDropdown.displayName = \"Dropdown\";\n\nexport default Dropdown;\n","import React from \"react\";\nimport { Skeleton as AntSkeleton } from \"antd\";\nimport type { SkeletonProps as AntSkeletonProps } from \"antd\";\nimport { spacing } from \"../../theme\";\n\nexport type SkeletonProps = AntSkeletonProps;\n\nexport interface DetailsSkeletonProps {\n /** Number of label/value placeholder rows. Default: 5 */\n rows?: number;\n /** Show an avatar + title block above the fields. */\n avatar?: boolean;\n}\n\nfunction DetailsSkeleton({ rows = 5, avatar = false }: DetailsSkeletonProps) {\n return (\n <div aria-busy=\"true\" aria-live=\"polite\">\n {avatar ? (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing.md,\n marginBottom: spacing.lg,\n }}\n >\n <AntSkeleton.Avatar active size={48} />\n <div style={{ flex: 1, minWidth: 0 }}>\n <AntSkeleton.Input\n active\n size=\"small\"\n style={{ width: 180, maxWidth: \"70%\", height: 16, marginBottom: spacing.xs }}\n />\n <AntSkeleton.Input\n active\n size=\"small\"\n style={{ width: 120, maxWidth: \"50%\", height: 12 }}\n />\n </div>\n </div>\n ) : null}\n {Array.from({ length: rows }, (_, index) => (\n <div\n key={index}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing.lg,\n marginBottom: spacing.md,\n }}\n >\n <AntSkeleton.Input\n active\n size=\"small\"\n style={{ width: 88, height: 12, flex: \"0 0 88px\" }}\n />\n <AntSkeleton.Input\n active\n size=\"small\"\n style={{\n width: `${58 + (index % 3) * 14}%`,\n maxWidth: 280,\n height: 14,\n minWidth: 0,\n flex: 1,\n }}\n />\n </div>\n ))}\n </div>\n );\n}\n\nDetailsSkeleton.displayName = \"Skeleton.Details\";\n\nexport interface SkeletonInterface extends React.FC<SkeletonProps> {\n Button: typeof AntSkeleton.Button;\n Avatar: typeof AntSkeleton.Avatar;\n Input: typeof AntSkeleton.Input;\n Image: typeof AntSkeleton.Image;\n Node: typeof AntSkeleton.Node;\n Details: typeof DetailsSkeleton;\n}\n\nexport const Skeleton: SkeletonInterface = ({ active = true, ...rest }) => {\n return <AntSkeleton active={active} {...rest} />;\n};\n\nSkeleton.Button = AntSkeleton.Button;\nSkeleton.Avatar = AntSkeleton.Avatar;\nSkeleton.Input = AntSkeleton.Input;\nSkeleton.Image = AntSkeleton.Image;\nSkeleton.Node = AntSkeleton.Node;\nSkeleton.Details = DetailsSkeleton;\nSkeleton.displayName = \"Skeleton\";\n\nexport default Skeleton;\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Table as AntTable, Input, Pagination, ConfigProvider } from \"antd\";\nimport type { TablePaginationConfig } from \"antd\";\nimport type {\n ColumnGroupType,\n ColumnType,\n TableProps as AntTableProps,\n} from \"antd/es/table\";\nimport type {\n FilterValue,\n SorterResult,\n TableCurrentDataSource,\n} from \"antd/es/table/interface\";\nimport { colors, spacing, breakpoints } from \"../../theme\";\nimport { Skeleton } from \"../Skeleton\";\n\nexport type TableMode = \"client\" | \"server\";\nexport type TableSortOrder = \"ascend\" | \"descend\" | null;\n\nexport type TableQuery = {\n search: string;\n page: number;\n pageSize: number;\n sortField?: React.Key | readonly React.Key[];\n sortOrder?: TableSortOrder;\n filters: Record<string, FilterValue | null>;\n};\n\nexport type TableSearchConfig = {\n placeholder?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n debounceMs?: number;\n};\n\nexport type TableColumnType<T> = ColumnType<T> & {\n /** Include this column in free-text search. Default: true when `dataIndex` is set. */\n searchable?: boolean;\n};\n\nexport type TableColumnGroupType<T> = Omit<ColumnGroupType<T>, \"children\"> & {\n children: TableColumnsType<T>;\n};\n\nexport type TableColumnsType<T> = (TableColumnGroupType<T> | TableColumnType<T>)[];\n\nexport interface TableProps<T extends object>\n extends Omit<AntTableProps<T>, \"columns\" | \"onChange\" | \"pagination\"> {\n columns?: TableColumnsType<T>;\n /**\n * `client` (default): search, filters, sort, and pagination run on `dataSource`.\n * `server`: `dataSource` is the current page only. Pass `pagination.total` from the\n * API and handle `onQueryChange` to fetch the next page / search / sort / filters.\n */\n mode?: TableMode;\n /** Free-text search, shown on the same row as pagination above the table. Pass `false` to hide it. */\n search?: boolean | TableSearchConfig;\n pagination?: false | TablePaginationConfig;\n onChange?: (\n pagination: TablePaginationConfig,\n filters: Record<string, FilterValue | null>,\n sorter: SorterResult<T> | SorterResult<T>[],\n extra: TableCurrentDataSource<T>\n ) => void;\n /** Fires whenever search, page, page size, sort, or column filters change. */\n onQueryChange?: (query: TableQuery) => void;\n}\n\nconst DEFAULT_PAGE_SIZE = 10;\n\nfunction isColumnGroup<T>(\n column: TableColumnGroupType<T> | TableColumnType<T>\n): column is TableColumnGroupType<T> {\n return \"children\" in column && Array.isArray(column.children);\n}\n\nfunction getByDataIndex<T extends object>(\n record: T,\n dataIndex: ColumnType<T>[\"dataIndex\"]\n): unknown {\n if (dataIndex == null) return undefined;\n const path = Array.isArray(dataIndex) ? dataIndex : [dataIndex];\n let current: unknown = record;\n for (const key of path) {\n if (current == null || typeof current !== \"object\") return undefined;\n current = (current as Record<string | number, unknown>)[key as string | number];\n }\n return current;\n}\n\nfunction compareValues(a: unknown, b: unknown): number {\n if (a == null && b == null) return 0;\n if (a == null) return -1;\n if (b == null) return 1;\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n return String(a).localeCompare(String(b), undefined, {\n numeric: true,\n sensitivity: \"base\",\n });\n}\n\nfunction flattenColumns<T>(columns: TableColumnsType<T>): TableColumnType<T>[] {\n const result: TableColumnType<T>[] = [];\n for (const column of columns) {\n if (isColumnGroup(column)) {\n result.push(...flattenColumns(column.children));\n } else {\n result.push(column);\n }\n }\n return result;\n}\n\nfunction matchesSearch<T extends object>(\n record: T,\n search: string,\n columns: TableColumnsType<T>\n): boolean {\n const query = search.trim().toLowerCase();\n if (!query) return true;\n\n const leaves = flattenColumns(columns);\n const optedIn = leaves.filter((column) => column.searchable === true);\n const pool = optedIn.length > 0 ? optedIn : leaves.filter((column) => column.searchable !== false);\n\n return pool.some((column) => {\n const value = getByDataIndex(record, column.dataIndex);\n if (value == null) return false;\n return String(value).toLowerCase().includes(query);\n });\n}\n\nfunction defaultCompare<T extends object>(dataIndex: ColumnType<T>[\"dataIndex\"]) {\n return (a: T, b: T) => compareValues(getByDataIndex(a, dataIndex), getByDataIndex(b, dataIndex));\n}\n\nfunction enhanceColumnsForClient<T extends object>(\n columns: TableColumnsType<T>\n): TableColumnsType<T> {\n return columns.map((column) => {\n if (isColumnGroup(column)) {\n return { ...column, children: enhanceColumnsForClient(column.children) };\n }\n\n const next: TableColumnType<T> = { ...column };\n\n if (next.sorter === true && next.dataIndex != null) {\n next.sorter = defaultCompare(next.dataIndex);\n }\n\n if (next.filters && !next.onFilter && next.dataIndex != null) {\n next.onFilter = (value, record) =>\n String(getByDataIndex(record, next.dataIndex)) === String(value);\n }\n\n return next;\n });\n}\n\nfunction adaptColumnsForServer<T extends object>(\n columns: TableColumnsType<T>\n): TableColumnsType<T> {\n return columns.map((column) => {\n if (isColumnGroup(column)) {\n return { ...column, children: adaptColumnsForServer(column.children) };\n }\n\n const next: TableColumnType<T> = { ...column };\n\n if (typeof next.sorter === \"function\") {\n next.sorter = true;\n } else if (next.sorter && typeof next.sorter === \"object\" && \"compare\" in next.sorter) {\n const { compare: _compare, ...rest } = next.sorter;\n next.sorter = Object.keys(rest).length > 0 ? rest : true;\n }\n\n if (next.onFilter) {\n delete next.onFilter;\n }\n\n return next;\n });\n}\n\nconst SKELETON_WIDTHS = [72, 88, 64, 80, 56];\n\nfunction skeletonizeColumns<T extends object>(\n columns: TableColumnsType<T>\n): TableColumnsType<T> {\n return columns.map((column, index) => {\n if (isColumnGroup(column)) {\n return { ...column, children: skeletonizeColumns(column.children) };\n }\n\n const widthPct = SKELETON_WIDTHS[index % SKELETON_WIDTHS.length];\n return {\n ...column,\n sorter: false,\n filters: undefined,\n onFilter: undefined,\n filterDropdown: undefined,\n render: () => (\n <Skeleton.Input\n active\n size=\"small\"\n style={{ width: `${widthPct}%`, height: 14, minWidth: 40 }}\n />\n ),\n };\n });\n}\n\nfunction isTableLoading(loading: AntTableProps[\"loading\"]): boolean {\n if (loading == null) return false;\n if (typeof loading === \"boolean\") return loading;\n return loading.spinning !== false;\n}\n\nfunction firstSorter<T>(\n sorter: SorterResult<T> | SorterResult<T>[]\n): SorterResult<T> | undefined {\n return Array.isArray(sorter) ? sorter[0] : sorter;\n}\n\nfunction getTableLayout() {\n if (typeof window === \"undefined\") {\n return { isPhone: false, isTablet: false };\n }\n const width = window.innerWidth;\n return {\n isPhone: width < breakpoints.md,\n isTablet: width >= breakpoints.md && width < breakpoints.lg,\n };\n}\n\nfunction useTableLayout() {\n const [layout, setLayout] = useState(getTableLayout);\n\n useEffect(() => {\n const phoneQuery = window.matchMedia(`(max-width: ${breakpoints.md - 1}px)`);\n const tabletQuery = window.matchMedia(\n `(min-width: ${breakpoints.md}px) and (max-width: ${breakpoints.lg - 1}px)`\n );\n\n const update = () => setLayout(getTableLayout());\n update();\n phoneQuery.addEventListener(\"change\", update);\n tabletQuery.addEventListener(\"change\", update);\n return () => {\n phoneQuery.removeEventListener(\"change\", update);\n tabletQuery.removeEventListener(\"change\", update);\n };\n }, []);\n\n return layout;\n}\n\nfunction resolveSearchConfig(\n search: TableProps<object>[\"search\"],\n mode: TableMode\n): (TableSearchConfig & { enabled: boolean }) | { enabled: false } {\n if (search === false) return { enabled: false };\n const config = search === true || search == null ? {} : search;\n return {\n enabled: true,\n placeholder: \"Search\",\n debounceMs: mode === \"server\" ? 300 : 0,\n ...config,\n };\n}\n\nexport function Table<T extends object>({\n columns = [],\n dataSource,\n mode = \"client\",\n search = true,\n pagination,\n onChange,\n onQueryChange,\n scroll,\n size,\n loading = false,\n rowKey,\n ...rest\n}: TableProps<T>) {\n const { isPhone, isTablet } = useTableLayout();\n const paginationObj = pagination === false ? undefined : pagination;\n const searchConfig = resolveSearchConfig(search, mode);\n\n const [query, setQuery] = useState<TableQuery>(() => ({\n search:\n (searchConfig.enabled && (searchConfig.value ?? searchConfig.defaultValue)) || \"\",\n page: paginationObj?.current ?? 1,\n pageSize: paginationObj?.pageSize ?? DEFAULT_PAGE_SIZE,\n filters: {},\n sortOrder: null,\n }));\n const [inputSearch, setInputSearch] = useState(query.search);\n const [clientFilteredCount, setClientFilteredCount] = useState<number | null>(null);\n\n const queryRef = useRef(query);\n queryRef.current = query;\n\n const onQueryChangeRef = useRef(onQueryChange);\n onQueryChangeRef.current = onQueryChange;\n\n const searchOnChangeRef = useRef(\n searchConfig.enabled ? searchConfig.onChange : undefined\n );\n searchOnChangeRef.current = searchConfig.enabled ? searchConfig.onChange : undefined;\n\n const debounceMs = searchConfig.enabled ? searchConfig.debounceMs ?? 0 : 0;\n const debounceTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const controlledSearch = searchConfig.enabled ? searchConfig.value : undefined;\n\n useEffect(() => {\n if (controlledSearch === undefined) return;\n setInputSearch(controlledSearch);\n setQuery((prev) =>\n prev.search === controlledSearch ? prev : { ...prev, search: controlledSearch }\n );\n }, [controlledSearch]);\n\n useEffect(() => {\n if (paginationObj?.current != null) {\n setQuery((prev) =>\n prev.page === paginationObj.current ? prev : { ...prev, page: paginationObj.current! }\n );\n }\n }, [paginationObj?.current]);\n\n useEffect(() => {\n if (paginationObj?.pageSize != null) {\n setQuery((prev) =>\n prev.pageSize === paginationObj.pageSize\n ? prev\n : { ...prev, pageSize: paginationObj.pageSize! }\n );\n }\n }, [paginationObj?.pageSize]);\n\n useEffect(() => {\n return () => {\n if (debounceTimer.current) clearTimeout(debounceTimer.current);\n };\n }, []);\n\n const resolvedQuery: TableQuery = {\n ...query,\n search: controlledSearch ?? query.search,\n page: paginationObj?.current ?? query.page,\n pageSize: paginationObj?.pageSize ?? query.pageSize,\n };\n\n const emitQuery = useCallback((next: TableQuery) => {\n setQuery(next);\n queryRef.current = next;\n onQueryChangeRef.current?.(next);\n }, []);\n\n const commitSearch = useCallback(\n (value: string, immediate = false) => {\n const run = () => {\n searchOnChangeRef.current?.(value);\n emitQuery({ ...queryRef.current, search: value, page: 1 });\n };\n\n if (debounceTimer.current) {\n clearTimeout(debounceTimer.current);\n debounceTimer.current = null;\n }\n\n if (immediate || debounceMs <= 0) {\n run();\n return;\n }\n\n debounceTimer.current = setTimeout(run, debounceMs);\n },\n [debounceMs, emitQuery]\n );\n\n const rows = useMemo(() => {\n const source = (dataSource ?? []) as T[];\n if (mode === \"server\" || !searchConfig.enabled) return source;\n return source.filter((record) => matchesSearch(record, resolvedQuery.search, columns));\n }, [columns, dataSource, mode, resolvedQuery.search, searchConfig.enabled]);\n\n useEffect(() => {\n setClientFilteredCount(null);\n }, [resolvedQuery.search, dataSource]);\n\n const resolvedColumns = useMemo(\n () =>\n mode === \"server\"\n ? adaptColumnsForServer(columns)\n : enhanceColumnsForClient(columns),\n [columns, mode]\n );\n\n const tableLoading = isTableLoading(loading);\n const skeletonRowCount = resolvedQuery.pageSize || DEFAULT_PAGE_SIZE;\n\n const displayColumns = useMemo(\n () => (tableLoading ? skeletonizeColumns(resolvedColumns) : resolvedColumns),\n [resolvedColumns, tableLoading]\n );\n\n const displayRows = useMemo(() => {\n if (!tableLoading) return rows;\n return Array.from({ length: skeletonRowCount }, (_, index) => ({\n __skeletonKey: `skeleton-${index}`,\n })) as unknown as T[];\n }, [rows, skeletonRowCount, tableLoading]);\n\n const displayRowKey: AntTableProps<T>[\"rowKey\"] = tableLoading\n ? (record) => String((record as { __skeletonKey?: string }).__skeletonKey)\n : rowKey;\n\n const paginationTotal =\n mode === \"server\"\n ? paginationObj?.total ?? rows.length\n : clientFilteredCount ?? rows.length;\n\n const resolvedPagination = useMemo(() => {\n if (pagination === false) return false;\n\n const merged: TablePaginationConfig = {\n showSizeChanger: true,\n showQuickJumper: true,\n pageSizeOptions: [\"10\", \"20\", \"50\"],\n showTotal: (total, range) => `${range[0]}–${range[1]} of ${total}`,\n ...paginationObj,\n current: resolvedQuery.page,\n pageSize: resolvedQuery.pageSize,\n style: { display: \"none\" },\n };\n\n if (mode === \"server\") {\n merged.total = paginationTotal;\n }\n\n return merged;\n }, [\n mode,\n pagination,\n paginationObj,\n paginationTotal,\n resolvedQuery.page,\n resolvedQuery.pageSize,\n ]);\n\n const handleTableChange: NonNullable<AntTableProps<T>[\"onChange\"]> = (\n nextPagination,\n filters,\n sorter,\n extra\n ) => {\n const active = firstSorter(sorter);\n const next: TableQuery = {\n ...queryRef.current,\n page: extra.action === \"paginate\" ? nextPagination.current ?? 1 : 1,\n pageSize: nextPagination.pageSize ?? queryRef.current.pageSize,\n filters,\n sortField: active?.field,\n sortOrder: active?.order ?? null,\n };\n\n if (mode === \"client\") {\n setClientFilteredCount(extra.currentDataSource.length);\n }\n\n emitQuery(next);\n onChange?.(nextPagination, filters, sorter, extra);\n };\n\n const handlePaginationChange = (page: number, pageSize: number) => {\n const next: TableQuery = {\n ...queryRef.current,\n page,\n pageSize,\n };\n emitQuery(next);\n onChange?.(\n { current: page, pageSize, total: paginationTotal },\n next.filters,\n {\n field: next.sortField,\n order: next.sortOrder,\n },\n { currentDataSource: rows, action: \"paginate\" }\n );\n };\n\n const bothControls = searchConfig.enabled && pagination !== false;\n const compactPager = isPhone || isTablet;\n\n return (\n <ConfigProvider\n theme={{\n components: {\n Table: {\n headerBg: colors.neutral.gray50,\n },\n },\n }}\n >\n <div style={{ minWidth: 0, width: \"100%\" }}>\n {searchConfig.enabled || pagination !== false ? (\n <div\n style={\n isPhone\n ? {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"stretch\",\n gap: spacing.sm,\n marginBottom: spacing.md,\n }\n : {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: bothControls\n ? \"space-between\"\n : searchConfig.enabled\n ? \"flex-start\"\n : \"flex-end\",\n gap: spacing.md,\n flexWrap: isTablet ? \"wrap\" : \"nowrap\",\n marginBottom: spacing.md,\n }\n }\n >\n {searchConfig.enabled ? (\n <Input.Search\n allowClear\n disabled={tableLoading}\n placeholder={searchConfig.placeholder}\n value={inputSearch}\n onChange={(event) => {\n const value = event.target.value;\n setInputSearch(value);\n commitSearch(value);\n }}\n onSearch={(value) => {\n setInputSearch(value);\n commitSearch(value, true);\n }}\n style={\n isPhone\n ? { width: \"100%\" }\n : isTablet\n ? {\n width: 240,\n maxWidth: \"100%\",\n flex: \"0 1 240px\",\n minWidth: 160,\n }\n : { width: 320, flex: \"0 0 320px\", maxWidth: \"100%\" }\n }\n />\n ) : null}\n {pagination !== false ? (\n <div\n style={{\n display: \"flex\",\n justifyContent: isPhone ? \"center\" : \"flex-end\",\n maxWidth: \"100%\",\n minWidth: 0,\n overflowX: \"auto\",\n flex: isPhone ? undefined : \"1 1 auto\",\n }}\n >\n <Pagination\n current={resolvedQuery.page}\n pageSize={resolvedQuery.pageSize}\n total={paginationTotal}\n size={compactPager ? \"small\" : undefined}\n simple={isPhone}\n showLessItems={compactPager}\n responsive\n showSizeChanger={paginationObj?.showSizeChanger ?? !isPhone}\n showQuickJumper={paginationObj?.showQuickJumper ?? !compactPager}\n pageSizeOptions={paginationObj?.pageSizeOptions ?? [\"10\", \"20\", \"50\"]}\n showTotal={\n paginationObj?.showTotal ??\n (isPhone\n ? (total, range) => `${range[0]}–${range[1]} of ${total}`\n : compactPager\n ? undefined\n : (total, range) => `${range[0]}–${range[1]} of ${total}`)\n }\n disabled={paginationObj?.disabled || tableLoading}\n onChange={handlePaginationChange}\n style={{ margin: 0, flexShrink: 0 }}\n />\n </div>\n ) : null}\n </div>\n ) : null}\n <AntTable<T>\n {...rest}\n size={size ?? (isPhone ? \"small\" : \"middle\")}\n scroll={{ x: \"max-content\", ...scroll }}\n columns={displayColumns}\n dataSource={displayRows}\n rowKey={displayRowKey}\n pagination={resolvedPagination}\n onChange={handleTableChange}\n />\n </div>\n </ConfigProvider>\n );\n}\n\nTable.displayName = \"Table\";\n\nexport default Table;\n","import React from \"react\";\nimport { Tag as AntTag } from \"antd\";\nimport type { TagProps as AntTagProps } from \"antd\";\n\nexport interface TagProps extends AntTagProps {\n children?: React.ReactNode;\n}\n\nexport const Tag = React.forwardRef(function Tag(\n { children, ...rest }: TagProps,\n ref: React.Ref<HTMLSpanElement>\n) {\n return (\n <AntTag ref={ref} {...rest}>\n {children}\n </AntTag>\n );\n});","import React from \"react\";\nimport { Typography } from \"antd\";\nimport type { LinkProps as AntLinkProps } from \"antd/es/typography/Link\";\n\nconst { Link: AntLink } = Typography;\n\nexport interface LinkProps extends AntLinkProps {\n children?: React.ReactNode;\n}\n\nexport const Link = React.forwardRef(function Link(\n { children, ...rest }: LinkProps,\n ref: React.Ref<HTMLElement>\n) {\n return (\n <AntLink ref={ref} {...rest}>\n {children}\n </AntLink>\n );\n});","import React from \"react\";\nimport { Card as AntCard } from \"antd\";\nimport type { CardProps as AntCardProps } from \"antd\";\nimport { Skeleton } from \"../Skeleton\";\nimport \"./Card.css\";\n\nexport interface CardProps extends Omit<AntCardProps, \"title\" | \"loading\"> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n tags?: React.ReactNode;\n extraInfo?: React.ReactNode;\n ctas?: React.ReactNode;\n layout?: \"inline\" | \"grid\";\n children?: React.ReactNode;\n /** Replace body content with a details skeleton while data is loading. */\n loading?: boolean;\n /** Placeholder field rows shown when `loading` is true. Default: 5 */\n loadingRows?: number;\n}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n title,\n description,\n tags,\n extraInfo,\n ctas,\n layout = \"inline\",\n children,\n className = \"\",\n loading = false,\n loadingRows = 5,\n ...rest\n },\n ref\n ) => {\n return (\n <AntCard\n ref={ref}\n className={`cms-card cms-card-${layout} ${className}`}\n {...rest}\n >\n <div className=\"cms-card-content\">\n <div className=\"cms-card-main\">\n {title && <div className=\"cms-card-title\">{title}</div>}\n\n {description && (\n <div className=\"cms-card-description\">{description}</div>\n )}\n\n {tags && <div className=\"cms-card-tags\">{tags}</div>}\n\n {extraInfo && (\n <div className=\"cms-card-extra-info\">{extraInfo}</div>\n )}\n\n {loading ? <Skeleton.Details rows={loadingRows} /> : children}\n </div>\n\n {ctas && <div className=\"cms-card-ctas\">{ctas}</div>}\n </div>\n </AntCard>\n );\n }\n);\n\nCard.displayName = \"Card\";\n","import React from \"react\";\nimport { Modal as AntModal } from \"antd\";\nimport type { ModalProps as AntModalProps, ModalFuncProps } from \"antd\";\n\nexport type { ModalFuncProps };\n\nexport interface ModalProps extends AntModalProps {\n children?: React.ReactNode;\n}\n\nexport interface ModalInterface extends React.FC<ModalProps> {\n info: typeof AntModal.info;\n success: typeof AntModal.success;\n error: typeof AntModal.error;\n warning: typeof AntModal.warning;\n warn: typeof AntModal.warn;\n confirm: typeof AntModal.confirm;\n destroyAll: typeof AntModal.destroyAll;\n config: typeof AntModal.config;\n useModal: typeof AntModal.useModal;\n}\n\nexport const Modal: ModalInterface = ({ children, ...rest }) => {\n return <AntModal {...rest}>{children}</AntModal>;\n};\n\nModal.info = AntModal.info;\nModal.success = AntModal.success;\nModal.error = AntModal.error;\nModal.warning = AntModal.warning;\nModal.warn = AntModal.warn;\nModal.confirm = AntModal.confirm;\nModal.destroyAll = AntModal.destroyAll;\nModal.config = AntModal.config;\nModal.useModal = AntModal.useModal;\nModal.displayName = \"Modal\";\n\nexport default Modal;\n","import React from \"react\";\nimport { Avatar, Breadcrumb, Typography } from \"antd\";\nimport { colors, spacing, fontSize, breakpoints } from \"../../theme\";\nimport { Button } from \"../Button\";\nimport type { ButtonVariant } from \"../Button\";\nimport { Dropdown } from \"../Dropdown\";\nimport type { MenuProps } from \"../Dropdown\";\n\nconst { Text, Title } = Typography;\n\nexport type HeaderBreadcrumb = {\n title: React.ReactNode;\n href?: string;\n onClick?: () => void;\n};\n\nexport type HeaderUser = {\n name: string;\n role?: string;\n avatarSrc?: string;\n};\n\nexport type HeaderAction = {\n key: string;\n label: React.ReactNode;\n variant?: ButtonVariant;\n icon?: React.ReactNode;\n onClick?: () => void;\n href?: string;\n disabled?: boolean;\n danger?: boolean;\n};\n\nexport interface HeaderProps {\n /** Page title on the left of the bar. */\n title?: React.ReactNode;\n /** Supporting text under the title. `description` is preferred. */\n description?: React.ReactNode;\n /** @deprecated Use `description`. */\n subtitle?: React.ReactNode;\n breadcrumbs?: HeaderBreadcrumb[];\n /** Primary CTAs, rendered on the top-right of the bar. */\n actions?: HeaderAction[];\n /** Extra nodes after the CTA buttons (filters, custom controls). */\n extra?: React.ReactNode;\n /** Slot before the title — typically a mobile menu button. */\n leading?: React.ReactNode;\n user?: HeaderUser | null;\n userMenu?: MenuProps;\n onLogout?: () => void;\n sticky?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"\";\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase();\n return `${parts[0].charAt(0)}${parts[parts.length - 1].charAt(0)}`.toUpperCase();\n}\n\nexport const Header = React.forwardRef<HTMLElement, HeaderProps>(\n (\n {\n title,\n description,\n subtitle,\n breadcrumbs,\n actions,\n extra,\n leading,\n user,\n userMenu,\n onLogout,\n sticky = true,\n className,\n style,\n },\n ref\n ) => {\n const descriptionText = description ?? subtitle;\n const hasActions = Boolean(actions?.length || extra || user);\n\n const defaultUserItems: MenuProps[\"items\"] = [\n {\n key: \"profile\",\n label: user?.name,\n disabled: true,\n },\n ...(user?.role\n ? [{ key: \"role\", label: user.role, disabled: true }]\n : []),\n ...(onLogout\n ? [{ type: \"divider\" as const }, { key: \"logout\", label: \"Logout\", danger: true }]\n : []),\n ];\n\n const menu: MenuProps | undefined = user\n ? userMenu ?? {\n items: defaultUserItems,\n onClick: ({ key }) => {\n if (key === \"logout\") onLogout?.();\n },\n }\n : undefined;\n\n const breadcrumbItems = breadcrumbs?.map((item) => ({\n title:\n item.href || item.onClick ? (\n <a\n href={item.href ?? \"#\"}\n onClick={(event) => {\n if (!item.href) event.preventDefault();\n item.onClick?.();\n }}\n >\n {item.title}\n </a>\n ) : (\n item.title\n ),\n }));\n\n return (\n <header\n ref={ref}\n className={[\"cms-ds-header\", className].filter(Boolean).join(\" \")}\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: spacing.lg,\n flexWrap: \"nowrap\",\n padding: `${spacing.lg}px ${spacing.xl}px`,\n background: colors.neutral.white,\n borderBottom: `1px solid ${colors.neutral.gray200}`,\n position: sticky ? \"sticky\" : undefined,\n top: sticky ? 0 : undefined,\n zIndex: sticky ? 20 : undefined,\n ...style,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: spacing.sm,\n flex: \"1 1 auto\",\n minWidth: 0,\n }}\n >\n {leading ? (\n <div\n style={{\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n paddingTop: 2,\n }}\n >\n {leading}\n </div>\n ) : null}\n\n <div style={{ flex: 1, minWidth: 0 }}>\n {breadcrumbItems && breadcrumbItems.length > 0 ? (\n <Breadcrumb\n items={breadcrumbItems}\n style={{\n fontSize: fontSize.xs,\n marginBottom: spacing.xs,\n }}\n />\n ) : null}\n {title ? (\n <Title\n level={3}\n ellipsis={{ tooltip: typeof title === \"string\" ? title : undefined }}\n style={{\n margin: 0,\n color: colors.neutral.gray900,\n fontSize: fontSize.xl,\n lineHeight: \"32px\",\n fontWeight: 600,\n }}\n >\n {title}\n </Title>\n ) : null}\n {descriptionText ? (\n <Text\n style={{\n display: \"block\",\n marginTop: spacing.xxs,\n color: colors.neutral.gray600,\n fontSize: fontSize.sm,\n lineHeight: \"22px\",\n maxWidth: 720,\n }}\n >\n {descriptionText}\n </Text>\n ) : null}\n </div>\n </div>\n\n {hasActions ? (\n <div\n className=\"cms-ds-header-actions\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: spacing.sm,\n flex: \"0 0 auto\",\n flexWrap: \"wrap\",\n paddingTop: title ? 2 : 0,\n }}\n >\n {extra}\n {actions?.map((action) => (\n <Button\n key={action.key}\n variant={action.variant ?? \"default\"}\n icon={action.icon}\n onClick={action.onClick}\n href={action.href}\n disabled={action.disabled}\n danger={action.danger}\n >\n {action.label}\n </Button>\n ))}\n {user && menu ? (\n <Dropdown menu={menu} trigger={[\"click\"]} placement=\"bottomRight\">\n <button\n type=\"button\"\n aria-label={user.name}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing.xs,\n border: \"none\",\n background: \"transparent\",\n cursor: \"pointer\",\n padding: spacing.xxs,\n borderRadius: 999,\n flexShrink: 0,\n }}\n >\n <Avatar\n size={36}\n src={user.avatarSrc}\n alt={user.name}\n style={{\n backgroundColor: colors.brand.primary,\n color: colors.neutral.white,\n fontWeight: 600,\n fontSize: fontSize.xs,\n }}\n >\n {getInitials(user.name)}\n </Avatar>\n </button>\n </Dropdown>\n ) : null}\n </div>\n ) : null}\n\n <style>\n {`@media (max-width: ${breakpoints.md - 1}px) {\n .cms-ds-header { flex-wrap: wrap; }\n .cms-ds-header-actions { width: 100%; justify-content: flex-start; }\n }`}\n </style>\n </header>\n );\n }\n);\n\nHeader.displayName = \"Header\";\n","// Default Indus Action logo (data URL). Source PNG: ./IndusActionLogoFull.png\nexport const indusActionLogo: string =\n \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEu2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc+CjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyc+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpBdHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogIDxBdHRyaWI6QWRzPgogICA8cmRmOlNlcT4KICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI1LTA0LTIzPC9BdHRyaWI6Q3JlYXRlZD4KICAgICA8QXR0cmliOkV4dElkPjYwYThkMzVlLTM2NDMtNDg2Ni05NjYxLWY4NTI2N2ZjNGEyNTwvQXR0cmliOkV4dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz5Mb2dvX1VwZGF0ZWQgLSAxPC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiBy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\";\n","import React from \"react\";\n\ntype IconProps = {\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n};\n\nexport function LogoutIcon({ size = 14, className, style }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className={className}\n style={style}\n >\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n );\n}\n\nexport function CollapseIcon({\n collapsed,\n size = 14,\n className,\n style,\n}: IconProps & { collapsed?: boolean }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className={className}\n style={{\n transform: collapsed ? \"rotate(180deg)\" : undefined,\n ...style,\n }}\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n );\n}\n\nexport function MenuIcon({ size = 18, className, style }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n aria-hidden=\"true\"\n className={className}\n style={style}\n >\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n );\n}\n\nexport function CloseIcon({ size = 14, className, style }: IconProps) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n aria-hidden=\"true\"\n className={className}\n style={style}\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n Avatar,\n Button,\n ConfigProvider,\n Drawer,\n Grid,\n Layout,\n Menu,\n Popconfirm,\n Typography,\n} from \"antd\";\nimport type { MenuProps, SiderProps } from \"antd\";\nimport { colors, spacing, fontSize, breakpoints } from \"../../theme\";\nimport { indusActionLogo as defaultLogo } from \"../../assets/indusActionLogo\";\nimport {\n LogoutIcon,\n CollapseIcon,\n MenuIcon,\n CloseIcon,\n} from \"../../assets/icons\";\n\nconst { Sider } = Layout;\n\nconst MOBILE_HEADER = spacing.xxl;\nconst LOGO_HEIGHT = spacing.xxl + spacing.md;\nconst LOGO_HEIGHT_COMPACT = spacing.lg;\n\nexport type SideNavItem = NonNullable<NonNullable<MenuProps[\"items\"]>[number]>;\n\nexport interface SideNavUser {\n name: string;\n role?: string;\n avatarSrc?: string;\n}\n\nexport interface SideNavProps extends Omit<SiderProps, \"children\" | \"breakpoint\"> {\n items?: MenuProps[\"items\"];\n menu?: Omit<MenuProps, \"items\" | \"mode\">;\n user?: SideNavUser | null;\n onLogout?: () => void;\n logoutLabel?: string;\n logoSrc?: string;\n logoAlt?: string;\n logo?: ReactNode;\n /**\n * Below this breakpoint the sider becomes a drawer (phone layout).\n * Set `false` to always keep the desktop sider.\n * @default \"md\"\n */\n breakpoint?: SiderProps[\"breakpoint\"] | false;\n /**\n * When false, skip the fixed mobile logo bar. Use when a parent header\n * already provides a menu trigger (for example AppShell).\n * @default true\n */\n showMobileBar?: boolean;\n /** Replace or hide (`null`) the default mobile menu button. */\n mobileTrigger?: ReactNode | null;\n mobileOpen?: boolean;\n onMobileOpenChange?: (open: boolean) => void;\n}\n\nfunction useBelowBreakpoint(breakpoint: SiderProps[\"breakpoint\"] | false) {\n const screens = Grid.useBreakpoint();\n if (!breakpoint) return false;\n if (Object.keys(screens).length === 0) {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\n `(max-width: ${breakpoints[breakpoint] - 1}px)`\n ).matches;\n }\n return !screens[breakpoint];\n}\n\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"\";\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase();\n return `${parts[0].charAt(0)}${parts[parts.length - 1].charAt(0)}`.toUpperCase();\n}\n\nfunction SideNavFooter({\n user,\n collapsed = false,\n onLogout,\n logoutLabel = \"Logout\",\n}: {\n user?: SideNavUser | null;\n collapsed?: boolean;\n onLogout?: () => void;\n logoutLabel?: string;\n}) {\n if (!user && !onLogout) return null;\n\n const initials = user ? getInitials(user.name) : \"\";\n\n const logoutButton = (\n <Button\n type=\"text\"\n size=\"small\"\n icon={<LogoutIcon />}\n aria-label={logoutLabel}\n style={{\n color: colors.brand.primary,\n width: 28,\n height: 28,\n padding: spacing.none,\n flexShrink: 0,\n }}\n />\n );\n\n return (\n <div\n style={{\n flexShrink: 0,\n borderTop: `1px solid ${colors.neutral.gray200}`,\n padding: collapsed ? spacing.sm : spacing.md,\n display: \"flex\",\n flexDirection: collapsed ? \"column\" : \"row\",\n alignItems: \"center\",\n gap: spacing.xs,\n background: colors.neutral.white,\n }}\n >\n {user ? (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing.xs,\n justifyContent: collapsed ? \"center\" : \"flex-start\",\n minWidth: 0,\n flex: 1,\n }}\n >\n <Avatar\n size={28}\n src={user.avatarSrc}\n alt={user.name}\n style={{\n backgroundColor: colors.brand.primary,\n color: colors.neutral.white,\n fontWeight: 600,\n fontSize: fontSize.xs,\n flexShrink: 0,\n }}\n >\n {initials}\n </Avatar>\n {collapsed ? null : (\n <div style={{ minWidth: 0, flex: 1 }}>\n <Typography.Text\n strong\n ellipsis\n style={{\n display: \"block\",\n color: colors.neutral.gray800,\n fontSize: fontSize.sm,\n lineHeight: \"18px\",\n }}\n >\n {user.name}\n </Typography.Text>\n {user.role ? (\n <Typography.Text\n ellipsis\n style={{\n display: \"block\",\n color: colors.neutral.gray500,\n fontSize: fontSize.xxs,\n lineHeight: \"16px\",\n }}\n >\n {user.role}\n </Typography.Text>\n ) : null}\n </div>\n )}\n </div>\n ) : null}\n\n {onLogout ? (\n <Popconfirm\n title={logoutLabel}\n description=\"Are you sure you want to logout?\"\n okText=\"Yes\"\n cancelText=\"No\"\n onConfirm={onLogout}\n placement=\"top\"\n >\n {logoutButton}\n </Popconfirm>\n ) : null}\n </div>\n );\n}\n\nfunction SideNavPanel({\n collapsed,\n items,\n menuStyle,\n menuTheme,\n menuRest,\n user,\n onLogout,\n logoutLabel,\n logoSrc,\n logoAlt,\n logo,\n headerButton,\n}: {\n collapsed: boolean;\n items?: MenuProps[\"items\"];\n menuStyle?: React.CSSProperties;\n menuTheme?: MenuProps[\"theme\"];\n menuRest: Omit<MenuProps, \"items\" | \"mode\" | \"style\" | \"theme\">;\n user?: SideNavUser | null;\n onLogout?: () => void;\n logoutLabel?: string;\n logoSrc: string;\n logoAlt: string;\n logo?: ReactNode;\n headerButton?: ReactNode;\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n minHeight: 0,\n background: colors.neutral.white,\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n flexShrink: 0,\n background: colors.neutral.white,\n display: \"flex\",\n flexDirection: collapsed ? \"column\" : \"row\",\n alignItems: \"center\",\n gap: spacing.xs,\n padding: collapsed ? spacing.sm : spacing.md,\n borderBottom: `1px solid ${colors.neutral.gray200}`,\n }}\n >\n <div\n style={{\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: collapsed ? \"center\" : \"flex-start\",\n minWidth: 0,\n }}\n >\n {logo ?? (\n <img\n src={logoSrc}\n alt={logoAlt}\n style={{\n display: \"block\",\n width: \"auto\",\n maxWidth: \"100%\",\n height: collapsed ? LOGO_HEIGHT_COMPACT : LOGO_HEIGHT,\n maxHeight: collapsed ? LOGO_HEIGHT_COMPACT : LOGO_HEIGHT,\n objectFit: \"contain\",\n objectPosition: collapsed ? \"center\" : \"left center\",\n }}\n />\n )}\n </div>\n {headerButton}\n </div>\n\n <div\n style={{\n flex: \"1 1 0%\",\n minHeight: 0,\n overflow: \"auto\",\n }}\n >\n <ConfigProvider\n theme={{\n components: {\n Menu: {\n itemMarginInline: spacing.xxs,\n itemPaddingInline: spacing.md,\n },\n },\n }}\n >\n <Menu\n mode=\"inline\"\n inlineIndent={spacing.sm}\n theme={menuTheme}\n items={items}\n style={{\n borderInlineEnd: \"none\",\n paddingBlock: spacing.sm,\n ...menuStyle,\n }}\n {...menuRest}\n />\n </ConfigProvider>\n </div>\n\n <SideNavFooter\n user={user}\n collapsed={collapsed}\n onLogout={onLogout}\n logoutLabel={logoutLabel}\n />\n </div>\n );\n}\n\nexport function SideNav({\n items,\n menu,\n user,\n onLogout,\n logoutLabel,\n logoSrc = defaultLogo,\n logoAlt = \"Indus Action\",\n logo,\n width = 256,\n theme = \"light\",\n collapsed: collapsedProp,\n defaultCollapsed,\n onCollapse,\n collapsible,\n trigger,\n style,\n breakpoint = \"md\",\n showMobileBar = true,\n mobileTrigger,\n mobileOpen: mobileOpenProp,\n onMobileOpenChange,\n ...siderProps\n}: SideNavProps) {\n const isMobile = useBelowBreakpoint(breakpoint);\n const [uncontrolledCollapsed, setUncontrolledCollapsed] = useState(\n defaultCollapsed ?? false\n );\n const [uncontrolledMobileOpen, setUncontrolledMobileOpen] = useState(false);\n\n const isCollapsedControlled = collapsedProp !== undefined;\n const collapsed = isCollapsedControlled\n ? collapsedProp\n : uncontrolledCollapsed;\n\n const isMobileOpenControlled = mobileOpenProp !== undefined;\n const mobileOpen = isMobileOpenControlled\n ? mobileOpenProp\n : uncontrolledMobileOpen;\n\n const setMobileOpen = (open: boolean) => {\n if (!isMobileOpenControlled) setUncontrolledMobileOpen(open);\n onMobileOpenChange?.(open);\n };\n\n const handleCollapse: SiderProps[\"onCollapse\"] = (value, type) => {\n if (!isCollapsedControlled) setUncontrolledCollapsed(value);\n onCollapse?.(value, type);\n };\n\n useEffect(() => {\n if (!isMobile) setMobileOpen(false);\n }, [isMobile]);\n\n useEffect(() => {\n if (!isMobile || !showMobileBar) return;\n const previous = document.body.style.paddingTop;\n document.body.style.paddingTop = `${MOBILE_HEADER}px`;\n return () => {\n document.body.style.paddingTop = previous;\n };\n }, [isMobile, showMobileBar]);\n\n const {\n style: menuStyle,\n theme: menuTheme,\n onClick: menuOnClick,\n ...menuRest\n } = menu ?? {};\n\n const handleMenuClick: MenuProps[\"onClick\"] = (info) => {\n menuOnClick?.(info);\n if (isMobile) setMobileOpen(false);\n };\n\n const useHeaderToggle = Boolean(collapsible) && trigger === undefined;\n const panelTheme = menuTheme ?? theme;\n\n const iconButtonStyle: React.CSSProperties = {\n color: colors.brand.primary,\n width: 28,\n height: 28,\n padding: spacing.none,\n flexShrink: 0,\n };\n\n const panel = (\n headerButton: ReactNode,\n panelCollapsed: boolean\n ) => (\n <SideNavPanel\n collapsed={panelCollapsed}\n items={items}\n menuStyle={menuStyle}\n menuTheme={panelTheme}\n menuRest={{ ...menuRest, onClick: handleMenuClick }}\n user={user}\n onLogout={onLogout}\n logoutLabel={logoutLabel}\n logoSrc={logoSrc}\n logoAlt={logoAlt}\n logo={logo}\n headerButton={headerButton}\n />\n );\n\n if (isMobile) {\n const hamburger =\n showMobileBar && mobileTrigger !== null\n ? (mobileTrigger ?? (\n <Button\n type=\"text\"\n aria-label=\"Open navigation\"\n icon={<MenuIcon />}\n onClick={() => setMobileOpen(true)}\n style={iconButtonStyle}\n />\n ))\n : null;\n\n return (\n <>\n {showMobileBar\n ? createPortal(\n <header\n style={{\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n height: MOBILE_HEADER,\n zIndex: 1000,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: spacing.xs,\n paddingInline: spacing.md,\n borderBottom: `1px solid ${colors.neutral.gray200}`,\n background: colors.neutral.white,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n minWidth: 0,\n flex: 1,\n }}\n >\n {logo ?? (\n <img\n src={logoSrc}\n alt={logoAlt}\n style={{\n display: \"block\",\n height: LOGO_HEIGHT_COMPACT,\n width: \"auto\",\n maxWidth: \"100%\",\n objectFit: \"contain\",\n objectPosition: \"left center\",\n }}\n />\n )}\n </div>\n {hamburger}\n </header>,\n document.body\n )\n : null}\n <Drawer\n placement=\"left\"\n open={mobileOpen}\n onClose={() => setMobileOpen(false)}\n width={width}\n closable={false}\n zIndex={1100}\n styles={{\n body: {\n padding: 0,\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n }}\n >\n {panel(\n <Button\n type=\"text\"\n size=\"small\"\n aria-label=\"Close navigation\"\n icon={<CloseIcon />}\n onClick={() => setMobileOpen(false)}\n style={iconButtonStyle}\n />,\n false\n )}\n </Drawer>\n </>\n );\n }\n\n return (\n <Sider\n theme={theme}\n width={width}\n collapsed={collapsed}\n collapsible={collapsible}\n trigger={useHeaderToggle ? null : trigger}\n onCollapse={handleCollapse}\n style={{\n height: \"100vh\",\n position: \"sticky\",\n top: 0,\n overflow: \"hidden\",\n borderRight: `1px solid ${colors.neutral.gray200}`,\n background: colors.neutral.white,\n ...style,\n }}\n {...siderProps}\n >\n {panel(\n useHeaderToggle ? (\n <Button\n type=\"text\"\n size=\"small\"\n aria-label={collapsed ? \"Expand navigation\" : \"Collapse navigation\"}\n icon={<CollapseIcon collapsed={collapsed} />}\n onClick={() => handleCollapse(!collapsed, \"clickTrigger\")}\n style={iconButtonStyle}\n />\n ) : null,\n collapsed\n )}\n </Sider>\n );\n}\n\nSideNav.displayName = \"SideNav\";\n\nexport default SideNav;\nexport { defaultLogo as indusActionLogo };\n","import React from \"react\";\nimport { Result } from \"antd\";\nimport type { ResultProps } from \"antd\";\nimport { Button } from \"../Button\";\nimport { colors } from \"../../theme\";\n\nexport type StatusPageStatus = NonNullable<ResultProps[\"status\"]>;\n\nexport interface StatusPageProps {\n status: StatusPageStatus;\n title?: React.ReactNode;\n subTitle?: React.ReactNode;\n actionLabel?: string;\n /** Click handler for the default action button. */\n onAction?: () => void;\n /** If set, the default action button renders as a link. */\n actionHref?: string;\n /** Replaces the default action button. */\n extra?: React.ReactNode;\n /** Fill the viewport and center the result. Default: true. */\n fullPage?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function StatusPage({\n status,\n title,\n subTitle,\n actionLabel,\n onAction,\n actionHref,\n extra,\n fullPage = true,\n className,\n style,\n}: StatusPageProps) {\n const action =\n extra ??\n (actionLabel ? (\n <Button\n variant=\"primary\"\n size=\"large\"\n {...(actionHref ? { href: actionHref } : {})}\n onClick={onAction}\n >\n {actionLabel}\n </Button>\n ) : undefined);\n\n const result = (\n <Result\n status={status}\n title={title}\n subTitle={subTitle}\n extra={action}\n />\n );\n\n if (!fullPage) {\n return (\n <div className={className} style={style}>\n {result}\n </div>\n );\n }\n\n return (\n <div\n className={className}\n style={{\n minHeight: \"100vh\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: colors.neutral.gray50,\n ...style,\n }}\n >\n {result}\n </div>\n );\n}\n\nStatusPage.displayName = \"StatusPage\";\n","import React from \"react\";\nimport { StatusPage } from \"./StatusPage\";\nimport type { StatusPageProps } from \"./StatusPage\";\n\nexport type NotFoundPageProps = Omit<StatusPageProps, \"status\">;\n\nexport function NotFoundPage({\n title = \"404\",\n subTitle = \"Sorry, the page you visited does not exist.\",\n actionLabel = \"Home Page\",\n actionHref,\n onAction,\n extra,\n ...rest\n}: NotFoundPageProps) {\n const href = actionHref ?? (onAction || extra ? undefined : \"/\");\n\n return (\n <StatusPage\n status=\"404\"\n title={title}\n subTitle={subTitle}\n actionLabel={actionLabel}\n actionHref={href}\n onAction={onAction}\n extra={extra}\n {...rest}\n />\n );\n}\n\nNotFoundPage.displayName = \"NotFoundPage\";\n\nexport default NotFoundPage;\n","import React from \"react\";\nimport { StatusPage } from \"./StatusPage\";\nimport type { StatusPageProps } from \"./StatusPage\";\n\nexport type UnauthorizedPageProps = Omit<StatusPageProps, \"status\">;\n\nexport function UnauthorizedPage({\n title = \"Unauthorized Access\",\n subTitle = \"You don't have permission to access this. Please ask the site admin for access.\",\n actionLabel = \"Back\",\n actionHref,\n onAction,\n extra,\n ...rest\n}: UnauthorizedPageProps) {\n const href = actionHref ?? (onAction || extra ? undefined : \"/\");\n\n return (\n <StatusPage\n status=\"403\"\n title={title}\n subTitle={subTitle}\n actionLabel={actionLabel}\n actionHref={href}\n onAction={onAction}\n extra={extra}\n {...rest}\n />\n );\n}\n\nUnauthorizedPage.displayName = \"UnauthorizedPage\";\n\nexport default UnauthorizedPage;\n"]}
package/dist/index.css ADDED
@@ -0,0 +1,60 @@
1
+ /* src/components/Card/Card.css */
2
+ .cms-card {
3
+ width: 100%;
4
+ box-sizing: border-box;
5
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
6
+ }
7
+ .cms-card-content {
8
+ display: flex;
9
+ align-items: flex-start;
10
+ justify-content: space-between;
11
+ gap: 24px;
12
+ width: 100%;
13
+ }
14
+ .cms-card-main {
15
+ flex: 1;
16
+ min-width: 0;
17
+ }
18
+ .cms-card-title {
19
+ font-size: 20px;
20
+ font-weight: 600;
21
+ margin-bottom: 12px;
22
+ }
23
+ .cms-card-description {
24
+ color: #666;
25
+ margin-bottom: 16px;
26
+ }
27
+ .cms-card-tags {
28
+ display: flex;
29
+ flex-wrap: wrap;
30
+ gap: 8px;
31
+ margin-bottom: 16px;
32
+ }
33
+ .cms-card-extra-info {
34
+ color: #666;
35
+ margin-bottom: 16px;
36
+ }
37
+ .cms-card-ctas {
38
+ display: flex;
39
+ align-items: flex-start;
40
+ justify-content: flex-end;
41
+ gap: 12px;
42
+ flex-shrink: 0;
43
+ }
44
+ .cms-card-grid .cms-card-content {
45
+ flex-direction: column;
46
+ }
47
+ .cms-card-grid .cms-card-ctas {
48
+ justify-content: flex-start;
49
+ }
50
+ @media (max-width: 768px) {
51
+ .cms-card-inline .cms-card-content {
52
+ flex-direction: column;
53
+ }
54
+ .cms-card-inline .cms-card-ctas,
55
+ .cms-card-grid .cms-card-ctas {
56
+ width: 100%;
57
+ flex-wrap: wrap;
58
+ }
59
+ }
60
+ /*# sourceMappingURL=index.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Card/Card.css"],"sourcesContent":[".cms-card {\n width: 100%;\n box-sizing: border-box;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);\n}\n\n.cms-card-content {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 24px;\n width: 100%;\n}\n\n.cms-card-main {\n flex: 1;\n min-width: 0;\n}\n\n.cms-card-title {\n font-size: 20px;\n font-weight: 600;\n margin-bottom: 12px;\n}\n\n.cms-card-description {\n color: #666;\n margin-bottom: 16px;\n}\n\n.cms-card-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.cms-card-extra-info {\n color: #666;\n margin-bottom: 16px;\n}\n\n.cms-card-ctas {\n display: flex;\n align-items: flex-start;\n justify-content: flex-end;\n gap: 12px;\n flex-shrink: 0;\n}\n\n/* Grid layout */\n.cms-card-grid .cms-card-content {\n flex-direction: column;\n}\n\n.cms-card-grid .cms-card-ctas {\n justify-content: flex-start;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .cms-card-inline .cms-card-content {\n flex-direction: column;\n }\n\n .cms-card-inline .cms-card-ctas,\n .cms-card-grid .cms-card-ctas {\n width: 100%;\n flex-wrap: wrap;\n }\n}"],"mappings":";AAAA,CAAC;AACC,SAAO;AACP,cAAY;AACZ,cAAY,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtC;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,SAAO;AACT;AAEA,CAAC;AACC,QAAM;AACN,aAAW;AACb;AAEA,CAAC;AACC,aAAW;AACX,eAAa;AACb,iBAAe;AACjB;AAEA,CAAC;AACC,SAAO;AACP,iBAAe;AACjB;AAEA,CAAC;AACC,WAAS;AACT,aAAW;AACX,OAAK;AACL,iBAAe;AACjB;AAEA,CAAC;AACC,SAAO;AACP,iBAAe;AACjB;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,mBAAiB;AACjB,OAAK;AACL,eAAa;AACf;AAGA,CAAC,cAAc,CA7Cd;AA8CC,kBAAgB;AAClB;AAEA,CAJC,cAIc,CAbd;AAcC,mBAAiB;AACnB;AAGA,QAAO,WAAY;AACjB,GAAC,gBAAgB,CAvDlB;AAwDG,oBAAgB;AAClB;AAEA,GAJC,gBAIgB,CAvBlB;AAAA,EAwBC,CAfD,cAegB,CAxBhB;AAyBG,WAAO;AACP,eAAW;AACb;AACF;","names":[]}