@almadar/ui 5.4.0 → 5.5.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.
- package/dist/avl/index.cjs +332 -167
- package/dist/avl/index.js +332 -167
- package/dist/components/index.cjs +329 -164
- package/dist/components/index.js +329 -164
- package/dist/components/molecules/ButtonGroup.d.ts +10 -0
- package/dist/components/molecules/DataGrid.d.ts +5 -0
- package/dist/components/molecules/DataList.d.ts +5 -0
- package/dist/components/molecules/EmptyState.d.ts +3 -0
- package/dist/components/molecules/FilterGroup.d.ts +7 -0
- package/dist/components/molecules/Modal.d.ts +7 -0
- package/dist/components/molecules/StatDisplay.d.ts +3 -0
- package/dist/components/organisms/Chart.d.ts +20 -1
- package/dist/components/organisms/DataTable.d.ts +4 -1
- package/dist/components/organisms/Header.d.ts +3 -0
- package/dist/components/organisms/Timeline.d.ts +7 -0
- package/dist/providers/index.cjs +332 -167
- package/dist/providers/index.js +332 -167
- package/dist/runtime/index.cjs +332 -167
- package/dist/runtime/index.js +332 -167
- package/package.json +1 -1
package/dist/components/index.js
CHANGED
|
@@ -6174,7 +6174,7 @@ var init_EntitySchemaContext = __esm({
|
|
|
6174
6174
|
EntitySchemaContext = createContext(null);
|
|
6175
6175
|
}
|
|
6176
6176
|
});
|
|
6177
|
-
var sizeClasses5, minWidthClasses, Modal;
|
|
6177
|
+
var sizeClasses5, minWidthClasses, lookStyles2, Modal;
|
|
6178
6178
|
var init_Modal = __esm({
|
|
6179
6179
|
"components/molecules/Modal.tsx"() {
|
|
6180
6180
|
"use client";
|
|
@@ -6199,6 +6199,12 @@ var init_Modal = __esm({
|
|
|
6199
6199
|
xl: "min-w-[700px] max-sm:min-w-0",
|
|
6200
6200
|
full: "min-w-0"
|
|
6201
6201
|
};
|
|
6202
|
+
lookStyles2 = {
|
|
6203
|
+
"centered-card": "",
|
|
6204
|
+
"top-sheet": "top-0 rounded-t-none rounded-b-container max-w-full w-full",
|
|
6205
|
+
"side-drawer": "right-0 top-0 bottom-0 h-full rounded-l-container rounded-r-none w-[400px] max-w-full",
|
|
6206
|
+
"full-screen": "inset-0 rounded-none w-full h-full max-w-full"
|
|
6207
|
+
};
|
|
6202
6208
|
Modal = ({
|
|
6203
6209
|
isOpen = true,
|
|
6204
6210
|
onClose = () => {
|
|
@@ -6212,7 +6218,8 @@ var init_Modal = __esm({
|
|
|
6212
6218
|
closeOnEscape = true,
|
|
6213
6219
|
className,
|
|
6214
6220
|
closeEvent,
|
|
6215
|
-
swipeDownToClose = true
|
|
6221
|
+
swipeDownToClose = true,
|
|
6222
|
+
look = "centered-card"
|
|
6216
6223
|
}) => {
|
|
6217
6224
|
const eventBus = useEventBus();
|
|
6218
6225
|
const modalRef = useRef(null);
|
|
@@ -6297,6 +6304,7 @@ var init_Modal = __esm({
|
|
|
6297
6304
|
// Mobile: take the entire screen. Override desktop max-w cap,
|
|
6298
6305
|
// full height, no rounded corners, no min-width.
|
|
6299
6306
|
"max-sm:max-w-none max-sm:max-h-none max-sm:w-full max-sm:h-full max-sm:rounded-none",
|
|
6307
|
+
lookStyles2[look],
|
|
6300
6308
|
className
|
|
6301
6309
|
),
|
|
6302
6310
|
style: dragY > 0 ? {
|
|
@@ -14818,7 +14826,7 @@ var init_BookTableOfContents = __esm({
|
|
|
14818
14826
|
BookTableOfContents.displayName = "BookTableOfContents";
|
|
14819
14827
|
}
|
|
14820
14828
|
});
|
|
14821
|
-
var ICON_NAME_ALIASES, EmptyState;
|
|
14829
|
+
var ICON_NAME_ALIASES, lookStyles3, EmptyState;
|
|
14822
14830
|
var init_EmptyState = __esm({
|
|
14823
14831
|
"components/molecules/EmptyState.tsx"() {
|
|
14824
14832
|
"use client";
|
|
@@ -14835,6 +14843,12 @@ var init_EmptyState = __esm({
|
|
|
14835
14843
|
error: "x-circle",
|
|
14836
14844
|
warning: "alert-circle"
|
|
14837
14845
|
};
|
|
14846
|
+
lookStyles3 = {
|
|
14847
|
+
"icon-only": "",
|
|
14848
|
+
illustrated: "[&_svg]:w-32 [&_svg]:h-32",
|
|
14849
|
+
"text-only": "[&_svg]:hidden",
|
|
14850
|
+
mascot: "[&_svg]:w-24 [&_svg]:h-24 [&_svg]:rounded-pill"
|
|
14851
|
+
};
|
|
14838
14852
|
EmptyState = ({
|
|
14839
14853
|
icon,
|
|
14840
14854
|
title,
|
|
@@ -14845,7 +14859,8 @@ var init_EmptyState = __esm({
|
|
|
14845
14859
|
className,
|
|
14846
14860
|
destructive,
|
|
14847
14861
|
variant,
|
|
14848
|
-
actionEvent
|
|
14862
|
+
actionEvent,
|
|
14863
|
+
look = "icon-only"
|
|
14849
14864
|
}) => {
|
|
14850
14865
|
const eventBus = useEventBus();
|
|
14851
14866
|
const { t } = useTranslate();
|
|
@@ -14865,6 +14880,7 @@ var init_EmptyState = __esm({
|
|
|
14865
14880
|
align: "center",
|
|
14866
14881
|
className: cn(
|
|
14867
14882
|
"justify-center py-12 text-center",
|
|
14883
|
+
lookStyles3[look],
|
|
14868
14884
|
className
|
|
14869
14885
|
),
|
|
14870
14886
|
children: [
|
|
@@ -16105,7 +16121,7 @@ function useSafeEventBus2() {
|
|
|
16105
16121
|
} };
|
|
16106
16122
|
}
|
|
16107
16123
|
}
|
|
16108
|
-
var log6, ButtonGroup;
|
|
16124
|
+
var log6, lookStyles4, ButtonGroup;
|
|
16109
16125
|
var init_ButtonGroup = __esm({
|
|
16110
16126
|
"components/molecules/ButtonGroup.tsx"() {
|
|
16111
16127
|
"use client";
|
|
@@ -16113,6 +16129,13 @@ var init_ButtonGroup = __esm({
|
|
|
16113
16129
|
init_atoms();
|
|
16114
16130
|
init_useEventBus();
|
|
16115
16131
|
log6 = createLogger("almadar:ui:button-group");
|
|
16132
|
+
lookStyles4 = {
|
|
16133
|
+
"right-aligned-buttons": "",
|
|
16134
|
+
"floating-bar": "fixed bottom-section left-1/2 -translate-x-1/2 shadow-elevation-toast bg-card p-card-sm rounded-container",
|
|
16135
|
+
"inline-row": "gap-2 inline-flex",
|
|
16136
|
+
"dropdown-menu": "[&>button:not(:first-child)]:hidden",
|
|
16137
|
+
"command-palette-trigger": "[&>button:not(:first-child)]:hidden"
|
|
16138
|
+
};
|
|
16116
16139
|
ButtonGroup = ({
|
|
16117
16140
|
children,
|
|
16118
16141
|
primary,
|
|
@@ -16122,7 +16145,8 @@ var init_ButtonGroup = __esm({
|
|
|
16122
16145
|
className,
|
|
16123
16146
|
// Filter-group pattern props (entity and filters are used for schema-driven filtering)
|
|
16124
16147
|
entity: _entity,
|
|
16125
|
-
filters
|
|
16148
|
+
filters,
|
|
16149
|
+
look = "right-aligned-buttons"
|
|
16126
16150
|
}) => {
|
|
16127
16151
|
const eventBus = useSafeEventBus2();
|
|
16128
16152
|
const variantClasses2 = {
|
|
@@ -16199,6 +16223,7 @@ var init_ButtonGroup = __esm({
|
|
|
16199
16223
|
"inline-flex gap-2",
|
|
16200
16224
|
variantClasses2[variant],
|
|
16201
16225
|
orientationClasses[orientation],
|
|
16226
|
+
lookStyles4[look],
|
|
16202
16227
|
className
|
|
16203
16228
|
),
|
|
16204
16229
|
role: "group",
|
|
@@ -18730,7 +18755,7 @@ var init_CastleTemplate = __esm({
|
|
|
18730
18755
|
CastleTemplate.displayName = "CastleTemplate";
|
|
18731
18756
|
}
|
|
18732
18757
|
});
|
|
18733
|
-
var CHART_COLORS, seriesColor, monthFormatter, formatTimeLabel, BarChart, PieChart, LineChart, ScatterChart, Chart;
|
|
18758
|
+
var CHART_COLORS, seriesColor, monthFormatter, formatTimeLabel, BarChart, PieChart, LineChart, ScatterChart, LOOK_FROM_CHART_TYPE, Chart;
|
|
18734
18759
|
var init_Chart = __esm({
|
|
18735
18760
|
"components/organisms/Chart.tsx"() {
|
|
18736
18761
|
"use client";
|
|
@@ -18760,7 +18785,7 @@ var init_Chart = __esm({
|
|
|
18760
18785
|
if (Number.isNaN(parsed.getTime())) return raw;
|
|
18761
18786
|
return monthFormatter.format(parsed);
|
|
18762
18787
|
};
|
|
18763
|
-
BarChart = ({ series, height, showValues, stack, timeAxis, histogram = false, onPointClick }) => {
|
|
18788
|
+
BarChart = ({ series, height, showValues, stack, timeAxis, histogram = false, horizontal = false, onPointClick }) => {
|
|
18764
18789
|
const categories = useMemo(() => {
|
|
18765
18790
|
const set = [];
|
|
18766
18791
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -18798,6 +18823,64 @@ var init_Chart = __esm({
|
|
|
18798
18823
|
}
|
|
18799
18824
|
return m;
|
|
18800
18825
|
}, [series, stack, columnTotals]);
|
|
18826
|
+
if (horizontal) {
|
|
18827
|
+
return /* @__PURE__ */ jsx(VStack, { gap: "xs", align: "stretch", className: "w-full", style: { minHeight: height }, children: categories.map((label, catIdx) => {
|
|
18828
|
+
const displayLabel = timeAxis ? formatTimeLabel(label) : label;
|
|
18829
|
+
const total = columnTotals?.[catIdx] ?? 1;
|
|
18830
|
+
return /* @__PURE__ */ jsxs(HStack, { gap: "sm", align: "center", className: "w-full", children: [
|
|
18831
|
+
/* @__PURE__ */ jsx(
|
|
18832
|
+
Typography,
|
|
18833
|
+
{
|
|
18834
|
+
variant: "caption",
|
|
18835
|
+
color: "secondary",
|
|
18836
|
+
className: "truncate text-right",
|
|
18837
|
+
style: { width: 80, flexShrink: 0 },
|
|
18838
|
+
children: displayLabel
|
|
18839
|
+
}
|
|
18840
|
+
),
|
|
18841
|
+
/* @__PURE__ */ jsx(
|
|
18842
|
+
HStack,
|
|
18843
|
+
{
|
|
18844
|
+
gap: stack === "none" ? "xs" : "none",
|
|
18845
|
+
align: "center",
|
|
18846
|
+
className: "flex-1 min-w-0",
|
|
18847
|
+
style: { height: 24 },
|
|
18848
|
+
children: series.map((s, sIdx) => {
|
|
18849
|
+
const value = valueAt(s, label);
|
|
18850
|
+
const ratio = stack === "normalize" ? total === 0 ? 0 : value / total * 100 : value / maxValue * 100;
|
|
18851
|
+
const color = seriesColor(s, sIdx);
|
|
18852
|
+
return /* @__PURE__ */ jsx(
|
|
18853
|
+
Box,
|
|
18854
|
+
{
|
|
18855
|
+
className: "h-full rounded-r-sm transition-all duration-500 ease-out min-w-[2px] cursor-pointer hover:opacity-80",
|
|
18856
|
+
style: {
|
|
18857
|
+
width: `${ratio}%`,
|
|
18858
|
+
backgroundColor: color
|
|
18859
|
+
},
|
|
18860
|
+
onClick: () => onPointClick?.(
|
|
18861
|
+
{ label, value, color },
|
|
18862
|
+
s.name
|
|
18863
|
+
),
|
|
18864
|
+
title: `${s.name}: ${value}`
|
|
18865
|
+
},
|
|
18866
|
+
s.name
|
|
18867
|
+
);
|
|
18868
|
+
})
|
|
18869
|
+
}
|
|
18870
|
+
),
|
|
18871
|
+
showValues && series.length === 1 && /* @__PURE__ */ jsx(
|
|
18872
|
+
Typography,
|
|
18873
|
+
{
|
|
18874
|
+
variant: "caption",
|
|
18875
|
+
color: "secondary",
|
|
18876
|
+
className: "tabular-nums",
|
|
18877
|
+
style: { width: 40, flexShrink: 0 },
|
|
18878
|
+
children: valueAt(series[0], label)
|
|
18879
|
+
}
|
|
18880
|
+
)
|
|
18881
|
+
] }, label);
|
|
18882
|
+
}) });
|
|
18883
|
+
}
|
|
18801
18884
|
return /* @__PURE__ */ jsx(
|
|
18802
18885
|
HStack,
|
|
18803
18886
|
{
|
|
@@ -19225,10 +19308,20 @@ var init_Chart = __esm({
|
|
|
19225
19308
|
}
|
|
19226
19309
|
);
|
|
19227
19310
|
};
|
|
19311
|
+
LOOK_FROM_CHART_TYPE = {
|
|
19312
|
+
bar: "bar-vertical",
|
|
19313
|
+
line: "line",
|
|
19314
|
+
pie: "pie",
|
|
19315
|
+
area: "area",
|
|
19316
|
+
donut: "donut",
|
|
19317
|
+
scatter: "scatter",
|
|
19318
|
+
histogram: "histogram"
|
|
19319
|
+
};
|
|
19228
19320
|
Chart = ({
|
|
19229
19321
|
title,
|
|
19230
19322
|
subtitle,
|
|
19231
|
-
chartType
|
|
19323
|
+
chartType,
|
|
19324
|
+
look,
|
|
19232
19325
|
series,
|
|
19233
19326
|
data: simpleData,
|
|
19234
19327
|
scatterData,
|
|
@@ -19244,6 +19337,7 @@ var init_Chart = __esm({
|
|
|
19244
19337
|
error,
|
|
19245
19338
|
className
|
|
19246
19339
|
}) => {
|
|
19340
|
+
const resolvedLook = look ?? (chartType ? LOOK_FROM_CHART_TYPE[chartType] : "bar-vertical");
|
|
19247
19341
|
const eventBus = useEventBus();
|
|
19248
19342
|
const { t } = useTranslate();
|
|
19249
19343
|
const handleAction = useCallback(
|
|
@@ -19272,7 +19366,7 @@ var init_Chart = __esm({
|
|
|
19272
19366
|
return [];
|
|
19273
19367
|
}, [simpleData, series]);
|
|
19274
19368
|
const firstSeriesData = normalizedSeries[0]?.data ?? [];
|
|
19275
|
-
const hasContent =
|
|
19369
|
+
const hasContent = resolvedLook === "scatter" ? (scatterData?.length ?? 0) > 0 : normalizedSeries.some((s) => s.data.length > 0);
|
|
19276
19370
|
if (isLoading) {
|
|
19277
19371
|
return /* @__PURE__ */ jsx(LoadingState, { message: "Loading chart...", className });
|
|
19278
19372
|
}
|
|
@@ -19307,7 +19401,7 @@ var init_Chart = __esm({
|
|
|
19307
19401
|
)) })
|
|
19308
19402
|
] }),
|
|
19309
19403
|
/* @__PURE__ */ jsxs(Box, { className: "w-full", children: [
|
|
19310
|
-
|
|
19404
|
+
resolvedLook === "bar-vertical" && /* @__PURE__ */ jsx(
|
|
19311
19405
|
BarChart,
|
|
19312
19406
|
{
|
|
19313
19407
|
series: normalizedSeries,
|
|
@@ -19318,7 +19412,19 @@ var init_Chart = __esm({
|
|
|
19318
19412
|
onPointClick: handlePointClick
|
|
19319
19413
|
}
|
|
19320
19414
|
),
|
|
19321
|
-
|
|
19415
|
+
resolvedLook === "bar-horizontal" && /* @__PURE__ */ jsx(
|
|
19416
|
+
BarChart,
|
|
19417
|
+
{
|
|
19418
|
+
series: normalizedSeries,
|
|
19419
|
+
height,
|
|
19420
|
+
showValues,
|
|
19421
|
+
stack,
|
|
19422
|
+
timeAxis,
|
|
19423
|
+
horizontal: true,
|
|
19424
|
+
onPointClick: handlePointClick
|
|
19425
|
+
}
|
|
19426
|
+
),
|
|
19427
|
+
resolvedLook === "histogram" && /* @__PURE__ */ jsx(
|
|
19322
19428
|
BarChart,
|
|
19323
19429
|
{
|
|
19324
19430
|
series: normalizedSeries,
|
|
@@ -19330,7 +19436,7 @@ var init_Chart = __esm({
|
|
|
19330
19436
|
onPointClick: handlePointClick
|
|
19331
19437
|
}
|
|
19332
19438
|
),
|
|
19333
|
-
|
|
19439
|
+
resolvedLook === "line" && /* @__PURE__ */ jsx(
|
|
19334
19440
|
LineChart,
|
|
19335
19441
|
{
|
|
19336
19442
|
series: normalizedSeries,
|
|
@@ -19340,7 +19446,7 @@ var init_Chart = __esm({
|
|
|
19340
19446
|
onPointClick: handlePointClick
|
|
19341
19447
|
}
|
|
19342
19448
|
),
|
|
19343
|
-
|
|
19449
|
+
resolvedLook === "area" && /* @__PURE__ */ jsx(
|
|
19344
19450
|
LineChart,
|
|
19345
19451
|
{
|
|
19346
19452
|
series: normalizedSeries,
|
|
@@ -19351,7 +19457,7 @@ var init_Chart = __esm({
|
|
|
19351
19457
|
onPointClick: handlePointClick
|
|
19352
19458
|
}
|
|
19353
19459
|
),
|
|
19354
|
-
|
|
19460
|
+
resolvedLook === "pie" && /* @__PURE__ */ jsx(
|
|
19355
19461
|
PieChart,
|
|
19356
19462
|
{
|
|
19357
19463
|
data: firstSeriesData,
|
|
@@ -19360,7 +19466,7 @@ var init_Chart = __esm({
|
|
|
19360
19466
|
onPointClick: handlePointClick
|
|
19361
19467
|
}
|
|
19362
19468
|
),
|
|
19363
|
-
|
|
19469
|
+
resolvedLook === "donut" && /* @__PURE__ */ jsx(
|
|
19364
19470
|
PieChart,
|
|
19365
19471
|
{
|
|
19366
19472
|
data: firstSeriesData,
|
|
@@ -19370,7 +19476,7 @@ var init_Chart = __esm({
|
|
|
19370
19476
|
onPointClick: handlePointClick
|
|
19371
19477
|
}
|
|
19372
19478
|
),
|
|
19373
|
-
|
|
19479
|
+
resolvedLook === "scatter" && /* @__PURE__ */ jsx(
|
|
19374
19480
|
ScatterChart,
|
|
19375
19481
|
{
|
|
19376
19482
|
data: scatterData ?? [],
|
|
@@ -23032,7 +23138,7 @@ var init_useQuerySingleton = __esm({
|
|
|
23032
23138
|
queryStores = /* @__PURE__ */ new Map();
|
|
23033
23139
|
}
|
|
23034
23140
|
});
|
|
23035
|
-
var resolveFilterType, FilterGroup;
|
|
23141
|
+
var resolveFilterType, lookStyles5, FilterGroup;
|
|
23036
23142
|
var init_FilterGroup = __esm({
|
|
23037
23143
|
"components/molecules/FilterGroup.tsx"() {
|
|
23038
23144
|
"use client";
|
|
@@ -23046,6 +23152,13 @@ var init_FilterGroup = __esm({
|
|
|
23046
23152
|
init_useEventBus();
|
|
23047
23153
|
init_useQuerySingleton();
|
|
23048
23154
|
resolveFilterType = (filter) => filter.filterType ?? filter.type;
|
|
23155
|
+
lookStyles5 = {
|
|
23156
|
+
toolbar: "",
|
|
23157
|
+
chips: "gap-2 [&>*]:rounded-pill [&>*]:px-3 [&>*]:py-1",
|
|
23158
|
+
pills: "gap-2 [&>*]:rounded-pill",
|
|
23159
|
+
"popover-trigger": "[&>*:not(:first-child)]:hidden",
|
|
23160
|
+
"inline-column-header": "hidden"
|
|
23161
|
+
};
|
|
23049
23162
|
FilterGroup = ({
|
|
23050
23163
|
entity,
|
|
23051
23164
|
filters,
|
|
@@ -23055,7 +23168,8 @@ var init_FilterGroup = __esm({
|
|
|
23055
23168
|
variant = "default",
|
|
23056
23169
|
showIcon = true,
|
|
23057
23170
|
query,
|
|
23058
|
-
isLoading
|
|
23171
|
+
isLoading,
|
|
23172
|
+
look = "toolbar"
|
|
23059
23173
|
}) => {
|
|
23060
23174
|
const eventBus = useEventBus();
|
|
23061
23175
|
const queryState = useQuerySingleton(query);
|
|
@@ -23110,63 +23224,71 @@ var init_FilterGroup = __esm({
|
|
|
23110
23224
|
}, [onClearAll, queryState, eventBus, entity, query]);
|
|
23111
23225
|
const activeFilterCount = Object.keys(selectedValues).length;
|
|
23112
23226
|
if (variant === "pills") {
|
|
23113
|
-
return /* @__PURE__ */ jsxs(
|
|
23114
|
-
|
|
23115
|
-
|
|
23116
|
-
|
|
23117
|
-
|
|
23118
|
-
|
|
23119
|
-
|
|
23120
|
-
|
|
23121
|
-
HStack,
|
|
23122
|
-
|
|
23123
|
-
|
|
23124
|
-
|
|
23125
|
-
|
|
23126
|
-
|
|
23127
|
-
|
|
23128
|
-
|
|
23129
|
-
|
|
23130
|
-
|
|
23131
|
-
|
|
23132
|
-
|
|
23133
|
-
|
|
23134
|
-
|
|
23135
|
-
|
|
23136
|
-
|
|
23137
|
-
|
|
23138
|
-
|
|
23139
|
-
|
|
23140
|
-
|
|
23141
|
-
|
|
23142
|
-
|
|
23143
|
-
className: cn(
|
|
23144
|
-
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
23145
|
-
"border-l-[length:var(--border-width)] border-border",
|
|
23146
|
-
selectedValues[filter.field] === option ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
23227
|
+
return /* @__PURE__ */ jsxs(
|
|
23228
|
+
HStack,
|
|
23229
|
+
{
|
|
23230
|
+
gap: "md",
|
|
23231
|
+
align: "center",
|
|
23232
|
+
className: cn("flex-wrap", lookStyles5[look], className),
|
|
23233
|
+
children: [
|
|
23234
|
+
showIcon && /* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4 text-muted-foreground" }),
|
|
23235
|
+
filters.map((filter) => /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
23236
|
+
/* @__PURE__ */ jsxs("span", { className: "text-sm font-medium text-muted-foreground", children: [
|
|
23237
|
+
filter.label,
|
|
23238
|
+
":"
|
|
23239
|
+
] }),
|
|
23240
|
+
/* @__PURE__ */ jsxs(
|
|
23241
|
+
HStack,
|
|
23242
|
+
{
|
|
23243
|
+
gap: "none",
|
|
23244
|
+
className: "rounded-sm overflow-hidden border-[length:var(--border-width)] border-border",
|
|
23245
|
+
children: [
|
|
23246
|
+
/* @__PURE__ */ jsx(
|
|
23247
|
+
"button",
|
|
23248
|
+
{
|
|
23249
|
+
type: "button",
|
|
23250
|
+
onClick: () => handleFilterSelect(filter.field, null),
|
|
23251
|
+
className: cn(
|
|
23252
|
+
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
23253
|
+
!selectedValues[filter.field] ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
23254
|
+
),
|
|
23255
|
+
children: "All"
|
|
23256
|
+
}
|
|
23147
23257
|
),
|
|
23148
|
-
|
|
23149
|
-
|
|
23150
|
-
|
|
23151
|
-
|
|
23152
|
-
|
|
23153
|
-
|
|
23154
|
-
|
|
23155
|
-
|
|
23156
|
-
|
|
23157
|
-
|
|
23158
|
-
|
|
23159
|
-
|
|
23160
|
-
|
|
23161
|
-
|
|
23162
|
-
|
|
23163
|
-
|
|
23164
|
-
|
|
23165
|
-
|
|
23166
|
-
|
|
23258
|
+
filter.options?.map((option) => /* @__PURE__ */ jsx(
|
|
23259
|
+
"button",
|
|
23260
|
+
{
|
|
23261
|
+
type: "button",
|
|
23262
|
+
onClick: () => handleFilterSelect(filter.field, option),
|
|
23263
|
+
className: cn(
|
|
23264
|
+
"px-3 py-1.5 text-sm font-medium transition-all duration-[var(--transition-fast)]",
|
|
23265
|
+
"border-l-[length:var(--border-width)] border-border",
|
|
23266
|
+
selectedValues[filter.field] === option ? "bg-primary text-primary-foreground" : "bg-card text-muted-foreground hover:bg-muted"
|
|
23267
|
+
),
|
|
23268
|
+
children: option
|
|
23269
|
+
},
|
|
23270
|
+
option
|
|
23271
|
+
))
|
|
23272
|
+
]
|
|
23273
|
+
}
|
|
23274
|
+
)
|
|
23275
|
+
] }, filter.field)),
|
|
23276
|
+
activeFilterCount > 0 && /* @__PURE__ */ jsx(
|
|
23277
|
+
Button,
|
|
23278
|
+
{
|
|
23279
|
+
variant: "ghost",
|
|
23280
|
+
size: "sm",
|
|
23281
|
+
onClick: handleClearAll,
|
|
23282
|
+
leftIcon: /* @__PURE__ */ jsx(Icon, { name: "x", className: "h-3.5 w-3.5" }),
|
|
23283
|
+
children: "Clear"
|
|
23284
|
+
}
|
|
23285
|
+
)
|
|
23286
|
+
]
|
|
23287
|
+
}
|
|
23288
|
+
);
|
|
23167
23289
|
}
|
|
23168
23290
|
if (variant === "vertical") {
|
|
23169
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
23291
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-4", lookStyles5[look], className), children: [
|
|
23170
23292
|
showIcon && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-muted-foreground", children: [
|
|
23171
23293
|
/* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4" }),
|
|
23172
23294
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-bold uppercase tracking-wide", children: "Filters" })
|
|
@@ -23249,92 +23371,100 @@ var init_FilterGroup = __esm({
|
|
|
23249
23371
|
] });
|
|
23250
23372
|
}
|
|
23251
23373
|
if (variant === "compact") {
|
|
23252
|
-
return /* @__PURE__ */ jsxs(
|
|
23253
|
-
|
|
23254
|
-
|
|
23255
|
-
|
|
23256
|
-
|
|
23257
|
-
|
|
23258
|
-
|
|
23259
|
-
|
|
23260
|
-
|
|
23261
|
-
|
|
23262
|
-
|
|
23263
|
-
|
|
23264
|
-
|
|
23265
|
-
|
|
23266
|
-
|
|
23267
|
-
|
|
23268
|
-
|
|
23269
|
-
|
|
23270
|
-
|
|
23271
|
-
|
|
23272
|
-
|
|
23273
|
-
|
|
23274
|
-
|
|
23275
|
-
|
|
23276
|
-
|
|
23277
|
-
|
|
23278
|
-
|
|
23279
|
-
|
|
23280
|
-
|
|
23281
|
-
|
|
23282
|
-
value: selectedValues[`${filter.field}_to`] || "",
|
|
23283
|
-
onChange: (e) => handleFilterSelect(
|
|
23284
|
-
`${filter.field}_to`,
|
|
23285
|
-
e.target.value || null
|
|
23374
|
+
return /* @__PURE__ */ jsxs(
|
|
23375
|
+
HStack,
|
|
23376
|
+
{
|
|
23377
|
+
gap: "sm",
|
|
23378
|
+
align: "center",
|
|
23379
|
+
className: cn("flex-wrap", lookStyles5[look], className),
|
|
23380
|
+
children: [
|
|
23381
|
+
showIcon && /* @__PURE__ */ jsx(Icon, { name: "filter", className: "h-4 w-4 text-muted-foreground" }),
|
|
23382
|
+
filters.map((filter) => /* @__PURE__ */ jsx("div", { className: "min-w-[120px]", children: resolveFilterType(filter) === "date" ? /* @__PURE__ */ jsx(
|
|
23383
|
+
Input,
|
|
23384
|
+
{
|
|
23385
|
+
type: "date",
|
|
23386
|
+
value: selectedValues[filter.field] || "",
|
|
23387
|
+
onChange: (e) => handleFilterSelect(filter.field, e.target.value || null),
|
|
23388
|
+
clearable: true,
|
|
23389
|
+
onClear: () => handleFilterSelect(filter.field, null),
|
|
23390
|
+
className: "text-sm"
|
|
23391
|
+
}
|
|
23392
|
+
) : resolveFilterType(filter) === "daterange" || resolveFilterType(filter) === "date-range" ? /* @__PURE__ */ jsxs(HStack, { gap: "xs", align: "center", children: [
|
|
23393
|
+
/* @__PURE__ */ jsx(
|
|
23394
|
+
Input,
|
|
23395
|
+
{
|
|
23396
|
+
type: "date",
|
|
23397
|
+
value: selectedValues[`${filter.field}_from`] || "",
|
|
23398
|
+
onChange: (e) => handleFilterSelect(
|
|
23399
|
+
`${filter.field}_from`,
|
|
23400
|
+
e.target.value || null
|
|
23401
|
+
),
|
|
23402
|
+
className: "text-sm min-w-[100px]"
|
|
23403
|
+
}
|
|
23286
23404
|
),
|
|
23287
|
-
className: "text-
|
|
23288
|
-
|
|
23289
|
-
|
|
23290
|
-
|
|
23291
|
-
|
|
23292
|
-
|
|
23293
|
-
|
|
23294
|
-
|
|
23295
|
-
|
|
23296
|
-
|
|
23297
|
-
|
|
23298
|
-
|
|
23299
|
-
|
|
23300
|
-
|
|
23301
|
-
|
|
23302
|
-
{
|
|
23303
|
-
value: selectedValues[filter.field] || "all",
|
|
23304
|
-
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
23305
|
-
options: [
|
|
23306
|
-
{ value: "all", label: `All ${filter.label}` },
|
|
23307
|
-
...filter.options?.map((opt) => ({
|
|
23308
|
-
value: opt,
|
|
23309
|
-
label: opt
|
|
23310
|
-
})) || []
|
|
23311
|
-
],
|
|
23312
|
-
className: "text-sm"
|
|
23313
|
-
}
|
|
23314
|
-
) }, filter.field)),
|
|
23315
|
-
activeFilterCount > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23316
|
-
Object.entries(selectedValues).map(([field, value]) => {
|
|
23317
|
-
const filterDef = filters.find((f3) => f3.field === field);
|
|
23318
|
-
return /* @__PURE__ */ jsxs(
|
|
23319
|
-
Badge,
|
|
23405
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "-" }),
|
|
23406
|
+
/* @__PURE__ */ jsx(
|
|
23407
|
+
Input,
|
|
23408
|
+
{
|
|
23409
|
+
type: "date",
|
|
23410
|
+
value: selectedValues[`${filter.field}_to`] || "",
|
|
23411
|
+
onChange: (e) => handleFilterSelect(
|
|
23412
|
+
`${filter.field}_to`,
|
|
23413
|
+
e.target.value || null
|
|
23414
|
+
),
|
|
23415
|
+
className: "text-sm min-w-[100px]"
|
|
23416
|
+
}
|
|
23417
|
+
)
|
|
23418
|
+
] }) : resolveFilterType(filter) === "text" ? /* @__PURE__ */ jsx(
|
|
23419
|
+
Input,
|
|
23320
23420
|
{
|
|
23321
|
-
|
|
23322
|
-
|
|
23323
|
-
|
|
23324
|
-
|
|
23325
|
-
|
|
23326
|
-
|
|
23327
|
-
|
|
23328
|
-
|
|
23329
|
-
|
|
23330
|
-
|
|
23331
|
-
|
|
23332
|
-
|
|
23333
|
-
|
|
23334
|
-
|
|
23335
|
-
|
|
23336
|
-
|
|
23337
|
-
|
|
23421
|
+
value: selectedValues[filter.field] || "",
|
|
23422
|
+
onChange: (e) => handleFilterSelect(filter.field, e.target.value || null),
|
|
23423
|
+
placeholder: filter.label,
|
|
23424
|
+
clearable: true,
|
|
23425
|
+
onClear: () => handleFilterSelect(filter.field, null),
|
|
23426
|
+
className: "text-sm"
|
|
23427
|
+
}
|
|
23428
|
+
) : /* @__PURE__ */ jsx(
|
|
23429
|
+
Select,
|
|
23430
|
+
{
|
|
23431
|
+
value: selectedValues[filter.field] || "all",
|
|
23432
|
+
onChange: (e) => handleFilterSelect(filter.field, e.target.value),
|
|
23433
|
+
options: [
|
|
23434
|
+
{ value: "all", label: `All ${filter.label}` },
|
|
23435
|
+
...filter.options?.map((opt) => ({
|
|
23436
|
+
value: opt,
|
|
23437
|
+
label: opt
|
|
23438
|
+
})) || []
|
|
23439
|
+
],
|
|
23440
|
+
className: "text-sm"
|
|
23441
|
+
}
|
|
23442
|
+
) }, filter.field)),
|
|
23443
|
+
activeFilterCount > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23444
|
+
Object.entries(selectedValues).map(([field, value]) => {
|
|
23445
|
+
const filterDef = filters.find((f3) => f3.field === field);
|
|
23446
|
+
return /* @__PURE__ */ jsxs(
|
|
23447
|
+
Badge,
|
|
23448
|
+
{
|
|
23449
|
+
variant: "primary",
|
|
23450
|
+
size: "md",
|
|
23451
|
+
className: "cursor-pointer",
|
|
23452
|
+
onClick: () => handleFilterSelect(field, null),
|
|
23453
|
+
children: [
|
|
23454
|
+
filterDef?.label,
|
|
23455
|
+
": ",
|
|
23456
|
+
value,
|
|
23457
|
+
/* @__PURE__ */ jsx(Icon, { name: "x", className: "ml-1 h-3 w-3" })
|
|
23458
|
+
]
|
|
23459
|
+
},
|
|
23460
|
+
field
|
|
23461
|
+
);
|
|
23462
|
+
}),
|
|
23463
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: handleClearAll, children: "Clear all" })
|
|
23464
|
+
] })
|
|
23465
|
+
]
|
|
23466
|
+
}
|
|
23467
|
+
);
|
|
23338
23468
|
}
|
|
23339
23469
|
return /* @__PURE__ */ jsx(
|
|
23340
23470
|
"div",
|
|
@@ -23343,6 +23473,7 @@ var init_FilterGroup = __esm({
|
|
|
23343
23473
|
"p-4 rounded-container",
|
|
23344
23474
|
"bg-card",
|
|
23345
23475
|
"border-[length:var(--border-width)] border-border",
|
|
23476
|
+
lookStyles5[look],
|
|
23346
23477
|
className
|
|
23347
23478
|
),
|
|
23348
23479
|
children: /* @__PURE__ */ jsxs(HStack, { gap: "md", align: "center", className: "flex-wrap", children: [
|
|
@@ -28100,7 +28231,7 @@ function composeDisplayValue(value, format, max, prefix, suffix) {
|
|
|
28100
28231
|
const withMax = max != null && max > 0 ? `${formatted} / ${max}` : formatted;
|
|
28101
28232
|
return `${prefix ?? ""}${withMax}${suffix ?? ""}`;
|
|
28102
28233
|
}
|
|
28103
|
-
var variantColor, StatDisplay;
|
|
28234
|
+
var lookStyles6, variantColor, StatDisplay;
|
|
28104
28235
|
var init_StatDisplay = __esm({
|
|
28105
28236
|
"components/molecules/StatDisplay.tsx"() {
|
|
28106
28237
|
"use client";
|
|
@@ -28112,6 +28243,13 @@ var init_StatDisplay = __esm({
|
|
|
28112
28243
|
init_Sparkline();
|
|
28113
28244
|
init_Icon();
|
|
28114
28245
|
init_useEventBus();
|
|
28246
|
+
lookStyles6 = {
|
|
28247
|
+
elevated: "",
|
|
28248
|
+
flat: "shadow-none border-[length:var(--border-width)] border-border",
|
|
28249
|
+
"progress-backed": "",
|
|
28250
|
+
gauge: "",
|
|
28251
|
+
sparkline: ""
|
|
28252
|
+
};
|
|
28115
28253
|
variantColor = {
|
|
28116
28254
|
default: "text-foreground",
|
|
28117
28255
|
primary: "text-primary",
|
|
@@ -28139,6 +28277,7 @@ var init_StatDisplay = __esm({
|
|
|
28139
28277
|
size = "md",
|
|
28140
28278
|
variant = "default",
|
|
28141
28279
|
compact = false,
|
|
28280
|
+
look = "elevated",
|
|
28142
28281
|
className,
|
|
28143
28282
|
isLoading = false,
|
|
28144
28283
|
error = null
|
|
@@ -28191,7 +28330,7 @@ var init_StatDisplay = __esm({
|
|
|
28191
28330
|
return /* @__PURE__ */ jsx(
|
|
28192
28331
|
Card,
|
|
28193
28332
|
{
|
|
28194
|
-
className: cn(padSizes[size], clickEvent && "cursor-pointer hover:shadow-md transition-shadow", className),
|
|
28333
|
+
className: cn(padSizes[size], lookStyles6[look], clickEvent && "cursor-pointer hover:shadow-md transition-shadow", className),
|
|
28195
28334
|
onClick: clickEvent ? handleClick : void 0,
|
|
28196
28335
|
children: /* @__PURE__ */ jsxs(HStack, { align: "start", justify: "between", children: [
|
|
28197
28336
|
/* @__PURE__ */ jsxs(VStack, { gap: "none", className: "space-y-1 flex-1", children: [
|
|
@@ -33874,7 +34013,8 @@ function DataTable({
|
|
|
33874
34013
|
bulkActions,
|
|
33875
34014
|
headerActions,
|
|
33876
34015
|
showTotal = true,
|
|
33877
|
-
className
|
|
34016
|
+
className,
|
|
34017
|
+
look = "dense"
|
|
33878
34018
|
}) {
|
|
33879
34019
|
const [openActionMenu, setOpenActionMenu] = useState(
|
|
33880
34020
|
null
|
|
@@ -34001,6 +34141,7 @@ function DataTable({
|
|
|
34001
34141
|
{
|
|
34002
34142
|
className: cn(
|
|
34003
34143
|
"bg-card border-2 border-border rounded-none overflow-hidden",
|
|
34144
|
+
lookStyles7[look],
|
|
34004
34145
|
className
|
|
34005
34146
|
),
|
|
34006
34147
|
children: [
|
|
@@ -34227,6 +34368,7 @@ function DataTable({
|
|
|
34227
34368
|
}
|
|
34228
34369
|
);
|
|
34229
34370
|
}
|
|
34371
|
+
var lookStyles7;
|
|
34230
34372
|
var init_DataTable = __esm({
|
|
34231
34373
|
"components/organisms/DataTable.tsx"() {
|
|
34232
34374
|
"use client";
|
|
@@ -34240,6 +34382,13 @@ var init_DataTable = __esm({
|
|
|
34240
34382
|
init_useEventBus();
|
|
34241
34383
|
init_useTranslate();
|
|
34242
34384
|
init_types3();
|
|
34385
|
+
lookStyles7 = {
|
|
34386
|
+
dense: "",
|
|
34387
|
+
spacious: "[&_tbody_tr_td]:py-5 [&_thead_tr_th]:py-4",
|
|
34388
|
+
striped: "[&_tbody_tr:nth-child(odd)]:bg-muted/30",
|
|
34389
|
+
borderless: "border-0 [&_thead]:border-b-0 [&_tbody_tr]:border-b-0 [&_tbody]:divide-y-0",
|
|
34390
|
+
"card-rows": "border-0 [&_tbody]:divide-y-0 [&_tbody_tr]:border-b-0 [&_tbody_tr]:shadow-elevation-card [&_tbody_tr]:rounded-container [&_tbody_tr]:bg-card [&_tbody]:[&_tr]:my-2"
|
|
34391
|
+
};
|
|
34243
34392
|
DataTable.displayName = "DataTable";
|
|
34244
34393
|
}
|
|
34245
34394
|
});
|
|
@@ -37493,7 +37642,7 @@ var init_GraphCanvas = __esm({
|
|
|
37493
37642
|
GraphCanvas.displayName = "GraphCanvas";
|
|
37494
37643
|
}
|
|
37495
37644
|
});
|
|
37496
|
-
var Header;
|
|
37645
|
+
var lookStyles8, Header;
|
|
37497
37646
|
var init_Header = __esm({
|
|
37498
37647
|
"components/organisms/Header.tsx"() {
|
|
37499
37648
|
"use client";
|
|
@@ -37506,6 +37655,13 @@ var init_Header = __esm({
|
|
|
37506
37655
|
init_Typography();
|
|
37507
37656
|
init_cn();
|
|
37508
37657
|
init_useTranslate();
|
|
37658
|
+
lookStyles8 = {
|
|
37659
|
+
"compact-bar": "",
|
|
37660
|
+
hero: "py-section min-h-[200px] [&_h1]:text-display-1",
|
|
37661
|
+
breadcrumb: "py-2 text-sm [&_h1]:text-base [&_h1]:font-medium",
|
|
37662
|
+
contextual: "py-3 [&_h1]:text-lg",
|
|
37663
|
+
"editorial-banner": "py-12 [&_h1]:text-display-2 [&_h1]:font-display-bold border-b border-border"
|
|
37664
|
+
};
|
|
37509
37665
|
Header = ({
|
|
37510
37666
|
logo,
|
|
37511
37667
|
logoSrc,
|
|
@@ -37523,6 +37679,7 @@ var init_Header = __esm({
|
|
|
37523
37679
|
actions,
|
|
37524
37680
|
sticky = true,
|
|
37525
37681
|
variant = "mobile",
|
|
37682
|
+
look = "compact-bar",
|
|
37526
37683
|
onLogoClick,
|
|
37527
37684
|
className
|
|
37528
37685
|
}) => {
|
|
@@ -37538,6 +37695,7 @@ var init_Header = __esm({
|
|
|
37538
37695
|
"flex items-center px-4 justify-between bg-card",
|
|
37539
37696
|
sticky && "sticky top-0 z-50",
|
|
37540
37697
|
variant === "mobile" && "lg:hidden",
|
|
37698
|
+
lookStyles8[look],
|
|
37541
37699
|
className
|
|
37542
37700
|
),
|
|
37543
37701
|
children: [
|
|
@@ -44534,7 +44692,7 @@ var init_TeamOrganism = __esm({
|
|
|
44534
44692
|
TeamOrganism.displayName = "TeamOrganism";
|
|
44535
44693
|
}
|
|
44536
44694
|
});
|
|
44537
|
-
var STATUS_STYLES3, Timeline;
|
|
44695
|
+
var lookStyles9, STATUS_STYLES3, Timeline;
|
|
44538
44696
|
var init_Timeline = __esm({
|
|
44539
44697
|
"components/organisms/Timeline.tsx"() {
|
|
44540
44698
|
"use client";
|
|
@@ -44545,6 +44703,12 @@ var init_Timeline = __esm({
|
|
|
44545
44703
|
init_ErrorState();
|
|
44546
44704
|
init_EmptyState();
|
|
44547
44705
|
init_useTranslate();
|
|
44706
|
+
lookStyles9 = {
|
|
44707
|
+
"vertical-compact": "gap-1 [&>*]:py-1",
|
|
44708
|
+
"vertical-spacious": "",
|
|
44709
|
+
horizontal: "flex-row [&>*]:flex-row [&>*]:items-center",
|
|
44710
|
+
swimlane: "flex-row gap-6 [&>*]:flex-row [&>*]:items-center"
|
|
44711
|
+
};
|
|
44548
44712
|
STATUS_STYLES3 = {
|
|
44549
44713
|
complete: {
|
|
44550
44714
|
dotColor: "text-success",
|
|
@@ -44575,7 +44739,8 @@ var init_Timeline = __esm({
|
|
|
44575
44739
|
entity,
|
|
44576
44740
|
isLoading = false,
|
|
44577
44741
|
error,
|
|
44578
|
-
className
|
|
44742
|
+
className,
|
|
44743
|
+
look = "vertical-spacious"
|
|
44579
44744
|
}) => {
|
|
44580
44745
|
const { t } = useTranslate();
|
|
44581
44746
|
const entityData = Array.isArray(entity) ? entity : [];
|
|
@@ -44631,7 +44796,7 @@ var init_Timeline = __esm({
|
|
|
44631
44796
|
}
|
|
44632
44797
|
return /* @__PURE__ */ jsx(Card, { className: cn("p-6", className), children: /* @__PURE__ */ jsxs(VStack, { gap: "md", children: [
|
|
44633
44798
|
title && /* @__PURE__ */ jsx(Typography, { variant: "h5", weight: "semibold", children: title }),
|
|
44634
|
-
/* @__PURE__ */ jsx(VStack, { gap: "none", className: "relative", children: items.map((item, idx) => {
|
|
44799
|
+
/* @__PURE__ */ jsx(VStack, { gap: "none", className: cn("relative", lookStyles9[look]), children: items.map((item, idx) => {
|
|
44635
44800
|
const status = item.status || "pending";
|
|
44636
44801
|
const style = STATUS_STYLES3[status] || STATUS_STYLES3.pending;
|
|
44637
44802
|
const ItemIcon = item.icon || style.icon;
|