@clicktap/ui 0.43.4 → 0.43.5
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/docs/migrations/2026/01/{2026-01-14-external-link-detection.md → ui-2026-01-14-external-link-detection.md} +1 -0
- package/docs/migrations/2026/01/{2026-01-14-use-route-hook.md → ui-2026-01-14-use-route-hook.md} +1 -0
- package/docs/migrations/2026/01/{2026-01-15-input-disable-skeleton.md → ui-2026-01-15-input-disable-skeleton.md} +1 -0
- package/docs/migrations/2026/02/{2026-02-17-select-popover-portal-container-restored.md → ui-2026-02-17-select-popover-portal-container-restored.md} +1 -0
- package/docs/migrations/2026/03/{2026-03-24-image-dimmed-hidden-onready.md → ui-2026-03-24-image-dimmed-hidden-onready.md} +1 -0
- package/docs/migrations/2026/03/{2026-03-24-modal-overlay-backdrop-dismiss.md → ui-2026-03-24-modal-overlay-backdrop-dismiss.md} +1 -0
- package/docs/migrations/2026/04/{2026-04-17-select-address-input-onchange-key-or-item.md → ui-2026-04-17-select-address-input-onchange-key-or-item.md} +1 -0
- package/docs/migrations/2026/05/{2026-05-01-build-pdp-url-util.md → ui-2026-05-01-build-pdp-url-util.md} +1 -0
- package/docs/migrations/2026/05/{2026-05-03-auth-aware-graphql-client.md → ui-2026-05-03-auth-aware-graphql-client.md} +1 -0
- package/docs/migrations/2026/05/{2026-05-20-framer-motion-11-idioms.md → ui-2026-05-20-framer-motion-11-idioms.md} +1 -0
- package/docs/migrations/2026/05/{2026-05-21-button-loading-content.md → ui-2026-05-21-button-loading-content.md} +1 -0
- package/docs/migrations/2026/05/{2026-05-21-password-check-hide-on-empty.md → ui-2026-05-21-password-check-hide-on-empty.md} +1 -0
- package/docs/migrations/2026/05/{2026-05-29-password-check-requirements-variant.md → ui-2026-05-29-password-check-requirements-variant.md} +3 -2
- package/docs/migrations/2026/06/{2026-06-17-select-standardization.md → ui-2026-06-17-select-standardization.md} +2 -1
- package/docs/migrations/2026/06/{2026-06-18-select-hiddenselect-setvalue-crash.md → ui-2026-06-18-select-hiddenselect-setvalue-crash.md} +1 -0
- package/docs/migrations/2026/07/{2026-07-31-ui-exports-bundler-resolution.md → ui-2026-07-31-ui-exports-bundler-resolution.md} +1 -0
- package/docs/migrations/2026/08/{2026-08-02-nextui-to-heroui.md → ui-2026-08-02-nextui-to-heroui.md} +1 -0
- package/docs/migrations/2026/08/{2026-08-04-password-reveal-press-and-hold.md → ui-2026-08-04-password-reveal-press-and-hold.md} +1 -0
- package/docs/migrations/2026/08/{2026-08-04-resend-code-control.md → ui-2026-08-04-resend-code-control.md} +1 -0
- package/docs/migrations/2026/08/{2026-08-06-clicktap-ui-image-next-subpath.md → ui-2026-08-06-clicktap-ui-image-next-subpath.md} +1 -0
- package/docs/migrations/2026/08/{2026-08-06-clicktap-ui-loaders-drop-framer-motion.md → ui-2026-08-06-clicktap-ui-loaders-drop-framer-motion.md} +2 -1
- package/docs/migrations/2026/08/{2026-08-06-clicktap-ui-semantic-tokens.md → ui-2026-08-06-clicktap-ui-semantic-tokens.md} +1 -0
- package/docs/migrations/2026/08/{2026-08-07-ui-peer-contract-form-graphql-optional-peers.md → ui-2026-08-07-ui-peer-contract-form-graphql-optional-peers.md} +1 -0
- package/docs/migrations/README.md +18 -18
- package/docs/migrations/index.json +23 -23
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui`, `apps/frontend`
|
|
6
6
|
**Breaking:** No (additive, but requires provider setup for SSR)
|
|
7
7
|
**Classification:** IMPROVEMENT
|
|
8
|
+
**Formerly named:** `2026-01-14-external-link-detection.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
## Dependencies
|
package/docs/migrations/2026/01/{2026-01-14-use-route-hook.md → ui-2026-01-14-use-route-hook.md}
RENAMED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui`, `apps/frontend`
|
|
6
6
|
**Breaking:** No (additive, but recommended migration)
|
|
7
7
|
**Classification:** IMPROVEMENT
|
|
8
|
+
**Formerly named:** `2026-01-14-use-route-hook.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
## Dependencies
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui`, `apps/frontend`
|
|
6
6
|
**Breaking:** No
|
|
7
7
|
**Classification:** IMPROVEMENT
|
|
8
|
+
**Formerly named:** `2026-01-15-input-disable-skeleton.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
## Dependencies
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui` Select component, any consumer using Select inside Dialog or Modal
|
|
6
6
|
**Classification:** BUGFIX
|
|
7
7
|
**Breaking:** No
|
|
8
|
+
**Formerly named:** `2026-02-17-select-popover-portal-container-restored.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
**Classification:** IMPROVEMENT
|
|
7
7
|
**Breaking:** No
|
|
8
8
|
**Group:** plp-image-transitions
|
|
9
|
+
**Formerly named:** `2026-03-24-image-dimmed-hidden-onready.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
9
10
|
|
|
10
11
|
## Dependencies
|
|
11
12
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui` — `ModalOverlay` component
|
|
6
6
|
**Classification:** BUGFIX
|
|
7
7
|
**Breaking:** No
|
|
8
|
+
**Formerly named:** `2026-03-24-modal-overlay-backdrop-dismiss.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** Frontend apps consuming `@clicktap/ui`'s `Select` and components that re-export its types (`AddressInput`, etc.). Any handler typed as `(value: Key) => void` breaks after the update.
|
|
6
6
|
**Classification:** COMPATIBILITY
|
|
7
7
|
**Breaking:** Yes — TypeScript-only. No runtime change; existing handlers still receive the same value at runtime, but strict TS setups fail to compile.
|
|
8
|
+
**Formerly named:** `2026-04-17-select-address-input-onchange-key-or-item.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
**Breaking:** No (additive)
|
|
8
8
|
**Status:** ⚠️ **Superseded — never shipped. Do not adopt.** (CTAP-1077)
|
|
9
9
|
**Superseded by:** the backend line-item `productUrl` fields — `QuoteItem.productUrl` / `OrderItem.productUrl` (see `2026-06-08-quote-item-product-url.md` and `2026-06-08-order-item-product-url.md` in the `quote-graphql` / `order-graphql` modules).
|
|
10
|
+
**Formerly named:** `2026-05-01-build-pdp-url-util.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
10
11
|
|
|
11
12
|
> ⚠️ **This export was never published.** As of `@clicktap/ui` **0.40.9** there is no
|
|
12
13
|
> `@clicktap/ui/utils/buildPdpUrl` — do not try to import it (there is no "shipped in X" version to check
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui/utils/createAuthAwareGraphqlClient` — new export
|
|
6
6
|
**Classification:** IMPROVEMENT
|
|
7
7
|
**Breaking:** No (additive)
|
|
8
|
+
**Formerly named:** `2026-05-03-auth-aware-graphql-client.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui/components/Dialog`, `@clicktap/ui/components/ModalOverlay`, `@clicktap/ui/components/Badge`, `@clicktap/ui/components/Loader/CircularEasing`, `@clicktap/ui/components/Loader/Pulse`, and any consumer-side `motion.*` usage on framer-motion 11.x.
|
|
6
6
|
**Classification:** COMPATIBILITY
|
|
7
7
|
**Breaking:** Yes (for consumers passing custom `animationVariants` containing multi-function `transform` strings, transform/scale primitives in modal variants, calc-with-mixed-units in animate targets, or who copy-paste the affected motion patterns into their own components — see Consumer Impact)
|
|
8
|
+
**Formerly named:** `2026-05-20-framer-motion-11-idioms.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui/components/Button` (new `ButtonLoadingContent` export) and every submit-style button in the frontend app.
|
|
6
6
|
**Classification:** IMPROVEMENT
|
|
7
7
|
**Breaking:** No
|
|
8
|
+
**Formerly named:** `2026-05-21-button-loading-content.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `libs/ui/src/components/PasswordCheck/PasswordCheck.tsx`
|
|
6
6
|
**Classification:** IMPROVEMENT
|
|
7
7
|
**Breaking:** No
|
|
8
|
+
**Formerly named:** `2026-05-21-password-check-hide-on-empty.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
**Affects:** `libs/ui/src/components/PasswordCheck/PasswordCheck.tsx`, `libs/ui/src/components/PasswordCheck/PasswordCheck.types.ts`
|
|
6
6
|
**Classification:** IMPROVEMENT
|
|
7
7
|
**Breaking:** No (the variant is additive; `default` is unchanged)
|
|
8
|
+
**Formerly named:** `2026-05-29-password-check-requirements-variant.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
11
|
-
- [`PasswordCheck` `requirements` variant hides until the visitor types](./2026-05-21-password-check-hide-on-empty.md) — the hide-on-empty refinement to this same variant.
|
|
12
|
+
- [`PasswordCheck` `requirements` variant hides until the visitor types](./ui-2026-05-21-password-check-hide-on-empty.md) — the hide-on-empty refinement to this same variant.
|
|
12
13
|
|
|
13
14
|
## Summary
|
|
14
15
|
|
|
@@ -26,7 +27,7 @@ This guide documents the `requirements` variant of `PasswordCheck` so forked UI
|
|
|
26
27
|
|
|
27
28
|
## Behavior
|
|
28
29
|
|
|
29
|
-
- **Hides when `value` is empty** — showing four unchecked bullets before any input reads as a list of demands rather than live feedback. (See the [hide-on-empty guide](./2026-05-21-password-check-hide-on-empty.md).)
|
|
30
|
+
- **Hides when `value` is empty** — showing four unchecked bullets before any input reads as a list of demands rather than live feedback. (See the [hide-on-empty guide](./ui-2026-05-21-password-check-hide-on-empty.md).)
|
|
30
31
|
- Each rule transitions from `○` (slate) to `✓` (green) as it's met.
|
|
31
32
|
- The 5-bar strength meter colors match the `default` variant's meter (red → yellow → green → blue by strength).
|
|
32
33
|
- The component is stateless and pure — strength is derived from `value` via `checkStrength`.
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** Any app consuming `@clicktap/ui`'s `Select` / `DropdownSelect` (Crispi, FFL, and any fork that renders pickers, sort controls, country/region selects, or configurable-product options).
|
|
6
6
|
**Classification:** FEATURE + BREAKING
|
|
7
7
|
**Breaking:** Yes — (1) `DropdownSelect` removed, (2) the bare `<Select>` is now a **button picker**, not a combobox, (3) `DropdownSelect`'s `classNames.trigger` is now `classNames.input`, (4) the root is `w-full` by default, (5) `<Option>` is react-stately's `Item` — keyed by `key` (no `id`) and **cannot be wrapped**.
|
|
8
|
+
**Formerly named:** `2026-06-17-select-standardization.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -284,4 +285,4 @@ Safe — presentation-layer only, no persistent state.
|
|
|
284
285
|
- Types: `libs/ui/src/components/Select/Select.types.ts`
|
|
285
286
|
- Stories: `libs/ui/src/components/Select/Select.stories.tsx` (`Picker`, `Searchable`, `SearchableAuto`, `AsyncDataSource`, `ServerSideSearch`, `ThemedOptions`, `Grouped`, `Multiple`, `GroupedMultiple`, `ButtonMultiple`)
|
|
286
287
|
- In-repo consumer examples: `apps/frontend/components/AddressForm/AddressForm.tsx` (country/region, autofill, aliases), `apps/frontend/components/Collection/CollectionToolbar.tsx` (toolbar width), `apps/frontend/components/Product/components/ConfigurableOptions/ConfigurableOptions.tsx`
|
|
287
|
-
- Related: [`Select` `onSelectionChange` widened to `Key | T`](../04/2026-04-17-select-address-input-onchange-key-or-item.md), [`Select` `popoverPortalContainer` restored](../02/2026-02-17-select-popover-portal-container-restored.md)
|
|
288
|
+
- Related: [`Select` `onSelectionChange` widened to `Key | T`](../04/ui-2026-04-17-select-address-input-onchange-key-or-item.md), [`Select` `popoverPortalContainer` restored](../02/ui-2026-02-17-select-popover-portal-container-restored.md)
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui` `Select` — the **searchable** (ComboBox) variant (`ComboBoxSelect`)
|
|
6
6
|
**Classification:** BUGFIX
|
|
7
7
|
**Breaking:** No
|
|
8
|
+
**Formerly named:** `2026-06-18-select-hiddenselect-setvalue-crash.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Why
|
|
10
11
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
**Revised:** 2026-08-08 — the test-runner half (CTAP-1195): every runtime subpath entry gains a `default` condition, so CJS resolvers (Jest) stop falling through to the `.d.ts`. See "Test runners (Jest)" below; reported by noco.
|
|
5
5
|
**Package:** `@clicktap/ui`
|
|
6
6
|
**Breaking:** No — additive to the `exports` map. Existing `moduleResolution: node` / `node10`
|
|
7
|
+
**Formerly named:** `2026-07-31-ui-exports-bundler-resolution.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
7
8
|
consumers are unaffected (that resolver ignores `exports`); this only *adds* working resolution under
|
|
8
9
|
`bundler` / `node16` / `nodenext`.
|
|
9
10
|
**Classification:** BUGFIX (packaging) — unblocks `moduleResolution: bundler`, and with it TypeScript 7
|
package/docs/migrations/2026/08/{2026-08-02-nextui-to-heroui.md → ui-2026-08-02-nextui-to-heroui.md}
RENAMED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui` peer dependencies — `Accordion`, `Badge`, `Pagination`, `Tooltip`
|
|
6
6
|
**Classification:** DEPENDENCY
|
|
7
7
|
**Breaking:** Yes (peer dependencies change; requires Tailwind 4 — see below)
|
|
8
|
+
**Formerly named:** `2026-08-02-nextui-to-heroui.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Dependencies
|
|
10
11
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui` — `Input` with `type="password"`.
|
|
6
6
|
**Classification:** IMPROVEMENT (security / UX)
|
|
7
7
|
**Breaking:** Behavioural only — the reveal changed from a click-toggle to press-and-hold. No API/prop
|
|
8
|
+
**Formerly named:** `2026-08-04-password-reveal-press-and-hold.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
change; adoption is automatic.
|
|
9
10
|
**Ticket:** CTAP-1128
|
|
10
11
|
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
**Classification:** IMPROVEMENT (new capability)
|
|
7
7
|
**Breaking:** No — additive exports.
|
|
8
8
|
**Consumers:** the OTP resend timer — [wire it everywhere](../../../../../../apps/frontend/docs/migrations/2026/08/2026-08-04-otp-resend-timer.md) ·
|
|
9
|
+
**Formerly named:** `2026-08-04-resend-code-control.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
9
10
|
GraphQL contract — [resend mutations](../../../../../../libs/mezzio-modules/user/docs/migrations/2026/08/2026-08-04-otp-resend-mutations.md)
|
|
10
11
|
|
|
11
12
|
## Summary
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
**Requires:** `@clicktap/ui` at the release bundling CTAP-1125. Next consumers additionally need `next >= 14` installed — it is now an **optional peer**, so your package manager will not add it for you.
|
|
8
8
|
**Classification:** IMPROVEMENT
|
|
9
9
|
**Breaking:** Yes, for Next consumers — one import path per call site. See "If you are a Next app" below.
|
|
10
|
+
**Formerly named:** `2026-08-06-clicktap-ui-image-next-subpath.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
10
11
|
|
|
11
12
|
## What changed and why
|
|
12
13
|
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui` — `Button`, `ButtonLoadingContent`, `Loader/CircularEasing`, `Loader/Pulse`
|
|
6
6
|
**Breaking:** No API change. **One requirement to be aware of** — see below.
|
|
7
7
|
**Requires:** `@import '@clicktap/ui/theme.css'` in your CSS entry
|
|
8
|
-
|
|
8
|
+
**Formerly named:** `2026-08-06-clicktap-ui-loaders-drop-framer-motion.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
9
|
+
([tokens guide](./ui-2026-08-06-clicktap-ui-semantic-tokens.md))
|
|
9
10
|
**Classification:** IMPROVEMENT
|
|
10
11
|
|
|
11
12
|
## What changed
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Affects:** `@clicktap/ui`, every app that renders its components
|
|
6
6
|
**Breaking:** **Yes — one required import.** Components render *unstyled* without it.
|
|
7
7
|
**Requires:** Tailwind v4 (`@import 'tailwindcss'` in your CSS entry). See
|
|
8
|
+
**Formerly named:** `2026-08-06-clicktap-ui-semantic-tokens.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
[the v4 upgrade guide](../../../../../../apps/frontend/docs/migrations/2026/07/2026-07-31-tailwind-3-to-4.md).
|
|
9
10
|
**Classification:** COMPATIBILITY
|
|
10
11
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
**Requires:** `@clicktap/ui` at the first release after 0.42.0
|
|
6
6
|
**Classification:** COMPATIBILITY
|
|
7
7
|
**Breaking:** No for minimal consumers; action needed only if you use the form or GraphQL-aware components
|
|
8
|
+
**Formerly named:** `2026-08-07-ui-peer-contract-form-graphql-optional-peers.md` — renamed 2026-08-10 (CTAP-1214) for global filename uniqueness; library guides carry their package slug so they can never collide with an app-level guide in a consumer's aggregated working set. **If you carry a `-applied` sibling under the old name, rename it to match — do NOT re-apply.**
|
|
8
9
|
|
|
9
10
|
## Why this exists
|
|
10
11
|
|
|
@@ -8,27 +8,27 @@ For migrations affecting the frontend app, see [frontend migrations](../../../..
|
|
|
8
8
|
|
|
9
9
|
| Date | Migration | Breaking | Dependencies |
|
|
10
10
|
|------|-----------|----------|--------------|
|
|
11
|
-
| 2026-01-14 | [External link detection + `LinkProvider`](./2026/01/2026-01-14-external-link-detection.md) | No | *None* |
|
|
12
|
-
| 2026-01-14 | [`useRoute` hook + `RouteProvider`](./2026/01/2026-01-14-use-route-hook.md) | No | *None* |
|
|
13
|
-
| 2026-01-15 | [`Input` `disableSkeleton` prop](./2026/01/2026-01-15-input-disable-skeleton.md) | No | *None* |
|
|
11
|
+
| 2026-01-14 | [External link detection + `LinkProvider`](./2026/01/ui-2026-01-14-external-link-detection.md) | No | *None* |
|
|
12
|
+
| 2026-01-14 | [`useRoute` hook + `RouteProvider`](./2026/01/ui-2026-01-14-use-route-hook.md) | No | *None* |
|
|
13
|
+
| 2026-01-15 | [`Input` `disableSkeleton` prop](./2026/01/ui-2026-01-15-input-disable-skeleton.md) | No | *None* |
|
|
14
14
|
| 2026-02-16 | [Environment utilities — `@clicktap/ui/utils/env`](./2026/02/ui-2026-02-16-env-utils-from-clicktap-ui.md) | No | *None* |
|
|
15
|
-
| 2026-02-17 | [`Select` `popoverPortalContainer` restored](./2026/02/2026-02-17-select-popover-portal-container-restored.md) | No | *None* |
|
|
16
|
-
| 2026-03-24 | [Image: dimmed, hidden, and onReady Props](./2026/03/2026-03-24-image-dimmed-hidden-onready.md) ↔ | No | *None* |
|
|
17
|
-
| 2026-03-24 | [ModalOverlay: fix dismiss on backdrop click](./2026/03/2026-03-24-modal-overlay-backdrop-dismiss.md) | No | *None* |
|
|
18
|
-
| 2026-04-17 | [`Select`/`AddressInput` `onChange` widened to `Key \| T`](./2026/04/2026-04-17-select-address-input-onchange-key-or-item.md) | Yes | *None* |
|
|
15
|
+
| 2026-02-17 | [`Select` `popoverPortalContainer` restored](./2026/02/ui-2026-02-17-select-popover-portal-container-restored.md) | No | *None* |
|
|
16
|
+
| 2026-03-24 | [Image: dimmed, hidden, and onReady Props](./2026/03/ui-2026-03-24-image-dimmed-hidden-onready.md) ↔ | No | *None* |
|
|
17
|
+
| 2026-03-24 | [ModalOverlay: fix dismiss on backdrop click](./2026/03/ui-2026-03-24-modal-overlay-backdrop-dismiss.md) | No | *None* |
|
|
18
|
+
| 2026-04-17 | [`Select`/`AddressInput` `onChange` widened to `Key \| T`](./2026/04/ui-2026-04-17-select-address-input-onchange-key-or-item.md) | Yes | *None* |
|
|
19
19
|
| 2026-04-24 | [`PLACEHOLDER_IMAGE` Export from `@clicktap/ui/utils/placeholder`](./2026/04/ui-2026-04-24-image-placeholder-frontend-fallback.md) ↔ | No | *None* |
|
|
20
20
|
| 2026-04-30 | [Top-Down PDP Option Dependency — `@clicktap/ui/utils/variantOptions`](./2026/04/ui-2026-04-30-top-down-pdp-option-dependency.md) ↔ | No | *None* |
|
|
21
21
|
| 2026-04-30 | [PDP Option Selection — Conservative Prune Helper (`pruneInvalidSelections`)](./2026/04/ui-2026-04-30-prune-invalid-pdp-selections.md) ↔ | No | Top-Down PDP Option Dependency |
|
|
22
|
-
| 2026-05-01 | [`buildPdpUrl` Utility — `@clicktap/ui/utils/buildPdpUrl`](./2026/05/2026-05-01-build-pdp-url-util.md) | No | *None* |
|
|
23
|
-
| 2026-05-03 | [Auth-aware GraphQL client — `@clicktap/ui/utils/createAuthAwareGraphqlClient`](./2026/05/2026-05-03-auth-aware-graphql-client.md) | No | *None* |
|
|
24
|
-
| 2026-05-20 | [framer-motion 11.x idioms — opacity-only for modals, primitives elsewhere, matched keyframe shapes](./2026/05/2026-05-20-framer-motion-11-idioms.md) ↔ | Yes (custom `animationVariants` only) | *None* |
|
|
25
|
-
| 2026-05-21 | [`ButtonLoadingContent` helper — right-side spinner for all submit buttons](./2026/05/2026-05-21-button-loading-content.md) ↔ | No | *None* |
|
|
26
|
-
| 2026-05-21 | [`PasswordCheck` `requirements` variant hides until the visitor types](./2026/05/2026-05-21-password-check-hide-on-empty.md) | No | *None* |
|
|
27
|
-
| 2026-05-29 | [`PasswordCheck` — the `requirements` variant (adoption guide for forks)](./2026/05/2026-05-29-password-check-requirements-variant.md) | No | PasswordCheck hide-on-empty |
|
|
28
|
-
| 2026-06-17 | [Select standardization — one `<Select searchable>`, `DropdownSelect` removed](./2026/06/2026-06-17-select-standardization.md) ↔ | Yes | *None* |
|
|
29
|
-
| 2026-06-18 | [Select (searchable): fix "setValue is not a function" crash on browser autofill](./2026/06/2026-06-18-select-hiddenselect-setvalue-crash.md) | No | Select standardization |
|
|
30
|
-
| 2026-08-04 | [`ResendCode` control + `useCooldown` hook](./2026/08/2026-08-04-resend-code-control.md) ↔ | No | OTP resend timer (CTAP-1114) |
|
|
31
|
-
| 2026-08-04 | [Password reveal is press-and-hold, not a toggle](./2026/08/2026-08-04-password-reveal-press-and-hold.md) | Behavioural | *None* (CTAP-1128) |
|
|
32
|
-
| 2026-08-06 | [`Image` is framework-free; Next's optimizer moves to `@clicktap/ui/next`](./2026/08/2026-08-06-clicktap-ui-image-next-subpath.md) ↔ | Yes (Next consumers) | *None* |
|
|
22
|
+
| 2026-05-01 | [`buildPdpUrl` Utility — `@clicktap/ui/utils/buildPdpUrl`](./2026/05/ui-2026-05-01-build-pdp-url-util.md) | No | *None* |
|
|
23
|
+
| 2026-05-03 | [Auth-aware GraphQL client — `@clicktap/ui/utils/createAuthAwareGraphqlClient`](./2026/05/ui-2026-05-03-auth-aware-graphql-client.md) | No | *None* |
|
|
24
|
+
| 2026-05-20 | [framer-motion 11.x idioms — opacity-only for modals, primitives elsewhere, matched keyframe shapes](./2026/05/ui-2026-05-20-framer-motion-11-idioms.md) ↔ | Yes (custom `animationVariants` only) | *None* |
|
|
25
|
+
| 2026-05-21 | [`ButtonLoadingContent` helper — right-side spinner for all submit buttons](./2026/05/ui-2026-05-21-button-loading-content.md) ↔ | No | *None* |
|
|
26
|
+
| 2026-05-21 | [`PasswordCheck` `requirements` variant hides until the visitor types](./2026/05/ui-2026-05-21-password-check-hide-on-empty.md) | No | *None* |
|
|
27
|
+
| 2026-05-29 | [`PasswordCheck` — the `requirements` variant (adoption guide for forks)](./2026/05/ui-2026-05-29-password-check-requirements-variant.md) | No | PasswordCheck hide-on-empty |
|
|
28
|
+
| 2026-06-17 | [Select standardization — one `<Select searchable>`, `DropdownSelect` removed](./2026/06/ui-2026-06-17-select-standardization.md) ↔ | Yes | *None* |
|
|
29
|
+
| 2026-06-18 | [Select (searchable): fix "setValue is not a function" crash on browser autofill](./2026/06/ui-2026-06-18-select-hiddenselect-setvalue-crash.md) | No | Select standardization |
|
|
30
|
+
| 2026-08-04 | [`ResendCode` control + `useCooldown` hook](./2026/08/ui-2026-08-04-resend-code-control.md) ↔ | No | OTP resend timer (CTAP-1114) |
|
|
31
|
+
| 2026-08-04 | [Password reveal is press-and-hold, not a toggle](./2026/08/ui-2026-08-04-password-reveal-press-and-hold.md) | Behavioural | *None* (CTAP-1128) |
|
|
32
|
+
| 2026-08-06 | [`Image` is framework-free; Next's optimizer moves to `@clicktap/ui/next`](./2026/08/ui-2026-08-06-clicktap-ui-image-next-subpath.md) ↔ | Yes (Next consumers) | *None* |
|
|
33
33
|
|
|
34
34
|
↔ = cross-app migration (has counterpart in frontend app)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"path": "2026/08/2026-08-07-ui-peer-contract-form-graphql-optional-peers.md",
|
|
3
|
+
"path": "2026/08/ui-2026-08-07-ui-peer-contract-form-graphql-optional-peers.md",
|
|
4
4
|
"module": "libs/frontend-modules/ui",
|
|
5
5
|
"package": "@clicktap/ui",
|
|
6
6
|
"date": "2026-08-07",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"affects": ""
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
|
-
"path": "2026/08/2026-08-06-clicktap-ui-semantic-tokens.md",
|
|
13
|
+
"path": "2026/08/ui-2026-08-06-clicktap-ui-semantic-tokens.md",
|
|
14
14
|
"module": "libs/frontend-modules/ui",
|
|
15
15
|
"package": "@clicktap/ui",
|
|
16
16
|
"date": "2026-08-06",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"affects": "`@clicktap/ui`, every app that renders its components"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
"path": "2026/08/2026-08-06-clicktap-ui-loaders-drop-framer-motion.md",
|
|
23
|
+
"path": "2026/08/ui-2026-08-06-clicktap-ui-loaders-drop-framer-motion.md",
|
|
24
24
|
"module": "libs/frontend-modules/ui",
|
|
25
25
|
"package": "@clicktap/ui",
|
|
26
26
|
"date": "2026-08-06",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"affects": "`@clicktap/ui` — `Button`, `ButtonLoadingContent`, `Loader/CircularEasing`, `Loader/Pulse`"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
"path": "2026/08/2026-08-06-clicktap-ui-image-next-subpath.md",
|
|
33
|
+
"path": "2026/08/ui-2026-08-06-clicktap-ui-image-next-subpath.md",
|
|
34
34
|
"module": "libs/frontend-modules/ui",
|
|
35
35
|
"package": "@clicktap/ui",
|
|
36
36
|
"date": "2026-08-06",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"affects": "Any consumer importing `@clicktap/ui/components/Image` or `@clicktap/ui/components/UploadImage`. Consumer counterpart: [`apps/frontend/docs/migrations/2026/08/2026-08-06-image-from-clicktap-ui-next.md`](../../../../../../apps/frontend/docs/migrations/2026/08/2026-08-06-image-from-clicktap-ui-next.md)"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
|
-
"path": "2026/08/2026-08-04-resend-code-control.md",
|
|
43
|
+
"path": "2026/08/ui-2026-08-04-resend-code-control.md",
|
|
44
44
|
"module": "libs/frontend-modules/ui",
|
|
45
45
|
"package": "@clicktap/ui",
|
|
46
46
|
"date": "2026-08-04",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"affects": "`@clicktap/ui` — new `components/ResendCode` and `hooks/useCooldown` exports."
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
"path": "2026/08/2026-08-04-password-reveal-press-and-hold.md",
|
|
53
|
+
"path": "2026/08/ui-2026-08-04-password-reveal-press-and-hold.md",
|
|
54
54
|
"module": "libs/frontend-modules/ui",
|
|
55
55
|
"package": "@clicktap/ui",
|
|
56
56
|
"date": "2026-08-04",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"affects": "`@clicktap/ui` — `Input` with `type=\"password\"`."
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
|
-
"path": "2026/08/2026-08-02-nextui-to-heroui.md",
|
|
63
|
+
"path": "2026/08/ui-2026-08-02-nextui-to-heroui.md",
|
|
64
64
|
"module": "libs/frontend-modules/ui",
|
|
65
65
|
"package": "@clicktap/ui",
|
|
66
66
|
"date": "2026-08-02",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"affects": "`@clicktap/ui` peer dependencies — `Accordion`, `Badge`, `Pagination`, `Tooltip`"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
|
-
"path": "2026/07/2026-07-31-ui-exports-bundler-resolution.md",
|
|
73
|
+
"path": "2026/07/ui-2026-07-31-ui-exports-bundler-resolution.md",
|
|
74
74
|
"module": "libs/frontend-modules/ui",
|
|
75
75
|
"package": "@clicktap/ui",
|
|
76
76
|
"date": "2026-07-31",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"affects": ""
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
|
-
"path": "2026/06/2026-06-18-select-hiddenselect-setvalue-crash.md",
|
|
83
|
+
"path": "2026/06/ui-2026-06-18-select-hiddenselect-setvalue-crash.md",
|
|
84
84
|
"module": "libs/frontend-modules/ui",
|
|
85
85
|
"package": "@clicktap/ui",
|
|
86
86
|
"date": "2026-06-18",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"affects": "`@clicktap/ui` `Select` — the **searchable** (ComboBox) variant (`ComboBoxSelect`)"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
|
-
"path": "2026/06/2026-06-17-select-standardization.md",
|
|
93
|
+
"path": "2026/06/ui-2026-06-17-select-standardization.md",
|
|
94
94
|
"module": "libs/frontend-modules/ui",
|
|
95
95
|
"package": "@clicktap/ui",
|
|
96
96
|
"date": "2026-06-17",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"affects": "Any app consuming `@clicktap/ui`'s `Select` / `DropdownSelect` (Crispi, FFL, and any fork that renders pickers, sort controls, country/region selects, or configurable-product options)."
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
|
-
"path": "2026/05/2026-05-29-password-check-requirements-variant.md",
|
|
103
|
+
"path": "2026/05/ui-2026-05-29-password-check-requirements-variant.md",
|
|
104
104
|
"module": "libs/frontend-modules/ui",
|
|
105
105
|
"package": "@clicktap/ui",
|
|
106
106
|
"date": "2026-05-29",
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"affects": "`libs/ui/src/components/PasswordCheck/PasswordCheck.tsx`, `libs/ui/src/components/PasswordCheck/PasswordCheck.types.ts`"
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
|
-
"path": "2026/05/2026-05-21-password-check-hide-on-empty.md",
|
|
113
|
+
"path": "2026/05/ui-2026-05-21-password-check-hide-on-empty.md",
|
|
114
114
|
"module": "libs/frontend-modules/ui",
|
|
115
115
|
"package": "@clicktap/ui",
|
|
116
116
|
"date": "2026-05-21",
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"affects": "`libs/ui/src/components/PasswordCheck/PasswordCheck.tsx`"
|
|
121
121
|
},
|
|
122
122
|
{
|
|
123
|
-
"path": "2026/05/2026-05-21-button-loading-content.md",
|
|
123
|
+
"path": "2026/05/ui-2026-05-21-button-loading-content.md",
|
|
124
124
|
"module": "libs/frontend-modules/ui",
|
|
125
125
|
"package": "@clicktap/ui",
|
|
126
126
|
"date": "2026-05-21",
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
"affects": "`@clicktap/ui/components/Button` (new `ButtonLoadingContent` export) and every submit-style button in the frontend app."
|
|
131
131
|
},
|
|
132
132
|
{
|
|
133
|
-
"path": "2026/05/2026-05-20-framer-motion-11-idioms.md",
|
|
133
|
+
"path": "2026/05/ui-2026-05-20-framer-motion-11-idioms.md",
|
|
134
134
|
"module": "libs/frontend-modules/ui",
|
|
135
135
|
"package": "@clicktap/ui",
|
|
136
136
|
"date": "2026-05-20",
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
"affects": "`@clicktap/ui/components/Dialog`, `@clicktap/ui/components/ModalOverlay`, `@clicktap/ui/components/Badge`, `@clicktap/ui/components/Loader/CircularEasing`, `@clicktap/ui/components/Loader/Pulse`, and any consumer-side `motion.*` usage on framer-motion 11.x."
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
|
-
"path": "2026/05/2026-05-03-auth-aware-graphql-client.md",
|
|
143
|
+
"path": "2026/05/ui-2026-05-03-auth-aware-graphql-client.md",
|
|
144
144
|
"module": "libs/frontend-modules/ui",
|
|
145
145
|
"package": "@clicktap/ui",
|
|
146
146
|
"date": "2026-05-03",
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
"affects": "`@clicktap/ui/utils/createAuthAwareGraphqlClient` — new export"
|
|
151
151
|
},
|
|
152
152
|
{
|
|
153
|
-
"path": "2026/05/2026-05-01-build-pdp-url-util.md",
|
|
153
|
+
"path": "2026/05/ui-2026-05-01-build-pdp-url-util.md",
|
|
154
154
|
"module": "libs/frontend-modules/ui",
|
|
155
155
|
"package": "@clicktap/ui",
|
|
156
156
|
"date": "2026-05-01",
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
"affects": "`@clicktap/ui` consumers that render product/category images"
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
|
-
"path": "2026/04/2026-04-17-select-address-input-onchange-key-or-item.md",
|
|
193
|
+
"path": "2026/04/ui-2026-04-17-select-address-input-onchange-key-or-item.md",
|
|
194
194
|
"module": "libs/frontend-modules/ui",
|
|
195
195
|
"package": "@clicktap/ui",
|
|
196
196
|
"date": "2026-04-17",
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
"affects": "Frontend apps consuming `@clicktap/ui`'s `Select` and components that re-export its types (`AddressInput`, etc.). Any handler typed as `(value: Key) => void` breaks after the update."
|
|
201
201
|
},
|
|
202
202
|
{
|
|
203
|
-
"path": "2026/03/2026-03-24-modal-overlay-backdrop-dismiss.md",
|
|
203
|
+
"path": "2026/03/ui-2026-03-24-modal-overlay-backdrop-dismiss.md",
|
|
204
204
|
"module": "libs/frontend-modules/ui",
|
|
205
205
|
"package": "@clicktap/ui",
|
|
206
206
|
"date": "2026-03-24",
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
"affects": "`@clicktap/ui` — `ModalOverlay` component"
|
|
211
211
|
},
|
|
212
212
|
{
|
|
213
|
-
"path": "2026/03/2026-03-24-image-dimmed-hidden-onready.md",
|
|
213
|
+
"path": "2026/03/ui-2026-03-24-image-dimmed-hidden-onready.md",
|
|
214
214
|
"module": "libs/frontend-modules/ui",
|
|
215
215
|
"package": "@clicktap/ui",
|
|
216
216
|
"date": "2026-03-24",
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
"affects": "`@clicktap/ui` — `Image` component"
|
|
221
221
|
},
|
|
222
222
|
{
|
|
223
|
-
"path": "2026/02/2026-02-17-select-popover-portal-container-restored.md",
|
|
223
|
+
"path": "2026/02/ui-2026-02-17-select-popover-portal-container-restored.md",
|
|
224
224
|
"module": "libs/frontend-modules/ui",
|
|
225
225
|
"package": "@clicktap/ui",
|
|
226
226
|
"date": "2026-02-17",
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
"affects": "All files importing `isDevelopment` / `isProduction` from local `utils/env`"
|
|
241
241
|
},
|
|
242
242
|
{
|
|
243
|
-
"path": "2026/01/2026-01-15-input-disable-skeleton.md",
|
|
243
|
+
"path": "2026/01/ui-2026-01-15-input-disable-skeleton.md",
|
|
244
244
|
"module": "libs/frontend-modules/ui",
|
|
245
245
|
"package": "@clicktap/ui",
|
|
246
246
|
"date": "2026-01-15",
|
|
@@ -250,7 +250,7 @@
|
|
|
250
250
|
"affects": "`@clicktap/ui`, `apps/frontend`"
|
|
251
251
|
},
|
|
252
252
|
{
|
|
253
|
-
"path": "2026/01/2026-01-14-use-route-hook.md",
|
|
253
|
+
"path": "2026/01/ui-2026-01-14-use-route-hook.md",
|
|
254
254
|
"module": "libs/frontend-modules/ui",
|
|
255
255
|
"package": "@clicktap/ui",
|
|
256
256
|
"date": "2026-01-14",
|
|
@@ -260,7 +260,7 @@
|
|
|
260
260
|
"affects": "`@clicktap/ui`, `apps/frontend`"
|
|
261
261
|
},
|
|
262
262
|
{
|
|
263
|
-
"path": "2026/01/2026-01-14-external-link-detection.md",
|
|
263
|
+
"path": "2026/01/ui-2026-01-14-external-link-detection.md",
|
|
264
264
|
"module": "libs/frontend-modules/ui",
|
|
265
265
|
"package": "@clicktap/ui",
|
|
266
266
|
"date": "2026-01-14",
|