@clicktap/ui 2.0.4 → 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.
- package/components/Accordion/index.js +1 -0
- package/components/AssetRenderer/index.js +1 -0
- package/components/AssetRenderer/renderers/index.js +1 -0
- package/components/Avatar/index.js +1 -0
- package/components/Badge/index.js +1 -0
- package/components/Breadcrumbs/index.js +1 -0
- package/components/Button/index.js +1 -0
- package/components/Card/index.js +1 -0
- package/components/Checkbox/Checkbox.js +1 -1
- package/components/Checkbox/index.js +1 -0
- package/components/Collapsible/index.js +1 -0
- package/components/Collection/AttributeDataProvider/index.js +1 -0
- package/components/Collection/CollectionFilterChips/index.js +1 -0
- package/components/Collection/CollectionFilters/index.js +1 -0
- package/components/Collection/CollectionToolbar/index.js +1 -0
- package/components/Collection/EmptyResults/index.js +1 -0
- package/components/Collection/FilterAccordionTitle/index.js +1 -0
- package/components/Collection/FilterRenderer/Renderer/Swatch/index.js +1 -0
- package/components/Collection/FilterRenderer/Renderer/index.js +1 -0
- package/components/Collection/FilterRenderer/index.js +1 -0
- package/components/Collection/ProductCardSwatches/index.js +1 -0
- package/components/Collection/ProductPrice/index.js +1 -0
- package/components/Collection/index.js +1 -0
- package/components/Container/index.js +1 -0
- package/components/ContextMenu/index.js +1 -0
- package/components/CreditCardExpirationInput/index.js +1 -0
- package/components/CreditCardInput/index.js +1 -0
- package/components/DateInput/index.js +1 -0
- package/components/DateTimeFormat/index.js +1 -0
- package/components/Dialog/index.js +1 -0
- package/components/DialogTrigger/index.js +1 -0
- package/components/Divider/index.js +1 -0
- package/components/DobInput/index.js +1 -0
- package/components/Drawer/index.js +1 -0
- package/components/Icon/index.js +1 -0
- package/components/Image/index.js +1 -0
- package/components/Input/index.js +1 -0
- package/components/Link/index.js +1 -0
- package/components/LinkAsButton/index.js +1 -0
- package/components/Loader/index.js +1 -0
- package/components/Menu/index.js +1 -0
- package/components/Meter/index.js +1 -0
- package/components/Modal/index.js +1 -0
- package/components/ModalOverlay/index.js +1 -0
- package/components/NumberFormat/index.js +1 -0
- package/components/NumberInput/index.js +1 -0
- package/components/NumberTicker/index.js +1 -0
- package/components/Pagination/index.js +1 -0
- package/components/PasswordCheck/index.js +1 -0
- package/components/PhoneInput/index.js +1 -0
- package/components/PinInput/index.js +1 -0
- package/components/Progressbar/index.js +1 -0
- package/components/Radio/index.js +1 -0
- package/components/RadioGroup/RadioGroup.js +1 -1
- package/components/RadioGroup/index.js +1 -0
- package/components/ResendCode/index.js +1 -0
- package/components/Select/Option.js +1 -0
- package/components/Select/index.js +1 -0
- package/components/Slider/index.js +1 -0
- package/components/Switch/index.js +1 -0
- package/components/Table/index.js +1 -0
- package/components/Tabs/index.js +1 -0
- package/components/Time/index.js +1 -0
- package/components/TimeInput/index.js +1 -0
- package/components/Timezone/index.js +1 -0
- package/components/ToggleButton/index.js +1 -0
- package/components/Tooltip/index.js +1 -0
- package/components/UploadImage/index.js +1 -0
- package/docs/migrations/2026/08/ui-2026-08-21-graphql-client-string-documents.md +31 -4
- package/docs/migrations/2026/08/ui-2026-08-21-heroui-removed.md +15 -3
- package/docs/migrations/2026/08/ui-2026-08-22-react-aria-moves-as-one-version-set.md +19 -0
- package/docs/migrations/2026/08/ui-2026-08-23-use-client-propagates-to-barrels.md +101 -0
- package/hooks/useAttributeData.js +1 -0
- package/hooks/useCollectionState/index.js +1 -0
- package/hooks/useRoute/index.js +1 -0
- package/next/index.js +1 -0
- 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{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};
|
package/components/Card/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
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{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{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{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{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{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};
|
package/components/Icon/index.js
CHANGED
|
@@ -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};
|
package/components/Link/index.js
CHANGED
|
@@ -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};
|
package/components/Menu/index.js
CHANGED
|
@@ -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{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{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 @@
|
|
|
1
|
-
import{jsx as e,jsxs as r,Fragment as c}from"react/jsx-runtime";import{RadioGroup as p,Label as
|
|
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{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};
|
package/components/Tabs/index.js
CHANGED
|
@@ -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};
|
package/components/Time/index.js
CHANGED
|
@@ -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};
|
|
@@ -35,11 +35,38 @@ query text codegen started from.
|
|
|
35
35
|
|
|
36
36
|
## Migration
|
|
37
37
|
|
|
38
|
-
1. Switch codegen to string documents: `
|
|
39
|
-
|
|
38
|
+
1. Switch codegen to string documents. `documentMode: 'string'` goes under **`config`**, NOT
|
|
39
|
+
`presetConfig` — verified against `@graphql-codegen/client-preset` 4.8.3 and 6.1.3. Requires
|
|
40
|
+
client-preset >= 4 for `TypedDocumentString`. Regenerate.
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
'./generated/': {
|
|
44
|
+
preset: 'client',
|
|
45
|
+
presetConfig: { fragmentMasking: false },
|
|
46
|
+
config: { documentMode: 'string' }, // <- here
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Verify the regeneration, because the wrong placement fails silently.** Under
|
|
51
|
+
`presetConfig`, codegen reports success and still emits AST documents — and since the new
|
|
52
|
+
client rejects an AST at runtime rather than at build time, both the build and the
|
|
53
|
+
typecheck stay green while every query goes out as the string `"[object Object]"`. A
|
|
54
|
+
consumer shipped exactly that and only caught it by counting emitted documents. After
|
|
55
|
+
regenerating, confirm the output contains `TypedDocumentString` and **zero**
|
|
56
|
+
`as unknown as DocumentNode`:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
grep -c 'TypedDocumentString' generated/graphql.ts # expect > 0
|
|
60
|
+
grep -c 'as unknown as DocumentNode' generated/graphql.ts # expect 0
|
|
61
|
+
```
|
|
40
62
|
2. Replace `TypedDocumentNode`/`RequestDocument` types at wrapper boundaries with
|
|
41
63
|
`GraphqlDocument` / `GraphqlVariables` from this module; `GraphQLClientRequestHeaders`
|
|
42
64
|
with the platform `HeadersInit`.
|
|
43
65
|
3. Sites that imported `ClientError` from `graphql-request` import it from here.
|
|
44
|
-
4.
|
|
45
|
-
`createAuthAwareFetch()`
|
|
66
|
+
4. Audit every site that turns a document into text itself, not just the `FormData` ones.
|
|
67
|
+
`createAuthAwareFetch()` is unchanged, and `String(document)` replaces `print(document)` —
|
|
68
|
+
but the class to search for is broader than uploads: **any hand-rolled
|
|
69
|
+
`fetch(url, { body: JSON.stringify({ query: print(Doc) }) })`**. A consumer found two
|
|
70
|
+
(`getCompanyCollection.ts`, `setCurrentCompanyCookie.ts`) that an inventory of upload call
|
|
71
|
+
sites did not anticipate, and they surfaced only after the codegen switch. Grep for
|
|
72
|
+
`print(` and for `from 'graphql'` across the app, not only for `FormData`.
|
|
@@ -22,16 +22,28 @@ base is react-aria-components; the rewrites cost nothing new:
|
|
|
22
22
|
- **Pagination** → native boundary/sibling windowing.
|
|
23
23
|
- **Badge** → the two wrapper elements, inline.
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## Same name, CHANGED signature — read this first
|
|
26
|
+
|
|
27
|
+
These kept their names, so a call site compiles, but the contract moved. A consumer had four
|
|
28
|
+
call sites break on props this document previously listed as simply preserved.
|
|
29
|
+
|
|
30
|
+
| Prop | Was (heroui) | Now |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| `AccordionItem.onPress` | received a `PressEvent` | receives **no arguments**. A handler reading `e.target` type-checks anyway, because an extra declared parameter is accepted in some positions — it just gets `undefined` at runtime. |
|
|
33
|
+
| `Accordion.onSelectionChange` | could emit the string `'all'` | always emits `Set<string>`. A branch testing `keys === 'all'` is now dead code. |
|
|
34
|
+
| `Tooltip` `classNames.arrow` | slot existed | **removed** — the arrow is `OverlayArrow`; style it via `content`/`base` or the arrow element itself. |
|
|
35
|
+
| `Tooltip` `isOpen` | controlled open state | **not supported** — the RAC `TooltipTrigger` owns open state. Use `delay`/`isDisabled`, or drive visibility from the trigger. |
|
|
36
|
+
|
|
37
|
+
## Same name, same behavior
|
|
26
38
|
|
|
27
39
|
- Accordion: `selectionMode`, `defaultSelectedKeys` (incl. `"all"`),
|
|
28
|
-
`defaultExpandedKeys`, controlled `selectedKeys
|
|
40
|
+
`defaultExpandedKeys`, controlled `selectedKeys`,
|
|
29
41
|
`disallowEmptySelection`, `hideIndicator` (group and per-item),
|
|
30
42
|
`showDivider`/`dividerProps` (an `<hr>` between items — `[&_hr]:hidden`
|
|
31
43
|
keeps working), `itemClasses`/per-item `classNames` slots, per-item
|
|
32
44
|
`title`/`subtitle`/`startContent`/`indicator` (a component still receives
|
|
33
45
|
`{ isOpen }` — import `AccordionItemIndicatorProps` from HERE now),
|
|
34
|
-
`disableIndicatorAnimation`,
|
|
46
|
+
`disableIndicatorAnimation`, and the `data-open` attribute on
|
|
35
47
|
heading/trigger/indicator that `data-[open=true]:` selectors style.
|
|
36
48
|
- Tooltip: `content`, `offset`, `placement`, `showArrow`, `delay`,
|
|
37
49
|
`isDisabled`, `classNames.base/content`, arbitrary child as trigger.
|
|
@@ -38,6 +38,25 @@ reference app pins the identical versions. When bumping, take the trio from the
|
|
|
38
38
|
react-aria release announcement and re-run the production-bundle checks below —
|
|
39
39
|
aligning to the coherent set fixed the Table failure outright with no code change.
|
|
40
40
|
|
|
41
|
+
## If you still depend on `@heroui/*`, pinning is not enough
|
|
42
|
+
|
|
43
|
+
`@clicktap/ui` 2.x dropped heroui, so this case is invisible upstream — but a fork still carrying
|
|
44
|
+
it will install **both** trios no matter what it pins. heroui drags the old set in transitively:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
@heroui/badge -> @heroui/system -> @react-spectrum/provider -> @adobe/react-spectrum
|
|
48
|
+
-> react-aria-components (old)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
A consumer pinned one release *above* the verified set and ended up with two full trios and six
|
|
52
|
+
`@react-aria/*` subpackages at two versions each — precisely the skew this guide warns is invisible
|
|
53
|
+
outside production bundles. Aligning **down** to the verified set unified them.
|
|
54
|
+
|
|
55
|
+
So: pin to the verified set exactly (not "at least"), and if the duplicate persists, the remaining
|
|
56
|
+
copy is being pulled by a heroui/react-spectrum branch. Check with the instance-directory diff
|
|
57
|
+
below — and note that removing heroui is the only complete fix, since its transitive floor is not
|
|
58
|
+
something a pin can override.
|
|
59
|
+
|
|
41
60
|
## How to verify (jsdom cannot)
|
|
42
61
|
|
|
43
62
|
Probe a production build in a real browser: open an uncontrolled DialogTrigger modal
|
|
@@ -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.
|
package/hooks/useRoute/index.js
CHANGED
|
@@ -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