@c15t/react 2.0.0-rc.1 → 2.0.0-rc.12
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/README.md +12 -3
- package/client/components/consent-banner.js +4 -0
- package/client/components/consent-dialog-link.js +3 -0
- package/client/components/consent-dialog-trigger.js +3 -0
- package/client/components/consent-dialog.js +4 -0
- package/client/components/consent-widget.js +4 -0
- package/client/components/frame.js +3 -0
- package/dist/components/consent-banner/atoms/overlay.cjs +1 -1
- package/dist/components/consent-banner/atoms/overlay.js +1 -1
- package/dist/components/consent-banner/atoms/root.cjs +1 -1
- package/dist/components/consent-banner/atoms/root.js +1 -1
- package/dist/components/consent-banner/components.cjs +1 -1
- package/dist/components/consent-banner/components.js +1 -1
- package/dist/components/consent-banner/consent-banner.cjs +1 -1
- package/dist/components/consent-banner/consent-banner.js +1 -1
- package/dist/components/consent-banner/error-boundary.cjs +1 -1
- package/dist/components/consent-banner/index.cjs +1 -1
- package/dist/components/consent-banner/index.js +1 -1
- package/dist/components/consent-banner/policy-actions.cjs +1 -0
- package/dist/components/consent-banner/policy-actions.js +1 -0
- package/dist/components/consent-dialog/atoms/card.cjs +1 -1
- package/dist/components/consent-dialog/atoms/card.js +1 -1
- package/dist/components/consent-dialog/atoms/overlay.cjs +1 -1
- package/dist/components/consent-dialog/atoms/overlay.js +1 -1
- package/dist/components/consent-dialog/atoms/root.cjs +1 -1
- package/dist/components/consent-dialog/atoms/root.js +1 -1
- package/dist/components/consent-dialog/consent-dialog.cjs +1 -1
- package/dist/components/consent-dialog/consent-dialog.js +1 -1
- package/dist/components/consent-dialog/index.cjs +1 -1
- package/dist/components/consent-dialog/index.js +1 -1
- package/dist/components/consent-dialog-link/index.cjs +1 -0
- package/dist/components/consent-dialog-link/index.js +1 -0
- package/dist/components/consent-dialog-trigger/atoms/button.cjs +1 -1
- package/dist/components/consent-dialog-trigger/atoms/button.js +1 -1
- package/dist/components/consent-dialog-trigger/atoms/icon.cjs +1 -1
- package/dist/components/consent-dialog-trigger/atoms/icon.js +1 -1
- package/dist/components/consent-dialog-trigger/atoms/root.cjs +1 -1
- package/dist/components/consent-dialog-trigger/atoms/root.js +1 -1
- package/dist/components/consent-dialog-trigger/atoms/text.cjs +1 -1
- package/dist/components/consent-dialog-trigger/atoms/text.js +1 -1
- package/dist/components/consent-dialog-trigger/consent-dialog-trigger.cjs +1 -1
- package/dist/components/consent-dialog-trigger/consent-dialog-trigger.js +1 -1
- package/dist/components/consent-dialog-trigger/index.cjs +1 -1
- package/dist/components/consent-dialog-trigger/index.js +1 -1
- package/dist/components/consent-dialog-trigger/types.cjs +1 -1
- package/dist/components/consent-dialog-trigger/use-draggable.cjs +1 -1
- package/dist/components/consent-dialog-trigger/use-draggable.js +1 -1
- package/dist/components/consent-preferences-link/consent-preferences-link.cjs +1 -0
- package/dist/components/consent-preferences-link/consent-preferences-link.js +1 -0
- package/dist/components/consent-preferences-link/index.cjs +1 -0
- package/dist/components/consent-preferences-link/index.js +1 -0
- package/dist/components/consent-widget/atoms/accordion.cjs +1 -1
- package/dist/components/consent-widget/atoms/accordion.js +1 -1
- package/dist/components/consent-widget/atoms/button.cjs +1 -1
- package/dist/components/consent-widget/atoms/button.js +1 -1
- package/dist/components/consent-widget/atoms/footer.cjs +1 -1
- package/dist/components/consent-widget/atoms/footer.js +1 -1
- package/dist/components/consent-widget/atoms/root.cjs +1 -1
- package/dist/components/consent-widget/atoms/root.js +1 -1
- package/dist/components/consent-widget/consent-widget.cjs +1 -1
- package/dist/components/consent-widget/consent-widget.js +1 -1
- package/dist/components/consent-widget/index.cjs +1 -1
- package/dist/components/consent-widget/index.js +1 -1
- package/dist/components/consent-widget/policy-actions.cjs +1 -0
- package/dist/components/consent-widget/policy-actions.js +1 -0
- package/dist/components/consent-widget/types.cjs +1 -1
- package/dist/components/frame/atoms.cjs +1 -1
- package/dist/components/frame/atoms.js +1 -1
- package/dist/components/frame/frame.cjs +1 -1
- package/dist/components/frame/frame.js +1 -1
- package/dist/components/frame/index.cjs +1 -1
- package/dist/components/frame/index.js +1 -1
- package/dist/components/frame/types.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/button-group.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/button-group.js +1 -1
- package/dist/components/iab-consent-banner/atoms/card.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/card.js +1 -1
- package/dist/components/iab-consent-banner/atoms/description.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/description.js +1 -1
- package/dist/components/iab-consent-banner/atoms/footer.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/footer.js +1 -1
- package/dist/components/iab-consent-banner/atoms/header.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/header.js +1 -1
- package/dist/components/iab-consent-banner/atoms/overlay.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/overlay.js +1 -1
- package/dist/components/iab-consent-banner/atoms/root.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/root.js +1 -1
- package/dist/components/iab-consent-banner/atoms/title.cjs +1 -1
- package/dist/components/iab-consent-banner/atoms/title.js +1 -1
- package/dist/components/iab-consent-banner/iab-consent-banner.cjs +1 -1
- package/dist/components/iab-consent-banner/iab-consent-banner.js +1 -1
- package/dist/components/iab-consent-banner/index.cjs +1 -1
- package/dist/components/iab-consent-banner/index.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/card.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/card.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/content.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/content.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/footer.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/footer.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/header.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/header.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/overlay.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/overlay.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/purpose-item.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/purpose-item.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/root.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/root.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/stack-item.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/stack-item.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/tabs.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/tabs.js +1 -1
- package/dist/components/iab-consent-dialog/atoms/vendor-list.cjs +1 -1
- package/dist/components/iab-consent-dialog/atoms/vendor-list.js +1 -1
- package/dist/components/iab-consent-dialog/hooks/use-gvl-data.cjs +1 -1
- package/dist/components/iab-consent-dialog/iab-consent-dialog.cjs +1 -1
- package/dist/components/iab-consent-dialog/iab-consent-dialog.js +1 -1
- package/dist/components/iab-consent-dialog/index.cjs +1 -1
- package/dist/components/iab-consent-dialog/index.js +1 -1
- package/dist/components/iab-consent-dialog/types.cjs +1 -1
- package/dist/components/iab-consent-dialog/use-iab-translations.cjs +1 -1
- package/dist/components/shared/libs/polymorphic.cjs +1 -1
- package/dist/components/shared/libs/recursive-clone-children.cjs +1 -1
- package/dist/components/shared/libs/slot.cjs +1 -0
- package/dist/components/shared/libs/slot.js +1 -0
- package/dist/components/shared/libs/use-controllable-state.cjs +1 -0
- package/dist/components/shared/libs/use-controllable-state.js +1 -0
- package/dist/components/shared/policy-actions.cjs +1 -0
- package/dist/components/shared/policy-actions.js +1 -0
- package/dist/components/shared/primitives/box.cjs +1 -1
- package/dist/components/shared/primitives/box.js +1 -1
- package/dist/components/shared/primitives/button.cjs +1 -1
- package/dist/components/shared/primitives/button.js +1 -1
- package/dist/components/shared/primitives/button.types.cjs +1 -1
- package/dist/components/shared/primitives/legal-links/index.cjs +1 -1
- package/dist/components/shared/primitives/legal-links/index.js +1 -1
- package/dist/components/shared/ui/accordion/accordion.cjs +1 -1
- package/dist/components/shared/ui/accordion/accordion.js +1 -1
- package/dist/components/shared/ui/accordion/accordion.types.cjs +1 -1
- package/dist/components/shared/ui/accordion/index.cjs +1 -1
- package/dist/components/shared/ui/animated-collapse/animated-collapse.cjs +1 -1
- package/dist/components/shared/ui/animated-collapse/index.cjs +1 -1
- package/dist/components/shared/ui/animated-collapse/index.js +1 -1
- package/dist/components/shared/ui/branding.cjs +1 -0
- package/dist/components/shared/ui/branding.js +1 -0
- package/dist/components/shared/ui/button/button.cjs +1 -1
- package/dist/components/shared/ui/button/button.js +1 -1
- package/dist/components/shared/ui/button/button.types.cjs +1 -1
- package/dist/components/shared/ui/button/index.cjs +1 -1
- package/dist/components/shared/ui/collapsible/collapsible.cjs +1 -0
- package/dist/components/shared/ui/collapsible/collapsible.js +1 -0
- package/dist/components/shared/ui/collapsible/index.cjs +1 -0
- package/dist/components/shared/ui/collapsible/index.js +1 -0
- package/dist/components/shared/ui/dialog/dialog.cjs +1 -0
- package/dist/components/shared/ui/dialog/dialog.js +1 -0
- package/dist/components/shared/ui/dialog/index.cjs +1 -0
- package/dist/components/shared/ui/dialog/index.js +1 -0
- package/dist/components/shared/ui/icon.cjs +1 -1
- package/dist/components/shared/ui/logo.cjs +1 -1
- package/dist/components/shared/ui/logo.js +1 -1
- package/dist/components/shared/ui/preference-item/index.cjs +1 -0
- package/dist/components/shared/ui/preference-item/index.js +1 -0
- package/dist/components/shared/ui/preference-item/preference-item.cjs +1 -0
- package/dist/components/shared/ui/preference-item/preference-item.js +1 -0
- package/dist/components/shared/ui/switch/index.cjs +1 -1
- package/dist/components/shared/ui/switch/index.js +1 -1
- package/dist/components/shared/ui/switch/switch.cjs +1 -1
- package/dist/components/shared/ui/switch/switch.js +1 -1
- package/dist/components/shared/ui/switch/switch.types.cjs +1 -1
- package/dist/components/shared/ui/tabs/index.cjs +1 -0
- package/dist/components/shared/ui/tabs/index.js +1 -0
- package/dist/components/shared/ui/tabs/tabs.cjs +1 -0
- package/dist/components/shared/ui/tabs/tabs.js +1 -0
- package/dist/context/consent-manager-context.cjs +1 -1
- package/dist/context/consent-tracking-context.cjs +1 -1
- package/dist/context/theme-context.cjs +1 -1
- package/dist/headless.cjs +1 -1
- package/dist/headless.js +1 -1
- package/dist/hooks/index.cjs +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/use-color-scheme.cjs +1 -1
- package/dist/hooks/use-component-config.cjs +1 -1
- package/dist/hooks/use-consent-dialog-trigger.cjs +1 -0
- package/dist/hooks/use-consent-dialog-trigger.js +1 -0
- package/dist/hooks/use-consent-manager.cjs +1 -1
- package/dist/hooks/use-consent-manager.js +1 -1
- package/dist/hooks/use-focus-trap.cjs +1 -1
- package/dist/hooks/use-focus-trap.js +1 -1
- package/dist/hooks/use-headless-consent-ui.cjs +1 -0
- package/dist/hooks/use-headless-consent-ui.js +1 -0
- package/dist/hooks/use-headless-iab-consent-ui.cjs +1 -0
- package/dist/hooks/use-headless-iab-consent-ui.js +1 -0
- package/dist/hooks/use-reduced-motion.cjs +1 -1
- package/dist/hooks/use-reduced-motion.js +1 -1
- package/dist/hooks/use-scroll-lock.cjs +1 -1
- package/dist/hooks/use-scroll-lock.js +1 -1
- package/dist/hooks/use-ssr-status.cjs +1 -1
- package/dist/hooks/use-styles.cjs +1 -1
- package/dist/hooks/use-text-direction.cjs +1 -1
- package/dist/hooks/use-theme.cjs +1 -1
- package/dist/hooks/use-theme.js +1 -1
- package/dist/hooks/use-translations.cjs +1 -1
- package/dist/iab/styles.css +11 -0
- package/dist/iab/styles.tw3.css +14 -0
- package/dist/iab.cjs +1 -0
- package/dist/iab.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/primitives/accordion.cjs +1 -0
- package/dist/primitives/accordion.js +1 -0
- package/dist/primitives/button.cjs +1 -0
- package/dist/primitives/button.js +1 -0
- package/dist/primitives/collapsible.cjs +1 -0
- package/dist/primitives/collapsible.js +1 -0
- package/dist/primitives/dialog.cjs +1 -0
- package/dist/primitives/dialog.js +1 -0
- package/dist/primitives/preference-item.cjs +1 -0
- package/dist/primitives/preference-item.js +1 -0
- package/dist/primitives/switch.cjs +1 -0
- package/dist/primitives/switch.js +1 -0
- package/dist/primitives/tabs.cjs +1 -0
- package/dist/primitives/tabs.js +1 -0
- package/dist/primitives.cjs +1 -0
- package/dist/primitives.js +1 -0
- package/dist/providers/consent-manager-provider.cjs +1 -1
- package/dist/providers/consent-manager-provider.js +1 -1
- package/dist/server/fetch-ssr-data.cjs +1 -1
- package/dist/server/fetch-ssr-data.js +1 -1
- package/dist/server/headers.cjs +1 -1
- package/dist/server/headers.js +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/init-cache-key.cjs +1 -0
- package/dist/server/init-cache-key.js +1 -0
- package/dist/server/normalize-url.cjs +1 -1
- package/dist/server/types.cjs +1 -1
- package/dist/styles.css +10 -0
- package/dist/styles.tw3.css +13 -0
- package/dist/types/consent-manager.cjs +1 -1
- package/dist/types/theme/index.cjs +1 -1
- package/dist/types/theme/style-keys.cjs +1 -1
- package/dist/types/theme/style-types.cjs +1 -1
- package/dist/utils/cn.cjs +1 -1
- package/dist/utils/merge-styles.cjs +1 -1
- package/dist/utils/test-helpers.cjs +1 -1
- package/dist/utils/test-helpers.js +1 -1
- package/dist/utils/theme-utils.cjs +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/{dist → dist-types}/components/consent-banner/atoms/overlay.d.ts +1 -2
- package/{dist → dist-types}/components/consent-banner/atoms/root.d.ts +44 -14
- package/{dist → dist-types}/components/consent-banner/components.d.ts +4 -5
- package/{dist → dist-types}/components/consent-banner/consent-banner.d.ts +14 -8
- package/{dist → dist-types}/components/consent-banner/error-boundary.d.ts +0 -1
- package/{dist → dist-types}/components/consent-banner/index.d.ts +48 -26
- package/dist-types/components/consent-banner/policy-actions.d.ts +11 -0
- package/{dist → dist-types}/components/consent-dialog/atoms/card.d.ts +13 -8
- package/{dist → dist-types}/components/consent-dialog/atoms/overlay.d.ts +1 -2
- package/{dist → dist-types}/components/consent-dialog/atoms/root.d.ts +1 -2
- package/{dist → dist-types}/components/consent-dialog/consent-dialog.d.ts +2 -3
- package/{dist → dist-types}/components/consent-dialog/index.d.ts +31 -10
- package/dist-types/components/consent-dialog-link/index.d.ts +1 -0
- package/{dist → dist-types}/components/consent-dialog-trigger/atoms/button.d.ts +0 -1
- package/{dist → dist-types}/components/consent-dialog-trigger/atoms/icon.d.ts +1 -2
- package/{dist → dist-types}/components/consent-dialog-trigger/atoms/root.d.ts +0 -1
- package/{dist → dist-types}/components/consent-dialog-trigger/atoms/text.d.ts +0 -1
- package/{dist → dist-types}/components/consent-dialog-trigger/consent-dialog-trigger.d.ts +2 -3
- package/{dist → dist-types}/components/consent-dialog-trigger/index.d.ts +0 -1
- package/{dist → dist-types}/components/consent-dialog-trigger/types.d.ts +2 -3
- package/{dist → dist-types}/components/consent-dialog-trigger/use-draggable.d.ts +1 -2
- package/dist-types/components/consent-preferences-link/consent-preferences-link.d.ts +15 -0
- package/dist-types/components/consent-preferences-link/index.d.ts +1 -0
- package/dist-types/components/consent-widget/atoms/accordion.d.ts +28 -0
- package/{dist → dist-types}/components/consent-widget/atoms/button.d.ts +1 -2
- package/{dist → dist-types}/components/consent-widget/atoms/footer.d.ts +0 -1
- package/{dist → dist-types}/components/consent-widget/atoms/root.d.ts +1 -7
- package/{dist → dist-types}/components/consent-widget/consent-widget.d.ts +0 -1
- package/{dist → dist-types}/components/consent-widget/index.d.ts +27 -8
- package/dist-types/components/consent-widget/policy-actions.d.ts +11 -0
- package/{dist → dist-types}/components/consent-widget/types.d.ts +2 -3
- package/{dist → dist-types}/components/frame/atoms.d.ts +1 -2
- package/{dist → dist-types}/components/frame/frame.d.ts +0 -1
- package/{dist → dist-types}/components/frame/index.d.ts +1 -2
- package/{dist → dist-types}/components/frame/types.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/atoms/button-group.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/atoms/card.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/atoms/description.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/atoms/footer.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/atoms/header.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/atoms/overlay.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/atoms/root.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/atoms/title.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/iab-consent-banner.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-banner/index.d.ts +1 -2
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/card.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/content.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/footer.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/header.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/overlay.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/purpose-item.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/root.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/stack-item.d.ts +0 -1
- package/dist-types/components/iab-consent-dialog/atoms/tabs.d.ts +12 -0
- package/{dist → dist-types}/components/iab-consent-dialog/atoms/vendor-list.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/hooks/use-gvl-data.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/iab-consent-dialog.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/index.d.ts +1 -2
- package/{dist → dist-types}/components/iab-consent-dialog/types.d.ts +0 -1
- package/{dist → dist-types}/components/iab-consent-dialog/use-iab-translations.d.ts +0 -1
- package/{dist → dist-types}/components/shared/libs/polymorphic.d.ts +0 -1
- package/{dist → dist-types}/components/shared/libs/recursive-clone-children.d.ts +0 -1
- package/dist-types/components/shared/libs/slot.d.ts +6 -0
- package/dist-types/components/shared/libs/use-controllable-state.d.ts +7 -0
- package/dist-types/components/shared/policy-actions.d.ts +29 -0
- package/{dist → dist-types}/components/shared/primitives/box.d.ts +0 -1
- package/{dist → dist-types}/components/shared/primitives/button.d.ts +4 -1
- package/{dist → dist-types}/components/shared/primitives/button.types.d.ts +17 -1
- package/{dist → dist-types}/components/shared/primitives/legal-links/index.d.ts +0 -45
- package/{dist → dist-types}/components/shared/ui/accordion/accordion.d.ts +32 -68
- package/{dist → dist-types}/components/shared/ui/accordion/accordion.types.d.ts +0 -1
- package/{dist → dist-types}/components/shared/ui/accordion/index.d.ts +0 -1
- package/{dist → dist-types}/components/shared/ui/animated-collapse/animated-collapse.d.ts +0 -1
- package/{dist → dist-types}/components/shared/ui/animated-collapse/index.d.ts +0 -1
- package/dist-types/components/shared/ui/branding.d.ts +27 -0
- package/{dist → dist-types}/components/shared/ui/button/button.d.ts +2 -3
- package/{dist → dist-types}/components/shared/ui/button/button.types.d.ts +0 -1
- package/{dist → dist-types}/components/shared/ui/button/index.d.ts +0 -1
- package/dist-types/components/shared/ui/collapsible/collapsible.d.ts +20 -0
- package/dist-types/components/shared/ui/collapsible/index.d.ts +1 -0
- package/dist-types/components/shared/ui/dialog/dialog.d.ts +29 -0
- package/dist-types/components/shared/ui/dialog/index.d.ts +1 -0
- package/{dist → dist-types}/components/shared/ui/icon.d.ts +0 -1
- package/{dist → dist-types}/components/shared/ui/logo.d.ts +8 -1
- package/dist-types/components/shared/ui/preference-item/index.d.ts +1 -0
- package/dist-types/components/shared/ui/preference-item/preference-item.d.ts +33 -0
- package/dist-types/components/shared/ui/switch/index.d.ts +2 -0
- package/dist-types/components/shared/ui/switch/switch.d.ts +20 -0
- package/{dist → dist-types}/components/shared/ui/switch/switch.types.d.ts +0 -1
- package/dist-types/components/shared/ui/tabs/index.d.ts +1 -0
- package/dist-types/components/shared/ui/tabs/tabs.d.ts +28 -0
- package/{dist → dist-types}/context/consent-manager-context.d.ts +0 -1
- package/{dist → dist-types}/context/consent-tracking-context.d.ts +0 -1
- package/{dist → dist-types}/context/theme-context.d.ts +0 -1
- package/dist-types/headless.d.ts +9 -0
- package/{dist → dist-types}/hooks/index.d.ts +3 -1
- package/{dist → dist-types}/hooks/use-color-scheme.d.ts +0 -1
- package/{dist → dist-types}/hooks/use-component-config.d.ts +0 -1
- package/dist-types/hooks/use-consent-dialog-trigger.d.ts +10 -0
- package/{dist → dist-types}/hooks/use-consent-manager.d.ts +0 -1
- package/{dist → dist-types}/hooks/use-focus-trap.d.ts +0 -1
- package/dist-types/hooks/use-headless-consent-ui.d.ts +46 -0
- package/dist-types/hooks/use-headless-iab-consent-ui.d.ts +41 -0
- package/{dist → dist-types}/hooks/use-reduced-motion.d.ts +0 -1
- package/{dist → dist-types}/hooks/use-scroll-lock.d.ts +0 -1
- package/{dist → dist-types}/hooks/use-ssr-status.d.ts +2 -2
- package/{dist → dist-types}/hooks/use-styles.d.ts +0 -1
- package/{dist → dist-types}/hooks/use-text-direction.d.ts +0 -1
- package/{dist → dist-types}/hooks/use-theme.d.ts +0 -1
- package/{dist → dist-types}/hooks/use-translations.d.ts +0 -1
- package/dist-types/iab.d.ts +24 -0
- package/{dist → dist-types}/index.d.ts +5 -6
- package/dist-types/primitives/accordion.d.ts +1 -0
- package/dist-types/primitives/button.d.ts +1 -0
- package/dist-types/primitives/collapsible.d.ts +1 -0
- package/dist-types/primitives/dialog.d.ts +1 -0
- package/dist-types/primitives/preference-item.d.ts +1 -0
- package/dist-types/primitives/switch.d.ts +1 -0
- package/dist-types/primitives/tabs.d.ts +1 -0
- package/dist-types/primitives.d.ts +7 -0
- package/{dist → dist-types}/providers/consent-manager-provider.d.ts +0 -1
- package/{dist → dist-types}/server/fetch-ssr-data.d.ts +0 -1
- package/{dist → dist-types}/server/headers.d.ts +2 -2
- package/{dist → dist-types}/server/index.d.ts +1 -1
- package/dist-types/server/init-cache-key.d.ts +21 -0
- package/{dist → dist-types}/server/normalize-url.d.ts +0 -1
- package/{dist → dist-types}/server/types.d.ts +0 -1
- package/{dist → dist-types}/types/consent-manager.d.ts +7 -1
- package/{dist → dist-types}/types/theme/index.d.ts +0 -1
- package/{dist → dist-types}/types/theme/style-keys.d.ts +0 -1
- package/{dist → dist-types}/types/theme/style-types.d.ts +2 -1
- package/{dist → dist-types}/utils/cn.d.ts +0 -1
- package/{dist → dist-types}/utils/merge-styles.d.ts +0 -1
- package/{dist → dist-types}/utils/test-helpers.d.ts +0 -1
- package/{dist → dist-types}/utils/theme-utils.d.ts +1 -2
- package/dist-types/version.d.ts +1 -0
- package/docs/README.md +76 -0
- package/docs/building-headless-components.md +368 -0
- package/docs/callbacks.md +184 -0
- package/docs/components/consent-banner.md +269 -0
- package/docs/components/consent-dialog-link.md +59 -0
- package/docs/components/consent-dialog-trigger.md +103 -0
- package/docs/components/consent-dialog.md +177 -0
- package/docs/components/consent-manager-provider.md +425 -0
- package/docs/components/consent-widget.md +133 -0
- package/docs/components/dev-tools.md +63 -0
- package/docs/components/frame.md +73 -0
- package/docs/concepts/client-modes.md +175 -0
- package/docs/concepts/consent-categories.md +97 -0
- package/docs/concepts/consent-models.md +112 -0
- package/docs/concepts/cookie-management.md +122 -0
- package/docs/concepts/glossary.md +23 -0
- package/docs/concepts/initialization-flow.md +148 -0
- package/docs/concepts/policy-packs.md +227 -0
- package/docs/headless.md +190 -0
- package/docs/hooks/use-color-scheme.md +40 -0
- package/docs/hooks/use-consent-manager/checking-consent.md +94 -0
- package/docs/hooks/use-consent-manager/location-info.md +95 -0
- package/docs/hooks/use-consent-manager/overview.md +420 -0
- package/docs/hooks/use-consent-manager/setting-consent.md +92 -0
- package/docs/hooks/use-draggable.md +57 -0
- package/docs/hooks/use-focus-trap.md +41 -0
- package/docs/hooks/use-reduced-motion.md +35 -0
- package/docs/hooks/use-ssr-status.md +31 -0
- package/docs/hooks/use-text-direction.md +49 -0
- package/docs/hooks/use-translations.md +118 -0
- package/docs/iab/consent-banner.md +94 -0
- package/docs/iab/consent-dialog.md +134 -0
- package/docs/iab/overview.md +126 -0
- package/docs/iab/use-gvl-data.md +20 -0
- package/docs/iframe-blocking.md +107 -0
- package/docs/integrations/building-integrations.md +405 -0
- package/docs/integrations/databuddy.md +203 -0
- package/docs/integrations/google-tag-manager.md +153 -0
- package/docs/integrations/google-tag.md +122 -0
- package/docs/integrations/linkedin-insights.md +109 -0
- package/docs/integrations/meta-pixel.md +342 -0
- package/docs/integrations/microsoft-uet.md +112 -0
- package/docs/integrations/overview.md +105 -0
- package/docs/integrations/posthog.md +199 -0
- package/docs/integrations/tiktok-pixel.md +113 -0
- package/docs/integrations/x-pixel.md +143 -0
- package/docs/internationalization.md +197 -0
- package/docs/network-blocker.md +178 -0
- package/docs/optimization.md +147 -0
- package/docs/policy-packs.md +240 -0
- package/docs/quickstart.md +155 -0
- package/docs/script-loader.md +321 -0
- package/docs/server-side.md +153 -0
- package/docs/styling/classnames.md +92 -0
- package/docs/styling/color-scheme.md +82 -0
- package/docs/styling/css-variables.md +92 -0
- package/docs/styling/overview.md +459 -0
- package/docs/styling/slots.md +127 -0
- package/docs/styling/tailwind.md +113 -0
- package/docs/styling/tokens.md +216 -0
- package/docs/troubleshooting.md +137 -0
- package/iab/styles.css +1 -0
- package/package.json +85 -25
- package/readme.json +6 -0
- package/src/iab/styles.css +11 -0
- package/src/iab/styles.tw3.css +14 -0
- package/src/styles.css +10 -0
- package/src/styles.tw3.css +13 -0
- package/styles.css +1 -0
- package/dist/components/__tests__/active-ui-transitions.e2e.test.cjs +0 -1
- package/dist/components/__tests__/active-ui-transitions.e2e.test.js +0 -1
- package/dist/components/__tests__/consent-flow.e2e.test.cjs +0 -1
- package/dist/components/__tests__/consent-flow.e2e.test.js +0 -1
- package/dist/components/__tests__/models-prop.e2e.test.cjs +0 -1
- package/dist/components/__tests__/models-prop.e2e.test.js +0 -1
- package/dist/components/__tests__/ui-source-tracking.e2e.test.cjs +0 -1
- package/dist/components/__tests__/ui-source-tracking.e2e.test.js +0 -1
- package/dist/components/consent-banner/atoms/overlay.d.ts.map +0 -1
- package/dist/components/consent-banner/atoms/root.d.ts.map +0 -1
- package/dist/components/consent-banner/components.d.ts.map +0 -1
- package/dist/components/consent-banner/consent-banner.d.ts.map +0 -1
- package/dist/components/consent-banner/error-boundary.d.ts.map +0 -1
- package/dist/components/consent-banner/index.d.ts.map +0 -1
- package/dist/components/consent-dialog/atoms/card.d.ts.map +0 -1
- package/dist/components/consent-dialog/atoms/overlay.d.ts.map +0 -1
- package/dist/components/consent-dialog/atoms/root.d.ts.map +0 -1
- package/dist/components/consent-dialog/consent-dialog.d.ts.map +0 -1
- package/dist/components/consent-dialog/index.d.ts.map +0 -1
- package/dist/components/consent-dialog-trigger/atoms/button.d.ts.map +0 -1
- package/dist/components/consent-dialog-trigger/atoms/icon.d.ts.map +0 -1
- package/dist/components/consent-dialog-trigger/atoms/root.d.ts.map +0 -1
- package/dist/components/consent-dialog-trigger/atoms/text.d.ts.map +0 -1
- package/dist/components/consent-dialog-trigger/consent-dialog-trigger.d.ts.map +0 -1
- package/dist/components/consent-dialog-trigger/index.d.ts.map +0 -1
- package/dist/components/consent-dialog-trigger/types.d.ts.map +0 -1
- package/dist/components/consent-dialog-trigger/use-draggable.d.ts.map +0 -1
- package/dist/components/consent-widget/atoms/accordion.d.ts +0 -46
- package/dist/components/consent-widget/atoms/accordion.d.ts.map +0 -1
- package/dist/components/consent-widget/atoms/button.d.ts.map +0 -1
- package/dist/components/consent-widget/atoms/footer.d.ts.map +0 -1
- package/dist/components/consent-widget/atoms/root.d.ts.map +0 -1
- package/dist/components/consent-widget/consent-widget.d.ts.map +0 -1
- package/dist/components/consent-widget/index.d.ts.map +0 -1
- package/dist/components/consent-widget/types.d.ts.map +0 -1
- package/dist/components/frame/atoms.d.ts.map +0 -1
- package/dist/components/frame/frame.d.ts.map +0 -1
- package/dist/components/frame/index.d.ts.map +0 -1
- package/dist/components/frame/types.d.ts.map +0 -1
- package/dist/components/iab/__tests__/e2e-setup.cjs +0 -1
- package/dist/components/iab/__tests__/e2e-setup.js +0 -1
- package/dist/components/iab/__tests__/fixtures/mock-consent-state.cjs +0 -1
- package/dist/components/iab/__tests__/fixtures/mock-consent-state.d.ts +0 -212
- package/dist/components/iab/__tests__/fixtures/mock-consent-state.d.ts.map +0 -1
- package/dist/components/iab/__tests__/fixtures/mock-consent-state.js +0 -1
- package/dist/components/iab/__tests__/iab-banner.e2e.test.cjs +0 -1
- package/dist/components/iab/__tests__/iab-banner.e2e.test.js +0 -1
- package/dist/components/iab/__tests__/iab-consent-flow.e2e.test.cjs +0 -1
- package/dist/components/iab/__tests__/iab-consent-flow.e2e.test.js +0 -1
- package/dist/components/iab/__tests__/iab-events.e2e.test.cjs +0 -1
- package/dist/components/iab/__tests__/iab-events.e2e.test.js +0 -1
- package/dist/components/iab/__tests__/iab-gvl.e2e.test.cjs +0 -1
- package/dist/components/iab/__tests__/iab-gvl.e2e.test.js +0 -1
- package/dist/components/iab/__tests__/iab-preference-center.e2e.test.cjs +0 -1
- package/dist/components/iab/__tests__/iab-preference-center.e2e.test.js +0 -1
- package/dist/components/iab/__tests__/iab-storage.e2e.test.cjs +0 -1
- package/dist/components/iab/__tests__/iab-storage.e2e.test.js +0 -1
- package/dist/components/iab/__tests__/iab-stub.e2e.test.cjs +0 -1
- package/dist/components/iab/__tests__/iab-stub.e2e.test.js +0 -1
- package/dist/components/iab/__tests__/iab-tcfapi.e2e.test.cjs +0 -1
- package/dist/components/iab/__tests__/iab-tcfapi.e2e.test.js +0 -1
- package/dist/components/iab/__tests__/msw-handlers.cjs +0 -1
- package/dist/components/iab/__tests__/msw-handlers.js +0 -1
- package/dist/components/iab-consent-banner/__tests__/iab-consent-banner.test.cjs +0 -1
- package/dist/components/iab-consent-banner/__tests__/iab-consent-banner.test.js +0 -1
- package/dist/components/iab-consent-banner/atoms/button-group.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/atoms/card.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/atoms/description.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/atoms/footer.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/atoms/header.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/atoms/overlay.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/atoms/root.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/atoms/title.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/iab-consent-banner.d.ts.map +0 -1
- package/dist/components/iab-consent-banner/index.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/__tests__/legitimate-interest-ui.test.cjs +0 -1
- package/dist/components/iab-consent-dialog/__tests__/legitimate-interest-ui.test.js +0 -1
- package/dist/components/iab-consent-dialog/__tests__/preference-center.test.cjs +0 -1
- package/dist/components/iab-consent-dialog/__tests__/preference-center.test.js +0 -1
- package/dist/components/iab-consent-dialog/__tests__/purposes-tab.test.cjs +0 -1
- package/dist/components/iab-consent-dialog/__tests__/purposes-tab.test.js +0 -1
- package/dist/components/iab-consent-dialog/__tests__/vendors-tab.test.cjs +0 -1
- package/dist/components/iab-consent-dialog/__tests__/vendors-tab.test.js +0 -1
- package/dist/components/iab-consent-dialog/atoms/card.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/content.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/footer.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/header.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/overlay.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/purpose-item.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/root.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/stack-item.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/tabs.d.ts +0 -40
- package/dist/components/iab-consent-dialog/atoms/tabs.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/atoms/vendor-list.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/hooks/use-gvl-data.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/iab-consent-dialog.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/index.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/types.d.ts.map +0 -1
- package/dist/components/iab-consent-dialog/use-iab-translations.d.ts.map +0 -1
- package/dist/components/shared/libs/polymorphic.d.ts.map +0 -1
- package/dist/components/shared/libs/recursive-clone-children.d.ts.map +0 -1
- package/dist/components/shared/primitives/box.d.ts.map +0 -1
- package/dist/components/shared/primitives/button.d.ts.map +0 -1
- package/dist/components/shared/primitives/button.types.d.ts.map +0 -1
- package/dist/components/shared/primitives/legal-links/index.d.ts.map +0 -1
- package/dist/components/shared/ui/__tests__/primitives.test.cjs +0 -1
- package/dist/components/shared/ui/__tests__/primitives.test.js +0 -1
- package/dist/components/shared/ui/accordion/accordion.d.ts.map +0 -1
- package/dist/components/shared/ui/accordion/accordion.types.d.ts.map +0 -1
- package/dist/components/shared/ui/accordion/index.d.ts.map +0 -1
- package/dist/components/shared/ui/animated-collapse/animated-collapse.d.ts.map +0 -1
- package/dist/components/shared/ui/animated-collapse/index.d.ts.map +0 -1
- package/dist/components/shared/ui/button/button.d.ts.map +0 -1
- package/dist/components/shared/ui/button/button.types.d.ts.map +0 -1
- package/dist/components/shared/ui/button/index.d.ts.map +0 -1
- package/dist/components/shared/ui/icon.d.ts.map +0 -1
- package/dist/components/shared/ui/logo.d.ts.map +0 -1
- package/dist/components/shared/ui/switch/index.d.ts +0 -3
- package/dist/components/shared/ui/switch/index.d.ts.map +0 -1
- package/dist/components/shared/ui/switch/switch.d.ts +0 -45
- package/dist/components/shared/ui/switch/switch.d.ts.map +0 -1
- package/dist/components/shared/ui/switch/switch.types.d.ts.map +0 -1
- package/dist/context/consent-manager-context.d.ts.map +0 -1
- package/dist/context/consent-tracking-context.d.ts.map +0 -1
- package/dist/context/theme-context.d.ts.map +0 -1
- package/dist/headless.d.ts +0 -8
- package/dist/headless.d.ts.map +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-handles-default-theme-based-on-document-class-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-handles-default-theme-based-on-document-class-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-responds-to-system-preference-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-responds-to-system-preference-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-sets-dark-theme-correctly-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-sets-dark-theme-correctly-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-default-theme-changes-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-default-theme-changes-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-system-preference-changes-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-color-scheme.test.tsx/useColorScheme-updates-theme-when-system-preference-changes-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-consent-manager.test.tsx/useConsentManager-provides-manager-object-when-configured-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-consent-manager.test.tsx/useConsentManager-provides-manager-object-when-configured-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-handles-string-className-correctly-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-handles-string-className-correctly-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-merges-theme-and-component-styles-correctly-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-merges-theme-and-component-styles-correctly-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-should-remove-base-default-styles-but-keep-theme-and-component-classNames-when-noStyle--true-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-should-remove-base-default-styles-but-keep-theme-and-component-classNames-when-noStyle--true-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-should-remove-default-styles-but-keep-custom-classNames-when-theme-object-provides-noStyle--true-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-styles.test.tsx/useStyles-should-remove-default-styles-but-keep-custom-classNames-when-theme-object-provides-noStyle--true-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-theme.test.tsx/useTheme-local-theme-takes-precedence-over-global-theme-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-theme.test.tsx/useTheme-local-theme-takes-precedence-over-global-theme-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-merges-custom-translations-with-defaults-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-merges-custom-translations-with-defaults-1.js +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-returns-English-translations-by-default-1.cjs +0 -1
- package/dist/hooks/__tests__/__screenshots__/use-translations.test.tsx/useTranslations-returns-English-translations-by-default-1.js +0 -1
- package/dist/hooks/__tests__/use-color-scheme.test.cjs +0 -1
- package/dist/hooks/__tests__/use-color-scheme.test.js +0 -1
- package/dist/hooks/__tests__/use-consent-manager.test.cjs +0 -1
- package/dist/hooks/__tests__/use-consent-manager.test.js +0 -1
- package/dist/hooks/__tests__/use-focus-trap.test.cjs +0 -1
- package/dist/hooks/__tests__/use-focus-trap.test.js +0 -1
- package/dist/hooks/__tests__/use-scroll-lock.test.cjs +0 -1
- package/dist/hooks/__tests__/use-scroll-lock.test.js +0 -1
- package/dist/hooks/__tests__/use-styles.test.cjs +0 -1
- package/dist/hooks/__tests__/use-styles.test.js +0 -1
- package/dist/hooks/__tests__/use-theme.test.cjs +0 -1
- package/dist/hooks/__tests__/use-theme.test.js +0 -1
- package/dist/hooks/__tests__/use-translations.test.cjs +0 -1
- package/dist/hooks/__tests__/use-translations.test.js +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/use-color-scheme.d.ts.map +0 -1
- package/dist/hooks/use-component-config.d.ts.map +0 -1
- package/dist/hooks/use-consent-manager.d.ts.map +0 -1
- package/dist/hooks/use-focus-trap.d.ts.map +0 -1
- package/dist/hooks/use-reduced-motion.d.ts.map +0 -1
- package/dist/hooks/use-scroll-lock.d.ts.map +0 -1
- package/dist/hooks/use-ssr-status.d.ts.map +0 -1
- package/dist/hooks/use-styles.d.ts.map +0 -1
- package/dist/hooks/use-text-direction.d.ts.map +0 -1
- package/dist/hooks/use-theme.d.ts.map +0 -1
- package/dist/hooks/use-translations.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/mockServiceWorker.js +0 -349
- package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-make-a-new-request-when-core-options-change-1.cjs +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-make-a-new-request-when-core-options-change-1.js +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-not-make-additional-requests-when-props-change-but-core-options-remain-same-1.cjs +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-not-make-additional-requests-when-props-change-but-core-options-remain-same-1.js +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-only-make-one-initial-request-for-consent-banner-status-1.cjs +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-basic.test.tsx/ConsentManagerProvider-Basic-Request-Behavior-should-only-make-one-initial-request-for-consent-banner-status-1.js +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.cjs +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.js +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-not-block-SSR-provider-content-when-SSR-provider-wraps-ConsentManager-1.cjs +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-not-block-SSR-provider-content-when-SSR-provider-wraps-ConsentManager-1.js +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.cjs +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.js +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-use-startTransition-for-non-blocking-state-updates-during-hydration-1.cjs +0 -1
- package/dist/providers/__tests__/__screenshots__/provider-hydration.test.tsx/ConsentManagerProvider-Hydration-Behavior-should-use-startTransition-for-non-blocking-state-updates-during-hydration-1.js +0 -1
- package/dist/providers/__tests__/provider-basic.test.cjs +0 -1
- package/dist/providers/__tests__/provider-basic.test.js +0 -1
- package/dist/providers/__tests__/provider-context.test.cjs +0 -1
- package/dist/providers/__tests__/provider-context.test.js +0 -1
- package/dist/providers/__tests__/provider-errors.test.cjs +0 -1
- package/dist/providers/__tests__/provider-errors.test.js +0 -1
- package/dist/providers/__tests__/provider-hydration.test.cjs +0 -1
- package/dist/providers/__tests__/provider-hydration.test.js +0 -1
- package/dist/providers/__tests__/test-helpers.cjs +0 -1
- package/dist/providers/__tests__/test-helpers.js +0 -1
- package/dist/providers/consent-manager-provider.d.ts.map +0 -1
- package/dist/server/fetch-ssr-data.d.ts.map +0 -1
- package/dist/server/headers.d.ts.map +0 -1
- package/dist/server/headers.test.cjs +0 -1
- package/dist/server/headers.test.d.ts +0 -2
- package/dist/server/headers.test.d.ts.map +0 -1
- package/dist/server/headers.test.js +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/normalize-url.d.ts.map +0 -1
- package/dist/server/normalize-url.test.cjs +0 -1
- package/dist/server/normalize-url.test.d.ts +0 -2
- package/dist/server/normalize-url.test.d.ts.map +0 -1
- package/dist/server/normalize-url.test.js +0 -1
- package/dist/server/types.d.ts.map +0 -1
- package/dist/static/image/ConsentManagerProvider-Basic-Request-Behavior-should-make-a-new-request-when-core-options-change-1.png +0 -0
- package/dist/static/image/ConsentManagerProvider-Basic-Request-Behavior-should-not-make-additional-requests-when-props-change-but-core-options-remain-same-1.png +0 -0
- package/dist/static/image/ConsentManagerProvider-Basic-Request-Behavior-should-only-make-one-initial-request-for-consent-banner-status-1.png +0 -0
- package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-handle-rapid-re-renders-without-blocking-children-1.png +0 -0
- package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-not-block-SSR-provider-content-when-SSR-provider-wraps-ConsentManager-1.png +0 -0
- package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-render-children-immediately-without-blocking-during-hydration-1.png +0 -0
- package/dist/static/image/ConsentManagerProvider-Hydration-Behavior-should-use-startTransition-for-non-blocking-state-updates-during-hydration-1.png +0 -0
- package/dist/static/image/useColorScheme-cleans-up-system-preference-listener-on-unmount-1.png +0 -0
- package/dist/static/image/useColorScheme-handles-default-theme-based-on-document-class-1.png +0 -0
- package/dist/static/image/useColorScheme-responds-to-system-preference-1.png +0 -0
- package/dist/static/image/useColorScheme-sets-dark-theme-correctly-1.png +0 -0
- package/dist/static/image/useColorScheme-updates-theme-when-default-theme-changes-1.png +0 -0
- package/dist/static/image/useColorScheme-updates-theme-when-system-preference-changes-1.png +0 -0
- package/dist/static/image/useConsentManager-provides-manager-object-when-configured-1.png +0 -0
- package/dist/static/image/useStyles-handles-string-className-correctly-1.png +0 -0
- package/dist/static/image/useStyles-merges-theme-and-component-styles-correctly-1.png +0 -0
- package/dist/static/image/useStyles-should-remove-base-default-styles-but-keep-theme-and-component-classNames-when-noStyle--true-1.png +0 -0
- package/dist/static/image/useStyles-should-remove-default-styles-but-keep-custom-classNames-when-theme-object-provides-noStyle--true-1.png +0 -0
- package/dist/static/image/useTheme-local-theme-takes-precedence-over-global-theme-1.png +0 -0
- package/dist/static/image/useTranslations-Custom-English-instead-of-English-when-German-is-selected-1.png +0 -0
- package/dist/static/image/useTranslations-falls-back-to-English-when-selected-language-is-not-available-1.png +0 -0
- package/dist/static/image/useTranslations-merges-custom-translations-with-defaults-1.png +0 -0
- package/dist/static/image/useTranslations-returns-English-translations-by-default-1.png +0 -0
- package/dist/test-setup.browser.cjs +0 -1
- package/dist/test-setup.browser.d.ts +0 -8
- package/dist/test-setup.browser.d.ts.map +0 -1
- package/dist/test-setup.browser.js +0 -1
- package/dist/types/consent-manager.d.ts.map +0 -1
- package/dist/types/theme/index.d.ts.map +0 -1
- package/dist/types/theme/style-keys.d.ts.map +0 -1
- package/dist/types/theme/style-types.d.ts.map +0 -1
- package/dist/utils/cn.d.ts.map +0 -1
- package/dist/utils/merge-styles.d.ts.map +0 -1
- package/dist/utils/test-helpers.d.ts.map +0 -1
- package/dist/utils/theme-utils.d.ts.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Tailwind CSS
|
|
3
|
+
description: Use Tailwind CSS utility classes to style consent components via the slot system.
|
|
4
|
+
---
|
|
5
|
+
c15t works with Tailwind CSS out of the box. Use the `slots` theme option to apply Tailwind utility classes to any component part.
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
Import the standard c15t stylesheet once in your app-level CSS entrypoint:
|
|
10
|
+
|
|
11
|
+
```css
|
|
12
|
+
/* React: src/index.css */
|
|
13
|
+
@import "@c15t/react/styles.css";
|
|
14
|
+
|
|
15
|
+
/* Next.js: app/globals.css */
|
|
16
|
+
@import "@c15t/nextjs/styles.css";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Keeping the c15t stylesheet in your global CSS entrypoint makes layer and cascade order explicit. JS/TSX side-effect imports can load in a different order across framework and Tailwind tooling, which makes style regressions harder to debug.
|
|
20
|
+
|
|
21
|
+
### Tailwind v4
|
|
22
|
+
|
|
23
|
+
Tailwind v4 automatically scans your source files. Import Tailwind normally, then place the c15t stylesheet immediately after it. c15t component styles join Tailwind's `components` layer automatically, so no extra c15t-specific layer declaration is needed:
|
|
24
|
+
|
|
25
|
+
```css title="src/index.css"
|
|
26
|
+
@import "tailwindcss";
|
|
27
|
+
@import "@c15t/react/styles.css";
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
```css title="app/globals.css"
|
|
31
|
+
@import "tailwindcss";
|
|
32
|
+
@import "@c15t/nextjs/styles.css";
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Tailwind v3
|
|
36
|
+
|
|
37
|
+
Import the Tailwind 3-compatible c15t stylesheet after `@tailwind components;` and before `@tailwind utilities;`:
|
|
38
|
+
|
|
39
|
+
```css title="src/index.css"
|
|
40
|
+
@tailwind base;
|
|
41
|
+
@tailwind components;
|
|
42
|
+
@import "@c15t/react/styles.tw3.css";
|
|
43
|
+
@tailwind utilities;
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```css title="app/globals.css"
|
|
47
|
+
@tailwind base;
|
|
48
|
+
@tailwind components;
|
|
49
|
+
@import "@c15t/nextjs/styles.tw3.css";
|
|
50
|
+
@tailwind utilities;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Using Tailwind with Slots
|
|
54
|
+
|
|
55
|
+
Apply Tailwind classes via the theme's `slots` object:
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
import { type ReactNode } from 'react';
|
|
59
|
+
import { type Theme, ConsentManagerProvider } from '@c15t/react';
|
|
60
|
+
|
|
61
|
+
const theme = {
|
|
62
|
+
slots: {
|
|
63
|
+
consentBanner: 'fixed bottom-0 inset-x-0 z-50',
|
|
64
|
+
consentBannerCard: 'mx-auto max-w-2xl rounded-t-2xl bg-white p-6 shadow-2xl',
|
|
65
|
+
consentBannerTitle: 'text-lg font-semibold text-gray-900',
|
|
66
|
+
consentBannerDescription: 'mt-2 text-sm text-gray-600',
|
|
67
|
+
consentBannerFooter: 'mt-4 flex flex-wrap gap-3',
|
|
68
|
+
buttonPrimary: 'rounded-full bg-indigo-600 px-6 py-2.5 text-sm font-medium text-white hover:bg-indigo-700',
|
|
69
|
+
buttonSecondary: 'rounded-full border border-gray-300 px-6 py-2.5 text-sm font-medium text-gray-700 hover:bg-gray-50',
|
|
70
|
+
toggle: 'data-[state=checked]:bg-indigo-600',
|
|
71
|
+
},
|
|
72
|
+
} satisfies Theme;
|
|
73
|
+
|
|
74
|
+
export function ConsentManager({ children }: { children: ReactNode }) {
|
|
75
|
+
return (
|
|
76
|
+
<ConsentManagerProvider options={{ theme, mode: 'hosted', backendURL: 'https://your-instance.c15t.dev' }}>
|
|
77
|
+
{children}
|
|
78
|
+
</ConsentManagerProvider>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Dark Mode with Tailwind
|
|
84
|
+
|
|
85
|
+
Combine Tailwind's dark mode with c15t's `dark` tokens:
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
const theme = {
|
|
89
|
+
colors: {
|
|
90
|
+
primary: '#6366f1',
|
|
91
|
+
surface: '#ffffff',
|
|
92
|
+
text: '#1f2937',
|
|
93
|
+
},
|
|
94
|
+
dark: {
|
|
95
|
+
primary: '#818cf8',
|
|
96
|
+
surface: '#1f2937',
|
|
97
|
+
text: '#f9fafb',
|
|
98
|
+
},
|
|
99
|
+
slots: {
|
|
100
|
+
consentBannerCard: 'bg-white dark:bg-gray-900 shadow-lg dark:shadow-gray-900/30',
|
|
101
|
+
consentBannerTitle: 'text-gray-900 dark:text-gray-100',
|
|
102
|
+
},
|
|
103
|
+
} satisfies Theme;
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Optional: noStyle Mode
|
|
107
|
+
|
|
108
|
+
If you want Tailwind to own all layout and visual styling, use `noStyle: true`.
|
|
109
|
+
|
|
110
|
+
> ℹ️ **Info:**
|
|
111
|
+
> When using noStyle: true with Tailwind, you're responsible for all layout and visual styling. Start with slots first, then switch to noStyle only when you need full control.
|
|
112
|
+
|
|
113
|
+
For full custom markup (not just styles), see [Headless Mode](../headless).
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Design Tokens
|
|
3
|
+
description: The six base token categories that control colors, typography, spacing, radius, shadows, and motion, plus optional dark-mode overrides.
|
|
4
|
+
---
|
|
5
|
+
## Color Tokens
|
|
6
|
+
|
|
7
|
+
Color tokens define the palette for all consent components. Set `colors` for light mode and `dark` for dark mode overrides.
|
|
8
|
+
|
|
9
|
+
When `textOnPrimary` is omitted, c15t derives it automatically from `primary` to keep text readable on primary-filled surfaces such as stock branding tags and buttons. Set `textOnPrimary` explicitly when you need a specific foreground color.
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
const theme = {
|
|
13
|
+
colors: {
|
|
14
|
+
primary: '#6366f1',
|
|
15
|
+
primaryHover: '#4f46e5',
|
|
16
|
+
surface: '#ffffff',
|
|
17
|
+
surfaceHover: '#f9fafb',
|
|
18
|
+
border: '#e5e7eb',
|
|
19
|
+
borderHover: '#d1d5db',
|
|
20
|
+
text: '#1f2937',
|
|
21
|
+
textMuted: '#6b7280',
|
|
22
|
+
textOnPrimary: '#ffffff',
|
|
23
|
+
overlay: 'rgba(0, 0, 0, 0.5)',
|
|
24
|
+
switchTrack: '#d1d5db',
|
|
25
|
+
switchTrackActive: '#6366f1',
|
|
26
|
+
switchThumb: '#ffffff',
|
|
27
|
+
},
|
|
28
|
+
dark: {
|
|
29
|
+
primary: '#818cf8',
|
|
30
|
+
surface: '#1f2937',
|
|
31
|
+
text: '#f9fafb',
|
|
32
|
+
textMuted: '#9ca3af',
|
|
33
|
+
border: '#374151',
|
|
34
|
+
},
|
|
35
|
+
} satisfies Theme;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### ColorTokens
|
|
39
|
+
|
|
40
|
+
|Property|Type|Description|Default|Required|
|
|
41
|
+
|:--|:--|:--|:--|:--:|
|
|
42
|
+
|primary|string \|undefined|Primary brand/accent color for interactive elements.|-|Optional|
|
|
43
|
+
|primaryHover|string \|undefined|Hover/active state for primary elements.|-|Optional|
|
|
44
|
+
|surface|string \|undefined|Main background color for panels and containers.|-|Optional|
|
|
45
|
+
|surfaceHover|string \|undefined|Hover state for surface elements.|-|Optional|
|
|
46
|
+
|border|string \|undefined|Border color for containers and inputs.|-|Optional|
|
|
47
|
+
|borderHover|string \|undefined|Hover state for bordered elements.|-|Optional|
|
|
48
|
+
|text|string \|undefined|Primary text color for headings and body.|-|Optional|
|
|
49
|
+
|textMuted|string \|undefined|Muted text color for secondary content.|-|Optional|
|
|
50
|
+
|textOnPrimary|string \|undefined|Text color for content on primary background. Auto-derived from \`primary\` when omitted.|-|Optional|
|
|
51
|
+
|overlay|string \|undefined|Overlay color for modal backdrops.|-|Optional|
|
|
52
|
+
|switchTrack|string \|undefined|Toggle track color (off state).|-|Optional|
|
|
53
|
+
|switchTrackActive|string \|undefined|Toggle track color (on state).|-|Optional|
|
|
54
|
+
|switchThumb|string \|undefined|Toggle thumb color.|-|Optional|
|
|
55
|
+
|
|
56
|
+
## Typography Tokens
|
|
57
|
+
|
|
58
|
+
Control font family, sizes, weights, and line heights.
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
const theme = {
|
|
62
|
+
typography: {
|
|
63
|
+
fontFamily: 'Inter, system-ui, sans-serif',
|
|
64
|
+
fontSize: { sm: '0.875rem', base: '1rem', lg: '1.125rem' },
|
|
65
|
+
fontWeight: { normal: 400, medium: 500, semibold: 600 },
|
|
66
|
+
lineHeight: { tight: '1.25', normal: '1.5', relaxed: '1.75' },
|
|
67
|
+
},
|
|
68
|
+
} satisfies Theme;
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### TypographyTokens
|
|
72
|
+
|
|
73
|
+
|Property|Type|Description|Default|Required|
|
|
74
|
+
|:--|:--|:--|:--|:--:|
|
|
75
|
+
|fontFamily|string \|undefined|Font family for all components.|-|Optional|
|
|
76
|
+
|fontSize|Object \|undefined|Font sizes for text hierarchy.|-|Optional|
|
|
77
|
+
|fontWeight|Object \|undefined|Font weights for emphasis.|-|Optional|
|
|
78
|
+
|lineHeight|Object \|undefined|Line heights for readability.|-|Optional|
|
|
79
|
+
|
|
80
|
+
#### `fontSize`
|
|
81
|
+
|
|
82
|
+
Font sizes for text hierarchy.
|
|
83
|
+
|
|
84
|
+
|Property|Type|Description|Default|Required|
|
|
85
|
+
|:--|:--|:--|:--|:--:|
|
|
86
|
+
|sm|string \|undefined|@default '0.875rem'|-|Optional|
|
|
87
|
+
|base|string \|undefined|@default '1rem'|-|Optional|
|
|
88
|
+
|lg|string \|undefined|@default '1.125rem'|-|Optional|
|
|
89
|
+
|
|
90
|
+
#### `fontWeight`
|
|
91
|
+
|
|
92
|
+
Font weights for emphasis.
|
|
93
|
+
|
|
94
|
+
|Property|Type|Description|Default|Required|
|
|
95
|
+
|:--|:--|:--|:--|:--:|
|
|
96
|
+
|normal|number \|undefined|@default 400|-|Optional|
|
|
97
|
+
|medium|number \|undefined|@default 500|-|Optional|
|
|
98
|
+
|semibold|number \|undefined|@default 600|-|Optional|
|
|
99
|
+
|
|
100
|
+
#### `lineHeight`
|
|
101
|
+
|
|
102
|
+
Line heights for readability.
|
|
103
|
+
|
|
104
|
+
|Property|Type|Description|Default|Required|
|
|
105
|
+
|:--|:--|:--|:--|:--:|
|
|
106
|
+
|tight|string \|undefined|@default '1.25'|-|Optional|
|
|
107
|
+
|normal|string \|undefined|@default '1.5'|-|Optional|
|
|
108
|
+
|relaxed|string \|undefined|@default '1.75'|-|Optional|
|
|
109
|
+
|
|
110
|
+
## Spacing Tokens
|
|
111
|
+
|
|
112
|
+
Five-step scale for internal padding, margins, and gaps.
|
|
113
|
+
|
|
114
|
+
```tsx
|
|
115
|
+
const theme = {
|
|
116
|
+
spacing: {
|
|
117
|
+
xs: '0.25rem', // 4px
|
|
118
|
+
sm: '0.5rem', // 8px
|
|
119
|
+
md: '1rem', // 16px
|
|
120
|
+
lg: '1.5rem', // 24px
|
|
121
|
+
xl: '2rem', // 32px
|
|
122
|
+
},
|
|
123
|
+
} satisfies Theme;
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### SpacingTokens
|
|
127
|
+
|
|
128
|
+
|Property|Type|Description|Default|Required|
|
|
129
|
+
|:--|:--|:--|:--|:--:|
|
|
130
|
+
|xs|string \|undefined|@default '0.25rem' (4px)|'0.25rem' (4px)|Optional|
|
|
131
|
+
|sm|string \|undefined|@default '0.5rem' (8px)|'0.5rem' (8px)|Optional|
|
|
132
|
+
|md|string \|undefined|@default '1rem' (16px)|'1rem' (16px)|Optional|
|
|
133
|
+
|lg|string \|undefined|@default '1.5rem' (24px)|'1.5rem' (24px)|Optional|
|
|
134
|
+
|xl|string \|undefined|@default '2rem' (32px)|'2rem' (32px)|Optional|
|
|
135
|
+
|
|
136
|
+
## Radius Tokens
|
|
137
|
+
|
|
138
|
+
Border radius scale for rounded corners.
|
|
139
|
+
|
|
140
|
+
```tsx
|
|
141
|
+
const theme = {
|
|
142
|
+
radius: {
|
|
143
|
+
sm: '0.25rem', // 4px
|
|
144
|
+
md: '0.5rem', // 8px
|
|
145
|
+
lg: '0.75rem', // 12px
|
|
146
|
+
full: '9999px', // Pill shape
|
|
147
|
+
},
|
|
148
|
+
} satisfies Theme;
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### RadiusTokens
|
|
152
|
+
|
|
153
|
+
|Property|Type|Description|Default|Required|
|
|
154
|
+
|:--|:--|:--|:--|:--:|
|
|
155
|
+
|sm|string \|undefined|@default '0.25rem' (4px)|'0.25rem' (4px)|Optional|
|
|
156
|
+
|md|string \|undefined|@default '0.5rem' (8px)|'0.5rem' (8px)|Optional|
|
|
157
|
+
|lg|string \|undefined|@default '0.75rem' (12px)|'0.75rem' (12px)|Optional|
|
|
158
|
+
|full|string \|undefined|@default '9999px'|'9999px'|Optional|
|
|
159
|
+
|
|
160
|
+
## Shadow Tokens
|
|
161
|
+
|
|
162
|
+
Box shadow scale for depth and elevation.
|
|
163
|
+
|
|
164
|
+
```tsx
|
|
165
|
+
const theme = {
|
|
166
|
+
shadows: {
|
|
167
|
+
sm: '0 1px 2px hsla(0, 0%, 0%, 0.05)',
|
|
168
|
+
md: '0 4px 12px hsla(0, 0%, 0%, 0.08)',
|
|
169
|
+
lg: '0 8px 24px hsla(0, 0%, 0%, 0.12)',
|
|
170
|
+
},
|
|
171
|
+
} satisfies Theme;
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### ShadowTokens
|
|
175
|
+
|
|
176
|
+
|Property|Type|Description|Default|Required|
|
|
177
|
+
|:--|:--|:--|:--|:--:|
|
|
178
|
+
|sm|string \|undefined|@default '0 1px 2px hsla(0, 0%, 0%, 0.05)'|'0 1px 2px hsla(0, 0%, 0%, 0.05)'|Optional|
|
|
179
|
+
|md|string \|undefined|@default '0 4px 12px hsla(0, 0%, 0%, 0.08)'|'0 4px 12px hsla(0, 0%, 0%, 0.08)'|Optional|
|
|
180
|
+
|lg|string \|undefined|@default '0 8px 24px hsla(0, 0%, 0%, 0.12)'|'0 8px 24px hsla(0, 0%, 0%, 0.12)'|Optional|
|
|
181
|
+
|
|
182
|
+
## Motion Tokens
|
|
183
|
+
|
|
184
|
+
Animation duration and easing presets.
|
|
185
|
+
|
|
186
|
+
```tsx
|
|
187
|
+
const theme = {
|
|
188
|
+
motion: {
|
|
189
|
+
duration: { fast: '100ms', normal: '200ms', slow: '300ms' },
|
|
190
|
+
easing: 'cubic-bezier(0.4, 0, 0.2, 1)',
|
|
191
|
+
easingOut: 'cubic-bezier(0.215, 0.61, 0.355, 1)',
|
|
192
|
+
easingInOut: 'cubic-bezier(0.645, 0.045, 0.355, 1)',
|
|
193
|
+
easingSpring: 'cubic-bezier(0.34, 1.56, 0.64, 1)',
|
|
194
|
+
},
|
|
195
|
+
} satisfies Theme;
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### MotionTokens
|
|
199
|
+
|
|
200
|
+
|Property|Type|Description|Default|Required|
|
|
201
|
+
|:--|:--|:--|:--|:--:|
|
|
202
|
+
|duration|Object \|undefined|Duration presets for transitions.|-|Optional|
|
|
203
|
+
|easing|string \|undefined|Default CSS easing function for general animation curves.|'cubic-bezier(0.4, 0, 0.2, 1)'|Optional|
|
|
204
|
+
|easingOut|string \|undefined|CSS easing function for enter/exit animations. Use for modals, tooltips, dropdowns, and any element entering or exiting.|'cubic-bezier(0.215, 0.61, 0.355, 1)'|Optional|
|
|
205
|
+
|easingInOut|string \|undefined|CSS easing function for on-screen movement. Use when elements already on screen need to move or morph.|'cubic-bezier(0.645, 0.045, 0.355, 1)'|Optional|
|
|
206
|
+
|easingSpring|string \|undefined|CSS easing function with spring-like overshoot. Use for playful, bouncy animations.|'cubic-bezier(0.34, 1.56, 0.64, 1)'|Optional|
|
|
207
|
+
|
|
208
|
+
#### `duration`
|
|
209
|
+
|
|
210
|
+
Duration presets for transitions.
|
|
211
|
+
|
|
212
|
+
|Property|Type|Description|Default|Required|
|
|
213
|
+
|:--|:--|:--|:--|:--:|
|
|
214
|
+
|fast|string \|undefined|@default '100ms'|-|Optional|
|
|
215
|
+
|normal|string \|undefined|@default '200ms'|-|Optional|
|
|
216
|
+
|slow|string \|undefined|@default '300ms'|-|Optional|
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Troubleshooting
|
|
3
|
+
description: Solutions for common issues with @c15t/react — provider errors, missing banners, consent persistence, and more.
|
|
4
|
+
---
|
|
5
|
+
## "Provider not found" Error
|
|
6
|
+
|
|
7
|
+
**Symptom:** `useConsentManager must be used within a ConsentManagerProvider` error.
|
|
8
|
+
|
|
9
|
+
**Fix:** Ensure the component calling `useConsentManager()` (or any c15t hook) is rendered inside a `ConsentManagerProvider`:
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
// Wrong — hook is outside the provider
|
|
13
|
+
function App() {
|
|
14
|
+
const { consents } = useConsentManager(); // throws
|
|
15
|
+
return <ConsentManagerProvider options={...}>...</ConsentManagerProvider>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Correct — hook is inside the provider
|
|
19
|
+
function App() {
|
|
20
|
+
return (
|
|
21
|
+
<ConsentManagerProvider options={...}>
|
|
22
|
+
<MyComponent /> {/* useConsentManager works here */}
|
|
23
|
+
</ConsentManagerProvider>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Banner Doesn't Show
|
|
29
|
+
|
|
30
|
+
**Possible causes:**
|
|
31
|
+
|
|
32
|
+
1. **Opt-out jurisdiction** — In CCPA/opt-out regions, the banner is not shown because tracking is allowed by default. Check `model` from `useConsentManager()` — if it's `'opt-out'`, the banner is intentionally hidden.
|
|
33
|
+
|
|
34
|
+
2. **Consent already given** — If the user has already made a consent choice, the banner won't reappear. Clear cookies or use `resetConsents()` to test again.
|
|
35
|
+
|
|
36
|
+
3. **`activeUI` is `'none'`** — Something is explicitly setting `activeUI` to `'none'`. Check the DevTools panel for the current consent state.
|
|
37
|
+
|
|
38
|
+
4. **Backend not responding** — In `'c15t'` mode, the banner waits for the backend `/init` response. Check the Network tab for failed requests to your `backendURL`.
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
// Debug: check what the consent manager sees
|
|
42
|
+
const { activeUI, model, isLoadingConsentInfo } = useConsentManager();
|
|
43
|
+
console.log({ activeUI, model, isLoadingConsentInfo });
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Consent Not Persisting
|
|
47
|
+
|
|
48
|
+
**Symptom:** Consent is lost after page reload.
|
|
49
|
+
|
|
50
|
+
**Possible causes:**
|
|
51
|
+
|
|
52
|
+
1. **Incognito/private mode** — Some browsers restrict cookie storage in private browsing.
|
|
53
|
+
|
|
54
|
+
2. **Cookie settings** — In `'offline'` mode, consent is stored in cookies. Ensure cookies are not being blocked by browser settings or extensions.
|
|
55
|
+
|
|
56
|
+
3. **Different domains** — Cookies are domain-scoped. If your dev server uses a different domain than production, consent won't carry over.
|
|
57
|
+
|
|
58
|
+
4. **Backend errors** — In `'c15t'` mode, check that the backend is saving consent successfully. Enable `debug: true` in provider options to see detailed logs.
|
|
59
|
+
|
|
60
|
+
## Scripts Not Loading
|
|
61
|
+
|
|
62
|
+
**Symptom:** Third-party scripts configured in the `scripts` option don't load after consent is granted.
|
|
63
|
+
|
|
64
|
+
**Checklist:**
|
|
65
|
+
|
|
66
|
+
1. **Wrong category name** — The `category` on the script must match one of the `consentCategories` names. For example, `'measurement'` not `'analytics'`.
|
|
67
|
+
|
|
68
|
+
2. **Consent condition not met** — Use `has('measurement')` to verify the category is actually consented.
|
|
69
|
+
|
|
70
|
+
3. **Script error** — Check the browser DevTools Console for script loading errors. The `onError` callback can help debug:
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
{
|
|
74
|
+
id: 'analytics',
|
|
75
|
+
src: 'https://...',
|
|
76
|
+
category: 'measurement',
|
|
77
|
+
onError: ({ error }) => console.error('Script failed:', error),
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
4. **Ad blocker** — Browser extensions may block the script regardless of consent. The `anonymizeId` option (default: `true`) helps avoid pattern-based blocking.
|
|
82
|
+
|
|
83
|
+
## SSR Hydration Mismatch
|
|
84
|
+
|
|
85
|
+
**Symptom:** React hydration warnings, consent banner flashes briefly, or consent state differs between server and client.
|
|
86
|
+
|
|
87
|
+
**Fixes:**
|
|
88
|
+
|
|
89
|
+
1. **Missing `ssrData`** — Ensure you're passing the SSR data Promise to the provider:
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
<ConsentManagerProvider
|
|
93
|
+
options={{
|
|
94
|
+
mode: 'hosted',
|
|
95
|
+
backendURL: '...',
|
|
96
|
+
ssrData: fetchSSRData({ backendURL: '...', headers }),
|
|
97
|
+
}}
|
|
98
|
+
>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
2. **Stale cache** — If using a CDN or caching layer, ensure the SSR data is fresh per-request and not shared across users.
|
|
102
|
+
|
|
103
|
+
3. **Debug with `useSSRStatus`** — Check if SSR data was actually consumed:
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
const { ssrDataUsed, ssrSkippedReason } = useSSRStatus();
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
See [Server-Side Utilities](/docs/frameworks/react/server-side) for full SSR setup.
|
|
110
|
+
|
|
111
|
+
## TypeScript Errors
|
|
112
|
+
|
|
113
|
+
**Common import issues:**
|
|
114
|
+
|
|
115
|
+
```tsx
|
|
116
|
+
// Components and hooks — main entry point
|
|
117
|
+
import { ConsentManagerProvider, useConsentManager } from '@c15t/react';
|
|
118
|
+
|
|
119
|
+
// Server utilities — separate entry point
|
|
120
|
+
import { fetchSSRData } from '@c15t/react/server';
|
|
121
|
+
|
|
122
|
+
// Headless (hooks only, no components)
|
|
123
|
+
import { useConsentManager } from '@c15t/react/headless';
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
If you see type errors after updating, try:
|
|
127
|
+
|
|
128
|
+
```sh
|
|
129
|
+
rm -rf node_modules/.cache
|
|
130
|
+
bun install
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Still Stuck?
|
|
134
|
+
|
|
135
|
+
* Enable `debug: true` in provider options for verbose console logging
|
|
136
|
+
* Use the [DevTools](/docs/frameworks/react/components/dev-tools) panel to inspect live consent state
|
|
137
|
+
* Check the [GitHub issues](https://github.com/c15t/c15t/issues) for known bugs
|
package/iab/styles.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "../dist/iab/styles.css";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c15t/react",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.12",
|
|
4
4
|
"description": "Developer-first CMP for React: cookie banner, consent manager, preferences centre. GDPR ready with minimal setup and rich customization",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -25,74 +25,136 @@
|
|
|
25
25
|
"url": "https://github.com/c15t/c15t.git",
|
|
26
26
|
"directory": "packages/react"
|
|
27
27
|
},
|
|
28
|
-
"license": "
|
|
29
|
-
"sideEffects":
|
|
28
|
+
"license": "Apache-2.0",
|
|
29
|
+
"sideEffects": [
|
|
30
|
+
"**/*.css"
|
|
31
|
+
],
|
|
30
32
|
"type": "module",
|
|
31
33
|
"exports": {
|
|
34
|
+
"./styles.css": "./dist/styles.css",
|
|
35
|
+
"./styles.tw3.css": "./dist/styles.tw3.css",
|
|
36
|
+
"./iab/styles.css": "./dist/iab/styles.css",
|
|
37
|
+
"./iab/styles.tw3.css": "./dist/iab/styles.tw3.css",
|
|
38
|
+
"./primitives": {
|
|
39
|
+
"types": "./dist-types/primitives.d.ts",
|
|
40
|
+
"import": "./dist/primitives.js",
|
|
41
|
+
"require": "./dist/primitives.cjs"
|
|
42
|
+
},
|
|
43
|
+
"./primitives/*": {
|
|
44
|
+
"types": "./dist-types/primitives/*.d.ts",
|
|
45
|
+
"import": "./dist/primitives/*.js",
|
|
46
|
+
"require": "./dist/primitives/*.cjs"
|
|
47
|
+
},
|
|
32
48
|
"./server": {
|
|
33
|
-
"types": "./dist/server/index.d.ts",
|
|
49
|
+
"types": "./dist-types/server/index.d.ts",
|
|
34
50
|
"import": "./dist/server/index.js",
|
|
35
51
|
"require": "./dist/server/index.cjs"
|
|
36
52
|
},
|
|
37
53
|
"./headless": {
|
|
38
|
-
"types": "./dist/headless.d.ts",
|
|
54
|
+
"types": "./dist-types/headless.d.ts",
|
|
39
55
|
"import": "./dist/headless.js",
|
|
40
56
|
"require": "./dist/headless.cjs"
|
|
41
57
|
},
|
|
42
58
|
"./preference-center": {
|
|
43
|
-
"types": "./dist/components/preference-center/index.d.ts",
|
|
59
|
+
"types": "./dist-types/components/preference-center/index.d.ts",
|
|
44
60
|
"import": "./dist/components/preference-center/index.js",
|
|
45
61
|
"require": "./dist/components/preference-center/index.cjs"
|
|
46
62
|
},
|
|
47
63
|
"./preference-center-widget": {
|
|
48
|
-
"types": "./dist/components/preference-center-widget/index.d.ts",
|
|
64
|
+
"types": "./dist-types/components/preference-center-widget/index.d.ts",
|
|
49
65
|
"import": "./dist/components/preference-center-widget/index.js",
|
|
50
66
|
"require": "./dist/components/preference-center-widget/index.cjs"
|
|
51
67
|
},
|
|
52
68
|
"./cookie-banner": {
|
|
53
|
-
"types": "./dist/components/cookie-banner/index.d.ts",
|
|
69
|
+
"types": "./dist-types/components/cookie-banner/index.d.ts",
|
|
54
70
|
"import": "./dist/components/cookie-banner/index.js",
|
|
55
71
|
"require": "./dist/components/cookie-banner/index.cjs"
|
|
56
72
|
},
|
|
73
|
+
"./components/consent-banner": {
|
|
74
|
+
"types": "./dist-types/components/consent-banner/index.d.ts",
|
|
75
|
+
"import": "./client/components/consent-banner.js",
|
|
76
|
+
"require": "./dist/components/consent-banner/index.cjs"
|
|
77
|
+
},
|
|
78
|
+
"./components/consent-dialog": {
|
|
79
|
+
"types": "./dist-types/components/consent-dialog/index.d.ts",
|
|
80
|
+
"import": "./client/components/consent-dialog.js",
|
|
81
|
+
"require": "./dist/components/consent-dialog/index.cjs"
|
|
82
|
+
},
|
|
83
|
+
"./components/consent-dialog-trigger": {
|
|
84
|
+
"types": "./dist-types/components/consent-dialog-trigger/index.d.ts",
|
|
85
|
+
"import": "./client/components/consent-dialog-trigger.js",
|
|
86
|
+
"require": "./dist/components/consent-dialog-trigger/index.cjs"
|
|
87
|
+
},
|
|
88
|
+
"./components/consent-dialog-link": {
|
|
89
|
+
"types": "./dist-types/components/consent-dialog-link/index.d.ts",
|
|
90
|
+
"import": "./client/components/consent-dialog-link.js",
|
|
91
|
+
"require": "./dist/components/consent-dialog-link/index.cjs"
|
|
92
|
+
},
|
|
93
|
+
"./components/consent-widget": {
|
|
94
|
+
"types": "./dist-types/components/consent-widget/index.d.ts",
|
|
95
|
+
"import": "./client/components/consent-widget.js",
|
|
96
|
+
"require": "./dist/components/consent-widget/index.cjs"
|
|
97
|
+
},
|
|
98
|
+
"./components/frame": {
|
|
99
|
+
"types": "./dist-types/components/frame/index.d.ts",
|
|
100
|
+
"import": "./client/components/frame.js",
|
|
101
|
+
"require": "./dist/components/frame/index.cjs"
|
|
102
|
+
},
|
|
103
|
+
"./iab": {
|
|
104
|
+
"types": "./dist-types/iab.d.ts",
|
|
105
|
+
"import": "./dist/iab.js",
|
|
106
|
+
"require": "./dist/iab.cjs"
|
|
107
|
+
},
|
|
57
108
|
"./hooks": {
|
|
58
|
-
"types": "./dist/hooks/index.d.ts",
|
|
109
|
+
"types": "./dist-types/hooks/index.d.ts",
|
|
59
110
|
"import": "./dist/hooks/index.js",
|
|
60
111
|
"require": "./dist/hooks/index.cjs"
|
|
61
112
|
},
|
|
62
113
|
"./context": {
|
|
63
|
-
"types": "./dist/context/index.d.ts",
|
|
114
|
+
"types": "./dist-types/context/index.d.ts",
|
|
64
115
|
"import": "./dist/context/index.js",
|
|
65
116
|
"require": "./dist/context/index.cjs"
|
|
66
117
|
},
|
|
67
118
|
"./types": {
|
|
68
|
-
"types": "./dist/types/index.d.ts",
|
|
119
|
+
"types": "./dist-types/types/index.d.ts",
|
|
69
120
|
"import": "./dist/types/index.js",
|
|
70
121
|
"require": "./dist/types/index.cjs"
|
|
71
122
|
},
|
|
72
123
|
"./utils": {
|
|
73
|
-
"types": "./dist/utils/index.d.ts",
|
|
124
|
+
"types": "./dist-types/utils/index.d.ts",
|
|
74
125
|
"import": "./dist/utils/index.js",
|
|
75
126
|
"require": "./dist/utils/index.cjs"
|
|
76
127
|
},
|
|
77
128
|
".": {
|
|
78
|
-
"types": "./dist/index.d.ts",
|
|
129
|
+
"types": "./dist-types/index.d.ts",
|
|
79
130
|
"import": "./dist/index.js",
|
|
80
131
|
"require": "./dist/index.cjs"
|
|
81
132
|
}
|
|
82
133
|
},
|
|
83
134
|
"main": "./dist/index.cjs",
|
|
84
135
|
"module": "./dist/index.js",
|
|
85
|
-
"types": "./dist/index.d.ts",
|
|
136
|
+
"types": "./dist-types/index.d.ts",
|
|
86
137
|
"files": [
|
|
87
|
-
"dist"
|
|
138
|
+
"dist",
|
|
139
|
+
"docs",
|
|
140
|
+
"dist-types",
|
|
141
|
+
"client",
|
|
142
|
+
"styles.css",
|
|
143
|
+
"iab",
|
|
144
|
+
"src/styles.tw3.css",
|
|
145
|
+
"src/iab/styles.tw3.css",
|
|
146
|
+
"!dist/mockServiceWorker.js"
|
|
88
147
|
],
|
|
89
148
|
"scripts": {
|
|
90
149
|
"prebuild": "genversion --esm --semi src/version.ts",
|
|
91
|
-
"build": "bun prebuild && rslib build",
|
|
150
|
+
"build": "bun prebuild && rslib build && bun ../../scripts/normalize-dist-types.mjs && bun scripts/generate-distribution-css.ts && bun run clean:dist:test-artifacts && bun ../../scripts/agent-docs/generate-package-docs.ts @c15t/react",
|
|
151
|
+
"build:agent-docs": "bun ../../scripts/agent-docs/generate-package-docs.ts @c15t/react",
|
|
92
152
|
"check-types": "bun prebuild && tsc --noEmit",
|
|
93
|
-
"
|
|
153
|
+
"clean:dist:test-artifacts": "bun --eval \"import { rmSync } from 'node:fs'; rmSync('dist/mockServiceWorker.js', { force: true });\"",
|
|
154
|
+
"dev": "bun prebuild && rslib build && bun ../../scripts/normalize-dist-types.mjs && bun scripts/generate-distribution-css.ts",
|
|
94
155
|
"fmt": "bun biome format --write . && bun biome check --formatter-enabled=false --linter-enabled=false --write",
|
|
95
156
|
"lint": "bun biome lint ./src",
|
|
157
|
+
"prepack": "cd ../.. && bunx turbo run build --filter=@c15t/react",
|
|
96
158
|
"test": "bun prebuild && vitest run",
|
|
97
159
|
"test:watch": "bun prebuild && vitest"
|
|
98
160
|
},
|
|
@@ -102,19 +164,17 @@
|
|
|
102
164
|
"not op_mini all"
|
|
103
165
|
],
|
|
104
166
|
"dependencies": {
|
|
105
|
-
"@c15t/ui": "2.0.0-rc.
|
|
106
|
-
"
|
|
107
|
-
"@radix-ui/react-slot": "1.2.4",
|
|
108
|
-
"@radix-ui/react-switch": "1.2.6",
|
|
109
|
-
"c15t": "2.0.0-rc.1",
|
|
110
|
-
"clsx": "2.1.1"
|
|
167
|
+
"@c15t/ui": "2.0.0-rc.11",
|
|
168
|
+
"c15t": "2.0.0-rc.10"
|
|
111
169
|
},
|
|
112
170
|
"devDependencies": {
|
|
113
|
-
"@c15t/backend": "2.0.0-rc.
|
|
171
|
+
"@c15t/backend": "2.0.0-rc.10",
|
|
172
|
+
"@c15t/iab": "2.0.0-rc.10",
|
|
114
173
|
"@c15t/typescript-config": "0.0.1-beta.1",
|
|
115
174
|
"@c15t/vitest-config": "1.0.0",
|
|
175
|
+
"@iabtechlabtcf/core": "^1.5.20",
|
|
116
176
|
"genversion": "3.2.0",
|
|
117
|
-
"msw": "^2.12.
|
|
177
|
+
"msw": "^2.12.14"
|
|
118
178
|
},
|
|
119
179
|
"peerDependencies": {
|
|
120
180
|
"react": "^19.0.0 || ^19.0.0-rc || ^18.0.0 || ^17.0.0 || ^16.8.0",
|
package/readme.json
CHANGED
|
@@ -21,6 +21,12 @@
|
|
|
21
21
|
"",
|
|
22
22
|
"```bash\npnpm add @c15t/react\n```",
|
|
23
23
|
"",
|
|
24
|
+
"Then add the prebuilt stylesheet to your app-level CSS entrypoint:",
|
|
25
|
+
"",
|
|
26
|
+
"```css\n/* src/index.css */\n@import \"@c15t/react/styles.css\";\n```",
|
|
27
|
+
"",
|
|
28
|
+
"If you use the prebuilt IAB TCF UI, also import `@c15t/react/iab/styles.css`. It is published separately so non-IAB apps do not ship those component rules.",
|
|
29
|
+
"",
|
|
24
30
|
"To manually install, follow the guide in our [docs – manual setup](https://c15t.com/docs/frameworks/react/quickstart#manual-setup)."
|
|
25
31
|
],
|
|
26
32
|
"usage": [
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @c15t/react — IAB TCF component styles.
|
|
3
|
+
*
|
|
4
|
+
* Add this stylesheet to the same global CSS entrypoint as your base c15t styles
|
|
5
|
+
* when using IAB consent components. Do not import either stylesheet from JS/TSX.
|
|
6
|
+
*
|
|
7
|
+
* Usage (src/index.css):
|
|
8
|
+
* @import "@c15t/react/styles.css";
|
|
9
|
+
* @import "@c15t/react/iab/styles.css";
|
|
10
|
+
*/
|
|
11
|
+
@import "@c15t/ui/iab/styles.css";
|