@fluid-app/rep-core 0.1.0 → 0.1.1

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 (179) hide show
  1. package/dist/chunk-2SIG55BD.cjs +131 -0
  2. package/dist/chunk-2SIG55BD.cjs.map +1 -0
  3. package/dist/chunk-2SPTFZRC.js +72 -0
  4. package/dist/chunk-2SPTFZRC.js.map +1 -0
  5. package/dist/chunk-3I5Y3PEO.js +23 -0
  6. package/dist/chunk-3I5Y3PEO.js.map +1 -0
  7. package/dist/chunk-46PUWB7C.cjs +69 -0
  8. package/dist/chunk-46PUWB7C.cjs.map +1 -0
  9. package/dist/chunk-4WFDFEHC.js +134 -0
  10. package/dist/chunk-4WFDFEHC.js.map +1 -0
  11. package/dist/chunk-5NYM4UTW.cjs +58 -0
  12. package/dist/chunk-5NYM4UTW.cjs.map +1 -0
  13. package/dist/chunk-6YI7VW55.cjs +652 -0
  14. package/dist/chunk-6YI7VW55.cjs.map +1 -0
  15. package/dist/chunk-ESYAYVNK.cjs +136 -0
  16. package/dist/chunk-ESYAYVNK.cjs.map +1 -0
  17. package/dist/{chunk-6QLUUNJL.cjs → chunk-GDY76JA6.cjs} +2 -2
  18. package/dist/chunk-GDY76JA6.cjs.map +1 -0
  19. package/dist/chunk-HGVSPZEL.cjs +119 -0
  20. package/dist/chunk-HGVSPZEL.cjs.map +1 -0
  21. package/dist/chunk-HIDJYVKJ.js +54 -0
  22. package/dist/chunk-HIDJYVKJ.js.map +1 -0
  23. package/dist/chunk-HUR3MSO4.js +25 -0
  24. package/dist/chunk-HUR3MSO4.js.map +1 -0
  25. package/dist/chunk-LVLNO2YQ.cjs +28 -0
  26. package/dist/chunk-LVLNO2YQ.cjs.map +1 -0
  27. package/dist/chunk-N2K6W7FX.cjs +169 -0
  28. package/dist/chunk-N2K6W7FX.cjs.map +1 -0
  29. package/dist/chunk-NAMNXRI5.js +129 -0
  30. package/dist/chunk-NAMNXRI5.js.map +1 -0
  31. package/dist/chunk-OWU7MFJ2.cjs +15 -0
  32. package/dist/chunk-OWU7MFJ2.cjs.map +1 -0
  33. package/dist/chunk-PVTQWD4I.js +166 -0
  34. package/dist/chunk-PVTQWD4I.js.map +1 -0
  35. package/dist/chunk-S663BA25.cjs +29 -0
  36. package/dist/chunk-S663BA25.cjs.map +1 -0
  37. package/dist/chunk-SJQPHJL4.cjs +26 -0
  38. package/dist/chunk-SJQPHJL4.cjs.map +1 -0
  39. package/dist/chunk-UQASMDVE.js +27 -0
  40. package/dist/chunk-UQASMDVE.js.map +1 -0
  41. package/dist/chunk-V7D3QUE6.cjs +42 -0
  42. package/dist/chunk-V7D3QUE6.cjs.map +1 -0
  43. package/dist/chunk-VO4TIGDA.js +607 -0
  44. package/dist/chunk-VO4TIGDA.js.map +1 -0
  45. package/dist/chunk-VRF7QEID.js +67 -0
  46. package/dist/chunk-VRF7QEID.js.map +1 -0
  47. package/dist/chunk-WASVMCZB.js +13 -0
  48. package/dist/chunk-WASVMCZB.js.map +1 -0
  49. package/dist/chunk-WYOHFNNW.js +117 -0
  50. package/dist/chunk-WYOHFNNW.js.map +1 -0
  51. package/dist/chunk-XCNBVV4T.js +38 -0
  52. package/dist/chunk-XCNBVV4T.js.map +1 -0
  53. package/dist/{chunk-EWR5EIBP.js → chunk-YKF5ZFF5.js} +2 -2
  54. package/dist/chunk-YKF5ZFF5.js.map +1 -0
  55. package/dist/chunk-YXJMBVXO.cjs +76 -0
  56. package/dist/chunk-YXJMBVXO.cjs.map +1 -0
  57. package/dist/data-sources/DataAwareWidget.cjs +59 -0
  58. package/dist/data-sources/DataAwareWidget.cjs.map +1 -0
  59. package/dist/data-sources/DataAwareWidget.d.cts +30 -0
  60. package/dist/data-sources/DataAwareWidget.d.ts +30 -0
  61. package/dist/data-sources/DataAwareWidget.js +57 -0
  62. package/dist/data-sources/DataAwareWidget.js.map +1 -0
  63. package/dist/data-sources/ErrorState.cjs +12 -0
  64. package/dist/data-sources/ErrorState.cjs.map +1 -0
  65. package/dist/data-sources/ErrorState.d.cts +5 -0
  66. package/dist/data-sources/ErrorState.d.ts +5 -0
  67. package/dist/data-sources/ErrorState.js +3 -0
  68. package/dist/data-sources/ErrorState.js.map +1 -0
  69. package/dist/data-sources/context.cjs +10 -20
  70. package/dist/data-sources/context.cjs.map +1 -1
  71. package/dist/data-sources/context.d.cts +2 -2
  72. package/dist/data-sources/context.d.ts +2 -2
  73. package/dist/data-sources/context.js +1 -21
  74. package/dist/data-sources/context.js.map +1 -1
  75. package/dist/data-sources/fetchers/api.cjs +12 -0
  76. package/dist/data-sources/fetchers/api.cjs.map +1 -0
  77. package/dist/data-sources/fetchers/api.d.cts +8 -0
  78. package/dist/data-sources/fetchers/api.d.ts +8 -0
  79. package/dist/data-sources/fetchers/api.js +3 -0
  80. package/dist/data-sources/fetchers/api.js.map +1 -0
  81. package/dist/data-sources/fetchers/custom.cjs +12 -0
  82. package/dist/data-sources/fetchers/custom.cjs.map +1 -0
  83. package/dist/data-sources/fetchers/custom.d.cts +15 -0
  84. package/dist/data-sources/fetchers/custom.d.ts +15 -0
  85. package/dist/data-sources/fetchers/custom.js +3 -0
  86. package/dist/data-sources/fetchers/custom.js.map +1 -0
  87. package/dist/data-sources/fetchers/static.cjs +16 -0
  88. package/dist/data-sources/fetchers/static.cjs.map +1 -0
  89. package/dist/data-sources/fetchers/static.d.cts +38 -0
  90. package/dist/data-sources/fetchers/static.d.ts +38 -0
  91. package/dist/data-sources/fetchers/static.js +3 -0
  92. package/dist/data-sources/fetchers/static.js.map +1 -0
  93. package/dist/data-sources/registry-context.cjs +26 -0
  94. package/dist/data-sources/registry-context.cjs.map +1 -0
  95. package/dist/data-sources/registry-context.d.cts +41 -0
  96. package/dist/data-sources/registry-context.d.ts +41 -0
  97. package/dist/data-sources/registry-context.js +9 -0
  98. package/dist/data-sources/registry-context.js.map +1 -0
  99. package/dist/data-sources/registry.cjs +20 -0
  100. package/dist/data-sources/registry.cjs.map +1 -0
  101. package/dist/data-sources/registry.d.cts +17 -0
  102. package/dist/data-sources/registry.d.ts +17 -0
  103. package/dist/data-sources/registry.js +7 -0
  104. package/dist/data-sources/registry.js.map +1 -0
  105. package/dist/data-sources/transformers.cjs +12 -0
  106. package/dist/data-sources/transformers.cjs.map +1 -0
  107. package/dist/data-sources/transformers.d.cts +23 -0
  108. package/dist/data-sources/transformers.d.ts +23 -0
  109. package/dist/data-sources/transformers.js +3 -0
  110. package/dist/data-sources/transformers.js.map +1 -0
  111. package/dist/data-sources/types.d.cts +37 -2
  112. package/dist/data-sources/types.d.ts +37 -2
  113. package/dist/data-sources/use-widget-data.cjs +19 -0
  114. package/dist/data-sources/use-widget-data.cjs.map +1 -0
  115. package/dist/data-sources/use-widget-data.d.cts +16 -0
  116. package/dist/data-sources/use-widget-data.d.ts +16 -0
  117. package/dist/data-sources/use-widget-data.js +10 -0
  118. package/dist/data-sources/use-widget-data.js.map +1 -0
  119. package/dist/registries/index.cjs +8 -15
  120. package/dist/registries/index.cjs.map +1 -1
  121. package/dist/registries/index.d.cts +20 -7
  122. package/dist/registries/index.d.ts +20 -7
  123. package/dist/registries/index.js +8 -15
  124. package/dist/registries/index.js.map +1 -1
  125. package/dist/shareable-item-DkgWpwoU.d.cts +21 -0
  126. package/dist/shareable-item-DkgWpwoU.d.ts +21 -0
  127. package/dist/shell/AppShellLayout.cjs +14 -0
  128. package/dist/shell/AppShellLayout.cjs.map +1 -0
  129. package/dist/shell/AppShellLayout.d.cts +26 -0
  130. package/dist/shell/AppShellLayout.d.ts +26 -0
  131. package/dist/shell/AppShellLayout.js +5 -0
  132. package/dist/shell/AppShellLayout.js.map +1 -0
  133. package/dist/shell/ThemeModeContext.cjs +20 -0
  134. package/dist/shell/ThemeModeContext.cjs.map +1 -0
  135. package/dist/shell/ThemeModeContext.d.cts +27 -0
  136. package/dist/shell/ThemeModeContext.d.ts +27 -0
  137. package/dist/shell/ThemeModeContext.js +3 -0
  138. package/dist/shell/ThemeModeContext.js.map +1 -0
  139. package/dist/shell/index.cjs +135 -0
  140. package/dist/shell/index.cjs.map +1 -0
  141. package/dist/shell/index.d.cts +8 -0
  142. package/dist/shell/index.d.ts +8 -0
  143. package/dist/shell/index.js +6 -0
  144. package/dist/shell/index.js.map +1 -0
  145. package/dist/shell/sidebar.cjs +105 -0
  146. package/dist/shell/sidebar.cjs.map +1 -0
  147. package/dist/shell/sidebar.d.cts +71 -0
  148. package/dist/shell/sidebar.d.ts +71 -0
  149. package/dist/shell/sidebar.js +4 -0
  150. package/dist/shell/sidebar.js.map +1 -0
  151. package/dist/shell/use-mobile.cjs +20 -0
  152. package/dist/shell/use-mobile.cjs.map +1 -0
  153. package/dist/shell/use-mobile.d.cts +5 -0
  154. package/dist/shell/use-mobile.d.ts +5 -0
  155. package/dist/shell/use-mobile.js +3 -0
  156. package/dist/shell/use-mobile.js.map +1 -0
  157. package/dist/theme/index.cjs +599 -970
  158. package/dist/theme/index.cjs.map +1 -1
  159. package/dist/theme/index.d.cts +106 -2655
  160. package/dist/theme/index.d.ts +106 -2655
  161. package/dist/theme/index.js +570 -917
  162. package/dist/theme/index.js.map +1 -1
  163. package/dist/types/index.cjs +17 -17
  164. package/dist/types/index.d.cts +27 -4
  165. package/dist/types/index.d.ts +27 -4
  166. package/dist/types/index.js +1 -1
  167. package/dist/types-R1kV_DKF.d.cts +80 -0
  168. package/dist/types-R1kV_DKF.d.ts +80 -0
  169. package/dist/{shareable-item-DPmNZkE1.d.cts → widget-schema-36uGUTWL.d.cts} +5 -21
  170. package/dist/{shareable-item-DPmNZkE1.d.ts → widget-schema-DxdlJD8E.d.ts} +5 -21
  171. package/dist/widget-utils/index.cjs +3 -3
  172. package/dist/widget-utils/index.d.cts +3 -1
  173. package/dist/widget-utils/index.d.ts +3 -1
  174. package/dist/widget-utils/index.js +1 -1
  175. package/package.json +84 -13
  176. package/dist/chunk-6QLUUNJL.cjs.map +0 -1
  177. package/dist/chunk-EWR5EIBP.js.map +0 -1
  178. package/dist/theme-DrMUYZTO.d.cts +0 -22
  179. package/dist/theme-DrMUYZTO.d.ts +0 -22
@@ -0,0 +1,17 @@
1
+ import { DataSourceType, DataFetcher, DataTransformer, DataSourceRegistry } from './types.cjs';
2
+
3
+ interface CreateDataSourceRegistryOptions {
4
+ /** Custom fetchers to add or override */
5
+ fetchers?: Partial<Record<DataSourceType, DataFetcher>>;
6
+ /** Custom transform functions */
7
+ transformers?: Record<string, DataTransformer>;
8
+ }
9
+ /**
10
+ * Creates a data source registry with default fetchers.
11
+ * Users can extend this with custom fetchers and transformers.
12
+ */
13
+ declare function createDataSourceRegistry(options?: CreateDataSourceRegistryOptions): DataSourceRegistry;
14
+ /** Default registry instance */
15
+ declare const DEFAULT_DATA_SOURCE_REGISTRY: DataSourceRegistry;
16
+
17
+ export { type CreateDataSourceRegistryOptions, DEFAULT_DATA_SOURCE_REGISTRY, createDataSourceRegistry };
@@ -0,0 +1,17 @@
1
+ import { DataSourceType, DataFetcher, DataTransformer, DataSourceRegistry } from './types.js';
2
+
3
+ interface CreateDataSourceRegistryOptions {
4
+ /** Custom fetchers to add or override */
5
+ fetchers?: Partial<Record<DataSourceType, DataFetcher>>;
6
+ /** Custom transform functions */
7
+ transformers?: Record<string, DataTransformer>;
8
+ }
9
+ /**
10
+ * Creates a data source registry with default fetchers.
11
+ * Users can extend this with custom fetchers and transformers.
12
+ */
13
+ declare function createDataSourceRegistry(options?: CreateDataSourceRegistryOptions): DataSourceRegistry;
14
+ /** Default registry instance */
15
+ declare const DEFAULT_DATA_SOURCE_REGISTRY: DataSourceRegistry;
16
+
17
+ export { type CreateDataSourceRegistryOptions, DEFAULT_DATA_SOURCE_REGISTRY, createDataSourceRegistry };
@@ -0,0 +1,7 @@
1
+ export { DEFAULT_DATA_SOURCE_REGISTRY, createDataSourceRegistry } from '../chunk-HUR3MSO4.js';
2
+ import '../chunk-VRF7QEID.js';
3
+ import '../chunk-WYOHFNNW.js';
4
+ import '../chunk-PVTQWD4I.js';
5
+ import '../chunk-NAMNXRI5.js';
6
+ //# sourceMappingURL=registry.js.map
7
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"registry.js"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunk2SIG55BD_cjs = require('../chunk-2SIG55BD.cjs');
4
+
5
+
6
+
7
+ Object.defineProperty(exports, "WIDGET_TRANSFORMERS", {
8
+ enumerable: true,
9
+ get: function () { return chunk2SIG55BD_cjs.WIDGET_TRANSFORMERS; }
10
+ });
11
+ //# sourceMappingURL=transformers.cjs.map
12
+ //# sourceMappingURL=transformers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"transformers.cjs"}
@@ -0,0 +1,23 @@
1
+ import { DataTransformer } from './types.cjs';
2
+
3
+ /**
4
+ * Widget Transformers
5
+ *
6
+ * Transform functions that map API response data to widget-specific prop shapes.
7
+ * Each widget has one transformer that handles all data structure variants:
8
+ * - Standard: Direct field name match
9
+ * - Legacy: Different field names that need mapping
10
+ * - Minimal: Bare minimum fields that need defaults
11
+ *
12
+ * Usage:
13
+ * 1. Transformers are registered in the DataSourceRegistry
14
+ * 2. Reference by name in ApiDataSource.transform
15
+ * 3. Applied after resultPath extraction, before targetProps assignment
16
+ */
17
+
18
+ /**
19
+ * All widget transformers bundled for registration
20
+ */
21
+ declare const WIDGET_TRANSFORMERS: Record<string, DataTransformer>;
22
+
23
+ export { WIDGET_TRANSFORMERS };
@@ -0,0 +1,23 @@
1
+ import { DataTransformer } from './types.js';
2
+
3
+ /**
4
+ * Widget Transformers
5
+ *
6
+ * Transform functions that map API response data to widget-specific prop shapes.
7
+ * Each widget has one transformer that handles all data structure variants:
8
+ * - Standard: Direct field name match
9
+ * - Legacy: Different field names that need mapping
10
+ * - Minimal: Bare minimum fields that need defaults
11
+ *
12
+ * Usage:
13
+ * 1. Transformers are registered in the DataSourceRegistry
14
+ * 2. Reference by name in ApiDataSource.transform
15
+ * 3. Applied after resultPath extraction, before targetProps assignment
16
+ */
17
+
18
+ /**
19
+ * All widget transformers bundled for registration
20
+ */
21
+ declare const WIDGET_TRANSFORMERS: Record<string, DataTransformer>;
22
+
23
+ export { WIDGET_TRANSFORMERS };
@@ -0,0 +1,3 @@
1
+ export { WIDGET_TRANSFORMERS } from '../chunk-NAMNXRI5.js';
2
+ //# sourceMappingURL=transformers.js.map
3
+ //# sourceMappingURL=transformers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"transformers.js"}
@@ -116,7 +116,42 @@ interface DataSourceConfig {
116
116
  interface StaticItem {
117
117
  id: string | number;
118
118
  title: string;
119
- imageUrl?: string;
119
+ imageUrl?: string | undefined;
120
+ }
121
+ /** Context passed to fetchers and transforms */
122
+ interface DataSourceContext {
123
+ /** The widget's unique ID */
124
+ widgetId: string;
125
+ /** The widget type (e.g., "ChartWidget") */
126
+ widgetType: string;
127
+ /** AbortSignal for request cancellation */
128
+ signal: AbortSignal;
129
+ /** Base URL for API calls (e.g., "https://api.fluid.app/api") */
130
+ baseUrl?: string | undefined;
131
+ /** Get API headers function */
132
+ getApiHeaders?: (() => Record<string, string>) | undefined;
133
+ /** Dynamic variables for endpoint path substitution (e.g., { rep_id: "123" }) */
134
+ variables?: Record<string, string> | undefined;
135
+ }
136
+ /** Function signature for data fetchers */
137
+ type DataFetcher<T extends DataSource = DataSource> = (source: T, context: DataSourceContext) => Promise<unknown>;
138
+ /** Function signature for data transforms */
139
+ type DataTransformer = (data: unknown, source?: DataSource, context?: DataSourceContext) => unknown;
140
+ /** The data source registry configuration */
141
+ interface DataSourceRegistry {
142
+ fetchers: Record<DataSourceType, DataFetcher>;
143
+ transformers: Record<string, DataTransformer>;
144
+ }
145
+ /** Result from useWidgetData hook */
146
+ interface WidgetDataResult<T = unknown> {
147
+ /** The resolved data (undefined while loading) */
148
+ data: T | undefined;
149
+ /** True while any source is loading */
150
+ isLoading: boolean;
151
+ /** Error if any source failed */
152
+ error: Error | null;
153
+ /** Manually trigger a refetch */
154
+ refetch: () => void;
120
155
  }
121
156
 
122
- export type { ApiDataSource, CustomDataSource, DataSource, DataSourceConfig, DataSourceType, SelectedItem, ShareableType, StaticDataSource, StaticItem, StaticSourceType };
157
+ export type { ApiDataSource, CustomDataSource, DataFetcher, DataSource, DataSourceConfig, DataSourceContext, DataSourceRegistry, DataSourceType, DataTransformer, SelectedItem, ShareableType, StaticDataSource, StaticItem, StaticSourceType, WidgetDataResult };
@@ -116,7 +116,42 @@ interface DataSourceConfig {
116
116
  interface StaticItem {
117
117
  id: string | number;
118
118
  title: string;
119
- imageUrl?: string;
119
+ imageUrl?: string | undefined;
120
+ }
121
+ /** Context passed to fetchers and transforms */
122
+ interface DataSourceContext {
123
+ /** The widget's unique ID */
124
+ widgetId: string;
125
+ /** The widget type (e.g., "ChartWidget") */
126
+ widgetType: string;
127
+ /** AbortSignal for request cancellation */
128
+ signal: AbortSignal;
129
+ /** Base URL for API calls (e.g., "https://api.fluid.app/api") */
130
+ baseUrl?: string | undefined;
131
+ /** Get API headers function */
132
+ getApiHeaders?: (() => Record<string, string>) | undefined;
133
+ /** Dynamic variables for endpoint path substitution (e.g., { rep_id: "123" }) */
134
+ variables?: Record<string, string> | undefined;
135
+ }
136
+ /** Function signature for data fetchers */
137
+ type DataFetcher<T extends DataSource = DataSource> = (source: T, context: DataSourceContext) => Promise<unknown>;
138
+ /** Function signature for data transforms */
139
+ type DataTransformer = (data: unknown, source?: DataSource, context?: DataSourceContext) => unknown;
140
+ /** The data source registry configuration */
141
+ interface DataSourceRegistry {
142
+ fetchers: Record<DataSourceType, DataFetcher>;
143
+ transformers: Record<string, DataTransformer>;
144
+ }
145
+ /** Result from useWidgetData hook */
146
+ interface WidgetDataResult<T = unknown> {
147
+ /** The resolved data (undefined while loading) */
148
+ data: T | undefined;
149
+ /** True while any source is loading */
150
+ isLoading: boolean;
151
+ /** Error if any source failed */
152
+ error: Error | null;
153
+ /** Manually trigger a refetch */
154
+ refetch: () => void;
120
155
  }
121
156
 
122
- export type { ApiDataSource, CustomDataSource, DataSource, DataSourceConfig, DataSourceType, SelectedItem, ShareableType, StaticDataSource, StaticItem, StaticSourceType };
157
+ export type { ApiDataSource, CustomDataSource, DataFetcher, DataSource, DataSourceConfig, DataSourceContext, DataSourceRegistry, DataSourceType, DataTransformer, SelectedItem, ShareableType, StaticDataSource, StaticItem, StaticSourceType, WidgetDataResult };
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var chunkESYAYVNK_cjs = require('../chunk-ESYAYVNK.cjs');
4
+ require('../chunk-V7D3QUE6.cjs');
5
+ require('../chunk-SJQPHJL4.cjs');
6
+ require('../chunk-LVLNO2YQ.cjs');
7
+ require('../chunk-46PUWB7C.cjs');
8
+ require('../chunk-HGVSPZEL.cjs');
9
+ require('../chunk-N2K6W7FX.cjs');
10
+ require('../chunk-2SIG55BD.cjs');
11
+
12
+
13
+
14
+ Object.defineProperty(exports, "useWidgetData", {
15
+ enumerable: true,
16
+ get: function () { return chunkESYAYVNK_cjs.useWidgetData; }
17
+ });
18
+ //# sourceMappingURL=use-widget-data.cjs.map
19
+ //# sourceMappingURL=use-widget-data.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"use-widget-data.cjs"}
@@ -0,0 +1,16 @@
1
+ import { W as WidgetSchema } from '../widget-schema-36uGUTWL.cjs';
2
+ import { DataSourceRegistry, WidgetDataResult } from './types.cjs';
3
+ import 'react';
4
+
5
+ interface UseWidgetDataOptions {
6
+ /** Override the default registry from context */
7
+ registry?: DataSourceRegistry | undefined;
8
+ /** Base URL for API calls (e.g., "https://api.fluid.app/api") */
9
+ baseUrl?: string | undefined;
10
+ }
11
+ /**
12
+ * Hook that fetches and resolves data sources for a widget using React Query.
13
+ */
14
+ declare function useWidgetData<T = Record<string, unknown>>(widget: WidgetSchema, options?: UseWidgetDataOptions): WidgetDataResult<T>;
15
+
16
+ export { useWidgetData };
@@ -0,0 +1,16 @@
1
+ import { W as WidgetSchema } from '../widget-schema-DxdlJD8E.js';
2
+ import { DataSourceRegistry, WidgetDataResult } from './types.js';
3
+ import 'react';
4
+
5
+ interface UseWidgetDataOptions {
6
+ /** Override the default registry from context */
7
+ registry?: DataSourceRegistry | undefined;
8
+ /** Base URL for API calls (e.g., "https://api.fluid.app/api") */
9
+ baseUrl?: string | undefined;
10
+ }
11
+ /**
12
+ * Hook that fetches and resolves data sources for a widget using React Query.
13
+ */
14
+ declare function useWidgetData<T = Record<string, unknown>>(widget: WidgetSchema, options?: UseWidgetDataOptions): WidgetDataResult<T>;
15
+
16
+ export { useWidgetData };
@@ -0,0 +1,10 @@
1
+ export { useWidgetData } from '../chunk-4WFDFEHC.js';
2
+ import '../chunk-XCNBVV4T.js';
3
+ import '../chunk-3I5Y3PEO.js';
4
+ import '../chunk-HUR3MSO4.js';
5
+ import '../chunk-VRF7QEID.js';
6
+ import '../chunk-WYOHFNNW.js';
7
+ import '../chunk-PVTQWD4I.js';
8
+ import '../chunk-NAMNXRI5.js';
9
+ //# sourceMappingURL=use-widget-data.js.map
10
+ //# sourceMappingURL=use-widget-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"use-widget-data.js"}
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ var proRegularSvgIcons = require('@fortawesome/pro-regular-svg-icons');
4
+
3
5
  // src/registries/property-schema-types.ts
4
6
  var PROPERTY_FIELD_TYPES = {
5
7
  text: "text",
@@ -20,7 +22,8 @@ var PROPERTY_FIELD_TYPES = {
20
22
  colorSelect: "colorSelect",
21
23
  sectionLayoutSelect: "sectionLayoutSelect",
22
24
  background: "background",
23
- contentPosition: "contentPosition"
25
+ contentPosition: "contentPosition",
26
+ textSizeSelect: "textSizeSelect"
24
27
  };
25
28
  function isPropertyFieldType(value) {
26
29
  return Object.values(PROPERTY_FIELD_TYPES).includes(
@@ -55,8 +58,6 @@ function applyPropertyValues(widget, values) {
55
58
  }
56
59
  };
57
60
  }
58
-
59
- // src/registries/field-helpers.ts
60
61
  var getColorField = (props) => {
61
62
  return {
62
63
  ...props,
@@ -68,7 +69,7 @@ var getBorderRadiusField = (props) => {
68
69
  ...props,
69
70
  type: "buttonGroup",
70
71
  options: [
71
- { label: "None", value: "none" },
72
+ { icon: proRegularSvgIcons.faBan, value: "none" },
72
73
  { label: "SM", value: "sm" },
73
74
  { label: "MD", value: "md" },
74
75
  { label: "LG", value: "lg" },
@@ -82,7 +83,7 @@ var getPaddingField = (props) => {
82
83
  ...props,
83
84
  type: "buttonGroup",
84
85
  options: [
85
- { label: "None", value: 0 },
86
+ { icon: proRegularSvgIcons.faBan, value: 0 },
86
87
  { label: "SM", value: 2 },
87
88
  { label: "MD", value: 4 },
88
89
  { label: "LG", value: 6 },
@@ -106,15 +107,7 @@ var getButtonSizeField = (props) => {
106
107
  var getFontSizeField = (props) => {
107
108
  return {
108
109
  ...props,
109
- type: "select",
110
- options: [
111
- { label: "Giant", value: "2xl" },
112
- { label: "Extra Large", value: "xl" },
113
- { label: "Large", value: "lg" },
114
- { label: "Regular", value: "md" },
115
- { label: "Small", value: "sm" },
116
- { label: "Extra Small", value: "xs" }
117
- ]
110
+ type: "textSizeSelect"
118
111
  };
119
112
  };
120
113
  var getGapField = (props) => {
@@ -122,7 +115,7 @@ var getGapField = (props) => {
122
115
  ...props,
123
116
  type: "buttonGroup",
124
117
  options: [
125
- { label: "None", value: "none" },
118
+ { icon: proRegularSvgIcons.faBan, value: "none" },
126
119
  { label: "XS", value: "xs" },
127
120
  { label: "SM", value: "sm" },
128
121
  { label: "MD", value: "md" },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/registries/property-schema-types.ts","../../src/registries/field-helpers.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n WidgetType,\n WidgetSchema,\n AlignOptions,\n ColorOptions,\n SectionLayoutType,\n StrictOmit,\n} from \"../types\";\n\n/**\n * Tab configuration for organizing properties\n */\nexport interface TabConfig {\n /** Unique identifier for the tab */\n id: string;\n /** Display label for the tab */\n label: string;\n}\n\n// ============================================================================\n// Property Field Types - Derive from constant for single source of truth\n// ============================================================================\n\n/**\n * Property field type constant - single source of truth for field types.\n * Use PROPERTY_FIELD_TYPES.text instead of \"text\" for type-safe comparisons.\n */\nexport const PROPERTY_FIELD_TYPES = {\n text: \"text\",\n textarea: \"textarea\",\n number: \"number\",\n boolean: \"boolean\",\n select: \"select\",\n color: \"color\",\n range: \"range\",\n dataSource: \"dataSource\",\n resource: \"resource\",\n alignment: \"alignment\",\n slider: \"slider\",\n colorPicker: \"colorPicker\",\n sectionHeader: \"sectionHeader\",\n separator: \"separator\",\n buttonGroup: \"buttonGroup\",\n colorSelect: \"colorSelect\",\n sectionLayoutSelect: \"sectionLayoutSelect\",\n background: \"background\",\n contentPosition: \"contentPosition\",\n} as const;\n\n/**\n * Union type of all property field types, derived from PROPERTY_FIELD_TYPES constant.\n * @see deriving-typeof-for-object-keys pattern\n */\nexport type PropertyFieldType =\n (typeof PROPERTY_FIELD_TYPES)[keyof typeof PROPERTY_FIELD_TYPES];\n\n/**\n * Runtime validation for property field types.\n * @param value - The value to check\n * @returns true if value is a valid PropertyFieldType\n */\nexport function isPropertyFieldType(value: string): value is PropertyFieldType {\n return Object.values(PROPERTY_FIELD_TYPES).includes(\n value as PropertyFieldType,\n );\n}\n\n/**\n * Base schema for a property field\n */\nexport interface PropertyFieldSchema {\n /** Property key in the widget props */\n key: string;\n /** Display label for the field */\n label: string;\n /** Field type determines the input control */\n type: PropertyFieldType;\n /** Optional description/help text */\n description?: string;\n /** Optional default value */\n defaultValue?: unknown;\n /** Optional tab ID (must match a TabConfig id if widget has tabsConfig) */\n tab?: string;\n /** Optional group for organizing fields within a tab */\n group?: string;\n /**\n * @deprecated Use requiresKeyValue instead\n */\n requiresKeyToBeTrue?: string;\n /** Optional requires a specific key to have a specific value */\n requiresKeyValue?: { key: string; value: unknown };\n}\n\n/**\n * Text field schema\n */\nexport interface TextFieldSchema extends PropertyFieldSchema {\n type: \"text\";\n placeholder?: string;\n maxLength?: number;\n}\n\n/**\n * Textarea field schema\n */\nexport interface TextareaFieldSchema extends PropertyFieldSchema {\n type: \"textarea\";\n placeholder?: string;\n rows?: number;\n maxLength?: number;\n}\n\n/**\n * Number field schema\n */\nexport interface NumberFieldSchema extends PropertyFieldSchema {\n type: \"number\";\n min?: number;\n max?: number;\n step?: number;\n}\n\n/**\n * Boolean field schema\n */\nexport interface BooleanFieldSchema extends PropertyFieldSchema {\n type: \"boolean\";\n}\n\n/**\n * Select field schema with type-safe option values.\n * Uses StrictOmit to ensure \"defaultValue\" key exists on PropertyFieldSchema.\n */\nexport interface SelectFieldSchema<T extends string | number = string | number>\n extends StrictOmit<PropertyFieldSchema, \"defaultValue\"> {\n type: \"select\";\n options: Array<{ label: string; value: T }>;\n defaultValue?: T;\n}\n\n/**\n * Color field schema\n */\nexport interface ColorFieldSchema extends PropertyFieldSchema {\n type: \"color\";\n}\n\n/**\n * Range slider field schema\n */\nexport interface RangeFieldSchema extends PropertyFieldSchema {\n type: \"range\";\n min: number;\n max: number;\n step?: number;\n}\n\n/**\n * Data source field schema for configuring widget data sources\n */\nexport interface DataSourceFieldSchema extends PropertyFieldSchema {\n type: \"dataSource\";\n}\n\n/**\n * Resource field schema for selecting a single resource from the selection modal\n */\nexport interface ResourceFieldSchema extends PropertyFieldSchema {\n type: \"resource\";\n /** Optional filter to specific shareable types */\n allowedTypes?: string[];\n}\n\n/**\n * Alignment field schema\n */\nexport interface AlignmentFieldSchema extends PropertyFieldSchema {\n type: \"alignment\";\n options: {\n verticalEnabled: boolean;\n horizontalEnabled: boolean;\n };\n defaultValue?: AlignOptions;\n}\n\n/**\n * Slider field schema with optional unit suffix (e.g., \"rem\", \"px\")\n */\nexport interface SliderFieldSchema extends PropertyFieldSchema {\n type: \"slider\";\n min: number;\n max: number;\n step?: number;\n unit?: string;\n}\n\n/**\n * Color picker field schema with optional swatches\n */\nexport interface ColorPickerFieldSchema extends PropertyFieldSchema {\n type: \"colorPicker\";\n swatches?: string[];\n}\n\n/**\n * Section header field schema for visual grouping\n */\nexport interface SectionHeaderFieldSchema extends PropertyFieldSchema {\n type: \"sectionHeader\";\n subtitle?: string;\n}\n\n/**\n * Separator field schema for visual separation\n */\nexport interface SeparatorFieldSchema extends PropertyFieldSchema {\n type: \"separator\";\n}\n\n/**\n * Button group field schema.\n * Uses StrictOmit to ensure \"defaultValue\" key exists on PropertyFieldSchema.\n */\nexport interface ButtonGroupFieldSchema<\n T extends string | number = string | number,\n> extends StrictOmit<PropertyFieldSchema, \"defaultValue\"> {\n type: \"buttonGroup\";\n options: Array<{ label: string; value: T }>;\n defaultValue?: T;\n}\n\n/**\n * Color select field schema\n */\nexport interface ColorSelectFieldSchema extends PropertyFieldSchema {\n type: \"colorSelect\";\n defaultValue?: ColorOptions;\n}\n\n/**\n * Section layout select field schema for visual masonry layout selector\n */\nexport interface SectionLayoutSelectFieldSchema extends PropertyFieldSchema {\n type: \"sectionLayoutSelect\";\n defaultValue?: SectionLayoutType;\n}\n\n/**\n * Background field combines resource selection and color properties.\n * Uses StrictOmit to exclude conflicting \"type\" discriminant from parents.\n */\nexport interface BackgroundFieldSchema\n extends StrictOmit<ResourceFieldSchema, \"type\">,\n StrictOmit<ColorFieldSchema, \"type\"> {\n type: \"background\";\n}\n\n/**\n * Content position field schema for 3x3 grid position picker\n */\nexport interface ContentPositionFieldSchema extends PropertyFieldSchema {\n type: \"contentPosition\";\n defaultValue?: string;\n}\n\n/**\n * Union of all field schema types\n */\nexport type PropertyField =\n | TextFieldSchema\n | TextareaFieldSchema\n | NumberFieldSchema\n | BooleanFieldSchema\n | SelectFieldSchema<string | number>\n | ColorFieldSchema\n | RangeFieldSchema\n | DataSourceFieldSchema\n | ResourceFieldSchema\n | AlignmentFieldSchema\n | SliderFieldSchema\n | ColorPickerFieldSchema\n | SectionHeaderFieldSchema\n | SeparatorFieldSchema\n | ButtonGroupFieldSchema<string | number>\n | ColorSelectFieldSchema\n | SectionLayoutSelectFieldSchema\n | BackgroundFieldSchema\n | ContentPositionFieldSchema;\n\n/**\n * Schema for per-item configuration in custom data sources.\n * Widgets can define this to allow users to configure widget-specific\n * settings for each selected item (e.g., title, description, button).\n */\nexport interface ItemConfigSchema {\n /** Fields available for per-item configuration */\n fields: PropertyField[];\n /** Optional description shown at top of item config panel */\n description?: string;\n}\n\n/**\n * Schema for a widget's editable properties\n */\nexport interface WidgetPropertySchema {\n /** Widget type this schema applies to */\n widgetType: WidgetType;\n /** Display name for the widget */\n displayName: string;\n /** Optional tab configuration - if present, tabs are enabled */\n tabsConfig?: TabConfig[];\n /** Editable property fields */\n fields: PropertyField[];\n /** Optional custom validator function */\n validate?: (props: Record<string, unknown>) => string | null;\n /** Props that can be populated from data sources */\n dataSourceTargetProps?: string[];\n /** Optional schema for per-item configurations in custom data sources */\n itemConfigSchema?: ItemConfigSchema;\n}\n\n/**\n * Registry mapping widget types to their property schemas\n */\nexport type PropertySchemaRegistry = Record<WidgetType, WidgetPropertySchema>;\n\n/**\n * Group property fields by their group property\n */\nexport function groupPropertyFields(\n fields: readonly PropertyField[],\n): Record<string, PropertyField[]> {\n const grouped: Record<string, PropertyField[]> = {};\n\n fields.forEach((field) => {\n const group = field.group || \"General\";\n if (!grouped[group]) {\n grouped[group] = [];\n }\n grouped[group].push(field);\n });\n\n return grouped;\n}\n\n/**\n * Extract current values from widget props based on property fields\n */\nexport function extractPropertyValues(\n widget: Readonly<WidgetSchema>,\n fields: readonly PropertyField[],\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n\n fields.forEach((field) => {\n const value = widget.props[field.key];\n values[field.key] = value !== undefined ? value : field.defaultValue;\n });\n\n return values;\n}\n\n/**\n * Apply property values to widget props\n */\nexport function applyPropertyValues(\n widget: Readonly<WidgetSchema>,\n values: Readonly<Record<string, unknown>>,\n): WidgetSchema {\n return {\n ...widget,\n props: {\n ...widget.props,\n ...values,\n },\n };\n}\n","import type {\n ButtonGroupFieldSchema,\n ColorSelectFieldSchema,\n SelectFieldSchema,\n} from \"./property-schema-types\";\nimport type {\n BorderRadiusOptions,\n FontSizeOptions,\n PaddingOptions,\n ButtonSizeOptions,\n GapOptions,\n} from \"../types\";\n\nexport const getColorField = (\n props: Readonly<Omit<ColorSelectFieldSchema, \"type\">>,\n): ColorSelectFieldSchema => {\n return {\n ...props,\n type: \"colorSelect\",\n };\n};\n\nexport const getBorderRadiusField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<BorderRadiusOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<BorderRadiusOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"md\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n { label: \"FULL\", value: \"full\" },\n ],\n };\n};\n\nexport const getPaddingField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<PaddingOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<PaddingOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"None\", value: 0 },\n { label: \"SM\", value: 2 },\n { label: \"MD\", value: 4 },\n { label: \"LG\", value: 6 },\n { label: \"XL\", value: 8 },\n { label: \"FULL\", value: 10 },\n ],\n };\n};\n\nexport const getButtonSizeField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<ButtonSizeOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<ButtonSizeOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"default\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n };\n};\n\nexport const getFontSizeField = (\n props: Readonly<Omit<SelectFieldSchema<FontSizeOptions>, \"options\" | \"type\">>,\n): SelectFieldSchema<FontSizeOptions> => {\n return {\n ...props,\n type: \"select\",\n options: [\n { label: \"Giant\", value: \"2xl\" },\n { label: \"Extra Large\", value: \"xl\" },\n { label: \"Large\", value: \"lg\" },\n { label: \"Regular\", value: \"md\" },\n { label: \"Small\", value: \"sm\" },\n { label: \"Extra Small\", value: \"xs\" },\n ],\n };\n};\n\nexport const getGapField = (\n props: Readonly<Omit<ButtonGroupFieldSchema<GapOptions>, \"options\" | \"type\">>,\n): ButtonGroupFieldSchema<GapOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"None\", value: \"none\" },\n { label: \"XS\", value: \"xs\" },\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"md\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n };\n};\n\n/**\n * Gap value mapping - use `as const satisfies` for compile-time validation\n * with literal type preservation.\n */\nexport const gapValues = {\n none: 0,\n xs: 1,\n sm: 2,\n md: 4,\n lg: 6,\n xl: 8,\n} as const satisfies Record<GapOptions, number>;\n"]}
1
+ {"version":3,"sources":["../../src/registries/property-schema-types.ts","../../src/registries/field-helpers.ts"],"names":["faBan"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { IconDefinition } from \"@fortawesome/fontawesome-svg-core\";\nimport type {\n WidgetType,\n WidgetSchema,\n AlignOptions,\n ColorOptions,\n FontSizeOptions,\n SectionLayoutType,\n StrictOmit,\n} from \"../types\";\n\n/**\n * Tab configuration for organizing properties\n */\nexport interface TabConfig {\n /** Unique identifier for the tab */\n id: string;\n /** Display label for the tab */\n label: string;\n}\n\n// ============================================================================\n// Property Field Types - Derive from constant for single source of truth\n// ============================================================================\n\n/**\n * Property field type constant - single source of truth for field types.\n * Use PROPERTY_FIELD_TYPES.text instead of \"text\" for type-safe comparisons.\n */\nexport const PROPERTY_FIELD_TYPES = {\n text: \"text\",\n textarea: \"textarea\",\n number: \"number\",\n boolean: \"boolean\",\n select: \"select\",\n color: \"color\",\n range: \"range\",\n dataSource: \"dataSource\",\n resource: \"resource\",\n alignment: \"alignment\",\n slider: \"slider\",\n colorPicker: \"colorPicker\",\n sectionHeader: \"sectionHeader\",\n separator: \"separator\",\n buttonGroup: \"buttonGroup\",\n colorSelect: \"colorSelect\",\n sectionLayoutSelect: \"sectionLayoutSelect\",\n background: \"background\",\n contentPosition: \"contentPosition\",\n textSizeSelect: \"textSizeSelect\",\n} as const;\n\n/**\n * Union type of all property field types, derived from PROPERTY_FIELD_TYPES constant.\n * @see deriving-typeof-for-object-keys pattern\n */\nexport type PropertyFieldType =\n (typeof PROPERTY_FIELD_TYPES)[keyof typeof PROPERTY_FIELD_TYPES];\n\n/**\n * Runtime validation for property field types.\n * @param value - The value to check\n * @returns true if value is a valid PropertyFieldType\n */\nexport function isPropertyFieldType(value: string): value is PropertyFieldType {\n return Object.values(PROPERTY_FIELD_TYPES).includes(\n value as PropertyFieldType,\n );\n}\n\n/**\n * Base schema for a property field\n */\nexport interface PropertyFieldSchema {\n /** Property key in the widget props */\n key: string;\n /** Display label for the field */\n label: string;\n /** Field type determines the input control */\n type: PropertyFieldType;\n /** Optional description/help text */\n description?: string;\n /** Optional default value */\n defaultValue?: unknown;\n /** Optional tab ID (must match a TabConfig id if widget has tabsConfig) */\n tab?: string;\n /** Optional group for organizing fields within a tab */\n group?: string;\n /**\n * @deprecated Use requiresKeyValue instead\n */\n requiresKeyToBeTrue?: string;\n /** Optional requires a specific key to have a specific value */\n requiresKeyValue?: { key: string; value: unknown };\n}\n\n/**\n * Text field schema\n */\nexport interface TextFieldSchema extends PropertyFieldSchema {\n type: \"text\";\n placeholder?: string;\n maxLength?: number;\n}\n\n/**\n * Textarea field schema\n */\nexport interface TextareaFieldSchema extends PropertyFieldSchema {\n type: \"textarea\";\n placeholder?: string;\n rows?: number;\n maxLength?: number;\n}\n\n/**\n * Number field schema\n */\nexport interface NumberFieldSchema extends PropertyFieldSchema {\n type: \"number\";\n min?: number;\n max?: number;\n step?: number;\n}\n\n/**\n * Boolean field schema\n */\nexport interface BooleanFieldSchema extends PropertyFieldSchema {\n type: \"boolean\";\n}\n\n/**\n * Select field schema with type-safe option values.\n * Uses StrictOmit to ensure \"defaultValue\" key exists on PropertyFieldSchema.\n */\nexport interface SelectFieldSchema<T extends string | number = string | number>\n extends StrictOmit<PropertyFieldSchema, \"defaultValue\"> {\n type: \"select\";\n options: Array<{ label: string; value: T }>;\n defaultValue?: T;\n}\n\n/**\n * Color field schema\n */\nexport interface ColorFieldSchema extends PropertyFieldSchema {\n type: \"color\";\n}\n\n/**\n * Range slider field schema\n */\nexport interface RangeFieldSchema extends PropertyFieldSchema {\n type: \"range\";\n min: number;\n max: number;\n step?: number;\n}\n\n/**\n * Data source field schema for configuring widget data sources\n */\nexport interface DataSourceFieldSchema extends PropertyFieldSchema {\n type: \"dataSource\";\n}\n\n/**\n * Resource field schema for selecting a single resource from the selection modal\n */\nexport interface ResourceFieldSchema extends PropertyFieldSchema {\n type: \"resource\";\n /** Optional filter to specific shareable types */\n allowedTypes?: string[];\n}\n\n/**\n * Alignment field schema\n */\nexport interface AlignmentFieldSchema extends PropertyFieldSchema {\n type: \"alignment\";\n options: {\n verticalEnabled: boolean;\n horizontalEnabled: boolean;\n };\n defaultValue?: AlignOptions;\n}\n\n/**\n * Slider field schema with optional unit suffix (e.g., \"rem\", \"px\")\n */\nexport interface SliderFieldSchema extends PropertyFieldSchema {\n type: \"slider\";\n min: number;\n max: number;\n step?: number;\n unit?: string;\n}\n\n/**\n * Color picker field schema with optional swatches\n */\nexport interface ColorPickerFieldSchema extends PropertyFieldSchema {\n type: \"colorPicker\";\n swatches?: string[];\n}\n\n/**\n * Section header field schema for visual grouping\n */\nexport interface SectionHeaderFieldSchema extends PropertyFieldSchema {\n type: \"sectionHeader\";\n subtitle?: string;\n}\n\n/**\n * Separator field schema for visual separation\n */\nexport interface SeparatorFieldSchema extends PropertyFieldSchema {\n type: \"separator\";\n}\n\n/**\n * Button group field schema.\n * Uses StrictOmit to ensure \"defaultValue\" key exists on PropertyFieldSchema.\n */\nexport interface ButtonGroupFieldSchema<\n T extends string | number = string | number,\n> extends StrictOmit<PropertyFieldSchema, \"defaultValue\"> {\n type: \"buttonGroup\";\n options: Array<{ label?: string; icon?: IconDefinition; value: T }>;\n defaultValue?: T;\n}\n\n/**\n * Color select field schema\n */\nexport interface ColorSelectFieldSchema extends PropertyFieldSchema {\n type: \"colorSelect\";\n defaultValue?: ColorOptions;\n}\n\n/**\n * Section layout select field schema for visual masonry layout selector\n */\nexport interface SectionLayoutSelectFieldSchema extends PropertyFieldSchema {\n type: \"sectionLayoutSelect\";\n defaultValue?: SectionLayoutType;\n}\n\n/**\n * Background field combines resource selection and color properties.\n * Uses StrictOmit to exclude conflicting \"type\" discriminant from parents.\n */\nexport interface BackgroundFieldSchema\n extends StrictOmit<ResourceFieldSchema, \"type\">,\n StrictOmit<ColorFieldSchema, \"type\"> {\n type: \"background\";\n}\n\n/**\n * Content position field schema for 3x3 grid position picker\n */\nexport interface ContentPositionFieldSchema extends PropertyFieldSchema {\n type: \"contentPosition\";\n defaultValue?: string;\n}\n\n/**\n * Text size select field schema for visual font size selector\n */\nexport interface TextSizeSelectFieldSchema extends PropertyFieldSchema {\n type: \"textSizeSelect\";\n defaultValue?: FontSizeOptions;\n}\n\n/**\n * Union of all field schema types\n */\nexport type PropertyField =\n | TextFieldSchema\n | TextareaFieldSchema\n | NumberFieldSchema\n | BooleanFieldSchema\n | SelectFieldSchema<string | number>\n | ColorFieldSchema\n | RangeFieldSchema\n | DataSourceFieldSchema\n | ResourceFieldSchema\n | AlignmentFieldSchema\n | SliderFieldSchema\n | ColorPickerFieldSchema\n | SectionHeaderFieldSchema\n | SeparatorFieldSchema\n | ButtonGroupFieldSchema<string | number>\n | ColorSelectFieldSchema\n | SectionLayoutSelectFieldSchema\n | BackgroundFieldSchema\n | ContentPositionFieldSchema\n | TextSizeSelectFieldSchema;\n\n/**\n * Schema for per-item configuration in custom data sources.\n * Widgets can define this to allow users to configure widget-specific\n * settings for each selected item (e.g., title, description, button).\n */\nexport interface ItemConfigSchema {\n /** Fields available for per-item configuration */\n fields: PropertyField[];\n /** Optional description shown at top of item config panel */\n description?: string;\n}\n\n/**\n * Schema for a widget's editable properties\n */\nexport interface WidgetPropertySchema {\n /** Widget type this schema applies to */\n widgetType: WidgetType;\n /** Display name for the widget */\n displayName: string;\n /** Optional tab configuration - if present, tabs are enabled */\n tabsConfig?: TabConfig[];\n /** Editable property fields */\n fields: PropertyField[];\n /** Optional custom validator function */\n validate?: (props: Record<string, unknown>) => string | null;\n /** Props that can be populated from data sources */\n dataSourceTargetProps?: string[];\n /** Optional schema for per-item configurations in custom data sources */\n itemConfigSchema?: ItemConfigSchema;\n}\n\n/**\n * Registry mapping widget types to their property schemas\n */\nexport type PropertySchemaRegistry = Record<WidgetType, WidgetPropertySchema>;\n\n/**\n * Group property fields by their group property\n */\nexport function groupPropertyFields(\n fields: readonly PropertyField[],\n): Record<string, PropertyField[]> {\n const grouped: Record<string, PropertyField[]> = {};\n\n fields.forEach((field) => {\n const group = field.group || \"General\";\n if (!grouped[group]) {\n grouped[group] = [];\n }\n grouped[group].push(field);\n });\n\n return grouped;\n}\n\n/**\n * Extract current values from widget props based on property fields\n */\nexport function extractPropertyValues(\n widget: Readonly<WidgetSchema>,\n fields: readonly PropertyField[],\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n\n fields.forEach((field) => {\n const value = widget.props[field.key];\n values[field.key] = value !== undefined ? value : field.defaultValue;\n });\n\n return values;\n}\n\n/**\n * Apply property values to widget props\n */\nexport function applyPropertyValues(\n widget: Readonly<WidgetSchema>,\n values: Readonly<Record<string, unknown>>,\n): WidgetSchema {\n return {\n ...widget,\n props: {\n ...widget.props,\n ...values,\n },\n };\n}\n","import type {\n ButtonGroupFieldSchema,\n ColorSelectFieldSchema,\n TextSizeSelectFieldSchema,\n} from \"./property-schema-types\";\nimport type {\n BorderRadiusOptions,\n PaddingOptions,\n ButtonSizeOptions,\n GapOptions,\n} from \"../types\";\nimport { faBan } from \"@fortawesome/pro-regular-svg-icons\";\n\nexport const getColorField = (\n props: Readonly<Omit<ColorSelectFieldSchema, \"type\">>,\n): ColorSelectFieldSchema => {\n return {\n ...props,\n type: \"colorSelect\",\n };\n};\n\nexport const getBorderRadiusField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<BorderRadiusOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<BorderRadiusOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: faBan, value: \"none\" },\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"md\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n { label: \"FULL\", value: \"full\" },\n ],\n };\n};\n\nexport const getPaddingField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<PaddingOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<PaddingOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: faBan, value: 0 },\n { label: \"SM\", value: 2 },\n { label: \"MD\", value: 4 },\n { label: \"LG\", value: 6 },\n { label: \"XL\", value: 8 },\n { label: \"FULL\", value: 10 },\n ],\n };\n};\n\nexport const getButtonSizeField = (\n props: Readonly<\n Omit<ButtonGroupFieldSchema<ButtonSizeOptions>, \"options\" | \"type\">\n >,\n): ButtonGroupFieldSchema<ButtonSizeOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"default\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n };\n};\n\nexport const getFontSizeField = (\n props: Readonly<Omit<TextSizeSelectFieldSchema, \"type\">>,\n): TextSizeSelectFieldSchema => {\n return {\n ...props,\n type: \"textSizeSelect\",\n };\n};\n\nexport const getGapField = (\n props: Readonly<Omit<ButtonGroupFieldSchema<GapOptions>, \"options\" | \"type\">>,\n): ButtonGroupFieldSchema<GapOptions> => {\n return {\n ...props,\n type: \"buttonGroup\",\n options: [\n { icon: faBan, value: \"none\" },\n { label: \"XS\", value: \"xs\" },\n { label: \"SM\", value: \"sm\" },\n { label: \"MD\", value: \"md\" },\n { label: \"LG\", value: \"lg\" },\n { label: \"XL\", value: \"xl\" },\n ],\n };\n};\n\n/**\n * Gap value mapping - use `as const satisfies` for compile-time validation\n * with literal type preservation.\n */\nexport const gapValues = {\n none: 0,\n xs: 1,\n sm: 2,\n md: 4,\n lg: 6,\n xl: 8,\n} as const satisfies Record<GapOptions, number>;\n"]}
@@ -1,7 +1,11 @@
1
- import { StrictOmit, AlignOptions, ColorOptions, SectionLayoutType, BorderRadiusOptions, PaddingOptions, ButtonSizeOptions, FontSizeOptions, GapOptions } from '../types/index.cjs';
2
- import { b as WidgetType, a as WidgetSchema } from '../shareable-item-DPmNZkE1.cjs';
3
- import '../theme-DrMUYZTO.cjs';
1
+ import { IconDefinition } from '@fortawesome/fontawesome-svg-core';
2
+ import { StrictOmit, AlignOptions, ColorOptions, SectionLayoutType, FontSizeOptions, BorderRadiusOptions, PaddingOptions, ButtonSizeOptions, GapOptions } from '../types/index.cjs';
3
+ import { b as WidgetType, W as WidgetSchema } from '../widget-schema-36uGUTWL.cjs';
4
+ import '../types-R1kV_DKF.cjs';
5
+ import 'colorjs.io';
6
+ import '../shareable-item-DkgWpwoU.cjs';
4
7
  import 'react';
8
+ import '../data-sources/types.cjs';
5
9
 
6
10
  /**
7
11
  * Tab configuration for organizing properties
@@ -36,6 +40,7 @@ declare const PROPERTY_FIELD_TYPES: {
36
40
  readonly sectionLayoutSelect: "sectionLayoutSelect";
37
41
  readonly background: "background";
38
42
  readonly contentPosition: "contentPosition";
43
+ readonly textSizeSelect: "textSizeSelect";
39
44
  };
40
45
  /**
41
46
  * Union type of all property field types, derived from PROPERTY_FIELD_TYPES constant.
@@ -197,7 +202,8 @@ interface SeparatorFieldSchema extends PropertyFieldSchema {
197
202
  interface ButtonGroupFieldSchema<T extends string | number = string | number> extends StrictOmit<PropertyFieldSchema, "defaultValue"> {
198
203
  type: "buttonGroup";
199
204
  options: Array<{
200
- label: string;
205
+ label?: string;
206
+ icon?: IconDefinition;
201
207
  value: T;
202
208
  }>;
203
209
  defaultValue?: T;
@@ -230,10 +236,17 @@ interface ContentPositionFieldSchema extends PropertyFieldSchema {
230
236
  type: "contentPosition";
231
237
  defaultValue?: string;
232
238
  }
239
+ /**
240
+ * Text size select field schema for visual font size selector
241
+ */
242
+ interface TextSizeSelectFieldSchema extends PropertyFieldSchema {
243
+ type: "textSizeSelect";
244
+ defaultValue?: FontSizeOptions;
245
+ }
233
246
  /**
234
247
  * Union of all field schema types
235
248
  */
236
- type PropertyField = TextFieldSchema | TextareaFieldSchema | NumberFieldSchema | BooleanFieldSchema | SelectFieldSchema<string | number> | ColorFieldSchema | RangeFieldSchema | DataSourceFieldSchema | ResourceFieldSchema | AlignmentFieldSchema | SliderFieldSchema | ColorPickerFieldSchema | SectionHeaderFieldSchema | SeparatorFieldSchema | ButtonGroupFieldSchema<string | number> | ColorSelectFieldSchema | SectionLayoutSelectFieldSchema | BackgroundFieldSchema | ContentPositionFieldSchema;
249
+ type PropertyField = TextFieldSchema | TextareaFieldSchema | NumberFieldSchema | BooleanFieldSchema | SelectFieldSchema<string | number> | ColorFieldSchema | RangeFieldSchema | DataSourceFieldSchema | ResourceFieldSchema | AlignmentFieldSchema | SliderFieldSchema | ColorPickerFieldSchema | SectionHeaderFieldSchema | SeparatorFieldSchema | ButtonGroupFieldSchema<string | number> | ColorSelectFieldSchema | SectionLayoutSelectFieldSchema | BackgroundFieldSchema | ContentPositionFieldSchema | TextSizeSelectFieldSchema;
237
250
  /**
238
251
  * Schema for per-item configuration in custom data sources.
239
252
  * Widgets can define this to allow users to configure widget-specific
@@ -285,7 +298,7 @@ declare const getColorField: (props: Readonly<Omit<ColorSelectFieldSchema, "type
285
298
  declare const getBorderRadiusField: (props: Readonly<Omit<ButtonGroupFieldSchema<BorderRadiusOptions>, "options" | "type">>) => ButtonGroupFieldSchema<BorderRadiusOptions>;
286
299
  declare const getPaddingField: (props: Readonly<Omit<ButtonGroupFieldSchema<PaddingOptions>, "options" | "type">>) => ButtonGroupFieldSchema<PaddingOptions>;
287
300
  declare const getButtonSizeField: (props: Readonly<Omit<ButtonGroupFieldSchema<ButtonSizeOptions>, "options" | "type">>) => ButtonGroupFieldSchema<ButtonSizeOptions>;
288
- declare const getFontSizeField: (props: Readonly<Omit<SelectFieldSchema<FontSizeOptions>, "options" | "type">>) => SelectFieldSchema<FontSizeOptions>;
301
+ declare const getFontSizeField: (props: Readonly<Omit<TextSizeSelectFieldSchema, "type">>) => TextSizeSelectFieldSchema;
289
302
  declare const getGapField: (props: Readonly<Omit<ButtonGroupFieldSchema<GapOptions>, "options" | "type">>) => ButtonGroupFieldSchema<GapOptions>;
290
303
  /**
291
304
  * Gap value mapping - use `as const satisfies` for compile-time validation
@@ -300,4 +313,4 @@ declare const gapValues: {
300
313
  readonly xl: 8;
301
314
  };
302
315
 
303
- export { type AlignmentFieldSchema, type BackgroundFieldSchema, type BooleanFieldSchema, type ButtonGroupFieldSchema, type ColorFieldSchema, type ColorPickerFieldSchema, type ColorSelectFieldSchema, type ContentPositionFieldSchema, type DataSourceFieldSchema, type ItemConfigSchema, type NumberFieldSchema, PROPERTY_FIELD_TYPES, type PropertyField, type PropertyFieldSchema, type PropertyFieldType, type PropertySchemaRegistry, type RangeFieldSchema, type ResourceFieldSchema, type SectionHeaderFieldSchema, type SectionLayoutSelectFieldSchema, type SelectFieldSchema, type SeparatorFieldSchema, type SliderFieldSchema, type TabConfig, type TextFieldSchema, type TextareaFieldSchema, type WidgetPropertySchema, applyPropertyValues, extractPropertyValues, gapValues, getBorderRadiusField, getButtonSizeField, getColorField, getFontSizeField, getGapField, getPaddingField, groupPropertyFields, isPropertyFieldType };
316
+ export { type AlignmentFieldSchema, type BackgroundFieldSchema, type BooleanFieldSchema, type ButtonGroupFieldSchema, type ColorFieldSchema, type ColorPickerFieldSchema, type ColorSelectFieldSchema, type ContentPositionFieldSchema, type DataSourceFieldSchema, type ItemConfigSchema, type NumberFieldSchema, PROPERTY_FIELD_TYPES, type PropertyField, type PropertyFieldSchema, type PropertyFieldType, type PropertySchemaRegistry, type RangeFieldSchema, type ResourceFieldSchema, type SectionHeaderFieldSchema, type SectionLayoutSelectFieldSchema, type SelectFieldSchema, type SeparatorFieldSchema, type SliderFieldSchema, type TabConfig, type TextFieldSchema, type TextSizeSelectFieldSchema, type TextareaFieldSchema, type WidgetPropertySchema, applyPropertyValues, extractPropertyValues, gapValues, getBorderRadiusField, getButtonSizeField, getColorField, getFontSizeField, getGapField, getPaddingField, groupPropertyFields, isPropertyFieldType };
@@ -1,7 +1,11 @@
1
- import { StrictOmit, AlignOptions, ColorOptions, SectionLayoutType, BorderRadiusOptions, PaddingOptions, ButtonSizeOptions, FontSizeOptions, GapOptions } from '../types/index.js';
2
- import { b as WidgetType, a as WidgetSchema } from '../shareable-item-DPmNZkE1.js';
3
- import '../theme-DrMUYZTO.js';
1
+ import { IconDefinition } from '@fortawesome/fontawesome-svg-core';
2
+ import { StrictOmit, AlignOptions, ColorOptions, SectionLayoutType, FontSizeOptions, BorderRadiusOptions, PaddingOptions, ButtonSizeOptions, GapOptions } from '../types/index.js';
3
+ import { b as WidgetType, W as WidgetSchema } from '../widget-schema-DxdlJD8E.js';
4
+ import '../types-R1kV_DKF.js';
5
+ import 'colorjs.io';
6
+ import '../shareable-item-DkgWpwoU.js';
4
7
  import 'react';
8
+ import '../data-sources/types.js';
5
9
 
6
10
  /**
7
11
  * Tab configuration for organizing properties
@@ -36,6 +40,7 @@ declare const PROPERTY_FIELD_TYPES: {
36
40
  readonly sectionLayoutSelect: "sectionLayoutSelect";
37
41
  readonly background: "background";
38
42
  readonly contentPosition: "contentPosition";
43
+ readonly textSizeSelect: "textSizeSelect";
39
44
  };
40
45
  /**
41
46
  * Union type of all property field types, derived from PROPERTY_FIELD_TYPES constant.
@@ -197,7 +202,8 @@ interface SeparatorFieldSchema extends PropertyFieldSchema {
197
202
  interface ButtonGroupFieldSchema<T extends string | number = string | number> extends StrictOmit<PropertyFieldSchema, "defaultValue"> {
198
203
  type: "buttonGroup";
199
204
  options: Array<{
200
- label: string;
205
+ label?: string;
206
+ icon?: IconDefinition;
201
207
  value: T;
202
208
  }>;
203
209
  defaultValue?: T;
@@ -230,10 +236,17 @@ interface ContentPositionFieldSchema extends PropertyFieldSchema {
230
236
  type: "contentPosition";
231
237
  defaultValue?: string;
232
238
  }
239
+ /**
240
+ * Text size select field schema for visual font size selector
241
+ */
242
+ interface TextSizeSelectFieldSchema extends PropertyFieldSchema {
243
+ type: "textSizeSelect";
244
+ defaultValue?: FontSizeOptions;
245
+ }
233
246
  /**
234
247
  * Union of all field schema types
235
248
  */
236
- type PropertyField = TextFieldSchema | TextareaFieldSchema | NumberFieldSchema | BooleanFieldSchema | SelectFieldSchema<string | number> | ColorFieldSchema | RangeFieldSchema | DataSourceFieldSchema | ResourceFieldSchema | AlignmentFieldSchema | SliderFieldSchema | ColorPickerFieldSchema | SectionHeaderFieldSchema | SeparatorFieldSchema | ButtonGroupFieldSchema<string | number> | ColorSelectFieldSchema | SectionLayoutSelectFieldSchema | BackgroundFieldSchema | ContentPositionFieldSchema;
249
+ type PropertyField = TextFieldSchema | TextareaFieldSchema | NumberFieldSchema | BooleanFieldSchema | SelectFieldSchema<string | number> | ColorFieldSchema | RangeFieldSchema | DataSourceFieldSchema | ResourceFieldSchema | AlignmentFieldSchema | SliderFieldSchema | ColorPickerFieldSchema | SectionHeaderFieldSchema | SeparatorFieldSchema | ButtonGroupFieldSchema<string | number> | ColorSelectFieldSchema | SectionLayoutSelectFieldSchema | BackgroundFieldSchema | ContentPositionFieldSchema | TextSizeSelectFieldSchema;
237
250
  /**
238
251
  * Schema for per-item configuration in custom data sources.
239
252
  * Widgets can define this to allow users to configure widget-specific
@@ -285,7 +298,7 @@ declare const getColorField: (props: Readonly<Omit<ColorSelectFieldSchema, "type
285
298
  declare const getBorderRadiusField: (props: Readonly<Omit<ButtonGroupFieldSchema<BorderRadiusOptions>, "options" | "type">>) => ButtonGroupFieldSchema<BorderRadiusOptions>;
286
299
  declare const getPaddingField: (props: Readonly<Omit<ButtonGroupFieldSchema<PaddingOptions>, "options" | "type">>) => ButtonGroupFieldSchema<PaddingOptions>;
287
300
  declare const getButtonSizeField: (props: Readonly<Omit<ButtonGroupFieldSchema<ButtonSizeOptions>, "options" | "type">>) => ButtonGroupFieldSchema<ButtonSizeOptions>;
288
- declare const getFontSizeField: (props: Readonly<Omit<SelectFieldSchema<FontSizeOptions>, "options" | "type">>) => SelectFieldSchema<FontSizeOptions>;
301
+ declare const getFontSizeField: (props: Readonly<Omit<TextSizeSelectFieldSchema, "type">>) => TextSizeSelectFieldSchema;
289
302
  declare const getGapField: (props: Readonly<Omit<ButtonGroupFieldSchema<GapOptions>, "options" | "type">>) => ButtonGroupFieldSchema<GapOptions>;
290
303
  /**
291
304
  * Gap value mapping - use `as const satisfies` for compile-time validation
@@ -300,4 +313,4 @@ declare const gapValues: {
300
313
  readonly xl: 8;
301
314
  };
302
315
 
303
- export { type AlignmentFieldSchema, type BackgroundFieldSchema, type BooleanFieldSchema, type ButtonGroupFieldSchema, type ColorFieldSchema, type ColorPickerFieldSchema, type ColorSelectFieldSchema, type ContentPositionFieldSchema, type DataSourceFieldSchema, type ItemConfigSchema, type NumberFieldSchema, PROPERTY_FIELD_TYPES, type PropertyField, type PropertyFieldSchema, type PropertyFieldType, type PropertySchemaRegistry, type RangeFieldSchema, type ResourceFieldSchema, type SectionHeaderFieldSchema, type SectionLayoutSelectFieldSchema, type SelectFieldSchema, type SeparatorFieldSchema, type SliderFieldSchema, type TabConfig, type TextFieldSchema, type TextareaFieldSchema, type WidgetPropertySchema, applyPropertyValues, extractPropertyValues, gapValues, getBorderRadiusField, getButtonSizeField, getColorField, getFontSizeField, getGapField, getPaddingField, groupPropertyFields, isPropertyFieldType };
316
+ export { type AlignmentFieldSchema, type BackgroundFieldSchema, type BooleanFieldSchema, type ButtonGroupFieldSchema, type ColorFieldSchema, type ColorPickerFieldSchema, type ColorSelectFieldSchema, type ContentPositionFieldSchema, type DataSourceFieldSchema, type ItemConfigSchema, type NumberFieldSchema, PROPERTY_FIELD_TYPES, type PropertyField, type PropertyFieldSchema, type PropertyFieldType, type PropertySchemaRegistry, type RangeFieldSchema, type ResourceFieldSchema, type SectionHeaderFieldSchema, type SectionLayoutSelectFieldSchema, type SelectFieldSchema, type SeparatorFieldSchema, type SliderFieldSchema, type TabConfig, type TextFieldSchema, type TextSizeSelectFieldSchema, type TextareaFieldSchema, type WidgetPropertySchema, applyPropertyValues, extractPropertyValues, gapValues, getBorderRadiusField, getButtonSizeField, getColorField, getFontSizeField, getGapField, getPaddingField, groupPropertyFields, isPropertyFieldType };