From afeb5450ffa9a363e98d7fb56ba8c74390a943e9 Mon Sep 17 00:00:00 2001 From: Mahmoud-zino Date: Sat, 9 Mar 2024 19:01:57 +0100 Subject: [PATCH 01/17] init svelte tabGroup --- .../src/lib/components/Tab/Tab.svelte | 0 .../src/lib/components/Tab/TabAnchor.svelte | 0 .../src/lib/components/Tab/TabGroup.svelte | 56 ++++++++++++++++++ .../src/lib/components/Tab/types.ts | 57 +++++++++++++++++++ packages/skeleton-svelte/src/lib/index.ts | 3 + .../skeleton-svelte/src/routes/+layout.svelte | 1 + .../src/routes/components/tabs/+page.svelte | 19 +++++++ 7 files changed, 136 insertions(+) create mode 100644 packages/skeleton-svelte/src/lib/components/Tab/Tab.svelte create mode 100644 packages/skeleton-svelte/src/lib/components/Tab/TabAnchor.svelte create mode 100644 packages/skeleton-svelte/src/lib/components/Tab/TabGroup.svelte create mode 100644 packages/skeleton-svelte/src/lib/components/Tab/types.ts create mode 100644 packages/skeleton-svelte/src/routes/components/tabs/+page.svelte diff --git a/packages/skeleton-svelte/src/lib/components/Tab/Tab.svelte b/packages/skeleton-svelte/src/lib/components/Tab/Tab.svelte new file mode 100644 index 000000000..e69de29bb diff --git a/packages/skeleton-svelte/src/lib/components/Tab/TabAnchor.svelte b/packages/skeleton-svelte/src/lib/components/Tab/TabAnchor.svelte new file mode 100644 index 000000000..e69de29bb diff --git a/packages/skeleton-svelte/src/lib/components/Tab/TabGroup.svelte b/packages/skeleton-svelte/src/lib/components/Tab/TabGroup.svelte new file mode 100644 index 000000000..8e481c9e8 --- /dev/null +++ b/packages/skeleton-svelte/src/lib/components/Tab/TabGroup.svelte @@ -0,0 +1,56 @@ + + + + +
+ {#if children} +
+ {@render children()} +
+ {/if} + {#if panel} +
+ {@render panel()} +
+ {/if} +
diff --git a/packages/skeleton-svelte/src/lib/components/Tab/types.ts b/packages/skeleton-svelte/src/lib/components/Tab/types.ts new file mode 100644 index 000000000..4d74f3180 --- /dev/null +++ b/packages/skeleton-svelte/src/lib/components/Tab/types.ts @@ -0,0 +1,57 @@ +import type { Snippet } from 'svelte'; + +// TabGroup --- + +export interface TabGroupProps { + // A11Y --- + /** Sets the tab list snippet element's A11y labelledby. */ + listLabelledBy?: string; + /** Sets the tab panel snippet element's A11y labelledby. */ + panelLabelledBy?: string; + + // Root --- + /** Sets base styles. */ + base?: string; + /** Set vertical spacing styles. */ + spaceY?: string; + /** Provide arbitrary CSS classes. */ + classes?: string; + + // Tab list --- + /** Sets the list snippet element's base styles. */ + listBase?: string; + /** Sets the list snippet element's justification styles. */ + listJustify?: string; + /** Sets the list snippet element's border styles. */ + listBorder?: string; + /** Provide arbitrary CSS classes to the list snippet. */ + listClasses?: string; + + // Tab panel --- + /** Sets the tab panel snippet element's base styles. */ + panelBase?: string; + /** Provide arbitrary CSS classes to the tab panel snippet. */ + panelClasses?: string; + + // Tab Children + /** Sets the children tabs base styles. */ + tabBase?: string; + /** Sets the children tabs active styles. */ + tabActive?: string; + /** Sets the children tabs background styles. */ + tabBackground?: string; + /** Sets the children tabs padding styles. */ + tabPadding?: string; + /** Sets the children tabs rounded styles. */ + tabRounded?: string; + /** Sets the children tabs vertical spacing styles. */ + tabSpacingY?: string; + /** Provide arbitrary CSS classes to the children tabs. */ + tabClasses?: string; + + // Snippets --- + /** The tab list slot. */ + children?: Snippet; + /** The tab panel slot. */ + panel?: Snippet; +} diff --git a/packages/skeleton-svelte/src/lib/index.ts b/packages/skeleton-svelte/src/lib/index.ts index 76ffea1f2..d4a3c8228 100644 --- a/packages/skeleton-svelte/src/lib/index.ts +++ b/packages/skeleton-svelte/src/lib/index.ts @@ -5,3 +5,6 @@ export { default as Accordion } from './components/Accordion/Accordion.svelte'; export { default as AccordionItem } from './components/Accordion/AccordionItem.svelte'; export { default as Avatar } from './components/Avatar/Avatar.svelte'; export { default as AppBar } from './components/AppBar/AppBar.svelte'; +export { default as TabGroup } from './components/Tab/TabGroup.svelte'; +export { default as Tab } from './components/Tab/Tab.svelte'; +export { default as TabAnchor } from './components/Tab/TabAnchor.svelte'; diff --git a/packages/skeleton-svelte/src/routes/+layout.svelte b/packages/skeleton-svelte/src/routes/+layout.svelte index 2d7e36a9f..b8dbb285c 100644 --- a/packages/skeleton-svelte/src/routes/+layout.svelte +++ b/packages/skeleton-svelte/src/routes/+layout.svelte @@ -15,6 +15,7 @@ Accordions Avatars App Bars + Tabs diff --git a/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte b/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte new file mode 100644 index 000000000..3cc64af48 --- /dev/null +++ b/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte @@ -0,0 +1,19 @@ + + +

Tabs

+ + test + {#snippet panel()} + {#if tabSet === 0} + (tab panel 1 contents) + {:else if tabSet === 1} + (tab panel 2 contents) + {:else if tabSet === 2} + (tab panel 3 contents) + {/if} + {/snippet} + From 37ac3b07bd76a7f2b77d194e777bbef7ec7285de Mon Sep 17 00:00:00 2001 From: Mahmoud-zino Date: Wed, 13 Mar 2024 20:52:08 +0100 Subject: [PATCH 02/17] re-init tabs parent component --- packages/skeleton-svelte/src/app.html | 24 ++++---- .../src/lib/components/Tab/TabAnchor.svelte | 0 .../src/lib/components/Tab/TabGroup.svelte | 56 ------------------ .../src/lib/components/Tab/Tabs.svelte | 57 +++++++++++++++++++ .../Tab/{Tab.svelte => TabsControl.svelte} | 0 .../src/lib/components/Tab/types.ts | 42 ++++++++------ packages/skeleton-svelte/src/lib/index.ts | 5 +- .../src/routes/components/tabs/+page.svelte | 23 ++++---- 8 files changed, 104 insertions(+), 103 deletions(-) delete mode 100644 packages/skeleton-svelte/src/lib/components/Tab/TabAnchor.svelte delete mode 100644 packages/skeleton-svelte/src/lib/components/Tab/TabGroup.svelte create mode 100644 packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte rename packages/skeleton-svelte/src/lib/components/Tab/{Tab.svelte => TabsControl.svelte} (100%) diff --git a/packages/skeleton-svelte/src/app.html b/packages/skeleton-svelte/src/app.html index 9a76d7554..0e6cfae73 100644 --- a/packages/skeleton-svelte/src/app.html +++ b/packages/skeleton-svelte/src/app.html @@ -1,16 +1,14 @@ + + + skeleton-svelte + + + %sveltekit.head% + - - - skeleton-svelte - - - %sveltekit.head% - - - -
%sveltekit.body%
- - - \ No newline at end of file + +
%sveltekit.body%
+ + diff --git a/packages/skeleton-svelte/src/lib/components/Tab/TabAnchor.svelte b/packages/skeleton-svelte/src/lib/components/Tab/TabAnchor.svelte deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/skeleton-svelte/src/lib/components/Tab/TabGroup.svelte b/packages/skeleton-svelte/src/lib/components/Tab/TabGroup.svelte deleted file mode 100644 index 8e481c9e8..000000000 --- a/packages/skeleton-svelte/src/lib/components/Tab/TabGroup.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - - - -
- {#if children} -
- {@render children()} -
- {/if} - {#if panel} -
- {@render panel()} -
- {/if} -
diff --git a/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte b/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte new file mode 100644 index 000000000..2ef1550bf --- /dev/null +++ b/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte @@ -0,0 +1,57 @@ + + + + +
+ {#if list} +
+ {@render list()} +
+ {/if} + {#if panel} +
+ {@render panel()} +
+ {/if} +
diff --git a/packages/skeleton-svelte/src/lib/components/Tab/Tab.svelte b/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte similarity index 100% rename from packages/skeleton-svelte/src/lib/components/Tab/Tab.svelte rename to packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte diff --git a/packages/skeleton-svelte/src/lib/components/Tab/types.ts b/packages/skeleton-svelte/src/lib/components/Tab/types.ts index 4d74f3180..712c177d7 100644 --- a/packages/skeleton-svelte/src/lib/components/Tab/types.ts +++ b/packages/skeleton-svelte/src/lib/components/Tab/types.ts @@ -1,8 +1,8 @@ import type { Snippet } from 'svelte'; -// TabGroup --- +// Tabs --- -export interface TabGroupProps { +export interface TabsProps { // A11Y --- /** Sets the tab list snippet element's A11y labelledby. */ listLabelledBy?: string; @@ -20,6 +20,8 @@ export interface TabGroupProps { // Tab list --- /** Sets the list snippet element's base styles. */ listBase?: string; + /** Sets the list snippet element's width styles. */ + listWidth?: string; /** Sets the list snippet element's justification styles. */ listJustify?: string; /** Sets the list snippet element's border styles. */ @@ -33,25 +35,29 @@ export interface TabGroupProps { /** Provide arbitrary CSS classes to the tab panel snippet. */ panelClasses?: string; - // Tab Children - /** Sets the children tabs base styles. */ - tabBase?: string; - /** Sets the children tabs active styles. */ - tabActive?: string; - /** Sets the children tabs background styles. */ - tabBackground?: string; - /** Sets the children tabs padding styles. */ - tabPadding?: string; - /** Sets the children tabs rounded styles. */ - tabRounded?: string; - /** Sets the children tabs vertical spacing styles. */ - tabSpacingY?: string; - /** Provide arbitrary CSS classes to the children tabs. */ - tabClasses?: string; + // Tab Controls + /** Sets the children controls base styles. */ + controlsBase?: string; + /** Sets the children controls active styles. */ + controlsActive?: string; + /** Sets the children controls background styles. */ + controlsBackground?: string; + /** Sets the children controls padding styles. */ + controlsPadding?: string; + /** Sets the children controls rounded styles. */ + controlsRounded?: string; + /** Sets the children controls vertical spacing styles. */ + controlsSpacingY?: string; + /** Provide arbitrary CSS classes to the children controls. */ + controlsClasses?: string; // Snippets --- /** The tab list slot. */ - children?: Snippet; + list?: Snippet; /** The tab panel slot. */ panel?: Snippet; } + +// TabControl --- + +export interface TabControl {} diff --git a/packages/skeleton-svelte/src/lib/index.ts b/packages/skeleton-svelte/src/lib/index.ts index d4a3c8228..fa15e0c19 100644 --- a/packages/skeleton-svelte/src/lib/index.ts +++ b/packages/skeleton-svelte/src/lib/index.ts @@ -5,6 +5,5 @@ export { default as Accordion } from './components/Accordion/Accordion.svelte'; export { default as AccordionItem } from './components/Accordion/AccordionItem.svelte'; export { default as Avatar } from './components/Avatar/Avatar.svelte'; export { default as AppBar } from './components/AppBar/AppBar.svelte'; -export { default as TabGroup } from './components/Tab/TabGroup.svelte'; -export { default as Tab } from './components/Tab/Tab.svelte'; -export { default as TabAnchor } from './components/Tab/TabAnchor.svelte'; +export { default as Tabs } from './components/Tab/Tabs.svelte'; +export { default as TabsControl } from './components/Tab/TabsControl.svelte'; diff --git a/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte b/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte index 3cc64af48..8e3a0c8f9 100644 --- a/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte +++ b/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte @@ -1,19 +1,16 @@

Tabs

- - test + + {#snippet list()} + + + + {/snippet} {#snippet panel()} - {#if tabSet === 0} - (tab panel 1 contents) - {:else if tabSet === 1} - (tab panel 2 contents) - {:else if tabSet === 2} - (tab panel 3 contents) - {/if} +
test
{/snippet} -
+ From 7819679feb5aa97443459acb4fd2ae867e559aed Mon Sep 17 00:00:00 2001 From: Mahmoud-zino Date: Fri, 15 Mar 2024 22:46:06 +0100 Subject: [PATCH 03/17] init tabs control --- .../lib/components/Accordion/Accordion.svelte | 2 +- .../components/Accordion/AccordionItem.svelte | 2 +- .../src/lib/components/AppBar/AppBar.svelte | 2 +- .../src/lib/components/Avatar/Avatar.svelte | 2 +- .../src/lib/components/Tab/Tabs.svelte | 16 +- .../src/lib/components/Tab/TabsControl.svelte | 47 ++++++ .../src/lib/components/Tab/index.ts | 4 + .../src/lib/components/Tab/types.ts | 57 ++++++- packages/skeleton-svelte/src/lib/index.ts | 3 +- .../src/routes/components/tabs/+page.svelte | 150 +++++++++++++++++- 10 files changed, 265 insertions(+), 20 deletions(-) create mode 100644 packages/skeleton-svelte/src/lib/components/Tab/index.ts diff --git a/packages/skeleton-svelte/src/lib/components/Accordion/Accordion.svelte b/packages/skeleton-svelte/src/lib/components/Accordion/Accordion.svelte index b4243d771..7bf082e66 100644 --- a/packages/skeleton-svelte/src/lib/components/Accordion/Accordion.svelte +++ b/packages/skeleton-svelte/src/lib/components/Accordion/Accordion.svelte @@ -18,7 +18,7 @@ children, iconOpen, iconClosed - } = $props(); + }: AccordionProps = $props(); // Context setContext('selected', new State([])); diff --git a/packages/skeleton-svelte/src/lib/components/Accordion/AccordionItem.svelte b/packages/skeleton-svelte/src/lib/components/Accordion/AccordionItem.svelte index e5b236fa1..02d140155 100644 --- a/packages/skeleton-svelte/src/lib/components/Accordion/AccordionItem.svelte +++ b/packages/skeleton-svelte/src/lib/components/Accordion/AccordionItem.svelte @@ -33,7 +33,7 @@ control, controlLead, panel - } = $props(); + }: AccordionItemProps = $props(); // Context const selected = getContext>('selected'); diff --git a/packages/skeleton-svelte/src/lib/components/AppBar/AppBar.svelte b/packages/skeleton-svelte/src/lib/components/AppBar/AppBar.svelte index 234ad31ae..6cc9d59e1 100644 --- a/packages/skeleton-svelte/src/lib/components/AppBar/AppBar.svelte +++ b/packages/skeleton-svelte/src/lib/components/AppBar/AppBar.svelte @@ -38,7 +38,7 @@ lead, trail, headline - } = $props(); + }: AppBarProps = $props(); diff --git a/packages/skeleton-svelte/src/lib/components/Avatar/Avatar.svelte b/packages/skeleton-svelte/src/lib/components/Avatar/Avatar.svelte index 0e581df74..0137cc783 100644 --- a/packages/skeleton-svelte/src/lib/components/Avatar/Avatar.svelte +++ b/packages/skeleton-svelte/src/lib/components/Avatar/Avatar.svelte @@ -19,7 +19,7 @@ imageClasses = '', // Snippets children - } = $props(); + }: AvatarProps = $props(); diff --git a/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte b/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte index 2ef1550bf..42404099f 100644 --- a/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte +++ b/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte @@ -12,7 +12,7 @@ classes = '', // Tab list listBase = 'flex overflow-x-auto hide-scrollbar', - listWidth = 'w-fit', + listSpaceX = 'space-x-4', listJustify = 'justify-start', listBorder = 'border-b border-surface-50-950', listClasses = '', @@ -20,24 +20,30 @@ panelBase = '', panelClasses = '', // Tab Controls - controlsBase = 'flex-none', - controlsActive = 'border-b-2 border-surface-950-50', + controlsBase = 'flex', + controlsJustify = 'justify-center', + controlsActive = 'border-b-2 border-surface-950-50 text-surface-950-50', + controlsInactive = 'text-surface-600-400 fill-surface-600-400', controlsBackground = 'hover:bg-surface-400-600', controlsPadding = 'px-4 py-2', controlsRounded = 'rounded-tl-container rounded-tr-container', controlsSpacingY = 'space-y-1', + controlsCursor = 'cursor-pointer', controlsClasses = '', // Snippets list, panel - } = $props(); + }: TabsProps = $props(); setContext('base', controlsBase); + setContext('justify', controlsJustify); setContext('active', controlsActive); + setContext('inactive', controlsInactive); setContext('background', controlsBackground); setContext('padding', controlsPadding); setContext('rounded', controlsRounded); setContext('spacingY', controlsSpacingY); + setContext('cursor', controlsCursor); setContext('classes', controlsClasses); @@ -45,7 +51,7 @@
{#if list} -
+
{@render list()}
{/if} diff --git a/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte b/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte index e69de29bb..3276e47a9 100644 --- a/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte +++ b/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte @@ -0,0 +1,47 @@ + + + + + diff --git a/packages/skeleton-svelte/src/lib/components/Tab/index.ts b/packages/skeleton-svelte/src/lib/components/Tab/index.ts new file mode 100644 index 000000000..a7ea8f646 --- /dev/null +++ b/packages/skeleton-svelte/src/lib/components/Tab/index.ts @@ -0,0 +1,4 @@ +import Tabs from './Tabs.svelte'; +import Control from './TabsControl.svelte'; + +export default Object.assign(Tabs, { Control }); diff --git a/packages/skeleton-svelte/src/lib/components/Tab/types.ts b/packages/skeleton-svelte/src/lib/components/Tab/types.ts index 712c177d7..8645beaa6 100644 --- a/packages/skeleton-svelte/src/lib/components/Tab/types.ts +++ b/packages/skeleton-svelte/src/lib/components/Tab/types.ts @@ -20,10 +20,10 @@ export interface TabsProps { // Tab list --- /** Sets the list snippet element's base styles. */ listBase?: string; - /** Sets the list snippet element's width styles. */ - listWidth?: string; /** Sets the list snippet element's justification styles. */ listJustify?: string; + /** Sets the list snippet element's horizontal spacing styles. */ + listSpaceX?: string; /** Sets the list snippet element's border styles. */ listBorder?: string; /** Provide arbitrary CSS classes to the list snippet. */ @@ -38,8 +38,12 @@ export interface TabsProps { // Tab Controls /** Sets the children controls base styles. */ controlsBase?: string; + /** Sets the children controls Justification styles. */ + controlsJustify?: string; /** Sets the children controls active styles. */ controlsActive?: string; + /** Sets the children controls inactive styles. */ + controlsInactive?: string; /** Sets the children controls background styles. */ controlsBackground?: string; /** Sets the children controls padding styles. */ @@ -48,6 +52,8 @@ export interface TabsProps { controlsRounded?: string; /** Sets the children controls vertical spacing styles. */ controlsSpacingY?: string; + /** Sets the children controls cursor styles. */ + controlsCursor?: string; /** Provide arbitrary CSS classes to the children controls. */ controlsClasses?: string; @@ -60,4 +66,49 @@ export interface TabsProps { // TabControl --- -export interface TabControl {} +export interface TabsControlProps { + /** Provide the tab control name. */ + name: string; + /** Provide the tab control radio group. */ + group: string; + /** Provide a hoverable title attribute. */ + title?: string; + + // A11y --- + /** Sets ARIA controls value to define which panel this tab controls. */ + controls?: string; + + // Root --- + /** Sets base styles. */ + base?: string; + /** Sets background styles. */ + background?: string; + /** Sets justification styles. */ + justify?: string; + /** Sets the active control styles. */ + active?: string; + /** Sets the inactive control styles. */ + inactive?: string; + /** Sets padding styles. */ + padding?: string; + /** Sets rounded styles. */ + rounded?: string; + /** Sets vertical spacing styles. */ + spacingY?: string; + /** Sets cursor styles. */ + cursor?: string; + /** Provide arbitrary CSS classes. */ + classes?: string; + + // Tab + /** Sets the tab content base styles */ + tabBase?: string; + /** Sets the tab content horizontal spacing styles. */ + tabSpaceX?: string; + /** Provide arbitrary CSS classes to the tab content. */ + tabClasses?: string; + + // Snippets --- + /** The default child slot. */ + children?: Snippet; +} diff --git a/packages/skeleton-svelte/src/lib/index.ts b/packages/skeleton-svelte/src/lib/index.ts index fa15e0c19..c9e458a4c 100644 --- a/packages/skeleton-svelte/src/lib/index.ts +++ b/packages/skeleton-svelte/src/lib/index.ts @@ -5,5 +5,4 @@ export { default as Accordion } from './components/Accordion/Accordion.svelte'; export { default as AccordionItem } from './components/Accordion/AccordionItem.svelte'; export { default as Avatar } from './components/Avatar/Avatar.svelte'; export { default as AppBar } from './components/AppBar/AppBar.svelte'; -export { default as Tabs } from './components/Tab/Tabs.svelte'; -export { default as TabsControl } from './components/Tab/TabsControl.svelte'; +export { default as Tabs } from './components/Tab/index.js'; diff --git a/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte b/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte index 8e3a0c8f9..10c6ec147 100644 --- a/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte +++ b/packages/skeleton-svelte/src/routes/components/tabs/+page.svelte @@ -1,16 +1,154 @@

Tabs

{#snippet list()} - - - + Flight + Hotel + Explore + {/snippet} + {#snippet panel()} +
PlaceHolder
+ {/snippet} +
+ +

With Icon

+ + {#snippet list()} + + + Flight + + + Hotel + + + + + Explore + + + + + + {/snippet} + {#snippet panel()} +
PlaceHolder
+ {/snippet} +
+ +

Stretched

+ + {#snippet list()} + Flight + Hotel + Explore + {/snippet} + {#snippet panel()} +
PlaceHolder
+ {/snippet} +
+ +

Justify center

+ + {#snippet list()} + Flight + Hotel + Explore + {/snippet} + {#snippet panel()} +
PlaceHolder
+ {/snippet} +
+ +

Justify End

+ + {#snippet list()} + Flight + Hotel + Explore {/snippet} {#snippet panel()} -
test
+
PlaceHolder
{/snippet}
From 9e0ae6cf826982852e71e909763d22ef114649a5 Mon Sep 17 00:00:00 2001 From: Mahmoud-zino Date: Sat, 16 Mar 2024 16:50:44 +0100 Subject: [PATCH 04/17] init tabsPanel --- .../src/lib/components/Tab/Tabs.svelte | 11 ++++- .../src/lib/components/Tab/TabsControl.svelte | 17 +++++-- .../src/lib/components/Tab/TabsPanel.svelte | 20 ++++++++ .../src/lib/components/Tab/index.ts | 3 +- .../src/lib/components/Tab/types.ts | 47 +++++++++++++++++-- .../src/routes/components/tabs/+page.svelte | 23 ++++++--- 6 files changed, 103 insertions(+), 18 deletions(-) create mode 100644 packages/skeleton-svelte/src/lib/components/Tab/TabsPanel.svelte diff --git a/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte b/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte index 42404099f..6c6ac35e4 100644 --- a/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte +++ b/packages/skeleton-svelte/src/lib/components/Tab/Tabs.svelte @@ -21,21 +21,26 @@ panelClasses = '', // Tab Controls controlsBase = 'flex', + controlsText = 'hover:text-primary-600-400', controlsJustify = 'justify-center', controlsActive = 'border-b-2 border-surface-950-50 text-surface-950-50', controlsInactive = 'text-surface-600-400 fill-surface-600-400', - controlsBackground = 'hover:bg-surface-400-600', + controlsBackground = '', controlsPadding = 'px-4 py-2', - controlsRounded = 'rounded-tl-container rounded-tr-container', + controlsRounded = '', controlsSpacingY = 'space-y-1', controlsCursor = 'cursor-pointer', controlsClasses = '', + // Tab Panels + panelsBase = '', + panelsClasses = '', // Snippets list, panel }: TabsProps = $props(); setContext('base', controlsBase); + setContext('text', controlsText); setContext('justify', controlsJustify); setContext('active', controlsActive); setContext('inactive', controlsInactive); @@ -45,6 +50,8 @@ setContext('spacingY', controlsSpacingY); setContext('cursor', controlsCursor); setContext('classes', controlsClasses); + setContext('panelBase', panelsBase); + setContext('panelClasses', panelsClasses); diff --git a/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte b/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte index 3276e47a9..49c96d666 100644 --- a/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte +++ b/packages/skeleton-svelte/src/lib/components/Tab/TabsControl.svelte @@ -10,6 +10,7 @@ controls = '', // Root base = getContext('base'), + text = getContext('text'), justify = getContext('justify'), active = getContext('active'), inactive = getContext('inactive'), @@ -20,9 +21,14 @@ cursor = getContext('cursor'), classes = getContext('classes'), // Tab - tabBase = 'flex', - tabSpaceX = 'space-x-1', + tabBase = '', + tabRounded = 'rounded-container', + tabOutline = 'focus:outline focus:outline-primary-600-400 focus:outline-offset-4', tabClasses = '', + // Tab Content + contentBase = 'flex', + contentSpaceX = 'space-x-1', + contentClasses = '', // Snippets children }: TabsControlProps = $props(); @@ -33,13 +39,14 @@ -