design-zystem 1.0.261 → 1.0.262

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/index.d.mts CHANGED
@@ -893,6 +893,17 @@ interface MetricCardProps {
893
893
  }
894
894
  declare const MetricCard: ({ icon, title, value, valueColor, subtitle, iconBackgroundColor, iconColor, contentLayout, onClick, checked, }: MetricCardProps) => react_jsx_runtime.JSX.Element;
895
895
 
896
+ interface CardProps {
897
+ children?: ReactNode;
898
+ onClick?: (e: MouseEvent<HTMLDivElement>) => void;
899
+ /** Left accent color — e.g. colors.red for 'critique', colors.secondary for 'alerte'. */
900
+ accentColor?: string;
901
+ backgroundColor?: string;
902
+ padding?: string;
903
+ borderRadius?: string;
904
+ }
905
+ declare const Card: ({ children, onClick, accentColor, backgroundColor, padding, borderRadius, }: CardProps) => react_jsx_runtime.JSX.Element;
906
+
896
907
  interface TooltipProps {
897
908
  children?: ReactNode;
898
909
  backgroundColor?: string;
@@ -1162,4 +1173,4 @@ declare const formatKM: (value: string | number | null | undefined) => string;
1162
1173
 
1163
1174
  declare const parseAmount: (value: string) => number | null;
1164
1175
 
1165
- export { Accordion, type AccordionItem, Avatar, Box, Bubble, Bulk, Button, CardSkeleton, Checkbox, Col, Collapse, ColorPicker, DatePicker, type DatePickerProps, type DatePreset, Divider, Drawer, EmptyState, FileUploadZone, type FloatingAction, FloatingButton, type FloatingButtonProps, Grid, Icon, IconTabs, Image, Input, Link, List, ListItem, MetricCard, Modal, ModalConfirmation, MultiSelect, NewModal, Options, PageContainer, Pagination, Popover, ProgressBar, Radio, Row, Select, type SelectOption, type SelectProps, SkeletonRow, SliderInput, type SortOrder, Spinner, Stepper, Switch, Table, TableBody, TableCell, TableFooter, TableFooterCell, TableFooterRow, TableHeader, TableHeaderCell, type TableHeaderCellProps, TableHeaderRow, TableRow, Tabs, TagBubble, Text, Timeline, type TimelineItem, type ToastOptions, type ToastType, Toaster, Tooltip, addBusinessDays, appendCacheBuster, appendQueryParam, capitalizeFirstLetter, colors, easterDate, formatAddress, formatCityFromFormattedAddress, formatCityWithPostalCode, formatDate, formatDateWithTime, formatDistance, formatDuration, formatEuro, formatKM, formatLocality, formatName, formatNameWithInitial, formatPhoneNumber, formatPlate, formatPlateWithoutDashes, formatPostalCodeFromFormattedAddress, formatRegionCode, formatTime, formatVin, generateHexColor, getAvatarColor, getCleanFileName, getFileIconByMimeType, getFileKind, getFileNameFromUrl, getInitials, getMimeCategory, getRelativeTime, isHoliday, isSameDay, isolateCity, optimizeImage, parseAmount, parseIsoDate, toast, truncateFileName, truncateText };
1176
+ export { Accordion, type AccordionItem, Avatar, Box, Bubble, Bulk, Button, Card, type CardProps, CardSkeleton, Checkbox, Col, Collapse, ColorPicker, DatePicker, type DatePickerProps, type DatePreset, Divider, Drawer, EmptyState, FileUploadZone, type FloatingAction, FloatingButton, type FloatingButtonProps, Grid, Icon, IconTabs, Image, Input, Link, List, ListItem, MetricCard, Modal, ModalConfirmation, MultiSelect, NewModal, Options, PageContainer, Pagination, Popover, ProgressBar, Radio, Row, Select, type SelectOption, type SelectProps, SkeletonRow, SliderInput, type SortOrder, Spinner, Stepper, Switch, Table, TableBody, TableCell, TableFooter, TableFooterCell, TableFooterRow, TableHeader, TableHeaderCell, type TableHeaderCellProps, TableHeaderRow, TableRow, Tabs, TagBubble, Text, Timeline, type TimelineItem, type ToastOptions, type ToastType, Toaster, Tooltip, addBusinessDays, appendCacheBuster, appendQueryParam, capitalizeFirstLetter, colors, easterDate, formatAddress, formatCityFromFormattedAddress, formatCityWithPostalCode, formatDate, formatDateWithTime, formatDistance, formatDuration, formatEuro, formatKM, formatLocality, formatName, formatNameWithInitial, formatPhoneNumber, formatPlate, formatPlateWithoutDashes, formatPostalCodeFromFormattedAddress, formatRegionCode, formatTime, formatVin, generateHexColor, getAvatarColor, getCleanFileName, getFileIconByMimeType, getFileKind, getFileNameFromUrl, getInitials, getMimeCategory, getRelativeTime, isHoliday, isSameDay, isolateCity, optimizeImage, parseAmount, parseIsoDate, toast, truncateFileName, truncateText };
package/dist/index.d.ts CHANGED
@@ -893,6 +893,17 @@ interface MetricCardProps {
893
893
  }
894
894
  declare const MetricCard: ({ icon, title, value, valueColor, subtitle, iconBackgroundColor, iconColor, contentLayout, onClick, checked, }: MetricCardProps) => react_jsx_runtime.JSX.Element;
895
895
 
896
+ interface CardProps {
897
+ children?: ReactNode;
898
+ onClick?: (e: MouseEvent<HTMLDivElement>) => void;
899
+ /** Left accent color — e.g. colors.red for 'critique', colors.secondary for 'alerte'. */
900
+ accentColor?: string;
901
+ backgroundColor?: string;
902
+ padding?: string;
903
+ borderRadius?: string;
904
+ }
905
+ declare const Card: ({ children, onClick, accentColor, backgroundColor, padding, borderRadius, }: CardProps) => react_jsx_runtime.JSX.Element;
906
+
896
907
  interface TooltipProps {
897
908
  children?: ReactNode;
898
909
  backgroundColor?: string;
@@ -1162,4 +1173,4 @@ declare const formatKM: (value: string | number | null | undefined) => string;
1162
1173
 
1163
1174
  declare const parseAmount: (value: string) => number | null;
1164
1175
 
1165
- export { Accordion, type AccordionItem, Avatar, Box, Bubble, Bulk, Button, CardSkeleton, Checkbox, Col, Collapse, ColorPicker, DatePicker, type DatePickerProps, type DatePreset, Divider, Drawer, EmptyState, FileUploadZone, type FloatingAction, FloatingButton, type FloatingButtonProps, Grid, Icon, IconTabs, Image, Input, Link, List, ListItem, MetricCard, Modal, ModalConfirmation, MultiSelect, NewModal, Options, PageContainer, Pagination, Popover, ProgressBar, Radio, Row, Select, type SelectOption, type SelectProps, SkeletonRow, SliderInput, type SortOrder, Spinner, Stepper, Switch, Table, TableBody, TableCell, TableFooter, TableFooterCell, TableFooterRow, TableHeader, TableHeaderCell, type TableHeaderCellProps, TableHeaderRow, TableRow, Tabs, TagBubble, Text, Timeline, type TimelineItem, type ToastOptions, type ToastType, Toaster, Tooltip, addBusinessDays, appendCacheBuster, appendQueryParam, capitalizeFirstLetter, colors, easterDate, formatAddress, formatCityFromFormattedAddress, formatCityWithPostalCode, formatDate, formatDateWithTime, formatDistance, formatDuration, formatEuro, formatKM, formatLocality, formatName, formatNameWithInitial, formatPhoneNumber, formatPlate, formatPlateWithoutDashes, formatPostalCodeFromFormattedAddress, formatRegionCode, formatTime, formatVin, generateHexColor, getAvatarColor, getCleanFileName, getFileIconByMimeType, getFileKind, getFileNameFromUrl, getInitials, getMimeCategory, getRelativeTime, isHoliday, isSameDay, isolateCity, optimizeImage, parseAmount, parseIsoDate, toast, truncateFileName, truncateText };
1176
+ export { Accordion, type AccordionItem, Avatar, Box, Bubble, Bulk, Button, Card, type CardProps, CardSkeleton, Checkbox, Col, Collapse, ColorPicker, DatePicker, type DatePickerProps, type DatePreset, Divider, Drawer, EmptyState, FileUploadZone, type FloatingAction, FloatingButton, type FloatingButtonProps, Grid, Icon, IconTabs, Image, Input, Link, List, ListItem, MetricCard, Modal, ModalConfirmation, MultiSelect, NewModal, Options, PageContainer, Pagination, Popover, ProgressBar, Radio, Row, Select, type SelectOption, type SelectProps, SkeletonRow, SliderInput, type SortOrder, Spinner, Stepper, Switch, Table, TableBody, TableCell, TableFooter, TableFooterCell, TableFooterRow, TableHeader, TableHeaderCell, type TableHeaderCellProps, TableHeaderRow, TableRow, Tabs, TagBubble, Text, Timeline, type TimelineItem, type ToastOptions, type ToastType, Toaster, Tooltip, addBusinessDays, appendCacheBuster, appendQueryParam, capitalizeFirstLetter, colors, easterDate, formatAddress, formatCityFromFormattedAddress, formatCityWithPostalCode, formatDate, formatDateWithTime, formatDistance, formatDuration, formatEuro, formatKM, formatLocality, formatName, formatNameWithInitial, formatPhoneNumber, formatPlate, formatPlateWithoutDashes, formatPostalCodeFromFormattedAddress, formatRegionCode, formatTime, formatVin, generateHexColor, getAvatarColor, getCleanFileName, getFileIconByMimeType, getFileKind, getFileNameFromUrl, getInitials, getMimeCategory, getRelativeTime, isHoliday, isSameDay, isolateCity, optimizeImage, parseAmount, parseIsoDate, toast, truncateFileName, truncateText };
package/dist/index.js CHANGED
@@ -65,6 +65,7 @@ __export(index_exports, {
65
65
  Bubble: () => Bubble,
66
66
  Bulk: () => Bulk,
67
67
  Button: () => Button,
68
+ Card: () => Card2,
68
69
  CardSkeleton: () => CardSkeleton,
69
70
  Checkbox: () => Checkbox,
70
71
  Col: () => Col,
@@ -5141,16 +5142,51 @@ var MetricCard = ({
5141
5142
  );
5142
5143
  };
5143
5144
 
5144
- // src/Components/Tooltip/Tooltip.tsx
5145
- var import_react27 = require("react");
5145
+ // src/Components/Card/Card.tsx
5146
5146
  var import_styled_components44 = __toESM(require("styled-components"));
5147
5147
  var import_jsx_runtime53 = require("react/jsx-runtime");
5148
- var StyledTooltipWrapper = import_styled_components44.default.div`
5148
+ var StyledCard = import_styled_components44.default.div`
5149
+ overflow: hidden;
5150
+ transition: box-shadow 0.15s ease;
5151
+ background-color: ${(p) => p.$backgroundColor};
5152
+ border-radius: ${(p) => p.$borderRadius};
5153
+ ${(p) => p.$accentColor ? `border-left: 2px solid ${p.$accentColor};` : ""}
5154
+ ${(p) => p.$clickable ? "cursor: pointer;" : ""}
5155
+ ${(p) => p.$clickable ? "&:hover { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); }" : ""}
5156
+ `;
5157
+ var StyledCardInner = import_styled_components44.default.div`
5158
+ width: 100%;
5159
+ padding: ${(p) => p.$padding};
5160
+ `;
5161
+ var Card2 = ({
5162
+ children,
5163
+ onClick,
5164
+ accentColor,
5165
+ backgroundColor = "#F8FAFC",
5166
+ padding = "10px 12px",
5167
+ borderRadius = "8px"
5168
+ }) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
5169
+ StyledCard,
5170
+ {
5171
+ $clickable: !!onClick,
5172
+ $backgroundColor: backgroundColor,
5173
+ $borderRadius: borderRadius,
5174
+ $accentColor: accentColor,
5175
+ onClick,
5176
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(StyledCardInner, { $padding: padding, children })
5177
+ }
5178
+ );
5179
+
5180
+ // src/Components/Tooltip/Tooltip.tsx
5181
+ var import_react27 = require("react");
5182
+ var import_styled_components45 = __toESM(require("styled-components"));
5183
+ var import_jsx_runtime54 = require("react/jsx-runtime");
5184
+ var StyledTooltipWrapper = import_styled_components45.default.div`
5149
5185
  position: relative;
5150
5186
  display: inline-block;
5151
5187
  cursor: pointer;
5152
5188
  `;
5153
- var StyledTooltipContent = import_styled_components44.default.div`
5189
+ var StyledTooltipContent = import_styled_components45.default.div`
5154
5190
  visibility: ${(props) => props.$isVisible ? "visible" : "hidden"};
5155
5191
  background-color: ${(props) => props.$backgroundColor || colors.black};
5156
5192
  color: ${colors.white};
@@ -5249,14 +5285,14 @@ var Tooltip = ({
5249
5285
  const [isVisible, setIsVisible] = (0, import_react27.useState)(false);
5250
5286
  const handleMouseEnter = () => setIsVisible(true);
5251
5287
  const handleMouseLeave = () => setIsVisible(false);
5252
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
5288
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
5253
5289
  StyledTooltipWrapper,
5254
5290
  {
5255
5291
  onMouseEnter: handleMouseEnter,
5256
5292
  onMouseLeave: handleMouseLeave,
5257
5293
  children: [
5258
5294
  children,
5259
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
5295
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
5260
5296
  StyledTooltipContent,
5261
5297
  {
5262
5298
  $isVisible: isVisible,
@@ -5264,7 +5300,7 @@ var Tooltip = ({
5264
5300
  $width: width,
5265
5301
  $height: height,
5266
5302
  $direction: direction,
5267
- children: data.length > 0 ? data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Text, { size: "s", color: "white", children: item }, index)) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Text, { size: "s", color: "white", children: "Aucune donn\xE9e" })
5303
+ children: data.length > 0 ? data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Text, { size: "s", color: "white", children: item }, index)) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Text, { size: "s", color: "white", children: "Aucune donn\xE9e" })
5268
5304
  }
5269
5305
  )
5270
5306
  ]
@@ -5274,7 +5310,7 @@ var Tooltip = ({
5274
5310
 
5275
5311
  // src/Components/Pagination/Pagination.tsx
5276
5312
  var import_react28 = require("react");
5277
- var import_jsx_runtime54 = require("react/jsx-runtime");
5313
+ var import_jsx_runtime55 = require("react/jsx-runtime");
5278
5314
  var getPageNumbers = (current, total) => {
5279
5315
  if (total <= 5) {
5280
5316
  return Array.from({ length: total }, (_, i) => i + 1);
@@ -5304,15 +5340,15 @@ var Pagination = ({
5304
5340
  const startItem = (currentPage - 1) * itemsPerPage + 1;
5305
5341
  const endItem = Math.min(currentPage * itemsPerPage, totalItems);
5306
5342
  const summary = summaryLabel || defaultSummary(startItem, endItem, totalItems);
5307
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
5343
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
5308
5344
  Row,
5309
5345
  {
5310
5346
  justifyContent: showSummary ? "space-between" : "flex-end",
5311
5347
  alignItems: "center",
5312
5348
  children: [
5313
- showSummary && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Text, { size: "s", color: colors.grey_500, children: summary }),
5314
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Row, { gap: "4", alignItems: "center", style: { width: "fit-content" }, children: [
5315
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
5349
+ showSummary && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text, { size: "s", color: colors.grey_500, children: summary }),
5350
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Row, { gap: "4", alignItems: "center", style: { width: "fit-content" }, children: [
5351
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
5316
5352
  Button,
5317
5353
  {
5318
5354
  size: "xs",
@@ -5323,7 +5359,7 @@ var Pagination = ({
5323
5359
  }
5324
5360
  ),
5325
5361
  pages.map(
5326
- (page, index) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Text, { size: "s", color: colors.grey_500, children: "..." }, `ellipsis-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
5362
+ (page, index) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text, { size: "s", color: colors.grey_500, children: "..." }, `ellipsis-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
5327
5363
  Button,
5328
5364
  {
5329
5365
  size: "xs",
@@ -5334,7 +5370,7 @@ var Pagination = ({
5334
5370
  page
5335
5371
  )
5336
5372
  ),
5337
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
5373
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
5338
5374
  Button,
5339
5375
  {
5340
5376
  size: "xs",
@@ -5352,8 +5388,8 @@ var Pagination = ({
5352
5388
 
5353
5389
  // src/Components/FileUploadZone/FileUploadZone.tsx
5354
5390
  var import_react29 = require("react");
5355
- var import_styled_components45 = __toESM(require("styled-components"));
5356
- var import_jsx_runtime55 = require("react/jsx-runtime");
5391
+ var import_styled_components46 = __toESM(require("styled-components"));
5392
+ var import_jsx_runtime56 = require("react/jsx-runtime");
5357
5393
  var ACCEPT_MAP = {
5358
5394
  png: "image/png",
5359
5395
  jpg: "image/jpeg",
@@ -5369,7 +5405,7 @@ var getMimeTypes = (accept) => {
5369
5405
  return accept.map((ext) => ACCEPT_MAP[ext.toLowerCase()] || ext);
5370
5406
  };
5371
5407
  var isPdf = (type) => type === "application/pdf";
5372
- var StyledDropZone = import_styled_components45.default.label`
5408
+ var StyledDropZone = import_styled_components46.default.label`
5373
5409
  display: flex;
5374
5410
  flex-direction: column;
5375
5411
  align-items: center;
@@ -5393,7 +5429,7 @@ var StyledDropZone = import_styled_components45.default.label`
5393
5429
  border-color: ${(p) => p.$disabled ? colors.blue_50 : colors.blue_100};
5394
5430
  }
5395
5431
  `;
5396
- var StyledPreview = import_styled_components45.default.div`
5432
+ var StyledPreview = import_styled_components46.default.div`
5397
5433
  display: flex;
5398
5434
  flex-direction: column;
5399
5435
  align-items: center;
@@ -5404,18 +5440,18 @@ var StyledPreview = import_styled_components45.default.div`
5404
5440
  width: ${(p) => p.$fullWidth ? "100%" : "auto"};
5405
5441
  box-sizing: border-box;
5406
5442
  `;
5407
- var StyledImage2 = import_styled_components45.default.img`
5443
+ var StyledImage2 = import_styled_components46.default.img`
5408
5444
  max-width: 100%;
5409
5445
  max-height: 400px;
5410
5446
  border-radius: 4px;
5411
5447
  object-fit: contain;
5412
5448
  `;
5413
- var StyledEmbed = import_styled_components45.default.embed`
5449
+ var StyledEmbed = import_styled_components46.default.embed`
5414
5450
  width: 100%;
5415
5451
  height: 500px;
5416
5452
  border-radius: 4px;
5417
5453
  `;
5418
- var HiddenInput2 = import_styled_components45.default.input`
5454
+ var HiddenInput2 = import_styled_components46.default.input`
5419
5455
  display: none;
5420
5456
  `;
5421
5457
  var FileUploadZone = ({
@@ -5551,9 +5587,9 @@ var FileUploadZone = ({
5551
5587
  onRemove == null ? void 0 : onRemove();
5552
5588
  };
5553
5589
  if (previewUrl) {
5554
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(StyledPreview, { $fullWidth: fullWidth, children: [
5555
- fileType && isPdf(fileType) ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(StyledEmbed, { src: previewUrl, type: "application/pdf" }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(StyledImage2, { src: previewUrl, alt: "Aper\xE7u du fichier" }),
5556
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Row, { gap: "8", justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
5590
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(StyledPreview, { $fullWidth: fullWidth, children: [
5591
+ fileType && isPdf(fileType) ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(StyledEmbed, { src: previewUrl, type: "application/pdf" }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(StyledImage2, { src: previewUrl, alt: "Aper\xE7u du fichier" }),
5592
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Row, { gap: "8", justifyContent: "center", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
5557
5593
  Button,
5558
5594
  {
5559
5595
  onClick: handleRemove,
@@ -5567,8 +5603,8 @@ var FileUploadZone = ({
5567
5603
  }
5568
5604
  const showIcon = icon !== false;
5569
5605
  const showBrowse = !compact && browseLabel !== false;
5570
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Col, { gap: "4", fullWidth, children: [
5571
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
5606
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Col, { gap: "4", fullWidth, children: [
5607
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
5572
5608
  StyledDropZone,
5573
5609
  {
5574
5610
  $isDragging: isDragging,
@@ -5579,7 +5615,7 @@ var FileUploadZone = ({
5579
5615
  onDragLeave: handleDragLeave,
5580
5616
  onDrop: handleDrop,
5581
5617
  children: [
5582
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
5618
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
5583
5619
  HiddenInput2,
5584
5620
  {
5585
5621
  ref: inputRef,
@@ -5590,7 +5626,7 @@ var FileUploadZone = ({
5590
5626
  multiple
5591
5627
  }
5592
5628
  ),
5593
- showIcon && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
5629
+ showIcon && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
5594
5630
  Icon,
5595
5631
  {
5596
5632
  name: icon,
@@ -5599,9 +5635,9 @@ var FileUploadZone = ({
5599
5635
  color: "blue_700"
5600
5636
  }
5601
5637
  ),
5602
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text, { size: "s", variant: "grey_600", align: "center", children: label }),
5603
- showBrowse && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text, { size: "xs", variant: "grey_600", align: "center", children: "ou" }),
5604
- showBrowse && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
5638
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Text, { size: "s", variant: "grey_600", align: "center", children: label }),
5639
+ showBrowse && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Text, { size: "xs", variant: "grey_600", align: "center", children: "ou" }),
5640
+ showBrowse && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
5605
5641
  Button,
5606
5642
  {
5607
5643
  outline: true,
@@ -5614,31 +5650,31 @@ var FileUploadZone = ({
5614
5650
  }
5615
5651
  }
5616
5652
  ),
5617
- sublabel && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text, { size: "xs", variant: "grey_500", align: "center", children: sublabel })
5653
+ sublabel && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Text, { size: "xs", variant: "grey_500", align: "center", children: sublabel })
5618
5654
  ]
5619
5655
  }
5620
5656
  ),
5621
- showFileName && fileName && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Row, { gap: "8", alignItems: "center", justifyContent: "center", children: [
5622
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "file", size: "s", color: "green_700" }),
5623
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text, { size: "s", color: "green_700", children: fileName })
5657
+ showFileName && fileName && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(Row, { gap: "8", alignItems: "center", justifyContent: "center", children: [
5658
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: "file", size: "s", color: "green_700" }),
5659
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Text, { size: "s", color: "green_700", children: fileName })
5624
5660
  ] }),
5625
- inlineError && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Text, { size: "s", color: "danger", align: "center", children: inlineError })
5661
+ inlineError && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Text, { size: "s", color: "danger", align: "center", children: inlineError })
5626
5662
  ] });
5627
5663
  };
5628
5664
 
5629
5665
  // src/Components/Spinner/Spinner.tsx
5630
- var import_styled_components46 = __toESM(require("styled-components"));
5631
- var import_jsx_runtime56 = require("react/jsx-runtime");
5666
+ var import_styled_components47 = __toESM(require("styled-components"));
5667
+ var import_jsx_runtime57 = require("react/jsx-runtime");
5632
5668
  var SIZES3 = {
5633
5669
  s: 20,
5634
5670
  m: 32,
5635
5671
  l: 48
5636
5672
  };
5637
- var spin = import_styled_components46.keyframes`
5673
+ var spin = import_styled_components47.keyframes`
5638
5674
  0% { transform: rotate(0deg); }
5639
5675
  100% { transform: rotate(360deg); }
5640
5676
  `;
5641
- var StyledSpinner = import_styled_components46.default.span`
5677
+ var StyledSpinner = import_styled_components47.default.span`
5642
5678
  display: inline-block;
5643
5679
  width: ${(p) => p.$size}px;
5644
5680
  height: ${(p) => p.$size}px;
@@ -5651,7 +5687,7 @@ var StyledSpinner = import_styled_components46.default.span`
5651
5687
  var Spinner = ({ size = "m", color = "primary" }) => {
5652
5688
  const resolvedSize = SIZES3[size];
5653
5689
  const resolvedColor = colors[color] || color || colors.primary;
5654
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
5690
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
5655
5691
  StyledSpinner,
5656
5692
  {
5657
5693
  $size: resolvedSize,
@@ -5663,7 +5699,7 @@ var Spinner = ({ size = "m", color = "primary" }) => {
5663
5699
  };
5664
5700
 
5665
5701
  // src/Components/EmptyState/EmptyState.tsx
5666
- var import_jsx_runtime57 = require("react/jsx-runtime");
5702
+ var import_jsx_runtime58 = require("react/jsx-runtime");
5667
5703
  var EmptyState = ({
5668
5704
  icon = "inbox",
5669
5705
  title = "Aucun r\xE9sultat",
@@ -5671,7 +5707,7 @@ var EmptyState = ({
5671
5707
  actionLabel,
5672
5708
  onAction
5673
5709
  }) => {
5674
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
5710
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
5675
5711
  Col,
5676
5712
  {
5677
5713
  fullWidth: true,
@@ -5680,20 +5716,20 @@ var EmptyState = ({
5680
5716
  gap: "24",
5681
5717
  padding: "24px 16px",
5682
5718
  children: [
5683
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: icon, family: "solid", size: "xxl", color: "grey_300" }),
5684
- /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Col, { alignItems: "center", gap: "4", style: { maxWidth: "360px" }, children: [
5685
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Text, { size: "m", weight: "600", variant: "grey_600", align: "center", children: title }),
5686
- description && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Text, { size: "s", variant: "grey_500", align: "center", children: description })
5719
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Icon, { name: icon, family: "solid", size: "xxl", color: "grey_300" }),
5720
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Col, { alignItems: "center", gap: "4", style: { maxWidth: "360px" }, children: [
5721
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Text, { size: "m", weight: "600", variant: "grey_600", align: "center", children: title }),
5722
+ description && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Text, { size: "s", variant: "grey_500", align: "center", children: description })
5687
5723
  ] }),
5688
- actionLabel && onAction && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Button, { label: actionLabel, onClick: onAction })
5724
+ actionLabel && onAction && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { label: actionLabel, onClick: onAction })
5689
5725
  ]
5690
5726
  }
5691
5727
  );
5692
5728
  };
5693
5729
 
5694
5730
  // src/Components/FloatingButton/FloatingButton.tsx
5695
- var import_styled_components47 = __toESM(require("styled-components"));
5696
- var import_jsx_runtime58 = require("react/jsx-runtime");
5731
+ var import_styled_components48 = __toESM(require("styled-components"));
5732
+ var import_jsx_runtime59 = require("react/jsx-runtime");
5697
5733
  var FloatingButton = ({
5698
5734
  isOpen,
5699
5735
  onToggle,
@@ -5705,10 +5741,10 @@ var FloatingButton = ({
5705
5741
  variant = "blue_700"
5706
5742
  }) => {
5707
5743
  const accent = colors[variant];
5708
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Container6, { children: [
5744
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Container6, { children: [
5709
5745
  actions.map((action, index) => {
5710
5746
  var _a;
5711
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
5747
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
5712
5748
  SubButton,
5713
5749
  {
5714
5750
  type: "button",
@@ -5717,14 +5753,14 @@ var FloatingButton = ({
5717
5753
  $transform: arcTransform(index, actions.length),
5718
5754
  onClick: action.onClick,
5719
5755
  children: [
5720
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Icon, { name: action.icon, family: "regular", size: "s", color: accent }),
5721
- ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(CountBadge, { children: action.badge })
5756
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: action.icon, family: "regular", size: "s", color: accent }),
5757
+ ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CountBadge, { children: action.badge })
5722
5758
  ]
5723
5759
  },
5724
5760
  action.id
5725
5761
  );
5726
5762
  }),
5727
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
5763
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(
5728
5764
  MainButton,
5729
5765
  {
5730
5766
  type: "button",
@@ -5733,7 +5769,7 @@ var FloatingButton = ({
5733
5769
  $accent: accent,
5734
5770
  onClick: onToggle,
5735
5771
  children: [
5736
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
5772
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
5737
5773
  Icon,
5738
5774
  {
5739
5775
  name: isOpen ? openIcon : icon,
@@ -5742,7 +5778,7 @@ var FloatingButton = ({
5742
5778
  color: colors.white
5743
5779
  }
5744
5780
  ),
5745
- !isOpen && mainBadge > 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(CountBadge, { children: mainBadge })
5781
+ !isOpen && mainBadge > 0 && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CountBadge, { children: mainBadge })
5746
5782
  ]
5747
5783
  }
5748
5784
  )
@@ -5761,7 +5797,7 @@ var arcTransform = (index, total) => {
5761
5797
  const y = Math.round(-Math.sin(angle) * ARC_RADIUS);
5762
5798
  return `translate(${x}px, ${y}px)`;
5763
5799
  };
5764
- var Container6 = import_styled_components47.default.div`
5800
+ var Container6 = import_styled_components48.default.div`
5765
5801
  position: fixed;
5766
5802
  right: 32px;
5767
5803
  bottom: 32px;
@@ -5769,7 +5805,7 @@ var Container6 = import_styled_components47.default.div`
5769
5805
  height: ${FAB_SIZE}px;
5770
5806
  z-index: 1000;
5771
5807
  `;
5772
- var MainButton = import_styled_components47.default.button`
5808
+ var MainButton = import_styled_components48.default.button`
5773
5809
  position: absolute;
5774
5810
  inset: 0;
5775
5811
  display: flex;
@@ -5783,7 +5819,7 @@ var MainButton = import_styled_components47.default.button`
5783
5819
  0 8px 5px rgba(0, 0, 0, 0.1),
5784
5820
  0 20px 12.5px rgba(0, 0, 0, 0.1);
5785
5821
  `;
5786
- var SubButton = import_styled_components47.default.button`
5822
+ var SubButton = import_styled_components48.default.button`
5787
5823
  position: absolute;
5788
5824
  left: ${(FAB_SIZE - SUB_SIZE) / 2}px;
5789
5825
  top: ${(FAB_SIZE - SUB_SIZE) / 2}px;
@@ -5806,7 +5842,7 @@ var SubButton = import_styled_components47.default.button`
5806
5842
  opacity: ${({ $isOpen }) => $isOpen ? 1 : 0};
5807
5843
  pointer-events: ${({ $isOpen }) => $isOpen ? "auto" : "none"};
5808
5844
  `;
5809
- var CountBadge = import_styled_components47.default.span`
5845
+ var CountBadge = import_styled_components48.default.span`
5810
5846
  position: absolute;
5811
5847
  top: -4px;
5812
5848
  right: -4px;
@@ -5824,16 +5860,16 @@ var CountBadge = import_styled_components47.default.span`
5824
5860
  `;
5825
5861
 
5826
5862
  // src/Components/ProgressBar/ProgressBar.tsx
5827
- var import_styled_components48 = __toESM(require("styled-components"));
5828
- var import_jsx_runtime59 = require("react/jsx-runtime");
5863
+ var import_styled_components49 = __toESM(require("styled-components"));
5864
+ var import_jsx_runtime60 = require("react/jsx-runtime");
5829
5865
  var clampPercent = (value) => Math.max(0, Math.min(100, value));
5830
- var Wrapper6 = import_styled_components48.default.div`
5866
+ var Wrapper6 = import_styled_components49.default.div`
5831
5867
  display: flex;
5832
5868
  align-items: center;
5833
5869
  gap: 8px;
5834
5870
  width: 100%;
5835
5871
  `;
5836
- var Track2 = import_styled_components48.default.div`
5872
+ var Track2 = import_styled_components49.default.div`
5837
5873
  position: relative;
5838
5874
  flex: 1;
5839
5875
  height: ${({ $height }) => $height}px;
@@ -5841,7 +5877,7 @@ var Track2 = import_styled_components48.default.div`
5841
5877
  border-radius: ${({ $height }) => $height}px;
5842
5878
  overflow: hidden;
5843
5879
  `;
5844
- var Fill = import_styled_components48.default.div`
5880
+ var Fill = import_styled_components49.default.div`
5845
5881
  height: 100%;
5846
5882
  width: ${({ $percent }) => $percent}%;
5847
5883
  background: ${({ $color }) => $color};
@@ -5856,9 +5892,9 @@ var ProgressBar2 = ({
5856
5892
  showLabel = false
5857
5893
  }) => {
5858
5894
  const percent = clampPercent(value);
5859
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Wrapper6, { children: [
5860
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Track2, { $height: height, $trackColor: trackColor, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Fill, { $height: height, $color: color, $percent: percent }) }),
5861
- showLabel && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Text, { size: "s", weight: "600", children: [
5895
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Wrapper6, { children: [
5896
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Track2, { $height: height, $trackColor: trackColor, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Fill, { $height: height, $color: color, $percent: percent }) }),
5897
+ showLabel && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Text, { size: "s", weight: "600", children: [
5862
5898
  Math.round(percent),
5863
5899
  " %"
5864
5900
  ] })
@@ -5866,24 +5902,24 @@ var ProgressBar2 = ({
5866
5902
  };
5867
5903
 
5868
5904
  // src/Components/Timeline/Timeline.tsx
5869
- var import_styled_components49 = __toESM(require("styled-components"));
5870
- var import_jsx_runtime60 = require("react/jsx-runtime");
5871
- var List2 = import_styled_components49.default.div`
5905
+ var import_styled_components50 = __toESM(require("styled-components"));
5906
+ var import_jsx_runtime61 = require("react/jsx-runtime");
5907
+ var List2 = import_styled_components50.default.div`
5872
5908
  display: flex;
5873
5909
  flex-direction: column;
5874
5910
  `;
5875
- var Item2 = import_styled_components49.default.div`
5911
+ var Item2 = import_styled_components50.default.div`
5876
5912
  display: flex;
5877
5913
  gap: 12px;
5878
5914
  align-items: stretch;
5879
5915
  `;
5880
- var Rail = import_styled_components49.default.div`
5916
+ var Rail = import_styled_components50.default.div`
5881
5917
  display: flex;
5882
5918
  flex-direction: column;
5883
5919
  align-items: center;
5884
5920
  width: 16px;
5885
5921
  `;
5886
- var Dot2 = import_styled_components49.default.div`
5922
+ var Dot2 = import_styled_components50.default.div`
5887
5923
  width: 10px;
5888
5924
  height: 10px;
5889
5925
  border-radius: 50%;
@@ -5891,13 +5927,13 @@ var Dot2 = import_styled_components49.default.div`
5891
5927
  flex: 0 0 auto;
5892
5928
  background: ${({ $color }) => $color};
5893
5929
  `;
5894
- var Line = import_styled_components49.default.div`
5930
+ var Line = import_styled_components50.default.div`
5895
5931
  width: 2px;
5896
5932
  flex: 1;
5897
5933
  min-height: 16px;
5898
5934
  background: ${({ $color }) => $color};
5899
5935
  `;
5900
- var Content2 = import_styled_components49.default.div`
5936
+ var Content2 = import_styled_components50.default.div`
5901
5937
  display: flex;
5902
5938
  flex-direction: column;
5903
5939
  gap: 2px;
@@ -5909,21 +5945,21 @@ var Timeline = ({
5909
5945
  emptyLabel = "Aucun \xE9v\xE9nement"
5910
5946
  }) => {
5911
5947
  if (items.length === 0) {
5912
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Text, { size: "s", color: colors.grey_600, children: emptyLabel });
5948
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text, { size: "s", color: colors.grey_600, children: emptyLabel });
5913
5949
  }
5914
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(List2, { children: items.map((item, index) => {
5950
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(List2, { children: items.map((item, index) => {
5915
5951
  var _a;
5916
5952
  const isLast = index === items.length - 1;
5917
5953
  const dotColor = (_a = item.color) != null ? _a : colors.blue_700;
5918
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Item2, { children: [
5919
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Rail, { children: [
5920
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Dot2, { $color: dotColor }),
5921
- !isLast && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Line, { $color: lineColor })
5954
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Item2, { children: [
5955
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Rail, { children: [
5956
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Dot2, { $color: dotColor }),
5957
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Line, { $color: lineColor })
5922
5958
  ] }),
5923
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Content2, { $last: isLast, children: [
5924
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Text, { size: "s", weight: item.highlighted ? "700" : "600", children: item.title }),
5925
- item.subtitle && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Text, { size: "xs", color: colors.grey_600, children: item.subtitle }),
5926
- item.description && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Text, { size: "xs", fontStyle: "italic", children: item.description })
5959
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Content2, { $last: isLast, children: [
5960
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text, { size: "s", weight: item.highlighted ? "700" : "600", children: item.title }),
5961
+ item.subtitle && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text, { size: "xs", color: colors.grey_600, children: item.subtitle }),
5962
+ item.description && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Text, { size: "xs", fontStyle: "italic", children: item.description })
5927
5963
  ] })
5928
5964
  ] }, item.id);
5929
5965
  }) });
@@ -6556,6 +6592,7 @@ var parseAmount = (value) => {
6556
6592
  Bubble,
6557
6593
  Bulk,
6558
6594
  Button,
6595
+ Card,
6559
6596
  CardSkeleton,
6560
6597
  Checkbox,
6561
6598
  Col,
package/dist/index.mjs CHANGED
@@ -5027,16 +5027,51 @@ var MetricCard = ({
5027
5027
  );
5028
5028
  };
5029
5029
 
5030
+ // src/Components/Card/Card.tsx
5031
+ import styled44 from "styled-components";
5032
+ import { jsx as jsx53 } from "react/jsx-runtime";
5033
+ var StyledCard = styled44.div`
5034
+ overflow: hidden;
5035
+ transition: box-shadow 0.15s ease;
5036
+ background-color: ${(p) => p.$backgroundColor};
5037
+ border-radius: ${(p) => p.$borderRadius};
5038
+ ${(p) => p.$accentColor ? `border-left: 2px solid ${p.$accentColor};` : ""}
5039
+ ${(p) => p.$clickable ? "cursor: pointer;" : ""}
5040
+ ${(p) => p.$clickable ? "&:hover { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); }" : ""}
5041
+ `;
5042
+ var StyledCardInner = styled44.div`
5043
+ width: 100%;
5044
+ padding: ${(p) => p.$padding};
5045
+ `;
5046
+ var Card2 = ({
5047
+ children,
5048
+ onClick,
5049
+ accentColor,
5050
+ backgroundColor = "#F8FAFC",
5051
+ padding = "10px 12px",
5052
+ borderRadius = "8px"
5053
+ }) => /* @__PURE__ */ jsx53(
5054
+ StyledCard,
5055
+ {
5056
+ $clickable: !!onClick,
5057
+ $backgroundColor: backgroundColor,
5058
+ $borderRadius: borderRadius,
5059
+ $accentColor: accentColor,
5060
+ onClick,
5061
+ children: /* @__PURE__ */ jsx53(StyledCardInner, { $padding: padding, children })
5062
+ }
5063
+ );
5064
+
5030
5065
  // src/Components/Tooltip/Tooltip.tsx
5031
5066
  import { useState as useState17 } from "react";
5032
- import styled44 from "styled-components";
5033
- import { jsx as jsx53, jsxs as jsxs28 } from "react/jsx-runtime";
5034
- var StyledTooltipWrapper = styled44.div`
5067
+ import styled45 from "styled-components";
5068
+ import { jsx as jsx54, jsxs as jsxs28 } from "react/jsx-runtime";
5069
+ var StyledTooltipWrapper = styled45.div`
5035
5070
  position: relative;
5036
5071
  display: inline-block;
5037
5072
  cursor: pointer;
5038
5073
  `;
5039
- var StyledTooltipContent = styled44.div`
5074
+ var StyledTooltipContent = styled45.div`
5040
5075
  visibility: ${(props) => props.$isVisible ? "visible" : "hidden"};
5041
5076
  background-color: ${(props) => props.$backgroundColor || colors.black};
5042
5077
  color: ${colors.white};
@@ -5142,7 +5177,7 @@ var Tooltip = ({
5142
5177
  onMouseLeave: handleMouseLeave,
5143
5178
  children: [
5144
5179
  children,
5145
- /* @__PURE__ */ jsx53(
5180
+ /* @__PURE__ */ jsx54(
5146
5181
  StyledTooltipContent,
5147
5182
  {
5148
5183
  $isVisible: isVisible,
@@ -5150,7 +5185,7 @@ var Tooltip = ({
5150
5185
  $width: width,
5151
5186
  $height: height,
5152
5187
  $direction: direction,
5153
- children: data.length > 0 ? data.map((item, index) => /* @__PURE__ */ jsx53(Text, { size: "s", color: "white", children: item }, index)) : /* @__PURE__ */ jsx53(Text, { size: "s", color: "white", children: "Aucune donn\xE9e" })
5188
+ children: data.length > 0 ? data.map((item, index) => /* @__PURE__ */ jsx54(Text, { size: "s", color: "white", children: item }, index)) : /* @__PURE__ */ jsx54(Text, { size: "s", color: "white", children: "Aucune donn\xE9e" })
5154
5189
  }
5155
5190
  )
5156
5191
  ]
@@ -5160,7 +5195,7 @@ var Tooltip = ({
5160
5195
 
5161
5196
  // src/Components/Pagination/Pagination.tsx
5162
5197
  import { useMemo as useMemo2 } from "react";
5163
- import { jsx as jsx54, jsxs as jsxs29 } from "react/jsx-runtime";
5198
+ import { jsx as jsx55, jsxs as jsxs29 } from "react/jsx-runtime";
5164
5199
  var getPageNumbers = (current, total) => {
5165
5200
  if (total <= 5) {
5166
5201
  return Array.from({ length: total }, (_, i) => i + 1);
@@ -5196,9 +5231,9 @@ var Pagination = ({
5196
5231
  justifyContent: showSummary ? "space-between" : "flex-end",
5197
5232
  alignItems: "center",
5198
5233
  children: [
5199
- showSummary && /* @__PURE__ */ jsx54(Text, { size: "s", color: colors.grey_500, children: summary }),
5234
+ showSummary && /* @__PURE__ */ jsx55(Text, { size: "s", color: colors.grey_500, children: summary }),
5200
5235
  /* @__PURE__ */ jsxs29(Row, { gap: "4", alignItems: "center", style: { width: "fit-content" }, children: [
5201
- /* @__PURE__ */ jsx54(
5236
+ /* @__PURE__ */ jsx55(
5202
5237
  Button,
5203
5238
  {
5204
5239
  size: "xs",
@@ -5209,7 +5244,7 @@ var Pagination = ({
5209
5244
  }
5210
5245
  ),
5211
5246
  pages.map(
5212
- (page, index) => page === "..." ? /* @__PURE__ */ jsx54(Text, { size: "s", color: colors.grey_500, children: "..." }, `ellipsis-${index}`) : /* @__PURE__ */ jsx54(
5247
+ (page, index) => page === "..." ? /* @__PURE__ */ jsx55(Text, { size: "s", color: colors.grey_500, children: "..." }, `ellipsis-${index}`) : /* @__PURE__ */ jsx55(
5213
5248
  Button,
5214
5249
  {
5215
5250
  size: "xs",
@@ -5220,7 +5255,7 @@ var Pagination = ({
5220
5255
  page
5221
5256
  )
5222
5257
  ),
5223
- /* @__PURE__ */ jsx54(
5258
+ /* @__PURE__ */ jsx55(
5224
5259
  Button,
5225
5260
  {
5226
5261
  size: "xs",
@@ -5238,8 +5273,8 @@ var Pagination = ({
5238
5273
 
5239
5274
  // src/Components/FileUploadZone/FileUploadZone.tsx
5240
5275
  import { useState as useState18, useRef as useRef13, useCallback as useCallback6 } from "react";
5241
- import styled45 from "styled-components";
5242
- import { jsx as jsx55, jsxs as jsxs30 } from "react/jsx-runtime";
5276
+ import styled46 from "styled-components";
5277
+ import { jsx as jsx56, jsxs as jsxs30 } from "react/jsx-runtime";
5243
5278
  var ACCEPT_MAP = {
5244
5279
  png: "image/png",
5245
5280
  jpg: "image/jpeg",
@@ -5255,7 +5290,7 @@ var getMimeTypes = (accept) => {
5255
5290
  return accept.map((ext) => ACCEPT_MAP[ext.toLowerCase()] || ext);
5256
5291
  };
5257
5292
  var isPdf = (type) => type === "application/pdf";
5258
- var StyledDropZone = styled45.label`
5293
+ var StyledDropZone = styled46.label`
5259
5294
  display: flex;
5260
5295
  flex-direction: column;
5261
5296
  align-items: center;
@@ -5279,7 +5314,7 @@ var StyledDropZone = styled45.label`
5279
5314
  border-color: ${(p) => p.$disabled ? colors.blue_50 : colors.blue_100};
5280
5315
  }
5281
5316
  `;
5282
- var StyledPreview = styled45.div`
5317
+ var StyledPreview = styled46.div`
5283
5318
  display: flex;
5284
5319
  flex-direction: column;
5285
5320
  align-items: center;
@@ -5290,18 +5325,18 @@ var StyledPreview = styled45.div`
5290
5325
  width: ${(p) => p.$fullWidth ? "100%" : "auto"};
5291
5326
  box-sizing: border-box;
5292
5327
  `;
5293
- var StyledImage2 = styled45.img`
5328
+ var StyledImage2 = styled46.img`
5294
5329
  max-width: 100%;
5295
5330
  max-height: 400px;
5296
5331
  border-radius: 4px;
5297
5332
  object-fit: contain;
5298
5333
  `;
5299
- var StyledEmbed = styled45.embed`
5334
+ var StyledEmbed = styled46.embed`
5300
5335
  width: 100%;
5301
5336
  height: 500px;
5302
5337
  border-radius: 4px;
5303
5338
  `;
5304
- var HiddenInput2 = styled45.input`
5339
+ var HiddenInput2 = styled46.input`
5305
5340
  display: none;
5306
5341
  `;
5307
5342
  var FileUploadZone = ({
@@ -5438,8 +5473,8 @@ var FileUploadZone = ({
5438
5473
  };
5439
5474
  if (previewUrl) {
5440
5475
  return /* @__PURE__ */ jsxs30(StyledPreview, { $fullWidth: fullWidth, children: [
5441
- fileType && isPdf(fileType) ? /* @__PURE__ */ jsx55(StyledEmbed, { src: previewUrl, type: "application/pdf" }) : /* @__PURE__ */ jsx55(StyledImage2, { src: previewUrl, alt: "Aper\xE7u du fichier" }),
5442
- /* @__PURE__ */ jsx55(Row, { gap: "8", justifyContent: "center", children: /* @__PURE__ */ jsx55(
5476
+ fileType && isPdf(fileType) ? /* @__PURE__ */ jsx56(StyledEmbed, { src: previewUrl, type: "application/pdf" }) : /* @__PURE__ */ jsx56(StyledImage2, { src: previewUrl, alt: "Aper\xE7u du fichier" }),
5477
+ /* @__PURE__ */ jsx56(Row, { gap: "8", justifyContent: "center", children: /* @__PURE__ */ jsx56(
5443
5478
  Button,
5444
5479
  {
5445
5480
  onClick: handleRemove,
@@ -5465,7 +5500,7 @@ var FileUploadZone = ({
5465
5500
  onDragLeave: handleDragLeave,
5466
5501
  onDrop: handleDrop,
5467
5502
  children: [
5468
- /* @__PURE__ */ jsx55(
5503
+ /* @__PURE__ */ jsx56(
5469
5504
  HiddenInput2,
5470
5505
  {
5471
5506
  ref: inputRef,
@@ -5476,7 +5511,7 @@ var FileUploadZone = ({
5476
5511
  multiple
5477
5512
  }
5478
5513
  ),
5479
- showIcon && /* @__PURE__ */ jsx55(
5514
+ showIcon && /* @__PURE__ */ jsx56(
5480
5515
  Icon,
5481
5516
  {
5482
5517
  name: icon,
@@ -5485,9 +5520,9 @@ var FileUploadZone = ({
5485
5520
  color: "blue_700"
5486
5521
  }
5487
5522
  ),
5488
- /* @__PURE__ */ jsx55(Text, { size: "s", variant: "grey_600", align: "center", children: label }),
5489
- showBrowse && /* @__PURE__ */ jsx55(Text, { size: "xs", variant: "grey_600", align: "center", children: "ou" }),
5490
- showBrowse && /* @__PURE__ */ jsx55(
5523
+ /* @__PURE__ */ jsx56(Text, { size: "s", variant: "grey_600", align: "center", children: label }),
5524
+ showBrowse && /* @__PURE__ */ jsx56(Text, { size: "xs", variant: "grey_600", align: "center", children: "ou" }),
5525
+ showBrowse && /* @__PURE__ */ jsx56(
5491
5526
  Button,
5492
5527
  {
5493
5528
  outline: true,
@@ -5500,21 +5535,21 @@ var FileUploadZone = ({
5500
5535
  }
5501
5536
  }
5502
5537
  ),
5503
- sublabel && /* @__PURE__ */ jsx55(Text, { size: "xs", variant: "grey_500", align: "center", children: sublabel })
5538
+ sublabel && /* @__PURE__ */ jsx56(Text, { size: "xs", variant: "grey_500", align: "center", children: sublabel })
5504
5539
  ]
5505
5540
  }
5506
5541
  ),
5507
5542
  showFileName && fileName && /* @__PURE__ */ jsxs30(Row, { gap: "8", alignItems: "center", justifyContent: "center", children: [
5508
- /* @__PURE__ */ jsx55(Icon, { name: "file", size: "s", color: "green_700" }),
5509
- /* @__PURE__ */ jsx55(Text, { size: "s", color: "green_700", children: fileName })
5543
+ /* @__PURE__ */ jsx56(Icon, { name: "file", size: "s", color: "green_700" }),
5544
+ /* @__PURE__ */ jsx56(Text, { size: "s", color: "green_700", children: fileName })
5510
5545
  ] }),
5511
- inlineError && /* @__PURE__ */ jsx55(Text, { size: "s", color: "danger", align: "center", children: inlineError })
5546
+ inlineError && /* @__PURE__ */ jsx56(Text, { size: "s", color: "danger", align: "center", children: inlineError })
5512
5547
  ] });
5513
5548
  };
5514
5549
 
5515
5550
  // src/Components/Spinner/Spinner.tsx
5516
- import styled46, { keyframes as keyframes2 } from "styled-components";
5517
- import { jsx as jsx56 } from "react/jsx-runtime";
5551
+ import styled47, { keyframes as keyframes2 } from "styled-components";
5552
+ import { jsx as jsx57 } from "react/jsx-runtime";
5518
5553
  var SIZES3 = {
5519
5554
  s: 20,
5520
5555
  m: 32,
@@ -5524,7 +5559,7 @@ var spin = keyframes2`
5524
5559
  0% { transform: rotate(0deg); }
5525
5560
  100% { transform: rotate(360deg); }
5526
5561
  `;
5527
- var StyledSpinner = styled46.span`
5562
+ var StyledSpinner = styled47.span`
5528
5563
  display: inline-block;
5529
5564
  width: ${(p) => p.$size}px;
5530
5565
  height: ${(p) => p.$size}px;
@@ -5537,7 +5572,7 @@ var StyledSpinner = styled46.span`
5537
5572
  var Spinner = ({ size = "m", color = "primary" }) => {
5538
5573
  const resolvedSize = SIZES3[size];
5539
5574
  const resolvedColor = colors[color] || color || colors.primary;
5540
- return /* @__PURE__ */ jsx56(
5575
+ return /* @__PURE__ */ jsx57(
5541
5576
  StyledSpinner,
5542
5577
  {
5543
5578
  $size: resolvedSize,
@@ -5549,7 +5584,7 @@ var Spinner = ({ size = "m", color = "primary" }) => {
5549
5584
  };
5550
5585
 
5551
5586
  // src/Components/EmptyState/EmptyState.tsx
5552
- import { jsx as jsx57, jsxs as jsxs31 } from "react/jsx-runtime";
5587
+ import { jsx as jsx58, jsxs as jsxs31 } from "react/jsx-runtime";
5553
5588
  var EmptyState = ({
5554
5589
  icon = "inbox",
5555
5590
  title = "Aucun r\xE9sultat",
@@ -5566,20 +5601,20 @@ var EmptyState = ({
5566
5601
  gap: "24",
5567
5602
  padding: "24px 16px",
5568
5603
  children: [
5569
- /* @__PURE__ */ jsx57(Icon, { name: icon, family: "solid", size: "xxl", color: "grey_300" }),
5604
+ /* @__PURE__ */ jsx58(Icon, { name: icon, family: "solid", size: "xxl", color: "grey_300" }),
5570
5605
  /* @__PURE__ */ jsxs31(Col, { alignItems: "center", gap: "4", style: { maxWidth: "360px" }, children: [
5571
- /* @__PURE__ */ jsx57(Text, { size: "m", weight: "600", variant: "grey_600", align: "center", children: title }),
5572
- description && /* @__PURE__ */ jsx57(Text, { size: "s", variant: "grey_500", align: "center", children: description })
5606
+ /* @__PURE__ */ jsx58(Text, { size: "m", weight: "600", variant: "grey_600", align: "center", children: title }),
5607
+ description && /* @__PURE__ */ jsx58(Text, { size: "s", variant: "grey_500", align: "center", children: description })
5573
5608
  ] }),
5574
- actionLabel && onAction && /* @__PURE__ */ jsx57(Button, { label: actionLabel, onClick: onAction })
5609
+ actionLabel && onAction && /* @__PURE__ */ jsx58(Button, { label: actionLabel, onClick: onAction })
5575
5610
  ]
5576
5611
  }
5577
5612
  );
5578
5613
  };
5579
5614
 
5580
5615
  // src/Components/FloatingButton/FloatingButton.tsx
5581
- import styled47 from "styled-components";
5582
- import { jsx as jsx58, jsxs as jsxs32 } from "react/jsx-runtime";
5616
+ import styled48 from "styled-components";
5617
+ import { jsx as jsx59, jsxs as jsxs32 } from "react/jsx-runtime";
5583
5618
  var FloatingButton = ({
5584
5619
  isOpen,
5585
5620
  onToggle,
@@ -5603,8 +5638,8 @@ var FloatingButton = ({
5603
5638
  $transform: arcTransform(index, actions.length),
5604
5639
  onClick: action.onClick,
5605
5640
  children: [
5606
- /* @__PURE__ */ jsx58(Icon, { name: action.icon, family: "regular", size: "s", color: accent }),
5607
- ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ jsx58(CountBadge, { children: action.badge })
5641
+ /* @__PURE__ */ jsx59(Icon, { name: action.icon, family: "regular", size: "s", color: accent }),
5642
+ ((_a = action.badge) != null ? _a : 0) > 0 && /* @__PURE__ */ jsx59(CountBadge, { children: action.badge })
5608
5643
  ]
5609
5644
  },
5610
5645
  action.id
@@ -5619,7 +5654,7 @@ var FloatingButton = ({
5619
5654
  $accent: accent,
5620
5655
  onClick: onToggle,
5621
5656
  children: [
5622
- /* @__PURE__ */ jsx58(
5657
+ /* @__PURE__ */ jsx59(
5623
5658
  Icon,
5624
5659
  {
5625
5660
  name: isOpen ? openIcon : icon,
@@ -5628,7 +5663,7 @@ var FloatingButton = ({
5628
5663
  color: colors.white
5629
5664
  }
5630
5665
  ),
5631
- !isOpen && mainBadge > 0 && /* @__PURE__ */ jsx58(CountBadge, { children: mainBadge })
5666
+ !isOpen && mainBadge > 0 && /* @__PURE__ */ jsx59(CountBadge, { children: mainBadge })
5632
5667
  ]
5633
5668
  }
5634
5669
  )
@@ -5647,7 +5682,7 @@ var arcTransform = (index, total) => {
5647
5682
  const y = Math.round(-Math.sin(angle) * ARC_RADIUS);
5648
5683
  return `translate(${x}px, ${y}px)`;
5649
5684
  };
5650
- var Container6 = styled47.div`
5685
+ var Container6 = styled48.div`
5651
5686
  position: fixed;
5652
5687
  right: 32px;
5653
5688
  bottom: 32px;
@@ -5655,7 +5690,7 @@ var Container6 = styled47.div`
5655
5690
  height: ${FAB_SIZE}px;
5656
5691
  z-index: 1000;
5657
5692
  `;
5658
- var MainButton = styled47.button`
5693
+ var MainButton = styled48.button`
5659
5694
  position: absolute;
5660
5695
  inset: 0;
5661
5696
  display: flex;
@@ -5669,7 +5704,7 @@ var MainButton = styled47.button`
5669
5704
  0 8px 5px rgba(0, 0, 0, 0.1),
5670
5705
  0 20px 12.5px rgba(0, 0, 0, 0.1);
5671
5706
  `;
5672
- var SubButton = styled47.button`
5707
+ var SubButton = styled48.button`
5673
5708
  position: absolute;
5674
5709
  left: ${(FAB_SIZE - SUB_SIZE) / 2}px;
5675
5710
  top: ${(FAB_SIZE - SUB_SIZE) / 2}px;
@@ -5692,7 +5727,7 @@ var SubButton = styled47.button`
5692
5727
  opacity: ${({ $isOpen }) => $isOpen ? 1 : 0};
5693
5728
  pointer-events: ${({ $isOpen }) => $isOpen ? "auto" : "none"};
5694
5729
  `;
5695
- var CountBadge = styled47.span`
5730
+ var CountBadge = styled48.span`
5696
5731
  position: absolute;
5697
5732
  top: -4px;
5698
5733
  right: -4px;
@@ -5710,16 +5745,16 @@ var CountBadge = styled47.span`
5710
5745
  `;
5711
5746
 
5712
5747
  // src/Components/ProgressBar/ProgressBar.tsx
5713
- import styled48 from "styled-components";
5714
- import { jsx as jsx59, jsxs as jsxs33 } from "react/jsx-runtime";
5748
+ import styled49 from "styled-components";
5749
+ import { jsx as jsx60, jsxs as jsxs33 } from "react/jsx-runtime";
5715
5750
  var clampPercent = (value) => Math.max(0, Math.min(100, value));
5716
- var Wrapper6 = styled48.div`
5751
+ var Wrapper6 = styled49.div`
5717
5752
  display: flex;
5718
5753
  align-items: center;
5719
5754
  gap: 8px;
5720
5755
  width: 100%;
5721
5756
  `;
5722
- var Track2 = styled48.div`
5757
+ var Track2 = styled49.div`
5723
5758
  position: relative;
5724
5759
  flex: 1;
5725
5760
  height: ${({ $height }) => $height}px;
@@ -5727,7 +5762,7 @@ var Track2 = styled48.div`
5727
5762
  border-radius: ${({ $height }) => $height}px;
5728
5763
  overflow: hidden;
5729
5764
  `;
5730
- var Fill = styled48.div`
5765
+ var Fill = styled49.div`
5731
5766
  height: 100%;
5732
5767
  width: ${({ $percent }) => $percent}%;
5733
5768
  background: ${({ $color }) => $color};
@@ -5743,7 +5778,7 @@ var ProgressBar2 = ({
5743
5778
  }) => {
5744
5779
  const percent = clampPercent(value);
5745
5780
  return /* @__PURE__ */ jsxs33(Wrapper6, { children: [
5746
- /* @__PURE__ */ jsx59(Track2, { $height: height, $trackColor: trackColor, children: /* @__PURE__ */ jsx59(Fill, { $height: height, $color: color, $percent: percent }) }),
5781
+ /* @__PURE__ */ jsx60(Track2, { $height: height, $trackColor: trackColor, children: /* @__PURE__ */ jsx60(Fill, { $height: height, $color: color, $percent: percent }) }),
5747
5782
  showLabel && /* @__PURE__ */ jsxs33(Text, { size: "s", weight: "600", children: [
5748
5783
  Math.round(percent),
5749
5784
  " %"
@@ -5752,24 +5787,24 @@ var ProgressBar2 = ({
5752
5787
  };
5753
5788
 
5754
5789
  // src/Components/Timeline/Timeline.tsx
5755
- import styled49 from "styled-components";
5756
- import { jsx as jsx60, jsxs as jsxs34 } from "react/jsx-runtime";
5757
- var List2 = styled49.div`
5790
+ import styled50 from "styled-components";
5791
+ import { jsx as jsx61, jsxs as jsxs34 } from "react/jsx-runtime";
5792
+ var List2 = styled50.div`
5758
5793
  display: flex;
5759
5794
  flex-direction: column;
5760
5795
  `;
5761
- var Item2 = styled49.div`
5796
+ var Item2 = styled50.div`
5762
5797
  display: flex;
5763
5798
  gap: 12px;
5764
5799
  align-items: stretch;
5765
5800
  `;
5766
- var Rail = styled49.div`
5801
+ var Rail = styled50.div`
5767
5802
  display: flex;
5768
5803
  flex-direction: column;
5769
5804
  align-items: center;
5770
5805
  width: 16px;
5771
5806
  `;
5772
- var Dot2 = styled49.div`
5807
+ var Dot2 = styled50.div`
5773
5808
  width: 10px;
5774
5809
  height: 10px;
5775
5810
  border-radius: 50%;
@@ -5777,13 +5812,13 @@ var Dot2 = styled49.div`
5777
5812
  flex: 0 0 auto;
5778
5813
  background: ${({ $color }) => $color};
5779
5814
  `;
5780
- var Line = styled49.div`
5815
+ var Line = styled50.div`
5781
5816
  width: 2px;
5782
5817
  flex: 1;
5783
5818
  min-height: 16px;
5784
5819
  background: ${({ $color }) => $color};
5785
5820
  `;
5786
- var Content2 = styled49.div`
5821
+ var Content2 = styled50.div`
5787
5822
  display: flex;
5788
5823
  flex-direction: column;
5789
5824
  gap: 2px;
@@ -5795,21 +5830,21 @@ var Timeline = ({
5795
5830
  emptyLabel = "Aucun \xE9v\xE9nement"
5796
5831
  }) => {
5797
5832
  if (items.length === 0) {
5798
- return /* @__PURE__ */ jsx60(Text, { size: "s", color: colors.grey_600, children: emptyLabel });
5833
+ return /* @__PURE__ */ jsx61(Text, { size: "s", color: colors.grey_600, children: emptyLabel });
5799
5834
  }
5800
- return /* @__PURE__ */ jsx60(List2, { children: items.map((item, index) => {
5835
+ return /* @__PURE__ */ jsx61(List2, { children: items.map((item, index) => {
5801
5836
  var _a;
5802
5837
  const isLast = index === items.length - 1;
5803
5838
  const dotColor = (_a = item.color) != null ? _a : colors.blue_700;
5804
5839
  return /* @__PURE__ */ jsxs34(Item2, { children: [
5805
5840
  /* @__PURE__ */ jsxs34(Rail, { children: [
5806
- /* @__PURE__ */ jsx60(Dot2, { $color: dotColor }),
5807
- !isLast && /* @__PURE__ */ jsx60(Line, { $color: lineColor })
5841
+ /* @__PURE__ */ jsx61(Dot2, { $color: dotColor }),
5842
+ !isLast && /* @__PURE__ */ jsx61(Line, { $color: lineColor })
5808
5843
  ] }),
5809
5844
  /* @__PURE__ */ jsxs34(Content2, { $last: isLast, children: [
5810
- /* @__PURE__ */ jsx60(Text, { size: "s", weight: item.highlighted ? "700" : "600", children: item.title }),
5811
- item.subtitle && /* @__PURE__ */ jsx60(Text, { size: "xs", color: colors.grey_600, children: item.subtitle }),
5812
- item.description && /* @__PURE__ */ jsx60(Text, { size: "xs", fontStyle: "italic", children: item.description })
5845
+ /* @__PURE__ */ jsx61(Text, { size: "s", weight: item.highlighted ? "700" : "600", children: item.title }),
5846
+ item.subtitle && /* @__PURE__ */ jsx61(Text, { size: "xs", color: colors.grey_600, children: item.subtitle }),
5847
+ item.description && /* @__PURE__ */ jsx61(Text, { size: "xs", fontStyle: "italic", children: item.description })
5813
5848
  ] })
5814
5849
  ] }, item.id);
5815
5850
  }) });
@@ -6441,6 +6476,7 @@ export {
6441
6476
  Bubble,
6442
6477
  Bulk,
6443
6478
  Button,
6479
+ Card2 as Card,
6444
6480
  CardSkeleton,
6445
6481
  Checkbox,
6446
6482
  Col,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "design-zystem",
3
- "version": "1.0.261",
3
+ "version": "1.0.262",
4
4
  "description": "A React design system of importable components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",