@fluid-app/portal-sdk 0.1.199 → 0.1.201

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/{ContactsScreen-DvohvoOE.cjs → ContactsScreen-BQ6pvYOa.cjs} +291 -281
  2. package/dist/ContactsScreen-BQ6pvYOa.cjs.map +1 -0
  3. package/dist/{ContactsScreen-Cheiwaxn.cjs → ContactsScreen-Bw2GcYtk.cjs} +2 -2
  4. package/dist/{ContactsScreen-BtBNMZzG.mjs → ContactsScreen-BzRFTCBS.mjs} +17 -7
  5. package/dist/ContactsScreen-BzRFTCBS.mjs.map +1 -0
  6. package/dist/{FluidProvider-D177ez3m.cjs → FluidProvider-BRkRo8Wl.cjs} +12 -992
  7. package/dist/FluidProvider-BRkRo8Wl.cjs.map +1 -0
  8. package/dist/{FluidProvider-DiJy4Zve.mjs → FluidProvider-BTZAiT69.mjs} +9 -820
  9. package/dist/FluidProvider-BTZAiT69.mjs.map +1 -0
  10. package/dist/{MessagingScreen-Cu3tcpPs.mjs → MessagingScreen-Bk3Eh1dN.mjs} +2 -2
  11. package/dist/{MessagingScreen-Cu3tcpPs.mjs.map → MessagingScreen-Bk3Eh1dN.mjs.map} +1 -1
  12. package/dist/{MessagingScreen-Ysi48svi.cjs → MessagingScreen-DN2eQRxF.cjs} +6 -6
  13. package/dist/{MessagingScreen-gKidMcrr.cjs → MessagingScreen-DtDbS3VZ.cjs} +2 -2
  14. package/dist/{MessagingScreen-gKidMcrr.cjs.map → MessagingScreen-DtDbS3VZ.cjs.map} +1 -1
  15. package/dist/{PortalContentApiProvider-CPnqELEX.cjs → PortalContentApiProvider-BDbrZCyI.cjs} +115 -89
  16. package/dist/PortalContentApiProvider-BDbrZCyI.cjs.map +1 -0
  17. package/dist/{PortalContentApiProvider-CWRAw9kL.mjs → PortalContentApiProvider-CzLqEN5C.mjs} +116 -90
  18. package/dist/PortalContentApiProvider-CzLqEN5C.mjs.map +1 -0
  19. package/dist/{ProductsScreen-CQ5-A8AL.cjs → ProductsScreen-68jB202M.cjs} +2 -2
  20. package/dist/{ProductsScreen-CQ5-A8AL.cjs.map → ProductsScreen-68jB202M.cjs.map} +1 -1
  21. package/dist/{ProductsScreen-CexZ0gx9.mjs → ProductsScreen-BeNUsjh1.mjs} +2 -2
  22. package/dist/{ProductsScreen-Al6H4ujs.mjs → ProductsScreen-BidL3ZF5.mjs} +2 -2
  23. package/dist/{ProductsScreen-Al6H4ujs.mjs.map → ProductsScreen-BidL3ZF5.mjs.map} +1 -1
  24. package/dist/{ProductsScreen-BnwMOZ4-.cjs → ProductsScreen-Bq0f4pQL.cjs} +2 -2
  25. package/dist/{ProfileScreen-CGS7YkcT.cjs → ProfileScreen-BMNq0NEB.cjs} +6 -6
  26. package/dist/{ProfileScreen-hE1S_99P.mjs → ProfileScreen-D-pTegtY.mjs} +3 -3
  27. package/dist/{ProfileScreen-hE1S_99P.mjs.map → ProfileScreen-D-pTegtY.mjs.map} +1 -1
  28. package/dist/{ProfileScreen-DJZoMzE6.cjs → ProfileScreen-D5OxmzhM.cjs} +101 -101
  29. package/dist/{ProfileScreen-DJZoMzE6.cjs.map → ProfileScreen-D5OxmzhM.cjs.map} +1 -1
  30. package/dist/{QuickShareWidget-0GD4KWAr.cjs → QuickShareWidget-C_p3tPs5.cjs} +2 -2
  31. package/dist/QuickShareWidget-C_p3tPs5.cjs.map +1 -0
  32. package/dist/{QuickShareWidget-DZzrQjOx.mjs → QuickShareWidget-xKcV3ZQ5.mjs} +2 -2
  33. package/dist/QuickShareWidget-xKcV3ZQ5.mjs.map +1 -0
  34. package/dist/{ShareablesScreen-CzTU7e0l.mjs → ShareablesScreen-BRfgOnpL.mjs} +2 -2
  35. package/dist/{ShareablesScreen-CzTU7e0l.mjs.map → ShareablesScreen-BRfgOnpL.mjs.map} +1 -1
  36. package/dist/{ShareablesScreen-DujtMoAi.cjs → ShareablesScreen-BYP65ZnU.cjs} +2 -2
  37. package/dist/{ShareablesScreen-CmZ5CX99.cjs → ShareablesScreen-CCqADUXE.cjs} +2 -2
  38. package/dist/{ShareablesScreen-CmZ5CX99.cjs.map → ShareablesScreen-CCqADUXE.cjs.map} +1 -1
  39. package/dist/{ShareablesScreen-yscAsNpq.mjs → ShareablesScreen-YnNF0dD6.mjs} +2 -2
  40. package/dist/{ShopScreen-Bdo59te-.mjs → ShopScreen-BOJGcSyG.mjs} +3 -3
  41. package/dist/{ShopScreen-Bdo59te-.mjs.map → ShopScreen-BOJGcSyG.mjs.map} +1 -1
  42. package/dist/{ShopScreen-R9zk7d5d.cjs → ShopScreen-BzyBZ24D.cjs} +6 -6
  43. package/dist/{ShopScreen-DKlDKNom.cjs → ShopScreen-DeLp93hN.cjs} +3 -3
  44. package/dist/{ShopScreen-DKlDKNom.cjs.map → ShopScreen-DeLp93hN.cjs.map} +1 -1
  45. package/dist/{SpacerWidget-Da_sNa_X.mjs → SpacerWidget-BJFO-Xyh.mjs} +2 -2
  46. package/dist/SpacerWidget-BJFO-Xyh.mjs.map +1 -0
  47. package/dist/{SpacerWidget-CLFbkgoz.cjs → SpacerWidget-D9lOLPr5.cjs} +2 -2
  48. package/dist/SpacerWidget-D9lOLPr5.cjs.map +1 -0
  49. package/dist/{TableWidget-lKjTu7Go.cjs → TableWidget-C7qiWZc3.cjs} +1 -1
  50. package/dist/{TableWidget-B65hwjKS.mjs → TableWidget-DRByd9ig.mjs} +9 -9
  51. package/dist/TableWidget-DRByd9ig.mjs.map +1 -0
  52. package/dist/{TableWidget-FDbnEYZb.cjs → TableWidget-DUnz9hrD.cjs} +9 -9
  53. package/dist/TableWidget-DUnz9hrD.cjs.map +1 -0
  54. package/dist/index.cjs +68 -70
  55. package/dist/index.cjs.map +1 -1
  56. package/dist/index.d.cts +126 -133
  57. package/dist/index.d.cts.map +1 -1
  58. package/dist/index.d.mts +126 -133
  59. package/dist/index.d.mts.map +1 -1
  60. package/dist/index.mjs +25 -25
  61. package/dist/src-BNcNh8fM.cjs +963 -0
  62. package/dist/src-BNcNh8fM.cjs.map +1 -0
  63. package/dist/src-BjCPR0aG.mjs +788 -0
  64. package/dist/src-BjCPR0aG.mjs.map +1 -0
  65. package/package.json +16 -16
  66. package/dist/ContactsScreen-BtBNMZzG.mjs.map +0 -1
  67. package/dist/ContactsScreen-DvohvoOE.cjs.map +0 -1
  68. package/dist/FluidProvider-D177ez3m.cjs.map +0 -1
  69. package/dist/FluidProvider-DiJy4Zve.mjs.map +0 -1
  70. package/dist/PortalContentApiProvider-CPnqELEX.cjs.map +0 -1
  71. package/dist/PortalContentApiProvider-CWRAw9kL.mjs.map +0 -1
  72. package/dist/QuickShareWidget-0GD4KWAr.cjs.map +0 -1
  73. package/dist/QuickShareWidget-DZzrQjOx.mjs.map +0 -1
  74. package/dist/SpacerWidget-CLFbkgoz.cjs.map +0 -1
  75. package/dist/SpacerWidget-Da_sNa_X.mjs.map +0 -1
  76. package/dist/TableWidget-B65hwjKS.mjs.map +0 -1
  77. package/dist/TableWidget-FDbnEYZb.cjs.map +0 -1
  78. package/dist/countries-api-context-Dob_AzPO.mjs +0 -13
  79. package/dist/countries-api-context-Dob_AzPO.mjs.map +0 -1
  80. package/dist/countries-api-context-G-NW4BoH.cjs +0 -25
  81. package/dist/countries-api-context-G-NW4BoH.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableWidget-DRByd9ig.mjs","names":[],"sources":["../../widgets/src/widgets/TableWidget.tsx"],"sourcesContent":["import { useState, useMemo, type ComponentProps } from \"react\";\nimport type React from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n BorderWidthOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/portal-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport {\n getBorderRadiusField,\n getBorderWidthField,\n getBorderColorField,\n borderWidthClasses,\n borderColorClasses,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport { Input } from \"@fluid-app/ui-primitives\";\nimport {\n MediaRenderer,\n getMediaPropsFromShareable,\n} from \"../components/MediaRenderer\";\nimport { type ShareableItem } from \"@fluid-app/portal-core/types\";\nimport { useWidgetInteraction } from \"../contexts/WidgetInteractionContext\";\n\n/** Plain column definition provided by data sources (no render functions) */\nexport type TableColumnDef = {\n key: string;\n label: string;\n sortable: boolean;\n};\n\n// Internal column definition (includes render function)\ntype ColumnDef = TableColumnDef & {\n render?: (value: unknown, item: ShareableItem) => React.ReactNode;\n};\n\nconst DEFAULT_DATA: ShareableItem[] = [];\n\n// ---------------------------------------------------------------------------\n// Column cell renderers\n// ---------------------------------------------------------------------------\n\nfunction ImageCellRenderer(_value: unknown, item: ShareableItem) {\n return (\n <div className=\"h-10 w-10 rounded object-cover\">\n <MediaRenderer {...getMediaPropsFromShareable(item)} />\n </div>\n );\n}\n\nfunction PriceCellRenderer(_value: unknown, item: ShareableItem) {\n return ((item.display_price as string) ?? item.price) || \"-\";\n}\n\nfunction StatusCellRenderer(value: unknown) {\n const status = String(value || \"unknown\").toLowerCase();\n const statusStyles: Record<string, string> = {\n active: \"bg-primary text-primary-foreground\",\n paid: \"bg-primary text-primary-foreground\",\n inactive: \"bg-secondary text-secondary-foreground\",\n paused: \"bg-secondary text-secondary-foreground\",\n unknown: \"bg-muted text-muted-foreground\",\n unpaid: \"bg-destructive text-destructive-foreground\",\n refunded: \"bg-muted text-muted-foreground\",\n cancelled: \"bg-destructive text-destructive-foreground\",\n };\n return (\n <span\n className={`inline-flex rounded-full px-2 py-1 text-xs font-medium ${statusStyles[status] || \"bg-muted text-foreground\"}`}\n >\n {String(value || \"Unknown\")}\n </span>\n );\n}\n\n/** Map of column keys to custom cell renderers */\nconst CELL_RENDERERS: Record<\n string,\n (value: unknown, item: ShareableItem) => React.ReactNode\n> = {\n imageUrl: ImageCellRenderer,\n price: PriceCellRenderer,\n display_price: PriceCellRenderer,\n status: StatusCellRenderer,\n};\n\n/** Resolve plain column definitions from a data source into full ColumnDefs with renderers */\nfunction resolveColumns(columns: TableColumnDef[]): ColumnDef[] {\n return columns.map((col) => {\n const render = CELL_RENDERERS[col.key];\n return render ? { ...col, render } : { ...col };\n });\n}\n\n// Default columns for product data\nconst defaultColumns: ColumnDef[] = [\n {\n key: \"imageUrl\",\n label: \"Image\",\n sortable: false,\n render: ImageCellRenderer,\n },\n {\n key: \"title\",\n label: \"Title\",\n sortable: true,\n },\n {\n key: \"price\",\n label: \"Price\",\n sortable: true,\n render: PriceCellRenderer,\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: StatusCellRenderer,\n },\n];\n\ntype TableWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n alternatingColorEnabled?: boolean;\n textColor?: ColorOptions;\n headerBackgroundColor?: ColorOptions;\n headerTextColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n borderWidth?: BorderWidthOptions;\n borderColor?: ColorOptions;\n\n // Data\n data?: ShareableItem[];\n /** Column definitions from a data source (plain data, renderers resolved internally) */\n columns?: TableColumnDef[];\n\n // Features\n filterEnabled?: boolean;\n sortingEnabled?: boolean;\n paginationEnabled?: boolean;\n maxRowsPerPage?: number;\n};\n\nexport function TableWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Products\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n alternatingColorEnabled = true,\n textColor = \"foreground\",\n headerBackgroundColor = \"muted\",\n headerTextColor = \"foreground\",\n padding = 4,\n borderRadius = \"md\",\n borderWidth = \"none\",\n borderColor = \"muted\",\n\n // Data\n data = DEFAULT_DATA,\n columns: columnsProp,\n\n // Feature defaults\n filterEnabled = true,\n sortingEnabled = true,\n paginationEnabled = true,\n maxRowsPerPage = 5,\n\n className,\n ...props\n}: TableWidgetProps): React.JSX.Element {\n const backgroundColor = background.color || \"background\";\n const isImageBackground = background.type === \"image\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n isImageBackground\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n const pageSize = maxRowsPerPage;\n\n // When using an image or transparent background, inner elements should be\n // transparent so the image/page shows through. Otherwise use the configured colors.\n const isTransparentBg = backgroundColor === \"transparent\";\n const useTransparentInner = isImageBackground || isTransparentBg;\n const innerBg = useTransparentInner\n ? \"bg-transparent\"\n : `bg-${backgroundColor}`;\n const innerBgAlt = useTransparentInner\n ? \"bg-black/5\"\n : `bg-${backgroundColor}/40`;\n const transparentBorder = isTransparentBg\n ? \"border-black/20\"\n : \"border-white/20\";\n const innerBorder = useTransparentInner\n ? transparentBorder\n : `border-${backgroundColor}/60`;\n const headerBg = useTransparentInner\n ? \"bg-black/10\"\n : `bg-${headerBackgroundColor}/40`;\n const headerBorder = useTransparentInner\n ? transparentBorder\n : `border-${headerBackgroundColor}/60`;\n const paginationBg = useTransparentInner\n ? \"bg-black/10\"\n : `bg-${backgroundColor}/40`;\n\n // State for filtering, sorting, and pagination\n const [globalFilter, setGlobalFilter] = useState(\"\");\n const [sortConfig, setSortConfig] = useState<{\n key: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n const [currentPage, setCurrentPage] = useState(1);\n\n // Only use columns from the data source if they look like valid column defs\n // (have a `key` string). When transformers return a plain array (e.g. toShareableProps),\n // use-widget-data maps the same array to ALL targetProps, so `columns` may\n // receive the data rows instead of column definitions.\n const firstCol = columnsProp?.[0];\n const validColumnsProp =\n firstCol && typeof firstCol.key === \"string\" && firstCol.key !== \"\"\n ? columnsProp\n : undefined;\n\n const columns = useMemo(\n () =>\n validColumnsProp ? resolveColumns(validColumnsProp) : defaultColumns,\n [validColumnsProp],\n );\n\n // Filter data\n const filteredData = useMemo(() => {\n let result = [...data];\n\n if (globalFilter) {\n const lowerFilter = globalFilter.toLowerCase();\n result = result.filter((item) =>\n columns.some((col) => {\n const value = item[col.key];\n return String(value ?? \"\")\n .toLowerCase()\n .includes(lowerFilter);\n }),\n );\n }\n\n return result;\n }, [data, globalFilter, columns]);\n\n // Sort data\n const sortedData = useMemo(() => {\n if (!sortConfig) return filteredData;\n\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n\n // Handle null/undefined\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return sortConfig.direction === \"asc\" ? 1 : -1;\n if (bValue == null) return sortConfig.direction === \"asc\" ? -1 : 1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortConfig.direction === \"asc\" ? comparison : -comparison;\n });\n }, [filteredData, sortConfig]);\n\n // Paginate data\n const paginatedData = useMemo(() => {\n if (!paginationEnabled) return sortedData;\n\n const startIndex = (currentPage - 1) * pageSize;\n return sortedData.slice(startIndex, startIndex + pageSize);\n }, [sortedData, currentPage, pageSize, paginationEnabled]);\n\n const totalPages = Math.ceil(sortedData.length / pageSize);\n\n // Reset to page 1 when filters change\n const handleGlobalFilterChange = (value: string) => {\n setGlobalFilter(value);\n setCurrentPage(1);\n };\n\n // Handle sort\n const handleSort = (key: string) => {\n if (!sortingEnabled) return;\n\n setSortConfig((prev) => {\n if (prev?.key !== key) return { key, direction: \"asc\" };\n if (prev.direction === \"asc\") return { key, direction: \"desc\" };\n return null;\n });\n };\n\n // Get sort indicator\n const getSortIndicator = (key: string) => {\n if (sortConfig?.key !== key) return null;\n return sortConfig.direction === \"asc\" ? \" ↑\" : \" ↓\";\n };\n\n const { onItemClick } = useWidgetInteraction();\n\n return (\n <div\n className={`@container overflow-hidden ${paginationEnabled ? \"\" : \"overflow-y-auto\"} rounded-${borderRadius} ${borderWidthClasses[borderWidth]} ${borderWidth !== \"none\" ? borderColorClasses[borderColor] : \"\"} bg-${backgroundColor} bg-cover bg-center text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n <div\n className={`flex items-center justify-between p-${padding} ${innerBg} space-x-2`}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <h2\n className={`text-${titleFontSize === \"md\" ? \"base\" : titleFontSize} font-header font-bold text-${titleColor} min-w-0 truncate`}\n >\n {titleText}\n </h2>\n )}\n\n {/* Global Search */}\n {filterEnabled && (\n <Input\n type=\"text\"\n placeholder=\"Search all columns...\"\n value={globalFilter}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n handleGlobalFilterChange(e.target.value)\n }\n className={`w-full rounded-md border ${headerBorder} ${headerBg} ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}/40 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`}\n />\n )}\n </div>\n\n {/* Table */}\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr className={`${headerBg} ${headerBorder} border-y`}>\n {columns.map((col) => (\n <th\n key={col.key}\n className={`px-4 py-3 text-left text-sm font-semibold text-${headerTextColor} ${col.sortable && sortingEnabled ? \"cursor-pointer select-none hover:opacity-80\" : \"\"}`}\n {...(col.sortable && sortingEnabled\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n onClick: () => handleSort(col.key),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSort(col.key);\n }\n },\n }\n : {})}\n >\n <div className=\"flex flex-col gap-1\">\n <span>\n {col.label}\n {col.sortable &&\n sortingEnabled &&\n getSortIndicator(col.key)}\n </span>\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.length === 0 ? (\n <tr>\n <td colSpan={columns.length}>\n <div className=\"text-muted-foreground flex min-h-[200px] flex-col items-center justify-center gap-2\">\n <div className=\"text-4xl\">📋</div>\n <p className=\"text-sm\">No data available</p>\n <p className=\"text-muted-foreground/70 text-xs\">\n Connect a data source to display table data\n </p>\n </div>\n </td>\n </tr>\n ) : paginatedData.length === 0 ? (\n <tr>\n <td colSpan={columns.length}>\n <div className=\"py-8 text-center\">\n <p className=\"text-sm\">No results found</p>\n <p className=\"text-xs\">Try adjusting your search</p>\n </div>\n </td>\n </tr>\n ) : (\n <>\n {paginatedData.map((item, index) => (\n <tr\n key={item.id ?? index}\n className={`h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : \"\"} ${onItemClick ? \"cursor-pointer hover:opacity-80\" : \"\"}`}\n {...(onItemClick\n ? {\n tabIndex: 0,\n onClick: () => onItemClick(item),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onItemClick(item);\n }\n },\n }\n : {})}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n {col.render\n ? col.render(item[col.key], item)\n : String(item[col.key] ?? \"-\")}\n </td>\n ))}\n </tr>\n ))}\n {/* Empty rows to fill the last page for consistent pagination position */}\n {paginationEnabled &&\n paginatedData.length < pageSize &&\n paginatedData.length > 0 &&\n Array.from({ length: pageSize - paginatedData.length }).map(\n (_, index) => (\n <tr\n key={`empty-${index}`}\n className={`h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : \"\"}`}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n &nbsp;\n </td>\n ))}\n </tr>\n ),\n )}\n </>\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {paginationEnabled && totalPages > 1 && (\n <div\n className={`flex flex-col items-center justify-between gap-2 border-t ${innerBorder} p-${padding} @md:flex-row ${paginationBg} text-${textColor}`}\n >\n <p className=\"text-sm\">\n Showing {(currentPage - 1) * pageSize + 1}-\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n </p>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setCurrentPage((p) => Math.max(1, p - 1))}\n disabled={currentPage === 1}\n className={`rounded-md border border-${headerBackgroundColor}/60 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Previous\n </button>\n <span className=\"text-sm\">\n Page {currentPage} of {totalPages}\n </span>\n <button\n onClick={() => setCurrentPage((p) => Math.min(totalPages, p + 1))}\n disabled={currentPage === totalPages}\n className={`rounded-md border border-${headerBackgroundColor}/60 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const tableWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"TableWidget\",\n displayName: \"Table Widget\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"data\", \"columns\"],\n fields: [\n // Content Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the table\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the table\",\n defaultValue: \"Products\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n label: \"Title Font Size\",\n defaultValue: \"xl\",\n key: \"titleFontSize\",\n description: \"Font size for the widget title\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the table container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"alternatingColorEnabled\",\n label: \"Enable Alternating Colors\",\n type: \"boolean\",\n description: \"Enable alternating colors for table rows\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"headerBackgroundColor\",\n label: \"Header Background\",\n description: \"Background color for the table header\",\n defaultValue: \"muted\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for table content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"headerTextColor\",\n label: \"Header Text Color\",\n description: \"Text color for the table header\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the table container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the table container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderWidthField({\n key: \"borderWidth\",\n label: \"Border Width\",\n description: \"Border width for the widget\",\n defaultValue: \"none\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderColorField({\n key: \"borderColor\",\n label: \"Border Color\",\n description: \"Border color for the widget\",\n defaultValue: \"muted\",\n tab: \"styling\",\n group: \"Design\",\n }),\n\n // Behavior Tab - Features Group\n {\n key: \"filterEnabled\",\n label: \"Enable Filters\",\n type: \"boolean\",\n description: \"Show global search and column filters\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"sortingEnabled\",\n label: \"Enable Sorting\",\n type: \"boolean\",\n description: \"Allow sorting by clicking column headers\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"paginationEnabled\",\n label: \"Enable Pagination\",\n type: \"boolean\",\n description: \"Split data into pages\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"maxRowsPerPage\",\n label: \"Max Rows Per Page\",\n type: \"number\",\n description: \"Maximum number of rows to display per page\",\n min: 1,\n max: 50,\n step: 1,\n defaultValue: 5,\n tab: \"behavior\",\n group: \"Features\",\n requiresKeyToBeTrue: \"paginationEnabled\",\n },\n\n // Data Tab\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"Configure data source for the table\",\n tab: \"data\",\n group: \"Data Configuration\",\n },\n ],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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B;GACnB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF,oBAAoB;GAClB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF,oBAAoB;GAClB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EAGF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,KAAK;GACL,MAAM;GACN,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;EAGD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,OAAO;GACR;EACF;CACF"}
@@ -84,12 +84,12 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
84
84
  const isTransparentBg = backgroundColor === "transparent";
85
85
  const useTransparentInner = isImageBackground || isTransparentBg;
86
86
  const innerBg = useTransparentInner ? "bg-transparent" : `bg-${backgroundColor}`;
87
- const innerBgAlt = useTransparentInner ? "bg-black/5" : `bg-${backgroundColor}-400`;
87
+ const innerBgAlt = useTransparentInner ? "bg-black/5" : `bg-${backgroundColor}/40`;
88
88
  const transparentBorder = isTransparentBg ? "border-black/20" : "border-white/20";
89
- const innerBorder = useTransparentInner ? transparentBorder : `border-${backgroundColor}-600`;
90
- const headerBg = useTransparentInner ? "bg-black/10" : `bg-${headerBackgroundColor}-400`;
91
- const headerBorder = useTransparentInner ? transparentBorder : `border-${headerBackgroundColor}-600`;
92
- const paginationBg = useTransparentInner ? "bg-black/10" : `bg-${backgroundColor}-400`;
89
+ const innerBorder = useTransparentInner ? transparentBorder : `border-${backgroundColor}/60`;
90
+ const headerBg = useTransparentInner ? "bg-black/10" : `bg-${headerBackgroundColor}/40`;
91
+ const headerBorder = useTransparentInner ? transparentBorder : `border-${headerBackgroundColor}/60`;
92
+ const paginationBg = useTransparentInner ? "bg-black/10" : `bg-${backgroundColor}/40`;
93
93
  const [globalFilter, setGlobalFilter] = (0, react.useState)("");
94
94
  const [sortConfig, setSortConfig] = (0, react.useState)(null);
95
95
  const [currentPage, setCurrentPage] = (0, react.useState)(1);
@@ -174,7 +174,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
174
174
  placeholder: "Search all columns...",
175
175
  value: globalFilter,
176
176
  onChange: (e) => handleGlobalFilterChange(e.target.value),
177
- className: `w-full rounded-md border ${headerBorder} ${headerBg} ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}-400 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`
177
+ className: `w-full rounded-md border ${headerBorder} ${headerBg} ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}/40 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`
178
178
  })]
179
179
  }),
180
180
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -277,7 +277,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
277
277
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
278
278
  onClick: () => setCurrentPage((p) => Math.max(1, p - 1)),
279
279
  disabled: currentPage === 1,
280
- className: `rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,
280
+ className: `rounded-md border border-${headerBackgroundColor}/60 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,
281
281
  children: "Previous"
282
282
  }),
283
283
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
@@ -292,7 +292,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
292
292
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
293
293
  onClick: () => setCurrentPage((p) => Math.min(totalPages, p + 1)),
294
294
  disabled: currentPage === totalPages,
295
- className: `rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,
295
+ className: `rounded-md border border-${headerBackgroundColor}/60 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,
296
296
  children: "Next"
297
297
  })
298
298
  ]
@@ -502,4 +502,4 @@ Object.defineProperty(exports, "tableWidgetPropertySchema", {
502
502
  }
503
503
  });
504
504
 
505
- //# sourceMappingURL=TableWidget-FDbnEYZb.cjs.map
505
+ //# sourceMappingURL=TableWidget-DUnz9hrD.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableWidget-DUnz9hrD.cjs","names":["MediaRenderer","getMediaPropsFromShareable","useWidgetInteraction","borderWidthClasses","borderColorClasses","Input","getFontSizeField","getColorField","getPaddingField","getBorderRadiusField","getBorderWidthField","getBorderColorField"],"sources":["../../widgets/src/widgets/TableWidget.tsx"],"sourcesContent":["import { useState, useMemo, type ComponentProps } from \"react\";\nimport type React from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n BorderWidthOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/portal-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport {\n getBorderRadiusField,\n getBorderWidthField,\n getBorderColorField,\n borderWidthClasses,\n borderColorClasses,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport { Input } from \"@fluid-app/ui-primitives\";\nimport {\n MediaRenderer,\n getMediaPropsFromShareable,\n} from \"../components/MediaRenderer\";\nimport { type ShareableItem } from \"@fluid-app/portal-core/types\";\nimport { useWidgetInteraction } from \"../contexts/WidgetInteractionContext\";\n\n/** Plain column definition provided by data sources (no render functions) */\nexport type TableColumnDef = {\n key: string;\n label: string;\n sortable: boolean;\n};\n\n// Internal column definition (includes render function)\ntype ColumnDef = TableColumnDef & {\n render?: (value: unknown, item: ShareableItem) => React.ReactNode;\n};\n\nconst DEFAULT_DATA: ShareableItem[] = [];\n\n// ---------------------------------------------------------------------------\n// Column cell renderers\n// ---------------------------------------------------------------------------\n\nfunction ImageCellRenderer(_value: unknown, item: ShareableItem) {\n return (\n <div className=\"h-10 w-10 rounded object-cover\">\n <MediaRenderer {...getMediaPropsFromShareable(item)} />\n </div>\n );\n}\n\nfunction PriceCellRenderer(_value: unknown, item: ShareableItem) {\n return ((item.display_price as string) ?? item.price) || \"-\";\n}\n\nfunction StatusCellRenderer(value: unknown) {\n const status = String(value || \"unknown\").toLowerCase();\n const statusStyles: Record<string, string> = {\n active: \"bg-primary text-primary-foreground\",\n paid: \"bg-primary text-primary-foreground\",\n inactive: \"bg-secondary text-secondary-foreground\",\n paused: \"bg-secondary text-secondary-foreground\",\n unknown: \"bg-muted text-muted-foreground\",\n unpaid: \"bg-destructive text-destructive-foreground\",\n refunded: \"bg-muted text-muted-foreground\",\n cancelled: \"bg-destructive text-destructive-foreground\",\n };\n return (\n <span\n className={`inline-flex rounded-full px-2 py-1 text-xs font-medium ${statusStyles[status] || \"bg-muted text-foreground\"}`}\n >\n {String(value || \"Unknown\")}\n </span>\n );\n}\n\n/** Map of column keys to custom cell renderers */\nconst CELL_RENDERERS: Record<\n string,\n (value: unknown, item: ShareableItem) => React.ReactNode\n> = {\n imageUrl: ImageCellRenderer,\n price: PriceCellRenderer,\n display_price: PriceCellRenderer,\n status: StatusCellRenderer,\n};\n\n/** Resolve plain column definitions from a data source into full ColumnDefs with renderers */\nfunction resolveColumns(columns: TableColumnDef[]): ColumnDef[] {\n return columns.map((col) => {\n const render = CELL_RENDERERS[col.key];\n return render ? { ...col, render } : { ...col };\n });\n}\n\n// Default columns for product data\nconst defaultColumns: ColumnDef[] = [\n {\n key: \"imageUrl\",\n label: \"Image\",\n sortable: false,\n render: ImageCellRenderer,\n },\n {\n key: \"title\",\n label: \"Title\",\n sortable: true,\n },\n {\n key: \"price\",\n label: \"Price\",\n sortable: true,\n render: PriceCellRenderer,\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: StatusCellRenderer,\n },\n];\n\ntype TableWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n alternatingColorEnabled?: boolean;\n textColor?: ColorOptions;\n headerBackgroundColor?: ColorOptions;\n headerTextColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n borderWidth?: BorderWidthOptions;\n borderColor?: ColorOptions;\n\n // Data\n data?: ShareableItem[];\n /** Column definitions from a data source (plain data, renderers resolved internally) */\n columns?: TableColumnDef[];\n\n // Features\n filterEnabled?: boolean;\n sortingEnabled?: boolean;\n paginationEnabled?: boolean;\n maxRowsPerPage?: number;\n};\n\nexport function TableWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Products\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n alternatingColorEnabled = true,\n textColor = \"foreground\",\n headerBackgroundColor = \"muted\",\n headerTextColor = \"foreground\",\n padding = 4,\n borderRadius = \"md\",\n borderWidth = \"none\",\n borderColor = \"muted\",\n\n // Data\n data = DEFAULT_DATA,\n columns: columnsProp,\n\n // Feature defaults\n filterEnabled = true,\n sortingEnabled = true,\n paginationEnabled = true,\n maxRowsPerPage = 5,\n\n className,\n ...props\n}: TableWidgetProps): React.JSX.Element {\n const backgroundColor = background.color || \"background\";\n const isImageBackground = background.type === \"image\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n isImageBackground\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n const pageSize = maxRowsPerPage;\n\n // When using an image or transparent background, inner elements should be\n // transparent so the image/page shows through. Otherwise use the configured colors.\n const isTransparentBg = backgroundColor === \"transparent\";\n const useTransparentInner = isImageBackground || isTransparentBg;\n const innerBg = useTransparentInner\n ? \"bg-transparent\"\n : `bg-${backgroundColor}`;\n const innerBgAlt = useTransparentInner\n ? \"bg-black/5\"\n : `bg-${backgroundColor}/40`;\n const transparentBorder = isTransparentBg\n ? \"border-black/20\"\n : \"border-white/20\";\n const innerBorder = useTransparentInner\n ? transparentBorder\n : `border-${backgroundColor}/60`;\n const headerBg = useTransparentInner\n ? \"bg-black/10\"\n : `bg-${headerBackgroundColor}/40`;\n const headerBorder = useTransparentInner\n ? transparentBorder\n : `border-${headerBackgroundColor}/60`;\n const paginationBg = useTransparentInner\n ? \"bg-black/10\"\n : `bg-${backgroundColor}/40`;\n\n // State for filtering, sorting, and pagination\n const [globalFilter, setGlobalFilter] = useState(\"\");\n const [sortConfig, setSortConfig] = useState<{\n key: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n const [currentPage, setCurrentPage] = useState(1);\n\n // Only use columns from the data source if they look like valid column defs\n // (have a `key` string). When transformers return a plain array (e.g. toShareableProps),\n // use-widget-data maps the same array to ALL targetProps, so `columns` may\n // receive the data rows instead of column definitions.\n const firstCol = columnsProp?.[0];\n const validColumnsProp =\n firstCol && typeof firstCol.key === \"string\" && firstCol.key !== \"\"\n ? columnsProp\n : undefined;\n\n const columns = useMemo(\n () =>\n validColumnsProp ? resolveColumns(validColumnsProp) : defaultColumns,\n [validColumnsProp],\n );\n\n // Filter data\n const filteredData = useMemo(() => {\n let result = [...data];\n\n if (globalFilter) {\n const lowerFilter = globalFilter.toLowerCase();\n result = result.filter((item) =>\n columns.some((col) => {\n const value = item[col.key];\n return String(value ?? \"\")\n .toLowerCase()\n .includes(lowerFilter);\n }),\n );\n }\n\n return result;\n }, [data, globalFilter, columns]);\n\n // Sort data\n const sortedData = useMemo(() => {\n if (!sortConfig) return filteredData;\n\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n\n // Handle null/undefined\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return sortConfig.direction === \"asc\" ? 1 : -1;\n if (bValue == null) return sortConfig.direction === \"asc\" ? -1 : 1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortConfig.direction === \"asc\" ? comparison : -comparison;\n });\n }, [filteredData, sortConfig]);\n\n // Paginate data\n const paginatedData = useMemo(() => {\n if (!paginationEnabled) return sortedData;\n\n const startIndex = (currentPage - 1) * pageSize;\n return sortedData.slice(startIndex, startIndex + pageSize);\n }, [sortedData, currentPage, pageSize, paginationEnabled]);\n\n const totalPages = Math.ceil(sortedData.length / pageSize);\n\n // Reset to page 1 when filters change\n const handleGlobalFilterChange = (value: string) => {\n setGlobalFilter(value);\n setCurrentPage(1);\n };\n\n // Handle sort\n const handleSort = (key: string) => {\n if (!sortingEnabled) return;\n\n setSortConfig((prev) => {\n if (prev?.key !== key) return { key, direction: \"asc\" };\n if (prev.direction === \"asc\") return { key, direction: \"desc\" };\n return null;\n });\n };\n\n // Get sort indicator\n const getSortIndicator = (key: string) => {\n if (sortConfig?.key !== key) return null;\n return sortConfig.direction === \"asc\" ? \" ↑\" : \" ↓\";\n };\n\n const { onItemClick } = useWidgetInteraction();\n\n return (\n <div\n className={`@container overflow-hidden ${paginationEnabled ? \"\" : \"overflow-y-auto\"} rounded-${borderRadius} ${borderWidthClasses[borderWidth]} ${borderWidth !== \"none\" ? borderColorClasses[borderColor] : \"\"} bg-${backgroundColor} bg-cover bg-center text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n <div\n className={`flex items-center justify-between p-${padding} ${innerBg} space-x-2`}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <h2\n className={`text-${titleFontSize === \"md\" ? \"base\" : titleFontSize} font-header font-bold text-${titleColor} min-w-0 truncate`}\n >\n {titleText}\n </h2>\n )}\n\n {/* Global Search */}\n {filterEnabled && (\n <Input\n type=\"text\"\n placeholder=\"Search all columns...\"\n value={globalFilter}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n handleGlobalFilterChange(e.target.value)\n }\n className={`w-full rounded-md border ${headerBorder} ${headerBg} ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}/40 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`}\n />\n )}\n </div>\n\n {/* Table */}\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr className={`${headerBg} ${headerBorder} border-y`}>\n {columns.map((col) => (\n <th\n key={col.key}\n className={`px-4 py-3 text-left text-sm font-semibold text-${headerTextColor} ${col.sortable && sortingEnabled ? \"cursor-pointer select-none hover:opacity-80\" : \"\"}`}\n {...(col.sortable && sortingEnabled\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n onClick: () => handleSort(col.key),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSort(col.key);\n }\n },\n }\n : {})}\n >\n <div className=\"flex flex-col gap-1\">\n <span>\n {col.label}\n {col.sortable &&\n sortingEnabled &&\n getSortIndicator(col.key)}\n </span>\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.length === 0 ? (\n <tr>\n <td colSpan={columns.length}>\n <div className=\"text-muted-foreground flex min-h-[200px] flex-col items-center justify-center gap-2\">\n <div className=\"text-4xl\">📋</div>\n <p className=\"text-sm\">No data available</p>\n <p className=\"text-muted-foreground/70 text-xs\">\n Connect a data source to display table data\n </p>\n </div>\n </td>\n </tr>\n ) : paginatedData.length === 0 ? (\n <tr>\n <td colSpan={columns.length}>\n <div className=\"py-8 text-center\">\n <p className=\"text-sm\">No results found</p>\n <p className=\"text-xs\">Try adjusting your search</p>\n </div>\n </td>\n </tr>\n ) : (\n <>\n {paginatedData.map((item, index) => (\n <tr\n key={item.id ?? index}\n className={`h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : \"\"} ${onItemClick ? \"cursor-pointer hover:opacity-80\" : \"\"}`}\n {...(onItemClick\n ? {\n tabIndex: 0,\n onClick: () => onItemClick(item),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onItemClick(item);\n }\n },\n }\n : {})}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n {col.render\n ? col.render(item[col.key], item)\n : String(item[col.key] ?? \"-\")}\n </td>\n ))}\n </tr>\n ))}\n {/* Empty rows to fill the last page for consistent pagination position */}\n {paginationEnabled &&\n paginatedData.length < pageSize &&\n paginatedData.length > 0 &&\n Array.from({ length: pageSize - paginatedData.length }).map(\n (_, index) => (\n <tr\n key={`empty-${index}`}\n className={`h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : \"\"}`}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n &nbsp;\n </td>\n ))}\n </tr>\n ),\n )}\n </>\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination */}\n {paginationEnabled && totalPages > 1 && (\n <div\n className={`flex flex-col items-center justify-between gap-2 border-t ${innerBorder} p-${padding} @md:flex-row ${paginationBg} text-${textColor}`}\n >\n <p className=\"text-sm\">\n Showing {(currentPage - 1) * pageSize + 1}-\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n </p>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setCurrentPage((p) => Math.max(1, p - 1))}\n disabled={currentPage === 1}\n className={`rounded-md border border-${headerBackgroundColor}/60 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Previous\n </button>\n <span className=\"text-sm\">\n Page {currentPage} of {totalPages}\n </span>\n <button\n onClick={() => setCurrentPage((p) => Math.min(totalPages, p + 1))}\n disabled={currentPage === totalPages}\n className={`rounded-md border border-${headerBackgroundColor}/60 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const tableWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"TableWidget\",\n displayName: \"Table Widget\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"data\", \"columns\"],\n fields: [\n // Content Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the table\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the table\",\n defaultValue: \"Products\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n label: \"Title Font Size\",\n defaultValue: \"xl\",\n key: \"titleFontSize\",\n description: \"Font size for the widget title\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the table container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"alternatingColorEnabled\",\n label: \"Enable Alternating Colors\",\n type: \"boolean\",\n description: \"Enable alternating colors for table rows\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"headerBackgroundColor\",\n label: \"Header Background\",\n description: \"Background color for the table header\",\n defaultValue: \"muted\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for table content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"headerTextColor\",\n label: \"Header Text Color\",\n description: \"Text color for the table header\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the table container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the table container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderWidthField({\n key: \"borderWidth\",\n label: \"Border Width\",\n description: \"Border width for the widget\",\n defaultValue: \"none\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderColorField({\n key: \"borderColor\",\n label: \"Border Color\",\n description: \"Border color for the widget\",\n defaultValue: \"muted\",\n tab: \"styling\",\n group: \"Design\",\n }),\n\n // Behavior Tab - Features Group\n {\n key: \"filterEnabled\",\n label: \"Enable Filters\",\n type: \"boolean\",\n description: \"Show global search and column filters\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"sortingEnabled\",\n label: \"Enable Sorting\",\n type: \"boolean\",\n description: \"Allow sorting by clicking column headers\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"paginationEnabled\",\n label: \"Enable Pagination\",\n type: \"boolean\",\n description: \"Split data into pages\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"maxRowsPerPage\",\n label: \"Max Rows Per Page\",\n type: \"number\",\n description: \"Maximum number of rows to display per page\",\n min: 1,\n max: 50,\n step: 1,\n defaultValue: 5,\n tab: \"behavior\",\n group: \"Features\",\n requiresKeyToBeTrue: \"paginationEnabled\",\n },\n\n // Data Tab\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"Configure data source for the table\",\n tab: \"data\",\n group: \"Data Configuration\",\n },\n ],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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O;GACP,cAAc;GACd,KAAK;GACL,aAAa;GACb,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB,CAAC;EACFC,mBAAAA,cAAc;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB,CAAC;EAGF;GACE,MAAM;GACN,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACDA,mBAAAA,cAAc;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACFA,mBAAAA,cAAc;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACFA,mBAAAA,cAAc;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF;GACE,KAAK;GACL,MAAM;GACN,OAAO;GACP,KAAK;GACL,OAAO;GACR;EACDC,mBAAAA,gBAAgB;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACFC,mBAAAA,qBAAqB;GACnB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACFC,mBAAAA,oBAAoB;GAClB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACFC,mBAAAA,oBAAoB;GAClB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EAGF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,KAAK;GACL,MAAM;GACN,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;EAGD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,OAAO;GACR;EACF;CACF"}
package/dist/index.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-9hOWP6kD.cjs");
3
- const require_FluidProvider = require("./FluidProvider-D177ez3m.cjs");
3
+ const require_FluidProvider = require("./FluidProvider-BRkRo8Wl.cjs");
4
4
  const require_ScreenRenderer = require("./ScreenRenderer-DfeRRgBO.cjs");
5
5
  require("./account-api-context-DZP9IiGg.cjs");
6
6
  require("./store-api-context-D1gZn22Z.cjs");
7
7
  require("./mysite-api-context-CilZcDS4.cjs");
8
- require("./countries-api-context-G-NW4BoH.cjs");
8
+ const require_src = require("./src-BNcNh8fM.cjs");
9
9
  const require_PortalTenantClientProvider = require("./PortalTenantClientProvider-CVv-4rQ9.cjs");
10
10
  require("./registry-context-RWj2xJlC.cjs");
11
11
  require("./WidgetInteractionContext-Bd1hEEV2.cjs");
@@ -20,7 +20,7 @@ const require_BulletListWidget = require("./BulletListWidget-CouwHMJt.cjs");
20
20
  const require_CalendarWidget = require("./CalendarWidget-BtKzQFeO.cjs");
21
21
  const require_CardWidget = require("./CardWidget-DVi0NVhb.cjs");
22
22
  require("./purify.es-BQcWWtgQ.cjs");
23
- const require_src = require("./src-D57IFKXU.cjs");
23
+ const require_src$1 = require("./src-D57IFKXU.cjs");
24
24
  require("./scroll-arrows-CzWtSS8l.cjs");
25
25
  require("./MediaRenderer-CfgWd0cC.cjs");
26
26
  const require_CarouselWidget = require("./CarouselWidget-DLqTBIrf.cjs");
@@ -33,11 +33,11 @@ const require_ListWidget = require("./ListWidget-Da-YzDAs.cjs");
33
33
  const require_MySiteWidget = require("./MySiteWidget-ISV__1ng.cjs");
34
34
  const require_NestedWidget = require("./NestedWidget-BBOHOg12.cjs");
35
35
  const require_PointsWidget = require("./PointsWidget-h0jqVXWf.cjs");
36
- const require_QuickShareWidget = require("./QuickShareWidget-0GD4KWAr.cjs");
36
+ const require_QuickShareWidget = require("./QuickShareWidget-C_p3tPs5.cjs");
37
37
  const require_RecentActivityWidget = require("./RecentActivityWidget-Ql-mGLEf.cjs");
38
38
  const require_SeparatorWidget = require("./SeparatorWidget-_37ala5k.cjs");
39
- const require_SpacerWidget = require("./SpacerWidget-CLFbkgoz.cjs");
40
- const require_TableWidget = require("./TableWidget-FDbnEYZb.cjs");
39
+ const require_SpacerWidget = require("./SpacerWidget-D9lOLPr5.cjs");
40
+ const require_TableWidget = require("./TableWidget-DUnz9hrD.cjs");
41
41
  const require_ToDoWidget = require("./ToDoWidget-B2qEGt7v.cjs");
42
42
  const require_VideoWidget = require("./VideoWidget-sEVQcp9o.cjs");
43
43
  const require_ScreenHeaderContext = require("./ScreenHeaderContext-BXgWydjB.cjs");
@@ -45,25 +45,25 @@ const require_use_account = require("./use-account-C5QI6NSe.cjs");
45
45
  const require_use_store = require("./use-store-BLcehk1A.cjs");
46
46
  const require_CustomersScreen = require("./CustomersScreen-Rf5uucRx.cjs");
47
47
  const require_AppNavigationContext = require("./AppNavigationContext-CbK8uCjS.cjs");
48
- const require_MessagingScreen = require("./MessagingScreen-gKidMcrr.cjs");
49
- const require_ProfileScreen = require("./ProfileScreen-DJZoMzE6.cjs");
48
+ const require_MessagingScreen = require("./MessagingScreen-DtDbS3VZ.cjs");
49
+ const require_ProfileScreen = require("./ProfileScreen-D5OxmzhM.cjs");
50
50
  require("./dist-CN_rfvBt.cjs");
51
51
  require("./es-C37CagK2.cjs");
52
- const require_ContactsScreen = require("./ContactsScreen-DvohvoOE.cjs");
52
+ const require_ContactsScreen = require("./ContactsScreen-BQ6pvYOa.cjs");
53
53
  require("./SearchSort-CUDMZIkf.cjs");
54
54
  require("./InfiniteScrollSentinel-CU801UfD.cjs");
55
55
  require("./dist-bL3uiYn3.cjs");
56
56
  require("./order-status-badge-Crk9UGpl.cjs");
57
57
  const require_OrdersScreen = require("./OrdersScreen-DzCvZ6AW.cjs");
58
58
  const require_SubscriptionsScreen = require("./SubscriptionsScreen-Dn6LldL3.cjs");
59
- require("./PortalContentApiProvider-CPnqELEX.cjs");
59
+ require("./PortalContentApiProvider-BDbrZCyI.cjs");
60
60
  require("./dist-Ck1Xpuzh.cjs");
61
61
  require("./PortalProductsApiProvider-o1axGadc.cjs");
62
- const require_ProductsScreen = require("./ProductsScreen-CQ5-A8AL.cjs");
62
+ const require_ProductsScreen = require("./ProductsScreen-68jB202M.cjs");
63
63
  require("./use-mysite-portal-CJBowMpK.cjs");
64
64
  const require_MySiteScreen = require("./MySiteScreen-yiG3VMjV.cjs");
65
- const require_ShareablesScreen = require("./ShareablesScreen-CmZ5CX99.cjs");
66
- const require_ShopScreen = require("./ShopScreen-DKlDKNom.cjs");
65
+ const require_ShareablesScreen = require("./ShareablesScreen-CCqADUXE.cjs");
66
+ const require_ShopScreen = require("./ShopScreen-DeLp93hN.cjs");
67
67
  require("./UpgradeScreen-CaYCxSix.cjs");
68
68
  require("./AppDownloadScreen-iSpATQsi.cjs");
69
69
  let react = require("react");
@@ -1435,7 +1435,7 @@ function transformManifestToRepAppData(response) {
1435
1435
  const nav = rawProfile?.navigation;
1436
1436
  const mobileNav = rawProfile?.mobile_navigation;
1437
1437
  const mobileNavigationItems = (mobileNav?.navigation_items ?? []).map(toNavigationItem);
1438
- const activeThemeId = require_FluidProvider.getActiveThemeId(rawThemes);
1438
+ const activeThemeId = require_src.getActiveThemeId(rawThemes);
1439
1439
  const definitionId = manifest.definition_id ?? 0;
1440
1440
  return {
1441
1441
  definition_id: definitionId,
@@ -1444,7 +1444,7 @@ function transformManifestToRepAppData(response) {
1444
1444
  profile: {
1445
1445
  name: rawProfile?.name ?? "Default",
1446
1446
  definition_id: rawProfile?.definition_id ?? definitionId,
1447
- themes: require_FluidProvider.transformThemes(rawThemes),
1447
+ themes: require_src.transformThemes(rawThemes),
1448
1448
  ...activeThemeId !== void 0 ? { activeThemeId } : {},
1449
1449
  navigation: {
1450
1450
  definition_id: nav?.definition_id ?? definitionId,
@@ -1583,12 +1583,12 @@ function CollapsibleNavItem({ item, isActive, currentSlug, onNavigate }) {
1583
1583
  (0, react.useEffect)(() => {
1584
1584
  if (isActive) setOpen(true);
1585
1585
  }, [isActive]);
1586
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Collapsible, {
1586
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Collapsible, {
1587
1587
  open,
1588
1588
  onOpenChange: setOpen,
1589
1589
  asChild: true,
1590
1590
  className: "group/collapsible",
1591
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(SidebarMenuItem, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.CollapsibleTrigger, {
1591
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(SidebarMenuItem, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.CollapsibleTrigger, {
1592
1592
  asChild: true,
1593
1593
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(SidebarMenuButton, { children: [
1594
1594
  item.icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RepIcon, { name: item.icon }),
@@ -1598,7 +1598,7 @@ function CollapsibleNavItem({ item, isActive, currentSlug, onNavigate }) {
1598
1598
  }),
1599
1599
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronRight, { className: "ml-auto size-3 transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" })
1600
1600
  ] })
1601
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.CollapsibleContent, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SidebarMenuSub, { children: item.children.map((child) => {
1601
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.CollapsibleContent, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SidebarMenuSub, { children: item.children.map((child) => {
1602
1602
  const childSlug = normalizeSlug(child.slug);
1603
1603
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(SidebarMenuButton, {
1604
1604
  isActive: normalizeSlug(currentSlug) === childSlug,
@@ -1682,19 +1682,19 @@ function QuickLinksDropdown({ onNavigate }) {
1682
1682
  const all = getSystemNavigationBySection();
1683
1683
  return isCustomer ? filterRepOnlySections(all) : all;
1684
1684
  }, [isCustomer]);
1685
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Popover, {
1685
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Popover, {
1686
1686
  open,
1687
1687
  onOpenChange: setOpen,
1688
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.PopoverTrigger, {
1688
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.PopoverTrigger, {
1689
1689
  asChild: true,
1690
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Button, {
1690
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Button, {
1691
1691
  variant: "ghost",
1692
1692
  size: "sm",
1693
1693
  className: "text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shrink-0",
1694
1694
  "aria-label": "Quick links",
1695
1695
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.LayoutGrid, { className: "h-4 w-4" })
1696
1696
  })
1697
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.PopoverContent, {
1697
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.PopoverContent, {
1698
1698
  align: "end",
1699
1699
  className: "w-175 max-w-[90vw] overflow-hidden rounded-lg p-0 shadow-lg",
1700
1700
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -1714,7 +1714,7 @@ function QuickLinksDropdown({ onNavigate }) {
1714
1714
  children: sectionName
1715
1715
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1716
1716
  className: "grid grid-cols-4 gap-2",
1717
- children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
1717
+ children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
1718
1718
  variant: "ghost",
1719
1719
  className: "text-sidebar-foreground hover:bg-sidebar-primary hover:text-sidebar-primary-foreground h-auto justify-start gap-2 rounded-lg px-3 py-2 text-sm",
1720
1720
  onClick: () => {
@@ -1752,7 +1752,7 @@ function SdkMobileQuickLinksGrid({ onNavigate }) {
1752
1752
  children: sectionName
1753
1753
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1754
1754
  className: "grid grid-cols-3 gap-2",
1755
- children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Button, {
1755
+ children: items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src$1.Button, {
1756
1756
  variant: "ghost",
1757
1757
  className: "text-sidebar-foreground hover:bg-sidebar-primary hover:text-sidebar-primary-foreground h-auto flex-col gap-1 rounded-lg p-2",
1758
1758
  onClick: () => {
@@ -1953,7 +1953,7 @@ function CompanyItem({ logo_url, icon_url, name, compact = false }) {
1953
1953
  size: 32
1954
1954
  })
1955
1955
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1956
- className: require_src.cn("grid text-left text-sm leading-tight", compact ? "flex-shrink-0" : "flex-1"),
1956
+ className: require_src$1.cn("grid text-left text-sm leading-tight", compact ? "flex-shrink-0" : "flex-1"),
1957
1957
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
1958
1958
  className: "truncate font-semibold",
1959
1959
  children: name
@@ -1966,7 +1966,7 @@ function CompanySwitcherSkeleton({ show }) {
1966
1966
  if (!show) return null;
1967
1967
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
1968
1968
  className: "flex items-center gap-4 p-2",
1969
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "size-5 shrink-0 rounded-sm bg-current" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-36 bg-current" })]
1969
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "size-5 shrink-0 rounded-sm bg-current" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Skeleton, { className: "h-4 w-36 bg-current" })]
1970
1970
  });
1971
1971
  }
1972
1972
  //#endregion
@@ -2134,15 +2134,15 @@ function AccountManageLayout({ children }) {
2134
2134
  }
2135
2135
  //#endregion
2136
2136
  //#region src/shell/system-screen-map.ts
2137
- const ProfileScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProfileScreen-CGS7YkcT.cjs")).then((m) => ({ default: m.ProfileScreen })));
2137
+ const ProfileScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProfileScreen-BMNq0NEB.cjs")).then((m) => ({ default: m.ProfileScreen })));
2138
2138
  const OrdersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./OrdersScreen-NIJGMwfQ.cjs")).then((m) => ({ default: m.OrdersScreen })));
2139
2139
  const SubscriptionsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./SubscriptionsScreen-Bt_YtoA3.cjs")).then((m) => ({ default: m.SubscriptionsScreen })));
2140
- const MessagingScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MessagingScreen-Ysi48svi.cjs")).then((m) => ({ default: m.MessagingScreen })));
2141
- const ContactsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ContactsScreen-Cheiwaxn.cjs")).then((m) => ({ default: m.ContactsScreen })));
2142
- const ShopScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShopScreen-R9zk7d5d.cjs")).then((m) => ({ default: m.ShopScreen })));
2140
+ const MessagingScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MessagingScreen-DN2eQRxF.cjs")).then((m) => ({ default: m.MessagingScreen })));
2141
+ const ContactsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ContactsScreen-Bw2GcYtk.cjs")).then((m) => ({ default: m.ContactsScreen })));
2142
+ const ShopScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShopScreen-BzyBZ24D.cjs")).then((m) => ({ default: m.ShopScreen })));
2143
2143
  const CustomersScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./CustomersScreen-Rf5uucRx.cjs")).then((n) => n.CustomersScreen_exports).then((m) => ({ default: m.CustomersScreen })));
2144
- const ProductsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProductsScreen-BnwMOZ4-.cjs")).then((m) => ({ default: m.ProductsScreen })));
2145
- const ShareablesScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShareablesScreen-DujtMoAi.cjs")).then((m) => ({ default: m.ShareablesScreen })));
2144
+ const ProductsScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ProductsScreen-Bq0f4pQL.cjs")).then((m) => ({ default: m.ProductsScreen })));
2145
+ const ShareablesScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./ShareablesScreen-BYP65ZnU.cjs")).then((m) => ({ default: m.ShareablesScreen })));
2146
2146
  const MySiteScreen$1 = (0, react.lazy)(() => Promise.resolve().then(() => require("./MySiteScreen-CqwsO0Pz.cjs")).then((m) => ({ default: m.MySiteScreen })));
2147
2147
  const UpgradeScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./UpgradeScreen-DeXrotSh.cjs")).then((m) => ({ default: m.UpgradeScreen })));
2148
2148
  const AppDownloadScreen = (0, react.lazy)(() => Promise.resolve().then(() => require("./AppDownloadScreen-iSpATQsi.cjs")).then((n) => n.AppDownloadScreen_exports).then((m) => ({ default: m.AppDownloadScreen })));
@@ -2409,13 +2409,13 @@ function AppShell({ appData: appDataProp, navigation: navigationProp, customPage
2409
2409
  }, [appData?.profile?.themes, appData?.profile?.activeThemeId]);
2410
2410
  const resolvedTheme = (0, react.useMemo)(() => {
2411
2411
  if (!activeTheme) return void 0;
2412
- return require_FluidProvider.resolveTheme(activeTheme);
2412
+ return require_src.resolveTheme(activeTheme);
2413
2413
  }, [activeTheme]);
2414
2414
  (0, react.useEffect)(() => {
2415
2415
  if (!resolvedTheme) return;
2416
- require_FluidProvider.applyTheme(resolvedTheme);
2416
+ require_src.applyTheme(resolvedTheme);
2417
2417
  return () => {
2418
- require_FluidProvider.removeAllThemes();
2418
+ require_src.removeAllThemes();
2419
2419
  };
2420
2420
  }, [resolvedTheme]);
2421
2421
  (0, react.useEffect)(() => {
@@ -2585,7 +2585,7 @@ function AppShell({ appData: appDataProp, navigation: navigationProp, customPage
2585
2585
  }),
2586
2586
  children: content
2587
2587
  })
2588
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Toaster, {})]
2588
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src$1.Toaster, {})]
2589
2589
  })
2590
2590
  })
2591
2591
  });
@@ -3629,16 +3629,16 @@ zod.z.object({
3629
3629
  //#endregion
3630
3630
  //#region src/screens/index.ts
3631
3631
  const screenPropertySchemas = {
3632
- ProfileScreen: () => Promise.resolve().then(() => require("./ProfileScreen-CGS7YkcT.cjs")).then((m) => m.profileScreenPropertySchema),
3633
- MessagingScreen: () => Promise.resolve().then(() => require("./MessagingScreen-Ysi48svi.cjs")).then((m) => m.messagingScreenPropertySchema),
3634
- ContactsScreen: () => Promise.resolve().then(() => require("./ContactsScreen-Cheiwaxn.cjs")).then((m) => m.contactsScreenPropertySchema),
3632
+ ProfileScreen: () => Promise.resolve().then(() => require("./ProfileScreen-BMNq0NEB.cjs")).then((m) => m.profileScreenPropertySchema),
3633
+ MessagingScreen: () => Promise.resolve().then(() => require("./MessagingScreen-DN2eQRxF.cjs")).then((m) => m.messagingScreenPropertySchema),
3634
+ ContactsScreen: () => Promise.resolve().then(() => require("./ContactsScreen-Bw2GcYtk.cjs")).then((m) => m.contactsScreenPropertySchema),
3635
3635
  OrdersScreen: () => Promise.resolve().then(() => require("./OrdersScreen-NIJGMwfQ.cjs")).then((m) => m.ordersScreenPropertySchema),
3636
3636
  SubscriptionsScreen: () => Promise.resolve().then(() => require("./SubscriptionsScreen-Bt_YtoA3.cjs")).then((m) => m.subscriptionsScreenPropertySchema),
3637
3637
  CustomersScreen: () => Promise.resolve().then(() => require("./CustomersScreen-Rf5uucRx.cjs")).then((n) => n.CustomersScreen_exports).then((m) => m.customersScreenPropertySchema),
3638
- ProductsScreen: () => Promise.resolve().then(() => require("./ProductsScreen-BnwMOZ4-.cjs")).then((m) => m.productsScreenPropertySchema),
3638
+ ProductsScreen: () => Promise.resolve().then(() => require("./ProductsScreen-Bq0f4pQL.cjs")).then((m) => m.productsScreenPropertySchema),
3639
3639
  MySiteScreen: () => Promise.resolve().then(() => require("./MySiteScreen-CqwsO0Pz.cjs")).then((m) => m.mySiteScreenPropertySchema),
3640
- ShareablesScreen: () => Promise.resolve().then(() => require("./ShareablesScreen-DujtMoAi.cjs")).then((m) => m.shareablesScreenPropertySchema),
3641
- ShopScreen: () => Promise.resolve().then(() => require("./ShopScreen-R9zk7d5d.cjs")).then((m) => m.shopScreenPropertySchema),
3640
+ ShareablesScreen: () => Promise.resolve().then(() => require("./ShareablesScreen-BYP65ZnU.cjs")).then((m) => m.shareablesScreenPropertySchema),
3641
+ ShopScreen: () => Promise.resolve().then(() => require("./ShopScreen-BzyBZ24D.cjs")).then((m) => m.shopScreenPropertySchema),
3642
3642
  UpgradeScreen: () => Promise.resolve().then(() => require("./UpgradeScreen-DeXrotSh.cjs")).then((m) => m.upgradeScreenPropertySchema),
3643
3643
  AppDownloadScreen: () => Promise.resolve().then(() => require("./AppDownloadScreen-iSpATQsi.cjs")).then((n) => n.AppDownloadScreen_exports).then((m) => m.appDownloadScreenPropertySchema)
3644
3644
  };
@@ -3980,17 +3980,17 @@ exports.ChartWidget = require_ChartWidget.ChartWidget;
3980
3980
  exports.ContactsScreen = require_ContactsScreen.ContactsScreen;
3981
3981
  exports.ContainerWidget = require_ContainerWidget.ContainerWidget;
3982
3982
  exports.CustomersScreen = require_CustomersScreen.CustomersScreen;
3983
- exports.DEFAULT_COLORS = require_FluidProvider.DEFAULT_COLORS;
3984
- exports.DEFAULT_FONT_FAMILIES = require_FluidProvider.DEFAULT_FONT_FAMILIES;
3985
- exports.DEFAULT_FONT_SIZES = require_FluidProvider.DEFAULT_FONT_SIZES;
3986
- exports.DEFAULT_RADII = require_FluidProvider.DEFAULT_RADII;
3983
+ exports.DEFAULT_COLORS = require_src.DEFAULT_COLORS;
3984
+ exports.DEFAULT_FONT_FAMILIES = require_src.DEFAULT_FONT_FAMILIES;
3985
+ exports.DEFAULT_FONT_SIZES = require_src.DEFAULT_FONT_SIZES;
3986
+ exports.DEFAULT_RADII = require_src.DEFAULT_RADII;
3987
3987
  exports.DEFAULT_SDK_WIDGET_REGISTRY = require_FluidProvider.DEFAULT_SDK_WIDGET_REGISTRY;
3988
- exports.DEFAULT_SPACING = require_FluidProvider.DEFAULT_SPACING;
3989
- exports.DEFAULT_THEME_ID = require_FluidProvider.DEFAULT_THEME_ID;
3990
- exports.DEFAULT_THEME_NAME = require_FluidProvider.DEFAULT_THEME_NAME;
3988
+ exports.DEFAULT_SPACING = require_src.DEFAULT_SPACING;
3989
+ exports.DEFAULT_THEME_ID = require_src.DEFAULT_THEME_ID;
3990
+ exports.DEFAULT_THEME_NAME = require_src.DEFAULT_THEME_NAME;
3991
3991
  exports.EmbedWidget = require_EmbedWidget.EmbedWidget;
3992
- exports.FONT_FAMILY_KEYS = require_FluidProvider.FONT_FAMILY_KEYS;
3993
- exports.FONT_SIZE_KEYS = require_FluidProvider.FONT_SIZE_KEYS;
3992
+ exports.FONT_FAMILY_KEYS = require_src.FONT_FAMILY_KEYS;
3993
+ exports.FONT_SIZE_KEYS = require_src.FONT_SIZE_KEYS;
3994
3994
  exports.FluidProvider = require_FluidProvider.FluidProvider;
3995
3995
  exports.FluidThemeProvider = require_FluidProvider.FluidThemeProvider;
3996
3996
  exports.ImageWidget = require_ImageWidget.ImageWidget;
@@ -4013,11 +4013,10 @@ exports.ProductsScreen = require_ProductsScreen.ProductsScreen;
4013
4013
  exports.ProfileScreen = require_ProfileScreen.ProfileScreen;
4014
4014
  exports.QuickLinksDropdown = QuickLinksDropdown;
4015
4015
  exports.QuickShareWidget = require_QuickShareWidget.QuickShareWidget;
4016
- exports.RADIUS_KEYS = require_FluidProvider.RADIUS_KEYS;
4016
+ exports.RADIUS_KEYS = require_src.RADIUS_KEYS;
4017
4017
  exports.RecentActivityWidget = require_RecentActivityWidget.RecentActivityWidget;
4018
4018
  exports.SCAFFOLD_MANIFEST = SCAFFOLD_MANIFEST;
4019
- exports.SEMANTIC_COLOR_NAMES = require_FluidProvider.SEMANTIC_COLOR_NAMES;
4020
- exports.SHADE_STEPS = require_FluidProvider.SHADE_STEPS;
4019
+ exports.SEMANTIC_COLOR_NAMES = require_src.SEMANTIC_COLOR_NAMES;
4021
4020
  exports.SdkCompanySwitcher = SdkCompanySwitcher;
4022
4021
  exports.SdkHeader = SdkHeader;
4023
4022
  exports.SdkNavigation = SdkNavigation;
@@ -4034,10 +4033,10 @@ exports.USER_TYPES = USER_TYPES;
4034
4033
  exports.VideoWidget = require_VideoWidget.VideoWidget;
4035
4034
  exports.WIDGET_TYPE_NAMES = require_ScreenRenderer.WIDGET_TYPE_NAMES;
4036
4035
  exports.alertWidgetPropertySchema = require_AlertWidget.alertWidgetPropertySchema;
4037
- exports.applyTheme = require_FluidProvider.applyTheme;
4036
+ exports.applyTheme = require_src.applyTheme;
4038
4037
  exports.assertDefined = require_ScreenRenderer.assertDefined;
4039
4038
  exports.assertNever = require_ScreenRenderer.assertNever;
4040
- exports.buildThemeDefinition = require_FluidProvider.buildThemeDefinition;
4039
+ exports.buildThemeDefinition = require_src.buildThemeDefinition;
4041
4040
  exports.buildWidgetRegistry = buildWidgetRegistry;
4042
4041
  exports.bulletListWidgetPropertySchema = require_BulletListWidget.bulletListWidgetPropertySchema;
4043
4042
  exports.calendarWidgetPropertySchema = require_CalendarWidget.calendarWidgetPropertySchema;
@@ -4056,19 +4055,18 @@ exports.createScreen = require_FluidProvider.createScreen;
4056
4055
  exports.createWidgetFromShareable = require_FluidProvider.createWidgetFromShareable;
4057
4056
  exports.createWidgetRegistry = require_FluidProvider.createWidgetRegistry;
4058
4057
  exports.customersScreenPropertySchema = require_CustomersScreen.customersScreenPropertySchema;
4059
- exports.deriveDarkVariant = require_FluidProvider.deriveDarkVariant;
4060
- exports.deserialiseTheme = require_FluidProvider.deserialiseTheme;
4058
+ exports.deriveDarkVariant = require_src.deriveDarkVariant;
4059
+ exports.deserialiseTheme = require_src.deserialiseTheme;
4061
4060
  exports.embedWidgetPropertySchema = require_EmbedWidget.embedWidgetPropertySchema;
4062
4061
  exports.extractSlugFromPathname = extractSlugFromPathname;
4063
4062
  exports.filterRepOnlyNavItems = filterRepOnlyNavItems;
4064
4063
  exports.gapValues = require_registries.gapValues;
4065
- exports.generateShades = require_FluidProvider.generateShades;
4066
- exports.generateThemeCSS = require_FluidProvider.generateThemeCSS;
4067
- exports.getActiveThemeId = require_FluidProvider.getActiveThemeId;
4064
+ exports.generateThemeCSS = require_src.generateThemeCSS;
4065
+ exports.getActiveThemeId = require_src.getActiveThemeId;
4068
4066
  exports.getAvailablePageTemplates = getAvailablePageTemplates;
4069
4067
  exports.getCorePageTemplates = getCorePageTemplates;
4070
- exports.getDefaultThemeDefinition = require_FluidProvider.getDefaultThemeDefinition;
4071
- exports.getForegroundColor = require_FluidProvider.getForegroundColor;
4068
+ exports.getDefaultThemeDefinition = require_src.getDefaultThemeDefinition;
4069
+ exports.getForegroundColor = require_src.getForegroundColor;
4072
4070
  exports.getOptionalPageTemplates = getOptionalPageTemplates;
4073
4071
  exports.getProperty = getProperty;
4074
4072
  exports.getThemeModeAttribute = getThemeModeAttribute;
@@ -4089,28 +4087,28 @@ exports.layoutWidgetPropertySchema = require_LayoutWidget.layoutWidgetPropertySc
4089
4087
  exports.linkWidgetPropertySchema = require_LinkWidget.linkWidgetPropertySchema;
4090
4088
  exports.listWidgetPropertySchema = require_ListWidget.listWidgetPropertySchema;
4091
4089
  exports.matchSlugPrefix = matchSlugPrefix;
4092
- exports.mergeDarkOverrides = require_FluidProvider.mergeDarkOverrides;
4090
+ exports.mergeDarkOverrides = require_src.mergeDarkOverrides;
4093
4091
  exports.messagingScreenPropertySchema = require_MessagingScreen.messagingScreenPropertySchema;
4094
4092
  exports.mySiteScreenPropertySchema = require_MySiteScreen.mySiteScreenPropertySchema;
4095
4093
  exports.mySiteWidgetPropertySchema = require_MySiteWidget.mySiteWidgetPropertySchema;
4096
4094
  exports.nestedWidgetPropertySchema = require_NestedWidget.nestedWidgetPropertySchema;
4097
4095
  exports.normalizeComponentTree = normalizeComponentTree;
4098
4096
  exports.ordersScreenPropertySchema = require_OrdersScreen.ordersScreenPropertySchema;
4099
- exports.parseColor = require_FluidProvider.parseColor;
4097
+ exports.parseColor = require_src.parseColor;
4100
4098
  exports.pointsWidgetPropertySchema = require_PointsWidget.pointsWidgetPropertySchema;
4101
4099
  exports.productsScreenPropertySchema = require_ProductsScreen.productsScreenPropertySchema;
4102
4100
  exports.profileScreenPropertySchema = require_ProfileScreen.profileScreenPropertySchema;
4103
4101
  exports.quickShareWidgetPropertySchema = require_QuickShareWidget.quickShareWidgetPropertySchema;
4104
4102
  exports.recentActivityWidgetPropertySchema = require_RecentActivityWidget.recentActivityWidgetPropertySchema;
4105
- exports.removeAllThemes = require_FluidProvider.removeAllThemes;
4106
- exports.removeTheme = require_FluidProvider.removeTheme;
4103
+ exports.removeAllThemes = require_src.removeAllThemes;
4104
+ exports.removeTheme = require_src.removeTheme;
4107
4105
  exports.resolveNavigationPages = resolveNavigationPages;
4108
- exports.resolveTheme = require_FluidProvider.resolveTheme;
4106
+ exports.resolveTheme = require_src.resolveTheme;
4109
4107
  exports.screenPropertySchemas = screenPropertySchemas;
4110
4108
  exports.sectionLayoutConfig = require_LayoutWidget.sectionLayoutConfig;
4111
4109
  exports.selectProperty = selectProperty;
4112
4110
  exports.separatorWidgetPropertySchema = require_SeparatorWidget.separatorWidgetPropertySchema;
4113
- exports.serialiseTheme = require_FluidProvider.serialiseTheme;
4111
+ exports.serialiseTheme = require_src.serialiseTheme;
4114
4112
  exports.shareablesScreenPropertySchema = require_ShareablesScreen.shareablesScreenPropertySchema;
4115
4113
  exports.shopScreenPropertySchema = require_ShopScreen.shopScreenPropertySchema;
4116
4114
  exports.spacerWidgetPropertySchema = require_SpacerWidget.spacerWidgetPropertySchema;
@@ -4122,7 +4120,7 @@ exports.toNavigationItem = toNavigationItem;
4122
4120
  exports.toRawManifest = toRawManifest;
4123
4121
  exports.toScreenDefinition = toScreenDefinition;
4124
4122
  exports.transformManifestToRepAppData = transformManifestToRepAppData;
4125
- exports.transformThemes = require_FluidProvider.transformThemes;
4123
+ exports.transformThemes = require_src.transformThemes;
4126
4124
  exports.useActivities = useActivities;
4127
4125
  exports.useAppDefinition = useAppDefinition;
4128
4126
  exports.useAppDefinitionApi = require_FluidProvider.useAppDefinitionApi;