@c15t/svelte 3.0.0-alpha.0
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/AGENTS.md +88 -0
- package/README.md +136 -0
- package/SKILL.md +14 -0
- package/dist/actions/focus-trap.d.ts +8 -0
- package/dist/actions/focus-trap.js +23 -0
- package/dist/actions/portal.d.ts +8 -0
- package/dist/actions/portal.js +39 -0
- package/dist/actions/scroll-lock.d.ts +8 -0
- package/dist/actions/scroll-lock.js +23 -0
- package/dist/components/action-button.svelte +119 -0
- package/dist/components/action-button.svelte.d.ts +18 -0
- package/dist/components/branding.svelte +139 -0
- package/dist/components/branding.svelte.d.ts +13 -0
- package/dist/components/consent-dev-tools.svelte +58 -0
- package/dist/components/consent-dev-tools.svelte.d.ts +4 -0
- package/dist/components/frame.svelte +95 -0
- package/dist/components/frame.svelte.d.ts +12 -0
- package/dist/components/iab-panel.svelte +542 -0
- package/dist/components/iab-panel.svelte.d.ts +16 -0
- package/dist/components/iab-prompt.svelte +304 -0
- package/dist/components/iab-prompt.svelte.d.ts +14 -0
- package/dist/components/iab-purpose-item.svelte +511 -0
- package/dist/components/iab-purpose-item.svelte.d.ts +26 -0
- package/dist/components/iab-stack-item.svelte +146 -0
- package/dist/components/iab-stack-item.svelte.d.ts +19 -0
- package/dist/components/iab-vendor-list.svelte +900 -0
- package/dist/components/iab-vendor-list.svelte.d.ts +19 -0
- package/dist/components/icons/c15-t-icon-only.svelte +27 -0
- package/dist/components/icons/c15-t-icon-only.svelte.d.ts +9 -0
- package/dist/components/icons/chevron-down-icon.svelte +30 -0
- package/dist/components/icons/chevron-down-icon.svelte.d.ts +10 -0
- package/dist/components/icons/chevron-right-icon.svelte +36 -0
- package/dist/components/icons/chevron-right-icon.svelte.d.ts +12 -0
- package/dist/components/icons/close-icon.svelte +40 -0
- package/dist/components/icons/close-icon.svelte.d.ts +10 -0
- package/dist/components/icons/consent-icon-only.svelte +36 -0
- package/dist/components/icons/consent-icon-only.svelte.d.ts +9 -0
- package/dist/components/icons/external-link-icon.svelte +30 -0
- package/dist/components/icons/external-link-icon.svelte.d.ts +8 -0
- package/dist/components/icons/globe-icon.svelte +39 -0
- package/dist/components/icons/globe-icon.svelte.d.ts +9 -0
- package/dist/components/icons/info-icon.svelte +42 -0
- package/dist/components/icons/info-icon.svelte.d.ts +9 -0
- package/dist/components/icons/inth-logo.svelte +38 -0
- package/dist/components/icons/inth-logo.svelte.d.ts +9 -0
- package/dist/components/icons/layers-icon.svelte +25 -0
- package/dist/components/icons/layers-icon.svelte.d.ts +8 -0
- package/dist/components/icons/legitimate-interest-icon.svelte +29 -0
- package/dist/components/icons/legitimate-interest-icon.svelte.d.ts +10 -0
- package/dist/components/icons/lock-icon.svelte +31 -0
- package/dist/components/icons/lock-icon.svelte.d.ts +8 -0
- package/dist/components/icons/search-icon.svelte +33 -0
- package/dist/components/icons/search-icon.svelte.d.ts +8 -0
- package/dist/components/inline-legal-links.svelte +95 -0
- package/dist/components/inline-legal-links.svelte.d.ts +10 -0
- package/dist/components/manager-provider.svelte +459 -0
- package/dist/components/manager-provider.svelte.d.ts +27 -0
- package/dist/components/overlay.svelte +79 -0
- package/dist/components/overlay.svelte.d.ts +7 -0
- package/dist/components/panel-link.svelte +33 -0
- package/dist/components/panel-link.svelte.d.ts +10 -0
- package/dist/components/panel-trigger.svelte +237 -0
- package/dist/components/panel-trigger.svelte.d.ts +16 -0
- package/dist/components/panel.svelte +258 -0
- package/dist/components/panel.svelte.d.ts +22 -0
- package/dist/components/policy-actions-renderer.svelte +79 -0
- package/dist/components/policy-actions-renderer.svelte.d.ts +19 -0
- package/dist/components/preferences.svelte +320 -0
- package/dist/components/preferences.svelte.d.ts +8 -0
- package/dist/components/prompt.svelte +514 -0
- package/dist/components/prompt.svelte.d.ts +43 -0
- package/dist/context.svelte.d.ts +125 -0
- package/dist/context.svelte.js +354 -0
- package/dist/devtools-options.d.ts +7 -0
- package/dist/devtools-options.js +1 -0
- package/dist/devtools.d.ts +9 -0
- package/dist/devtools.js +7 -0
- package/dist/headless.d.ts +10 -0
- package/dist/headless.js +7 -0
- package/dist/iab/styles.css +11 -0
- package/dist/iab-loader.d.ts +30 -0
- package/dist/iab-loader.js +33 -0
- package/dist/iab-translations.d.ts +84 -0
- package/dist/iab-translations.js +45 -0
- package/dist/iab-types.d.ts +62 -0
- package/dist/iab-types.js +43 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.js +21 -0
- package/dist/kit/app.d.ts +35 -0
- package/dist/kit/handle.d.ts +34 -0
- package/dist/kit/handle.js +87 -0
- package/dist/kit/index.d.ts +30 -0
- package/dist/kit/index.js +5 -0
- package/dist/kit/load-consent.d.ts +57 -0
- package/dist/kit/load-consent.js +144 -0
- package/dist/kit/routes.d.ts +46 -0
- package/dist/kit/routes.js +203 -0
- package/dist/kit/types.d.ts +56 -0
- package/dist/kit/types.js +1 -0
- package/dist/primitives/accordion/accordion-item-content.svelte +35 -0
- package/dist/primitives/accordion/accordion-item-content.svelte.d.ts +9 -0
- package/dist/primitives/accordion/accordion-item-trigger.svelte +54 -0
- package/dist/primitives/accordion/accordion-item-trigger.svelte.d.ts +10 -0
- package/dist/primitives/accordion/accordion-item.svelte +61 -0
- package/dist/primitives/accordion/accordion-item.svelte.d.ts +11 -0
- package/dist/primitives/accordion/accordion-root.svelte +61 -0
- package/dist/primitives/accordion/accordion-root.svelte.d.ts +13 -0
- package/dist/primitives/accordion/context.d.ts +18 -0
- package/dist/primitives/accordion/context.js +23 -0
- package/dist/primitives/accordion/index.d.ts +29 -0
- package/dist/primitives/accordion/index.js +11 -0
- package/dist/primitives/collapsible/collapsible-content.svelte +36 -0
- package/dist/primitives/collapsible/collapsible-content.svelte.d.ts +9 -0
- package/dist/primitives/collapsible/collapsible-indicator.svelte +29 -0
- package/dist/primitives/collapsible/collapsible-indicator.svelte.d.ts +9 -0
- package/dist/primitives/collapsible/collapsible-root.svelte +70 -0
- package/dist/primitives/collapsible/collapsible-root.svelte.d.ts +11 -0
- package/dist/primitives/collapsible/collapsible-trigger.svelte +52 -0
- package/dist/primitives/collapsible/collapsible-trigger.svelte.d.ts +10 -0
- package/dist/primitives/collapsible/context.d.ts +10 -0
- package/dist/primitives/collapsible/context.js +12 -0
- package/dist/primitives/collapsible/index.d.ts +26 -0
- package/dist/primitives/collapsible/index.js +11 -0
- package/dist/primitives/dialog/context.d.ts +14 -0
- package/dist/primitives/dialog/context.js +12 -0
- package/dist/primitives/dialog/dialog-backdrop.svelte +39 -0
- package/dist/primitives/dialog/dialog-backdrop.svelte.d.ts +7 -0
- package/dist/primitives/dialog/dialog-close-trigger.svelte +48 -0
- package/dist/primitives/dialog/dialog-close-trigger.svelte.d.ts +11 -0
- package/dist/primitives/dialog/dialog-content.svelte +81 -0
- package/dist/primitives/dialog/dialog-content.svelte.d.ts +9 -0
- package/dist/primitives/dialog/dialog-description.svelte +28 -0
- package/dist/primitives/dialog/dialog-description.svelte.d.ts +9 -0
- package/dist/primitives/dialog/dialog-positioner.svelte +33 -0
- package/dist/primitives/dialog/dialog-positioner.svelte.d.ts +9 -0
- package/dist/primitives/dialog/dialog-root.svelte +117 -0
- package/dist/primitives/dialog/dialog-root.svelte.d.ts +14 -0
- package/dist/primitives/dialog/dialog-title.svelte +28 -0
- package/dist/primitives/dialog/dialog-title.svelte.d.ts +9 -0
- package/dist/primitives/dialog/index.d.ts +50 -0
- package/dist/primitives/dialog/index.js +19 -0
- package/dist/primitives/index.d.ts +7 -0
- package/dist/primitives/index.js +7 -0
- package/dist/primitives/portal/index.d.ts +4 -0
- package/dist/primitives/portal/index.js +2 -0
- package/dist/primitives/portal/portal.svelte +23 -0
- package/dist/primitives/portal/portal.svelte.d.ts +9 -0
- package/dist/primitives/preference-item/context.d.ts +11 -0
- package/dist/primitives/preference-item/context.js +12 -0
- package/dist/primitives/preference-item/index.d.ts +54 -0
- package/dist/primitives/preference-item/index.js +21 -0
- package/dist/primitives/preference-item/preference-item-auxiliary.svelte +33 -0
- package/dist/primitives/preference-item/preference-item-auxiliary.svelte.d.ts +9 -0
- package/dist/primitives/preference-item/preference-item-content.svelte +68 -0
- package/dist/primitives/preference-item/preference-item-content.svelte.d.ts +14 -0
- package/dist/primitives/preference-item/preference-item-control.svelte +33 -0
- package/dist/primitives/preference-item/preference-item-control.svelte.d.ts +9 -0
- package/dist/primitives/preference-item/preference-item-header.svelte +33 -0
- package/dist/primitives/preference-item/preference-item-header.svelte.d.ts +9 -0
- package/dist/primitives/preference-item/preference-item-leading.svelte +33 -0
- package/dist/primitives/preference-item/preference-item-leading.svelte.d.ts +9 -0
- package/dist/primitives/preference-item/preference-item-meta.svelte +33 -0
- package/dist/primitives/preference-item/preference-item-meta.svelte.d.ts +9 -0
- package/dist/primitives/preference-item/preference-item-root.svelte +82 -0
- package/dist/primitives/preference-item/preference-item-root.svelte.d.ts +12 -0
- package/dist/primitives/preference-item/preference-item-title.svelte +33 -0
- package/dist/primitives/preference-item/preference-item-title.svelte.d.ts +9 -0
- package/dist/primitives/preference-item/preference-item-trigger.svelte +62 -0
- package/dist/primitives/preference-item/preference-item-trigger.svelte.d.ts +10 -0
- package/dist/primitives/switch/context.d.ts +7 -0
- package/dist/primitives/switch/context.js +12 -0
- package/dist/primitives/switch/index.d.ts +25 -0
- package/dist/primitives/switch/index.js +11 -0
- package/dist/primitives/switch/switch-control.svelte +21 -0
- package/dist/primitives/switch/switch-control.svelte.d.ts +9 -0
- package/dist/primitives/switch/switch-hidden-input.svelte +31 -0
- package/dist/primitives/switch/switch-hidden-input.svelte.d.ts +8 -0
- package/dist/primitives/switch/switch-root.svelte +86 -0
- package/dist/primitives/switch/switch-root.svelte.d.ts +12 -0
- package/dist/primitives/switch/switch-thumb.svelte +14 -0
- package/dist/primitives/switch/switch-thumb.svelte.d.ts +7 -0
- package/dist/primitives/tabs/context.d.ts +11 -0
- package/dist/primitives/tabs/context.js +12 -0
- package/dist/primitives/tabs/index.d.ts +32 -0
- package/dist/primitives/tabs/index.js +11 -0
- package/dist/primitives/tabs/tabs-content.svelte +45 -0
- package/dist/primitives/tabs/tabs-content.svelte.d.ts +11 -0
- package/dist/primitives/tabs/tabs-list.svelte +38 -0
- package/dist/primitives/tabs/tabs-list.svelte.d.ts +10 -0
- package/dist/primitives/tabs/tabs-root.svelte +67 -0
- package/dist/primitives/tabs/tabs-root.svelte.d.ts +14 -0
- package/dist/primitives/tabs/tabs-trigger.svelte +108 -0
- package/dist/primitives/tabs/tabs-trigger.svelte.d.ts +11 -0
- package/dist/server/headers.d.ts +13 -0
- package/dist/server/headers.js +37 -0
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.js +116 -0
- package/dist/server/normalize-url.d.ts +23 -0
- package/dist/server/normalize-url.js +46 -0
- package/dist/server/types.d.ts +25 -0
- package/dist/server/types.js +1 -0
- package/dist/styles.css +10 -0
- package/dist/transports/offline.d.ts +14 -0
- package/dist/transports/offline.js +22 -0
- package/dist/types.d.ts +70 -0
- package/dist/types.js +1 -0
- package/dist/use-banner-visibility.svelte.d.ts +25 -0
- package/dist/use-banner-visibility.svelte.js +108 -0
- package/dist/utils.d.ts +25 -0
- package/dist/utils.js +32 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +2 -0
- package/docs/README.md +88 -0
- package/docs/assets/v3/brand-bar.png +0 -0
- package/docs/assets/v3/brand-card.png +0 -0
- package/docs/assets/v3/choice-wall.png +0 -0
- package/docs/assets/v3/mobile-card.png +0 -0
- package/docs/assets/v3/preferences.png +0 -0
- package/docs/customization/overview.md +45 -0
- package/docs/customization/recipes.md +79 -0
- package/docs/customization/slots.md +55 -0
- package/docs/customization/tokens.md +76 -0
- package/docs/customization/translations.md +49 -0
- package/docs/frameworks/svelte/quickstart.md +133 -0
- package/docs/frameworks/sveltekit/quickstart.md +144 -0
- package/docs/guides/consent-state.md +60 -0
- package/docs/guides/data-fetching.md +163 -0
- package/docs/guides/deployment-modes.md +63 -0
- package/docs/guides/troubleshooting.md +68 -0
- package/docs/guides/verify-consent.md +62 -0
- package/docs/integrations/adobe-analytics.md +294 -0
- package/docs/integrations/ahrefs-analytics.md +291 -0
- package/docs/integrations/amplitude.md +292 -0
- package/docs/integrations/building-integrations.md +47 -0
- package/docs/integrations/clearbit.md +291 -0
- package/docs/integrations/cloudflare-web-analytics.md +292 -0
- package/docs/integrations/crisp.md +294 -0
- package/docs/integrations/databuddy.md +311 -0
- package/docs/integrations/fathom-analytics.md +293 -0
- package/docs/integrations/google-maps.md +384 -0
- package/docs/integrations/google-tag-manager.md +306 -0
- package/docs/integrations/google-tag.md +305 -0
- package/docs/integrations/heap.md +292 -0
- package/docs/integrations/hightouch.md +293 -0
- package/docs/integrations/hotjar.md +292 -0
- package/docs/integrations/intercom.md +285 -0
- package/docs/integrations/linkedin-insights.md +291 -0
- package/docs/integrations/logrocket.md +293 -0
- package/docs/integrations/matomo-analytics.md +316 -0
- package/docs/integrations/meta-pixel.md +285 -0
- package/docs/integrations/microsoft-clarity.md +292 -0
- package/docs/integrations/microsoft-uet.md +291 -0
- package/docs/integrations/mixpanel-analytics.md +295 -0
- package/docs/integrations/openai-pixel.md +441 -0
- package/docs/integrations/overview.md +111 -0
- package/docs/integrations/pirsch.md +295 -0
- package/docs/integrations/plausible-analytics.md +295 -0
- package/docs/integrations/posthog.md +397 -0
- package/docs/integrations/promptwatch.md +291 -0
- package/docs/integrations/reddit-pixel.md +294 -0
- package/docs/integrations/rudderstack.md +328 -0
- package/docs/integrations/rybbit-analytics.md +296 -0
- package/docs/integrations/segment.md +292 -0
- package/docs/integrations/snapchat-pixel.md +293 -0
- package/docs/integrations/tiktok-pixel.md +291 -0
- package/docs/integrations/umami-analytics.md +295 -0
- package/docs/integrations/vercel-analytics.md +293 -0
- package/docs/integrations/x-pixel.md +291 -0
- package/docs/integrations/youtube.md +405 -0
- package/docs/upgrade-v3.md +334 -0
- package/iab/styles.css +1 -0
- package/package.json +153 -0
- package/readme.json +36 -0
- package/styles.css +1 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
getDataDisabled,
|
|
4
|
+
getPreferenceItemState,
|
|
5
|
+
PREFERENCE_ITEM_SLOTS,
|
|
6
|
+
togglePreferenceItemValue,
|
|
7
|
+
} from '@c15t/ui/primitives';
|
|
8
|
+
import { preferenceItemVariants } from '@c15t/ui/styles/primitives';
|
|
9
|
+
import type { Snippet } from 'svelte';
|
|
10
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
11
|
+
|
|
12
|
+
import { getThemeContext } from '../../context.svelte';
|
|
13
|
+
import { setPreferenceItemContext } from './context';
|
|
14
|
+
|
|
15
|
+
const componentId = $props.id();
|
|
16
|
+
const theme = getThemeContext();
|
|
17
|
+
const variants = preferenceItemVariants();
|
|
18
|
+
|
|
19
|
+
let {
|
|
20
|
+
children,
|
|
21
|
+
class: className,
|
|
22
|
+
disabled = false,
|
|
23
|
+
noStyle: localNoStyle,
|
|
24
|
+
open = $bindable(false),
|
|
25
|
+
...restProps
|
|
26
|
+
}: HTMLAttributes<HTMLDivElement> & {
|
|
27
|
+
children?: Snippet;
|
|
28
|
+
class?: string;
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
noStyle?: boolean;
|
|
31
|
+
open?: boolean;
|
|
32
|
+
} = $props();
|
|
33
|
+
|
|
34
|
+
const noStyle = $derived(localNoStyle ?? theme.noStyle ?? false);
|
|
35
|
+
const rootClassName = $derived(
|
|
36
|
+
noStyle ? className : variants.root({ class: className })
|
|
37
|
+
);
|
|
38
|
+
const dataState = $derived(getPreferenceItemState(open));
|
|
39
|
+
const dataDisabled = $derived(getDataDisabled(disabled));
|
|
40
|
+
const contentId = `c15t-preference-item-content-${componentId}`;
|
|
41
|
+
const triggerId = `c15t-preference-item-trigger-${componentId}`;
|
|
42
|
+
|
|
43
|
+
const setOpen = function setOpen(nextOpen: boolean) {
|
|
44
|
+
open = nextOpen;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const toggle = function toggle() {
|
|
48
|
+
if (!disabled) {
|
|
49
|
+
setOpen(togglePreferenceItemValue(open));
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
setPreferenceItemContext({
|
|
54
|
+
get contentId() {
|
|
55
|
+
return contentId;
|
|
56
|
+
},
|
|
57
|
+
get disabled() {
|
|
58
|
+
return disabled;
|
|
59
|
+
},
|
|
60
|
+
get noStyle() {
|
|
61
|
+
return noStyle;
|
|
62
|
+
},
|
|
63
|
+
get open() {
|
|
64
|
+
return open;
|
|
65
|
+
},
|
|
66
|
+
setOpen,
|
|
67
|
+
toggle,
|
|
68
|
+
get triggerId() {
|
|
69
|
+
return triggerId;
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<div
|
|
75
|
+
class={rootClassName}
|
|
76
|
+
data-slot={PREFERENCE_ITEM_SLOTS.root}
|
|
77
|
+
data-state={dataState}
|
|
78
|
+
data-disabled={dataDisabled}
|
|
79
|
+
{...restProps}
|
|
80
|
+
>
|
|
81
|
+
{@render children?.()}
|
|
82
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
noStyle?: boolean;
|
|
8
|
+
open?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const PreferenceItemRoot: import("svelte").Component<$$ComponentProps, {}, "open">;
|
|
11
|
+
type PreferenceItemRoot = ReturnType<typeof PreferenceItemRoot>;
|
|
12
|
+
export default PreferenceItemRoot;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { PREFERENCE_ITEM_SLOTS } from '@c15t/ui/primitives';
|
|
3
|
+
import { preferenceItemVariants } from '@c15t/ui/styles/primitives';
|
|
4
|
+
import type { Snippet } from 'svelte';
|
|
5
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
6
|
+
|
|
7
|
+
import { getPreferenceItemContext } from './context';
|
|
8
|
+
|
|
9
|
+
const context = getPreferenceItemContext();
|
|
10
|
+
const variants = preferenceItemVariants();
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
children,
|
|
14
|
+
class: localClassName,
|
|
15
|
+
...restProps
|
|
16
|
+
}: HTMLAttributes<HTMLHeadingElement> & {
|
|
17
|
+
children?: Snippet;
|
|
18
|
+
class?: string;
|
|
19
|
+
} = $props();
|
|
20
|
+
|
|
21
|
+
const noStyle = $derived(context.noStyle);
|
|
22
|
+
const className = $derived.by(() =>
|
|
23
|
+
noStyle ? localClassName : variants.title({ class: localClassName })
|
|
24
|
+
);
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<h3
|
|
28
|
+
class={className}
|
|
29
|
+
data-slot={PREFERENCE_ITEM_SLOTS.title}
|
|
30
|
+
{...restProps}
|
|
31
|
+
>
|
|
32
|
+
{@render children?.()}
|
|
33
|
+
</h3>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = HTMLAttributes<HTMLHeadingElement> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
};
|
|
7
|
+
declare const PreferenceItemTitle: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type PreferenceItemTitle = ReturnType<typeof PreferenceItemTitle>;
|
|
9
|
+
export default PreferenceItemTitle;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
getDataDisabled,
|
|
4
|
+
getPreferenceItemState,
|
|
5
|
+
PREFERENCE_ITEM_SLOTS,
|
|
6
|
+
} from '@c15t/ui/primitives';
|
|
7
|
+
import { preferenceItemVariants } from '@c15t/ui/styles/primitives';
|
|
8
|
+
import type { Snippet } from 'svelte';
|
|
9
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
10
|
+
|
|
11
|
+
import { getPreferenceItemContext } from './context';
|
|
12
|
+
|
|
13
|
+
const context = getPreferenceItemContext();
|
|
14
|
+
const variants = preferenceItemVariants();
|
|
15
|
+
|
|
16
|
+
let {
|
|
17
|
+
children,
|
|
18
|
+
class: localClassName,
|
|
19
|
+
onclick,
|
|
20
|
+
type = 'button',
|
|
21
|
+
...restProps
|
|
22
|
+
}: HTMLAttributes<HTMLButtonElement> & {
|
|
23
|
+
children?: Snippet;
|
|
24
|
+
class?: string;
|
|
25
|
+
type?: 'button' | 'submit' | 'reset';
|
|
26
|
+
} = $props();
|
|
27
|
+
|
|
28
|
+
const handleClick = function handleClick(
|
|
29
|
+
event: MouseEvent & { currentTarget: EventTarget & HTMLButtonElement }
|
|
30
|
+
) {
|
|
31
|
+
context.toggle();
|
|
32
|
+
onclick?.(event);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const open = $derived(context.open);
|
|
36
|
+
const disabled = $derived(context.disabled);
|
|
37
|
+
const noStyle = $derived(context.noStyle);
|
|
38
|
+
const triggerId = $derived(context.triggerId);
|
|
39
|
+
const contentId = $derived(context.contentId);
|
|
40
|
+
const className = $derived.by(() =>
|
|
41
|
+
noStyle ? localClassName : variants.trigger({ class: localClassName })
|
|
42
|
+
);
|
|
43
|
+
const dataState = $derived(getPreferenceItemState(open));
|
|
44
|
+
const dataDisabled = $derived(getDataDisabled(disabled));
|
|
45
|
+
</script>
|
|
46
|
+
|
|
47
|
+
<button
|
|
48
|
+
{type}
|
|
49
|
+
id={triggerId}
|
|
50
|
+
aria-controls={contentId}
|
|
51
|
+
aria-disabled={disabled || undefined}
|
|
52
|
+
aria-expanded={open}
|
|
53
|
+
class={className}
|
|
54
|
+
data-slot={PREFERENCE_ITEM_SLOTS.trigger}
|
|
55
|
+
data-state={dataState}
|
|
56
|
+
data-disabled={dataDisabled}
|
|
57
|
+
{disabled}
|
|
58
|
+
{...restProps}
|
|
59
|
+
onclick={handleClick}
|
|
60
|
+
>
|
|
61
|
+
{@render children?.()}
|
|
62
|
+
</button>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = HTMLAttributes<HTMLButtonElement> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
type?: 'button' | 'submit' | 'reset';
|
|
7
|
+
};
|
|
8
|
+
declare const PreferenceItemTrigger: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
+
type PreferenceItemTrigger = ReturnType<typeof PreferenceItemTrigger>;
|
|
10
|
+
export default PreferenceItemTrigger;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface SwitchRootContextValue {
|
|
2
|
+
readonly checked: boolean;
|
|
3
|
+
readonly disabled: boolean;
|
|
4
|
+
toggle: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare const setSwitchRootContext: (value: SwitchRootContextValue) => void;
|
|
7
|
+
export declare const getSwitchRootContext: () => SwitchRootContextValue;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getContext, setContext } from 'svelte';
|
|
2
|
+
const SWITCH_ROOT_CONTEXT_KEY = Symbol('c15t-svelte-switch-root');
|
|
3
|
+
export const setSwitchRootContext = function setSwitchRootContext(value) {
|
|
4
|
+
setContext(SWITCH_ROOT_CONTEXT_KEY, value);
|
|
5
|
+
};
|
|
6
|
+
export const getSwitchRootContext = function getSwitchRootContext() {
|
|
7
|
+
const context = getContext(SWITCH_ROOT_CONTEXT_KEY);
|
|
8
|
+
if (!context) {
|
|
9
|
+
throw new Error('Switch primitives must be used within Switch.Root');
|
|
10
|
+
}
|
|
11
|
+
return context;
|
|
12
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import Control from './switch-control.svelte';
|
|
2
|
+
import HiddenInput from './switch-hidden-input.svelte';
|
|
3
|
+
import Root from './switch-root.svelte';
|
|
4
|
+
import Thumb from './switch-thumb.svelte';
|
|
5
|
+
export declare const Switch: {
|
|
6
|
+
Control: import("svelte").Component<import("svelte/elements").HTMLAttributes<HTMLSpanElement> & {
|
|
7
|
+
children?: import("svelte").Snippet;
|
|
8
|
+
class?: string;
|
|
9
|
+
}, {}, "">;
|
|
10
|
+
HiddenInput: import("svelte").Component<import("svelte/elements").HTMLAttributes<HTMLInputElement> & {
|
|
11
|
+
name?: string;
|
|
12
|
+
value?: string;
|
|
13
|
+
}, {}, "">;
|
|
14
|
+
Root: import("svelte").Component<import("svelte/elements").HTMLAttributes<HTMLButtonElement> & {
|
|
15
|
+
children?: import("svelte").Snippet;
|
|
16
|
+
class?: string;
|
|
17
|
+
checked?: boolean;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
type?: "button" | "submit" | "reset";
|
|
20
|
+
}, {}, "checked">;
|
|
21
|
+
Thumb: import("svelte").Component<import("svelte/elements").HTMLAttributes<HTMLSpanElement> & {
|
|
22
|
+
class?: string;
|
|
23
|
+
}, {}, "">;
|
|
24
|
+
};
|
|
25
|
+
export { Control, HiddenInput, Root, Thumb };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Control from './switch-control.svelte';
|
|
2
|
+
import HiddenInput from './switch-hidden-input.svelte';
|
|
3
|
+
import Root from './switch-root.svelte';
|
|
4
|
+
import Thumb from './switch-thumb.svelte';
|
|
5
|
+
export const Switch = {
|
|
6
|
+
Control,
|
|
7
|
+
HiddenInput,
|
|
8
|
+
Root,
|
|
9
|
+
Thumb,
|
|
10
|
+
};
|
|
11
|
+
export { Control, HiddenInput, Root, Thumb };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
children,
|
|
7
|
+
class: className,
|
|
8
|
+
...restProps
|
|
9
|
+
}: HTMLAttributes<HTMLSpanElement> & {
|
|
10
|
+
children?: Snippet;
|
|
11
|
+
class?: string;
|
|
12
|
+
} = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<span
|
|
16
|
+
class={className}
|
|
17
|
+
data-slot="switch-track"
|
|
18
|
+
{...restProps}
|
|
19
|
+
>
|
|
20
|
+
{@render children?.()}
|
|
21
|
+
</span>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = HTMLAttributes<HTMLSpanElement> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
};
|
|
7
|
+
declare const SwitchControl: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
8
|
+
type SwitchControl = ReturnType<typeof SwitchControl>;
|
|
9
|
+
export default SwitchControl;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
|
|
4
|
+
import { getSwitchRootContext } from './context';
|
|
5
|
+
|
|
6
|
+
const root = getSwitchRootContext();
|
|
7
|
+
|
|
8
|
+
const checked = $derived(root.checked);
|
|
9
|
+
const disabled = $derived(root.disabled);
|
|
10
|
+
|
|
11
|
+
let {
|
|
12
|
+
name,
|
|
13
|
+
value = 'on',
|
|
14
|
+
...restProps
|
|
15
|
+
}: HTMLAttributes<HTMLInputElement> & {
|
|
16
|
+
name?: string;
|
|
17
|
+
value?: string;
|
|
18
|
+
} = $props();
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<input
|
|
22
|
+
type="checkbox"
|
|
23
|
+
{name}
|
|
24
|
+
{value}
|
|
25
|
+
{checked}
|
|
26
|
+
{disabled}
|
|
27
|
+
tabindex={-1}
|
|
28
|
+
aria-hidden="true"
|
|
29
|
+
style="position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;"
|
|
30
|
+
{...restProps}
|
|
31
|
+
/>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
|
+
type $$ComponentProps = HTMLAttributes<HTMLInputElement> & {
|
|
3
|
+
name?: string;
|
|
4
|
+
value?: string;
|
|
5
|
+
};
|
|
6
|
+
declare const SwitchHiddenInput: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type SwitchHiddenInput = ReturnType<typeof SwitchHiddenInput>;
|
|
8
|
+
export default SwitchHiddenInput;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
getDataDisabled,
|
|
4
|
+
getSwitchState,
|
|
5
|
+
toggleSwitchValue,
|
|
6
|
+
} from '@c15t/ui/primitives';
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
9
|
+
|
|
10
|
+
import { setSwitchRootContext } from './context';
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
children,
|
|
14
|
+
class: className,
|
|
15
|
+
checked = $bindable(false),
|
|
16
|
+
disabled = false,
|
|
17
|
+
onclick,
|
|
18
|
+
onkeydown,
|
|
19
|
+
type = 'button',
|
|
20
|
+
...restProps
|
|
21
|
+
}: HTMLAttributes<HTMLButtonElement> & {
|
|
22
|
+
children?: Snippet;
|
|
23
|
+
class?: string;
|
|
24
|
+
checked?: boolean;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
type?: 'button' | 'submit' | 'reset';
|
|
27
|
+
} = $props();
|
|
28
|
+
|
|
29
|
+
const dataState = $derived(getSwitchState(checked));
|
|
30
|
+
const dataDisabled = $derived(getDataDisabled(disabled));
|
|
31
|
+
|
|
32
|
+
const setChecked = function setChecked(nextChecked: boolean) {
|
|
33
|
+
if (disabled) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
checked = nextChecked;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const toggle = function toggle() {
|
|
41
|
+
setChecked(toggleSwitchValue(checked));
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const handleClick = function handleClick(
|
|
45
|
+
event: MouseEvent & { currentTarget: EventTarget & HTMLButtonElement }
|
|
46
|
+
) {
|
|
47
|
+
toggle();
|
|
48
|
+
onclick?.(event);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const handleKeyDown = function handleKeyDown(
|
|
52
|
+
event: KeyboardEvent & { currentTarget: EventTarget & HTMLButtonElement }
|
|
53
|
+
) {
|
|
54
|
+
if (event.key === 'Enter') {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
toggle();
|
|
57
|
+
}
|
|
58
|
+
onkeydown?.(event);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
setSwitchRootContext({
|
|
62
|
+
get checked() {
|
|
63
|
+
return checked;
|
|
64
|
+
},
|
|
65
|
+
get disabled() {
|
|
66
|
+
return disabled;
|
|
67
|
+
},
|
|
68
|
+
toggle,
|
|
69
|
+
});
|
|
70
|
+
</script>
|
|
71
|
+
|
|
72
|
+
<button
|
|
73
|
+
{type}
|
|
74
|
+
role="switch"
|
|
75
|
+
aria-checked={checked}
|
|
76
|
+
class={className}
|
|
77
|
+
data-slot="switch"
|
|
78
|
+
data-state={dataState}
|
|
79
|
+
data-disabled={dataDisabled}
|
|
80
|
+
{disabled}
|
|
81
|
+
{...restProps}
|
|
82
|
+
onclick={handleClick}
|
|
83
|
+
onkeydown={handleKeyDown}
|
|
84
|
+
>
|
|
85
|
+
{@render children?.()}
|
|
86
|
+
</button>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = HTMLAttributes<HTMLButtonElement> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
type?: 'button' | 'submit' | 'reset';
|
|
9
|
+
};
|
|
10
|
+
declare const SwitchRoot: import("svelte").Component<$$ComponentProps, {}, "checked">;
|
|
11
|
+
type SwitchRoot = ReturnType<typeof SwitchRoot>;
|
|
12
|
+
export default SwitchRoot;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
|
|
4
|
+
let {
|
|
5
|
+
class: className,
|
|
6
|
+
...restProps
|
|
7
|
+
}: HTMLAttributes<HTMLSpanElement> & { class?: string } = $props();
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<span
|
|
11
|
+
class={className}
|
|
12
|
+
data-slot="switch-thumb"
|
|
13
|
+
{...restProps}
|
|
14
|
+
></span>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
|
+
type $$ComponentProps = HTMLAttributes<HTMLSpanElement> & {
|
|
3
|
+
class?: string;
|
|
4
|
+
};
|
|
5
|
+
declare const SwitchThumb: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type SwitchThumb = ReturnType<typeof SwitchThumb>;
|
|
7
|
+
export default SwitchThumb;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TabsOrientation } from '@c15t/ui/primitives';
|
|
2
|
+
export interface TabsRootContextValue {
|
|
3
|
+
readonly baseId: string;
|
|
4
|
+
readonly disabled: boolean;
|
|
5
|
+
readonly loop: boolean;
|
|
6
|
+
readonly orientation: TabsOrientation;
|
|
7
|
+
readonly value: string | null;
|
|
8
|
+
setValue: (value: string) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const setTabsRootContext: (value: TabsRootContextValue) => void;
|
|
11
|
+
export declare const getTabsRootContext: () => TabsRootContextValue;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getContext, setContext } from 'svelte';
|
|
2
|
+
const TABS_ROOT_CONTEXT_KEY = Symbol('c15t-svelte-tabs-root');
|
|
3
|
+
export const setTabsRootContext = function setTabsRootContext(value) {
|
|
4
|
+
setContext(TABS_ROOT_CONTEXT_KEY, value);
|
|
5
|
+
};
|
|
6
|
+
export const getTabsRootContext = function getTabsRootContext() {
|
|
7
|
+
const context = getContext(TABS_ROOT_CONTEXT_KEY);
|
|
8
|
+
if (!context) {
|
|
9
|
+
throw new Error('Tabs primitives must be used within Tabs.Root');
|
|
10
|
+
}
|
|
11
|
+
return context;
|
|
12
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import Content from './tabs-content.svelte';
|
|
2
|
+
import List from './tabs-list.svelte';
|
|
3
|
+
import Root from './tabs-root.svelte';
|
|
4
|
+
import Trigger from './tabs-trigger.svelte';
|
|
5
|
+
export declare const Tabs: {
|
|
6
|
+
Content: import("svelte").Component<import("svelte/elements").HTMLAttributes<HTMLDivElement> & {
|
|
7
|
+
children?: import("svelte").Snippet;
|
|
8
|
+
class?: string;
|
|
9
|
+
forceMount?: boolean;
|
|
10
|
+
value: string;
|
|
11
|
+
}, {}, "">;
|
|
12
|
+
List: import("svelte").Component<import("svelte/elements").HTMLAttributes<HTMLDivElement> & {
|
|
13
|
+
children?: import("svelte").Snippet;
|
|
14
|
+
class?: string;
|
|
15
|
+
orientation?: "horizontal" | "vertical";
|
|
16
|
+
}, {}, "">;
|
|
17
|
+
Root: import("svelte").Component<import("svelte/elements").HTMLAttributes<HTMLDivElement> & {
|
|
18
|
+
children?: import("svelte").Snippet;
|
|
19
|
+
class?: string;
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
loop?: boolean;
|
|
22
|
+
orientation?: import("@c15t/ui/primitives").TabsOrientation;
|
|
23
|
+
value?: string | null;
|
|
24
|
+
}, {}, "value">;
|
|
25
|
+
Trigger: import("svelte").Component<import("svelte/elements").HTMLAttributes<HTMLButtonElement> & {
|
|
26
|
+
children?: import("svelte").Snippet;
|
|
27
|
+
class?: string;
|
|
28
|
+
type?: "button" | "submit" | "reset";
|
|
29
|
+
value: string;
|
|
30
|
+
}, {}, "">;
|
|
31
|
+
};
|
|
32
|
+
export { Content, List, Root, Trigger };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Content from './tabs-content.svelte';
|
|
2
|
+
import List from './tabs-list.svelte';
|
|
3
|
+
import Root from './tabs-root.svelte';
|
|
4
|
+
import Trigger from './tabs-trigger.svelte';
|
|
5
|
+
export const Tabs = {
|
|
6
|
+
Content,
|
|
7
|
+
List,
|
|
8
|
+
Root,
|
|
9
|
+
Trigger,
|
|
10
|
+
};
|
|
11
|
+
export { Content, List, Root, Trigger };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { getTabPanelState } from '@c15t/ui/primitives';
|
|
3
|
+
import type { Snippet } from 'svelte';
|
|
4
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
5
|
+
|
|
6
|
+
import { getTabsRootContext } from './context';
|
|
7
|
+
|
|
8
|
+
const root = getTabsRootContext();
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
children,
|
|
12
|
+
class: className,
|
|
13
|
+
forceMount = false,
|
|
14
|
+
value,
|
|
15
|
+
...restProps
|
|
16
|
+
}: HTMLAttributes<HTMLDivElement> & {
|
|
17
|
+
children?: Snippet;
|
|
18
|
+
class?: string;
|
|
19
|
+
forceMount?: boolean;
|
|
20
|
+
value: string;
|
|
21
|
+
} = $props();
|
|
22
|
+
|
|
23
|
+
const baseId = $derived(root.baseId);
|
|
24
|
+
const selectedValue = $derived(root.value);
|
|
25
|
+
const isSelected = $derived(selectedValue === value);
|
|
26
|
+
const dataState = $derived(getTabPanelState(isSelected));
|
|
27
|
+
const contentId = $derived(`${baseId}-content-${value}`);
|
|
28
|
+
const triggerId = $derived(`${baseId}-trigger-${value}`);
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
{#if forceMount || isSelected}
|
|
32
|
+
<div
|
|
33
|
+
id={contentId}
|
|
34
|
+
role="tabpanel"
|
|
35
|
+
tabindex={0}
|
|
36
|
+
hidden={!isSelected}
|
|
37
|
+
aria-labelledby={triggerId}
|
|
38
|
+
class={className}
|
|
39
|
+
data-slot="tabs-content"
|
|
40
|
+
data-state={dataState}
|
|
41
|
+
{...restProps}
|
|
42
|
+
>
|
|
43
|
+
{@render children?.()}
|
|
44
|
+
</div>
|
|
45
|
+
{/if}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
forceMount?: boolean;
|
|
7
|
+
value: string;
|
|
8
|
+
};
|
|
9
|
+
declare const TabsContent: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
10
|
+
type TabsContent = ReturnType<typeof TabsContent>;
|
|
11
|
+
export default TabsContent;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { getDataDisabled } from '@c15t/ui/primitives';
|
|
3
|
+
import type { Snippet } from 'svelte';
|
|
4
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
5
|
+
|
|
6
|
+
import { getTabsRootContext } from './context';
|
|
7
|
+
|
|
8
|
+
const root = getTabsRootContext();
|
|
9
|
+
|
|
10
|
+
const disabled = $derived(root.disabled);
|
|
11
|
+
const rootOrientation = $derived(root.orientation);
|
|
12
|
+
const dataDisabled = $derived(getDataDisabled(disabled));
|
|
13
|
+
|
|
14
|
+
let {
|
|
15
|
+
children,
|
|
16
|
+
class: className,
|
|
17
|
+
orientation: orientationProp,
|
|
18
|
+
...restProps
|
|
19
|
+
}: HTMLAttributes<HTMLDivElement> & {
|
|
20
|
+
children?: Snippet;
|
|
21
|
+
class?: string;
|
|
22
|
+
orientation?: 'horizontal' | 'vertical';
|
|
23
|
+
} = $props();
|
|
24
|
+
|
|
25
|
+
const orientation = $derived(orientationProp ?? rootOrientation);
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<div
|
|
29
|
+
role="tablist"
|
|
30
|
+
aria-orientation={orientation}
|
|
31
|
+
class={className}
|
|
32
|
+
data-slot="tabs-list"
|
|
33
|
+
data-orientation={orientation}
|
|
34
|
+
data-disabled={dataDisabled}
|
|
35
|
+
{...restProps}
|
|
36
|
+
>
|
|
37
|
+
{@render children?.()}
|
|
38
|
+
</div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
orientation?: 'horizontal' | 'vertical';
|
|
7
|
+
};
|
|
8
|
+
declare const TabsList: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
+
type TabsList = ReturnType<typeof TabsList>;
|
|
10
|
+
export default TabsList;
|