@lindle/linoardo 1.0.47 → 1.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/alert.cjs +3 -3
  2. package/dist/alert.cjs.map +1 -1
  3. package/dist/alert.js +1 -1
  4. package/dist/badge.cjs +10 -10
  5. package/dist/badge.cjs.map +1 -1
  6. package/dist/badge.js +1 -1
  7. package/dist/button.cjs +45 -45
  8. package/dist/button.cjs.map +1 -1
  9. package/dist/button.js +1 -1
  10. package/dist/chip.cjs +47 -47
  11. package/dist/chip.cjs.map +1 -1
  12. package/dist/chip.js +2 -2
  13. package/dist/{chunk-UWNDN4XL.js → chunk-7TQUULYB.js} +23 -23
  14. package/dist/chunk-7TQUULYB.js.map +1 -0
  15. package/dist/{chunk-NJU7XT54.js → chunk-DMI64Z53.js} +4 -4
  16. package/dist/chunk-DMI64Z53.js.map +1 -0
  17. package/dist/{chunk-5LWU5T2C.js → chunk-GKZFVQW6.js} +16 -16
  18. package/dist/chunk-GKZFVQW6.js.map +1 -0
  19. package/dist/{chunk-4VHGXXZE.js → chunk-H4742H2N.js} +4 -4
  20. package/dist/{chunk-4VHGXXZE.js.map → chunk-H4742H2N.js.map} +1 -1
  21. package/dist/{chunk-4CYM2UM3.js → chunk-HGECC2JH.js} +48 -48
  22. package/dist/chunk-HGECC2JH.js.map +1 -0
  23. package/dist/{chunk-RUOU46YI.js → chunk-HVGCLUW2.js} +47 -47
  24. package/dist/chunk-HVGCLUW2.js.map +1 -0
  25. package/dist/{chunk-GMDNSU26.js → chunk-KK33I72F.js} +5 -5
  26. package/dist/{chunk-GMDNSU26.js.map → chunk-KK33I72F.js.map} +1 -1
  27. package/dist/{chunk-57CCAWFX.js → chunk-KVXZEMAH.js} +4 -4
  28. package/dist/{chunk-57CCAWFX.js.map → chunk-KVXZEMAH.js.map} +1 -1
  29. package/dist/{chunk-7HOQSHPQ.js → chunk-LRWM4ZWZ.js} +3 -3
  30. package/dist/{chunk-7HOQSHPQ.js.map → chunk-LRWM4ZWZ.js.map} +1 -1
  31. package/dist/{chunk-XA74HBMH.js → chunk-LSIAP7ZZ.js} +8 -8
  32. package/dist/chunk-LSIAP7ZZ.js.map +1 -0
  33. package/dist/{chunk-HEXJCQRO.js → chunk-LWCRKQEV.js} +10 -10
  34. package/dist/chunk-LWCRKQEV.js.map +1 -0
  35. package/dist/{chunk-JFIFVLWE.js → chunk-LZYVTGJD.js} +3 -3
  36. package/dist/{chunk-JFIFVLWE.js.map → chunk-LZYVTGJD.js.map} +1 -1
  37. package/dist/{chunk-U2AL7XFY.js → chunk-O3VFEMJ7.js} +4 -4
  38. package/dist/chunk-O3VFEMJ7.js.map +1 -0
  39. package/dist/{chunk-HIRPMCQJ.js → chunk-OQYPWJDA.js} +12 -12
  40. package/dist/{chunk-HIRPMCQJ.js.map → chunk-OQYPWJDA.js.map} +1 -1
  41. package/dist/{chunk-AUVYU7M5.js → chunk-Q7VTD6NY.js} +20 -20
  42. package/dist/chunk-Q7VTD6NY.js.map +1 -0
  43. package/dist/{chunk-HAXGOTZO.js → chunk-UK6RSS4J.js} +3 -3
  44. package/dist/chunk-UK6RSS4J.js.map +1 -0
  45. package/dist/{chunk-KQOR3C7E.js → chunk-ZLBGPLM3.js} +5 -5
  46. package/dist/chunk-ZLBGPLM3.js.map +1 -0
  47. package/dist/dialog.cjs +2 -2
  48. package/dist/dialog.cjs.map +1 -1
  49. package/dist/dialog.js +1 -1
  50. package/dist/expansion-panel/item.cjs +18 -18
  51. package/dist/expansion-panel/item.cjs.map +1 -1
  52. package/dist/expansion-panel/item.js +1 -1
  53. package/dist/expansion-panel.cjs +23 -23
  54. package/dist/expansion-panel.cjs.map +1 -1
  55. package/dist/expansion-panel.js +2 -2
  56. package/dist/hero.cjs +21 -21
  57. package/dist/hero.cjs.map +1 -1
  58. package/dist/hero.js +1 -1
  59. package/dist/icon.cjs +8 -8
  60. package/dist/icon.cjs.map +1 -1
  61. package/dist/icon.js +1 -1
  62. package/dist/index.cjs +227 -227
  63. package/dist/index.cjs.map +1 -1
  64. package/dist/index.js +63 -63
  65. package/dist/index.js.map +1 -1
  66. package/dist/masonry.cjs +1 -1
  67. package/dist/masonry.cjs.map +1 -1
  68. package/dist/masonry.js +1 -1
  69. package/dist/menu.cjs +2 -2
  70. package/dist/menu.cjs.map +1 -1
  71. package/dist/menu.js +1 -1
  72. package/dist/profileCard.cjs +45 -45
  73. package/dist/profileCard.cjs.map +1 -1
  74. package/dist/profileCard.js +2 -2
  75. package/dist/slider.cjs +3 -3
  76. package/dist/slider.cjs.map +1 -1
  77. package/dist/slider.js +1 -1
  78. package/dist/styles.css +863 -14
  79. package/dist/switch.cjs +14 -14
  80. package/dist/switch.cjs.map +1 -1
  81. package/dist/switch.js +1 -1
  82. package/dist/timeline.cjs.map +1 -1
  83. package/dist/timeline.js +2 -2
  84. package/dist/tooltip.cjs +2 -2
  85. package/dist/tooltip.cjs.map +1 -1
  86. package/dist/tooltip.js +1 -1
  87. package/package.json +1 -1
  88. package/readme.md +21 -1
  89. package/dist/chunk-4CYM2UM3.js.map +0 -1
  90. package/dist/chunk-5LWU5T2C.js.map +0 -1
  91. package/dist/chunk-AUVYU7M5.js.map +0 -1
  92. package/dist/chunk-HAXGOTZO.js.map +0 -1
  93. package/dist/chunk-HEXJCQRO.js.map +0 -1
  94. package/dist/chunk-KQOR3C7E.js.map +0 -1
  95. package/dist/chunk-NJU7XT54.js.map +0 -1
  96. package/dist/chunk-RUOU46YI.js.map +0 -1
  97. package/dist/chunk-U2AL7XFY.js.map +0 -1
  98. package/dist/chunk-UWNDN4XL.js.map +0 -1
  99. package/dist/chunk-XA74HBMH.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,32 +1,32 @@
1
1
  export { Notification_default as Notification } from './chunk-S7VLFCLP.js';
2
2
  export { Progress_default as Progress } from './chunk-Z5A2OIDI.js';
3
- export { TimeLine_default as TimeLine, TimeLineItem } from './chunk-JFIFVLWE.js';
3
+ export { TimeLine_default as TimeLine, TimeLineItem } from './chunk-LZYVTGJD.js';
4
4
  export { Input_default as Input } from './chunk-UGG35FPX.js';
5
5
  export { TextArea_default as TextArea } from './chunk-67TAA2MA.js';
6
- export { Slider_default as Slider } from './chunk-GMDNSU26.js';
7
- export { Switch_default as Switch } from './chunk-5LWU5T2C.js';
6
+ export { Slider_default as Slider } from './chunk-KK33I72F.js';
7
+ export { Switch_default as Switch } from './chunk-GKZFVQW6.js';
8
8
  export { Select_default as Select } from './chunk-TRR7TDVA.js';
9
9
  import './chunk-6SKW43XI.js';
10
- export { Icon_default as Icon } from './chunk-HEXJCQRO.js';
11
- export { Hero_default as Hero } from './chunk-UWNDN4XL.js';
12
- export { ProfileCard_default as ProfileCard } from './chunk-7HOQSHPQ.js';
13
- export { ExpansionPanel_default as ExpansionPanel } from './chunk-XA74HBMH.js';
14
- export { ExpansionPanelItem_default as ExpansionPanelItem } from './chunk-AUVYU7M5.js';
15
- export { Dialog_default as Dialog } from './chunk-NJU7XT54.js';
16
- export { ToolTip_default as ToolTip } from './chunk-U2AL7XFY.js';
10
+ export { Icon_default as Icon } from './chunk-LWCRKQEV.js';
11
+ export { Hero_default as Hero } from './chunk-7TQUULYB.js';
12
+ export { ProfileCard_default as ProfileCard } from './chunk-LRWM4ZWZ.js';
13
+ export { ExpansionPanel_default as ExpansionPanel } from './chunk-LSIAP7ZZ.js';
14
+ export { ExpansionPanelItem_default as ExpansionPanelItem } from './chunk-Q7VTD6NY.js';
15
+ export { Dialog_default as Dialog } from './chunk-DMI64Z53.js';
16
+ export { ToolTip_default as ToolTip } from './chunk-O3VFEMJ7.js';
17
17
  export { Card_default as Card } from './chunk-7YZBEH2K.js';
18
18
  export { Block_default as Block } from './chunk-4NKKWBMP.js';
19
19
  export { AppBar_default as AppBar } from './chunk-67BAO35I.js';
20
- export { Masonry_default as Masonry } from './chunk-HAXGOTZO.js';
21
- export { Button_default as Button } from './chunk-RUOU46YI.js';
22
- export { Chip_default as Chip } from './chunk-57CCAWFX.js';
23
- import { resolveIconClassName } from './chunk-4CYM2UM3.js';
20
+ export { Masonry_default as Masonry } from './chunk-UK6RSS4J.js';
21
+ export { Button_default as Button } from './chunk-HVGCLUW2.js';
22
+ export { Chip_default as Chip } from './chunk-KVXZEMAH.js';
23
+ import { resolveIconClassName } from './chunk-HGECC2JH.js';
24
24
  import './chunk-IEILIKS2.js';
25
- export { Badge_default as Badge } from './chunk-HIRPMCQJ.js';
26
- export { Alert_default as Alert } from './chunk-KQOR3C7E.js';
25
+ export { Badge_default as Badge } from './chunk-OQYPWJDA.js';
26
+ export { Alert_default as Alert } from './chunk-ZLBGPLM3.js';
27
27
  export { List_default as List } from './chunk-DUEQOGNR.js';
28
28
  export { Item_default as ListItem } from './chunk-L4UUC4EF.js';
29
- export { Menu_default as Menu } from './chunk-4VHGXXZE.js';
29
+ export { Menu_default as Menu } from './chunk-H4742H2N.js';
30
30
  import * as React3 from 'react';
31
31
  import { isValidElement, useState } from 'react';
32
32
  import { createPortal } from 'react-dom';
@@ -143,7 +143,7 @@ var Drawer = React3.forwardRef((props, ref) => {
143
143
  Drawer.displayName = "Drawer";
144
144
  var Drawer_default = Drawer;
145
145
  var overlayBaseClasses2 = "inset-0 z-[55] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100";
146
- var scrimClasses = "bg-gray-900/55 backdrop-blur-[2px]";
146
+ var scrimClasses = "bg-gray-900/55 dark:bg-black/70 backdrop-blur-[2px]";
147
147
  var Overlay = React3.forwardRef((props, ref) => {
148
148
  const {
149
149
  open,
@@ -229,77 +229,77 @@ var sizeClasses = {
229
229
  "x-large": { tab: "h-11 px-4 text-base", icon: "text-lg" }
230
230
  };
231
231
  var variantListClasses = {
232
- line: "border-b border-gray-200",
233
- card: "rounded-xl bg-gray-100 p-1",
234
- pill: "rounded-full bg-gray-100/80 p-1"
232
+ line: "border-b border-gray-200 dark:border-gray-700",
233
+ card: "rounded-xl bg-gray-100 p-1 dark:bg-gray-800/70",
234
+ pill: "rounded-full bg-gray-100/80 p-1 dark:bg-gray-800/70"
235
235
  };
236
236
  var variantTabBaseClasses = {
237
237
  line: "border-b-2 border-transparent -mb-px",
238
- card: "rounded-lg border border-transparent bg-white/70",
238
+ card: "rounded-lg border border-transparent bg-white/70 dark:bg-gray-900/70",
239
239
  pill: "rounded-full"
240
240
  };
241
241
  var paletteClasses = {
242
242
  primary: {
243
243
  text: "text-primary",
244
244
  border: "border-primary",
245
- bg: "bg-primary/10",
246
- ring: "ring-primary/30",
245
+ bg: "bg-primary/10 dark:bg-primary/20",
246
+ ring: "ring-primary/30 dark:ring-primary/40",
247
247
  ink: "bg-primary"
248
248
  },
249
249
  neutral: {
250
- text: "text-gray-900",
251
- border: "border-gray-900",
252
- bg: "bg-gray-100",
253
- ring: "ring-gray-900/20",
254
- ink: "bg-gray-900"
250
+ text: "text-gray-900 dark:text-gray-100",
251
+ border: "border-gray-900 dark:border-gray-100",
252
+ bg: "bg-gray-100 dark:bg-gray-800",
253
+ ring: "ring-gray-900/20 dark:ring-gray-200/25",
254
+ ink: "bg-gray-900 dark:bg-gray-100"
255
255
  },
256
256
  info: {
257
- text: "text-sky-600",
258
- border: "border-sky-500",
259
- bg: "bg-sky-50",
260
- ring: "ring-sky-500/20",
257
+ text: "text-sky-600 dark:text-sky-300",
258
+ border: "border-sky-500 dark:border-sky-400",
259
+ bg: "bg-sky-50 dark:bg-sky-900/30",
260
+ ring: "ring-sky-500/20 dark:ring-sky-400/30",
261
261
  ink: "bg-sky-500"
262
262
  },
263
263
  success: {
264
- text: "text-emerald-600",
265
- border: "border-emerald-500",
266
- bg: "bg-emerald-50",
267
- ring: "ring-emerald-500/20",
264
+ text: "text-emerald-600 dark:text-emerald-300",
265
+ border: "border-emerald-500 dark:border-emerald-400",
266
+ bg: "bg-emerald-50 dark:bg-emerald-900/30",
267
+ ring: "ring-emerald-500/20 dark:ring-emerald-400/30",
268
268
  ink: "bg-emerald-500"
269
269
  },
270
270
  warning: {
271
- text: "text-amber-600",
272
- border: "border-amber-500",
273
- bg: "bg-amber-50",
274
- ring: "ring-amber-500/20",
271
+ text: "text-amber-600 dark:text-amber-300",
272
+ border: "border-amber-500 dark:border-amber-400",
273
+ bg: "bg-amber-50 dark:bg-amber-900/30",
274
+ ring: "ring-amber-500/20 dark:ring-amber-400/30",
275
275
  ink: "bg-amber-500"
276
276
  },
277
277
  danger: {
278
- text: "text-red-600",
279
- border: "border-red-500",
280
- bg: "bg-red-50",
281
- ring: "ring-red-500/20",
278
+ text: "text-red-600 dark:text-red-300",
279
+ border: "border-red-500 dark:border-red-400",
280
+ bg: "bg-red-50 dark:bg-red-900/30",
281
+ ring: "ring-red-500/20 dark:ring-red-400/30",
282
282
  ink: "bg-red-500"
283
283
  },
284
284
  surface: {
285
- text: "text-gray-900",
286
- border: "border-gray-300",
287
- bg: "bg-white",
288
- ring: "ring-gray-300/30",
289
- ink: "bg-gray-400"
285
+ text: "text-gray-900 dark:text-gray-100",
286
+ border: "border-gray-300 dark:border-gray-600",
287
+ bg: "bg-white dark:bg-gray-900",
288
+ ring: "ring-gray-300/30 dark:ring-gray-600/40",
289
+ ink: "bg-gray-400 dark:bg-gray-500"
290
290
  },
291
291
  bw: {
292
- text: "text-black",
293
- border: "border-black",
294
- bg: "bg-black/10",
295
- ring: "ring-black/20",
296
- ink: "bg-black"
292
+ text: "text-black dark:text-white",
293
+ border: "border-black dark:border-white",
294
+ bg: "bg-black/10 dark:bg-white/10",
295
+ ring: "ring-black/20 dark:ring-white/30",
296
+ ink: "bg-black dark:bg-white"
297
297
  }
298
298
  };
299
299
  var panelVariantClasses = {
300
300
  line: "pt-4",
301
- card: "mt-3 rounded-xl border border-gray-200 bg-white p-4 shadow-sm",
302
- pill: "mt-3 rounded-2xl border border-gray-200 bg-white/90 p-4"
301
+ card: "mt-3 rounded-xl border border-gray-200 bg-white p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900",
302
+ pill: "mt-3 rounded-2xl border border-gray-200 bg-white/90 p-4 dark:border-gray-700 dark:bg-gray-900/90"
303
303
  };
304
304
  var isExtraContentObject = (value) => {
305
305
  return !!value && typeof value === "object" && !React3.isValidElement(value) && ("left" in value || "right" in value);
@@ -475,7 +475,7 @@ var Tabs = React3.forwardRef((props, ref) => {
475
475
  ...rest,
476
476
  id,
477
477
  ref,
478
- className: twMerge("tabs flex w-full flex-col text-gray-900", className),
478
+ className: twMerge("tabs flex w-full flex-col text-gray-900 dark:text-gray-100", className),
479
479
  children: [
480
480
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
481
481
  extraLeft ? /* @__PURE__ */ jsx("div", { className: "flex items-center", children: extraLeft }) : null,
@@ -496,8 +496,8 @@ var Tabs = React3.forwardRef((props, ref) => {
496
496
  const isActive = tab.value === resolvedActive;
497
497
  const sizeClass = sizeClasses[size] ?? sizeClasses.medium;
498
498
  const iconNode = resolveIconNode(tab.icon, size);
499
- const badgeNode = tab.badge ? /* @__PURE__ */ jsx("span", { className: "rounded-full bg-gray-200 px-1.5 py-0.5 text-[0.6rem] font-semibold text-gray-700", children: tab.badge }) : null;
500
- const activeText = isActive ? palette.text : "text-gray-600";
499
+ const badgeNode = tab.badge ? /* @__PURE__ */ jsx("span", { className: "rounded-full bg-gray-200 px-1.5 py-0.5 text-[0.6rem] font-semibold text-gray-700 dark:bg-gray-700 dark:text-gray-200", children: tab.badge }) : null;
500
+ const activeText = isActive ? palette.text : "text-gray-600 dark:text-gray-300";
501
501
  const activeBorder = isActive ? palette.border : "border-transparent";
502
502
  const activeBg = isActive ? palette.bg : void 0;
503
503
  const activeRing = isActive ? palette.ring : void 0;
@@ -523,12 +523,12 @@ var Tabs = React3.forwardRef((props, ref) => {
523
523
  }
524
524
  },
525
525
  className: twMerge(
526
- "inline-flex items-center gap-2 whitespace-nowrap font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2",
526
+ "inline-flex items-center gap-2 whitespace-nowrap font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900",
527
527
  sizeClass.tab,
528
528
  variantTabBaseClasses[variant],
529
529
  variantClasses[variant],
530
530
  activeRing ? `ring-1 ${activeRing}` : void 0,
531
- tab.disabled ? "cursor-not-allowed text-gray-400 opacity-60" : "hover:text-gray-900",
531
+ tab.disabled ? "cursor-not-allowed text-gray-400 dark:text-gray-500 opacity-60" : "hover:text-gray-900 dark:hover:text-gray-100",
532
532
  tab.tabClassName
533
533
  ),
534
534
  "data-state": isActive ? "active" : "inactive",
@@ -585,7 +585,7 @@ var Tab = React3.forwardRef((props, ref) => {
585
585
  "aria-labelledby": __tabsTabId,
586
586
  "aria-hidden": context ? !isActive : void 0,
587
587
  hidden: context ? !isActive : void 0,
588
- className: twMerge("tabs-panel text-gray-900", className, panelClassName),
588
+ className: twMerge("tabs-panel text-gray-900 dark:text-gray-100", className, panelClassName),
589
589
  "data-state": isActive ? "active" : "inactive",
590
590
  "data-disabled": disabled || void 0,
591
591
  children
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Containment/Drawer/index.tsx","../src/Containment/Overlay/index.tsx","../src/Containment/Tabs/context.ts","../src/Containment/Tabs/index.tsx","../src/Feedback/Notification/useNotification.ts"],"names":["React","overlayBaseClasses","React2","jsx","twMerge","createPortal","jsxs"],"mappings":"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","file":"index.js","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { twMerge } from 'tailwind-merge';\n\nconst overlayBaseClasses =\n 'fixed inset-0 z-[55] bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100';\nconst temporaryContainerBaseClasses =\n 'fixed inset-y-0 z-[60] flex max-w-full transition-transform duration-200';\nconst staticContainerBaseClasses = 'relative flex h-full max-w-full';\nconst drawerBaseClasses =\n 'flex h-full w-full flex-col bg-white text-gray-900 shadow-xl shadow-black/10 ring-1 ring-black/5 focus-visible:outline-none dark:bg-gray-900 dark:text-gray-100 dark:ring-white/10';\n\nconst resolveSizeValue = (value?: string | number) => {\n if (value === undefined) {\n return undefined;\n }\n return typeof value === 'number' ? `${value}px` : value;\n};\n\nexport interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {\n location?: 'left' | 'right';\n floating?: boolean;\n temporary?: boolean;\n open?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n width?: string | number;\n onClose?: () => void;\n containerClassName?: string;\n overlayClassName?: string;\n overlayProps?: React.HTMLAttributes<HTMLDivElement>;\n portal?: boolean;\n portalContainer?: Element | null;\n}\n\n/**\n * Navigation drawer container inspired by Vuetify, with temporary and floating modes.\n */\nconst Drawer = React.forwardRef<HTMLDivElement, DrawerProps>((props, ref) => {\n const {\n location = 'left',\n floating = false,\n temporary = false,\n open,\n keepMounted = false,\n scrim = true,\n width = '18rem',\n onClose,\n containerClassName,\n overlayClassName,\n overlayProps,\n portal = true,\n portalContainer,\n className,\n style,\n role,\n ...rest\n } = props;\n\n const isOpen = open ?? !temporary;\n const state = isOpen ? 'open' : 'closed';\n const shouldRender = keepMounted || isOpen || temporary;\n const resolvedPortalContainer =\n portalContainer ?? (typeof document !== 'undefined' ? document.body : null);\n\n const resolvedStyle: React.CSSProperties = { ...style };\n if (resolvedStyle.width === undefined) {\n resolvedStyle.width = resolveSizeValue(width);\n }\n\n const locationClass = location === 'right' ? 'right-0' : 'left-0';\n const translateClass = isOpen\n ? 'translate-x-0'\n : location === 'right'\n ? 'translate-x-full'\n : '-translate-x-full';\n\n const floatingClasses = floating\n ? 'rounded-2xl shadow-2xl shadow-black/20 ring-1 ring-black/10 dark:ring-white/10'\n : undefined;\n const borderClasses =\n !floating && !temporary\n ? location === 'right'\n ? 'border-l border-gray-200 dark:border-gray-800'\n : 'border-r border-gray-200 dark:border-gray-800'\n : undefined;\n\n const {\n className: overlayExtraClassName,\n onClick: overlayOnClick,\n ...restOverlayProps\n } = overlayProps ?? {};\n\n const overlayNode = temporary && scrim && shouldRender ? (\n <div\n {...restOverlayProps}\n className={twMerge(\n overlayBaseClasses,\n isOpen ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0',\n overlayClassName,\n overlayExtraClassName\n )}\n onClick={event => {\n overlayOnClick?.(event);\n if (!event.defaultPrevented) {\n onClose?.();\n }\n }}\n data-state={state}\n aria-hidden\n />\n ) : null;\n\n const drawerNode = shouldRender ? (\n <div\n className={twMerge(\n temporary ? temporaryContainerBaseClasses : staticContainerBaseClasses,\n temporary ? locationClass : undefined,\n temporary ? translateClass : undefined,\n temporary && !isOpen ? 'pointer-events-none' : undefined,\n temporary && floating ? 'p-4' : undefined,\n !temporary && location === 'right' ? 'ml-auto' : undefined,\n containerClassName\n )}\n data-state={state}\n aria-hidden={temporary ? !isOpen : undefined}\n >\n <div\n {...rest}\n ref={ref}\n role={role ?? 'navigation'}\n className={twMerge(drawerBaseClasses, floatingClasses, borderClasses, className)}\n style={resolvedStyle}\n data-state={state}\n >\n {props.children}\n </div>\n </div>\n ) : null;\n\n const outputNode =\n temporary && portal && resolvedPortalContainer && drawerNode\n ? createPortal(\n <>\n {overlayNode}\n {drawerNode}\n </>,\n resolvedPortalContainer\n )\n : (\n <>\n {overlayNode}\n {drawerNode}\n </>\n );\n\n return outputNode;\n});\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n","import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { twMerge } from 'tailwind-merge';\n\nconst overlayBaseClasses =\n 'inset-0 z-[55] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100';\nconst scrimClasses = 'bg-gray-900/55 backdrop-blur-[2px]';\n\nexport interface OverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n /** Render as absolute (inside parent) instead of fixed (viewport). */\n container?: boolean;\n onClose?: () => void;\n portal?: boolean;\n portalContainer?: Element | null;\n}\n\n/**\n * Overlay layer with optional scrim that renders arbitrary children.\n */\nconst Overlay = React.forwardRef<HTMLDivElement, OverlayProps>((props, ref) => {\n const {\n open,\n keepMounted = false,\n scrim = true,\n container = false,\n onClose,\n portal = false,\n portalContainer,\n className,\n role,\n children,\n ...rest\n } = props;\n\n const isOpen = open ?? true;\n const shouldRender = keepMounted || isOpen;\n const state = isOpen ? 'open' : 'closed';\n\n if (!shouldRender) {\n return null;\n }\n\n const resolvedPortalContainer =\n portalContainer ?? (typeof document !== 'undefined' ? document.body : null);\n\n const overlayNode = (\n <div\n {...rest}\n ref={ref}\n role={role ?? 'presentation'}\n className={twMerge(\n overlayBaseClasses,\n container ? 'absolute' : 'fixed',\n scrim ? scrimClasses : 'bg-transparent backdrop-blur-0',\n isOpen ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0',\n className\n )}\n data-state={state}\n onClick={event => {\n if (event.target !== event.currentTarget) {\n return;\n }\n if (!event.defaultPrevented) {\n onClose?.();\n }\n }}\n >\n {children}\n </div>\n );\n\n const shouldPortal = portal && !container;\n\n return shouldPortal && resolvedPortalContainer\n ? createPortal(overlayNode, resolvedPortalContainer)\n : overlayNode;\n});\n\nOverlay.displayName = 'Overlay';\n\nexport default Overlay;\n","import { isValidElement } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { TabProps } from './types.tabs';\n\nconst TABS_TAB_MARKER = '__isTabsTab';\n\ntype MarkerTarget = Record<string | number | symbol, unknown> & {\n type?: unknown;\n};\n\nconst hasMarker = (type: unknown): boolean => {\n if (!type || (typeof type !== 'function' && typeof type !== 'object')) {\n return false;\n }\n\n if ((type as MarkerTarget)[TABS_TAB_MARKER]) {\n return true;\n }\n\n const innerType = (type as MarkerTarget).type;\n if (innerType && innerType !== type) {\n return hasMarker(innerType);\n }\n\n return false;\n};\n\nexport const isTabsTabElement = (element: ReactNode): element is ReactElement<TabProps> => {\n if (!isValidElement(element)) {\n return false;\n }\n\n return hasMarker(element.type);\n};\n\nexport const markTabsTab = (component: unknown) => {\n if (typeof component !== 'function' && (typeof component !== 'object' || component === null)) {\n return;\n }\n\n (component as MarkerTarget)[TABS_TAB_MARKER] = true;\n};\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette, PropIcon } from '@lindle/linoardo/global.types';\nimport { resolveIconClassName } from '../Chip/states.chip';\nimport { isTabsTabElement, markTabsTab } from './context';\nimport type {\n TabProps,\n TabsContextValue,\n TabsExtraContent,\n TabsInternalProps,\n TabsProps,\n TabsSize,\n TabsValue,\n TabsVariant\n} from './types.tabs';\n\nconst sizeClasses: Record<TabsSize, { tab: string; icon: string }> = {\n 'x-small': { tab: 'h-7 px-2 text-xs', icon: 'text-sm' },\n small: { tab: 'h-8 px-2.5 text-sm', icon: 'text-base' },\n medium: { tab: 'h-9 px-3 text-sm', icon: 'text-base' },\n large: { tab: 'h-10 px-3.5 text-base', icon: 'text-lg' },\n 'x-large': { tab: 'h-11 px-4 text-base', icon: 'text-lg' }\n};\n\nconst variantListClasses: Record<TabsVariant, string> = {\n line: 'border-b border-gray-200',\n card: 'rounded-xl bg-gray-100 p-1',\n pill: 'rounded-full bg-gray-100/80 p-1'\n};\n\nconst variantTabBaseClasses: Record<TabsVariant, string> = {\n line: 'border-b-2 border-transparent -mb-px',\n card: 'rounded-lg border border-transparent bg-white/70',\n pill: 'rounded-full'\n};\n\nconst paletteClasses: Record<Palette, { text: string; border: string; bg: string; ring: string; ink: string }> = {\n primary: {\n text: 'text-primary',\n border: 'border-primary',\n bg: 'bg-primary/10',\n ring: 'ring-primary/30',\n ink: 'bg-primary'\n },\n neutral: {\n text: 'text-gray-900',\n border: 'border-gray-900',\n bg: 'bg-gray-100',\n ring: 'ring-gray-900/20',\n ink: 'bg-gray-900'\n },\n info: {\n text: 'text-sky-600',\n border: 'border-sky-500',\n bg: 'bg-sky-50',\n ring: 'ring-sky-500/20',\n ink: 'bg-sky-500'\n },\n success: {\n text: 'text-emerald-600',\n border: 'border-emerald-500',\n bg: 'bg-emerald-50',\n ring: 'ring-emerald-500/20',\n ink: 'bg-emerald-500'\n },\n warning: {\n text: 'text-amber-600',\n border: 'border-amber-500',\n bg: 'bg-amber-50',\n ring: 'ring-amber-500/20',\n ink: 'bg-amber-500'\n },\n danger: {\n text: 'text-red-600',\n border: 'border-red-500',\n bg: 'bg-red-50',\n ring: 'ring-red-500/20',\n ink: 'bg-red-500'\n },\n surface: {\n text: 'text-gray-900',\n border: 'border-gray-300',\n bg: 'bg-white',\n ring: 'ring-gray-300/30',\n ink: 'bg-gray-400'\n },\n bw: {\n text: 'text-black',\n border: 'border-black',\n bg: 'bg-black/10',\n ring: 'ring-black/20',\n ink: 'bg-black'\n }\n};\n\nconst panelVariantClasses: Record<TabsVariant, string> = {\n line: 'pt-4',\n card: 'mt-3 rounded-xl border border-gray-200 bg-white p-4 shadow-sm',\n pill: 'mt-3 rounded-2xl border border-gray-200 bg-white/90 p-4'\n};\n\nconst isExtraContentObject = (value: TabsExtraContent): value is { left?: React.ReactNode; right?: React.ReactNode } => {\n return (\n !!value &&\n typeof value === 'object' &&\n !React.isValidElement(value) &&\n ('left' in (value as Record<string, unknown>) || 'right' in (value as Record<string, unknown>))\n );\n};\n\nconst resolveFirstEnabledTab = (tabs: TabsDescriptor[]): TabsValue | undefined =>\n tabs.find(tab => !tab.disabled)?.value;\n\nconst clampActive = (value: TabsValue | undefined, tabs: TabsDescriptor[]): TabsValue | undefined => {\n if (value === undefined) {\n return resolveFirstEnabledTab(tabs);\n }\n\n const match = tabs.find(tab => tab.value === value);\n if (!match || match.disabled) {\n return resolveFirstEnabledTab(tabs);\n }\n\n return value;\n};\n\nconst resolveIconNode = (icon?: PropIcon, size?: TabsSize) => {\n if (!icon) return null;\n const iconClass = resolveIconClassName(icon);\n return iconClass ? <i className={twMerge(iconClass, size ? sizeClasses[size].icon : undefined)} aria-hidden /> : null;\n};\n\ntype TabsDescriptor = {\n element: React.ReactElement<TabProps>;\n index: number;\n value: TabsValue;\n label: React.ReactNode;\n disabled?: boolean;\n icon?: PropIcon;\n badge?: React.ReactNode;\n tabClassName?: string;\n panelClassName?: string;\n tabId: string;\n panelId: string;\n forceRender?: boolean;\n};\n\nconst collectTabs = (children: React.ReactNode, tabsId: string): TabsDescriptor[] => {\n const tabs: TabsDescriptor[] = [];\n let index = 0;\n\n const walk = (node: React.ReactNode) => {\n if (Array.isArray(node)) {\n node.forEach(walk);\n return;\n }\n\n if (!isTabsTabElement(node)) {\n if (React.isValidElement(node)) {\n const props = node.props as { children?: React.ReactNode } | null;\n if (props && Object.prototype.hasOwnProperty.call(props, 'children')) {\n walk(props.children);\n }\n }\n return;\n }\n\n const tabIndex = index++;\n const value = node.props.value ?? tabIndex;\n const tabId = `${tabsId}-tab-${tabIndex}`;\n const panelId = `${tabsId}-panel-${tabIndex}`;\n\n tabs.push({\n element: node,\n index: tabIndex,\n value,\n label: node.props.label,\n disabled: node.props.disabled,\n icon: node.props.icon,\n badge: node.props.badge,\n tabClassName: node.props.tabClassName,\n panelClassName: node.props.panelClassName,\n tabId,\n panelId,\n forceRender: node.props.forceRender\n });\n };\n\n walk(children);\n return tabs;\n};\n\nconst injectTabs = (\n children: React.ReactNode,\n context: TabsContextValue,\n tabs: TabsDescriptor[]\n): React.ReactNode => {\n let index = 0;\n\n const walk = (node: React.ReactNode): React.ReactNode => {\n if (Array.isArray(node)) {\n let changed = false;\n const next = node.map(child => {\n const mapped = walk(child);\n if (mapped !== child) {\n changed = true;\n }\n return mapped;\n });\n return changed ? next : node;\n }\n\n if (!React.isValidElement(node)) {\n return node;\n }\n\n if (isTabsTabElement(node)) {\n const tab = tabs[index++];\n if (!tab) {\n return node;\n }\n const injectedProps: Partial<TabProps & TabsInternalProps> = {\n value: tab.value,\n __tabsContext: context,\n __tabsValue: tab.value,\n __tabsIndex: tab.index,\n __tabsTabId: tab.tabId,\n __tabsPanelId: tab.panelId\n };\n return React.cloneElement(node, injectedProps);\n }\n\n if (node.props) {\n const props = node.props as { children?: React.ReactNode } | null;\n if (props && Object.prototype.hasOwnProperty.call(props, 'children')) {\n const mappedChildren = walk(props.children);\n if (mappedChildren !== props.children) {\n return React.cloneElement(node, undefined, mappedChildren);\n }\n }\n }\n\n return node;\n };\n\n return walk(children);\n};\n\nconst handleTabListKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(key)) {\n return;\n }\n\n const tabs = Array.from(event.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]'))\n .filter(tab => !tab.disabled);\n\n if (!tabs.length) {\n return;\n }\n\n const currentIndex = tabs.findIndex(tab => tab === document.activeElement);\n let nextIndex = currentIndex;\n\n if (key === 'ArrowRight') {\n nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % tabs.length;\n }\n\n if (key === 'ArrowLeft') {\n nextIndex = currentIndex === -1 ? tabs.length - 1 : (currentIndex - 1 + tabs.length) % tabs.length;\n }\n\n if (key === 'Home') {\n nextIndex = 0;\n }\n\n if (key === 'End') {\n nextIndex = tabs.length - 1;\n }\n\n tabs[nextIndex]?.focus();\n event.preventDefault();\n};\n\n/**\n * Tabbed container inspired by Ant Design with line, card, and pill styles.\n */\nconst Tabs = React.forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const {\n activeKey,\n defaultActiveKey,\n onChange,\n variant = 'line',\n size = 'medium',\n color = 'primary',\n align = 'start',\n tabBarGutter = 8,\n tabBarExtraContent,\n tabBarClassName,\n destroyInactiveTabPane = false,\n keepMounted = false,\n className,\n children,\n id,\n ...rest\n } = props;\n\n const tabsId = typeof id === 'string' && id.trim().length ? id : 'tabs';\n const tabs = collectTabs(children, tabsId);\n const resolvedActive = clampActive(activeKey ?? defaultActiveKey, tabs);\n\n const handleActivate = (value: TabsValue) => {\n onChange?.(value);\n };\n\n const extraContent = tabBarExtraContent;\n const extraLeft = isExtraContentObject(extraContent) ? extraContent.left : null;\n const extraRight = isExtraContentObject(extraContent) ? extraContent.right : extraContent;\n\n const palette = paletteClasses[color] ?? paletteClasses.primary;\n\n const context: TabsContextValue = {\n activeKey: resolvedActive,\n onChange: handleActivate,\n variant,\n size,\n color,\n destroyInactiveTabPane,\n keepMounted\n };\n\n const enhancedChildren = injectTabs(children, context, tabs);\n\n return (\n <div\n {...rest}\n id={id}\n ref={ref}\n className={twMerge('tabs flex w-full flex-col text-gray-900', className)}\n >\n <div className='flex items-center gap-3'>\n {extraLeft ? <div className='flex items-center'>{extraLeft}</div> : null}\n <div\n role='tablist'\n aria-orientation='horizontal'\n onKeyDown={handleTabListKeyDown}\n className={twMerge(\n 'flex min-w-0 flex-1 items-center gap-2 overflow-x-auto',\n align === 'center' ? 'justify-center' : align === 'end' ? 'justify-end' : undefined,\n variantListClasses[variant],\n tabBarClassName\n )}\n style={{ gap: tabBarGutter }}\n >\n {tabs.map(tab => {\n const isActive = tab.value === resolvedActive;\n const sizeClass = sizeClasses[size] ?? sizeClasses.medium;\n const iconNode = resolveIconNode(tab.icon, size);\n const badgeNode = tab.badge ? (\n <span className='rounded-full bg-gray-200 px-1.5 py-0.5 text-[0.6rem] font-semibold text-gray-700'>\n {tab.badge}\n </span>\n ) : null;\n const activeText = isActive ? palette.text : 'text-gray-600';\n const activeBorder = isActive ? palette.border : 'border-transparent';\n const activeBg = isActive ? palette.bg : undefined;\n const activeRing = isActive ? palette.ring : undefined;\n\n const variantClasses = {\n line: twMerge(activeText, activeBorder),\n card: twMerge(activeText, activeBg, activeBorder, isActive ? 'shadow-sm' : undefined),\n pill: twMerge(activeText, activeBg)\n };\n\n return (\n <button\n key={tab.value}\n type='button'\n role='tab'\n id={tab.tabId}\n aria-selected={isActive}\n aria-controls={tab.panelId}\n aria-disabled={tab.disabled || undefined}\n disabled={tab.disabled}\n tabIndex={isActive ? 0 : -1}\n onClick={() => {\n if (!tab.disabled) {\n handleActivate(tab.value);\n }\n }}\n className={twMerge(\n 'inline-flex items-center gap-2 whitespace-nowrap font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2',\n sizeClass.tab,\n variantTabBaseClasses[variant],\n variantClasses[variant],\n activeRing ? `ring-1 ${activeRing}` : undefined,\n tab.disabled\n ? 'cursor-not-allowed text-gray-400 opacity-60'\n : 'hover:text-gray-900',\n tab.tabClassName\n )}\n data-state={isActive ? 'active' : 'inactive'}\n >\n {iconNode}\n <span className='truncate'>{tab.label}</span>\n {badgeNode}\n </button>\n );\n })}\n </div>\n {extraRight ? <div className='flex items-center'>{extraRight}</div> : null}\n </div>\n <div className={twMerge('min-h-0', panelVariantClasses[variant])}>{enhancedChildren}</div>\n </div>\n );\n});\n\nTabs.displayName = 'Tabs';\n\nconst Tab = React.forwardRef<HTMLDivElement, TabProps & TabsInternalProps>((props, ref) => {\n const {\n label: _label,\n value,\n disabled,\n forceRender,\n tabClassName: _tabClassName,\n panelClassName,\n className,\n children,\n __tabsContext,\n __tabsValue,\n __tabsIndex,\n __tabsTabId,\n __tabsPanelId,\n ...rest\n } = props;\n\n const context = __tabsContext;\n const resolvedValue = value ?? __tabsValue;\n const isActive = context ? context.activeKey === resolvedValue : true;\n\n const shouldRender =\n !context ||\n isActive ||\n context.keepMounted ||\n !context.destroyInactiveTabPane ||\n forceRender;\n\n if (!shouldRender) {\n return null;\n }\n\n return (\n <div\n {...rest}\n ref={ref}\n role='tabpanel'\n id={__tabsPanelId}\n aria-labelledby={__tabsTabId}\n aria-hidden={context ? !isActive : undefined}\n hidden={context ? !isActive : undefined}\n className={twMerge('tabs-panel text-gray-900', className, panelClassName)}\n data-state={isActive ? 'active' : 'inactive'}\n data-disabled={disabled || undefined}\n >\n {children}\n </div>\n );\n});\n\nTab.displayName = 'Tab';\nmarkTabsTab(Tab);\n\nexport type { TabProps, TabsProps, TabsValue, TabsVariant, TabsSize } from './types.tabs';\nexport { Tab };\nexport default Tabs;\n","import { useState } from 'react';\nimport { NotificationArgs } from './types.notification';\n\nconst useNotification = (defaultMessage?: NotificationArgs) => {\n const [messages, setMessages] = useState<NotificationArgs[]>([]);\n\n const clearNotifications = (key?: string) => {\n setMessages(prev => (key ? prev.filter(notification => notification.key !== key) : []));\n };\n\n const showNotification = (notification: NotificationArgs) => {\n const key = `${Date.now()}-${Math.random()}`;\n setMessages(prev => [\n ...prev,\n {\n duration: 4000,\n onClose: () => clearNotifications(key),\n ...defaultMessage,\n ...notification,\n key\n }\n ]);\n };\n\n return { messages, showNotification };\n};\n\nexport default useNotification;\n"]}
1
+ {"version":3,"sources":["../src/Containment/Drawer/index.tsx","../src/Containment/Overlay/index.tsx","../src/Containment/Tabs/context.ts","../src/Containment/Tabs/index.tsx","../src/Feedback/Notification/useNotification.ts"],"names":["React","overlayBaseClasses","React2","jsx","twMerge","createPortal","jsxs"],"mappings":"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","file":"index.js","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { twMerge } from 'tailwind-merge';\n\nconst overlayBaseClasses =\n 'fixed inset-0 z-[55] bg-gray-900/55 backdrop-blur-[2px] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100';\nconst temporaryContainerBaseClasses =\n 'fixed inset-y-0 z-[60] flex max-w-full transition-transform duration-200';\nconst staticContainerBaseClasses = 'relative flex h-full max-w-full';\nconst drawerBaseClasses =\n 'flex h-full w-full flex-col bg-white text-gray-900 shadow-xl shadow-black/10 ring-1 ring-black/5 focus-visible:outline-none dark:bg-gray-900 dark:text-gray-100 dark:ring-white/10';\n\nconst resolveSizeValue = (value?: string | number) => {\n if (value === undefined) {\n return undefined;\n }\n return typeof value === 'number' ? `${value}px` : value;\n};\n\nexport interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {\n location?: 'left' | 'right';\n floating?: boolean;\n temporary?: boolean;\n open?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n width?: string | number;\n onClose?: () => void;\n containerClassName?: string;\n overlayClassName?: string;\n overlayProps?: React.HTMLAttributes<HTMLDivElement>;\n portal?: boolean;\n portalContainer?: Element | null;\n}\n\n/**\n * Navigation drawer container inspired by Vuetify, with temporary and floating modes.\n */\nconst Drawer = React.forwardRef<HTMLDivElement, DrawerProps>((props, ref) => {\n const {\n location = 'left',\n floating = false,\n temporary = false,\n open,\n keepMounted = false,\n scrim = true,\n width = '18rem',\n onClose,\n containerClassName,\n overlayClassName,\n overlayProps,\n portal = true,\n portalContainer,\n className,\n style,\n role,\n ...rest\n } = props;\n\n const isOpen = open ?? !temporary;\n const state = isOpen ? 'open' : 'closed';\n const shouldRender = keepMounted || isOpen || temporary;\n const resolvedPortalContainer =\n portalContainer ?? (typeof document !== 'undefined' ? document.body : null);\n\n const resolvedStyle: React.CSSProperties = { ...style };\n if (resolvedStyle.width === undefined) {\n resolvedStyle.width = resolveSizeValue(width);\n }\n\n const locationClass = location === 'right' ? 'right-0' : 'left-0';\n const translateClass = isOpen\n ? 'translate-x-0'\n : location === 'right'\n ? 'translate-x-full'\n : '-translate-x-full';\n\n const floatingClasses = floating\n ? 'rounded-2xl shadow-2xl shadow-black/20 ring-1 ring-black/10 dark:ring-white/10'\n : undefined;\n const borderClasses =\n !floating && !temporary\n ? location === 'right'\n ? 'border-l border-gray-200 dark:border-gray-800'\n : 'border-r border-gray-200 dark:border-gray-800'\n : undefined;\n\n const {\n className: overlayExtraClassName,\n onClick: overlayOnClick,\n ...restOverlayProps\n } = overlayProps ?? {};\n\n const overlayNode = temporary && scrim && shouldRender ? (\n <div\n {...restOverlayProps}\n className={twMerge(\n overlayBaseClasses,\n isOpen ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0',\n overlayClassName,\n overlayExtraClassName\n )}\n onClick={event => {\n overlayOnClick?.(event);\n if (!event.defaultPrevented) {\n onClose?.();\n }\n }}\n data-state={state}\n aria-hidden\n />\n ) : null;\n\n const drawerNode = shouldRender ? (\n <div\n className={twMerge(\n temporary ? temporaryContainerBaseClasses : staticContainerBaseClasses,\n temporary ? locationClass : undefined,\n temporary ? translateClass : undefined,\n temporary && !isOpen ? 'pointer-events-none' : undefined,\n temporary && floating ? 'p-4' : undefined,\n !temporary && location === 'right' ? 'ml-auto' : undefined,\n containerClassName\n )}\n data-state={state}\n aria-hidden={temporary ? !isOpen : undefined}\n >\n <div\n {...rest}\n ref={ref}\n role={role ?? 'navigation'}\n className={twMerge(drawerBaseClasses, floatingClasses, borderClasses, className)}\n style={resolvedStyle}\n data-state={state}\n >\n {props.children}\n </div>\n </div>\n ) : null;\n\n const outputNode =\n temporary && portal && resolvedPortalContainer && drawerNode\n ? createPortal(\n <>\n {overlayNode}\n {drawerNode}\n </>,\n resolvedPortalContainer\n )\n : (\n <>\n {overlayNode}\n {drawerNode}\n </>\n );\n\n return outputNode;\n});\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n","import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { twMerge } from 'tailwind-merge';\n\nconst overlayBaseClasses =\n 'inset-0 z-[55] transition-opacity duration-200 data-[state=closed]:opacity-0 data-[state=open]:opacity-100';\nconst scrimClasses = 'bg-gray-900/55 dark:bg-black/70 backdrop-blur-[2px]';\n\nexport interface OverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n /** Render as absolute (inside parent) instead of fixed (viewport). */\n container?: boolean;\n onClose?: () => void;\n portal?: boolean;\n portalContainer?: Element | null;\n}\n\n/**\n * Overlay layer with optional scrim that renders arbitrary children.\n */\nconst Overlay = React.forwardRef<HTMLDivElement, OverlayProps>((props, ref) => {\n const {\n open,\n keepMounted = false,\n scrim = true,\n container = false,\n onClose,\n portal = false,\n portalContainer,\n className,\n role,\n children,\n ...rest\n } = props;\n\n const isOpen = open ?? true;\n const shouldRender = keepMounted || isOpen;\n const state = isOpen ? 'open' : 'closed';\n\n if (!shouldRender) {\n return null;\n }\n\n const resolvedPortalContainer =\n portalContainer ?? (typeof document !== 'undefined' ? document.body : null);\n\n const overlayNode = (\n <div\n {...rest}\n ref={ref}\n role={role ?? 'presentation'}\n className={twMerge(\n overlayBaseClasses,\n container ? 'absolute' : 'fixed',\n scrim ? scrimClasses : 'bg-transparent backdrop-blur-0',\n isOpen ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0',\n className\n )}\n data-state={state}\n onClick={event => {\n if (event.target !== event.currentTarget) {\n return;\n }\n if (!event.defaultPrevented) {\n onClose?.();\n }\n }}\n >\n {children}\n </div>\n );\n\n const shouldPortal = portal && !container;\n\n return shouldPortal && resolvedPortalContainer\n ? createPortal(overlayNode, resolvedPortalContainer)\n : overlayNode;\n});\n\nOverlay.displayName = 'Overlay';\n\nexport default Overlay;\n","import { isValidElement } from 'react';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { TabProps } from './types.tabs';\n\nconst TABS_TAB_MARKER = '__isTabsTab';\n\ntype MarkerTarget = Record<string | number | symbol, unknown> & {\n type?: unknown;\n};\n\nconst hasMarker = (type: unknown): boolean => {\n if (!type || (typeof type !== 'function' && typeof type !== 'object')) {\n return false;\n }\n\n if ((type as MarkerTarget)[TABS_TAB_MARKER]) {\n return true;\n }\n\n const innerType = (type as MarkerTarget).type;\n if (innerType && innerType !== type) {\n return hasMarker(innerType);\n }\n\n return false;\n};\n\nexport const isTabsTabElement = (element: ReactNode): element is ReactElement<TabProps> => {\n if (!isValidElement(element)) {\n return false;\n }\n\n return hasMarker(element.type);\n};\n\nexport const markTabsTab = (component: unknown) => {\n if (typeof component !== 'function' && (typeof component !== 'object' || component === null)) {\n return;\n }\n\n (component as MarkerTarget)[TABS_TAB_MARKER] = true;\n};\n","import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { Palette, PropIcon } from '@lindle/linoardo/global.types';\nimport { resolveIconClassName } from '../Chip/states.chip';\nimport { isTabsTabElement, markTabsTab } from './context';\nimport type {\n TabProps,\n TabsContextValue,\n TabsExtraContent,\n TabsInternalProps,\n TabsProps,\n TabsSize,\n TabsValue,\n TabsVariant\n} from './types.tabs';\n\nconst sizeClasses: Record<TabsSize, { tab: string; icon: string }> = {\n 'x-small': { tab: 'h-7 px-2 text-xs', icon: 'text-sm' },\n small: { tab: 'h-8 px-2.5 text-sm', icon: 'text-base' },\n medium: { tab: 'h-9 px-3 text-sm', icon: 'text-base' },\n large: { tab: 'h-10 px-3.5 text-base', icon: 'text-lg' },\n 'x-large': { tab: 'h-11 px-4 text-base', icon: 'text-lg' }\n};\n\nconst variantListClasses: Record<TabsVariant, string> = {\n line: 'border-b border-gray-200 dark:border-gray-700',\n card: 'rounded-xl bg-gray-100 p-1 dark:bg-gray-800/70',\n pill: 'rounded-full bg-gray-100/80 p-1 dark:bg-gray-800/70'\n};\n\nconst variantTabBaseClasses: Record<TabsVariant, string> = {\n line: 'border-b-2 border-transparent -mb-px',\n card: 'rounded-lg border border-transparent bg-white/70 dark:bg-gray-900/70',\n pill: 'rounded-full'\n};\n\nconst paletteClasses: Record<Palette, { text: string; border: string; bg: string; ring: string; ink: string }> = {\n primary: {\n text: 'text-primary',\n border: 'border-primary',\n bg: 'bg-primary/10 dark:bg-primary/20',\n ring: 'ring-primary/30 dark:ring-primary/40',\n ink: 'bg-primary'\n },\n neutral: {\n text: 'text-gray-900 dark:text-gray-100',\n border: 'border-gray-900 dark:border-gray-100',\n bg: 'bg-gray-100 dark:bg-gray-800',\n ring: 'ring-gray-900/20 dark:ring-gray-200/25',\n ink: 'bg-gray-900 dark:bg-gray-100'\n },\n info: {\n text: 'text-sky-600 dark:text-sky-300',\n border: 'border-sky-500 dark:border-sky-400',\n bg: 'bg-sky-50 dark:bg-sky-900/30',\n ring: 'ring-sky-500/20 dark:ring-sky-400/30',\n ink: 'bg-sky-500'\n },\n success: {\n text: 'text-emerald-600 dark:text-emerald-300',\n border: 'border-emerald-500 dark:border-emerald-400',\n bg: 'bg-emerald-50 dark:bg-emerald-900/30',\n ring: 'ring-emerald-500/20 dark:ring-emerald-400/30',\n ink: 'bg-emerald-500'\n },\n warning: {\n text: 'text-amber-600 dark:text-amber-300',\n border: 'border-amber-500 dark:border-amber-400',\n bg: 'bg-amber-50 dark:bg-amber-900/30',\n ring: 'ring-amber-500/20 dark:ring-amber-400/30',\n ink: 'bg-amber-500'\n },\n danger: {\n text: 'text-red-600 dark:text-red-300',\n border: 'border-red-500 dark:border-red-400',\n bg: 'bg-red-50 dark:bg-red-900/30',\n ring: 'ring-red-500/20 dark:ring-red-400/30',\n ink: 'bg-red-500'\n },\n surface: {\n text: 'text-gray-900 dark:text-gray-100',\n border: 'border-gray-300 dark:border-gray-600',\n bg: 'bg-white dark:bg-gray-900',\n ring: 'ring-gray-300/30 dark:ring-gray-600/40',\n ink: 'bg-gray-400 dark:bg-gray-500'\n },\n bw: {\n text: 'text-black dark:text-white',\n border: 'border-black dark:border-white',\n bg: 'bg-black/10 dark:bg-white/10',\n ring: 'ring-black/20 dark:ring-white/30',\n ink: 'bg-black dark:bg-white'\n }\n};\n\nconst panelVariantClasses: Record<TabsVariant, string> = {\n line: 'pt-4',\n card: 'mt-3 rounded-xl border border-gray-200 bg-white p-4 shadow-sm dark:border-gray-700 dark:bg-gray-900',\n pill: 'mt-3 rounded-2xl border border-gray-200 bg-white/90 p-4 dark:border-gray-700 dark:bg-gray-900/90'\n};\n\nconst isExtraContentObject = (value: TabsExtraContent): value is { left?: React.ReactNode; right?: React.ReactNode } => {\n return (\n !!value &&\n typeof value === 'object' &&\n !React.isValidElement(value) &&\n ('left' in (value as Record<string, unknown>) || 'right' in (value as Record<string, unknown>))\n );\n};\n\nconst resolveFirstEnabledTab = (tabs: TabsDescriptor[]): TabsValue | undefined =>\n tabs.find(tab => !tab.disabled)?.value;\n\nconst clampActive = (value: TabsValue | undefined, tabs: TabsDescriptor[]): TabsValue | undefined => {\n if (value === undefined) {\n return resolveFirstEnabledTab(tabs);\n }\n\n const match = tabs.find(tab => tab.value === value);\n if (!match || match.disabled) {\n return resolveFirstEnabledTab(tabs);\n }\n\n return value;\n};\n\nconst resolveIconNode = (icon?: PropIcon, size?: TabsSize) => {\n if (!icon) return null;\n const iconClass = resolveIconClassName(icon);\n return iconClass ? <i className={twMerge(iconClass, size ? sizeClasses[size].icon : undefined)} aria-hidden /> : null;\n};\n\ntype TabsDescriptor = {\n element: React.ReactElement<TabProps>;\n index: number;\n value: TabsValue;\n label: React.ReactNode;\n disabled?: boolean;\n icon?: PropIcon;\n badge?: React.ReactNode;\n tabClassName?: string;\n panelClassName?: string;\n tabId: string;\n panelId: string;\n forceRender?: boolean;\n};\n\nconst collectTabs = (children: React.ReactNode, tabsId: string): TabsDescriptor[] => {\n const tabs: TabsDescriptor[] = [];\n let index = 0;\n\n const walk = (node: React.ReactNode) => {\n if (Array.isArray(node)) {\n node.forEach(walk);\n return;\n }\n\n if (!isTabsTabElement(node)) {\n if (React.isValidElement(node)) {\n const props = node.props as { children?: React.ReactNode } | null;\n if (props && Object.prototype.hasOwnProperty.call(props, 'children')) {\n walk(props.children);\n }\n }\n return;\n }\n\n const tabIndex = index++;\n const value = node.props.value ?? tabIndex;\n const tabId = `${tabsId}-tab-${tabIndex}`;\n const panelId = `${tabsId}-panel-${tabIndex}`;\n\n tabs.push({\n element: node,\n index: tabIndex,\n value,\n label: node.props.label,\n disabled: node.props.disabled,\n icon: node.props.icon,\n badge: node.props.badge,\n tabClassName: node.props.tabClassName,\n panelClassName: node.props.panelClassName,\n tabId,\n panelId,\n forceRender: node.props.forceRender\n });\n };\n\n walk(children);\n return tabs;\n};\n\nconst injectTabs = (\n children: React.ReactNode,\n context: TabsContextValue,\n tabs: TabsDescriptor[]\n): React.ReactNode => {\n let index = 0;\n\n const walk = (node: React.ReactNode): React.ReactNode => {\n if (Array.isArray(node)) {\n let changed = false;\n const next = node.map(child => {\n const mapped = walk(child);\n if (mapped !== child) {\n changed = true;\n }\n return mapped;\n });\n return changed ? next : node;\n }\n\n if (!React.isValidElement(node)) {\n return node;\n }\n\n if (isTabsTabElement(node)) {\n const tab = tabs[index++];\n if (!tab) {\n return node;\n }\n const injectedProps: Partial<TabProps & TabsInternalProps> = {\n value: tab.value,\n __tabsContext: context,\n __tabsValue: tab.value,\n __tabsIndex: tab.index,\n __tabsTabId: tab.tabId,\n __tabsPanelId: tab.panelId\n };\n return React.cloneElement(node, injectedProps);\n }\n\n if (node.props) {\n const props = node.props as { children?: React.ReactNode } | null;\n if (props && Object.prototype.hasOwnProperty.call(props, 'children')) {\n const mappedChildren = walk(props.children);\n if (mappedChildren !== props.children) {\n return React.cloneElement(node, undefined, mappedChildren);\n }\n }\n }\n\n return node;\n };\n\n return walk(children);\n};\n\nconst handleTabListKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (!['ArrowLeft', 'ArrowRight', 'Home', 'End'].includes(key)) {\n return;\n }\n\n const tabs = Array.from(event.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]'))\n .filter(tab => !tab.disabled);\n\n if (!tabs.length) {\n return;\n }\n\n const currentIndex = tabs.findIndex(tab => tab === document.activeElement);\n let nextIndex = currentIndex;\n\n if (key === 'ArrowRight') {\n nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % tabs.length;\n }\n\n if (key === 'ArrowLeft') {\n nextIndex = currentIndex === -1 ? tabs.length - 1 : (currentIndex - 1 + tabs.length) % tabs.length;\n }\n\n if (key === 'Home') {\n nextIndex = 0;\n }\n\n if (key === 'End') {\n nextIndex = tabs.length - 1;\n }\n\n tabs[nextIndex]?.focus();\n event.preventDefault();\n};\n\n/**\n * Tabbed container inspired by Ant Design with line, card, and pill styles.\n */\nconst Tabs = React.forwardRef<HTMLDivElement, TabsProps>((props, ref) => {\n const {\n activeKey,\n defaultActiveKey,\n onChange,\n variant = 'line',\n size = 'medium',\n color = 'primary',\n align = 'start',\n tabBarGutter = 8,\n tabBarExtraContent,\n tabBarClassName,\n destroyInactiveTabPane = false,\n keepMounted = false,\n className,\n children,\n id,\n ...rest\n } = props;\n\n const tabsId = typeof id === 'string' && id.trim().length ? id : 'tabs';\n const tabs = collectTabs(children, tabsId);\n const resolvedActive = clampActive(activeKey ?? defaultActiveKey, tabs);\n\n const handleActivate = (value: TabsValue) => {\n onChange?.(value);\n };\n\n const extraContent = tabBarExtraContent;\n const extraLeft = isExtraContentObject(extraContent) ? extraContent.left : null;\n const extraRight = isExtraContentObject(extraContent) ? extraContent.right : extraContent;\n\n const palette = paletteClasses[color] ?? paletteClasses.primary;\n\n const context: TabsContextValue = {\n activeKey: resolvedActive,\n onChange: handleActivate,\n variant,\n size,\n color,\n destroyInactiveTabPane,\n keepMounted\n };\n\n const enhancedChildren = injectTabs(children, context, tabs);\n\n return (\n <div\n {...rest}\n id={id}\n ref={ref}\n className={twMerge('tabs flex w-full flex-col text-gray-900 dark:text-gray-100', className)}\n >\n <div className='flex items-center gap-3'>\n {extraLeft ? <div className='flex items-center'>{extraLeft}</div> : null}\n <div\n role='tablist'\n aria-orientation='horizontal'\n onKeyDown={handleTabListKeyDown}\n className={twMerge(\n 'flex min-w-0 flex-1 items-center gap-2 overflow-x-auto',\n align === 'center' ? 'justify-center' : align === 'end' ? 'justify-end' : undefined,\n variantListClasses[variant],\n tabBarClassName\n )}\n style={{ gap: tabBarGutter }}\n >\n {tabs.map(tab => {\n const isActive = tab.value === resolvedActive;\n const sizeClass = sizeClasses[size] ?? sizeClasses.medium;\n const iconNode = resolveIconNode(tab.icon, size);\n const badgeNode = tab.badge ? (\n <span className='rounded-full bg-gray-200 px-1.5 py-0.5 text-[0.6rem] font-semibold text-gray-700 dark:bg-gray-700 dark:text-gray-200'>\n {tab.badge}\n </span>\n ) : null;\n const activeText = isActive ? palette.text : 'text-gray-600 dark:text-gray-300';\n const activeBorder = isActive ? palette.border : 'border-transparent';\n const activeBg = isActive ? palette.bg : undefined;\n const activeRing = isActive ? palette.ring : undefined;\n\n const variantClasses = {\n line: twMerge(activeText, activeBorder),\n card: twMerge(activeText, activeBg, activeBorder, isActive ? 'shadow-sm' : undefined),\n pill: twMerge(activeText, activeBg)\n };\n\n return (\n <button\n key={tab.value}\n type='button'\n role='tab'\n id={tab.tabId}\n aria-selected={isActive}\n aria-controls={tab.panelId}\n aria-disabled={tab.disabled || undefined}\n disabled={tab.disabled}\n tabIndex={isActive ? 0 : -1}\n onClick={() => {\n if (!tab.disabled) {\n handleActivate(tab.value);\n }\n }}\n className={twMerge(\n 'inline-flex items-center gap-2 whitespace-nowrap font-medium transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900',\n sizeClass.tab,\n variantTabBaseClasses[variant],\n variantClasses[variant],\n activeRing ? `ring-1 ${activeRing}` : undefined,\n tab.disabled\n ? 'cursor-not-allowed text-gray-400 dark:text-gray-500 opacity-60'\n : 'hover:text-gray-900 dark:hover:text-gray-100',\n tab.tabClassName\n )}\n data-state={isActive ? 'active' : 'inactive'}\n >\n {iconNode}\n <span className='truncate'>{tab.label}</span>\n {badgeNode}\n </button>\n );\n })}\n </div>\n {extraRight ? <div className='flex items-center'>{extraRight}</div> : null}\n </div>\n <div className={twMerge('min-h-0', panelVariantClasses[variant])}>{enhancedChildren}</div>\n </div>\n );\n});\n\nTabs.displayName = 'Tabs';\n\nconst Tab = React.forwardRef<HTMLDivElement, TabProps & TabsInternalProps>((props, ref) => {\n const {\n label: _label,\n value,\n disabled,\n forceRender,\n tabClassName: _tabClassName,\n panelClassName,\n className,\n children,\n __tabsContext,\n __tabsValue,\n __tabsIndex,\n __tabsTabId,\n __tabsPanelId,\n ...rest\n } = props;\n\n const context = __tabsContext;\n const resolvedValue = value ?? __tabsValue;\n const isActive = context ? context.activeKey === resolvedValue : true;\n\n const shouldRender =\n !context ||\n isActive ||\n context.keepMounted ||\n !context.destroyInactiveTabPane ||\n forceRender;\n\n if (!shouldRender) {\n return null;\n }\n\n return (\n <div\n {...rest}\n ref={ref}\n role='tabpanel'\n id={__tabsPanelId}\n aria-labelledby={__tabsTabId}\n aria-hidden={context ? !isActive : undefined}\n hidden={context ? !isActive : undefined}\n className={twMerge('tabs-panel text-gray-900 dark:text-gray-100', className, panelClassName)}\n data-state={isActive ? 'active' : 'inactive'}\n data-disabled={disabled || undefined}\n >\n {children}\n </div>\n );\n});\n\nTab.displayName = 'Tab';\nmarkTabsTab(Tab);\n\nexport type { TabProps, TabsProps, TabsValue, TabsVariant, TabsSize } from './types.tabs';\nexport { Tab };\nexport default Tabs;\n","import { useState } from 'react';\nimport { NotificationArgs } from './types.notification';\n\nconst useNotification = (defaultMessage?: NotificationArgs) => {\n const [messages, setMessages] = useState<NotificationArgs[]>([]);\n\n const clearNotifications = (key?: string) => {\n setMessages(prev => (key ? prev.filter(notification => notification.key !== key) : []));\n };\n\n const showNotification = (notification: NotificationArgs) => {\n const key = `${Date.now()}-${Math.random()}`;\n setMessages(prev => [\n ...prev,\n {\n duration: 4000,\n onClose: () => clearNotifications(key),\n ...defaultMessage,\n ...notification,\n key\n }\n ]);\n };\n\n return { messages, showNotification };\n};\n\nexport default useNotification;\n"]}
package/dist/masonry.cjs CHANGED
@@ -25,7 +25,7 @@ function _interopNamespace(e) {
25
25
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
26
 
27
27
  // src/Containment/Masonry/index.tsx
28
- var masonryBaseClass = "masonry-grid w-full";
28
+ var masonryBaseClass = "masonry-grid w-full text-gray-900 dark:text-gray-100";
29
29
  var itemBaseClass = "masonry-item block break-inside-avoid";
30
30
  var MasonryBase = (props, ref) => {
31
31
  const {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Containment/Masonry/index.tsx"],"names":["jsx","twMerge","React"],"mappings":"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","file":"masonry.cjs","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { MasonryComponent, MasonryProps, MasonryRenderItem } from './types.masonry';\n\nconst masonryBaseClass = 'masonry-grid w-full';\nconst itemBaseClass = 'masonry-item block break-inside-avoid';\n\nconst MasonryBase = <T,>(props: MasonryProps<T>, ref: React.ForwardedRef<HTMLDivElement>) => {\n const {\n items,\n renderItem,\n getKey,\n column = 2,\n columnWidth,\n maxColumn,\n gutter = 16,\n className,\n itemClassName,\n itemStyle,\n children,\n style,\n role = 'list',\n ...rest\n } = props;\n\n const resolvedGutter = toCssLength(gutter);\n const columnCount = resolveColumnCount(column, maxColumn, Boolean(columnWidth));\n\n const layoutStyle: React.CSSProperties = {\n columnGap: resolvedGutter,\n columnCount,\n columnWidth: columnWidth ? toCssLength(columnWidth) : undefined,\n columnFill: 'balance',\n ...style\n };\n\n const wrapItem = (content: React.ReactNode, key: React.Key) => (\n <div\n key={key}\n className={twMerge(itemBaseClass, itemClassName)}\n style={{ breakInside: 'avoid', marginBottom: resolvedGutter, width: '100%', ...itemStyle }}\n >\n {content}\n </div>\n );\n\n const renderedItems =\n items && items.length\n ? items.map((item, index) => {\n const content = resolveItemContent(item, index, renderItem);\n return wrapItem(content, resolveItemKey(item, index, getKey));\n })\n : React.Children.map(children, (child, index) => wrapItem(child, resolveChildKey(child, index))) ?? null;\n\n return (\n <div {...rest} ref={ref} role={role} className={twMerge(masonryBaseClass, className)} style={layoutStyle}>\n {renderedItems}\n </div>\n );\n};\n\nconst Masonry = React.forwardRef(MasonryBase) as MasonryComponent;\n\nMasonry.displayName = 'Masonry';\n\nexport type { MasonryProps, MasonryRenderItem } from './types.masonry';\nexport default Masonry;\n\nfunction toCssLength(value?: number | string) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction normalizeColumns(value?: number) {\n if (value === undefined) return undefined;\n if (!Number.isFinite(value)) return undefined;\n return Math.max(1, Math.floor(value));\n}\n\nfunction resolveColumnCount(column?: number, maxColumn?: number, hasColumnWidth?: boolean) {\n const normalizedMax = normalizeColumns(maxColumn);\n if (hasColumnWidth) {\n return normalizedMax;\n }\n\n const normalizedColumn = normalizeColumns(column);\n\n if (normalizedColumn && normalizedMax) {\n return Math.min(normalizedColumn, normalizedMax);\n }\n\n return normalizedColumn ?? normalizedMax;\n}\n\nfunction resolveItemKey<T>(item: T, index: number, getKey?: (item: T, index: number) => React.Key) {\n if (getKey) return getKey(item, index);\n if (React.isValidElement(item) && item.key != null) {\n return item.key;\n }\n return index;\n}\n\nfunction resolveChildKey(child: React.ReactNode, index: number) {\n if (React.isValidElement(child) && child.key != null) {\n return child.key;\n }\n return index;\n}\n\nfunction resolveItemContent<T>(item: T, index: number, renderItem?: MasonryRenderItem<T>) {\n if (renderItem) {\n return renderItem(item, index);\n }\n return item as React.ReactNode;\n}\n"]}
1
+ {"version":3,"sources":["../src/Containment/Masonry/index.tsx"],"names":["jsx","twMerge","React"],"mappings":"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","file":"masonry.cjs","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport type { MasonryComponent, MasonryProps, MasonryRenderItem } from './types.masonry';\n\nconst masonryBaseClass = 'masonry-grid w-full text-gray-900 dark:text-gray-100';\nconst itemBaseClass = 'masonry-item block break-inside-avoid';\n\nconst MasonryBase = <T,>(props: MasonryProps<T>, ref: React.ForwardedRef<HTMLDivElement>) => {\n const {\n items,\n renderItem,\n getKey,\n column = 2,\n columnWidth,\n maxColumn,\n gutter = 16,\n className,\n itemClassName,\n itemStyle,\n children,\n style,\n role = 'list',\n ...rest\n } = props;\n\n const resolvedGutter = toCssLength(gutter);\n const columnCount = resolveColumnCount(column, maxColumn, Boolean(columnWidth));\n\n const layoutStyle: React.CSSProperties = {\n columnGap: resolvedGutter,\n columnCount,\n columnWidth: columnWidth ? toCssLength(columnWidth) : undefined,\n columnFill: 'balance',\n ...style\n };\n\n const wrapItem = (content: React.ReactNode, key: React.Key) => (\n <div\n key={key}\n className={twMerge(itemBaseClass, itemClassName)}\n style={{ breakInside: 'avoid', marginBottom: resolvedGutter, width: '100%', ...itemStyle }}\n >\n {content}\n </div>\n );\n\n const renderedItems =\n items && items.length\n ? items.map((item, index) => {\n const content = resolveItemContent(item, index, renderItem);\n return wrapItem(content, resolveItemKey(item, index, getKey));\n })\n : React.Children.map(children, (child, index) => wrapItem(child, resolveChildKey(child, index))) ?? null;\n\n return (\n <div {...rest} ref={ref} role={role} className={twMerge(masonryBaseClass, className)} style={layoutStyle}>\n {renderedItems}\n </div>\n );\n};\n\nconst Masonry = React.forwardRef(MasonryBase) as MasonryComponent;\n\nMasonry.displayName = 'Masonry';\n\nexport type { MasonryProps, MasonryRenderItem } from './types.masonry';\nexport default Masonry;\n\nfunction toCssLength(value?: number | string) {\n if (value === undefined) return undefined;\n return typeof value === 'number' ? `${value}px` : value;\n}\n\nfunction normalizeColumns(value?: number) {\n if (value === undefined) return undefined;\n if (!Number.isFinite(value)) return undefined;\n return Math.max(1, Math.floor(value));\n}\n\nfunction resolveColumnCount(column?: number, maxColumn?: number, hasColumnWidth?: boolean) {\n const normalizedMax = normalizeColumns(maxColumn);\n if (hasColumnWidth) {\n return normalizedMax;\n }\n\n const normalizedColumn = normalizeColumns(column);\n\n if (normalizedColumn && normalizedMax) {\n return Math.min(normalizedColumn, normalizedMax);\n }\n\n return normalizedColumn ?? normalizedMax;\n}\n\nfunction resolveItemKey<T>(item: T, index: number, getKey?: (item: T, index: number) => React.Key) {\n if (getKey) return getKey(item, index);\n if (React.isValidElement(item) && item.key != null) {\n return item.key;\n }\n return index;\n}\n\nfunction resolveChildKey(child: React.ReactNode, index: number) {\n if (React.isValidElement(child) && child.key != null) {\n return child.key;\n }\n return index;\n}\n\nfunction resolveItemContent<T>(item: T, index: number, renderItem?: MasonryRenderItem<T>) {\n if (renderItem) {\n return renderItem(item, index);\n }\n return item as React.ReactNode;\n}\n"]}
package/dist/masonry.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Masonry_default as default } from './chunk-HAXGOTZO.js';
1
+ export { Masonry_default as default } from './chunk-UK6RSS4J.js';
2
2
  //# sourceMappingURL=masonry.js.map
3
3
  //# sourceMappingURL=masonry.js.map
package/dist/menu.cjs CHANGED
@@ -46,8 +46,8 @@ var offsetClasses = {
46
46
  bottom: "pt-2"
47
47
  };
48
48
  var menuWrapperBaseClasses = "absolute z-50";
49
- var menuBaseClasses = "min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2";
50
- var overlayBaseClasses = "fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]";
49
+ var menuBaseClasses = "min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:border-gray-700/80 dark:bg-gray-900/95 dark:text-gray-100 dark:shadow-black/30 dark:ring-white/10 dark:focus-visible:ring-offset-gray-900";
50
+ var overlayBaseClasses = "fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px] dark:bg-black/50";
51
51
  var Menu = React__namespace.forwardRef((props, ref) => {
52
52
  const {
53
53
  activator,
package/dist/menu.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Containment/Menu/index.tsx"],"names":["React","twMerge","jsx","jsxs"],"mappings":"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","file":"menu.cjs","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport type MenuPlacement =\n | 'bottom-start'\n | 'bottom'\n | 'bottom-end'\n | 'top-start'\n | 'top'\n | 'top-end';\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n activator: React.ReactNode;\n children: React.ReactNode;\n placement?: MenuPlacement;\n open?: boolean;\n openOnHover?: boolean;\n openOnFocus?: boolean;\n matchActivatorWidth?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n contentClassName?: string;\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n overlayClassName?: string;\n}\n\nconst placementClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'left-0 top-full',\n bottom: 'left-1/2 top-full -translate-x-1/2',\n 'bottom-end': 'right-0 top-full',\n 'top-start': 'left-0 bottom-full',\n top: 'left-1/2 bottom-full -translate-x-1/2',\n 'top-end': 'right-0 bottom-full'\n};\n\nconst originClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'origin-top-left',\n bottom: 'origin-top',\n 'bottom-end': 'origin-top-right',\n 'top-start': 'origin-bottom-left',\n top: 'origin-bottom',\n 'top-end': 'origin-bottom-right'\n};\n\nconst offsetClasses: Record<'top' | 'bottom', string> = {\n top: 'pb-2',\n bottom: 'pt-2'\n};\n\nconst menuWrapperBaseClasses = 'absolute z-50';\n\nconst menuBaseClasses =\n 'min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2';\n\nconst overlayBaseClasses = 'fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px]';\n\n/**\n * Contextual menu that opens relative to an activator with optional hover/focus behavior and scrim.\n */\nconst Menu = React.forwardRef<HTMLDivElement, MenuProps>((props, ref) => {\n const {\n activator,\n children,\n placement = 'bottom-start',\n open,\n openOnHover = true,\n openOnFocus = true,\n matchActivatorWidth = false,\n keepMounted = false,\n scrim = false,\n contentClassName,\n contentProps,\n overlayClassName,\n className,\n ...rest\n } = props;\n\n const hasContent = children !== undefined && children !== null;\n const isControlled = open !== undefined;\n const isOpen = open === true;\n const allowHoverTrigger = openOnHover && !isControlled;\n const allowFocusTrigger = openOnFocus && !isControlled;\n const shouldRenderContent =\n hasContent && (keepMounted || isOpen || allowHoverTrigger || allowFocusTrigger);\n const shouldRenderOverlay =\n scrim && hasContent && (isOpen || allowHoverTrigger || allowFocusTrigger);\n const verticalPlacement = placement.startsWith('top') ? 'top' : 'bottom';\n\n const interactiveVisibilityClasses = twMerge(\n 'pointer-events-none',\n isOpen ? 'pointer-events-auto' : undefined,\n allowHoverTrigger ? 'group-hover/menu:pointer-events-auto' : undefined,\n allowFocusTrigger ? 'group-focus-within/menu:pointer-events-auto' : undefined\n );\n\n const visualVisibilityClasses = twMerge(\n 'opacity-0 scale-95',\n isOpen ? 'opacity-100 scale-100' : undefined,\n allowHoverTrigger\n ? 'group-hover/menu:opacity-100 group-hover/menu:scale-100'\n : undefined,\n allowFocusTrigger\n ? 'group-focus-within/menu:opacity-100 group-focus-within/menu:scale-100'\n : undefined\n );\n\n const overlayVisibilityClasses = twMerge(\n 'pointer-events-none opacity-0 transition-opacity duration-150',\n allowHoverTrigger ? 'group-hover/menu:opacity-100' : undefined,\n allowFocusTrigger ? 'group-focus-within/menu:opacity-100' : undefined,\n isOpen ? 'pointer-events-auto opacity-100' : undefined\n );\n\n const {\n className: contentExtraClassName,\n style: contentStyle,\n role: contentRole,\n tabIndex: contentTabIndex,\n ...restContentProps\n } = contentProps ?? {};\n\n const overlayNode = shouldRenderOverlay ? (\n <div\n className={twMerge(overlayBaseClasses, overlayVisibilityClasses, overlayClassName)}\n aria-hidden\n />\n ) : null;\n\n return (\n <div\n {...rest}\n ref={ref}\n className={twMerge('relative inline-flex min-w-0 group/menu', className)}\n data-open={isOpen || undefined}\n >\n {overlayNode}\n <div className='inline-flex w-full min-w-0'>{activator}</div>\n {shouldRenderContent ? (\n <div\n className={twMerge(\n menuWrapperBaseClasses,\n placementClasses[placement],\n offsetClasses[verticalPlacement],\n matchActivatorWidth ? 'min-w-full' : undefined,\n interactiveVisibilityClasses\n )}\n >\n <div\n {...restContentProps}\n className={twMerge(\n menuBaseClasses,\n originClasses[placement],\n visualVisibilityClasses,\n matchActivatorWidth ? 'min-w-full' : undefined,\n contentClassName,\n contentExtraClassName\n )}\n data-state={isOpen ? 'open' : 'closed'}\n role={contentRole ?? 'menu'}\n tabIndex={contentTabIndex ?? -1}\n style={contentStyle}\n >\n {children}\n </div>\n </div>\n ) : null}\n </div>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n"]}
1
+ {"version":3,"sources":["../src/Containment/Menu/index.tsx"],"names":["React","twMerge","jsx","jsxs"],"mappings":"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","file":"menu.cjs","sourcesContent":["import * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport type MenuPlacement =\n | 'bottom-start'\n | 'bottom'\n | 'bottom-end'\n | 'top-start'\n | 'top'\n | 'top-end';\n\nexport interface MenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n activator: React.ReactNode;\n children: React.ReactNode;\n placement?: MenuPlacement;\n open?: boolean;\n openOnHover?: boolean;\n openOnFocus?: boolean;\n matchActivatorWidth?: boolean;\n keepMounted?: boolean;\n scrim?: boolean;\n contentClassName?: string;\n contentProps?: React.HTMLAttributes<HTMLDivElement>;\n overlayClassName?: string;\n}\n\nconst placementClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'left-0 top-full',\n bottom: 'left-1/2 top-full -translate-x-1/2',\n 'bottom-end': 'right-0 top-full',\n 'top-start': 'left-0 bottom-full',\n top: 'left-1/2 bottom-full -translate-x-1/2',\n 'top-end': 'right-0 bottom-full'\n};\n\nconst originClasses: Record<MenuPlacement, string> = {\n 'bottom-start': 'origin-top-left',\n bottom: 'origin-top',\n 'bottom-end': 'origin-top-right',\n 'top-start': 'origin-bottom-left',\n top: 'origin-bottom',\n 'top-end': 'origin-bottom-right'\n};\n\nconst offsetClasses: Record<'top' | 'bottom', string> = {\n top: 'pb-2',\n bottom: 'pt-2'\n};\n\nconst menuWrapperBaseClasses = 'absolute z-50';\n\nconst menuBaseClasses =\n 'min-w-[10rem] rounded-xl border border-gray-200/80 bg-white/95 p-2 text-sm text-gray-700 shadow-lg shadow-gray-900/10 ring-1 ring-black/5 backdrop-blur-md transition-all duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:border-gray-700/80 dark:bg-gray-900/95 dark:text-gray-100 dark:shadow-black/30 dark:ring-white/10 dark:focus-visible:ring-offset-gray-900';\n\nconst overlayBaseClasses = 'fixed inset-0 z-40 bg-gray-900/30 backdrop-blur-[1px] dark:bg-black/50';\n\n/**\n * Contextual menu that opens relative to an activator with optional hover/focus behavior and scrim.\n */\nconst Menu = React.forwardRef<HTMLDivElement, MenuProps>((props, ref) => {\n const {\n activator,\n children,\n placement = 'bottom-start',\n open,\n openOnHover = true,\n openOnFocus = true,\n matchActivatorWidth = false,\n keepMounted = false,\n scrim = false,\n contentClassName,\n contentProps,\n overlayClassName,\n className,\n ...rest\n } = props;\n\n const hasContent = children !== undefined && children !== null;\n const isControlled = open !== undefined;\n const isOpen = open === true;\n const allowHoverTrigger = openOnHover && !isControlled;\n const allowFocusTrigger = openOnFocus && !isControlled;\n const shouldRenderContent =\n hasContent && (keepMounted || isOpen || allowHoverTrigger || allowFocusTrigger);\n const shouldRenderOverlay =\n scrim && hasContent && (isOpen || allowHoverTrigger || allowFocusTrigger);\n const verticalPlacement = placement.startsWith('top') ? 'top' : 'bottom';\n\n const interactiveVisibilityClasses = twMerge(\n 'pointer-events-none',\n isOpen ? 'pointer-events-auto' : undefined,\n allowHoverTrigger ? 'group-hover/menu:pointer-events-auto' : undefined,\n allowFocusTrigger ? 'group-focus-within/menu:pointer-events-auto' : undefined\n );\n\n const visualVisibilityClasses = twMerge(\n 'opacity-0 scale-95',\n isOpen ? 'opacity-100 scale-100' : undefined,\n allowHoverTrigger\n ? 'group-hover/menu:opacity-100 group-hover/menu:scale-100'\n : undefined,\n allowFocusTrigger\n ? 'group-focus-within/menu:opacity-100 group-focus-within/menu:scale-100'\n : undefined\n );\n\n const overlayVisibilityClasses = twMerge(\n 'pointer-events-none opacity-0 transition-opacity duration-150',\n allowHoverTrigger ? 'group-hover/menu:opacity-100' : undefined,\n allowFocusTrigger ? 'group-focus-within/menu:opacity-100' : undefined,\n isOpen ? 'pointer-events-auto opacity-100' : undefined\n );\n\n const {\n className: contentExtraClassName,\n style: contentStyle,\n role: contentRole,\n tabIndex: contentTabIndex,\n ...restContentProps\n } = contentProps ?? {};\n\n const overlayNode = shouldRenderOverlay ? (\n <div\n className={twMerge(overlayBaseClasses, overlayVisibilityClasses, overlayClassName)}\n aria-hidden\n />\n ) : null;\n\n return (\n <div\n {...rest}\n ref={ref}\n className={twMerge('relative inline-flex min-w-0 group/menu', className)}\n data-open={isOpen || undefined}\n >\n {overlayNode}\n <div className='inline-flex w-full min-w-0'>{activator}</div>\n {shouldRenderContent ? (\n <div\n className={twMerge(\n menuWrapperBaseClasses,\n placementClasses[placement],\n offsetClasses[verticalPlacement],\n matchActivatorWidth ? 'min-w-full' : undefined,\n interactiveVisibilityClasses\n )}\n >\n <div\n {...restContentProps}\n className={twMerge(\n menuBaseClasses,\n originClasses[placement],\n visualVisibilityClasses,\n matchActivatorWidth ? 'min-w-full' : undefined,\n contentClassName,\n contentExtraClassName\n )}\n data-state={isOpen ? 'open' : 'closed'}\n role={contentRole ?? 'menu'}\n tabIndex={contentTabIndex ?? -1}\n style={contentStyle}\n >\n {children}\n </div>\n </div>\n ) : null}\n </div>\n );\n});\n\nMenu.displayName = 'Menu';\n\nexport default Menu;\n"]}
package/dist/menu.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Menu_default as default } from './chunk-4VHGXXZE.js';
1
+ export { Menu_default as default } from './chunk-H4742H2N.js';
2
2
  //# sourceMappingURL=menu.js.map
3
3
  //# sourceMappingURL=menu.js.map