@clicktap/ui 2.0.5 → 2.0.6

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 (74) hide show
  1. package/components/Accordion/index.js +1 -0
  2. package/components/AssetRenderer/index.js +1 -0
  3. package/components/AssetRenderer/renderers/index.js +1 -0
  4. package/components/Avatar/index.js +1 -0
  5. package/components/Badge/index.js +1 -0
  6. package/components/Breadcrumbs/index.js +1 -0
  7. package/components/Button/index.js +1 -0
  8. package/components/Card/index.js +1 -0
  9. package/components/Checkbox/Checkbox.js +1 -1
  10. package/components/Checkbox/index.js +1 -0
  11. package/components/Collapsible/index.js +1 -0
  12. package/components/Collection/AttributeDataProvider/index.js +1 -0
  13. package/components/Collection/CollectionFilterChips/index.js +1 -0
  14. package/components/Collection/CollectionFilters/index.js +1 -0
  15. package/components/Collection/CollectionToolbar/index.js +1 -0
  16. package/components/Collection/EmptyResults/index.js +1 -0
  17. package/components/Collection/FilterAccordionTitle/index.js +1 -0
  18. package/components/Collection/FilterRenderer/Renderer/Swatch/index.js +1 -0
  19. package/components/Collection/FilterRenderer/Renderer/index.js +1 -0
  20. package/components/Collection/FilterRenderer/index.js +1 -0
  21. package/components/Collection/ProductCardSwatches/index.js +1 -0
  22. package/components/Collection/ProductPrice/index.js +1 -0
  23. package/components/Collection/index.js +1 -0
  24. package/components/Container/index.js +1 -0
  25. package/components/ContextMenu/index.js +1 -0
  26. package/components/CreditCardExpirationInput/index.js +1 -0
  27. package/components/CreditCardInput/index.js +1 -0
  28. package/components/DateInput/index.js +1 -0
  29. package/components/DateTimeFormat/index.js +1 -0
  30. package/components/Dialog/index.js +1 -0
  31. package/components/DialogTrigger/index.js +1 -0
  32. package/components/Divider/index.js +1 -0
  33. package/components/DobInput/index.js +1 -0
  34. package/components/Drawer/index.js +1 -0
  35. package/components/Icon/index.js +1 -0
  36. package/components/Image/index.js +1 -0
  37. package/components/Input/index.js +1 -0
  38. package/components/Link/index.js +1 -0
  39. package/components/LinkAsButton/index.js +1 -0
  40. package/components/Loader/index.js +1 -0
  41. package/components/Menu/index.js +1 -0
  42. package/components/Meter/index.js +1 -0
  43. package/components/Modal/index.js +1 -0
  44. package/components/ModalOverlay/index.js +1 -0
  45. package/components/NumberFormat/index.js +1 -0
  46. package/components/NumberInput/index.js +1 -0
  47. package/components/NumberTicker/index.js +1 -0
  48. package/components/Pagination/index.js +1 -0
  49. package/components/PasswordCheck/index.js +1 -0
  50. package/components/PhoneInput/index.js +1 -0
  51. package/components/PinInput/index.js +1 -0
  52. package/components/Progressbar/index.js +1 -0
  53. package/components/Radio/index.js +1 -0
  54. package/components/RadioGroup/RadioGroup.js +1 -1
  55. package/components/RadioGroup/index.js +1 -0
  56. package/components/ResendCode/index.js +1 -0
  57. package/components/Select/Option.js +1 -0
  58. package/components/Select/index.js +1 -0
  59. package/components/Slider/index.js +1 -0
  60. package/components/Switch/index.js +1 -0
  61. package/components/Table/index.js +1 -0
  62. package/components/Tabs/index.js +1 -0
  63. package/components/Time/index.js +1 -0
  64. package/components/TimeInput/index.js +1 -0
  65. package/components/Timezone/index.js +1 -0
  66. package/components/ToggleButton/index.js +1 -0
  67. package/components/Tooltip/index.js +1 -0
  68. package/components/UploadImage/index.js +1 -0
  69. package/docs/migrations/2026/08/ui-2026-08-23-use-client-propagates-to-barrels.md +101 -0
  70. package/hooks/useAttributeData.js +1 -0
  71. package/hooks/useCollectionState/index.js +1 -0
  72. package/hooks/useRoute/index.js +1 -0
  73. package/next/index.js +1 -0
  74. package/package.json +1 -1
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Accordion as A,AccordionItem as d,AccordionItemArrow as e}from"./Accordion.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"../../utils/cn.js";import"../Icon/DownArrow.js";export{A as Accordion,d as AccordionItem,e as AccordionItemArrow};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{AssetRenderer as m}from"./AssetRenderer.js";import{AudioRenderer as p}from"./renderers/AudioRenderer.js";import{DownloadLink as n}from"./renderers/DownloadLink.js";import{ImageRenderer as i}from"./renderers/ImageRenderer.js";import{PdfRenderer as a}from"./renderers/PdfRenderer.js";import{VideoRenderer as A}from"./renderers/VideoRenderer.js";import"react/jsx-runtime";import"../../utils/asset-url.js";export{m as AssetRenderer,p as AudioRenderer,n as DownloadLink,i as ImageRenderer,a as PdfRenderer,A as VideoRenderer};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{AudioRenderer as m}from"./AudioRenderer.js";import{DownloadLink as t}from"./DownloadLink.js";import{ImageRenderer as n}from"./ImageRenderer.js";import{PdfRenderer as x}from"./PdfRenderer.js";import{VideoRenderer as a}from"./VideoRenderer.js";import"react/jsx-runtime";import"../../../utils/asset-url.js";export{m as AudioRenderer,t as DownloadLink,n as ImageRenderer,x as PdfRenderer,a as VideoRenderer};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Avatar as a}from"./Avatar.js";import{AvatarGroup as e}from"./AvatarGroup/AvatarGroup.js";import"react/jsx-runtime";import"../../utils/cn.js";export{a as Avatar,e as AvatarGroup};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Badge as e}from"./Badge.js";import"react/jsx-runtime";import"react";import"framer-motion";import"../../utils/cn.js";export{e as Badge};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{BreadcrumbEllipsis as t}from"./BreadcrumbEllipsis.js";import{BreadcrumbItem as i}from"./BreadcrumbItem.js";import{BreadcrumbLink as c}from"./BreadcrumbLink.js";import{BreadcrumbSeparator as f}from"./BreadcrumbSeparator.js";import{Breadcrumbs as x}from"./Breadcrumbs.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{t as BreadcrumbEllipsis,i as BreadcrumbItem,c as BreadcrumbLink,f as BreadcrumbSeparator,x as Breadcrumbs};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Button as e,resolveVariant as a}from"./Button.js";import{ButtonLoadingContent as u}from"./ButtonLoadingContent.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"../../utils/cn.js";import"../Loader/CircularEasing.js";export{e as Button,u as ButtonLoadingContent,a as resolveVariant};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Card as t}from"./Card.js";import"react/jsx-runtime";import"../../utils/cn.js";export{t as Card};
@@ -1 +1 @@
1
- import{jsx as n,jsxs as c,Fragment as h}from"react/jsx-runtime";import{Checkbox as s}from"react-aria-components";import{cn as f}from"../../utils/cn.js";function x({control:t,isHovered:a,isFocused:l,isDisabled:e,isIndeterminate:r,isInvalid:o,isSelected:b,isPressed:u,classNames:g,...d}){return t?typeof t=="function"?t({isHovered:a,isFocused:l,isDisabled:e,isIndeterminate:r,isInvalid:o,isSelected:b,isPressed:u,...d}):t:n("div",{className:f("flex items-center justify-center","w-6 h-6","border border-solid border-border rounded","transition-all duration-200 ease-in-out","checkbox-control",a&&["border-border-emphasis"],l&&["border-border-emphasis outline-2 outline outline-border-subtle"],(e||e&&r)&&["border-border-subtle bg-surface-subtle"],o&&["bg-surface-subtle text-danger border-danger-soft"],o&&a&&["border-danger"],o&&l&&["border-danger outline-danger-ring"],o&&b&&r&&["bg-danger-soft border-danger-soft"],o&&b&&r&&u&&["bg-danger border-danger"],(b||r)&&["border-border bg-slate-300"],(b||r)&&u&&["border-border-emphasis bg-slate-400"],g?.control),children:n("svg",{viewBox:"0 0 18 18","aria-hidden":"true",style:{strokeDasharray:"22px",strokeDashoffset:b||r?44:66},className:f("w-4 h-4 fill-none","stroke-white stroke-[3px]","transition-all duration-200 ease-in-out",e&&r&&["stroke-none fill-slate-300"],r&&["stroke-none fill-white"]),children:r?n("rect",{x:1,y:7.5,width:15,height:3}):n("polyline",{points:"1 9 7 14 15 4"})})})}function w({children:t,slots:a,className:l,classNames:e,...r}){return n(s,{className:f("flex items-center gap-2 cursor-pointer","text-xs text-fg-muted forced-color-adjust-none disabled:text-fg-subtle disabled:cursor-not-allowed group","invalid:text-danger-soft",l),...r,children:o=>c(h,{children:[n(x,{control:a?.control,classNames:e,...o}),typeof t=="function"?t(o):t]})})}export{w as Checkbox,w as default};
1
+ "use client";import{jsx as b,jsxs as c,Fragment as s}from"react/jsx-runtime";import{Checkbox as h}from"react-aria-components";import{cn as f}from"../../utils/cn.js";function x({control:e,isHovered:a,isFocused:l,isDisabled:t,isIndeterminate:r,isInvalid:o,isSelected:n,isPressed:u,classNames:g,...d}){return e?typeof e=="function"?e({isHovered:a,isFocused:l,isDisabled:t,isIndeterminate:r,isInvalid:o,isSelected:n,isPressed:u,...d}):e:b("div",{className:f("flex items-center justify-center","w-6 h-6","border border-solid border-border rounded","transition-all duration-200 ease-in-out","checkbox-control",a&&["border-border-emphasis"],l&&["border-border-emphasis outline-2 outline outline-border-subtle"],(t||t&&r)&&["border-border-subtle bg-surface-subtle"],o&&["bg-surface-subtle text-danger border-danger-soft"],o&&a&&["border-danger"],o&&l&&["border-danger outline-danger-ring"],o&&n&&r&&["bg-danger-soft border-danger-soft"],o&&n&&r&&u&&["bg-danger border-danger"],(n||r)&&["border-border bg-slate-300"],(n||r)&&u&&["border-border-emphasis bg-slate-400"],g?.control),children:b("svg",{viewBox:"0 0 18 18","aria-hidden":"true",style:{strokeDasharray:"22px",strokeDashoffset:n||r?44:66},className:f("w-4 h-4 fill-none","stroke-white stroke-[3px]","transition-all duration-200 ease-in-out",t&&r&&["stroke-none fill-slate-300"],r&&["stroke-none fill-white"]),children:r?b("rect",{x:1,y:7.5,width:15,height:3}):b("polyline",{points:"1 9 7 14 15 4"})})})}function w({children:e,slots:a,className:l,classNames:t,...r}){return b(h,{className:f("flex items-center gap-2 cursor-pointer","text-xs text-fg-muted forced-color-adjust-none disabled:text-fg-subtle disabled:cursor-not-allowed group","invalid:text-danger-soft",l),...r,children:o=>c(s,{children:[b(x,{control:a?.control,classNames:t,...o}),typeof e=="function"?e(o):e]})})}export{w as Checkbox,w as default};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Checkbox as i}from"./Checkbox.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{i as Checkbox};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Collapsible as g}from"./Collapsible.js";import{CollapsibleTrigger as b,CollapsibleTriggerStateContext as s}from"./CollapsibleTrigger.js";import"react/jsx-runtime";import"react";import"framer-motion";import"../../utils/cn.js";import"react-aria-components";import"@react-stately/utils";import"@react-aria/interactions";export{g as Collapsible,b as CollapsibleTrigger,s as CollapsibleTriggerStateContext};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{AttributeDataProvider as o,useAttributeData as a}from"./AttributeDataProvider.js";import"react/jsx-runtime";import"react";export{o as AttributeDataProvider,a as useAttributeData};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{CollectionFilterChips as f}from"./CollectionFilterChips.js";import"react/jsx-runtime";import"react";import"../../Button/Button.js";import"react-aria-components";import"../../../utils/cn.js";import"../../Icon/CrossSmall.js";import"../../../utils/collection/getAppliedFilterChips.js";import"../../../utils/collection/removeFilterChip.js";export{f as CollectionFilterChips};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{CollectionFilters as J}from"./CollectionFilters.js";import"react/jsx-runtime";import"react";import"../../Accordion/Accordion.js";import"react-aria-components";import"../../../utils/cn.js";import"../../Icon/DownArrow.js";import"../../Button/Button.js";import"../../ModalOverlay/ModalOverlay.js";import"framer-motion";import"../../Modal/Modal.js";import"../../Drawer/Drawer.js";import"../../Icon/Cross.js";import"../../Icon/CrossSmall.js";import"../../Icon/Search.js";import"../FilterRenderer/FilterRenderer.js";import"../../../utils/env.js";import"../../../utils/swatch.js";import"../FilterRenderer/Renderer/Option.js";import"../../Checkbox/Checkbox.js";import"../FilterRenderer/Renderer/useOptionFilterToggle.js";import"../FilterRenderer/Renderer/Swatch.js";import"../FilterRenderer/Renderer/Swatch/SwatchColor.js";import"../../Icon/CheckIcon.js";import"../../../utils/color.js";import"../FilterRenderer/Renderer/Swatch/SwatchImage.js";import"../FilterRenderer/Renderer/Swatch/SwatchText.js";import"../FilterRenderer/Renderer/Boolean.js";import"../../RadioGroup/RadioGroup.js";import"../../Radio/Radio.js";import"../FilterRenderer/Renderer/Range.js";import"../../../utils/collection/mergeFilters.js";import"../FilterAccordionTitle/FilterAccordionTitle.js";import"../EmptyResults/EmptyResults.js";export{J as CollectionFilters};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{CollectionToolbar as h}from"./CollectionToolbar.js";import"react/jsx-runtime";import"../../Select/Option.js";import"react-stately";import"../../Select/Select.js";import"react";import"../../Select/ButtonSelect.js";import"react-aria";import"@react-aria/interactions";import"../../../utils/cn.js";import"../../Select/parts.js";import"react-aria-components";import"../../Select/ComboBoxSelect.js";import"../../Loader/Pulse.js";import"../../Select/MultiButtonSelect.js";import"../../Button/Button.js";import"../../Icon/FilterIcon.js";export{h as CollectionToolbar};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{EmptyResults as p}from"./EmptyResults.js";import"react/jsx-runtime";export{p as EmptyResults};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{FilterAccordionTitle as p}from"./FilterAccordionTitle.js";import"react/jsx-runtime";import"../../Icon/CrossSmall.js";import"../../../utils/cn.js";export{p as FilterAccordionTitle};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{SwatchColor as h}from"./SwatchColor.js";import{SwatchImage as S}from"./SwatchImage.js";import{SwatchText as l}from"./SwatchText.js";import"react/jsx-runtime";import"../../../../Checkbox/Checkbox.js";import"react-aria-components";import"../../../../../utils/cn.js";import"../../../../Icon/CheckIcon.js";import"../../../../../utils/env.js";import"../../../../../utils/color.js";import"../../../../../utils/swatch.js";import"../useOptionFilterToggle.js";export{h as SwatchColor,S as SwatchImage,l as SwatchText};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{FilterRendererOption as g}from"./Option.js";import{FilterRendererSwatch as w}from"./Swatch.js";import{FilterRendererBoolean as O}from"./Boolean.js";import{FilterRendererRange as b}from"./Range.js";import"react/jsx-runtime";import"../../../Checkbox/Checkbox.js";import"react-aria-components";import"../../../../utils/cn.js";import"./useOptionFilterToggle.js";import"../../../../utils/swatch.js";import"./Swatch/SwatchColor.js";import"../../../Icon/CheckIcon.js";import"../../../../utils/env.js";import"../../../../utils/color.js";import"./Swatch/SwatchImage.js";import"./Swatch/SwatchText.js";import"../../../RadioGroup/RadioGroup.js";import"../../../Radio/Radio.js";export{O as FilterRendererBoolean,g as FilterRendererOption,b as FilterRendererRange,w as FilterRendererSwatch};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{FilterRenderer as k}from"./FilterRenderer.js";import"react/jsx-runtime";import"../../../utils/env.js";import"../../../utils/swatch.js";import"./Renderer/Option.js";import"../../Checkbox/Checkbox.js";import"react-aria-components";import"../../../utils/cn.js";import"./Renderer/useOptionFilterToggle.js";import"./Renderer/Swatch.js";import"./Renderer/Swatch/SwatchColor.js";import"../../Icon/CheckIcon.js";import"../../../utils/color.js";import"./Renderer/Swatch/SwatchImage.js";import"./Renderer/Swatch/SwatchText.js";import"./Renderer/Boolean.js";import"../../RadioGroup/RadioGroup.js";import"../../Radio/Radio.js";import"./Renderer/Range.js";export{k as FilterRenderer};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{ProductCardSwatches as e}from"./ProductCardSwatches.js";import"react/jsx-runtime";import"react-aria-components";import"../../../utils/cn.js";import"../../Icon/CheckIcon.js";import"../../../utils/env.js";import"../../../utils/color.js";import"../../../utils/swatch.js";export{e as ProductCardSwatches};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{ProductPrice as c}from"./ProductPrice.js";import"react/jsx-runtime";export{c as ProductPrice};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{AttributeDataProvider as Q,useAttributeData as U}from"./AttributeDataProvider/AttributeDataProvider.js";import{EmptyResults as W}from"./EmptyResults/EmptyResults.js";import{ProductPrice as Y}from"./ProductPrice/ProductPrice.js";import{FilterRenderer as _}from"./FilterRenderer/FilterRenderer.js";import{CollectionFilterChips as rr}from"./CollectionFilterChips/CollectionFilterChips.js";import{FilterAccordionTitle as tr}from"./FilterAccordionTitle/FilterAccordionTitle.js";import{ProductCardSwatches as pr}from"./ProductCardSwatches/ProductCardSwatches.js";import{CollectionFilters as er}from"./CollectionFilters/CollectionFilters.js";import{CollectionToolbar as cr}from"./CollectionToolbar/CollectionToolbar.js";import"react/jsx-runtime";import"react";import"../../utils/env.js";import"../../utils/swatch.js";import"./FilterRenderer/Renderer/Option.js";import"../Checkbox/Checkbox.js";import"react-aria-components";import"../../utils/cn.js";import"./FilterRenderer/Renderer/useOptionFilterToggle.js";import"./FilterRenderer/Renderer/Swatch.js";import"./FilterRenderer/Renderer/Swatch/SwatchColor.js";import"../Icon/CheckIcon.js";import"../../utils/color.js";import"./FilterRenderer/Renderer/Swatch/SwatchImage.js";import"./FilterRenderer/Renderer/Swatch/SwatchText.js";import"./FilterRenderer/Renderer/Boolean.js";import"../RadioGroup/RadioGroup.js";import"../Radio/Radio.js";import"./FilterRenderer/Renderer/Range.js";import"../Button/Button.js";import"../Icon/CrossSmall.js";import"../../utils/collection/getAppliedFilterChips.js";import"../../utils/collection/removeFilterChip.js";import"../Accordion/Accordion.js";import"../Icon/DownArrow.js";import"../ModalOverlay/ModalOverlay.js";import"framer-motion";import"../Modal/Modal.js";import"../Drawer/Drawer.js";import"../Icon/Cross.js";import"../Icon/Search.js";import"../../utils/collection/mergeFilters.js";import"../Select/Option.js";import"react-stately";import"../Select/Select.js";import"../Select/ButtonSelect.js";import"react-aria";import"@react-aria/interactions";import"../Select/parts.js";import"../Select/ComboBoxSelect.js";import"../Loader/Pulse.js";import"../Select/MultiButtonSelect.js";import"../Icon/FilterIcon.js";export{Q as AttributeDataProvider,rr as CollectionFilterChips,er as CollectionFilters,cr as CollectionToolbar,W as EmptyResults,tr as FilterAccordionTitle,_ as FilterRenderer,pr as ProductCardSwatches,Y as ProductPrice,U as useAttributeData};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Container as p}from"./Container.js";import"react/jsx-runtime";import"react";import"../../utils/cn.js";export{p as Container};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{ContextMenu as n}from"./ContextMenu.js";import"react/jsx-runtime";import"react-aria-components";import"react";import"framer-motion";import"../../utils/cn.js";export{n as ContextMenu};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{CreditCardExpirationInput as d}from"./CreditCardExpirationInput.js";import"react/jsx-runtime";import"../../assets/react-number-format.es-LSEUnuG5.js";import"react";import"react-aria-components";import"../../utils/cn.js";export{d as CreditCardExpirationInput};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{CreditCardInput as e}from"./CreditCardInput.js";import"react/jsx-runtime";import"react";import"../../assets/react-number-format.es-LSEUnuG5.js";import"react-aria-components";import"../../utils/cn.js";export{e as CreditCardInput};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{DateInput as i}from"./DateInput.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{i as DateInput};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{DateTimeFormat as o}from"./DateTimeFormat.js";export{o as DateTimeFormat};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Dialog as e}from"./Dialog.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"framer-motion";import"../../utils/cn.js";export{e as Dialog};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{DialogTrigger as t,useDialogTrigger as e}from"./DialogTrigger.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"react-stately";export{t as DialogTrigger,e as useDialogTrigger};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Divider as t}from"./Divider.js";import"react/jsx-runtime";import"react-aria";import"../../utils/cn.js";export{t as Divider};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{DobInput as e}from"./DobInput.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"../../assets/react-number-format.es-LSEUnuG5.js";import"../../utils/cn.js";export{e as DobInput};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Drawer as a}from"./Drawer.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"framer-motion";import"../../utils/cn.js";export{a as Drawer};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Account as m}from"./Account.js";import{Cart as p}from"./Cart.js";import{Checkmark as c}from"./Checkmark.js";import{Cross as I}from"./Cross.js";import{DownArrow as i}from"./DownArrow.js";import{Hamburger as d}from"./Hamburger.js";import{LinkArrow as u}from"./LinkArrow.js";import{Minus as w}from"./Minus.js";import{Plus as h}from"./Plus.js";import{Search as A}from"./Search.js";import{Trash as U}from"./Trash.js";import{Verified as y}from"./Verified.js";import{ArrowLeftIcon as E}from"./ArrowLeftIcon.js";import{CloseIcon as R}from"./CloseIcon.js";import{CreateIcon as g}from"./CreateIcon.js";import{DeleteIcon as B}from"./DeleteIcon.js";import{FilterIcon as G}from"./FilterIcon.js";import{GemIcon as M}from"./GemIcon.js";import{IncludedIcon as T}from"./IncludedIcon.js";import{InfoIcon as j}from"./InfoIcon.js";import{InvoiceIcon as z}from"./InvoiceIcon.js";import{LockIcon as K}from"./LockIcon.js";import{NoEntryIcon as W}from"./NoEntryIcon.js";import{NoteIcon as Y}from"./NoteIcon.js";import{PencilIcon as _}from"./PencilIcon.js";import{PermissionIcon as oo}from"./PermissionIcon.js";import{ProductBoxIcon as eo}from"./ProductBoxIcon.js";import{ProductIcon as mo}from"./ProductIcon.js";import{QuoteIcon as po}from"./QuoteIcon.js";import{ResetPasswordIcon as co}from"./ResetPasswordIcon.js";import{RoleIcon as Io}from"./RoleIcon.js";import{ShieldUserIcon as io}from"./ShieldUserIcon.js";import{StarIcon as lo}from"./StarIcon.js";import{SyncIcon as Po}from"./SyncIcon.js";import{UpdateIcon as Co}from"./UpdateIcon.js";import{UserEditIcon as ko}from"./UserEditIcon.js";import{UserIcon as So}from"./UserIcon.js";import"react/jsx-runtime";import"../../utils/cn.js";export{m as Account,E as ArrowLeftIcon,p as Cart,c as Checkmark,R as CloseIcon,g as CreateIcon,I as Cross,B as DeleteIcon,i as DownArrow,G as FilterIcon,M as GemIcon,d as Hamburger,T as IncludedIcon,j as InfoIcon,z as InvoiceIcon,u as LinkArrow,K as LockIcon,w as Minus,W as NoEntryIcon,Y as NoteIcon,_ as PencilIcon,oo as PermissionIcon,h as Plus,eo as ProductBoxIcon,mo as ProductIcon,po as QuoteIcon,co as ResetPasswordIcon,Io as RoleIcon,A as Search,io as ShieldUserIcon,lo as StarIcon,Po as SyncIcon,U as Trash,Co as UpdateIcon,ko as UserEditIcon,So as UserIcon,y as Verified};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Image as i}from"./Image.js";import{ImageProvider as I,useImageConfig as f}from"./ImageContext.js";import{DEFAULT_IMAGE_WIDTHS as S,buildSrcSet as a,resolveSrc as x}from"./imageShared.js";import"react/jsx-runtime";import"../../utils/cn.js";import"react";export{S as DEFAULT_IMAGE_WIDTHS,i as Image,I as ImageProvider,a as buildSrcSet,x as resolveSrc,f as useImageConfig};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Input as n}from"./Input.js";import"react/jsx-runtime";import"react-aria-components";import"react";import"../../utils/cn.js";import"../Skeleton/Skeleton.js";import"../../hooks/useIsClient.js";export{n as Input};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Link as e}from"./Link.js";import{LinkProvider as f,useLinkConfig as x}from"./LinkContext.js";import{isExternalUrl as L}from"./utils.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"../../utils/cn.js";export{e as Link,f as LinkProvider,L as isExternalUrl,x as useLinkConfig};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{LinkAsButton as s}from"./LinkAsButton.js";import"react/jsx-runtime";import"react";import"../../utils/cn.js";import"../Link/Link.js";import"react-aria-components";import"../Link/LinkContext.js";import"../Link/utils.js";import"../Button/Button.js";export{s as LinkAsButton};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{CircularEasing as p}from"./CircularEasing.js";import{Pulse as e}from"./Pulse.js";import"react/jsx-runtime";import"../../utils/cn.js";export{p as CircularEasing,e as Pulse};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{ContextMenu as n}from"./ContextMenu.js";import{Menu as f}from"./Menu.js";import"react/jsx-runtime";import"react";import"framer-motion";import"../../utils/cn.js";import"react-dom";export{n as ContextMenu,f as Menu};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Meter as e}from"./Meter.js";import"react/jsx-runtime";import"react-aria-components";import"framer-motion";import"../../utils/cn.js";export{e as Meter};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Modal as i}from"./Modal.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{i as Modal};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{ModalOverlay as e}from"./ModalOverlay.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"framer-motion";import"../../utils/cn.js";export{e as ModalOverlay};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{NumberFormat as o}from"./NumberFormat.js";export{o as NumberFormat};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{NumberInput as i}from"./NumberInput.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{i as NumberInput};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{DigitResolver as b}from"./DigitResolver.js";import{NumberTicker as g}from"./NumberTicker.js";import"react/jsx-runtime";import"react";import"framer-motion";import"./hooks/useColumnTransition.js";import"../../utils/cn.js";import"./hooks/useNumberDelta.js";import"./hooks/useNumberTicker.js";export{b as DigitResolver,g as NumberTicker};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Pagination as a}from"./Pagination.js";import"react/jsx-runtime";import"react";import"../../utils/cn.js";import"../Icon/DownArrow.js";export{a as Pagination};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{PasswordCheck as i}from"./PasswordCheck.js";import"react/jsx-runtime";import"../../utils/cn.js";import"./PasswordCheck.utils.js";export{i as PasswordCheck};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{PhoneInput as u}from"./PhoneInput.js";import"react/jsx-runtime";import"react-aria";import"react";import"react-aria-components";import"../../utils/cn.js";import"../Input/Input.js";import"../Skeleton/Skeleton.js";import"../../hooks/useIsClient.js";export{u as PhoneInput};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{PinInput as n}from"./PinInput.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"../../utils/cn.js";export{n as PinInput};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{CircularProgressbar as e}from"./CircularProgressbar.js";import{LinearProgressbar as s}from"./LinearProgressbar.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";import"framer-motion";export{e as CircularProgressbar,s as LinearProgressbar};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Radio as t}from"./Radio.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{t as Radio};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as r,Fragment as c}from"react/jsx-runtime";import{RadioGroup as p,Label as d}from"react-aria-components";import{cn as o}from"../../utils/cn.js";function g({label:a,errorMessage:l,description:f,orientation:m,children:t,className:x,...s}){return e(p,{className:o("flex flex-col gap-4",x),orientation:m,...s,children:typeof t=="function"?t:r(c,{children:[a&&e(d,{className:"flex text-fg-muted text-xs",children:a}),e("div",{className:o("flex flex-col gap-2",m==="horizontal"&&"flex-row items-center gap-4"),children:t}),f&&e("p",{className:"flex mt-1 text-fg-muted text-sm",children:f}),l&&e("p",{className:"flex pl-6 text-danger-soft text-sm",children:l})]})})}export{g as RadioGroup,g as default};
1
+ "use client";import{jsx as e,jsxs as r,Fragment as c}from"react/jsx-runtime";import{RadioGroup as p,Label as i}from"react-aria-components";import{cn as o}from"../../utils/cn.js";function g({label:l,errorMessage:a,description:f,orientation:m,children:t,className:s,...x}){return e(p,{className:o("flex flex-col gap-4",s),orientation:m,...x,children:typeof t=="function"?t:r(c,{children:[l&&e(i,{className:"flex text-fg-muted text-xs",children:l}),e("div",{className:o("flex flex-col gap-2",m==="horizontal"&&"flex-row items-center gap-4"),children:t}),f&&e("p",{className:"flex mt-1 text-fg-muted text-sm",children:f}),a&&e("p",{className:"flex pl-6 text-danger-soft text-sm",children:a})]})})}export{g as RadioGroup,g as default};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{RadioGroup as t}from"./RadioGroup.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{t as RadioGroup};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{ResendCode as p}from"./ResendCode.js";import"react/jsx-runtime";import"../../utils/cn.js";export{p as ResendCode};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Item as o}from"react-stately";import{Section as p}from"react-stately";const e=o;export{e as Option,p as Section,e as default};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Option as O}from"./Option.js";import{Select as b}from"./Select.js";import{Section as g}from"react-stately";import"react/jsx-runtime";import"react";import"./ButtonSelect.js";import"react-aria";import"@react-aria/interactions";import"../../utils/cn.js";import"./parts.js";import"react-aria-components";import"./ComboBoxSelect.js";import"../Loader/Pulse.js";import"./MultiButtonSelect.js";export{O as Option,g as Section,b as Select};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Slider as t}from"./Slider.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{t as Slider};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Switch as p}from"./Switch.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{p as Switch};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Table as t}from"./Table.js";import"react/jsx-runtime";import"../../utils/cn.js";export{t as Table};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{BaseTab as i,Tab as b}from"./Tab.js";import{TabList as T}from"./TabList.js";import{TabPanel as n}from"./TabPanel.js";import{Tabs as l}from"./Tabs.js";import{TabsOrientationContext as C}from"./Tabs.context.js";import"react/jsx-runtime";import"react";import"react-aria-components";import"framer-motion";import"../../utils/cn.js";export{i as BaseTab,b as Tab,T as TabList,n as TabPanel,l as Tabs,C as TabsOrientationContext};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Time as t}from"./Time.js";import"react/jsx-runtime";import"../Timezone/TimezoneContext.js";import"react";export{t as Time};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{TimeInput as i}from"./TimeInput.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{i as TimeInput};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{TimezoneProvider as m,useTimezone as n}from"./TimezoneContext.js";import{TIMEZONE_COOKIE_NAME as t,TimezoneCookieSync as E}from"./TimezoneCookieSync.js";import"react/jsx-runtime";import"react";export{t as TIMEZONE_COOKIE_NAME,E as TimezoneCookieSync,m as TimezoneProvider,n as useTimezone};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{ToggleButton as i}from"./ToggleButton.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{i as ToggleButton};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Tooltip as m}from"./Tooltip.js";import"react/jsx-runtime";import"react-aria-components";import"../../utils/cn.js";export{m as Tooltip};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{UploadImage as f}from"./UploadImage.js";import"react/jsx-runtime";import"react";import"framer-motion";import"react-aria-components";import"../../utils/cn.js";import"../../hooks/useIsClient.js";import"../Skeleton/Skeleton.js";export{f as UploadImage};
@@ -0,0 +1,101 @@
1
+ # 'use client' now reaches the re-export barrels
2
+
3
+ **Date:** 2026-08-23
4
+ **Package:** `@clicktap/ui`
5
+ **Affects:** every emitted `components/**/index.js`; `Checkbox` and `RadioGroup` sources; the build's directive verification
6
+ **Classification:** BUGFIX (packaging)
7
+ **Breaking:** No.
8
+ **Ticket:** CTAP-1392
9
+
10
+ A Server Component could not import **any** `@clicktap/ui` barrel. The leaves carried
11
+ `"use client"`, but the `index.js` re-export layer consumers actually import did not — while
12
+ still holding side-effect imports of client-only packages:
13
+
14
+ ```js
15
+ // components/Modal/index.js as published in 2.0.5
16
+ import{Modal as i}from"./Modal.js";import"react/jsx-runtime";
17
+ import"react-aria-components";import"../../utils/cn.js";export{i as Modal};
18
+ ```
19
+
20
+ Next evaluates that on the server and the consumer's build dies:
21
+
22
+ ```
23
+ The error was caused by importing '@clicktap/ui/components/DialogTrigger.js' in './app/page.jsx'.
24
+ > Build failed because of webpack errors
25
+ ```
26
+
27
+ The real cost was not Modal. A consumer barrel that re-exports anything from `@clicktap/ui`
28
+ became unusable from the server, which transitively blocked converting *any* component
29
+ importing through it into a Server Component.
30
+
31
+ ## Why the existing guard missed it
32
+
33
+ `verifyUseClientDirectives` has caught directive stripping since CTAP-712, and it passed on
34
+ every one of these files. It keyed solely on `import { … } from 'react'` containing a
35
+ client-only React API. A barrel imports `react-aria-components` and `react/jsx-runtime` but
36
+ never `react` by name, so the regex did not match and the file was skipped outright.
37
+
38
+ The guard could only see modules that are client-only **directly**. It was blind to modules
39
+ that are client-only **transitively** — which is the entire barrel layer. The same blind
40
+ spot hid two source-level omissions: `Checkbox.tsx` and `RadioGroup.tsx` both import
41
+ `react-aria-components` with no directive of their own.
42
+
43
+ ## The fix
44
+
45
+ **Propagation.** A new `propagateUseClientDirectives` build plugin walks the emitted output,
46
+ seeds from files that already carry the directive or import a wholly client-only package
47
+ (`react-aria-components`, `react-aria`, `react-stately`, `framer-motion`), then closes over
48
+ local imports to a fixpoint and stamps what it reaches. 70 modules get stamped; 34 that
49
+ reach nothing client-only are deliberately left alone, which is the point — they stay
50
+ server-safe rather than being blanket-marked.
51
+
52
+ **Two source fixes.** `Checkbox` and `RadioGroup` now declare `'use client'`.
53
+
54
+ **The guard now sees transitive clients.** It flags any emitted module importing a
55
+ client-only package without a directive, so this class cannot ship again.
56
+
57
+ ## `export *` cannot be a client boundary
58
+
59
+ The flat subpath stubs (`components/Modal.js` → `export * from './Modal/index.js'`) are
60
+ **deliberately left undirectived**. Stamping them was tried first, because `components/Modal.js`
61
+ is the exact path a consumer imports, and Next rejects it outright:
62
+
63
+ ```
64
+ Error: It's currently unsupported to use "export *" in a client boundary.
65
+ Please use named exports instead.
66
+ ```
67
+
68
+ A plain server-side re-export of a client module is the supported shape: the boundary belongs
69
+ on the barrel, and the server follows the stub through to it. The propagation plugin skips
70
+ any `export * from` module for the same reason, so this cannot be reintroduced by a future
71
+ module that happens to re-export.
72
+
73
+ Note the ordering this depends on: `emitFlatSubpathStubs` runs *after* propagation, so the
74
+ stubs do not exist when it walks. Do not reorder them expecting the stubs to be stamped —
75
+ they must not be.
76
+
77
+ ## Verified
78
+
79
+ An acceptance harness outside the repo: a minimal Next 14.2.35 App Router project with a
80
+ Server Component (no `'use client'`) importing `@clicktap/ui/components/Modal` and
81
+ `@clicktap/ui/components/DialogTrigger`.
82
+
83
+ - **Published 2.0.5** — fails, reproducing the reported error exactly.
84
+ - **This build** — compiles and prerenders the route as static.
85
+
86
+ Worth keeping that shape for anything RSC-related: the structural assertion (every module
87
+ either carries the directive or imports nothing client-only) is necessary but *not*
88
+ sufficient, and it passed at a point when the package still failed to build in a consumer.
89
+ Only the real consumer build caught the `export *` constraint.
90
+
91
+ ## Unrelated hazard noticed while verifying
92
+
93
+ The build **intermittently** emits the development JSX runtime — `jsxDEV` calls and a
94
+ bundled `assets/jsx-dev-runtime-*.js` — instead of the external `react/jsx-runtime`. It
95
+ appeared twice during this work and then did not reproduce across five consecutive clean
96
+ builds, with and without `NODE_ENV=production`, on both the original and the new config.
97
+ Published 2.0.5 is clean, so it has not shipped.
98
+
99
+ It matters because a consumer's production React has no `jsxDEV`, so it fails at prerender
100
+ with `TypeError: r.j.jsxDEV is not a function` — and nothing in the build would catch it.
101
+ Filed separately; if you are cutting a release, grep the artifact for `jsxDEV` first.
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{useAttributeData as i}from"../components/Collection/AttributeDataProvider/AttributeDataProvider.js";import"react/jsx-runtime";import"react";export{i as useAttributeData};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{useCollectionState as i}from"./useCollectionState.js";import"react";import"../../utils/collection/filterSearchParams.js";export{i as useCollectionState};
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{buildPath as u,resolveParams as i,useRoute as m}from"./useRoute.js";import{RouteProvider as s,useRouteConfig as a}from"./RouteContext.js";import"react";import"react/jsx-runtime";export{s as RouteProvider,u as buildPath,i as resolveParams,m as useRoute,a as useRouteConfig};
package/next/index.js CHANGED
@@ -1 +1,2 @@
1
+ "use client";
1
2
  import{Image as a}from"./Image.js";import"react/jsx-runtime";import"next/image";import"react";import"../utils/cn.js";import"../components/Image/imageShared.js";export{a as Image};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clicktap/ui",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
4
4
  "private": false,
5
5
  "author": "Clicktap",
6
6
  "description": "A library of React UI components and low-level hooks.",